From 6aef5db802624ecbd1d66098e97431258e00b69c Mon Sep 17 00:00:00 2001 From: MonsterDruide1 <5958456@gmail.com> Date: Thu, 15 Jul 2021 23:52:39 +0200 Subject: [PATCH] Fix diffs --- ToolchainNX64.cmake | 14 ++-- __pycache__/diff_settings.cpython-38.pyc | Bin 747 -> 0 bytes data/odyssey_functions.csv | 10 +-- include/NintendoSDK | 2 +- include/al/byaml/ByamlContainerHeader.h | 4 +- include/al/byaml/ByamlStringTableIter.h | 8 ++- include/al/nerve/NerveStateBase.h | 2 +- include/al/sensor/HitSensor.h | 2 +- src/al/LiveActor/LiveActor.cpp | 5 -- src/al/LiveActor/LiveActorGroup.cpp | 19 ++--- src/al/byaml/ByamlContainerHeader.cpp | 13 +--- src/al/byaml/ByamlHashPair.cpp | 11 +-- src/al/byaml/ByamlStringTableIter.cpp | 35 ++++------ src/al/nerve/NerveStateBase.cpp | 6 +- src/al/nerve/NerveStateCtrl.cpp | 8 ++- src/al/resource/Resource.cpp | 11 +-- src/al/sensor/HitSensor.cpp | 3 +- src/al/sensor/SensorHitGroup.cpp | 5 +- src/al/util/ByamlUtil.cpp | 62 +++++----------- src/al/util/MathUtil.cpp | 66 ++++-------------- src/al/util/NerveUtil.cpp | 54 +++++--------- src/al/util/StringUtil.cpp | 57 ++++----------- tools/__pycache__/check.cpython-38.pyc | Bin 2245 -> 0 bytes .../__pycache__/diff_settings.cpython-38.pyc | Bin 786 -> 0 bytes .../util/__pycache__/__init__.cpython-38.pyc | Bin 131 -> 0 bytes tools/util/__pycache__/checker.cpython-38.pyc | Bin 6351 -> 0 bytes tools/util/__pycache__/dsym.cpython-38.pyc | Bin 2053 -> 0 bytes tools/util/__pycache__/elf.cpython-38.pyc | Bin 5938 -> 0 bytes tools/util/__pycache__/utils.cpython-38.pyc | Bin 4308 -> 0 bytes 29 files changed, 125 insertions(+), 272 deletions(-) delete mode 100644 __pycache__/diff_settings.cpython-38.pyc delete mode 100755 tools/__pycache__/check.cpython-38.pyc delete mode 100644 tools/__pycache__/diff_settings.cpython-38.pyc delete mode 100755 tools/util/__pycache__/__init__.cpython-38.pyc delete mode 100755 tools/util/__pycache__/checker.cpython-38.pyc delete mode 100755 tools/util/__pycache__/dsym.cpython-38.pyc delete mode 100755 tools/util/__pycache__/elf.cpython-38.pyc delete mode 100644 tools/util/__pycache__/utils.cpython-38.pyc diff --git a/ToolchainNX64.cmake b/ToolchainNX64.cmake index f04a421a..fac0fb78 100644 --- a/ToolchainNX64.cmake +++ b/ToolchainNX64.cmake @@ -1,12 +1,12 @@ -if (NOT DEFINED ENV{UKING_CLANG}) - message(FATAL_ERROR "Please define the UKING_CLANG env variable. It should point to a path such that $UKING_CLANG/bin/clang exists") +if (NOT DEFINED ENV{ODYSSEY_CLANG}) + message(FATAL_ERROR "Please define the ODYSSEY_CLANG env variable. It should point to a path such that $ODYSSEY_CLANG/bin/clang exists") endif() if (NOT DEFINED ENV{DEVKITA64}) message(FATAL_ERROR "Please define the DEVKITA64 env variable.") endif() -set(UKING_CLANG "$ENV{UKING_CLANG}") +set(ODYSSEY_CLANG "$ENV{ODYSSEY_CLANG}") set(DEVKITA64 "$ENV{DEVKITA64}") set(NX64_OPT_FLAGS "-O3 -g") set(triple aarch64-none-elf) @@ -15,10 +15,10 @@ set(CMAKE_SYSTEM_NAME Generic) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_SYSTEM_PROCESSOR aarch64) -set(CMAKE_SYSROOT ${UKING_CLANG}) -set(CMAKE_C_COMPILER "${UKING_CLANG}/bin/clang") +set(CMAKE_SYSROOT ${ODYSSEY_CLANG}) +set(CMAKE_C_COMPILER "${ODYSSEY_CLANG}/bin/clang") set(CMAKE_C_COMPILER_TARGET ${triple}) -set(CMAKE_CXX_COMPILER "${UKING_CLANG}/bin/clang++") +set(CMAKE_CXX_COMPILER "${ODYSSEY_CLANG}/bin/clang++") set(CMAKE_CXX_COMPILER_TARGET ${triple}) set(CMAKE_C_FLAGS_RELEASE ${NX64_OPT_FLAGS}) @@ -28,7 +28,7 @@ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO ${NX64_OPT_FLAGS}) set(ARCH "-mcpu=cortex-a57+fp+simd+crypto+crc") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ARCH} -isystem ${DEVKITA64}/aarch64-none-elf/include") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${UKING_CLANG}/include/c++/v1 -D _LIBCPP_HAS_THREAD_API_PTHREAD ${CMAKE_C_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -isystem ${ODYSSEY_CLANG}/include/c++/v1 -D _LIBCPP_HAS_THREAD_API_PTHREAD ${CMAKE_C_FLAGS}") set(CMAKE_ASM_FLAGS "${CMAKE_ASM_FLAGS} -x assembler-with-cpp ${ARCH}") add_compile_options(-fPIC -stdlib=libc++ -mno-implicit-float) diff --git a/__pycache__/diff_settings.cpython-38.pyc b/__pycache__/diff_settings.cpython-38.pyc deleted file mode 100644 index c7ea7b056bb07b49feba32d1e15f37a5cf09eb5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 747 zcmYjPO>Yx15VgI#*`?V)8W0yG4jhnjNYX>qQ-qMpIYO$C&`M}=cATx-{i^Minkby; zPvFP_j^!s=+&FRI5A?)%6G3O?dE>G7&GXpr27?2F_T$T+k3Sh9zue@$c{q8EL%&1^ z1ZY7@novrBfpYA z1VtP!Y{yzV&5`{n=n|_y@R25Tgfn2RpEsT*>uBQ#2jW-pM?8%c3RXEOzk2kO^wjmVac1c zJ9WCN + namespace al { class ByamlContainerHeader @@ -8,6 +10,6 @@ namespace al int getType() const; int getCount(bool) const; - int mType; // _0 + u32 mType; // _0 }; }; \ No newline at end of file diff --git a/include/al/byaml/ByamlStringTableIter.h b/include/al/byaml/ByamlStringTableIter.h index c183b99f..2a241f7d 100755 --- a/include/al/byaml/ByamlStringTableIter.h +++ b/include/al/byaml/ByamlStringTableIter.h @@ -1,5 +1,7 @@ #pragma once +#include + namespace al { class ByamlStringTableIter @@ -9,7 +11,7 @@ namespace al ByamlStringTableIter(const unsigned char *, bool); int getSize() const; - const unsigned char* getAddressTable() const; + const u32* getAddressTable() const; int getStringAddress(int) const; int getEndAddress() const; const char* getString(int) const; @@ -17,7 +19,7 @@ namespace al int findStringIndex(const char *) const; bool isValidate() const; - const unsigned char* mData; // _0 - unsigned char _8; + const u8* mData; // _0 + bool mReversed; }; }; \ No newline at end of file diff --git a/include/al/nerve/NerveStateBase.h b/include/al/nerve/NerveStateBase.h index e071e536..289496d3 100755 --- a/include/al/nerve/NerveStateBase.h +++ b/include/al/nerve/NerveStateBase.h @@ -8,8 +8,8 @@ namespace al { public: NerveStateBase(const char *); - virtual ~NerveStateBase(); + virtual void init(); virtual void appear(); virtual void kill(); diff --git a/include/al/sensor/HitSensor.h b/include/al/sensor/HitSensor.h index 21da9208..07d80507 100755 --- a/include/al/sensor/HitSensor.h +++ b/include/al/sensor/HitSensor.h @@ -34,7 +34,7 @@ namespace al al::SensorHitGroup* mHitGroup; // _30 bool mIsValidBySystem; // _38 bool mIsValid; // _39 - unsigned int _3A; + bool _3A[4]; // unknown type unsigned short _3E; al::LiveActor* mParentActor; // _40 const sead::Vector3* mFollowPos; // _48 diff --git a/src/al/LiveActor/LiveActor.cpp b/src/al/LiveActor/LiveActor.cpp index 91538008..79e80a60 100755 --- a/src/al/LiveActor/LiveActor.cpp +++ b/src/al/LiveActor/LiveActor.cpp @@ -4,11 +4,6 @@ namespace al { - LiveActor::LiveActor(const char *pName) - { - - } - al::NerveKeeper* LiveActor::getNerveKeeper() const { return mNerveKeeper; diff --git a/src/al/LiveActor/LiveActorGroup.cpp b/src/al/LiveActor/LiveActorGroup.cpp index 8e0a3110..e75303b0 100755 --- a/src/al/LiveActor/LiveActorGroup.cpp +++ b/src/al/LiveActor/LiveActorGroup.cpp @@ -18,19 +18,12 @@ namespace al return count; } - void LiveActorGroup::removeActor(const al::LiveActor *pActor) - { - auto actorCount = mActorCount; - - if (actorCount >= 1) - { - for (auto i = 0; i < actorCount; i++) - { - if (mActors[i] == pActor) - { - mActors[mActorCount] = mActors[mActorCount - 1]; - mActorCount--; - } + void LiveActorGroup::removeActor(const al::LiveActor *pActor) { + for (int i = 0; i < mActorCount; i++) { + if (mActors[i] == pActor) { + mActors[i] = mActors[mActorCount - 1]; + mActorCount--; + break; } } } diff --git a/src/al/byaml/ByamlContainerHeader.cpp b/src/al/byaml/ByamlContainerHeader.cpp index f7ad54a2..030400d1 100755 --- a/src/al/byaml/ByamlContainerHeader.cpp +++ b/src/al/byaml/ByamlContainerHeader.cpp @@ -1,4 +1,5 @@ #include "al/byaml/ByamlContainerHeader.h" +#include namespace al { @@ -10,17 +11,9 @@ namespace al int ByamlContainerHeader::getCount(bool isRev) const { /* todo -- attempt to remove ASR instruction for the else block */ - int val; - if (isRev) - { - val = ((mType >> 24) & 0xFF) | ((mType >> 16) & 0xFF) << 8 | ((mType >> 8) & 0xFF) << 16; - } - else - { - val = mType >> 8; - } + return ((mType >> 24) & 0xFF) | ((mType >> 16) & 0xFF) << 8 | ((mType >> 8) & 0xFF) << 16; - return val; + return (mType >> 8); } }; \ No newline at end of file diff --git a/src/al/byaml/ByamlHashPair.cpp b/src/al/byaml/ByamlHashPair.cpp index 76bda566..47671b20 100755 --- a/src/al/byaml/ByamlHashPair.cpp +++ b/src/al/byaml/ByamlHashPair.cpp @@ -22,14 +22,9 @@ namespace al int ByamlHashPair::getValue(bool isSwap) const { - int swap = __bswap_32(mData); - int val; - - if (isSwap) - val = swap; + if(isSwap) + return __bswap_32(mValue); else - val = mData; - - return val; + return mValue; } }; \ No newline at end of file diff --git a/src/al/byaml/ByamlStringTableIter.cpp b/src/al/byaml/ByamlStringTableIter.cpp index f5110b16..fe658b2a 100755 --- a/src/al/byaml/ByamlStringTableIter.cpp +++ b/src/al/byaml/ByamlStringTableIter.cpp @@ -4,43 +4,34 @@ namespace al { ByamlStringTableIter::ByamlStringTableIter() - : mData(0), _8(0) { } + : mData(0), mReversed(0) { } - ByamlStringTableIter::ByamlStringTableIter(const unsigned char *pData, bool unk) + ByamlStringTableIter::ByamlStringTableIter(const u8* pData, bool pReversed) { mData = pData; - _8 = unk; + mReversed = pReversed; } int ByamlStringTableIter::getSize() const { - /* todo -- why does this use different register numbers? */ - return _8 != 0 ? ((*mData >> 24) & 0xFF) | ((*mData >> 16) & 0xFF) << 8 | ((*mData >> 8) & 0xFF) << 16 : *mData >> 8; + u32 type_and_size = *reinterpret_cast(mData); + if(mReversed) + return ((type_and_size >> 24) & 0xFF) | ((type_and_size >> 16) & 0xFF) << 8 | ((type_and_size >> 8) & 0xFF) << 16; + return type_and_size >> 8; } - const unsigned char* ByamlStringTableIter::getAddressTable() const + const u32* ByamlStringTableIter::getAddressTable() const { // mData is an integer pointer, so getting to the table is just increasing the pointer by 1 (which is + 4) - return reinterpret_cast(mData + 4); + return reinterpret_cast(mData + 4); } int ByamlStringTableIter::getStringAddress(int idx) const { - /* todo -- scheduling issues */ - int offs = *((int*)(mData + idx) + 1); - int offsRev = __bswap_32(offs); - int ret; - - if (_8) - { - ret = offsRev; - } - else - { - ret = offs; - } - - return ret; + if (mReversed) + return __bswap_32(getAddressTable()[idx]); + + return getAddressTable()[idx]; } bool ByamlStringTableIter::isValidate() const diff --git a/src/al/nerve/NerveStateBase.cpp b/src/al/nerve/NerveStateBase.cpp index 7fbc2ac6..02ab70ad 100755 --- a/src/al/nerve/NerveStateBase.cpp +++ b/src/al/nerve/NerveStateBase.cpp @@ -6,11 +6,7 @@ namespace al { mIsDead = true; } - - NerveStateBase::~NerveStateBase() - { - delete this; - } + NerveStateBase::~NerveStateBase() = default; void NerveStateBase::init() { diff --git a/src/al/nerve/NerveStateCtrl.cpp b/src/al/nerve/NerveStateCtrl.cpp index 4049c5d1..31085d4d 100755 --- a/src/al/nerve/NerveStateCtrl.cpp +++ b/src/al/nerve/NerveStateCtrl.cpp @@ -5,8 +5,12 @@ namespace al // todo -- some scheduling problems with mStateCount's incrementation // adds a state to the list of states in the controller void NerveStateCtrl::addState(al::NerveStateBase *pBase, const al::Nerve *pNerve, const char *pName) - { - mStates[mStateCount].mStateBase = pBase, mStates[mStateCount].mNerve = pNerve, mStates[mStateCount++].mName = pName; + { + auto& state = mStates[mStateCount]; + state.mStateBase = pBase; + state.mNerve = pNerve; + state.mName = pName; + mStateCount++; } // run the state's update function, if there is a current state active diff --git a/src/al/resource/Resource.cpp b/src/al/resource/Resource.cpp index 25d95a2f..5ec08894 100755 --- a/src/al/resource/Resource.cpp +++ b/src/al/resource/Resource.cpp @@ -21,9 +21,6 @@ namespace al Resource::Resource(const sead::SafeStringBase &rPath, sead::ArchiveRes *pResource) : mArchive(nullptr), mDevice(nullptr), mName(rPath) { - mArchive = 0; - mDevice = 0; - mHeap = sead::HeapMgr::sInstancePtr->getCurrentHeap(); _B0 = 0; mResFile = 0; @@ -40,13 +37,17 @@ namespace al unsigned int Resource::getFileSize(const sead::SafeStringBase &rFileName) const { - unsigned int ret; - mDevice->tryGetFileSize(&ret, rFileName); + auto device = mDevice; + u32 ret = 0; + device->tryGetFileSize(&ret, rFileName); return ret; } void Resource::cleanupResGraphicsFile() { + if(!mResFile) + return; + mResFile->ReleaseTexture(); mResFile->Reset(); agl::g3d::ResFile::Cleanup(mResFile); diff --git a/src/al/sensor/HitSensor.cpp b/src/al/sensor/HitSensor.cpp index f7f8aabb..978c63be 100755 --- a/src/al/sensor/HitSensor.cpp +++ b/src/al/sensor/HitSensor.cpp @@ -4,7 +4,8 @@ namespace al { void HitSensor::setFollowPosPtr(const sead::Vector3 *pFollowPos) { - mFollowPos = pFollowPos, mFollowMtx = nullptr; + mFollowPos = pFollowPos; + mFollowMtx = nullptr; } void HitSensor::setFollowMtxPtr(const sead::Matrix34 *pFollowMtx) diff --git a/src/al/sensor/SensorHitGroup.cpp b/src/al/sensor/SensorHitGroup.cpp index 81d1f804..357ee03f 100755 --- a/src/al/sensor/SensorHitGroup.cpp +++ b/src/al/sensor/SensorHitGroup.cpp @@ -2,11 +2,10 @@ namespace al { - void SensorHitGroup::add(al::HitSensor *pSensor) + void SensorHitGroup::add(al::HitSensor* pSensor) { - // todo -- fix incrementation issue mSensors[mSensorCount] = pSensor; - ++mSensorCount; + mSensorCount++; } al::HitSensor* SensorHitGroup::getSensor(int idx) const diff --git a/src/al/util/ByamlUtil.cpp b/src/al/util/ByamlUtil.cpp index 8386b699..1264500c 100755 --- a/src/al/util/ByamlUtil.cpp +++ b/src/al/util/ByamlUtil.cpp @@ -3,62 +3,37 @@ namespace alByamlLocalUtil { /* doesn't match but it's close enough */ - const char* getDataTypeString(int type) - { - const char* str; - - switch (type) - { + const char* getDataTypeString(int type) { + switch (type) { + case 0x00: + return "None"; case 0xA0: - str = "String"; - break; + return "String"; case 0xC0: - str = "Array"; - break; + return "Array"; case 0xC1: - str = "Hash"; - break; + return "Hash"; case 0xC2: - str = "StringTable"; - break; + return "StringTable"; case 0xD0: - str = "Bool"; - break; + return "Bool"; case 0xD1: - str = "Int"; - break; + return "Int"; case 0xD2: - str = "Float"; - break; + return "Float"; case 0xD3: - str = "UInt"; - break; + return "UInt"; case 0xD4: - str = "Int64"; - break; + return "Int64"; case 0xD5: - str = "UInt64"; - break; + return "UInt64"; case 0xD6: - str = "Double"; - break; + return "Double"; case 0xFF: - str = "NULL"; - break; + return "NULL"; default: - if (type) - { - str = "Unknown"; - } - else - { - str = "None"; - } - - break; + return "Unknown"; } - - return str; } }; @@ -167,8 +142,7 @@ namespace al float y = 0; bool y_ret = rIter.tryGetFloatByKey(&y, "YZ"); - pOut->x = x; - pOut->y = y; + *pOut = {x, y}; return (x_ret | y_ret) & 0x1; } diff --git a/src/al/util/MathUtil.cpp b/src/al/util/MathUtil.cpp index 1c6b66d9..e58ba6b1 100755 --- a/src/al/util/MathUtil.cpp +++ b/src/al/util/MathUtil.cpp @@ -1,43 +1,19 @@ #include "al/util/MathUtil.h" #include +#include namespace al { - float normalize(float var, float min, float max) - { - float v4; - bool v5; - float result; - float v7; + float normalize(float var, float min, float max) { + if (sead::absf(max-min) < 0.001f) { + if (var < min) + return 0.0f; + else + return 1.0f; + } - v4 = -(max - min); - if ((max - min) > 0.0f) - { - v4 = max - min; - } - if (v4 >= 0.001f) - { - v7 = min; - if (var >= min) - { - v7 = var; - if (var > max) - { - v7 = max; - } - } - result = (v7 - min) / (max - min); - } - else - { - v5 = var < min; - result = 1.0f; - if (v5) - { - result = 0.0f; - } - } - return result; + float clamped = sead::clamp(var, min, max); + return (clamped - min) / (max - min); } @@ -47,34 +23,23 @@ namespace al float result; if (var <= min) - { return 0.0f; - } - if (max - min <= 0) - { + if (max - min <= 0) { result = 1.0f; if (var < min) - { result = 0.0f; - } } else { if (var <= max) - { v3 = var; - } else - { v3 = max; - } if (var < min) - { v3 = min; - } result = (static_cast(v3 - min) / static_cast(max - min)); } @@ -144,13 +109,10 @@ namespace al } float lerpValue(float x, float y, float time) { - if (time >= 0.0f) - { - if (time > 1.0f) - time = 1.0f; - } else { + if(time < 0.0f) time = 0.0f; - } + else if(time > 1.0f) + time = 1.0f; return (x * (1.0f - time)) + (time * y); } }; \ No newline at end of file diff --git a/src/al/util/NerveUtil.cpp b/src/al/util/NerveUtil.cpp index ad1ab44f..5c749afd 100755 --- a/src/al/util/NerveUtil.cpp +++ b/src/al/util/NerveUtil.cpp @@ -1,6 +1,7 @@ #include "al/util/NerveUtil.h" #include "al/nerve/NerveKeeper.h" #include "al/nerve/NerveStateCtrl.h" +#include namespace al { @@ -75,51 +76,28 @@ namespace al return (step <= high) & (step >= low); } - // logic just won't add up for some reason - int calcNerveInterval(const al::IUseNerve *pKeeper, int start, int end) - { + int calcNerveInterval(const al::IUseNerve *pKeeper, int start, int end) { al::NerveKeeper* keeper = pKeeper->getNerveKeeper(); + + int dist = keeper->mStep - end; - if (start >= -1) - { - int dist = keeper->mStep - end; + if(start < 1 || dist < 1) + return 0; - if (dist >= -1) - { - return dist / start; - } - } - - return 0; + return dist / start; } - float calcNerveRate(const al::IUseNerve *pKeeper, int step) - { - float ret; - + float calcNerveRate(const al::IUseNerve *pKeeper, int step) { if (step < 1) - { - ret = 1.0f; - } - else - { - float curStep = pKeeper->getNerveKeeper()->mStep; - ret = curStep / step; + return 1.0f; + + float curStep = pKeeper->getNerveKeeper()->mStep; + float ret = curStep / step; - // TODO -- technically the same code, - // but this one uses B.GE and not B.PL - if (ret >= 0) - { - if (ret > 1.0f) - { - ret = 1.0f; - } - } - else - { - ret = 0; - } - } + if (ret < 0.0f) + ret = 0.0f; + else if (ret > 1.0f) + ret = 1.0f; return ret; } diff --git a/src/al/util/StringUtil.cpp b/src/al/util/StringUtil.cpp index 42398b00..0e7006a5 100755 --- a/src/al/util/StringUtil.cpp +++ b/src/al/util/StringUtil.cpp @@ -32,61 +32,32 @@ namespace al return strstr(pString_0, pString_1); } - /*bool isEqualSubString(const sead::SafeStringBase &pString_0, const sead::SafeStringBase &pString_1) - { - pString_0.assureTerminationImpl_(); - const char* str = pString_0.mStringTop; - pString_1.assureTerminationImpl_(); - return strstr(str, pString_1.mStringTop); - }*/ - - bool isStartWithString(const char *pString_0, const char *pString_1) - { - char val = *pString_1; - + bool isStartWithString(const char *pString_0, const char *pString_1) { if (!*pString_1) - { return true; - } - const char* nextVal = pString_1 + 1; - - while(*pString_0 && *pString_0 == val) - { - char e = *nextVal++; - val = e; + while(*pString_0 && *pString_0 == *pString_1) { ++pString_0; + ++pString_1; - if (!e) - { + if (!*pString_1) return true; - } } return false; } - bool isEqualString(const char *pString_0, const char *pString_1) - { - char val; + bool isEqualString(const char *pString_0, const char *pString_1) { + while (*pString_0 == *pString_1) { + char val = *pString_0; //required to match - while (1) - { - val = *pString_0; - if (val != *pString_1) - { - break; - } + if (!*pString_0) + return true; ++pString_1; ++pString_0; - - if (!val) - { - return true; - } } - + return false; } @@ -96,12 +67,8 @@ namespace al int pString1_Len = strlen(pString_1); if (pString0_Len < pString1_Len) - { return false; - } - else - { - return isEqualString(&pString_0[pString0_Len - pString1_Len], pString_1); - } + + return isEqualString(&pString_0[pString0_Len - pString1_Len], pString_1); } }; \ No newline at end of file diff --git a/tools/__pycache__/check.cpython-38.pyc b/tools/__pycache__/check.cpython-38.pyc deleted file mode 100755 index af613f56d27679a67c55ed31650720aafead3058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2245 zcmZuy&2Jk;6rY)$U9UfrIB989+HOIjHG(8XkOQhJpiM4_fJhPTifX&|jFYwZ!M(~D9^3vr!_0k(S&@|`=tm$SZILvlmMX_u+y3pF?tu7auhK#`|qXE}64HK>l%~0~7ooYvL z)fZ{YHWE*p19KVr9q4iwh9PCB>xyp%b%i>3Oon(!CS*jvN9o5DDXUu&TNsqXNYSy) z@DMX{Oqm6gGqfi77(JsCjL`$c=r+2Kaw!F~GqQ(h><;PBo)9q1-WptKW&N0?*Ok|f zQsx;wy>>rs88f}L1D~$lTt67tUON-sW}~R7u~u6=Zu?6+T!BqNTVzR)8wgzOe#s9v zgvf-TV2UpHM3kz48;)KEDM_dTd6+b_I55xzzzPz%qw8m-C5M5LW#@=C9AV%R1}9N4 zg9#8(gu%DrWIO#Gi8@gK-B{ht626*bsZ?Ar(T^Cvx!TOs{;JBdSgz*sR(glJmal@D zrB%2s=V3s^#RS)J4PU`7sbH}LyapB~U|VK?){F{0+z5mr`*c5D-Kzv2;rGtLCvMNjZUHL`|Qry%d{t%Jj@jyoipJ4e1 zNLXaWvvOGJ83YJMLo!~PpdYLe9oZuXLb2SnKu$%S>zp6I#VWw5et}pG0&Y%S=v+KT zL+2R5YWWzk`DeM_%o(A*^%t64GMdP>7xdeZU+ZtuOFRONF2APN!l_<(e8uR`5Trt3 z2y?giQi{4dEF59853?=T-(X*TD(6%;KwkW*&W$~`Xsl)k(qU<9vjv`f(Fm+eylq35 z@4yhDA$qtxf`scJg*#+y4e^+QuR*8Z$Q~pcgo=^Sup#{wPlU;9QGr3bo2OZ&OM-_i zXdWsq8$^?pHH~|D{7#2ObGmekMJ?6JlHTphKuZ(*4kC!6!G$D@(v@3r)(T^Jd*$Up z-{l8A-cp^r9=IX^!$ zQ|dC~2HU&>&@}JM^kukau3GTU0NP4S9eUpIXcNl*)Je1d=Z{WsCf{=7^Q3ccB^m3-{I>bG ZGyu4`LMreiz)aBz*oeqUrCMva_ zk3F=<^pQkwJ@wER$f>ikX)|JHW=F#}-^}dW!Qg%QS;l_Kmvv2ZS)b3FPTDxh10 znh|i&x@bMLJ+wXq8AJaO`UhzHXu}Kg{^=)X$d-MkFnCP9(eFf^z#$xMS!NN2GxG5S z2$DFS$3EvOU7ek_uC<#1aKod5%W^96W$Q1v7P83h2a87L5LK|&TC7{ISYxzxv`Ski zmy39$t45_F0jWf4DkX*9JTX<3>u6tKQdXsyAn2r8TtQRR@o4WP;zp#6;fq|1S?hI` zHltm^^5*PxqC_r`$EM%Krll;ecIV$%JKXjK&=DymW&p+Gef#PjI&uFDI7kae`{0_1X;Xkm;jGd-;2n+o9XErOg-NMR+>7-s(QeB&88<_(nF@hjqL15g z=E}my{(kBmWp#|9oo72xN2uCi!Rw?OPO__HlXMT2rRBP6gx-AYwSJ9{4foZJsH2EG bG^+dm0Q5g{Fe@r(a`Dnq)%I0}P7wYD{NctG diff --git a/tools/util/__pycache__/__init__.cpython-38.pyc b/tools/util/__pycache__/__init__.cpython-38.pyc deleted file mode 100755 index d7b0309918e34ac0d078b4a0d9848d5444b98ce3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmWIL<>g`k0=|^<2_X70h(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2BlKO;XkRX;JM zC^IonKPkVYT)!kgKc`r~v?Mb}KR!M)FS8^*Uaz3?7Kcr4eoARhsvXFL&p^xo0Cf5s A0{{R3 diff --git a/tools/util/__pycache__/checker.cpython-38.pyc b/tools/util/__pycache__/checker.cpython-38.pyc deleted file mode 100755 index 51f4ba244fc7b35332df72f1a36a1ba5c1c21a93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6351 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 diff --git a/tools/util/__pycache__/dsym.cpython-38.pyc b/tools/util/__pycache__/dsym.cpython-38.pyc deleted file mode 100755 index f0433a9aef6b1593c8bc9d2a6594c75a8fdd8527..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2053 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