From d0deedac4c67170ecbae45afaca0d67a8aabd577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sun, 1 Nov 2020 14:55:34 +0100 Subject: [PATCH] Compare non-matching functions against expected output This makes it possible to catch regressions for non-matching functions, especially those that only have minor issues. This also reclassifies some minor non-matchings as major non-matchings whenever it's really not obvious to see that they are equivalent. --- data/uking_functions.csv | 18 ++--- ...BAL__sub_I_resResourceActorCapture.cpp.bin | Bin 0 -> 92 bytes ...3utl13IParameterObj8copyLerpERKS1_S3_f.bin | Bin 0 -> 232 bytes ...l3utl14IParameterList10removeListEPS1_.bin | Bin 0 -> 84 bytes ...erList9removeObjEPNS0_13IParameterObjE.bin | Bin 0 -> 84 bytes ...StringBaseIcEES7_PNS0_13IParameterObjE.bin | Bin 0 -> 212 bytes ...stem4initERKNS0_7InitArgEPN4sead4HeapE.bin | Bin 0 -> 572 bytes ...ad14SafeStringBaseIcEEiNS1_9EntryTypeE.bin | Bin 0 -> 224 bytes ...8BaseProcEEERKNS3_14SafeStringBaseIcEE.bin | Bin 0 -> 200 bytes ...g17DamageManagerBaseC1EPNS_3act5ActorE.bin | Bin 0 -> 72 bytes ...ctor3IfEERKNS2_14SafeStringBaseIcEEbbb.bin | Bin 0 -> 416 bytes ...4ksys3gdt12getFlagColorENS0_8FlagTypeE.bin | Bin 0 -> 360 bytes ...s3res11DamageParam10DamageSize5text_Ei.bin | Bin 0 -> 416 bytes ...res11DamageParam12DamageSource5text_Ei.bin | Bin 0 -> 404 bytes ...ksys3res12ResourceUnit12updateStatusEv.bin | Bin 0 -> 36 bytes ...5ResourceMgrTask18controlField9c0d88Eb.bin | Bin 0 -> 88 bytes ...esourceMgrTask20setCompactionStoppedEb.bin | Bin 0 -> 104 bytes ...InfoContainer21loadResourceSizeTableEv.bin | Bin 0 -> 504 bytes expected/_ZN4ksys3res7CounterD0Ev.bin | 1 + .../_ZN4ksys3res9AIProgram9finalize_Ev.bin | Bin 0 -> 188 bytes .../_ZN4ksys4util10TaskThread5calc_El.bin | Bin 0 -> 624 bytes ...ksys4util11ManagedTask12detachHandleEv.bin | Bin 0 -> 108 bytes ...kQueueBase24notifyThreadsForNewTasksEv.bin | Bin 0 -> 380 bytes ...13TaskQueueBase9fetchTaskEPPNS0_4TaskE.bin | Bin 0 -> 852 bytes ...ask13submitRequestERNS0_11TaskRequestE.bin | Bin 0 -> 536 bytes expected/_ZN4ksys4util4Task9finalize_Ev.bin | Bin 0 -> 108 bytes expected/_ZN4ksys4util4TaskD0Ev.bin | Bin 0 -> 136 bytes expected/_ZN4ksys4util4TaskD1Ev.bin | Bin 0 -> 128 bytes ...askForRequest_ERNS0_14TaskMgrRequestEb.bin | Bin 0 -> 276 bytes ...S2_10IDelegate1IPPNS0_11ManagedTaskEEE.bin | Bin 0 -> 380 bytes ...ad11BitFlagUtil18findOnBitFromRightEji.bin | Bin 0 -> 116 bytes ...11BitFlagUtil20findOnBitFromRight64Emi.bin | Bin 0 -> 172 bytes ...11ResourceMgr6createERKNS0_9CreateArgE.bin | Bin 0 -> 376 bytes ...KeyEE8eraseMinEPNS_11TreeMapNodeIS3_EE.bin | Bin 0 -> 432 bytes ..._ZN4sead13ReadWriteLock11writeUnlockEv.bin | Bin 0 -> 196 bytes ...mpressor13DecompContext10initializeEPv.bin | Bin 0 -> 32 bytes ...ad15SZSDecompressor13DecompContextC1Ev.bin | Bin 0 -> 32 bytes ...N4sead17StringBuilderBaseIcE6appendEci.bin | Bin 0 -> 132 bytes ...tringBaseIcEERKNS_14SafeStringBaseIcEE.bin | Bin 0 -> 1000 bytes ...WorkerMgrEjiiRKNS_14SafeStringBaseIcEE.bin | Bin 0 -> 240 bytes ...mit_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin | Bin 0 -> 208 bytes ...t2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin | Bin 0 -> 344 bytes ...r2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin | Bin 0 -> 196 bytes ...ctor2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin | Bin 0 -> 208 bytes ...ctor2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin | Bin 0 -> 188 bytes .../_ZN4sead7MemUtil13checkFillTypeEPKvm.bin | Bin 0 -> 60 bytes .../_ZN4sead8EnumUtil15getParseTextCS_Ev.bin | Bin 0 -> 116 bytes ...4sead8EnumUtil20getInitValueArrayCS_Ev.bin | Bin 0 -> 116 bytes expected/_ZN4sead8JobQueueC1Ev.bin | Bin 0 -> 140 bytes expected/_ZN4seadmlERKNS_8Color4u8Ef.bin | Bin 0 -> 104 bytes ...oneEPN4sead4HeapEPNS0_13IParameterObjE.bin | Bin 0 -> 136 bytes ...oneEPN4sead4HeapEPNS0_13IParameterObjE.bin | Bin 0 -> 284 bytes ...ZNK4ksys3res12ResourceUnit9isParseOkEv.bin | Bin 0 -> 228 bytes ...ourceSizeERKN4sead14SafeStringBaseIcEE.bin | Bin 0 -> 380 bytes ...0DefinitionERKNS2_14SafeStringBaseIcEE.bin | Bin 0 -> 168 bytes ...efinitionERKN4sead14SafeStringBaseIcEE.bin | Bin 0 -> 172 bytes ...ksys3res9ActorLink6hasTagENS_3act3TagE.bin | Bin 0 -> 108 bytes ...afeStringBaseIcEEE12binarySearchEPKS2_.bin | Bin 0 -> 672 bytes tools/check.py | 36 ++++++---- tools/dump_function.py | 62 ++++++++++++++++++ tools/progress.py | 16 ++++- 61 files changed, 111 insertions(+), 22 deletions(-) create mode 100644 expected/_GLOBAL__sub_I_resResourceActorCapture.cpp.bin create mode 100644 expected/_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f.bin create mode 100644 expected/_ZN3agl3utl14IParameterList10removeListEPS1_.bin create mode 100644 expected/_ZN3agl3utl14IParameterList9removeObjEPNS0_13IParameterObjE.bin create mode 100644 expected/_ZN3agl3utl14ParameterCurveILj4EEC1ERKN4sead14SafeStringBaseIcEES7_PNS0_13IParameterObjE.bin create mode 100644 expected/_ZN4ksys18OverlayArenaSystem4initERKNS0_7InitArgEPN4sead4HeapE.bin create mode 100644 expected/_ZN4ksys3act13InstParamPack6Buffer3addEPKvRKN4sead14SafeStringBaseIcEEiNS1_9EntryTypeE.bin create mode 100644 expected/_ZN4ksys3act13InstParamPack6Buffer3addEPN4sead10IDelegate1IPNS0_8BaseProcEEERKNS3_14SafeStringBaseIcEE.bin create mode 100644 expected/_ZN4ksys3dmg17DamageManagerBaseC1EPNS_3act5ActorE.bin create mode 100644 expected/_ZN4ksys3gdt12TriggerParam8setVec3fERKN4sead7Vector3IfEERKNS2_14SafeStringBaseIcEEbbb.bin create mode 100644 expected/_ZN4ksys3gdt12getFlagColorENS0_8FlagTypeE.bin create mode 100644 expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin create mode 100644 expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin create mode 100644 expected/_ZN4ksys3res12ResourceUnit12updateStatusEv.bin create mode 100644 expected/_ZN4ksys3res15ResourceMgrTask18controlField9c0d88Eb.bin create mode 100644 expected/_ZN4ksys3res15ResourceMgrTask20setCompactionStoppedEb.bin create mode 100644 expected/_ZN4ksys3res21ResourceInfoContainer21loadResourceSizeTableEv.bin create mode 100644 expected/_ZN4ksys3res7CounterD0Ev.bin create mode 100644 expected/_ZN4ksys3res9AIProgram9finalize_Ev.bin create mode 100644 expected/_ZN4ksys4util10TaskThread5calc_El.bin create mode 100644 expected/_ZN4ksys4util11ManagedTask12detachHandleEv.bin create mode 100644 expected/_ZN4ksys4util13TaskQueueBase24notifyThreadsForNewTasksEv.bin create mode 100644 expected/_ZN4ksys4util13TaskQueueBase9fetchTaskEPPNS0_4TaskE.bin create mode 100644 expected/_ZN4ksys4util4Task13submitRequestERNS0_11TaskRequestE.bin create mode 100644 expected/_ZN4ksys4util4Task9finalize_Ev.bin create mode 100644 expected/_ZN4ksys4util4TaskD0Ev.bin create mode 100644 expected/_ZN4ksys4util4TaskD1Ev.bin create mode 100644 expected/_ZN4ksys4util7TaskMgr24fetchIdleTaskForRequest_ERNS0_14TaskMgrRequestEb.bin create mode 100644 expected/_ZN4ksys4util7TaskMgr4initEiPN4sead4HeapERNS2_10IDelegate1IPPNS0_11ManagedTaskEEE.bin create mode 100644 expected/_ZN4sead11BitFlagUtil18findOnBitFromRightEji.bin create mode 100644 expected/_ZN4sead11BitFlagUtil20findOnBitFromRight64Emi.bin create mode 100644 expected/_ZN4sead11ResourceMgr6createERKNS0_9CreateArgE.bin create mode 100644 expected/_ZN4sead11TreeMapImplIN4ksys4util13StrTreeMapKeyEE8eraseMinEPNS_11TreeMapNodeIS3_EE.bin create mode 100644 expected/_ZN4sead13ReadWriteLock11writeUnlockEv.bin create mode 100644 expected/_ZN4sead15SZSDecompressor13DecompContext10initializeEPv.bin create mode 100644 expected/_ZN4sead15SZSDecompressor13DecompContextC1Ev.bin create mode 100644 expected/_ZN4sead17StringBuilderBaseIcE6appendEci.bin create mode 100644 expected/_ZN4sead4Path6getExtEPNS_22BufferedSafeStringBaseIcEERKNS_14SafeStringBaseIcEE.bin create mode 100644 expected/_ZN4sead6WorkerC1EPNS_9WorkerMgrEjiiRKNS_14SafeStringBaseIcEE.bin create mode 100644 expected/_ZN4sead6hostio12curveHermit_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin create mode 100644 expected/_ZN4sead6hostio14curveHermit2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin create mode 100644 expected/_ZN4sead6hostio14curveLinear2D_IfEET_fPKNS0_13CurveDataInfoEPKS2_.bin create mode 100644 expected/_ZN4sead6hostio16curveHermitVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin create mode 100644 expected/_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin create mode 100644 expected/_ZN4sead7MemUtil13checkFillTypeEPKvm.bin create mode 100644 expected/_ZN4sead8EnumUtil15getParseTextCS_Ev.bin create mode 100644 expected/_ZN4sead8EnumUtil20getInitValueArrayCS_Ev.bin create mode 100644 expected/_ZN4sead8JobQueueC1Ev.bin create mode 100644 expected/_ZN4seadmlERKNS_8Color4u8Ef.bin create mode 100644 expected/_ZNK3agl3utl14ParameterCurveILj2EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE.bin create mode 100644 expected/_ZNK3agl3utl14ParameterCurveILj4EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE.bin create mode 100644 expected/_ZNK4ksys3res12ResourceUnit9isParseOkEv.bin create mode 100644 expected/_ZNK4ksys3res21ResourceInfoContainer15getResourceSizeERKN4sead14SafeStringBaseIcEE.bin create mode 100644 expected/_ZNK4ksys3res9AIProgram13getSInstParamEPPKN4sead7Vector3IfEERKNS1_10DefinitionERKNS2_14SafeStringBaseIcEE.bin create mode 100644 expected/_ZNK4ksys3res9AIProgram13getSInstParamEPPKiRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE.bin create mode 100644 expected/_ZNK4ksys3res9ActorLink6hasTagENS_3act3TagE.bin create mode 100644 expected/_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_.bin create mode 100755 tools/dump_function.py diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 4df714d7..292caa4b 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -44229,7 +44229,7 @@ 0x00000071006dfd8c,DamageMgrBase::ctor,76,_ZN4ksys3dmg17DamageManagerBaseC1EPNS_3act5ActorE? 0x00000071006dfdd8,DamageMgrBase::m20,96, 0x00000071006dfe38,DamageMgrBase::resetStuff,20, -0x00000071006dfe4c,DamageMgrBase::applyDamage,500,_ZN4ksys3dmg17DamageManagerBase11applyDamageERi? +0x00000071006dfe4c,DamageMgrBase::applyDamage,500,_ZN4ksys3dmg17DamageManagerBase11applyDamageERi! 0x00000071006e0040,DamageMgrBase::m46,204,_ZN4ksys3dmg17DamageManagerBase21handleDamageForPlayerEPjS2_S2_S2_S2_ 0x00000071006e010c,DamageMgrBase::addDamage,72,_ZN4ksys3dmg17DamageManagerBase9addDamageEliiiiii 0x00000071006e0154,DamageMgrBase::isSlowTime,4, @@ -61527,7 +61527,7 @@ 0x0000007100af9be4,nullsub_5537,4, 0x0000007100af9be8,nullsub_3155,4, 0x0000007100af9bec,nullsub_3156,4, -0x0000007100af9bf0,_ZN4sead13CalculateTaskC1ERKNS_16TaskConstructArgEPKc,296,_ZN4sead13CalculateTaskC1ERKNS_16TaskConstructArgEPKc? +0x0000007100af9bf0,_ZN4sead13CalculateTaskC1ERKNS_16TaskConstructArgEPKc,296,_ZN4sead13CalculateTaskC1ERKNS_16TaskConstructArgEPKc! 0x0000007100af9d18,_ZN4sead13CalculateTaskD2Ev,84,_ZN4sead13CalculateTaskD1Ev 0x0000007100af9d6c,sead::CalculateTask::dtorDelete,92,_ZN4sead13CalculateTaskD0Ev 0x0000007100af9dc8,sead::CalculateTask::getCorrespondingMethodTreeMgrTypeInfo,92, @@ -63403,7 +63403,7 @@ 0x0000007100b50bc8,sub_7100B50BC8,8,_ZN3agl3utl14ParameterCurveILj2EE7typePtrEv 0x0000007100b50bd0,sub_7100B50BD0,8,_ZNK3agl3utl14ParameterCurveILj2EE4sizeEv 0x0000007100b50bd8,_ZNK3agl3utl14ParameterCurveILj2EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE,500,_ZNK3agl3utl14ParameterCurveILj2EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE? -0x0000007100b50dcc,_ZN3agl3utl14ParameterCurveILj2EE18postApplyResource_EPKvm,140,_ZN3agl3utl14ParameterCurveILj2EE18postApplyResource_EPKvm? +0x0000007100b50dcc,_ZN3agl3utl14ParameterCurveILj2EE18postApplyResource_EPKvm,140,_ZN3agl3utl14ParameterCurveILj2EE18postApplyResource_EPKvm! 0x0000007100b50e58,_ZN3agl3utl13ParameterBaseD2Ev,20,_ZN3agl3utl13ParameterBaseD2Ev 0x0000007100b50e6c,j__ZdlPv_647,4,_ZN3agl3utl14ParameterCurveILj4EED0Ev 0x0000007100b50e70,_ZN3agl3utl14ParameterCurveILj4EE4copyERKNS0_13ParameterBaseE,112,_ZN3agl3utl14ParameterCurveILj4EE4copyERKNS0_13ParameterBaseE @@ -63417,7 +63417,7 @@ 0x0000007100b51bec,sub_7100B51BEC,8,_ZN3agl3utl14ParameterCurveILj4EE7typePtrEv 0x0000007100b51bf4,sub_7100B51BF4,8,_ZNK3agl3utl14ParameterCurveILj4EE4sizeEv 0x0000007100b51bfc,_ZNK3agl3utl14ParameterCurveILj4EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE,448,_ZNK3agl3utl14ParameterCurveILj4EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE? -0x0000007100b51dbc,_ZN3agl3utl14ParameterCurveILj4EE18postApplyResource_EPKvm,220,_ZN3agl3utl14ParameterCurveILj4EE18postApplyResource_EPKvm? +0x0000007100b51dbc,_ZN3agl3utl14ParameterCurveILj4EE18postApplyResource_EPKvm,220,_ZN3agl3utl14ParameterCurveILj4EE18postApplyResource_EPKvm! 0x0000007100b51e98,sub_7100B51E98,84, 0x0000007100b51eec,_ZN3agl3utl15ParameterBufferIiED0Ev,68, 0x0000007100b51f30,sub_7100B51F30,8, @@ -88726,7 +88726,7 @@ 0x0000007101166b64,sub_7101166B64,556,_ZN4ksys3res9ActorLink5UsersC2Ev 0x0000007101166d90,nullsub_4611,4,_ZN4ksys3res9ActorLink9doCreate_EPhjPN4sead4HeapE 0x0000007101166d94,nullsub_4612,4,_ZThn632_N4ksys3res9ActorLink9doCreate_EPhjPN4sead4HeapE -0x0000007101166d98,Bxml::parse,428,_ZN4ksys3res9ActorLink6parse_EPhmPN4sead4HeapE? +0x0000007101166d98,Bxml::parse,428,_ZN4ksys3res9ActorLink6parse_EPhmPN4sead4HeapE! 0x0000007101166f44,ResourceBxml::parse,28,_ZThn632_N4ksys3res9ActorLink6parse_EPhmPN4sead4HeapE 0x0000007101166f60,sub_7101166F60,124,_ZN4ksys3res9ActorLink9finalize_Ev 0x0000007101166fdc,sub_7101166FDC,124,_ZThn632_N4ksys3res9ActorLink9finalize_Ev @@ -89479,7 +89479,7 @@ 0x00000071011b9d00,ActorBase::finalizeInit,164,_ZN4ksys3act8BaseProc13finalizeInit_EPNS1_11InitContextE 0x00000071011b9da4,ActorBase::deleteLater,284,_ZN4ksys3act8BaseProc11deleteLaterENS1_12DeleteReasonE 0x00000071011b9ec0,ActorBase::init,196,_ZN4ksys3act8BaseProc4initEPN4sead4HeapEb -0x00000071011b9f84,ActorBase::startPreparingForPreDelete_,108,_ZN4ksys3act8BaseProc27startPreparingForPreDelete_Ev? +0x00000071011b9f84,ActorBase::startPreparingForPreDelete_,108,_ZN4ksys3act8BaseProc27startPreparingForPreDelete_Ev! 0x00000071011b9ff0,ActorBase::free,96,_ZN4ksys3act8BaseProc9destruct_Ei 0x00000071011ba050,ActorBase::requestPreDelete,324,_ZN4ksys3act8BaseProc16processPreDeleteEv 0x00000071011ba194,ActorBase::freeLinkData,24, @@ -89535,7 +89535,7 @@ 0x00000071011bbc0c,BaseProcHandle::wakeUpActorAndReleaseUnit,184, 0x00000071011bbcc4,BaseProcHandle::getBaseProcEvent,48, 0x00000071011bbcf4,BaseProcHandle::allocUnit,228, -0x00000071011bbdd8,BaseProcUnit::setActor,540,_ZN4ksys3act12BaseProcUnit7setProcEPNS0_8BaseProcE? +0x00000071011bbdd8,BaseProcUnit::setActor,540,_ZN4ksys3act12BaseProcUnit7setProcEPNS0_8BaseProcE! 0x00000071011bbff4,BaseProcUnit::cleanUp,512, 0x00000071011bc1f4,BaseProcUnit::unlinkActor,412, 0x00000071011bc390,BaseProcUnit::isParentHandleDefault,24,_ZNK4ksys3act12BaseProcUnit21isParentHandleDefaultEv @@ -90701,7 +90701,7 @@ 0x00000071011fc9c0,OverlayArenaSystem::Struct1::dtor,52,_ZN4ksys12OverlayArenaD1Ev 0x00000071011fc9f4,OverlayArenaSystem::Struct1::destroy,268, 0x00000071011fcb00,OverlayArenaSystem::Struct1::dtorDelete,64,_ZN4ksys12OverlayArenaD0Ev -0x00000071011fcb40,OverlayArena::makeHeap,384,_ZN4ksys12OverlayArena4initERKNS0_7InitArgE? +0x00000071011fcb40,OverlayArena::makeHeap,384,_ZN4ksys12OverlayArena4initERKNS0_7InitArgE! 0x00000071011fccc0,nullsub_4690,4,_ZN4ksys12OverlayArena7stubbedEv 0x00000071011fccc4,sub_71011FCCC4,48,_ZN4ksys12OverlayArena11updateFlag8Eb 0x00000071011fccf4,OverlayArenaSystem::Struct1::callResMgrClearCacheForSync,180,_ZN4ksys12OverlayArena10clearUnitsEv @@ -96921,7 +96921,7 @@ 0x000000710136e9d4,_ZN4sead8JobQueue6FINISHENS_6CoreIdE,116,_ZN4sead8JobQueue6FINISHENS_6CoreIdE 0x000000710136ea48,_ZN4sead11FixedSizeJQ3runEjPjPNS_6WorkerE,712,_ZN4sead11FixedSizeJQ3runEjPjPNS_6WorkerE! 0x000000710136ed10,_ZNK4sead11FixedSizeJQ10getNumJobsEv,8,_ZNK4sead11FixedSizeJQ10getNumJobsEv -0x000000710136ed18,_ZN4sead6WorkerC1EPNS_9WorkerMgrEjiiRKNS_14SafeStringBaseIcEE,236,_ZN4sead6WorkerC1EPNS_9WorkerMgrEjiiRKNS_14SafeStringBaseIcEE? +0x000000710136ed18,_ZN4sead6WorkerC1EPNS_9WorkerMgrEjiiRKNS_14SafeStringBaseIcEE,236,_ZN4sead6WorkerC1EPNS_9WorkerMgrEjiiRKNS_14SafeStringBaseIcEE! 0x000000710136ee04,_ZN4sead6Worker10clearJobQQEv,72,_ZN4sead6Worker10clearJobQQEv 0x000000710136ee4c,sead::Worker::calc_,24,_ZN4sead6Worker5calc_El 0x000000710136ee64,_ZN4sead6Worker12pushJobQueueEPKcPNS_8JobQueueENS_16JobQueuePushTypeE,192,_ZN4sead6Worker12pushJobQueueEPKcPNS_8JobQueueENS_16JobQueuePushTypeE diff --git a/expected/_GLOBAL__sub_I_resResourceActorCapture.cpp.bin b/expected/_GLOBAL__sub_I_resResourceActorCapture.cpp.bin new file mode 100644 index 0000000000000000000000000000000000000000..0a478170b7818c7cff598b1c97c6ffa5987178dd GIT binary patch literal 92 zcmV-i0HgmX0|3wnfjE)r146P26sS_G=J(R;p1|@6DFCS{0|1aINkREb;-~WJ0|GMZ yQjYQpEdi;D+P6{)qM33EApp55EkG$L2|&3DB>=e#B?T!8Ee0tGIRLr917FtE10pp5 literal 0 HcmV?d00001 diff --git a/expected/_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f.bin b/expected/_ZN3agl3utl13IParameterObj8copyLerpERKS1_S3_f.bin new file mode 100644 index 0000000000000000000000000000000000000000..9375e67e037495ee51987fe45f96c76e942baa80 GIT binary patch literal 232 zcmaFCFZ1VHIOEDM{!A~8B7j8IV6EtW`W-~W~NnNnHg6xFxp>J zU}i8YVRQJ|!R4@XE0Dg*z_4W{kZsS%k)6Q65VDoa;pf!<|F>QP%3TA>orKCUFfoK& z1IkSU%7M&gly&&|fLVCe-)d)|-A*gNg*&c%!S3=$fkFNny4V5c_-m#A{%;8Z;tr6z x1RZ`d$gc2vz$~)rA+zYJN6cbiw}H$z`}=>(6d?WO&;Ko8xBUCR^~wML;sB!PY)$|G literal 0 HcmV?d00001 diff --git a/expected/_ZN3agl3utl14IParameterList10removeListEPS1_.bin b/expected/_ZN3agl3utl14IParameterList10removeListEPS1_.bin new file mode 100644 index 0000000000000000000000000000000000000000..66d329d907a278e6fded634df7723f38d0a333c1 GIT binary patch literal 84 zcmV-a0IUD#0|2TDjY0TI0syq>10SmE0}85t0Riiv002~K89@2z0}HBZ|NpfL000y! q7(n?e!2ppz0RZu65r~=!0RZ_Z7(n?*006ZK5CHi<7y$Xe17Fr5B_2%x literal 0 HcmV?d00001 diff --git a/expected/_ZN3agl3utl14IParameterList9removeObjEPNS0_13IParameterObjE.bin b/expected/_ZN3agl3utl14IParameterList9removeObjEPNS0_13IParameterObjE.bin new file mode 100644 index 0000000000000000000000000000000000000000..59a774433014105e76ed8987333ad735fa933649 GIT binary patch literal 84 zcmV-a0IUD#0|2TDjX?NH0syq>10SmE0}85t0Riiv002~K5kUFr0}HBZ|NpfL000y! q5J34WfdG*|0RZu65r~=!0RZ_Z5J34z006ZK2mtv%5CHkW17Fq?{~hE2 literal 0 HcmV?d00001 diff --git a/expected/_ZN3agl3utl14ParameterCurveILj4EEC1ERKN4sead14SafeStringBaseIcEES7_PNS0_13IParameterObjE.bin b/expected/_ZN3agl3utl14ParameterCurveILj4EEC1ERKN4sead14SafeStringBaseIcEES7_PNS0_13IParameterObjE.bin new file mode 100644 index 0000000000000000000000000000000000000000..655ac76766f9e25d7444092af7ba035b43881b1b GIT binary patch literal 212 zcmey$FZ<(*KjX^3)l4h@HZx4*U}gBganSYWXJ&>~^;`@;IUE@#er0A{^?+G)RR$Bo z&lOA#KRI|EetuzQUd6y@e{BJq!_Tsk|I-t=73}?5)f}=sLV(M(uaWf8IXO9(K54+d1dB5mX(=xY(Td=t^DHexbiEz^AAP_1`z%~Yx&CW=k8mO{}U7oh|XE=@&2u&_crCR8XnD-lW#2I3)5l@0{< z+U7QUlw5L?;-SZSFkUxpgDZFtjG8$t>;GGVr}^{#e}CS4OwzJGPb#+l^GxXR#*B^| z=X6}M)NQzCEbQQyK!CeV?^xV$h9Vo($}r*k*e_c+8a#Pu+Q89onz>~+y{~If@=IR* zU4kxskNsurc_#uZLjiRj?H8j4oNprUgd!Il)2>sou(Em;orwVLhGM+F36o^dCv1D1 zK)0!1-E>WoM?cEDeYtcvKYR`q(fv{q``nYHRbF=utowsU7Jkabb%Wf0&97ggtwjSVK{s;f&P}Y(=xCR(4JGKq&4<8S=jq`yu7AOsD+R z@&LKRImkPObmoM5r{sxq7}3dIpS~rn4or3iy;|2T>V>8!t=S8;E{Z94yP)u+>+u^? zKJ!MD5$}1-{CODI=!N1+un2SxDes8%rTqN@5hBMzX@|Kmyq^cka-vT tS*qDv1oSRbU8OqBa`r6CIl|(`15G(OsgI&E_y_8`;z|Gj literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3act13InstParamPack6Buffer3addEPKvRKN4sead14SafeStringBaseIcEEiNS1_9EntryTypeE.bin b/expected/_ZN4ksys3act13InstParamPack6Buffer3addEPKvRKN4sead14SafeStringBaseIcEEiNS1_9EntryTypeE.bin new file mode 100644 index 0000000000000000000000000000000000000000..1710998891f5875a3f9bc6842cda784517e213fd GIT binary patch literal 224 zcmey)FZ1JDIOEDM{!A~8EgkCzc4dvbue*obEq;1eq(0Q`p(R> z>MJwjDtSic!WAqGAupI5esb_S{CvPHzKVg-{#qtmL*)xLho4P#4wD};i>}hLWe|!7 zs?8E&n5bzuf0jq4=8p_Ehe{4b20>1sTm~CMC5NrUWP6|*4xoHkriKMro)x>i10zTG u56A!0!D<*qxIy|en1JR1)n_moEBxySx!pjRjZ@D}x|Nt`lfBH&87|O+8ROx;Y><8B9PkLF$Hg%5VTlR!VTh7>Y&hK!lK3{Kv9NPOa(}cx$vY-;khU~ zz_NXpW@{neD%VAKj-Yy|sCCZGbQr1=4#izeZzv3^Tb*|57=>pwSsVt}a|uW%D!f2L zfuwOk>m#F{% literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3gdt12getFlagColorENS0_8FlagTypeE.bin b/expected/_ZN4ksys3gdt12getFlagColorENS0_8FlagTypeE.bin new file mode 100644 index 0000000000000000000000000000000000000000..ecec279cdaca1a3d5f93e8db6e426e3046f22b27 GIT binary patch literal 360 zcmezG%y97mKf}%!%nTpi@H_0}sC56yDabI9OOatBw;{vC9!>@mkobI6hC&5Sh7b-G zh6!MG3!Q(?=VT~ER;$3l5CT@K%TRcL9l}PIpD)Q!$N&|eZ_7})fDMZpS%$&~tWa|t z844SqY!q`8f#$P7)wnVgCIH!R_rG-iIiDBRT?x!kwT3|Zp==cM1Q`k)n4oG*f%Y>( u*eGg5f&Pbz&$k5H&j1Mv4o_E<@M2(e*sBP{PC%Rt#Q&WcCLUmpzXkv+&uUr# literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin b/expected/_ZN4ksys3res11DamageParam10DamageSize5text_Ei.bin new file mode 100644 index 0000000000000000000000000000000000000000..9520df422f9b87b87ebf6c1ec6a5ff1472d3451e GIT binary patch literal 416 zcmXYuJ4gdT6h+_c7aNc_~&tVie`*~zLGR#(1 zZGBjV>4F5Wtf+}E^pwJLytod$LVYG%1YVc`qb3gq3O$hD&e(d>JEDn)R#nsqTuhC( zbH{frxnFQ5ZYad=@V?0Tve+VOsD^wJ@-a7XC9xBXlfI-%Am%6Gw`b&62+KxXYRJ)_ z?B5u3LAT?_J*C*A<`oyL`H4HpE;IeU1NGzy-y9ihM?SAvMaC><$nVYsn_PREa9HY? z!^t_BkVP_T>z{beVXiYt6|6%Q&MuIJ(kW)}9s#e?p@5^^VsBmwIQN*^e|J#cw;HKs V?0*UWA#7OjMMKCd)(wr9{s7H~qRs#S literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin b/expected/_ZN4ksys3res11DamageParam12DamageSource5text_Ei.bin new file mode 100644 index 0000000000000000000000000000000000000000..590639447cebe57b7cdcb611cfbc67a1ffe12ce1 GIT binary patch literal 404 zcmX9*J4ixN82-<>nCB`DMM<<+LsEB+9#C{Np>U~0u+3=Fnxd_U9u)LgIyBt5&3hrJ zK}hH!)Syi*2~BB})>5SAp}h6q8qfDQ=li}>k6jqGC^0Hi)M%_KM&ky=hXUHV50(-D zk%HniqX2E66z)H_Mn%cR<)jNzOS_g{QNYx$E&UHuAyt?M!M>kZ+zEp#)0W=lg#Ijr zHI4JOL1vuDPs@2XYZy{ zI;JeWisuyeN>b#TxwO4N#`4G5p-PDekd3g7&EZ~E7a-qe7O(y{gU981V|5(258xm8 Mje6`hnNec-Uz*RLDgXcg literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res12ResourceUnit12updateStatusEv.bin b/expected/_ZN4ksys3res12ResourceUnit12updateStatusEv.bin new file mode 100644 index 0000000000000000000000000000000000000000..f6eb4a285f9b84050285be9ed80ce1420692da64 GIT binary patch literal 36 scmd-OXxPcg$q;BS$WXX~fgwbbiD83gpxi`_%8VTx0t`D3Fvnj50GsRz00000 literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res15ResourceMgrTask18controlField9c0d88Eb.bin b/expected/_ZN4ksys3res15ResourceMgrTask18controlField9c0d88Eb.bin new file mode 100644 index 0000000000000000000000000000000000000000..2a423d2539d48691ea715f796f099bd45f159ca1 GIT binary patch literal 88 zcmeAWUJ%5wv9XAQfus8&1A`f7ZG49&D?=b>Emy~?|Nl+p869@AGBAih#RXyF96)i- g633ldjABNbm7+rOtPF)78#|>qN*H$@V2-~A0Gr_&v;Y7A literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res15ResourceMgrTask20setCompactionStoppedEb.bin b/expected/_ZN4ksys3res15ResourceMgrTask20setCompactionStoppedEb.bin new file mode 100644 index 0000000000000000000000000000000000000000..d66b5dcf28025be55f075dd5d942bea867886133 GIT binary patch literal 104 zcmez3zi;K=YQ~j+of#%}2rmfYSl(D9%)rrokb%Lhq%OXrgN-3DqmHv<<^TVttPBhy rP%%N6SSB;Wlnf?^om&_fOge!0Z?)sfFaC#C9AJ*W24g2MGl&2HhmR@k literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res21ResourceInfoContainer21loadResourceSizeTableEv.bin b/expected/_ZN4ksys3res21ResourceInfoContainer21loadResourceSizeTableEv.bin new file mode 100644 index 0000000000000000000000000000000000000000..5e3b2aad8160db8c5838c2f17e8a27c51e2c8850 GIT binary patch literal 504 zcmXw0J!lkB5dPi{Szay}Aq0znENWpc7Q%5NYjbZ^NKOe73_9ScWxUrm`G=~D{DF@qfWlY->Fuh}lUv2cGjH|sBTK*c-nO}=W8(Hl+ z*RCCf{=s|fGWV0bM%P0!{NG0Gzb*5Dk?D8Y;eFo;oL0M zau2FkkgT}~hq(9F4J4H_FmG5>b20PD+EY1T^fkYiM^w@VigJ-I*E!$kU8+E{!ul$E jz2u&Cju#v)zL~?i7I_ot!bQICg}66YjxCYipsPE3a0kDg literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys3res7CounterD0Ev.bin b/expected/_ZN4ksys3res7CounterD0Ev.bin new file mode 100644 index 00000000..41283c91 --- /dev/null +++ b/expected/_ZN4ksys3res7CounterD0Ev.bin @@ -0,0 +1 @@ +×’þ \ No newline at end of file diff --git a/expected/_ZN4ksys3res9AIProgram9finalize_Ev.bin b/expected/_ZN4ksys3res9AIProgram9finalize_Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..a42591158f737e423c293f3394cf51022eeccbc0 GIT binary patch literal 188 zcmez3zi;K=YQ~j+of#&6W@cEG80Gl$Ap^q}4rYc49A{mAGB7&)d=UF@`WK)a69ax{Vv@ZeZjs+lhFgX0=5Oe^#!~R-*6ywjo)s8E_ M_#awvfI0pe0GEhKkN^Mx literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys4util10TaskThread5calc_El.bin b/expected/_ZN4ksys4util10TaskThread5calc_El.bin new file mode 100644 index 0000000000000000000000000000000000000000..3e47814c18d72a33a745f34bb06114defd570cd9 GIT binary patch literal 624 zcmYk4KTO*|6vp3iF)|K+Bm#sGl`KWd&?$l<4+uvgEDQ*+)Cna53ArN@w5k|DurSt> zXGUjc$;Lm44Z#8&?J+QmOA-6^H|d1+SD8-$eUqI~V?AJ2hqvZc)}fKc zs&jpabXvBYQebrkz_hwq*~@{Q{wJN{nIS5;U-&DXwJ%^-IAlEDSIXb`j<9DVK8YT8%Z6?NjFI*nH9>X>==JzOz;gZ&>L-4OYqk+;pdCh4HiWs* zyj;IV-yly0t6g{(R(H0nDlkX6?xO$LEoO&#H*-E~av-PpBb{c(4_{w0K75iU@l<2s z-O)KT=LwxfcfX$KrJBDn?TVNo9%u9TPNv*OA?M0tW*_jvCC%FUe-!8VE@ix$Z1Kby H?y>eC?6efO literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys4util11ManagedTask12detachHandleEv.bin b/expected/_ZN4ksys4util11ManagedTask12detachHandleEv.bin new file mode 100644 index 0000000000000000000000000000000000000000..7acb130605aee9ffbd17bc262dcb9388827bdf23 GIT binary patch literal 108 zcmex=nBn4QZib(KtC?2*ZDyGGnVDhL17?PaEBG0vBnmnF1hH=d*%@&TKRp;3ws7z| z?5vMt_{mWzFC@>&P`HqRAtWKn;b#H^!D()S#Ph8D7S6l!i$CAWzt#LJ{~l(ZsKLnafkV{sCkLa$&o9gj zs~9>Rc3!ObJN+w={f${(>oX9CGcsK0P;#)$U}7-iV_*>Z$;@B`;;&#}FzaA)_{kya z@bdw)$SMX#`)f1V7|b7ZIs7bUV-PHR^LILmIzfcGj;e;8C;t97neF88^B1%HDw&V9 zmqF$xR9F4j&&2Th05e0#E*6F<4a^MYATdcGTLH=rW@VUifC(ZV31lZg+3`R&1CZ@e z?=a~l&@2nZ6H*+^Vq6)F45lD6I2eF#<#qV^5GeNuh(Yd^XJ9De5S}k3#wey`$;`kN z#m+Esjxxi=JHP*LJ^uf{cs&@jza(d literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys4util13TaskQueueBase9fetchTaskEPPNS0_4TaskE.bin b/expected/_ZN4ksys4util13TaskQueueBase9fetchTaskEPPNS0_4TaskE.bin new file mode 100644 index 0000000000000000000000000000000000000000..602bdf9eb3b4494f421a9735eb12b62a35c210d4 GIT binary patch literal 852 zcmaKqPiPZS5XR^2%ch%nkkn>1HEr4yQo6^Ir1q3Y)ml?T3Kb7x8}Q(^ITWE(vD8L_ zqJ$iR(SY%wx9%P#5%wnZ67UqHIY&<+5mcI#ywb4F+63B55082C{(Lk1zA=+R`Do3i z9X=Gb_Oe|&xZ9^SZ%bNd)1h^)3YmQhx+*X(xfth^=s+SB)z6Gq6hauMcL2h@`zpO~ zeE&3INCblGGmN|cZhcR@WbIoNvQ>boq94j{O|#gfKBfDAN&*;YQkXoY=VrX8x9)`S zhLSKg`XIU*|my}aaW+3DJ1mz}`=PPz7m!5g@wN>@XjtxTA zJ9nD3@7SQQGRwGT#Q-zvbU^ta)Gm}DQ1bmgV z{K*Os-m^nNRhZ%EP*FOp7)V~c>MY6_i<#pP23G2 zu!t-cE}CY@+wGD6KJIZ8b2X4K9K@ZPuslGYBgENY_$N%HZ!&>GmAds&^x={h`m0pd zhjH(tBXI_>cz_&x^{xKu0q6hvb68&%kpXH0YNxk4Ig7U>!h)rz`oVaFI-xEn>BKyq K#p)|vuKWWZLP5F! literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys4util4Task13submitRequestERNS0_11TaskRequestE.bin b/expected/_ZN4ksys4util4Task13submitRequestERNS0_11TaskRequestE.bin new file mode 100644 index 0000000000000000000000000000000000000000..fb6309576746e11800a211b210d3585f8484f082 GIT binary patch literal 536 zcmXw0F-#Oe6n!%jU^o&2D<@$icL@n6x8>y|+3E&tpdv9>(0Nkr(p?Azp-?Q$P;MgG z()M;Mi^GH%gT_KFENrNuJ0l%jF~QCHXHTk`H~;_l-+Pk__G>r=bGyZp>`)}xS46jh zrMjfdjX)Xzr+QkMm2vd+ep!MUX|5KU_X%s4<|}kolsV!o>g@0+aACGTWpTi1SDE<4 zgY-(wrC_ZKO+G2>W{37YF5&Hf{)Y1Fk9uUfiQ=vCjXY>i`Be9BCSYv;l|ZydGeZGy b2&`Hz%Cl*Gp5Ns$^)~MRs>h}GfjIsFd;+m) literal 0 HcmV?d00001 diff --git a/expected/_ZN4ksys4util4Task9finalize_Ev.bin b/expected/_ZN4ksys4util4Task9finalize_Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..866ce0837008952f825dd247116a4f839c9342ee GIT binary patch literal 108 zcmV-y0F(do4<7jadjYBaLjaNU0|2UMLO{769RP7a0svHC5(3x0s#4FLO{769RP7a0svHC z5(3x0s#4FLO{769RP7a0svHC z5M@Jj-A1*uVO5Q^O*O(q z`9=$SwNNgtQ{F*fO?0zQMAk*J0A#r#`)I&Pz%NaDhrIy%^DfyV`yjAG;AG-H!T~97 z2@mFs(wFc*+ac8^uvO2}!aGj;rOaI=EPnUml;37Eg%_a>P-@SR>Z9p<${VFPz-2K? zv>XFojs~?d!je2k170Vjq{Zs#n?rCmos}Y^+;d@7+`Cp~>ddMn&D@0YCXTQcjx#fF zO=v9~W#{^!R6nBn8s@ZFA|0E(`iDj-iBywp;0ie4A&H=IV{rAy$%jBOStjS&4j)wX k`0Y2wjP#1wEh6>{iycF1FA-Gxj#d5Uz;OR}t6{A116MwrD*ylh literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead11BitFlagUtil18findOnBitFromRightEji.bin b/expected/_ZN4sead11BitFlagUtil18findOnBitFromRightEji.bin new file mode 100644 index 0000000000000000000000000000000000000000..7c4102492a5fce61657b084a5f40e18246cd989a GIT binary patch literal 116 zcmaFC%%J7L$Y7$$!XU`N&>*DA$`EMJ$x!&3fgywo$o635;L7;_-&BZ!K?Ed!fI0r! zOJ)vl4n|Hc4xl_|En~3eM+PAv-<$I(kgjD4<^a)*oZK9O9^4#ffow$}?dZYHAj$yN F4*(kd7JL8z literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead11BitFlagUtil20findOnBitFromRight64Emi.bin b/expected/_ZN4sead11BitFlagUtil20findOnBitFromRight64Emi.bin new file mode 100644 index 0000000000000000000000000000000000000000..977386103548189f0950428920c238625ca64de0 GIT binary patch literal 172 zcmWlSF$%&!6hvoT1Alj`1nraZdkIMwNhR8=ovjB5Sm!9#+S`kT1iXQuSb2aDXN%99 z$1wc2#i=ql>li6;%rwDr?r``5YoFjz8EN;!aLIv5?5}q7{8+h(ajmd-P1)%WneVrq yGp?3?*9o1wdiFx5&1j{O#s^OdT_Wk4E`p?0&^!BrnUsQFGMD6(&dZI2`1cRo^(bHf literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead11ResourceMgr6createERKNS0_9CreateArgE.bin b/expected/_ZN4sead11ResourceMgr6createERKNS0_9CreateArgE.bin new file mode 100644 index 0000000000000000000000000000000000000000..ab02e1021a9629b14a5b36ec13fb08057b002493 GIT binary patch literal 376 zcmZvYzfZzY5XbNOtP~6-(TIoxI=L`9KpcGh&=`%nG;su7C^n9|u!xh1n%GI5VDvR{ z!+{Ch_zPIY&4h_aNFSuZLly_8Z|?iKyWD+8p{P47pm1}F7#uUvKbjFUS(Y75o#K6sVsB($rc>1v`u+sDYp#emlnf9N{oCv RE{9lq!a8*4f4s?Z?H|dhj%fe@ literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead11TreeMapImplIN4ksys4util13StrTreeMapKeyEE8eraseMinEPNS_11TreeMapNodeIS3_EE.bin b/expected/_ZN4sead11TreeMapImplIN4ksys4util13StrTreeMapKeyEE8eraseMinEPNS_11TreeMapNodeIS3_EE.bin new file mode 100644 index 0000000000000000000000000000000000000000..619cef40a0f8d45caa78948ada3b3165f356d165 GIT binary patch literal 432 zcma)2ty0547~JHNa+gVq2)ec81<1r5pvp@SP{}h?)Z-Wg&yeVQ05muRIX zekXqjfvZ8GtH}G>?cT+!BF6@By0WDXP-yNd`B`-IX2zP{qU}}I$@{pvZHJ4y?R5kv z{w73`aF~^zk6N?x1_FDy4$Fv`xQR>X{nbU8^P3^)8mJF N{OQ%AJDhrd{sF#gimV~jNX90IogAzTh1p;>!%hum2Gfitrit}o3_m$*<2$ri83MU#xjR<>|8Hs!RF}ZO z5R#C@IPsVS!;}mmhKbnJFfszobz;OS*9g@Ax7u;#XLhF_2bklpf!GO33=={8jS>tZ E01a40uK)l5 literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead15SZSDecompressor13DecompContext10initializeEPv.bin b/expected/_ZN4sead15SZSDecompressor13DecompContext10initializeEPv.bin new file mode 100644 index 0000000000000000000000000000000000000000..882cd6d43773e8022cc98c8320a32383fe70333f GIT binary patch literal 32 ncmaFCEMp`u!mv}`fT2>}gTYc>fuWKkgTa!qhGFFa=J;y>cGd_D literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead15SZSDecompressor13DecompContextC1Ev.bin b/expected/_ZN4sead15SZSDecompressor13DecompContextC1Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..314984bc1a90febb31932b62aa378ff7aff22a3f GIT binary patch literal 32 mcmaFCEMp`u!mv}`fT2>}gTYc>fuWKk14!2}tUSORe+>Y4#t16_ literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead17StringBuilderBaseIcE6appendEci.bin b/expected/_ZN4sead17StringBuilderBaseIcE6appendEci.bin new file mode 100644 index 0000000000000000000000000000000000000000..de42db80945b1596cb6dd22cbc5f05ce915cb330 GIT binary patch literal 132 zcmV-~0DJ%TSG}q9PXVd@djhHbg8-590|2UD1ORcX0svHYB0(wEen69T0zml+1praW z0s;$40TxR?0SIeUu!t71E}r?UFd=+#+H!<+XOuwjj!Zv{Pbn2$tF_r04&ojYF}cPWRpW-h2P=_kI7jKmXd>vzWJg zL-BU5a<8`-@p_!OKRGo^!(wBHvu27>Ne}Pe6B}$YO5vW5V zXz`IIv4TI?C->C<U4P-|fI|nzEYqCZ;8;Pu z0vvO;-H)YC85~ut7ZIP+$juCqTRq~yc_W7UrS@hRCNt4Po{UEEu^7D?`!X5mr$q4W zpx98^gi~P2@;F<)o~PQK%WL)L9Zp%vkNvKW8fK1qDRr$kR7pq3EU@uy9sfFNl6_vq z9A)k%`Y3hZL-${^HIK1LrU8#+kSr&1RM^QJ$PGB$|G;to7>AsPMz!JgyDJYgFn#C6 z^-qfK+=cJdN6XGxaIGk8yT!?D!z-9~)*#K9-L!Jj6Vmg8nF-9uC>_oyjaY?Gq~E1q zq~~$I?|HnNzUSLqGins$J!fVxddSSN>JhX2 zs>jSMT2GkewVp9^YJFj5Sfy#rFlGKfhMgx^87^?xy8q;KWSGdo$UL!=iQ#956vNN? zOpH6{D*)`<X%I|6L4hcl1BoGsM9Bn*l2Pze zSZCk)&gPz5-HDd0HEu+;Cf7cL?fV;y;gL_OiX++-Y6#65UCLpPgKDkf!#>bZQZ2E$3{lzloPUS-H5ic^Lu~Z)EQQsawg! z5b}^&T~3~tp>Qz=L&yte`Bg80*h`i{NZWv6;v4paO-YOndmVsk&oDBCXtFX)<(Pn&nL|a6ML)T1KD3R26VDwhmZx02z&C73;`V14nMIDqyx1IN+^<;QVs>#!=PS@c)tswQOxI0 zdqM#-StwFgQkY0Gs7axsAw#2~D4CEeG&yU?h_Z7(ZpuDG8N*;kt=Ib1xaHkh&AETi bg>z@_ZrLL(-*|8DUYFdx;d}m1$()~GbaE>7 literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin b/expected/_ZN4sead6hostio18curveLinear2DVec2_IfEENS_7Vector2IT_EEfPKNS0_13CurveDataInfoEPKS3_.bin new file mode 100644 index 0000000000000000000000000000000000000000..3abca45319bffea96b8f22cfa1c850e1336b8535 GIT binary patch literal 188 zcmY#naM-J$pdiP^%n-uC<6y~E%NXoYDId(q$q=Y`BXbW(E|ZBNzYCv4(i g literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead8EnumUtil15getParseTextCS_Ev.bin b/expected/_ZN4sead8EnumUtil15getParseTextCS_Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..d4fff1e8f854339759c48e55fe56a79fe562d015 GIT binary patch literal 116 zcmey&FZbhbHRH;^&I}V@urf^GNaUNy@%KK52NQ$&10bIv0mwh`fBFGN29wV~esL1- z#0Sj6tCGzarW{~p*l>uI;Q|AX>rbaGjz1p)#aoa5pAOTv@7Vw8f2$o=LioHBKeIdi JIKUi#4FHc3Fe?B6 literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead8EnumUtil20getInitValueArrayCS_Ev.bin b/expected/_ZN4sead8EnumUtil20getInitValueArrayCS_Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..b322cdff6011ec643dca2f7ba1410219be35f999 GIT binary patch literal 116 zcmey&FZbhbHRH;^&I}V@urf^GXyl*B@%KK52NQ$&10bKFfq&xbO?3eG8BMpZ>SnaV3P$H}NyO K(~kqp@z((D6fs)> literal 0 HcmV?d00001 diff --git a/expected/_ZN4sead8JobQueueC1Ev.bin b/expected/_ZN4sead8JobQueueC1Ev.bin new file mode 100644 index 0000000000000000000000000000000000000000..edc2dec99c9d705366644e8707696d78b9264d47 GIT binary patch literal 140 zcmey&FZbhbHRH;^&I}VzvM_A;%*?Rr1S`V_O!lcWW^yt7e96i%K{M3l zCx;`$L`@)0Si~^#Av1$frV_)-dO3!j^-2soC)hDeIl;m(fn%q{#QGwjSQ*343_FIO oFPLRF)jP5MsLun60mU=)z+y%jNenyxRy(fz%jm^w`$pApDc0Ln7}(5H3jp~k1ptsK(Lwns1wi@XLjaND0|1fZ0~4zC0|2V&4*>b-CjhDE{{NSt qA_0+sA_0-&0~j(HasQX#0~MN;^dW literal 0 HcmV?d00001 diff --git a/expected/_ZNK3agl3utl14ParameterCurveILj4EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE.bin b/expected/_ZNK3agl3utl14ParameterCurveILj4EE5cloneEPN4sead4HeapEPNS0_13IParameterObjE.bin new file mode 100644 index 0000000000000000000000000000000000000000..993db8eb9032cbb617cfd41538b8348debd12a7b GIT binary patch literal 284 zcmW+vJxIe)5Wbf)ZESH+jXUQTt=^wfiGRr*`1>UyM6 J#IJZb{R2zva=rin literal 0 HcmV?d00001 diff --git a/expected/_ZNK4ksys3res12ResourceUnit9isParseOkEv.bin b/expected/_ZNK4ksys3res12ResourceUnit9isParseOkEv.bin new file mode 100644 index 0000000000000000000000000000000000000000..b6051461268b9f2152e1ec249ef6fa05ac2ae1b2 GIT binary patch literal 228 zcmXwzuMYuX7{|YlH+VI>DFjEm6U}DQy*Ikebkm4_v@4=WvMHvyO9DYLB!7X#h*ypB zhBJ>KJ=^E=*|YDvzV{=K{HTiQOCYcW*2ApQ(ss3s?($41=a|8A^>O%_DME>xiG0?y z&D_3m>tbpV^uO~4pIMWz8OM~)b0dlGRq2OF1t8~Q0{xM(n8$$BLzqF=P&=oBUK?nJ z0>$Ky16wDL-jZ2|_n3rd7++)(>_TA{*l+$`f;Xg<{{5CfBl27y1mj<q!7f`2w#& BOHu#; literal 0 HcmV?d00001 diff --git a/expected/_ZNK4ksys3res21ResourceInfoContainer15getResourceSizeERKN4sead14SafeStringBaseIcEE.bin b/expected/_ZNK4ksys3res21ResourceInfoContainer15getResourceSizeERKN4sead14SafeStringBaseIcEE.bin new file mode 100644 index 0000000000000000000000000000000000000000..847c80a1046464585122df1be56e36268dd803e0 GIT binary patch literal 380 zcmXAlKTN_<5XSHI0oGQc1`MGlVsxS-!Nj=m{I}>}Vn|F}$_SLDiwkMQ4O1P6CQ2M+ z!BE^xOklz=xwtapCXr3hb^yI6+k1Dv@4oNOon3Ssjo9Buf;~8(_9*YMN0gKXl+=p? zb45RMzbMqZG*}0c=oEa+jbDs!(#Nb>^gz5vBdX*D<5GZRI>y|6GA*AHF!ZXW=q3r| zO!I0clWW`)&@%wZKJpYG*e3i9F{~SV^Oh3zT1tXQx;*|(3fSkfRMbkDY(qnB3bi8E zdsJ2v==aF~Z&3@ptQi3?`X2PpPBIPA{m+>vpbi_#rIF5%dzPMJ0^6UU9eO z)%Ck~+-nKoxa4_!tM zKN&n6e}*tR{G7tTu%(;JVP`!fNA>~+h7e6whCnYxhKZX0|C{nNFo<+8IsD|1b@=&! zS!5Lhqy05`0fxedKy_eoMT9ued?Oa1dXV`bvtKaFYb7u-{QO((xbgurht?PWLn{t2 H$6o^gZyi2d literal 0 HcmV?d00001 diff --git a/expected/_ZNK4ksys3res9AIProgram13getSInstParamEPPKiRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE.bin b/expected/_ZNK4ksys3res9AIProgram13getSInstParamEPPKiRKNS1_10DefinitionERKN4sead14SafeStringBaseIcEE.bin new file mode 100644 index 0000000000000000000000000000000000000000..6b2bbfdd69bd930095426693fdd5fe62dbe40530 GIT binary patch literal 172 zcmez3zi;K=YQ~j+of#%RU}j$Rg_&v9XJ*D#LYMzd?~HQT`GT22%afVGq|3|hy|z~WIjkQ$c_XihM#|{9albJ=Fs}$e`v)4 H=J;y>*&jY> literal 0 HcmV?d00001 diff --git a/expected/_ZNK4ksys3res9ActorLink6hasTagENS_3act3TagE.bin b/expected/_ZNK4ksys3res9ActorLink6hasTagENS_3act3TagE.bin new file mode 100644 index 0000000000000000000000000000000000000000..b2e64d381f33cb953398d6250de9c979e29e27cf GIT binary patch literal 108 zcmd-`aNo(r%22qPfg$7tv%Jv literal 0 HcmV?d00001 diff --git a/expected/_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_.bin b/expected/_ZNK4sead8ObjArrayINS_14SafeStringBaseIcEEE12binarySearchEPKS2_.bin new file mode 100644 index 0000000000000000000000000000000000000000..9e6e364d9f7141d8393b110597465d51542999ab GIT binary patch literal 672 zcmey(FZJVBI^)V8@k}efg)^`G;?J`3Z#C=6zs`&kIT##ver9G|l_A7n@{L(uOG1HR zV!0B-L`hbL!d^~>5DjLA3mj`*eo8SqSZXkfamzC@6ml%>kP@k76y{)d_$hj`_i|w7-VV&w$GBW&^1a2CK;cvg?^SULRm&2w4SWzhstQ<(-*n!2`rO zj6B|N7#K|J8KtrhFffE@vNBAxXLS0={r`Um69afxg0vD>CzCb&BIDeSE0EQ39{uj&)Mxb!86rLh=jctn5eJ06l?eG6X zK;a>Bv+PF)+$|ztzoPSDZl4Nv8zMaRGjY6DU}6Z-28MYTP%ax7?%BX_2f5P+7%sd( z+{?)8{T3KD^BK9ZhK()}VFPndG1z{n8$n?MwEqDxK0x+^!UvcAx=axJ8_?qB3$qwF zd_));gdQ-9X#K5r1*SC@V48CVrah;XztSC7{$_Xkaez7g+J0d8U0F0g>f8VS;s8-% B>8t<% literal 0 HcmV?d00001 diff --git a/tools/check.py b/tools/check.py index 312c97e2..cf432319 100755 --- a/tools/check.py +++ b/tools/check.py @@ -11,8 +11,9 @@ import utils config: Dict[str, Any] = {} diff_settings.apply(config, {}) -base_elf = ELFFile((Path(__file__).parent.parent / config["baseimg"]).open("rb")) -my_elf = ELFFile((Path(__file__).parent.parent / config["myimg"]).open("rb")) +root = Path(__file__).parent.parent +base_elf = ELFFile((root / config["baseimg"]).open("rb")) +my_elf = ELFFile((root / config["myimg"]).open("rb")) my_symtab = my_elf.get_section_by_name(".symtab") if not my_symtab: utils.fail(f'{config["myimg"]} has no symbol table') @@ -46,15 +47,7 @@ def get_fn_from_my_elf(name: str, size: int) -> bytes: return my_elf.stream.read(size) -def check_function(addr: int, size: int, name: str) -> bool: - try: - base_fn = get_fn_from_base_elf(addr, size) - except KeyError: - utils.print_error(f"couldn't find base function 0x{addr:016x} for {utils.format_symbol_name_for_msg(name)}") - return False - - my_fn = get_fn_from_my_elf(name, size) - +def check_function_ex(addr: int, size: int, base_fn: bytes, my_fn: bytes) -> bool: md = cs.Cs(cs.CS_ARCH_ARM64, cs.CS_MODE_ARM) md.detail = True adrp_pair_registers: Set[int] = set() @@ -123,8 +116,23 @@ def check_function(addr: int, size: int, name: str) -> bool: return True +def check_function(addr: int, size: int, name: str, base_fn=None) -> bool: + if base_fn is None: + try: + base_fn = get_fn_from_base_elf(addr, size) + except KeyError: + utils.print_error(f"couldn't find base function 0x{addr:016x} for {utils.format_symbol_name_for_msg(name)}") + return False + + my_fn = get_fn_from_my_elf(name, size) + return check_function_ex(addr, size, base_fn, my_fn) + + def main() -> None: failed = False + + nonmatching_fns_with_dump = {p.stem: p.read_bytes() for p in (root / "expected").glob("*.bin")} + for func in utils.get_functions(): if not func.decomp_name: continue @@ -145,6 +153,12 @@ def main() -> None: utils.print_note( f"function {utils.format_symbol_name_for_msg(func.decomp_name)} is marked as non-matching but matches") + fn_dump = nonmatching_fns_with_dump.get(func.decomp_name, None) + if fn_dump is not None and not check_function(func.addr, len(fn_dump), func.decomp_name, fn_dump): + utils.print_error( + f"function {utils.format_symbol_name_for_msg(func.decomp_name)} does not match expected output") + failed = True + if failed: sys.exit(1) diff --git a/tools/dump_function.py b/tools/dump_function.py new file mode 100755 index 00000000..c26901a1 --- /dev/null +++ b/tools/dump_function.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 + +import argparse +from elftools.elf.elffile import ELFFile +import diff_settings +from pathlib import Path +from typing import Any, Dict +import utils + +config: Dict[str, Any] = {} +diff_settings.apply(config, {}) + +root = Path(__file__).parent.parent +my_elf = ELFFile((root / config["myimg"]).open("rb")) +my_symtab = my_elf.get_section_by_name(".symtab") +if not my_symtab: + utils.fail(f'{config["myimg"]} has no symbol table') + + +def get_file_offset(elf, addr: int) -> int: + for seg in elf.iter_segments(): + if seg.header["p_type"] != "PT_LOAD": + continue + if seg["p_vaddr"] <= addr < seg["p_vaddr"] + seg["p_filesz"]: + return addr - seg["p_vaddr"] + seg["p_offset"] + assert False + + +def get_symbol_file_offset_and_size(elf, table, name: str) -> (int, int): + syms = table.get_symbol_by_name(name) + if not syms or len(syms) != 1: + raise KeyError(name) + return get_file_offset(elf, syms[0]["st_value"]), syms[0]["st_size"] + + +def get_fn_from_my_elf(name: str) -> bytes: + offset, size = get_symbol_file_offset_and_size(my_elf, my_symtab, name) + my_elf.stream.seek(offset) + return my_elf.stream.read(size) + + +def dump_fn(name: str) -> None: + expected_dir = root / "expected" + try: + fn = get_fn_from_my_elf(name) + path = expected_dir / f"{name}.bin" + path.parent.mkdir(exist_ok=True) + path.write_bytes(fn) + except KeyError: + utils.fail("could not find function") + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("function_name", help="Name of the function to dump") + args = parser.parse_args() + + dump_fn(args.function_name) + + +if __name__ == "__main__": + main() diff --git a/tools/progress.py b/tools/progress.py index f18819ca..976f94ab 100755 --- a/tools/progress.py +++ b/tools/progress.py @@ -3,6 +3,7 @@ import argparse from collections import defaultdict from colorama import Back, Fore, Style import enum +from pathlib import Path import utils from utils import FunctionStatus import typing as tp @@ -14,6 +15,8 @@ parser.add_argument("--print-eq", "-e", action="store_true", help="Print non-matching functions with minor issues") parser.add_argument("--print-ok", "-m", action="store_true", help="Print matching functions") +parser.add_argument("--hide-nonmatchings-with-dumps", "-H", help="Hide non-matching functions that have expected " + "output dumps", action="store_true") args = parser.parse_args() @@ -31,6 +34,15 @@ counts: tp.DefaultDict[FunctionStatus, int] = defaultdict(int) ai_counts: tp.DefaultDict[AIClassType, int] = defaultdict(int) ai_counts_done: tp.DefaultDict[AIClassType, int] = defaultdict(int) +nonmatching_fns_with_dump = {p.stem for p in (Path(__file__).parent.parent / "expected").glob("*.bin")} + + +def should_hide_nonmatching(name: str) -> bool: + if not args.hide_nonmatchings_with_dumps: + return False + return name in nonmatching_fns_with_dump + + for info in utils.get_functions(): code_size_total += info.size num_total += 1 @@ -57,10 +69,10 @@ for info in utils.get_functions(): code_size[info.status] += info.size if info.status == FunctionStatus.NonMatching: - if args.print_nm: + if args.print_nm and not should_hide_nonmatching(info.decomp_name): print(f"{Fore.RED}NM{Fore.RESET} {utils.format_symbol_name(info.decomp_name)}") elif info.status == FunctionStatus.Equivalent: - if args.print_eq: + if args.print_eq and not should_hide_nonmatching(info.decomp_name): print(f"{Fore.YELLOW}EQ{Fore.RESET} {utils.format_symbol_name(info.decomp_name)}") elif info.status == FunctionStatus.Matching: if args.print_ok: