From d2f43a862069898e198bf0474358e18ef23758c2 Mon Sep 17 00:00:00 2001 From: Exynox Date: Sun, 6 Mar 2022 17:36:43 +0200 Subject: [PATCH] Added support for CLion, removed a lot of unused code in preparation of the rewriting of the network stack --- .gitignore | 78 + .idea/.gitignore | 8 + .idea/.name | 1 + .idea/Server.iml | 2 + .idea/encodings.xml | 7 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + CMakeLists.txt | 2 +- common/auction_table.h | 8 +- common/cache.h | 2 +- common/length.h | 4 +- db/src/AuctionManager.cpp | 14 +- db/src/Cache.cpp | 4 +- db/src/ClientManager.cpp | 12 +- db/src/ClientManagerBoot.cpp | 6 +- db/src/ClientManagerPlayer.cpp | 10 +- db/src/GuildManager.cpp | 2 +- db/src/LoginData.cpp | 4 +- db/src/Peer.cpp | 2 +- db/src/grid.cpp | 3 +- game/CMakeLists.txt | 8 - game/src/MarkImage.cpp | 2 +- game/src/auction_manager.cpp | 12 +- game/src/auth_brazil.cpp | 182 - game/src/auth_brazil.h | 23 - game/src/building.cpp | 6 +- game/src/char.cpp | 12 +- game/src/char_affect.cpp | 2 +- game/src/char_item.cpp | 9 +- game/src/char_skill.cpp | 2 +- game/src/cmd_general.cpp | 33 +- game/src/cmd_gm.cpp | 14 +- game/src/config.cpp | 30 +- game/src/db.cpp | 320 +- game/src/db.h | 4 - game/src/desc.cpp | 14 +- game/src/desc_client.cpp | 2 +- game/src/desc_manager.cpp | 2 +- game/src/exchange.cpp | 6 +- game/src/fishing.cpp | 6 +- game/src/guild.cpp | 6 +- game/src/guild_manager.cpp | 2 +- game/src/input.h | 3 - game/src/input_auth.cpp | 304 +- game/src/input_db.cpp | 42 +- game/src/input_login.cpp | 2 +- game/src/item.cpp | 10 +- game/src/item_attribute.cpp | 2 +- game/src/item_manager.cpp | 8 +- game/src/locale_service.cpp | 55 +- game/src/login_data.cpp | 4 +- game/src/main.cpp | 22 - game/src/mob_manager.cpp | 2 +- game/src/packet.h | 21 +- game/src/packet_info.cpp | 1 - game/src/questlua_global.cpp | 10 - game/src/safebox.cpp | 4 +- game/src/shop.cpp | 10 +- game/src/utils.cpp | 6 +- libgame/src/attribute.cc | 4 +- libgame/src/grid.cc | 3 +- libthecore/include/crypt.h | 23 - libthecore/include/hangul.h | 31 - libthecore/include/kstbl.h | 10 - libthecore/include/memcpy.h | 23 - libthecore/include/stdafx.h | 4 - libthecore/include/xmd5.h | 82 - libthecore/src/DES_table.h | 326 -- libthecore/src/buffer.cpp | 6 +- libthecore/src/des.cpp | 281 -- libthecore/src/gost.cpp | 234 - libthecore/src/gost_old.cpp | 411 -- libthecore/src/hangul.cpp | 123 - libthecore/src/kstbl.cpp | 335 -- libthecore/src/main.cpp | 2 - libthecore/src/memcpy.cpp | 134 - libthecore/src/socket.cpp | 2 +- libthecore/src/tea.cpp | 338 -- libthecore/src/tea.s | 8682 -------------------------------- libthecore/src/utils.cpp | 8 +- libthecore/src/xmd5.cpp | 345 -- 82 files changed, 251 insertions(+), 12546 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/Server.iml create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml delete mode 100644 game/src/auth_brazil.cpp delete mode 100644 game/src/auth_brazil.h delete mode 100644 libthecore/include/crypt.h delete mode 100644 libthecore/include/hangul.h delete mode 100644 libthecore/include/kstbl.h delete mode 100644 libthecore/include/memcpy.h delete mode 100644 libthecore/include/xmd5.h delete mode 100644 libthecore/src/DES_table.h delete mode 100644 libthecore/src/des.cpp delete mode 100644 libthecore/src/gost.cpp delete mode 100644 libthecore/src/gost_old.cpp delete mode 100644 libthecore/src/hangul.cpp delete mode 100644 libthecore/src/kstbl.cpp delete mode 100644 libthecore/src/memcpy.cpp delete mode 100644 libthecore/src/tea.cpp delete mode 100644 libthecore/src/tea.s delete mode 100644 libthecore/src/xmd5.cpp diff --git a/.gitignore b/.gitignore index 2ba7ded..7a40fb4 100644 --- a/.gitignore +++ b/.gitignore @@ -362,5 +362,83 @@ MigrationBackup/ # Fody - auto-generated XML schema FodyWeavers.xsd +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# AWS User-specific +.idea/**/aws.xml + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/artifacts +# .idea/compiler.xml +# .idea/jarRepositories.xml +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# SonarLint plugin +.idea/sonarlint/ + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + # Debug folder test/ diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..6c9ece8 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +Metin2 Server \ No newline at end of file diff --git a/.idea/Server.iml b/.idea/Server.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/Server.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..0d51e81 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..79b3c94 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..8f3a104 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index b3a74bf..e7ab2e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Set the CMake module directory -set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/CMake/Modules/") +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/") # Set environment variables set(METIN2_OS_NAME ${CMAKE_SYSTEM}) diff --git a/common/auction_table.h b/common/auction_table.h index e0d4568..5dbebc2 100644 --- a/common/auction_table.h +++ b/common/auction_table.h @@ -42,7 +42,7 @@ public: offer_price= _offer_price; price = _price; offer_id = _offer_id; - thecore_memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); + memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); expired_time = _expired_time; item_id = _item_id; bidder_id = _bidder_id; @@ -64,7 +64,7 @@ public: const char* get_bidder_name () { return shown_name; } void set_bidder_name (const char* new_bidder_name) { - thecore_memcpy(shown_name, new_bidder_name, strlen(new_bidder_name) + 1); + memcpy(shown_name, new_bidder_name, strlen(new_bidder_name) + 1); } } TAuctionItemInfo; @@ -79,7 +79,7 @@ typedef struct _sale : public _base_auction item_num = _item_num; offer_price= _offer_price; offer_id = _offer_id; - thecore_memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); + memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); item_id = _item_id; wisher_id = _wisher_id; } @@ -101,7 +101,7 @@ typedef struct _wish : public _base_auction item_num = _item_num; offer_price= _offer_price; offer_id = _offer_id; - thecore_memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); + memcpy(shown_name, _shown_name, strlen(_shown_name) + 1); expired_time = _expired_time; empire = _empire; } diff --git a/common/cache.h b/common/cache.h index e4bb759..3c47799 100644 --- a/common/cache.h +++ b/common/cache.h @@ -22,7 +22,7 @@ template class cache void Put(T * pNew, bool bSkipQuery = false) { - thecore_memcpy(&m_data, pNew, sizeof(T)); + memcpy(&m_data, pNew, sizeof(T)); m_lastUpdateTime = time(0); if (!bSkipQuery) diff --git a/common/length.h b/common/length.h index 90782cc..7f57a1e 100644 --- a/common/length.h +++ b/common/length.h @@ -72,8 +72,6 @@ enum EMisc //END_LIMIT_GOLD - OPENID_AUTHKEY_LEN = 32, - SHOP_TAB_NAME_MAX = 32, SHOP_TAB_COUNT_MAX = 3, @@ -685,7 +683,7 @@ enum ETeenFlags // inventory position Ÿ ü // int Ͻ ȯ ִ , // κ õ Լ window_type ʰ, cell ϳ ޾ұ ,( κ ϳ ̾ inventory type̶ ʿ ,) -// κ Լ ȣκ ϴ ϱ ̴. +// κ Լ ȣκ ϴ ϱ ??̴. enum EDragonSoulRefineWindowSize { diff --git a/db/src/AuctionManager.cpp b/db/src/AuctionManager.cpp index a82a24f..699e3e8 100644 --- a/db/src/AuctionManager.cpp +++ b/db/src/AuctionManager.cpp @@ -198,7 +198,7 @@ void AuctionManager::LoadAuctionInfo() str_to_number(auctionItemInfo.offer_price, row[cur++]); str_to_number(auctionItemInfo.price, row[cur++]); str_to_number(auctionItemInfo.offer_id, row[cur++]); - thecore_memcpy (auctionItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); + memcpy (auctionItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); cur++; str_to_number(auctionItemInfo.empire, row[cur++]); str_to_number(auctionItemInfo.expired_time, row[cur++]); @@ -242,7 +242,7 @@ void AuctionManager::LoadSaleInfo() str_to_number(saleItemInfo.offer_price, row[cur++]); str_to_number(saleItemInfo.price, row[cur++]); str_to_number(saleItemInfo.offer_id, row[cur++]); - thecore_memcpy (saleItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); + memcpy (saleItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); cur++; str_to_number(saleItemInfo.empire, row[cur++]); str_to_number(saleItemInfo.expired_time, row[cur++]); @@ -285,7 +285,7 @@ void AuctionManager::LoadWishInfo() str_to_number(wishItemInfo.offer_price, row[cur++]); str_to_number(wishItemInfo.price, row[cur++]); str_to_number(wishItemInfo.offer_id, row[cur++]); - thecore_memcpy (wishItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); + memcpy (wishItemInfo.shown_name, (char*)row[cur], strlen((char*)row[cur]) +1); cur++; str_to_number(wishItemInfo.empire, row[cur++]); str_to_number(wishItemInfo.expired_time, row[cur++]); @@ -551,7 +551,7 @@ AuctionResult AuctionManager::GetAuctionedItem (DWORD actor_id, DWORD item_id, T return AUCTION_NOT_EXPIRED; } - thecore_memcpy(&item, c->Get(), sizeof(TPlayerItem)); + memcpy(&item, c->Get(), sizeof(TPlayerItem)); return AUCTION_SUCCESS; } @@ -574,7 +574,7 @@ AuctionResult AuctionManager::BuySoldItem (DWORD actor_id, DWORD item_id, TPlaye TSaleItemInfo* item_info = item_info_cache->Get(false); - thecore_memcpy(&item, c->Get(), sizeof(TPlayerItem)); + memcpy(&item, c->Get(), sizeof(TPlayerItem)); return AUCTION_SUCCESS; } @@ -596,7 +596,7 @@ AuctionResult AuctionManager::CancelAuction (DWORD actor_id, DWORD item_id, TPla } TAuctionItemInfo* item_info = item_info_cache->Get(false); - thecore_memcpy(&item, c->Get(), sizeof(TPlayerItem)); + memcpy(&item, c->Get(), sizeof(TPlayerItem)); return AUCTION_SUCCESS; } @@ -630,7 +630,7 @@ AuctionResult AuctionManager::CancelSale (DWORD actor_id, DWORD item_id, TPlayer } TSaleItemInfo* item_info = item_info_cache->Get(false); - thecore_memcpy(&item, c->Get(), sizeof(TPlayerItem)); + memcpy(&item, c->Get(), sizeof(TPlayerItem)); return AUCTION_SUCCESS; } diff --git a/db/src/Cache.cpp b/db/src/Cache.cpp index 3420e54..ac08730 100644 --- a/db/src/Cache.cpp +++ b/db/src/Cache.cpp @@ -217,7 +217,7 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList m_data.byCount = pUpdateList->byCount; - thecore_memcpy(m_data.aPriceInfo, pUpdateList->aPriceInfo, sizeof(TItemPriceInfo) * pUpdateList->byCount); + memcpy(m_data.aPriceInfo, pUpdateList->aPriceInfo, sizeof(TItemPriceInfo) * pUpdateList->byCount); int nDeletedNum; // @@ -228,7 +228,7 @@ void CItemPriceListTableCache::UpdateList(const TItemPriceListTable* pUpdateList if (tmpvec.size() < sizeAddOldDataSize) sizeAddOldDataSize = tmpvec.size(); - thecore_memcpy(m_data.aPriceInfo + pUpdateList->byCount, &tmpvec[0], sizeof(TItemPriceInfo) * sizeAddOldDataSize); + memcpy(m_data.aPriceInfo + pUpdateList->byCount, &tmpvec[0], sizeof(TItemPriceInfo) * sizeAddOldDataSize); m_data.byCount += sizeAddOldDataSize; nDeletedNum = tmpvec.size() - sizeAddOldDataSize; diff --git a/db/src/ClientManager.cpp b/db/src/ClientManager.cpp index 7ed0de2..17cbcd2 100644 --- a/db/src/ClientManager.cpp +++ b/db/src/ClientManager.cpp @@ -1083,7 +1083,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD strncpy(kMapLocations.szHost, peer->GetPublicIP(), sizeof(kMapLocations.szHost)); kMapLocations.wPort = peer->GetListenPort(); - thecore_memcpy(kMapLocations.alMaps, peer->GetMaps(), sizeof(kMapLocations.alMaps)); + memcpy(kMapLocations.alMaps, peer->GetMaps(), sizeof(kMapLocations.alMaps)); BYTE bMapCount; @@ -1106,7 +1106,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD TMapLocation kMapLocation2; strncpy(kMapLocation2.szHost, tmp->GetPublicIP(), sizeof(kMapLocation2.szHost)); kMapLocation2.wPort = tmp->GetListenPort(); - thecore_memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); + memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); vec_kMapLocations.push_back(kMapLocation2); tmp->EncodeHeader(HEADER_DG_MAP_LOCATIONS, 0, sizeof(BYTE) + sizeof(TMapLocation)); @@ -1133,7 +1133,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD TMapLocation kMapLocation2; strncpy(kMapLocation2.szHost, tmp->GetPublicIP(), sizeof(kMapLocation2.szHost)); kMapLocation2.wPort = tmp->GetListenPort(); - thecore_memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); + memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); vec_kMapLocations.push_back(kMapLocation2); } @@ -1161,7 +1161,7 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD strncpy(kMapLocation2.szHost, tmp->GetPublicIP(), sizeof(kMapLocation2.szHost)); kMapLocation2.wPort = tmp->GetListenPort(); - thecore_memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); + memcpy(kMapLocation2.alMaps, tmp->GetMaps(), sizeof(kMapLocation2.alMaps)); vec_kMapLocations.push_back(kMapLocation2); } @@ -2180,7 +2180,7 @@ void CClientManager::MyshopPricelistUpdate(const TPacketMyshopPricelistHeader* p table.byCount = pPacket->byCount; const TItemPriceInfo * pInfo = reinterpret_cast(pPacket + sizeof(TPacketMyshopPricelistHeader)); - thecore_memcpy(table.aPriceInfo, pInfo, sizeof(TItemPriceInfo) * pPacket->byCount); + memcpy(table.aPriceInfo, pInfo, sizeof(TItemPriceInfo) * pPacket->byCount); pCache->UpdateList(&table); } @@ -2192,7 +2192,7 @@ void CClientManager::MyshopPricelistUpdate(const TPacketMyshopPricelistHeader* p pUpdateTable->byCount = pPacket->byCount; const TItemPriceInfo * pInfo = reinterpret_cast(pPacket + sizeof(TPacketMyshopPricelistHeader)); - thecore_memcpy(pUpdateTable->aPriceInfo, pInfo, sizeof(TItemPriceInfo) * pPacket->byCount); + memcpy(pUpdateTable->aPriceInfo, pInfo, sizeof(TItemPriceInfo) * pPacket->byCount); char szQuery[QUERY_MAX_LEN]; snprintf(szQuery, sizeof(szQuery), "SELECT item_vnum, price FROM myshop_pricelist%s WHERE owner_id=%u", GetTablePostfix(), pPacket->dwOwnerID); diff --git a/db/src/ClientManagerBoot.cpp b/db/src/ClientManagerBoot.cpp index 23e040d..eebff25 100644 --- a/db/src/ClientManagerBoot.cpp +++ b/db/src/ClientManagerBoot.cpp @@ -507,7 +507,7 @@ bool CClientManager::InitializeShopTable() while (it != map_shop.end()) { - thecore_memcpy((m_pShopTable + i), (it++)->second, sizeof(TShopTable)); + memcpy((m_pShopTable + i), (it++)->second, sizeof(TShopTable)); sys_log(0, "SHOP: #%d items: %d", (m_pShopTable + i)->dwVnum, (m_pShopTable + i)->byItemCount); ++i; } @@ -1176,7 +1176,7 @@ void parse_pair_number_string(const char * c_pszString, std::vectorSetPlay(true); SendLoginToBilling(pkLD, true); - thecore_memcpy(pTab->aiPremiumTimes, pkLD->GetPremiumPtr(), sizeof(pTab->aiPremiumTimes)); + memcpy(pTab->aiPremiumTimes, pkLD->GetPremiumPtr(), sizeof(pTab->aiPremiumTimes)); peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_SUCCESS, dwHandle, sizeof(TPlayerTable)); peer->Encode(pTab, sizeof(TPlayerTable)); @@ -290,7 +290,7 @@ void CClientManager::QUERY_PLAYER_LOAD(CPeer * peer, DWORD dwHandle, TPlayerLoad TPlayerItem * p = c->Get(); if (p->vnum) // vnum ̴. - thecore_memcpy(&s_items[dwCount++], p, sizeof(TPlayerItem)); + memcpy(&s_items[dwCount++], p, sizeof(TPlayerItem)); } if (g_test_server) @@ -491,14 +491,14 @@ bool CreatePlayerTableFromRes(MYSQL_RES * res, TPlayerTable * pkTab) str_to_number(pkTab->parts[PART_HAIR], row[col++]); if (row[col]) - thecore_memcpy(pkTab->skills, row[col], sizeof(pkTab->skills)); + memcpy(pkTab->skills, row[col], sizeof(pkTab->skills)); else memset(&pkTab->skills, 0, sizeof(pkTab->skills)); col++; if (row[col]) - thecore_memcpy(pkTab->quickslot, row[col], sizeof(pkTab->quickslot)); + memcpy(pkTab->quickslot, row[col], sizeof(pkTab->quickslot)); else memset(pkTab->quickslot, 0, sizeof(pkTab->quickslot)); @@ -652,7 +652,7 @@ void CClientManager::RESULT_PLAYER_LOAD(CPeer * peer, MYSQL_RES * pRes, ClientHa pkLD->SetPlay(true); SendLoginToBilling(pkLD, true); - thecore_memcpy(tab.aiPremiumTimes, pkLD->GetPremiumPtr(), sizeof(tab.aiPremiumTimes)); + memcpy(tab.aiPremiumTimes, pkLD->GetPremiumPtr(), sizeof(tab.aiPremiumTimes)); peer->EncodeHeader(HEADER_DG_PLAYER_LOAD_SUCCESS, pkInfo->dwHandle, sizeof(TPlayerTable)); peer->Encode(&tab, sizeof(TPlayerTable)); diff --git a/db/src/GuildManager.cpp b/db/src/GuildManager.cpp index cb489e5..9e6bc3b 100644 --- a/db/src/GuildManager.cpp +++ b/db/src/GuildManager.cpp @@ -1203,7 +1203,7 @@ bool CGuildManager::ChangeMaster(DWORD dwGID, DWORD dwFrom, DWORD dwTo) ////////////////////////////////////////////////////////////////////////////////////////// CGuildWarReserve::CGuildWarReserve(const TGuildWarReserve & rTable) { - thecore_memcpy(&m_data, &rTable, sizeof(TGuildWarReserve)); + memcpy(&m_data, &rTable, sizeof(TGuildWarReserve)); m_iLastNoticeMin = -1; Initialize(); diff --git a/db/src/LoginData.cpp b/db/src/LoginData.cpp index e1655e0..e2a2b96 100644 --- a/db/src/LoginData.cpp +++ b/db/src/LoginData.cpp @@ -26,7 +26,7 @@ TAccountTable & CLoginData::GetAccountRef() void CLoginData::SetClientKey(const DWORD * c_pdwClientKey) { - thecore_memcpy(&m_adwClientKey, c_pdwClientKey, sizeof(DWORD) * 4); + memcpy(&m_adwClientKey, c_pdwClientKey, sizeof(DWORD) * 4); } const DWORD * CLoginData::GetClientKey() @@ -105,7 +105,7 @@ bool CLoginData::IsDeleted() void CLoginData::SetPremium(int * paiPremiumTimes) { - thecore_memcpy(m_aiPremiumTimes, paiPremiumTimes, sizeof(m_aiPremiumTimes)); + memcpy(m_aiPremiumTimes, paiPremiumTimes, sizeof(m_aiPremiumTimes)); } int CLoginData::GetPremium(BYTE type) diff --git a/db/src/Peer.cpp b/db/src/Peer.cpp index f71b9ef..18f0838 100644 --- a/db/src/Peer.cpp +++ b/db/src/Peer.cpp @@ -129,7 +129,7 @@ void CPeer::SetP2PPort(WORD wPort) void CPeer::SetMaps(long * pl) { - thecore_memcpy(m_alMaps, pl, sizeof(m_alMaps)); + memcpy(m_alMaps, pl, sizeof(m_alMaps)); } void CPeer::SendSpareItemIDRange() diff --git a/db/src/grid.cpp b/db/src/grid.cpp index 681ff2a..fe3c392 100644 --- a/db/src/grid.cpp +++ b/db/src/grid.cpp @@ -1,6 +1,5 @@ #include #include -#include "../../libthecore/include/memcpy.h" #include #include "grid.h" @@ -14,7 +13,7 @@ CGrid::CGrid(CGrid * pkGrid, int w, int h) : m_iWidth(w), m_iHeight(h) { m_pGrid = new char[m_iWidth * m_iHeight]; int iSize = std::MIN(w * h, pkGrid->m_iWidth * pkGrid->m_iHeight); - thecore_memcpy(m_pGrid, pkGrid->m_pGrid, sizeof(char) * iSize); + memcpy(m_pGrid, pkGrid->m_pGrid, sizeof(char) * iSize); } CGrid::~CGrid() diff --git a/game/CMakeLists.txt b/game/CMakeLists.txt index 6128124..bffdaba 100644 --- a/game/CMakeLists.txt +++ b/game/CMakeLists.txt @@ -16,7 +16,6 @@ find_package(Boost COMPONENTS system REQUIRED) find_package(DevIL REQUIRED) find_package(LZO REQUIRED) find_package(cryptopp CONFIG REQUIRED) -find_package(GTest REQUIRED) add_executable(${PROJECT_NAME} ${sources}) @@ -30,7 +29,6 @@ target_link_libraries (${PROJECT_NAME} cryptopp-static) include_directories(${Boost_INCLUDE_DIR}) target_link_libraries (${PROJECT_NAME} ${Boost_LIBRARIES}) - if (IL_FOUND) include_directories(${IL_INCLUDE_DIR}) target_link_libraries (${PROJECT_NAME} ${IL_LIBRARIES}) @@ -47,11 +45,5 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package (Threads REQUIRED) target_link_libraries (${PROJECT_NAME} Threads::Threads) -# Google test -if (GTEST_FOUND) - include_directories(${GTEST_INCLUDE_DIRS}) - target_link_libraries (${PROJECT_NAME} ${GTEST_BOTH_LIBRARIES}) -endif (GTEST_FOUND) - target_link_libraries(${PROJECT_NAME} libgame libpoly libsql libthecore liblua) diff --git a/game/src/MarkImage.cpp b/game/src/MarkImage.cpp index 9f716fc..54d2877 100644 --- a/game/src/MarkImage.cpp +++ b/game/src/MarkImage.cpp @@ -279,7 +279,7 @@ void SGuildMarkBlock::CopyFrom(const BYTE * pbCompBuf, DWORD dwCompSize, DWORD c return; m_sizeCompBuf = dwCompSize; - thecore_memcpy(m_abCompBuf, pbCompBuf, dwCompSize); + memcpy(m_abCompBuf, pbCompBuf, dwCompSize); m_crc = crc; //printf("SGuildMarkBlock::CopyFrom: %u > %u crc %u\n", sizeof(Pixel) * SGuildMarkBlock::SIZE, m_sizeCompBuf, m_crc); } diff --git a/game/src/auction_manager.cpp b/game/src/auction_manager.cpp index 56a49f3..3b6a8ac 100644 --- a/game/src/auction_manager.cpp +++ b/game/src/auction_manager.cpp @@ -116,7 +116,7 @@ bool AuctionBoard::InsertItemInfo (TAuctionItemInfo* item_info) } c = new TAuctionItemInfo(); - thecore_memcpy (c, item_info, sizeof(TAuctionItemInfo)); + memcpy (c, item_info, sizeof(TAuctionItemInfo)); c->item_proto = ITEM_MANAGER::instance().GetTable(c->item_num); item_map.insert(TItemInfoMap::value_type(item_info->item_id, c)); @@ -170,7 +170,7 @@ bool AuctionBoard::UpdateItemInfo (TAuctionItemInfo* item_info) return false; } - thecore_memcpy (c, item_info, sizeof(TAuctionItemInfo)); + memcpy (c, item_info, sizeof(TAuctionItemInfo)); return true; } @@ -352,7 +352,7 @@ bool SaleBoard::InsertItemInfo (TSaleItemInfo* item_info) return false; } c = new TSaleItemInfo (); - thecore_memcpy (c, item_info, sizeof(TSaleItemInfo)); + memcpy (c, item_info, sizeof(TSaleItemInfo)); c->item_proto = ITEM_MANAGER::instance().GetTable(c->item_num); @@ -457,7 +457,7 @@ bool WishBoard::InsertItemInfo (TWishItemInfo* item_info) if (item_it == item_map->end()) { TWishItemInfo* c = new TWishItemInfo(); - thecore_memcpy (c, item_info, sizeof(TWishItemInfo)); + memcpy (c, item_info, sizeof(TWishItemInfo)); c->item_proto = ITEM_MANAGER::instance().GetTable(c->item_num); item_map->insert (TItemMap::value_type (item_num, c)); @@ -1234,7 +1234,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc cmd_result++; TAuctionItemInfo* new_item_info = (TAuctionItemInfo*)cmd_result; TAuctionItemInfo* old_item_info = Auction.GetItemInfo (new_item_info->get_item_id()); - thecore_memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo)); + memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo)); MyBid.Insert(new_item_info->bidder_id, new_item_info->item_id, new_item_info->get_bid_price()); if (ch != NULL) { @@ -1251,7 +1251,7 @@ void AuctionManager::recv_result_auction (DWORD commander_id, TPacketDGResultAuc cmd_result++; TAuctionItemInfo* new_item_info = (TAuctionItemInfo*)cmd_result; TAuctionItemInfo* old_item_info = Auction.GetItemInfo (new_item_info->get_item_id()); - thecore_memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo)); + memcpy (old_item_info, new_item_info, sizeof(TAuctionItemInfo)); if (ch != NULL) { ch->ChatPacket(CHAT_TYPE_INFO, "ﱸ عȾ."); diff --git a/game/src/auth_brazil.cpp b/game/src/auth_brazil.cpp deleted file mode 100644 index 3ab5d16..0000000 --- a/game/src/auth_brazil.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/* vi: set sw=4 ts=8 cino=g0,\:0 : */ -/********************************************************************* - * date : 2010.4.7 - * file : auth_brazil.c - * author : mhh - * description : - */ -#include "stdafx.h" - -#ifndef __WIN32__ -#include -#include -#endif -#include -#include -#ifdef __FreeBSD__ -#include -#else -#include "../../libthecore/include/xmd5.h" -#endif - -#include "auth_brazil.h" - -static const char* FN_md5(const char *src) -{ - static char s_buffer[512]; - - memset(s_buffer, 0x00, sizeof(s_buffer)); - - unsigned char digest[16] = {0}; - MD5_CTX md5; - MD5Init(&md5); - MD5Update(&md5, (const unsigned char*) src, strlen(src)); - MD5Final(digest, &md5); - - int offset = 0; - for (int i=0; i<16; ++i) { - offset += sprintf(s_buffer + offset, "%02x", digest[i]); - } - return s_buffer; -} - - -static int FN_make_request(const char *login, const char *password, /*out*/ char *dst, int dst_size) -{ - int len = snprintf(dst, dst_size, -// "GET /metin2/game_auth.php?ID=%s&PW=%s HTTP/1.1\r\n" - "GET /metin2/?ID=%s&PW=%s HTTP/1.1\r\n" - "Host: auth.ongame.com.br\r\n" - "Connection: Close\r\n\r\n", - login, FN_md5(password)); - - return len; -} - - -static int FN_parse_reply(char *reply) -{ - char buffer[2048]; - strncpy(buffer, reply, sizeof(buffer)); - - const char *delim = "\r\n"; - char *last = 0; - char *v = strtok_r(buffer, delim, &last); - char *result = 0; - - while (v) - { - result = v; - v = strtok_r(NULL, delim, &last); - } - - if (result) - { - if (0 == strcasecmp("true", result)) - return AUTH_BRAZIL_SUCC; - else if (0 == strcasecmp("false", result)) - return AUTH_BRAZIL_WRONGPWD; - else if (0 == strcasecmp("unknown", result)) - return AUTH_BRAZIL_NOID; - else if (0 == strcasecmp("flash", result)) - return AUTH_BRAZIL_FLASHUSER; - } - - return AUTH_BRAZIL_SERVER_ERR; -} - - -extern void socket_timeout(socket_t s, long sec, long usec); - -int auth_brazil(const char *login, const char *pwd) -{ - - const char *host = "auth.ongame.com.br"; - int port = 80; - - socket_t fd = socket_connect(host, port); - if (fd < 0) - { - sys_err("[AUTH_BRAZIL] : could not connect to gsp server(%s)", host); - return AUTH_BRAZIL_SERVER_ERR; - } - - socket_block(fd); - socket_timeout(fd, 3, 0); - - // send request - { - char request[512]; - int len = FN_make_request(login, pwd, request, sizeof(request)); - -#ifndef __WIN32__ - if (write(fd, request, len) < 0) -#else - if (_write(fd, request, len) < 0) -#endif - { - sys_err("[AUTH_BRAZIL] : could not send auth-request (%s)", login); - close(fd); - return AUTH_BRAZIL_SERVER_ERR; - } - } - - // read reply - { - char reply[1024] = {0}; - int len = read(fd, reply, sizeof(reply)); - close(fd); - - if (len <= 0) - { - sys_err("[AUTH_BRAZIL] : could not recv auth-reply (%s)", login); - return AUTH_BRAZIL_SERVER_ERR; - } - - // 쿡 query count ø. - auth_brazil_inc_query_count(); - - return FN_parse_reply(reply); - } -} - - -static int s_query_count = 0; - -int auth_brazil_inc_query_count() -{ - return ++s_query_count; -} - -void auth_brazil_log() -{ - FILE *fp = 0; - - // open and try backup - { - fp = fopen("AUTH_COUNT.log", "a"); - - if (0 == fp) - return; - - struct stat sb; - fstat(fileno(fp), &sb); - if (sb.st_size > 1024 * 1024) - { - fclose(fp); - rename("AUTH_COUNT.log", "AUTH_COUNT.log.old"); - - fp = fopen("AUTH_COUNT.log", "a"); - } - } - - // write log - { - fprintf(fp, "%d\n", s_query_count); - fclose(fp); - } - - // reset query count - s_query_count = 0; -} - diff --git a/game/src/auth_brazil.h b/game/src/auth_brazil.h deleted file mode 100644 index 5a69ee9..0000000 --- a/game/src/auth_brazil.h +++ /dev/null @@ -1,23 +0,0 @@ -/* vi: set sw=4 ts=8 cino=g0,\:0 : */ -/********************************************************************* - * date : 2010.4.7 - * file : auth_brazil.h - * author : mhh - * description : - */ -#ifndef __auth_brazil_h_1270647899__ -#define __auth_brazil_h_1270647899__ - -#define AUTH_BRAZIL_SERVER_ERR 0 -#define AUTH_BRAZIL_SUCC 1 -#define AUTH_BRAZIL_NOID 2 -#define AUTH_BRAZIL_WRONGPWD 3 -#define AUTH_BRAZIL_FLASHUSER 4 - -int auth_brazil(const char *login, const char *pwd); - - -int auth_brazil_inc_query_count(); -void auth_brazil_log(); - -#endif // __auth_brazil_h_1270647899__ diff --git a/game/src/building.cpp b/game/src/building.cpp index 12aec0c..0d2d775 100644 --- a/game/src/building.cpp +++ b/game/src/building.cpp @@ -37,7 +37,7 @@ CObject::CObject(TObject * pData, TObjectProto * pProto) { CEntity::Initialize(ENTITY_OBJECT); - thecore_memcpy(&m_data, pData, sizeof(TObject)); + memcpy(&m_data, pData, sizeof(TObject)); } CObject::~CObject() @@ -315,7 +315,7 @@ void CObject::RegenNPC() CLand::CLand(TLand * pData) { - thecore_memcpy(&m_data, pData, sizeof(TLand)); + memcpy(&m_data, pData, sizeof(TLand)); } CLand::~CLand() @@ -647,7 +647,7 @@ void CManager::Destroy() bool CManager::LoadObjectProto(const TObjectProto * pProto, int size) // from DB { m_vec_kObjectProto.resize(size); - thecore_memcpy(&m_vec_kObjectProto[0], pProto, sizeof(TObjectProto) * size); + memcpy(&m_vec_kObjectProto[0], pProto, sizeof(TObjectProto) * size); for (int i = 0; i < size; ++i) { diff --git a/game/src/char.cpp b/game/src/char.cpp index f659bf7..039aead 100644 --- a/game/src/char.cpp +++ b/game/src/char.cpp @@ -1226,10 +1226,10 @@ void CHARACTER::CreatePlayerProto(TPlayerTable & tab) if (m_stMobile.length() && !*m_szMobileAuth) strncpy(tab.szMobile, m_stMobile.c_str(), sizeof(tab.szMobile)); - thecore_memcpy(tab.parts, m_pointsInstant.parts, sizeof(tab.parts)); + memcpy(tab.parts, m_pointsInstant.parts, sizeof(tab.parts)); // REMOVE_REAL_SKILL_LEVLES - thecore_memcpy(tab.skills, m_pSkillLevels, sizeof(TPlayerSkill) * SKILL_MAX_NUM); + memcpy(tab.skills, m_pSkillLevels, sizeof(TPlayerSkill) * SKILL_MAX_NUM); // END_OF_REMOVE_REAL_SKILL_LEVLES tab.horse = GetHorseData(); @@ -1737,7 +1737,7 @@ void CHARACTER::SetPlayerProto(const TPlayerTable * t) M2_DELETE_ARRAY(m_pSkillLevels); m_pSkillLevels = M2_NEW TPlayerSkill[SKILL_MAX_NUM]; - thecore_memcpy(m_pSkillLevels, t->skills, sizeof(TPlayerSkill) * SKILL_MAX_NUM); + memcpy(m_pSkillLevels, t->skills, sizeof(TPlayerSkill) * SKILL_MAX_NUM); // END_OF_REMOVE_REAL_SKILL_LEVLES if (t->lMapIndex >= 10000) @@ -1804,7 +1804,7 @@ void CHARACTER::SetPlayerProto(const TPlayerTable * t) if (GetHorseLevel() > 0) UpdateHorseDataByLogoff(t->logoff_interval); - thecore_memcpy(m_aiPremiumTimes, t->aiPremiumTimes, sizeof(t->aiPremiumTimes)); + memcpy(m_aiPremiumTimes, t->aiPremiumTimes, sizeof(t->aiPremiumTimes)); m_dwLogOffInterval = t->logoff_interval; @@ -6251,8 +6251,8 @@ void CHARACTER::SendEquipment(LPCHARACTER ch) p.equips[i].vnum = item->GetVnum(); p.equips[i].count = item->GetCount(); - thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets)); - thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr)); + memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets)); + memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr)); } else { diff --git a/game/src/char_affect.cpp b/game/src/char_affect.cpp index 1e94ef1..1c454d1 100644 --- a/game/src/char_affect.cpp +++ b/game/src/char_affect.cpp @@ -453,7 +453,7 @@ void CHARACTER::LoadAffect(DWORD dwCount, TPacketAffectElement * pElements) info->pid = GetPlayerID(); info->count = dwCount; info->data = M2_NEW char[sizeof(TPacketAffectElement) * dwCount]; - thecore_memcpy(info->data, pElements, sizeof(TPacketAffectElement) * dwCount); + memcpy(info->data, pElements, sizeof(TPacketAffectElement) * dwCount); event_create(load_affect_login_event, info, PASSES_PER_SEC(1)); diff --git a/game/src/char_item.cpp b/game/src/char_item.cpp index 19220d4..f49fe40 100644 --- a/game/src/char_item.cpp +++ b/game/src/char_item.cpp @@ -414,8 +414,8 @@ void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem) pack.highlight = (Cell.window_type == DRAGON_SOUL_INVENTORY); - thecore_memcpy(pack.alSockets, pItem->GetSockets(), sizeof(pack.alSockets)); - thecore_memcpy(pack.aAttr, pItem->GetAttributes(), sizeof(pack.aAttr)); + memcpy(pack.alSockets, pItem->GetSockets(), sizeof(pack.alSockets)); + memcpy(pack.aAttr, pItem->GetAttributes(), sizeof(pack.aAttr)); GetDesc()->Packet(&pack, sizeof(TPacketGCItemSet)); } @@ -1346,7 +1346,7 @@ bool CHARACTER::RefineInformation(BYTE bCell, BYTE bType, int iAdditionalCell) else { p.material_count = prt->material_count; - thecore_memcpy(&p.materials, prt->materials, sizeof(prt->materials)); + memcpy(&p.materials, prt->materials, sizeof(prt->materials)); } // END_OF_REFINE_COST @@ -4403,8 +4403,7 @@ bool CHARACTER::UseItemEx(LPITEM item, TItemPos DestCell) if (GetDungeon()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" ȿ %s%s ϴ."), - item->GetName(), - g_iUseLocale ? "" : (under_han(item->GetName()) ? LC_TEXT("") : LC_TEXT(""))); + item->GetName(), ""); return false; } diff --git a/game/src/char_skill.cpp b/game/src/char_skill.cpp index d92e231..517251c 100644 --- a/game/src/char_skill.cpp +++ b/game/src/char_skill.cpp @@ -163,7 +163,7 @@ void CHARACTER::SkillLevelPacket() TPacketGCSkillLevel pack; pack.bHeader = HEADER_GC_SKILL_LEVEL; - thecore_memcpy(&pack.skills, m_pSkillLevels, sizeof(TPlayerSkill) * SKILL_MAX_NUM); + memcpy(&pack.skills, m_pSkillLevels, sizeof(TPlayerSkill) * SKILL_MAX_NUM); GetDesc()->Packet(&pack, sizeof(TPacketGCSkillLevel)); } diff --git a/game/src/cmd_general.cpp b/game/src/cmd_general.cpp index 8672abf..74342aa 100644 --- a/game/src/cmd_general.cpp +++ b/game/src/cmd_general.cpp @@ -1,9 +1,4 @@ #include "stdafx.h" -#ifdef __FreeBSD__ -#include -#else -#include "../../libthecore/include/xmd5.h" -#endif #include "utils.h" #include "config.h" @@ -112,8 +107,7 @@ ACMD(do_user_horse_feed) ch->RemoveSpecifyItem(dwFood, 1); ch->FeedHorse(); ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT(" %s%s ־ϴ."), - ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName, - g_iUseLocale ? "" : under_han(ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName) ? LC_TEXT("") : LC_TEXT("")); + ITEM_MANAGER::instance().GetTable(dwFood)->szLocaleName, ""); } else { @@ -2353,30 +2347,9 @@ ACMD(do_in_game_mall) } char buf[512+1]; - char sas[33]; - MD5_CTX ctx; - const char sas_key[] = "GF9001"; - snprintf(buf, sizeof(buf), "%u%u%s", ch->GetPlayerID(), ch->GetAID(), sas_key); - - MD5Init(&ctx); - MD5Update(&ctx, (const unsigned char *) buf, strlen(buf)); -#ifdef __FreeBSD__ - MD5End(&ctx, sas); -#else - static const char hex[] = "0123456789abcdef"; - unsigned char digest[16]; - MD5Final(digest, &ctx); - int i; - for (i = 0; i < 16; ++i) { - sas[i+i] = hex[digest[i] >> 4]; - sas[i+i+1] = hex[digest[i] & 0x0f]; - } - sas[i+i] = '\0'; -#endif - - snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d&sas=%s", - g_strWebMallURL.c_str(), ch->GetPlayerID(), country_code, g_server_id, sas); + snprintf(buf, sizeof(buf), "mall http://%s/ishop?pid=%u&c=%s&sid=%d", + g_strWebMallURL.c_str(), ch->GetPlayerID(), country_code, g_server_id); ch->ChatPacket(CHAT_TYPE_COMMAND, buf); } diff --git a/game/src/cmd_gm.cpp b/game/src/cmd_gm.cpp index b41d14f..00e436f 100644 --- a/game/src/cmd_gm.cpp +++ b/game/src/cmd_gm.cpp @@ -365,7 +365,7 @@ ACMD(do_goto) return; } - if (isnhdigit(*arg1) && isnhdigit(*arg2)) + if (isdigit(*arg1) && isdigit(*arg2)) { str_to_number(x, arg1); str_to_number(y, arg2); @@ -388,7 +388,7 @@ ACMD(do_goto) if (*arg1 == '#') str_to_number(mapIndex, (arg1 + 1)); - if (*arg2 && isnhdigit(*arg2)) + if (*arg2 && isdigit(*arg2)) { str_to_number(empire, arg2); empire = MINMAX(1, empire, 3); @@ -452,7 +452,7 @@ ACMD(do_warp) int x = 0, y = 0; - if (isnhdigit(*arg1) && isnhdigit(*arg2)) + if (isdigit(*arg1) && isdigit(*arg2)) { str_to_number(x, arg1); str_to_number(y, arg2); @@ -518,7 +518,7 @@ ACMD(do_item) DWORD dwVnum; - if (isnhdigit(*arg1)) + if (isdigit(*arg1)) str_to_number(dwVnum, arg1); else { @@ -769,7 +769,7 @@ ACMD(do_mob) const CMob* pkMob = NULL; - if (isnhdigit(*arg1)) + if (isdigit(*arg1)) { str_to_number(vnum, arg1); @@ -830,7 +830,7 @@ ACMD(do_mob_ld) const CMob* pkMob = NULL; - if (isnhdigit(*arg1)) + if (isdigit(*arg1)) { str_to_number(vnum, arg1); @@ -1951,7 +1951,7 @@ ACMD(do_book) CSkillProto * pkProto; - if (isnhdigit(*arg1)) + if (isdigit(*arg1)) { DWORD vnum = 0; str_to_number(vnum, arg1); diff --git a/game/src/config.cpp b/game/src/config.cpp index 00ac9d0..cbb5a62 100644 --- a/game/src/config.cpp +++ b/game/src/config.cpp @@ -124,16 +124,10 @@ int gPlayerMaxLevel = 99; bool g_BlockCharCreation = false; - -//OPENID -int openid_server = 0; -char openid_host[256]; -char openid_uri[256]; - bool is_string_true(const char * string) { bool result = 0; - if (isnhdigit(*string)) + if (isdigit(*string)) { str_to_number(result, string); return result > 0 ? true : false; @@ -490,25 +484,7 @@ void config_init(const string& st_localeServiceName) snprintf(buf, sizeof(buf), "LOG_SQL: %s %s %s %s %d", log_host, log_user, log_pwd, log_db, log_port); continue; } - - - //OPENID - TOKEN("WEB_AUTH") - { - const char * line = two_arguments(value_string, openid_host, sizeof(openid_host), openid_uri, sizeof(openid_uri)); - - if (!*openid_host || !*openid_uri) - { - fprintf(stderr, "WEB_AUTH syntax error (ex: WEB_AUTH \n"); - exit(1); - } - - char buf[1024]; - openid_server = 1; - snprintf(buf, sizeof(buf), "WEB_AUTH: %s %s", openid_host, openid_uri); - continue; - } - } + } //ó . fclose(fpOnlyForDB); @@ -859,7 +835,7 @@ void config_init(const string& st_localeServiceName) for (; *p; p++) { - if (isnhspace(*p)) + if (isspace(*p)) { if (stNum.length()) { diff --git a/game/src/db.cpp b/game/src/db.cpp index 8e4dcdb..0499599 100644 --- a/game/src/db.cpp +++ b/game/src/db.cpp @@ -19,11 +19,9 @@ #include "locale_service.h" #include "pcbang.h" #include "spam.h" -#include "auth_brazil.h" extern bool g_bNoPasspod; extern std::string g_stBlockDate; -extern int openid_server; //߱ passpod Լ bool CheckPasspod(const char * account) @@ -490,8 +488,8 @@ void DBManager::SendAuthLogin(LPDESC d) ptod.bBillType = pkLD->GetBillType(); ptod.dwBillID = pkLD->GetBillID(); - thecore_memcpy(ptod.iPremiumTimes, pkLD->GetPremiumPtr(), sizeof(ptod.iPremiumTimes)); - thecore_memcpy(&ptod.adwClientKey, pkLD->GetClientKey(), sizeof(DWORD) * 4); + memcpy(ptod.iPremiumTimes, pkLD->GetPremiumPtr(), sizeof(ptod.iPremiumTimes)); + memcpy(&ptod.adwClientKey, pkLD->GetClientKey(), sizeof(DWORD) * 4); db_clientdesc->DBPacket(HEADER_GD_AUTH_LOGIN, d->GetHandle(), &ptod, sizeof(TPacketGDAuthLogin)); sys_log(0, "SendAuthLogin %s key %u", ptod.szLogin, ptod.dwID); @@ -698,22 +696,9 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) if (pMsg->Get()->uiNumRows == 0) { - if (true == LC_IsBrazil()) - { - // Ѵ - ReturnQuery(QID_BRAZIL_CREATE_ID, qi->dwIdent, pinfo, - "INSERT INTO account(login, password, social_id, create_time) " - "VALUES('%s', password('%s'), '0000000', NOW()) ;", - pinfo->login, pinfo->passwd); - - sys_log(0, "[AUTH_BRAZIL] : Create A new AccountID From OnGame"); - } - else - { - sys_log(0, " NOID"); - LoginFailure(d, "NOID"); - M2_DELETE(pinfo); - } + sys_log(0, " NOID"); + LoginFailure(d, "NOID"); + M2_DELETE(pinfo); } else { @@ -898,238 +883,6 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) } } break; - case QID_AUTH_LOGIN_OPENID: - { - TPacketCGLogin3 * pinfo = (TPacketCGLogin3 *) qi->pvData; - LPDESC d = DESC_MANAGER::instance().FindByLoginKey(qi->dwIdent); - - if (!d) - { - M2_DELETE(pinfo); - break; - } - //ġ - By SeMinZ - d->SetLogin(pinfo->login); - - sys_log(0, "QID_AUTH_LOGIN_OPENID: START %u %p", qi->dwIdent, get_pointer(d)); - - if (pMsg->Get()->uiNumRows == 0) - { - if (true == LC_IsBrazil()) - { - // Ѵ - ReturnQuery(QID_BRAZIL_CREATE_ID, qi->dwIdent, pinfo, - "INSERT INTO account(login, password, social_id, create_time) " - "VALUES('%s', password('%s'), '0000000', NOW()) ;", - pinfo->login, pinfo->passwd); - - sys_log(0, "[AUTH_BRAZIL] : Create A new AccountID From OnGame"); - } else if (true == LC_IsJapan()) - { - // Ѵ - ReturnQuery(QID_JAPAN_CREATE_ID, qi->dwIdent, pinfo, - "INSERT INTO account(login, password, social_id, create_time) " - "VALUES('%s', password('%s'), '0000000', NOW()) ;", - pinfo->login, "^Aasl@(!$)djl!231fj!&#"); - - sys_log(0, "[AUTH_JAPAN] : Create A new AccountID From OGE"); - } - else - { - sys_log(0, " NOID"); - LoginFailure(d, "NOID"); - M2_DELETE(pinfo); - } - } - else - { - MYSQL_ROW row = mysql_fetch_row(pMsg->Get()->pSQLResult); - int col = 0; - - // PASSWORD('%s'), password, securitycode, social_id, id, status - char szEncrytPassword[45 + 1]; - char szPassword[45 + 1]; - char szMatrixCode[MATRIX_CODE_MAX_LEN + 1]; - char szSocialID[SOCIAL_ID_MAX_LEN + 1]; - char szStatus[ACCOUNT_STATUS_MAX_LEN + 1]; - DWORD dwID = 0; - - if (!row[col]) - { - sys_err("error column %d", col); - M2_DELETE(pinfo); - break; - } - - strncpy(szEncrytPassword, row[col++], sizeof(szEncrytPassword)); - - if (!row[col]) - { - sys_err("error column %d", col); - M2_DELETE(pinfo); - break; - } - - strncpy(szPassword, row[col++], sizeof(szPassword)); - - if (!row[col]) - { - *szMatrixCode = '\0'; - col++; - } - else - { - strncpy(szMatrixCode, row[col++], sizeof(szMatrixCode)); - } - - if (!row[col]) - { - sys_err("error column %d", col); - M2_DELETE(pinfo); - break; - } - - strncpy(szSocialID, row[col++], sizeof(szSocialID)); - - if (!row[col]) - { - sys_err("error column %d", col); - M2_DELETE(pinfo); - break; - } - - str_to_number(dwID, row[col++]); - - if (!row[col]) - { - sys_err("error column %d", col); - M2_DELETE(pinfo); - break; - } - - strncpy(szStatus, row[col++], sizeof(szStatus)); - - BYTE bNotAvail = 0; - str_to_number(bNotAvail, row[col++]); - - int aiPremiumTimes[PREMIUM_MAX_NUM]; - memset(&aiPremiumTimes, 0, sizeof(aiPremiumTimes)); - - char szCreateDate[256] = "00000000"; - - if (!g_iUseLocale) - { - str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]); - } - else - { - str_to_number(aiPremiumTimes[PREMIUM_EXP], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_ITEM], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_SAFEBOX], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_AUTOLOOT], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_FISH_MIND], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_MARRIAGE_FAST], row[col++]); - str_to_number(aiPremiumTimes[PREMIUM_GOLD], row[col++]); - - if (LC_IsEurope() || test_server) - { - long retValue = 0; - str_to_number(retValue, row[col]); - - time_t create_time = retValue; - struct tm * tm1; - tm1 = localtime(&create_time); - strftime(szCreateDate, 255, "%Y%m%d", tm1); - - sys_log(0, "Create_Time %d %s", retValue, szCreateDate); - sys_log(0, "Block Time %d ", strncmp(szCreateDate, g_stBlockDate.c_str(), 8)); - } - } - - int nPasswordDiff = strcmp(szEncrytPassword, szPassword); - - if (true == LC_IsBrazil()) - { - nPasswordDiff = 0; // йȣ üũ ʴ´. - } - - //OpenID : OpenID , йȣ üũ ʴ´. - if (openid_server) - { - nPasswordDiff = 0; - } - - if (nPasswordDiff) - { - LoginFailure(d, "WRONGPWD"); - sys_log(0, " WRONGPWD"); - M2_DELETE(pinfo); - } - else if (bNotAvail) - { - LoginFailure(d, "NOTAVAIL"); - sys_log(0, " NOTAVAIL"); - M2_DELETE(pinfo); - } - else if (DESC_MANAGER::instance().FindByLoginName(pinfo->login)) - { - LoginFailure(d, "ALREADY"); - sys_log(0, " ALREADY"); - M2_DELETE(pinfo); - } - else if (strcmp(szStatus, "OK")) - { - LoginFailure(d, szStatus); - sys_log(0, " STATUS: %s", szStatus); - M2_DELETE(pinfo); - } - else - { - if (LC_IsEurope()) - { - //stBlockData >= 0 == ¥ BlockDate ̷ - if (strncmp(szCreateDate, g_stBlockDate.c_str(), 8) >= 0) - { - LoginFailure(d, "BLKLOGIN"); - sys_log(0, " BLKLOGIN"); - M2_DELETE(pinfo); - break; - } - - char szQuery[1024]; - snprintf(szQuery, sizeof(szQuery), "UPDATE account SET last_play=NOW() WHERE id=%u", dwID); - std::unique_ptr msg( DBManager::instance().DirectQuery(szQuery) ); - } - - TAccountTable & r = d->GetAccountTable(); - - r.id = dwID; - trim_and_lower(pinfo->login, r.login, sizeof(r.login)); - strncpy(r.passwd, pinfo->passwd, sizeof(r.passwd)); - strncpy(r.social_id, szSocialID, sizeof(r.social_id)); - DESC_MANAGER::instance().ConnectAccount(r.login, d); - - d->SetMatrixCode(szMatrixCode); - - if (!g_bBilling) - { - LoginPrepare(BILLING_FREE, 0, 0, d, pinfo->adwClientKey, aiPremiumTimes); - //By SeMinZ - M2_DELETE(pinfo); - break; - } - - sys_log(0, "QID_AUTH_LOGIN_OPENID: SUCCESS %s", pinfo->login); - } - } - } - break; case QID_BILLING_GET_TIME: { @@ -1436,69 +1189,6 @@ void DBManager::AnalyzeReturnQuery(SQLMsg * pMsg) // END_OF_PCBANG_IP_LIST - case QID_BRAZIL_CREATE_ID : - { - TPacketCGLogin3 * pinfo = (TPacketCGLogin3 *) qi->pvData ; - - if( pMsg->Get()->uiAffectedRows == 0 || pMsg->Get()->uiAffectedRows == (uint32_t)-1 ) - { - LPDESC d = DESC_MANAGER::instance().FindByLoginKey(qi->dwIdent) ; - sys_log(0, "[AUTH_BRAZIL] NOID") ; - sys_log(0, "[AUTH_BRAZIL] : Failed to create a new account %s", pinfo->login) ; - LoginFailure(d, "NOID") ; - M2_DELETE(pinfo); - } - else - { - sys_log(0, "[AUTH_BRAZIL] : Succeed to create a new account %s", pinfo->login) ; - - ReturnQuery(QID_AUTH_LOGIN, qi->dwIdent, pinfo, - "SELECT PASSWORD('%s'),password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - pinfo->passwd, pinfo->login) ; - } - } - break; - case QID_JAPAN_CREATE_ID : - { - TPacketCGLogin3 * pinfo = (TPacketCGLogin3 *) qi->pvData ; - - if( pMsg->Get()->uiAffectedRows == 0 || pMsg->Get()->uiAffectedRows == (uint32_t)-1 ) - { - LPDESC d = DESC_MANAGER::instance().FindByLoginKey(qi->dwIdent) ; - sys_log(0, "[AUTH_JAPAN] NOID") ; - sys_log(0, "[AUTH_JAPAN] : Failed to create a new account %s", pinfo->login) ; - LoginFailure(d, "NOID") ; - M2_DELETE(pinfo); - } - else - { - sys_log(0, "[AUTH_JAPAN] : Succeed to create a new account %s", pinfo->login) ; - - ReturnQuery(QID_AUTH_LOGIN_OPENID, qi->dwIdent, pinfo, - "SELECT PASSWORD('%s'),password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - pinfo->passwd, pinfo->login) ; - } - } - break; - default: sys_err("FATAL ERROR!!! Unhandled return query id %d", qi->iType); break; diff --git a/game/src/db.h b/game/src/db.h index 8d93d0b..be0239d 100644 --- a/game/src/db.h +++ b/game/src/db.h @@ -16,7 +16,6 @@ enum QID_SAFEBOX_SIZE, QID_DB_STRING, QID_AUTH_LOGIN, - QID_AUTH_LOGIN_OPENID, QID_LOTTO, QID_HIGHSCORE_REGISTER, QID_HIGHSCORE_SHOW, @@ -35,9 +34,6 @@ enum // PROTECT_CHILD_FOR_NEWCIBN QID_PROTECT_CHILD, // END_PROTECT_CHILD_FOR_NEWCIBN - - QID_BRAZIL_CREATE_ID, - QID_JAPAN_CREATE_ID, }; typedef struct SUseTime diff --git a/game/src/desc.cpp b/game/src/desc.cpp index 98ae5d7..90c8ebd 100644 --- a/game/src/desc.cpp +++ b/game/src/desc.cpp @@ -245,13 +245,13 @@ bool DESC::Setup(LPFDWATCH _fdw, socket_t _fd, const struct sockaddr_in & c_rSoc #ifndef _IMPROVED_PACKET_ENCRYPTION_ if (LC_IsEurope()) { - thecore_memcpy(m_adwEncryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); - thecore_memcpy(m_adwDecryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); + memcpy(m_adwEncryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); + memcpy(m_adwDecryptionKey, "1234abcd5678efgh", sizeof(DWORD) * 4); } else { - thecore_memcpy(m_adwEncryptionKey, "testtesttesttest", sizeof(DWORD) * 4); - thecore_memcpy(m_adwDecryptionKey, "testtesttesttest", sizeof(DWORD) * 4); + memcpy(m_adwEncryptionKey, "testtesttesttest", sizeof(DWORD) * 4); + memcpy(m_adwDecryptionKey, "testtesttesttest", sizeof(DWORD) * 4); } #endif // _IMPROVED_PACKET_ENCRYPTION_ @@ -578,7 +578,7 @@ void DESC::SetPhase(int _phase) void DESC::BindAccountTable(TAccountTable * pAccountTable) { assert(pAccountTable != NULL); - thecore_memcpy(&m_accountTable, pAccountTable, sizeof(TAccountTable)); + memcpy(&m_accountTable, pAccountTable, sizeof(TAccountTable)); DESC_MANAGER::instance().ConnectAccount(m_accountTable.login, this); } @@ -920,7 +920,7 @@ void DESC::SendLoginSuccessPacket() p.handle = GetHandle(); p.random_key = DESC_MANAGER::instance().MakeRandomKey(GetHandle()); // FOR MARK - thecore_memcpy(p.players, rTable.players, sizeof(rTable.players)); + memcpy(p.players, rTable.players, sizeof(rTable.players)); for (int i = 0; i < PLAYER_PER_ACCOUNT; ++i) { @@ -1035,7 +1035,7 @@ void DESC::SetSecurityKey(const DWORD * c_pdwKey) if (g_iUseLocale && !LC_IsKorea()) c_pszKey = GetKey_20050304Myevan() + 37; - thecore_memcpy(&m_adwDecryptionKey, c_pdwKey, 16); + memcpy(&m_adwDecryptionKey, c_pdwKey, 16); TEA_Encrypt(&m_adwEncryptionKey[0], &m_adwDecryptionKey[0], (const DWORD *) c_pszKey, 16); sys_log(0, "SetSecurityKey decrypt %u %u %u %u encrypt %u %u %u %u", diff --git a/game/src/desc_client.cpp b/game/src/desc_client.cpp index d49e2d7..26dd536 100644 --- a/game/src/desc_client.cpp +++ b/game/src/desc_client.cpp @@ -197,7 +197,7 @@ void CLIENT_DESC::SetPhase(int iPhase) strncpy(pck.szHost, d->GetHostName(), sizeof(pck.szHost)); pck.dwLoginKey = d->GetLoginKey(); #ifndef _IMPROVED_PACKET_ENCRYPTION_ - thecore_memcpy(pck.adwClientKey, d->GetDecryptionKey(), 16); + memcpy(pck.adwClientKey, d->GetDecryptionKey(), 16); #endif buf.write(&pck, sizeof(TPacketLoginOnSetup)); diff --git a/game/src/desc_manager.cpp b/game/src/desc_manager.cpp index 99a6cdf..b70fb71 100644 --- a/game/src/desc_manager.cpp +++ b/game/src/desc_manager.cpp @@ -419,7 +419,7 @@ void DESC_MANAGER::UpdateLocalUserCount() f = std::for_each(c_ref_set.begin(), c_ref_set.end(), f); m_iLocalUserCount = f.iTotalCount; - thecore_memcpy(m_aiEmpireUserCount, f.aiEmpireUserCount, sizeof(m_aiEmpireUserCount)); + memcpy(m_aiEmpireUserCount, f.aiEmpireUserCount, sizeof(m_aiEmpireUserCount)); m_aiEmpireUserCount[1] += P2P_MANAGER::instance().GetEmpireUserCount(1); m_aiEmpireUserCount[2] += P2P_MANAGER::instance().GetEmpireUserCount(2); diff --git a/game/src/exchange.cpp b/game/src/exchange.cpp index 7738ea1..42a6501 100644 --- a/game/src/exchange.cpp +++ b/game/src/exchange.cpp @@ -33,8 +33,8 @@ void exchange_packet(LPCHARACTER ch, BYTE sub_header, bool is_me, DWORD arg1, TI if (sub_header == EXCHANGE_SUBHEADER_GC_ITEM_ADD && pvData) { - thecore_memcpy(&pack_exchg.alSockets, ((LPITEM) pvData)->GetSockets(), sizeof(pack_exchg.alSockets)); - thecore_memcpy(&pack_exchg.aAttr, ((LPITEM) pvData)->GetAttributes(), sizeof(pack_exchg.aAttr)); + memcpy(&pack_exchg.alSockets, ((LPITEM) pvData)->GetSockets(), sizeof(pack_exchg.alSockets)); + memcpy(&pack_exchg.aAttr, ((LPITEM) pvData)->GetAttributes(), sizeof(pack_exchg.aAttr)); } else { @@ -556,7 +556,7 @@ bool CExchange::Accept(bool bAccept) if (Done()) { - if (m_lGold) // + if (m_lGold) // ?? GetOwner()->Save(); if (GetCompany()->Done()) diff --git a/game/src/fishing.cpp b/game/src/fishing.cpp index be322fc..73af830 100644 --- a/game/src/fishing.cpp +++ b/game/src/fishing.cpp @@ -185,7 +185,7 @@ namespace fishing void Initialize() { SFishInfo fish_info_bak[MAX_FISH]; - thecore_memcpy(fish_info_bak, fish_info, sizeof(fish_info)); + memcpy(fish_info_bak, fish_info, sizeof(fish_info)); memset(fish_info, 0, sizeof(fish_info)); @@ -208,7 +208,7 @@ void Initialize() // ̸ Ѵ. if (*fish_info_bak[0].name) { - thecore_memcpy(fish_info, fish_info_bak, sizeof(fish_info)); + memcpy(fish_info, fish_info_bak, sizeof(fish_info)); SendLog(" restoring to backup"); } return; @@ -237,7 +237,7 @@ void Initialize() if (*fish_info_bak[0].name) { - thecore_memcpy(fish_info, fish_info_bak, sizeof(fish_info)); + memcpy(fish_info, fish_info_bak, sizeof(fish_info)); SendLog(" restoring to backup"); } break; diff --git a/game/src/guild.cpp b/game/src/guild.cpp index 735adba..29332ee 100644 --- a/game/src/guild.cpp +++ b/game/src/guild.cpp @@ -600,7 +600,7 @@ void CGuild::LoadGuildData(SQLMsg* pmsg) m_data.skill_point = (BYTE) strtoul(row[4], (char **) NULL, 10); if (row[5]) - thecore_memcpy(m_data.abySkill, row[5], sizeof(BYTE) * GUILD_SKILL_COUNT); + memcpy(m_data.abySkill, row[5], sizeof(BYTE) * GUILD_SKILL_COUNT); else memset(m_data.abySkill, 0, sizeof(BYTE) * GUILD_SKILL_COUNT); @@ -648,7 +648,7 @@ void CGuild::SendDBSkillUpdate(int amount) guild_skill.guild_id = m_data.guild_id; guild_skill.amount = amount; guild_skill.skill_point = m_data.skill_point; - thecore_memcpy(guild_skill.skill_levels, m_data.abySkill, sizeof(BYTE) * GUILD_SKILL_COUNT); + memcpy(guild_skill.skill_levels, m_data.abySkill, sizeof(BYTE) * GUILD_SKILL_COUNT); db_clientdesc->DBPacket(HEADER_GD_GUILD_SKILL_UPDATE, 0, &guild_skill, sizeof(guild_skill)); } @@ -1466,7 +1466,7 @@ void CGuild::UpdateSkill(BYTE skill_point, BYTE* skill_levels) } }*/ - thecore_memcpy(m_data.abySkill, skill_levels, sizeof(BYTE) * GUILD_SKILL_COUNT); + memcpy(m_data.abySkill, skill_levels, sizeof(BYTE) * GUILD_SKILL_COUNT); ComputeGuildPoints(); } diff --git a/game/src/guild_manager.cpp b/game/src/guild_manager.cpp index f2e5390..0b86a0f 100644 --- a/game/src/guild_manager.cpp +++ b/game/src/guild_manager.cpp @@ -883,7 +883,7 @@ void CGuildManager::ReserveWarAdd(TGuildWarReserve * p) m_vec_kReserveWar.push_back(pkReserve); } - thecore_memcpy(&pkReserve->data, p, sizeof(TGuildWarReserve)); + memcpy(&pkReserve->data, p, sizeof(TGuildWarReserve)); sys_log(0, "ReserveWarAdd %u gid1 %u power %d gid2 %u power %d handicap %d", pkReserve->data.dwID, p->dwGuildFrom, p->lPowerFrom, p->dwGuildTo, p->lPowerTo, p->lHandicap); diff --git a/game/src/input.h b/game/src/input.h index 89af4c1..ab9f008 100644 --- a/game/src/input.h +++ b/game/src/input.h @@ -233,7 +233,6 @@ protected: void ChangeName(LPDESC d, const char * data); void AuthLogin(LPDESC d, const char * c_pData); - void AuthLoginOpenID(LPDESC d, const char * c_pData); void ItemAward(const char * c_pData); void ChangeEmpirePriv(const char* c_pData); @@ -365,11 +364,9 @@ class CInputAuth : public CInputProcessor protected: virtual int Analyze(LPDESC d, BYTE bHeader, const char * c_pData); - int auth_OpenID(const char *authKey, const char *ipAddr, char *rID); public: void Login(LPDESC d, const char * c_pData); - void LoginOpenID(LPDESC d, const char * c_pData); //2012.07.19 OpenID : void PasspodAnswer(LPDESC d, const char * c_pData ); }; diff --git a/game/src/input_auth.cpp b/game/src/input_auth.cpp index a03e595..ac97dc7 100644 --- a/game/src/input_auth.cpp +++ b/game/src/input_auth.cpp @@ -8,11 +8,9 @@ #include "matrix_card.h" #include "passpod.h" #include "locale_service.h" -#include "auth_brazil.h" #include "db.h" extern time_t get_global_time(); -extern int openid_server; bool FN_IS_VALID_LOGIN_STRING(const char *str) { @@ -157,28 +155,8 @@ void CInputAuth::Login(LPDESC d, const char * c_pData) sys_log(0, "InputAuth::Login : key %u:0x%x login %s", dwKey, dwPanamaKey, login); - // BRAZIL_AUTH - if (LC_IsBrazil() && !test_server) - { - int result = auth_brazil(login, passwd); - - switch (result) - { - case AUTH_BRAZIL_SERVER_ERR: - case AUTH_BRAZIL_NOID: - LoginFailure(d, "NOID"); - return; - case AUTH_BRAZIL_WRONGPWD: - LoginFailure(d, "WRONGPWD"); - return; - case AUTH_BRAZIL_FLASHUSER: - LoginFailure(d, "FLASH"); - return; - } - } - TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3; - thecore_memcpy(p, pinfo, sizeof(TPacketCGLogin3)); + memcpy(p, pinfo, sizeof(TPacketCGLogin3)); char szPasswd[PASSWD_MAX_LEN * 2 + 1]; DBManager::instance().EscapeString(szPasswd, sizeof(szPasswd), passwd, strlen(passwd)); @@ -223,278 +201,6 @@ void CInputAuth::Login(LPDESC d, const char * c_pData) } } -void CInputAuth::LoginOpenID(LPDESC d, const char * c_pData) -{ - //OpenID test code. - TPacketCGLogin5 *tempInfo1 = (TPacketCGLogin5 *)c_pData; - - //Ϻ Ű Ȯ û . - char* authKey = tempInfo1->authKey; - char returnID[LOGIN_MAX_LEN + 1] = {0}; - - int test_url_get_protocol = auth_OpenID(authKey, inet_ntoa(d->GetAddr().sin_addr), returnID); - - // . ó - if (0!=test_url_get_protocol) - { - LoginFailure(d, "OpenID Fail"); - return; - } - - TPacketCGLogin3 tempInfo2; - strncpy(tempInfo2.login, returnID, LOGIN_MAX_LEN); - strncpy(tempInfo2.passwd, "0000", PASSWD_MAX_LEN); - for(int i=0;i<4;i++) - tempInfo2.adwClientKey[i] = tempInfo1->adwClientKey[i]; - TPacketCGLogin3 * pinfo = &tempInfo2; - - if (!g_bAuthServer) - { - sys_err ("CInputAuth class is not for game server. IP %s might be a hacker.", - inet_ntoa(d->GetAddr().sin_addr)); - d->DelayedDisconnect(5); - return; - } - - // string Ἲ - char login[LOGIN_MAX_LEN + 1]; - trim_and_lower(pinfo->login, login, sizeof(login)); - - char passwd[PASSWD_MAX_LEN + 1]; - strncpy(passwd, pinfo->passwd, sizeof(passwd)); - - sys_log(0, "InputAuth::Login : %s(%d) desc %p", - login, strlen(login), get_pointer(d)); - - // check login string - if (false == FN_IS_VALID_LOGIN_STRING(login)) - { - sys_log(0, "InputAuth::Login : IS_NOT_VALID_LOGIN_STRING(%s) desc %p", - login, get_pointer(d)); - LoginFailure(d, "NOID"); - return; - } - - if (g_bNoMoreClient) - { - TPacketGCLoginFailure failurePacket; - - failurePacket.header = HEADER_GC_LOGIN_FAILURE; - strncpy(failurePacket.szStatus, "SHUTDOWN", sizeof(failurePacket.szStatus)); - - d->Packet(&failurePacket, sizeof(failurePacket)); - return; - } - - if (DESC_MANAGER::instance().FindByLoginName(login)) - { - LoginFailure(d, "ALREADY"); - return; - } - - DWORD dwKey = DESC_MANAGER::instance().CreateLoginKey(d); - DWORD dwPanamaKey = dwKey ^ pinfo->adwClientKey[0] ^ pinfo->adwClientKey[1] ^ pinfo->adwClientKey[2] ^ pinfo->adwClientKey[3]; - d->SetPanamaKey(dwPanamaKey); - - sys_log(0, "InputAuth::Login : key %u:0x%x login %s", dwKey, dwPanamaKey, login); - - // BRAZIL_AUTH - if (LC_IsBrazil() && !test_server) - { - int result = auth_brazil(login, passwd); - - switch (result) - { - case AUTH_BRAZIL_SERVER_ERR: - case AUTH_BRAZIL_NOID: - LoginFailure(d, "NOID"); - return; - case AUTH_BRAZIL_WRONGPWD: - LoginFailure(d, "WRONGPWD"); - return; - case AUTH_BRAZIL_FLASHUSER: - LoginFailure(d, "FLASH"); - return; - } - } - - TPacketCGLogin3 * p = M2_NEW TPacketCGLogin3; - thecore_memcpy(p, pinfo, sizeof(TPacketCGLogin3)); - - char szPasswd[PASSWD_MAX_LEN * 2 + 1]; - DBManager::instance().EscapeString(szPasswd, sizeof(szPasswd), passwd, strlen(passwd)); - - char szLogin[LOGIN_MAX_LEN * 2 + 1]; - DBManager::instance().EscapeString(szLogin, sizeof(szLogin), login, strlen(login)); - - // CHANNEL_SERVICE_LOGIN - if (Login_IsInChannelService(szLogin)) - { - sys_log(0, "ChannelServiceLogin [%s]", szLogin); - - DBManager::instance().ReturnQuery(QID_AUTH_LOGIN_OPENID, dwKey, p, - "SELECT '%s',password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - - szPasswd, szLogin); - } - // END_OF_CHANNEL_SERVICE_LOGIN - else - { - DBManager::instance().ReturnQuery(QID_AUTH_LOGIN_OPENID, dwKey, p, - "SELECT PASSWORD('%s'),password,securitycode,social_id,id,status,availDt - NOW() > 0," - "UNIX_TIMESTAMP(silver_expire)," - "UNIX_TIMESTAMP(gold_expire)," - "UNIX_TIMESTAMP(safebox_expire)," - "UNIX_TIMESTAMP(autoloot_expire)," - "UNIX_TIMESTAMP(fish_mind_expire)," - "UNIX_TIMESTAMP(marriage_fast_expire)," - "UNIX_TIMESTAMP(money_drop_rate_expire)," - "UNIX_TIMESTAMP(create_time)" - " FROM account WHERE login='%s'", - szPasswd, szLogin); - } -} - -extern void socket_timeout(socket_t s, long sec, long usec); - -//OpenID -int CInputAuth::auth_OpenID(const char *authKey, const char *ipAddr, char *rID) -{ - //return value - //0 : normal execution - //1 : cannot connect to openid auth server - //2 : socket_write failed - //3 : openid auth server not reply - //4 : Reply Error - //5 : Incorrect auth key. - - extern char openid_host[256]; - extern char openid_uri[256]; - - int port = 80; - - socket_t fd = socket_connect(openid_host, port); - if (fd < 0) - { - sys_err("[auth_OpenID] : could not connect to OpenID server(%s)", openid_host); - return 1; - } - - socket_block(fd); - socket_timeout(fd, 3, 0); - - // send request - { - char request[512]; - int len = snprintf(request, sizeof(request), - //"GET /kyw/gameauth.php?auth_key=%s&ip=%s HTTP/1.1\r\n" - "GET %s?auth_key=%s&ip=%s HTTP/1.1\r\n" - "Host: %s\r\n" - "Connection: Close\r\n\r\n", - //openid_uri, authKey,ipAddr);//"aaaaa", "202.31.212.73"); - //authKey,ipAddr); - //"/kyw/gameauth.php", authKey, ipAddr); - openid_uri, authKey, ipAddr, openid_host); - -//#ifndef __WIN32__ -// if (write(fd, request, len) < 0) -//#else - if (socket_write(fd, request, len) < 0) -//#endif - { - sys_err("[auth_OpenID] : could not send auth-request (%s)", authKey); - socket_close(fd); - return 2; - } - } - - // read reply - char reply[1024] = {0}; - int len; -//#ifndef __WIN32__ -// len = read(fd, reply, sizeof(reply)); -//#else - len = socket_read(fd, reply, sizeof(reply)); -//#endif - socket_close(fd); - - if (len <= 0) - { - sys_err("[auth_OpenID] : could not recv auth-reply (%s)", authKey); - return 3; - } - - // Ľ - char buffer[1024]; - strcpy(buffer, reply); - - const char *delim = "\r\n"; - char *last = 0; - char *v = strtok(buffer, delim); - char *result = 0; - - while (v) - { - result = v; - v = strtok(NULL, delim); - } - - - char *id = strtok(result, "%"); - char *success = strtok(NULL, "%"); - - if (!*id || !*success) - { - sys_err("[auth_OpenID] : OpenID AuthServer Reply Error (%s)", reply); - return 4; - } - - if (0 != strcmp("OK", success)) // ó - { - int returnNumber = 0; - str_to_number(returnNumber, id); - switch (returnNumber) - { - case 1: - sys_err("[auth_OpenID] : AuthKey incorrect"); - break; - case 2: - sys_err("[auth_OpenID] : ip incorrect"); - break; - case 3: - sys_err("[auth_OpenID] : used AuthKey"); - break; - case 4: - sys_err("[auth_OpenID] : AuthKey not delivered"); - break; - case 5: - sys_err("[auth_OpenID] : ip not delivered"); - break; - case 6: - sys_err("[auth_OpenID] : AuthKey time over"); - break; - default: - break; - - return 5; - } - } - - strcpy(rID, id); - - return 0; -} - - int CInputAuth::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) { @@ -521,14 +227,6 @@ int CInputAuth::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) Login(d, c_pData); break; - //2012.07.19 OpenID : - case HEADER_CG_LOGIN5_OPENID: - if (openid_server) - LoginOpenID(d, c_pData); - else - sys_err("HEADER_CG_LOGIN5_OPENID : wrong client access"); - break; - case HEADER_CG_PASSPOD_ANSWER: PasspodAnswer(d, c_pData); break; diff --git a/game/src/input_db.cpp b/game/src/input_db.cpp index 4b95d04..c67139b 100644 --- a/game/src/input_db.cpp +++ b/game/src/input_db.cpp @@ -57,7 +57,6 @@ extern int auction_server; extern void gm_insert(const char * name, BYTE level); extern BYTE gm_get_level(const char * name, const char * host, const char* account ); extern void gm_host_insert(const char * host); -extern int openid_server; #define MAPNAME_DEFAULT "none" @@ -1753,42 +1752,6 @@ void CInputDB::AuthLogin(LPDESC d, const char * c_pData) d->Packet(&ptoc, sizeof(TPacketGCAuthSuccess)); sys_log(0, "AuthLogin result %u key %u", bResult, d->GetLoginKey()); } -void CInputDB::AuthLoginOpenID(LPDESC d, const char * c_pData) -{ - if (!d) - return; - - BYTE bResult = *(BYTE *) c_pData; - - TPacketGCAuthSuccessOpenID ptoc; - - ptoc.bHeader = HEADER_GC_AUTH_SUCCESS_OPENID; - - if (bResult) - { - // Panama ȣȭ ѿ ʿ Ű - SendPanamaList(d); - ptoc.dwLoginKey = d->GetLoginKey(); - - //NOTE: AuthSucess ȱ׷ PHASE Close Ǽ ʴ´.-_- - //Send Client Package CryptKey - { - DESC_MANAGER::instance().SendClientPackageCryptKey(d); - DESC_MANAGER::instance().SendClientPackageSDBToLoadMap(d, MAPNAME_DEFAULT); - } - } - else - { - ptoc.dwLoginKey = 0; - } - - strcpy(ptoc.login, d->GetLogin().c_str()); - - ptoc.bResult = bResult; - - d->Packet(&ptoc, sizeof(TPacketGCAuthSuccessOpenID)); - sys_log(0, "AuthLogin result %u key %u", bResult, d->GetLoginKey()); -} void CInputDB::ChangeEmpirePriv(const char* c_pData) { @@ -2327,10 +2290,7 @@ int CInputDB::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) break; case HEADER_DG_AUTH_LOGIN: - if (openid_server) - AuthLoginOpenID(DESC_MANAGER::instance().FindByHandle(m_dwHandle), c_pData); - else - AuthLogin(DESC_MANAGER::instance().FindByHandle(m_dwHandle), c_pData); + AuthLogin(DESC_MANAGER::instance().FindByHandle(m_dwHandle), c_pData); break; case HEADER_DG_CHANGE_EMPIRE_PRIV: diff --git a/game/src/input_login.cpp b/game/src/input_login.cpp index beb0259..f3eaf80 100644 --- a/game/src/input_login.cpp +++ b/game/src/input_login.cpp @@ -196,7 +196,7 @@ void CInputLogin::LoginByKey(LPDESC d, const char * data) strncpy(ptod.szLogin, login, sizeof(ptod.szLogin)); ptod.dwLoginKey = pinfo->dwLoginKey; - thecore_memcpy(ptod.adwClientKey, pinfo->adwClientKey, sizeof(DWORD) * 4); + memcpy(ptod.adwClientKey, pinfo->adwClientKey, sizeof(DWORD) * 4); strncpy(ptod.szIP, d->GetHostName(), sizeof(ptod.szIP)); db_clientdesc->DBPacket(HEADER_GD_LOGIN_BY_KEY, d->GetHandle(), &ptod, sizeof(TPacketGDLoginByKey)); diff --git a/game/src/item.cpp b/game/src/item.cpp index 67b9e0c..d42eb5f 100644 --- a/game/src/item.cpp +++ b/game/src/item.cpp @@ -216,7 +216,7 @@ void CItem::UpdatePacket() for (int i = 0; i < ITEM_SOCKET_MAX_NUM; ++i) pack.alSockets[i] = m_alSockets[i]; - thecore_memcpy(pack.aAttr, GetAttributes(), sizeof(pack.aAttr)); + memcpy(pack.aAttr, GetAttributes(), sizeof(pack.aAttr)); sys_log(2, "UpdatePacket %s -> %s", GetName(), m_pOwner->GetName()); m_pOwner->GetDesc()->Packet(&pack, sizeof(pack)); @@ -541,7 +541,7 @@ int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell) return WEAR_UNIQUE1; } - // Ʈ ° ѹ E . + // Ʈ ° ѹ ?E . else if (GetWearFlag() & WEARABLE_ABILITY) { if (!ch->GetWear(WEAR_ABILITY1)) @@ -994,7 +994,7 @@ bool CItem::CreateSocket(BYTE bSlot, BYTE bGold) void CItem::SetSockets(const long * c_al) { - thecore_memcpy(m_alSockets, c_al, sizeof(m_alSockets)); + memcpy(m_alSockets, c_al, sizeof(m_alSockets)); Save(); } @@ -1992,8 +1992,8 @@ void CItem::CopyToRawData (TPlayerItem* new_item) new_item->count = m_dwCount; new_item->vnum = GetVnum(); - thecore_memcpy (new_item->alSockets, m_alSockets, sizeof (m_alSockets)); - thecore_memcpy (new_item->aAttr, m_aAttr, sizeof (m_aAttr)); + memcpy (new_item->alSockets, m_alSockets, sizeof (m_alSockets)); + memcpy (new_item->aAttr, m_aAttr, sizeof (m_aAttr)); new_item->owner = m_pOwner->GetPlayerID(); } diff --git a/game/src/item_attribute.cpp b/game/src/item_attribute.cpp index 56b16a0..9864166 100644 --- a/game/src/item_attribute.cpp +++ b/game/src/item_attribute.cpp @@ -285,7 +285,7 @@ bool CItem::RemoveAttributeType(BYTE bType) void CItem::SetAttributes(const TPlayerItemAttribute* c_pAttribute) { - thecore_memcpy(m_aAttr, c_pAttribute, sizeof(m_aAttr)); + memcpy(m_aAttr, c_pAttribute, sizeof(m_aAttr)); Save(); } diff --git a/game/src/item_manager.cpp b/game/src/item_manager.cpp index 42c12f9..23fa79b 100644 --- a/game/src/item_manager.cpp +++ b/game/src/item_manager.cpp @@ -65,7 +65,7 @@ bool ITEM_MANAGER::Initialize(TItemTable * table, int size) int i; m_vec_prototype.resize(size); - thecore_memcpy(&m_vec_prototype[0], table, sizeof(TItemTable) * size); + memcpy(&m_vec_prototype[0], table, sizeof(TItemTable) * size); for (int i = 0; i < size; i++) { if (0 != m_vec_prototype[i].dwVnumRange) @@ -460,8 +460,8 @@ void ITEM_MANAGER::SaveSingleItem(LPITEM item) t.count = item->GetCount(); t.vnum = item->GetOriginalVnum(); t.owner = (t.window == SAFEBOX || t.window == MALL) ? item->GetOwner()->GetDesc()->GetAccountTable().id : item->GetOwner()->GetPlayerID(); - thecore_memcpy(t.alSockets, item->GetSockets(), sizeof(t.alSockets)); - thecore_memcpy(t.aAttr, item->GetAttributes(), sizeof(t.aAttr)); + memcpy(t.alSockets, item->GetSockets(), sizeof(t.alSockets)); + memcpy(t.aAttr, item->GetAttributes(), sizeof(t.aAttr)); db_clientdesc->DBPacketHeader(HEADER_GD_ITEM_SAVE, 0, sizeof(TPlayerItem)); db_clientdesc->Packet(&t, sizeof(TPlayerItem)); @@ -1257,7 +1257,7 @@ bool DropEvent_CharStone_SetValue(const std::string& name, int value) // fixme // Ͱ Բ quest . // ̰ ʹ ݾ... -// .. ϵڵ ȴ ̤ +// ??.. ϵڵ ȴ ̤ // 跮 . // by rtsummit ġ ¥ static struct DropEvent_RefineBox diff --git a/game/src/locale_service.cpp b/game/src/locale_service.cpp index 54da15b..1682465 100644 --- a/game/src/locale_service.cpp +++ b/game/src/locale_service.cpp @@ -29,11 +29,6 @@ int (*check_name) (const char * str) = NULL; int (*is_twobyte) (const char * str) = NULL; bool LC_InitLocalization( const std::string& szLocal ); -int is_twobyte_euckr(const char * str) -{ - return ishan(*str); -} - int is_twobyte_gb2312(const char * str) { if (!str || !*str) @@ -227,46 +222,6 @@ int check_name_big5(const char * str ) return check_name_independent(str); } -int check_name_euckr(const char * str) -{ - int code; - const char* tmp; - - if (!str || !*str) - return 0; - - if ( strlen(str) < 2 || strlen(str) > 12 ) - return 0; - - for (tmp = str; *tmp; ++tmp) - { - // ѱ ƴϰ ĭ̸ ߸ - if (isnhspace(*tmp)) - return 0; - - // ѱ ƴϰ ڶ ϴ. - if (isnhdigit(*tmp)) - continue; - - // ѱ ƴϰ ̶ ϴ. - if (!ishan(*tmp) && isalpha(*tmp)) - continue; - - code = *tmp; - code += 256; - - if (code < 176 || code > 200) - return 0; - - ++tmp; - - if (!*tmp) - break; - } - - return check_name_independent(str); -} - int check_name_latin1(const char * str) { int code; @@ -281,15 +236,15 @@ int check_name_latin1(const char * str) for (tmp = str; *tmp; ++tmp) { // ѱ ƴϰ ĭ̸ ߸ - if (isnhspace(*tmp)) + if (isspace(*tmp)) return 0; // ѱ ƴϰ ڶ ϴ. - if (isnhdigit(*tmp)) + if (isdigit(*tmp)) continue; // ѱ ƴϰ ̶ ϴ. - if (!ishan(*tmp) && isalpha(*tmp)) + if (isalpha(*tmp)) continue; unsigned char uc_tmp = *tmp; @@ -1197,10 +1152,10 @@ bool LocaleService_Init(const std::string& c_rstServiceName) void LocaleService_TransferDefaultSetting() { if (!check_name) - check_name = check_name_euckr; + check_name = check_name_independent; if (!is_twobyte) - is_twobyte = is_twobyte_euckr; + is_twobyte = is_twobyte_gb2312; if (!exp_table) exp_table = exp_table_common; diff --git a/game/src/login_data.cpp b/game/src/login_data.cpp index 56d4286..52237d5 100644 --- a/game/src/login_data.cpp +++ b/game/src/login_data.cpp @@ -21,7 +21,7 @@ CLoginData::CLoginData() void CLoginData::SetClientKey(const DWORD * c_pdwClientKey) { - thecore_memcpy(&m_adwClientKey, c_pdwClientKey, sizeof(DWORD) * 4); + memcpy(&m_adwClientKey, c_pdwClientKey, sizeof(DWORD) * 4); } const DWORD * CLoginData::GetClientKey() @@ -140,7 +140,7 @@ const char * CLoginData::GetLogin() void CLoginData::SetPremium(int * paiPremiumTimes) { - thecore_memcpy(m_aiPremiumTimes, paiPremiumTimes, sizeof(m_aiPremiumTimes)); + memcpy(m_aiPremiumTimes, paiPremiumTimes, sizeof(m_aiPremiumTimes)); } int CLoginData::GetPremium(BYTE type) diff --git a/game/src/main.cpp b/game/src/main.cpp index 2f7ef92..259d56c 100644 --- a/game/src/main.cpp +++ b/game/src/main.cpp @@ -55,7 +55,6 @@ #include "spam.h" #include "panama.h" #include "threeway_war.h" -#include "auth_brazil.h" #include "DragonLair.h" #include "skill_power.h" #include "SpeedServer.h" @@ -66,10 +65,6 @@ #include "auction_manager.h" #endif -#ifndef __WIN32__ -#include -#endif - #ifdef USE_STACKTRACE #include #endif @@ -112,8 +107,6 @@ int start(int argc, char **argv); int idle(); void destroy(); -void test(); - enum EProfile { PROF_EVENT, @@ -232,9 +225,6 @@ void heartbeat(LPHEART ht, int pulse) // 1ʸ if (!(pulse % ht->passes_per_sec)) { - if (g_bAuthServer && LC_IsBrazil() && !test_server) - auth_brazil_log(); - if (!g_bAuthServer) { TPlayerCountPacket pack; @@ -334,18 +324,6 @@ int main(int argc, char **argv) DebugAllocator::StaticSetUp(); #endif -#ifndef __WIN32__ - // start unit tests if option is set - if ( argc > 1 ) - { - if ( strcmp( argv[1], "unittest" ) == 0 ) - { - ::testing::InitGoogleTest(&argc, argv); - return RUN_ALL_TESTS(); - } - } -#endif - ilInit(); // DevIL Initialize WriteVersion(); diff --git a/game/src/mob_manager.cpp b/game/src/mob_manager.cpp index 3c44d7f..b8b157b 100644 --- a/game/src/mob_manager.cpp +++ b/game/src/mob_manager.cpp @@ -65,7 +65,7 @@ bool CMobManager::Initialize(TMobTable * pTable, int iSize) { CMob * pkMob = M2_NEW CMob; - thecore_memcpy(&pkMob->m_table, t, sizeof(TMobTable)); + memcpy(&pkMob->m_table, t, sizeof(TMobTable)); m_map_pkMobByVnum.insert(std::map::value_type(t->dwVnum, pkMob)); m_map_pkMobByName.insert(std::map::value_type(t->szLocaleName, pkMob)); diff --git a/game/src/packet.h b/game/src/packet.h index a880c53..5704219 100644 --- a/game/src/packet.h +++ b/game/src/packet.h @@ -52,7 +52,7 @@ enum HEADER_CG_MESSENGER = 67, HEADER_CG_MALL_CHECKOUT = 69, - HEADER_CG_SAFEBOX_CHECKIN = 70, // â ֆ´. + HEADER_CG_SAFEBOX_CHECKIN = 70, // â ??´. HEADER_CG_SAFEBOX_CHECKOUT = 71, // â ´. HEADER_CG_PARTY_INVITE = 72, @@ -91,8 +91,6 @@ enum HEADER_CG_SCRIPT_SELECT_ITEM = 114, // END_OF_SCRIPT_SELECT_ITEM - HEADER_CG_LOGIN5_OPENID = 116, //OpenID : Ŭ̾Ʈκ OpenID Ű ޴´. - // HEADER_CG_ROULETTE = 200, // HEADER_CG_RUNUP_MATRIX_ANSWER = 201, @@ -276,8 +274,6 @@ enum HEADER_GC_HYBRIDCRYPT_SDB = 153, // SDB means Supplmentary Data Blocks //HYBRID CRYPT - HEADER_GC_AUTH_SUCCESS_OPENID = 154, - // ROULETTE HEADER_GC_ROULETTE = 200, // END_ROULETTE @@ -548,13 +544,6 @@ typedef struct command_login3 DWORD adwClientKey[4]; } TPacketCGLogin3; -typedef struct command_login5 -{ - BYTE header; - char authKey[OPENID_AUTHKEY_LEN + 1]; - DWORD adwClientKey[4]; -} TPacketCGLogin5; - typedef struct command_matrix_card { BYTE bHeader; @@ -901,14 +890,6 @@ typedef struct packet_auth_success BYTE bResult; } TPacketGCAuthSuccess; -typedef struct packet_auth_success_openid -{ - BYTE bHeader; - DWORD dwLoginKey; - BYTE bResult; - char login[LOGIN_MAX_LEN + 1]; -} TPacketGCAuthSuccessOpenID; - typedef struct packet_login_failure { BYTE header; diff --git a/game/src/packet_info.cpp b/game/src/packet_info.cpp index a3bf012..c65b52a 100644 --- a/game/src/packet_info.cpp +++ b/game/src/packet_info.cpp @@ -146,7 +146,6 @@ CPacketInfoCG::CPacketInfoCG() Set(HEADER_CG_LOGIN, sizeof(TPacketCGLogin), "Login", true); Set(HEADER_CG_LOGIN2, sizeof(TPacketCGLogin2), "Login2", true); Set(HEADER_CG_LOGIN3, sizeof(TPacketCGLogin3), "Login3", true); - Set(HEADER_CG_LOGIN5_OPENID, sizeof(TPacketCGLogin5), "Login5", true); //OpenID Set(HEADER_CG_ATTACK, sizeof(TPacketCGAttack), "Attack", true); Set(HEADER_CG_CHAT, sizeof(TPacketCGChat), "Chat", true); Set(HEADER_CG_WHISPER, sizeof(TPacketCGWhisper), "Whisper", true); diff --git a/game/src/questlua_global.cpp b/game/src/questlua_global.cpp index b8b5a69..082ccfb 100644 --- a/game/src/questlua_global.cpp +++ b/game/src/questlua_global.cpp @@ -869,15 +869,6 @@ namespace quest return 1; } - int _under_han(lua_State* L) - { - if (!lua_isstring(L, 1)) - lua_pushboolean(L, 0); - else - lua_pushboolean(L, under_han(lua_tostring(L, 1))); - return 1; - } - int _notice_all( lua_State* L ) { ostringstream s; @@ -1395,7 +1386,6 @@ namespace quest { "find_npc_by_vnum", _find_npc_by_vnum }, { "set_quest_state", _set_quest_state }, { "get_quest_state", _get_quest_state }, - { "under_han", _under_han }, { "notice", _notice }, { "notice_all", _notice_all }, { "notice_in_map", _notice_in_map }, diff --git a/game/src/safebox.cpp b/game/src/safebox.cpp index 313b8d4..75b3981 100644 --- a/game/src/safebox.cpp +++ b/game/src/safebox.cpp @@ -76,8 +76,8 @@ bool CSafebox::Add(DWORD dwPos, LPITEM pkItem) pack.count = pkItem->GetCount(); pack.flags = pkItem->GetFlag(); pack.anti_flags = pkItem->GetAntiFlag(); - thecore_memcpy(pack.alSockets, pkItem->GetSockets(), sizeof(pack.alSockets)); - thecore_memcpy(pack.aAttr, pkItem->GetAttributes(), sizeof(pack.aAttr)); + memcpy(pack.alSockets, pkItem->GetSockets(), sizeof(pack.alSockets)); + memcpy(pack.aAttr, pkItem->GetAttributes(), sizeof(pack.aAttr)); m_pkChrOwner->GetDesc()->Packet(&pack, sizeof(pack)); sys_log(1, "SAFEBOX: ADD %s %s count %d", m_pkChrOwner->GetName(), pkItem->GetName(), pkItem->GetCount()); diff --git a/game/src/shop.cpp b/game/src/shop.cpp index 0b32daa..cb01c02 100644 --- a/game/src/shop.cpp +++ b/game/src/shop.cpp @@ -333,7 +333,7 @@ int CShop::Buy(LPCHARACTER ch, BYTE pos) } } - // 싚 5% + // ?? 5% if (!m_pkPC) { CMonarch::instance().SendtoDBAddMoney(dwTax, ch->GetEmpire(), ch); @@ -463,8 +463,8 @@ bool CShop::AddGuest(LPCHARACTER ch, DWORD owner_vid, bool bOtherEmpire) if (item.pkItem) { - thecore_memcpy(pack2.items[i].alSockets, item.pkItem->GetSockets(), sizeof(pack2.items[i].alSockets)); - thecore_memcpy(pack2.items[i].aAttr, item.pkItem->GetAttributes(), sizeof(pack2.items[i].aAttr)); + memcpy(pack2.items[i].alSockets, item.pkItem->GetSockets(), sizeof(pack2.items[i].alSockets)); + memcpy(pack2.items[i].aAttr, item.pkItem->GetAttributes(), sizeof(pack2.items[i].aAttr)); } } @@ -531,8 +531,8 @@ void CShop::BroadcastUpdateItem(BYTE pos) pack2.item.vnum = m_itemVector[pos].vnum; if (m_itemVector[pos].pkItem) { - thecore_memcpy(pack2.item.alSockets, m_itemVector[pos].pkItem->GetSockets(), sizeof(pack2.item.alSockets)); - thecore_memcpy(pack2.item.aAttr, m_itemVector[pos].pkItem->GetAttributes(), sizeof(pack2.item.aAttr)); + memcpy(pack2.item.alSockets, m_itemVector[pos].pkItem->GetSockets(), sizeof(pack2.item.alSockets)); + memcpy(pack2.item.aAttr, m_itemVector[pos].pkItem->GetAttributes(), sizeof(pack2.item.aAttr)); } else { diff --git a/game/src/utils.cpp b/game/src/utils.cpp index c42d769..14adf0e 100644 --- a/game/src/utils.cpp +++ b/game/src/utils.cpp @@ -65,7 +65,7 @@ size_t str_lower(const char * src, char * dest, size_t dest_size) void skip_spaces(const char **string) { - for (; **string != '\0' && isnhspace(**string); ++(*string)); + for (; **string != '\0' && isspace(**string); ++(*string)); } const char *one_argument(const char *argument, char *first_arg, size_t first_size) @@ -94,7 +94,7 @@ const char *one_argument(const char *argument, char *first_arg, size_t first_siz continue; } - if (!mark && isnhspace(*argument)) + if (!mark && isspace(*argument)) break; *(first_arg++) = *argument; @@ -121,7 +121,7 @@ const char *first_cmd(const char *argument, char *first_arg, size_t first_arg_si // \0 ڸ Ȯ first_arg_size -= 1; - while (*argument && !isnhspace(*argument) && cur_len < first_arg_size) + while (*argument && !isspace(*argument) && cur_len < first_arg_size) { *(first_arg++) = LOWER(*argument); ++argument; diff --git a/libgame/src/attribute.cc b/libgame/src/attribute.cc index c57a954..5d08308 100644 --- a/libgame/src/attribute.cc +++ b/libgame/src/attribute.cc @@ -124,7 +124,7 @@ CAttribute::CAttribute(DWORD * attr, DWORD width, DWORD height) // attr Alloc(); if (dataType == D_DWORD) // D_DWORD Ӽ Ƿ . - thecore_memcpy(data, attr, sizeof(DWORD) * width * height); + memcpy(data, attr, sizeof(DWORD) * width * height); else { // ƴϸ Ʈ ؾ Ѵ. @@ -245,7 +245,7 @@ void CAttribute::CopyRow(DWORD y, DWORD * row) } if (dwordPtr) - thecore_memcpy(row, dwordPtr[y], sizeof(DWORD) * width); + memcpy(row, dwordPtr[y], sizeof(DWORD) * width); else { if (bytePtr) diff --git a/libgame/src/grid.cc b/libgame/src/grid.cc index 82645ec..1aacccf 100644 --- a/libgame/src/grid.cc +++ b/libgame/src/grid.cc @@ -1,6 +1,5 @@ #include #include -#include "../../libthecore/include/memcpy.h" #include #include "grid.h" @@ -14,7 +13,7 @@ CGrid::CGrid(CGrid * pkGrid, int w, int h) : m_iWidth(w), m_iHeight(h) { m_pGrid = new char[m_iWidth * m_iHeight]; int iSize = std::MIN(w * h, pkGrid->m_iWidth * pkGrid->m_iHeight); - thecore_memcpy(m_pGrid, pkGrid->m_pGrid, sizeof(char) * iSize); + memcpy(m_pGrid, pkGrid->m_pGrid, sizeof(char) * iSize); } CGrid::~CGrid() diff --git a/libthecore/include/crypt.h b/libthecore/include/crypt.h deleted file mode 100644 index e9df66b..0000000 --- a/libthecore/include/crypt.h +++ /dev/null @@ -1,23 +0,0 @@ -#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 . - - This implementation is based on their code in - */ - - extern int TEA_Encrypt(DWORD *dest, const DWORD *src, const DWORD *key, int size); - extern int TEA_Decrypt(DWORD *dest, const DWORD *src, const DWORD *key, int size); - - extern int GOST_Encrypt(DWORD * DstBuffer, const DWORD * SrcBuffer, const DWORD * KeyAddress, DWORD Length, DWORD *IVector); - extern int GOST_Decrypt(DWORD * DstBuffer, const DWORD * SrcBuffer, const DWORD * KeyAddress, DWORD Length, DWORD *IVector); - - extern int DES_Encrypt(DWORD *DstBuffer, const DWORD * SrcBuffer, const DWORD *KeyAddress, DWORD Length, DWORD *IVector); - extern int DES_Decrypt(DWORD *DstBuffer, const DWORD * SrcBuffer, const DWORD *KeyAddress, DWORD Length, DWORD *IVector); - -#ifdef __cplusplus -}; -#endif diff --git a/libthecore/include/hangul.h b/libthecore/include/hangul.h deleted file mode 100644 index 4800eb7..0000000 --- a/libthecore/include/hangul.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __INC_LIBTHECORE_HANGUL_H__ -#define __INC_LIBTHECORE_HANGUL_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#ifdef __WIN32__ -#define isdigit iswdigit -#define isspace iswspace -#endif - -#define ishan(ch) (((ch) & 0xE0) > 0x90) -#define ishanasc(ch) (isascii(ch) || ishan(ch)) -#define ishanalp(ch) (isalpha(ch) || ishan(ch)) -#define isnhdigit(ch) (!ishan(ch) && isdigit(ch)) -#define isnhspace(ch) (!ishan(ch) && isspace(ch)) - - extern const char * first_han(const BYTE * str); // ù° () ̾ ///.. Ѵ. - extern int check_han(const char * str); // ѱ̸ true Ʈ üũ - extern int is_hangul(const BYTE * str); // ѱ̸ true (2Ʈ üũ) - extern int under_han(const void * orig); // ħ true - -#define UNDER(str) under_han(str) - -#ifdef __cplusplus -}; -#endif - -#endif diff --git a/libthecore/include/kstbl.h b/libthecore/include/kstbl.h deleted file mode 100644 index 6cf4dbd..0000000 --- a/libthecore/include/kstbl.h +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Filename: kstbl.h - * Description: KS ϼ 2350 ڵ - * - * Author: (server), myevan (Client) - */ -#ifndef __KSTBL_H__ -#define __KSTBL_H__ -extern unsigned KStbl[2350]; -#endif diff --git a/libthecore/include/memcpy.h b/libthecore/include/memcpy.h deleted file mode 100644 index efbf16a..0000000 --- a/libthecore/include/memcpy.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __INC_LIBTHECORE_MEMCPY_H__ -#define __INC_LIBTHECORE_MEMCPY_H__ - -#ifdef __cplusplus -extern "C" -{ -#endif -#ifdef __LIBTHECORE__ - void thecore_find_best_memcpy(); -#endif - -#ifndef __WIN32__ - extern void *(*thecore_memcpy) (void * to, const void * from, size_t len); -#else -#include -#define thecore_memcpy memcpy -#endif - -#ifdef __cplusplus -}; -#endif - -#endif diff --git a/libthecore/include/stdafx.h b/libthecore/include/stdafx.h index 21b4a8b..8485c67 100644 --- a/libthecore/include/stdafx.h +++ b/libthecore/include/stdafx.h @@ -132,14 +132,10 @@ inline double rint(double x) #include "heart.h" #include "fdwatch.h" #include "socket.h" -#include "kstbl.h" -#include "hangul.h" #include "buffer.h" #include "signal.h" #include "log.h" #include "main.h" #include "utils.h" -#include "crypt.h" -#include "memcpy.h" #endif // __INC_LIBTHECORE_STDAFX_H__ diff --git a/libthecore/include/xmd5.h b/libthecore/include/xmd5.h deleted file mode 100644 index ac7a63a..0000000 --- a/libthecore/include/xmd5.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef __FreeBSD__ - -/* - * luau (Lib Update/Auto-Update): Simple Update Library - * Copyright (C) 2003 David Eklund - * - * - This library is free software; you can redistribute it and/or - - * - modify it under the terms of the GNU Lesser General Public - - * - License as published by the Free Software Foundation; either - - * - version 2.1 of the License, or (at your option) any later version. - - * - - - * - This 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 - - * - Lesser General Public License for more details. - - * - - - * - You should have received a copy of the GNU Lesser General Public - - * - License along with this library; if not, write to the Free Software - - * - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - */ - -/* - * md5.h and md5.c are based off of md5hl.c, md5c.c, and md5.h from libmd, which in turn are - * based off the FreeBSD libmd library. Their respective copyright notices follow: - */ - -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - */ - -/* ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - * - * $Id: md5.h,v 1.1.1.1 2004/04/02 05:11:38 deklund2 Exp $ - * - */ - -#ifndef MD5_H -#define MD5_H - -#include - -#define MD5_HASHBYTES 16 - -typedef struct MD5Context { - uint32_t buf[4]; - uint32_t bits[2]; - unsigned char in[64]; -} MD5_CTX; - -#ifdef __cplusplus -extern "C" { -#endif - -void MD5Init(MD5_CTX *context); -void MD5Update(MD5_CTX *context, unsigned char const *buf, unsigned len); -void MD5Final(unsigned char digest[MD5_HASHBYTES], MD5_CTX *context); -void MD5Transform(uint32_t buf[4], uint32_t const in[16]); -char* MD5End(MD5_CTX *, char *); - -char* lutil_md5_file(const char *filename, char *buf); -char* lutil_md5_data(const unsigned char *data, unsigned int len, char *buf); - -#ifdef __cplusplus -} -#endif - -#endif /* MD5_H */ - -#endif // #ifndef __FreeBSD__ diff --git a/libthecore/src/DES_table.h b/libthecore/src/DES_table.h deleted file mode 100644 index 7165143..0000000 --- a/libthecore/src/DES_table.h +++ /dev/null @@ -1,326 +0,0 @@ -static DWORD SP_boxes[8][64]= -{ - /* 0 */ - { - 0x00820200, 0x00020000, 0x80800000, 0x80820200, - 0x00800000, 0x80020200, 0x80020000, 0x80800000, - 0x80020200, 0x00820200, 0x00820000, 0x80000200, - 0x80800200, 0x00800000, 0x00000000, 0x80020000, - 0x00020000, 0x80000000, 0x00800200, 0x00020200, - 0x80820200, 0x00820000, 0x80000200, 0x00800200, - 0x80000000, 0x00000200, 0x00020200, 0x80820000, - 0x00000200, 0x80800200, 0x80820000, 0x00000000, - 0x00000000, 0x80820200, 0x00800200, 0x80020000, - 0x00820200, 0x00020000, 0x80000200, 0x00800200, - 0x80820000, 0x00000200, 0x00020200, 0x80800000, - 0x80020200, 0x80000000, 0x80800000, 0x00820000, - 0x80820200, 0x00020200, 0x00820000, 0x80800200, - 0x00800000, 0x80000200, 0x80020000, 0x00000000, - 0x00020000, 0x00800000, 0x80800200, 0x00820200, - 0x80000000, 0x80820000, 0x00000200, 0x80020200 - }, - - /* 1 */ - { - 0x10042004, 0x00000000, 0x00042000, 0x10040000, - 0x10000004, 0x00002004, 0x10002000, 0x00042000, - 0x00002000, 0x10040004, 0x00000004, 0x10002000, - 0x00040004, 0x10042000, 0x10040000, 0x00000004, - 0x00040000, 0x10002004, 0x10040004, 0x00002000, - 0x00042004, 0x10000000, 0x00000000, 0x00040004, - 0x10002004, 0x00042004, 0x10042000, 0x10000004, - 0x10000000, 0x00040000, 0x00002004, 0x10042004, - 0x00040004, 0x10042000, 0x10002000, 0x00042004, - 0x10042004, 0x00040004, 0x10000004, 0x00000000, - 0x10000000, 0x00002004, 0x00040000, 0x10040004, - 0x00002000, 0x10000000, 0x00042004, 0x10002004, - 0x10042000, 0x00002000, 0x00000000, 0x10000004, - 0x00000004, 0x10042004, 0x00042000, 0x10040000, - 0x10040004, 0x00040000, 0x00002004, 0x10002000, - 0x10002004, 0x00000004, 0x10040000, 0x00042000 - }, - - /* 2 */ - { - 0x41000000, 0x01010040, 0x00000040, 0x41000040, - 0x40010000, 0x01000000, 0x41000040, 0x00010040, - 0x01000040, 0x00010000, 0x01010000, 0x40000000, - 0x41010040, 0x40000040, 0x40000000, 0x41010000, - 0x00000000, 0x40010000, 0x01010040, 0x00000040, - 0x40000040, 0x41010040, 0x00010000, 0x41000000, - 0x41010000, 0x01000040, 0x40010040, 0x01010000, - 0x00010040, 0x00000000, 0x01000000, 0x40010040, - 0x01010040, 0x00000040, 0x40000000, 0x00010000, - 0x40000040, 0x40010000, 0x01010000, 0x41000040, - 0x00000000, 0x01010040, 0x00010040, 0x41010000, - 0x40010000, 0x01000000, 0x41010040, 0x40000000, - 0x40010040, 0x41000000, 0x01000000, 0x41010040, - 0x00010000, 0x01000040, 0x41000040, 0x00010040, - 0x01000040, 0x00000000, 0x41010000, 0x40000040, - 0x41000000, 0x40010040, 0x00000040, 0x01010000 - }, - - /* 3 */ - { - 0x00100402, 0x04000400, 0x00000002, 0x04100402, - 0x00000000, 0x04100000, 0x04000402, 0x00100002, - 0x04100400, 0x04000002, 0x04000000, 0x00000402, - 0x04000002, 0x00100402, 0x00100000, 0x04000000, - 0x04100002, 0x00100400, 0x00000400, 0x00000002, - 0x00100400, 0x04000402, 0x04100000, 0x00000400, - 0x00000402, 0x00000000, 0x00100002, 0x04100400, - 0x04000400, 0x04100002, 0x04100402, 0x00100000, - 0x04100002, 0x00000402, 0x00100000, 0x04000002, - 0x00100400, 0x04000400, 0x00000002, 0x04100000, - 0x04000402, 0x00000000, 0x00000400, 0x00100002, - 0x00000000, 0x04100002, 0x04100400, 0x00000400, - 0x04000000, 0x04100402, 0x00100402, 0x00100000, - 0x04100402, 0x00000002, 0x04000400, 0x00100402, - 0x00100002, 0x00100400, 0x04100000, 0x04000402, - 0x00000402, 0x04000000, 0x04000002, 0x04100400 - }, - - /* 4 */ - { - 0x02000000, 0x00004000, 0x00000100, 0x02004108, - 0x02004008, 0x02000100, 0x00004108, 0x02004000, - 0x00004000, 0x00000008, 0x02000008, 0x00004100, - 0x02000108, 0x02004008, 0x02004100, 0x00000000, - 0x00004100, 0x02000000, 0x00004008, 0x00000108, - 0x02000100, 0x00004108, 0x00000000, 0x02000008, - 0x00000008, 0x02000108, 0x02004108, 0x00004008, - 0x02004000, 0x00000100, 0x00000108, 0x02004100, - 0x02004100, 0x02000108, 0x00004008, 0x02004000, - 0x00004000, 0x00000008, 0x02000008, 0x02000100, - 0x02000000, 0x00004100, 0x02004108, 0x00000000, - 0x00004108, 0x02000000, 0x00000100, 0x00004008, - 0x02000108, 0x00000100, 0x00000000, 0x02004108, - 0x02004008, 0x02004100, 0x00000108, 0x00004000, - 0x00004100, 0x02004008, 0x02000100, 0x00000108, - 0x00000008, 0x00004108, 0x02004000, 0x02000008 - }, - - /* 5 */ - { - 0x20000010, 0x00080010, 0x00000000, 0x20080800, - 0x00080010, 0x00000800, 0x20000810, 0x00080000, - 0x00000810, 0x20080810, 0x00080800, 0x20000000, - 0x20000800, 0x20000010, 0x20080000, 0x00080810, - 0x00080000, 0x20000810, 0x20080010, 0x00000000, - 0x00000800, 0x00000010, 0x20080800, 0x20080010, - 0x20080810, 0x20080000, 0x20000000, 0x00000810, - 0x00000010, 0x00080800, 0x00080810, 0x20000800, - 0x00000810, 0x20000000, 0x20000800, 0x00080810, - 0x20080800, 0x00080010, 0x00000000, 0x20000800, - 0x20000000, 0x00000800, 0x20080010, 0x00080000, - 0x00080010, 0x20080810, 0x00080800, 0x00000010, - 0x20080810, 0x00080800, 0x00080000, 0x20000810, - 0x20000010, 0x20080000, 0x00080810, 0x00000000, - 0x00000800, 0x20000010, 0x20000810, 0x20080800, - 0x20080000, 0x00000810, 0x00000010, 0x20080010 - }, - - /* 6 */ - { - 0x00001000, 0x00000080, 0x00400080, 0x00400001, - 0x00401081, 0x00001001, 0x00001080, 0x00000000, - 0x00400000, 0x00400081, 0x00000081, 0x00401000, - 0x00000001, 0x00401080, 0x00401000, 0x00000081, - 0x00400081, 0x00001000, 0x00001001, 0x00401081, - 0x00000000, 0x00400080, 0x00400001, 0x00001080, - 0x00401001, 0x00001081, 0x00401080, 0x00000001, - 0x00001081, 0x00401001, 0x00000080, 0x00400000, - 0x00001081, 0x00401000, 0x00401001, 0x00000081, - 0x00001000, 0x00000080, 0x00400000, 0x00401001, - 0x00400081, 0x00001081, 0x00001080, 0x00000000, - 0x00000080, 0x00400001, 0x00000001, 0x00400080, - 0x00000000, 0x00400081, 0x00400080, 0x00001080, - 0x00000081, 0x00001000, 0x00401081, 0x00400000, - 0x00401080, 0x00000001, 0x00001001, 0x00401081, - 0x00400001, 0x00401080, 0x00401000, 0x00001001 - }, - - /* 7 */ - { - 0x08200020, 0x08208000, 0x00008020, 0x00000000, - 0x08008000, 0x00200020, 0x08200000, 0x08208020, - 0x00000020, 0x08000000, 0x00208000, 0x00008020, - 0x00208020, 0x08008020, 0x08000020, 0x08200000, - 0x00008000, 0x00208020, 0x00200020, 0x08008000, - 0x08208020, 0x08000020, 0x00000000, 0x00208000, - 0x08000000, 0x00200000, 0x08008020, 0x08200020, - 0x00200000, 0x00008000, 0x08208000, 0x00000020, - 0x00200000, 0x00008000, 0x08000020, 0x08208020, - 0x00008020, 0x08000000, 0x00000000, 0x00208000, - 0x08200020, 0x08008020, 0x08008000, 0x00200020, - 0x08208000, 0x00000020, 0x00200020, 0x08008000, - 0x08208020, 0x00200000, 0x08200000, 0x08000020, - 0x00208000, 0x00008020, 0x08008020, 0x08200000, - 0x00000020, 0x08208000, 0x00208020, 0x00000000, - 0x08000000, 0x08200020, 0x00008000, 0x00208020 - } -}; - -static DWORD KeyPerm[8][64] = -{ - /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ - { - 0x00000000,0x00000010,0x20000000,0x20000010, - 0x00010000,0x00010010,0x20010000,0x20010010, - 0x00000800,0x00000810,0x20000800,0x20000810, - 0x00010800,0x00010810,0x20010800,0x20010810, - 0x00000020,0x00000030,0x20000020,0x20000030, - 0x00010020,0x00010030,0x20010020,0x20010030, - 0x00000820,0x00000830,0x20000820,0x20000830, - 0x00010820,0x00010830,0x20010820,0x20010830, - 0x00080000,0x00080010,0x20080000,0x20080010, - 0x00090000,0x00090010,0x20090000,0x20090010, - 0x00080800,0x00080810,0x20080800,0x20080810, - 0x00090800,0x00090810,0x20090800,0x20090810, - 0x00080020,0x00080030,0x20080020,0x20080030, - 0x00090020,0x00090030,0x20090020,0x20090030, - 0x00080820,0x00080830,0x20080820,0x20080830, - 0x00090820,0x00090830,0x20090820,0x20090830 - }, - - /* for C bits (numbered as per FIPS 46) 7 8 10 11 12 13 */ - { - 0x00000000,0x02000000,0x00002000,0x02002000, - 0x00200000,0x02200000,0x00202000,0x02202000, - 0x00000004,0x02000004,0x00002004,0x02002004, - 0x00200004,0x02200004,0x00202004,0x02202004, - 0x00000400,0x02000400,0x00002400,0x02002400, - 0x00200400,0x02200400,0x00202400,0x02202400, - 0x00000404,0x02000404,0x00002404,0x02002404, - 0x00200404,0x02200404,0x00202404,0x02202404, - 0x10000000,0x12000000,0x10002000,0x12002000, - 0x10200000,0x12200000,0x10202000,0x12202000, - 0x10000004,0x12000004,0x10002004,0x12002004, - 0x10200004,0x12200004,0x10202004,0x12202004, - 0x10000400,0x12000400,0x10002400,0x12002400, - 0x10200400,0x12200400,0x10202400,0x12202400, - 0x10000404,0x12000404,0x10002404,0x12002404, - 0x10200404,0x12200404,0x10202404,0x12202404 - }, - - /* for C bits (numbered as per FIPS 46) 14 15 16 17 19 20 */ - { - 0x00000000,0x00000001,0x00040000,0x00040001, - 0x01000000,0x01000001,0x01040000,0x01040001, - 0x00000002,0x00000003,0x00040002,0x00040003, - 0x01000002,0x01000003,0x01040002,0x01040003, - 0x00000200,0x00000201,0x00040200,0x00040201, - 0x01000200,0x01000201,0x01040200,0x01040201, - 0x00000202,0x00000203,0x00040202,0x00040203, - 0x01000202,0x01000203,0x01040202,0x01040203, - 0x08000000,0x08000001,0x08040000,0x08040001, - 0x09000000,0x09000001,0x09040000,0x09040001, - 0x08000002,0x08000003,0x08040002,0x08040003, - 0x09000002,0x09000003,0x09040002,0x09040003, - 0x08000200,0x08000201,0x08040200,0x08040201, - 0x09000200,0x09000201,0x09040200,0x09040201, - 0x08000202,0x08000203,0x08040202,0x08040203, - 0x09000202,0x09000203,0x09040202,0x09040203 - }, - - /* for C bits (numbered as per FIPS 46) 21 23 24 26 27 28 */ - { - 0x00000000,0x00100000,0x00000100,0x00100100, - 0x00000008,0x00100008,0x00000108,0x00100108, - 0x00001000,0x00101000,0x00001100,0x00101100, - 0x00001008,0x00101008,0x00001108,0x00101108, - 0x04000000,0x04100000,0x04000100,0x04100100, - 0x04000008,0x04100008,0x04000108,0x04100108, - 0x04001000,0x04101000,0x04001100,0x04101100, - 0x04001008,0x04101008,0x04001108,0x04101108, - 0x00020000,0x00120000,0x00020100,0x00120100, - 0x00020008,0x00120008,0x00020108,0x00120108, - 0x00021000,0x00121000,0x00021100,0x00121100, - 0x00021008,0x00121008,0x00021108,0x00121108, - 0x04020000,0x04120000,0x04020100,0x04120100, - 0x04020008,0x04120008,0x04020108,0x04120108, - 0x04021000,0x04121000,0x04021100,0x04121100, - 0x04021008,0x04121008,0x04021108,0x04121108 - }, - - /* for D bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ - { - 0x00000000,0x10000000,0x00010000,0x10010000, - 0x00000004,0x10000004,0x00010004,0x10010004, - 0x20000000,0x30000000,0x20010000,0x30010000, - 0x20000004,0x30000004,0x20010004,0x30010004, - 0x00100000,0x10100000,0x00110000,0x10110000, - 0x00100004,0x10100004,0x00110004,0x10110004, - 0x20100000,0x30100000,0x20110000,0x30110000, - 0x20100004,0x30100004,0x20110004,0x30110004, - 0x00001000,0x10001000,0x00011000,0x10011000, - 0x00001004,0x10001004,0x00011004,0x10011004, - 0x20001000,0x30001000,0x20011000,0x30011000, - 0x20001004,0x30001004,0x20011004,0x30011004, - 0x00101000,0x10101000,0x00111000,0x10111000, - 0x00101004,0x10101004,0x00111004,0x10111004, - 0x20101000,0x30101000,0x20111000,0x30111000, - 0x20101004,0x30101004,0x20111004,0x30111004 - }, - - /* for D bits (numbered as per FIPS 46) 8 9 11 12 13 14 */ - { - 0x00000000,0x08000000,0x00000008,0x08000008, - 0x00000400,0x08000400,0x00000408,0x08000408, - 0x00020000,0x08020000,0x00020008,0x08020008, - 0x00020400,0x08020400,0x00020408,0x08020408, - 0x00000001,0x08000001,0x00000009,0x08000009, - 0x00000401,0x08000401,0x00000409,0x08000409, - 0x00020001,0x08020001,0x00020009,0x08020009, - 0x00020401,0x08020401,0x00020409,0x08020409, - 0x02000000,0x0A000000,0x02000008,0x0A000008, - 0x02000400,0x0A000400,0x02000408,0x0A000408, - 0x02020000,0x0A020000,0x02020008,0x0A020008, - 0x02020400,0x0A020400,0x02020408,0x0A020408, - 0x02000001,0x0A000001,0x02000009,0x0A000009, - 0x02000401,0x0A000401,0x02000409,0x0A000409, - 0x02020001,0x0A020001,0x02020009,0x0A020009, - 0x02020401,0x0A020401,0x02020409,0x0A020409 - }, - - /* for D bits (numbered as per FIPS 46) 16 17 18 19 20 21 */ - { - 0x00000000,0x00000100,0x00080000,0x00080100, - 0x01000000,0x01000100,0x01080000,0x01080100, - 0x00000010,0x00000110,0x00080010,0x00080110, - 0x01000010,0x01000110,0x01080010,0x01080110, - 0x00200000,0x00200100,0x00280000,0x00280100, - 0x01200000,0x01200100,0x01280000,0x01280100, - 0x00200010,0x00200110,0x00280010,0x00280110, - 0x01200010,0x01200110,0x01280010,0x01280110, - 0x00000200,0x00000300,0x00080200,0x00080300, - 0x01000200,0x01000300,0x01080200,0x01080300, - 0x00000210,0x00000310,0x00080210,0x00080310, - 0x01000210,0x01000310,0x01080210,0x01080310, - 0x00200200,0x00200300,0x00280200,0x00280300, - 0x01200200,0x01200300,0x01280200,0x01280300, - 0x00200210,0x00200310,0x00280210,0x00280310, - 0x01200210,0x01200310,0x01280210,0x01280310 - }, - - /* for D bits (numbered as per FIPS 46) 22 23 24 25 27 28 */ - { - 0x00000000,0x04000000,0x00040000,0x04040000, - 0x00000002,0x04000002,0x00040002,0x04040002, - 0x00002000,0x04002000,0x00042000,0x04042000, - 0x00002002,0x04002002,0x00042002,0x04042002, - 0x00000020,0x04000020,0x00040020,0x04040020, - 0x00000022,0x04000022,0x00040022,0x04040022, - 0x00002020,0x04002020,0x00042020,0x04042020, - 0x00002022,0x04002022,0x00042022,0x04042022, - 0x00000800,0x04000800,0x00040800,0x04040800, - 0x00000802,0x04000802,0x00040802,0x04040802, - 0x00002800,0x04002800,0x00042800,0x04042800, - 0x00002802,0x04002802,0x00042802,0x04042802, - 0x00000820,0x04000820,0x00040820,0x04040820, - 0x00000822,0x04000822,0x00040822,0x04040822, - 0x00002820,0x04002820,0x00042820,0x04042820, - 0x00002822,0x04002822,0x00042822,0x04042822 - } -}; - diff --git a/libthecore/src/buffer.cpp b/libthecore/src/buffer.cpp index 3ea7cae..122ef2e 100644 --- a/libthecore/src/buffer.cpp +++ b/libthecore/src/buffer.cpp @@ -164,13 +164,13 @@ void buffer_write(LPBUFFER& buffer, const void *src, int length) if (buffer->write_point_pos + length >= buffer->mem_size) buffer_realloc(buffer, buffer->mem_size + length + MIN(10240, length)); - thecore_memcpy(buffer->write_point, src, length); + memcpy(buffer->write_point, src, length); buffer_write_proceed(buffer, length); } void buffer_read(LPBUFFER buffer, void * buf, int bytes) { - thecore_memcpy(buf, buffer->read_point, bytes); + memcpy(buf, buffer->read_point, bytes); buffer_read_proceed(buffer, bytes); } @@ -277,7 +277,7 @@ void buffer_realloc(LPBUFFER& buffer, int length) temp = buffer_new (length); sys_log(0, "reallocating buffer to %d, current %d", temp->mem_size, buffer->mem_size); - thecore_memcpy(temp->mem_data, buffer->mem_data, buffer->mem_size); + memcpy(temp->mem_data, buffer->mem_data, buffer->mem_size); read_point_pos = buffer->read_point - buffer->mem_data; diff --git a/libthecore/src/des.cpp b/libthecore/src/des.cpp deleted file mode 100644 index 7a30a4b..0000000 --- a/libthecore/src/des.cpp +++ /dev/null @@ -1,281 +0,0 @@ -#include "stdafx.h" -#include "DES_table.h" - -#define DES_ECB_ENCRYPT 0 -#define DES_ECB_DECRYPT 1 - -// DES ECB encryption code -extern DWORD SP_boxes[8][64]; -//extern DWORD KeyPerm[8][64]; - -/* - * Macroses to transform array of 4 bytes to 32-bit dwords - * (and reverse) without depending on the Little-Endian or - * Big-Endian processor's architecture - */ -#define BYTES_TO_DWORD(b,d) (d = ((DWORD)(*((b)++))), \ - d |= ((DWORD)(*((b)++)))<< 8, \ - d |= ((DWORD)(*((b)++)))<<16, \ - d |= ((DWORD)(*((b)++)))<<24) - -#define DWORD_TO_4BYTES(d,b) (*((b)++)=(BYTE)(((d) )&0xff), \ - *((b)++)=(BYTE)(((d)>> 8)&0xff), \ - *((b)++)=(BYTE)(((d)>>16)&0xff), \ - *((b)++)=(BYTE)(((d)>>24)&0xff)) - -/* - * First of all, take into accounts the bytes and bites ordering - * used in DES: - * - * DES: 1 2 3 4 5 6 7 8 .... 57 58 59 60 61 62 63 64 - * INTEL: 63 62 61 60 59 58 57 56 .... 7 6 5 4 3 2 1 0 - * - * According to the DES, every 8-th bits is not used: - * for DES the bites 8, 16, 32, ..., 64 are excluded, - * for INTEL: 56, 48, 40, ..., 0 are excluded - * - * According to the above rool of numbering, the tables - * used in DES (for Initial Permutation, Final Permutation, - * Key Permutation, Compression Permutation, Expansion - * Permutation and P-Box permutation) have to be re-written. - * - */ - -/* - Some main ideas used to optimize DES software - implementation: - - a). Do not make an Expansion Permutation of 32-bit to - 48 bit (32-bit of data - right half of 64-bit of data), - but make a correspondent preparation of the Key. So, - the step of Expansion Permutation and XORing 48 bit of - Expanded data and 48 bit of Compressed key will be - replaced by 2 XOR operations: 32 bit of data XOR first - 32 bit part of prepeared key, then, the same 32 bit of - data XOR second 32-bit part of prepeared key - - b). Combine S-Box Substitution and P-Box Permutation - operations. - - c). For the best performance 56-bit encryption key - have to be extendended to 128-byte array, i.e. for each - of 16 rounds of DES we prepare a unique pair of two - 32-bit (4-bytes) words (see 'a)' above). - - d). We can use XOR, SHIFT, AND operations to swap - bits between words. For example, we have: - - word A word B - 0 1 2 3 4 5 6 7 - - We want to get: - - word A word B - 0 4 2 6 1 5 3 7 - - First, shift word A to get bites 1, 3 on the "right place" - - word TMP = (word A) >> 1 = 1 2 3 - - - TMP = TMP ^ B = 1^4 2^5 3^6 7 - - we don't want to change bits 5 and 7 in the B word, so - - TMP = TMP & MASK = TMP & 1010 = 1^4 - 3^6 - - - now we can easy get the word B: - - B = B ^ TMP = (4 5 6 7) ^ (1^4 - 3^6 -) = 1 5 3 7 - - if we shift our "masking" TMP word reverse - we get - a mask for A word: - - TMP = TMP << 1 = - 1^4 - 3^6 - - now we can easy get the word A: - - A = A ^ TMP = (0 1 2 3) ^ (- 1^4 - 3^6) = 0 4 2 6 - - The example above may be used to swap not only single - bits, but also bit sequencies. In this case you should - use shift on the value, equal to the number of bits - in pattern. - - As you see, all this opearations may be written like: - TMP = ((A >> size) ^ B) & mask; - B ^ = TMP; - A ^= TMP << size; -*/ - -#define PERMUTATION(a,b,t,n,m) ((t)=((((a)>>(n))^(b))&(m)),\ - (b)^=(t),\ - (a)^=((t)<<(n))) - -#define HPERMUTATION(a,t,n,m) ((t)=((((a)<<(16-(n)))^(a))&(m)),\ - (a)=(a)^(t)^(t>>(16-(n)))) - -#define D_ENCRYPT(Left, Right, Ks, Num, TmpA, TmpB) \ - TmpA = (Right ^ Ks[Num ]); \ - TmpB = (Right ^ Ks[Num+1]); \ - TmpB = ((TmpB >> 4) + (TmpB << 28)); \ - Left ^= SP_boxes[1][(TmpB )&0x3f]| \ - SP_boxes[3][(TmpB>> 8)&0x3f]| \ - SP_boxes[5][(TmpB>>16)&0x3f]| \ - SP_boxes[7][(TmpB>>24)&0x3f]| \ - SP_boxes[0][(TmpA )&0x3f]| \ - SP_boxes[2][(TmpA>> 8)&0x3f]| \ - SP_boxes[4][(TmpA>>16)&0x3f]| \ - SP_boxes[6][(TmpA>>24)&0x3f]; - -void DES_ECB_mode(BYTE * Input, /* 8 bytes of input data */ - BYTE * Output, /* 8 bytes of output data */ - const DWORD * KeySchedule, /* [16][2] array of DWORDs */ - BYTE Operation) /* DES_ECB_ENCRYPT or DES_ECB_DECRYPT */ -{ - static BYTE * bInp, * bOut; - static DWORD dwLeft, dwRigh, dwTmp, dwTmp1; - - bInp = Input; - bOut = Output; - - BYTES_TO_DWORD(bInp, dwLeft); - BYTES_TO_DWORD(bInp, dwRigh); - - /* Initial Permutation */ - PERMUTATION(dwRigh, dwLeft, dwTmp, 4, 0x0f0f0f0f); - PERMUTATION(dwLeft, dwRigh, dwTmp,16, 0x0000ffff); - PERMUTATION(dwRigh, dwLeft, dwTmp, 2, 0x33333333); - PERMUTATION(dwLeft, dwRigh, dwTmp, 8, 0x00ff00ff); - PERMUTATION(dwRigh, dwLeft, dwTmp, 1, 0x55555555); - - /* dwRigh and dwLeft has reversed bit orders - itwill be taken - into account in the next step */ - - /* The initial rotate is done outside the loop. This required the - * SP_boxes values to be rotated 1 bit to the right. - */ - dwTmp = (dwRigh<<1) | (dwRigh>>31); - dwRigh = (dwLeft<<1) | (dwLeft>>31); - dwLeft = dwTmp; - - /* clear the top bits on machines with 8byte longs */ - dwLeft &= 0xffffffff; - dwRigh &= 0xffffffff; - - if (Operation == DES_ECB_ENCRYPT) - { /* Key order */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 0, dwTmp, dwTmp1); /* 1 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 2, dwTmp, dwTmp1); /* 2 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 4, dwTmp, dwTmp1); /* 3 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 6, dwTmp, dwTmp1); /* 4 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 8, dwTmp, dwTmp1); /* 5 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 10, dwTmp, dwTmp1); /* 6 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 12, dwTmp, dwTmp1); /* 7 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 14, dwTmp, dwTmp1); /* 8 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 16, dwTmp, dwTmp1); /* 9 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 18, dwTmp, dwTmp1); /* 10 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 20, dwTmp, dwTmp1); /* 11 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 22, dwTmp, dwTmp1); /* 12 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 24, dwTmp, dwTmp1); /* 13 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 26, dwTmp, dwTmp1); /* 14 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 28, dwTmp, dwTmp1); /* 15 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 30, dwTmp, dwTmp1); /* 16 */ - } - else - { - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 30, dwTmp, dwTmp1); /* 16 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 28, dwTmp, dwTmp1); /* 15 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 26, dwTmp, dwTmp1); /* 14 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 24, dwTmp, dwTmp1); /* 13 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 22, dwTmp, dwTmp1); /* 12 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 20, dwTmp, dwTmp1); /* 11 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 18, dwTmp, dwTmp1); /* 10 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 16, dwTmp, dwTmp1); /* 9 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 14, dwTmp, dwTmp1); /* 8 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 12, dwTmp, dwTmp1); /* 7 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 10, dwTmp, dwTmp1); /* 6 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 8, dwTmp, dwTmp1); /* 5 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 6, dwTmp, dwTmp1); /* 4 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 4, dwTmp, dwTmp1); /* 3 */ - D_ENCRYPT(dwLeft, dwRigh, KeySchedule, 2, dwTmp, dwTmp1); /* 2 */ - D_ENCRYPT(dwRigh, dwLeft, KeySchedule, 0, dwTmp, dwTmp1); /* 1 */ - } - - dwLeft = (dwLeft>>1) | (dwLeft<<31); - dwRigh = (dwRigh>>1) | (dwRigh<<31); - - /* clear the top bits on machines with 8byte longs */ - dwLeft &= 0xffffffff; - dwRigh &= 0xffffffff; - - /* - * Do we need to swap dwLeft and dwRigh? - * We have not to do the swap - * (We remember they are reversed) - * So - all we have to do is to make a correspondent Final Permutation - */ - - PERMUTATION(dwRigh, dwLeft, dwTmp, 1,0x55555555); - PERMUTATION(dwLeft, dwRigh, dwTmp, 8,0x00ff00ff); - PERMUTATION(dwRigh, dwLeft, dwTmp, 2,0x33333333); - PERMUTATION(dwLeft, dwRigh, dwTmp,16,0x0000ffff); - PERMUTATION(dwRigh, dwLeft, dwTmp, 4,0x0f0f0f0f); - - /* Place our two 32-bits results into 8 bytes of output data */ - DWORD_TO_4BYTES(dwLeft, bOut); - DWORD_TO_4BYTES(dwRigh, bOut); -} - -//************ DES CBC mode encryption ************** -int DES_Encrypt(DWORD *DstBuffer, const DWORD * SrcBuffer, const DWORD *KeyAddress, DWORD Length, DWORD *IVector) -{ - DWORD i; - DWORD buffer[2]; - - buffer[0] = IVector[0]; - buffer[1] = IVector[1]; - - for (i = 0; i < (Length >> 2); i = i+2) - { - // do EBC encryption of (Initial_Vector XOR Data) - buffer[0] ^= SrcBuffer[i]; - buffer[1] ^= SrcBuffer[i+1]; - - DES_ECB_mode((BYTE *) buffer, (BYTE *) buffer, KeyAddress, DES_ECB_ENCRYPT); - - DstBuffer[i] = buffer[0]; - DstBuffer[i+1] = buffer[1]; - } - - return Length; -} - -//************ DES CBC mode decryption ************** -int DES_Decrypt(DWORD *DstBuffer, const DWORD * SrcBuffer, const DWORD *KeyAddress, DWORD Length, DWORD *IVector) -{ - DWORD i; - DWORD buffer[2], ivectorL, ivectorR, oldSrcL, oldSrcR; - - ivectorL = IVector[0]; - ivectorR = IVector[1]; - - for (i = 0; i < (Length >> 2); i = i + 2) - { - buffer[0] = oldSrcL = SrcBuffer[i]; - buffer[1] = oldSrcR = SrcBuffer[i+1]; - - // Encrypted Data -> new IV, - // then do EBC decryption of Encrypted Data, - // then XOR decrypted data with old IV - DES_ECB_mode((BYTE *)buffer, (BYTE *)buffer, KeyAddress, DES_ECB_DECRYPT); - - DstBuffer[i] = buffer[0] ^ ivectorL; - DstBuffer[i+1] = buffer[1] ^ ivectorR; - - ivectorL = oldSrcL; - ivectorR = oldSrcR; - } - - return Length; -} - diff --git a/libthecore/src/gost.cpp b/libthecore/src/gost.cpp deleted file mode 100644 index 616390f..0000000 --- a/libthecore/src/gost.cpp +++ /dev/null @@ -1,234 +0,0 @@ -#include "stdafx.h" -/* -static unsigned char const k8[16] = { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 }; -static unsigned char const k7[16] = { 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10 }; -static unsigned char const k6[16] = { 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 }; -static unsigned char const k5[16] = { 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15 }; -static unsigned char const k4[16] = { 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9 }; -static unsigned char const k3[16] = { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 }; -static unsigned char const k2[16] = { 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 }; -static unsigned char const k1[16] = { 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7 }; -*/ -static unsigned char const k8[16] = { 15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13 }; -static unsigned char const k7[16] = { 3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5 }; -static unsigned char const k6[16] = { 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 }; -static unsigned char const k5[16] = { 13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9 }; -static unsigned char const k4[16] = { 11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3 }; -static unsigned char const k3[16] = { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }; -static unsigned char const k2[16] = { 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 }; -static unsigned char const k1[16] = { 7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8 }; - -/* Byte-at-a-time substitution boxes */ -static unsigned char k87[256]; -static unsigned char k65[256]; -static unsigned char k43[256]; -static unsigned char k21[256]; - -void GOST_Init() -{ - int i; - - for (i = 0; i < 256; i++) - { - k87[i] = k8[i >> 4] << 4 | k7[i & 15]; - k65[i] = k6[i >> 4] << 4 | k5[i & 15]; - k43[i] = k4[i >> 4] << 4 | k3[i & 15]; - k21[i] = k2[i >> 4] << 4 | k1[i & 15]; - } -} - -INLINE static DWORD f(DWORD x) -{ - x = k87[x >> 24 & 255] << 24 | k65[x >> 16 & 255] << 16 | k43[x >> 8 & 255] << 8 | k21[x & 255]; - return x << 11 | x >> (32 - 11); -} -/* -static void GOST_ECB_Encrypt(DWORD * N1, DWORD * N2, const DWORD * KeyAddress) -{ - register DWORD n1, n2; // As named in the GOST - - n1 = *N1; - n2 = *N2; - - // Instead of swapping halves, swap names each round - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[7]); - n1 ^= f(n2+KeyAddress[6]); - n2 ^= f(n1+KeyAddress[5]); - n1 ^= f(n2+KeyAddress[4]); - n2 ^= f(n1+KeyAddress[3]); - n1 ^= f(n2+KeyAddress[2]); - n2 ^= f(n1+KeyAddress[1]); - n1 ^= f(n2+KeyAddress[0]); - - // There is no swap after the last round - *N1 = n2; - *N2 = n1; -} -*/ -int GOST_Encrypt(DWORD * DstBuffer, const DWORD * SrcBuffer, const DWORD * KeyAddress, DWORD Length, DWORD *IVector) -{ - DWORD i; - DWORD N1,N2; - - N1 = IVector[0]; - N2 = IVector[1]; - - for (i = 0; i < (Length >> 2); i = i+2) - { - register DWORD n1, n2; // As named in the GOST - - n1 = N1; - n2 = N2; - - // Instead of swapping halves, swap names each round - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[7]); - n1 ^= f(n2+KeyAddress[6]); - n2 ^= f(n1+KeyAddress[5]); - n1 ^= f(n2+KeyAddress[4]); - n2 ^= f(n1+KeyAddress[3]); - n1 ^= f(n2+KeyAddress[2]); - n2 ^= f(n1+KeyAddress[1]); - n1 ^= f(n2+KeyAddress[0]); - - N1 = n2; - N2 = n1; - //GOST_ECB_Encrypt(&N1, &N2, KeyAddress); - // XOR plaintext with initial vector, - // move rezult to ciphertext and to initial vector - DstBuffer[i] = SrcBuffer[i] ^ N1; - N1 = DstBuffer[i]; - - DstBuffer[i+1] = SrcBuffer[i+1] ^ N2; - N2 = DstBuffer[i+1]; - } - - return Length; -} - - -// ************ GOST CBC decryption ************** -int GOST_Decrypt(DWORD * DstBuffer, const DWORD * SrcBuffer, const DWORD * KeyAddress, DWORD Length, DWORD *IVector) -{ - DWORD i; - DWORD N1, N2, dwTmp; - - N1 = IVector[0]; - N2 = IVector[1]; - - for (i = 0; i < (Length >> 2); i = i + 2) - { - register DWORD n1, n2; // As named in the GOST - - n1 = N1; - n2 = N2; - - // Instead of swapping halves, swap names each round - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[0]); - n1 ^= f(n2+KeyAddress[1]); - n2 ^= f(n1+KeyAddress[2]); - n1 ^= f(n2+KeyAddress[3]); - n2 ^= f(n1+KeyAddress[4]); - n1 ^= f(n2+KeyAddress[5]); - n2 ^= f(n1+KeyAddress[6]); - n1 ^= f(n2+KeyAddress[7]); - - n2 ^= f(n1+KeyAddress[7]); - n1 ^= f(n2+KeyAddress[6]); - n2 ^= f(n1+KeyAddress[5]); - n1 ^= f(n2+KeyAddress[4]); - n2 ^= f(n1+KeyAddress[3]); - n1 ^= f(n2+KeyAddress[2]); - n2 ^= f(n1+KeyAddress[1]); - n1 ^= f(n2+KeyAddress[0]); - - // There is no swap after the last round - N1 = n2; - N2 = n1; - //GOST_ECB_Encrypt(&N1, &N2, KeyAddress); - // XOR encrypted text with encrypted initial vector (we get rezult - decrypted text), - // move encrypted text to new initial vector. - // We need dwTmp because SrcBuffer may be the same as DstBuffer - dwTmp = SrcBuffer[i] ^ N1; - N1 = SrcBuffer[i]; - DstBuffer[i] = dwTmp; - - dwTmp = SrcBuffer[i+1] ^ N2; - N2 = SrcBuffer[i+1]; - DstBuffer[i+1] = dwTmp; - } - - return Length; -} - diff --git a/libthecore/src/gost_old.cpp b/libthecore/src/gost_old.cpp deleted file mode 100644 index 5c18977..0000000 --- a/libthecore/src/gost_old.cpp +++ /dev/null @@ -1,411 +0,0 @@ -/* - * The GOST 28147-89 cipher - * - * This is based on the 25 Movember 1993 draft translation - * by Aleksandr Malchik, with Whitfield Diffie, of the Government - * Standard of the U.S.S.R. GOST 28149-89, "Cryptographic Transformation - * Algorithm", effective 1 July 1990. (Whitfield.Diffie@eng.sun.com) - * - * That is a draft, and may contain errors, which will be faithfully - * reflected here, along with possible exciting new bugs. - * - * Some details have been cleared up by the paper "Soviet Encryption - * Algorithm" by Josef Pieprzyk and Leonid Tombak of the University - * of Wollongong, New South Wales. (josef/leo@cs.adfa.oz.au) - * - * The standard is written by A. Zabotin (project leader), G.P. Glazkov, - * and V.B. Isaeva. It was accepted and introduced into use by the - * action of the State Standards Committee of the USSR on 2 June 89 as - * No. 1409. It was to be reviewed in 1993, but whether anyone wishes - * to take on this obligation from the USSR is questionable. - * - * This code is placed in the public domain. - */ - -/* - * If you read the standard, it belabors the point of copying corresponding - * bits from point A to point B quite a bit. It helps to understand that - * the standard is uniformly little-endian, although it numbers bits from - * 1 rather than 0, so bit n has value 2^(n-1). The least significant bit - * of the 32-bit words that are manipulated in the algorithm is the first, - * lowest-numbered, in the bit string. - */ - - -/* A 32-bit data type */ -#ifdef __alpha /* Any other 64-bit machines? */ -typedef unsigned int word32; -#else -typedef unsigned long word32; -#endif - -/* - * The standard does not specify the contents of the 8 4 bit->4 bit - * substitution boxes, saying they're a parameter of the network - * being set up. For illustration purposes here, I have used - * the first rows of the 8 S-boxes from the DES. (Note that the - * DES S-boxes are numbered starting from 1 at the msb. In keeping - * with the rest of the GOST, I have used little-endian numbering. - * Thus, k8 is S-box 1. - * - * Obviously, a careful look at the cryptographic properties of the cipher - * must be undertaken before "production" substitution boxes are defined. - * - * The standard also does not specify a standard bit-string representation - * for the contents of these blocks. - */ -static unsigned char const k8[16] = { 14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7 }; -static unsigned char const k7[16] = { 15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10 }; -static unsigned char const k6[16] = { 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8 }; -static unsigned char const k5[16] = { 7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15 }; -static unsigned char const k4[16] = { 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9 }; -static unsigned char const k3[16] = { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 }; -static unsigned char const k2[16] = { 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 }; -static unsigned char const k1[16] = { 13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7 }; - -/* Byte-at-a-time substitution boxes */ -static unsigned char k87[256]; -static unsigned char k65[256]; -static unsigned char k43[256]; -static unsigned char k21[256]; - -/* - * Build byte-at-a-time subtitution tables. - * This must be called once for global setup. - */ -#include - -void kboxinit(void) -{ - int i; - - for (i = 0; i < 256; i++) - { - k87[i] = k8[i >> 4] << 4 | k7[i & 15]; - k65[i] = k6[i >> 4] << 4 | k5[i & 15]; - k43[i] = k4[i >> 4] << 4 | k3[i & 15]; - k21[i] = k2[i >> 4] << 4 | k1[i & 15]; - } -} - -/* - * Do the substitution and rotation that are the core of the operation, - * like the expansion, substitution and permutation of the DES. - * It would be possible to perform DES-like optimisations and store - * the table entries as 32-bit words, already rotated, but the - * efficiency gain is questionable. - * - * This should be inlined for maximum speed - */ -#if __GNUC__ -__inline__ -#endif -static word32 f(word32 x) -{ - /* Do substitutions */ -#if 0 - /* This is annoyingly slow */ - x = k8[x>>28 & 15] << 28 | k7[x>>24 & 15] << 24 | - k6[x>>20 & 15] << 20 | k5[x>>16 & 15] << 16 | - k4[x>>12 & 15] << 12 | k3[x>> 8 & 15] << 8 | - k2[x>> 4 & 15] << 4 | k1[x & 15]; -#else - /* This is faster */ - x = k87[x>>24 & 255] << 24 | k65[x>>16 & 255] << 16 | k43[x>> 8 & 255] << 8 | k21[x & 255]; -#endif - - /* Rotate left 11 bits */ - return x << 11 | x >> (32 - 11); -} - -/* - * The GOST standard defines the input in terms of bits 1..64, with - * bit 1 being the lsb of in[0] and bit 64 being the msb of in[1]. - * - * The keys are defined similarly, with bit 256 being the msb of key[7]. - */ -void gostcrypt(word32 const in[2], word32 out[2], word32 const key[8]) -{ - register word32 n1, n2; /* As named in the GOST */ - - n1 = in[0]; - n2 = in[1]; - - /* Instead of swapping halves, swap names each round */ - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - - n2 ^= f(n1+key[7]); - n1 ^= f(n2+key[6]); - n2 ^= f(n1+key[5]); - n1 ^= f(n2+key[4]); - n2 ^= f(n1+key[3]); - n1 ^= f(n2+key[2]); - n2 ^= f(n1+key[1]); - n1 ^= f(n2+key[0]); - - /* There is no swap after the last round */ - out[0] = n2; - out[1] = n1; -} - - -/* - * The key schedule is somewhat different for decryption. - * (The key table is used once forward and three times backward.) - * You could define an expanded key, or just write the code twice, - * as done here. - */ -void gostdecrypt(word32 const in[2], word32 out[2], word32 const key[8]) -{ - register word32 n1, n2; /* As named in the GOST */ - - n1 = in[0]; - n2 = in[1]; - - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - - n2 ^= f(n1+key[7]); - n1 ^= f(n2+key[6]); - n2 ^= f(n1+key[5]); - n1 ^= f(n2+key[4]); - n2 ^= f(n1+key[3]); - n1 ^= f(n2+key[2]); - n2 ^= f(n1+key[1]); - n1 ^= f(n2+key[0]); - - n2 ^= f(n1+key[7]); - n1 ^= f(n2+key[6]); - n2 ^= f(n1+key[5]); - n1 ^= f(n2+key[4]); - n2 ^= f(n1+key[3]); - n1 ^= f(n2+key[2]); - n2 ^= f(n1+key[1]); - n1 ^= f(n2+key[0]); - - n2 ^= f(n1+key[7]); - n1 ^= f(n2+key[6]); - n2 ^= f(n1+key[5]); - n1 ^= f(n2+key[4]); - n2 ^= f(n1+key[3]); - n1 ^= f(n2+key[2]); - n2 ^= f(n1+key[1]); - n1 ^= f(n2+key[0]); - - out[0] = n2; - out[1] = n1; -} - -/* - * The GOST "Output feedback" standard. It seems closer morally - * to the counter feedback mode some people have proposed for DES. - * The avoidance of the short cycles that are possible in OFB seems - * like a Good Thing. - * - * Calling it the stream mode makes more sense. - * - * The IV is encrypted with the key to produce the initial counter value. - * Then, for each output block, a constant is added, modulo 2^32-1 - * (0 is represented as all-ones, not all-zeros), to each half of - * the counter, and the counter is encrypted to produce the value - * to XOR with the output. - * - * Len is the number of blocks. Sub-block encryption is - * left as an exercise for the user. Remember that the - * standard defines everything in a little-endian manner, - * so you want to use the low bit of gamma[0] first. - * - * OFB is, of course, self-inverse, so there is only one function. - */ - -/* The constants for addition */ -#define C1 0x01010104 -#define C2 0x01010101 - -void gostofb(word32 const *in, word32 *out, int len, word32 const iv[2], word32 const key[8]) -{ - word32 temp[2]; /* Counter */ - word32 gamma[2]; /* Output XOR value */ - - /* Compute starting value for counter */ - gostcrypt(iv, temp, key); - - while (len--) - { - temp[0] += C2; - - if (temp[0] < C2) /* Wrap modulo 2^32? */ - temp[0]++; /* Make it modulo 2^32-1 */ - - temp[1] += C1; - - if (temp[1] < C1) /* Wrap modulo 2^32? */ - temp[1]++; /* Make it modulo 2^32-1 */ - - gostcrypt(temp, gamma, key); - - *out++ = *in++ ^ gamma[0]; - *out++ = *in++ ^ gamma[1]; - } -} - -/* - * The CFB mode is just what you'd expect. Each block of ciphertext y[] is - * derived from the input x[] by the following pseudocode: - * y[i] = x[i] ^ gostcrypt(y[i-1]) - * x[i] = y[i] ^ gostcrypt(y[i-1]) - * Where y[-1] is the IV. - * - * The IV is modified in place. Again, len is in *blocks*. - */ - -void gostcfbencrypt(word32 const *in, word32 *out, int len, word32 iv[2], word32 const key[8]) -{ - while (len--) - { - gostcrypt(iv, iv, key); - iv[0] = *out++ ^= iv[0]; - iv[1] = *out++ ^= iv[1]; - } -} - -void gostcfbdecrypt(word32 const *in, word32 *out, int len, word32 iv[2], word32 const key[8]) -{ - word32 t; - - while (len--) - { - gostcrypt(iv, iv, key); - t = *out; - *out++ ^= iv[0]; - iv[0] = t; - t = *out; - *out++ ^= iv[1]; - iv[1] = t; - } -} - - -/* - * The message suthetication code uses only 16 of the 32 rounds. - * There *is* a swap after the 16th round. - * The last block should be padded to 64 bits with zeros. - * len is the number of *blocks* in the input. - */ -void gostmac(word32 const *in, int len, word32 out[2], word32 const key[8]) -{ - register word32 n1, n2; /* As named in the GOST */ - - n1 = 0; - n2 = 0; - - while (len--) - { - n1 ^= *in++; - n2 = *in++; - - /* Instead of swapping halves, swap names each round */ - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - - n2 ^= f(n1+key[0]); - n1 ^= f(n2+key[1]); - n2 ^= f(n1+key[2]); - n1 ^= f(n2+key[3]); - n2 ^= f(n1+key[4]); - n1 ^= f(n2+key[5]); - n2 ^= f(n1+key[6]); - n1 ^= f(n2+key[7]); - } - - out[0] = n1; - out[1] = n2; -} - -#ifdef TEST - -#include -#include - -/* Designed to cope with 15-bit rand() implementations */ -#define RAND32 ((word32)rand() << 17 ^ (word32)rand() << 9 ^ rand()) - -int main(void) -{ - word32 key[8]; - word32 plain[2]; - word32 cipher[2]; - int i, j; - - kboxinit(); - - printf("GOST 21847-89 test driver.\n"); - - for (i = 0; i < 1000; i++) - { - for (j = 0; j < 8; j++) - key[j] = RAND32; - - plain[0] = RAND32; - plain[1] = RAND32; - - printf("%3d\r", i); - fflush(stdout); - - gostcrypt(plain, cipher, key); - - for (j = 0; j < 99; j++) - gostcrypt(cipher, cipher, key); - - for (j = 0; j < 100; j++) - gostdecrypt(cipher, cipher, key); - - if (plain[0] != cipher[0] || plain[1] != cipher[1]) - { - fprintf(stderr, "\nError! i = %d\n", i); - return 1; - } - } - - printf("All tests passed.\n"); - return 0; -} - -#endif /* TEST */ diff --git a/libthecore/src/hangul.cpp b/libthecore/src/hangul.cpp deleted file mode 100644 index 5d11ccd..0000000 --- a/libthecore/src/hangul.cpp +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Filename: hangul.c - * Description: ѱ ҽ - * - * Author: aka. Cronan - */ -#define __LIBTHECORE__ -#include "stdafx.h" - -int is_hangul(const BYTE * str) -{ - if (str[0] >= 0xb0 && str[0] <= 0xc8 && str[1] >= 0xa1 && str[1] <= 0xfe) - return 1; - - return 0; -} - -int check_han(const char *str) -{ - int i, code; - - if (!str || !*str) - return 0; - - for (i = 0; str[i]; i += 2) - { - if (isnhspace(str[i])) - return 0; - - if (isalpha(str[i]) || isdigit(str[i])) - continue; - - code = str[i]; - code += 256; - - if (code < 176 || code > 200) - return 0; - } - - return 1; -} - -const char *first_han(const BYTE *str) -{ - unsigned char high, low; - int len, i; - char *p = "׿"; - - static const char* wansung[] = - { - "", "", "", "", "", - "", "", "", "", "", - "", "", "", "", "", - "ī", "Ÿ", "", "", "" - }; - - static const char* johab[] = - { - "a", "a", "a", "a", "a", - "a", "a", "a", "a", "a", - "a", "a", "a", "a", "a", - "a", "?", "?", "?", "" - }; - - len = strlen((const char*) str); - - if (len < 2) - return p; - - high = str[0]; - low = str[1]; - - if (!is_hangul(str)) - { - return p; - } - - high = (KStbl[(high - 0xb0) * 94 + low - 0xa1] >> 8) & 0x7c; - - for (i = 0; johab[i][0]; i++) - { - low = (johab[i][0] & 0x7f); - - if (low == high) - return (wansung[i]); - } - - return (p); -} - -int under_han(const void * orig) -{ - const BYTE * str = (const BYTE *) orig; - BYTE high, low; - int len; - - len = strlen((const char*) str); - - if (len < 2) - return 0; - - if (str[len - 1] == ')') - { - while (str[len] != '(') - len--; - } - - high = str[len - 2]; - low = str[len - 1]; - - if (!is_hangul(&str[len - 2])) - return 0; - - high = KStbl[(high - 0xb0) * 94 + low - 0xa1] & 0x1f; - - if (high < 2) - return 0; - - if (high > 28) - return 0; - - return 1; -} diff --git a/libthecore/src/kstbl.cpp b/libthecore/src/kstbl.cpp deleted file mode 100644 index c40c0a4..0000000 --- a/libthecore/src/kstbl.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Filename: kstbl.c - * Description: Ʒ δ. - * - * Author: aka. Cronan - */ -#define __LIBTHECORE__ -unsigned KStbl[2350] = -{ - /* KS ϼ 2350 ڵ */ - 0x8861,0x8862,0x8865,0x8868,0x8869,0x886a,0x886b,0x8871, - 0x8873,0x8874,0x8875,0x8876,0x8877,0x8878,0x8879,0x887b, - 0x887c,0x887d,0x8881,0x8882,0x8885,0x8889,0x8891,0x8893, - 0x8895,0x8896,0x8897,0x88a1,0x88a2,0x88a5,0x88a9,0x88b5, - 0x88b7,0x88c1,0x88c5,0x88c9,0x88e1,0x88e2,0x88e5,0x88e8, - 0x88e9,0x88eb,0x88f1,0x88f3,0x88f5,0x88f6,0x88f7,0x88f8, - 0x88fb,0x88fc,0x88fd,0x8941,0x8945,0x8949,0x8951,0x8953, - 0x8955,0x8956,0x8957,0x8961,0x8962,0x8963,0x8965,0x8968, - 0x8969,0x8971,0x8973,0x8975,0x8976,0x8977,0x897b,0x8981, - 0x8985,0x8989,0x8993,0x8995,0x89a1,0x89a2,0x89a5,0x89a8, - 0x89a9,0x89ab,0x89ad,0x89b0,0x89b1,0x89b3,0x89b5,0x89b7, - 0x89b8,0x89c1,0x89c2,0x89c5,0x89c9,0x89cb, - - 0x89d1,0x89d3,0x89d5,0x89d7,0x89e1,0x89e5,0x89e9,0x89f1, - 0x89f6,0x89f7,0x8a41,0x8a42,0x8a45,0x8a49,0x8a51,0x8a53, - 0x8a55,0x8a57,0x8a61,0x8a65,0x8a69,0x8a73,0x8a75,0x8a81, - 0x8a82,0x8a85,0x8a88,0x8a89,0x8a8a,0x8a8b,0x8a90,0x8a91, - 0x8a93,0x8a95,0x8a97,0x8a98,0x8aa1,0x8aa2,0x8aa5,0x8aa9, - 0x8ab6,0x8ab7,0x8ac1,0x8ad5,0x8ae1,0x8ae2,0x8ae5,0x8ae9, - 0x8af1,0x8af3,0x8af5,0x8b41,0x8b45,0x8b49,0x8b61,0x8b62, - 0x8b65,0x8b68,0x8b69,0x8b6a,0x8b71,0x8b73,0x8b75,0x8b77, - 0x8b81,0x8ba1,0x8ba2,0x8ba5,0x8ba8,0x8ba9,0x8bab,0x8bb1, - 0x8bb3,0x8bb5,0x8bb7,0x8bb8,0x8bbc,0x8c61,0x8c62,0x8c63, - 0x8c65,0x8c69,0x8c6b,0x8c71,0x8c73,0x8c75,0x8c76,0x8c77, - 0x8c7b,0x8c81,0x8c82,0x8c85,0x8c89,0x8c91, - - 0x8c93,0x8c95,0x8c96,0x8c97,0x8ca1,0x8ca2,0x8ca9,0x8ce1, - 0x8ce2,0x8ce3,0x8ce5,0x8ce9,0x8cf1,0x8cf3,0x8cf5,0x8cf6, - 0x8cf7,0x8d41,0x8d42,0x8d45,0x8d51,0x8d55,0x8d57,0x8d61, - 0x8d65,0x8d69,0x8d75,0x8d76,0x8d7b,0x8d81,0x8da1,0x8da2, - 0x8da5,0x8da7,0x8da9,0x8db1,0x8db3,0x8db5,0x8db7,0x8db8, - 0x8db9,0x8dc1,0x8dc2,0x8dc9,0x8dd6,0x8dd7,0x8de1,0x8de2, - 0x8df7,0x8e41,0x8e45,0x8e49,0x8e51,0x8e53,0x8e57,0x8e61, - 0x8e81,0x8e82,0x8e85,0x8e89,0x8e90,0x8e91,0x8e93,0x8e95, - 0x8e97,0x8e98,0x8ea1,0x8ea9,0x8eb6,0x8eb7,0x8ec1,0x8ec2, - 0x8ec5,0x8ec9,0x8ed1,0x8ed3,0x8ed6,0x8ee1,0x8ee5,0x8ee9, - 0x8ef1,0x8ef3,0x8f41,0x8f61,0x8f62,0x8f65,0x8f67,0x8f69, - 0x8f6b,0x8f70,0x8f71,0x8f73,0x8f75,0x8f77, - - 0x8f7b,0x8fa1,0x8fa2,0x8fa5,0x8fa9,0x8fb1,0x8fb3,0x8fb5, - 0x8fb7,0x9061,0x9062,0x9063,0x9065,0x9068,0x9069,0x906a, - 0x906b,0x9071,0x9073,0x9075,0x9076,0x9077,0x9078,0x9079, - 0x907b,0x907d,0x9081,0x9082,0x9085,0x9089,0x9091,0x9093, - 0x9095,0x9096,0x9097,0x90a1,0x90a2,0x90a5,0x90a9,0x90b1, - 0x90b7,0x90e1,0x90e2,0x90e4,0x90e5,0x90e9,0x90eb,0x90ec, - 0x90f1,0x90f3,0x90f5,0x90f6,0x90f7,0x90fd,0x9141,0x9142, - 0x9145,0x9149,0x9151,0x9153,0x9155,0x9156,0x9157,0x9161, - 0x9162,0x9165,0x9169,0x9171,0x9173,0x9176,0x9177,0x917a, - 0x9181,0x9185,0x91a1,0x91a2,0x91a5,0x91a9,0x91ab,0x91b1, - 0x91b3,0x91b5,0x91b7,0x91bc,0x91bd,0x91c1,0x91c5,0x91c9, - 0x91d6,0x9241,0x9245,0x9249,0x9251,0x9253, - - 0x9255,0x9261,0x9262,0x9265,0x9269,0x9273,0x9275,0x9277, - 0x9281,0x9282,0x9285,0x9288,0x9289,0x9291,0x9293,0x9295, - 0x9297,0x92a1,0x92b6,0x92c1,0x92e1,0x92e5,0x92e9,0x92f1, - 0x92f3,0x9341,0x9342,0x9349,0x9351,0x9353,0x9357,0x9361, - 0x9362,0x9365,0x9369,0x936a,0x936b,0x9371,0x9373,0x9375, - 0x9377,0x9378,0x937c,0x9381,0x9385,0x9389,0x93a1,0x93a2, - 0x93a5,0x93a9,0x93af,0x93b1,0x93b3,0x93b5,0x93b7,0x93bc, - 0x9461,0x9462,0x9463,0x9465,0x9468,0x9469,0x946a,0x946b, - 0x946c,0x9470,0x9471,0x9473,0x9475,0x9476,0x9477,0x9478, - 0x9479,0x947d,0x9481,0x9482,0x9485,0x9489,0x9491,0x9493, - 0x9495,0x9496,0x9497,0x94a1,0x94e1,0x94e2,0x94e3,0x94e5, - 0x94e8,0x94e9,0x94eb,0x94ec,0x94f1,0x94f3, - - 0x94f5,0x94f7,0x94f9,0x94fc,0x9541,0x9542,0x9545,0x9549, - 0x9551,0x9553,0x9555,0x9556,0x9557,0x9561,0x9565,0x9569, - 0x9576,0x9577,0x9581,0x9585,0x95a1,0x95a2,0x95a5,0x95a8, - 0x95a9,0x95ab,0x95ad,0x95b1,0x95b3,0x95b5,0x95b7,0x95b9, - 0x95bb,0x95c1,0x95c5,0x95c9,0x95e1,0x95f6,0x9641,0x9645, - 0x9649,0x9651,0x9653,0x9655,0x9661,0x9681,0x9682,0x9685, - 0x9689,0x9691,0x9693,0x9695,0x9697,0x96a1,0x96b6,0x96c1, - 0x96d7,0x96e1,0x96e5,0x96e9,0x96f3,0x96f5,0x96f7,0x9741, - 0x9745,0x9749,0x9751,0x9757,0x9761,0x9762,0x9765,0x9768, - 0x9769,0x976b,0x9771,0x9773,0x9775,0x9777,0x9781,0x97a1, - 0x97a2,0x97a5,0x97a8,0x97a9,0x97b1,0x97b3,0x97b5,0x97b6, - 0x97b7,0x97b8,0x9861,0x9862,0x9865,0x9869, - - 0x9871,0x9873,0x9875,0x9876,0x9877,0x987d,0x9881,0x9882, - 0x9885,0x9889,0x9891,0x9893,0x9895,0x9896,0x9897,0x98e1, - 0x98e2,0x98e5,0x98e9,0x98eb,0x98ec,0x98f1,0x98f3,0x98f5, - 0x98f6,0x98f7,0x98fd,0x9941,0x9942,0x9945,0x9949,0x9951, - 0x9953,0x9955,0x9956,0x9957,0x9961,0x9976,0x99a1,0x99a2, - 0x99a5,0x99a9,0x99b7,0x99c1,0x99c9,0x99e1,0x9a41,0x9a45, - 0x9a81,0x9a82,0x9a85,0x9a89,0x9a90,0x9a91,0x9a97,0x9ac1, - 0x9ae1,0x9ae5,0x9ae9,0x9af1,0x9af3,0x9af7,0x9b61,0x9b62, - 0x9b65,0x9b68,0x9b69,0x9b71,0x9b73,0x9b75,0x9b81,0x9b85, - 0x9b89,0x9b91,0x9b93,0x9ba1,0x9ba5,0x9ba9,0x9bb1,0x9bb3, - 0x9bb5,0x9bb7,0x9c61,0x9c62,0x9c65,0x9c69,0x9c71,0x9c73, - 0x9c75,0x9c76,0x9c77,0x9c78,0x9c7c,0x9c7d, - - 0x9c81,0x9c82,0x9c85,0x9c89,0x9c91,0x9c93,0x9c95,0x9c96, - 0x9c97,0x9ca1,0x9ca2,0x9ca5,0x9cb5,0x9cb7,0x9ce1,0x9ce2, - 0x9ce5,0x9ce9,0x9cf1,0x9cf3,0x9cf5,0x9cf6,0x9cf7,0x9cfd, - 0x9d41,0x9d42,0x9d45,0x9d49,0x9d51,0x9d53,0x9d55,0x9d57, - 0x9d61,0x9d62,0x9d65,0x9d69,0x9d71,0x9d73,0x9d75,0x9d76, - 0x9d77,0x9d81,0x9d85,0x9d93,0x9d95,0x9da1,0x9da2,0x9da5, - 0x9da9,0x9db1,0x9db3,0x9db5,0x9db7,0x9dc1,0x9dc5,0x9dd7, - 0x9df6,0x9e41,0x9e45,0x9e49,0x9e51,0x9e53,0x9e55,0x9e57, - 0x9e61,0x9e65,0x9e69,0x9e73,0x9e75,0x9e77,0x9e81,0x9e82, - 0x9e85,0x9e89,0x9e91,0x9e93,0x9e95,0x9e97,0x9ea1,0x9eb6, - 0x9ec1,0x9ee1,0x9ee2,0x9ee5,0x9ee9,0x9ef1,0x9ef5,0x9ef7, - 0x9f41,0x9f42,0x9f45,0x9f49,0x9f51,0x9f53, - - 0x9f55,0x9f57,0x9f61,0x9f62,0x9f65,0x9f69,0x9f71,0x9f73, - 0x9f75,0x9f77,0x9f78,0x9f7b,0x9f7c,0x9fa1,0x9fa2,0x9fa5, - 0x9fa9,0x9fb1,0x9fb3,0x9fb5,0x9fb7,0xa061,0xa062,0xa065, - 0xa067,0xa068,0xa069,0xa06a,0xa06b,0xa071,0xa073,0xa075, - 0xa077,0xa078,0xa07b,0xa07d,0xa081,0xa082,0xa085,0xa089, - 0xa091,0xa093,0xa095,0xa096,0xa097,0xa098,0xa0a1,0xa0a2, - 0xa0a9,0xa0b7,0xa0e1,0xa0e2,0xa0e5,0xa0e9,0xa0eb,0xa0f1, - 0xa0f3,0xa0f5,0xa0f7,0xa0f8,0xa0fd,0xa141,0xa142,0xa145, - 0xa149,0xa151,0xa153,0xa155,0xa156,0xa157,0xa161,0xa162, - 0xa165,0xa169,0xa175,0xa176,0xa177,0xa179,0xa181,0xa1a1, - 0xa1a2,0xa1a4,0xa1a5,0xa1a9,0xa1ab,0xa1b1,0xa1b3,0xa1b5, - 0xa1b7,0xa1c1,0xa1c5,0xa1d6,0xa1d7,0xa241, - - 0xa245,0xa249,0xa253,0xa255,0xa257,0xa261,0xa265,0xa269, - 0xa273,0xa275,0xa281,0xa282,0xa283,0xa285,0xa288,0xa289, - 0xa28a,0xa28b,0xa291,0xa293,0xa295,0xa297,0xa29b,0xa29d, - 0xa2a1,0xa2a5,0xa2a9,0xa2b3,0xa2b5,0xa2c1,0xa2e1,0xa2e5, - 0xa2e9,0xa341,0xa345,0xa349,0xa351,0xa355,0xa361,0xa365, - 0xa369,0xa371,0xa375,0xa3a1,0xa3a2,0xa3a5,0xa3a8,0xa3a9, - 0xa3ab,0xa3b1,0xa3b3,0xa3b5,0xa3b6,0xa3b7,0xa3b9,0xa3bb, - 0xa461,0xa462,0xa463,0xa464,0xa465,0xa468,0xa469,0xa46a, - 0xa46b,0xa46c,0xa471,0xa473,0xa475,0xa477,0xa47b,0xa481, - 0xa482,0xa485,0xa489,0xa491,0xa493,0xa495,0xa496,0xa497, - 0xa49b,0xa4a1,0xa4a2,0xa4a5,0xa4b3,0xa4e1,0xa4e2,0xa4e5, - 0xa4e8,0xa4e9,0xa4eb,0xa4f1,0xa4f3,0xa4f5, - - 0xa4f7,0xa4f8,0xa541,0xa542,0xa545,0xa548,0xa549,0xa551, - 0xa553,0xa555,0xa556,0xa557,0xa561,0xa562,0xa565,0xa569, - 0xa573,0xa575,0xa576,0xa577,0xa57b,0xa581,0xa585,0xa5a1, - 0xa5a2,0xa5a3,0xa5a5,0xa5a9,0xa5b1,0xa5b3,0xa5b5,0xa5b7, - 0xa5c1,0xa5c5,0xa5d6,0xa5e1,0xa5f6,0xa641,0xa642,0xa645, - 0xa649,0xa651,0xa653,0xa661,0xa665,0xa681,0xa682,0xa685, - 0xa688,0xa689,0xa68a,0xa68b,0xa691,0xa693,0xa695,0xa697, - 0xa69b,0xa69c,0xa6a1,0xa6a9,0xa6b6,0xa6c1,0xa6e1,0xa6e2, - 0xa6e5,0xa6e9,0xa6f7,0xa741,0xa745,0xa749,0xa751,0xa755, - 0xa757,0xa761,0xa762,0xa765,0xa769,0xa771,0xa773,0xa775, - 0xa7a1,0xa7a2,0xa7a5,0xa7a9,0xa7ab,0xa7b1,0xa7b3,0xa7b5, - 0xa7b7,0xa7b8,0xa7b9,0xa861,0xa862,0xa865, - - 0xa869,0xa86b,0xa871,0xa873,0xa875,0xa876,0xa877,0xa87d, - 0xa881,0xa882,0xa885,0xa889,0xa891,0xa893,0xa895,0xa896, - 0xa897,0xa8a1,0xa8a2,0xa8b1,0xa8e1,0xa8e2,0xa8e5,0xa8e8, - 0xa8e9,0xa8f1,0xa8f5,0xa8f6,0xa8f7,0xa941,0xa957,0xa961, - 0xa962,0xa971,0xa973,0xa975,0xa976,0xa977,0xa9a1,0xa9a2, - 0xa9a5,0xa9a9,0xa9b1,0xa9b3,0xa9b7,0xaa41,0xaa61,0xaa77, - 0xaa81,0xaa82,0xaa85,0xaa89,0xaa91,0xaa95,0xaa97,0xab41, - 0xab57,0xab61,0xab65,0xab69,0xab71,0xab73,0xaba1,0xaba2, - 0xaba5,0xaba9,0xabb1,0xabb3,0xabb5,0xabb7,0xac61,0xac62, - 0xac64,0xac65,0xac68,0xac69,0xac6a,0xac6b,0xac71,0xac73, - 0xac75,0xac76,0xac77,0xac7b,0xac81,0xac82,0xac85,0xac89, - 0xac91,0xac93,0xac95,0xac96,0xac97,0xaca1, - - 0xaca2,0xaca5,0xaca9,0xacb1,0xacb3,0xacb5,0xacb7,0xacc1, - 0xacc5,0xacc9,0xacd1,0xacd7,0xace1,0xace2,0xace3,0xace4, - 0xace5,0xace8,0xace9,0xaceb,0xacec,0xacf1,0xacf3,0xacf5, - 0xacf6,0xacf7,0xacfc,0xad41,0xad42,0xad45,0xad49,0xad51, - 0xad53,0xad55,0xad56,0xad57,0xad61,0xad62,0xad65,0xad69, - 0xad71,0xad73,0xad75,0xad76,0xad77,0xad81,0xad85,0xad89, - 0xad97,0xada1,0xada2,0xada3,0xada5,0xada9,0xadab,0xadb1, - 0xadb3,0xadb5,0xadb7,0xadbb,0xadc1,0xadc2,0xadc5,0xadc9, - 0xadd7,0xade1,0xade5,0xade9,0xadf1,0xadf5,0xadf6,0xae41, - 0xae45,0xae49,0xae51,0xae53,0xae55,0xae61,0xae62,0xae65, - 0xae69,0xae71,0xae73,0xae75,0xae77,0xae81,0xae82,0xae85, - 0xae88,0xae89,0xae91,0xae93,0xae95,0xae97, - - 0xae99,0xae9b,0xae9c,0xaea1,0xaeb6,0xaec1,0xaec2,0xaec5, - 0xaec9,0xaed1,0xaed7,0xaee1,0xaee2,0xaee5,0xaee9,0xaef1, - 0xaef3,0xaef5,0xaef7,0xaf41,0xaf42,0xaf49,0xaf51,0xaf55, - 0xaf57,0xaf61,0xaf62,0xaf65,0xaf69,0xaf6a,0xaf71,0xaf73, - 0xaf75,0xaf77,0xafa1,0xafa2,0xafa5,0xafa8,0xafa9,0xafb0, - 0xafb1,0xafb3,0xafb5,0xafb7,0xafbc,0xb061,0xb062,0xb064, - 0xb065,0xb069,0xb071,0xb073,0xb076,0xb077,0xb07d,0xb081, - 0xb082,0xb085,0xb089,0xb091,0xb093,0xb096,0xb097,0xb0b7, - 0xb0e1,0xb0e2,0xb0e5,0xb0e9,0xb0eb,0xb0f1,0xb0f3,0xb0f6, - 0xb0f7,0xb141,0xb145,0xb149,0xb157,0xb1a1,0xb1a2,0xb1a5, - 0xb1a8,0xb1a9,0xb1ab,0xb1b1,0xb1b3,0xb1b7,0xb1c1,0xb1c2, - 0xb1c5,0xb1d6,0xb1e1,0xb1f6,0xb241,0xb245, - - 0xb249,0xb251,0xb253,0xb261,0xb281,0xb282,0xb285,0xb289, - 0xb291,0xb293,0xb297,0xb2a1,0xb2b6,0xb2c1,0xb2e1,0xb2e5, - 0xb357,0xb361,0xb362,0xb365,0xb369,0xb36b,0xb370,0xb371, - 0xb373,0xb381,0xb385,0xb389,0xb391,0xb3a1,0xb3a2,0xb3a5, - 0xb3a9,0xb3b1,0xb3b3,0xb3b5,0xb3b7,0xb461,0xb462,0xb465, - 0xb466,0xb467,0xb469,0xb46a,0xb46b,0xb470,0xb471,0xb473, - 0xb475,0xb476,0xb477,0xb47b,0xb47c,0xb481,0xb482,0xb485, - 0xb489,0xb491,0xb493,0xb495,0xb496,0xb497,0xb4a1,0xb4a2, - 0xb4a5,0xb4a9,0xb4ac,0xb4b1,0xb4b3,0xb4b5,0xb4b7,0xb4bb, - 0xb4bd,0xb4c1,0xb4c5,0xb4c9,0xb4d3,0xb4e1,0xb4e2,0xb4e5, - 0xb4e6,0xb4e8,0xb4e9,0xb4ea,0xb4eb,0xb4f1,0xb4f3,0xb4f4, - 0xb4f5,0xb4f6,0xb4f7,0xb4f8,0xb4fa,0xb4fc, - - 0xb541,0xb542,0xb545,0xb549,0xb551,0xb553,0xb555,0xb557, - 0xb561,0xb562,0xb563,0xb565,0xb569,0xb56b,0xb56c,0xb571, - 0xb573,0xb574,0xb575,0xb576,0xb577,0xb57b,0xb57c,0xb57d, - 0xb581,0xb585,0xb589,0xb591,0xb593,0xb595,0xb596,0xb5a1, - 0xb5a2,0xb5a5,0xb5a9,0xb5aa,0xb5ab,0xb5ad,0xb5b0,0xb5b1, - 0xb5b3,0xb5b5,0xb5b7,0xb5b9,0xb5c1,0xb5c2,0xb5c5,0xb5c9, - 0xb5d1,0xb5d3,0xb5d5,0xb5d6,0xb5d7,0xb5e1,0xb5e2,0xb5e5, - 0xb5f1,0xb5f5,0xb5f7,0xb641,0xb642,0xb645,0xb649,0xb651, - 0xb653,0xb655,0xb657,0xb661,0xb662,0xb665,0xb669,0xb671, - 0xb673,0xb675,0xb677,0xb681,0xb682,0xb685,0xb689,0xb68a, - 0xb68b,0xb691,0xb693,0xb695,0xb697,0xb6a1,0xb6a2,0xb6a5, - 0xb6a9,0xb6b1,0xb6b3,0xb6b6,0xb6b7,0xb6c1, - - 0xb6c2,0xb6c5,0xb6c9,0xb6d1,0xb6d3,0xb6d7,0xb6e1,0xb6e2, - 0xb6e5,0xb6e9,0xb6f1,0xb6f3,0xb6f5,0xb6f7,0xb741,0xb742, - 0xb745,0xb749,0xb751,0xb753,0xb755,0xb757,0xb759,0xb761, - 0xb762,0xb765,0xb769,0xb76f,0xb771,0xb773,0xb775,0xb777, - 0xb778,0xb779,0xb77a,0xb77b,0xb77c,0xb77d,0xb781,0xb785, - 0xb789,0xb791,0xb795,0xb7a1,0xb7a2,0xb7a5,0xb7a9,0xb7aa, - 0xb7ab,0xb7b0,0xb7b1,0xb7b3,0xb7b5,0xb7b6,0xb7b7,0xb7b8, - 0xb7bc,0xb861,0xb862,0xb865,0xb867,0xb868,0xb869,0xb86b, - 0xb871,0xb873,0xb875,0xb876,0xb877,0xb878,0xb881,0xb882, - 0xb885,0xb889,0xb891,0xb893,0xb895,0xb896,0xb897,0xb8a1, - 0xb8a2,0xb8a5,0xb8a7,0xb8a9,0xb8b1,0xb8b7,0xb8c1,0xb8c5, - 0xb8c9,0xb8e1,0xb8e2,0xb8e5,0xb8e9,0xb8eb, - - 0xb8f1,0xb8f3,0xb8f5,0xb8f7,0xb8f8,0xb941,0xb942,0xb945, - 0xb949,0xb951,0xb953,0xb955,0xb957,0xb961,0xb965,0xb969, - 0xb971,0xb973,0xb976,0xb977,0xb981,0xb9a1,0xb9a2,0xb9a5, - 0xb9a9,0xb9ab,0xb9b1,0xb9b3,0xb9b5,0xb9b7,0xb9b8,0xb9b9, - 0xb9bd,0xb9c1,0xb9c2,0xb9c9,0xb9d3,0xb9d5,0xb9d7,0xb9e1, - 0xb9f6,0xb9f7,0xba41,0xba45,0xba49,0xba51,0xba53,0xba55, - 0xba57,0xba61,0xba62,0xba65,0xba77,0xba81,0xba82,0xba85, - 0xba89,0xba8a,0xba8b,0xba91,0xba93,0xba95,0xba97,0xbaa1, - 0xbab6,0xbac1,0xbae1,0xbae2,0xbae5,0xbae9,0xbaf1,0xbaf3, - 0xbaf5,0xbb41,0xbb45,0xbb49,0xbb51,0xbb61,0xbb62,0xbb65, - 0xbb69,0xbb71,0xbb73,0xbb75,0xbb77,0xbba1,0xbba2,0xbba5, - 0xbba8,0xbba9,0xbbab,0xbbb1,0xbbb3,0xbbb5, - - 0xbbb7,0xbbb8,0xbbbb,0xbbbc,0xbc61,0xbc62,0xbc65,0xbc67, - 0xbc69,0xbc6c,0xbc71,0xbc73,0xbc75,0xbc76,0xbc77,0xbc81, - 0xbc82,0xbc85,0xbc89,0xbc91,0xbc93,0xbc95,0xbc96,0xbc97, - 0xbca1,0xbca5,0xbcb7,0xbce1,0xbce2,0xbce5,0xbce9,0xbcf1, - 0xbcf3,0xbcf5,0xbcf6,0xbcf7,0xbd41,0xbd57,0xbd61,0xbd76, - 0xbda1,0xbda2,0xbda5,0xbda9,0xbdb1,0xbdb3,0xbdb5,0xbdb7, - 0xbdb9,0xbdc1,0xbdc2,0xbdc9,0xbdd6,0xbde1,0xbdf6,0xbe41, - 0xbe45,0xbe49,0xbe51,0xbe53,0xbe77,0xbe81,0xbe82,0xbe85, - 0xbe89,0xbe91,0xbe93,0xbe97,0xbea1,0xbeb6,0xbeb7,0xbee1, - 0xbf41,0xbf61,0xbf71,0xbf75,0xbf77,0xbfa1,0xbfa2,0xbfa5, - 0xbfa9,0xbfb1,0xbfb3,0xbfb7,0xbfb8,0xbfbd,0xc061,0xc062, - 0xc065,0xc067,0xc069,0xc071,0xc073,0xc075, - - 0xc076,0xc077,0xc078,0xc081,0xc082,0xc085,0xc089,0xc091, - 0xc093,0xc095,0xc096,0xc097,0xc0a1,0xc0a5,0xc0a7,0xc0a9, - 0xc0b1,0xc0b7,0xc0e1,0xc0e2,0xc0e5,0xc0e9,0xc0f1,0xc0f3, - 0xc0f5,0xc0f6,0xc0f7,0xc141,0xc142,0xc145,0xc149,0xc151, - 0xc153,0xc155,0xc157,0xc161,0xc165,0xc176,0xc181,0xc185, - 0xc197,0xc1a1,0xc1a2,0xc1a5,0xc1a9,0xc1b1,0xc1b3,0xc1b5, - 0xc1b7,0xc1c1,0xc1c5,0xc1c9,0xc1d7,0xc241,0xc245,0xc249, - 0xc251,0xc253,0xc255,0xc257,0xc261,0xc271,0xc281,0xc282, - 0xc285,0xc289,0xc291,0xc293,0xc295,0xc297,0xc2a1,0xc2b6, - 0xc2c1,0xc2c5,0xc2e1,0xc2e5,0xc2e9,0xc2f1,0xc2f3,0xc2f5, - 0xc2f7,0xc341,0xc345,0xc349,0xc351,0xc357,0xc361,0xc362, - 0xc365,0xc369,0xc371,0xc373,0xc375,0xc377, - - 0xc3a1,0xc3a2,0xc3a5,0xc3a8,0xc3a9,0xc3aa,0xc3b1,0xc3b3, - 0xc3b5,0xc3b7,0xc461,0xc462,0xc465,0xc469,0xc471,0xc473, - 0xc475,0xc477,0xc481,0xc482,0xc485,0xc489,0xc491,0xc493, - 0xc495,0xc496,0xc497,0xc4a1,0xc4a2,0xc4b7,0xc4e1,0xc4e2, - 0xc4e5,0xc4e8,0xc4e9,0xc4f1,0xc4f3,0xc4f5,0xc4f6,0xc4f7, - 0xc541,0xc542,0xc545,0xc549,0xc551,0xc553,0xc555,0xc557, - 0xc561,0xc565,0xc569,0xc571,0xc573,0xc575,0xc576,0xc577, - 0xc581,0xc5a1,0xc5a2,0xc5a5,0xc5a9,0xc5b1,0xc5b3,0xc5b5, - 0xc5b7,0xc5c1,0xc5c2,0xc5c5,0xc5c9,0xc5d1,0xc5d7,0xc5e1, - 0xc5f7,0xc641,0xc649,0xc661,0xc681,0xc682,0xc685,0xc689, - 0xc691,0xc693,0xc695,0xc697,0xc6a1,0xc6a5,0xc6a9,0xc6b7, - 0xc6c1,0xc6d7,0xc6e1,0xc6e2,0xc6e5,0xc6e9, - - 0xc6f1,0xc6f3,0xc6f5,0xc6f7,0xc741,0xc745,0xc749,0xc751, - 0xc761,0xc762,0xc765,0xc769,0xc771,0xc773,0xc777,0xc7a1, - 0xc7a2,0xc7a5,0xc7a9,0xc7b1,0xc7b3,0xc7b5,0xc7b7,0xc861, - 0xc862,0xc865,0xc869,0xc86a,0xc871,0xc873,0xc875,0xc876, - 0xc877,0xc881,0xc882,0xc885,0xc889,0xc891,0xc893,0xc895, - 0xc896,0xc897,0xc8a1,0xc8b7,0xc8e1,0xc8e2,0xc8e5,0xc8e9, - 0xc8eb,0xc8f1,0xc8f3,0xc8f5,0xc8f6,0xc8f7,0xc941,0xc942, - 0xc945,0xc949,0xc951,0xc953,0xc955,0xc957,0xc961,0xc965, - 0xc976,0xc981,0xc985,0xc9a1,0xc9a2,0xc9a5,0xc9a9,0xc9b1, - 0xc9b3,0xc9b5,0xc9b7,0xc9bc,0xc9c1,0xc9c5,0xc9e1,0xca41, - 0xca45,0xca55,0xca57,0xca61,0xca81,0xca82,0xca85,0xca89, - 0xca91,0xca93,0xca95,0xca97,0xcaa1,0xcab6, - - 0xcac1,0xcae1,0xcae2,0xcae5,0xcae9,0xcaf1,0xcaf3,0xcaf7, - 0xcb41,0xcb45,0xcb49,0xcb51,0xcb57,0xcb61,0xcb62,0xcb65, - 0xcb68,0xcb69,0xcb6b,0xcb71,0xcb73,0xcb75,0xcb81,0xcb85, - 0xcb89,0xcb91,0xcb93,0xcba1,0xcba2,0xcba5,0xcba9,0xcbb1, - 0xcbb3,0xcbb5,0xcbb7,0xcc61,0xcc62,0xcc63,0xcc65,0xcc69, - 0xcc6b,0xcc71,0xcc73,0xcc75,0xcc76,0xcc77,0xcc7b,0xcc81, - 0xcc82,0xcc85,0xcc89,0xcc91,0xcc93,0xcc95,0xcc96,0xcc97, - 0xcca1,0xcca2,0xcce1,0xcce2,0xcce5,0xcce9,0xccf1,0xccf3, - 0xccf5,0xccf6,0xccf7,0xcd41,0xcd42,0xcd45,0xcd49,0xcd51, - 0xcd53,0xcd55,0xcd57,0xcd61,0xcd65,0xcd69,0xcd71,0xcd73, - 0xcd76,0xcd77,0xcd81,0xcd89,0xcd93,0xcd95,0xcda1,0xcda2, - 0xcda5,0xcda9,0xcdb1,0xcdb3,0xcdb5,0xcdb7, - - 0xcdc1,0xcdd7,0xce41,0xce45,0xce61,0xce65,0xce69,0xce73, - 0xce75,0xce81,0xce82,0xce85,0xce88,0xce89,0xce8b,0xce91, - 0xce93,0xce95,0xce97,0xcea1,0xceb7,0xcee1,0xcee5,0xcee9, - 0xcef1,0xcef5,0xcf41,0xcf45,0xcf49,0xcf51,0xcf55,0xcf57, - 0xcf61,0xcf65,0xcf69,0xcf71,0xcf73,0xcf75,0xcfa1,0xcfa2, - 0xcfa5,0xcfa9,0xcfb1,0xcfb3,0xcfb5,0xcfb7,0xd061,0xd062, - 0xd065,0xd069,0xd06e,0xd071,0xd073,0xd075,0xd077,0xd081, - 0xd082,0xd085,0xd089,0xd091,0xd093,0xd095,0xd096,0xd097, - 0xd0a1,0xd0b7,0xd0e1,0xd0e2,0xd0e5,0xd0e9,0xd0eb,0xd0f1, - 0xd0f3,0xd0f5,0xd0f7,0xd141,0xd142,0xd145,0xd149,0xd151, - 0xd153,0xd155,0xd157,0xd161,0xd162,0xd165,0xd169,0xd171, - 0xd173,0xd175,0xd176,0xd177,0xd181,0xd185, - - 0xd189,0xd193,0xd1a1,0xd1a2,0xd1a5,0xd1a9,0xd1ae,0xd1b1, - 0xd1b3,0xd1b5,0xd1b7,0xd1bb,0xd1c1,0xd1c2,0xd1c5,0xd1c9, - 0xd1d5,0xd1d7,0xd1e1,0xd1e2,0xd1e5,0xd1f5,0xd1f7,0xd241, - 0xd242,0xd245,0xd249,0xd253,0xd255,0xd257,0xd261,0xd265, - 0xd269,0xd273,0xd275,0xd281,0xd282,0xd285,0xd289,0xd28e, - 0xd291,0xd295,0xd297,0xd2a1,0xd2a5,0xd2a9,0xd2b1,0xd2b7, - 0xd2c1,0xd2c2,0xd2c5,0xd2c9,0xd2d7,0xd2e1,0xd2e2,0xd2e5, - 0xd2e9,0xd2f1,0xd2f3,0xd2f5,0xd2f7,0xd341,0xd342,0xd345, - 0xd349,0xd351,0xd355,0xd357,0xd361,0xd362,0xd365,0xd367, - 0xd368,0xd369,0xd36a,0xd371,0xd373,0xd375,0xd377,0xd37b, - 0xd381,0xd385,0xd389,0xd391,0xd393,0xd397,0xd3a1,0xd3a2, - 0xd3a5,0xd3a9,0xd3b1,0xd3b3,0xd3b5,0xd3b7 -}; diff --git a/libthecore/src/main.cpp b/libthecore/src/main.cpp index d5b8990..c7f96d3 100644 --- a/libthecore/src/main.cpp +++ b/libthecore/src/main.cpp @@ -61,8 +61,6 @@ int thecore_init(int fps, HEARTFUNC heartbeat_func) if (!log_init() || !pid_init()) return false; - GOST_Init(); - thecore_heart = heart_new(1000000 / fps, heartbeat_func); return true; } diff --git a/libthecore/src/memcpy.cpp b/libthecore/src/memcpy.cpp deleted file mode 100644 index d6861f7..0000000 --- a/libthecore/src/memcpy.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - (c) Copyright 2000-2002 convergence integrated media GmbH. - (c) Copyright 2002 convergence GmbH. - - All rights reserved. - - Written by Denis Oliver Kropp , - Andreas Hundt and - Sven Neumann . - - Fast memcpy code was taken from xine (see below). - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -*/ - -/* - * Copyright (C) 2001 the xine project - * - * This file is part of xine, a unix video player. - * - * xine 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. - * - * xine 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - * - * These are the MMX/MMX2/SSE optimized versions of memcpy - * - * This code was adapted from Linux Kernel sources by Nick Kurshev to - * the mplayer program. (http://mplayer.sourceforge.net) - * - * Miguel Freitas split the #ifdefs into several specialized functions that - * are benchmarked at runtime by xine. Some original comments from Nick - * have been preserved documenting some MMX/SSE oddities. - * Also added kernel memcpy function that seems faster than glibc one. - * - */ - -/* Original comments from mplayer (file: aclib.c) This part of code - was taken by me from Linux-2.4.3 and slightly modified for MMX, MMX2, - SSE instruction set. I have done it since linux uses page aligned - blocks but mplayer uses weakly ordered data and original sources can - not speedup them. Only using PREFETCHNTA and MOVNTQ together have - effect! - - From IA-32 Intel Architecture Software Developer's Manual Volume 1, - - Order Number 245470: - "10.4.6. Cacheability Control, Prefetch, and Memory Ordering Instructions" - - Data referenced by a program can be temporal (data will be used - again) or non-temporal (data will be referenced once and not reused - in the immediate future). To make efficient use of the processor's - caches, it is generally desirable to cache temporal data and not - cache non-temporal data. Overloading the processor's caches with - non-temporal data is sometimes referred to as "polluting the - caches". The non-temporal data is written to memory with - Write-Combining semantics. - - The PREFETCHh instructions permits a program to load data into the - processor at a suggested cache level, so that it is closer to the - processors load and store unit when it is needed. If the data is - already present in a level of the cache hierarchy that is closer to - the processor, the PREFETCHh instruction will not result in any data - movement. But we should you PREFETCHNTA: Non-temporal data fetch - data into location close to the processor, minimizing cache - pollution. - - The MOVNTQ (store quadword using non-temporal hint) instruction - stores packed integer data from an MMX register to memory, using a - non-temporal hint. The MOVNTPS (store packed single-precision - floating-point values using non-temporal hint) instruction stores - packed floating-point data from an XMM register to memory, using a - non-temporal hint. - - The SFENCE (Store Fence) instruction controls write ordering by - creating a fence for memory store operations. This instruction - guarantees that the results of every store instruction that precedes - the store fence in program order is globally visible before any - store instruction that follows the fence. The SFENCE instruction - provides an efficient way of ensuring ordering between procedures - that produce weakly-ordered data and procedures that consume that - data. - - If you have questions please contact with me: Nick Kurshev: - nickols_k@mail.ru. -*/ - -/* mmx v.1 Note: Since we added alignment of destinition it speedups - of memory copying on PentMMX, Celeron-1 and P2 upto 12% versus - standard (non MMX-optimized) version. - Note: on K6-2+ it speedups memory copying upto 25% and - on K7 and P3 about 500% (5 times). -*/ - -/* Additional notes on gcc assembly and processors: [MF] - prefetch is specific for AMD processors, the intel ones should be - prefetch0, prefetch1, prefetch2 which are not recognized by my gcc. - prefetchnta is supported both on athlon and pentium 3. - - therefore i will take off prefetchnta instructions from the mmx1 - version to avoid problems on pentium mmx and k6-2. - - quote of the day: - "Using prefetches efficiently is more of an art than a science" -*/ - -#ifndef __WIN32__ - -#include -void *(*thecore_memcpy) (void * to, const void * from, size_t len) = memcpy; - -#endif diff --git a/libthecore/src/socket.cpp b/libthecore/src/socket.cpp index 3c9afae..cfc3f2f 100644 --- a/libthecore/src/socket.cpp +++ b/libthecore/src/socket.cpp @@ -266,7 +266,7 @@ socket_t socket_connect(const char* host, WORD port) return -1; } - thecore_memcpy((char* ) &server_addr.sin_addr, hp->h_addr, sizeof(server_addr.sin_addr)); + memcpy((char* ) &server_addr.sin_addr, hp->h_addr, sizeof(server_addr.sin_addr)); } server_addr.sin_family = AF_INET; diff --git a/libthecore/src/tea.cpp b/libthecore/src/tea.cpp deleted file mode 100644 index 6188773..0000000 --- a/libthecore/src/tea.cpp +++ /dev/null @@ -1,338 +0,0 @@ -/* - * Filename: tea.c - * Description: TEA ȣȭ - * - * Author: (aka. , Cronan), ۿ (aka. myevan, ڷ) - */ -#include "stdafx.h" - -/* - * TEA Encryption Module Instruction - * Edited by aka. , Cronan - * - * void tea_code(const DWORD sz, const DWORD sy, const DWORD *key, DWORD *dest) - * void tea_decode(const DWORD sz, const DWORD sy, const DWORD *key, DWORD *dest) - * 8Ʈ ȣ/ȣȭ Ҷ ȴ. key 16 Ʈ Ѵ. - * sz, sy 8Ʈ Ѵ. - * - * int tea_decrypt(DWORD *dest, const DWORD *src, const DWORD *key, int size); - * int tea_encrypt(DWORD *dest, const DWORD *src, const DWORD *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 ٲ . - -char tea_nilbuf[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; - -INLINE void tea_code(const DWORD sz, const DWORD sy, const DWORD *key, DWORD *dest) -{ - register DWORD y = sy, z = sz, sum = 0; - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 1 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 2 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 3 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 4 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 5 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 6 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 7 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 8 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 9 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 10 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 11 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 12 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 13 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 14 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 15 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 16 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 17 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 18 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 19 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 20 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 21 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 22 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 23 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 24 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 25 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 26 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 27 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 28 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 29 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 30 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 31 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - y += ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); // 32 - sum += DELTA; - z += ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); - - *(dest++) = y; - *dest = z; -} - -INLINE void tea_decode(const DWORD sz, const DWORD sy, const DWORD *key, DWORD *dest) -{ - register DWORD y = sy, z = sz, sum = DELTA * TEA_ROUND; - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 1 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 2 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 3 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 4 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 5 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 6 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 7 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 8 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 9 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 10 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 11 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 12 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 13 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 14 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 15 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 16 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 17 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 18 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 19 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 20 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 21 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 22 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 23 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 24 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 25 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 26 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 27 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 28 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 29 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 30 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 31 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - z -= ((y << 4 ^ y >> 5) + y) ^ (sum + key[sum >> 11 & 3]); // 32 - sum -= DELTA; - y -= ((z << 4 ^ z >> 5) + z) ^ (sum + key[sum & 3]); - - *(dest++) = y; - *dest = z; -} - -int TEA_Encrypt(DWORD *dest, const DWORD *src, const DWORD * 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(DWORD *dest, const DWORD *src, const DWORD * 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); -} - diff --git a/libthecore/src/tea.s b/libthecore/src/tea.s deleted file mode 100644 index 220350b..0000000 --- a/libthecore/src/tea.s +++ /dev/null @@ -1,8682 +0,0 @@ - .file "tea.c" - .file 1 "tea.c" - .section .debug_abbrev,"",@progbits -.Ldebug_abbrev0: - .section .debug_info,"",@progbits -.Ldebug_info0: - .section .debug_line,"",@progbits -.Ldebug_line0: - .text -.Ltext0: - .file 2 "/usr/include/machine/_types.h" - .file 3 "/usr/include/sys/_types.h" - .file 4 "/usr/include/stdio.h" - .file 5 "/usr/include/stdlib.h" - .file 6 "/usr/include/sys/types.h" - .file 7 "/usr/include/sys/_sigset.h" - .file 8 "/usr/include/sys/_timeval.h" - .file 9 "/usr/include/sys/timespec.h" - .file 10 "/usr/include/sys/select.h" - .file 11 "/usr/include/fcntl.h" - .file 12 "/usr/include/runetype.h" - .file 13 "/usr/include/sys/dirent.h" - .file 14 "/usr/include/dirent.h" - .file 15 "/usr/include/sys/time.h" - .file 16 "/usr/include/time.h" - .file 17 "/usr/include/sys/stat.h" - .file 18 "/usr/include/sys/_iovec.h" - .file 19 "/usr/include/sys/socket.h" - .file 20 "/usr/include/netinet/in.h" - .file 21 "/usr/include/netinet6/in6.h" - .file 22 "/usr/include/netdb.h" - .file 23 "/usr/include/machine/signal.h" - .file 24 "/usr/include/sys/signal.h" - .file 25 "/usr/include/sched.h" - .file 26 "/usr/include/pthread.h" - .file 27 "/usr/include/semaphore.h" - .file 28 "/usr/include/sys/event.h" - .file 29 "../include/typedef.h" - .file 30 "../include/heart.h" - .file 31 "../include/fdwatch.h" - .file 32 "../include/buffer.h" - .file 33 "../include/main.h" - .file 34 "../include/hash.h" -.globl tea_nilbuf - .section .bss - .type tea_nilbuf, @object - .size tea_nilbuf, 8 -tea_nilbuf: - .zero 8 - .text - .p2align 4,,15 -.globl tea_code - .type tea_code, @function -tea_code: -.LFB19: - .loc 1 33 0 - pushl %ebp -.LCFI0: - movl %esp, %ebp -.LCFI1: - pushl %edi -.LCFI2: - pushl %esi -.LCFI3: - pushl %ebx -.LCFI4: - subl $12, %esp -.LCFI5: - movl 8(%ebp), %ecx - movl 16(%ebp), %esi - .loc 1 36 0 - movl %ecx, %edx - movl %ecx, %eax -.LBB2: - shrl $5, %eax - .loc 1 40 0 - movl 4(%esi), %edi - .loc 1 36 0 - sall $4, %edx - xorl %eax, %edx - movl (%esi), %eax - addl %ecx, %edx - movl %eax, -16(%ebp) - xorl %eax, %edx - movl 12(%ebp), %eax - addl %eax, %edx - .loc 1 38 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl 12(%esi), %ebx - addl %edx, %eax - .loc 1 42 0 - movl 8(%esi), %esi - .loc 1 38 0 - movl %ebx, -20(%ebp) - subl $1640531527, %ebx - xorl %ebx, %eax - .loc 1 42 0 - movl %esi, -24(%ebp) - .loc 1 38 0 - addl %eax, %ecx - .loc 1 40 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - .loc 1 42 0 - addl $1013904242, %esi - .loc 1 40 0 - addl %ecx, %eax - leal -1640531527(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 42 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 44 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 50 0 - movl -16(%ebp), %esi - .loc 1 46 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - .loc 1 50 0 - addl $2027808484, %esi - .loc 1 46 0 - addl %edx, %eax - leal -626627285(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 48 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $626627285, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 50 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 52 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 78 0 - movl -20(%ebp), %esi - .loc 1 54 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $387276957, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 56 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %ecx, %eax - leal 387276957(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 58 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $1253254570, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 60 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $1253254570, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 62 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $1401181199, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 64 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $1401181199, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 66 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - leal -239350328(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 68 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $239350328, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 70 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - subl $1879881855, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 72 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal -1879881855(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 74 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $774553914, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 76 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - .loc 1 78 0 - subl $865977613, %esi - .loc 1 76 0 - movl -24(%ebp), %ebx - addl %ecx, %eax - addl $774553914, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 78 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 80 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 86 0 - leal 147926629(%edi), %esi - .loc 1 82 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $1788458156, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 84 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - addl $1788458156, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 86 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 88 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 90 0 - movl %edx, %eax - movl %edx, %ebx - .loc 1 114 0 - movl -16(%ebp), %esi - .loc 1 90 0 - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -1492604898(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 92 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $1492604898, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 94 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $1161830871, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 96 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $1161830871, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 98 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $478700656, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 100 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $478700656, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 102 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - subl $2119232183, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 104 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal -2119232183(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 114 0 - addl $1549107828, %esi - .loc 1 106 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - leal 535203586(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 108 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - addl $535203586, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 110 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -1105327941(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 112 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $1105327941, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 114 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 116 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 122 0 - movl -24(%ebp), %esi - .loc 1 118 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - .loc 1 122 0 - subl $1731955226, %esi - .loc 1 118 0 - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $91423699, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 120 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %ecx, %eax - leal -91423699(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 122 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 124 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 126 0 - movl %edx, %eax - movl %edx, %ebx - .loc 1 158 0 - movl -20(%ebp), %esi - .loc 1 126 0 - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal 922480543(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 128 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $922480543, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 130 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - leal -718050984(%edi), %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 132 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $718050984, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 134 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $1936384785, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 136 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal 1936384785(%edi), %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 138 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - addl $295853258, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 140 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - addl $295853258, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 142 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - subl $1344678269, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 144 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $1344678269, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 150 0 - subl $330774027, %edi - .loc 1 146 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $1309757500, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 148 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - addl $1309757500, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 150 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %edi, %eax - addl %eax, %ecx - .loc 1 152 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %edi, %eax - addl %eax, %edx - .loc 1 154 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - subl $1971305554, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 158 0 - addl $683130215, %esi - .loc 1 156 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $1971305554, %ebx - xorl %ebx, %eax - addl %eax, %edx - .loc 1 158 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - addl %eax, %ecx - .loc 1 160 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - addl %eax, %edx - .loc 1 162 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - subl $957401312, %ebx - xorl %ebx, %eax - addl %eax, %ecx - .loc 1 164 0 - movl 20(%ebp), %eax - movl %edx, (%eax) - .loc 1 165 0 - movl %ecx, 4(%eax) - .loc 1 166 0 - addl $12, %esp - popl %ebx - popl %esi - popl %edi - popl %ebp - ret -.LBE2: -.LFE19: - .size tea_code, .-tea_code - .p2align 4,,15 -.globl tea_decode - .type tea_decode, @function -tea_decode: -.LFB21: - .loc 1 169 0 - pushl %ebp -.LCFI6: - movl %esp, %ebp -.LCFI7: - pushl %edi -.LCFI8: - pushl %esi -.LCFI9: - pushl %ebx -.LCFI10: - subl $12, %esp -.LCFI11: - movl 12(%ebp), %edx - movl 16(%ebp), %edi - movl 8(%ebp), %ecx - .loc 1 172 0 - movl %edx, %eax - movl %edx, %ebx -.LBB3: - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl 8(%edi), %ebx - addl %edx, %eax - movl %ebx, -16(%ebp) - subl $957401312, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 174 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl 12(%edi), %ebx - addl %ecx, %eax - movl %ebx, %esi - movl %ebx, -20(%ebp) - addl $683130215, %esi - xorl %esi, %eax - subl %eax, %edx - .loc 1 176 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 178 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $1971305554, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 180 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl (%edi), %ebx - addl %edx, %eax - .loc 1 182 0 - movl 4(%edi), %edi - .loc 1 180 0 - movl %ebx, -24(%ebp) - subl $1971305554, %ebx - .loc 1 182 0 - leal -330774027(%edi), %esi - .loc 1 180 0 - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 182 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - subl %eax, %edx - .loc 1 184 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 186 0 - movl %ecx, %eax - movl %ecx, %ebx - .loc 1 210 0 - movl -16(%ebp), %esi - .loc 1 186 0 - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - addl $1309757500, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 188 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $1309757500, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 190 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $1344678269, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 192 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - subl $1344678269, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 194 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - addl $295853258, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 196 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - addl $295853258, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 198 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal 1936384785(%edi), %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 200 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $1936384785, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 202 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $718050984, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 204 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -718050984(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 206 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $922480543, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 208 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal 922480543(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 210 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - subl $1731955226, %esi - xorl %esi, %eax - subl %eax, %edx - .loc 1 212 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 214 0 - movl %ecx, %eax - movl %ecx, %ebx - .loc 1 218 0 - movl -24(%ebp), %esi - .loc 1 214 0 - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal -91423699(%edi), %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 218 0 - addl $1549107828, %esi - .loc 1 216 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $91423699, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 218 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - subl %eax, %edx - .loc 1 220 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 246 0 - leal 147926629(%edi), %esi - .loc 1 222 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $1105327941, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 224 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -1105327941(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 226 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - addl $535203586, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 228 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal 535203586(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 230 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal -2119232183(%edi), %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 232 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - subl $2119232183, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 234 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $478700656, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 236 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $478700656, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 238 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $1161830871, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 240 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $1161830871, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 242 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $1492604898, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 244 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -1492604898(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 246 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - subl %eax, %edx - .loc 1 248 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 254 0 - movl -20(%ebp), %esi - .loc 1 250 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - addl $1788458156, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 254 0 - subl $865977613, %esi - .loc 1 252 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $1788458156, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 254 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - subl %eax, %edx - .loc 1 256 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 282 0 - movl -24(%ebp), %esi - .loc 1 258 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - addl $774553914, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 260 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - addl $774553914, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 262 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal -1879881855(%edi), %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 264 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - subl $1879881855, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 266 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - subl $239350328, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 268 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -239350328(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 270 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - addl $1401181199, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 272 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %edx, %eax - addl $1401181199, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 274 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -16(%ebp), %ebx - addl %ecx, %eax - subl $1253254570, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 276 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $1253254570, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 278 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - leal 387276957(%edi), %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 280 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %edx, %eax - .loc 1 282 0 - addl $2027808484, %esi - .loc 1 280 0 - addl $387276957, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 282 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %esi, %eax - subl %eax, %edx - .loc 1 284 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 290 0 - movl -16(%ebp), %esi - .loc 1 286 0 - movl %ecx, %eax - movl %ecx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %ecx, %eax - subl $626627285, %ebx - xorl %ebx, %eax - subl %eax, %edx - .loc 1 288 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - leal -626627285(%edi), %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 290 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - addl $1013904242, %esi - .loc 1 294 0 - subl $1640531527, %edi - .loc 1 290 0 - xorl %esi, %eax - subl %eax, %edx - .loc 1 292 0 - movl %edx, %eax - movl %edx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %edx, %eax - xorl %esi, %eax - subl %eax, %ecx - .loc 1 294 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - addl %ecx, %eax - xorl %edi, %eax - subl %eax, %edx - .loc 1 296 0 - movl %edx, %eax - movl %edx, %ebx - sall $4, %eax - shrl $5, %ebx - xorl %ebx, %eax - movl -20(%ebp), %ebx - addl %edx, %eax - subl $1640531527, %ebx - xorl %ebx, %eax - subl %eax, %ecx - .loc 1 298 0 - movl %ecx, %eax - movl %ecx, %ebx - shrl $5, %ebx - sall $4, %eax - xorl %ebx, %eax - movl -24(%ebp), %ebx - addl %ecx, %eax - xorl %ebx, %eax - subl %eax, %edx - .loc 1 300 0 - movl 20(%ebp), %eax - movl %edx, (%eax) - .loc 1 301 0 - movl %ecx, 4(%eax) - .loc 1 302 0 - addl $12, %esp - popl %ebx - popl %esi - popl %edi - popl %ebp - ret -.LBE3: -.LFE21: - .size tea_decode, .-tea_decode - .p2align 4,,15 -.globl tea_encrypt - .type tea_encrypt, @function -tea_encrypt: -.LFB23: - .loc 1 305 0 - pushl %ebp -.LCFI12: - movl %esp, %ebp -.LCFI13: - pushl %edi -.LCFI14: - pushl %esi -.LCFI15: - pushl %ebx -.LCFI16: - subl $28, %esp -.LCFI17: - movl 20(%ebp), %edx - movl 8(%ebp), %edi - movl 12(%ebp), %esi - .loc 1 315 0 -.LBB4: - testb $7, %dl - movl %edx, -16(%ebp) - je .L6 - .loc 1 311 0 - testl %edx, %edx - movl %edx, %eax - js .L14 -.L5: - andl $-8, %eax - addl $8, %eax - movl %eax, -16(%ebp) - .loc 1 312 0 - subl %edx, %eax - leal (%edx,%esi), %edx - movl %eax, 8(%esp) - xorl %eax, %eax - movl %eax, 4(%esp) - movl %edx, (%esp) - call memset -.L6: - .loc 1 317 0 - movl -16(%ebp), %eax - sarl $3, %eax - testl %eax, %eax - jle .L13 - movl %eax, %ebx - .p2align 4,,15 -.L11: - .loc 1 318 0 - movl %edi, 12(%esp) - movl 16(%ebp), %eax - .loc 1 317 0 - addl $8, %edi - .loc 1 318 0 - movl %eax, 8(%esp) - movl (%esi), %eax - movl %eax, 4(%esp) - movl 4(%esi), %eax - .loc 1 317 0 - addl $8, %esi - .loc 1 318 0 - movl %eax, (%esp) - call tea_code - .loc 1 317 0 - decl %ebx - jne .L11 -.L13: - .loc 1 321 0 -.LBE4: - movl -16(%ebp), %eax - addl $28, %esp - popl %ebx - popl %esi - popl %edi - popl %ebp - ret -.L14: -.LBB5: - leal 7(%edx), %eax - jmp .L5 -.LBE5: -.LFE23: - .size tea_encrypt, .-tea_encrypt - .p2align 4,,15 -.globl tea_decrypt - .type tea_decrypt, @function -tea_decrypt: -.LFB25: - .loc 1 324 0 - pushl %ebp -.LCFI18: - movl %esp, %ebp -.LCFI19: - pushl %edi -.LCFI20: - pushl %esi -.LCFI21: - pushl %ebx -.LCFI22: - subl $28, %esp -.LCFI23: - movl 20(%ebp), %edx - movl 8(%ebp), %edi - movl 12(%ebp), %esi - .loc 1 331 0 -.LBB6: - testb $7, %dl - movl %edx, -16(%ebp) - je .L18 - .loc 1 329 0 - testl %edx, %edx - movl %edx, %eax - js .L26 -.L17: - andl $-8, %eax - addl $8, %eax - movl %eax, -16(%ebp) -.L18: - .loc 1 333 0 - movl -16(%ebp), %eax - sarl $3, %eax - testl %eax, %eax - jle .L25 - movl %eax, %ebx - .p2align 4,,15 -.L23: - .loc 1 334 0 - movl %edi, 12(%esp) - movl 16(%ebp), %eax - .loc 1 333 0 - addl $8, %edi - .loc 1 334 0 - movl %eax, 8(%esp) - movl (%esi), %eax - movl %eax, 4(%esp) - movl 4(%esi), %eax - .loc 1 333 0 - addl $8, %esi - .loc 1 334 0 - movl %eax, (%esp) - call tea_decode - .loc 1 333 0 - decl %ebx - jne .L23 -.L25: - .loc 1 337 0 -.LBE6: - movl -16(%ebp), %eax - addl $28, %esp - popl %ebx - popl %esi - popl %edi - popl %ebp - ret -.L26: -.LBB7: - leal 7(%edx), %eax - jmp .L17 -.LBE7: -.LFE25: - .size tea_decrypt, .-tea_decrypt - .section .debug_frame,"",@progbits -.Lframe0: - .long .LECIE0-.LSCIE0 -.LSCIE0: - .long 0xffffffff - .byte 0x1 - .string "" - .uleb128 0x1 - .sleb128 -4 - .byte 0x8 - .byte 0xc - .uleb128 0x4 - .uleb128 0x4 - .byte 0x88 - .uleb128 0x1 - .p2align 2 -.LECIE0: -.LSFDE0: - .long .LEFDE0-.LASFDE0 -.LASFDE0: - .long .Lframe0 - .long .LFB19 - .long .LFE19-.LFB19 - .byte 0x4 - .long .LCFI0-.LFB19 - .byte 0xe - .uleb128 0x8 - .byte 0x85 - .uleb128 0x2 - .byte 0x4 - .long .LCFI1-.LCFI0 - .byte 0xd - .uleb128 0x5 - .byte 0x4 - .long .LCFI5-.LCFI1 - .byte 0x83 - .uleb128 0x5 - .byte 0x86 - .uleb128 0x4 - .byte 0x87 - .uleb128 0x3 - .p2align 2 -.LEFDE0: -.LSFDE2: - .long .LEFDE2-.LASFDE2 -.LASFDE2: - .long .Lframe0 - .long .LFB21 - .long .LFE21-.LFB21 - .byte 0x4 - .long .LCFI6-.LFB21 - .byte 0xe - .uleb128 0x8 - .byte 0x85 - .uleb128 0x2 - .byte 0x4 - .long .LCFI7-.LCFI6 - .byte 0xd - .uleb128 0x5 - .byte 0x4 - .long .LCFI11-.LCFI7 - .byte 0x83 - .uleb128 0x5 - .byte 0x86 - .uleb128 0x4 - .byte 0x87 - .uleb128 0x3 - .p2align 2 -.LEFDE2: -.LSFDE4: - .long .LEFDE4-.LASFDE4 -.LASFDE4: - .long .Lframe0 - .long .LFB23 - .long .LFE23-.LFB23 - .byte 0x4 - .long .LCFI12-.LFB23 - .byte 0xe - .uleb128 0x8 - .byte 0x85 - .uleb128 0x2 - .byte 0x4 - .long .LCFI13-.LCFI12 - .byte 0xd - .uleb128 0x5 - .byte 0x4 - .long .LCFI17-.LCFI13 - .byte 0x83 - .uleb128 0x5 - .byte 0x86 - .uleb128 0x4 - .byte 0x87 - .uleb128 0x3 - .p2align 2 -.LEFDE4: -.LSFDE6: - .long .LEFDE6-.LASFDE6 -.LASFDE6: - .long .Lframe0 - .long .LFB25 - .long .LFE25-.LFB25 - .byte 0x4 - .long .LCFI18-.LFB25 - .byte 0xe - .uleb128 0x8 - .byte 0x85 - .uleb128 0x2 - .byte 0x4 - .long .LCFI19-.LCFI18 - .byte 0xd - .uleb128 0x5 - .byte 0x4 - .long .LCFI23-.LCFI19 - .byte 0x83 - .uleb128 0x5 - .byte 0x86 - .uleb128 0x4 - .byte 0x87 - .uleb128 0x3 - .p2align 2 -.LEFDE6: - .text -.Letext0: - .section .debug_info - .long 0x25ff - .value 0x2 - .long .Ldebug_abbrev0 - .byte 0x4 - .uleb128 0x1 - .long .Ldebug_line0 - .long .Letext0 - .long .Ltext0 - .long .LC587 - .long .LC588 - .long .LC589 - .byte 0x1 - .uleb128 0x2 - .long .LC0 - .byte 0x2 - .byte 0x2d - .long 0x30 - .uleb128 0x3 - .long .LC2 - .byte 0x1 - .byte 0x6 - .uleb128 0x2 - .long .LC1 - .byte 0x2 - .byte 0x2e - .long 0x42 - .uleb128 0x3 - .long .LC3 - .byte 0x1 - .byte 0x8 - .uleb128 0x2 - .long .LC4 - .byte 0x2 - .byte 0x2f - .long 0x54 - .uleb128 0x3 - .long .LC5 - .byte 0x2 - .byte 0x5 - .uleb128 0x2 - .long .LC6 - .byte 0x2 - .byte 0x30 - .long 0x66 - .uleb128 0x3 - .long .LC7 - .byte 0x2 - .byte 0x7 - .uleb128 0x2 - .long .LC8 - .byte 0x2 - .byte 0x31 - .long 0x78 - .uleb128 0x4 - .string "int" - .byte 0x4 - .byte 0x5 - .uleb128 0x2 - .long .LC9 - .byte 0x2 - .byte 0x32 - .long 0x8a - .uleb128 0x3 - .long .LC10 - .byte 0x4 - .byte 0x7 - .uleb128 0x2 - .long .LC11 - .byte 0x2 - .byte 0x3a - .long 0x9c - .uleb128 0x3 - .long .LC12 - .byte 0x8 - .byte 0x5 - .uleb128 0x2 - .long .LC13 - .byte 0x2 - .byte 0x3b - .long 0xae - .uleb128 0x3 - .long .LC14 - .byte 0x8 - .byte 0x7 - .uleb128 0x2 - .long .LC15 - .byte 0x2 - .byte 0x46 - .long 0xc0 - .uleb128 0x3 - .long .LC16 - .byte 0x4 - .byte 0x7 - .uleb128 0x2 - .long .LC17 - .byte 0x2 - .byte 0x47 - .long 0x6d - .uleb128 0x2 - .long .LC18 - .byte 0x2 - .byte 0x48 - .long 0xdd - .uleb128 0x3 - .long .LC19 - .byte 0x8 - .byte 0x4 - .uleb128 0x2 - .long .LC20 - .byte 0x2 - .byte 0x49 - .long 0xdd - .uleb128 0x2 - .long .LC21 - .byte 0x2 - .byte 0x4a - .long 0x6d - .uleb128 0x2 - .long .LC22 - .byte 0x2 - .byte 0x4b - .long 0x91 - .uleb128 0x2 - .long .LC23 - .byte 0x2 - .byte 0x4c - .long 0x6d - .uleb128 0x2 - .long .LC24 - .byte 0x2 - .byte 0x4d - .long 0x6d - .uleb128 0x2 - .long .LC25 - .byte 0x2 - .byte 0x4e - .long 0x6d - .uleb128 0x2 - .long .LC26 - .byte 0x2 - .byte 0x4f - .long 0x6d - .uleb128 0x2 - .long .LC27 - .byte 0x2 - .byte 0x50 - .long 0x91 - .uleb128 0x2 - .long .LC28 - .byte 0x2 - .byte 0x51 - .long 0x25 - .uleb128 0x2 - .long .LC29 - .byte 0x2 - .byte 0x52 - .long 0x49 - .uleb128 0x2 - .long .LC30 - .byte 0x2 - .byte 0x53 - .long 0x6d - .uleb128 0x2 - .long .LC31 - .byte 0x2 - .byte 0x54 - .long 0x91 - .uleb128 0x2 - .long .LC32 - .byte 0x2 - .byte 0x55 - .long 0x6d - .uleb128 0x2 - .long .LC33 - .byte 0x2 - .byte 0x56 - .long 0x6d - .uleb128 0x2 - .long .LC34 - .byte 0x2 - .byte 0x57 - .long 0x6d - .uleb128 0x2 - .long .LC35 - .byte 0x2 - .byte 0x58 - .long 0x7f - .uleb128 0x2 - .long .LC36 - .byte 0x2 - .byte 0x59 - .long 0x6d - .uleb128 0x2 - .long .LC37 - .byte 0x2 - .byte 0x5a - .long 0x6d - .uleb128 0x2 - .long .LC38 - .byte 0x2 - .byte 0x5b - .long 0x7f - .uleb128 0x2 - .long .LC39 - .byte 0x2 - .byte 0x5c - .long 0xa3 - .uleb128 0x2 - .long .LC40 - .byte 0x2 - .byte 0x5d - .long 0x7f - .uleb128 0x2 - .long .LC41 - .byte 0x2 - .byte 0x5e - .long 0x7f - .uleb128 0x2 - .long .LC42 - .byte 0x2 - .byte 0x5f - .long 0x7f - .uleb128 0x2 - .long .LC43 - .byte 0x2 - .byte 0x60 - .long 0x7f - .uleb128 0x2 - .long .LC44 - .byte 0x2 - .byte 0x61 - .long 0xa3 - .uleb128 0x2 - .long .LC45 - .byte 0x2 - .byte 0x62 - .long 0x37 - .uleb128 0x2 - .long .LC46 - .byte 0x2 - .byte 0x63 - .long 0x5b - .uleb128 0x2 - .long .LC47 - .byte 0x2 - .byte 0x64 - .long 0x7f - .uleb128 0x2 - .long .LC48 - .byte 0x2 - .byte 0x65 - .long 0xa3 - .uleb128 0x2 - .long .LC49 - .byte 0x2 - .byte 0x66 - .long 0x7f - .uleb128 0x2 - .long .LC50 - .byte 0x2 - .byte 0x67 - .long 0x7f - .uleb128 0x2 - .long .LC51 - .byte 0x2 - .byte 0x68 - .long 0x91 - .uleb128 0x2 - .long .LC52 - .byte 0x2 - .byte 0x6c - .long 0x7f - .uleb128 0x2 - .long .LC53 - .byte 0x2 - .byte 0x6e - .long 0xa3 - .uleb128 0x2 - .long .LC54 - .byte 0x2 - .byte 0x6f - .long 0x7f - .uleb128 0x2 - .long .LC55 - .byte 0x2 - .byte 0x75 - .long 0x270 - .uleb128 0x5 - .byte 0x4 - .long 0x276 - .uleb128 0x3 - .long .LC56 - .byte 0x1 - .byte 0x6 - .uleb128 0x2 - .long .LC57 - .byte 0x2 - .byte 0x7b - .long 0x265 - .uleb128 0x2 - .long .LC58 - .byte 0x3 - .byte 0x26 - .long 0x6d - .uleb128 0x2 - .long .LC59 - .byte 0x3 - .byte 0x27 - .long 0x7f - .uleb128 0x2 - .long .LC60 - .byte 0x3 - .byte 0x28 - .long 0xa3 - .uleb128 0x2 - .long .LC61 - .byte 0x3 - .byte 0x29 - .long 0xa3 - .uleb128 0x2 - .long .LC62 - .byte 0x3 - .byte 0x2a - .long 0x7f - .uleb128 0x2 - .long .LC63 - .byte 0x3 - .byte 0x2b - .long 0x91 - .uleb128 0x2 - .long .LC64 - .byte 0x3 - .byte 0x2c - .long 0x7f - .uleb128 0x2 - .long .LC65 - .byte 0x3 - .byte 0x2d - .long 0x2e0 - .uleb128 0x3 - .long .LC66 - .byte 0x4 - .byte 0x5 - .uleb128 0x2 - .long .LC67 - .byte 0x3 - .byte 0x2e - .long 0x5b - .uleb128 0x2 - .long .LC68 - .byte 0x3 - .byte 0x2f - .long 0x78 - .uleb128 0x2 - .long .LC69 - .byte 0x3 - .byte 0x30 - .long 0x5b - .uleb128 0x2 - .long .LC70 - .byte 0x3 - .byte 0x31 - .long 0x91 - .uleb128 0x2 - .long .LC71 - .byte 0x3 - .byte 0x32 - .long 0x6d - .uleb128 0x2 - .long .LC72 - .byte 0x3 - .byte 0x33 - .long 0x91 - .uleb128 0x2 - .long .LC73 - .byte 0x3 - .byte 0x34 - .long 0x37 - .uleb128 0x2 - .long .LC74 - .byte 0x3 - .byte 0x35 - .long 0x7f - .uleb128 0x2 - .long .LC75 - .byte 0x3 - .byte 0x36 - .long 0x2e0 - .uleb128 0x2 - .long .LC76 - .byte 0x3 - .byte 0x37 - .long 0x6d - .uleb128 0x2 - .long .LC77 - .byte 0x3 - .byte 0x38 - .long 0x7f - .uleb128 0x2 - .long .LC78 - .byte 0x3 - .byte 0x39 - .long 0x7f - .uleb128 0x2 - .long .LC79 - .byte 0x3 - .byte 0x3a - .long 0x8a - .uleb128 0x2 - .long .LC80 - .byte 0x3 - .byte 0x4e - .long 0x78 - .uleb128 0x2 - .long .LC81 - .byte 0x3 - .byte 0x4f - .long 0x376 - .uleb128 0x2 - .long .LC82 - .byte 0x3 - .byte 0x50 - .long 0x376 - .uleb128 0x2 - .long .LC83 - .byte 0x3 - .byte 0x51 - .long 0x376 - .uleb128 0x2 - .long .LC84 - .byte 0x3 - .byte 0x5a - .long 0x355 - .uleb128 0x6 - .long 0x3cc - .byte 0x80 - .byte 0x3 - .byte 0x64 - .uleb128 0x7 - .long .LC85 - .byte 0x3 - .byte 0x62 - .long 0x3cc - .uleb128 0x7 - .long .LC86 - .byte 0x3 - .byte 0x63 - .long 0x91 - .byte 0x0 - .uleb128 0x8 - .long 0x3dc - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0x7f - .byte 0x0 - .uleb128 0x3 - .long .LC10 - .byte 0x4 - .byte 0x7 - .uleb128 0x2 - .long .LC87 - .byte 0x3 - .byte 0x64 - .long 0x3ad - .uleb128 0x2 - .long .LC88 - .byte 0x4 - .byte 0x2f - .long 0x308 - .uleb128 0x2 - .long .LC89 - .byte 0x4 - .byte 0x32 - .long 0x189 - .uleb128 0x2 - .long .LC90 - .byte 0x4 - .byte 0x38 - .long 0x265 - .uleb128 0xa - .long 0x438 - .long .LC93 - .byte 0x8 - .byte 0x4 - .byte 0x46 - .uleb128 0xb - .long .LC91 - .byte 0x4 - .byte 0x47 - .long 0x438 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC92 - .byte 0x4 - .byte 0x48 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x42 - .uleb128 0xa - .long 0x560 - .long .LC94 - .byte 0x58 - .byte 0x4 - .byte 0x68 - .uleb128 0xc - .string "_p" - .byte 0x4 - .byte 0x69 - .long 0x438 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "_r" - .byte 0x4 - .byte 0x6a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xc - .string "_w" - .byte 0x4 - .byte 0x6b - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC95 - .byte 0x4 - .byte 0x6c - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC96 - .byte 0x4 - .byte 0x6d - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0xe - .uleb128 0xc - .string "_bf" - .byte 0x4 - .byte 0x6e - .long 0x40f - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC97 - .byte 0x4 - .byte 0x6f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC98 - .byte 0x4 - .byte 0x72 - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC99 - .byte 0x4 - .byte 0x73 - .long 0x572 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC100 - .byte 0x4 - .byte 0x74 - .long 0x598 - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .uleb128 0xb - .long .LC101 - .byte 0x4 - .byte 0x75 - .long 0x5b8 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .uleb128 0xb - .long .LC102 - .byte 0x4 - .byte 0x76 - .long 0x5e3 - .byte 0x2 - .byte 0x23 - .uleb128 0x2c - .uleb128 0xc - .string "_ub" - .byte 0x4 - .byte 0x79 - .long 0x40f - .byte 0x2 - .byte 0x23 - .uleb128 0x30 - .uleb128 0xb - .long .LC103 - .byte 0x4 - .byte 0x7a - .long 0x5ef - .byte 0x2 - .byte 0x23 - .uleb128 0x38 - .uleb128 0xc - .string "_ur" - .byte 0x4 - .byte 0x7b - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x3c - .uleb128 0xb - .long .LC104 - .byte 0x4 - .byte 0x7e - .long 0x5f5 - .byte 0x2 - .byte 0x23 - .uleb128 0x40 - .uleb128 0xb - .long .LC105 - .byte 0x4 - .byte 0x7f - .long 0x605 - .byte 0x2 - .byte 0x23 - .uleb128 0x43 - .uleb128 0xc - .string "_lb" - .byte 0x4 - .byte 0x82 - .long 0x40f - .byte 0x2 - .byte 0x23 - .uleb128 0x44 - .uleb128 0xb - .long .LC106 - .byte 0x4 - .byte 0x85 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4c - .uleb128 0xb - .long .LC107 - .byte 0x4 - .byte 0x86 - .long 0x3ee - .byte 0x2 - .byte 0x23 - .uleb128 0x50 - .byte 0x0 - .uleb128 0xd - .byte 0x4 - .uleb128 0xe - .long 0x572 - .byte 0x1 - .long 0x78 - .uleb128 0xf - .long 0x560 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x562 - .uleb128 0xe - .long 0x592 - .byte 0x1 - .long 0x78 - .uleb128 0xf - .long 0x560 - .uleb128 0xf - .long 0x592 - .uleb128 0xf - .long 0x78 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x276 - .uleb128 0x5 - .byte 0x4 - .long 0x578 - .uleb128 0xe - .long 0x5b8 - .byte 0x1 - .long 0x3ee - .uleb128 0xf - .long 0x560 - .uleb128 0xf - .long 0x3ee - .uleb128 0xf - .long 0x78 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x59e - .uleb128 0xe - .long 0x5d8 - .byte 0x1 - .long 0x78 - .uleb128 0xf - .long 0x560 - .uleb128 0xf - .long 0x5d8 - .uleb128 0xf - .long 0x78 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x5de - .uleb128 0x10 - .long 0x276 - .uleb128 0x5 - .byte 0x4 - .long 0x5be - .uleb128 0x11 - .long .LC231 - .byte 0x1 - .uleb128 0x5 - .byte 0x4 - .long 0x5e9 - .uleb128 0x8 - .long 0x605 - .long 0x42 - .uleb128 0x9 - .long 0x3dc - .byte 0x2 - .byte 0x0 - .uleb128 0x8 - .long 0x615 - .long 0x42 - .uleb128 0x9 - .long 0x3dc - .byte 0x0 - .byte 0x0 - .uleb128 0x2 - .long .LC108 - .byte 0x4 - .byte 0x87 - .long 0x43e - .uleb128 0x2 - .long .LC109 - .byte 0x5 - .byte 0x2e - .long 0x381 - .uleb128 0x2 - .long .LC110 - .byte 0x5 - .byte 0x3a - .long 0x38c - .uleb128 0x12 - .long 0x65b - .byte 0x8 - .byte 0x5 - .byte 0x42 - .uleb128 0xb - .long .LC111 - .byte 0x5 - .byte 0x40 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "rem" - .byte 0x5 - .byte 0x41 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC112 - .byte 0x5 - .byte 0x42 - .long 0x636 - .uleb128 0x12 - .long 0x68b - .byte 0x8 - .byte 0x5 - .byte 0x47 - .uleb128 0xb - .long .LC111 - .byte 0x5 - .byte 0x45 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "rem" - .byte 0x5 - .byte 0x46 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC113 - .byte 0x5 - .byte 0x47 - .long 0x666 - .uleb128 0x12 - .long 0x6bb - .byte 0x10 - .byte 0x5 - .byte 0x85 - .uleb128 0xb - .long .LC111 - .byte 0x5 - .byte 0x83 - .long 0x9c - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "rem" - .byte 0x5 - .byte 0x84 - .long 0x9c - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x2 - .long .LC114 - .byte 0x5 - .byte 0x85 - .long 0x696 - .uleb128 0x2 - .long .LC115 - .byte 0x6 - .byte 0x34 - .long 0x42 - .uleb128 0x2 - .long .LC116 - .byte 0x6 - .byte 0x35 - .long 0x66 - .uleb128 0x2 - .long .LC117 - .byte 0x6 - .byte 0x36 - .long 0x8a - .uleb128 0x2 - .long .LC118 - .byte 0x6 - .byte 0x37 - .long 0xc0 - .uleb128 0x2 - .long .LC119 - .byte 0x6 - .byte 0x38 - .long 0x66 - .uleb128 0x2 - .long .LC120 - .byte 0x6 - .byte 0x39 - .long 0x8a - .uleb128 0x2 - .long .LC121 - .byte 0x6 - .byte 0x40 - .long 0x25 - .uleb128 0x2 - .long .LC122 - .byte 0x6 - .byte 0x45 - .long 0x49 - .uleb128 0x2 - .long .LC123 - .byte 0x6 - .byte 0x4a - .long 0x6d - .uleb128 0x2 - .long .LC124 - .byte 0x6 - .byte 0x4f - .long 0x91 - .uleb128 0x2 - .long .LC125 - .byte 0x6 - .byte 0x54 - .long 0x37 - .uleb128 0x2 - .long .LC126 - .byte 0x6 - .byte 0x59 - .long 0x5b - .uleb128 0x2 - .long .LC127 - .byte 0x6 - .byte 0x5e - .long 0x7f - .uleb128 0x2 - .long .LC128 - .byte 0x6 - .byte 0x63 - .long 0xa3 - .uleb128 0x2 - .long .LC129 - .byte 0x6 - .byte 0x68 - .long 0x105 - .uleb128 0x2 - .long .LC130 - .byte 0x6 - .byte 0x69 - .long 0x1c0 - .uleb128 0x2 - .long .LC131 - .byte 0x6 - .byte 0x6d - .long 0x37 - .uleb128 0x2 - .long .LC132 - .byte 0x6 - .byte 0x6e - .long 0x5b - .uleb128 0x2 - .long .LC133 - .byte 0x6 - .byte 0x6f - .long 0x7f - .uleb128 0x2 - .long .LC134 - .byte 0x6 - .byte 0x70 - .long 0xa3 - .uleb128 0x2 - .long .LC135 - .byte 0x6 - .byte 0x72 - .long 0xa3 - .uleb128 0x2 - .long .LC136 - .byte 0x6 - .byte 0x73 - .long 0x91 - .uleb128 0x2 - .long .LC137 - .byte 0x6 - .byte 0x74 - .long 0x7c3 - .uleb128 0x5 - .byte 0x4 - .long 0x7ad - .uleb128 0x2 - .long .LC138 - .byte 0x6 - .byte 0x76 - .long 0x592 - .uleb128 0x2 - .long .LC139 - .byte 0x6 - .byte 0x77 - .long 0x5d8 - .uleb128 0x2 - .long .LC140 - .byte 0x6 - .byte 0x78 - .long 0x7ea - .uleb128 0x5 - .byte 0x4 - .long 0x7f0 - .uleb128 0x13 - .long 0x276 - .uleb128 0x2 - .long .LC141 - .byte 0x6 - .byte 0x7b - .long 0xb5 - .uleb128 0x2 - .long .LC142 - .byte 0x6 - .byte 0x80 - .long 0x288 - .uleb128 0x2 - .long .LC143 - .byte 0x6 - .byte 0x84 - .long 0xc7 - .uleb128 0x2 - .long .LC144 - .byte 0x6 - .byte 0x85 - .long 0x91 - .uleb128 0x2 - .long .LC145 - .byte 0x6 - .byte 0x88 - .long 0x3a2 - .uleb128 0x2 - .long .LC146 - .byte 0x6 - .byte 0x8d - .long 0x293 - .uleb128 0x2 - .long .LC147 - .byte 0x6 - .byte 0x91 - .long 0x7f - .uleb128 0x2 - .long .LC148 - .byte 0x6 - .byte 0x94 - .long 0x29e - .uleb128 0x2 - .long .LC149 - .byte 0x6 - .byte 0x95 - .long 0x2a9 - .uleb128 0x2 - .long .LC150 - .byte 0x6 - .byte 0x9a - .long 0x2b4 - .uleb128 0x2 - .long .LC151 - .byte 0x6 - .byte 0x9f - .long 0x7f - .uleb128 0x2 - .long .LC152 - .byte 0x6 - .byte 0xa4 - .long 0x5b - .uleb128 0x2 - .long .LC153 - .byte 0x6 - .byte 0xa9 - .long 0x2bf - .uleb128 0x2 - .long .LC154 - .byte 0x6 - .byte 0xae - .long 0x2ca - .uleb128 0x2 - .long .LC155 - .byte 0x6 - .byte 0xb3 - .long 0x2d5 - .uleb128 0x2 - .long .LC156 - .byte 0x6 - .byte 0xb8 - .long 0x2e7 - .uleb128 0x2 - .long .LC157 - .byte 0x6 - .byte 0xbd - .long 0x2fd - .uleb128 0x2 - .long .LC158 - .byte 0x6 - .byte 0xc2 - .long 0x308 - .uleb128 0x2 - .long .LC159 - .byte 0x6 - .byte 0xc7 - .long 0x313 - .uleb128 0x2 - .long .LC160 - .byte 0x6 - .byte 0xcb - .long 0x173 - .uleb128 0x2 - .long .LC161 - .byte 0x6 - .byte 0xce - .long 0x31e - .uleb128 0x2 - .long .LC162 - .byte 0x6 - .byte 0xd2 - .long 0x17e - .uleb128 0x2 - .long .LC163 - .byte 0x6 - .byte 0xda - .long 0x194 - .uleb128 0x2 - .long .LC164 - .byte 0x6 - .byte 0xdf - .long 0x33f - .uleb128 0x2 - .long .LC165 - .byte 0x6 - .byte 0xe4 - .long 0x19f - .uleb128 0x2 - .long .LC166 - .byte 0x6 - .byte 0xe9 - .long 0x34a - .uleb128 0x2 - .long .LC167 - .byte 0x6 - .byte 0xed - .long 0x223 - .uleb128 0x2 - .long .LC168 - .byte 0x6 - .byte 0xee - .long 0x355 - .uleb128 0x2 - .long .LC169 - .byte 0x6 - .byte 0xf1 - .long 0x360 - .uleb128 0x2 - .long .LC170 - .byte 0x6 - .byte 0xf6 - .long 0x36b - .uleb128 0x2 - .long .LC171 - .byte 0x6 - .byte 0xfa - .long 0x22e - .uleb128 0x2 - .long .LC172 - .byte 0x6 - .byte 0xfb - .long 0x239 - .uleb128 0x2 - .long .LC173 - .byte 0x6 - .byte 0xfc - .long 0x244 - .uleb128 0x2 - .long .LC174 - .byte 0x6 - .byte 0xfd - .long 0x24f - .uleb128 0x2 - .long .LC175 - .byte 0x6 - .byte 0xfe - .long 0x25a - .uleb128 0xa - .long 0x991 - .long .LC176 - .byte 0x10 - .byte 0x7 - .byte 0x37 - .uleb128 0xb - .long .LC177 - .byte 0x7 - .byte 0x38 - .long 0x991 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0x8 - .long 0x9a1 - .long 0x7f - .uleb128 0x9 - .long 0x3dc - .byte 0x3 - .byte 0x0 - .uleb128 0x2 - .long .LC178 - .byte 0x7 - .byte 0x39 - .long 0x976 - .uleb128 0xa - .long 0x9d5 - .long .LC179 - .byte 0x8 - .byte 0x8 - .byte 0x2f - .uleb128 0xb - .long .LC180 - .byte 0x8 - .byte 0x30 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC181 - .byte 0x8 - .byte 0x31 - .long 0x8f2 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0xa - .long 0x9fe - .long .LC182 - .byte 0x8 - .byte 0x9 - .byte 0x32 - .uleb128 0xb - .long .LC180 - .byte 0x9 - .byte 0x33 - .long 0x8fd - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC183 - .byte 0x9 - .byte 0x34 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC184 - .byte 0xa - .byte 0x2e - .long 0xc0 - .uleb128 0x2 - .long .LC185 - .byte 0xa - .byte 0x30 - .long 0x9fe - .uleb128 0x2 - .long .LC186 - .byte 0xa - .byte 0x35 - .long 0x9a1 - .uleb128 0xa - .long 0xa3a - .long .LC187 - .byte 0x80 - .byte 0xa - .byte 0x4b - .uleb128 0xb - .long .LC188 - .byte 0xa - .byte 0x4c - .long 0xa3a - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0x8 - .long 0xa4a - .long 0x9fe - .uleb128 0x9 - .long 0x3dc - .byte 0x1f - .byte 0x0 - .uleb128 0x2 - .long .LC187 - .byte 0xa - .byte 0x4d - .long 0xa1f - .uleb128 0xa - .long 0xaa8 - .long .LC189 - .byte 0x18 - .byte 0xb - .byte 0xc9 - .uleb128 0xb - .long .LC190 - .byte 0xb - .byte 0xca - .long 0x8b0 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC191 - .byte 0xb - .byte 0xcb - .long 0x8b0 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC192 - .byte 0xb - .byte 0xcc - .long 0x8bb - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC193 - .byte 0xb - .byte 0xcd - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC194 - .byte 0xb - .byte 0xce - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0x16 - .byte 0x0 - .uleb128 0x12 - .long 0xae9 - .byte 0x10 - .byte 0xc - .byte 0x39 - .uleb128 0xc - .string "min" - .byte 0xc - .byte 0x35 - .long 0x381 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "max" - .byte 0xc - .byte 0x36 - .long 0x381 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xc - .string "map" - .byte 0xc - .byte 0x37 - .long 0x381 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC195 - .byte 0xc - .byte 0x38 - .long 0xae9 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0xc0 - .uleb128 0x2 - .long .LC196 - .byte 0xc - .byte 0x39 - .long 0xaa8 - .uleb128 0x12 - .long 0xb1f - .byte 0x8 - .byte 0xc - .byte 0x3e - .uleb128 0xb - .long .LC197 - .byte 0xc - .byte 0x3c - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC198 - .byte 0xc - .byte 0x3d - .long 0xb1f - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0xaef - .uleb128 0x2 - .long .LC199 - .byte 0xc - .byte 0x3e - .long 0xafa - .uleb128 0x14 - .long 0xbf7 - .value 0xc54 - .byte 0xc - .byte 0x57 - .uleb128 0xb - .long .LC200 - .byte 0xc - .byte 0x41 - .long 0xbf7 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC201 - .byte 0xc - .byte 0x42 - .long 0xc07 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC202 - .byte 0xc - .byte 0x44 - .long 0xc37 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .uleb128 0xb - .long .LC203 - .byte 0xc - .byte 0x45 - .long 0xc62 - .byte 0x2 - .byte 0x23 - .uleb128 0x2c - .uleb128 0xb - .long .LC204 - .byte 0xc - .byte 0x46 - .long 0x381 - .byte 0x2 - .byte 0x23 - .uleb128 0x30 - .uleb128 0xb - .long .LC205 - .byte 0xc - .byte 0x48 - .long 0xc68 - .byte 0x2 - .byte 0x23 - .uleb128 0x34 - .uleb128 0xb - .long .LC206 - .byte 0xc - .byte 0x49 - .long 0xc78 - .byte 0x3 - .byte 0x23 - .uleb128 0x434 - .uleb128 0xb - .long .LC207 - .byte 0xc - .byte 0x4a - .long 0xc78 - .byte 0x3 - .byte 0x23 - .uleb128 0x834 - .uleb128 0xb - .long .LC208 - .byte 0xc - .byte 0x51 - .long 0xb25 - .byte 0x3 - .byte 0x23 - .uleb128 0xc34 - .uleb128 0xb - .long .LC209 - .byte 0xc - .byte 0x52 - .long 0xb25 - .byte 0x3 - .byte 0x23 - .uleb128 0xc3c - .uleb128 0xb - .long .LC210 - .byte 0xc - .byte 0x53 - .long 0xb25 - .byte 0x3 - .byte 0x23 - .uleb128 0xc44 - .uleb128 0xb - .long .LC211 - .byte 0xc - .byte 0x55 - .long 0x560 - .byte 0x3 - .byte 0x23 - .uleb128 0xc4c - .uleb128 0xb - .long .LC212 - .byte 0xc - .byte 0x56 - .long 0x78 - .byte 0x3 - .byte 0x23 - .uleb128 0xc50 - .byte 0x0 - .uleb128 0x8 - .long 0xc07 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0x7 - .byte 0x0 - .uleb128 0x8 - .long 0xc17 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0x1f - .byte 0x0 - .uleb128 0xe - .long 0xc31 - .byte 0x1 - .long 0x381 - .uleb128 0xf - .long 0x5d8 - .uleb128 0xf - .long 0x189 - .uleb128 0xf - .long 0xc31 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x5d8 - .uleb128 0x5 - .byte 0x4 - .long 0xc17 - .uleb128 0xe - .long 0xc5c - .byte 0x1 - .long 0x78 - .uleb128 0xf - .long 0x381 - .uleb128 0xf - .long 0x592 - .uleb128 0xf - .long 0x189 - .uleb128 0xf - .long 0xc5c - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x592 - .uleb128 0x5 - .byte 0x4 - .long 0xc3d - .uleb128 0x8 - .long 0xc78 - .long 0xc0 - .uleb128 0x9 - .long 0x3dc - .byte 0xff - .byte 0x0 - .uleb128 0x8 - .long 0xc88 - .long 0x381 - .uleb128 0x9 - .long 0x3dc - .byte 0xff - .byte 0x0 - .uleb128 0x2 - .long .LC213 - .byte 0xc - .byte 0x57 - .long 0xb30 - .uleb128 0x15 - .long 0xce7 - .long .LC214 - .value 0x108 - .byte 0xd - .byte 0x36 - .uleb128 0xb - .long .LC215 - .byte 0xd - .byte 0x37 - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC216 - .byte 0xd - .byte 0x38 - .long 0x5b - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC217 - .byte 0xd - .byte 0x39 - .long 0x37 - .byte 0x2 - .byte 0x23 - .uleb128 0x6 - .uleb128 0xb - .long .LC218 - .byte 0xd - .byte 0x3a - .long 0x37 - .byte 0x2 - .byte 0x23 - .uleb128 0x7 - .uleb128 0xb - .long .LC219 - .byte 0xd - .byte 0x3d - .long 0xce7 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x8 - .long 0xcf7 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0xff - .byte 0x0 - .uleb128 0xa - .long 0xd90 - .long .LC220 - .byte 0x28 - .byte 0xe - .byte 0x41 - .uleb128 0xb - .long .LC221 - .byte 0xe - .byte 0x42 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC222 - .byte 0xe - .byte 0x43 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC223 - .byte 0xe - .byte 0x44 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC224 - .byte 0xe - .byte 0x45 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC225 - .byte 0xe - .byte 0x46 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC226 - .byte 0xe - .byte 0x47 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC227 - .byte 0xe - .byte 0x48 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC228 - .byte 0xe - .byte 0x49 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC229 - .byte 0xe - .byte 0x4a - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC230 - .byte 0xe - .byte 0x4b - .long 0xd96 - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .byte 0x0 - .uleb128 0x11 - .long .LC232 - .byte 0x1 - .uleb128 0x5 - .byte 0x4 - .long 0xd90 - .uleb128 0x16 - .string "DIR" - .byte 0xe - .byte 0x4c - .long 0xcf7 - .uleb128 0xa - .long 0xdd0 - .long .LC233 - .byte 0x8 - .byte 0xf - .byte 0x2c - .uleb128 0xb - .long .LC234 - .byte 0xf - .byte 0x2d - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC235 - .byte 0xf - .byte 0x2e - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0xa - .long 0xdf9 - .long .LC236 - .byte 0xc - .byte 0xf - .byte 0x39 - .uleb128 0xc - .string "sec" - .byte 0xf - .byte 0x3a - .long 0x8fd - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC237 - .byte 0xf - .byte 0x3b - .long 0x755 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0xa - .long 0xe22 - .long .LC238 - .byte 0x10 - .byte 0xf - .byte 0xdf - .uleb128 0xb - .long .LC239 - .byte 0xf - .byte 0xe0 - .long 0x9ac - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC240 - .byte 0xf - .byte 0xe1 - .long 0x9ac - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0xa - .long 0xe74 - .long .LC241 - .byte 0x14 - .byte 0xf - .byte 0xe7 - .uleb128 0xc - .string "hz" - .byte 0xf - .byte 0xe8 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC242 - .byte 0xf - .byte 0xe9 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC243 - .byte 0xf - .byte 0xea - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC244 - .byte 0xf - .byte 0xeb - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC245 - .byte 0xf - .byte 0xec - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0x17 - .long 0xf1a - .string "tm" - .byte 0x2c - .byte 0x10 - .byte 0x5f - .uleb128 0xb - .long .LC246 - .byte 0x10 - .byte 0x60 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC247 - .byte 0x10 - .byte 0x61 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC248 - .byte 0x10 - .byte 0x62 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC249 - .byte 0x10 - .byte 0x63 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC250 - .byte 0x10 - .byte 0x64 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC251 - .byte 0x10 - .byte 0x65 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC252 - .byte 0x10 - .byte 0x66 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC253 - .byte 0x10 - .byte 0x67 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC254 - .byte 0x10 - .byte 0x68 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC255 - .byte 0x10 - .byte 0x69 - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .uleb128 0xb - .long .LC256 - .byte 0x10 - .byte 0x6a - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .byte 0x0 - .uleb128 0xa - .long 0xff9 - .long .LC257 - .byte 0x40 - .byte 0x11 - .byte 0x6c - .uleb128 0xb - .long .LC258 - .byte 0x11 - .byte 0x6d - .long 0x5b - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC259 - .byte 0x11 - .byte 0x6e - .long 0x884 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC260 - .byte 0x11 - .byte 0x6f - .long 0x89a - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC261 - .byte 0x11 - .byte 0x70 - .long 0x8a5 - .byte 0x2 - .byte 0x23 - .uleb128 0xa - .uleb128 0xb - .long .LC262 - .byte 0x11 - .byte 0x71 - .long 0x5b - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC263 - .byte 0x11 - .byte 0x72 - .long 0x5b - .byte 0x2 - .byte 0x23 - .uleb128 0xe - .uleb128 0xb - .long .LC264 - .byte 0x11 - .byte 0x73 - .long 0x5b - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC265 - .byte 0x11 - .byte 0x74 - .long 0x6d - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC266 - .byte 0x11 - .byte 0x75 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC267 - .byte 0x11 - .byte 0x76 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC268 - .byte 0x11 - .byte 0x77 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .uleb128 0xb - .long .LC269 - .byte 0x11 - .byte 0x78 - .long 0x6d - .byte 0x2 - .byte 0x23 - .uleb128 0x30 - .uleb128 0xb - .long .LC270 - .byte 0x11 - .byte 0x79 - .long 0x6d - .byte 0x2 - .byte 0x23 - .uleb128 0x34 - .uleb128 0xb - .long .LC271 - .byte 0x11 - .byte 0x7a - .long 0x82c - .byte 0x2 - .byte 0x23 - .uleb128 0x38 - .uleb128 0xb - .long .LC272 - .byte 0x11 - .byte 0x7b - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x3c - .byte 0x0 - .uleb128 0xa - .long 0x10f4 - .long .LC273 - .byte 0x60 - .byte 0x11 - .byte 0x7f - .uleb128 0xb - .long .LC258 - .byte 0x11 - .byte 0x80 - .long 0x355 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC259 - .byte 0x11 - .byte 0x81 - .long 0x884 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC260 - .byte 0x11 - .byte 0x82 - .long 0x89a - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC261 - .byte 0x11 - .byte 0x83 - .long 0x8a5 - .byte 0x2 - .byte 0x23 - .uleb128 0xa - .uleb128 0xb - .long .LC262 - .byte 0x11 - .byte 0x84 - .long 0x929 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC263 - .byte 0x11 - .byte 0x85 - .long 0x858 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC264 - .byte 0x11 - .byte 0x86 - .long 0x355 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC266 - .byte 0x11 - .byte 0x88 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC267 - .byte 0x11 - .byte 0x89 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC268 - .byte 0x11 - .byte 0x8a - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .uleb128 0xb - .long .LC265 - .byte 0x11 - .byte 0x93 - .long 0x8b0 - .byte 0x2 - .byte 0x23 - .uleb128 0x30 - .uleb128 0xb - .long .LC270 - .byte 0x11 - .byte 0x94 - .long 0x91 - .byte 0x2 - .byte 0x23 - .uleb128 0x38 - .uleb128 0xb - .long .LC269 - .byte 0x11 - .byte 0x95 - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x40 - .uleb128 0xb - .long .LC271 - .byte 0x11 - .byte 0x96 - .long 0x82c - .byte 0x2 - .byte 0x23 - .uleb128 0x44 - .uleb128 0xb - .long .LC272 - .byte 0x11 - .byte 0x97 - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x48 - .uleb128 0xb - .long .LC274 - .byte 0x11 - .byte 0x98 - .long 0x6d - .byte 0x2 - .byte 0x23 - .uleb128 0x4c - .uleb128 0xb - .long .LC275 - .byte 0x11 - .byte 0x9a - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x50 - .byte 0x0 - .uleb128 0xa - .long 0x11e1 - .long .LC276 - .byte 0x60 - .byte 0x11 - .byte 0xae - .uleb128 0xb - .long .LC258 - .byte 0x11 - .byte 0xaf - .long 0x355 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC259 - .byte 0x11 - .byte 0xb0 - .long 0x884 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC260 - .byte 0x11 - .byte 0xb1 - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC261 - .byte 0x11 - .byte 0xb2 - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC262 - .byte 0x11 - .byte 0xb3 - .long 0x929 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC263 - .byte 0x11 - .byte 0xb4 - .long 0x858 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC264 - .byte 0x11 - .byte 0xb5 - .long 0x355 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC266 - .byte 0x11 - .byte 0xb6 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC267 - .byte 0x11 - .byte 0xb7 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .uleb128 0xb - .long .LC268 - .byte 0x11 - .byte 0xb8 - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x2c - .uleb128 0xb - .long .LC265 - .byte 0x11 - .byte 0xb9 - .long 0x8b0 - .byte 0x2 - .byte 0x23 - .uleb128 0x34 - .uleb128 0xb - .long .LC270 - .byte 0x11 - .byte 0xba - .long 0x91 - .byte 0x2 - .byte 0x23 - .uleb128 0x3c - .uleb128 0xb - .long .LC269 - .byte 0x11 - .byte 0xbb - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x44 - .uleb128 0xb - .long .LC271 - .byte 0x11 - .byte 0xbc - .long 0x82c - .byte 0x2 - .byte 0x23 - .uleb128 0x48 - .uleb128 0xb - .long .LC272 - .byte 0x11 - .byte 0xbd - .long 0x7f - .byte 0x2 - .byte 0x23 - .uleb128 0x4c - .uleb128 0xb - .long .LC275 - .byte 0x11 - .byte 0xbe - .long 0x9d5 - .byte 0x2 - .byte 0x23 - .uleb128 0x50 - .byte 0x0 - .uleb128 0xa - .long 0x120a - .long .LC277 - .byte 0x8 - .byte 0x12 - .byte 0x2f - .uleb128 0xb - .long .LC278 - .byte 0x12 - .byte 0x30 - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC279 - .byte 0x12 - .byte 0x31 - .long 0x3f9 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC280 - .byte 0x13 - .byte 0x48 - .long 0x329 - .uleb128 0x2 - .long .LC281 - .byte 0x13 - .byte 0x4d - .long 0x334 - .uleb128 0xa - .long 0x1249 - .long .LC282 - .byte 0x8 - .byte 0x13 - .byte 0x90 - .uleb128 0xb - .long .LC283 - .byte 0x13 - .byte 0x91 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC284 - .byte 0x13 - .byte 0x92 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x15 - .long 0x1273 - .long .LC285 - .value 0x100 - .byte 0x13 - .byte 0x96 - .uleb128 0xb - .long .LC286 - .byte 0x13 - .byte 0x97 - .long 0x1273 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC287 - .byte 0x13 - .byte 0x98 - .long 0x1283 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0x8 - .long 0x1283 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0xf - .byte 0x0 - .uleb128 0x8 - .long 0x1293 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0xef - .byte 0x0 - .uleb128 0xa - .long 0x12ca - .long .LC288 - .byte 0x10 - .byte 0x13 - .byte 0xd8 - .uleb128 0xb - .long .LC289 - .byte 0x13 - .byte 0xd9 - .long 0x42 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC290 - .byte 0x13 - .byte 0xda - .long 0x120a - .byte 0x2 - .byte 0x23 - .uleb128 0x1 - .uleb128 0xb - .long .LC291 - .byte 0x13 - .byte 0xdb - .long 0x12ca - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .byte 0x0 - .uleb128 0x8 - .long 0x12da - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0xd - .byte 0x0 - .uleb128 0xa - .long 0x1303 - .long .LC292 - .byte 0x4 - .byte 0x13 - .byte 0xe4 - .uleb128 0xb - .long .LC293 - .byte 0x13 - .byte 0xe5 - .long 0x66 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC294 - .byte 0x13 - .byte 0xe6 - .long 0x66 - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .byte 0x0 - .uleb128 0xa - .long 0x1356 - .long .LC295 - .byte 0x80 - .byte 0x13 - .byte 0xf4 - .uleb128 0xb - .long .LC296 - .byte 0x13 - .byte 0xf5 - .long 0x42 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC297 - .byte 0x13 - .byte 0xf6 - .long 0x120a - .byte 0x2 - .byte 0x23 - .uleb128 0x1 - .uleb128 0xb - .long .LC298 - .byte 0x13 - .byte 0xf7 - .long 0x1356 - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .uleb128 0xb - .long .LC299 - .byte 0x13 - .byte 0xf8 - .long 0x91 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC300 - .byte 0x13 - .byte 0xf9 - .long 0x1366 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0x8 - .long 0x1366 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0x5 - .byte 0x0 - .uleb128 0x8 - .long 0x1376 - .long 0x276 - .uleb128 0x9 - .long 0x3dc - .byte 0x6f - .byte 0x0 - .uleb128 0x18 - .long 0x13ed - .long .LC301 - .byte 0x1c - .byte 0x13 - .value 0x177 - .uleb128 0x19 - .long .LC302 - .byte 0x13 - .value 0x178 - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC303 - .byte 0x13 - .value 0x179 - .long 0x1215 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC304 - .byte 0x13 - .value 0x17a - .long 0x13ed - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0x19 - .long .LC305 - .byte 0x13 - .value 0x17b - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0x19 - .long .LC306 - .byte 0x13 - .value 0x17c - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0x19 - .long .LC307 - .byte 0x13 - .value 0x17d - .long 0x1215 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0x19 - .long .LC308 - .byte 0x13 - .value 0x17e - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x11e1 - .uleb128 0x18 - .long 0x142e - .long .LC309 - .byte 0xc - .byte 0x13 - .value 0x194 - .uleb128 0x19 - .long .LC310 - .byte 0x13 - .value 0x195 - .long 0x1215 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC311 - .byte 0x13 - .value 0x196 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC312 - .byte 0x13 - .value 0x197 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x18 - .long 0x1496 - .long .LC313 - .byte 0x54 - .byte 0x13 - .value 0x1aa - .uleb128 0x19 - .long .LC314 - .byte 0x13 - .value 0x1ab - .long 0x8bb - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC315 - .byte 0x13 - .value 0x1ac - .long 0x929 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC316 - .byte 0x13 - .value 0x1ad - .long 0x929 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0x19 - .long .LC317 - .byte 0x13 - .value 0x1ae - .long 0x858 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0x19 - .long .LC318 - .byte 0x13 - .value 0x1af - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0x19 - .long .LC319 - .byte 0x13 - .value 0x1b0 - .long 0x1496 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .byte 0x0 - .uleb128 0x8 - .long 0x14a6 - .long 0x858 - .uleb128 0x9 - .long 0x3dc - .byte 0xf - .byte 0x0 - .uleb128 0x18 - .long 0x14d2 - .long .LC320 - .byte 0x10 - .byte 0x13 - .value 0x1d7 - .uleb128 0x19 - .long .LC290 - .byte 0x13 - .value 0x1d8 - .long 0x66 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC291 - .byte 0x13 - .value 0x1d9 - .long 0x12ca - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .byte 0x0 - .uleb128 0x18 - .long 0x153a - .long .LC321 - .byte 0x18 - .byte 0x13 - .value 0x1df - .uleb128 0x19 - .long .LC302 - .byte 0x13 - .value 0x1e0 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC303 - .byte 0x13 - .value 0x1e1 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC304 - .byte 0x13 - .value 0x1e2 - .long 0x13ed - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0x19 - .long .LC305 - .byte 0x13 - .value 0x1e3 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0x19 - .long .LC322 - .byte 0x13 - .value 0x1e4 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0x19 - .long .LC323 - .byte 0x13 - .value 0x1e5 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .byte 0x0 - .uleb128 0x18 - .long 0x1584 - .long .LC324 - .byte 0x10 - .byte 0x13 - .value 0x1f4 - .uleb128 0x19 - .long .LC325 - .byte 0x13 - .value 0x1f5 - .long 0x13ed - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC326 - .byte 0x13 - .value 0x1f6 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC327 - .byte 0x13 - .value 0x1f7 - .long 0x13ed - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0x19 - .long .LC328 - .byte 0x13 - .value 0x1f8 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .byte 0x0 - .uleb128 0xa - .long 0x159f - .long .LC329 - .byte 0x4 - .byte 0x14 - .byte 0x55 - .uleb128 0xb - .long .LC330 - .byte 0x14 - .byte 0x56 - .long 0x863 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0xa - .long 0x15f2 - .long .LC331 - .byte 0x10 - .byte 0x14 - .byte 0x5c - .uleb128 0xb - .long .LC332 - .byte 0x14 - .byte 0x5d - .long 0x734 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC333 - .byte 0x14 - .byte 0x5e - .long 0x120a - .byte 0x2 - .byte 0x23 - .uleb128 0x1 - .uleb128 0xb - .long .LC334 - .byte 0x14 - .byte 0x5f - .long 0x86e - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .uleb128 0xb - .long .LC335 - .byte 0x14 - .byte 0x60 - .long 0x1584 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC336 - .byte 0x14 - .byte 0x61 - .long 0xbf7 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x18 - .long 0x161e - .long .LC337 - .byte 0x8 - .byte 0x14 - .value 0x1a1 - .uleb128 0x19 - .long .LC338 - .byte 0x14 - .value 0x1a2 - .long 0x1584 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC339 - .byte 0x14 - .value 0x1a3 - .long 0x1584 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x6 - .long 0x1648 - .byte 0x10 - .byte 0x15 - .byte 0x7e - .uleb128 0x7 - .long .LC340 - .byte 0x15 - .byte 0x7b - .long 0x1648 - .uleb128 0x7 - .long .LC341 - .byte 0x15 - .byte 0x7c - .long 0x1658 - .uleb128 0x7 - .long .LC342 - .byte 0x15 - .byte 0x7d - .long 0x1668 - .byte 0x0 - .uleb128 0x8 - .long 0x1658 - .long 0x734 - .uleb128 0x9 - .long 0x3dc - .byte 0xf - .byte 0x0 - .uleb128 0x8 - .long 0x1668 - .long 0x73f - .uleb128 0x9 - .long 0x3dc - .byte 0x7 - .byte 0x0 - .uleb128 0x8 - .long 0x1678 - .long 0x74a - .uleb128 0x9 - .long 0x3dc - .byte 0x3 - .byte 0x0 - .uleb128 0xa - .long 0x1693 - .long .LC343 - .byte 0x10 - .byte 0x15 - .byte 0x79 - .uleb128 0xb - .long .LC344 - .byte 0x15 - .byte 0x7e - .long 0x161e - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0xa - .long 0x16f4 - .long .LC345 - .byte 0x1c - .byte 0x15 - .byte 0x95 - .uleb128 0xb - .long .LC346 - .byte 0x15 - .byte 0x96 - .long 0x734 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC347 - .byte 0x15 - .byte 0x97 - .long 0x120a - .byte 0x2 - .byte 0x23 - .uleb128 0x1 - .uleb128 0xb - .long .LC348 - .byte 0x15 - .byte 0x98 - .long 0x86e - .byte 0x2 - .byte 0x23 - .uleb128 0x2 - .uleb128 0xb - .long .LC349 - .byte 0x15 - .byte 0x99 - .long 0x74a - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC350 - .byte 0x15 - .byte 0x9a - .long 0x1678 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC351 - .byte 0x15 - .byte 0x9b - .long 0x74a - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .byte 0x0 - .uleb128 0x18 - .long 0x1720 - .long .LC352 - .byte 0x20 - .byte 0x15 - .value 0x190 - .uleb128 0x19 - .long .LC353 - .byte 0x15 - .value 0x191 - .long 0x1726 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC354 - .byte 0x15 - .value 0x192 - .long 0x1693 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x11 - .long .LC355 - .byte 0x1 - .uleb128 0x5 - .byte 0x4 - .long 0x1720 - .uleb128 0x18 - .long 0x1758 - .long .LC356 - .byte 0x14 - .byte 0x15 - .value 0x205 - .uleb128 0x19 - .long .LC357 - .byte 0x15 - .value 0x206 - .long 0x1678 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC358 - .byte 0x15 - .value 0x207 - .long 0x8a - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0x18 - .long 0x1784 - .long .LC359 - .byte 0x14 - .byte 0x15 - .value 0x20d - .uleb128 0x19 - .long .LC360 - .byte 0x15 - .value 0x20e - .long 0x1678 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC361 - .byte 0x15 - .value 0x20f - .long 0x8a - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0x18 - .long 0x17b0 - .long .LC362 - .byte 0x20 - .byte 0x15 - .value 0x215 - .uleb128 0x19 - .long .LC363 - .byte 0x15 - .value 0x216 - .long 0x1693 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC364 - .byte 0x15 - .value 0x217 - .long 0x74a - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .byte 0x0 - .uleb128 0xa - .long 0x1803 - .long .LC365 - .byte 0x14 - .byte 0x16 - .byte 0x5c - .uleb128 0xb - .long .LC366 - .byte 0x16 - .byte 0x5d - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC367 - .byte 0x16 - .byte 0x5e - .long 0xc5c - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC368 - .byte 0x16 - .byte 0x5f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC369 - .byte 0x16 - .byte 0x60 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC370 - .byte 0x16 - .byte 0x61 - .long 0xc5c - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0xa - .long 0x1848 - .long .LC371 - .byte 0x10 - .byte 0x16 - .byte 0x69 - .uleb128 0xb - .long .LC372 - .byte 0x16 - .byte 0x6a - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC373 - .byte 0x16 - .byte 0x6b - .long 0xc5c - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC374 - .byte 0x16 - .byte 0x6c - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC375 - .byte 0x16 - .byte 0x6d - .long 0xc0 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .byte 0x0 - .uleb128 0xa - .long 0x188d - .long .LC376 - .byte 0x10 - .byte 0x16 - .byte 0x70 - .uleb128 0xb - .long .LC377 - .byte 0x16 - .byte 0x71 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC378 - .byte 0x16 - .byte 0x72 - .long 0xc5c - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC379 - .byte 0x16 - .byte 0x73 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC380 - .byte 0x16 - .byte 0x74 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .byte 0x0 - .uleb128 0xa - .long 0x18c4 - .long .LC381 - .byte 0xc - .byte 0x16 - .byte 0x77 - .uleb128 0xb - .long .LC382 - .byte 0x16 - .byte 0x78 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC383 - .byte 0x16 - .byte 0x79 - .long 0xc5c - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC384 - .byte 0x16 - .byte 0x7a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0xa - .long 0x1941 - .long .LC385 - .byte 0x20 - .byte 0x16 - .byte 0x7d - .uleb128 0xb - .long .LC386 - .byte 0x16 - .byte 0x7e - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC387 - .byte 0x16 - .byte 0x7f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC388 - .byte 0x16 - .byte 0x80 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC389 - .byte 0x16 - .byte 0x81 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC390 - .byte 0x16 - .byte 0x82 - .long 0x3f9 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC391 - .byte 0x16 - .byte 0x83 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC392 - .byte 0x16 - .byte 0x84 - .long 0x1941 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC393 - .byte 0x16 - .byte 0x85 - .long 0x1947 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x1293 - .uleb128 0x5 - .byte 0x4 - .long 0x18c4 - .uleb128 0x2 - .long .LC394 - .byte 0x17 - .byte 0x2f - .long 0x78 - .uleb128 0x15 - .long 0x1ae1 - .long .LC395 - .value 0x290 - .byte 0x17 - .byte 0x64 - .uleb128 0xb - .long .LC396 - .byte 0x17 - .byte 0x65 - .long 0x976 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC397 - .byte 0x17 - .byte 0x66 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC398 - .byte 0x17 - .byte 0x67 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC399 - .byte 0x17 - .byte 0x68 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC400 - .byte 0x17 - .byte 0x69 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC401 - .byte 0x17 - .byte 0x6a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC402 - .byte 0x17 - .byte 0x6b - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .uleb128 0xb - .long .LC403 - .byte 0x17 - .byte 0x6c - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x28 - .uleb128 0xb - .long .LC404 - .byte 0x17 - .byte 0x6d - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x2c - .uleb128 0xb - .long .LC405 - .byte 0x17 - .byte 0x6e - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x30 - .uleb128 0xb - .long .LC406 - .byte 0x17 - .byte 0x6f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x34 - .uleb128 0xb - .long .LC407 - .byte 0x17 - .byte 0x70 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x38 - .uleb128 0xb - .long .LC408 - .byte 0x17 - .byte 0x71 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x3c - .uleb128 0xb - .long .LC409 - .byte 0x17 - .byte 0x72 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x40 - .uleb128 0xb - .long .LC410 - .byte 0x17 - .byte 0x73 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x44 - .uleb128 0xb - .long .LC411 - .byte 0x17 - .byte 0x74 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x48 - .uleb128 0xb - .long .LC412 - .byte 0x17 - .byte 0x75 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4c - .uleb128 0xb - .long .LC413 - .byte 0x17 - .byte 0x76 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x50 - .uleb128 0xb - .long .LC414 - .byte 0x17 - .byte 0x77 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x54 - .uleb128 0xb - .long .LC415 - .byte 0x17 - .byte 0x78 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x58 - .uleb128 0xb - .long .LC416 - .byte 0x17 - .byte 0x79 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x5c - .uleb128 0xb - .long .LC417 - .byte 0x17 - .byte 0x7a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x60 - .uleb128 0xb - .long .LC418 - .byte 0x17 - .byte 0x7f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x64 - .uleb128 0xb - .long .LC419 - .byte 0x17 - .byte 0x80 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x68 - .uleb128 0xb - .long .LC420 - .byte 0x17 - .byte 0x81 - .long 0x1ae1 - .byte 0x2 - .byte 0x23 - .uleb128 0x6c - .uleb128 0xb - .long .LC421 - .byte 0x17 - .byte 0x82 - .long 0x1af1 - .byte 0x2 - .byte 0x23 - .uleb128 0x70 - .uleb128 0xb - .long .LC422 - .byte 0x17 - .byte 0x83 - .long 0x1b01 - .byte 0x3 - .byte 0x23 - .uleb128 0x270 - .byte 0x0 - .uleb128 0x8 - .long 0x1af1 - .long 0x78 - .uleb128 0x9 - .long 0x3dc - .byte 0x0 - .byte 0x0 - .uleb128 0x8 - .long 0x1b01 - .long 0x78 - .uleb128 0x9 - .long 0x3dc - .byte 0x7f - .byte 0x0 - .uleb128 0x8 - .long 0x1b11 - .long 0x78 - .uleb128 0x9 - .long 0x3dc - .byte 0x7 - .byte 0x0 - .uleb128 0x2 - .long .LC423 - .byte 0x18 - .byte 0x90 - .long 0x1b1c - .uleb128 0x1a - .long 0x1b28 - .byte 0x1 - .uleb128 0xf - .long 0x78 - .byte 0x0 - .uleb128 0x1b - .long 0x1b4b - .long .LC590 - .byte 0x4 - .byte 0x18 - .byte 0x9a - .uleb128 0x7 - .long .LC424 - .byte 0x18 - .byte 0x9c - .long 0x78 - .uleb128 0x7 - .long .LC425 - .byte 0x18 - .byte 0x9d - .long 0x560 - .byte 0x0 - .uleb128 0x6 - .long 0x1b6a - .byte 0x4 - .byte 0x18 - .byte 0xa7 - .uleb128 0x7 - .long .LC426 - .byte 0x18 - .byte 0xa5 - .long 0x78 - .uleb128 0x7 - .long .LC427 - .byte 0x18 - .byte 0xa6 - .long 0x78 - .byte 0x0 - .uleb128 0xa - .long 0x1ba1 - .long .LC428 - .byte 0xc - .byte 0x18 - .byte 0xa2 - .uleb128 0xb - .long .LC429 - .byte 0x18 - .byte 0xa3 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC430 - .byte 0x18 - .byte 0xa7 - .long 0x1b4b - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC431 - .byte 0x18 - .byte 0xa8 - .long 0x1b28 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0xa - .long 0x1c3a - .long .LC432 - .byte 0x40 - .byte 0x18 - .byte 0xbd - .uleb128 0xb - .long .LC433 - .byte 0x18 - .byte 0xbe - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC434 - .byte 0x18 - .byte 0xbf - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC435 - .byte 0x18 - .byte 0xc6 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC436 - .byte 0x18 - .byte 0xc7 - .long 0x313 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC437 - .byte 0x18 - .byte 0xc8 - .long 0x360 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC438 - .byte 0x18 - .byte 0xc9 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC439 - .byte 0x18 - .byte 0xca - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC440 - .byte 0x18 - .byte 0xcb - .long 0x1b28 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC441 - .byte 0x18 - .byte 0xcc - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .uleb128 0xb - .long .LC442 - .byte 0x18 - .byte 0xcd - .long 0x1c3a - .byte 0x2 - .byte 0x23 - .uleb128 0x24 - .byte 0x0 - .uleb128 0x8 - .long 0x1c4a - .long 0x78 - .uleb128 0x9 - .long 0x3dc - .byte 0x6 - .byte 0x0 - .uleb128 0x2 - .long .LC443 - .byte 0x18 - .byte 0xce - .long 0x1ba1 - .uleb128 0x6 - .long 0x1c74 - .byte 0x4 - .byte 0x18 - .byte 0xdb - .uleb128 0x7 - .long .LC444 - .byte 0x18 - .byte 0xd9 - .long 0x1c74 - .uleb128 0x7 - .long .LC445 - .byte 0x18 - .byte 0xda - .long 0x1c96 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x1b1c - .uleb128 0x1a - .long 0x1c90 - .byte 0x1 - .uleb128 0xf - .long 0x78 - .uleb128 0xf - .long 0x1c90 - .uleb128 0xf - .long 0x560 - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x1ba1 - .uleb128 0x5 - .byte 0x4 - .long 0x1c7a - .uleb128 0xa - .long 0x1cd3 - .long .LC446 - .byte 0x18 - .byte 0x18 - .byte 0xd7 - .uleb128 0xb - .long .LC447 - .byte 0x18 - .byte 0xdb - .long 0x1c55 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC448 - .byte 0x18 - .byte 0xdc - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC449 - .byte 0x18 - .byte 0xdd - .long 0xa14 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x1c - .long .LC450 - .byte 0x18 - .value 0x10b - .long 0x1cdf - .uleb128 0x5 - .byte 0x4 - .long 0x1b11 - .uleb128 0x1c - .long .LC451 - .byte 0x18 - .value 0x10c - .long 0x1c7a - .uleb128 0x18 - .long 0x1d2c - .long .LC452 - .byte 0xc - .byte 0x18 - .value 0x114 - .uleb128 0x19 - .long .LC453 - .byte 0x18 - .value 0x118 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC454 - .byte 0x18 - .value 0x119 - .long 0x189 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC455 - .byte 0x18 - .value 0x11a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x1c - .long .LC456 - .byte 0x18 - .value 0x11b - .long 0x1cf1 - .uleb128 0x18 - .long 0x1d73 - .long .LC457 - .byte 0xc - .byte 0x18 - .value 0x127 - .uleb128 0x19 - .long .LC458 - .byte 0x18 - .value 0x128 - .long 0x1cdf - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC459 - .byte 0x18 - .value 0x129 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0x19 - .long .LC460 - .byte 0x18 - .value 0x12a - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x18 - .long 0x1d9f - .long .LC461 - .byte 0x8 - .byte 0x18 - .value 0x142 - .uleb128 0x19 - .long .LC453 - .byte 0x18 - .value 0x144 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0x19 - .long .LC462 - .byte 0x18 - .value 0x145 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0xa - .long 0x1dba - .long .LC463 - .byte 0x4 - .byte 0x19 - .byte 0x37 - .uleb128 0xb - .long .LC464 - .byte 0x19 - .byte 0x38 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0x2 - .long .LC465 - .byte 0x1a - .byte 0x6e - .long 0x1dc5 - .uleb128 0x5 - .byte 0x4 - .long 0x1dcb - .uleb128 0x11 - .long .LC466 - .byte 0x1 - .uleb128 0x2 - .long .LC467 - .byte 0x1a - .byte 0x6f - .long 0x1ddc - .uleb128 0x5 - .byte 0x4 - .long 0x1de2 - .uleb128 0x11 - .long .LC468 - .byte 0x1 - .uleb128 0x2 - .long .LC469 - .byte 0x1a - .byte 0x70 - .long 0x1df3 - .uleb128 0x5 - .byte 0x4 - .long 0x1df9 - .uleb128 0x11 - .long .LC470 - .byte 0x1 - .uleb128 0x2 - .long .LC471 - .byte 0x1a - .byte 0x71 - .long 0x1e0a - .uleb128 0x5 - .byte 0x4 - .long 0x1e10 - .uleb128 0x11 - .long .LC472 - .byte 0x1 - .uleb128 0x2 - .long .LC473 - .byte 0x1a - .byte 0x72 - .long 0x1e21 - .uleb128 0x5 - .byte 0x4 - .long 0x1e27 - .uleb128 0x11 - .long .LC474 - .byte 0x1 - .uleb128 0x2 - .long .LC475 - .byte 0x1a - .byte 0x73 - .long 0x1e38 - .uleb128 0x5 - .byte 0x4 - .long 0x1e3e - .uleb128 0x11 - .long .LC476 - .byte 0x1 - .uleb128 0x2 - .long .LC477 - .byte 0x1a - .byte 0x74 - .long 0x78 - .uleb128 0x2 - .long .LC478 - .byte 0x1a - .byte 0x75 - .long 0x1e5a - .uleb128 0xa - .long 0x1e83 - .long .LC479 - .byte 0x8 - .byte 0x1a - .byte 0x60 - .uleb128 0xb - .long .LC480 - .byte 0x1a - .byte 0x89 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC481 - .byte 0x1a - .byte 0x8a - .long 0x1de8 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC482 - .byte 0x1a - .byte 0x76 - .long 0x1e8e - .uleb128 0x5 - .byte 0x4 - .long 0x1e94 - .uleb128 0x11 - .long .LC483 - .byte 0x1 - .uleb128 0x2 - .long .LC484 - .byte 0x1a - .byte 0x77 - .long 0x1ea5 - .uleb128 0x5 - .byte 0x4 - .long 0x1eab - .uleb128 0x11 - .long .LC485 - .byte 0x1 - .uleb128 0x2 - .long .LC486 - .byte 0x1a - .byte 0x78 - .long 0x1ebc - .uleb128 0x5 - .byte 0x4 - .long 0x1ec2 - .uleb128 0x11 - .long .LC487 - .byte 0x1 - .uleb128 0x2 - .long .LC488 - .byte 0x1a - .byte 0x79 - .long 0x1ed3 - .uleb128 0x5 - .byte 0x4 - .long 0x1ed9 - .uleb128 0x11 - .long .LC489 - .byte 0x1 - .uleb128 0x2 - .long .LC490 - .byte 0x1a - .byte 0x7a - .long 0x1eea - .uleb128 0x5 - .byte 0x4 - .long 0x1ef0 - .uleb128 0x11 - .long .LC491 - .byte 0x1 - .uleb128 0x2 - .long .LC492 - .byte 0x1a - .byte 0x82 - .long 0x560 - .uleb128 0x2 - .long .LC493 - .byte 0x1a - .byte 0x83 - .long 0x1f0c - .uleb128 0x5 - .byte 0x4 - .long 0x1f12 - .uleb128 0xe - .long 0x1f22 - .byte 0x1 - .long 0x560 - .uleb128 0xf - .long 0x560 - .byte 0x0 - .uleb128 0x1d - .long 0x1f47 - .long .LC561 - .byte 0x4 - .byte 0x1a - .byte 0xb8 - .uleb128 0x1e - .long .LC494 - .byte 0x1 - .uleb128 0x1e - .long .LC495 - .byte 0x2 - .uleb128 0x1e - .long .LC496 - .byte 0x3 - .uleb128 0x1e - .long .LC497 - .byte 0x4 - .byte 0x0 - .uleb128 0x2 - .long .LC498 - .byte 0x1b - .byte 0x2a - .long 0x1f52 - .uleb128 0x5 - .byte 0x4 - .long 0x1f58 - .uleb128 0x1f - .string "sem" - .byte 0x1 - .uleb128 0xa - .long 0x1fbf - .long .LC499 - .byte 0x14 - .byte 0x1c - .byte 0x35 - .uleb128 0xb - .long .LC500 - .byte 0x1c - .byte 0x36 - .long 0x76b - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC501 - .byte 0x1c - .byte 0x37 - .long 0x54 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC502 - .byte 0x1c - .byte 0x38 - .long 0x6d1 - .byte 0x2 - .byte 0x23 - .uleb128 0x6 - .uleb128 0xb - .long .LC503 - .byte 0x1c - .byte 0x39 - .long 0x6dc - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC504 - .byte 0x1c - .byte 0x3a - .long 0x760 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC505 - .byte 0x1c - .byte 0x3b - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .byte 0x0 - .uleb128 0xa - .long 0x1fda - .long .LC506 - .byte 0x4 - .byte 0x1c - .byte 0x7a - .uleb128 0xb - .long .LC507 - .byte 0x1c - .byte 0x7a - .long 0x1fe0 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .byte 0x0 - .uleb128 0x11 - .long .LC508 - .byte 0x1 - .uleb128 0x5 - .byte 0x4 - .long 0x1fda - .uleb128 0x2 - .long .LC509 - .byte 0x1d - .byte 0x4 - .long 0xc0 - .uleb128 0x2 - .long .LC510 - .byte 0x1d - .byte 0x5 - .long 0x42 - .uleb128 0x2 - .long .LC511 - .byte 0x1d - .byte 0x6 - .long 0x30 - .uleb128 0x2 - .long .LC512 - .byte 0x1d - .byte 0x7 - .long 0x66 - .uleb128 0x2 - .long .LC513 - .byte 0x1d - .byte 0xc - .long 0x42 - .uleb128 0x2 - .long .LC514 - .byte 0x1d - .byte 0xf - .long 0xc0 - .uleb128 0x2 - .long .LC515 - .byte 0x1d - .byte 0x10 - .long 0x78 - .uleb128 0x2 - .long .LC516 - .byte 0x1d - .byte 0x11 - .long 0x42 - .uleb128 0x2 - .long .LC517 - .byte 0x1d - .byte 0x12 - .long 0x66 - .uleb128 0x2 - .long .LC518 - .byte 0x1d - .byte 0x13 - .long 0x2e0 - .uleb128 0x2 - .long .LC519 - .byte 0x1d - .byte 0x14 - .long 0xc0 - .uleb128 0x16 - .string "INT" - .byte 0x1d - .byte 0x15 - .long 0x78 - .uleb128 0x2 - .long .LC520 - .byte 0x1d - .byte 0x16 - .long 0x8a - .uleb128 0x2 - .long .LC521 - .byte 0x1d - .byte 0x18 - .long 0x78 - .uleb128 0x2 - .long .LC522 - .byte 0x1e - .byte 0x4 - .long 0x208b - .uleb128 0xa - .long 0x20ec - .long .LC523 - .byte 0x24 - .byte 0x1e - .byte 0x4 - .uleb128 0xb - .long .LC524 - .byte 0x1e - .byte 0xb - .long 0x20fd - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC525 - .byte 0x1e - .byte 0xd - .long 0x9ac - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC526 - .byte 0x1e - .byte 0xe - .long 0x9ac - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC527 - .byte 0x1e - .byte 0xf - .long 0x9ac - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC528 - .byte 0x1e - .byte 0x11 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .uleb128 0xb - .long .LC529 - .byte 0x1e - .byte 0x12 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x20 - .byte 0x0 - .uleb128 0x2 - .long .LC530 - .byte 0x1e - .byte 0x5 - .long 0x20f7 - .uleb128 0x5 - .byte 0x4 - .long 0x208b - .uleb128 0x2 - .long .LC531 - .byte 0x1e - .byte 0x7 - .long 0x2108 - .uleb128 0x5 - .byte 0x4 - .long 0x210e - .uleb128 0x1a - .long 0x211f - .byte 0x1 - .uleb128 0xf - .long 0x20ec - .uleb128 0xf - .long 0x78 - .byte 0x0 - .uleb128 0x2 - .long .LC532 - .byte 0x1f - .byte 0x8 - .long 0x212a - .uleb128 0xa - .long 0x21a6 - .long .LC533 - .byte 0x20 - .byte 0x1f - .byte 0x8 - .uleb128 0xc - .string "kq" - .byte 0x1f - .byte 0x1a - .long 0x21fa - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC534 - .byte 0x1f - .byte 0x1c - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC535 - .byte 0x1f - .byte 0x1e - .long 0x21e9 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC536 - .byte 0x1f - .byte 0x1f - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC537 - .byte 0x1f - .byte 0x21 - .long 0x21e9 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC538 - .byte 0x1f - .byte 0x22 - .long 0x2205 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC539 - .byte 0x1f - .byte 0x24 - .long 0x220b - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC540 - .byte 0x1f - .byte 0x25 - .long 0x2205 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .byte 0x0 - .uleb128 0x2 - .long .LC541 - .byte 0x1f - .byte 0x9 - .long 0x21b1 - .uleb128 0x5 - .byte 0x4 - .long 0x212a - .uleb128 0x20 - .long 0x21de - .byte 0x4 - .byte 0x1f - .byte 0xc - .uleb128 0x1e - .long .LC542 - .byte 0x0 - .uleb128 0x1e - .long .LC543 - .byte 0x1 - .uleb128 0x1e - .long .LC544 - .byte 0x2 - .uleb128 0x1e - .long .LC545 - .byte 0x4 - .uleb128 0x1e - .long .LC546 - .byte 0x8 - .byte 0x0 - .uleb128 0x2 - .long .LC547 - .byte 0x1f - .byte 0x14 - .long 0x1f5e - .uleb128 0x2 - .long .LC548 - .byte 0x1f - .byte 0x15 - .long 0x21f4 - .uleb128 0x5 - .byte 0x4 - .long 0x1f5e - .uleb128 0x2 - .long .LC549 - .byte 0x1f - .byte 0x16 - .long 0x78 - .uleb128 0x5 - .byte 0x4 - .long 0x78 - .uleb128 0x5 - .byte 0x4 - .long 0x560 - .uleb128 0x2 - .long .LC550 - .byte 0x20 - .byte 0xe - .long 0x221c - .uleb128 0xa - .long 0x2299 - .long .LC551 - .byte 0x20 - .byte 0x20 - .byte 0xe - .uleb128 0xb - .long .LC552 - .byte 0x20 - .byte 0x13 - .long 0x22a4 - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC553 - .byte 0x20 - .byte 0x15 - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC554 - .byte 0x20 - .byte 0x16 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .uleb128 0xb - .long .LC555 - .byte 0x20 - .byte 0x18 - .long 0x5d8 - .byte 0x2 - .byte 0x23 - .uleb128 0xc - .uleb128 0xb - .long .LC556 - .byte 0x20 - .byte 0x19 - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x10 - .uleb128 0xb - .long .LC557 - .byte 0x20 - .byte 0x1b - .long 0x592 - .byte 0x2 - .byte 0x23 - .uleb128 0x14 - .uleb128 0xb - .long .LC558 - .byte 0x20 - .byte 0x1c - .long 0x78 - .byte 0x2 - .byte 0x23 - .uleb128 0x18 - .uleb128 0xb - .long .LC559 - .byte 0x20 - .byte 0x1e - .long 0x2e0 - .byte 0x2 - .byte 0x23 - .uleb128 0x1c - .byte 0x0 - .uleb128 0x2 - .long .LC560 - .byte 0x20 - .byte 0xf - .long 0x22a4 - .uleb128 0x5 - .byte 0x4 - .long 0x221c - .uleb128 0x1d - .long 0x22c9 - .long .LC562 - .byte 0x4 - .byte 0x21 - .byte 0x12 - .uleb128 0x1e - .long .LC563 - .byte 0x0 - .uleb128 0x1e - .long .LC564 - .byte 0x1 - .uleb128 0x1e - .long .LC565 - .byte 0x2 - .byte 0x0 - .uleb128 0x2 - .long .LC566 - .byte 0x22 - .byte 0xb - .long 0x22d4 - .uleb128 0xa - .long 0x230b - .long .LC567 - .byte 0xc - .byte 0x22 - .byte 0xb - .uleb128 0xb - .long .LC552 - .byte 0x22 - .byte 0x13 - .long 0x230b - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xc - .string "key" - .byte 0x22 - .byte 0x14 - .long 0x236f - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC504 - .byte 0x22 - .byte 0x15 - .long 0x560 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x2 - .long .LC568 - .byte 0x22 - .byte 0xc - .long 0x2316 - .uleb128 0x5 - .byte 0x4 - .long 0x22d4 - .uleb128 0x2 - .long .LC569 - .byte 0x22 - .byte 0xd - .long 0x2327 - .uleb128 0xa - .long 0x235e - .long .LC570 - .byte 0xc - .byte 0x22 - .byte 0xd - .uleb128 0xb - .long .LC571 - .byte 0x22 - .byte 0x1a - .long 0x237a - .byte 0x2 - .byte 0x23 - .uleb128 0x0 - .uleb128 0xb - .long .LC572 - .byte 0x22 - .byte 0x1b - .long 0xc0 - .byte 0x2 - .byte 0x23 - .uleb128 0x4 - .uleb128 0xb - .long .LC573 - .byte 0x22 - .byte 0x1c - .long 0x2395 - .byte 0x2 - .byte 0x23 - .uleb128 0x8 - .byte 0x0 - .uleb128 0x2 - .long .LC574 - .byte 0x22 - .byte 0xe - .long 0x2369 - .uleb128 0x5 - .byte 0x4 - .long 0x2327 - .uleb128 0x2 - .long .LC575 - .byte 0x22 - .byte 0xf - .long 0xc0 - .uleb128 0x5 - .byte 0x4 - .long 0x230b - .uleb128 0xe - .long 0x2395 - .byte 0x1 - .long 0xc0 - .uleb128 0xf - .long 0x235e - .uleb128 0xf - .long 0x236f - .byte 0x0 - .uleb128 0x5 - .byte 0x4 - .long 0x2380 - .uleb128 0x21 - .long 0x23f1 - .byte 0x1 - .long .LC577 - .byte 0x1 - .byte 0x21 - .byte 0x1 - .byte 0x2 - .uleb128 0x22 - .string "sz" - .byte 0x1 - .byte 0x20 - .long 0x23f1 - .uleb128 0x22 - .string "sy" - .byte 0x1 - .byte 0x20 - .long 0x23f1 - .uleb128 0x22 - .string "key" - .byte 0x1 - .byte 0x20 - .long 0x23f6 - .uleb128 0x23 - .long .LC576 - .byte 0x1 - .byte 0x20 - .long 0x23fc - .uleb128 0x24 - .string "y" - .byte 0x1 - .byte 0x22 - .long 0x201d - .uleb128 0x24 - .string "z" - .byte 0x1 - .byte 0x22 - .long 0x201d - .uleb128 0x24 - .string "sum" - .byte 0x1 - .byte 0x22 - .long 0x201d - .byte 0x0 - .uleb128 0x10 - .long 0x201d - .uleb128 0x5 - .byte 0x4 - .long 0x23f1 - .uleb128 0x5 - .byte 0x4 - .long 0x201d - .uleb128 0x25 - .long 0x2447 - .long 0x239b - .long .LFB19 - .long .LFE19 - .byte 0x1 - .byte 0x55 - .uleb128 0x26 - .long 0x23a9 - .byte 0x1 - .byte 0x51 - .uleb128 0x26 - .long 0x23b3 - .byte 0x2 - .byte 0x91 - .sleb128 12 - .uleb128 0x26 - .long 0x23bd - .byte 0x1 - .byte 0x56 - .uleb128 0x26 - .long 0x23c8 - .byte 0x2 - .byte 0x91 - .sleb128 20 - .uleb128 0x27 - .long 0x23d3 - .byte 0x1 - .byte 0x52 - .uleb128 0x27 - .long 0x23dc - .byte 0x1 - .byte 0x51 - .uleb128 0x28 - .long 0x23e5 - .byte 0x0 - .uleb128 0x21 - .long 0x249d - .byte 0x1 - .long .LC578 - .byte 0x1 - .byte 0xa9 - .byte 0x1 - .byte 0x2 - .uleb128 0x22 - .string "sz" - .byte 0x1 - .byte 0xa8 - .long 0x23f1 - .uleb128 0x22 - .string "sy" - .byte 0x1 - .byte 0xa8 - .long 0x23f1 - .uleb128 0x22 - .string "key" - .byte 0x1 - .byte 0xa8 - .long 0x23f6 - .uleb128 0x23 - .long .LC576 - .byte 0x1 - .byte 0xa8 - .long 0x23fc - .uleb128 0x24 - .string "y" - .byte 0x1 - .byte 0xaa - .long 0x201d - .uleb128 0x24 - .string "z" - .byte 0x1 - .byte 0xaa - .long 0x201d - .uleb128 0x24 - .string "sum" - .byte 0x1 - .byte 0xaa - .long 0x201d - .byte 0x0 - .uleb128 0x25 - .long 0x24e2 - .long 0x2447 - .long .LFB21 - .long .LFE21 - .byte 0x1 - .byte 0x55 - .uleb128 0x26 - .long 0x2455 - .byte 0x2 - .byte 0x91 - .sleb128 8 - .uleb128 0x26 - .long 0x245f - .byte 0x1 - .byte 0x52 - .uleb128 0x26 - .long 0x2469 - .byte 0x1 - .byte 0x57 - .uleb128 0x26 - .long 0x2474 - .byte 0x2 - .byte 0x91 - .sleb128 20 - .uleb128 0x27 - .long 0x247f - .byte 0x1 - .byte 0x52 - .uleb128 0x27 - .long 0x2488 - .byte 0x1 - .byte 0x51 - .uleb128 0x28 - .long 0x2491 - .byte 0x0 - .uleb128 0x29 - .long 0x2553 - .byte 0x1 - .long .LC579 - .byte 0x1 - .value 0x131 - .byte 0x1 - .long 0x78 - .long .LFB23 - .long .LFE23 - .byte 0x1 - .byte 0x55 - .uleb128 0x2a - .long .LC576 - .byte 0x1 - .value 0x130 - .long 0x23fc - .byte 0x1 - .byte 0x57 - .uleb128 0x2b - .string "src" - .byte 0x1 - .value 0x130 - .long 0x23f6 - .byte 0x1 - .byte 0x56 - .uleb128 0x2b - .string "key" - .byte 0x1 - .value 0x130 - .long 0x23f6 - .byte 0x2 - .byte 0x91 - .sleb128 16 - .uleb128 0x2a - .long .LC572 - .byte 0x1 - .value 0x130 - .long 0x78 - .byte 0x1 - .byte 0x52 - .uleb128 0x2c - .string "i" - .byte 0x1 - .value 0x132 - .long 0x78 - .byte 0x1 - .byte 0x53 - .uleb128 0x2d - .long .LC580 - .byte 0x1 - .value 0x133 - .long 0x78 - .byte 0x2 - .byte 0x91 - .sleb128 -16 - .byte 0x0 - .uleb128 0x29 - .long 0x25c4 - .byte 0x1 - .long .LC581 - .byte 0x1 - .value 0x144 - .byte 0x1 - .long 0x78 - .long .LFB25 - .long .LFE25 - .byte 0x1 - .byte 0x55 - .uleb128 0x2a - .long .LC576 - .byte 0x1 - .value 0x143 - .long 0x23fc - .byte 0x1 - .byte 0x57 - .uleb128 0x2b - .string "src" - .byte 0x1 - .value 0x143 - .long 0x23f6 - .byte 0x1 - .byte 0x56 - .uleb128 0x2b - .string "key" - .byte 0x1 - .value 0x143 - .long 0x23f6 - .byte 0x2 - .byte 0x91 - .sleb128 16 - .uleb128 0x2a - .long .LC572 - .byte 0x1 - .value 0x143 - .long 0x78 - .byte 0x1 - .byte 0x52 - .uleb128 0x2c - .string "i" - .byte 0x1 - .value 0x145 - .long 0x78 - .byte 0x1 - .byte 0x53 - .uleb128 0x2d - .long .LC580 - .byte 0x1 - .value 0x146 - .long 0x78 - .byte 0x2 - .byte 0x91 - .sleb128 -16 - .byte 0x0 - .uleb128 0x2e - .long .LC582 - .byte 0xc - .byte 0x5b - .long 0xc88 - .byte 0x1 - .byte 0x1 - .uleb128 0x2e - .long .LC583 - .byte 0xc - .byte 0x5c - .long 0x25de - .byte 0x1 - .byte 0x1 - .uleb128 0x5 - .byte 0x4 - .long 0xc88 - .uleb128 0x11 - .long .LC584 - .byte 0x1 - .uleb128 0x11 - .long .LC585 - .byte 0x1 - .uleb128 0x2f - .long .LC586 - .byte 0x1 - .byte 0x1e - .long 0xbf7 - .byte 0x1 - .byte 0x5 - .byte 0x3 - .long tea_nilbuf - .byte 0x0 - .section .debug_abbrev - .uleb128 0x1 - .uleb128 0x11 - .byte 0x1 - .uleb128 0x10 - .uleb128 0x6 - .uleb128 0x12 - .uleb128 0x1 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1b - .uleb128 0xe - .uleb128 0x25 - .uleb128 0xe - .uleb128 0x13 - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x2 - .uleb128 0x16 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x24 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x4 - .uleb128 0x24 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x5 - .uleb128 0xf - .byte 0x0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x6 - .uleb128 0x17 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x7 - .uleb128 0xd - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x8 - .uleb128 0x1 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x9 - .uleb128 0x21 - .byte 0x0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0xa - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0xb - .uleb128 0xd - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0xc - .uleb128 0xd - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0xd - .uleb128 0xf - .byte 0x0 - .uleb128 0xb - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0xe - .uleb128 0x15 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x27 - .uleb128 0xc - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0xf - .uleb128 0x5 - .byte 0x0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x10 - .uleb128 0x26 - .byte 0x0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x11 - .uleb128 0x13 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3c - .uleb128 0xc - .byte 0x0 - .byte 0x0 - .uleb128 0x12 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x13 - .uleb128 0x35 - .byte 0x0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x14 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0xb - .uleb128 0x5 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x15 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0x5 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x16 - .uleb128 0x16 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x17 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x18 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .byte 0x0 - .byte 0x0 - .uleb128 0x19 - .uleb128 0xd - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x1a - .uleb128 0x15 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x27 - .uleb128 0xc - .byte 0x0 - .byte 0x0 - .uleb128 0x1b - .uleb128 0x17 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x1c - .uleb128 0x16 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x1d - .uleb128 0x4 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x1e - .uleb128 0x28 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1c - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x1f - .uleb128 0x13 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3c - .uleb128 0xc - .byte 0x0 - .byte 0x0 - .uleb128 0x20 - .uleb128 0x4 - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x21 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0xc - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x27 - .uleb128 0xc - .uleb128 0x20 - .uleb128 0xb - .byte 0x0 - .byte 0x0 - .uleb128 0x22 - .uleb128 0x5 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x23 - .uleb128 0x5 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x24 - .uleb128 0x34 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x25 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x31 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x1 - .uleb128 0x40 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x26 - .uleb128 0x5 - .byte 0x0 - .uleb128 0x31 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x27 - .uleb128 0x34 - .byte 0x0 - .uleb128 0x31 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x28 - .uleb128 0x34 - .byte 0x0 - .uleb128 0x31 - .uleb128 0x13 - .byte 0x0 - .byte 0x0 - .uleb128 0x29 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x1 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0xc - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x27 - .uleb128 0xc - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x1 - .uleb128 0x40 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x2a - .uleb128 0x5 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x2b - .uleb128 0x5 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x2c - .uleb128 0x34 - .byte 0x0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x2d - .uleb128 0x34 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .uleb128 0x2e - .uleb128 0x34 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0xc - .uleb128 0x3c - .uleb128 0xc - .byte 0x0 - .byte 0x0 - .uleb128 0x2f - .uleb128 0x34 - .byte 0x0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0xc - .uleb128 0x2 - .uleb128 0xa - .byte 0x0 - .byte 0x0 - .byte 0x0 - .section .debug_pubnames,"",@progbits - .long 0x59 - .value 0x2 - .long .Ldebug_info0 - .long 0x2603 - .long 0x2402 - .string "tea_code" - .long 0x249d - .string "tea_decode" - .long 0x24e2 - .string "tea_encrypt" - .long 0x2553 - .string "tea_decrypt" - .long 0x25f0 - .string "tea_nilbuf" - .long 0x0 - .section .debug_aranges,"",@progbits - .long 0x1c - .value 0x2 - .long .Ldebug_info0 - .byte 0x4 - .byte 0x0 - .value 0x0 - .value 0x0 - .long .Ltext0 - .long .Letext0-.Ltext0 - .long 0x0 - .long 0x0 - .section .debug_str,"MS",@progbits,1 -.LC409: - .string "sc_eax" -.LC316: - .string "cmcred_euid" -.LC37: - .string "__time_t" -.LC393: - .string "ai_next" -.LC565: - .string "NUM_PF" -.LC82: - .string "__wchar_t" -.LC241: - .string "clockinfo" -.LC199: - .string "_RuneRange" -.LC92: - .string "_size" -.LC124: - .string "int64_t" -.LC197: - .string "nranges" -.LC301: - .string "msghdr" -.LC581: - .string "tea_decrypt" -.LC290: - .string "sa_family" -.LC186: - .string "sigset_t" -.LC477: - .string "pthread_key_t" -.LC216: - .string "d_reclen" -.LC392: - .string "ai_addr" -.LC313: - .string "cmsgcred" -.LC195: - .string "types" -.LC310: - .string "cmsg_len" -.LC478: - .string "pthread_once_t" -.LC510: - .string "UBYTE" -.LC399: - .string "sc_fs" -.LC203: - .string "sputrune" -.LC573: - .string "hashfunc" -.LC346: - .string "sin6_len" -.LC556: - .string "length" -.LC557: - .string "mem_data" -.LC276: - .string "nstat" -.LC385: - .string "addrinfo" -.LC127: - .string "uint32_t" -.LC245: - .string "profhz" -.LC340: - .string "__u6_addr8" -.LC183: - .string "tv_nsec" -.LC404: - .string "sc_ebp" -.LC383: - .string "p_aliases" -.LC277: - .string "iovec" -.LC513: - .string "bool" -.LC7: - .string "short unsigned int" -.LC217: - .string "d_type" -.LC42: - .string "__uint_fast16_t" -.LC97: - .string "_lbfsize" -.LC357: - .string "ipv6mr_multiaddr" -.LC253: - .string "tm_yday" -.LC3: - .string "unsigned char" -.LC439: - .string "si_addr" -.LC129: - .string "intptr_t" -.LC343: - .string "in6_addr" -.LC79: - .string "__useconds_t" -.LC226: - .string "dd_seek" -.LC156: - .string "mode_t" -.LC286: - .string "af_name" -.LC192: - .string "l_pid" -.LC170: - .string "useconds_t" -.LC374: - .string "n_addrtype" -.LC362: - .string "ip6_mtuinfo" -.LC158: - .string "off_t" -.LC497: - .string "MUTEX_TYPE_MAX" -.LC516: - .string "BYTE" -.LC179: - .string "timeval" -.LC570: - .string "yhash" -.LC349: - .string "sin6_flowinfo" -.LC93: - .string "__sbuf" -.LC398: - .string "sc_gs" -.LC411: - .string "sc_err" -.LC272: - .string "st_gen" -.LC101: - .string "_seek" -.LC306: - .string "msg_control" -.LC387: - .string "ai_family" -.LC89: - .string "size_t" -.LC419: - .string "sc_ownedfp" -.LC422: - .string "sc_spare2" -.LC467: - .string "pthread_attr_t" -.LC348: - .string "sin6_port" -.LC338: - .string "imr_multiaddr" -.LC539: - .string "fd_data" -.LC83: - .string "__wint_t" -.LC293: - .string "sp_family" -.LC391: - .string "ai_canonname" -.LC153: - .string "id_t" -.LC39: - .string "__uintmax_t" -.LC303: - .string "msg_namelen" -.LC442: - .string "__spare__" -.LC408: - .string "sc_ecx" -.LC420: - .string "sc_spare1" -.LC70: - .string "__off_t" -.LC214: - .string "dirent" -.LC533: - .string "fdwatch" -.LC515: - .string "BOOL" -.LC36: - .string "__ssize_t" -.LC41: - .string "__uint_fast8_t" -.LC347: - .string "sin6_family" -.LC287: - .string "af_arg" -.LC445: - .string "__sa_sigaction" -.LC464: - .string "sched_priority" -.LC559: - .string "flag" -.LC403: - .string "sc_esi" -.LC181: - .string "tv_usec" -.LC339: - .string "imr_interface" -.LC61: - .string "__fsfilcnt_t" -.LC483: - .string "pthread_rwlock" -.LC164: - .string "suseconds_t" -.LC415: - .string "sc_esp" -.LC457: - .string "sigvec" -.LC149: - .string "fsfilcnt_t" -.LC358: - .string "ipv6mr_interface" -.LC525: - .string "before_sleep" -.LC509: - .string "QWORD" -.LC402: - .string "sc_edi" -.LC322: - .string "msg_accrights" -.LC443: - .string "siginfo_t" -.LC256: - .string "tm_zone" -.LC397: - .string "sc_onstack" -.LC294: - .string "sp_protocol" -.LC94: - .string "__sFILE" -.LC85: - .string "__mbstate8" -.LC494: - .string "PTHREAD_MUTEX_ERRORCHECK" -.LC407: - .string "sc_edx" -.LC590: - .string "sigval" -.LC255: - .string "tm_gmtoff" -.LC331: - .string "sockaddr_in" -.LC296: - .string "ss_len" -.LC117: - .string "u_int" -.LC207: - .string "mapupper" -.LC511: - .string "sbyte" -.LC121: - .string "int8_t" -.LC184: - .string "__fd_mask" -.LC544: - .string "FDW_WRITE" -.LC562: - .string "ENUM_PROFILER" -.LC501: - .string "filter" -.LC551: - .string "buffer" -.LC521: - .string "socket_t" -.LC375: - .string "n_net" -.LC230: - .string "dd_td" -.LC77: - .string "__udev_t" -.LC446: - .string "sigaction" -.LC324: - .string "sf_hdtr" -.LC314: - .string "cmcred_pid" -.LC500: - .string "ident" -.LC332: - .string "sin_len" -.LC454: - .string "ss_size" -.LC297: - .string "ss_family" -.LC356: - .string "ipv6_mreq" -.LC204: - .string "invalid_rune" -.LC514: - .string "DWORD" -.LC576: - .string "dest" -.LC136: - .string "quad_t" -.LC589: - .string "GNU C 3.3.3 [FreeBSD] 20031106" -.LC492: - .string "pthread_addr_t" -.LC112: - .string "div_t" -.LC359: - .string "in6_pktinfo" -.LC498: - .string "sem_t" -.LC469: - .string "pthread_mutex_t" -.LC189: - .string "flock" -.LC549: - .string "KQUEUE" -.LC528: - .string "passes_per_sec" -.LC429: - .string "sigev_notify" -.LC248: - .string "tm_hour" -.LC476: - .string "pthread_cond_attr" -.LC133: - .string "u_int32_t" -.LC532: - .string "FDWATCH" -.LC212: - .string "variable_len" -.LC410: - .string "sc_trapno" -.LC395: - .string "sigcontext" -.LC530: - .string "LPHEART" -.LC289: - .string "sa_len" -.LC99: - .string "_close" -.LC541: - .string "LPFDWATCH" -.LC271: - .string "st_flags" -.LC376: - .string "servent" -.LC154: - .string "ino_t" -.LC425: - .string "sigval_ptr" -.LC561: - .string "pthread_mutextype" -.LC88: - .string "fpos_t" -.LC32: - .string "__ptrdiff_t" -.LC13: - .string "__uint64_t" -.LC175: - .string "vm_size_t" -.LC159: - .string "pid_t" -.LC20: - .string "__float_t" -.LC191: - .string "l_len" -.LC221: - .string "dd_fd" -.LC91: - .string "_base" -.LC522: - .string "HEART" -.LC378: - .string "s_aliases" -.LC63: - .string "__id_t" -.LC453: - .string "ss_sp" -.LC187: - .string "fd_set" -.LC55: - .string "__va_list" -.LC98: - .string "_cookie" -.LC517: - .string "WORD" -.LC566: - .string "HASHNODE" -.LC302: - .string "msg_name" -.LC351: - .string "sin6_scope_id" -.LC86: - .string "_mbstateL" -.LC114: - .string "lldiv_t" -.LC18: - .string "__double_t" -.LC574: - .string "LPHASH" -.LC345: - .string "sockaddr_in6" -.LC578: - .string "tea_decode" -.LC17: - .string "__critical_t" -.LC100: - .string "_read" -.LC265: - .string "st_size" -.LC71: - .string "__pid_t" -.LC229: - .string "dd_lock" -.LC520: - .string "UINT" -.LC106: - .string "_blksize" -.LC496: - .string "PTHREAD_MUTEX_NORMAL" -.LC321: - .string "omsghdr" -.LC264: - .string "st_rdev" -.LC16: - .string "long unsigned int" -.LC506: - .string "klist" -.LC103: - .string "_extra" -.LC155: - .string "key_t" -.LC137: - .string "qaddr_t" -.LC564: - .string "PF_HEARTBEAT" -.LC236: - .string "bintime" -.LC242: - .string "tick" -.LC205: - .string "runetype" -.LC263: - .string "st_gid" -.LC568: - .string "LPHASHNODE" -.LC463: - .string "sched_param" -.LC232: - .string "_telldir" -.LC538: - .string "fd_event_idx" -.LC219: - .string "d_name" -.LC76: - .string "__timer_t" -.LC211: - .string "variable" -.LC295: - .string "sockaddr_storage" -.LC9: - .string "__uint32_t" -.LC587: - .string "tea.c" -.LC141: - .string "clock_t" -.LC50: - .string "__vm_offset_t" -.LC575: - .string "KEYT" -.LC396: - .string "sc_mask" -.LC486: - .string "pthread_barrier_t" -.LC270: - .string "st_blocks" -.LC473: - .string "pthread_cond_t" -.LC547: - .string "KEVENT" -.LC65: - .string "__key_t" -.LC312: - .string "cmsg_type" -.LC145: - .string "dev_t" -.LC466: - .string "pthread" -.LC111: - .string "quot" -.LC584: - .string "rusage" -.LC231: - .string "__sFILEX" -.LC344: - .string "__u6_addr" -.LC171: - .string "vm_offset_t" -.LC430: - .string "__sigev_u" -.LC459: - .string "sv_mask" -.LC28: - .string "__int_least8_t" -.LC485: - .string "pthread_rwlockattr" -.LC104: - .string "_ubuf" -.LC284: - .string "l_linger" -.LC209: - .string "maplower_ext" -.LC105: - .string "_nbuf" -.LC51: - .string "__vm_ooffset_t" -.LC146: - .string "fflags_t" -.LC555: - .string "read_point" -.LC261: - .string "st_nlink" -.LC5: - .string "short int" -.LC128: - .string "uint64_t" -.LC298: - .string "__ss_pad1" -.LC300: - .string "__ss_pad2" -.LC84: - .string "__dev_t" -.LC169: - .string "uid_t" -.LC455: - .string "ss_flags" -.LC479: - .string "pthread_once" -.LC251: - .string "tm_year" -.LC31: - .string "__int_least64_t" -.LC12: - .string "long long int" -.LC246: - .string "tm_sec" -.LC505: - .string "udata" -.LC354: - .string "ro_dst" -.LC54: - .string "__vm_size_t" -.LC484: - .string "pthread_rwlockattr_t" -.LC193: - .string "l_type" -.LC147: - .string "fixpt_t" -.LC360: - .string "ipi6_addr" -.LC53: - .string "__vm_pindex_t" -.LC334: - .string "sin_port" -.LC433: - .string "si_signo" -.LC188: - .string "__fds_bits" -.LC503: - .string "fflags" -.LC524: - .string "func" -.LC329: - .string "in_addr" -.LC144: - .string "daddr_t" -.LC14: - .string "long long unsigned int" -.LC558: - .string "mem_size" -.LC282: - .string "linger" -.LC78: - .string "__uid_t" -.LC462: - .string "ss_onstack" -.LC588: - .string "/home/work/libthecore/src" -.LC220: - .string "_dirdesc" -.LC108: - .string "FILE" -.LC327: - .string "trailers" -.LC6: - .string "__uint16_t" -.LC157: - .string "nlink_t" -.LC269: - .string "st_blksize" -.LC527: - .string "last_time" -.LC162: - .string "segsz_t" -.LC173: - .string "vm_paddr_t" -.LC508: - .string "knote" -.LC172: - .string "vm_ooffset_t" -.LC488: - .string "pthread_barrierattr_t" -.LC328: - .string "trl_cnt" -.LC472: - .string "pthread_mutex_attr" -.LC292: - .string "sockproto" -.LC56: - .string "char" -.LC249: - .string "tm_mday" -.LC113: - .string "ldiv_t" -.LC434: - .string "si_errno" -.LC218: - .string "d_namlen" -.LC560: - .string "LPBUFFER" -.LC412: - .string "sc_eip" -.LC309: - .string "cmsghdr" -.LC502: - .string "flags" -.LC225: - .string "dd_len" -.LC352: - .string "route_in6" -.LC258: - .string "st_dev" -.LC198: - .string "ranges" -.LC499: - .string "kevent" -.LC512: - .string "sh_int" -.LC278: - .string "iov_base" -.LC563: - .string "PF_IDLE" -.LC123: - .string "int32_t" -.LC208: - .string "runetype_ext" -.LC554: - .string "write_point_pos" -.LC273: - .string "stat" -.LC582: - .string "_DefaultRuneLocale" -.LC580: - .string "resize" -.LC545: - .string "FDW_WRITE_ONESHOT" -.LC237: - .string "frac" -.LC30: - .string "__int_least32_t" -.LC288: - .string "sockaddr" -.LC394: - .string "sig_atomic_t" -.LC438: - .string "si_status" -.LC495: - .string "PTHREAD_MUTEX_RECURSIVE" -.LC474: - .string "pthread_cond" -.LC196: - .string "_RuneEntry" -.LC125: - .string "uint8_t" -.LC274: - .string "st_lspare" -.LC353: - .string "ro_rt" -.LC418: - .string "sc_fpformat" -.LC81: - .string "__rune_t" -.LC27: - .string "__int_fast64_t" -.LC57: - .string "__gnuc_va_list" -.LC80: - .string "__ct_rune_t" -.LC330: - .string "s_addr" -.LC390: - .string "ai_addrlen" -.LC366: - .string "h_name" -.LC382: - .string "p_name" -.LC491: - .string "pthread_spinlock" -.LC337: - .string "ip_mreq" -.LC138: - .string "caddr_t" -.LC384: - .string "p_proto" -.LC178: - .string "__sigset_t" -.LC166: - .string "timer_t" -.LC585: - .string "pthread_barrier_attr" -.LC569: - .string "HASH" -.LC456: - .string "stack_t" -.LC304: - .string "msg_iov" -.LC120: - .string "uint" -.LC535: - .string "kqevents" -.LC447: - .string "__sigaction_u" -.LC449: - .string "sa_mask" -.LC470: - .string "pthread_mutex" -.LC311: - .string "cmsg_level" -.LC168: - .string "udev_t" -.LC177: - .string "__bits" -.LC361: - .string "ipi6_ifindex" -.LC48: - .string "__uint_least64_t" -.LC542: - .string "FDW_NONE" -.LC280: - .string "sa_family_t" -.LC259: - .string "st_ino" -.LC317: - .string "cmcred_gid" -.LC440: - .string "si_value" -.LC487: - .string "pthread_barrier" -.LC437: - .string "si_uid" -.LC281: - .string "socklen_t" -.LC335: - .string "sin_addr" -.LC139: - .string "c_caddr_t" -.LC95: - .string "_flags" -.LC283: - .string "l_onoff" -.LC182: - .string "timespec" -.LC482: - .string "pthread_rwlock_t" -.LC240: - .string "it_value" -.LC318: - .string "cmcred_ngroups" -.LC23: - .string "__intptr_t" -.LC122: - .string "int16_t" -.LC364: - .string "ip6m_mtu" -.LC421: - .string "sc_fpstate" -.LC38: - .string "__uintfptr_t" -.LC423: - .string "__sighandler_t" -.LC252: - .string "tm_wday" -.LC75: - .string "__suseconds_t" -.LC49: - .string "__u_register_t" -.LC29: - .string "__int_least16_t" -.LC110: - .string "wchar_t" -.LC436: - .string "si_pid" -.LC536: - .string "nkqevents" -.LC223: - .string "dd_size" -.LC26: - .string "__int_fast32_t" -.LC323: - .string "msg_accrightslen" -.LC553: - .string "write_point" -.LC234: - .string "tz_minuteswest" -.LC490: - .string "pthread_spinlock_t" -.LC367: - .string "h_aliases" -.LC21: - .string "__intfptr_t" -.LC319: - .string "cmcred_groups" -.LC2: - .string "signed char" -.LC368: - .string "h_addrtype" -.LC305: - .string "msg_iovlen" -.LC461: - .string "sigstack" -.LC47: - .string "__uint_least32_t" -.LC341: - .string "__u6_addr16" -.LC388: - .string "ai_socktype" -.LC33: - .string "__register_t" -.LC435: - .string "si_code" -.LC201: - .string "encoding" -.LC67: - .string "__mode_t" -.LC238: - .string "itimerval" -.LC160: - .string "register_t" -.LC130: - .string "uintptr_t" -.LC235: - .string "tz_dsttime" -.LC507: - .string "slh_first" -.LC202: - .string "sgetrune" -.LC424: - .string "sigval_int" -.LC552: - .string "next" -.LC546: - .string "FDW_EOF" -.LC206: - .string "maplower" -.LC142: - .string "clockid_t" -.LC380: - .string "s_proto" -.LC224: - .string "dd_buf" -.LC10: - .string "unsigned int" -.LC45: - .string "__uint_least8_t" -.LC414: - .string "sc_efl" -.LC267: - .string "st_mtimespec" -.LC320: - .string "osockaddr" -.LC35: - .string "__size_t" -.LC118: - .string "u_long" -.LC326: - .string "hdr_cnt" -.LC244: - .string "stathz" -.LC405: - .string "sc_isp" -.LC531: - .string "HEARTFUNC" -.LC371: - .string "netent" -.LC475: - .string "pthread_condattr_t" -.LC537: - .string "kqrevents" -.LC572: - .string "size" -.LC134: - .string "u_int64_t" -.LC373: - .string "n_aliases" -.LC190: - .string "l_start" -.LC432: - .string "__siginfo" -.LC386: - .string "ai_flags" -.LC431: - .string "sigev_value" -.LC504: - .string "data" -.LC15: - .string "__clock_t" -.LC250: - .string "tm_mon" -.LC365: - .string "hostent" -.LC194: - .string "l_whence" -.LC25: - .string "__int_fast16_t" -.LC315: - .string "cmcred_uid" -.LC493: - .string "pthread_startroutine_t" -.LC452: - .string "sigaltstack" -.LC143: - .string "critical_t" -.LC543: - .string "FDW_READ" -.LC308: - .string "msg_flags" -.LC428: - .string "sigevent" -.LC567: - .string "yhash_node" -.LC579: - .string "tea_encrypt" -.LC489: - .string "pthread_barrierattr" -.LC115: - .string "u_char" -.LC74: - .string "__socklen_t" -.LC426: - .string "__sigev_signo" -.LC163: - .string "ssize_t" -.LC325: - .string "headers" -.LC369: - .string "h_length" -.LC228: - .string "dd_flags" -.LC518: - .string "LONG" -.LC11: - .string "__int64_t" -.LC279: - .string "iov_len" -.LC268: - .string "st_ctimespec" -.LC227: - .string "dd_rewind" -.LC465: - .string "pthread_t" -.LC583: - .string "_CurrentRuneLocale" -.LC46: - .string "__uint_least16_t" -.LC370: - .string "h_addr_list" -.LC451: - .string "__siginfohandler_t" -.LC210: - .string "mapupper_ext" -.LC471: - .string "pthread_mutexattr_t" -.LC540: - .string "fd_rw" -.LC534: - .string "nfiles" -.LC96: - .string "_file" -.LC151: - .string "in_addr_t" -.LC427: - .string "__sigev_notify_kqueue" -.LC68: - .string "__nl_item" -.LC586: - .string "tea_nilbuf" -.LC0: - .string "__int8_t" -.LC333: - .string "sin_family" -.LC233: - .string "timezone" -.LC336: - .string "sin_zero" -.LC60: - .string "__fsblkcnt_t" -.LC150: - .string "gid_t" -.LC577: - .string "tea_code" -.LC285: - .string "accept_filter_arg" -.LC550: - .string "BUFFER" -.LC148: - .string "fsblkcnt_t" -.LC222: - .string "dd_loc" -.LC275: - .string "st_birthtimespec" -.LC413: - .string "sc_cs" -.LC69: - .string "__nlink_t" -.LC34: - .string "__segsz_t" -.LC107: - .string "_offset" -.LC185: - .string "fd_mask" -.LC116: - .string "u_short" -.LC526: - .string "opt_time" -.LC243: - .string "spare" -.LC140: - .string "v_caddr_t" -.LC350: - .string "sin6_addr" -.LC87: - .string "__mbstate_t" -.LC213: - .string "_RuneLocale" -.LC44: - .string "__uint_fast64_t" -.LC119: - .string "ushort" -.LC215: - .string "d_fileno" -.LC372: - .string "n_name" -.LC40: - .string "__uintptr_t" -.LC62: - .string "__gid_t" -.LC257: - .string "ostat" -.LC406: - .string "sc_ebx" -.LC468: - .string "pthread_attr" -.LC58: - .string "__clockid_t" -.LC548: - .string "LPKEVENT" -.LC8: - .string "__int32_t" -.LC22: - .string "__intmax_t" -.LC200: - .string "magic" -.LC444: - .string "__sa_handler" -.LC416: - .string "sc_ss" -.LC52: - .string "__vm_paddr_t" -.LC239: - .string "it_interval" -.LC379: - .string "s_port" -.LC523: - .string "heart" -.LC342: - .string "__u6_addr32" -.LC377: - .string "s_name" -.LC450: - .string "sig_t" -.LC102: - .string "_write" -.LC1: - .string "__uint8_t" -.LC363: - .string "ip6m_addr" -.LC481: - .string "mutex" -.LC460: - .string "sv_flags" -.LC180: - .string "tv_sec" -.LC260: - .string "st_mode" -.LC254: - .string "tm_isdst" -.LC64: - .string "__ino_t" -.LC299: - .string "__ss_align" -.LC448: - .string "sa_flags" -.LC381: - .string "protoent" -.LC126: - .string "uint16_t" -.LC176: - .string "__sigset" -.LC401: - .string "sc_ds" -.LC66: - .string "long int" -.LC355: - .string "rtentry" -.LC131: - .string "u_int8_t" -.LC519: - .string "ULONG" -.LC152: - .string "in_port_t" -.LC109: - .string "rune_t" -.LC72: - .string "__rlim_t" -.LC291: - .string "sa_data" -.LC132: - .string "u_int16_t" -.LC19: - .string "double" -.LC417: - .string "sc_len" -.LC165: - .string "time_t" -.LC43: - .string "__uint_fast32_t" -.LC90: - .string "va_list" -.LC24: - .string "__int_fast8_t" -.LC135: - .string "u_quad_t" -.LC529: - .string "pulse" -.LC247: - .string "tm_min" -.LC167: - .string "u_register_t" -.LC571: - .string "table" -.LC307: - .string "msg_controllen" -.LC400: - .string "sc_es" -.LC262: - .string "st_uid" -.LC389: - .string "ai_protocol" -.LC480: - .string "state" -.LC441: - .string "si_band" -.LC266: - .string "st_atimespec" -.LC161: - .string "rlim_t" -.LC73: - .string "__sa_family_t" -.LC59: - .string "__fflags_t" -.LC174: - .string "vm_pindex_t" -.LC458: - .string "sv_handler" -.LC4: - .string "__int16_t" - .ident "GCC: (GNU) 3.3.3 [FreeBSD] 20031106" diff --git a/libthecore/src/utils.cpp b/libthecore/src/utils.cpp index b358b92..db2ef21 100644 --- a/libthecore/src/utils.cpp +++ b/libthecore/src/utils.cpp @@ -137,7 +137,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size) // տ ĭ dz ٱ while (*tmp) { - if (!isnhspace(*tmp)) + if (!isspace(*tmp)) break; tmp++; @@ -160,7 +160,7 @@ void trim_and_lower(const char * src, char * dest, size_t dest_size) // ڿ ĭ --dest; - while (*dest && isnhspace(*dest) && len--) + while (*dest && isspace(*dest) && len--) *(dest--) = '\0'; } } @@ -240,7 +240,7 @@ void parse_token(char *src, char *token, char *value) for (tmp = src; *tmp && *tmp != ':'; tmp++) { - if (isnhspace(*tmp)) + if (isspace(*tmp)) continue; *(token++) = LOWER(*tmp); @@ -272,7 +272,7 @@ struct tm * tm_calc(const struct tm * curr_tm, int days) new_tm = *localtime(&time_s); } else - thecore_memcpy(&new_tm, curr_tm, sizeof(struct tm)); + memcpy(&new_tm, curr_tm, sizeof(struct tm)); if (new_tm.tm_mon == 1) { diff --git a/libthecore/src/xmd5.cpp b/libthecore/src/xmd5.cpp deleted file mode 100644 index 2075da4..0000000 --- a/libthecore/src/xmd5.cpp +++ /dev/null @@ -1,345 +0,0 @@ -#include "stdafx.h" - -#ifndef __FreeBSD__ - -/* - * luau (Lib Update/Auto-Update): Simple Update Library - * Copyright (C) 2003 David Eklund - * - * - This library is free software; you can redistribute it and/or - - * - modify it under the terms of the GNU Lesser General Public - - * - License as published by the Free Software Foundation; either - - * - version 2.1 of the License, or (at your option) any later version. - - * - - - * - This 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 - - * - Lesser General Public License for more details. - - * - - - * - You should have received a copy of the GNU Lesser General Public - - * - License along with this library; if not, write to the Free Software - - * - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - */ - -/* - * md5.h and md5.c are based off of md5hl.c, md5c.c, and md5.h from libmd, which in turn is - * based off the FreeBSD libmd library. Their respective copyright notices follow: - */ - -/* - * This code implements the MD5 message-digest algorithm. - * The algorithm is due to Ron Rivest. This code was - * written by Colin Plumb in 1993, no copyright is claimed. - * This code is in the public domain; do with it what you wish. - * - * Equivalent code is available from RSA Data Security, Inc. - * This code has been tested against that, and is equivalent, - * except that you don't need to include two pages of legalese - * with every copy. - */ - -/* ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - * - * $Id: md5.c,v 1.1.1.1 2004/04/02 05:11:38 deklund2 Exp $ - * - */ - -#include "xmd5.h" - -#if __BYTE_ORDER == 1234 -#define byteReverse(buf, len) /* Nothing */ -#else -void byteReverse(unsigned char *buf, unsigned longs); - -/* - * Note: this code is harmless on little-endian machines. - */ -void byteReverse(unsigned char *buf, unsigned longs) -{ - uint32_t t; - do { - t = (uint32_t) ((unsigned) buf[3] << 8 | buf[2]) << 16 | - ((unsigned) buf[1] << 8 | buf[0]); - *(uint32_t *) buf = t; - buf += 4; - } while (--longs); -} -#endif /* ! __BYTE_ORDER == 1234 */ - - - - -char * -lutil_md5_file (const char *filename, char *buf) -{ - unsigned char buffer[BUFSIZ]; - MD5_CTX ctx; - int f,i,j; - - MD5Init(&ctx); - -#ifndef __WIN32__ - f = open(filename,O_RDONLY); -#else - f = _open(filename, _O_RDONLY); -#endif - if (f < 0) return 0; - while ((i = read(f,buffer,sizeof buffer)) > 0) { - MD5Update(&ctx,buffer,i); - } - j = errno; - close(f); - errno = j; - if (i < 0) return 0; - return MD5End(&ctx, buf); -} - -char * -lutil_md5_data (const unsigned char *data, unsigned int len, char *buf) -{ - MD5_CTX ctx; - - MD5Init(&ctx); - MD5Update(&ctx,data,len); - return MD5End(&ctx, buf); -} - - -/* Non-Interface Methods */ - -/* from md5hl.c */ - -char * -MD5End(MD5_CTX *ctx, char *buf) -{ - int i; - unsigned char digest[MD5_HASHBYTES]; - static const char hex[]="0123456789abcdef"; - - if (!buf) - buf = (char*)malloc(33); - if (!buf) - return 0; - MD5Final(digest,ctx); - for (i=0;i> 4]; - buf[i+i+1] = hex[digest[i] & 0x0f]; - } - buf[i+i] = '\0'; - return buf; -} - -/* - * Start MD5 accumulation. Set bit count to 0 and buffer to mysterious - * initialization constants. - */ -void MD5Init(MD5_CTX *ctx) -{ - ctx->buf[0] = 0x67452301; - ctx->buf[1] = 0xefcdab89; - ctx->buf[2] = 0x98badcfe; - ctx->buf[3] = 0x10325476; - - ctx->bits[0] = 0; - ctx->bits[1] = 0; -} - -/* - * Update context to reflect the concatenation of another buffer full - * of bytes. - */ -void MD5Update(MD5_CTX *ctx, unsigned char const *buf, unsigned len) -{ - uint32_t t; - - /* Update bitcount */ - - t = ctx->bits[0]; - if ((ctx->bits[0] = t + ((uint32_t) len << 3)) < t) - ctx->bits[1]++; /* Carry from low to high */ - ctx->bits[1] += len >> 29; - - t = (t >> 3) & 0x3f; /* Bytes already in shsInfo->data */ - - /* Handle any leading odd-sized chunks */ - - if (t) { - unsigned char *p = (unsigned char *) ctx->in + t; - - t = 64 - t; - if (len < t) { - memcpy(p, buf, len); - return; - } - memcpy(p, buf, t); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); - buf += t; - len -= t; - } - /* Process data in 64-byte chunks */ - - while (len >= 64) { - memcpy(ctx->in, buf, 64); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); - buf += 64; - len -= 64; - } - - /* Handle any remaining bytes of data. */ - - memcpy(ctx->in, buf, len); -} - -/* - * Final wrapup - pad to 64-byte boundary with the bit pattern - * 1 0* (64-bit count of bits processed, MSB-first) - */ -void MD5Final(unsigned char digest[16], MD5_CTX *ctx) -{ - unsigned count; - unsigned char *p; - - /* Compute number of bytes mod 64 */ - count = (ctx->bits[0] >> 3) & 0x3F; - - /* Set the first char of padding to 0x80. This is safe since there is - always at least one byte free */ - p = ctx->in + count; - *p++ = 0x80; - - /* Bytes of padding needed to make 64 bytes */ - count = 64 - 1 - count; - - /* Pad out to 56 mod 64 */ - if (count < 8) { - /* Two lots of padding: Pad the first block to 64 bytes */ - memset(p, 0, count); - byteReverse(ctx->in, 16); - MD5Transform(ctx->buf, (uint32_t *) ctx->in); - - /* Now fill the next block with 56 bytes */ - memset(ctx->in, 0, 56); - } else { - /* Pad block to 56 bytes */ - memset(p, 0, count - 8); - } - byteReverse(ctx->in, 14); - - /* Append length in bits and transform */ - ((uint32_t *) ctx->in)[14] = ctx->bits[0]; - ((uint32_t *) ctx->in)[15] = ctx->bits[1]; - - MD5Transform(ctx->buf, (uint32_t *) ctx->in); - byteReverse((unsigned char *) ctx->buf, 4); - memcpy(digest, ctx->buf, 16); - memset((char *) ctx, 0, sizeof(ctx)); /* In case it's sensitive */ -} - -/* The four core functions - F1 is optimized somewhat */ - -/* #define F1(x, y, z) (x & y | ~x & z) */ -#define F1(x, y, z) (z ^ (x & (y ^ z))) -#define F2(x, y, z) F1(z, x, y) -#define F3(x, y, z) (x ^ y ^ z) -#define F4(x, y, z) (y ^ (x | ~z)) - -/* This is the central step in the MD5 algorithm. */ -#define MD5STEP(f, w, x, y, z, data, s) \ - ( w += f(x, y, z) + data, w = w<>(32-s), w += x ) - -/* - * The core of the MD5 algorithm, this alters an existing MD5 hash to - * reflect the addition of 16 longwords of new data. MD5Update blocks - * the data and converts bytes into longwords for this routine. - */ -void MD5Transform(uint32_t buf[4], uint32_t const in[16]) -{ - register uint32_t a, b, c, d; - - a = buf[0]; - b = buf[1]; - c = buf[2]; - d = buf[3]; - - MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7); - MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12); - MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17); - MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22); - MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7); - MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12); - MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17); - MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22); - MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7); - MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12); - MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17); - MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22); - MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7); - MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12); - MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17); - MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22); - - MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5); - MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9); - MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14); - MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20); - MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5); - MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9); - MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14); - MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20); - MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5); - MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9); - MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14); - MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20); - MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5); - MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9); - MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14); - MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20); - - MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4); - MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11); - MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16); - MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23); - MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4); - MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11); - MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16); - MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23); - MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4); - MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11); - MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16); - MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23); - MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4); - MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11); - MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16); - MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23); - - MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6); - MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10); - MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15); - MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21); - MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6); - MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10); - MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15); - MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21); - MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6); - MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10); - MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15); - MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21); - MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6); - MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10); - MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15); - MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} - -#endif // #ifndef __FreeBSD__ \ No newline at end of file