diff --git a/asm/include/overlay_29_022E0378.inc b/asm/include/overlay_29_022E0378.inc index bc1f2957..f0ba2af0 100644 --- a/asm/include/overlay_29_022E0378.inc +++ b/asm/include/overlay_29_022E0378.inc @@ -1,223 +1,75 @@ #pragma once -.public sub_0201C000 -.public GetMonsterGenderVeneer -.public sub_0202F918 -.public ov10_022BF45C -.public ov10_022C1DE0 -.public sub_02006BFC -.public ov29_02339CE8 -.public ov29_022DE15C -.public ov29_023372A4 -.public sub_02009454 -.public HasDropeyeStatus -.public sub_020483D8 -.public IsMoneyAllowed -.public sub_020091CC -.public NeedsItemToSpawn -.public ov29_022F9408 -.public ov29_022DE5D8 -.public HandleSir0Translation -.public GetSpriteFileSize -.public RandIntSafe -.public ov29_0234914C -.public sub_020063F4 -.public sub_020094C4 -.public ov10_022C22A0 -.public MemFree -.public LogMessageByIdWithPopupCheckUser -.public ov29_02335774 -.public GetSleepAnimationId -.public ov29_022EAE14 -.public ov10_022BFD20 -.public sub_0201D034 -.public sub_02006564 -.public ov29_0234C738 -.public GetNbPrecedingFloors -.public GetSecondFormIfValid -.public sub_0200B3D4 -.public HasHeldItem -.public ov29_023049A8 -.public ov29_022DE854 -.public IsDestinationFloorWithFixedRoom -.public sub_020483B8 -.public ov29_022DC728 -.public sub_0204AE80 -.public ov29_023386D8 -.public ov29_02336204 -.public ov29_02339148 -.public ov29_022DC778 -.public ov29_02336F4C -.public ov10_022BDC68 -.public DungeonFloorToGroupFloor -.public sub_0204AF58 -.public sub_0200B330 -.public sub_0204AEA0 -.public SetMoneyCarried -.public ov29_022FDDC0 -.public EntityIsValid__022E0354 -.public ov29_022DC694 -.public ov29_022EACE4 -.public ov29_022DDEF8 -.public ov29_022DE134 -.public ov29_02335804 -.public sub_0201CF90 -.public ov10_022BF9CC -.public GetMonsterLevelFromSpawnEntry -.public Memset32 -.public CalcSpeedStageWrapper -.public ov29_0233A0E8 -.public ov29_022DC684 -.public ov29_02338AC4 -.public ov29_0234F25C -.public IsExperienceLocked -.public ov29_0234B4F4 -.public sub_02009194 -.public ov29_02300164 -.public SetMonsterId -.public GetNbFloorsPlusOne -.public IsJirachiChallengeFloor -.public MonsterIsType -.public sub_02027AF0 -.public ov29_022ED0F4 -.public ov10_022BEC94 -.public IsDojoDungeon -.public IsBlinded -.public HandleFaint -.public DungeonRngSetPrimary -.public ov29_0233A248 -.public ov29_02300818 -.public ov29_022ED800 -.public ov29_022DC738 -.public ov29_02343E20 -.public GetItemCategoryVeneer -.public ov29_0230175C -.public sub_0202F8C4 -.public ov29_023457C8 -.public CanMonsterSpawn -.public TeamMemberHasEnabledIqSkill -.public ov29_02303F18 -.public ov29_0233A290 -.public ov29_02344BA8 -.public ov29_022F42D8 -.public Strcpy -.public RemoveAllItems -.public ov29_0230D618 -.public DivideInt -.public GetSpriteIndex__022F7388 -.public ov29_02304954 -.public LogMessageByIdWithPopup -.public MemAlloc -.public ov29_022DC6DC -.public ov29_0234B4E0 -.public DungeonRngSetSecondary -.public GetNbRecruited -.public ov10_022C1E50 -.public GetBgRegionArea -.public ov29_022ED82C -.public ov29_02339A24 -.public Memcpy32 -.public ov29_022DC6E8 -.public InitPreprocessorArgs -.public ov10_022C1E80 -.public sub_020091B0 -.public GetForcedLossReason -.public sub_0201E380 -.public ov29_022EDF7C -.public sub_0201F598 -.public ov29_022DC76C -.public ov29_022DC77C -.public ov29_022ED9D0 -.public LoadFileFromRom__02008C3C -.public sub_0201BFF0 -.public ov29_0234C70C -.public AnimationHasMoreFrames -.public ov29_022DEA10 -.public ov29_0231B3FC -.public ov29_0230027C -.public IsItemForSpecialSpawnInBag -.public ov10_022BF2B4 -.public ov29_0234C668 -.public IsDestinationFloorWithMonster -.public sub_0201C0CC -.public ov10_022C21D8 -.public ov29_0233A1BC -.public sub_02026214 -.public sub_0201BAC8 -.public GetReleasedStylus -.public ov10_022BEFD8 -.public GetScenarioBalance__0204CB94 -.public ov29_0234B1A4 -.public GetKecleonIdToSpawnByFloor -.public IsFloorOver -.public sub_0201B9F8 -.public GetSpriteSize -.public ov29_02335F40 -.public Abs -.public sub_020090A0 -.public ov29_0234B854 -.public ov29_022DE11C -.public LoadWteFromFileDirectory -.public ov29_0234B0B4 -.public ov29_02335760 -.public GetTile -.public ov10_022C2278 -.public ov29_0233711C -.public CanSeeInvisibleMonsters -.public ov10_022BF274 -.public GetMonsterIdFromSpawnEntry -.public ov29_022DE5F0 -.public GetHeldButtons -.public ov10_022BDE50 -.public sub_0204AEC0 -.public ov10_022BFB6C -.public ov29_0234B034 -.public sub_0201B43C -.public ov29_0234F290 -.public GetEffectAnimationField0x19 -.public ov29_0230473C -.public ov29_02339FF4 -.public GetTileSafe -.public ov29_02339D7C -.public SetMinimapDataE447 -.public DungeonGoesUp -.public ov29_02335A10 -.public ov29_022DE638 -.public DisplayMessage2 -.public ov29_023356C0 -.public SetMinimapDataE448 -.public ov29_023391EC -.public ov29_022DEA1C -.public ov29_022F7068 -.public ov10_022BF8E8 -.public GetMaxPpWrapper -.public ov29_0234F2B8 -.public ov29_02304830 -.public ov29_0234F278 -.public ov29_0230040C -.public ov29_023361D4 -.public ov29_02349378 -.public StringFromMessageId -.public ov29_022DD7D8 -.public ov29_022DE9F8 -.public IsCurrentMissionType -.public FloorNumberIsEven -.public ov29_022FB5EC -.public UnloadWte -.public AbilityIsActive2 .public AllocAndLoadFileInPack -.public sub_02008F3C -.public ov29_022DE954 -.public UnloadFile -.public ov29_023046E8 -.public MemZero -.public sub_02051E20 -.public ov29_022DD8B4 -.public sub_02048400 -.public ov10_022BEC08 -.public ov29_02339138 -.public GetPressedButtons -.public sub_02048384 -.public ov29_022EACCC -.public ov29_022DC6D0 -.public ov29_023047DC +.public CalcSpeedStageWrapper +.public DisplayMessage2 +.public DungeonGoesUp +.public EntityIsValid__022E0354 +.public EntityIsValid__022E1A1C +.public GetBgRegionArea +.public GetForcedLossReason +.public GetHeldButtons +.public GetLeader .public GetMaxItemsAllowed +.public GetMaxPpWrapper +.public GetPressedButtons +.public GetReleasedStylus +.public GetScenarioBalance__0204CB94 +.public GetTileSafe +.public HandleFaint +.public HandleSir0Translation +.public IsExperienceLocked +.public IsFloorOver +.public IsJirachiChallengeFloor +.public IsMoneyAllowed +.public LoadWteFromFileDirectory +.public Memcpy32 +.public Memset32 +.public RemoveAllItems +.public SetMinimapDataE447 +.public SetMoneyCarried +.public UnloadFile +.public UnloadWte +.public ov29_022DD7D8 +.public ov29_022DE15C +.public ov29_022DE854 +.public ov29_022E34B0 +.public ov29_022E38E0 +.public ov29_022E3A40 +.public ov29_022E68BC +.public ov29_022E8270 +.public ov29_022E8778 +.public ov29_022E8BFC +.public ov29_022E9FD0 +.public ov29_022EA370 +.public ov29_022ED9D0 +.public ov29_022FDDC0 +.public ov29_02303F18 +.public ov29_023046E8 +.public ov29_023356C0 +.public ov29_02335760 +.public ov29_02335774 +.public ov29_02335804 +.public ov29_02336204 +.public ov29_0233A248 +.public ov29_023457C8 +.public ov29_0234B034 +.public ov29_0234B0B4 +.public ov29_0234B1A4 +.public ov29_0234C668 +.public ov29_0234C738 +.public sub_020063F4 +.public sub_02006564 +.public sub_02006BFC +.public sub_02008F3C +.public sub_020090A0 +.public sub_02009194 +.public sub_020091B0 +.public sub_020091CC +.public sub_02009454 +.public sub_020094C4 +.public sub_0201B43C +.public sub_0201BFF0 +.public sub_0201C0CC +.public sub_0201E380 +.public sub_0201F598 +.public sub_0204AE80 diff --git a/asm/include/overlay_29_022E1A40.inc b/asm/include/overlay_29_022E1A40.inc new file mode 100644 index 00000000..1d84dd06 --- /dev/null +++ b/asm/include/overlay_29_022E1A40.inc @@ -0,0 +1,42 @@ +#pragma once +.public Abs +.public CanSeeInvisibleMonsters +.public EntityIsValid__022E1A1C +.public EntityIsValid__022E32E8 +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public GetSpriteSize +.public GetTileSafe +.public HasDropeyeStatus +.public IsBlinded +.public IsPositionInSight +.public ItemIsActive__022E330C +.public Strcpy +.public StringFromMessageId +.public TeamMemberHasEnabledIqSkill +.public ov29_022DE954 +.public ov29_022DE9F8 +.public ov29_022DEA10 +.public ov29_022DEA1C +.public ov29_022E34C8 +.public ov29_022E3534 +.public ov29_022E3A58 +.public ov29_022E90CC +.public ov29_022ED82C +.public ov29_022EDF7C +.public ov29_022F9408 +.public ov29_02300164 +.public ov29_0230040C +.public ov29_023047DC +.public ov29_02304830 +.public ov29_02304954 +.public ov29_02336F4C +.public ov29_0233711C +.public ov29_023372A4 +.public ov29_023386D8 +.public ov29_023391EC +.public ov29_02339CE8 +.public ov29_02344BA8 +.public ov29_0234B034 +.public sub_02009194 +.public sub_020091B0 diff --git a/asm/include/overlay_29_022E330C.inc b/asm/include/overlay_29_022E330C.inc new file mode 100644 index 00000000..f8d432b3 --- /dev/null +++ b/asm/include/overlay_29_022E330C.inc @@ -0,0 +1,22 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public AnimationHasMoreFrames +.public EntityIsValid__022E37B8 +.public GetEffectAnimationField0x19 +.public GetTileSafe +.public HasHeldItem +.public LogMessageByIdWithPopupCheckUser +.public ov10_022BF274 +.public ov10_022BF2B4 +.public ov10_022BF8E8 +.public ov10_022BFD20 +.public ov29_022E2C6C +.public ov29_022E2EC4 +.public ov29_022E38E0 +.public ov29_022E5ED0 +.public ov29_02335A10 +.public ov29_02336F4C +.public ov29_02339CE8 +.public sub_0201C000 +.public sub_0201CF90 diff --git a/asm/include/overlay_29_022E37DC.inc b/asm/include/overlay_29_022E37DC.inc new file mode 100644 index 00000000..41ec146c --- /dev/null +++ b/asm/include/overlay_29_022E37DC.inc @@ -0,0 +1,131 @@ +#pragma once +.public Abs +.public AdvanceFrame +.public AnimationHasMoreFrames +.public CanMonsterSpawn +.public DungeonFloorToGroupFloor +.public DungeonGoesUp +.public DungeonRandInt +.public DungeonRngSetPrimary +.public DungeonRngSetSecondary +.public EntityIsValid__022E37B8 +.public EntityIsValid__022E95F4 +.public FloorNumberIsEven +.public GetEffectAnimationField0x19 +.public GetFloorType +.public GetItemCategoryVeneer +.public GetKecleonIdToSpawnByFloor +.public GetMonsterGenderVeneer +.public GetMonsterIdFromSpawnEntry +.public GetMonsterLevelFromSpawnEntry +.public GetNbFloorsPlusOne +.public GetNbPrecedingFloors +.public GetNbRecruited +.public GetSecondFormIfValid +.public GetSleepAnimationId +.public GetSpriteFileSize +.public GetSpriteIndex__022F7388 +.public GetSpriteSize +.public GetTile +.public HandleSir0Translation +.public InitPreprocessorArgs +.public IsCurrentMissionType +.public IsDestinationFloorWithFixedRoom +.public IsDestinationFloorWithMonster +.public IsDojoDungeon +.public IsItemForSpecialSpawnInBag +.public LoadFileFromRom__02008C3C +.public LogMessageByIdWithPopup +.public MemAlloc +.public MemFree +.public MemZero +.public MonsterIsType +.public NeedsItemToSpawn +.public RandIntSafe +.public SetMinimapDataE447 +.public SetMinimapDataE448 +.public SetMonsterId +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public UnloadFile +.public ov10_022BDC68 +.public ov10_022BDE50 +.public ov10_022BEC08 +.public ov10_022BEC94 +.public ov10_022BEFD8 +.public ov10_022BF274 +.public ov10_022BF2B4 +.public ov10_022BF45C +.public ov10_022BF9CC +.public ov10_022BFB6C +.public ov10_022C1DE0 +.public ov10_022C1E50 +.public ov10_022C1E80 +.public ov10_022C21D8 +.public ov10_022C2278 +.public ov10_022C22A0 +.public ov29_022DC684 +.public ov29_022DC694 +.public ov29_022DC6D0 +.public ov29_022DC6DC +.public ov29_022DC6E8 +.public ov29_022DC728 +.public ov29_022DC738 +.public ov29_022DC76C +.public ov29_022DC778 +.public ov29_022DC77C +.public ov29_022DE5D8 +.public ov29_022DE5F0 +.public ov29_022E0864 +.public ov29_022E0880 +.public ov29_022E272C +.public ov29_022E2CA0 +.public ov29_022E333C +.public ov29_022E35E4 +.public ov29_022EA370 +.public ov29_022EA718 +.public ov29_022EACCC +.public ov29_022EACE4 +.public ov29_022EAE14 +.public ov29_022ED0F4 +.public ov29_022F42D8 +.public ov29_022F7068 +.public ov29_022FB5EC +.public ov29_0230027C +.public ov29_023049A8 +.public ov29_0230D618 +.public ov29_0231B3FC +.public ov29_023361D4 +.public ov29_02339138 +.public ov29_02339148 +.public ov29_02339CE8 +.public ov29_02339D7C +.public ov29_0233A0E8 +.public ov29_0233A1BC +.public ov29_02343E20 +.public ov29_0234914C +.public ov29_02349378 +.public ov29_0234B1A4 +.public ov29_0234B4E0 +.public ov29_0234C668 +.public ov29_0234C70C +.public ov29_0234F25C +.public ov29_0234F278 +.public ov29_0234F290 +.public ov29_0234F2B8 +.public sub_0200B330 +.public sub_0200B3D4 +.public sub_0201B9F8 +.public sub_0201C000 +.public sub_0201CF90 +.public sub_0201D034 +.public sub_02026214 +.public sub_02027AF0 +.public sub_0202F8C4 +.public sub_0202F918 +.public sub_02048384 +.public sub_020483B8 +.public sub_020483D8 +.public sub_02048400 +.public sub_0204AEA0 +.public sub_0204AF58 diff --git a/asm/include/overlay_29_022E9618.inc b/asm/include/overlay_29_022E9618.inc new file mode 100644 index 00000000..66c55e9e --- /dev/null +++ b/asm/include/overlay_29_022E9618.inc @@ -0,0 +1,37 @@ +#pragma once +.public Abs +.public DivideInt +.public EntityIsValid__022E95F4 +.public GetLeader +.public GetTile +.public MemAlloc +.public MemFree +.public ov29_022DD8B4 +.public ov29_022DDEF8 +.public ov29_022DE11C +.public ov29_022DE134 +.public ov29_022DE638 +.public ov29_022E1854 +.public ov29_022E2EC4 +.public ov29_022E335C +.public ov29_022E886C +.public ov29_022E8C10 +.public ov29_022ED800 +.public ov29_02300818 +.public ov29_0230175C +.public ov29_0230473C +.public ov29_02335A10 +.public ov29_02335F40 +.public ov29_02338AC4 +.public ov29_02339A24 +.public ov29_02339CE8 +.public ov29_02339FF4 +.public ov29_0233A248 +.public ov29_0233A290 +.public ov29_0234B1A4 +.public ov29_0234B4F4 +.public ov29_0234B854 +.public sub_0201BAC8 +.public sub_0204AEA0 +.public sub_0204AEC0 +.public sub_02051E20 diff --git a/asm/include/overlay_29_022EAB50.inc b/asm/include/overlay_29_022EAB50.inc index 8f566ad5..784e11c7 100644 --- a/asm/include/overlay_29_022EAB50.inc +++ b/asm/include/overlay_29_022EAB50.inc @@ -1,873 +1,69 @@ #pragma once -.public ov29_022E9A9C -.public sub_02026268 -.public ov29_022E4C84 -.public GetMoveType -.public SetBothScreensWindowsColor -.public ov10_022BF7D4 -.public sub_02008F88 -.public ov10_022BFD8C -.public GetBaseHp -.public GetShadowSize -.public ov29_022E47C0 -.public ov29_022E3FCC -.public AddMoneyCarried -.public sub_0200FBE0 -.public GetMonsterIdFromSpawnEntry -.public sub_0204AED0 -.public sub_02026214 -.public sub_02003990 -.public sub_020038D8 -.public ov29_022E68D8 -.public sub_02055D7C -.public FixedPoint64ToInt -.public GetOutlawMinionLevel -.public ov29_022E647C -.public ov29_022E5BD8 -.public ov29_022E3590 -.public GetFileLengthInPackWithPackNb -.public Memcpy32 -.public sub_020038E8 -.public sub_0200CC38 -.public sub_02048360 -.public ov29_022E3580 -.public ov29_022E44CC -.public GetSpriteFileSize -.public ov29_022E576C -.public ov30_023838E4 -.public IsOneHitKoMove -.public GetNameString -.public ov29_022E3570 -.public sub_0202F23C -.public sub_0202ABB0 -.public GetNameRaw -.public GetEvolutions -.public sub_0204E114 -.public sub_02027B1C -.public ov31_02387660 -.public sub_02056698 -.public sub_0201551C -.public ClearItem -.public FormatMoveStringMore -.public ov29_022E40B8 -.public GetMonsterGenderVeneer -.public DungeonAlloc -.public ov10_022BF01C -.public sub_02058EB0 -.public sub_02056264 -.public Rand16Bit -.public GendersEqualNotGenderless -.public ov29_022EA370 -.public ov29_022E6214 -.public ov29_022E5650 -.public ov10_022BF764 -.public ov29_022E60E4 -.public sub_02053250 -.public sub_02001AB0 -.public GetBgRegionArea -.public IsItemInBag -.public sub_0201405C -.public ov29_022E1608 -.public sub_02030214 -.public sub_02050FF8 -.public ov29_022E4B3C -.public sub_0202AB80 -.public ov29_022E9A6C -.public ov29_022EA718 -.public DivideFixedPoint64 -.public IsUnown -.public sub_02054FB8 -.public sub_02055CCC -.public sub_0200FAEC -.public ov29_022E0C64 -.public ov10_022BFD20 -.public ov29_022DE300 -.public GetMoveAnimation -.public AddItemToBagNoHeld -.public ov29_022E3F78 -.public GetSize -.public sub_0201C0CC -.public IqSkillFlagTest -.public ZInit8 -.public DungeonGoesUp -.public ov29_022E4108 -.public sub_01FFBDF4 -.public sub_02017A00 -.public ov29_022DE0EC -.public ov29_022E46D0 -.public JoinedAtRangeCheck -.public GetExp -.public GetItemSpriteId -.public sub_02015588 -.public sub_020282F4 -.public sub_0204AEE0 -.public ov29_022E7C60 -.public sub_02051DD0 -.public ov29_022E6D68 -.public GetOutlawLeaderLevel -.public GetMoveBasePp -.public GetInfoMoveCheckId -.public ov30_02382C68 -.public sub_0204AEB0 -.public IsExpEnabledInDungeon -.public sub_0202AAE8 -.public sub_0202A5CC -.public EnableIqSkill -.public LoadFileFromRom__02008C3C -.public IsEdible -.public sub_020348E4 -.public sub_020017EC -.public ov01_0233103C -.public sub_0203083C -.public ov29_022E28D4 -.public Strncpy -.public sub_02017BEC -.public ov10_022BED90 -.public GetBaseForm -.public CanTargetEntity -.public sub_02048134 -.public GetExplorerMazeMonster -.public ov29_022E2A38 -.public ov29_022E4AF0 -.public SetPortraitUnknownAttr -.public ov29_022E42E0 -.public GetDungeonTipShown -.public SetItemAcquired -.public ov29_022E4C00 -.public ov29_022E57D4 -.public ov29_022E406C -.public ov29_022E4CD4 -.public GetMoveCritChance -.public sub_0201BF4C -.public ov29_022E5068 -.public IsHM -.public GetTreasureBoxChances -.public ov29_022E0DF0 -.public GetKeyboardStringResult -.public RemoveEmptyItemsInBag -.public sub_02054FEC -.public sub_020018A4 -.public ov29_022DD828 -.public SetAdventureLogDungeonFloor -.public ov29_022DDFFC -.public ov29_022E9618 -.public AllocAndLoadFileInPack -.public IsMonsterIdInNormalRange__02056294 -.public ov29_022DDD50 -.public sub_02017ACC -.public sub_0201E080 -.public ov29_022E46D4 -.public LoadWtuFromBin -.public ov29_022E41DC -.public ov29_022E476C -.public sub_0200B3D4 -.public sub_0202F954 -.public ov29_022DE608 -.public ov31_0238704C -.public DungeonRandInt -.public IsDBoxActive -.public ov30_023851C0 -.public ov31_0238878C -.public ov29_022E3ED0 -.public ov29_022E5478 -.public RetrieveFromItemList1 -.public IsAffectedByTaunt -.public UpdateMapSurveyorFlag -.public GetAcceptedMission -.public sub_0201BE28 -.public CanMonsterSpawn -.public sub_02057CE8 -.public ov29_022E4668 -.public ov29_022E0B60 -.public GetMovesetLevelUpPtr -.public ov29_022E43D8 -.public IsRecoilMove -.public sub_0201116C -.public IsCopyingMove -.public sub_0203909C -.public sub_0202F334 -.public sub_02051DFC -.public RunDungeon -.public ov30_023829CC -.public ov29_022DE0CC -.public FreeDBox -.public UnloadOverlay -.public IsCherrim -.public ov29_022E6510 -.public sub_02028E40 -.public sub_02006B70 -.public sub_0204833C -.public ov29_022E45B8 -.public ov29_022E2418 -.public ov29_022E6644 -.public ov29_022E2978 -.public ov29_022E4AA4 -.public ov29_022E0F14 -.public ov29_022E8104 -.public InitPreprocessorArgs -.public ov29_022E4290 -.public sub_02052E2C -.public ov29_022E0CFC -.public DebugPrint0__0200C1FC -.public ov10_022BFD58 -.public sub_02006EC4 -.public IsNotMoney -.public ov29_022DDFF0 -.public TestItemAiFlag -.public CanThrowItems -.public Strcat -.public HasPlayedOldGame -.public sub_0204AF20 -.public sub_020149C0 -.public sub_0205B77C -.public sub_0204AF30 -.public SubFixedPoint -.public ov31_02388714 -.public ov29_022E0DD8 -.public AnimationHasMoreFrames -.public ov29_022E3DD8 -.public ov29_022E1A40 -.public ov29_022E3E74 -.public sub_02009120 -.public ov29_022E2314 -.public sub_02039218 -.public ov29_022E47C8 -.public ov31_023860A4 -.public sub_0205BAB0 -.public DungeonZInit -.public FixedPoint64IsZero -.public Arm9LoadUnkFieldNa0x2029EC8 -.public ov29_022E2470 -.public sub_02053904 -.public sub_0200F9B4 -.public ov29_022E65F4 -.public FixedPoint32To64 -.public ov29_022E1D2C -.public ov29_022E7BE8 -.public ov29_022E4430 -.public sub_0204F7A8 -.public sub_02025314 -.public ov30_0238298C -.public ov29_022E1C84 -.public ov10_022C2574 -.public GetTileAtEntity -.public sub_0204AEF0 -.public ov29_022E5E84 -.public GetLeader -.public sub_02058C3C -.public ShowKeyboard -.public MemFree -.public sub_02050964 -.public ov29_022E87FC -.public ov29_022E7A8C -.public GetRecruitRate1 -.public ov29_022E456C -.public sub_02055020 -.public ov29_022E410C -.public ov10_022BFC5C -.public GetHero -.public sub_02051EB8 -.public UnloadFile -.public sub_02028E2C -.public RandInt -.public IsReflectedByMagicCoat -.public ov29_022DC61C -.public GetOutlawLevel -.public SetMonsterFlag2 -.public ov29_022E3F20 -.public sub_0204F1B4 -.public sub_0201C458 -.public ov29_022E3F7C -.public sub_0200D894 -.public PreprocessString -.public ov29_022E4BB4 -.public DivideInt -.public ov29_022E6338 -.public RandIntSafe -.public ov29_022E1C0C -.public IsBagFull -.public ov29_022E4E74 -.public sub_02003A40 -.public ov29_022E3E24 -.public ov01_023310E4 -.public GetMonsterLevelFromSpawnEntry -.public GetLowKickMultiplier -.public PointsToZero -.public ov31_02388E88 -.public sub_0201DE10 -.public CheckTeamMemberIdx__02056228 -.public ov31_023886DC -.public GetChebyshevDistance -.public IsMoveRangeString19 -.public sub_02017C74 -.public ov10_022BEB2C -.public ov29_022E5D68 -.public ov29_022E9FD0 -.public sub_0201E730 -.public ov10_022C26A0 -.public sub_0201D7E0 -.public CanEnemyEvolve -.public StringFromMessageId -.public sub_0205858C -.public sub_02027148 -.public ov29_022DE498 -.public ov30_023853E0 -.public ov29_022E1B28 -.public ov29_022DDB68 -.public ov29_022E486C -.public FixedPoint64CmpLt -.public StrncpySimple -.public ov29_022E38E0 -.public sub_0201CF90 -.public ov29_022E64C4 -.public ov31_0238647C -.public GetMonsterGender -.public ov29_022E555C -.public ov29_022E2930 -.public sub_02017A68 -.public ov29_022E4480 -.public ov29_022E5864 -.public ov10_022BF160 -.public sub_0201C418 -.public ShuffleHiddenPower -.public ov29_022DDCA0 -.public SubstitutePlaceholderStringTags -.public GetMoveTargetAndRange -.public sub_0201BE5C -.public sub_02050F78 -.public ov29_022E8848 -.public ov29_022E0C80 -.public GetPressedButtons -.public IsTrappingMove -.public FailsWhileMuzzled -.public sub_02058674 -.public sub_020480CC -.public RoundUpDiv256 -.public sub_0201D804 -.public SetDungeonTipShown -.public ov29_022E62A8 -.public ov10_022BF0F4 -.public IsFutureDungeon -.public ov29_022E40BC -.public ov00_022BFDEC -.public sub_020178A8 -.public GetGameMode -.public ov29_022DC65C -.public sub_02050EBC -.public sub_02051D8C -.public ov29_022E7BD0 -.public ov30_02382E18 -.public ov29_022E1610 -.public ov29_022E2E54 -.public ov29_022E4BA0 -.public HidePortraitBox -.public MemZero -.public DungeonFree -.public ov29_022E4B8C -.public GetMoveNbStrikes -.public ov29_022E7BB8 -.public ov29_022E3F74 -.public ov30_02382874 -.public sub_020039E4 -.public ov29_022E3430 -.public IsItemValidVeneer -.public ov29_022E1F34 -.public ov29_022E1A84 -.public ov29_022E2498 -.public ov29_022E81F8 -.public sub_0201D198 -.public ov29_022E5728 -.public ov29_022E66C4 -.public ov29_022DE0A0 -.public ClampedLn -.public ov29_022E4674 -.public GetBaseOffensiveStat -.public SetPokemonJoined -.public ov29_022DDA54 -.public sub_0204AFF8 -.public ov29_022E4338 -.public ov29_022E08A0 -.public ov29_022E471C -.public ReplaceWanFromBinFile -.public sub_0201F464 -.public sub_0200D1FC -.public RemoveItem -.public sub_02017B18 -.public ov29_022E4110 -.public GetCurrentBagCapacity -.public sub_0201B9F8 -.public ov29_022E3A40 -.public sub_0201F2A0 -.public sub_02008F84 -.public ov30_023853BC -.public sub_0200FA68 -.public ov29_022E4294 -.public sub_02017B58 -.public StoryRestrictionsEnabled -.public ov29_022DEA10 -.public sub_0202AB94 -.public IsRecruitingAllowed -.public sub_01FFB62C -.public ov29_022E272C -.public ov29_022E37DC -.public IsCastform -.public sub_02061DC8 -.public sub_02001888 -.public GetMoveAnimationSpeed -.public IsTreasureBox -.public JoinedAtRangeCheck2 -.public RemoveEquivItem -.public ov29_022E415C -.public NeedsItemToSpawn -.public sub_0202F474 -.public sub_02008ED0 -.public ov29_022E3FC8 -.public ov29_022E55F0 -.public ov29_022DDE24 -.public ov01_023315F4 -.public sub_02030044 -.public GetCanMoveFlag -.public ov29_022E543C -.public ov29_022E510C -.public Strlen -.public ov29_022E0C3C -.public sub_0202FFB0 -.public sub_02001808 -.public ov31_02388534 -.public GetExclusiveItem -.public ov29_022E333C -.public CanLearnIqSkill -.public ov31_02386204 -.public ov10_022C25EC -.public ov29_022E68F0 -.public sub_0200CF6C -.public CeilFixedPoint -.public ov31_02386308 -.public GetVictoriesOnOneFloor -.public GetStringFromFileVeneer -.public ov29_022DE620 -.public sub_02009514 -.public ov29_022E563C -.public ov10_022C2654 -.public ov29_022E4914 -.public IntToFixedPoint64 -.public ov29_022E1EF8 -.public DungeonRequestsDoneWrapper -.public ov29_022E41B0 -.public ov29_022E4D24 -.public sub_0205A450 -.public sub_0208FC8C -.public TryForcedLoss -.public TreasureBoxDropsEnabled -.public ov29_022E8834 -.public GetMonsterEvoStatus -.public sub_020305E4 -.public sub_0204F9CC -.public sub_020091CC -.public GetMonsterLevelToSpawn -.public ov29_022DDB98 -.public ov29_022E0E44 -.public GetType -.public ov29_022E4964 -.public ov29_022E53F0 -.public GetRegenSpeed -.public ov10_022BFAA8 -.public sub_02017C80 -.public ov29_022E53EC -.public sub_0203931C -.public RemoveHeldItemNoHole -.public ov29_022E9A0C -.public ov29_022DE868 -.public sub_0201D034 -.public sub_0201BF64 -.public GetEffectAnimation -.public LoadWteFromFileDirectory -.public DisableIqSkill -.public sub_02017B7C -.public ov29_022E66D8 -.public ov29_022E2018 -.public ov29_022E4388 -.public GetName -.public ov10_022BDE50 -.public ov29_022E5FE8 -.public GetItemIndex -.public GroundToDungeonMoveset -.public GetDungeonPtrMaster -.public CheckAcceptedMissionByTypeAndDungeon -.public ov29_022E0A64 -.public ov29_022E6130 -.public ov30_023829A0 -.public GetKeyboardStatus -.public ov29_022E5DBC -.public ov29_022E9628 -.public ov29_022E9A28 -.public sub_020091F8 -.public GetSpriteIndex__020526EC -.public ov29_022E6770 -.public ov30_0238367C -.public ov29_022E4DCC -.public ov29_022E4C4C -.public sub_0201C0E8 -.public Vsprintf -.public ov29_022DDDA4 -.public ov29_022E68BC -.public ov10_022BFD6C -.public ov29_022E6784 -.public ChooseAiMove -.public sub_02027AF0 -.public ov29_022E3A58 -.public ov29_022E3F24 -.public LightningRodStormDrainCheck -.public sub_0200B3FC -.public sub_0200C008 -.public ov29_022E466C -.public ov29_022E3560 -.public ov29_022E2260 -.public ov29_022E6260 -.public Strcmp -.public ov29_022E7A30 -.public sub_02017C50 -.public ov10_022C2588 -.public AiMovement -.public IsSpecialEpisodeDungeon -.public IsSkyExclusiveDungeon -.public FormatMoveString -.public GetDirectionTowardsPosition -.public ov30_02382C30 -.public sub_02034710 -.public Strcpy -.public sub_0200FB54 -.public GetFloorType -.public ov10_022BF964 -.public AddItemToBag -.public ov29_022E48B8 -.public ov31_02386C6C -.public ov29_022E40C0 -.public sub_02053038 -.public ov29_022E4670 -.public ov10_022BFDCC -.public DecrementStackItem -.public GetTalkLine -.public ov29_022E465C -.public ov10_022C2720 -.public sub_02058534 -.public sub_0200B330 -.public sub_0200D8AC -.public sub_02009194 -.public ov29_022E6724 -.public IsSoundMove -.public ov29_022E1AAC -.public ov29_022E45D0 -.public GetMoveMaxGinsengBoost -.public sub_02024FB8 -.public sub_02051E60 -.public SetVictoriesOnOneFloor -.public sub_02017B64 -.public ov30_02385FE0 -.public ov29_022EA428 -.public GetMoveMessageFromId -.public ov29_022E20C0 -.public sub_0200CCE0 -.public ov29_022DE418 -.public sub_0202715C -.public TickStatusTurnCounter -.public ov29_022E6E80 -.public sub_0201DDFC -.public ov29_022E35E4 -.public DungeonRandRange -.public ov29_022E41AC -.public ov29_022E52F8 -.public sub_0201D1B0 -.public ov29_022E5A00 -.public sub_0200F910 -.public ov10_022BDC68 -.public BinToDecFixedPoint -.public ov29_022E4428 -.public sub_02034A80 -.public ov29_022E6DD0 -.public sub_020534BC -.public ov29_022E0DE4 -.public IsHealingWishOrLunarDance -.public ov29_022E274C -.public ov29_022DDE00 -.public ov29_022E4068 -.public sub_0201D1D4 -.public MultiplyByFixedPoint -.public sub_0201E020 -.public LoadScriptVariableValue -.public ov29_022E9FC0 -.public sub_02047FFC -.public sub_020778D0 -.public sub_0202AABC -.public GetMoveAccuracyOrAiChance -.public ov29_022E5560 -.public Strncmp -.public ov30_023833D8 -.public sub_0201CF5C -.public sub_02024FC8 -.public ov29_022E6694 -.public GetTurnLimit -.public sub_020308A0 -.public IsAuraBow -.public sub_020566C4 -.public ov29_022E0C2C -.public ov29_022E56A0 -.public GetSpeedStatus -.public ov10_022C26BC -.public ov29_022DE288 -.public ov29_022E9F9C -.public ov29_022E690C -.public ov29_022E273C -.public sub_02056084 -.public GetEquivItemIndex -.public ov29_022E87DC -.public GetMoveCategory -.public ov29_022E51B0 -.public OverlayIsLoaded -.public sub_020258E4 -.public UnloadCurrentWazaP -.public ov31_0238941C -.public MultiplyFixedPoint64 -.public GetMobilityType -.public GetPerformanceFlagWithChecks -.public sub_0205384C -.public ov29_022DC670 -.public MemAlloc -.public ov29_022E451C -.public sub_02017C68 -.public ov29_022DEBA4 -.public ov29_022E4664 -.public ov29_022DE47C -.public UpdateStatusIconFlags -.public ov00_022BFDAC -.public sub_020093BC -.public IsSameMove -.public SetPokemonBattled -.public sub_02025888 -.public Is2TurnsMove -.public GetSpawnThreshold -.public ov29_022E47CC -.public ov29_022E0DFC -.public DeleteWanTableEntryVeneer -.public GetSecondFormIfValid -.public ov29_022E47C4 -.public sub_02028A64 -.public ov29_022E57A0 -.public sub_0204AEC0 -.public ov29_022E2EC4 -.public ov10_022BE9E8 -.public ov29_022E6928 -.public ov30_02382A34 -.public GetActiveTeamMember -.public sub_0205349C -.public ShowPortraitBox -.public sub_02028848 -.public ov29_022E1EC4 -.public ov29_022E7AC4 -.public ov29_022E99F0 -.public sub_02058C9C -.public SetScreenWindowsColor -.public ov30_02383434 -.public ov29_022E0A04 -.public sub_02028E88 -.public sub_02048240 -.public ov29_022E4014 -.public ov29_022E2A78 -.public sub_0202836C -.public ov29_022E41F0 -.public sub_02015328 -.public ov31_023886D4 -.public ov29_022E8810 -.public GetDungeonMode -.public IsMonsterOnTeam -.public ExclusiveItemEffectFlagTest -.public ov29_022E1A90 -.public sub_02017C10 -.public ov29_022E0CB8 -.public ov29_022E46C0 -.public ov29_022E8244 -.public sub_0204F10C -.public ov10_022BF1FC -.public GetAbility -.public ov29_022E442C -.public CreateDBox -.public sub_02017B70 -.public ov31_023877EC -.public ov29_022E0378 -.public ov29_022E5474 -.public GetRecruitRate2 -.public sub_02056830 -.public ov29_022E42E8 -.public sub_02056880 -.public IsRegularAttackOrProjectile -.public sub_02011220 -.public sub_020091B0 -.public sub_02048150 -.public ov29_022E0E8C -.public ov29_022E8768 -.public ov29_022E2DFC -.public ov29_022E47BC -.public sub_02017A80 +.public AbilityIsActive2 .public Abs -.public GetScenarioBalance__0204CB94 -.public GetEvoParameters -.public sub_02056754 -.public ov10_022C2638 -.public GetActualSellPrice -.public ov29_022DDEF8 -.public sub_0200D208 -.public ov29_022E4714 -.public GetLearnableIqSkills -.public sub_0204AF78 -.public ov29_022E45CC -.public ov29_022E5ED0 -.public GetMissionRank -.public sub_02017A20 -.public GetRandomMovementChance -.public ov29_022EA3B4 -.public GetLanguage -.public sub_0200A174 -.public ov30_02382E08 -.public sub_02054EC8 -.public ov29_022E61C8 -.public SetMonsterLevelAndId -.public sub_02025784 -.public FemaleToMaleForm .public AdvanceFrame -.public ov29_022E0C4C -.public IsLevelResetDungeon -.public sub_0200F940 -.public ov29_022E0B44 -.public sub_0204AF00 -.public ov29_022E63D8 -.public GetNbItemsInBag -.public ov29_022E1AD4 -.public sub_020584FC -.public sub_0202F8C4 -.public GetEquippedThrowableItem -.public InitPortraitBox -.public sub_02008F3C -.public ProcessWte -.public ov29_022E550C -.public sub_02024FE8 -.public GetMaxPp -.public ov29_022E56D4 -.public sub_02001980 -.public sub_0204F610 -.public IsItemWithFlagsInBag -.public ov29_022E655C -.public sub_02061F44 -.public GetBaseDefensiveStat -.public ov29_022E4D28 -.public ov29_022E4FC0 -.public ov29_022E4F1C -.public ov29_022E4240 -.public ov29_022DE5D8 -.public ov31_02388114 -.public ov29_022E0880 -.public ov29_022E7F7C -.public sub_0201D484 -.public GetSpeciesIqSkill -.public sub_0201D110 -.public sub_02053D1C -.public InitStandardItem -.public ov29_022E4A04 -.public ov29_022E65A8 -.public DungeonRand16Bit -.public Arm9StoreUnkFieldNa0x2029ED8 -.public ov31_02388444 -.public ov29_022E617C -.public ov29_022E4868 -.public GetChanceAsleep -.public ov31_02387688 -.public ov29_022E9F80 -.public ov29_022DE5F0 -.public GetBodySize -.public ov29_022E6388 -.public GetScenarioBalance__022E095C -.public ov29_022E42E4 -.public InitMove -.public ov29_022E6798 -.public sub_020018D0 -.public sub_0201DA80 -.public sub_0204D894 -.public sub_0200383C -.public ov29_022E8708 -.public ov29_022E62F0 -.public ov29_022E4018 -.public ov29_022E58B0 -.public sub_020585B4 -.public sub_0201CF80 -.public GetActualBuyPrice -.public sub_0202AB40 -.public IsShaymin -.public GetSpriteIndex__02052708 -.public sub_0204AEA0 -.public ov29_022E4A54 -.public StrncpySimpleNoPad -.public GetItemMoveId16 -.public GetMonsterIdToSpawn -.public sub_02017D80 -.public GetItemCategoryVeneer -.public ov29_022E5258 -.public sub_0201BE84 -.public ItemZInit -.public GetLvlStats -.public ov29_022E4704 -.public LoadOverlay -.public sub_0201D590 -.public GetMonsterPreEvolution -.public sub_0202F8FC -.public ov29_022E539C -.public CanBeSnatched -.public LoadWazaP2 -.public ov29_022DD7D8 -.public sub_0204804C -.public ov30_02382820 -.public ov29_022E2CA0 -.public ov29_022EA008 -.public ov29_022E47B8 -.public sub_0203010C -.public GetGold -.public GetMoveBasePower -.public ov29_022E0C9C -.public HandleSir0Translation -.public ov29_022E6424 -.public ov10_022BFA3C -.public ov29_022E5AE4 -.public sub_02037468 -.public ov29_022E41CC -.public GetNameWithGender -.public StrncpySimpleNoPadSafe -.public ov29_022E4160 -.public FixedRoomIsSubstituteRoom -.public ov29_022E9298 -.public RemoveEquivItemNoHole -.public IsOnMonsterSpawnList -.public GetFirstEmptyMemberIdx -.public sub_020301F4 -.public ov29_022EA408 -.public ov29_022E4718 -.public sub_02020880 -.public GetDamageSource -.public ov29_022E09E8 -.public ov29_022DEBB0 -.public AddFixedPoint64 -.public ov29_022E9488 -.public Memset -.public sub_0204AF10 +.public CalcSpeedStageWrapper +.public DecrementWindCounter +.public DisplayActions +.public DivideInt +.public DungeonRandInt +.public DungeonRandRange +.public EnemyEvolution +.public EntityIsValid__022EC608 +.public ExecuteMonsterAction +.public GetCanMoveFlag +.public GetEquivItemIndex +.public GetFloorType .public GetItemAtIdx -.public ov30_023842F4 -.public IsThawingMove -.public sub_02048DC4 -.public sub_02017CCC -.public ov29_022E49B4 -.public sub_0201E13C -.public ov29_022DDC00 -.public ov29_022E4660 -.public ov31_0238619C -.public FreePortraitBox -.public CreatePortraitBox -.public IsPunchMove -.public DungeonRandOutcome__022EAB20 -.public DungeonRandOutcome__022EAB50 +.public GetItemCategoryVeneer +.public GetLeader +.public GetTile +.public IqSkillIsEnabled +.public IsFloorOver +.public IsHM +.public ItemZInit +.public LogMessageByIdWithPopupCheckUserTarget +.public RemoveEquivItemNoHole +.public RemoveItem +.public RoundUpDiv256 +.public RunMonsterAi +.public SetItemAcquired +.public Strcmp +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TickStatusAndHealthRegen +.public TryActivateArtificialWeatherAbilities +.public TryForcedLoss +.public TrySpawnMonsterAndActivatePlusMinus +.public ov29_022E0880 +.public ov29_022E1610 +.public ov29_022E1A40 +.public ov29_022E272C +.public ov29_022E555C +.public ov29_022E81F8 +.public ov29_022E9618 +.public ov29_022EF9C8 +.public ov29_022F0EDC +.public ov29_022F3934 +.public ov29_022F85F0 +.public ov29_02307D54 +.public ov29_0230FC24 +.public ov29_02321260 +.public ov29_023354C4 +.public ov29_02345538 +.public ov29_023456BC +.public ov29_02347030 +.public ov29_02347040 +.public ov29_02348FD8 +.public sub_01FFBDF4 +.public sub_0200D208 +.public sub_02017ACC +.public sub_02017B18 +.public sub_02017B58 +.public sub_02017B64 +.public sub_02017B70 +.public sub_02017B7C +.public sub_02017C50 +.public sub_02017C68 +.public sub_02017C74 +.public sub_02017D80 diff --git a/asm/include/overlay_29_022EC62C.inc b/asm/include/overlay_29_022EC62C.inc new file mode 100644 index 00000000..63ed13de --- /dev/null +++ b/asm/include/overlay_29_022EC62C.inc @@ -0,0 +1,22 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public DisplayActions +.public DivideInt +.public EntityIsValid__022EC608 +.public EntityIsValid__022ECDC0 +.public ExecuteMonsterAction +.public GetForcedLossReason +.public GetLeader +.public HandleFaint +.public LogMessageByIdWithPopupCheckUser +.public RunMonsterAi +.public TryForcedLoss +.public TrySpawnMonsterAndTickSpawnCounter +.public ov29_022E5DBC +.public ov29_022EAE14 +.public ov29_022EAEF0 +.public ov29_022EF9C8 +.public ov29_022F2FE4 +.public ov29_022F98B4 +.public ov29_02300164 diff --git a/asm/include/overlay_29_022ECDE4.inc b/asm/include/overlay_29_022ECDE4.inc new file mode 100644 index 00000000..98978986 --- /dev/null +++ b/asm/include/overlay_29_022ECDE4.inc @@ -0,0 +1,44 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EnemyEvolution +.public EntityIsValid__022ECDC0 +.public EntityIsValid__022EE348 +.public GetStringFromFileVeneer +.public GetTile +.public GetTileSafe +.public HasHeldItem +.public IqSkillIsEnabled +.public LoadWteFromFileDirectory +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LogMessageByIdWithPopupCheckUserUnknown +.public MemZero +.public Memset +.public ProcessWte +.public Strcpy +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public ov29_022E1608 +.public ov29_022E2260 +.public ov29_022E2CA0 +.public ov29_022E56A0 +.public ov29_022E58B0 +.public ov29_022E7A30 +.public ov29_022EF154 +.public ov29_022F89CC +.public ov29_022F9840 +.public ov29_02300164 +.public ov29_0230D47C +.public ov29_023361D4 +.public ov29_02336F4C +.public ov29_023391EC +.public ov29_02344148 +.public ov29_0234B034 +.public sub_0201B9F8 +.public sub_0201E080 +.public sub_0201E730 +.public sub_0201F2A0 +.public sub_02024FC8 diff --git a/asm/include/overlay_29_022EE36C.inc b/asm/include/overlay_29_022EE36C.inc new file mode 100644 index 00000000..22cc7117 --- /dev/null +++ b/asm/include/overlay_29_022EE36C.inc @@ -0,0 +1,69 @@ +#pragma once +.public AbilityIsActive2 +.public CalcStatusDuration +.public DungeonRandInt +.public EntityIsValid__022EE348 +.public FemaleToMaleForm +.public GetFloorType +.public GetItemCategoryVeneer +.public GetKecleonIdToSpawnByFloor +.public GetMonsterIdToSpawn +.public GetTile +.public HandleFaint +.public HasDropeyeStatus +.public IsExperienceLocked +.public IsNotMoney +.public ItemIsActive__022EE318 +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerOffensiveStat +.public LowerSpeed +.public MewSpawnCheck +.public MultiplyByFixedPoint +.public RemoveHeldItemNoHole +.public SpawnMonster +.public SubstitutePlaceholderStringTags +.public TryBlowAway +.public TryInflictConfusedStatus +.public TryInflictPoisonedStatus +.public TryInflictSleepStatus +.public TrySealMove +.public TryWarp +.public ov29_022E1608 +.public ov29_022E1610 +.public ov29_022E272C +.public ov29_022E333C +.public ov29_022E38E0 +.public ov29_022E56A0 +.public ov29_022E56D4 +.public ov29_022E58B0 +.public ov29_022E7A8C +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022EA370 +.public ov29_022FA574 +.public ov29_022FB920 +.public ov29_022FBD80 +.public ov29_02301EAC +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_0230D11C +.public ov29_02314EB8 +.public ov29_02319624 +.public ov29_02320448 +.public ov29_023361D4 +.public ov29_02336F4C +.public ov29_023391EC +.public ov29_02339CE8 +.public ov29_02344148 +.public ov29_02344B44 +.public ov29_02344BD0 +.public ov29_023456BC +.public ov29_02346344 +.public ov29_02347030 +.public ov29_0234B084 +.public sub_02001888 +.public sub_0200FA68 +.public sub_0200FAEC diff --git a/asm/include/overlay_29_022EF7C4.inc b/asm/include/overlay_29_022EF7C4.inc new file mode 100644 index 00000000..2193f526 --- /dev/null +++ b/asm/include/overlay_29_022EF7C4.inc @@ -0,0 +1,19 @@ +#pragma once +.public EntityIsValid__022EF7A0 +.public EntityIsValid__022F0590 +.public IsFloorOver +.public ov29_022DE5F0 +.public ov29_022E1A40 +.public ov29_022EA370 +.public ov29_022EAE14 +.public ov29_022F85F0 +.public ov29_022FA144 +.public ov29_022FA360 +.public ov29_0230F798 +.public ov29_023444D4 +.public ov29_02348F20 +.public ov29_0234B1A4 +.public ov29_0234BA54 +.public ov29_0234D630 +.public ov29_0234D8A0 +.public sub_0201D198 diff --git a/asm/include/overlay_29_022F05B4.inc b/asm/include/overlay_29_022F05B4.inc new file mode 100644 index 00000000..0dcbaac8 --- /dev/null +++ b/asm/include/overlay_29_022F05B4.inc @@ -0,0 +1,188 @@ +#pragma once +.public Abs +.public AddItemToBag +.public AddItemToBagNoHeld +.public AddMoneyCarried +.public AdvanceFrame +.public CeilFixedPoint +.public CheckTeamMemberIdx__022F9C34 +.public DivideInt +.public DungeonRandInt +.public EntityIsValid__022F0590 +.public ExecuteMoveEffect +.public GetActiveTeamMember +.public GetDirectionTowardsPosition +.public GetEntityMoveTargetAndRange +.public GetEquippedThrowableItem +.public GetGold +.public GetHero +.public GetItemCategoryVeneer +.public GetItemIndex +.public GetLeader +.public GetMonsterGenderVeneer +.public GetPressedButtons +.public GetSleepAnimationId +.public GetTile +.public GetTileAtEntity +.public GetTileSafe +.public HasHeldItem +.public InitMove +.public InitPreprocessorArgs +.public IqSkillIsEnabled +.public IsBlinded +.public IsExperienceLocked +.public IsFloorOver +.public IsGoldenChamber +.public ItemZInit +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public MemAlloc +.public MemFree +.public MemZero +.public OpenMessageLog +.public PreprocessString +.public RemoveEquivItemNoHole +.public SetMonsterActionFields +.public ShouldMonsterRunAway +.public ShouldMonsterRunAwayVariation +.public SubstitutePlaceholderStringTags +.public UpdateAiTargetPos +.public ov29_022DE608 +.public ov29_022E0B44 +.public ov29_022E0C2C +.public ov29_022E0C3C +.public ov29_022E0C4C +.public ov29_022E0C64 +.public ov29_022E0C80 +.public ov29_022E0C9C +.public ov29_022E0CB8 +.public ov29_022E0DD8 +.public ov29_022E0DF0 +.public ov29_022E1608 +.public ov29_022E1610 +.public ov29_022E274C +.public ov29_022E28D4 +.public ov29_022E2A38 +.public ov29_022E2CA0 +.public ov29_022E2E54 +.public ov29_022E38E0 +.public ov29_022E3DD8 +.public ov29_022E3E24 +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022E9618 +.public ov29_022EA370 +.public ov29_022EA3B4 +.public ov29_022EA428 +.public ov29_022EACCC +.public ov29_022EB398 +.public ov29_022EB3C8 +.public ov29_022EB54C +.public ov29_022EB568 +.public ov29_022EB594 +.public ov29_022EB944 +.public ov29_022EBC98 +.public ov29_022EDFA0 +.public ov29_022F04F0 +.public ov29_022F0518 +.public ov29_022F59C4 +.public ov29_022F62CC +.public ov29_022F670C +.public ov29_022F87C0 +.public ov29_022F89AC +.public ov29_022F98B4 +.public ov29_022F9C4C +.public ov29_022F9EA0 +.public ov29_022FA2F0 +.public ov29_022FA360 +.public ov29_022FB538 +.public ov29_022FB920 +.public ov29_022FBAB4 +.public ov29_022FBDF0 +.public ov29_022FF3F4 +.public ov29_022FF958 +.public ov29_022FFA94 +.public ov29_023009CC +.public ov29_02300E78 +.public ov29_02300FCC +.public ov29_0230105C +.public ov29_02301158 +.public ov29_0230175C +.public ov29_023049A8 +.public ov29_023055B0 +.public ov29_02307F4C +.public ov29_023186CC +.public ov29_02318700 +.public ov29_02321164 +.public ov29_02322DDC +.public ov29_0232461C +.public ov29_02336F4C +.public ov29_02337428 +.public ov29_0233779C +.public ov29_02337B68 +.public ov29_02337D68 +.public ov29_02338794 +.public ov29_02338F58 +.public ov29_02339190 +.public ov29_023391C0 +.public ov29_02339CD4 +.public ov29_02339CE8 +.public ov29_02339D7C +.public ov29_0233A0E8 +.public ov29_0233A248 +.public ov29_02344B44 +.public ov29_02345058 +.public ov29_02345538 +.public ov29_023456BC +.public ov29_02346BD8 +.public ov29_02346E5C +.public ov29_02346F14 +.public ov29_02346FB8 +.public ov29_02347030 +.public ov29_02348D3C +.public ov29_02348ECC +.public ov29_023491B8 +.public ov29_0234A980 +.public ov29_0234B034 +.public ov29_0234B0CC +.public ov29_0234B104 +.public ov29_0234B118 +.public ov29_0234B1A4 +.public ov29_0234B4CC +.public ov29_0234BA54 +.public ov29_0234BAC0 +.public ov29_0234BB38 +.public ov29_0234D518 +.public ov29_0234D650 +.public ov29_0234D65C +.public ov29_0234D668 +.public ov29_0234D690 +.public ov29_0234D838 +.public ov29_0234D860 +.public ov29_0234D878 +.public ov29_0234D88C +.public ov29_0234DDF4 +.public ov29_0234E8F8 +.public ov29_0234FC50 +.public ov29_0234FCA8 +.public sub_02001AB0 +.public sub_02006B70 +.public sub_0200FB54 +.public sub_0200FBE0 +.public sub_02017C80 +.public sub_02017CCC +.public sub_0201B9F8 +.public sub_0201CF90 +.public sub_02026214 +.public sub_02026268 +.public sub_02027AF0 +.public sub_02027B1C +.public sub_0202F8C4 +.public sub_0202F8FC +.public sub_0204AEA0 +.public sub_0204AEB0 +.public sub_0204AEC0 +.public sub_0204AF10 +.public sub_0204AF20 +.public sub_0204AF78 +.public sub_02056754 diff --git a/asm/include/overlay_29_022F52B0.inc b/asm/include/overlay_29_022F52B0.inc new file mode 100644 index 00000000..fa92a59c --- /dev/null +++ b/asm/include/overlay_29_022F52B0.inc @@ -0,0 +1,99 @@ +#pragma once +.public AbilityIsActive2 +.public ApplyItemEffect +.public DecrementStackItem +.public DisplayMessage +.public DisplayMessage2 +.public DivideInt +.public DungeonRandInt +.public EnemyEvolution +.public EntityIsValid__022F528C +.public EntityIsValid__022F62A8 +.public ExclusiveItemEffectFlagTest +.public GetActiveTeamMember +.public GetDirectionTowardsPosition +.public GetItemCategoryVeneer +.public GetLeader +.public GetNumberOfAttacks +.public GetStringFromFileVeneer +.public GetTalkLine +.public HandleFaint +.public HasHeldItem +.public HasLowHealth +.public InitMove +.public IqSkillIsEnabled +.public IsFloorOver +.public IsMonsterIdInNormalRange__022F9C68 +.public ItemZInit +.public LogMessageByIdWithPopupCheckUser +.public RemoveEquivItemNoHole +.public ShouldMonsterRunAwayVariation +.public Strcpy +.public Strncpy +.public SubstitutePlaceholderStringTags +.public TryActivateTruant +.public UpdateMapSurveyorFlag +.public UpdateMovePp +.public ov29_022E08A0 +.public ov29_022E272C +.public ov29_022E56A0 +.public ov29_022E5728 +.public ov29_022E690C +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022E9A9C +.public ov29_022EA370 +.public ov29_022EB378 +.public ov29_022EB54C +.public ov29_022EB60C +.public ov29_022EFB04 +.public ov29_022F3B8C +.public ov29_022F6748 +.public ov29_022F87C0 +.public ov29_022F9C40 +.public ov29_022FA574 +.public ov29_0230040C +.public ov29_02300818 +.public ov29_023009CC +.public ov29_0230175C +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_02304AFC +.public ov29_02307BDC +.public ov29_02307F4C +.public ov29_0230F9A4 +.public ov29_023186CC +.public ov29_02318700 +.public ov29_0231A7A0 +.public ov29_0231AE3C +.public ov29_0231D4A4 +.public ov29_0232145C +.public ov29_02322374 +.public ov29_02338430 +.public ov29_0233A248 +.public ov29_02343D30 +.public ov29_02344160 +.public ov29_02344544 +.public ov29_02344B44 +.public ov29_02344B70 +.public ov29_02345538 +.public ov29_023456BC +.public ov29_02346FB8 +.public ov29_02347000 +.public ov29_02347030 +.public ov29_02347518 +.public ov29_02347BC8 +.public ov29_02348C64 +.public ov29_023491A4 +.public ov29_0234A2D4 +.public ov29_0234A5E4 +.public ov29_0234B034 +.public ov29_0234B0B4 +.public ov29_0234BAC0 +.public ov29_0234CFA0 +.public ov29_0234CFEC +.public ov29_0234D304 +.public ov29_0234D518 +.public sub_02020880 +.public sub_02024FB8 +.public sub_02025888 diff --git a/asm/include/overlay_29_022F62CC.inc b/asm/include/overlay_29_022F62CC.inc new file mode 100644 index 00000000..65867204 --- /dev/null +++ b/asm/include/overlay_29_022F62CC.inc @@ -0,0 +1,49 @@ +#pragma once +.public Abs +.public AddMoneyCarried +.public CalcSpeedStageWrapper +.public DeleteWanTableEntryVeneer +.public DisplayMessage2 +.public EntityIsValid__022F62A8 +.public EntityIsValid__022F7364 +.public GetActiveTeamMember +.public GetDirectionTowardsPosition +.public GetExplorerMazeMonster +.public GetGold +.public GetKecleonIdToSpawnByFloor +.public GetLeader +.public GetMonsterIdFromSpawnEntry +.public GetSpriteFileSize +.public GetTile +.public GetTileAtEntity +.public IsCastform +.public IsCherrim +.public IsFloorOver +.public IsShaymin +.public LoadMissionMonsterSprites +.public LoadMonsterSprite +.public LogMessageByIdWithPopupCheckUser +.public MemAlloc +.public MemFree +.public MemZero +.public TeamLeaderIqSkillIsEnabled +.public TryWarp +.public ov29_022E1610 +.public ov29_022E38E0 +.public ov29_022EACCC +.public ov29_022F6210 +.public ov29_022FF764 +.public ov29_023009CC +.public ov29_02304A00 +.public ov29_02304A48 +.public ov29_0231B490 +.public ov29_0231B4AC +.public ov29_02345538 +.public ov29_023456BC +.public ov29_0234B09C +.public ov29_0234BAC0 +.public ov29_0234D518 +.public sub_020018A4 +.public sub_0200CCE0 +.public sub_0201D590 +.public sub_0208FC8C diff --git a/asm/include/overlay_29_022F7388.inc b/asm/include/overlay_29_022F7388.inc new file mode 100644 index 00000000..6aa05a22 --- /dev/null +++ b/asm/include/overlay_29_022F7388.inc @@ -0,0 +1,210 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public AiMovement +.public ApplyItemEffect +.public CanAttackInDirection +.public CanMonsterSpawn +.public CeilFixedPoint +.public CheckTeamMemberIdx__02056228 +.public Conversion2IsActive +.public DeleteWanTableEntryVeneer +.public DisplayMessage +.public DisplayMessage2 +.public DivideInt +.public DungeonRandInt +.public DungeonRngSetPrimary +.public DungeonRngSetSecondary +.public EnableIqSkill +.public EndCringeClassStatus +.public EndFrozenClassStatus +.public EntityIsValid__022F7364 +.public EntityIsValid__022FC99C +.public ExclusiveItemEffectFlagTest +.public FreeOtherWrappedMonsters +.public GendersEqualNotGenderless +.public GetAbility +.public GetActiveTeamMember +.public GetApparentWeather +.public GetBodySize +.public GetChebyshevDistance +.public GetDirectionTowardsPosition +.public GetExp +.public GetExplorerMazeMonster +.public GetFileLengthInPackWithPackNb +.public GetFloorType +.public GetForcedLossReason +.public GetInfoMoveCheckId +.public GetLeader +.public GetLearnableIqSkills +.public GetLvlStats +.public GetMaxPp +.public GetMaxPpWrapper +.public GetMobilityType +.public GetMonsterEvoStatus +.public GetMonsterGender +.public GetMonsterIdFromSpawnEntry +.public GetMonsterLevelFromSpawnEntry +.public GetMoveBasePp +.public GetMoveType +.public GetMoveTypeForMonster +.public GetNbItemsInBag +.public GetNumberOfAttacks +.public GetScenarioBalance__0204CB94 +.public GetScenarioBalance__022E095C +.public GetSleepAnimationId +.public GetSpawnThreshold +.public GetSpriteFileSize +.public GetSpriteIndex__020526EC +.public GetStairsRoom +.public GetTile +.public GetTileAtEntity +.public GetTileSafe +.public GetTurnLimit +.public GetType +.public GroundToDungeonMoveset +.public HasHeldItem +.public InitTeamMember +.public IqSkillIsEnabled +.public IsCurrentMissionType +.public IsDestinationFloorWithFixedRoom +.public IsDestinationFloorWithMonster +.public IsLevelResetDungeon +.public IsMonsterIdInNormalRange__02056294 +.public IsOneHitKoMove +.public IsOutlawOrChallengeRequestFloor +.public IsRecruitingAllowed +.public IsSecretFloor +.public IsShaymin +.public ItemZInit +.public JoinedAtRangeCheck +.public JoinedAtRangeCheck2 +.public LoadWazaP2 +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerSpeed +.public MemAlloc +.public MemFree +.public MonsterIsType +.public OpenMessageLog +.public RandInt +.public RemoveEquivItem +.public ReplaceWanFromBinFile +.public RestoreMovePP +.public SetActionPassTurnOrWalk +.public SetForcedLossReason +.public SetMissionTargetEnemyDefeated +.public SetMonsterLevelAndId +.public ShouldMonsterRunAway +.public StoryRestrictionsEnabled +.public SubFixedPoint +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBurnStatus +.public TryInflictPausedStatus +.public UnloadCurrentWazaP +.public UpdateStatusIconFlags +.public ov29_022DDA54 +.public ov29_022DDB68 +.public ov29_022E0880 +.public ov29_022E0A04 +.public ov29_022E1C0C +.public ov29_022E2470 +.public ov29_022E272C +.public ov29_022E274C +.public ov29_022E2978 +.public ov29_022E2A78 +.public ov29_022E2E54 +.public ov29_022E2EC4 +.public ov29_022E38E0 +.public ov29_022E4160 +.public ov29_022E4964 +.public ov29_022E576C +.public ov29_022E6260 +.public ov29_022E647C +.public ov29_022E68BC +.public ov29_022E68D8 +.public ov29_022E6928 +.public ov29_022E7BE8 +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022EA370 +.public ov29_022EA718 +.public ov29_022ECDE4 +.public ov29_022EF7C4 +.public ov29_022EF938 +.public ov29_022EFAE8 +.public ov29_022EFB04 +.public ov29_022FCD04 +.public ov29_022FE048 +.public ov29_022FE2FC +.public ov29_022FE350 +.public ov29_022FE3B8 +.public ov29_022FE420 +.public ov29_022FF6C4 +.public ov29_022FFB90 +.public ov29_02300164 +.public ov29_0230040C +.public ov29_023007A8 +.public ov29_02300818 +.public ov29_02300CB0 +.public ov29_0230175C +.public ov29_023018AC +.public ov29_023021F0 +.public ov29_02303B18 +.public ov29_02304830 +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_02304BAC +.public ov29_02305FDC +.public ov29_023061A8 +.public ov29_023064F4 +.public ov29_02307CE0 +.public ov29_02307DD0 +.public ov29_0230AA8C +.public ov29_0230F654 +.public ov29_0230F9A4 +.public ov29_023159D4 +.public ov29_0231D4A4 +.public ov29_0231E990 +.public ov29_02324798 +.public ov29_023361D4 +.public ov29_023363C0 +.public ov29_02337A3C +.public ov29_02337EC0 +.public ov29_02338F24 +.public ov29_023391EC +.public ov29_02339CE8 +.public ov29_02344B44 +.public ov29_02348100 +.public ov29_02349688 +.public ov29_0234B010 +.public ov29_0234B034 +.public ov29_0234B06C +.public ov29_0234B084 +.public ov29_0234B09C +.public ov29_0234B0B4 +.public ov29_0234B1A4 +.public ov29_0234D518 +.public ov29_0234EF24 +.public sub_0200F9B4 +.public sub_0200FB54 +.public sub_0201405C +.public sub_02017C50 +.public sub_0201C0CC +.public sub_0201C0E8 +.public sub_0201D484 +.public sub_0201D590 +.public sub_0204AEF0 +.public sub_02050964 +.public sub_02050FF8 +.public sub_02052E2C +.public sub_02053250 +.public sub_0205349C +.public sub_02056264 +.public sub_020566C4 +.public sub_020585B4 +.public sub_02058674 +.public sub_02058EB0 +.public sub_0205A450 diff --git a/asm/include/overlay_29_022FC9C0.inc b/asm/include/overlay_29_022FC9C0.inc new file mode 100644 index 00000000..c313b0c0 --- /dev/null +++ b/asm/include/overlay_29_022FC9C0.inc @@ -0,0 +1,150 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public CalcSpeedStageWrapper +.public DisplayActions +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public DungeonRngSetPrimary +.public DungeonRngSetSecondary +.public EnemyEvolution +.public EntityIsValid__022FC99C +.public EntityIsValid__022FED98 +.public ExclusiveItemEffectFlagTest +.public FreeOtherWrappedMonsters +.public GetAbility +.public GetActiveTeamMember +.public GetApparentWeather +.public GetBaseDefensiveStat +.public GetBaseForm +.public GetBaseHp +.public GetBaseOffensiveStat +.public GetChanceAsleep +.public GetCurrentBagCapacity +.public GetItemToRetrieve +.public GetLeader +.public GetLvlStats +.public GetMissionRank +.public GetMonsterIdToSpawn +.public GetMonsterLevelToSpawn +.public GetSpriteIndex__022F7388 +.public GetTile +.public GetType +.public HasHeldItem +.public InflictSleepStatusSingle +.public InitStandardItem +.public IqSkillIsEnabled +.public IsBagFull +.public IsCurrentMissionType +.public IsDestinationFloorWithFixedRoom +.public IsDestinationFloorWithFleeingOutlaw +.public IsDestinationFloorWithHiddenOutlaw +.public IsDestinationFloorWithMonster +.public IsFloorOver +.public IsOutlawMonsterHouseFloor +.public ItemZInit +.public LogMessageByIdWithPopupCheckUser +.public MemZero +.public MewSpawnCheck +.public MultiplyByFixedPoint +.public SetTargetMonsterNotFoundFlag +.public ShuffleHiddenPower +.public SubstitutePlaceholderStringTags +.public UpdateStatusIconFlags +.public ov29_022DDA54 +.public ov29_022DDB68 +.public ov29_022DEA10 +.public ov29_022E0880 +.public ov29_022E1A40 +.public ov29_022E1AAC +.public ov29_022E1AD4 +.public ov29_022E1C0C +.public ov29_022E1C84 +.public ov29_022E1D2C +.public ov29_022E1EC4 +.public ov29_022E1F34 +.public ov29_022E2018 +.public ov29_022E20C0 +.public ov29_022E2DFC +.public ov29_022E38E0 +.public ov29_022E3A58 +.public ov29_022E5D68 +.public ov29_022E6644 +.public ov29_022E7AC4 +.public ov29_022E81F8 +.public ov29_022E9628 +.public ov29_022E99F0 +.public ov29_022E9A0C +.public ov29_022EB944 +.public ov29_022EC85C +.public ov29_022EDDD4 +.public ov29_022EDFA0 +.public ov29_022EF9BC +.public ov29_022EFAE8 +.public ov29_022EFB04 +.public ov29_022F3890 +.public ov29_022F4350 +.public ov29_022F4370 +.public ov29_022F44F0 +.public ov29_022F45CC +.public ov29_022F48D8 +.public ov29_022F49E0 +.public ov29_022F4BDC +.public ov29_022F4BF8 +.public ov29_022F4DAC +.public ov29_022F505C +.public ov29_022F52B0 +.public ov29_022F52CC +.public ov29_022F54BC +.public ov29_022F59C4 +.public ov29_022F5F18 +.public ov29_022F6058 +.public ov29_022F85F0 +.public ov29_022F9408 +.public ov29_022F9840 +.public ov29_022F996C +.public ov29_022F9EA0 +.public ov29_022FA1D8 +.public ov29_022FB83C +.public ov29_022FBA70 +.public ov29_022FBC4C +.public ov29_022FBD08 +.public ov29_022FBF08 +.public ov29_022FBF30 +.public ov29_022FC234 +.public ov29_022FC468 +.public ov29_022FEDBC +.public ov29_022FEFC8 +.public ov29_022FF168 +.public ov29_022FF6C4 +.public ov29_022FFC9C +.public ov29_02300DCC +.public ov29_02300E78 +.public ov29_023021F0 +.public ov29_02302368 +.public ov29_02304A48 +.public ov29_02304D20 +.public ov29_02307DC0 +.public ov29_023085DC +.public ov29_0230F140 +.public ov29_0230F14C +.public ov29_0230F158 +.public ov29_0230FC24 +.public ov29_02318D58 +.public ov29_0231A8A0 +.public ov29_0231A9F8 +.public ov29_02321104 +.public ov29_0232461C +.public ov29_02337CCC +.public ov29_02338708 +.public ov29_02338850 +.public ov29_02338898 +.public ov29_02346888 +.public ov29_02346F14 +.public ov29_023491A4 +.public ov29_0234B024 +.public ov29_0234BA54 +.public sub_02050FF8 +.public sub_02054FEC +.public sub_02055020 +.public sub_02058EB0 diff --git a/asm/include/overlay_29_022FEDBC.inc b/asm/include/overlay_29_022FEDBC.inc new file mode 100644 index 00000000..43710b3d --- /dev/null +++ b/asm/include/overlay_29_022FEDBC.inc @@ -0,0 +1,37 @@ +#pragma once +.public AbilityIsActive +.public CanMonsterUseMove +.public ChooseAiMove +.public DungeonRandInt +.public EntityIsValid__022FED98 +.public EntityIsValid__023000E4 +.public ExclusiveItemEffectFlagTest +.public GetApparentWeather +.public GetMobilityType +.public GetSpeedStatus +.public GetTile +.public HasConditionalGroundImmunity +.public HasHeldItem +.public IqSkillIsEnabled +.public IsBlinded +.public LogMessageByIdWithPopupCheckUser +.public MonsterIsType +.public SetActionPassTurnOrWalk +.public SetMonsterActionFields +.public SubstitutePlaceholderStringTags +.public TickStatusTurnCounter +.public ov29_022E56A0 +.public ov29_022E655C +.public ov29_022EBC98 +.public ov29_022FAA04 +.public ov29_023007A8 +.public ov29_02300DCC +.public ov29_02300E78 +.public ov29_023023C0 +.public ov29_0230F654 +.public ov29_02313CE4 +.public ov29_02318D58 +.public ov29_02322374 +.public ov29_023245A4 +.public ov29_02336204 +.public ov29_02344B44 diff --git a/asm/include/overlay_29_02300108.inc b/asm/include/overlay_29_02300108.inc new file mode 100644 index 00000000..2d3cb14d --- /dev/null +++ b/asm/include/overlay_29_02300108.inc @@ -0,0 +1,71 @@ +#pragma once +.public CanLearnIqSkill +.public CanThrowItems +.public DisableIqSkill +.public DivideInt +.public DungeonRandInt +.public EnableIqSkill +.public EntityIsValid__023000E4 +.public EntityIsValid__02302A38 +.public EvolveMonster +.public ExclusiveItemEffectFlagTest +.public ExclusiveItemEffectIsActive__022FFF28 +.public GetActiveTeamMember +.public GetApparentWeather +.public GetEvolutions +.public GetExplorerMazeMonster +.public GetForcedLossReason +.public GetMoveBasePower +.public GetMoveType +.public GetName +.public GetNameRaw +.public GetNameWithGender +.public GetPerformanceFlagWithChecks +.public GetSpeciesIqSkill +.public GetSpriteIndex__022F7388 +.public GetTile +.public GravityIsActive +.public HasHeldItem +.public IqSkillFlagTest +.public IsBlinded +.public IsExpEnabledInDungeon +.public IsExperienceLocked +.public IsOnMonsterSpawnList +.public IsRegularAttackOrProjectile +.public ItemIsActive__022FF898 +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUserTarget +.public MultiplyByFixedPoint +.public Strcpy +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public Vsprintf +.public ov29_022E2470 +.public ov29_022E274C +.public ov29_022E62A8 +.public ov29_022FAFD4 +.public ov29_022FBDE0 +.public ov29_022FF674 +.public ov29_02302C04 +.public ov29_02302CC8 +.public ov29_0230303C +.public ov29_0230F654 +.public ov29_02314DC4 +.public ov29_023197CC +.public ov29_0231AE90 +.public ov29_0231AF0C +.public ov29_0232461C +.public ov29_02324BE8 +.public ov29_02336204 +.public ov29_02344B44 +.public ov29_0234B034 +.public ov29_0234B09C +.public ov29_0234B0B4 +.public sub_02024FB8 +.public sub_02025888 +.public sub_020258E4 +.public sub_02056084 +.public sub_02058534 +.public sub_0205858C +.public sub_020585B4 +.public sub_02058C9C diff --git a/asm/include/overlay_29_02302A5C.inc b/asm/include/overlay_29_02302A5C.inc new file mode 100644 index 00000000..6dc31b17 --- /dev/null +++ b/asm/include/overlay_29_02302A5C.inc @@ -0,0 +1,86 @@ +#pragma once +.public DisplayMessage +.public DisplayMessage2 +.public DungeonRandInt +.public EntityIsValid__02302A38 +.public EntityIsValid__023047B8 +.public FormatMoveString +.public GetLeader +.public GetLvlStats +.public GetMovesetLevelUpPtr +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public GetStringFromFileVeneer +.public GetTalkLine +.public GetTile +.public IsExperienceLocked +.public IsOnMonsterSpawnList +.public IsSpecialEpisodeDungeon +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUserTarget +.public NeedsItemToSpawn +.public Rand16Bit +.public SpawnMonster +.public Strcat +.public Strcpy +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public ov29_022DD7D8 +.public ov29_022DDB98 +.public ov29_022E273C +.public ov29_022E3570 +.public ov29_022E3580 +.public ov29_022E3A40 +.public ov29_022E56A0 +.public ov29_022E6724 +.public ov29_022E6E80 +.public ov29_022EA370 +.public ov29_022EAC7C +.public ov29_022EAC9C +.public ov29_022EBCE8 +.public ov29_022ECB38 +.public ov29_022F7050 +.public ov29_022F9194 +.public ov29_022F98B4 +.public ov29_022FB6E4 +.public ov29_022FDDC0 +.public ov29_022FF6C4 +.public ov29_02300164 +.public ov29_0230040C +.public ov29_023009CC +.public ov29_023021F0 +.public ov29_02304830 +.public ov29_023049A8 +.public ov29_02318D58 +.public ov29_0231EA04 +.public ov29_02338988 +.public ov29_0234B034 +.public ov29_0234B06C +.public ov29_0234B084 +.public ov29_0234B09C +.public ov29_0234B4E0 +.public ov29_0234BAC0 +.public ov29_0234CFA0 +.public ov29_0234CFEC +.public ov29_0234D234 +.public ov29_0234D304 +.public ov29_0234D484 +.public ov29_0234FAEC +.public sub_020149C0 +.public sub_0201B9F8 +.public sub_0201C0E8 +.public sub_0201C418 +.public sub_0201C458 +.public sub_0201CF5C +.public sub_0201D034 +.public sub_0201D110 +.public sub_0201D198 +.public sub_0201D1B0 +.public sub_02025888 +.public sub_0204F610 +.public sub_0205384C +.public sub_02053904 +.public sub_02054FB8 +.public sub_02054FEC +.public sub_02055020 +.public sub_02058C9C diff --git a/asm/include/overlay_29_023047DC.inc b/asm/include/overlay_29_023047DC.inc new file mode 100644 index 00000000..f9fbe8c1 --- /dev/null +++ b/asm/include/overlay_29_023047DC.inc @@ -0,0 +1,39 @@ +#pragma once +.public AdvanceFrame +.public DivideInt +.public EnemyEvolution +.public EntityIsValid__023047B8 +.public EntityIsValid__0230558C +.public GetDirectionTowardsPosition +.public GetShadowSize +.public GetSpriteIndex__022F7388 +.public GetTileAtEntity +.public IsFloorOver +.public Rand16Bit +.public TryForcedLoss +.public ov29_022E1A40 +.public ov29_022E1A90 +.public ov29_022E272C +.public ov29_022E8104 +.public ov29_022EA370 +.public ov29_022EF9BC +.public ov29_022EF9C8 +.public ov29_022F3634 +.public ov29_022F62CC +.public ov29_022F9C74 +.public ov29_02300818 +.public ov29_02300CB0 +.public ov29_02305694 +.public ov29_02305814 +.public ov29_02307DD0 +.public ov29_0230FC24 +.public ov29_02321104 +.public ov29_02337A3C +.public ov29_02337E94 +.public ov29_02346888 +.public ov29_0234AD10 +.public ov29_0234BA18 +.public sub_0201C0E8 +.public sub_0201C418 +.public sub_0204AEE0 +.public sub_02053038 diff --git a/asm/include/overlay_29_023055B0.inc b/asm/include/overlay_29_023055B0.inc new file mode 100644 index 00000000..16422a0e --- /dev/null +++ b/asm/include/overlay_29_023055B0.inc @@ -0,0 +1,50 @@ +#pragma once +.public AbilityIsActive2 +.public CalcSpeedStageWrapper +.public EndCringeClassStatus +.public EndFrozenClassStatus +.public EntityIsValid__0230558C +.public EntityIsValid__02305C04 +.public GetDirectionTowardsPosition +.public GetLeader +.public GetSleepAnimationId +.public GetTileAtEntity +.public HasHeldItem +.public IqSkillIsEnabled +.public IsFloorOver +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public UpdateStatusIconFlags +.public ov29_022E1608 +.public ov29_022E2CA0 +.public ov29_022E3A58 +.public ov29_022E543C +.public ov29_022EA370 +.public ov29_022EDFA0 +.public ov29_022FBE04 +.public ov29_023004B0 +.public ov29_023004E4 +.public ov29_02300500 +.public ov29_02300520 +.public ov29_0230053C +.public ov29_02300588 +.public ov29_023005A4 +.public ov29_023005C0 +.public ov29_023005FC +.public ov29_02300618 +.public ov29_02300634 +.public ov29_02300818 +.public ov29_023049A8 +.public ov29_02305FDC +.public ov29_023061A8 +.public ov29_02306728 +.public ov29_023068C4 +.public ov29_02306950 +.public ov29_02306B28 +.public ov29_02306BF8 +.public ov29_02306C64 +.public ov29_02307F4C +.public ov29_0230F164 +.public ov29_02336F4C +.public ov29_02337D68 diff --git a/asm/include/overlay_29_02305C28.inc b/asm/include/overlay_29_02305C28.inc new file mode 100644 index 00000000..dffb4782 --- /dev/null +++ b/asm/include/overlay_29_02305C28.inc @@ -0,0 +1,64 @@ +#pragma once +.public Abs +.public AdvanceFrame +.public CalcSpeedStageWrapper +.public CalcStatusDuration +.public EntityIsValid__02305C04 +.public EntityIsValid__02307EF8 +.public FreeOtherWrappedMonsters +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public GetType +.public ItemIsActive__02307F1C +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBadlyPoisonedStatus +.public TryInflictBurnStatus +.public TryInflictConfusedStatus +.public TryInflictConstrictionStatus +.public TryInflictCoweringStatus +.public TryInflictCringeStatus +.public TryInflictInfatuatedStatus +.public TryInflictLeechSeedStatus +.public TryInflictParalysisStatus +.public TryInflictPausedStatus +.public TryInflictPoisonedStatus +.public TryInflictShadowHoldStatus +.public TryInflictSleepStatus +.public UpdateStatusIconFlags +.public ov29_022E543C +.public ov29_022E65F4 +.public ov29_022E6798 +.public ov29_022F62CC +.public ov29_022F9408 +.public ov29_022FA1D8 +.public ov29_022FB984 +.public ov29_022FDDC0 +.public ov29_02300634 +.public ov29_02301940 +.public ov29_02302430 +.public ov29_02304830 +.public ov29_02304A48 +.public ov29_023058C4 +.public ov29_0230D11C +.public ov29_02311C28 +.public ov29_02315C00 +.public ov29_02315E24 +.public ov29_023163A8 +.public ov29_0231662C +.public ov29_02316720 +.public ov29_02317124 +.public ov29_023174C8 +.public ov29_023176CC +.public ov29_02317844 +.public ov29_02317AF4 +.public ov29_0231827C +.public ov29_023185A8 +.public ov29_0231872C +.public ov29_02318850 +.public ov29_02321104 +.public ov29_02321134 +.public ov29_02336F4C +.public ov29_02339CE8 diff --git a/asm/include/overlay_29_02307F1C.inc b/asm/include/overlay_29_02307F1C.inc new file mode 100644 index 00000000..bab570d4 --- /dev/null +++ b/asm/include/overlay_29_02307F1C.inc @@ -0,0 +1,14 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public DungeonRandInt +.public DungeonRandRange +.public EntityIsValid__02307EF8 +.public GetMonsterIdToSpawn +.public GetTileAtEntity +.public GetTileSafe +.public HasHeldItem +.public MewSpawnCheck +.public MultiplyByFixedPoint +.public SpawnMonster +.public ov29_022E38E0 diff --git a/asm/include/overlay_29_023082A0.inc b/asm/include/overlay_29_023082A0.inc new file mode 100644 index 00000000..5aa614fe --- /dev/null +++ b/asm/include/overlay_29_023082A0.inc @@ -0,0 +1,47 @@ +#pragma once +.public Abs +.public AiMovement +.public ApplyDamage +.public BoostOffensiveStat +.public CanTargetEntity +.public ChooseAiMove +.public ClearMonsterActionFields +.public DefenderAbilityIsActive__0230A940 +.public DungeonRandInt +.public EndFrozenClassStatus +.public EntityIsValid__02308FBC +.public ExclusiveItemEffectIsActive__0230A9B8 +.public GetCanMoveFlag +.public GetLeader +.public GravityIsActive +.public HasLowHealth +.public HasStatusThatPreventsActing +.public IqSkillIsEnabled +.public LevitateIsActive +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public MonsterIsType +.public ResetDamageDesc +.public SetActionPassTurnOrWalk +.public SubstitutePlaceholderStringTags +.public UpdateAiTargetPos +.public ov29_022E3F24 +.public ov29_022E40C0 +.public ov29_022E45D0 +.public ov29_022E57D4 +.public ov29_022E5E84 +.public ov29_022EF9EC +.public ov29_022FB538 +.public ov29_02300B40 +.public ov29_02300D50 +.public ov29_0230175C +.public ov29_02301EAC +.public ov29_0230D11C +.public ov29_0230D654 +.public ov29_0230E914 +.public ov29_0230F728 +.public ov29_0231EA30 +.public ov29_0231EDFC +.public ov29_023380FC +.public sub_02054EC8 +.public sub_02058C3C diff --git a/asm/include/overlay_29_02308FE0.inc b/asm/include/overlay_29_02308FE0.inc new file mode 100644 index 00000000..63e02d87 --- /dev/null +++ b/asm/include/overlay_29_02308FE0.inc @@ -0,0 +1,207 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AddExpSpecial +.public AddFixedPoint64 +.public AdvanceFrame +.public AuraBowIsActive +.public CanEnemyEvolve +.public CeilFixedPoint +.public ClampedLn +.public DebugPrint0__0200C1FC +.public DivideFixedPoint64 +.public DivideInt +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__02308FBC +.public EntityIsValid__0230E8F0 +.public ExclusiveItemDefenseBoost +.public ExclusiveItemEffectFlagTest +.public ExclusiveItemOffenseBoost +.public FixedPoint32To64 +.public FixedPoint64CmpLt +.public FixedPoint64IsZero +.public FixedPoint64ToInt +.public FixedRoomIsSubstituteRoom +.public FreeOtherWrappedMonsters +.public GendersEqualNotGenderless +.public GetActiveTeamMember +.public GetApparentWeather +.public GetDirectionTowardsPosition +.public GetEquivItemIndex +.public GetExp +.public GetFirstEmptyMemberIdx +.public GetItemAtIdx +.public GetKecleonIdToSpawnByFloor +.public GetMonsterGenderVeneer +.public GetMonsterIdToSpawn +.public GetMonsterLevelToSpawn +.public GetMoveCategory +.public GetNameString +.public GetRandomMovementChance +.public GetRecruitRate1 +.public GetRecruitRate2 +.public GetSleepAnimationId +.public GetTile +.public GetTileAtEntity +.public GravityIsActive +.public HandleFaint +.public HasConditionalGroundImmunity +.public HasHeldItem +.public HasPlayedOldGame +.public InitTeamMember +.public IntToFixedPoint64 +.public IqSkillIsEnabled +.public IsBlinded +.public IsCurrentMissionType +.public IsCurrentMissionTypeExact +.public IsExperienceLocked +.public IsLegendaryChallengeFloor +.public IsMonsterIdInNormalRange__022F9C68 +.public IsMonsterOnTeam +.public IsPunchMove +.public IsRecoilMove +.public IsRecruitingAllowed +.public IsRegularAttackOrProjectile +.public IsSpecialStoryAlly +.public ItemZInit +.public JoinedAtRangeCheck2Veneer +.public LevitateIsActive +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public MemZero +.public MewSpawnCheck +.public MonsterIsType +.public MoveIsNotPhysical +.public MultiplyByFixedPoint +.public MultiplyFixedPoint64 +.public PreprocessString +.public ResetDamageDesc +.public RestorePpAllMovesSetFlags +.public RoundUpDiv256 +.public SetItemAcquired +.public SetMonsterFlag2 +.public SetPokemonBattled +.public SetPokemonJoined +.public SpawnMonster +.public StringFromMessageId +.public StrncpySimpleNoPad +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public UpdateAiTargetPos +.public UpdateStatusIconFlags +.public ov10_022BDC68 +.public ov10_022BDE50 +.public ov10_022BF964 +.public ov29_022E1A40 +.public ov29_022E1B28 +.public ov29_022E2470 +.public ov29_022E272C +.public ov29_022E274C +.public ov29_022E2E54 +.public ov29_022E35E4 +.public ov29_022E4018 +.public ov29_022E406C +.public ov29_022E5478 +.public ov29_022E550C +.public ov29_022E576C +.public ov29_022E57A0 +.public ov29_022E6130 +.public ov29_022E617C +.public ov29_022E61C8 +.public ov29_022E6214 +.public ov29_022E62F0 +.public ov29_022E63D8 +.public ov29_022E64C4 +.public ov29_022E6510 +.public ov29_022E66D8 +.public ov29_022E68BC +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022E9628 +.public ov29_022EA370 +.public ov29_022EA718 +.public ov29_022EACAC +.public ov29_022EAD00 +.public ov29_022EAE14 +.public ov29_022EAF20 +.public ov29_022EAF34 +.public ov29_022ECD84 +.public ov29_022EFA6C +.public ov29_022EFB04 +.public ov29_022EFB20 +.public ov29_022EFB84 +.public ov29_022F0518 +.public ov29_022F0534 +.public ov29_022F05E4 +.public ov29_022F0604 +.public ov29_022F0780 +.public ov29_022F85F0 +.public ov29_022F9058 +.public ov29_022F9AF4 +.public ov29_022FB98C +.public ov29_022FBC94 +.public ov29_022FBD24 +.public ov29_022FBDE0 +.public ov29_022FD318 +.public ov29_022FDDC0 +.public ov29_0230040C +.public ov29_02300634 +.public ov29_02301D84 +.public ov29_023023C0 +.public ov29_02303E0C +.public ov29_02304830 +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_02305F60 +.public ov29_02306728 +.public ov29_02306A00 +.public ov29_02307BDC +.public ov29_02307C48 +.public ov29_0230863C +.public ov29_0230F9D8 +.public ov29_02313C74 +.public ov29_02314D40 +.public ov29_023159D4 +.public ov29_02317E88 +.public ov29_0231B060 +.public ov29_02320788 +.public ov29_02321104 +.public ov29_023361D4 +.public ov29_02336F4C +.public ov29_02337EC0 +.public ov29_02338288 +.public ov29_0233847C +.public ov29_02344B9C +.public ov29_02344BD0 +.public ov29_02345A3C +.public ov29_0234969C +.public ov29_0234B034 +.public ov29_0234B084 +.public ov29_0234B09C +.public ov29_0234B0B4 +.public ov29_0234B1A4 +.public ov29_0234B250 +.public ov29_0234BA54 +.public ov29_0234BB50 +.public ov29_0234D630 +.public ov29_0234D6C8 +.public ov29_0234D7C0 +.public ov29_0234D838 +.public ov29_0234D8A0 +.public ov29_0234EE10 +.public ov29_0234F008 +.public sub_0200FB54 +.public sub_02025314 +.public sub_02025888 +.public sub_0204AF00 +.public sub_020534BC +.public sub_02054EC8 +.public sub_02055CCC +.public sub_02055D7C +.public sub_02056698 +.public sub_02056830 +.public sub_020584FC +.public sub_020585B4 +.public sub_02058EB0 diff --git a/asm/include/overlay_29_0230E914.inc b/asm/include/overlay_29_0230E914.inc new file mode 100644 index 00000000..b757ea53 --- /dev/null +++ b/asm/include/overlay_29_0230E914.inc @@ -0,0 +1,19 @@ +#pragma once +.public Abs +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__0230F008 +.public GetDirectionTowardsPosition +.public GetItemCategoryVeneer +.public GetTile +.public IqSkillIsEnabled +.public IsTargetInRange +.public SetMonsterActionFields +.public TestItemAiFlag +.public ov29_022E1610 +.public ov29_022E274C +.public ov29_02300B40 +.public ov29_0230175C +.public ov29_02302368 +.public ov29_0230F02C +.public ov29_0231E05C diff --git a/asm/include/overlay_29_0230F02C.inc b/asm/include/overlay_29_0230F02C.inc new file mode 100644 index 00000000..6d06a0f3 --- /dev/null +++ b/asm/include/overlay_29_0230F02C.inc @@ -0,0 +1,91 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AddMoneyCarried +.public BinToDecFixedPoint +.public BoostSpeedOneStage +.public CeilFixedPoint +.public DisplayActions +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__0230F008 +.public EntityIsValid__02311010 +.public ExclusiveItemEffectFlagTest +.public ExclusiveItemEffectIsActive__02311064 +.public GetApparentWeather +.public GetCurrentBagCapacity +.public GetItemCategoryVeneer +.public GetTile +.public GetTileAtEntity +.public GravityIsActive +.public HasConditionalGroundImmunity +.public HasHeldItem +.public InitMove +.public IqSkillIsEnabled +.public IsAuraBow +.public IsExperienceLocked +.public IsFloorOver +.public ItemIsActive__02311034 +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public MonsterIsType +.public MultiplyFixedPoint64 +.public ShouldMonsterRunAwayVariation +.public SubFixedPoint +.public SubstitutePlaceholderStringTags +.public TickStatusTurnCounter +.public TreasureBoxDropsEnabled +.public TryIncreaseHp +.public TryWarp +.public TryWeatherFormChange +.public ov29_022E1610 +.public ov29_022E274C +.public ov29_022E42E8 +.public ov29_022E53F0 +.public ov29_022E543C +.public ov29_022EA370 +.public ov29_022EACCC +.public ov29_022EC62C +.public ov29_022F2FE4 +.public ov29_022F42F8 +.public ov29_022F52BC +.public ov29_022F54BC +.public ov29_022F9EA0 +.public ov29_022FB718 +.public ov29_02300634 +.public ov29_02300818 +.public ov29_02300CB0 +.public ov29_02300DCC +.public ov29_0230175C +.public ov29_023058C4 +.public ov29_02305C28 +.public ov29_023061A8 +.public ov29_02306CD0 +.public ov29_02307BDC +.public ov29_0230D11C +.public ov29_02314D40 +.public ov29_0231B1B8 +.public ov29_0231E05C +.public ov29_02321104 +.public ov29_02322374 +.public ov29_02337E2C +.public ov29_02344B44 +.public ov29_02344B9C +.public ov29_02344BD0 +.public ov29_02345004 +.public ov29_023456BC +.public ov29_02345A3C +.public ov29_02346060 +.public ov29_023460DC +.public ov29_02347040 +.public ov29_02347184 +.public ov29_02348D00 +.public ov29_02348D3C +.public ov29_02348DD8 +.public ov29_02348ECC +.public ov29_0234908C +.public ov29_0234B084 +.public ov29_0234B294 +.public sub_0200D8AC +.public sub_0201116C +.public sub_02050FF8 diff --git a/asm/include/overlay_29_02311034.inc b/asm/include/overlay_29_02311034.inc new file mode 100644 index 00000000..67e0f905 --- /dev/null +++ b/asm/include/overlay_29_02311034.inc @@ -0,0 +1,31 @@ +#pragma once +.public AbilityIsActive2 +.public CalcSpeedStageWrapper +.public DisplayActions +.public EndCringeClassStatus +.public EndFrozenClassStatus +.public EntityIsValid__02311010 +.public EntityIsValid__023118B4 +.public ExclusiveItemEffectFlagTest +.public GetApparentWeather +.public GetRegenSpeed +.public HasHeldItem +.public IqSkillIsEnabled +.public IsFloorOver +.public LogMessageByIdWithPopupCheckUser +.public SubstitutePlaceholderStringTags +.public TickStatusTurnCounter +.public UpdateStatusIconFlags +.public ov29_02305FDC +.public ov29_023061A8 +.public ov29_023064F4 +.public ov29_02306728 +.public ov29_023068C4 +.public ov29_02306950 +.public ov29_02306A00 +.public ov29_02306B28 +.public ov29_02306BF8 +.public ov29_02306C64 +.public ov29_02306CD0 +.public ov29_023183E8 +.public ov29_0234B294 diff --git a/asm/include/overlay_29_023118D8.inc b/asm/include/overlay_29_023118D8.inc new file mode 100644 index 00000000..728ddcab --- /dev/null +++ b/asm/include/overlay_29_023118D8.inc @@ -0,0 +1,71 @@ +#pragma once +.public AbilityIsActive2 +.public CalcSpeedStage +.public CalcSpeedStageWrapper +.public CalcStatusDuration +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__023118B4 +.public EntityIsValid__02315118 +.public ExclusiveItemEffectFlagTest +.public GetTile +.public GetTileAtEntity +.public HasHeldItem +.public InflictSleepStatusSingle +.public IqSkillIsEnabled +.public ItemIsActive__0231513C +.public LogMessageByIdWithPopupCheckUserTarget +.public MonsterIsType +.public MultiplyByFixedPoint +.public SubstitutePlaceholderStringTags +.public UpdateStatusIconFlags +.public ov29_022E3E74 +.public ov29_022E41CC +.public ov29_022E41F0 +.public ov29_022E4240 +.public ov29_022E4290 +.public ov29_022E4294 +.public ov29_022E42E0 +.public ov29_022E42E4 +.public ov29_022E4338 +.public ov29_022E4388 +.public ov29_022E43D8 +.public ov29_022E4428 +.public ov29_022E44CC +.public ov29_022E451C +.public ov29_022E4B8C +.public ov29_022E4BA0 +.public ov29_022E4BB4 +.public ov29_022E4C00 +.public ov29_022E4C4C +.public ov29_022E4D24 +.public ov29_022E4D28 +.public ov29_022E4DCC +.public ov29_022E4E74 +.public ov29_022E4F1C +.public ov29_022E4FC0 +.public ov29_022E5068 +.public ov29_022E510C +.public ov29_022E51B0 +.public ov29_022E5258 +.public ov29_022E52F8 +.public ov29_022E539C +.public ov29_022E53EC +.public ov29_022E543C +.public ov29_022E60E4 +.public ov29_0230040C +.public ov29_023018AC +.public ov29_02301940 +.public ov29_02301B2C +.public ov29_02302430 +.public ov29_02304A48 +.public ov29_02304A84 +.public ov29_0230F654 +.public ov29_0231B364 +.public ov29_0231B4EC +.public ov29_02344B44 +.public ov29_0234B034 +.public ov29_0234B084 +.public ov29_0234B0B4 +.public sub_02025888 +.public sub_020258E4 diff --git a/asm/include/overlay_29_0231513C.inc b/asm/include/overlay_29_0231513C.inc new file mode 100644 index 00000000..1485ee77 --- /dev/null +++ b/asm/include/overlay_29_0231513C.inc @@ -0,0 +1,105 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public AiMovement +.public BoostDefensiveStat +.public BoostOffensiveStat +.public CalcStatusDuration +.public CeilFixedPoint +.public DivideInt +.public DungeonRandInt +.public EntityIsValid__02315118 +.public EntityIsValid__02318D34 +.public GetFloorType +.public GetMaxPp +.public GetMaxPpWrapper +.public GetMobilityType +.public GetMonsterIdFromSpawnEntry +.public GetNameWithGender +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public GravityIsActive +.public HasHeldItem +.public IqSkillIsEnabled +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LogMessageWithPopupCheckUserTarget +.public LowerSpeed +.public MewSpawnCheck +.public MonsterIsType +.public MultiplyByFixedPoint +.public Strcpy +.public SubFixedPoint +.public SubstitutePlaceholderStringTags +.public TryActivateQuickFeet +.public UpdateStatusIconFlags +.public ov29_022E272C +.public ov29_022E2EC4 +.public ov29_022E38E0 +.public ov29_022E41B0 +.public ov29_022E41DC +.public ov29_022E442C +.public ov29_022E4430 +.public ov29_022E4480 +.public ov29_022E456C +.public ov29_022E45B8 +.public ov29_022E45CC +.public ov29_022E465C +.public ov29_022E4660 +.public ov29_022E4664 +.public ov29_022E4668 +.public ov29_022E466C +.public ov29_022E4670 +.public ov29_022E4674 +.public ov29_022E46C0 +.public ov29_022E46D0 +.public ov29_022E46D4 +.public ov29_022E4704 +.public ov29_022E4714 +.public ov29_022E4718 +.public ov29_022E471C +.public ov29_022E476C +.public ov29_022E47B8 +.public ov29_022E47BC +.public ov29_022E47C0 +.public ov29_022E47C4 +.public ov29_022E47C8 +.public ov29_022E47CC +.public ov29_022E4868 +.public ov29_022E486C +.public ov29_022E48B8 +.public ov29_022E4914 +.public ov29_022E4964 +.public ov29_022E49B4 +.public ov29_022E4A04 +.public ov29_022E4A54 +.public ov29_022E4AA4 +.public ov29_022E4AF0 +.public ov29_022E4B3C +.public ov29_022E7C60 +.public ov29_022E81F8 +.public ov29_022EA718 +.public ov29_022EACCC +.public ov29_022F9408 +.public ov29_022FB984 +.public ov29_02301940 +.public ov29_02301EAC +.public ov29_02302430 +.public ov29_02304830 +.public ov29_02304BAC +.public ov29_023066D8 +.public ov29_02306728 +.public ov29_02306A00 +.public ov29_02314D40 +.public ov29_0231B364 +.public ov29_02336F4C +.public ov29_02338794 +.public ov29_02339CE8 +.public ov29_0234B09C +.public ov29_0234B0B4 +.public sub_01FFB62C +.public sub_02001888 +.public sub_02024FB8 +.public sub_02050EBC +.public sub_02050F78 +.public sub_02050FF8 diff --git a/asm/include/overlay_29_02318D58.inc b/asm/include/overlay_29_02318D58.inc new file mode 100644 index 00000000..e4d4a4b7 --- /dev/null +++ b/asm/include/overlay_29_02318D58.inc @@ -0,0 +1,8 @@ +#pragma once +.public CalcStatusDuration +.public EntityIsValid__02318D34 +.public EntityIsValid__02318E4C +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public UpdateStatusIconFlags +.public ov29_022E3F20 diff --git a/asm/include/overlay_29_02318E70.inc b/asm/include/overlay_29_02318E70.inc new file mode 100644 index 00000000..1f5e9fe5 --- /dev/null +++ b/asm/include/overlay_29_02318E70.inc @@ -0,0 +1,40 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public CalcStatusDuration +.public CanAttackInDirection +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__02318E4C +.public EntityIsValid__02319F8C +.public ExclusiveItemEffectFlagTest +.public GetDirectionTowardsPosition +.public GetEntityMoveTargetAndRange +.public GetMoveTargetAndRange +.public GetMoveTypeForMonster +.public GetTile +.public IqSkillIsEnabled +.public IsAffectedByTaunt +.public IsAiTargetEligible +.public IsBlinded +.public IsTargetInRange +.public LogMessageByIdWithPopupCheckUserTarget +.public StatusCheckerCheck +.public SubstitutePlaceholderStringTags +.public TryAddTargetToAiTargetList +.public UpdateStatusIconFlags +.public ov29_022E274C +.public ov29_022E3F74 +.public ov29_022E3F78 +.public ov29_022E3F7C +.public ov29_022E3FC8 +.public ov29_022E4014 +.public ov29_022E4068 +.public ov29_022E40B8 +.public ov29_022E40BC +.public ov29_022E4108 +.public ov29_022E410C +.public ov29_022E415C +.public ov29_022E41AC +.public ov29_022E543C +.public ov29_0231A364 diff --git a/asm/include/overlay_29_02319FB0.inc b/asm/include/overlay_29_02319FB0.inc new file mode 100644 index 00000000..cc83244a --- /dev/null +++ b/asm/include/overlay_29_02319FB0.inc @@ -0,0 +1,59 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AiConsiderMove +.public BoostSpeedOneStage +.public CanAttackInDirection +.public DivideInt +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EnemyEvolution +.public EntityIsValid__02319F8C +.public EntityIsValid__0231B194 +.public ExclusiveItemEffectFlagTest +.public GetApparentWeather +.public GetDirectionTowardsPosition +.public GetItemMoveId16 +.public GetMoveAccuracyOrAiChance +.public GetMoveTargetAndRange +.public GetMoveTypeForMonster +.public GetNumberOfAttacks +.public GetTile +.public GetTreasureBoxChances +.public HasHeldItem +.public InitMove +.public IqSkillIsEnabled +.public IsBlinded +.public IsFloorOver +.public IsMoveRangeString19 +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public MonsterIsType +.public SetActionUseMoveAi +.public SubstitutePlaceholderStringTags +.public TryActivateTruant +.public UpdateAiTargetPos +.public UpdateMovePp +.public ov29_022E3ED0 +.public ov29_022E4110 +.public ov29_022EB4E8 +.public ov29_022EB54C +.public ov29_022EB60C +.public ov29_022FA574 +.public ov29_022FB9E0 +.public ov29_022FBAB4 +.public ov29_02300634 +.public ov29_023007A8 +.public ov29_023007DC +.public ov29_0230175C +.public ov29_0230B7D4 +.public ov29_0230F8D0 +.public ov29_02321274 +.public ov29_0232145C +.public ov29_02322374 +.public ov29_0232E80C +.public ov29_02333FD0 +.public ov29_023440AC +.public ov29_02344160 +.public ov29_02344B44 +.public ov29_0234B250 diff --git a/asm/include/overlay_29_0231B1B8.inc b/asm/include/overlay_29_0231B1B8.inc new file mode 100644 index 00000000..8384d4ad --- /dev/null +++ b/asm/include/overlay_29_0231B1B8.inc @@ -0,0 +1,92 @@ +#pragma once +.public AbilityIsActive2 +.public ApplyGummiBoostsDungeonMode +.public BoostSpeedOneStage +.public CalcDamageFixedNoCategory +.public CalcDamageProjectile +.public CalcStatusDuration +.public EnemyEvolution +.public EntityIsValid__0231B194 +.public EntityIsValid__0231CBC8 +.public ExclusiveItemEffectFlagTest +.public FemaleToMaleForm +.public GetActiveTeamMember +.public GetItemCategoryVeneer +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public InitMove +.public IqSkillIsEnabled +.public IsBagFull +.public IsShaymin +.public IsSkyExclusiveDungeon +.public LogMessageByIdWithPopupCheckUserTarget +.public RestoreMovePP +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictConfusedStatus +.public TryInflictPetrifiedStatus +.public TryInflictSleepStatus +.public TryInflictSleeplessStatus +.public TryWarp +.public ViolentSeedBoost +.public ov29_022E28D4 +.public ov29_022E3590 +.public ov29_022E38E0 +.public ov29_022E5A00 +.public ov29_022E5AE4 +.public ov29_022E60E4 +.public ov29_022E81F8 +.public ov29_022E9FD0 +.public ov29_022EA370 +.public ov29_022EACCC +.public ov29_022F04F0 +.public ov29_022F0518 +.public ov29_022F75D4 +.public ov29_022F9194 +.public ov29_022F9EA0 +.public ov29_022FA144 +.public ov29_022FB9BC +.public ov29_023007A8 +.public ov29_02300B40 +.public ov29_02302A5C +.public ov29_02302F88 +.public ov29_02304830 +.public ov29_02304BAC +.public ov29_02305C28 +.public ov29_02307BDC +.public ov29_0230D11C +.public ov29_0230D440 +.public ov29_0230F9A4 +.public ov29_0231657C +.public ov29_02316BB0 +.public ov29_023176CC +.public ov29_02317844 +.public ov29_0231795C +.public ov29_02317A0C +.public ov29_02317AF4 +.public ov29_02317F50 +.public ov29_02317FE4 +.public ov29_02318078 +.public ov29_0231810C +.public ov29_0231CBEC +.public ov29_0231CC18 +.public ov29_0231CC4C +.public ov29_0231CC94 +.public ov29_0231CD80 +.public ov29_0231CE68 +.public ov29_0231CF84 +.public ov29_0231D534 +.public ov29_0231D680 +.public ov29_0231D6E0 +.public ov29_0231D74C +.public ov29_0231D7C0 +.public ov29_0231D838 +.public ov29_0231D9C0 +.public ov29_02343CD8 +.public ov29_02344B44 +.public ov29_02345A3C +.public ov29_02346F14 +.public ov29_0234B084 +.public ov29_0234BA54 +.public sub_020017EC +.public sub_0201CF80 diff --git a/asm/include/overlay_29_0231CBEC.inc b/asm/include/overlay_29_0231CBEC.inc new file mode 100644 index 00000000..4213107d --- /dev/null +++ b/asm/include/overlay_29_0231CBEC.inc @@ -0,0 +1,120 @@ +#pragma once +.public AbilityIsActive2 +.public AllocAndLoadFileInPack +.public BoostOffensiveStat +.public CalcDamageFixedNoCategory +.public CanSeeInvisibleMonsters +.public CeilFixedPoint +.public CheckTeamMemberIdx__022F9C34 +.public ClearMonsterActionFields +.public DisplayMessage2 +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EndFrozenClassStatus +.public EntityIsValid__0231CBC8 +.public EntityIsValid__0231EDD8 +.public FemaleToMaleForm +.public GetActiveTeamMember +.public GetApparentWeather +.public GetItemMoveId16 +.public GetMaxPp +.public GetMobilityType +.public GetMoveBasePower +.public GetMoveCategory +.public GetMoveMaxGinsengBoost +.public GetPerformanceFlagWithChecks +.public GetTile +.public GetTileSafe +.public HandleSir0Translation +.public InitMove +.public IqSkillIsEnabled +.public IsBlinded +.public IsEdible +.public IsExperienceLocked +.public IsHM +.public IsItemValidVeneer +.public LogMessageByIdWithPopup +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerOffensiveStat +.public RestoreMovePP +.public SetMonsterActionFields +.public StairsAlwaysReachable +.public SubstitutePlaceholderStringTags +.public TryInflictBurnStatus +.public TryInflictParalysisStatus +.public TryInflictPoisonedStatus +.public TryInflictShadowHoldStatus +.public TryWarp +.public UnloadFile +.public ov29_022DD828 +.public ov29_022DE47C +.public ov29_022DE608 +.public ov29_022DE620 +.public ov29_022E0378 +.public ov29_022E0880 +.public ov29_022E272C +.public ov29_022E5AE4 +.public ov29_022E5BD8 +.public ov29_022EA370 +.public ov29_022EA428 +.public ov29_022EAD00 +.public ov29_022EAE14 +.public ov29_022EAF20 +.public ov29_022EAF34 +.public ov29_022EB398 +.public ov29_022EB60C +.public ov29_022EB668 +.public ov29_022EFB20 +.public ov29_022EFB84 +.public ov29_022F04F0 +.public ov29_022F0518 +.public ov29_022F05E4 +.public ov29_022F0780 +.public ov29_022F085C +.public ov29_022F8830 +.public ov29_022F9C74 +.public ov29_022FA02C +.public ov29_022FA144 +.public ov29_022FBA54 +.public ov29_02300634 +.public ov29_02300818 +.public ov29_023008DC +.public ov29_023009A0 +.public ov29_0230175C +.public ov29_023021F0 +.public ov29_023038D4 +.public ov29_02304B64 +.public ov29_02305814 +.public ov29_023061A8 +.public ov29_023168D8 +.public ov29_02316BB0 +.public ov29_02319378 +.public ov29_0231B4EC +.public ov29_02321104 +.public ov29_023361D4 +.public ov29_0233665C +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_0233785C +.public ov29_02338530 +.public ov29_02338548 +.public ov29_02339CE8 +.public ov29_02339FF4 +.public ov29_0233FB1C +.public ov29_02344B44 +.public ov29_0234B084 +.public ov29_0234B09C +.public ov29_0234BA54 +.public ov29_0234D518 +.public ov30_023853BC +.public ov30_023853E0 +.public ov30_02385FE0 +.public ov31_023860A4 +.public ov31_0238619C +.public ov31_02386204 +.public ov31_02386308 +.public ov31_023877EC +.public sub_02050FF8 +.public sub_02053D1C diff --git a/asm/include/overlay_29_0231EDFC.inc b/asm/include/overlay_29_0231EDFC.inc new file mode 100644 index 00000000..f46c7530 --- /dev/null +++ b/asm/include/overlay_29_0231EDFC.inc @@ -0,0 +1,30 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public CalcDamageFixedNoCategory +.public DivideInt +.public DungeonRandInt +.public DungeonRandRange +.public EntityIsValid__0231F570 +.public GetDirectionTowardsPosition +.public GetTile +.public HasDropeyeStatus +.public InitMove +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public TryWarp +.public ov29_022E1A40 +.public ov29_022E272C +.public ov29_022E274C +.public ov29_022E9298 +.public ov29_022EA370 +.public ov29_022EACCC +.public ov29_022F85F0 +.public ov29_022FF764 +.public ov29_0230175C +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_0232033C +.public ov29_02321238 +.public ov29_02324854 +.public sub_020018D0 diff --git a/asm/include/overlay_29_0231F594.inc b/asm/include/overlay_29_0231F594.inc new file mode 100644 index 00000000..97a37a91 --- /dev/null +++ b/asm/include/overlay_29_0231F594.inc @@ -0,0 +1,28 @@ +#pragma once +.public Abs +.public AdvanceFrame +.public DivideInt +.public EntityIsValid__0231FBFC +.public GetTile +.public GetTileSafe +.public LogMessageByIdWithPopupCheckUser +.public MemAlloc +.public MemFree +.public ov29_022E1610 +.public ov29_022E1A84 +.public ov29_022E1A90 +.public ov29_022E56A0 +.public ov29_022F62CC +.public ov29_02304B64 +.public ov29_02336694 +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_02337E94 +.public ov29_023391EC +.public ov29_02339CE8 +.public ov29_0234410C +.public ov29_0234413C +.public ov29_02345538 +.public ov29_023456BC +.public ov29_023457C8 +.public sub_020018D0 diff --git a/asm/include/overlay_29_0231FC20.inc b/asm/include/overlay_29_0231FC20.inc new file mode 100644 index 00000000..3faa2614 --- /dev/null +++ b/asm/include/overlay_29_0231FC20.inc @@ -0,0 +1,25 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public CalcDamageFixedNoCategory +.public EntityIsValid__0232017C +.public GetTile +.public InitMove +.public IsFloorOver +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public ov29_022E1A40 +.public ov29_022E1A90 +.public ov29_022E272C +.public ov29_022E56A0 +.public ov29_022F85F0 +.public ov29_022F9C74 +.public ov29_022FFB90 +.public ov29_023049A8 +.public ov29_02307BDC +.public ov29_0232033C +.public ov29_02321104 +.public ov29_02321238 +.public ov29_0232124C +.public ov29_02324854 +.public ov29_023440DC diff --git a/asm/include/overlay_29_023201A0.inc b/asm/include/overlay_29_023201A0.inc new file mode 100644 index 00000000..ba45ee26 --- /dev/null +++ b/asm/include/overlay_29_023201A0.inc @@ -0,0 +1,32 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AdvanceFrame +.public DivideInt +.public EntityIsValid__0232017C +.public EntityIsValid__02320764 +.public GetApparentWeather +.public GetTile +.public GetTileSafe +.public IsFloorOver +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public SubstitutePlaceholderStringTags +.public ov29_022E1A40 +.public ov29_022E1A90 +.public ov29_022E272C +.public ov29_022E5560 +.public ov29_022E55F0 +.public ov29_022E56A0 +.public ov29_022F85F0 +.public ov29_022F9C74 +.public ov29_022FFB90 +.public ov29_02320AA4 +.public ov29_02321104 +.public ov29_02321238 +.public ov29_02336694 +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_02339CE8 +.public ov29_023456BC +.public sub_020018D0 diff --git a/asm/include/overlay_29_02320788.inc b/asm/include/overlay_29_02320788.inc new file mode 100644 index 00000000..0ba7b8f1 --- /dev/null +++ b/asm/include/overlay_29_02320788.inc @@ -0,0 +1,51 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public CalcDamageFixedNoCategory +.public CanMonsterUseMove +.public EntityIsValid__02320764 +.public EntityIsValid__02321438 +.public GetApparentWeather +.public GetLeader +.public GetTileSafe +.public InitMove +.public IsFloorOver +.public LogMessageByIdWithPopupCheckUserTarget +.public MonsterIsType +.public SubstitutePlaceholderStringTags +.public TryInflictPetrifiedStatus +.public UpdateMovePp +.public ov29_022E1A40 +.public ov29_022E272C +.public ov29_022E2EC4 +.public ov29_022E4C84 +.public ov29_022E4CD4 +.public ov29_022E5560 +.public ov29_022E55F0 +.public ov29_022E5650 +.public ov29_022E9628 +.public ov29_022E99F0 +.public ov29_022E9A28 +.public ov29_022F42F8 +.public ov29_022F62CC +.public ov29_022F85F0 +.public ov29_022F87C0 +.public ov29_022F9C74 +.public ov29_022FAA04 +.public ov29_022FF958 +.public ov29_022FFC9C +.public ov29_02304A48 +.public ov29_02305814 +.public ov29_02307BDC +.public ov29_02314D40 +.public ov29_02322374 +.public ov29_023247B4 +.public ov29_02324854 +.public ov29_02336694 +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_02337A3C +.public ov29_02339CE8 +.public ov29_023440DC +.public ov29_023456BC +.public sub_01FFB62C diff --git a/asm/include/overlay_29_0232145C.inc b/asm/include/overlay_29_0232145C.inc new file mode 100644 index 00000000..da692a16 --- /dev/null +++ b/asm/include/overlay_29_0232145C.inc @@ -0,0 +1,139 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public AnimationHasMoreFrames +.public BoostSpeedOneStage +.public CalcStatusDuration +.public DivideInt +.public DungeonRandInt +.public DungeonRandOutcome__022EAB50 +.public DungeonRandRange +.public EndFrozenClassStatus +.public EnemyEvolution +.public EntityIsValid__02321438 +.public EntityIsValid__02325620 +.public ExclusiveItemEffectFlagTest +.public ExecuteMoveEffect +.public FailsWhileMuzzled +.public FormatMoveStringMore +.public GetApparentWeather +.public GetBodySize +.public GetDamageSource +.public GetEntityMoveTargetAndRange +.public GetInfoMoveCheckId +.public GetMonsterGenderVeneer +.public GetMoveAccuracyOrAiChance +.public GetMoveAnimation +.public GetMoveAnimationId +.public GetMoveAnimationSpeed +.public GetMoveMaxGinsengBoost +.public GetMoveMessageFromId +.public GetMoveNbStrikes +.public GetSpriteIndex__02052708 +.public GetTile +.public GravityIsActive +.public HasHeldItem +.public InitMove +.public IqSkillIsEnabled +.public Is2TurnsMove +.public IsAffectedByTaunt +.public IsCopyingMove +.public IsFloorOver +.public IsTrappingMove +.public LogMessageByIdWithPopupCheckUser +.public LogMessageQuiet +.public LogMessageWithPopup +.public LogMessageWithPopupCheckUser +.public LowerSpeed +.public MoveIsNotPhysical +.public ShouldMovePlayAlternativeAnimation +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TryInflictBurnStatus +.public TryInflictConfusedStatus +.public TryInflictConstrictionStatus +.public TryInflictCringeStatus +.public TryInflictFrozenStatus +.public TryInflictInfatuatedStatus +.public TryInflictNightmareStatus +.public TryInflictParalysisStatus +.public TryInflictPausedStatus +.public TryInflictPoisonedStatus +.public TryInflictShadowHoldStatus +.public TryInflictSleepStatus +.public TrySealMove +.public TryWarp +.public UpdateAiTargetPos +.public ov00_022BFDAC +.public ov00_022BFDEC +.public ov10_022BDE50 +.public ov10_022BE9E8 +.public ov10_022BEB2C +.public ov10_022BF01C +.public ov10_022BF0F4 +.public ov10_022BF1FC +.public ov10_022BFA3C +.public ov10_022BFAA8 +.public ov10_022BFD58 +.public ov10_022BFD6C +.public ov10_022BFD8C +.public ov10_022BFDCC +.public ov29_022DE5D8 +.public ov29_022DE5F0 +.public ov29_022E272C +.public ov29_022E28D4 +.public ov29_022E2CA0 +.public ov29_022E3560 +.public ov29_022E38E0 +.public ov29_022E56A0 +.public ov29_022E5864 +.public ov29_022E5ED0 +.public ov29_022E65A8 +.public ov29_022E6D68 +.public ov29_022EA370 +.public ov29_022EACCC +.public ov29_022ED0C4 +.public ov29_022ED0D4 +.public ov29_022ED868 +.public ov29_022F6F68 +.public ov29_022F87C0 +.public ov29_022F8830 +.public ov29_022F88C0 +.public ov29_022F9840 +.public ov29_022FAA04 +.public ov29_022FAFD4 +.public ov29_022FB678 +.public ov29_022FBAB4 +.public ov29_0230040C +.public ov29_023007A8 +.public ov29_02300DCC +.public ov29_0230175C +.public ov29_023024E0 +.public ov29_023049A8 +.public ov29_02304A48 +.public ov29_02304B14 +.public ov29_023068C4 +.public ov29_0231657C +.public ov29_0231662C +.public ov29_023176CC +.public ov29_02318D58 +.public ov29_0231B33C +.public ov29_02321288 +.public ov29_02325644 +.public ov29_023256B4 +.public ov29_02325D20 +.public ov29_02325D7C +.public ov29_023280D4 +.public ov29_02337B68 +.public ov29_023383A8 +.public ov29_02344B9C +.public ov29_0234B034 +.public ov29_0234B084 +.public ov29_0234B09C +.public ov29_0234B4CC +.public sub_020018D0 +.public sub_02001980 +.public sub_0201CF90 +.public sub_0201D1B0 +.public sub_0201D1D4 +.public sub_0201DA80 diff --git a/asm/include/overlay_29_02325644.inc b/asm/include/overlay_29_02325644.inc new file mode 100644 index 00000000..273de9ea --- /dev/null +++ b/asm/include/overlay_29_02325644.inc @@ -0,0 +1,86 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public AnimationHasMoreFrames +.public ApplyDefensiveStatMultiplier +.public ApplyOffensiveStatMultiplier +.public BoostDefensiveStat +.public BoostHitChanceStat +.public BoostOffensiveStat +.public BoostSpeedOneStage +.public CalcDamageFixedWrapper +.public CalcRecoilDamageFixed +.public CalcStatusDuration +.public DealDamage +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcomeUserTargetInteraction +.public DungeonRandRange +.public EntityIsValid__02325620 +.public EntityIsValid__0232800C +.public ExclusiveItemEffectFlagTest +.public FormatMoveStringMore +.public GetApparentWeather +.public GetEffectAnimation +.public GetLowKickMultiplier +.public GetMoveAnimation +.public GetMoveCategory +.public GetMoveType +.public GetTileAtEntity +.public InitMove +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerHitChanceStat +.public LowerOffensiveStat +.public LowerSpeed +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBurnStatus +.public TryInflictConfusedStatus +.public TryInflictConstrictionStatus +.public TryInflictCringeStatus +.public TryInflictFrozenStatus +.public TryInflictNightmareStatus +.public TryInflictParalysisStatus +.public TryInflictShadowHoldStatus +.public TryInflictSleepStatus +.public TryInflictSleeplessStatus +.public TryInflictYawningStatus +.public ov10_022BED90 +.public ov10_022BF160 +.public ov10_022BFC5C +.public ov29_022E2CA0 +.public ov29_022E5474 +.public ov29_022E5ED0 +.public ov29_022E6D68 +.public ov29_022EA428 +.public ov29_023007A8 +.public ov29_02305C28 +.public ov29_023061A8 +.public ov29_023064F4 +.public ov29_02307C78 +.public ov29_0230D11C +.public ov29_02313C74 +.public ov29_02314EB8 +.public ov29_02315B70 +.public ov29_02315C00 +.public ov29_02315D84 +.public ov29_02316720 +.public ov29_023174C8 +.public ov29_02318BBC +.public ov29_02318D58 +.public ov29_02318D98 +.public ov29_02319378 +.public ov29_02319418 +.public ov29_02319584 +.public ov29_02319624 +.public ov29_02319748 +.public ov29_023245A4 +.public ov29_02324E44 +.public ov29_02332CDC +.public ov29_02332F18 +.public ov29_023354C4 +.public ov29_02337E2C +.public ov29_0234B034 +.public ov29_0234BA54 +.public sub_0201CF90 diff --git a/asm/include/overlay_29_02328030.inc b/asm/include/overlay_29_02328030.inc new file mode 100644 index 00000000..93ca442f --- /dev/null +++ b/asm/include/overlay_29_02328030.inc @@ -0,0 +1,80 @@ +#pragma once +.public AbilityIsActive2 +.public BoostDefensiveStat +.public BoostHitChanceStat +.public BoostOffensiveStat +.public CalcDamage +.public CalcDamageFixedWrapper +.public CalcRecoilDamageFixed +.public DealDamage +.public DungeonRandInt +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcomeUserTargetInteraction +.public EntityIsValid__0232800C +.public EntityIsValid__0232A3D8 +.public ExclusiveItemEffectFlagTest +.public GetApparentWeather +.public GetMoveCategory +.public GetMoveCritChance +.public GetMovePower +.public GetMoveType +.public GetMoveTypeForMonster +.public GetTileAtEntity +.public InitMove +.public IsSameMove +.public LevitateIsActive +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerHitChanceStat +.public LowerOffensiveStat +.public RemoveEquivItemNoHole +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBadlyPoisonedStatus +.public TryInflictBurnStatus +.public TryInflictConfusedStatus +.public TryInflictCringeStatus +.public TryInflictFrozenStatus +.public TryInflictParalysisStatus +.public TryInflictPoisonedStatus +.public TryInflictShadowHoldStatus +.public TryWarp +.public ov29_022E56A0 +.public ov29_022E5ED0 +.public ov29_022EA370 +.public ov29_022ECAFC +.public ov29_022F9EA0 +.public ov29_022FA7DC +.public ov29_0230040C +.public ov29_023049A8 +.public ov29_02307C78 +.public ov29_0230D11C +.public ov29_0230D4A4 +.public ov29_023163A8 +.public ov29_023164D8 +.public ov29_02318A90 +.public ov29_02318AD4 +.public ov29_02318B48 +.public ov29_02318BBC +.public ov29_02318D58 +.public ov29_02318E70 +.public ov29_02318F10 +.public ov29_02318FAC +.public ov29_023194B8 +.public ov29_0231B060 +.public ov29_02320448 +.public ov29_023245A4 +.public ov29_02324E44 +.public ov29_0232A834 +.public ov29_0232C310 +.public ov29_0233544C +.public ov29_023354C4 +.public ov29_02337E2C +.public ov29_02344BD0 +.public ov29_02346F14 +.public ov29_02347030 +.public ov29_0234B034 +.public ov29_0234B084 +.public ov29_0234C668 +.public ov29_0234C738 diff --git a/asm/include/overlay_29_0232A3FC.inc b/asm/include/overlay_29_0232A3FC.inc new file mode 100644 index 00000000..c0e2974c --- /dev/null +++ b/asm/include/overlay_29_0232A3FC.inc @@ -0,0 +1,99 @@ +#pragma once +.public AbilityIsActive2 +.public AdvanceFrame +.public BoostDefensiveStat +.public BoostOffensiveStat +.public BoostSpeedOneStage +.public CalcDamageFixedWrapper +.public CalcStatusDuration +.public CeilFixedPoint +.public DealDamage +.public DefenderAbilityIsActive__02329F14 +.public DivideInt +.public DungeonRandInt +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcomeUserTargetInteraction +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__0232A3D8 +.public EntityIsValid__0232C500 +.public GetMoveCategory +.public GetMoveType +.public GetTileSafe +.public InitMove +.public InitStandardItem +.public IsBagFull +.public IsExperienceLocked +.public IsFloorOver +.public ItemZInit +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerHitChanceStat +.public LowerOffensiveStat +.public LowerSpeed +.public RemoveEquivItem +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TryBlowAway +.public TryIncreaseHp +.public TryInflictBurnStatus +.public TryInflictConfusedStatus +.public TryInflictConstrictionStatus +.public TryInflictCringeStatus +.public TryInflictDestinyBond +.public TryInflictFrozenStatus +.public TryInflictInfatuatedStatus +.public TryInflictIngrainStatus +.public TryInflictLeechSeedStatus +.public TryInflictNappingStatus +.public TryInflictParalysisStatus +.public TryInflictPausedStatus +.public TryInflictPoisonedStatus +.public TryInflictSleepStatus +.public TryInflictWrappedStatus +.public TryWarp +.public ov29_022E1A40 +.public ov29_022E1A84 +.public ov29_022E1A90 +.public ov29_022E2CA0 +.public ov29_022E38E0 +.public ov29_022ED868 +.public ov29_022EDCBC +.public ov29_022EF5D8 +.public ov29_022F85F0 +.public ov29_022F8FF8 +.public ov29_022F9EA0 +.public ov29_022FFB90 +.public ov29_023007A8 +.public ov29_0230175C +.public ov29_023049A8 +.public ov29_02307C78 +.public ov29_0230D11C +.public ov29_02315CE8 +.public ov29_02315E24 +.public ov29_023160DC +.public ov29_02316280 +.public ov29_0231662C +.public ov29_0231721C +.public ov29_02318BBC +.public ov29_02318D58 +.public ov29_0231904C +.public ov29_023190EC +.public ov29_0231918C +.public ov29_0231922C +.public ov29_023192DC +.public ov29_02321164 +.public ov29_02321260 +.public ov29_023245A4 +.public ov29_02324854 +.public ov29_02324D60 +.public ov29_02324E44 +.public ov29_02332F18 +.public ov29_023361D4 +.public ov29_02336F4C +.public ov29_02337B9C +.public ov29_02345AD8 +.public ov29_02346F14 +.public ov29_0234B084 +.public sub_02025888 +.public sub_02050FF8 +.public sub_02054EC8 diff --git a/asm/include/overlay_29_0232C524.inc b/asm/include/overlay_29_0232C524.inc new file mode 100644 index 00000000..2bc874b6 --- /dev/null +++ b/asm/include/overlay_29_0232C524.inc @@ -0,0 +1,124 @@ +#pragma once +.public AbilityIsActive2 +.public BoostDefensiveStat +.public BoostOffensiveStat +.public BoostOrLowerSpeed +.public CalcDamageFixedWrapper +.public CalcRecoilDamageFixed +.public CalcStatusDuration +.public DealDamage +.public DivideInt +.public DungeonRandInt +.public DungeonRandOutcomeUserTargetInteraction +.public EntityIsValid__0232C500 +.public EntityIsValid__0232E250 +.public FixedRoomIsSubstituteRoom +.public GetApparentWeather +.public GetBodySize +.public GetMaxPp +.public GetMonsterIdToSpawn +.public GetMoveCategory +.public GetMoveType +.public GetNameWithGender +.public GetSize +.public GetTileAtEntity +.public GetTileSafe +.public HandleFaint +.public HasDropeyeStatus +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerDefensiveStat +.public LowerHitChanceStat +.public LowerSpeed +.public MewSpawnCheck +.public StringFromMessageId +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBurnStatus +.public TryInflictCoweringStatus +.public TryInflictCringeStatus +.public TryInflictFrozenStatus +.public TryInflictParalysisStatus +.public TryInflictPetrifiedStatus +.public TryInflictSleepStatus +.public TryInflictSleeplessStatus +.public TryPounce +.public TrySwitchPlace +.public TryWarp +.public ov29_022E0880 +.public ov29_022E09E8 +.public ov29_022E1608 +.public ov29_022E1AAC +.public ov29_022E1AD4 +.public ov29_022E1EF8 +.public ov29_022E333C +.public ov29_022E3430 +.public ov29_022E6770 +.public ov29_022E6784 +.public ov29_022E7AC4 +.public ov29_022E8104 +.public ov29_022E81F8 +.public ov29_022ED868 +.public ov29_022EDBD4 +.public ov29_022EDCBC +.public ov29_022EDE7C +.public ov29_022FB0A8 +.public ov29_022FB214 +.public ov29_022FBDE0 +.public ov29_022FBDF0 +.public ov29_022FD7A0 +.public ov29_0230175C +.public ov29_02304B64 +.public ov29_02305C28 +.public ov29_02305C3C +.public ov29_023064F4 +.public ov29_02307C78 +.public ov29_02307D18 +.public ov29_0230D874 +.public ov29_0230D8E8 +.public ov29_0230D95C +.public ov29_0230D9D0 +.public ov29_0230DA44 +.public ov29_0230DAB8 +.public ov29_02315610 +.public ov29_023156A0 +.public ov29_0231575C +.public ov29_0231657C +.public ov29_023168D8 +.public ov29_02317124 +.public ov29_0231740C +.public ov29_02317648 +.public ov29_023181A0 +.public ov29_02318210 +.public ov29_0231827C +.public ov29_0231845C +.public ov29_02318508 +.public ov29_023185A8 +.public ov29_0231872C +.public ov29_02318984 +.public ov29_02318BBC +.public ov29_02318D58 +.public ov29_02318D98 +.public ov29_023197CC +.public ov29_0231AE90 +.public ov29_0231EA40 +.public ov29_0231EDFC +.public ov29_0231F594 +.public ov29_0231F6E4 +.public ov29_023245A4 +.public ov29_02324E44 +.public ov29_02332BB8 +.public ov29_02332F18 +.public ov29_023354C4 +.public ov29_023361D4 +.public ov29_02336694 +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_023383BC +.public ov29_02339CE8 +.public ov29_02344BD0 +.public ov29_02345A3C +.public ov29_0234B084 +.public ov29_0234B0B4 +.public ov29_0234BA54 +.public sub_02024FB8 diff --git a/asm/include/overlay_29_0232E274.inc b/asm/include/overlay_29_0232E274.inc new file mode 100644 index 00000000..7d580b9f --- /dev/null +++ b/asm/include/overlay_29_0232E274.inc @@ -0,0 +1,30 @@ +#pragma once +.public AbilityIsActive2 +.public BoostDefensiveStat +.public BoostOffensiveStat +.public BoostSpeedOneStage +.public CalcRecoilDamageFixed +.public DealDamage +.public DefenderAbilityIsActive__0232DE20 +.public DungeonRandOutcomeUserTargetInteraction +.public EntityIsValid__0232E250 +.public EntityIsValid__0232E840 +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerOffensiveStat +.public ResetHitChanceStat +.public RestoreMovePP +.public SubstitutePlaceholderStringTags +.public TryIncreaseHp +.public TryInflictBurnStatus +.public TryInflictCringeStatus +.public ov29_02305C28 +.public ov29_02305FDC +.public ov29_02307C78 +.public ov29_02314E60 +.public ov29_0231526C +.public ov29_02318850 +.public ov29_02318D98 +.public ov29_0232C578 +.public ov29_0232CA70 +.public ov29_0234AFFC +.public sub_02054EC8 diff --git a/asm/include/overlay_29_0232E864.inc b/asm/include/overlay_29_0232E864.inc new file mode 100644 index 00000000..f528685b --- /dev/null +++ b/asm/include/overlay_29_0232E864.inc @@ -0,0 +1,419 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public CalcDamage +.public CanAttackInDirection +.public CanBeSnatched +.public CeilFixedPoint +.public Conversion2IsActive +.public DealDamageWithRecoil +.public DungeonRandInt +.public DungeonRandOutcomeUserAction +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__0232E840 +.public EntityIsValid__02333FAC +.public ExclusiveItemEffectFlagTest +.public GetApparentWeather +.public GetDirectionTowardsPosition +.public GetEntityMoveTargetAndRange +.public GetMoveCategory +.public GetMoveCritChance +.public GetMovePower +.public GetMoveTypeForMonster +.public GetTile +.public GetTileAtEntity +.public HasHeldItem +.public HasLowHealth +.public IqSkillIsEnabled +.public IsFloorOver +.public IsHealingWishOrLunarDance +.public IsReflectedByMagicCoat +.public IsSoundMove +.public LightningRodStormDrainCheck +.public LogMessageByIdQuietCheckUserTarget +.public LogMessageByIdWithPopupCheckUserTarget +.public LowerOffensiveStat +.public MonsterIsType +.public MoveHitCheck +.public SubFixedPoint +.public SubstitutePlaceholderStringTags +.public TryWarp +.public ov01_0232A078 +.public ov01_0233103C +.public ov01_023310E4 +.public ov01_023315F4 +.public ov10_022BFD6C +.public ov29_022E0880 +.public ov29_022E272C +.public ov29_022E274C +.public ov29_022E38E0 +.public ov29_022E3FCC +.public ov29_022E4110 +.public ov29_022E56A0 +.public ov29_022E576C +.public ov29_022E6338 +.public ov29_022E6388 +.public ov29_022E6424 +.public ov29_022EA370 +.public ov29_022EA718 +.public ov29_022EDC30 +.public ov29_022F94F0 +.public ov29_022F9744 +.public ov29_022F9840 +.public ov29_022FB10C +.public ov29_022FB1A8 +.public ov29_022FB678 +.public ov29_0230040C +.public ov29_02300634 +.public ov29_023007DC +.public ov29_02300D50 +.public ov29_02300DC0 +.public ov29_02300DCC +.public ov29_0230175C +.public ov29_02301C2C +.public ov29_02304A48 +.public ov29_02304C3C +.public ov29_02307BDC +.public ov29_0230863C +.public ov29_0230D088 +.public ov29_0230D11C +.public ov29_0230D440 +.public ov29_0230F654 +.public ov29_02314DC4 +.public ov29_02319748 +.public ov29_023197CC +.public ov29_0231AD38 +.public ov29_0231B0A4 +.public ov29_023201D0 +.public ov29_02321A78 +.public ov29_02321CF0 +.public ov29_0232393C +.public ov29_02324534 +.public ov29_023245A4 +.public ov29_0232461C +.public ov29_02324854 +.public ov29_02324D60 +.public ov29_02324E44 +.public ov29_023256B4 +.public ov29_023258EC +.public ov29_02325DC0 +.public ov29_02325DE4 +.public ov29_02325E64 +.public ov29_02325EC4 +.public ov29_02325F00 +.public ov29_02325F3C +.public ov29_02325F74 +.public ov29_02325FB4 +.public ov29_02325FC4 +.public ov29_02326088 +.public ov29_023260A8 +.public ov29_023260D0 +.public ov29_0232612C +.public ov29_02326188 +.public ov29_023261A0 +.public ov29_0232620C +.public ov29_02326220 +.public ov29_02326264 +.public ov29_0232631C +.public ov29_02326408 +.public ov29_02326550 +.public ov29_02326568 +.public ov29_023265A4 +.public ov29_02326648 +.public ov29_02326670 +.public ov29_023266DC +.public ov29_02326750 +.public ov29_023267D8 +.public ov29_0232680C +.public ov29_023268BC +.public ov29_023268CC +.public ov29_02326908 +.public ov29_0232692C +.public ov29_02326990 +.public ov29_02326A0C +.public ov29_02326A74 +.public ov29_02326AE8 +.public ov29_02326B24 +.public ov29_02326BC0 +.public ov29_02326CA4 +.public ov29_02326CB4 +.public ov29_02326CC8 +.public ov29_02326D50 +.public ov29_02326DD8 +.public ov29_02326E04 +.public ov29_02326E20 +.public ov29_02326E60 +.public ov29_02326E80 +.public ov29_02326E98 +.public ov29_02326EB8 +.public ov29_02326F48 +.public ov29_02326F8C +.public ov29_02327034 +.public ov29_023270B4 +.public ov29_02327120 +.public ov29_0232718C +.public ov29_0232724C +.public ov29_0232728C +.public ov29_023272F8 +.public ov29_02327368 +.public ov29_023273CC +.public ov29_02327458 +.public ov29_02327598 +.public ov29_0232764C +.public ov29_023276B4 +.public ov29_023276E8 +.public ov29_02327744 +.public ov29_02327758 +.public ov29_0232776C +.public ov29_023277B8 +.public ov29_02327804 +.public ov29_023278E8 +.public ov29_02327928 +.public ov29_02327940 +.public ov29_023279AC +.public ov29_023279E4 +.public ov29_02327A28 +.public ov29_02327AF4 +.public ov29_02327B5C +.public ov29_02327BE0 +.public ov29_02327BF0 +.public ov29_02327C08 +.public ov29_02327C74 +.public ov29_02327CD8 +.public ov29_02327D60 +.public ov29_02327DD0 +.public ov29_02327DE0 +.public ov29_02327E94 +.public ov29_02328030 +.public ov29_02328074 +.public ov29_02328110 +.public ov29_0232816C +.public ov29_023281D8 +.public ov29_02328230 +.public ov29_02328248 +.public ov29_023282C8 +.public ov29_02328328 +.public ov29_02328394 +.public ov29_023283A4 +.public ov29_023284BC +.public ov29_02328528 +.public ov29_02328538 +.public ov29_02328698 +.public ov29_02328794 +.public ov29_023288C4 +.public ov29_02328930 +.public ov29_023289F8 +.public ov29_02328A54 +.public ov29_02328A74 +.public ov29_02328AE0 +.public ov29_02328B00 +.public ov29_02328B88 +.public ov29_02328C74 +.public ov29_02328D44 +.public ov29_02328DE4 +.public ov29_02328E74 +.public ov29_02328ECC +.public ov29_02328F94 +.public ov29_02329000 +.public ov29_02329074 +.public ov29_023290CC +.public ov29_0232915C +.public ov29_023291F4 +.public ov29_0232923C +.public ov29_02329258 +.public ov29_023293CC +.public ov29_023293E4 +.public ov29_023293F8 +.public ov29_02329438 +.public ov29_02329534 +.public ov29_02329554 +.public ov29_02329664 +.public ov29_02329674 +.public ov29_023296D8 +.public ov29_023296F8 +.public ov29_02329710 +.public ov29_0232977C +.public ov29_023297F0 +.public ov29_02329854 +.public ov29_02329868 +.public ov29_02329880 +.public ov29_02329898 +.public ov29_02329904 +.public ov29_02329970 +.public ov29_02329A9C +.public ov29_02329B68 +.public ov29_02329C94 +.public ov29_02329D50 +.public ov29_02329F78 +.public ov29_02329FB4 +.public ov29_02329FE0 +.public ov29_0232A04C +.public ov29_0232A058 +.public ov29_0232A118 +.public ov29_0232A148 +.public ov29_0232A188 +.public ov29_0232A220 +.public ov29_0232A27C +.public ov29_0232A2AC +.public ov29_0232A2BC +.public ov29_0232A328 +.public ov29_0232A340 +.public ov29_0232A3FC +.public ov29_0232A414 +.public ov29_0232A480 +.public ov29_0232A490 +.public ov29_0232A4E8 +.public ov29_0232A500 +.public ov29_0232A524 +.public ov29_0232A5AC +.public ov29_0232A640 +.public ov29_0232A688 +.public ov29_0232A6EC +.public ov29_0232A8EC +.public ov29_0232AC44 +.public ov29_0232AC54 +.public ov29_0232AD08 +.public ov29_0232AD18 +.public ov29_0232AEF0 +.public ov29_0232AF5C +.public ov29_0232AFA0 +.public ov29_0232AFF0 +.public ov29_0232B024 +.public ov29_0232B118 +.public ov29_0232B164 +.public ov29_0232B1E4 +.public ov29_0232B26C +.public ov29_0232B368 +.public ov29_0232B434 +.public ov29_0232B44C +.public ov29_0232B494 +.public ov29_0232B500 +.public ov29_0232B518 +.public ov29_0232B5C8 +.public ov29_0232B5E8 +.public ov29_0232B6A4 +.public ov29_0232B6B8 +.public ov29_0232B6C8 +.public ov29_0232B738 +.public ov29_0232B7C0 +.public ov29_0232B7D0 +.public ov29_0232B7E0 +.public ov29_0232B800 +.public ov29_0232B820 +.public ov29_0232B8A0 +.public ov29_0232B8B0 +.public ov29_0232B8D4 +.public ov29_0232B8E4 +.public ov29_0232B928 +.public ov29_0232B940 +.public ov29_0232B9D0 +.public ov29_0232BA44 +.public ov29_0232BB4C +.public ov29_0232BC34 +.public ov29_0232BC64 +.public ov29_0232BCC4 +.public ov29_0232BE34 +.public ov29_0232BE44 +.public ov29_0232BF78 +.public ov29_0232BF88 +.public ov29_0232C028 +.public ov29_0232C064 +.public ov29_0232C0F4 +.public ov29_0232C1A4 +.public ov29_0232C27C +.public ov29_0232C300 +.public ov29_0232C310 +.public ov29_0232C524 +.public ov29_0232C538 +.public ov29_0232C560 +.public ov29_0232C578 +.public ov29_0232C6B4 +.public ov29_0232C6F0 +.public ov29_0232C818 +.public ov29_0232C82C +.public ov29_0232C83C +.public ov29_0232C84C +.public ov29_0232CA14 +.public ov29_0232CA2C +.public ov29_0232CA3C +.public ov29_0232CA4C +.public ov29_0232CA60 +.public ov29_0232CA70 +.public ov29_0232CB08 +.public ov29_0232CB18 +.public ov29_0232CCC4 +.public ov29_0232CD90 +.public ov29_0232CDA4 +.public ov29_0232CE40 +.public ov29_0232CE50 +.public ov29_0232CE7C +.public ov29_0232CE94 +.public ov29_0232CEAC +.public ov29_0232CF54 +.public ov29_0232CF74 +.public ov29_0232CF84 +.public ov29_0232D0F0 +.public ov29_0232D148 +.public ov29_0232D1DC +.public ov29_0232D1EC +.public ov29_0232D1FC +.public ov29_0232D20C +.public ov29_0232D21C +.public ov29_0232D22C +.public ov29_0232D270 +.public ov29_0232D280 +.public ov29_0232D298 +.public ov29_0232D2E8 +.public ov29_0232D368 +.public ov29_0232D378 +.public ov29_0232D3D8 +.public ov29_0232D400 +.public ov29_0232D418 +.public ov29_0232D4AC +.public ov29_0232D560 +.public ov29_0232D620 +.public ov29_0232D6B0 +.public ov29_0232D6D0 +.public ov29_0232D6E8 +.public ov29_0232D738 +.public ov29_0232D7F8 +.public ov29_0232D860 +.public ov29_0232D8FC +.public ov29_0232D90C +.public ov29_0232D97C +.public ov29_0232D9E4 +.public ov29_0232DAD0 +.public ov29_0232DC54 +.public ov29_0232DC64 +.public ov29_0232DCD4 +.public ov29_0232DD78 +.public ov29_0232DDAC +.public ov29_0232DE84 +.public ov29_0232DF38 +.public ov29_0232DFC8 +.public ov29_0232E084 +.public ov29_0232E0E4 +.public ov29_0232E0F8 +.public ov29_0232E130 +.public ov29_0232E274 +.public ov29_0232E2B8 +.public ov29_0232E368 +.public ov29_0232E3D0 +.public ov29_0232E400 +.public ov29_0232E48C +.public ov29_0232E4A0 +.public ov29_0232E560 +.public ov29_0232E624 +.public ov29_0232E67C +.public ov29_0232E6E0 +.public ov29_0232E714 +.public ov29_0232E734 +.public ov29_0232E744 +.public ov29_0232E750 +.public ov29_0232E794 +.public ov29_02337E2C +.public ov29_023381C0 +.public ov29_02344B44 +.public ov29_0234B034 +.public ov29_0234B250 +.public sub_02050FF8 diff --git a/asm/include/overlay_29_02333FD0.inc b/asm/include/overlay_29_02333FD0.inc new file mode 100644 index 00000000..baae1973 --- /dev/null +++ b/asm/include/overlay_29_02333FD0.inc @@ -0,0 +1,23 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AdvanceFrame +.public DungeonRandInt +.public EntityIsValid__023350D8 +.public GendersEqualNotGenderless +.public GetLeader +.public GravityIsActive +.public HasHeldItem +.public IsSecretFloor +.public IsThawingMove +.public LogMessageByIdWithPopupCheckUser +.public MonsterIsType +.public TryActivateArtificialWeatherAbilities +.public TryWeatherFormChange +.public ov29_022DE608 +.public ov29_022DE620 +.public ov29_022E38E0 +.public ov29_022E5FE8 +.public ov29_023007A8 +.public ov29_023354C4 +.public ov29_02338A4C diff --git a/asm/include/overlay_29_023350FC.inc b/asm/include/overlay_29_023350FC.inc new file mode 100644 index 00000000..2b51e611 --- /dev/null +++ b/asm/include/overlay_29_023350FC.inc @@ -0,0 +1,61 @@ +#pragma once +.public AbilityIsActive2 +.public CalcSpeedStageWrapper +.public CalcStatusDuration +.public CeilFixedPoint +.public Conversion2IsActive +.public DebugPrint0__0200C1FC +.public DivideInt +.public DungeonGoesUp +.public EntityIsValid__023350D8 +.public EntityIsValid__02337CA8 +.public GetApparentWeather +.public GetBgRegionArea +.public GetLanguage +.public GetLeader +.public GetSleepAnimationId +.public GetSpriteIndex__022F7388 +.public GetType +.public HasLowHealth +.public IsGoldenChamber +.public IsSecretBazaar__023385C4 +.public LoadWteFromFileDirectory +.public LoadWtuFromBin +.public LogMessageByIdWithPopupCheckUser +.public ProcessWte +.public RandIntSafe +.public SetBothScreensWindowColorToDefault +.public SetScreenWindowsColor +.public TickStatusTurnCounter +.public ov10_022C2574 +.public ov10_022C2588 +.public ov10_022C25EC +.public ov10_022C2638 +.public ov10_022C2654 +.public ov10_022C26A0 +.public ov10_022C26BC +.public ov10_022C2720 +.public ov29_022DE0EC +.public ov29_022DE608 +.public ov29_022DE620 +.public ov29_022E0378 +.public ov29_022E0880 +.public ov29_022E2930 +.public ov29_022E333C +.public ov29_022E65F4 +.public ov29_022E66C4 +.public ov29_022E9A6C +.public ov29_022E9F80 +.public ov29_022F9408 +.public ov29_022FF958 +.public ov29_02304830 +.public ov29_02304BAC +.public ov29_02334E70 +.public ov29_023391EC +.public sub_0201E020 +.public sub_0201E080 +.public sub_0201E730 +.public sub_0201F2A0 +.public sub_0204AED0 +.public sub_02051D8C +.public sub_02051E60 diff --git a/asm/include/overlay_29_02337CCC.inc b/asm/include/overlay_29_02337CCC.inc new file mode 100644 index 00000000..69e1fee0 --- /dev/null +++ b/asm/include/overlay_29_02337CCC.inc @@ -0,0 +1,131 @@ +#pragma once +.public Abs +.public AllocAndLoadFileInPack +.public DivideInt +.public DungeonRand16Bit +.public DungeonRandInt +.public DungeonRandRange +.public DungeonRngSetPrimary +.public DungeonRngSetSecondary +.public EntityIsValid__02337CA8 +.public EntityIsValid__02344AF8 +.public GetActiveTeamMember +.public GetDungeonMode +.public GetExclusiveItem +.public GetExplorerMazeMonster +.public GetFloorType +.public GetGold +.public GetItemCategoryVeneer +.public GetKecleonIdToSpawnByFloor +.public GetLeader +.public GetMissionEnemyMinionGroup +.public GetMissionTargetEnemy +.public GetMonsterIdFromSpawnEntry +.public GetMonsterLevelToSpawn +.public GetOutlawLeaderLevel +.public GetOutlawLevel +.public GetOutlawMinionLevel +.public GetPerformanceFlagWithChecks +.public GetSpecialTargetItem +.public GetTile +.public GetTileSafe +.public GetVictoriesOnOneFloor +.public HandleSir0Translation +.public InitStandardItem +.public IqSkillIsEnabled +.public IsBagFull +.public IsCurrentMissionType +.public IsCurrentMissionTypeExact +.public IsDestinationFloorWithMonster +.public IsExperienceLocked +.public IsGoldenChamber +.public IsItemInBag +.public IsOutlawMonsterHouseFloor +.public IsTreasureBox +.public LoadFileFromRom__02008C3C +.public LoadScriptVariableValue +.public LoadWteFromFileDirectory +.public LogMessageByIdWithPopupCheckUser +.public MemAlloc +.public MemFree +.public MemZero +.public Memcpy32 +.public MultiplyByFixedPoint +.public PointsToZero +.public ProcessWte +.public RandInt +.public SetMonsterLevelAndId +.public SetVictoriesOnOneFloor +.public SpawnMonster +.public SubstitutePlaceholderStringTags +.public UnloadFile +.public ZInit8 +.public ov10_022BFD20 +.public ov29_022DE288 +.public ov29_022E1608 +.public ov29_022E2418 +.public ov29_022E2498 +.public ov29_022E3580 +.public ov29_022E37DC +.public ov29_022E6694 +.public ov29_022E66C4 +.public ov29_022E7BB8 +.public ov29_022E7BD0 +.public ov29_022E7F7C +.public ov29_022EA370 +.public ov29_022EA408 +.public ov29_022ED970 +.public ov29_022EDEDC +.public ov29_022EFAE8 +.public ov29_022EFB20 +.public ov29_022EFB84 +.public ov29_022F05B4 +.public ov29_022F05E4 +.public ov29_022F0604 +.public ov29_022F0618 +.public ov29_022F062C +.public ov29_022F0654 +.public ov29_022F067C +.public ov29_022F0780 +.public ov29_022F07BC +.public ov29_022F07D8 +.public ov29_022F0848 +.public ov29_022FAFD4 +.public ov29_022FBE58 +.public ov29_022FE198 +.public ov29_02304BAC +.public ov29_02306D54 +.public ov29_0230F840 +.public ov29_023361D4 +.public ov29_02336204 +.public ov29_023365E8 +.public ov29_02336694 +.public ov29_02336A4C +.public ov29_02336A84 +.public ov29_02336F4C +.public ov29_02344B9C +.public ov29_02344BD0 +.public ov29_02344BE4 +.public ov29_02344E88 +.public ov29_02345004 +.public ov29_02345538 +.public ov29_02348BE8 +.public ov29_02349208 +.public ov29_0234B09C +.public ov29_0234B1A4 +.public ov29_0234C668 +.public ov29_0234C738 +.public sub_020018D0 +.public sub_0200A174 +.public sub_0200B330 +.public sub_0200B3FC +.public sub_0200C008 +.public sub_0200F940 +.public sub_0201B9F8 +.public sub_0201E13C +.public sub_0201E730 +.public sub_0201F2A0 +.public sub_0204AEA0 +.public sub_0204AEC0 +.public sub_0204AF30 +.public sub_02056880 diff --git a/asm/include/overlay_29_02344B1C.inc b/asm/include/overlay_29_02344B1C.inc new file mode 100644 index 00000000..4fc4728a --- /dev/null +++ b/asm/include/overlay_29_02344B1C.inc @@ -0,0 +1,45 @@ +#pragma once +.public AddItemToBagNoHeld +.public AddMoneyCarried +.public AdvanceFrame +.public DivideInt +.public DungeonRand16Bit +.public DungeonRandInt +.public DungeonRandRange +.public DungeonRngSetPrimary +.public DungeonRngSetSecondary +.public EntityIsValid__02345698 +.public GetActualBuyPrice +.public GetActualSellPrice +.public GetCurrentBagCapacity +.public GetItemAtIdx +.public GetItemCategoryVeneer +.public GetItemToRetrieve +.public GetLeader +.public GetTile +.public GetTileSafe +.public IqSkillIsEnabled +.public IsDestinationFloorWithItem +.public LogMessageByIdWithPopupCheckUser +.public MemAlloc +.public MemFree +.public RemoveEmptyItemsInBag +.public RemoveEquivItemNoHole +.public ShouldMonsterRunAwayVariation +.public SubstitutePlaceholderStringTags +.public ov29_022E1610 +.public ov29_022E2314 +.public ov29_022E7AC4 +.public ov29_022EACCC +.public ov29_022FB920 +.public ov29_023456BC +.public ov29_02347040 +.public ov29_023472C4 +.public ov29_02348D3C +.public ov29_02348DD8 +.public ov29_02348ECC +.public ov29_0234B084 +.public ov29_0234CCB4 +.public sub_0200CCE0 +.public sub_0200D8AC +.public sub_02024FE8 diff --git a/asm/include/overlay_29_023456BC.inc b/asm/include/overlay_29_023456BC.inc new file mode 100644 index 00000000..81d18671 --- /dev/null +++ b/asm/include/overlay_29_023456BC.inc @@ -0,0 +1,94 @@ +#pragma once +.public AbilityIsActive2 +.public Abs +.public AddMoneyCarried +.public AdvanceFrame +.public ApplyItemEffect +.public ClearItem +.public DisplayMessage2 +.public DivideInt +.public DungeonRand16Bit +.public DungeonRandInt +.public DungeonRandOutcome__022EAB20 +.public EntityIsValid__02345698 +.public EntityIsValid__02347BA4 +.public ExclusiveItemEffectFlagTest +.public GetActiveTeamMember +.public GetActualBuyPrice +.public GetActualSellPrice +.public GetCurrentBagCapacity +.public GetExclusiveItem +.public GetItemAtIdx +.public GetItemCategoryVeneer +.public GetItemMoveId16 +.public GetItemSpriteId +.public GetLeader +.public GetTile +.public GetTileSafe +.public GetTreasureBoxChances +.public InitMove +.public InitStandardItem +.public IqSkillIsEnabled +.public IsCurrentMissionType +.public IsHM +.public IsMonsterIdInNormalRange__02056294 +.public IsNotMoney +.public IsUnown +.public ItemZInit +.public LogMessageByIdQuiet +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public LogMessageByIdWithPopupCheckUserUnknown +.public RemoveEmptyItemsInBag +.public RetrieveFromItemList1 +.public SetItemAcquired +.public SubstitutePlaceholderStringTags +.public TestItemAiFlag +.public ov29_022E0880 +.public ov29_022E08A0 +.public ov29_022E09E8 +.public ov29_022E1610 +.public ov29_022E1A40 +.public ov29_022E1A84 +.public ov29_022E1A90 +.public ov29_022E272C +.public ov29_022E563C +.public ov29_022E9488 +.public ov29_022EACBC +.public ov29_022EB44C +.public ov29_022EB5D8 +.public ov29_022EBB8C +.public ov29_022EBB98 +.public ov29_022FAFD4 +.public ov29_022FB51C +.public ov29_022FB920 +.public ov29_022FBA54 +.public ov29_022FBA70 +.public ov29_023009A0 +.public ov29_02307BDC +.public ov29_023186CC +.public ov29_02324854 +.public ov29_02337E94 +.public ov29_02338430 +.public ov29_023391EC +.public ov29_02344B44 +.public ov29_02344B70 +.public ov29_02344BF8 +.public ov29_02345538 +.public ov29_02348020 +.public ov29_0234B084 +.public ov29_0234B4CC +.public ov29_0234D518 +.public sub_020018D0 +.public sub_0200CC38 +.public sub_0200CCE0 +.public sub_0200CF6C +.public sub_0200D1FC +.public sub_0200D894 +.public sub_0200D8AC +.public sub_0200F910 +.public sub_0201B9F8 +.public sub_02024FE8 +.public sub_0204F7A8 +.public sub_02053D1C +.public sub_02057CE8 diff --git a/asm/include/overlay_29_02347BC8.inc b/asm/include/overlay_29_02347BC8.inc new file mode 100644 index 00000000..04b25bc9 --- /dev/null +++ b/asm/include/overlay_29_02347BC8.inc @@ -0,0 +1,81 @@ +#pragma once +.public Abs +.public AdvanceFrame +.public ApplyItemEffect +.public CheckAcceptedMissionByTypeAndDungeon +.public DisplayMessage +.public DisplayMessage2 +.public DivideInt +.public DungeonRandInt +.public EntityIsValid__0234987C +.public ExclusiveItemEffectFlagTest +.public ExclusiveItemEffectIsActive__02347B80 +.public GetAcceptedMission +.public GetBgRegionArea +.public GetForcedLossReason +.public GetLeader +.public GetMaxPp +.public GetName +.public GetSpriteFileSize +.public GetTile +.public InitMove +.public IsItemInBag +.public IsItemWithFlagsInBag +.public ItemIsActive__02347B50 +.public LoadMonsterSprite +.public LogMessageByIdWithPopupCheckUser +.public LogMessageByIdWithPopupCheckUserTarget +.public MemAlloc +.public MemFree +.public MemZero +.public Strcpy +.public SubstitutePlaceholderStringTags +.public ov29_022E09E8 +.public ov29_022E0DD8 +.public ov29_022E0DE4 +.public ov29_022E0DFC +.public ov29_022E0E44 +.public ov29_022E1A84 +.public ov29_022E274C +.public ov29_022E2CA0 +.public ov29_022E9488 +.public ov29_022FB9BC +.public ov29_023009CC +.public ov29_02304A84 +.public ov29_02307BDC +.public ov29_02324854 +.public ov29_02336224 +.public ov29_02337E94 +.public ov29_023386B0 +.public ov29_02344B44 +.public ov29_02344B70 +.public ov29_02344B9C +.public ov29_023457C8 +.public ov29_02345AD8 +.public ov29_023498A0 +.public ov29_02349A70 +.public ov29_02349AD4 +.public ov29_0234A244 +.public ov29_0234A790 +.public ov29_0234A8BC +.public ov29_0234AA98 +.public ov29_0234ABB0 +.public ov29_0234AC8C +.public ov29_0234B06C +.public ov29_0234B0B4 +.public ov29_0234B4CC +.public ov29_0234BAC0 +.public ov29_0234C668 +.public ov29_0234C738 +.public ov29_0234D518 +.public sub_020018D0 +.public sub_02011220 +.public sub_02015328 +.public sub_0201551C +.public sub_02015588 +.public sub_020178A8 +.public sub_02017A00 +.public sub_02017A20 +.public sub_02024FB8 +.public sub_02051DFC +.public sub_02051EB8 diff --git a/asm/include/overlay_29_023498A0.inc b/asm/include/overlay_29_023498A0.inc new file mode 100644 index 00000000..b1a4c914 --- /dev/null +++ b/asm/include/overlay_29_023498A0.inc @@ -0,0 +1,237 @@ +#pragma once +.public AdvanceFrame +.public CreateDBox +.public CreatePortraitBox +.public DebugPrint0__0200C1FC +.public DungeonAlloc +.public DungeonFree +.public DungeonRandInt +.public DungeonZInit +.public EntityIsValid__0234987C +.public FemaleToMaleForm +.public FixedRoomIsSubstituteRoom +.public FreeDBox +.public FreePortraitBox +.public GetAcceptedMission +.public GetDungeonPtrMaster +.public GetDungeonTipShown +.public GetEvoParameters +.public GetForcedLossReason +.public GetGameMode +.public GetItemCategoryVeneer +.public GetItemToDeliver +.public GetItemToRetrieve +.public GetLeader +.public GetMissionTargetEnemy +.public GetMonsterGenderVeneer +.public GetMonsterPreEvolution +.public GetName +.public GetPerformanceFlagWithChecks +.public GetSecondFormIfValid +.public GetSpecialTargetItem +.public GetTargetMonsterNotFoundFlag +.public HandleFaint +.public HidePortraitBox +.public InitPortraitBox +.public InitPreprocessorArgs +.public IsCastform +.public IsCherrim +.public IsCurrentMissionType +.public IsCurrentMissionTypeExact +.public IsDBoxActive +.public IsDestinationFloorWithFleeingOutlaw +.public IsDestinationFloorWithHiddenOutlaw +.public IsExperienceLocked +.public IsFutureDungeon +.public IsJirachiChallengeFloor +.public IsSecretFloor +.public ItemZInit +.public LoadOverlay +.public LoadScriptVariableValue +.public MemAlloc +.public MemFree +.public MemZero +.public OverlayIsLoaded +.public PreprocessString +.public RunDungeon +.public SetAdventureLogDungeonFloor +.public SetBothScreensWindowsColor +.public SetDungeonTipShown +.public SetPortraitUnknownAttr +.public ShouldMonsterHeadToStairs +.public ShowPortraitBox +.public StringFromMessageId +.public Strlen +.public Strncmp +.public Strncpy +.public SubstitutePlaceholderStringTags +.public UnloadOverlay +.public ov10_022BF764 +.public ov10_022BF7D4 +.public ov10_022BFD20 +.public ov29_022DC61C +.public ov29_022DC65C +.public ov29_022DC670 +.public ov29_022DDC00 +.public ov29_022DDCA0 +.public ov29_022DDD50 +.public ov29_022DDDA4 +.public ov29_022DDE00 +.public ov29_022DDE24 +.public ov29_022DDEF8 +.public ov29_022DDFF0 +.public ov29_022DDFFC +.public ov29_022DE0A0 +.public ov29_022DE0CC +.public ov29_022DE300 +.public ov29_022DE418 +.public ov29_022DE498 +.public ov29_022DE868 +.public ov29_022DEBA4 +.public ov29_022DEBB0 +.public ov29_022E09E8 +.public ov29_022E0A64 +.public ov29_022E0B44 +.public ov29_022E0B60 +.public ov29_022E0CFC +.public ov29_022E0E8C +.public ov29_022E0F14 +.public ov29_022E272C +.public ov29_022E274C +.public ov29_022E2CA0 +.public ov29_022E38E0 +.public ov29_022E550C +.public ov29_022E68F0 +.public ov29_022E6DD0 +.public ov29_022E8244 +.public ov29_022E9F9C +.public ov29_022E9FC0 +.public ov29_022EA008 +.public ov29_022EA370 +.public ov29_022EA428 +.public ov29_022EAC8C +.public ov29_022EACBC +.public ov29_022EACE4 +.public ov29_022EAD00 +.public ov29_022EAE14 +.public ov29_022EAEFC +.public ov29_022EAF34 +.public ov29_022EAFB0 +.public ov29_022F2FE4 +.public ov29_022F42D8 +.public ov29_022F99EC +.public ov29_022FA3D4 +.public ov29_022FBA54 +.public ov29_022FBBEC +.public ov29_023009CC +.public ov29_02300B04 +.public ov29_02305C28 +.public ov29_0231ADA8 +.public ov29_0231AF24 +.public ov29_023361D4 +.public ov29_023363EC +.public ov29_02337EE8 +.public ov29_02337F98 +.public ov29_0233804C +.public ov29_02339148 +.public ov29_0233992C +.public ov29_0233A248 +.public ov29_02344B44 +.public ov29_02344B9C +.public ov29_023456BC +.public ov29_02347030 +.public ov29_02348888 +.public ov29_02348A18 +.public ov29_023491A4 +.public ov29_023491B8 +.public ov29_02349208 +.public ov29_023496B0 +.public ov30_02382820 +.public ov30_02382874 +.public ov30_0238298C +.public ov30_023829A0 +.public ov30_023829CC +.public ov30_02382A34 +.public ov30_02382C30 +.public ov30_02382C68 +.public ov30_023842F4 +.public sub_02001808 +.public sub_0200383C +.public sub_020038D8 +.public sub_020038E8 +.public sub_02003990 +.public sub_020039E4 +.public sub_02003A40 +.public sub_02006B70 +.public sub_02006EC4 +.public sub_02008ED0 +.public sub_02008F3C +.public sub_02008F84 +.public sub_02008F88 +.public sub_02009120 +.public sub_02009194 +.public sub_020091B0 +.public sub_020091CC +.public sub_020091F8 +.public sub_020093BC +.public sub_02009514 +.public sub_0200B330 +.public sub_0200B3D4 +.public sub_02017A68 +.public sub_02017A80 +.public sub_02017B70 +.public sub_02017BEC +.public sub_02017C10 +.public sub_0201BE28 +.public sub_0201BE5C +.public sub_0201BE84 +.public sub_0201BF4C +.public sub_0201BF64 +.public sub_0201D7E0 +.public sub_0201D804 +.public sub_0201DDFC +.public sub_0201DE10 +.public sub_0201E730 +.public sub_0201F2A0 +.public sub_0201F464 +.public sub_02024FB8 +.public sub_02025784 +.public sub_02027148 +.public sub_0202715C +.public sub_020282F4 +.public sub_0202836C +.public sub_02028848 +.public sub_02028A64 +.public sub_02028E2C +.public sub_02028E40 +.public sub_02028E88 +.public sub_0202A5CC +.public sub_0202AABC +.public sub_0202AB94 +.public sub_0202ABB0 +.public sub_0202F23C +.public sub_0202F334 +.public sub_0202F474 +.public sub_0202FFB0 +.public sub_02030044 +.public sub_0203010C +.public sub_020301F4 +.public sub_02030214 +.public sub_02034710 +.public sub_02034A80 +.public sub_02047FFC +.public sub_0204804C +.public sub_020480CC +.public sub_02048134 +.public sub_02048150 +.public sub_02048240 +.public sub_0204833C +.public sub_02048360 +.public sub_02048DC4 +.public sub_0204AFF8 +.public sub_0204D894 +.public sub_0204F9CC +.public sub_02051DD0 +.public sub_02051E60 +.public sub_0205BAB0 +.public sub_020778D0 diff --git a/asm/include/overlay_29_0234DDF4.inc b/asm/include/overlay_29_0234DDF4.inc new file mode 100644 index 00000000..f8c7f4bc --- /dev/null +++ b/asm/include/overlay_29_0234DDF4.inc @@ -0,0 +1,64 @@ +#pragma once +.public AdvanceFrame +.public DisplayMessage +.public EntityIsValid__0234DDD0 +.public EntityIsValid__0234EC14 +.public GetActiveTeamMember +.public GetItemMoveId16 +.public GetLeader +.public GetTile +.public InitMove +.public LoadOverlay +.public OverlayIsLoaded +.public StrncpySimple +.public UnloadOverlay +.public ov29_022E0B44 +.public ov29_022E2A78 +.public ov29_022E9618 +.public ov29_022EA370 +.public ov29_022EA428 +.public ov29_022EB398 +.public ov29_022EB54C +.public ov29_022F0B8C +.public ov29_022F0B9C +.public ov29_022F0C1C +.public ov29_022F0C3C +.public ov29_022F4370 +.public ov29_022F44F0 +.public ov29_022F5A0C +.public ov29_022F5DC0 +.public ov29_022F98B4 +.public ov29_022FB920 +.public ov29_02302388 +.public ov29_0231DA80 +.public ov29_0231DBF0 +.public ov29_0231DD60 +.public ov29_02337428 +.public ov29_0233779C +.public ov29_0234B034 +.public ov29_0234B1A4 +.public ov29_0234EC38 +.public ov29_0234ED30 +.public ov29_0234FA24 +.public ov30_02382820 +.public ov30_02382E08 +.public ov30_02382E18 +.public ov30_0238367C +.public ov30_023838E4 +.public ov30_023851C0 +.public ov30_023853BC +.public ov30_02385FE0 +.public ov31_023860A4 +.public ov31_0238619C +.public ov31_02386C6C +.public ov31_0238704C +.public ov31_02387660 +.public ov31_02387688 +.public ov31_0238878C +.public sub_0200B330 +.public sub_0200B3D4 +.public sub_02025888 +.public sub_020282F4 +.public sub_0202AABC +.public sub_0202AAE8 +.public sub_0204AF20 diff --git a/asm/include/overlay_29_0234EC38.inc b/asm/include/overlay_29_0234EC38.inc new file mode 100644 index 00000000..83e8f709 --- /dev/null +++ b/asm/include/overlay_29_0234EC38.inc @@ -0,0 +1,87 @@ +#pragma once +.public AdvanceFrame +.public Arm9LoadUnkFieldNa0x2029EC8 +.public Arm9StoreUnkFieldNa0x2029ED8 +.public CheckTeamMemberIdx__022F9C34 +.public DisplayMessage +.public DungeonGoesUp +.public DungeonRequestsDoneWrapper +.public EntityIsValid__0234EC14 +.public GetAcceptedMission +.public GetActiveTeamMember +.public GetDungeonMode +.public GetKeyboardStatus +.public GetKeyboardStringResult +.public GetPerformanceFlagWithChecks +.public IsExperienceLocked +.public JoinedAtRangeCheck2 +.public JoinedAtRangeCheck2Veneer +.public MemAlloc +.public MemFree +.public MemZero +.public OpenMessageLog +.public PreprocessString +.public ShowKeyboard +.public StoryRestrictionsEnabled +.public StringFromMessageId +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.public ov29_022E8708 +.public ov29_022E8768 +.public ov29_022E87DC +.public ov29_022E87FC +.public ov29_022E8810 +.public ov29_022E8834 +.public ov29_022E8848 +.public ov29_022EA370 +.public ov29_022EA428 +.public ov29_022F0C98 +.public ov29_02300818 +.public ov29_023361D4 +.public ov29_02347100 +.public ov29_0234DD90 +.public ov29_0234DDA0 +.public ov29_0234DDB0 +.public ov29_0234E9E8 +.public ov29_0234EA18 +.public ov29_0234EB28 +.public ov29_0234EBAC +.public ov29_0234EBCC +.public ov30_02382820 +.public ov30_023833D8 +.public ov30_02383434 +.public ov31_0238647C +.public ov31_02388114 +.public ov31_02388444 +.public ov31_02388534 +.public ov31_023886D4 +.public ov31_023886DC +.public ov31_02388714 +.public ov31_02388E88 +.public ov31_0238941C +.public sub_0200B3D4 +.public sub_02026214 +.public sub_020282F4 +.public sub_0202A5CC +.public sub_0202AABC +.public sub_0202AB40 +.public sub_0202AB80 +.public sub_0202ABB0 +.public sub_0202F8C4 +.public sub_0202F8FC +.public sub_0202F954 +.public sub_020305E4 +.public sub_0203083C +.public sub_020308A0 +.public sub_020348E4 +.public sub_02037468 +.public sub_0203909C +.public sub_02039218 +.public sub_0203931C +.public sub_0204E114 +.public sub_0204F10C +.public sub_0204F1B4 +.public sub_02056264 +.public sub_0205B77C +.public sub_02061DC8 +.public sub_02061F44 diff --git a/asm/overlay_29_022E0378.s b/asm/overlay_29_022E0378.s index 1a096e98..7b08704e 100644 --- a/asm/overlay_29_022E0378.s +++ b/asm/overlay_29_022E0378.s @@ -1770,11357 +1770,3 @@ _022E1A10: .align 2, 0 _022E1A18: .word 0x02353538 arm_func_end ov29_022E1854 - - arm_func_start EntityIsValid__022E1A1C -EntityIsValid__022E1A1C: ; 0x022E1A1C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022E1A1C - - arm_func_start ov29_022E1A40 -ov29_022E1A40: ; 0x022E1A40 - cmp r1, #0 - ldrne r2, [r1] - strne r2, [r0, #0xc] - ldrne r1, [r1, #4] - bne _022E1A7C - ldrsh r2, [r0, #4] - mov r1, #0x18 - smulbb r2, r2, r1 - add r2, r2, #0xc - mov r2, r2, lsl #8 - str r2, [r0, #0xc] - ldrsh r2, [r0, #6] - smulbb r1, r2, r1 - add r1, r1, #0x10 - mov r1, r1, lsl #8 -_022E1A7C: - str r1, [r0, #0x10] - bx lr - arm_func_end ov29_022E1A40 - - arm_func_start ov29_022E1A84 -ov29_022E1A84: ; 0x022E1A84 - str r1, [r0, #0xc] - str r2, [r0, #0x10] - bx lr - arm_func_end ov29_022E1A84 - - arm_func_start ov29_022E1A90 -ov29_022E1A90: ; 0x022E1A90 - ldr r3, [r0, #0xc] - add r1, r3, r1 - str r1, [r0, #0xc] - ldr r1, [r0, #0x10] - add r1, r1, r2 - str r1, [r0, #0x10] - bx lr - arm_func_end ov29_022E1A90 - - arm_func_start ov29_022E1AAC -ov29_022E1AAC: ; 0x022E1AAC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl GetSpriteSize - mov r4, r0 - mov r0, r5 - bl ov29_022DE954 - cmp r0, #0 - movne r4, r4, lsl #1 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E1AAC - - arm_func_start ov29_022E1AD4 -ov29_022E1AD4: ; 0x022E1AD4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__022E1A1C - cmp r0, #0 - ldrne r0, [r4, #0xb4] - ldrneb r0, [r0, #0x17b] - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E1AD4 - - arm_func_start ov29_022E1AF4 -ov29_022E1AF4: ; 0x022E1AF4 - ldr r2, _022E1B24 ; =0x0237C754 - mov r3, #0 - add ip, r2, r0 - mov r2, #1 - b _022E1B18 -_022E1B08: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - strb r2, [ip, r3] - mov r3, r0, lsr #0x10 -_022E1B18: - cmp r3, r1 - blo _022E1B08 - bx lr - .align 2, 0 -_022E1B24: .word 0x0237C754 - arm_func_end ov29_022E1AF4 - - arm_func_start ov29_022E1B28 -ov29_022E1B28: ; 0x022E1B28 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, #0 - mov r8, r0 - mov r5, r4 -_022E1B38: - ldr r0, _022E1C04 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - beq _022E1BD8 - ldr r0, [r7, #0xb4] - ldrsh r0, [r0, #4] - bl GetSpriteSize - mov r6, r0 - ldrb r0, [r7, #0xaa] - bl ov29_022DE954 - cmp r0, #0 - add r0, r4, #0x1a - strh r0, [r7, #0xac] - ldr r0, [r7, #0xb4] - movne r6, r6, lsl #1 - strb r4, [r0, #0x17a] - ldr r0, [r7, #0xb4] - mov r2, #0 - strb r6, [r0, #0x17b] - mov r1, #1 - ldr r0, _022E1C08 ; =0x0237C754 - b _022E1BB4 -_022E1BA4: - cmp r4, #0x48 - strltb r1, [r0, r4] - addlt r4, r4, #1 - add r2, r2, #1 -_022E1BB4: - cmp r2, r6 - blt _022E1BA4 - cmp r8, #0 - beq _022E1BD8 - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 -_022E1BD8: - add r5, r5, #1 - cmp r5, #4 - blt _022E1B38 - mov r1, #0 - ldr r0, _022E1C08 ; =0x0237C754 - b _022E1BF8 -_022E1BF0: - strb r1, [r0, r4] - add r4, r4, #1 -_022E1BF8: - cmp r4, #0x48 - blt _022E1BF0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E1C04: .word 0x02353538 -_022E1C08: .word 0x0237C754 - arm_func_end ov29_022E1B28 - - arm_func_start ov29_022E1C0C -ov29_022E1C0C: ; 0x022E1C0C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - bl EntityIsValid__022E1A1C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, [r7, #0xb4] - ldrb r0, [r4, #6] - cmp r0, #0 - ldrne r5, _022E1C7C ; =0x0237C79C - ldreq r5, _022E1C80 ; =0x0237C754 - cmp r6, #0 - beq _022E1C48 - ldrb r0, [r7, #0xaa] - bl ov29_022DEA1C -_022E1C48: - mov r3, #0 - mov r2, r3 - b _022E1C6C -_022E1C54: - ldrb r1, [r4, #0x17a] - add r0, r3, #1 - mov r0, r0, lsl #0x10 - add r1, r5, r1 - strb r2, [r3, r1] - mov r3, r0, asr #0x10 -_022E1C6C: - ldrb r0, [r4, #0x17b] - cmp r3, r0 - blt _022E1C54 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E1C7C: .word 0x0237C79C -_022E1C80: .word 0x0237C754 - arm_func_end ov29_022E1C0C - - arm_func_start ov29_022E1C84 -ov29_022E1C84: ; 0x022E1C84 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r0, r2 - mov r6, r1 - mvn r4, #0 - bl GetSpriteSize - mov r5, r0 - ldrsh r0, [sp, #0x18] - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - bl ov29_022DE954 - cmp r0, #0 - movne r5, r5, lsl #1 - mov r3, #0 - rsb ip, r5, #0x48 - mov r2, r3 - ldr r1, _022E1D28 ; =0x0237C754 - b _022E1D04 -_022E1CD0: - mov r8, r2 - add lr, r1, r3 - b _022E1CEC -_022E1CDC: - ldrb r0, [lr, r8] - cmp r0, #0 - bne _022E1CF4 - add r8, r8, #1 -_022E1CEC: - cmp r8, r5 - blt _022E1CDC -_022E1CF4: - cmp r8, r5 - moveq r4, r3 - beq _022E1D0C - add r3, r3, #1 -_022E1D04: - cmp r3, ip - ble _022E1CD0 -_022E1D0C: - mvn r0, #0 - cmp r4, r0 - moveq r0, #0 - strne r4, [r7] - strne r5, [r6] - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E1D28: .word 0x0237C754 - arm_func_end ov29_022E1C84 - - arm_func_start ov29_022E1D2C -ov29_022E1D2C: ; 0x022E1D2C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r8, r0 - mvn r1, #0 - mov r0, #1 - str r1, [sp, #8] - bl ov29_022DEA10 - mov r6, r0 - mov r1, r8 - mov r0, #0 - bl ov29_022F9408 - bl GetSpriteIndex__022F7388 - mov r4, r0 - add r0, sp, #8 - add r1, sp, #4 - mov r2, r8 - mov r3, r4 - str r6, [sp] - bl ov29_022E1C84 - cmp r0, #0 - moveq r0, #0 - beq _022E1EB8 - mov r5, #0 - ldr sb, _022E1EC0 ; =0x02353538 - b _022E1EAC -_022E1D90: - ldr r0, [sb] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - bne _022E1EA8 - mov r0, #1 - str r0, [r7] - ldr r0, _022E1EC0 ; =0x02353538 - strb r5, [r7, #0x24] - ldr r0, [r0] - add r1, r5, r5, lsl #3 - add r0, r0, #0x3f4 - add r0, r0, #0x400 - add r0, r0, r1, lsl #6 - str r0, [r7, #0xb4] - strh r8, [r0, #2] - mov r1, r8 - mov r0, #0 - bl ov29_022F9408 - ldr r1, [r7, #0xb4] - mov r2, #0 - strh r0, [r1, #4] - ldr r1, [r7, #0xb4] - and r0, r6, #0xff - strb r2, [r1, #6] - ldr r1, [r7, #0xb4] - strb r2, [r1, #8] - strh r4, [r7, #0xa8] - strb r6, [r7, #0xaa] - bl ov29_022DE9F8 - ldr r1, [sp, #8] - mov r0, #7 - add r1, r1, #0x1a - strh r1, [r7, #0xac] - strb r0, [r7, #0xae] - mov r1, #0 - strb r1, [r7, #0x28] - strb r1, [r7, #0xb0] - mov r0, #0xff - strb r0, [r7, #0xaf] - mov r0, #1 - strb r0, [r7, #0xb1] - strb r0, [r7, #0xb3] - str r1, [r7, #0x1c] - bl ov29_022E2978 - ldr r1, [sp, #8] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17a] - ldr r1, [sp, #4] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17b] - ldr r0, [sp, #8] - ldr r1, [sp, #4] - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x10 - bl ov29_022E1AF4 - ldr r1, _022E1EC0 ; =0x02353538 - mov r0, r7 - ldr r1, [r1] - add r1, r1, #0x700 - ldrh r3, [r1, #0x88] - add r2, r3, #1 - strh r2, [r1, #0x88] - strh r3, [r7, #0x26] - b _022E1EB8 -_022E1EA8: - add r5, r5, #1 -_022E1EAC: - cmp r5, #4 - blt _022E1D90 - mov r0, #0 -_022E1EB8: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E1EC0: .word 0x02353538 - arm_func_end ov29_022E1D2C - - arm_func_start ov29_022E1EC4 -ov29_022E1EC4: ; 0x022E1EC4 - ldr r2, _022E1EF4 ; =0x0237C79C - mov r3, #0 - add ip, r2, r0 - mov r2, #1 - b _022E1EE8 -_022E1ED8: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - strb r2, [ip, r3] - mov r3, r0, lsr #0x10 -_022E1EE8: - cmp r3, r1 - blo _022E1ED8 - bx lr - .align 2, 0 -_022E1EF4: .word 0x0237C79C - arm_func_end ov29_022E1EC4 - - arm_func_start ov29_022E1EF8 -ov29_022E1EF8: ; 0x022E1EF8 - mov r0, #0 - ldr r2, _022E1F30 ; =0x0237C79C - mov r3, r0 -_022E1F04: - ldrb r1, [r2, r3] - cmp r1, #0 - add r1, r3, #1 - addeq r0, r0, #1 - mov r1, r1, lsl #0x10 - moveq r0, r0, lsl #0x10 - mov r3, r1, lsr #0x10 - moveq r0, r0, asr #0x10 - cmp r3, #0xae - blo _022E1F04 - bx lr - .align 2, 0 -_022E1F30: .word 0x0237C79C - arm_func_end ov29_022E1EF8 - - arm_func_start ov29_022E1F34 -ov29_022E1F34: ; 0x022E1F34 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, #0 - mov r8, r0 - mov r5, r4 -_022E1F44: - ldr r0, _022E2010 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - beq _022E1FE4 - ldr r0, [r7, #0xb4] - ldrsh r0, [r0, #4] - bl GetSpriteSize - mov r6, r0 - ldrb r0, [r7, #0xaa] - bl ov29_022DE954 - cmp r0, #0 - add r0, r4, #0x62 - strh r0, [r7, #0xac] - ldr r0, [r7, #0xb4] - movne r6, r6, lsl #1 - strb r5, [r0, #0x17a] - ldr r0, [r7, #0xb4] - mov r2, #0 - strb r6, [r0, #0x17b] - mov r1, #1 - ldr r0, _022E2014 ; =0x0237C79C - b _022E1FC0 -_022E1FB0: - cmp r4, #0xae - strltb r1, [r0, r4] - addlt r4, r4, #1 - add r2, r2, #1 -_022E1FC0: - cmp r2, r6 - blt _022E1FB0 - cmp r8, #0 - beq _022E1FE4 - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 -_022E1FE4: - add r5, r5, #1 - cmp r5, #0x10 - blt _022E1F44 - mov r1, #0 - ldr r0, _022E2014 ; =0x0237C79C - b _022E2004 -_022E1FFC: - strb r1, [r0, r4] - add r4, r4, #1 -_022E2004: - cmp r4, #0xae - blt _022E1FFC - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E2010: .word 0x02353538 -_022E2014: .word 0x0237C79C - arm_func_end ov29_022E1F34 - - arm_func_start ov29_022E2018 -ov29_022E2018: ; 0x022E2018 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r0, r2 - mov r6, r1 - mvn r4, #0 - bl GetSpriteSize - mov r5, r0 - ldrsh r0, [sp, #0x18] - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - bl ov29_022DE954 - cmp r0, #0 - movne r5, r5, lsl #1 - mov r3, #0 - rsb ip, r5, #0xae - mov r2, r3 - ldr r1, _022E20BC ; =0x0237C79C - b _022E2098 -_022E2064: - mov r8, r2 - add lr, r1, r3 - b _022E2080 -_022E2070: - ldrb r0, [lr, r8] - cmp r0, #0 - bne _022E2088 - add r8, r8, #1 -_022E2080: - cmp r8, r5 - blt _022E2070 -_022E2088: - cmp r8, r5 - moveq r4, r3 - beq _022E20A0 - add r3, r3, #1 -_022E2098: - cmp r3, ip - ble _022E2064 -_022E20A0: - mvn r0, #0 - cmp r4, r0 - moveq r0, #0 - strne r4, [r7] - strne r5, [r6] - movne r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E20BC: .word 0x0237C79C - arm_func_end ov29_022E2018 - - arm_func_start ov29_022E20C0 -ov29_022E20C0: ; 0x022E20C0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r8, r0 - mov r0, #2 - bl ov29_022DEA10 - mov r6, r0 - mov r1, r8 - mov r0, #0 - bl ov29_022F9408 - mov r4, r0 - bl GetSpriteIndex__022F7388 - mov r3, r0 - add r0, sp, #8 - add r1, sp, #4 - mov r2, r8 - str r6, [sp] - bl ov29_022E2018 - cmp r0, #0 - moveq r0, #0 - beq _022E2254 - mov r5, #0 - ldr sb, _022E225C ; =0x02353538 - b _022E2248 -_022E211C: - ldr r0, [sb] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - bne _022E2244 - mov r0, #1 - str r0, [r7] - strb r5, [r7, #0x24] - mov r0, #0 - ldr r1, _022E225C ; =0x02353538 - strb r0, [r7, #0x22] - ldr r1, [r1] - add r2, r5, r5, lsl #3 - add r1, r1, #0xf4 - add r1, r1, #0x1000 - add r2, r1, r2, lsl #6 - str r2, [r7, #0xb4] - mov r1, r8 - strh r8, [r2, #2] - bl ov29_022F9408 - ldr r2, [r7, #0xb4] - mov r1, #1 - strh r0, [r2, #4] - ldr r0, [r7, #0xb4] - mov r2, #0 - strb r1, [r0, #6] - ldr r1, [r7, #0xb4] - mov r0, r4 - strb r2, [r1, #8] - bl GetSpriteIndex__022F7388 - strh r0, [r7, #0xa8] - strb r6, [r7, #0xaa] - ldr r0, [sp, #8] - add r0, r0, #0x62 - strh r0, [r7, #0xac] - ldrb r0, [r7, #0xaa] - bl ov29_022DE9F8 - mov r0, #7 - strb r0, [r7, #0xae] - mov r1, #0 - strb r1, [r7, #0x28] - strb r1, [r7, #0xb0] - mov r0, #0xff - strb r0, [r7, #0xaf] - mov r0, #1 - strb r0, [r7, #0xb1] - strb r0, [r7, #0xb3] - str r1, [r7, #0x1c] - ldr r1, [sp, #8] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17a] - ldr r1, [sp, #4] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17b] - ldr r0, [sp, #8] - ldr r1, [sp, #4] - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x10 - bl ov29_022E1EC4 - bl ov29_022E2978 - ldr r1, _022E225C ; =0x02353538 - mov r0, r7 - ldr r1, [r1] - add r1, r1, #0x700 - ldrh r3, [r1, #0x88] - add r2, r3, #1 - strh r2, [r1, #0x88] - strh r3, [r7, #0x26] - b _022E2254 -_022E2244: - add r5, r5, #1 -_022E2248: - cmp r5, #0x10 - blt _022E211C - mov r0, #0 -_022E2254: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E225C: .word 0x02353538 - arm_func_end ov29_022E20C0 - - arm_func_start ov29_022E2260 -ov29_022E2260: ; 0x022E2260 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - mov r5, #0 - ldr r4, _022E2310 ; =0x02353538 - b _022E2300 -_022E2280: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xcc8] - mov r0, r6 - bl EntityIsValid__022E1A1C - cmp r0, #0 - bne _022E22FC - mov r1, #2 - ldr r0, _022E2310 ; =0x02353538 - str r1, [r6] - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x3c4 - add r0, r0, #0x3c00 - add r0, r0, r5, lsl #2 - str r0, [r6, #0xb4] - strb sl, [r0] - ldr r1, [r6, #0xb4] - mov r0, r6 - strb r8, [r1, #1] - ldr r1, [r6, #0xb4] - strb r7, [r1, #2] - str r2, [r6, #0x1c] - strb r2, [r6, #0x22] - ldrh r1, [sb] - strh r1, [r6, #4] - ldrh r1, [sb, #2] - strh r1, [r6, #6] - strh r2, [r6, #0x26] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022E22FC: - add r5, r5, #1 -_022E2300: - cmp r5, #0x40 - blt _022E2280 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022E2310: .word 0x02353538 - arm_func_end ov29_022E2260 - - arm_func_start ov29_022E2314 -ov29_022E2314: ; 0x022E2314 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022E2410 ; =0x02353538 - ldr r2, _022E2414 ; =0x020A1AE8 - ldr r1, [r1] - mov r6, r0 - add r0, r1, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r2, r0] - cmp r0, #1 - bne _022E235C - ldrsh r0, [r6] - ldrsh r1, [r6, #2] - bl GetTileSafe - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022E235C: - mov r4, #0 - ldr r7, _022E2410 ; =0x02353538 - b _022E2400 -_022E2368: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xbc8] - mov r0, r5 - bl EntityIsValid__022E1A1C - cmp r0, #0 - bne _022E23FC - ldr r0, _022E2410 ; =0x02353538 - mov r1, #3 - str r1, [r5] - ldr r1, [r0] - mov r0, #6 - add r1, r1, #0x3e40 - mla r0, r4, r0, r1 - str r0, [r5, #0xb4] - ldrh r0, [r6] - mov r1, #0x18 - mov r2, #0 - strh r0, [r5, #4] - ldrh r3, [r6, #2] - mov r0, r5 - strh r3, [r5, #6] - ldrsh r3, [r6] - ldrsh r4, [r6, #2] - smulbb r3, r3, r1 - smulbb r4, r4, r1 - add r1, r3, #4 - mov r1, r1, lsl #8 - add r3, r4, #4 - str r1, [r5, #0xc] - mov r1, r3, lsl #8 - str r1, [r5, #0x10] - strh r2, [r5, #0x26] - strb r2, [r5, #0x22] - str r2, [r5, #0x1c] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E23FC: - add r4, r4, #1 -_022E2400: - cmp r4, #0x40 - blt _022E2368 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E2410: .word 0x02353538 -_022E2414: .word 0x020A1AE8 - arm_func_end ov29_022E2314 - - arm_func_start ov29_022E2418 -ov29_022E2418: ; 0x022E2418 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_023386D8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _022E246C ; =0x02353538 - mov r1, #5 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x12000 - ldr r0, [r0, #0xdc8] - str r1, [r0] - str r2, [r0, #0x1c] - strb r2, [r0, #0x22] - ldrh r1, [r4] - strh r1, [r0, #4] - ldrh r1, [r4, #2] - strh r1, [r0, #6] - strh r2, [r0, #0x26] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E246C: .word 0x02353538 - arm_func_end ov29_022E2418 - - arm_func_start ov29_022E2470 -ov29_022E2470: ; 0x022E2470 - mov r1, #6 - str r1, [r0] - mov r1, #0 - strh r1, [r0, #4] - strh r1, [r0, #6] - str r1, [r0, #0xc] - str r1, [r0, #0x10] - strh r1, [r0, #0x26] - strb r1, [r0, #0x22] - bx lr - arm_func_end ov29_022E2470 - - arm_func_start ov29_022E2498 -ov29_022E2498: ; 0x022E2498 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - cmp r0, #0 - beq _022E2560 - cmp r0, #1 - beq _022E24C0 - cmp r0, #6 - beq _022E2560 - b _022E2568 -_022E24C0: - ldrb r0, [r5, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022E2570 ; =0x02353538 - ldr r2, [r5, #0xb4] - ldr r0, [r0] - ldrb r1, [r2, #6] - add r0, r0, #0x21c - add r4, r0, #0x1a000 - ldr r0, [r4, #0x10] - cmp r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #0x28] - cmp r1, #0 - ldreqb r1, [r2, #0xef] - cmpeq r1, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #0x34] - cmp r1, #0 - bne _022E252C - ldrb r1, [r4, #0x23] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_022E252C: - ldrb r1, [r4, #0x26] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl HasDropeyeStatus - mov r2, r0 - mov r0, r4 - add r1, r5, #4 - bl ov29_022E90CC - ldmia sp!, {r3, r4, r5, pc} -_022E2560: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E2568: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E2570: .word 0x02353538 - arm_func_end ov29_022E2498 - - arm_func_start ov29_022E2574 -ov29_022E2574: ; 0x022E2574 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldrb r5, [r0, #0x20] - cmp r5, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr lr, [r0] - cmp r1, #0 - movne r6, #0x40 - moveq r6, #0x20 - cmp lr, #2 - bne _022E25D8 - ldr r2, _022E2724 ; =0x02353538 - ldr r3, _022E2728 ; =0x0001A224 - ldr r4, [r2] - add r8, r3, #2 - ldrsh ip, [r0, #4] - mov r7, #0x18 - ldrsh r2, [r0, #6] - ldrsh r3, [r4, r3] - smulbb ip, ip, r7 - ldrsh r8, [r4, r8] - smulbb r7, r2, r7 - sub r2, ip, r3 - sub r7, r7, r8 - b _022E2600 -_022E25D8: - ldr r3, _022E2724 ; =0x02353538 - ldr r2, _022E2728 ; =0x0001A224 - ldr r4, [r3] - add r3, r2, #2 - ldrsh r2, [r4, r2] - ldr r8, [r0, #0xc] - ldrsh r3, [r4, r3] - ldr r7, [r0, #0x10] - rsb r2, r2, r8, asr #8 - rsb r7, r3, r7, asr #8 -_022E2600: - rsb r3, r6, #0 - cmp r2, r3 - cmpge r7, r3 - blt _022E271C - add r3, r6, #0xff - cmp r2, r3 - addle r2, r6, #0xc0 - cmple r7, r2 - bgt _022E271C - add r2, r4, #0x21c - cmp lr, #6 - add r6, r2, #0x1a000 - addls pc, pc, lr, lsl #2 - b _022E2714 -_022E2638: ; jump table - b _022E270C ; case 0 - b _022E267C ; case 1 - b _022E26F0 ; case 2 - b _022E2654 ; case 3 - b _022E2714 ; case 4 - b _022E2714 ; case 5 - b _022E270C ; case 6 -_022E2654: - ldrb r1, [r6, #0x27] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r0, #4 - bl ov29_022E2CA0 - cmp r0, #0 - bne _022E2714 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E267C: - ldr r3, [r0, #0xb4] - ldrb r2, [r3, #6] - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r2, r4, #0x1a000 - ldrb r2, [r2, #0x244] - cmp r2, #0 - ldreqb r2, [r3, #0xef] - cmpeq r2, #1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r2, [r6, #0x26] - cmp r2, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - cmp r1, #0 - add r0, r0, #4 - beq _022E26DC - bl ov29_022E2D3C - cmp r0, #0 - bne _022E2714 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E26DC: - bl ov29_022E2CA0 - cmp r0, #0 - bne _022E2714 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E26F0: - add r0, r4, #0x1a000 - ldrb r0, [r0, #0x244] - cmp r0, #0 - cmpeq r5, #0 - bne _022E2714 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E270C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E2714: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E271C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E2724: .word 0x02353538 -_022E2728: .word 0x0001A224 - arm_func_end ov29_022E2574 - - arm_func_start ov29_022E272C -ov29_022E272C: ; 0x022E272C - ldr ip, _022E2738 ; =ov29_022E2574 - mov r1, #0 - bx ip - .align 2, 0 -_022E2738: .word ov29_022E2574 - arm_func_end ov29_022E272C - - arm_func_start ov29_022E273C -ov29_022E273C: ; 0x022E273C - ldr ip, _022E2748 ; =ov29_022E2574 - mov r1, #1 - bx ip - .align 2, 0 -_022E2748: .word ov29_022E2574 - arm_func_end ov29_022E273C - - arm_func_start ov29_022E274C -ov29_022E274C: ; 0x022E274C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4] - cmp r0, #1 - bne _022E27F4 - ldr r0, [r5] - cmp r0, #1 - bne _022E27E0 - mov r0, r5 - bl CanSeeInvisibleMonsters - cmp r0, #0 - ldreq r0, [r4, #0xb4] - ldreqb r0, [r0, #0xef] - cmpeq r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - beq _022E27F4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E27E0: - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xef] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_022E27F4: - mov r0, r5 - bl HasDropeyeStatus - mov r2, r0 - add r0, r5, #4 - add r1, r4, #4 - bl ov29_022E90CC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E274C - - arm_func_start CanTargetEntity -CanTargetEntity: ; 0x022E2810 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4] - cmp r0, #1 - bne _022E28B8 - ldr r0, [r5] - cmp r0, #1 - bne _022E28A4 - mov r0, r5 - bl CanSeeInvisibleMonsters - cmp r0, #0 - ldreq r0, [r4, #0xb4] - ldreqb r0, [r0, #0xef] - cmpeq r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - beq _022E28B8 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022E28A4: - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xef] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_022E28B8: - mov r0, r5 - bl HasDropeyeStatus - mov r2, r0 - add r0, r5, #4 - add r1, r4, #4 - bl IsPositionInSight - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CanTargetEntity - - arm_func_start ov29_022E28D4 -ov29_022E28D4: ; 0x022E28D4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl HasDropeyeStatus - mov r2, r0 - add r0, r5, #4 - add r1, r4, #4 - bl ov29_022E90CC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E28D4 - - arm_func_start ov29_022E2930 -ov29_022E2930: ; 0x022E2930 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl HasDropeyeStatus - mov r2, r0 - mov r1, r4 - add r0, r5, #4 - bl ov29_022E90CC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E2930 - - arm_func_start CanTargetPosition -CanTargetPosition: ; 0x022E2954 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl HasDropeyeStatus - mov r2, r0 - mov r1, r4 - add r0, r5, #4 - bl IsPositionInSight - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CanTargetPosition - - arm_func_start ov29_022E2978 -ov29_022E2978: ; 0x022E2978 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, #0 - ldr r6, _022E2A34 ; =0x02353538 - mov r4, r5 -_022E2988: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - ldrne r0, [r6] - add r4, r4, #1 - addne r0, r0, r5, lsl #2 - addne r0, r0, #0x12000 - strne r7, [r0, #0xb78] - addne r5, r5, #1 - cmp r4, #4 - blt _022E2988 - ldr r6, _022E2A34 ; =0x02353538 - mov r4, #0 -_022E29CC: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__022E1A1C - cmp r0, #0 - ldrne r0, [r6] - add r4, r4, #1 - addne r0, r0, r5, lsl #2 - addne r0, r0, #0x12000 - strne r7, [r0, #0xb78] - addne r5, r5, #1 - cmp r4, #0x10 - blt _022E29CC - mov r2, #0 - ldr r1, _022E2A34 ; =0x02353538 - b _022E2A28 -_022E2A14: - ldr r0, [r1] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - str r2, [r0, #0xb78] - add r5, r5, #1 -_022E2A28: - cmp r5, #0x14 - blt _022E2A14 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E2A34: .word 0x02353538 - arm_func_end ov29_022E2978 - - arm_func_start ov29_022E2A38 -ov29_022E2A38: ; 0x022E2A38 - ldr r1, _022E2A74 ; =0x02353538 - mov r2, #0 - ldr r3, [r1] - b _022E2A64 -_022E2A48: - add r1, r3, r2, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb28] - cmp r0, r1 - moveq r0, r2 - bxeq lr - add r2, r2, #1 -_022E2A64: - cmp r2, #4 - blt _022E2A48 - mvn r0, #0 - bx lr - .align 2, 0 -_022E2A74: .word 0x02353538 - arm_func_end ov29_022E2A38 - - arm_func_start ov29_022E2A78 -ov29_022E2A78: ; 0x022E2A78 - stmdb sp!, {r4, lr} - ldr r2, [r1] - mov r4, r0 - cmp r2, #1 - beq _022E2AA0 - cmp r2, #2 - beq _022E2AAC - cmp r2, #3 - ldmeqia sp!, {r4, pc} - b _022E2ABC -_022E2AA0: - ldr r1, [r1, #0xb4] - bl ov29_02300164 - ldmia sp!, {r4, pc} -_022E2AAC: - ldr r1, [r1, #0xb4] - ldrb r1, [r1] - bl ov29_022ED82C - ldmia sp!, {r4, pc} -_022E2ABC: - ldr r0, _022E2AD4 ; =0x00000A42 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - bl Strcpy - ldmia sp!, {r4, pc} - .align 2, 0 -_022E2AD4: .word 0x00000A42 - arm_func_end ov29_022E2A78 - - arm_func_start SubstitutePlaceholderStringTags -SubstitutePlaceholderStringTags: ; 0x022E2AD8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r5, r2 - bl ov29_0234B034 - ldr r1, [r6] - mov r4, r0 - cmp r1, #1 - beq _022E2B10 - cmp r1, #2 - beq _022E2B3C - cmp r1, #3 - beq _022E2B2C - b _022E2B50 -_022E2B10: - mov r1, #0 - str r1, [sp] - ldr r2, [r6, #0xb4] - mov r1, r7 - mov r3, r5 - bl ov29_0230040C - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2B2C: - ldr r2, [r6, #0xb4] - mov r1, r7 - bl ov29_02344BA8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2B3C: - ldr r2, [r6, #0xb4] - mov r1, r7 - ldrb r2, [r2] - bl ov29_022EDF7C - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E2B50: - ldr r0, _022E2B64 ; =0x00000A42 - bl StringFromMessageId - add r1, r4, r7, lsl #2 - str r0, [r1, #0x38] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E2B64: .word 0x00000A42 - arm_func_end SubstitutePlaceholderStringTags - - arm_func_start ov29_022E2B68 -ov29_022E2B68: ; 0x022E2B68 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022E2C5C ; =0x02353538 - movs r5, r0 - ldr r2, [r1] - mov r1, #0 - add r0, r2, #0x21c - add r4, r0, #0x1a000 - strh r1, [r4, #8] - ldr r0, _022E2C60 ; =0x0001A21C - strh r1, [r4, #0xa] - strh r1, [r2, r0] - strh r1, [r4, #2] - strh r1, [r4, #0xc] - strh r1, [r4, #0xe] - strh r1, [r4, #4] - strh r1, [r4, #6] - str r1, [r4, #0x14] - strb r1, [r4, #0x2f] - mov r0, #1 - strb r0, [r4, #0x30] - strb r0, [r4, #0x31] - str r1, [r4, #0x18] - str r1, [r4, #0x1c] - bne _022E2BF4 - strb r1, [r4, #0x22] - strb r1, [r4, #0x29] - strb r1, [r4, #0x28] - strb r1, [r4, #0x26] - strb r1, [r4, #0x2a] - strb r1, [r4, #0x27] - strb r1, [r4, #0x23] - strb r1, [r4, #0x24] - strb r1, [r4, #0x32] - strb r1, [r4, #0x33] - strb r1, [r4, #0x34] -_022E2BF4: - mov r1, #0 - str r1, [r4, #0x10] - mov r0, #3 - strb r0, [r4, #0x20] - strb r1, [r4, #0x35] - strb r1, [r4, #0x2b] - strb r1, [r4, #0x36] - strb r1, [r4, #0x37] - strb r1, [r4, #0x2d] - mov r0, #1 - strb r0, [r4, #0x2e] - bl ov29_022E2C6C - ldr r1, _022E2C64 ; =0x0000FFFF - ldr r0, _022E2C68 ; =0x0237C84C - cmp r5, #0 - str r1, [r0] - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022E2C5C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x28000 - ldrb r0, [r0, #0x6c8] - ands r0, r0, #3 - strb r0, [r4, #0x21] - moveq r0, #1 - streqb r0, [r4, #0x24] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E2C5C: .word 0x02353538 -_022E2C60: .word 0x0001A21C -_022E2C64: .word 0x0000FFFF -_022E2C68: .word 0x0237C84C - arm_func_end ov29_022E2B68 - - arm_func_start ov29_022E2C6C -ov29_022E2C6C: ; 0x022E2C6C - ldr r0, _022E2C9C ; =0x02353538 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x21c - add r0, r0, #0x1a000 - strh r1, [r0, #0x3c] - strh r1, [r0, #0x3e] - strh r1, [r0, #0x40] - strh r1, [r0, #0x42] - strh r1, [r0, #0x38] - strh r1, [r0, #0x3a] - bx lr - .align 2, 0 -_022E2C9C: .word 0x02353538 - arm_func_end ov29_022E2C6C - - arm_func_start ov29_022E2CA0 -ov29_022E2CA0: ; 0x022E2CA0 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022E2D34 ; =0x02353538 - mov r4, r0 - ldr r3, [r1] - ldr r0, _022E2D38 ; =0x0001A21C - ldrsh r1, [r4] - ldrsh r2, [r3, r0] - add r0, r3, #0x21c - add r5, r0, #0x1a000 - sub r0, r2, r1 - ldr r6, [r5, #0x10] - bl Abs - cmp r0, #6 - bgt _022E2D2C - ldrsh r1, [r5, #2] - ldrsh r0, [r4, #2] - sub r0, r1, r0 - bl Abs - cmp r0, #5 - bgt _022E2D2C - mov r0, r5 - bl ov29_022E3534 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - cmp r6, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl HasDropeyeStatus - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl ov29_022E90CC - ldmia sp!, {r4, r5, r6, pc} -_022E2D2C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E2D34: .word 0x02353538 -_022E2D38: .word 0x0001A21C - arm_func_end ov29_022E2CA0 - - arm_func_start ov29_022E2D3C -ov29_022E2D3C: ; 0x022E2D3C - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022E2DD0 ; =0x02353538 - mov r4, r0 - ldr r3, [r1] - ldr r0, _022E2DD4 ; =0x0001A21C - ldrsh r1, [r4] - ldrsh r2, [r3, r0] - add r0, r3, #0x21c - add r5, r0, #0x1a000 - sub r0, r2, r1 - ldr r6, [r5, #0x10] - bl Abs - cmp r0, #6 - bgt _022E2DC8 - ldrsh r1, [r5, #2] - ldrsh r0, [r4, #2] - sub r0, r1, r0 - bl Abs - cmp r0, #6 - bgt _022E2DC8 - mov r0, r5 - bl ov29_022E3534 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - cmp r6, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl HasDropeyeStatus - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl ov29_022E90CC - ldmia sp!, {r4, r5, r6, pc} -_022E2DC8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E2DD0: .word 0x02353538 -_022E2DD4: .word 0x0001A21C - arm_func_end ov29_022E2D3C - - arm_func_start UpdateMapSurveyorFlag -UpdateMapSurveyorFlag: ; 0x022E2DD8 - stmdb sp!, {r3, lr} - mov r0, #0x41 - bl TeamMemberHasEnabledIqSkill - ldr r1, _022E2DF8 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x1a000 - strb r0, [r1, #0x241] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2DF8: .word 0x02353538 - arm_func_end UpdateMapSurveyorFlag - - arm_func_start ov29_022E2DFC -ov29_022E2DFC: ; 0x022E2DFC - stmdb sp!, {r3, lr} - ldr r1, _022E2E50 ; =0x02353538 - cmp r0, #0 - ldr r1, [r1] - add r1, r1, #0x21c - add r1, r1, #0x1a000 - str r0, [r1, #0x10] - moveq r0, #0 - streqb r0, [r1, #0x2f] - beq _022E2E40 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #7] - cmp r0, #0 - moveq r0, #0 - streqb r0, [r1, #0x2f] - movne r0, #1 - strneb r0, [r1, #0x2f] -_022E2E40: - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_022E2C6C - ldmia sp!, {r3, pc} - .align 2, 0 -_022E2E50: .word 0x02353538 - arm_func_end ov29_022E2DFC - - arm_func_start ov29_022E2E54 -ov29_022E2E54: ; 0x022E2E54 - stmdb sp!, {r4, lr} - ldr r2, _022E2EC0 ; =0x02353538 - mov r4, r1 - ldr r1, [r2] - cmp r0, #0 - add r1, r1, #0x21c - add r2, r1, #0x1a000 - moveq r1, #0 - streqb r1, [r2, #0x2f] - beq _022E2E98 - ldr r1, [r0, #0xb4] - ldrb r1, [r1, #7] - cmp r1, #0 - moveq r1, #0 - streqb r1, [r2, #0x2f] - movne r1, #1 - strneb r1, [r2, #0x2f] -_022E2E98: - str r0, [r2, #0x10] - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_022E2C6C - bl ov29_02304954 - cmp r4, #0 - ldmeqia sp!, {r4, pc} - bl ov29_02336F4C - bl ov29_02339CE8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E2EC0: .word 0x02353538 - arm_func_end ov29_022E2E54 - - arm_func_start ov29_022E2EC4 -ov29_022E2EC4: ; 0x022E2EC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r1, _022E32DC ; =0x02353538 - str r0, [sp] - ldr r0, [r1] - cmp r0, #0 - beq _022E32D4 - add r0, r0, #0x21c - add r4, r0, #0x1a000 - ldr r5, [r4, #0x10] - cmp r5, #0 - beq _022E32D0 - mov r0, r5 - bl EntityIsValid__022E32E8 - cmp r0, #0 - beq _022E32D0 - ldrb r8, [r4, #0x32] - ldrb sb, [r4, #0x33] - ldrh r0, [r4, #8] - ldr sl, [r5, #0xb4] - mov r6, #0 - strh r0, [r4, #0xc] - ldrh r2, [r4, #0xa] - mov r0, r5 - mov r1, #0x18 - strh r2, [r4, #0xe] - ldrh r2, [r4] - mov fp, r6 - mov r7, r6 - strh r2, [r4, #4] - ldrh r2, [r4, #2] - str r6, [sp, #4] - strh r2, [r4, #6] - ldrsh r2, [r5, #4] - strh r2, [r4] - ldrsh r2, [r5, #6] - strh r2, [r4, #2] - ldr r2, [r5, #0xc] - mov r2, r2, asr #8 - sub r2, r2, #0x80 - strh r2, [r4, #8] - ldr r2, [r5, #0x10] - mov r2, r2, asr #8 - sub r2, r2, #0x6c - strh r2, [r4, #0xa] - ldrb r2, [r4, #0x27] - str r2, [sp, #0xc] - ldrb r2, [r4, #0x26] - str r2, [sp, #8] - bl ItemIsActive__022E330C - cmp r0, #0 - ldrneb r0, [sl, #7] - mov r1, #0 - cmpne r0, #0 - movne r0, #1 - strneb r0, [r4, #0x26] - strneb r0, [r4, #0x27] - ldreqb r0, [sl, #0xf9] - streqb r0, [r4, #0x26] - ldreqb r0, [sl, #0xfa] - streqb r0, [r4, #0x27] - strb r1, [r4, #0x32] - strb r1, [r4, #0x33] - mov r0, r5 - mov r1, #0xe - bl ItemIsActive__022E330C - cmp r0, #0 - ldrneb r0, [sl, #7] - cmpne r0, #0 - movne r0, #1 - strneb r0, [r4, #0x32] - strneb r0, [r4, #0x33] - ldrb r1, [r4, #0x27] - ldr r0, [sp, #0xc] - cmp r0, r1 - ldreqb r0, [r4, #0x32] - ldrb r1, [r4, #0x26] - cmpeq r8, r0 - ldr r0, [sp, #8] - movne r6, #1 - cmp r0, r1 - ldreqb r0, [r4, #0x33] - cmpeq sb, r0 - ldrb r0, [sl, #0xfb] - movne fp, #1 - strb r0, [r4, #0x2a] - ldrb r0, [r4, #0x2d] - ldrb r8, [r4, #0x22] - cmp r0, #0 - bne _022E309C - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - movne r0, #1 - movne r2, #0xe - strneb r0, [r4, #0x22] - moveq r2, #0 - ldr r0, _022E32E0 ; =0x0237C84C - streqb r2, [r4, #0x22] - ldr r1, [r0] - cmp r1, r2 - beq _022E30A8 - str r2, [r0] - cmp r2, #0xe - mov r0, #2 - mov r1, #0 - bne _022E3088 - bl sub_02009194 - mov r0, #3 - mov r1, #0 - bl sub_02009194 - b _022E30A8 -_022E3088: - bl sub_020091B0 - mov r0, #3 - mov r1, #0 - bl sub_020091B0 - b _022E30A8 -_022E309C: - ldr r1, _022E32E4 ; =0x0000FFFF - ldr r0, _022E32E0 ; =0x0237C84C - str r1, [r0] -_022E30A8: - ldrb r0, [r4, #0x22] - ldrb r1, [r4, #0x29] - cmp r8, r0 - ldrb r0, [sl, #0xf1] - movne r7, #1 - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - strb r0, [r4, #0x29] - ldrb r0, [r4, #0x29] - cmp r1, r0 - ldreq r0, _022E32DC ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x2c000 - ldreqb r0, [r0, #0xb10] - cmpeq r0, #0 - beq _022E3108 - bl ov29_023047DC - ldr r0, _022E32DC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - mov r7, #1 - add r0, r0, #0x2c000 - strb r1, [r0, #0xb10] -_022E3108: - mov r0, r5 - ldrb r8, [r4, #0x28] - bl CanSeeInvisibleMonsters - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - strb r0, [r4, #0x28] - ldrb r0, [r4, #0x28] - cmp r8, r0 - movne r7, #1 - strne r7, [sp, #4] - ldrb r8, [r4, #0x34] - mov r0, r5 - bl HasDropeyeStatus - and r1, r0, #0xff - cmp r8, r1 - strb r0, [r4, #0x34] - movne r7, #1 - strne r7, [sp, #4] - ldr r0, [sp, #4] - cmp r0, #0 - beq _022E3168 - bl ov29_02336F4C - bl ov29_02339CE8 -_022E3168: - cmp r7, #0 - beq _022E3178 - mov r0, #0 - bl ov29_022E3A58 -_022E3178: - ldr r0, [sp] - cmp r0, #0 - beq _022E3228 - ldrb r0, [r4, #0x2c] - cmp r0, #0 - bne _022E3228 - ldrsh r5, [r4, #8] - ldrsh r7, [r4, #0xc] - sub r0, r7, r5 - bl Abs - cmp r0, #8 - bge _022E31C0 - ldrsh r1, [r4, #0xe] - ldrsh r0, [r4, #0xa] - sub r0, r1, r0 - bl Abs - cmp r0, #8 - blt _022E31D0 -_022E31C0: - bl ov29_02336F4C - mov r0, #1 - strb r0, [r4, #0x2c] - b _022E3228 -_022E31D0: - cmp r7, r5 - bge _022E31E8 - mov r0, #0xff - mov r1, #0 - bl ov29_0233711C - b _022E31F8 -_022E31E8: - ble _022E31F8 - mov r0, #0 - mov r1, r0 - bl ov29_0233711C -_022E31F8: - ldrsh r1, [r4, #0xa] - ldrsh r0, [r4, #0xe] - cmp r0, r1 - bge _022E3218 - mov r0, #0 - mov r1, #0xc0 - bl ov29_023372A4 - b _022E3228 -_022E3218: - ble _022E3228 - mov r0, #0 - mov r1, r0 - bl ov29_023372A4 -_022E3228: - cmp fp, #0 - ldreqsh r1, [r4] - ldreqsh r0, [r4, #4] - cmpeq r1, r0 - ldreqsh r1, [r4, #2] - ldreqsh r0, [r4, #6] - cmpeq r1, r0 - beq _022E3288 - ldr r4, _022E32DC ; =0x02353538 - mov r5, #0 -_022E3250: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__022E32E8 - cmp r0, #0 - beq _022E327C - ldrsh r0, [r7, #4] - ldrsh r1, [r7, #6] - bl ov29_023391EC -_022E327C: - add r5, r5, #1 - cmp r5, #0x14 - blt _022E3250 -_022E3288: - cmp r6, #0 - beq _022E32D0 - ldr r4, _022E32DC ; =0x02353538 - mov r5, #0 -_022E3298: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xbc8] - mov r0, r6 - bl EntityIsValid__022E32E8 - cmp r0, #0 - beq _022E32C4 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl ov29_023391EC -_022E32C4: - add r5, r5, #1 - cmp r5, #0x40 - blt _022E3298 -_022E32D0: - bl ov29_022E34C8 -_022E32D4: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E32DC: .word 0x02353538 -_022E32E0: .word 0x0237C84C -_022E32E4: .word 0x0000FFFF - arm_func_end ov29_022E2EC4 - - arm_func_start EntityIsValid__022E32E8 -EntityIsValid__022E32E8: ; 0x022E32E8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022E32E8 - - arm_func_start ItemIsActive__022E330C -ItemIsActive__022E330C: ; 0x022E330C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__022E330C - - arm_func_start ov29_022E333C -ov29_022E333C: ; 0x022E333C - ldr r0, _022E3358 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23d] - cmp r0, #0 - moveq r0, #2 - bx lr - .align 2, 0 -_022E3358: .word 0x02353538 - arm_func_end ov29_022E333C - - arm_func_start ov29_022E335C -ov29_022E335C: ; 0x022E335C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022E3428 ; =0x02353538 - mov r5, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r1, [r0, #0x24d] - ldr r4, [r0, #0x22c] - cmp r1, #0 - bne _022E33A0 - bl ov10_022BFD20 - cmp r0, #0 - bne _022E33A0 - cmp r4, #0 - beq _022E33A0 - ldr r0, [r4] - cmp r0, #1 - moveq r5, #1 -_022E33A0: - cmp r5, #0 - bne _022E33B0 - bl ov29_022E2C6C - ldmia sp!, {r3, r4, r5, pc} -_022E33B0: - ldr r0, _022E3428 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x21c - add r4, r0, #0x1a000 - ldr r0, [r4, #0x10] - ldr r5, [r0, #0xb4] - bl ov29_02335A10 - ldr r1, _022E3428 ; =0x02353538 - ldr r0, _022E342C ; =0x000003E7 - ldr r1, [r1] - ldrb r2, [r1, #0x749] - ldrsh r1, [r1, #0x1e] - add r1, r2, r1 - strh r1, [r4, #0x3c] - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r4, #0x42] - ldrsh r0, [r5, #0x10] - strh r0, [r4, #0x40] - ldrb r0, [r5, #0xa] - strh r0, [r4, #0x3e] - ldrsh r1, [r4, #0x42] - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - mov r0, r0, asr #3 - strh r0, [r4, #0x44] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E3428: .word 0x02353538 -_022E342C: .word 0x000003E7 - arm_func_end ov29_022E335C - - arm_func_start ov29_022E3430 -ov29_022E3430: ; 0x022E3430 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022E34A8 ; =0x02353538 - mov r7, #0 - ldr r1, [r1] - mov r4, r0 - mov r2, #1 - add r0, r1, #0x1a000 - strb r2, [r0, #0x23f] - mov r5, r7 -_022E3454: - mov r6, r5 -_022E3458: - mov r0, r6 - mov r1, r7 - bl GetTileSafe - ldrh r1, [r0, #2] - add r6, r6, #1 - cmp r6, #0x38 - orr r1, r1, #1 - strh r1, [r0, #2] - blt _022E3458 - add r7, r7, #1 - cmp r7, #0x20 - blt _022E3454 - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_02336F4C - bl ov29_02339CE8 - ldr r1, _022E34AC ; =0x00000B77 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E34A8: .word 0x02353538 -_022E34AC: .word 0x00000B77 - arm_func_end ov29_022E3430 - - arm_func_start ov29_022E34B0 -ov29_022E34B0: ; 0x022E34B0 - ldr r1, _022E34C4 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x1a000 - strb r0, [r1, #0x24c] - bx lr - .align 2, 0 -_022E34C4: .word 0x02353538 - arm_func_end ov29_022E34B0 - - arm_func_start ov29_022E34C8 -ov29_022E34C8: ; 0x022E34C8 - ldr r0, _022E352C ; =0x02353538 - ldr r3, [r0] - add r0, r3, #0x1a000 - ldr r2, [r0, #0x234] - cmp r2, #0 - bxeq lr - ldr r1, _022E3530 ; =0x0235110C - cmp r2, #0x1f - movge r2, #0x1f - ldr r2, [r1, r2, lsl #2] - add r0, r3, #0x1a000 - ldr r1, _022E352C ; =0x02353538 - str r2, [r0, #0x230] - ldr r0, [r1] - add r0, r0, #0x1a000 - ldr r2, [r0, #0x234] - sub r2, r2, #1 - str r2, [r0, #0x234] - ldr r0, [r1] - add r0, r0, #0x1a000 - ldr r1, [r0, #0x234] - cmp r1, #0 - ldreq r1, [r0, #0x238] - streq r1, [r0, #0x234] - bx lr - .align 2, 0 -_022E352C: .word 0x02353538 -_022E3530: .word 0x0235110C - arm_func_end ov29_022E34C8 - - arm_func_start ov29_022E3534 -ov29_022E3534: ; 0x022E3534 - ldrb r1, [r0, #0x34] - cmp r1, #0 - bne _022E3558 - ldrb r1, [r0, #0x23] - cmp r1, #0 - ldreqb r0, [r0, #0x24] - cmpeq r0, #0 - movne r0, #1 - bxne lr -_022E3558: - mov r0, #0 - bx lr - arm_func_end ov29_022E3534 - - arm_func_start ov29_022E3560 -ov29_022E3560: ; 0x022E3560 - ldr r1, _022E356C ; =0x0235354C - strb r0, [r1] - bx lr - .align 2, 0 -_022E356C: .word 0x0235354C - arm_func_end ov29_022E3560 - - arm_func_start ov29_022E3570 -ov29_022E3570: ; 0x022E3570 - ldr r0, _022E357C ; =0x0235354C - ldrb r0, [r0] - bx lr - .align 2, 0 -_022E357C: .word 0x0235354C - arm_func_end ov29_022E3570 - - arm_func_start ov29_022E3580 -ov29_022E3580: ; 0x022E3580 - ldr ip, _022E358C ; =ov10_022BF8E8 - mov r0, #0 - bx ip - .align 2, 0 -_022E358C: .word ov10_022BF8E8 - arm_func_end ov29_022E3580 - - arm_func_start ov29_022E3590 -ov29_022E3590: ; 0x022E3590 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r6 - mov r1, r5 - mov r2, r4 - and r3, r3, #0xff - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_022E3590 - - arm_func_start ov29_022E35E4 -ov29_022E35E4: ; 0x022E35E4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x30 - mov r8, r0 - mov r5, r1 - mov r4, r2 - mov r7, r3 - bl EntityIsValid__022E37B8 - cmp r0, #0 - mvneq r0, #0 - beq _022E37A8 - mov r0, r8 - ldr r6, [r8, #0xb4] - bl ov29_022E5ED0 - cmp r0, #0 - mvneq r0, #0 - beq _022E37A8 - ldrb r0, [sp, #0x4c] - cmp r0, #0 - ldreqb r0, [r6, #0x10b] - cmpeq r0, #2 - mvneq r0, #0 - beq _022E37A8 - ldr r0, [sp, #0x48] - cmp r0, #0 - beq _022E365C - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bl ov29_022E38E0 -_022E365C: - add r0, sp, #0 - mov r2, r7 - add r1, r8, #0x2c - bl sub_0201CF90 - ldrsh r7, [sp] - cmp r7, #0x63 - ldrnesh r2, [sp, #2] - cmpne r2, #0x63 - ldreq r1, [r8, #0x10] - ldreq r0, [r6, #0x188] - ldreq r7, [r8, #0xc] - subeq r8, r1, r0 - beq _022E36A8 - ldr r1, [r8, #0x10] - ldr r3, [r8, #0xc] - ldr r0, [r6, #0x188] - add r2, r1, r2, lsl #8 - add r7, r3, r7, lsl #8 - sub r8, r2, r0 -_022E36A8: - ldr r0, _022E37B0 ; =0x02353538 - ldr r2, _022E37B4 ; =0x0001A226 - ldr r3, [r0] - add r0, sp, #4 - ldrsh r2, [r3, r2] - rsb r6, r2, r1, asr #8 - bl ov10_022BF274 - ldrsh r0, [sp, #0x50] - mov r1, #0 - str r5, [sp, #4] - str r1, [sp, #8] - cmp r0, #0 - blt _022E36E4 - cmp r0, #8 - ble _022E36F0 -_022E36E4: - mvn r0, #0 - str r0, [sp, #0xc] - b _022E36F4 -_022E36F0: - str r0, [sp, #0xc] -_022E36F4: - add r0, r6, r6, lsr #31 - mov r0, r0, asr #1 - mov r1, #0 - ldr r3, [sp, #0x54] - mov r6, r7, asr #8 - mov r5, r8, asr #8 - add r0, r0, #1 - mvn r2, #0 - strh r6, [sp, #0x10] - strh r5, [sp, #0x12] - strb r2, [sp, #0x18] - strh r1, [sp, #0x14] - strh r1, [sp, #0x16] - str r0, [sp, #0x1c] - cmp r3, #0 - bne _022E3740 - add r0, sp, #0x20 - bl sub_0201C000 - b _022E3758 -_022E3740: - add r2, sp, #0x20 - mov r1, #6 -_022E3748: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E3748 -_022E3758: - add r0, sp, #4 - mov r1, #0 - bl ov10_022BF2B4 - cmp r4, #0 - beq _022E37A8 - mov r0, r0, lsl #0x10 - mov r6, #0 - mov r5, r0, asr #0x10 - mov r4, #0x42 - b _022E379C -_022E3780: - mov r0, r5 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E37A4 - mov r0, r4 - bl AdvanceFrame - add r6, r6, #1 -_022E379C: - cmp r6, #0x64 - blt _022E3780 -_022E37A4: - mvn r0, #0 -_022E37A8: - add sp, sp, #0x30 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E37B0: .word 0x02353538 -_022E37B4: .word 0x0001A226 - arm_func_end ov29_022E35E4 - - arm_func_start EntityIsValid__022E37B8 -EntityIsValid__022E37B8: ; 0x022E37B8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022E37B8 - - arm_func_start ov29_022E37DC -ov29_022E37DC: ; 0x022E37DC - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldrsh ip, [r0] - mov r3, #0x18 - smulbb ip, ip, r3 - add ip, ip, #0xc - mov ip, ip, lsl #8 - str ip, [sp] - ldrsh ip, [r0, #2] - add r0, sp, #0 - smulbb r3, ip, r3 - add r3, r3, #0x10 - mov r3, r3, lsl #8 - str r3, [sp, #4] - bl ov29_022E3820 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E37DC - - arm_func_start ov29_022E3820 -ov29_022E3820: ; 0x022E3820 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x2c - mov r5, r0 - add r0, sp, #0 - mov r6, r1 - mov r4, r2 - bl ov10_022BF274 - mov ip, #0 - sub r3, ip, #1 - str r6, [sp] - str ip, [sp, #4] - str r3, [sp, #8] - ldr r0, [r5] - ldr r1, _022E38DC ; =0x0000FFFF - mov r0, r0, asr #8 - strh r0, [sp, #0xc] - ldr r2, [r5, #4] - add r0, sp, #0x1c - mov r2, r2, asr #8 - strh r2, [sp, #0xe] - strb r3, [sp, #0x14] - strh ip, [sp, #0x10] - strh ip, [sp, #0x12] - str r1, [sp, #0x18] - bl sub_0201C000 - add r0, sp, #0 - mov r1, #0 - bl ov10_022BF2B4 - cmp r4, #0 - beq _022E38D4 - mov r0, r0, lsl #0x10 - mov r6, #0 - mov r5, r0, asr #0x10 - mov r4, #0x42 - b _022E38C8 -_022E38AC: - mov r0, r5 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E38D0 - mov r0, r4 - bl AdvanceFrame - add r6, r6, #1 -_022E38C8: - cmp r6, #0x64 - blt _022E38AC -_022E38D0: - mvn r0, #0 -_022E38D4: - add sp, sp, #0x2c - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022E38DC: .word 0x0000FFFF - arm_func_end ov29_022E3820 - - arm_func_start ov29_022E38E0 -ov29_022E38E0: ; 0x022E38E0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _022E3A38 ; =0x02353538 - mov r7, #0 - ldr r2, [r1] - mov r1, r7 - add r2, r2, #0x1a000 - mov r8, r0 - str r7, [r2, #0x238] - bl ov10_022BF9CC - cmp r0, #0 - bne _022E3920 - mov r0, r8 - mov r1, #1 - bl ov10_022BF9CC - cmp r0, #0 - beq _022E3980 -_022E3920: - mov r7, #0 - mov r5, #1 - mov r6, r7 - mov r4, #0x4a - b _022E3968 -_022E3934: - mov r0, r8 - mov r1, r6 - bl ov10_022BF9CC - cmp r0, #0 - bne _022E395C - mov r0, r8 - mov r1, r5 - bl ov10_022BF9CC - cmp r0, #0 - beq _022E3970 -_022E395C: - mov r0, r4 - bl AdvanceFrame - add r7, r7, #1 -_022E3968: - cmp r7, #0x3e8 - blt _022E3934 -_022E3970: - mov r0, #0x4a - bl AdvanceFrame - mov r0, #0x4a - bl AdvanceFrame -_022E3980: - cmp r7, #0x3e8 - beq _022E3990 - cmp r8, #0 - beq _022E3994 -_022E3990: - bl ov10_022BDC68 -_022E3994: - mov r0, #1 - bl ov29_022DE5F0 - cmp r0, #0x100 - bge _022E3A0C - mov r0, #1 - bl ov29_022DE5F0 - mov r6, r0 - mov r7, #0 - mov r5, #0x4a - mov r4, #1 - b _022E39F8 -_022E39C0: - mov r0, r5 - bl AdvanceFrame - cmp r6, #0x100 - movge r6, #0x100 - bge _022E3A00 - add r0, r6, #4 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - mov r0, r6 - mov r1, r4 - bl ov29_022DE5D8 - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022E39F8: - cmp r7, #0x3e8 - blt _022E39C0 -_022E3A00: - mov r0, r6 - mov r1, #1 - bl ov29_022DE5D8 -_022E3A0C: - ldr r0, _022E3A3C ; =0x0235354C - ldrb r0, [r0] - cmp r0, #0 - beq _022E3A30 - mov r0, #0x10 - bl ov29_022ED0F4 - ldr r0, _022E3A3C ; =0x0235354C - mov r1, #0 - strb r1, [r0] -_022E3A30: - bl ov29_022E6E40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E3A38: .word 0x02353538 -_022E3A3C: .word 0x0235354C - arm_func_end ov29_022E38E0 - - arm_func_start ov29_022E3A40 -ov29_022E3A40: ; 0x022E3A40 - ldr r1, [r1, #0xb4] - ldr r2, [r1, #0x218] - ldr r1, [r1, #0x21c] - str r2, [r0] - str r1, [r0, #4] - bx lr - arm_func_end ov29_022E3A40 - - arm_func_start ov29_022E3A58 -ov29_022E3A58: ; 0x022E3A58 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r6, _022E3AB0 ; =0x02353538 - mov r5, r0 - mov r4, #0 - mov r7, #1 -_022E3A6C: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__022E37B8 - cmp r0, #0 - beq _022E3AA0 - ldr r0, [r8, #0xb4] - cmp r5, #0 - strneb r7, [r0, #0x156] - mov r0, r8 - bl UpdateStatusIconFlags -_022E3AA0: - add r4, r4, #1 - cmp r4, #0x14 - blt _022E3A6C - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E3AB0: .word 0x02353538 - arm_func_end ov29_022E3A58 - - arm_func_start UpdateStatusIconFlags -UpdateStatusIconFlags: ; 0x022E3AB4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - bl EntityIsValid__022E37B8 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, [r4, #0xb4] - mov r1, #0 - ldrsh r4, [r2, #2] - mov r5, #1 - mov r0, r1 - cmp r4, #0xb9 - addne r3, r5, #0x310 - cmpne r4, r3 - bne _022E3AF8 - ldrb r3, [r2, #0xbe] - cmp r3, #0x7f - moveq r5, #0 -_022E3AF8: - cmp r5, #0 - beq _022E3B1C - ldrb r5, [r2, #0xbd] - ldr r4, _022E3D94 ; =0x0235130C - add r3, r4, r5, lsl #3 - ldr r4, [r4, r5, lsl #3] - ldr r3, [r3, #4] - orr r1, r1, r4 - orr r0, r0, r3 -_022E3B1C: - ldrb r7, [r2, #0xbf] - ldr r4, _022E3D98 ; =0x02351294 - ldrb r6, [r2, #0xc4] - ldr r3, _022E3D9C ; =0x02351374 - add r5, r4, r7, lsl #3 - add ip, r3, r6, lsl #3 - ldr r4, [r4, r7, lsl #3] - ldr lr, [r5, #4] - ldrb sl, [r2, #0xd0] - ldr r8, _022E3DA0 ; =0x023513B4 - ldrb r7, [r2, #0xd2] - ldr r5, _022E3DA4 ; =0x023513F4 - add fp, r8, sl, lsl #3 - add sb, r5, r7, lsl #3 - orr r0, r0, lr - ldr lr, [ip, #4] - ldrb ip, [r2, #0xd5] - orr r1, r1, r4 - ldr r4, _022E3DA8 ; =0x023514F4 - ldr r3, [r3, r6, lsl #3] - add r6, r4, ip, lsl #3 - orr r0, r0, lr - ldr lr, [fp, #4] - ldrb fp, [r2, #0xd8] - orr r1, r1, r3 - ldr r3, _022E3DAC ; =0x0235133C - ldr r8, [r8, sl, lsl #3] - add sl, r3, fp, lsl #3 - orr r0, r0, lr - ldr lr, [sb, #4] - ldrb sb, [r2, #0xe0] - orr r1, r1, r8 - ldr r8, _022E3DB0 ; =0x023511FC - ldr r5, [r5, r7, lsl #3] - add r7, r8, sb, lsl #3 - orr r0, r0, lr - ldr lr, [r6, #4] - ldrb r6, [r2, #0xec] - orr r1, r1, r5 - ldr r5, _022E3DB4 ; =0x023512BC - ldr ip, [r4, ip, lsl #3] - add r4, r5, r6, lsl #3 - orr r0, r0, lr - ldr sl, [sl, #4] - ldrb lr, [r2, #0xee] - orr r1, r1, ip - ldr ip, _022E3DB8 ; =0x02351214 - ldr fp, [r3, fp, lsl #3] - add r3, ip, lr, lsl #3 - orr r0, r0, sl - ldr sl, [r7, #4] - ldrb r7, [r2, #0xef] - orr fp, r1, fp - ldr r1, _022E3DBC ; =0x023512E4 - ldr sb, [r8, sb, lsl #3] - add r8, r1, r7, lsl #3 - orr r0, r0, sl - ldr sl, [r4, #4] - ldrb r4, [r2, #0xf1] - orr fp, fp, sb - ldr sb, _022E3DC0 ; =0x0235126C - ldr r6, [r5, r6, lsl #3] - add r5, sb, r4, lsl #3 - orr r0, r0, sl - ldr sl, [r3, #4] - ldrb r3, [r2, #0xf3] - orr r6, fp, r6 - ldr fp, _022E3DC4 ; =0x023511BC - ldr ip, [ip, lr, lsl #3] - add lr, fp, r3, lsl #3 - orr sl, r0, sl - ldr r0, [r8, #4] - ldr r1, [r1, r7, lsl #3] - orr r7, r6, ip - ldr r6, [sb, r4, lsl #3] - orr r8, r7, r1 - ldr r4, [r5, #4] - orr r7, sl, r0 - ldr r1, [fp, r3, lsl #3] - orr r5, r8, r6 - ldr r0, [lr, #4] - orr r3, r7, r4 - orr r0, r3, r0 - orr r8, r5, r1 - ldrb r7, [r2, #0xf5] - ldr r6, _022E3DC8 ; =0x023511EC - ldrb r5, [r2, #0xf7] - ldr r4, _022E3DCC ; =0x023511CC - add r1, r6, r7, lsl #3 - add r3, r4, r5, lsl #3 - ldr r7, [r6, r7, lsl #3] - ldr r6, [r1, #4] - ldrb r1, [r2, #0xfd] - ldr r4, [r4, r5, lsl #3] - ldr r3, [r3, #4] - orr r0, r0, r6 - orr r0, r0, r3 - cmp r1, #0 - orr r5, r8, r7 - orr r1, r5, r4 - ldrb r3, [r2, #0xfe] - orrne r0, r0, #0 - orrne r1, r1, #0x1000000 - cmp r3, #0 - ldrb r3, [r2, #6] - orrne r0, r0, #0 - orrne r1, r1, #0x2000000 - cmp r3, #0 - bne _022E3D00 - ldrsh r5, [r2, #0x12] - ldrsh r4, [r2, #0x16] - ldr r3, _022E3DD0 ; =0x000003E7 - add r5, r5, r4 - cmp r5, r3 - movgt r5, r3 - mov r3, r5, asr #1 - ldrsh r4, [r2, #0x10] - add r3, r5, r3, lsr #30 - cmp r4, r3, asr #2 - orrlt r0, r0, #0 - orrlt r1, r1, #0x2000 -_022E3D00: - ldr r3, _022E3DD4 ; =0x02353538 - ldr r3, [r3] - ldrb r3, [r3, #0x78d] - cmp r3, #0 - beq _022E3D30 - ldrb r3, [r2, #0x62] - tst r3, #1 - movne r3, #1 - moveq r3, #0 - tst r3, #0xff - orrne r0, r0, #0 - orrne r1, r1, #0x2000 -_022E3D30: - ldr r3, [r2, #0x34] - cmp r3, #0x100 - ldrge r3, [r2, #0x38] - cmpge r3, #0x100 - ldrge r3, [r2, #0x3c] - cmpge r3, #0x100 - ldrge r3, [r2, #0x40] - cmpge r3, #0x100 - ldrgesh r3, [r2, #0x24] - cmpge r3, #0xa - ldrgesh r3, [r2, #0x26] - cmpge r3, #0xa - ldrgesh r3, [r2, #0x28] - cmpge r3, #0xa - ldrgesh r3, [r2, #0x2a] - cmpge r3, #0xa - ldrgesh r3, [r2, #0x2c] - cmpge r3, #0xa - ldrgesh r3, [r2, #0x2e] - cmpge r3, #0xa - orrlt r1, r1, #0x8000000 - orrlt r0, r0, #0 - str r1, [r2, #0x218] - str r0, [r2, #0x21c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E3D94: .word 0x0235130C -_022E3D98: .word 0x02351294 -_022E3D9C: .word 0x02351374 -_022E3DA0: .word 0x023513B4 -_022E3DA4: .word 0x023513F4 -_022E3DA8: .word 0x023514F4 -_022E3DAC: .word 0x0235133C -_022E3DB0: .word 0x023511FC -_022E3DB4: .word 0x023512BC -_022E3DB8: .word 0x02351214 -_022E3DBC: .word 0x023512E4 -_022E3DC0: .word 0x0235126C -_022E3DC4: .word 0x023511BC -_022E3DC8: .word 0x023511EC -_022E3DCC: .word 0x023511CC -_022E3DD0: .word 0x000003E7 -_022E3DD4: .word 0x02353538 - arm_func_end UpdateStatusIconFlags - - arm_func_start ov29_022E3DD8 -ov29_022E3DD8: ; 0x022E3DD8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x144 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x144 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3DD8 - - arm_func_start ov29_022E3E24 -ov29_022E3E24: ; 0x022E3E24 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E3E70 ; =0x00000143 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E3E70 ; =0x00000143 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3E70: .word 0x00000143 - arm_func_end ov29_022E3E24 - - arm_func_start ov29_022E3E74 -ov29_022E3E74: ; 0x022E3E74 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x25 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x25 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - ldr r1, _022E3ECC ; =0x0000030E - mov r0, r4 - bl ov29_022E56A0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3ECC: .word 0x0000030E - arm_func_end ov29_022E3E74 - - arm_func_start ov29_022E3ED0 -ov29_022E3ED0: ; 0x022E3ED0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E3F1C ; =0x00000143 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E3F1C ; =0x00000143 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3F1C: .word 0x00000143 - arm_func_end ov29_022E3ED0 - - arm_func_start ov29_022E3F20 -ov29_022E3F20: ; 0x022E3F20 - bx lr - arm_func_end ov29_022E3F20 - - arm_func_start ov29_022E3F24 -ov29_022E3F24: ; 0x022E3F24 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E3F70 ; =0x00000141 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E3F70 ; =0x00000141 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3F70: .word 0x00000141 - arm_func_end ov29_022E3F24 - - arm_func_start ov29_022E3F74 -ov29_022E3F74: ; 0x022E3F74 - bx lr - arm_func_end ov29_022E3F74 - - arm_func_start ov29_022E3F78 -ov29_022E3F78: ; 0x022E3F78 - bx lr - arm_func_end ov29_022E3F78 - - arm_func_start ov29_022E3F7C -ov29_022E3F7C: ; 0x022E3F7C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #7 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #7 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3F7C - - arm_func_start ov29_022E3FC8 -ov29_022E3FC8: ; 0x022E3FC8 - bx lr - arm_func_end ov29_022E3FC8 - - arm_func_start ov29_022E3FCC -ov29_022E3FCC: ; 0x022E3FCC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3FCC - - arm_func_start ov29_022E4014 -ov29_022E4014: ; 0x022E4014 - bx lr - arm_func_end ov29_022E4014 - - arm_func_start ov29_022E4018 -ov29_022E4018: ; 0x022E4018 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4064 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4064 ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4064: .word 0x00000171 - arm_func_end ov29_022E4018 - - arm_func_start ov29_022E4068 -ov29_022E4068: ; 0x022E4068 - bx lr - arm_func_end ov29_022E4068 - - arm_func_start ov29_022E406C -ov29_022E406C: ; 0x022E406C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E40B4 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E40B4 ; =0x00000171 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E40B4: .word 0x00000171 - arm_func_end ov29_022E406C - - arm_func_start ov29_022E40B8 -ov29_022E40B8: ; 0x022E40B8 - bx lr - arm_func_end ov29_022E40B8 - - arm_func_start ov29_022E40BC -ov29_022E40BC: ; 0x022E40BC - bx lr - arm_func_end ov29_022E40BC - - arm_func_start ov29_022E40C0 -ov29_022E40C0: ; 0x022E40C0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1ac - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1ac - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E40C0 - - arm_func_start ov29_022E4108 -ov29_022E4108: ; 0x022E4108 - bx lr - arm_func_end ov29_022E4108 - - arm_func_start ov29_022E410C -ov29_022E410C: ; 0x022E410C - bx lr - arm_func_end ov29_022E410C - - arm_func_start ov29_022E4110 -ov29_022E4110: ; 0x022E4110 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4110 - - arm_func_start ov29_022E415C -ov29_022E415C: ; 0x022E415C - bx lr - arm_func_end ov29_022E415C - - arm_func_start ov29_022E4160 -ov29_022E4160: ; 0x022E4160 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1a8 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1a8 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4160 - - arm_func_start ov29_022E41AC -ov29_022E41AC: ; 0x022E41AC - bx lr - arm_func_end ov29_022E41AC - - arm_func_start ov29_022E41B0 -ov29_022E41B0: ; 0x022E41B0 - stmdb sp!, {r3, lr} - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _022E41C8 ; =0x00000221 - bl ov29_022E56A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E41C8: .word 0x00000221 - arm_func_end ov29_022E41B0 - - arm_func_start ov29_022E41CC -ov29_022E41CC: ; 0x022E41CC - ldr ip, _022E41D8 ; =ov29_022E56A0 - mov r1, #0x310 - bx ip - .align 2, 0 -_022E41D8: .word ov29_022E56A0 - arm_func_end ov29_022E41CC - - arm_func_start ov29_022E41DC -ov29_022E41DC: ; 0x022E41DC - ldr ip, _022E41EC ; =ov29_023049A8 - mov r1, #0xa - mov r2, #8 - bx ip - .align 2, 0 -_022E41EC: .word ov29_023049A8 - arm_func_end ov29_022E41DC - - arm_func_start ov29_022E41F0 -ov29_022E41F0: ; 0x022E41F0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E423C ; =0x000001A7 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E423C ; =0x000001A7 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E423C: .word 0x000001A7 - arm_func_end ov29_022E41F0 - - arm_func_start ov29_022E4240 -ov29_022E4240: ; 0x022E4240 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E428C ; =0x000001A7 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E428C ; =0x000001A7 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E428C: .word 0x000001A7 - arm_func_end ov29_022E4240 - - arm_func_start ov29_022E4290 -ov29_022E4290: ; 0x022E4290 - bx lr - arm_func_end ov29_022E4290 - - arm_func_start ov29_022E4294 -ov29_022E4294: ; 0x022E4294 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x4c - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x4c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4294 - - arm_func_start ov29_022E42E0 -ov29_022E42E0: ; 0x022E42E0 - bx lr - arm_func_end ov29_022E42E0 - - arm_func_start ov29_022E42E4 -ov29_022E42E4: ; 0x022E42E4 - bx lr - arm_func_end ov29_022E42E4 - - arm_func_start ov29_022E42E8 -ov29_022E42E8: ; 0x022E42E8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r5 - mov r1, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E42E8 - - arm_func_start ov29_022E4338 -ov29_022E4338: ; 0x022E4338 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4384 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4384 ; =0x000001A9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4384: .word 0x000001A9 - arm_func_end ov29_022E4338 - - arm_func_start ov29_022E4388 -ov29_022E4388: ; 0x022E4388 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E43D4 ; =0x0000013A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x138 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E43D4: .word 0x0000013A - arm_func_end ov29_022E4388 - - arm_func_start ov29_022E43D8 -ov29_022E43D8: ; 0x022E43D8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4424 ; =0x0000013A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x138 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4424: .word 0x0000013A - arm_func_end ov29_022E43D8 - - arm_func_start ov29_022E4428 -ov29_022E4428: ; 0x022E4428 - bx lr - arm_func_end ov29_022E4428 - - arm_func_start ov29_022E442C -ov29_022E442C: ; 0x022E442C - bx lr - arm_func_end ov29_022E442C - - arm_func_start ov29_022E4430 -ov29_022E4430: ; 0x022E4430 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E447C ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E447C ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E447C: .word 0x00000171 - arm_func_end ov29_022E4430 - - arm_func_start ov29_022E4480 -ov29_022E4480: ; 0x022E4480 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #7 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #7 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4480 - - arm_func_start ov29_022E44CC -ov29_022E44CC: ; 0x022E44CC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4518 ; =0x0000018B - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4518 ; =0x0000018B - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4518: .word 0x0000018B - arm_func_end ov29_022E44CC - - arm_func_start ov29_022E451C -ov29_022E451C: ; 0x022E451C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4568 ; =0x0000018A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x188 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4568: .word 0x0000018A - arm_func_end ov29_022E451C - - arm_func_start ov29_022E456C -ov29_022E456C: ; 0x022E456C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #5 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #5 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E456C - - arm_func_start ov29_022E45B8 -ov29_022E45B8: ; 0x022E45B8 - ldr ip, _022E45C4 ; =ov29_022E56A0 - ldr r1, _022E45C8 ; =0x00000227 - bx ip - .align 2, 0 -_022E45C4: .word ov29_022E56A0 -_022E45C8: .word 0x00000227 - arm_func_end ov29_022E45B8 - - arm_func_start ov29_022E45CC -ov29_022E45CC: ; 0x022E45CC - bx lr - arm_func_end ov29_022E45CC - - arm_func_start ov29_022E45D0 -ov29_022E45D0: ; 0x022E45D0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r0 - mov r0, #0x2f - mov r4, r1 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x2f - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - mov r0, #0x30 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r1, #2 - str r1, [sp] - mov r2, #0 - str r2, [sp, #4] - sub r1, r2, #1 - str r1, [sp, #8] - str r2, [sp, #0xc] - mov r0, r5 - mov r1, #0x30 - mov r2, #1 - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E45D0 - - arm_func_start ov29_022E465C -ov29_022E465C: ; 0x022E465C - bx lr - arm_func_end ov29_022E465C - - arm_func_start ov29_022E4660 -ov29_022E4660: ; 0x022E4660 - bx lr - arm_func_end ov29_022E4660 - - arm_func_start ov29_022E4664 -ov29_022E4664: ; 0x022E4664 - bx lr - arm_func_end ov29_022E4664 - - arm_func_start ov29_022E4668 -ov29_022E4668: ; 0x022E4668 - bx lr - arm_func_end ov29_022E4668 - - arm_func_start ov29_022E466C -ov29_022E466C: ; 0x022E466C - bx lr - arm_func_end ov29_022E466C - - arm_func_start ov29_022E4670 -ov29_022E4670: ; 0x022E4670 - bx lr - arm_func_end ov29_022E4670 - - arm_func_start ov29_022E4674 -ov29_022E4674: ; 0x022E4674 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x21 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x21 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4674 - - arm_func_start ov29_022E46C0 -ov29_022E46C0: ; 0x022E46C0 - ldr ip, _022E46CC ; =ov29_022E56A0 - mov r1, #0x30c - bx ip - .align 2, 0 -_022E46CC: .word ov29_022E56A0 - arm_func_end ov29_022E46C0 - - arm_func_start ov29_022E46D0 -ov29_022E46D0: ; 0x022E46D0 - bx lr - arm_func_end ov29_022E46D0 - - arm_func_start ov29_022E46D4 -ov29_022E46D4: ; 0x022E46D4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_022E5ED0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - mov r1, r4 - ldrb r0, [r0, #0x11e] - mov r2, #1 - mov r3, #0xb - bl ov29_022EA718 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E46D4 - - arm_func_start ov29_022E4704 -ov29_022E4704: ; 0x022E4704 - ldr ip, _022E4710 ; =ov29_022E56A0 - mov r1, #0x21c - bx ip - .align 2, 0 -_022E4710: .word ov29_022E56A0 - arm_func_end ov29_022E4704 - - arm_func_start ov29_022E4714 -ov29_022E4714: ; 0x022E4714 - bx lr - arm_func_end ov29_022E4714 - - arm_func_start ov29_022E4718 -ov29_022E4718: ; 0x022E4718 - bx lr - arm_func_end ov29_022E4718 - - arm_func_start ov29_022E471C -ov29_022E471C: ; 0x022E471C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4768 ; =0x00000131 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4768 ; =0x00000131 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4768: .word 0x00000131 - arm_func_end ov29_022E471C - - arm_func_start ov29_022E476C -ov29_022E476C: ; 0x022E476C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x30 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x30 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E476C - - arm_func_start ov29_022E47B8 -ov29_022E47B8: ; 0x022E47B8 - bx lr - arm_func_end ov29_022E47B8 - - arm_func_start ov29_022E47BC -ov29_022E47BC: ; 0x022E47BC - bx lr - arm_func_end ov29_022E47BC - - arm_func_start ov29_022E47C0 -ov29_022E47C0: ; 0x022E47C0 - bx lr - arm_func_end ov29_022E47C0 - - arm_func_start ov29_022E47C4 -ov29_022E47C4: ; 0x022E47C4 - bx lr - arm_func_end ov29_022E47C4 - - arm_func_start ov29_022E47C8 -ov29_022E47C8: ; 0x022E47C8 - bx lr - arm_func_end ov29_022E47C8 - - arm_func_start ov29_022E47CC -ov29_022E47CC: ; 0x022E47CC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r1 - mov r1, #0xe - mov r4, r0 - bl MonsterIsType - cmp r0, #0 - beq _022E4828 - mov r0, r5 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, r5 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E4860 -_022E4828: - mov r0, #0xe - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xe - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E4860: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E47CC - - arm_func_start ov29_022E4868 -ov29_022E4868: ; 0x022E4868 - bx lr - arm_func_end ov29_022E4868 - - arm_func_start ov29_022E486C -ov29_022E486C: ; 0x022E486C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x41 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x41 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E486C - - arm_func_start ov29_022E48B8 -ov29_022E48B8: ; 0x022E48B8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4910 ; =0x0000011E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x11c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - mov r0, r4 - mov r1, #0x20c - bl ov29_022E56A0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4910: .word 0x0000011E - arm_func_end ov29_022E48B8 - - arm_func_start ov29_022E4914 -ov29_022E4914: ; 0x022E4914 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4960 ; =0x000001AE - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x1ac - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4960: .word 0x000001AE - arm_func_end ov29_022E4914 - - arm_func_start ov29_022E4964 -ov29_022E4964: ; 0x022E4964 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E49B0 ; =0x000001B1 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E49B0 ; =0x000001B1 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E49B0: .word 0x000001B1 - arm_func_end ov29_022E4964 - - arm_func_start ov29_022E49B4 -ov29_022E49B4: ; 0x022E49B4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4A00 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4A00 ; =0x000001A9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4A00: .word 0x000001A9 - arm_func_end ov29_022E49B4 - - arm_func_start ov29_022E4A04 -ov29_022E4A04: ; 0x022E4A04 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4A50 ; =0x00000192 - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4A50: .word 0x00000192 - arm_func_end ov29_022E4A04 - - arm_func_start ov29_022E4A54 -ov29_022E4A54: ; 0x022E4A54 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4AA0 ; =0x0000018E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x18c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4AA0: .word 0x0000018E - arm_func_end ov29_022E4A54 - - arm_func_start ov29_022E4AA4 -ov29_022E4AA4: ; 0x022E4AA4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x190 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4AA4 - - arm_func_start ov29_022E4AF0 -ov29_022E4AF0: ; 0x022E4AF0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x15 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x15 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4AF0 - - arm_func_start ov29_022E4B3C -ov29_022E4B3C: ; 0x022E4B3C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4B88 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4B88 ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4B88: .word 0x00000171 - arm_func_end ov29_022E4B3C - - arm_func_start ov29_022E4B8C -ov29_022E4B8C: ; 0x022E4B8C - ldr ip, _022E4B98 ; =ov29_022E56A0 - ldr r1, _022E4B9C ; =0x0000030E - bx ip - .align 2, 0 -_022E4B98: .word ov29_022E56A0 -_022E4B9C: .word 0x0000030E - arm_func_end ov29_022E4B8C - - arm_func_start ov29_022E4BA0 -ov29_022E4BA0: ; 0x022E4BA0 - ldr ip, _022E4BAC ; =ov29_022E56A0 - ldr r1, _022E4BB0 ; =0x0000030E - bx ip - .align 2, 0 -_022E4BAC: .word ov29_022E56A0 -_022E4BB0: .word 0x0000030E - arm_func_end ov29_022E4BA0 - - arm_func_start ov29_022E4BB4 -ov29_022E4BB4: ; 0x022E4BB4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x15 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x15 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4BB4 - - arm_func_start ov29_022E4C00 -ov29_022E4C00: ; 0x022E4C00 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0xf - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xf - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4C00 - - arm_func_start ov29_022E4C4C -ov29_022E4C4C: ; 0x022E4C4C - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r1, #2 - mov ip, #0 - stmia sp, {r1, ip} - sub r1, ip, #1 - str r1, [sp, #8] - mov r1, #0x15 - mov r2, #1 - mov r3, #3 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E4C4C - - arm_func_start ov29_022E4C84 -ov29_022E4C84: ; 0x022E4C84 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4CD0 ; =0x000001F7 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4CD0 ; =0x000001F7 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4CD0: .word 0x000001F7 - arm_func_end ov29_022E4C84 - - arm_func_start ov29_022E4CD4 -ov29_022E4CD4: ; 0x022E4CD4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4D20 ; =0x000001F9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4D20 ; =0x000001F9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4D20: .word 0x000001F9 - arm_func_end ov29_022E4CD4 - - arm_func_start ov29_022E4D24 -ov29_022E4D24: ; 0x022E4D24 - bx lr - arm_func_end ov29_022E4D24 - - arm_func_start ov29_022E4D28 -ov29_022E4D28: ; 0x022E4D28 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E4D80 - mov r0, #0x194 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x194 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E4DB8 -_022E4D80: - ldr r0, _022E4DC8 ; =0x00000193 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4DC8 ; =0x00000193 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E4DB8: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E4DC8: .word 0x00000193 - arm_func_end ov29_022E4D28 - - arm_func_start ov29_022E4DCC -ov29_022E4DCC: ; 0x022E4DCC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E4E24 - ldr r0, _022E4E6C ; =0x0000018F - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4E6C ; =0x0000018F - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E4E5C -_022E4E24: - ldr r0, _022E4E70 ; =0x00000191 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4E70 ; =0x00000191 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E4E5C: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E4E6C: .word 0x0000018F -_022E4E70: .word 0x00000191 - arm_func_end ov29_022E4DCC - - arm_func_start ov29_022E4E74 -ov29_022E4E74: ; 0x022E4E74 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E4ECC - ldr r0, _022E4F14 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4F14 ; =0x000001A9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E4F04 -_022E4ECC: - ldr r0, _022E4F18 ; =0x00000192 - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E4F04: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E4F14: .word 0x000001A9 -_022E4F18: .word 0x00000192 - arm_func_end ov29_022E4E74 - - arm_func_start ov29_022E4F1C -ov29_022E4F1C: ; 0x022E4F1C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E4F74 - ldr r0, _022E4FBC ; =0x0000018E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x18c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E4FAC -_022E4F74: - mov r0, #0x190 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E4FAC: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E4FBC: .word 0x0000018E - arm_func_end ov29_022E4F1C - - arm_func_start ov29_022E4FC0 -ov29_022E4FC0: ; 0x022E4FC0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E5018 - ldr r0, _022E5060 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E5060 ; =0x000001A9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E5050 -_022E5018: - ldr r0, _022E5064 ; =0x00000192 - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E5050: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E5060: .word 0x000001A9 -_022E5064: .word 0x00000192 - arm_func_end ov29_022E4FC0 - - arm_func_start ov29_022E5068 -ov29_022E5068: ; 0x022E5068 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E50C0 - mov r0, #0x194 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x194 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E50F8 -_022E50C0: - ldr r0, _022E5108 ; =0x00000193 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E5108 ; =0x00000193 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E50F8: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E5108: .word 0x00000193 - arm_func_end ov29_022E5068 - - arm_func_start ov29_022E510C -ov29_022E510C: ; 0x022E510C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E5164 - ldr r0, _022E51AC ; =0x0000018E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x18c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E519C -_022E5164: - mov r0, #0x190 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x190 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E519C: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E51AC: .word 0x0000018E - arm_func_end ov29_022E510C - - arm_func_start ov29_022E51B0 -ov29_022E51B0: ; 0x022E51B0 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E5208 - ldr r0, _022E5250 ; =0x0000018F - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E5250 ; =0x0000018F - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E5240 -_022E5208: - ldr r0, _022E5254 ; =0x00000191 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E5254 ; =0x00000191 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E5240: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E5250: .word 0x0000018F -_022E5254: .word 0x00000191 - arm_func_end ov29_022E51B0 - - arm_func_start ov29_022E5258 -ov29_022E5258: ; 0x022E5258 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E52B0 - mov r0, #0x18c - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x18c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E52E8 -_022E52B0: - mov r0, #0xd - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xd - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E52E8: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov29_022E5258 - - arm_func_start ov29_022E52F8 -ov29_022E52F8: ; 0x022E52F8 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, [sp, #0x1c] - mov r4, r0 - cmp r1, #0 - bne _022E5350 - ldr r0, _022E5398 ; =0x0000018D - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E5398 ; =0x0000018D - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E5388 -_022E5350: - mov r0, #0xe - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xe - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E5388: - add sp, sp, #0x10 - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_022E5398: .word 0x0000018D - arm_func_end ov29_022E52F8 - - arm_func_start ov29_022E539C -ov29_022E539C: ; 0x022E539C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E53E8 ; =0x00000143 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E53E8 ; =0x00000143 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E53E8: .word 0x00000143 - arm_func_end ov29_022E539C - - arm_func_start ov29_022E53EC -ov29_022E53EC: ; 0x022E53EC - bx lr - arm_func_end ov29_022E53EC - - arm_func_start ov29_022E53F0 -ov29_022E53F0: ; 0x022E53F0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x19 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x19 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E53F0 - - arm_func_start ov29_022E543C -ov29_022E543C: ; 0x022E543C - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r1, #2 - mov ip, #0 - stmia sp, {r1, ip} - sub r1, ip, #1 - str r1, [sp, #8] - mov r1, #0x15 - mov r2, #1 - mov r3, #3 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E543C - - arm_func_start ov29_022E5474 -ov29_022E5474: ; 0x022E5474 - bx lr - arm_func_end ov29_022E5474 - - arm_func_start ov29_022E5478 -ov29_022E5478: ; 0x022E5478 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r2, _022E5508 ; =0x02353538 - mov r4, r0 - ldr r2, [r2] - ldr r0, [r1, #8] - ldrb r1, [r2, #0x1c5] - cmp r1, #0 - beq _022E54A0 - bl ov29_0230D618 -_022E54A0: - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022E54BC -_022E54AC: ; jump table - b _022E54BC ; case 0 - b _022E54C4 ; case 1 - b _022E54CC ; case 2 - b _022E54D4 ; case 3 -_022E54BC: - mov r1, #8 - b _022E54D8 -_022E54C4: - mov r1, #9 - b _022E54D8 -_022E54CC: - mov r1, #0xa - b _022E54D8 -_022E54D4: - mov r1, #0xb -_022E54D8: - mov ip, #0 - mov r2, #1 - str ip, [sp] - str r2, [sp, #4] - sub r0, r2, #2 - str r0, [sp, #8] - mov r0, r4 - mov r3, #3 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5508: .word 0x02353538 - arm_func_end ov29_022E5478 - - arm_func_start ov29_022E550C -ov29_022E550C: ; 0x022E550C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E5558 ; =0x0000013E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x13c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5558: .word 0x0000013E - arm_func_end ov29_022E550C - - arm_func_start ov29_022E555C -ov29_022E555C: ; 0x022E555C - bx lr - arm_func_end ov29_022E555C - - arm_func_start ov29_022E5560 -ov29_022E5560: ; 0x022E5560 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r1 - cmp r2, #1 - bne _022E55B0 - mov r0, #0xf8 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xf8 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - b _022E55E8 -_022E55B0: - mov r0, #0xf9 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xf9 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 -_022E55E8: - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E5560 - - arm_func_start ov29_022E55F0 -ov29_022E55F0: ; 0x022E55F0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r0, #0x2a - mov r4, r1 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x2a - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E55F0 - - arm_func_start ov29_022E563C -ov29_022E563C: ; 0x022E563C - ldr ip, _022E564C ; =ov29_022E3820 - mov r1, #0x90 - mov r2, #1 - bx ip - .align 2, 0 -_022E564C: .word ov29_022E3820 - arm_func_end ov29_022E563C - - arm_func_start ov29_022E5650 -ov29_022E5650: ; 0x022E5650 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r0, _022E569C ; =0x00000167 - mov r4, r1 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E569C ; =0x00000167 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E569C: .word 0x00000167 - arm_func_end ov29_022E5650 - - arm_func_start ov29_022E56A0 -ov29_022E56A0: ; 0x022E56A0 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0 - bne _022E56BC - mov r0, r4 - bl ov29_022EACCC - ldmia sp!, {r4, pc} -_022E56BC: - bl ov29_022E5ED0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ov29_022EACCC - ldmia sp!, {r4, pc} - arm_func_end ov29_022E56A0 - - arm_func_start ov29_022E56D4 -ov29_022E56D4: ; 0x022E56D4 - stmdb sp!, {r4, lr} - mov r4, r1 - bl ov29_022E2CA0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ov29_022EACCC - ldmia sp!, {r4, pc} - arm_func_end ov29_022E56D4 - - arm_func_start ov29_022E56F4 -ov29_022E56F4: ; 0x022E56F4 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0 - bne _022E5710 - mov r0, r4 - bl ov29_022EACE4 - ldmia sp!, {r4, pc} -_022E5710: - bl ov29_022E5ED0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ov29_022EACCC - ldmia sp!, {r4, pc} - arm_func_end ov29_022E56F4 - - arm_func_start ov29_022E5728 -ov29_022E5728: ; 0x022E5728 - stmdb sp!, {r3, lr} - cmp r1, #0 - bne _022E5740 - ldr r0, _022E5760 ; =0x0000130E - bl ov29_022EACCC - ldmia sp!, {r3, pc} -_022E5740: - cmp r1, #1 - bne _022E5754 - ldr r0, _022E5764 ; =0x0000130D - bl ov29_022EACCC - ldmia sp!, {r3, pc} -_022E5754: - ldr r0, _022E5768 ; =0x0000130C - bl ov29_022EACCC - ldmia sp!, {r3, pc} - .align 2, 0 -_022E5760: .word 0x0000130E -_022E5764: .word 0x0000130D -_022E5768: .word 0x0000130C - arm_func_end ov29_022E5728 - - arm_func_start ov29_022E576C -ov29_022E576C: ; 0x022E576C - stmdb sp!, {r3, lr} - ldr r0, [r1, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - beq _022E578C - ldr r0, _022E5798 ; =0x00001306 - bl ov29_022EACCC - ldmia sp!, {r3, pc} -_022E578C: - ldr r0, _022E579C ; =0x00001307 - bl ov29_022EACCC - ldmia sp!, {r3, pc} - .align 2, 0 -_022E5798: .word 0x00001306 -_022E579C: .word 0x00001307 - arm_func_end ov29_022E576C - - arm_func_start ov29_022E57A0 -ov29_022E57A0: ; 0x022E57A0 - stmdb sp!, {r3, lr} - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - beq _022E57C0 - ldr r0, _022E57CC ; =0x00001306 - bl ov29_022EACCC - ldmia sp!, {r3, pc} -_022E57C0: - ldr r0, _022E57D0 ; =0x00001307 - bl ov29_022EACCC - ldmia sp!, {r3, pc} - .align 2, 0 -_022E57CC: .word 0x00001306 -_022E57D0: .word 0x00001307 - arm_func_end ov29_022E57A0 - - arm_func_start ov29_022E57D4 -ov29_022E57D4: ; 0x022E57D4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E585C ; =0x0000025A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x258 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - ldr r0, _022E5860 ; =0x0000025B - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r1, #2 - str r1, [sp] - mov r2, #0 - str r2, [sp, #4] - sub r1, r2, #1 - str r1, [sp, #8] - str r2, [sp, #0xc] - ldr r1, _022E5860 ; =0x0000025B - mov r0, r4 - mov r2, #1 - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E585C: .word 0x0000025A -_022E5860: .word 0x0000025B - arm_func_end ov29_022E57D4 - - arm_func_start ov29_022E5864 -ov29_022E5864: ; 0x022E5864 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x16 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x16 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E5864 - - arm_func_start ov29_022E58B0 -ov29_022E58B0: ; 0x022E58B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r2 - mov sl, r0 - mov r5, r1 - cmp r4, #0x11 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r5 - bl ov29_022E2CA0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsh r0, [r5] - mov r2, #0x18 - add r1, sp, #0 - smulbb r0, r0, r2 - add r0, r0, #0xc - mov r0, r0, lsl #8 - mov r0, r0, asr #8 - strh r0, [sp] - ldrsh r3, [r5, #2] - mov r0, r4 - smulbb r2, r3, r2 - add r2, r2, #0x10 - mov r2, r2, lsl #8 - mov r2, r2, asr #8 - strh r2, [sp, #2] - bl ov10_022BEC08 - cmp r4, #4 - mov r6, r0 - cmpne r4, #0x18 - bne _022E5944 - mov r0, #0 - mov r1, #0x308 - bl ov29_022E56A0 - mov r0, #0x28 - mov r1, #0x33 - bl ov29_022EA370 - b _022E59C4 -_022E5944: - cmp r4, #8 - bne _022E59B8 - ldr sb, [sl, #0xb4] - mov r7, #0 - mov r0, r6, lsl #0x10 - ldrb r8, [sb, #0x4c] - mov r4, r0, asr #0x10 - mov r5, r7 - mov fp, #2 - b _022E59A4 -_022E596C: - sub r0, r8, #1 - and r8, r0, #7 - mov r0, sl - mov r1, r5 - mov r2, r8 - bl ov29_023049A8 - mov r0, fp - mov r1, #0x33 - bl ov29_022EA370 - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E59AC - add r7, r7, #2 -_022E59A4: - cmp r7, #0x3e8 - blt _022E596C -_022E59AC: - and r0, r8, #7 - strb r0, [sb, #0x4c] - b _022E59C4 -_022E59B8: - mov r0, #0x28 - mov r1, #0x33 - bl ov29_022EA370 -_022E59C4: - mov r0, r6, lsl #0x10 - mov r7, #0 - mov r4, r0, asr #0x10 - mov r5, #0x42 - b _022E59F4 -_022E59D8: - mov r0, r5 - bl AdvanceFrame - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r7, r7, #1 -_022E59F4: - cmp r7, #0x3e8 - blt _022E59D8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_022E58B0 - - arm_func_start ov29_022E5A00 -ov29_022E5A00: ; 0x022E5A00 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r5, r0 - mov r4, r1 - bl ov29_022E5ED0 - cmp r0, #0 - beq _022E5AD4 - ldrb r0, [r4] - ldr r1, [r5, #0xc] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r4, #0 - ldreqsh r4, [r4, #4] - mov r1, r1, asr #8 - ldr r0, _022E5ADC ; =0x02353538 - strh r1, [sp, #4] - ldr r2, [r5, #0x10] - ldr r1, [r0] - mov r0, r2, asr #8 - strh r0, [sp, #6] - ldr r0, _022E5AE0 ; =0x0001A226 - ldrsh r3, [sp, #6] - ldrsh r1, [r1, r0] - add r0, sp, #8 - add r2, r5, #0x2c - sub r1, r3, r1 - add r1, r1, r1, lsr #31 - mov r3, r1, asr #1 - mov r1, #4 - add r5, r3, #1 - bl sub_0201D034 - add r1, sp, #4 - add r2, sp, #8 - mov r0, r4 - mov r3, #0 - str r5, [sp] - bl ov10_022BEC94 - mov r0, r0, lsl #0x10 - mov r6, #0 - mov r4, r0, asr #0x10 - mov r5, #0x42 - b _022E5ACC -_022E5AB0: - mov r0, r5 - bl AdvanceFrame - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E5AD4 - add r6, r6, #1 -_022E5ACC: - cmp r6, #0x3e8 - blt _022E5AB0 -_022E5AD4: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E5ADC: .word 0x02353538 -_022E5AE0: .word 0x0001A226 - arm_func_end ov29_022E5A00 - - arm_func_start ov29_022E5AE4 -ov29_022E5AE4: ; 0x022E5AE4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r5, r0 - mov r4, r1 - bl ov29_022E5ED0 - cmp r0, #0 - beq _022E5BC8 - ldrb r0, [r4] - ldr r1, [r5, #0xc] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r4, #0 - ldreqsh r4, [r4, #4] - mov r1, r1, asr #8 - ldr r0, _022E5BD0 ; =0x02353538 - strh r1, [sp, #4] - ldr r2, [r5, #0x10] - ldr r1, [r0] - mov r0, r2, asr #8 - strh r0, [sp, #6] - ldr r0, _022E5BD4 ; =0x0001A226 - ldrsh r3, [sp, #6] - ldrsh r1, [r1, r0] - add r0, sp, #8 - add r2, r5, #0x2c - sub r1, r3, r1 - add r1, r1, r1, lsr #31 - mov r1, r1, asr #1 - add r1, r1, #1 - mov r3, r1, lsl #0x10 - mov r1, #4 - mov r5, r3, asr #0x10 - bl sub_0201D034 - add r1, sp, #4 - add r2, sp, #8 - mov r0, r4 - mov r3, #1 - str r5, [sp] - bl ov10_022BEC94 - mov r0, r0, lsl #0x10 - mov r6, #0 - mov r4, r0, asr #0x10 - mov r5, #0x42 - b _022E5BC0 -_022E5B9C: - mov r0, r5 - bl AdvanceFrame - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E5BC8 - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_022E5BC0: - cmp r6, #0x3e8 - blt _022E5B9C -_022E5BC8: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E5BD0: .word 0x02353538 -_022E5BD4: .word 0x0001A226 - arm_func_end ov29_022E5AE4 - - arm_func_start ov29_022E5BD8 -ov29_022E5BD8: ; 0x022E5BD8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - mov r5, r0 - bl ov29_022E272C - cmp r0, #0 - beq _022E5D4C - ldr r1, [r5, #0xb4] - ldr r0, [r5, #0xc] - ldrb r4, [r1, #0x4c] - mov r1, r0, asr #8 - ldr r0, _022E5D58 ; =0x02353538 - strh r1, [sp, #0x10] - ldr r2, [r5, #0x10] - ldr r1, [r0] - mov r0, r2, asr #8 - strh r0, [sp, #0x12] - ldr r0, _022E5D5C ; =0x0001A226 - ldrsh r2, [sp, #0x12] - ldrsh r1, [r1, r0] - add r0, sp, #0x14 - sub r1, r2, r1 - add r1, r1, r1, lsr #31 - mov sl, r1, asr #1 - bl ov10_022BF274 - mov r5, #0 - ldrsh r3, [sp, #0x10] - ldrsh r2, [sp, #0x12] - ldr r6, _022E5D60 ; =0x00000165 - sub r1, r5, #1 - add r0, sp, #0x30 - str r6, [sp, #0x14] - str r5, [sp, #0x18] - str r4, [sp, #0x1c] - strh r3, [sp, #0x20] - strh r2, [sp, #0x22] - strh r5, [sp, #0x24] - strh r5, [sp, #0x26] - strb r1, [sp, #0x28] - str sl, [sp, #0x2c] - bl sub_0201C000 - add r0, sp, #0x14 - mov r1, r5 - bl ov10_022BF2B4 - ldr r2, _022E5D64 ; =0x0235171C - mov sb, r5 - add r1, r2, r4, lsl #2 - mov r3, r4, lsl #2 - ldrh r2, [r2, r3] - ldrh r1, [r1, #2] - mov r0, r0, lsl #0x10 - strh r2, [sp, #0xc] - strh r1, [sp, #0xe] - ldrsh r8, [sp, #0xc] - ldrsh r7, [sp, #0xe] - ldr r4, _022E5D58 ; =0x02353538 - ldr fp, _022E5D5C ; =0x0001A226 - mov r5, r0, asr #0x10 - mov r6, sb -_022E5CC0: - mov r0, r5 - add r1, sp, #0x10 - mov r2, r6 - mov r3, sl - str r6, [sp] - bl ov10_022BF45C - mov r0, #0x42 - bl AdvanceFrame - ldrsh r0, [sp, #0x12] - ldrsh r1, [sp, #0x10] - add sb, sb, #1 - add r0, r0, r7, lsl #2 - add r1, r1, r8, lsl #2 - strh r0, [sp, #0x12] - strh r1, [sp, #0x10] - ldr r0, [r4] - ldrsh r1, [sp, #0x12] - ldrsh r0, [r0, fp] - cmp sb, #6 - sub r0, r1, r0 - add r0, r0, r0, lsr #31 - mov sl, r0, asr #1 - blt _022E5CC0 - bl ov10_022BDC68 - ldrsh r2, [sp, #0x10] - ldrsh r1, [sp, #0x12] - add r0, sp, #4 - mov r4, r2, lsl #8 - mov r3, r1, lsl #8 - mov r1, #0x1a0 - mov r2, #1 - str r4, [sp, #4] - str r3, [sp, #8] - bl ov29_022E3820 - b _022E5D50 -_022E5D4C: - mvn r0, #0 -_022E5D50: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E5D58: .word 0x02353538 -_022E5D5C: .word 0x0001A226 -_022E5D60: .word 0x00000165 -_022E5D64: .word 0x0235171C - arm_func_end ov29_022E5BD8 - - arm_func_start ov29_022E5D68 -ov29_022E5D68: ; 0x022E5D68 - stmdb sp!, {r4, lr} - mov r4, #0x3f00 - bl GetFloorType - cmp r0, #0 - beq _022E5D88 - cmp r0, #1 - cmpne r0, #2 - beq _022E5DA4 -_022E5D88: - ldr r0, _022E5DB0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl DungeonGoesUp - cmp r0, #0 - ldrne r4, _022E5DB4 ; =0x0000130A - ldreq r4, _022E5DB8 ; =0x00001309 -_022E5DA4: - mov r0, r4 - bl ov29_022EACCC - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5DB0: .word 0x02353538 -_022E5DB4: .word 0x0000130A -_022E5DB8: .word 0x00001309 - arm_func_end ov29_022E5D68 - - arm_func_start ov29_022E5DBC -ov29_022E5DBC: ; 0x022E5DBC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - cmp r4, #3 - bne _022E5DD8 - mov r0, #0 - bl ov29_022EAE14 -_022E5DD8: - cmp r5, #4 - beq _022E5E10 - cmp r4, #3 - bne _022E5DFC - ldr r0, _022E5E7C ; =0x0235119C - mov r1, r4, lsl #1 - ldrh r0, [r0, r1] - bl ov29_022EACCC - b _022E5E3C -_022E5DFC: - ldr r0, _022E5E7C ; =0x0235119C - mov r1, r4, lsl #1 - ldrh r0, [r0, r1] - bl ov29_022EACE4 - b _022E5E3C -_022E5E10: - cmp r4, #3 - bne _022E5E2C - ldr r0, _022E5E80 ; =0x02351194 - mov r1, r4, lsl #1 - ldrh r0, [r0, r1] - bl ov29_022EACCC - b _022E5E3C -_022E5E2C: - ldr r0, _022E5E7C ; =0x0235119C - mov r1, r4, lsl #1 - ldrh r0, [r0, r1] - bl ov29_022EACE4 -_022E5E3C: - mov r0, r5 - mov r1, r4 - mov r2, #0x80 - bl ov29_022E6A00 - mov r4, #0x46 - b _022E5E5C -_022E5E54: - mov r0, r4 - bl AdvanceFrame -_022E5E5C: - bl ov29_022E6C08 - cmp r0, #0 - bne _022E5E54 - bl ov29_022E6CE0 - bl ov29_02339148 - mov r0, #1 - bl ov29_0234B1A4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E5E7C: .word 0x0235119C -_022E5E80: .word 0x02351194 - arm_func_end ov29_022E5DBC - - arm_func_start ov29_022E5E84 -ov29_022E5E84: ; 0x022E5E84 - stmdb sp!, {r4, r5, r6, lr} - mov r1, #8 - mov r2, r1 - mov r6, r0 - bl ov29_023049A8 - mov r5, #0 - mov r4, #0x51 - b _022E5EC4 -_022E5EA4: - mov r0, r4 - bl AdvanceFrame - ldr r0, [r6, #0x58] - tst r0, #3 - ldreqb r0, [r6, #0xaf] - cmpeq r0, #8 - ldmneia sp!, {r4, r5, r6, pc} - add r5, r5, #1 -_022E5EC4: - cmp r5, #0x64 - blt _022E5EA4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_022E5E84 - - arm_func_start ov29_022E5ED0 -ov29_022E5ED0: ; 0x022E5ED0 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x20] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _022E5F1C ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x1a000 - ldrb r2, [r1, #0x23e] - cmp r2, #0 - beq _022E5F14 - ldr r1, [r1, #0x22c] - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_022E5F14: - bl ov29_022E272C - ldmia sp!, {r3, pc} - .align 2, 0 -_022E5F1C: .word 0x02353538 - arm_func_end ov29_022E5ED0 - - arm_func_start ov29_022E5F20 -ov29_022E5F20: ; 0x022E5F20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r0, _022E5FDC ; =0x00000199 - mov r8, #0 - ldr fp, _022E5FE0 ; =0x02353538 - rsb r4, r0, #0x198 - mov r7, r8 - mov r6, #2 - mov r5, r8 -_022E5F44: - ldr r0, [fp] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__022E37B8 - cmp r0, #0 - ldrne sl, [sb, #0xb4] - ldrneb r0, [sl, #0xfc] - cmpne r0, #0 - beq _022E5FC8 - ldr r0, _022E5FDC ; =0x00000199 - strb r7, [sl, #0xfc] - bl GetEffectAnimationField0x19 - str r6, [sp] - str r5, [sp, #4] - str r4, [sp, #8] - and r3, r0, #0xff - ldr r1, _022E5FDC ; =0x00000199 - str r5, [sp, #0xc] - mov r0, sb - mov r2, r5 - bl ov29_022E35E4 - ldrb r0, [sl, #6] - cmp r0, #0 - bne _022E5FC8 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022E5FE4 ; =0x00000B92 - mov r0, sb - bl LogMessageByIdWithPopup -_022E5FC8: - add r8, r8, #1 - cmp r8, #0x14 - blt _022E5F44 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E5FDC: .word 0x00000199 -_022E5FE0: .word 0x02353538 -_022E5FE4: .word 0x00000B92 - arm_func_end ov29_022E5F20 - - arm_func_start ov29_022E5FE8 -ov29_022E5FE8: ; 0x022E5FE8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r2, _022E60D4 ; =0x02353538 - mov r6, r0 - ldr r0, [r2] - mov r5, r1 - add r0, r0, #0x1a000 - ldr r4, [r0, #0x22c] - cmp r4, #0 - bne _022E6018 - bl GetLeader - mov r4, r0 -_022E6018: - ldr r0, _022E60D8 ; =0x023511DC - mov r1, r6, lsl #1 - ldrh r1, [r0, r1] - cmp r1, #0x3f00 - beq _022E6034 - mov r0, r4 - bl ov29_022E56A0 -_022E6034: - ldr r0, _022E60DC ; =0x0235122C - ldr r7, [r0, r6, lsl #2] - cmp r7, #0 - blt _022E60CC - cmp r5, #0 - beq _022E6090 - bl ov29_022E0880 - cmp r0, #0 - bne _022E6090 - mov r0, r7 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, r7 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - b _022E60CC -_022E6090: - ldr r0, _022E60E0 ; =0x0235124C - ldr r5, [r0, r6, lsl #2] - mov r0, r5 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, r5 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 -_022E60CC: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E60D4: .word 0x02353538 -_022E60D8: .word 0x023511DC -_022E60DC: .word 0x0235122C -_022E60E0: .word 0x0235124C - arm_func_end ov29_022E5FE8 - - arm_func_start ov29_022E60E4 -ov29_022E60E4: ; 0x022E60E4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x29 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x29 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E60E4 - - arm_func_start ov29_022E6130 -ov29_022E6130: ; 0x022E6130 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6178 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E6178 ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6178: .word 0x000001A9 - arm_func_end ov29_022E6130 - - arm_func_start ov29_022E617C -ov29_022E617C: ; 0x022E617C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E61C4 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E61C4 ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E61C4: .word 0x000001A9 - arm_func_end ov29_022E617C - - arm_func_start ov29_022E61C8 -ov29_022E61C8: ; 0x022E61C8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6210 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E6210 ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6210: .word 0x000001A9 - arm_func_end ov29_022E61C8 - - arm_func_start ov29_022E6214 -ov29_022E6214: ; 0x022E6214 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E625C ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E625C ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E625C: .word 0x000001A9 - arm_func_end ov29_022E6214 - - arm_func_start ov29_022E6260 -ov29_022E6260: ; 0x022E6260 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1a8 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1a8 - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E6260 - - arm_func_start ov29_022E62A8 -ov29_022E62A8: ; 0x022E62A8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x29 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x29 - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E62A8 - - arm_func_start ov29_022E62F0 -ov29_022E62F0: ; 0x022E62F0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x48 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x48 - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E62F0 - - arm_func_start ov29_022E6338 -ov29_022E6338: ; 0x022E6338 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6384 ; =0x000001A6 - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x1a4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6384: .word 0x000001A6 - arm_func_end ov29_022E6338 - - arm_func_start ov29_022E6388 -ov29_022E6388: ; 0x022E6388 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E63D4 ; =0x00000297 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E63D4 ; =0x00000297 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E63D4: .word 0x00000297 - arm_func_end ov29_022E6388 - - arm_func_start ov29_022E63D8 -ov29_022E63D8: ; 0x022E63D8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6420 ; =0x0000018E - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r2, #0 - mov r1, #2 - stmia sp, {r1, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - add r1, r1, #0x18c - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6420: .word 0x0000018E - arm_func_end ov29_022E63D8 - - arm_func_start ov29_022E6424 -ov29_022E6424: ; 0x022E6424 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1b0 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1b0 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - mov r0, #0xa - mov r1, #0x42 - bl ov29_022EA370 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E6424 - - arm_func_start ov29_022E647C -ov29_022E647C: ; 0x022E647C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1a8 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1a8 - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E647C - - arm_func_start ov29_022E64C4 -ov29_022E64C4: ; 0x022E64C4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E650C ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E650C ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E650C: .word 0x000001A9 - arm_func_end ov29_022E64C4 - - arm_func_start ov29_022E6510 -ov29_022E6510: ; 0x022E6510 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6558 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E6558 ; =0x000001A9 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6558: .word 0x000001A9 - arm_func_end ov29_022E6510 - - arm_func_start ov29_022E655C -ov29_022E655C: ; 0x022E655C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E65A4 ; =0x000001AB - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E65A4 ; =0x000001AB - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E65A4: .word 0x000001AB - arm_func_end ov29_022E655C - - arm_func_start ov29_022E65A8 -ov29_022E65A8: ; 0x022E65A8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E65A8 - - arm_func_start ov29_022E65F4 -ov29_022E65F4: ; 0x022E65F4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6640 ; =0x0000011E - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x11c - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6640: .word 0x0000011E - arm_func_end ov29_022E65F4 - - arm_func_start ov29_022E6644 -ov29_022E6644: ; 0x022E6644 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E6690 ; =0x0000011D - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E6690 ; =0x0000011D - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6690: .word 0x0000011D - arm_func_end ov29_022E6644 - - arm_func_start ov29_022E6694 -ov29_022E6694: ; 0x022E6694 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, _022E66C0 ; =0x0000019E - mov r2, #1 - bl ov29_022E37DC - cmp r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0 - mov r1, #9 - bl ov29_022E56F4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E66C0: .word 0x0000019E - arm_func_end ov29_022E6694 - - arm_func_start ov29_022E66C4 -ov29_022E66C4: ; 0x022E66C4 - ldr ip, _022E66D4 ; =ov29_022E37DC - mov r1, #0x36 - mov r2, #1 - bx ip - .align 2, 0 -_022E66D4: .word ov29_022E37DC - arm_func_end ov29_022E66C4 - - arm_func_start ov29_022E66D8 -ov29_022E66D8: ; 0x022E66D8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x15 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x15 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E66D8 - - arm_func_start ov29_022E6724 -ov29_022E6724: ; 0x022E6724 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1b4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1b4 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E6724 - - arm_func_start ov29_022E6770 -ov29_022E6770: ; 0x022E6770 - ldr ip, _022E6780 ; =ov29_022E37DC - mov r1, #0x37 - mov r2, #1 - bx ip - .align 2, 0 -_022E6780: .word ov29_022E37DC - arm_func_end ov29_022E6770 - - arm_func_start ov29_022E6784 -ov29_022E6784: ; 0x022E6784 - ldr ip, _022E6794 ; =ov29_022E37DC - mov r1, #0x29 - mov r2, #1 - bx ip - .align 2, 0 -_022E6794: .word ov29_022E37DC - arm_func_end ov29_022E6784 - - arm_func_start ov29_022E6798 -ov29_022E6798: ; 0x022E6798 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x18 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x18 - mov r2, #1 - str ip, [sp, #0xc] - bl ov29_022E35E4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E6798 - - arm_func_start ov29_022E67E4 -ov29_022E67E4: ; 0x022E67E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r4, r2 - mov r5, #0x200 - bl ov29_022E5ED0 - cmp r0, #0 - beq _022E68AC - mov r0, r7 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r6 - mov r1, r7 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl ov29_022E35E4 - mov r0, r4 - mov r1, #0x42 - bl ov29_022EA370 - mov r4, #0x42 - ldr sb, _022E68B4 ; =0x02353538 - ldr r7, _022E68B8 ; =0x0001A226 - mvn r8, #7 - b _022E6894 -_022E6860: - mov r0, r4 - bl AdvanceFrame - ldr r0, [r6, #0x1c] - add r2, r0, r5 - str r2, [r6, #0x1c] - ldr r0, [sb] - ldr r1, [r6, #0x10] - ldrsh r0, [r0, r7] - sub r1, r1, r2 - add r5, r5, #0x100 - rsb r0, r0, r1, asr #8 - cmp r0, r8 - blt _022E68A0 -_022E6894: - ldr r0, [r6, #0x1c] - cmp r0, #0xc800 - blt _022E6860 -_022E68A0: - mov r0, #0 - strb r0, [r6, #0x20] - bl ov29_022E38E0 -_022E68AC: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E68B4: .word 0x02353538 -_022E68B8: .word 0x0001A226 - arm_func_end ov29_022E67E4 - - arm_func_start ov29_022E68BC -ov29_022E68BC: ; 0x022E68BC - ldr ip, _022E68D0 ; =ov29_022E67E4 - mov r1, r0 - ldr r0, _022E68D4 ; =0x0000013E - mov r2, #5 - bx ip - .align 2, 0 -_022E68D0: .word ov29_022E67E4 -_022E68D4: .word 0x0000013E - arm_func_end ov29_022E68BC - - arm_func_start ov29_022E68D8 -ov29_022E68D8: ; 0x022E68D8 - ldr ip, _022E68EC ; =ov29_022E67E4 - mov r1, r0 - mov r0, #0x1bc - mov r2, #0xe - bx ip - .align 2, 0 -_022E68EC: .word ov29_022E67E4 - arm_func_end ov29_022E68D8 - - arm_func_start ov29_022E68F0 -ov29_022E68F0: ; 0x022E68F0 - ldr ip, _022E6904 ; =ov29_022E67E4 - mov r1, r0 - ldr r0, _022E6908 ; =0x0000013E - mov r2, #5 - bx ip - .align 2, 0 -_022E6904: .word ov29_022E67E4 -_022E6908: .word 0x0000013E - arm_func_end ov29_022E68F0 - - arm_func_start ov29_022E690C -ov29_022E690C: ; 0x022E690C - ldr ip, _022E6920 ; =ov29_022E67E4 - mov r1, r0 - ldr r0, _022E6924 ; =0x0000013E - mov r2, #5 - bx ip - .align 2, 0 -_022E6920: .word ov29_022E67E4 -_022E6924: .word 0x0000013E - arm_func_end ov29_022E690C - - arm_func_start ov29_022E6928 -ov29_022E6928: ; 0x022E6928 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x1c - ldr r3, _022E69F8 ; =0x023511B0 - mov r4, r1 - add r2, sp, #0x10 - mov r5, r0 - mov r1, #6 -_022E6944: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E6944 - ldr r0, _022E69FC ; =0x0000027A - bl GetEffectAnimationField0x19 - mov r3, #2 - mov r1, r4, lsr #0x1f - mov ip, r0 - rsb r0, r1, r4, lsl #29 - add r0, r1, r0, ror #29 - mov r0, r0, lsl #0x10 - str r3, [sp] - mov r2, #0 - add r1, r3, #0x278 - str r2, [sp, #4] - mov r0, r0, asr #0x10 - str r0, [sp, #8] - add r4, sp, #0x10 - mov r0, r5 - and r3, ip, #0xff - str r4, [sp, #0xc] - bl ov29_022E35E4 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mov r6, #0 - mov r4, #0x42 - b _022E69D8 -_022E69B4: - mov r0, r5 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E69E0 - mov r0, r4 - bl AdvanceFrame - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_022E69D8: - cmp r6, #0x64 - blt _022E69B4 -_022E69E0: - cmp r5, #0 - blt _022E69F0 - mov r0, r5 - bl ov10_022BDE50 -_022E69F0: - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022E69F8: .word 0x023511B0 -_022E69FC: .word 0x0000027A - arm_func_end ov29_022E6928 - - arm_func_start ov29_022E6A00 -ov29_022E6A00: ; 0x022E6A00 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x38 - mov r8, r0 - mov r7, r1 - mov r4, r2 - mov r5, #0 - bl GetLeader - mov r6, r0 - mov r0, #0xcc - mov r1, #7 - bl MemAlloc - ldr r1, _022E6BF8 ; =0x0235354C - add r2, r7, #1 - str r0, [r1, #4] - str r8, [r0] - ldr r0, [r1, #4] - mov r2, r2, lsl #2 - str r2, [r0, #8] - ldr r0, [r1, #4] - ldr r3, _022E6BFC ; =0x023511A4 - str r4, [r0, #4] - add r2, sp, #0 - mov r4, r5 - mov r1, #6 -_022E6A60: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E6A60 - b _022E6BDC -_022E6A74: - add r0, sp, #0xc - bl ov10_022BF274 - ldr r0, _022E6BF8 ; =0x0235354C - ldr r2, _022E6C00 ; =0x02351464 - ldr r7, [r0, #4] - mov r0, #0x18 - ldr r3, [r7] - mov r1, #0 - mla r0, r3, r0, r2 - mov r2, r5, lsl #3 - ldrsh r0, [r2, r0] - str r4, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0xc] - ldr r1, [r6, #0xc] - mov r0, #2 - mov r1, r1, asr #8 - strh r1, [sp, #0x18] - ldr r1, [r6, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0x1a] - bl RandIntSafe - ldr r3, [r7] - ldr r2, _022E6C00 ; =0x02351464 - mov r1, #0x18 - mla r1, r3, r1, r2 - add r1, r1, r5, lsl #3 - ldr r2, [r1, #4] - add r1, r7, r4, lsl #2 - add r2, r0, r2, lsl #1 - mov r0, #0xff - str r2, [r1, #0x4c] - bl RandIntSafe - ldr r1, _022E6BF8 ; =0x0235354C - mov r2, r4, lsl #1 - ldr r1, [r1, #4] - add r3, r0, #0x9f - add r1, r1, r4, lsl #2 - add r0, r2, #8 - strh r3, [r1, #0x8c] - bl RandIntSafe - mov r2, r4, lsr #0x1f - rsb r1, r2, r4, lsl #30 - add r2, r2, r1, ror #30 - mov r1, #0x28 - mul r7, r2, r1 - rsb r2, r7, #0x18 - ldr r3, _022E6BF8 ; =0x0235354C - add r2, r2, r0 - ldr r1, [r3, #4] - mov r7, #4 - add r0, r1, r4, lsl #2 - strh r2, [r0, #0x8e] - ldr r1, [r3, #4] - ldr r0, _022E6C04 ; =0x0000FFFF - add r2, r1, r4, lsl #2 - ldrsh r1, [r2, #0x8c] - add r3, sp, #0 - strh r1, [sp, #0x1c] - ldrsh ip, [r2, #0x8e] - add r2, sp, #0x28 - mov r1, #6 - strh ip, [sp, #0x1e] - strb r7, [sp, #0x20] - str r0, [sp, #0x24] -_022E6B78: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E6B78 - add r0, sp, #0xc - mov r1, #0 - bl ov10_022BF2B4 - ldr r1, _022E6BF8 ; =0x0235354C - add r5, r5, #1 - ldr r2, [r1, #4] - cmp r5, #3 - add r2, r2, r4, lsl #2 - str r0, [r2, #0xc] - bge _022E6BD4 - ldr r0, [r1, #4] - ldr r1, _022E6C00 ; =0x02351464 - ldr r2, [r0] - mov r0, #0x18 - mla r0, r2, r0, r1 - mov r1, r5, lsl #3 - ldrsh r0, [r1, r0] - cmp r0, #0 - bne _022E6BD8 -_022E6BD4: - mov r5, #0 -_022E6BD8: - add r4, r4, #1 -_022E6BDC: - ldr r0, _022E6BF8 ; =0x0235354C - ldr r0, [r0, #4] - ldr r0, [r0, #8] - cmp r4, r0 - blt _022E6A74 - add sp, sp, #0x38 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E6BF8: .word 0x0235354C -_022E6BFC: .word 0x023511A4 -_022E6C00: .word 0x02351464 -_022E6C04: .word 0x0000FFFF - arm_func_end ov29_022E6A00 - - arm_func_start ov29_022E6C08 -ov29_022E6C08: ; 0x022E6C08 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - ldr r0, _022E6CDC ; =0x0235354C - mov sl, #0 - ldr r1, [r0, #4] - mov sb, #0 - ldr r0, [r1, #4] - mov r6, #1 - cmp r0, #0 - subne r0, r0, #1 - strne r0, [r1, #4] - movne sb, #1 - mvn r7, #0x9e - mov r8, #0x9f - mov r5, sl - ldr r4, _022E6CDC ; =0x0235354C - b _022E6CC0 -_022E6C4C: - ldr r0, [r4, #4] - add r2, r0, sl, lsl #2 - ldrsh r1, [r2, #0x8c] - ldr r0, [r2, #0x4c] - sub r0, r1, r0 - strh r0, [r2, #0x8c] - ldr r2, [r4, #4] - add r1, r2, sl, lsl #2 - ldrsh r0, [r1, #0x8c] - cmp r0, r7 - bgt _022E6C8C - ldr r0, [r2, #4] - cmp r0, #0 - strgth r8, [r1, #0x8c] - strleh r7, [r1, #0x8c] - b _022E6C90 -_022E6C8C: - mov sb, r6 -_022E6C90: - ldr r2, [r4, #4] - mov r1, r5 - str r5, [sp] - add r0, r2, sl, lsl #2 - ldr r0, [r0, #0xc] - add r2, r2, #0x8c - mov r0, r0, lsl #0x10 - mov r3, r5 - mov r0, r0, asr #0x10 - add r2, r2, sl, lsl #2 - bl ov10_022BF45C - add sl, sl, #1 -_022E6CC0: - ldr r0, [r4, #4] - ldr r0, [r0, #8] - cmp sl, r0 - blt _022E6C4C - mov r0, sb - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022E6CDC: .word 0x0235354C - arm_func_end ov29_022E6C08 - - arm_func_start ov29_022E6CE0 -ov29_022E6CE0: ; 0x022E6CE0 - stmdb sp!, {r3, r4, r5, lr} - ldr r5, _022E6D64 ; =0x0235354C - ldr r0, [r5, #4] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0 - b _022E6D34 -_022E6CFC: - add r0, r1, r4, lsl #2 - ldr r0, [r0, #0xc] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl AnimationHasMoreFrames - cmp r0, #0 - beq _022E6D30 - ldr r0, [r5, #4] - add r0, r0, r4, lsl #2 - ldr r0, [r0, #0xc] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BDE50 -_022E6D30: - add r4, r4, #1 -_022E6D34: - ldr r1, [r5, #4] - ldr r0, [r1, #8] - cmp r4, r0 - blt _022E6CFC - bl ov10_022BDC68 - ldr r0, _022E6D64 ; =0x0235354C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _022E6D64 ; =0x0235354C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E6D64: .word 0x0235354C - arm_func_end ov29_022E6CE0 - - arm_func_start ov29_022E6D68 -ov29_022E6D68: ; 0x022E6D68 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _022E6DCC ; =0x02353538 - mov r4, #0 - ldr r3, [r3] - add r3, r3, #0x218 - add lr, r3, #0x400 - mvn r3, #0 - b _022E6DC0 -_022E6D88: - ldr ip, [lr, r4, lsl #4] - add r5, lr, r4, lsl #4 - cmp ip, r3 - bne _022E6DBC - str r0, [r5] - str r1, [r5, #0xc] - str r2, [r5, #4] - ldr r0, [r5] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BEFD8 - strb r0, [r5, #8] - ldmia sp!, {r3, r4, r5, pc} -_022E6DBC: - add r4, r4, #1 -_022E6DC0: - cmp r4, #3 - blt _022E6D88 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E6DCC: .word 0x02353538 - arm_func_end ov29_022E6D68 - - arm_func_start ov29_022E6DD0 -ov29_022E6DD0: ; 0x022E6DD0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, #0 - ldr r4, _022E6E3C ; =0x02353538 - mov r7, sb - mov r8, #1 - mvn r6, #0 - mov r5, sb -_022E6DEC: - ldr r0, [r4] - add r0, r0, #0x218 - add r0, r0, #0x400 - ldr r1, [r0, sb, lsl #4] - add sl, r0, sb, lsl #4 - cmp r1, #0 - movge r0, r8 - movlt r0, r7 - tst r0, #0xff - beq _022E6E2C - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - bl AnimationHasMoreFrames - cmp r0, #0 - streq r6, [sl] - streq r5, [sl, #0xc] -_022E6E2C: - add sb, sb, #1 - cmp sb, #3 - blt _022E6DEC - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022E6E3C: .word 0x02353538 - arm_func_end ov29_022E6DD0 - - arm_func_start ov29_022E6E40 -ov29_022E6E40: ; 0x022E6E40 - mov ip, #0 - ldr r1, _022E6E7C ; =0x02353538 - mvn r3, #0 - mov r2, ip -_022E6E50: - ldr r0, [r1] - add r0, r0, #0x218 - add r0, r0, #0x400 - str r3, [r0, ip, lsl #4] - add r0, r0, ip, lsl #4 - str r2, [r0, #4] - arm_func_end ov29_022E6E40 - - arm_func_start ov29_022E6E68 -ov29_022E6E68: ; 0x022E6E68 - add ip, ip, #1 - str r2, [r0, #0xc] - cmp ip, #3 - blt _022E6E50 - bx lr - .align 2, 0 -_022E6E7C: .word 0x02353538 - arm_func_end ov29_022E6E68 - - arm_func_start ov29_022E6E80 -ov29_022E6E80: ; 0x022E6E80 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldr r2, _022E6F8C ; =0x0235118C - mov sl, r0 - ldrh r5, [r2, #4] - ldrh r4, [r2, #6] - ldrh r3, [r2] - ldrh r0, [r2, #2] - strh r5, [sp, #0x10] - strh r4, [sp, #0x12] - strh r0, [sp, #0xe] - strh r3, [sp, #0xc] - mvn r0, #0 - ldrh r6, [sp, #0x10] - ldrh r5, [sp, #0x12] - ldrh r4, [sp, #0xc] - ldrh fp, [sp, #0xe] - str r1, [sp, #4] - mov r7, #0 - str r0, [sp, #8] -_022E6ED0: - ldr r0, _022E6F90 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x218 - add r0, r0, #0x400 - add r8, r0, r7, lsl #4 - ldr r0, [r0, r7, lsl #4] - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - tst r0, #0xff - beq _022E6F78 - ldr r0, [r8, #0xc] - cmp r0, sl - bne _022E6F78 - strh r6, [sp, #0x18] - strh r5, [sp, #0x1a] - ldr r0, [sl, #0xc] - mov r0, r0, asr #8 - strh r0, [sp, #0x18] - ldr r0, [sl, #0x10] - mov r0, r0, asr #8 - strh r0, [sp, #0x1a] - strh r4, [sp, #0x14] - strh fp, [sp, #0x16] - ldrsb r1, [r8, #8] - ldr r0, [sp, #8] - ldr sb, [sl, #0xb4] - cmp r1, r0 - beq _022E6F54 - and r2, r1, #0xff - add r0, sp, #0x14 - add r1, sl, #0x2c - bl sub_0201CF90 -_022E6F54: - ldrb r0, [sb, #0x4c] - ldr r3, [sp, #4] - add r1, sp, #0x18 - str r0, [sp] - ldr r0, [r8] - add r2, sp, #0x14 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BFB6C -_022E6F78: - add r7, r7, #1 - cmp r7, #3 - blt _022E6ED0 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E6F8C: .word 0x0235118C -_022E6F90: .word 0x02353538 - arm_func_end ov29_022E6E80 - - arm_func_start ov29_022E6F94 -ov29_022E6F94: ; 0x022E6F94 - ldr r1, _022E6FB8 ; =0x02353538 - mov r2, #0xff - ldr r0, [r1] - add r0, r0, #0x28000 - strb r2, [r0, #0x6b0] - ldr r0, [r1] - add r0, r0, #0x28000 - strb r2, [r0, #0x6b1] - bx lr - .align 2, 0 -_022E6FB8: .word 0x02353538 - arm_func_end ov29_022E6F94 - - arm_func_start ov29_022E6FBC -ov29_022E6FBC: ; 0x022E6FBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - ldr r3, _022E79E4 ; =0x02353538 - ldr r4, _022E79E8 ; =0x02351584 - ldr r6, [r3] - ldr r7, [r4, #0xc] - ldr r8, [r4, #8] - add r3, r6, #0x4a - str r1, [sp] - add r4, r6, #0x348 - mov r5, r0 - add r1, r4, #0x400 - add r0, r3, #0x700 - mov r4, r2 - str r8, [sp, #0x48] - str r7, [sp, #0x4c] - bl DungeonFloorToGroupFloor - ldr r1, _022E79E4 ; =0x02353538 - ldr r3, [r1] - ldrb r2, [r3, #0x74a] - add r0, r3, #0x28000 - strb r2, [r0, #0x6b0] - ldrb r2, [r3, #0x74b] - strb r2, [r0, #0x6b1] - ldr r0, [r1] - ldrb r0, [r0, #0x748] - bl GetNbPrecedingFloors - ldr r1, _022E79E4 ; =0x02353538 - mov r6, #0 - ldr r2, [r1] - strh r0, [r2, #0x20] - ldr r0, [r1] - strh r6, [r0, #0x1e] - ldr r3, [r1] - ldrsh r2, [r3, #0x20] - ldrsh r0, [r3, #0x1e] - add r0, r2, r0 - strh r0, [r3, #0x22] - ldr r0, [r1] - str r6, [sp, #0x28] - ldr r0, [r0, #0x7cc] - mov r2, #0xf - cmp r0, #1 - bne _022E707C - ldr r1, _022E79EC ; =0x02351594 - add r0, sp, #0x48 - bl LoadFileFromRom__02008C3C - b _022E709C -_022E707C: - cmp r0, #2 - add r0, sp, #0x48 - bne _022E7094 - ldr r1, _022E79F0 ; =0x023515B0 - bl LoadFileFromRom__02008C3C - b _022E709C -_022E7094: - ldr r1, _022E79F4 ; =0x023515CC - bl LoadFileFromRom__02008C3C -_022E709C: - mov r0, #0x65 - bl AdvanceFrame - ldr r1, [sp, #0x48] - add r0, sp, #0x28 - bl HandleSir0Translation - mov r0, #0x65 - ldr sb, [sp, #0x28] - bl AdvanceFrame - ldr r0, _022E79E4 ; =0x02353538 - ldr r6, [sb] - ldr r7, [r0] - mov r1, #0x12 - add r0, r7, #0x28000 - ldrb r3, [r0, #0x6b0] - ldrb r2, [r0, #0x6b1] - ldrb r0, [r7, #0x748] - ldr r3, [r6, r3, lsl #2] - mla r6, r2, r1, r3 - bl GetNbFloorsPlusOne - ldr r2, _022E79E4 ; =0x02353538 - ldr r1, [r2] - add r1, r1, #0x2c000 - strb r0, [r1, #0xaf4] - ldr r0, [r2] - ldrb r0, [r0, #0x748] - cmp r0, #0xae - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _022E7138 - bl ov29_0234914C - cmp r0, #0 - bne _022E7138 - ldr r0, _022E79E4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x2c000 - ldrb r1, [r0, #0xaf4] - sub r1, r1, #1 - strb r1, [r0, #0xaf4] -_022E7138: - ldr r0, _022E79E4 ; =0x02353538 - ldrsh r2, [r6] - ldr r3, [sb, #4] - ldr r1, [r0] - add r7, r3, r2, lsl #5 - ldr r0, _022E79F8 ; =0x000286B2 - mov r2, #0x10 - add r3, r1, r0 -_022E7158: - ldrh r0, [r7], #2 - subs r2, r2, #1 - strh r0, [r3], #2 - bne _022E7158 - ldr r2, _022E79FC ; =0x000286CE - ldr r3, _022E7A00 ; =0x0002CB08 - ldrsh r7, [r1, r2] - mov r0, #0 - strh r7, [r1, r3] - rsb r1, r2, #0x55000 - ldr r2, _022E79E4 ; =0x02353538 -_022E7184: - ldrsh r7, [r6, #4] - ldr r8, [sb, #0x10] - ldr r3, [r2] - ldr r8, [r8, r7, lsl #2] - mov r7, r0, lsl #1 - ldrh r7, [r8, r7] - add r3, r3, r0, lsl #1 - add r0, r0, #1 - strh r7, [r3, r1] - cmp r0, #0x19 - blt _022E7184 - cmp r4, #0 - beq _022E71C0 - mov r0, r5 - blx r4 -_022E71C0: - cmp r5, #0 - bne _022E7674 - ldr r0, _022E79E8 ; =0x02351584 - mov r4, #0 - ldrh r2, [r0] - ldrh r1, [r0, #2] - mov r0, r4 - mov r8, r4 - str r4, [sp, #0xc] - str r4, [sp, #4] - strh r2, [sp, #0x44] - strh r1, [sp, #0x46] - mov fp, #1 - bl DungeonRngSetSecondary - bl IsDestinationFloorWithMonster - str r0, [sp, #0x10] - ldr r3, _022E7A04 ; =0x0000FFFF - ldr r1, _022E79E4 ; =0x02353538 - ldr r0, _022E7A08 ; =0x0002C9EA - mov r5, r4 -_022E7210: - ldr r2, [r1] - add r2, r2, r5, lsl #1 - strh r3, [r2, r0] - add r5, r5, #1 - cmp r5, #0x10 - blt _022E7210 - bl IsItemForSpecialSpawnInBag - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #4] - ldr r0, _022E79E4 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsDojoDungeon - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #4] - ldr r0, _022E7A0C ; =0x00000906 - mov r1, #0xf - bl MemAlloc - str r0, [sp, #0x18] - bl GetNbRecruited - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - mov r7, r0 - ldr r0, _022E7A10 ; =0x00000229 - mov sl, #0 - sub r0, r0, #0xaa - str r0, [sp, #0x20] - ldr r0, _022E7A10 ; =0x00000229 - rsb r0, r0, #0x600 - str r0, [sp, #0x24] -_022E7294: - mov r0, #0 - str r0, [sp, #8] - ldrsh r0, [r6, #2] - ldr r1, [sb, #0xc] - ldr r0, [r1, r0, lsl #2] - add r0, r0, sl, lsl #3 - bl GetMonsterIdFromSpawnEntry - movs r5, r0 - beq _022E73B0 - ldr r1, _022E7A10 ; =0x00000229 - cmp r5, r1 - streqh sl, [sp, #0x44] - beq _022E7398 - ldr r1, [sp, #0x20] - cmp r5, r1 - ldrne r1, [sp, #0x24] - cmpne r5, r1 - streqh sl, [sp, #0x46] - beq _022E7398 - bl CanMonsterSpawn - cmp r0, #0 - addeq sl, sl, #1 - beq _022E7294 - ldr r0, _022E79E4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x28000 - ldrb r0, [r0, #0x6c4] - bl ov29_022E0864 - cmp r0, #0 - bne _022E7398 - mov r0, r5 - bl ov29_022FB5EC - cmp r0, #0 - beq _022E7398 - mov r0, r5 - bl NeedsItemToSpawn - cmp r0, #0 - beq _022E7390 - ldr r0, _022E79E4 ; =0x02353538 - mov r1, r5 - ldr r0, [r0] - add r0, r0, #0x7d0 - bl ov29_0231B3FC - cmp r0, #0 - ldreq r0, [sp, #0x10] - cmpeq r0, #0 - ldreq r0, [sp, #0x18] - moveq r1, r5, lsl #1 - ldreqsh r0, [r0, r1] - cmpeq r0, #0 - bne _022E7398 - ldr r0, [sp, #4] - cmp r0, #0 - beq _022E7398 - ldrsh r0, [r6, #2] - ldr r1, [sb, #0xc] - mov r8, r5 - ldr r0, [r1, r0, lsl #2] - add r0, r0, sl, lsl #3 - bl GetMonsterLevelFromSpawnEntry - and r0, r0, #0xff - str r0, [sp, #0xc] - b _022E7398 -_022E7390: - mov r0, #1 - str r0, [sp, #8] -_022E7398: - ldr r0, [sp, #8] - cmp r0, #0 - strne sl, [r7, r4, lsl #2] - addne r4, r4, #1 - add sl, sl, #1 - b _022E7294 -_022E73B0: - bl FloorNumberIsEven - cmp r0, #0 - ldreq r0, _022E79E4 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x700 - streqh r8, [r0, #0xa8] - beq _022E73E4 - mov r0, r8 - bl GetSecondFormIfValid - ldr r1, _022E79E4 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x700 - strh r0, [r1, #0xa8] -_022E73E4: - ldr r1, _022E79E4 ; =0x02353538 - mov r0, #0x10 - ldr r2, [r1] - ldr r1, [sp, #0xc] - strb r1, [r2, #0x7aa] - bl DungeonRandInt - add r0, r0, #1 - str r0, [sp, #0x14] - sub r0, r4, #1 - mov sl, #0 - str r0, [sp, #0x1c] - b _022E7448 -_022E7414: - mov r5, #0 - b _022E7438 -_022E741C: - mov r0, r4 - bl DungeonRandInt - ldr r2, [r7, r5, lsl #2] - ldr r1, [r7, r0, lsl #2] - str r1, [r7, r5, lsl #2] - str r2, [r7, r0, lsl #2] - add r5, r5, #1 -_022E7438: - ldr r0, [sp, #0x1c] - cmp r5, r0 - blt _022E741C - add sl, sl, #1 -_022E7448: - ldr r0, [sp, #0x14] - cmp sl, r0 - blt _022E7414 - ldr r0, [sp] - cmp r0, #0 - movne r4, #0 - bne _022E746C - cmp r4, #0xe - movge r4, #0xe -_022E746C: - ldr r0, _022E7A10 ; =0x00000229 - bl GetSpriteFileSize - add r5, r0, #0 - ldr r0, _022E7A14 ; =0x0000017F - bl GetSpriteFileSize - ldr r1, [sp, #0x10] - add r5, r5, r0 - cmp r1, #0 - beq _022E749C - bl ov29_02349378 - add r5, r5, r0 - b _022E74B0 -_022E749C: - cmp r8, #0 - beq _022E74B0 - mov r0, r8 - bl GetSpriteFileSize - add r5, r5, r0 -_022E74B0: - mov r8, #0 - b _022E7528 -_022E74B8: - ldr r0, _022E79E4 ; =0x02353538 - ldr r2, [r7, r8, lsl #2] - ldr r0, [r0] - add r1, r0, r8, lsl #1 - ldr r0, _022E7A08 ; =0x0002C9EA - strh r2, [r1, r0] - ldrsh r1, [r6, #2] - ldr r2, [sb, #0xc] - ldr r0, [r7, r8, lsl #2] - ldr r1, [r2, r1, lsl #2] - add r2, sp, #0x3c - add r3, r1, r0, lsl #3 - mov r1, #4 -_022E74EC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E74EC - add r0, sp, #0x3c - bl GetMonsterIdFromSpawnEntry - mov sl, r0 - add r0, sp, #0x3c - bl GetMonsterLevelFromSpawnEntry - cmp fp, r0 - movlt fp, r0 - mov r0, sl - bl ov29_022F7068 - add r5, r5, r0 - add r8, r8, #1 -_022E7528: - cmp r8, r4 - blt _022E74B8 - ldr r0, _022E79E4 ; =0x02353538 - ldr r1, _022E7A18 ; =0x0002C9E6 - ldr r0, [r0] - cmp r5, #0x58000 - strh fp, [r0, r1] - bls _022E75C4 - sub sl, r4, #1 - mov r8, #0 - add fp, r1, #4 - b _022E75B8 -_022E7558: - ldrsh r1, [r6, #2] - ldr r2, [sb, #0xc] - ldr r0, [r7, sl, lsl #2] - ldr r1, [r2, r1, lsl #2] - add r2, sp, #0x34 - add r3, r1, r0, lsl #3 - mov r1, #4 -_022E7574: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E7574 - add r0, sp, #0x34 - bl GetMonsterIdFromSpawnEntry - bl ov29_022F7068 - sub r5, r5, r0 - ldr r1, _022E79E4 ; =0x02353538 - ldr r0, _022E7A04 ; =0x0000FFFF - ldr r1, [r1] - cmp r5, #0x58000 - add r1, r1, sl, lsl #1 - strh r0, [r1, fp] - add r8, r8, #1 - blo _022E75C0 - sub sl, sl, #1 -_022E75B8: - cmp sl, #0 - bge _022E7558 -_022E75C0: - sub r4, r4, r8 -_022E75C4: - ldrh r2, [sp, #0x44] - ldr r0, _022E7A04 ; =0x0000FFFF - cmp r2, r0 - beq _022E75EC - ldr r1, _022E79E4 ; =0x02353538 - ldr r0, _022E7A08 ; =0x0002C9EA - ldr r1, [r1] - add r1, r1, r4, lsl #1 - strh r2, [r1, r0] - add r4, r4, #1 -_022E75EC: - ldrh r2, [sp, #0x46] - ldr r0, _022E7A04 ; =0x0000FFFF - ldr r3, _022E79E4 ; =0x02353538 - cmp r2, r0 - ldrne r1, _022E79E4 ; =0x02353538 - ldrne r0, _022E7A08 ; =0x0002C9EA - ldrne r1, [r1] - addne r1, r1, r4, lsl #1 - strneh r2, [r1, r0] - ldr r2, _022E7A08 ; =0x0002C9EA - mov r1, #0 -_022E7618: - mov r0, r1 - b _022E764C -_022E7620: - ldr r4, [r3] - add r5, r4, r0, lsl #1 - add r4, r4, r1, lsl #1 - ldrh r8, [r5, r2] - ldrh r5, [r4, r2] - cmp r5, r8 - strhih r8, [r4, r2] - ldrhi r4, [r3] - addhi r4, r4, r0, lsl #1 - strhih r5, [r4, r2] - add r0, r0, #1 -_022E764C: - cmp r0, #0x10 - blt _022E7620 - add r1, r1, #1 - cmp r1, #0xf - blt _022E7618 - ldr r0, [sp, #0x18] - bl MemFree - mov r0, r7 - bl MemFree - bl DungeonRngSetPrimary -_022E7674: - mov r4, #0 - bl FloorNumberIsEven - cmp r0, #0 - ldr r0, _022E79E4 ; =0x02353538 - mov r5, #0 - ldr r0, [r0] - movne r4, #1 - ldrb r0, [r0, #0x748] - mov r8, r5 - cmp r0, #0x3d - moveq r4, #1 - bl IsDestinationFloorWithFixedRoom - cmp r0, #0 - beq _022E76D0 - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - bne _022E76CC - mov r0, #0xa - bl IsCurrentMissionType - cmp r0, #0 - beq _022E76D0 -_022E76CC: - mov r5, #1 -_022E76D0: - mov sl, #0 - b _022E77CC -_022E76D8: - ldr r1, _022E79E4 ; =0x02353538 - ldr r0, _022E7A08 ; =0x0002C9EA - ldr r2, [r1] - ldr r1, _022E7A04 ; =0x0000FFFF - add r2, r2, sl, lsl #1 - ldrh r3, [r2, r0] - cmp r3, r1 - beq _022E77D4 - ldrsh r0, [r6, #2] - ldr r1, [sb, #0xc] - add r2, sp, #0x2c - ldr r0, [r1, r0, lsl #2] - mov r1, #4 - add r3, r0, r3, lsl #3 -_022E7710: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E7710 - add r0, sp, #0x2c - bl GetMonsterIdFromSpawnEntry - cmp r5, #0 - ldrne r2, _022E7A10 ; =0x00000229 - cmpne r0, r2 - subne r1, r2, #0xaa - cmpne r0, r1 - rsbne r1, r2, #0x600 - cmpne r0, r1 - bne _022E77C8 - ldr r1, _022E79E4 ; =0x02353538 - add r7, sp, #0x2c - ldr r1, [r1] - mov r2, #4 - add r1, r1, r8, lsl #3 - add r1, r1, #0x164 - add r3, r1, #0x2c800 -_022E7764: - ldrh r1, [r7], #2 - subs r2, r2, #1 - strh r1, [r3], #2 - bne _022E7764 - cmp r4, #0 - ldrne r1, _022E7A10 ; =0x00000229 - cmpne r0, r1 - beq _022E77C4 - cmp r0, #0x258 - bge _022E77C4 - add r7, r0, #0x258 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetMonsterGenderVeneer - cmp r0, #2 - bne _022E77C4 - ldr r1, _022E79E4 ; =0x02353538 - mov r0, r7, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - add r0, r2, #0x164 - add r0, r0, #0x2c800 - add r0, r0, r8, lsl #3 - bl SetMonsterId -_022E77C4: - add r8, r8, #1 -_022E77C8: - add sl, sl, #1 -_022E77CC: - cmp sl, #0x10 - blt _022E76D8 -_022E77D4: - bl ov29_023361D4 - cmp r0, #0 - beq _022E782C - ldr r0, _022E79E4 ; =0x02353538 - ldr r3, _022E7A18 ; =0x0002C9E6 - ldr r4, [r0] - rsb r1, r8, #0x10 - add r2, r4, #0x4000 - add r0, r4, #0x164 - add r0, r0, #0x2c800 - ldrb r2, [r2, #0xda] - ldrsh r3, [r4, r3] - add r0, r0, r8, lsl #3 - bl ov29_02343E20 - ldr r2, _022E79E4 ; =0x02353538 - ldr r1, [r2] - add r1, r1, #0x12000 - str r0, [r1, #0xb20] - ldr r0, [r2] - add r0, r0, #0x12000 - ldr r0, [r0, #0xb20] - add r8, r8, r0 -_022E782C: - ldr r4, _022E79E4 ; =0x02353538 - ldr r0, _022E7A1C ; =0x0002C9E4 - ldr r1, [r4] - mov r5, #0 - strh r8, [r1, r0] - b _022E7860 -_022E7844: - ldr r0, [r4] - mov r1, r5 - add r0, r0, #0x164 - add r0, r0, #0x2c800 - add r0, r0, r8, lsl #3 - bl SetMonsterId - add r8, r8, #1 -_022E7860: - cmp r8, #0x10 - blt _022E7844 - mov r0, #0xb10 - mov r1, #0 - bl MemAlloc - ldr r2, _022E79E4 ; =0x02353538 - ldr r1, _022E7A20 ; =0x0002C9E8 - ldr r2, [r2] - mov r4, #0 - strh r4, [r2, r1] -_022E7888: - add r1, r6, r4, lsl #1 - ldrsh r2, [r1, #6] - ldr r5, [sb, #8] - mov r1, #0 - ldr r2, [r5, r2, lsl #2] - ldr r5, _022E7A24 ; =0xFFFF8AD0 - mov r3, r1 - mov sl, r1 - rsb r7, r5, #0 - b _022E7908 -_022E78B0: - mov r8, r1, lsl #1 - ldrh fp, [r2, r8] - cmp fp, r5, lsr #16 - moveq r8, r3, lsl #1 - streqh fp, [r0, r8] - addeq r3, r3, #1 - beq _022E7904 - cmp fp, r7 - blo _022E78F8 - add fp, fp, r5 - b _022E78EC -_022E78DC: - mov r8, r3, lsl #1 - strh sl, [r0, r8] - add r3, r3, #1 - sub fp, fp, #1 -_022E78EC: - cmp fp, #0 - bne _022E78DC - b _022E7904 -_022E78F8: - mov r8, r3, lsl #1 - strh fp, [r0, r8] - add r3, r3, #1 -_022E7904: - add r1, r1, #1 -_022E7908: - cmp r3, #0x17c - blt _022E78B0 - mov r1, #0xb10 - mul r1, r4, r1 - mov r2, #0 - ldr r7, _022E79E4 ; =0x02353538 - ldr r5, _022E7A28 ; =0x000286D2 - mov r3, r2 -_022E7928: - mov sl, r2, lsl #1 - ldr r8, [r7] - ldrh sl, [r0, sl] - add r8, r1, r8 - add r8, r8, r2, lsl #1 - add r3, r3, #1 - strh sl, [r8, r5] - cmp r3, #0x10 - add r2, r2, #1 - blt _022E7928 - ldr r7, _022E79E4 ; =0x02353538 - ldr r5, _022E7A2C ; =0x000286F2 - mov r3, #0 -_022E795C: - mov sl, r2, lsl #1 - ldr r8, [r7] - ldrh sl, [r0, sl] - add r8, r1, r8 - add r8, r8, r3, lsl #1 - add r3, r3, #1 - strh sl, [r8, r5] - cmp r3, #0x16c - add r2, r2, #1 - blt _022E795C - add r4, r4, #1 - cmp r4, #6 - blt _022E7888 - mov r8, #0 - ldr r2, _022E7A2C ; =0x000286F2 - ldr r4, _022E79E4 ; =0x02353538 - ldr r1, _022E7A20 ; =0x0002C9E8 - ldr r3, _022E7A04 ; =0x0000FFFF - mov r6, r8 -_022E79A8: - ldr r5, [r4] - add r7, r5, r8, lsl #1 - ldrh r5, [r7, r2] - cmp r5, r3 - streqh r6, [r7, r2] - ldreq r5, [r4] - streqh r8, [r5, r1] - add r8, r8, #1 - cmp r8, #0x16c - blt _022E79A8 - bl MemFree - add r0, sp, #0x48 - bl UnloadFile - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E79E4: .word 0x02353538 -_022E79E8: .word 0x02351584 -_022E79EC: .word 0x02351594 -_022E79F0: .word 0x023515B0 -_022E79F4: .word 0x023515CC -_022E79F8: .word 0x000286B2 -_022E79FC: .word 0x000286CE -_022E7A00: .word 0x0002CB08 -_022E7A04: .word 0x0000FFFF -_022E7A08: .word 0x0002C9EA -_022E7A0C: .word 0x00000906 -_022E7A10: .word 0x00000229 -_022E7A14: .word 0x0000017F -_022E7A18: .word 0x0002C9E6 -_022E7A1C: .word 0x0002C9E4 -_022E7A20: .word 0x0002C9E8 -_022E7A24: .word 0xFFFF8AD0 -_022E7A28: .word 0x000286D2 -_022E7A2C: .word 0x000286F2 - arm_func_end ov29_022E6FBC - - arm_func_start ov29_022E7A30 -ov29_022E7A30: ; 0x022E7A30 - stmdb sp!, {r3, lr} - ldr r0, _022E7A80 ; =0x00002710 - bl DungeonRandInt - ldr r1, _022E7A84 ; =0x02353538 - mov r3, #0 - ldr ip, [r1] - ldr r1, _022E7A88 ; =0x0002C932 - b _022E7A70 -_022E7A50: - add r2, ip, r3, lsl #1 - ldrh r2, [r2, r1] - cmp r2, #0 - beq _022E7A6C - cmp r2, r0 - andge r0, r3, #0xff - ldmgeia sp!, {r3, pc} -_022E7A6C: - add r3, r3, #1 -_022E7A70: - cmp r3, #0x19 - blt _022E7A50 - mov r0, #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7A80: .word 0x00002710 -_022E7A84: .word 0x02353538 -_022E7A88: .word 0x0002C932 - arm_func_end ov29_022E7A30 - - arm_func_start ov29_022E7A8C -ov29_022E7A8C: ; 0x022E7A8C - stmdb sp!, {r4, lr} - mov r4, #0 - b _022E7AB0 -_022E7A98: - bl ov29_022E7A30 - cmp r0, #0 - cmpne r0, #0x17 - cmpne r0, #0x11 - bne _022E7AB8 - add r4, r4, #1 -_022E7AB0: - cmp r4, #0x1e - blt _022E7A98 -_022E7AB8: - cmp r4, #0x1e - moveq r0, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E7A8C - - arm_func_start ov29_022E7AC4 -ov29_022E7AC4: ; 0x022E7AC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - ldr r0, _022E7BA8 ; =0x00002710 - bl DungeonRandInt - mov r1, #0xb10 - mul r5, r4, r1 - ldr r2, _022E7BAC ; =0x02353538 - mov r4, #0x10 - ldr r1, [r2] - mov r3, #0 - add r6, r1, r5 - ldr r1, _022E7BB0 ; =0x000286D2 - b _022E7B18 -_022E7AF8: - add r2, r6, r3, lsl #1 - ldrsh r2, [r2, r1] - cmp r2, #0 - beq _022E7B14 - cmp r2, r0 - andge r4, r3, #0xff - bge _022E7B20 -_022E7B14: - add r3, r3, #1 -_022E7B18: - cmp r3, #0x10 - blt _022E7AF8 -_022E7B20: - cmp r4, #0x10 - moveq r0, #0xb7 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _022E7BA8 ; =0x00002710 - bl DungeonRandInt - mov r6, r0 - mov r7, #0 - ldr sb, _022E7BAC ; =0x02353538 - ldr r8, _022E7BB4 ; =0x000286F2 - b _022E7B98 -_022E7B48: - ldr r0, [sb] - add r0, r5, r0 - add r0, r0, r7, lsl #1 - ldrsh r0, [r0, r8] - cmp r0, #0 - beq _022E7B94 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemCategoryVeneer - cmp r4, r0 - bne _022E7B94 - ldr r0, [sb] - add r0, r5, r0 - add r0, r0, r7, lsl #1 - ldrsh r0, [r0, r8] - cmp r0, r6 - movge r0, r7, lsl #0x10 - movge r0, r0, asr #0x10 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022E7B94: - add r7, r7, #1 -_022E7B98: - cmp r7, #0x16c - blt _022E7B48 - mov r0, #0xb7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022E7BA8: .word 0x00002710 -_022E7BAC: .word 0x02353538 -_022E7BB0: .word 0x000286D2 -_022E7BB4: .word 0x000286F2 - arm_func_end ov29_022E7AC4 - - arm_func_start ov29_022E7BB8 -ov29_022E7BB8: ; 0x022E7BB8 - stmdb sp!, {r3, lr} - mov r0, #4 - bl ov29_022E7AC4 - cmp r0, #0xb7 - moveq r0, #0x46 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E7BB8 - - arm_func_start ov29_022E7BD0 -ov29_022E7BD0: ; 0x022E7BD0 - stmdb sp!, {r3, lr} - mov r0, #5 - bl ov29_022E7AC4 - cmp r0, #0xb7 - moveq r0, #0x46 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E7BD0 - - arm_func_start ov29_022E7BE8 -ov29_022E7BE8: ; 0x022E7BE8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 - ldr r7, _022E7C5C ; =0x02353538 - b _022E7C4C -_022E7C00: - ldr r0, [r7] - add r0, r0, #0x164 - add r0, r0, #0x2c800 - add r0, r0, r4, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r0, #0 - beq _022E7C54 - ldr r0, [r7] - add r2, r6, r5, lsl #3 - add r0, r0, r4, lsl #3 - add r0, r0, #0x164 - add r3, r0, #0x2c800 - mov r1, #4 -_022E7C34: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E7C34 - add r5, r5, #1 - add r4, r4, #1 -_022E7C4C: - cmp r4, #0x10 - blt _022E7C00 -_022E7C54: - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E7C5C: .word 0x02353538 - arm_func_end ov29_022E7BE8 - - arm_func_start ov29_022E7C60 -ov29_022E7C60: ; 0x022E7C60 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 - b _022E7CE4 -_022E7C74: - ldr r0, _022E7CF4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x164 - add r0, r0, #0x2c800 - add r0, r0, r4, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r0, #0 - beq _022E7CEC - bl GetSpriteSize - cmp r0, #6 - bhi _022E7CE0 - ldr r1, _022E7CF4 ; =0x02353538 - ldr r0, _022E7CF8 ; =0x0002C966 - ldr r1, [r1] - add r1, r1, r4, lsl #3 - ldrsh r0, [r1, r0] - cmp r0, #0 - beq _022E7CE0 - add r0, r1, #0x164 - add r3, r0, #0x2c800 - add r2, r6, r5, lsl #3 - mov r1, #4 -_022E7CCC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022E7CCC - add r5, r5, #1 -_022E7CE0: - add r4, r4, #1 -_022E7CE4: - cmp r4, #0x10 - blt _022E7C74 -_022E7CEC: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E7CF4: .word 0x02353538 -_022E7CF8: .word 0x0002C966 - arm_func_end ov29_022E7C60 - - arm_func_start ov29_022E7CFC -ov29_022E7CFC: ; 0x022E7CFC - stmdb sp!, {r3, lr} - ldr r1, _022E7D48 ; =0x02353538 - ldr r0, [r1] - add r0, r0, #0x3000 - ldrb r2, [r0, #0xe28] - cmp r2, #0 - ldmneia sp!, {r3, pc} - mov r2, #1 - strb r2, [r0, #0xe28] - ldr r0, [r1] - mov r1, #0 - add r0, r0, #0x174 - add r0, r0, #0x3800 - bl ov29_022E7BE8 - ldr r1, _022E7D48 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x3000 - str r0, [r1, #0xe20] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7D48: .word 0x02353538 - arm_func_end ov29_022E7CFC - - arm_func_start IsOnMonsterSpawnList -IsOnMonsterSpawnList: ; 0x022E7D4C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #0 - ldr r4, _022E7D9C ; =0x02353538 - b _022E7D8C -_022E7D60: - ldr r0, [r4] - add r0, r0, #0x164 - add r0, r0, #0x2c800 - add r0, r0, r5, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r0, #0 - beq _022E7D94 - cmp r0, r6 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 -_022E7D8C: - cmp r5, #0x10 - blt _022E7D60 -_022E7D94: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E7D9C: .word 0x02353538 - arm_func_end IsOnMonsterSpawnList - - arm_func_start GetMonsterIdToSpawn -GetMonsterIdToSpawn: ; 0x022E7DA0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _022E7E50 ; =0x00002710 - bl DungeonRandInt - ldr r1, _022E7E54 ; =0x02353538 - mov ip, #0 - ldr r1, [r1] - add r2, r1, #0x3000 - ldr lr, [r2, #0xe20] - add r3, r1, r4, lsl #1 - b _022E7E00 -_022E7DCC: - add r2, r3, ip, lsl #3 - add r2, r2, #0x3900 - ldrsh r2, [r2, #0x76] - cmp r2, #0 - beq _022E7DFC - cmp r2, r0 - blt _022E7DFC - add r0, r1, #0x174 - add r0, r0, #0x3800 - add r0, r0, ip, lsl #3 - bl GetMonsterIdFromSpawnEntry - ldmia sp!, {r4, pc} -_022E7DFC: - add ip, ip, #1 -_022E7E00: - cmp ip, lr - blt _022E7DCC - mov r3, #0 - add r2, r1, r4, lsl #1 - b _022E7E40 -_022E7E14: - add r0, r2, r3, lsl #3 - add r0, r0, #0x3900 - ldrsh r0, [r0, #0x76] - cmp r0, #0 - beq _022E7E3C - add r0, r1, #0x174 - add r0, r0, #0x3800 - add r0, r0, r3, lsl #3 - bl GetMonsterIdFromSpawnEntry - ldmia sp!, {r4, pc} -_022E7E3C: - add r3, r3, #1 -_022E7E40: - cmp r3, lr - blt _022E7E14 - bl GetKecleonIdToSpawnByFloor - ldmia sp!, {r4, pc} - .align 2, 0 -_022E7E50: .word 0x00002710 -_022E7E54: .word 0x02353538 - arm_func_end GetMonsterIdToSpawn - - arm_func_start GetMonsterLevelToSpawn -GetMonsterLevelToSpawn: ; 0x022E7E58 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, #0 - ldr r6, _022E7EC0 ; =0x02353538 - b _022E7EA4 -_022E7E6C: - add r0, r1, #0x174 - add r0, r0, #0x3800 - add r0, r0, r4, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r5, r0 - bne _022E7EA0 - ldr r0, _022E7EC0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x174 - add r0, r0, #0x3800 - add r0, r0, r4, lsl #3 - bl GetMonsterLevelFromSpawnEntry - ldmia sp!, {r4, r5, r6, pc} -_022E7EA0: - add r4, r4, #1 -_022E7EA4: - ldr r1, [r6] - add r0, r1, #0x3000 - ldr r0, [r0, #0xe20] - cmp r4, r0 - blt _022E7E6C - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E7EC0: .word 0x02353538 - arm_func_end GetMonsterLevelToSpawn - - arm_func_start ov29_022E7EC4 -ov29_022E7EC4: ; 0x022E7EC4 - stmdb sp!, {r3, lr} - mov r0, #0x230 - mov r1, #0 - bl MemAlloc - ldr r2, _022E7F40 ; =0x02353554 - mov r1, #0x230 - str r0, [r2] - bl MemZero - ldr r0, _022E7F40 ; =0x02353554 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1] - ldr r1, [r0] - strb r2, [r1, #0x29] - ldr r1, [r0] - strb r2, [r1, #0x2c] - ldr r1, [r0] - strb r2, [r1, #0x2b] - ldr r1, [r0] - str r2, [r1, #4] - ldr r0, [r0] - strb r2, [r0, #0x228] - bl ov29_022E8708 - ldr r0, _022E7F40 ; =0x02353554 - mov r3, #2 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #0x229] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7F40: .word 0x02353554 - arm_func_end ov29_022E7EC4 - - arm_func_start ov29_022E7F44 -ov29_022E7F44: ; 0x022E7F44 - stmdb sp!, {r3, lr} - ldr r0, _022E7F78 ; =0x02353554 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov29_022E8C4C - ldr r0, _022E7F78 ; =0x02353554 - ldr r0, [r0] - bl MemFree - ldr r0, _022E7F78 ; =0x02353554 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7F78: .word 0x02353554 - arm_func_end ov29_022E7F44 - - arm_func_start ov29_022E7F7C -ov29_022E7F7C: ; 0x022E7F7C - ldr r0, _022E7F90 ; =0x02353554 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0] - bx lr - .align 2, 0 -_022E7F90: .word 0x02353554 - arm_func_end ov29_022E7F7C - - arm_func_start ov29_022E7F94 -ov29_022E7F94: ; 0x022E7F94 - stmdb sp!, {r3, lr} - ldr r0, _022E8014 ; =0x02353554 - mov r3, #0 - ldr r2, [r0] - mov r1, #1 - strb r3, [r2, #0x228] - ldr r0, [r0] - strb r1, [r0] - bl ov29_02339138 - mov r0, #1 - mov r1, r0 - bl ov29_02339D7C - bl ov29_02339CE8 - mov r0, #0 - bl SetMinimapDataE447 - ldr r1, _022E8014 ; =0x02353554 - mov r0, #1 - ldr r1, [r1] - strb r0, [r1] - bl SetMinimapDataE448 - bl ov29_022E8104 - bl ov29_022F42D8 - cmp r0, #2 - ldr r0, _022E8014 ; =0x02353554 - moveq r1, #1 - ldr r0, [r0] - movne r1, #0 - and r1, r1, #0xff - add r0, r0, #0xb8 - bl ov29_022DC738 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8014: .word 0x02353554 - arm_func_end ov29_022E7F94 - - arm_func_start ov29_022E8018 -ov29_022E8018: ; 0x022E8018 - stmdb sp!, {r3, lr} - ldr r0, _022E8050 ; =0x02353554 - ldr r0, [r0] - ldrb r0, [r0, #0x228] - cmp r0, #0 - beq _022E8048 - bl ov29_022DC76C - bl ov29_022DC778 - ldr r0, _022E8050 ; =0x02353554 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x228] -_022E8048: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8050: .word 0x02353554 - arm_func_end ov29_022E8018 - - arm_func_start ov29_022E8054 -ov29_022E8054: ; 0x022E8054 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x10] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - strb r1, [r0, #0x10] - bl sub_0204AEA0 - cmp r0, #3 - ldrne r0, _022E80CC ; =0x02353554 - movne r1, #0 - ldrne r0, [r0] - strneb r1, [r0] - ldmneia sp!, {r3, pc} - ldr r0, _022E80CC ; =0x02353554 - ldr r0, [r0] - ldrb r0, [r0] - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov29_02339138 - mov r0, #0 - mov r1, #1 - bl ov29_0233A0E8 - mov r0, #1 - mov r1, #0 - bl ov29_02339D7C - ldr r0, _022E80CC ; =0x02353554 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E80CC: .word 0x02353554 - arm_func_end ov29_022E8054 - - arm_func_start ov29_022E80D0 -ov29_022E80D0: ; 0x022E80D0 - stmdb sp!, {r3, lr} - bl ov29_022DC77C - ldr r1, _022E8100 ; =0x02353554 - mov r0, #0 - ldr r1, [r1] - strb r0, [r1] - bl SetMinimapDataE448 - mov r0, #1 - bl ov29_0233A1BC - bl ov29_02339138 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8100: .word 0x02353554 - arm_func_end ov29_022E80D0 - - arm_func_start ov29_022E8104 -ov29_022E8104: ; 0x022E8104 - stmdb sp!, {r3, lr} - ldr r0, _022E812C ; =0x02353554 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x228] - ldr r0, [r0] - add r0, r0, #0xb8 - bl ov10_022C1E50 - bl ov29_022E8CE8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E812C: .word 0x02353554 - arm_func_end ov29_022E8104 - - arm_func_start ov29_022E8130 -ov29_022E8130: ; 0x022E8130 - stmdb sp!, {r3, lr} - ldr r0, _022E818C ; =0x02353554 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x228] - ldr r0, [r0] - strb r2, [r0, #0x229] - bl ov29_022E8104 - ldr r0, _022E818C ; =0x02353554 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x24] - bl ov29_022F42D8 - cmp r0, #2 - ldr r0, _022E818C ; =0x02353554 - moveq r1, #1 - ldr r0, [r0] - movne r1, #0 - and r1, r1, #0xff - add r0, r0, #0xb8 - bl ov29_022DC694 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E818C: .word 0x02353554 - arm_func_end ov29_022E8130 - - arm_func_start ov29_022E8190 -ov29_022E8190: ; 0x022E8190 - stmdb sp!, {r3, lr} - ldr r0, _022E81C4 ; =0x02353554 - ldr r0, [r0] - ldrb r0, [r0, #0x228] - cmp r0, #0 - beq _022E81BC - bl ov29_022DC6D0 - ldr r0, _022E81C4 ; =0x02353554 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x228] -_022E81BC: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E81C4: .word 0x02353554 - arm_func_end ov29_022E8190 - - arm_func_start ov29_022E81C8 -ov29_022E81C8: ; 0x022E81C8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_022DC6DC - ldrb r0, [r4, #0x10] - cmp r0, #0 - movne r0, #0 - strneb r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end ov29_022E81C8 - - arm_func_start ov29_022E81E8 -ov29_022E81E8: ; 0x022E81E8 - stmdb sp!, {r3, lr} - bl ov29_022DC728 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E81E8 - - arm_func_start ov29_022E81F8 -ov29_022E81F8: ; 0x022E81F8 - stmdb sp!, {r3, lr} - bl sub_0204AF58 - cmp r0, #0 - bne _022E8210 - bl ov29_022E8104 - ldmia sp!, {r3, pc} -_022E8210: - bl sub_0204AEA0 - cmp r0, #1 - bne _022E8238 - ldr r0, _022E8240 ; =0x02353554 - ldr r0, [r0] - ldrsh r0, [r0, #8] - cmp r0, #1 - beq _022E8238 - mov r0, #1 - bl ov29_022E8CA8 -_022E8238: - bl ov29_022E8CE8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8240: .word 0x02353554 - arm_func_end ov29_022E81F8 - - arm_func_start ov29_022E8244 -ov29_022E8244: ; 0x022E8244 - stmdb sp!, {r3, lr} - bl sub_0204AEA0 - cmp r0, #4 - ldreq r0, _022E826C ; =0x02353554 - ldreq r0, [r0] - ldreqsh r0, [r0, #8] - cmpeq r0, #4 - ldmneia sp!, {r3, pc} - bl ov29_022E9008 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E826C: .word 0x02353554 - arm_func_end ov29_022E8244 - - arm_func_start ov29_022E8270 -ov29_022E8270: ; 0x022E8270 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldr r3, _022E83FC ; =0x02353554 - mov sl, r0 - ldr r3, [r3] - mov sb, r1 - mov fp, r2 - cmp r3, #0 - beq _022E83F4 - ldr r8, [sl, #0xb4] - bl GetSleepAnimationId - ldr r1, _022E8400 ; =0x02353538 - mov r4, r0 - ldr r1, [r1] - mov r5, #0 - add r1, r1, #0x1a000 - ldr r0, [r1, #0x22c] - mov r6, r5 - cmp r0, sl - ldrsh r0, [sl, #0xa8] - mov r7, r5 - str r0, [sp, #0x18] - moveq r0, r5 - arm_func_end ov29_022E8270 - - arm_func_start ov29_022E82CC -ov29_022E82CC: ; 0x022E82CC - ldrneb r0, [r1, #0x245] - cmp r0, #0 - bne _022E82E4 - ldrb r0, [r8, #0xd8] - cmp r0, #2 - bne _022E82F0 -_022E82E4: - ldr r0, _022E8404 ; =0x00000229 - bl GetSpriteIndex__022F7388 - str r0, [sp, #0x18] -_022E82F0: - ldrb r0, [r8, #0xc4] - cmp r0, #1 - cmpne r0, #6 - beq _022E8364 - ldr r0, _022E8400 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x78b] - cmp r0, #0 - beq _022E832C - bl ov29_0234B4E0 - cmp r0, #0 - addeq r0, r5, #2 - moveq r0, r0, lsl #0x10 - moveq r5, r0, asr #0x10 - beq _022E8354 -_022E832C: - ldrb r0, [sl, #0xaf] - cmp r0, #0 - cmpne r0, #7 - bne _022E8354 - ldr r0, [sl, #0xb4] - ldr r0, [r0, #0x110] - cmp r0, #1 - addgt r0, r5, #1 - movgt r0, r0, lsl #0x10 - movgt r5, r0, asr #0x10 -_022E8354: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - b _022E8368 -_022E8364: - mov r5, #0 -_022E8368: - ldrb r0, [r8, #0x10b] - cmp r0, #2 - beq _022E83A4 - ldrb r1, [r8, #0xc4] - cmp r1, #6 - ldrneb r0, [r8, #0xbf] - cmpne r0, #4 - cmpne r1, #2 - bne _022E83A4 - ldr r0, _022E8408 ; =0x0237C850 - ldr r0, [r0] - and r0, r0, #2 - add r0, r6, r0 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_022E83A4: - ldrb r0, [r8, #0xef] - cmp r0, #1 - ldreq r0, _022E8400 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x1a000 - ldreqb r0, [r0, #0x244] - cmpeq r0, #0 - moveq r7, #1 - cmp r4, #0xff - beq _022E83F4 - mov r0, #1 - stmia sp, {r0, sb, fp} - str r5, [sp, #0xc] - str r6, [sp, #0x10] - str r7, [sp, #0x14] - ldrsh r1, [r8, #4] - ldr r3, [r8, #0xb0] - ldr r0, [sp, #0x18] - mov r2, r4 - bl ov29_022DC6E8 -_022E83F4: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E83FC: .word 0x02353554 -_022E8400: .word 0x02353538 -_022E8404: .word 0x00000229 -_022E8408: .word 0x0237C850 - arm_func_end ov29_022E82CC - - arm_func_start ov29_022E840C -ov29_022E840C: ; 0x022E840C - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r0, _022E8478 ; =0x02353554 - ldr r0, [r0] - ldrb r0, [r0, #0x29] - cmp r0, #0 - movne r0, #0 - bne _022E8470 - add r0, sp, #0 - bl ov10_022C22A0 - ldr r0, _022E8478 ; =0x02353554 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x80 - mov r3, #1 - bl ov10_022C1E80 - bl sub_02048400 - cmp r0, #0 - beq _022E8460 - bl sub_02048384 -_022E8460: - ldr r1, _022E8478 ; =0x02353554 - mov r0, #1 - ldr r1, [r1] - strb r0, [r1, #0x29] -_022E8470: - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_022E8478: .word 0x02353554 - arm_func_end ov29_022E840C - - arm_func_start ov29_022E847C -ov29_022E847C: ; 0x022E847C - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x10] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - mov r1, #0 - strb r1, [r0, #0x10] - bl sub_020483B8 - ldr r0, _022E84AC ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E84AC: .word 0x02353554 - arm_func_end ov29_022E847C - - arm_func_start ov29_022E84B0 -ov29_022E84B0: ; 0x022E84B0 - stmdb sp!, {r3, lr} - ldr r0, _022E84FC ; =0x02353554 - ldr r1, [r0] - ldrb r0, [r1, #0x29] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x80 - bl ov10_022C2278 - bl sub_02048400 - cmp r0, #0 - beq _022E84E4 - bl sub_020483D8 -_022E84E4: - ldr r0, _022E84FC ; =0x02353554 - mov r2, #0 - ldr r1, [r0] - mov r0, #1 - strb r2, [r1, #0x29] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E84FC: .word 0x02353554 - arm_func_end ov29_022E84B0 - - arm_func_start ov29_022E8500 -ov29_022E8500: ; 0x022E8500 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0 - bl ov10_022C22A0 - ldr r0, _022E8548 ; =0x02353554 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x80 - mov r3, #1 - bl ov10_022C1E80 - ldr r0, _022E8548 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - bl ov29_022E8E94 - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_022E8548: .word 0x02353554 - arm_func_end ov29_022E8500 - - arm_func_start ov29_022E854C -ov29_022E854C: ; 0x022E854C - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r0, [r4, #0x10] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x10 - bl ov29_022E8F78 - ldr r0, _022E8584 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - mov r0, #0 - strb r0, [r4, #0x10] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E8584: .word 0x02353554 - arm_func_end ov29_022E854C - - arm_func_start ov29_022E8588 -ov29_022E8588: ; 0x022E8588 - stmdb sp!, {r3, lr} - ldr r0, _022E85A4 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C2278 - bl ov29_022E8F28 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E85A4: .word 0x02353554 - arm_func_end ov29_022E8588 - - arm_func_start ov29_022E85A8 -ov29_022E85A8: ; 0x022E85A8 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0 - bl ov10_022C22A0 - ldr r0, _022E85F0 ; =0x02353554 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x80 - mov r3, #1 - bl ov10_022C1E80 - ldr r0, _022E85F0 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - bl ov29_022E8FCC - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_022E85F0: .word 0x02353554 - arm_func_end ov29_022E85A8 - - arm_func_start ov29_022E85F4 -ov29_022E85F4: ; 0x022E85F4 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r0, [r4, #0x10] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r4, #0x10 - bl ov29_022E9014 - ldr r0, _022E862C ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - mov r0, #0 - strb r0, [r4, #0x10] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E862C: .word 0x02353554 - arm_func_end ov29_022E85F4 - - arm_func_start ov29_022E8630 -ov29_022E8630: ; 0x022E8630 - stmdb sp!, {r3, lr} - ldr r0, _022E864C ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C2278 - bl ov29_022E8FF8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E864C: .word 0x02353554 - arm_func_end ov29_022E8630 - - arm_func_start ov29_022E8650 -ov29_022E8650: ; 0x022E8650 - stmdb sp!, {lr} - sub sp, sp, #0x14 - add r0, sp, #0 - bl ov10_022C22A0 - ldr r0, _022E8698 ; =0x02353554 - add r1, sp, #0 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x80 - mov r3, #1 - bl ov10_022C1E80 - ldr r0, _022E8698 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C21D8 - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_022E8698: .word 0x02353554 - arm_func_end ov29_022E8650 - - arm_func_start ov29_022E869C -ov29_022E869C: ; 0x022E869C - mov r0, #1 - bx lr - arm_func_end ov29_022E869C - - arm_func_start ov29_022E86A4 -ov29_022E86A4: ; 0x022E86A4 - bx lr - arm_func_end ov29_022E86A4 - - arm_func_start ov29_022E86A8 -ov29_022E86A8: ; 0x022E86A8 - stmdb sp!, {r3, lr} - ldr r0, _022E86C4 ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0x80 - bl ov10_022C2278 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E86C4: .word 0x02353554 - arm_func_end ov29_022E86A8 - - arm_func_start ov29_022E86C8 -ov29_022E86C8: ; 0x022E86C8 - str r1, [r0] - ldr r1, [sp] - stmib r0, {r2, r3} - str r1, [r0, #0xc] - mov r1, #1 - strb r1, [r0, #0x10] - bx lr - arm_func_end ov29_022E86C8 - - arm_func_start ov29_022E86E4 -ov29_022E86E4: ; 0x022E86E4 - stmdb sp!, {r3, lr} - ldr r0, _022E8704 ; =0x02353554 - ldr r0, [r0] - ldr r0, [r0, #0x18] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - blx r0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8704: .word 0x02353554 - arm_func_end ov29_022E86E4 - - arm_func_start ov29_022E8708 -ov29_022E8708: ; 0x022E8708 - stmdb sp!, {r3, lr} - bl sub_0204AEA0 - cmp r0, #3 - bne _022E8724 - mov r0, #3 - bl ov29_022E8CA8 - ldmia sp!, {r3, pc} -_022E8724: - cmp r0, #2 - bne _022E8738 - mov r0, #0 - bl ov29_022E8CA8 - ldmia sp!, {r3, pc} -_022E8738: - cmp r0, #0 - bne _022E874C - mov r0, #2 - bl ov29_022E8CA8 - ldmia sp!, {r3, pc} -_022E874C: - cmp r0, #4 - bne _022E8760 - mov r0, #4 - bl ov29_022E8CA8 - ldmia sp!, {r3, pc} -_022E8760: - bl ov29_022E81F8 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E8708 - - arm_func_start ov29_022E8768 -ov29_022E8768: ; 0x022E8768 - ldr ip, _022E8774 ; =ov29_022E8CA8 - mov r0, #5 - bx ip - .align 2, 0 -_022E8774: .word ov29_022E8CA8 - arm_func_end ov29_022E8768 - - arm_func_start ov29_022E8778 -ov29_022E8778: ; 0x022E8778 - stmdb sp!, {r3, lr} - ldr r0, _022E87B0 ; =0x02353554 - mov r3, #3 - ldr r2, [r0] - sub r1, r3, #4 - str r3, [r2, #0xc] - ldr r0, [r0] - strh r1, [r0, #0x10] - bl ov29_022E8104 - ldr r0, _022E87B0 ; =0x02353554 - ldr r1, [r0] - ldrsh r0, [r1, #0x10] - strh r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E87B0: .word 0x02353554 - arm_func_end ov29_022E8778 - - arm_func_start ov29_022E87B4 -ov29_022E87B4: ; 0x022E87B4 - ldr r1, _022E87D8 ; =0x02353554 - ldr r2, [r1] - ldrsh r1, [r2, #8] - cmp r1, r0 - ldreq r0, [r2, #4] - cmpeq r0, #5 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_022E87D8: .word 0x02353554 - arm_func_end ov29_022E87B4 - - arm_func_start ov29_022E87DC -ov29_022E87DC: ; 0x022E87DC - stmdb sp!, {r3, lr} - bl sub_0204AEA0 - ldr r1, _022E87F8 ; =0x023515E8 - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - bl ov29_022E87B4 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E87F8: .word 0x023515E8 - arm_func_end ov29_022E87DC - - arm_func_start ov29_022E87FC -ov29_022E87FC: ; 0x022E87FC - ldr r1, _022E880C ; =0x02353554 - ldr r1, [r1] - strb r0, [r1, #0x2b] - bx lr - .align 2, 0 -_022E880C: .word 0x02353554 - arm_func_end ov29_022E87FC - - arm_func_start ov29_022E8810 -ov29_022E8810: ; 0x022E8810 - ldr r0, _022E8830 ; =0x02353554 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022E8830: .word 0x02353554 - arm_func_end ov29_022E8810 - - arm_func_start ov29_022E8834 -ov29_022E8834: ; 0x022E8834 - ldr r1, _022E8844 ; =0x02353554 - ldr r1, [r1] - strb r0, [r1, #0x2c] - bx lr - .align 2, 0 -_022E8844: .word 0x02353554 - arm_func_end ov29_022E8834 - - arm_func_start ov29_022E8848 -ov29_022E8848: ; 0x022E8848 - ldr r0, _022E8868 ; =0x02353554 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022E8868: .word 0x02353554 - arm_func_end ov29_022E8848 - - arm_func_start ov29_022E886C -ov29_022E886C: ; 0x022E886C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022E8BA0 ; =0x02353554 - ldr r5, [r0] - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, [r5, #4] - cmp r1, #6 - addls pc, pc, r1, lsl #2 - ldmia sp!, {r3, r4, r5, pc} -_022E8890: ; jump table - ldmia sp!, {r3, r4, r5, pc} ; case 0 - b _022E88AC ; case 1 - b _022E88C0 ; case 2 - b _022E8A80 ; case 3 - b _022E8AC8 ; case 4 - b _022E8B00 ; case 5 - b _022E8B5C ; case 6 -_022E88AC: - ldrb r0, [r5, #0x2b] - cmp r0, #0 - moveq r0, #2 - streq r0, [r5, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E88C0: - ldrb r0, [r5, #2] - cmp r0, #0 - beq _022E88EC - mov r0, #1 - bl ov29_0234C70C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _022E8BA0 ; =0x02353554 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] -_022E88EC: - bl ov29_022E8C4C - ldr r0, _022E8BA0 ; =0x02353554 - ldr r4, [r0] - ldrsh r0, [r4, #0x10] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022E89DC -_022E8908: ; jump table - b _022E8920 ; case 0 - b _022E8940 ; case 1 - b _022E8960 ; case 2 - b _022E8980 ; case 3 - b _022E89A0 ; case 4 - b _022E89C0 ; case 5 -_022E8920: - ldr ip, _022E8BA4 ; =ov29_022E84B0 - ldr r1, _022E8BA8 ; =ov29_022E840C - ldr r3, _022E8BAC ; =ov29_022E847C - add r0, r4, #0x14 - mov r2, #0 - str ip, [sp] - bl ov29_022E86C8 - b _022E89DC -_022E8940: - ldr ip, _022E8BB0 ; =ov29_022E81E8 - ldr r1, _022E8BB4 ; =ov29_022E8130 - ldr r2, _022E8BB8 ; =ov29_022E8190 - ldr r3, _022E8BBC ; =ov29_022E81C8 - add r0, r4, #0x14 - str ip, [sp] - bl ov29_022E86C8 - b _022E89DC -_022E8960: - ldr ip, _022E8BC0 ; =ov29_022E8588 - ldr r1, _022E8BC4 ; =ov29_022E8500 - ldr r3, _022E8BC8 ; =ov29_022E854C - add r0, r4, #0x14 - mov r2, #0 - str ip, [sp] - bl ov29_022E86C8 - b _022E89DC -_022E8980: - ldr ip, _022E8BCC ; =ov29_022E80D0 - ldr r1, _022E8BD0 ; =ov29_022E7F94 - ldr r2, _022E8BD4 ; =ov29_022E8018 - ldr r3, _022E8BD8 ; =ov29_022E8054 - add r0, r4, #0x14 - str ip, [sp] - bl ov29_022E86C8 - b _022E89DC -_022E89A0: - ldr ip, _022E8BDC ; =ov29_022E8630 - ldr r1, _022E8BE0 ; =ov29_022E85A8 - ldr r3, _022E8BE4 ; =ov29_022E85F4 - add r0, r4, #0x14 - mov r2, #0 - str ip, [sp] - bl ov29_022E86C8 - b _022E89DC -_022E89C0: - ldr ip, _022E8BE8 ; =ov29_022E86A8 - ldr r1, _022E8BEC ; =ov29_022E8650 - ldr r2, _022E8BF0 ; =0x022E869C - ldr r3, _022E8BF4 ; =0x022E86A4 - add r0, r4, #0x14 - str ip, [sp] - bl ov29_022E86C8 -_022E89DC: - ldr r0, _022E8BA0 ; =0x02353554 - ldrsh r1, [r4, #0x10] - ldr r0, [r0] - strh r1, [r0, #8] - ldr r0, [r4, #0x14] - cmp r0, #0 - beq _022E8A20 - ldr r0, _022E8BF8 ; =0x0235352C - ldr r0, [r0] - ldr r0, [r0, #0x30] - bl sub_0200B3D4 - ldr r0, _022E8BF8 ; =0x0235352C - ldr r0, [r0] - ldr r0, [r0, #0x30] - bl sub_0200B330 - ldr r0, [r4, #0x14] - blx r0 -_022E8A20: - mov r1, #0 - ldr r0, _022E8BA0 ; =0x02353554 - str r1, [r5, #0xc] - ldr r2, [r0] - ldrb r1, [r2, #0x2c] - cmp r1, #0 - movne r0, #3 - strne r0, [r2, #4] - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #5 - str r1, [r2, #4] - ldr r0, [r0] - ldrb r0, [r0, #2] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #1 - mov r2, r0 - mov r1, #0x4000 - bl ov29_0234C668 - ldr r0, _022E8BA0 ; =0x02353554 - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E8A80: - ldrb r1, [r5, #0x2c] - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #5 - str r1, [r5, #4] - ldr r0, [r0] - ldrb r0, [r0, #2] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #1 - mov r2, r0 - mov r1, #0x4000 - bl ov29_0234C668 - ldr r0, _022E8BA0 ; =0x02353554 - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E8AC8: - bl ov29_022E86E4 - ldr r0, _022E8BA0 ; =0x02353554 - ldr r0, [r0] - ldrb r0, [r0, #2] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #1 - bl ov29_0234C70C - cmp r0, #0 - ldreq r0, _022E8BA0 ; =0x02353554 - moveq r1, #5 - ldreq r0, [r0] - streq r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E8B00: - bl ov29_022E86E4 - ldr r0, [r5, #0xc] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022E8BA0 ; =0x02353554 - ldr r2, [r0] - ldrb r1, [r2, #1] - strb r1, [r2, #2] - ldr r1, [r0] - ldrb r0, [r1, #2] - cmp r0, #0 - moveq r0, #6 - streq r0, [r1, #4] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #2 - mov r1, #0x4000 - mov r2, #1 - bl ov29_0234C668 - ldr r0, _022E8BA0 ; =0x02353554 - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} -_022E8B5C: - ldrb r0, [r5, #2] - cmp r0, #0 - beq _022E8B78 - mov r0, #1 - bl ov29_0234C70C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_022E8B78: - bl ov29_022E8C4C - ldr r0, _022E8BA0 ; =0x02353554 - ldr r1, [r0] - ldrb r0, [r1, #0x2b] - cmp r0, #0 - movne r0, #1 - strne r0, [r1, #4] - moveq r0, #2 - streq r0, [r1, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E8BA0: .word 0x02353554 -_022E8BA4: .word ov29_022E84B0 -_022E8BA8: .word ov29_022E840C -_022E8BAC: .word ov29_022E847C -_022E8BB0: .word ov29_022E81E8 -_022E8BB4: .word ov29_022E8130 -_022E8BB8: .word ov29_022E8190 -_022E8BBC: .word ov29_022E81C8 -_022E8BC0: .word ov29_022E8588 -_022E8BC4: .word ov29_022E8500 -_022E8BC8: .word ov29_022E854C -_022E8BCC: .word ov29_022E80D0 -_022E8BD0: .word ov29_022E7F94 -_022E8BD4: .word ov29_022E8018 -_022E8BD8: .word ov29_022E8054 -_022E8BDC: .word ov29_022E8630 -_022E8BE0: .word ov29_022E85A8 -_022E8BE4: .word ov29_022E85F4 -_022E8BE8: .word ov29_022E86A8 -_022E8BEC: .word ov29_022E8650 -_022E8BF0: .word 0x022E869C -_022E8BF4: .word 0x022E86A4 -_022E8BF8: .word 0x0235352C - arm_func_end ov29_022E886C - - arm_func_start ov29_022E8BFC -ov29_022E8BFC: ; 0x022E8BFC - ldr r1, _022E8C0C ; =0x02353554 - ldr r1, [r1] - strb r0, [r1, #1] - bx lr - .align 2, 0 -_022E8C0C: .word 0x02353554 - arm_func_end ov29_022E8BFC - - arm_func_start ov29_022E8C10 -ov29_022E8C10: ; 0x022E8C10 - stmdb sp!, {r3, lr} - ldr r0, _022E8C48 ; =0x02353554 - ldr r2, [r0] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldrb r0, [r2, #0x2a] - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r1, [r2, #0x1c] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - add r0, r2, #0x14 - blx r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8C48: .word 0x02353554 - arm_func_end ov29_022E8C10 - - arm_func_start ov29_022E8C4C -ov29_022E8C4C: ; 0x022E8C4C - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _022E8CA4 ; =0x02353554 - ldr r4, [r0] - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _022E8C98 - mov r0, #0 - str r0, [r4, #0x1c] - ldr r0, [r4, #0x20] - blx r0 - movs r5, r0 - beq _022E8C9C - mov r1, #0 - mov r2, r1 - mov r3, r1 - add r0, r4, #0x14 - str r1, [sp] - bl ov29_022E86C8 - b _022E8C9C -_022E8C98: - mov r5, #1 -_022E8C9C: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E8CA4: .word 0x02353554 - arm_func_end ov29_022E8C4C - - arm_func_start ov29_022E8CA8 -ov29_022E8CA8: ; 0x022E8CA8 - ldr r1, _022E8CE4 ; =0x02353554 - ldr r3, [r1] - ldrsh r2, [r3, #8] - cmp r2, r0 - ldrne r2, [r3, #0xc] - cmpne r2, #1 - bxeq lr - mov r2, #1 - str r2, [r3, #0xc] - ldr r3, [r1] - mov r2, #0 - strh r0, [r3, #0x10] - ldr r0, [r1] - strb r2, [r0, #0x28] - bx lr - .align 2, 0 -_022E8CE4: .word 0x02353554 - arm_func_end ov29_022E8CA8 - - arm_func_start ov29_022E8CE8 -ov29_022E8CE8: ; 0x022E8CE8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - mov sb, #0 - ldr fp, _022E8E54 ; =0x000003E7 - mov r8, sb -_022E8CFC: - ldr r0, _022E8E58 ; =0x02353538 - ldr r1, [r0] - add r0, r1, r8, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - cmp r0, #0 - moveq r0, #0 - beq _022E8D30 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_022E8D30: - cmp r0, #0 - beq _022E8DE4 - add r0, r1, r8, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] - ldr r0, _022E8E5C ; =0x02353554 - ldr r7, [r6, #0xb4] - ldr r0, [r0] - add r5, r0, #0xb8 - mov r0, #0x5c - smulbb r4, sb, r0 - ldrb r0, [r7, #0x165] - cmp r0, #0 - bne _022E8DE4 - add r0, sp, #0x14 - mov r1, r7 - mov r2, #0 - bl ov29_0230027C - ldrsh r1, [r7, #0x12] - ldrsh r0, [r7, #0x16] - add sl, r1, r0 - cmp sl, fp - mov r0, r6 - movgt sl, fp - bl GetSleepAnimationId - ldrb r3, [r7, #0xa] - mov r1, sl, lsl #0x10 - mov r1, r1, asr #0x10 - str r3, [sp] - ldrsh r3, [r7, #0x10] - add r2, sp, #0x14 - str r3, [sp, #4] - str r1, [sp, #8] - ldrsh r1, [r6, #0xa8] - str r1, [sp, #0xc] - str r0, [sp, #0x10] - ldr r1, [r7, #0xb0] - ldrsh r3, [r7, #4] - mov r1, r1, lsl #0x10 - add r0, r5, r4 - mov r1, r1, asr #0x10 - bl ov10_022C1DE0 - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_022E8DE4: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022E8CFC - mov r0, #0x5c - smulbb r4, sb, r0 - mov r3, #0 - ldr r1, _022E8E5C ; =0x02353554 - b _022E8E24 -_022E8E0C: - ldr r2, [r1] - add r0, sb, #1 - add r2, r4, r2 - mov r0, r0, lsl #0x10 - strb r3, [r2, #0xb8] - mov sb, r0, asr #0x10 -_022E8E24: - cmp sb, #4 - blt _022E8E0C - ldr r0, _022E8E5C ; =0x02353554 - ldr r0, [r0] - add r0, r0, #0xb8 - bl ov29_022DC684 - ldr r0, _022E8E5C ; =0x02353554 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x228] - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E8E54: .word 0x000003E7 -_022E8E58: .word 0x02353538 -_022E8E5C: .word 0x02353554 - arm_func_end ov29_022E8CE8 - - arm_func_start ov29_022E8E60 -ov29_022E8E60: ; 0x022E8E60 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _022E8E90 ; =0x00003FCB - bl StringFromMessageId - mov r1, #0 - mov r3, r0 - mov r0, r4 - mov r2, r1 - bl sub_02026214 - mov r0, r4 - bl sub_02027AF0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E8E90: .word 0x00003FCB - arm_func_end ov29_022E8E60 - - arm_func_start ov29_022E8E94 -ov29_022E8E94: ; 0x022E8E94 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - ldr r0, _022E8F1C ; =0x02353558 - ldr r0, [r0] - cmp r0, #0 - movne r0, #0 - bne _022E8F14 - mov r0, #0x54 - mov r1, #8 - bl MemAlloc - ldr r2, _022E8F1C ; =0x02353558 - mov r1, #0x54 - str r0, [r2] - bl MemZero - ldr r0, _022E8F20 ; =0x023515F4 - add ip, sp, #0 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - ldr r1, _022E8F24 ; =ov29_022E8E60 - mov r0, ip - bl sub_0202F8C4 - ldr r1, _022E8F1C ; =0x02353558 - ldr r2, [r1] - strb r0, [r2] - ldr r0, [r1] - add r0, r0, #4 - bl InitPreprocessorArgs - ldr r0, _022E8F1C ; =0x02353558 - mov r2, #0x10000 - ldr r1, [r0] - mov r0, #1 - str r2, [r1, #0x50] -_022E8F14: - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8F1C: .word 0x02353558 -_022E8F20: .word 0x023515F4 -_022E8F24: .word ov29_022E8E60 - arm_func_end ov29_022E8E94 - - arm_func_start ov29_022E8F28 -ov29_022E8F28: ; 0x022E8F28 - stmdb sp!, {r3, lr} - ldr r0, _022E8F74 ; =0x02353558 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl sub_0202F918 - ldr r0, _022E8F74 ; =0x02353558 - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1] - ldr r0, [r0] - bl MemFree - ldr r0, _022E8F74 ; =0x02353558 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8F74: .word 0x02353558 - arm_func_end ov29_022E8F28 - - arm_func_start ov29_022E8F78 -ov29_022E8F78: ; 0x022E8F78 - stmdb sp!, {r4, lr} - ldrb r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - strb r1, [r0] - ldr r1, _022E8FC4 ; =0x02353558 - ldr r0, _022E8FC8 ; =0x00003FCB - ldr r1, [r1] - ldrsb r4, [r1] - bl StringFromMessageId - mov r1, #0 - mov r3, r0 - mov r0, r4 - mov r2, r1 - bl sub_02026214 - mov r0, r4 - bl sub_02027AF0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E8FC4: .word 0x02353558 -_022E8FC8: .word 0x00003FCB - arm_func_end ov29_022E8F78 - - arm_func_start ov29_022E8FCC -ov29_022E8FCC: ; 0x022E8FCC - stmdb sp!, {r3, lr} - ldr r0, _022E8FF4 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0x700 - ldrsb r0, [r0, #0x98] - ldrb r1, [r1, #0x748] - bl ov29_0234F25C - bl ov29_0234F278 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8FF4: .word 0x02353538 - arm_func_end ov29_022E8FCC - - arm_func_start ov29_022E8FF8 -ov29_022E8FF8: ; 0x022E8FF8 - stmdb sp!, {r3, lr} - bl ov29_0234F2B8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_022E8FF8 - - arm_func_start ov29_022E9008 -ov29_022E9008: ; 0x022E9008 - ldr ip, _022E9010 ; =ov29_0234F290 - bx ip - .align 2, 0 -_022E9010: .word ov29_0234F290 - arm_func_end ov29_022E9008 - - arm_func_start ov29_022E9014 -ov29_022E9014: ; 0x022E9014 - ldrb r0, [r0] - cmp r0, #0 - bx lr - arm_func_end ov29_022E9014 - - arm_func_start GetDirectionTowardsPosition -GetDirectionTowardsPosition: ; 0x022E9020 - ldrsh r3, [r1] - ldrsh r2, [r0] - ldrsh r1, [r1, #2] - ldrsh r0, [r0, #2] - subs r3, r3, r2 - sub r2, r1, r0 - cmpeq r2, #0 - moveq r0, #0 - bxeq lr - cmp r3, #1 - movge r3, #1 - cmp r2, #1 - mvn r0, #0 - movge r2, #1 - cmp r3, r0 - movle r3, r0 - mvn r0, #0 - cmp r2, r0 - movle r2, r0 - ldr r1, _022E9088 ; =0x02351604 - add r2, r2, #1 - mov r0, #0xc - mla r0, r2, r0, r1 - add r1, r3, #1 - ldr r0, [r0, r1, lsl #2] - bx lr - .align 2, 0 -_022E9088: .word 0x02351604 - arm_func_end GetDirectionTowardsPosition - - arm_func_start GetChebyshevDistance -GetChebyshevDistance: ; 0x022E908C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldrsh r1, [r5] - ldrsh r0, [r4] - sub r0, r1, r0 - bl Abs - ldrsh r1, [r4, #2] - ldrsh r2, [r5, #2] - mov r4, r0 - sub r0, r2, r1 - bl Abs - cmp r4, r0 - movle r4, r0 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GetChebyshevDistance - - arm_func_start ov29_022E90CC -ov29_022E90CC: ; 0x022E90CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r4, r1 - mov r6, r2 - bl ov29_022E333C - mov r5, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - bl GetTile - cmp r6, #0 - ldrb ip, [r0, #7] - bne _022E9104 - cmp ip, #0xff - bne _022E913C -_022E9104: - ldrsh r1, [r7] - ldrsh r0, [r4] - sub r0, r1, r0 - bl Abs - cmp r0, r5 - bgt _022E9198 - ldrsh r1, [r7, #2] - ldrsh r0, [r4, #2] - sub r0, r1, r0 - bl Abs - cmp r0, r5 - bgt _022E9198 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E913C: - ldr r0, _022E91A0 ; =0x02353538 - mov r1, #0x1c - ldr r0, [r0] - ldrsh r2, [r4] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r3, ip, r1, r0 - ldrsh r0, [r3, #2] - sub r0, r0, #1 - cmp r0, r2 - ldrlesh r0, [r3, #4] - ldrlesh r1, [r4, #2] - suble r0, r0, #1 - cmple r0, r1 - bgt _022E9198 - ldrsh r0, [r3, #6] - add r0, r0, #1 - cmp r0, r2 - ldrgtsh r0, [r3, #8] - addgt r0, r0, #1 - cmpgt r0, r1 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} -_022E9198: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E91A0: .word 0x02353538 - arm_func_end ov29_022E90CC - - arm_func_start IsPositionInSight -IsPositionInSight: ; 0x022E91A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, r1 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r7, r2 - bl GetTile - ldrb r6, [r0, #7] - cmp r6, #0xff - beq _022E9230 - cmp r7, #0 - bne _022E9230 - ldr r0, _022E9294 ; =0x02353538 - mov r1, #0x1c - ldr r0, [r0] - ldrsh r2, [r4] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r3, r6, r1, r0 - ldrsh r0, [r3, #2] - sub r0, r0, #1 - cmp r0, r2 - ldrlesh r0, [r3, #4] - ldrlesh r1, [r4, #2] - suble r0, r0, #1 - cmple r0, r1 - bgt _022E9230 - ldrsh r0, [r3, #6] - add r0, r0, #1 - cmp r0, r2 - ldrgtsh r0, [r3, #8] - addgt r0, r0, #1 - cmpgt r0, r1 - movgt r0, #1 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} -_022E9230: - ldrsh r1, [r5, #2] - ldrsh r0, [r4, #2] - sub r0, r1, r0 - bl Abs - ldrsh r2, [r5] - ldrsh r1, [r4] - mov r6, r0 - sub r0, r2, r1 - bl Abs - cmp r0, r6 - movle r0, r6 - cmp r0, #2 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, pc} - bne _022E928C - mov r0, r5 - mov r1, r4 - bl ov29_022E935C - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E928C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E9294: .word 0x02353538 - arm_func_end IsPositionInSight - - arm_func_start ov29_022E9298 -ov29_022E9298: ; 0x022E9298 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, r1 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r7, r2 - bl GetTile - mov r6, r0 - bl ov29_022E333C - cmp r7, #0 - ldrb r2, [r6, #7] - bne _022E92D0 - cmp r2, #0xff - bne _022E930C -_022E92D0: - ldrsh r1, [r5] - sub r1, r1, r0 - str r1, [r4] - ldrsh r1, [r5] - add r1, r1, r0 - add r1, r1, #1 - str r1, [r4, #8] - ldrsh r1, [r5, #2] - sub r1, r1, r0 - str r1, [r4, #4] - ldrsh r1, [r5, #2] - add r0, r1, r0 - add r0, r0, #1 - str r0, [r4, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022E930C: - ldr r0, _022E9358 ; =0x02353538 - mov r1, #0x1c - ldr r0, [r0] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r1, r2, r1, r0 - ldrsh r0, [r1, #2] - sub r0, r0, #1 - str r0, [r4] - ldrsh r0, [r1, #6] - add r0, r0, #2 - str r0, [r4, #8] - ldrsh r0, [r1, #4] - sub r0, r0, #1 - str r0, [r4, #4] - ldrsh r0, [r1, #8] - add r0, r0, #2 - str r0, [r4, #0xc] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022E9358: .word 0x02353538 - arm_func_end ov29_022E9298 - - arm_func_start ov29_022E935C -ov29_022E935C: ; 0x022E935C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldrsh r4, [r8] - ldrsh r0, [r7] - sub r0, r4, r0 - bl Abs - mov r6, r0 - cmp r6, #1 - bgt _022E93A0 - ldrsh r1, [r8, #2] - ldrsh r0, [r7, #2] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - movle r0, #1 - ldmleia sp!, {r4, r5, r6, r7, r8, pc} -_022E93A0: - ldrsh r5, [r8, #2] - ldrsh r0, [r7, #2] - sub r0, r5, r0 - bl Abs - cmp r6, r0 - movle r6, r0 - cmp r6, #2 - bne _022E9480 - mov r6, #0 - b _022E9410 -_022E93C8: - ldrsh r0, [r7] - cmp r4, r0 - addlt r4, r4, #1 - cmp r4, r0 - ldrsh r0, [r7, #2] - subgt r4, r4, #1 - cmp r5, r0 - addlt r5, r5, #1 - cmp r5, r0 - subgt r5, r5, #1 - mov r0, r4 - mov r1, r5 - bl GetTile - ldrh r0, [r0] - tst r0, #3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r6, r6, #1 -_022E9410: - cmp r6, #2 - blt _022E93C8 - ldrsh r4, [r7] - ldrsh r5, [r7, #2] - mov r6, #0 - b _022E9470 -_022E9428: - ldrsh r0, [r8] - cmp r4, r0 - addlt r4, r4, #1 - cmp r4, r0 - ldrsh r0, [r8, #2] - subgt r4, r4, #1 - cmp r5, r0 - addlt r5, r5, #1 - cmp r5, r0 - subgt r5, r5, #1 - mov r0, r4 - mov r1, r5 - bl GetTile - ldrh r0, [r0] - tst r0, #3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r6, r6, #1 -_022E9470: - cmp r6, #2 - blt _022E9428 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022E9480: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_022E935C - - arm_func_start ov29_022E9488 -ov29_022E9488: ; 0x022E9488 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _022E955C ; =0x02353538 - ldr r3, _022E9560 ; =0x0001A224 - ldr r4, [ip] - add ip, r3, #2 - ldrsh r3, [r4, r3] - ldrsh r4, [r4, ip] - mvn lr, #0xf - sub r3, r0, r3 - sub r0, r1, r4 - cmp r3, lr - cmpge r0, lr - blt _022E9554 - rsb r1, lr, #0xff - cmp r3, r1 - cmplt r0, #0xd0 - bge _022E9554 - mov r1, #0xc - mul ip, r2, r1 - ldr r4, _022E9564 ; =0x0237C88A - ldr r5, _022E9568 ; =0x0237C890 - ldrh r2, [r4, ip] - sub r1, r1, #0x20c - ldrsh r5, [r5, ip] - and r1, r2, r1 - strh r1, [r4, ip] - add r1, r3, r5 - ldrh r2, [r4, ip] - and r1, r1, lr, lsr #23 - ldr r3, _022E956C ; =0x0237C88E - orr r1, r2, r1 - strh r1, [r4, ip] - ldr r1, _022E9570 ; =0x0237C892 - ldrh r4, [r3, ip] - ldrsh lr, [r1, ip] - ldr r1, _022E9574 ; =0xFFFF000F - ldr r2, _022E9578 ; =0x020AFC4C - and r1, r4, r1 - strh r1, [r3, ip] - add r0, r0, lr - ldr r1, _022E957C ; =0x0237C888 - mov lr, r0, lsl #0x14 - ldrh r4, [r3, ip] - ldr r0, [r2] - add r1, r1, ip - orr r4, r4, lr, lsr #16 - mov r2, #0 - strh r4, [r3, ip] - bl sub_0201B9F8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022E9554: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E955C: .word 0x02353538 -_022E9560: .word 0x0001A224 -_022E9564: .word 0x0237C88A -_022E9568: .word 0x0237C890 -_022E956C: .word 0x0237C88E -_022E9570: .word 0x0237C892 -_022E9574: .word 0xFFFF000F -_022E9578: .word 0x020AFC4C -_022E957C: .word 0x0237C888 - arm_func_end ov29_022E9488 - - arm_func_start GetLeader -GetLeader: ; 0x022E9580 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022E95EC ; =0x0235355C - ldr r0, [r0] - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r5, #0 - ldr r4, _022E95F0 ; =0x02353538 - b _022E95DC -_022E95A0: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] - mov r0, r6 - bl EntityIsValid__022E95F4 - cmp r0, #0 - ldrne r0, [r6, #0xb4] - ldrneb r0, [r0, #7] - cmpne r0, #0 - ldrne r1, _022E95EC ; =0x0235355C - movne r0, r6 - strne r6, [r1] - ldmneia sp!, {r4, r5, r6, pc} - add r5, r5, #1 -_022E95DC: - cmp r5, #4 - blt _022E95A0 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E95EC: .word 0x0235355C -_022E95F0: .word 0x02353538 - arm_func_end GetLeader - - arm_func_start EntityIsValid__022E95F4 -EntityIsValid__022E95F4: ; 0x022E95F4 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022E95F4 - - arm_func_start ov29_022E9618 -ov29_022E9618: ; 0x022E9618 - stmdb sp!, {r3, lr} - bl GetLeader - ldr r0, [r0, #0xb4] - ldmia sp!, {r3, pc} - arm_func_end ov29_022E9618 - - arm_func_start ov29_022E9628 -ov29_022E9628: ; 0x022E9628 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xe20 - mov sl, r0 - str r1, [sp] - bl GetLeader - mov r4, #0 - str r0, [sp, #0x14] - mov r8, r4 - b _022E9830 -_022E964C: - mov r0, #0x38 - bl DungeonRandInt - mov sb, r0 - mov r0, #0x20 - bl DungeonRandInt - ldr r1, [sp, #0x14] - str r0, [sp, #0x10] - ldrh r2, [r1, #4] - ldrh r1, [r1, #6] - mov r5, #0 - strh r2, [sp, #0x1c] - ldrsh r0, [sp, #0x1c] - strh r1, [sp, #0x1e] - ldrsh fp, [sp, #0x1e] - str r0, [sp, #8] - b _022E97F4 -_022E968C: - cmp r4, #0x700 - ldr r7, [sp, #0x10] - bge _022E97FC - ldr r0, [sp, #8] - mov r6, #0 - sub r0, r0, sb - str r0, [sp, #4] - and r0, sb, #0xff - str r0, [sp, #0x18] - b _022E97DC -_022E96B4: - mov r0, #0 - str r0, [sp, #0xc] - mov r0, sb - mov r1, r7 - bl GetTile - cmp r4, #0x700 - bge _022E97E4 - ldr r1, [sp] - cmp r1, #0 - beq _022E96E8 - ldrh r1, [r0] - tst r1, #0x800 - arm_func_end ov29_022E9628 - - arm_func_start ov29_022E96E4 -ov29_022E96E4: ; 0x022E96E4 - bne _022E97D8 -_022E96E8: - cmp r8, #0 - bne _022E974C - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #1 - bne _022E97A8 - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _022E97A8 - ldr r1, [r0, #0x10] - cmp r1, #0 - ldreq r0, [r0, #0xc] - cmpeq r0, #0 - bne _022E97A8 - ldr r0, [sp, #4] - bl Abs - cmp r0, #6 - bge _022E9740 - sub r0, fp, r7 - bl Abs - cmp r0, #6 - blt _022E97A8 -_022E9740: - mov r0, #1 - str r0, [sp, #0xc] - b _022E97A8 -_022E974C: - ldrh r1, [r0] - cmp r8, #1 - and r1, r1, #3 - bne _022E978C - cmp r1, #1 - bne _022E97A8 - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _022E97A8 - ldr r1, [r0, #0x10] - cmp r1, #0 - ldreq r0, [r0, #0xc] - cmpeq r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] - b _022E97A8 -_022E978C: - cmp r1, #1 - ldreq r1, [r0, #0x10] - cmpeq r1, #0 - ldreq r0, [r0, #0xc] - cmpeq r0, #0 - moveq r0, #1 - streq r0, [sp, #0xc] -_022E97A8: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _022E97CC - ldr r1, [sp, #0x18] - add r0, sp, #0x20 - strb r1, [r0, r4, lsl #1] - add r0, r0, r4, lsl #1 - strb r7, [r0, #1] - add r4, r4, #1 -_022E97CC: - add r7, r7, #1 - cmp r7, #0x20 - movge r7, #0 -_022E97D8: - add r6, r6, #1 -_022E97DC: - cmp r6, #0x20 - blt _022E96B4 -_022E97E4: - add sb, sb, #1 - cmp sb, #0x38 - movge sb, #0 - add r5, r5, #1 -_022E97F4: - cmp r5, #0x38 - blt _022E968C -_022E97FC: - cmp r4, #0 - beq _022E982C - mov r0, r4 - bl DungeonRandInt - add r2, sp, #0x20 - ldrb r2, [r2, r0, lsl #1] - add r1, sp, #0x21 - strh r2, [sl] - ldrb r1, [r1, r0, lsl #1] - mov r0, #1 - strh r1, [sl, #2] - b _022E983C -_022E982C: - add r8, r8, #1 -_022E9830: - cmp r8, #3 - blt _022E964C - mov r0, #0 -_022E983C: - add sp, sp, #0xe20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_022E96E4 - - arm_func_start ov29_022E9844 -ov29_022E9844: ; 0x022E9844 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r8, r3 - mov sl, r0 - mov r0, #0 - str r0, [sp, #4] - str r1, [sp] - add r3, r8, #1 - mov r1, r0 - mov r0, r3, lsl #1 - mov sb, r2 - ldr r7, [sp, #0x30] - bl MemAlloc - mov r4, r0 - mov r1, #0 - b _022E9890 -_022E9884: - mov r0, r1, lsl #1 - strh r1, [r4, r0] - add r1, r1, #1 -_022E9890: - cmp r1, r8 - blt _022E9884 - cmp r7, #0 - beq _022E9918 - mov r0, #4 - bl DungeonRandInt - add r0, r0, #1 - mov r0, r0, lsl #0x10 - str r0, [sp, #8] - sub fp, r8, #1 - mov r6, #0 - b _022E990C -_022E98C0: - mov r5, #0 - b _022E98F8 -_022E98C8: - mov r0, r8 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - mov r3, r5, lsl #1 - mov r1, r0, asr #0xf - ldrsh r2, [r4, r3] - ldrsh r0, [r4, r1] - add r5, r5, #1 - mov r5, r5, lsl #0x10 - strh r0, [r4, r3] - strh r2, [r4, r1] - mov r5, r5, asr #0x10 -_022E98F8: - cmp r5, fp - blt _022E98C8 - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_022E990C: - ldr r0, [sp, #8] - cmp r6, r0, asr #16 - blt _022E98C0 -_022E9918: - mov r6, #0 - b _022E99D0 -_022E9920: - mov r0, r6, lsl #1 - ldrsh r0, [r4, r0] - mov r0, r0, lsl #2 - ldrsh r5, [sb, r0] - cmp r5, #0x63 - beq _022E99D8 - add r1, sb, r0 - ldr r0, [sp] - ldrsh r1, [r1, #2] - ldrsh r3, [r0] - ldrsh r2, [r0, #2] - add fp, r3, r5 - add r5, r2, r1 - mov r0, fp - mov r1, r5 - bl GetTile - ldrh r1, [r0] - tst r1, #0x800 - bne _022E99CC - cmp r7, #0 - beq _022E99A0 - ldrb r2, [r0, #7] - cmp r2, #0xff - beq _022E99CC - ldr r2, _022E99EC ; =0x02353538 - ldr r2, [r2] - add r2, r2, #0xcc00 - ldrsh r3, [r2, #0xe4] - cmp r3, fp - ldreqsh r2, [r2, #0xe6] - cmpeq r2, r5 - beq _022E99CC -_022E99A0: - and r1, r1, #3 - cmp r1, #1 - ldreq r1, [r0, #0x10] - cmpeq r1, #0 - ldreq r0, [r0, #0xc] - cmpeq r0, #0 - streqh fp, [sl] - streqh r5, [sl, #2] - moveq r0, #1 - streq r0, [sp, #4] - beq _022E99D8 -_022E99CC: - add r6, r6, #1 -_022E99D0: - cmp r6, r8 - blt _022E9920 -_022E99D8: - mov r0, r4 - bl MemFree - ldr r0, [sp, #4] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E99EC: .word 0x02353538 - arm_func_end ov29_022E9844 - - arm_func_start ov29_022E99F0 -ov29_022E99F0: ; 0x022E99F0 - stmdb sp!, {r3, lr} - str r2, [sp] - ldr r2, _022E9A08 ; =0x02351844 - mov r3, #0x19 - bl ov29_022E9844 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9A08: .word 0x02351844 - arm_func_end ov29_022E99F0 - - arm_func_start ov29_022E9A0C -ov29_022E9A0C: ; 0x022E9A0C - stmdb sp!, {r3, lr} - str r2, [sp] - ldr r2, _022E9A24 ; =0x023517DC - mov r3, #0x19 - bl ov29_022E9844 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9A24: .word 0x023517DC - arm_func_end ov29_022E9A0C - - arm_func_start ov29_022E9A28 -ov29_022E9A28: ; 0x022E9A28 - stmdb sp!, {r3, lr} - str r2, [sp] - ldr r2, _022E9A40 ; =0x023518AC - mov r3, #0x31 - bl ov29_022E9844 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9A40: .word 0x023518AC - arm_func_end ov29_022E9A28 - - arm_func_start TickStatusTurnCounter -TickStatusTurnCounter: ; 0x022E9A44 - ldrb r1, [r0] - cmp r1, #0x7f - moveq r0, r1 - bxeq lr - cmp r1, #0 - moveq r0, r1 - subne r1, r1, #1 - strneb r1, [r0] - andne r0, r1, #0xff - bx lr - arm_func_end TickStatusTurnCounter - - arm_func_start ov29_022E9A6C -ov29_022E9A6C: ; 0x022E9A6C - ldrh r2, [r0] - ldr r1, _022E9A98 ; =0x00007530 - cmp r2, r1 - moveq r0, r2 - bxeq lr - cmp r2, #0 - moveq r0, r2 - subne r1, r2, #1 - strneh r1, [r0] - ldrneh r0, [r0] - bx lr - .align 2, 0 -_022E9A98: .word 0x00007530 - arm_func_end ov29_022E9A6C - - arm_func_start ov29_022E9A9C -ov29_022E9A9C: ; 0x022E9A9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sb, r1 - ldr r8, [sb, #0xb4] - mov sl, r0 - mov r0, sb - mov r1, #1 - ldrb r4, [r8, #0x4c] - bl ov29_02300818 - cmp r0, #0 - beq _022E9B00 - ldr r0, _022E9CA0 ; =0x0235171C - mov r2, r4, lsl #2 - ldrsh r1, [r0, r2] - ldrsh r3, [sb, #4] - ldr r0, _022E9CA4 ; =0x0235171E - add r1, r1, r1, lsl #1 - add r1, r3, r1 - strh r1, [sl] - ldrsh r0, [r0, r2] - ldrsh r1, [sb, #6] - add r0, r0, r0, lsl #1 - add r0, r1, r0 - strh r0, [sl, #2] - b _022E9C98 -_022E9B00: - ldrsh r2, [r8, #0x5a] - mvn r0, #0 - cmp r2, r0 - ldreqsh r1, [r8, #0x5c] - cmpeq r1, r0 - bne _022E9C8C - ldr r0, _022E9CA8 ; =0x02353538 - ldrb r6, [r8, #0x4c] - ldr r1, [r0] - ldr r4, _022E9CAC ; =0x0235179C - add r0, r1, #0x3000 - ldrb r0, [r0, #0xe38] - ldr r3, _022E9CB0 ; =0x023517A0 - mov r5, r6, lsl #3 - cmp r0, #0 - ldrsh r0, [r3, r5] - ldr r2, _022E9CB4 ; =0x023517A2 - ldr r4, [r4, r6, lsl #3] - str r0, [sp, #0x14] - ldrsh r0, [r2, r5] - str r0, [sp, #0x10] - ldrsh r0, [sb, #4] - str r0, [sp, #0xc] - ldrsh r0, [sb, #6] - str r0, [sp, #8] - beq _022E9B80 - add r0, r1, #0x378 - add r0, r0, #0x12800 - str r0, [sp, #4] - mov r0, #0x14 - str r0, [sp] - b _022E9C44 -_022E9B80: - ldrb r0, [r8, #6] - cmp r0, #0 - bne _022E9BA4 - add r0, r1, #0x338 - add r0, r0, #0x12800 - str r0, [sp, #4] - mov r0, #0x10 - str r0, [sp] - b _022E9C44 -_022E9BA4: - add r0, r1, #0x328 - add r0, r0, #0x12800 - str r0, [sp, #4] - mov r0, #4 - str r0, [sp] - b _022E9C44 -_022E9BBC: - ldr r1, [sp, #0x14] - ldr r0, [sp, #0xc] - ldrsh r2, [r4, #2] - mla fp, r3, r1, r0 - ldr r1, [sp, #0x10] - ldr r0, [sp, #8] - mov r6, #0 - mla r5, r2, r1, r0 - b _022E9C34 -_022E9BE0: - ldr r0, [sp, #4] - ldr r7, [r0, r6, lsl #2] - mov r0, r7 - bl EntityIsValid__022E95F4 - cmp r0, #0 - beq _022E9C30 - ldrsh r0, [r7, #4] - cmp r0, fp - ldreqsh r0, [r7, #6] - cmpeq r0, r5 - bne _022E9C30 - mov r2, #0 - mov r1, r7 - mov r0, sb - mov r3, r2 - bl ov29_0230175C - cmp r0, #1 - streqh fp, [sl] - streqh r5, [sl, #2] - beq _022E9C98 -_022E9C30: - add r6, r6, #1 -_022E9C34: - ldr r0, [sp] - cmp r6, r0 - blt _022E9BE0 - add r4, r4, #4 -_022E9C44: - ldrsh r3, [r4] - cmp r3, #0x63 - bne _022E9BBC - ldrb r1, [r8, #0x4c] - ldr r0, _022E9CA0 ; =0x0235171C - ldrsh r2, [sb, #4] - mov r1, r1, lsl #2 - ldrsh r1, [r0, r1] - ldr r0, _022E9CA4 ; =0x0235171E - add r1, r2, r1, lsl #1 - strh r1, [sl] - ldrb r1, [r8, #0x4c] - ldrsh r2, [sb, #6] - mov r1, r1, lsl #2 - ldrsh r0, [r0, r1] - add r0, r2, r0, lsl #1 - strh r0, [sl, #2] - b _022E9C98 -_022E9C8C: - strh r2, [sl] - ldrsh r0, [r8, #0x5c] - strh r0, [sl, #2] -_022E9C98: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E9CA0: .word 0x0235171C -_022E9CA4: .word 0x0235171E -_022E9CA8: .word 0x02353538 -_022E9CAC: .word 0x0235179C -_022E9CB0: .word 0x023517A0 -_022E9CB4: .word 0x023517A2 - arm_func_end ov29_022E9A9C - - arm_func_start ov29_022E9CB8 -ov29_022E9CB8: ; 0x022E9CB8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _022E9F04 ; =0x0237C850 - ldr r0, _022E9F08 ; =0xFFFF000F - ldrh r2, [r1, #0x1a] - mov lr, #0 - and r2, r2, r0 - strh r2, [r1, #0x1a] - ldrh r2, [r1, #0x14] - bic r2, r2, #0x100 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - bic r2, r2, #0x200 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - bic r2, r2, #0xc00 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - bic r2, r2, #0x1000 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - bic r2, r2, #0x2000 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - orr r2, r2, #0x2000 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x14] - bic r2, r2, #0xc000 - strh r2, [r1, #0x14] - ldrh r2, [r1, #0x16] - and r2, r2, r0, asr #7 - strh r2, [r1, #0x16] - ldrh r2, [r1, #0x16] - bic r2, r2, #0x3e00 - strh r2, [r1, #0x16] - ldrh r2, [r1, #0x16] - bic r2, r2, #0xc000 - strh r2, [r1, #0x16] - ldrh r2, [r1, #0x16] - orr r2, r2, #0x4000 - strh r2, [r1, #0x16] - ldrh r2, [r1, #0x18] - and r0, r2, r0, asr #6 - strh r0, [r1, #0x18] - ldrh r0, [r1, #0x18] - bic r0, r0, #0xc00 - strh r0, [r1, #0x18] - ldrh r0, [r1, #0x18] - bic r0, r0, #0xf000 - strh r0, [r1, #0x18] - ldrh r0, [r1, #0x1a] - bic r0, r0, #1 - strh r0, [r1, #0x1a] - ldrh r0, [r1, #0x1a] - bic r0, r0, #2 - strh r0, [r1, #0x1a] - ldrh r0, [r1, #0x1a] - bic r0, r0, #4 - strh r0, [r1, #0x1a] -_022E9DA0: - mov r0, #0x48 - mul r5, lr, r0 - ldr r3, _022E9F0C ; =0x0237C888 - mov r8, #0x400 - ldr r2, _022E9F10 ; =0x02351628 - mov r1, #0x18 - mla r6, lr, r1, r2 - ldr r0, _022E9F14 ; =0x02351658 - add r4, r3, r5 - add r5, r0, r5 - mov ip, #0 - rsb r8, r8, #0 - mov r7, #0xc -_022E9DD4: - mul r3, ip, r7 - ldrh r2, [r4, r3] - add r1, r5, r3 - ldr r0, [r5, r3] - bic r2, r2, #0x100 - strh r2, [r4, r3] - ldrh r2, [r4, r3] - ldr sl, [r1, #4] - ldr sb, [r1, #8] - bic r1, r2, #0x200 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - mov r0, r0, lsl #0x1e - add r2, r4, r3 - bic r1, r1, #0xc00 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - mov sl, sl, lsl #0x1e - and sb, sb, r8, lsr #22 - bic r1, r1, #0x1000 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - bic r1, r1, #0x2000 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - orr r1, r1, #0x2000 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - bic r1, r1, #0xc000 - strh r1, [r4, r3] - ldrh r1, [r4, r3] - orr r0, r1, r0, lsr #16 - strh r0, [r4, r3] - ldrh r0, [r2, #2] - bic r0, r0, #0x3e00 - strh r0, [r2, #2] - ldrh r0, [r2, #2] - bic r0, r0, #0xc000 - strh r0, [r2, #2] - ldrh r0, [r2, #2] - orr r0, r0, sl, lsr #16 - strh r0, [r2, #2] - ldrh r0, [r2, #4] - and r0, r0, r8 - strh r0, [r2, #4] - ldrh r0, [r2, #4] - orr r0, r0, sb - strh r0, [r2, #4] - ldrh r0, [r2, #4] - bic r0, r0, #0xc00 - strh r0, [r2, #4] - ldrh r0, [r2, #4] - orr r0, r0, #0xc00 - strh r0, [r2, #4] - ldrh r3, [r2, #4] - mov r1, ip, lsl #2 - add r0, r6, ip, lsl #2 - bic r3, r3, #0xf000 - strh r3, [r2, #4] - ldrh r3, [r2, #6] - add ip, ip, #1 - ldrh r1, [r6, r1] - bic r3, r3, #1 - strh r3, [r2, #6] - ldrh r3, [r2, #6] - ldrh r0, [r0, #2] - cmp ip, #6 - bic r3, r3, #2 - strh r3, [r2, #6] - strh r1, [r2, #8] - strh r0, [r2, #0xa] - blt _022E9DD4 - add lr, lr, #1 - cmp lr, #2 - blt _022E9DA0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022E9F04: .word 0x0237C850 -_022E9F08: .word 0xFFFF000F -_022E9F0C: .word 0x0237C888 -_022E9F10: .word 0x02351628 -_022E9F14: .word 0x02351658 - arm_func_end ov29_022E9CB8 - - arm_func_start ov29_022E9F18 -ov29_022E9F18: ; 0x022E9F18 - stmdb sp!, {r3, lr} - ldr r0, _022E9F70 ; =0x000003E7 - ldr r1, _022E9F74 ; =0x0237C850 - mov r2, #0 - str r0, [r1, #4] - ldr r0, _022E9F78 ; =0x02353560 - str r2, [r1, #0x10] - strb r2, [r0, #2] - strh r2, [r1, #0x1c] - bl ov29_022E9CB8 - ldr r2, _022E9F7C ; =0x02353538 - mov r3, #1 - ldr r0, [r2] - ldr r1, _022E9F74 ; =0x0237C850 - add r0, r0, #0x1a000 - strb r3, [r0, #0x24c] - ldr r0, [r2] - mov r2, #0 - add r0, r0, #0x1a000 - strb r3, [r0, #0x24d] - str r2, [r1, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9F70: .word 0x000003E7 -_022E9F74: .word 0x0237C850 -_022E9F78: .word 0x02353560 -_022E9F7C: .word 0x02353538 - arm_func_end ov29_022E9F18 - - arm_func_start ov29_022E9F80 -ov29_022E9F80: ; 0x022E9F80 - ldr r2, _022E9F98 ; =0x02353560 - mov r3, #0 - strb r0, [r2] - str r1, [r2, #8] - str r3, [r2, #0xc] - bx lr - .align 2, 0 -_022E9F98: .word 0x02353560 - arm_func_end ov29_022E9F80 - - arm_func_start ov29_022E9F9C -ov29_022E9F9C: ; 0x022E9F9C - ldr r0, _022E9FBC ; =0x02353560 - ldrb r1, [r0, #1] - cmp r1, #0 - ldrneb r2, [r0, #5] - movne r1, #0 - strneb r2, [r0, #6] - strneb r1, [r0, #1] - bx lr - .align 2, 0 -_022E9FBC: .word 0x02353560 - arm_func_end ov29_022E9F9C - - arm_func_start ov29_022E9FC0 -ov29_022E9FC0: ; 0x022E9FC0 - ldr r0, _022E9FCC ; =0x02353560 - ldrb r0, [r0, #3] - bx lr - .align 2, 0 -_022E9FCC: .word 0x02353560 - arm_func_end ov29_022E9FC0 - - arm_func_start ov29_022E9FD0 -ov29_022E9FD0: ; 0x022E9FD0 - ldr r1, _022E9FDC ; =0x02353560 - strb r0, [r1, #3] - bx lr - .align 2, 0 -_022E9FDC: .word 0x02353560 - arm_func_end ov29_022E9FD0 - - arm_func_start AdvanceFrame -AdvanceFrame: ; 0x022E9FE0 - stmdb sp!, {r3, lr} - ldr r1, _022EA004 ; =0x02353560 - ldrb r1, [r1, #3] - cmp r1, #0 - beq _022E9FFC - bl ov29_022EA2A4 - ldmia sp!, {r3, pc} -_022E9FFC: - bl ov29_022EA324 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EA004: .word 0x02353560 - arm_func_end AdvanceFrame - - arm_func_start ov29_022EA008 -ov29_022EA008: ; 0x022EA008 - stmdb sp!, {r3, lr} - ldr r0, _022EA290 ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _022EA294 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA27C - bl ov29_0234B854 - bl ov29_022E886C - ldr r0, _022EA290 ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - beq _022EA0F8 - mov r0, #1 - bl ov29_022E2EC4 - ldr r1, _022EA290 ; =0x02353538 - ldr r0, _022EA298 ; =0x0001A224 - ldr ip, [r1] - add r1, r0, #2 - add r2, ip, #0x1a000 - ldrsh r3, [ip, r1] - ldr r1, [r2, #0x230] - ldrsh r0, [ip, r0] - sub r1, r3, r1 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r2, #1 - mov r3, #0 - bl sub_02051E20 - ldr r1, _022EA290 ; =0x02353538 - ldr r0, [r1] - add ip, r0, #0x1a000 - ldrb r0, [ip, #0x251] - cmp r0, #0 - beq _022EA0DC - mov r0, #2 - strb r0, [ip, #0x23c] - ldr r0, _022EA298 ; =0x0001A224 - ldr ip, [r1] - add r1, r0, #2 - add r2, ip, #0x1a000 - ldrsh r3, [ip, r1] - ldr r1, [r2, #0x230] - mov r2, #0 - sub r1, r3, r1 - mov r1, r1, lsl #0x10 - ldrsh r0, [ip, r0] - mov r3, r2 - mov r1, r1, asr #0x10 - bl sub_02051E20 - b _022EA0F8 -_022EA0DC: - mov r0, #0 - mov lr, #3 - mov r1, r0 - mov r2, r0 - mov r3, r0 - strb lr, [ip, #0x23c] - bl sub_02051E20 -_022EA0F8: - bl ov29_0230473C - bl ov29_022E1854 - bl ov29_022E335C - ldr r0, _022EA290 ; =0x02353538 - ldr r1, [r0] - ldrsh r0, [r1, #0x1c] - cmp r0, #0x64 - addlt r0, r0, #1 - strlth r0, [r1, #0x1c] - ldr r0, _022EA29C ; =0x0237C850 - ldr r0, [r0, #4] - cmp r0, #0 - cmpne r0, #3 - cmpne r0, #0xc - bne _022EA140 - mov r0, #0 - bl ov29_02339A24 - b _022EA154 -_022EA140: - bl sub_0204AEA0 - cmp r0, #3 - bne _022EA154 - mov r0, #1 - bl ov29_02339A24 -_022EA154: - bl ov29_022EA64C - bl ov29_022EA80C - bl ov29_02335A10 - ldr r1, _022EA294 ; =0x02353560 - ldrb r0, [r1] - cmp r0, #0 - beq _022EA1D0 - ldr r0, _022EA290 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r2, [r0, #0x24a] - cmp r2, #0 - beq _022EA1B8 - bl ov29_022DE11C - cmp r0, #0 - beq _022EA1D0 - ldr r0, _022EA290 ; =0x02353538 - mov r2, #0 - ldr r0, [r0] - ldr r1, _022EA294 ; =0x02353560 - add r0, r0, #0x1a000 - strb r2, [r0, #0x24a] - ldr r0, [r1, #8] - str r0, [r1, #0xc] - b _022EA1D0 -_022EA1B8: - ldr r2, [r1, #0xc] - sub r2, r2, #1 - str r2, [r1, #0xc] - cmp r2, #0 - movle r1, #1 - strleb r1, [r0, #0x24a] -_022EA1D0: - ldr r0, _022EA290 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x24a] - cmp r0, #0 - beq _022EA214 - bl ov29_0234B4F4 - cmp r0, #3 - beq _022EA214 - ldr r1, _022EA290 ; =0x02353538 - ldr r0, _022EA294 ; =0x02353560 - ldr r1, [r1] - ldrb r3, [r0, #2] - add r2, r1, #0x1e0 - mov r0, #0xa0 - mov r1, #0x20 - bl ov29_022DE134 -_022EA214: - ldr r1, _022EA290 ; =0x02353538 - ldr r0, _022EA2A0 ; =0x0001A21C - ldr r2, [r1] - add r1, r0, #2 - ldrsh r0, [r2, r0] - ldrsh r1, [r2, r1] - bl GetTile - cmp r0, #0 - beq _022EA260 - ldr r2, _022EA290 ; =0x02353538 - ldrb r1, [r0, #7] - ldr r2, [r2] - cmp r2, #0 - addne r0, r2, #0xc4 - addne r0, r0, #0x4000 - add r2, r2, #0x21c - moveq r0, #0 - add r2, r2, #0x1a000 - bl ov29_022ED800 -_022EA260: - bl ov29_02338AC4 - bl ov29_022E8C10 - ldr r0, _022EA290 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x224 - add r0, r0, #0x1a000 - bl ov29_022DD8B4 -_022EA27C: - ldr r0, _022EA29C ; =0x0237C850 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EA290: .word 0x02353538 -_022EA294: .word 0x02353560 -_022EA298: .word 0x0001A224 -_022EA29C: .word 0x0237C850 -_022EA2A0: .word 0x0001A21C - arm_func_end ov29_022EA008 - - arm_func_start ov29_022EA2A4 -ov29_022EA2A4: ; 0x022EA2A4 - stmdb sp!, {r3, lr} - ldr r0, _022EA318 ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - bne _022EA2C0 - bl ov29_022DDEF8 - ldmia sp!, {r3, pc} -_022EA2C0: - ldr r0, _022EA31C ; =0x02353560 - ldrb r0, [r0, #6] - cmp r0, #0 - ldrne r0, _022EA320 ; =0x0237C850 - ldrne r1, [r0, #0x10] - addne r1, r1, #1 - strne r1, [r0, #0x10] - bl ov29_022DDEF8 - ldr r0, _022EA318 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - strb r1, [r0, #0x248] - bl ov29_0233A290 - ldr r0, _022EA31C ; =0x02353560 - ldrb r0, [r0, #6] - cmp r0, #0 - ldrne r0, _022EA320 ; =0x0237C850 - ldrne r1, [r0, #0x10] - subne r1, r1, #1 - strne r1, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EA318: .word 0x02353538 -_022EA31C: .word 0x02353560 -_022EA320: .word 0x0237C850 - arm_func_end ov29_022EA2A4 - - arm_func_start ov29_022EA324 -ov29_022EA324: ; 0x022EA324 - stmdb sp!, {r3, lr} - ldr r0, _022EA368 ; =0x02353560 - ldrb r0, [r0, #6] - cmp r0, #0 - ldrne r0, _022EA36C ; =0x0237C850 - ldrne r1, [r0, #0x10] - addne r1, r1, #1 - strne r1, [r0, #0x10] - bl ov29_022DDEF8 - ldr r0, _022EA368 ; =0x02353560 - ldrb r0, [r0, #6] - cmp r0, #0 - ldrne r0, _022EA36C ; =0x0237C850 - ldrne r1, [r0, #0x10] - subne r1, r1, #1 - strne r1, [r0, #0x10] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EA368: .word 0x02353560 -_022EA36C: .word 0x0237C850 - arm_func_end ov29_022EA324 - - arm_func_start ov29_022EA370 -ov29_022EA370: ; 0x022EA370 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - ldr r4, _022EA3B0 ; =0x02353560 - b _022EA3A4 -_022EA384: - ldrb r0, [r4, #3] - cmp r0, #0 - mov r0, r5 - beq _022EA39C - bl ov29_022EA2A4 - b _022EA3A0 -_022EA39C: - bl ov29_022EA324 -_022EA3A0: - sub r6, r6, #1 -_022EA3A4: - cmp r6, #0 - bne _022EA384 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EA3B0: .word 0x02353560 - arm_func_end ov29_022EA370 - - arm_func_start ov29_022EA3B4 -ov29_022EA3B4: ; 0x022EA3B4 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022EA3F0 ; =0x0237C694 - ldr r5, _022EA3F4 ; =0x02353560 - mov r6, r0 -_022EA3C4: - ldrb r0, [r5, #3] - cmp r0, #0 - mov r0, r6 - beq _022EA3DC - bl ov29_022EA2A4 - b _022EA3E0 -_022EA3DC: - bl ov29_022EA324 -_022EA3E0: - ldrh r0, [r4] - tst r0, #0xf0 - bne _022EA3C4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EA3F0: .word 0x0237C694 -_022EA3F4: .word 0x02353560 - arm_func_end ov29_022EA3B4 - - arm_func_start ov29_022EA3F8 -ov29_022EA3F8: ; 0x022EA3F8 - ldr ip, _022EA404 ; =ov29_022DE638 - mov r0, #0x100 - bx ip - .align 2, 0 -_022EA404: .word ov29_022DE638 - arm_func_end ov29_022EA3F8 - - arm_func_start ov29_022EA408 -ov29_022EA408: ; 0x022EA408 - ldr r0, _022EA414 ; =0x0237C850 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_022EA414: .word 0x0237C850 - arm_func_end ov29_022EA408 - - arm_func_start ov29_022EA418 -ov29_022EA418: ; 0x022EA418 - ldr r1, _022EA424 ; =0x02353560 - strb r0, [r1, #4] - bx lr - .align 2, 0 -_022EA424: .word 0x02353560 - arm_func_end ov29_022EA418 - - arm_func_start ov29_022EA428 -ov29_022EA428: ; 0x022EA428 - stmdb sp!, {r4, lr} - ldr r1, _022EA620 ; =0x0237C850 - mov r4, r0 - ldr r0, [r1, #4] - cmp r4, r0 - ldmeqia sp!, {r4, pc} - cmp r4, #0xd - bgt _022EA48C - cmp r4, #0 - addge pc, pc, r4, lsl #2 - b _022EA614 -_022EA454: ; jump table - b _022EA4B4 ; case 0 - b _022EA498 ; case 1 - b _022EA540 ; case 2 - b _022EA4E0 ; case 3 - b _022EA540 ; case 4 - b _022EA570 ; case 5 - b _022EA508 ; case 6 - b _022EA524 ; case 7 - b _022EA5C4 ; case 8 - b _022EA5E0 ; case 9 - b _022EA614 ; case 10 - b _022EA5FC ; case 11 - b _022EA614 ; case 12 - b _022EA594 ; case 13 -_022EA48C: - ldr r0, _022EA624 ; =0x000003E7 - cmp r4, r0 - b _022EA614 -_022EA498: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - b _022EA614 -_022EA4B4: - ldr r0, _022EA628 ; =0x02353560 - ldrb r1, [r0, #3] - cmp r1, #0 - beq _022EA614 - ldrb r0, [r0, #4] - cmp r0, #0 - bne _022EA614 - bl ov29_02339CE8 - mov r0, #0 - bl ov29_02339FF4 - b _022EA614 -_022EA4E0: - ldr r0, _022EA628 ; =0x02353560 - ldrb r1, [r0, #3] - cmp r1, #0 - beq _022EA614 - ldrb r0, [r0, #4] - cmp r0, #0 - bne _022EA614 - mov r0, #1 - bl ov29_02339FF4 - b _022EA614 -_022EA508: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - b _022EA614 -_022EA524: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - b _022EA614 -_022EA540: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - bl sub_0204AEC0 - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0233A248 - b _022EA614 -_022EA570: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - mov r0, #0 - bl ov29_0233A248 - b _022EA614 -_022EA594: - ldr r0, _022EA628 ; =0x02353560 - ldrb r1, [r0, #3] - cmp r1, #0 - beq _022EA5BC - ldrb r0, [r0, #4] - cmp r0, #0 - bne _022EA5BC - bl ov29_02339CE8 - mov r0, #1 - bl ov29_02339FF4 -_022EA5BC: - mov r4, #0 - b _022EA614 -_022EA5C4: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - b _022EA614 -_022EA5E0: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 - b _022EA614 -_022EA5FC: - ldr r0, _022EA628 ; =0x02353560 - ldrb r0, [r0, #3] - cmp r0, #0 - beq _022EA614 - mov r0, #0 - bl ov29_0234B1A4 -_022EA614: - ldr r0, _022EA620 ; =0x0237C850 - str r4, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_022EA620: .word 0x0237C850 -_022EA624: .word 0x000003E7 -_022EA628: .word 0x02353560 - arm_func_end ov29_022EA428 - - arm_func_start ov29_022EA62C -ov29_022EA62C: ; 0x022EA62C - ldr r1, _022EA644 ; =0x0237C850 - mov r2, #0xa - ldr ip, _022EA648 ; =ov29_0234B1A4 - mov r0, #0 - str r2, [r1, #4] - bx ip - .align 2, 0 -_022EA644: .word 0x0237C850 -_022EA648: .word ov29_0234B1A4 - arm_func_end ov29_022EA62C - - arm_func_start ov29_022EA64C -ov29_022EA64C: ; 0x022EA64C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r0, _022EA708 ; =0x0237C850 - mov r2, #0 - ldr r1, [r0, #8] - adds r1, r1, #1 - str r1, [r0, #8] - movmi r1, #0 - strmi r1, [r0, #8] - ldr r0, _022EA708 ; =0x0237C850 - ldr r1, [r0, #8] - cmp r1, #0xc - movge r1, #0 - strge r1, [r0, #8] - ldr r0, _022EA708 ; =0x0237C850 - mov r1, #0xb - ldr r3, [r0, #8] - mov r0, r3, asr #1 - add r0, r3, r0, lsr #30 - mov r0, r0, asr #2 - add ip, r0, r0, lsl #1 - str r2, [sp] - str r1, [sp, #4] - ldr r0, _022EA70C ; =0x02353540 - ldr r1, _022EA710 ; =0x020AFC4C - ldr r2, [r0] - ldr r0, [r1] - add r1, r2, ip, lsl #8 - mov r2, #0x1e8 - mov r3, #0x100 - mov r4, ip, lsl #8 - bl sub_0201BAC8 - mov r0, #0 - str r0, [sp] - mov r1, #0xb - str r1, [sp, #4] - ldr r0, _022EA70C ; =0x02353540 - ldr r1, _022EA710 ; =0x020AFC4C - ldr ip, [r0] - add r3, r4, #0x100 - ldr r0, [r1] - add r1, ip, r3 - ldr r2, _022EA714 ; =0x000001EA - mov r3, #0x200 - bl sub_0201BAC8 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022EA708: .word 0x0237C850 -_022EA70C: .word 0x02353540 -_022EA710: .word 0x020AFC4C -_022EA714: .word 0x000001EA - arm_func_end ov29_022EA64C - - arm_func_start ov29_022EA718 -ov29_022EA718: ; 0x022EA718 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022EA7FC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, #0 - mov fp, #0x29 - ldr r5, _022EA800 ; =0x0237C850 - ldr r4, _022EA804 ; =0x02353560 - b _022EA78C -_022EA75C: - ldrsh r0, [r5, #0x1c] - cmp r0, #0 - beq _022EA794 - ldrb r0, [r4, #3] - cmp r0, #0 - beq _022EA780 - mov r0, fp - bl ov29_022EA2A4 - b _022EA788 -_022EA780: - mov r0, #0x29 - bl ov29_022EA324 -_022EA788: - add r6, r6, #1 -_022EA78C: - cmp r6, #0x14 - blt _022EA75C -_022EA794: - ldr r1, _022EA800 ; =0x0237C850 - mov r0, #0x3c - str sl, [r1, #0x20] - strb r8, [r1, #0x24] - strh r0, [r1, #0x1c] - str sb, [r1, #0x28] - ldrh r2, [sb, #0x26] - mov r0, #0 - cmp r7, #0 - str r2, [r1, #0x2c] - str r0, [r1, #0x30] - str r0, [r1, #0x34] - bge _022EA7F4 - ldr r0, _022EA808 ; =0xFFFFFC19 - cmp sl, r0 - movlt r0, #6 - strlth r0, [r1, #0x1e] - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sl, #0 - movge r0, #0xa - strgeh r0, [r1, #0x1e] - movlt r0, #3 - strlth r0, [r1, #0x1e] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022EA7F4: - strh r7, [r1, #0x1e] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EA7FC: .word 0x02353538 -_022EA800: .word 0x0237C850 -_022EA804: .word 0x02353560 -_022EA808: .word 0xFFFFFC19 - arm_func_end ov29_022EA718 - - arm_func_start ov29_022EA80C -ov29_022EA80C: ; 0x022EA80C - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r0, _022EA95C ; =0x0237C850 - ldrsh r1, [r0, #0x1c] - cmp r1, #0 - beq _022EA954 - ldr r0, [r0, #0x28] - cmp r0, #0 - moveq r0, #0 - beq _022EA848 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_022EA848: - cmp r0, #0 - ldreq r0, _022EA95C ; =0x0237C850 - moveq r1, #0 - streqh r1, [r0, #0x1c] - beq _022EA954 - ldr r3, _022EA95C ; =0x0237C850 - ldr r5, [r3, #0x28] - ldr r1, [r3, #0x2c] - ldrh r0, [r5, #0x26] - cmp r1, r0 - movne r0, #0 - strneh r0, [r3, #0x1c] - bne _022EA954 - ldrsh r2, [r3, #0x1c] - ldr r1, _022EA960 ; =0x02353538 - ldr r0, _022EA964 ; =0x0001A224 - sub r2, r2, #1 - strh r2, [r3, #0x1c] - ldr r4, [r3, #0x34] - add r2, r0, #2 - sub lr, r4, #0x2e - str lr, [r3, #0x34] - ldr r4, [r5, #0xb4] - ldr ip, [r1] - add r1, r4, #0x100 - ldrsh r5, [r1, #0x82] - ldrsh r4, [r1, #0x84] - ldr r1, [r3, #0x30] - ldrsh r0, [ip, r0] - add r5, r5, r1, asr #8 - ldrsh r1, [ip, r2] - add r4, r4, lr, asr #8 - sub r2, r4, #0x18 - sub r4, r5, r0 - mvn r0, #0x1f - cmp r4, r0 - sub r5, r2, r1 - addge r0, r0, #0x18 - cmpge r5, r0 - blt _022EA954 - cmp r4, #0xff - cmplt r5, #0xc0 - bge _022EA954 - ldrsh r1, [r3, #0x1c] - mov r0, #0xff - cmp r1, #0x1f - bge _022EA910 - rsb r0, r1, r1, lsl #8 - mov r1, #0x1f - bl DivideInt -_022EA910: - ldr ip, _022EA95C ; =0x0237C850 - mov r1, r4, lsl #0x10 - ldrh r4, [ip, #0x1e] - mov r2, r5, lsl #0x10 - mov r3, r0, lsl #0x10 - str r4, [sp] - ldr r4, [ip, #0x20] - mov r0, r1, asr #0x10 - mov r1, r4, lsl #0x10 - mov r1, r1, asr #0x10 - str r1, [sp, #4] - ldrb r4, [ip, #0x24] - mov r1, r2, asr #0x10 - mov r3, r3, asr #0x10 - mov r2, #0xff - str r4, [sp, #8] - bl ov29_02335F40 -_022EA954: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022EA95C: .word 0x0237C850 -_022EA960: .word 0x02353538 -_022EA964: .word 0x0001A224 - arm_func_end ov29_022EA80C - - arm_func_start ov29_022EA968 -ov29_022EA968: ; 0x022EA968 - orr r1, r0, #1 - ldr r0, _022EA97C ; =0x02353570 - bic r1, r1, #0xff000000 - str r1, [r0, #8] - bx lr - .align 2, 0 -_022EA97C: .word 0x02353570 - arm_func_end ov29_022EA968 - - arm_func_start GenerateDungeonRngSeed -GenerateDungeonRngSeed: ; 0x022EA980 - ldr r2, _022EA9C4 ; =0x02353570 - mov r1, #0x10000 - ldr r3, [r2, #8] - ldr r0, _022EA9C8 ; =0x5D588B65 - rsb r1, r1, #0 - mul ip, r3, r0 - add ip, ip, #1 - mul r0, ip, r0 - add r3, r0, #1 - mov r0, ip, lsr #0x10 - mov r0, r0, lsl #0x10 - and r1, r3, r1 - orr r0, r1, r0, lsr #16 - bic r0, r0, #0xff000000 - str r3, [r2, #8] - orr r0, r0, #1 - bx lr - .align 2, 0 -_022EA9C4: .word 0x02353570 -_022EA9C8: .word 0x5D588B65 - arm_func_end GenerateDungeonRngSeed - - arm_func_start GetDungeonRngPreseed -GetDungeonRngPreseed: ; 0x022EA9CC - ldr r0, _022EA9D8 ; =0x02353570 - ldr r0, [r0, #8] - bx lr - .align 2, 0 -_022EA9D8: .word 0x02353570 - arm_func_end GetDungeonRngPreseed - - arm_func_start SetDungeonRngPreseed -SetDungeonRngPreseed: ; 0x022EA9DC - ldr r1, _022EA9E8 ; =0x02353570 - str r0, [r1, #8] - bx lr - .align 2, 0 -_022EA9E8: .word 0x02353570 - arm_func_end SetDungeonRngPreseed - - arm_func_start InitDungeonRng -InitDungeonRng: ; 0x022EA9EC - ldr r1, _022EAA18 ; =0x02353570 - orr r2, r0, #1 - str r2, [r1, #0xc] - mov r2, #0 - str r2, [r1, #4] - ldr r1, _022EAA1C ; =0x02353584 -_022EAA04: - str r0, [r1, r2, lsl #2] - add r2, r2, #1 - cmp r2, #5 - blt _022EAA04 - bx lr - .align 2, 0 -_022EAA18: .word 0x02353570 -_022EAA1C: .word 0x02353584 - arm_func_end InitDungeonRng - - arm_func_start DungeonRand16Bit -DungeonRand16Bit: ; 0x022EAA20 - stmdb sp!, {r3, lr} - ldr r1, _022EAA88 ; =0x02353570 - ldrb r0, [r1] - cmp r0, #0 - ldr r0, _022EAA8C ; =0x5D588B65 - beq _022EAA5C - ldr lr, [r1, #0x10] - ldr r3, _022EAA90 ; =0x02353584 - ldr r1, _022EAA94 ; =0x00269EC3 - ldr r2, [r3, lr, lsl #2] - umull ip, r0, r2, r0 - adds r1, ip, r1 - mov r0, r1, lsl #0x10 - str r1, [r3, lr, lsl #2] - b _022EAA80 -_022EAA5C: - ldr r2, [r1, #4] - add r2, r2, #1 - str r2, [r1, #4] - ldr r2, [r1, #0xc] - mul r0, r2, r0 - add r2, r0, #1 - mov r0, r2, lsr #0x10 - mov r0, r0, lsl #0x10 - str r2, [r1, #0xc] -_022EAA80: - mov r0, r0, lsr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EAA88: .word 0x02353570 -_022EAA8C: .word 0x5D588B65 -_022EAA90: .word 0x02353584 -_022EAA94: .word 0x00269EC3 - arm_func_end DungeonRand16Bit - - arm_func_start DungeonRandInt -DungeonRandInt: ; 0x022EAA98 - stmdb sp!, {r4, lr} - mov r4, r0 - bl DungeonRand16Bit - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mul r0, r1, r4 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - ldmia sp!, {r4, pc} - arm_func_end DungeonRandInt - - arm_func_start DungeonRandRange -DungeonRandRange: ; 0x022EAAC0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, r4 - ldmeqia sp!, {r3, r4, r5, pc} - bge _022EAAFC - bl DungeonRand16Bit - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - sub r0, r4, r5 - mul r0, r1, r0 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - add r0, r5, r0, lsr #16 - ldmia sp!, {r3, r4, r5, pc} -_022EAAFC: - bl DungeonRand16Bit - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - sub r0, r5, r4 - mul r0, r1, r0 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - add r0, r4, r0, lsr #16 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DungeonRandRange diff --git a/asm/overlay_29_022E1A40.s b/asm/overlay_29_022E1A40.s new file mode 100644 index 00000000..c6855477 --- /dev/null +++ b/asm/overlay_29_022E1A40.s @@ -0,0 +1,1874 @@ + .include "asm/macros.inc" + .include "overlay_29_022E1A40.inc" + + .text + + arm_func_start ov29_022E1A40 +ov29_022E1A40: ; 0x022E1A40 + cmp r1, #0 + ldrne r2, [r1] + strne r2, [r0, #0xc] + ldrne r1, [r1, #4] + bne _022E1A7C + ldrsh r2, [r0, #4] + mov r1, #0x18 + smulbb r2, r2, r1 + add r2, r2, #0xc + mov r2, r2, lsl #8 + str r2, [r0, #0xc] + ldrsh r2, [r0, #6] + smulbb r1, r2, r1 + add r1, r1, #0x10 + mov r1, r1, lsl #8 +_022E1A7C: + str r1, [r0, #0x10] + bx lr + arm_func_end ov29_022E1A40 + + arm_func_start ov29_022E1A84 +ov29_022E1A84: ; 0x022E1A84 + str r1, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + arm_func_end ov29_022E1A84 + + arm_func_start ov29_022E1A90 +ov29_022E1A90: ; 0x022E1A90 + ldr r3, [r0, #0xc] + add r1, r3, r1 + str r1, [r0, #0xc] + ldr r1, [r0, #0x10] + add r1, r1, r2 + str r1, [r0, #0x10] + bx lr + arm_func_end ov29_022E1A90 + + arm_func_start ov29_022E1AAC +ov29_022E1AAC: ; 0x022E1AAC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + bl GetSpriteSize + mov r4, r0 + mov r0, r5 + bl ov29_022DE954 + cmp r0, #0 + movne r4, r4, lsl #1 + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E1AAC + + arm_func_start ov29_022E1AD4 +ov29_022E1AD4: ; 0x022E1AD4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__022E1A1C + cmp r0, #0 + ldrne r0, [r4, #0xb4] + ldrneb r0, [r0, #0x17b] + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E1AD4 + + arm_func_start ov29_022E1AF4 +ov29_022E1AF4: ; 0x022E1AF4 + ldr r2, _022E1B24 ; =0x0237C754 + mov r3, #0 + add ip, r2, r0 + mov r2, #1 + b _022E1B18 +_022E1B08: + add r0, r3, #1 + mov r0, r0, lsl #0x10 + strb r2, [ip, r3] + mov r3, r0, lsr #0x10 +_022E1B18: + cmp r3, r1 + blo _022E1B08 + bx lr + .align 2, 0 +_022E1B24: .word 0x0237C754 + arm_func_end ov29_022E1AF4 + + arm_func_start ov29_022E1B28 +ov29_022E1B28: ; 0x022E1B28 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, #0 + mov r8, r0 + mov r5, r4 +_022E1B38: + ldr r0, _022E1C04 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + beq _022E1BD8 + ldr r0, [r7, #0xb4] + ldrsh r0, [r0, #4] + bl GetSpriteSize + mov r6, r0 + ldrb r0, [r7, #0xaa] + bl ov29_022DE954 + cmp r0, #0 + add r0, r4, #0x1a + strh r0, [r7, #0xac] + ldr r0, [r7, #0xb4] + movne r6, r6, lsl #1 + strb r4, [r0, #0x17a] + ldr r0, [r7, #0xb4] + mov r2, #0 + strb r6, [r0, #0x17b] + mov r1, #1 + ldr r0, _022E1C08 ; =0x0237C754 + b _022E1BB4 +_022E1BA4: + cmp r4, #0x48 + strltb r1, [r0, r4] + addlt r4, r4, #1 + add r2, r2, #1 +_022E1BB4: + cmp r2, r6 + blt _022E1BA4 + cmp r8, #0 + beq _022E1BD8 + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 +_022E1BD8: + add r5, r5, #1 + cmp r5, #4 + blt _022E1B38 + mov r1, #0 + ldr r0, _022E1C08 ; =0x0237C754 + b _022E1BF8 +_022E1BF0: + strb r1, [r0, r4] + add r4, r4, #1 +_022E1BF8: + cmp r4, #0x48 + blt _022E1BF0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E1C04: .word 0x02353538 +_022E1C08: .word 0x0237C754 + arm_func_end ov29_022E1B28 + + arm_func_start ov29_022E1C0C +ov29_022E1C0C: ; 0x022E1C0C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + bl EntityIsValid__022E1A1C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, [r7, #0xb4] + ldrb r0, [r4, #6] + cmp r0, #0 + ldrne r5, _022E1C7C ; =0x0237C79C + ldreq r5, _022E1C80 ; =0x0237C754 + cmp r6, #0 + beq _022E1C48 + ldrb r0, [r7, #0xaa] + bl ov29_022DEA1C +_022E1C48: + mov r3, #0 + mov r2, r3 + b _022E1C6C +_022E1C54: + ldrb r1, [r4, #0x17a] + add r0, r3, #1 + mov r0, r0, lsl #0x10 + add r1, r5, r1 + strb r2, [r3, r1] + mov r3, r0, asr #0x10 +_022E1C6C: + ldrb r0, [r4, #0x17b] + cmp r3, r0 + blt _022E1C54 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E1C7C: .word 0x0237C79C +_022E1C80: .word 0x0237C754 + arm_func_end ov29_022E1C0C + + arm_func_start ov29_022E1C84 +ov29_022E1C84: ; 0x022E1C84 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + mov r0, r2 + mov r6, r1 + mvn r4, #0 + bl GetSpriteSize + mov r5, r0 + ldrsh r0, [sp, #0x18] + cmp r0, #0 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + bl ov29_022DE954 + cmp r0, #0 + movne r5, r5, lsl #1 + mov r3, #0 + rsb ip, r5, #0x48 + mov r2, r3 + ldr r1, _022E1D28 ; =0x0237C754 + b _022E1D04 +_022E1CD0: + mov r8, r2 + add lr, r1, r3 + b _022E1CEC +_022E1CDC: + ldrb r0, [lr, r8] + cmp r0, #0 + bne _022E1CF4 + add r8, r8, #1 +_022E1CEC: + cmp r8, r5 + blt _022E1CDC +_022E1CF4: + cmp r8, r5 + moveq r4, r3 + beq _022E1D0C + add r3, r3, #1 +_022E1D04: + cmp r3, ip + ble _022E1CD0 +_022E1D0C: + mvn r0, #0 + cmp r4, r0 + moveq r0, #0 + strne r4, [r7] + strne r5, [r6] + movne r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E1D28: .word 0x0237C754 + arm_func_end ov29_022E1C84 + + arm_func_start ov29_022E1D2C +ov29_022E1D2C: ; 0x022E1D2C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r8, r0 + mvn r1, #0 + mov r0, #1 + str r1, [sp, #8] + bl ov29_022DEA10 + mov r6, r0 + mov r1, r8 + mov r0, #0 + bl ov29_022F9408 + bl GetSpriteIndex__022F7388 + mov r4, r0 + add r0, sp, #8 + add r1, sp, #4 + mov r2, r8 + mov r3, r4 + str r6, [sp] + bl ov29_022E1C84 + cmp r0, #0 + moveq r0, #0 + beq _022E1EB8 + mov r5, #0 + ldr sb, _022E1EC0 ; =0x02353538 + b _022E1EAC +_022E1D90: + ldr r0, [sb] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + bne _022E1EA8 + mov r0, #1 + str r0, [r7] + ldr r0, _022E1EC0 ; =0x02353538 + strb r5, [r7, #0x24] + ldr r0, [r0] + add r1, r5, r5, lsl #3 + add r0, r0, #0x3f4 + add r0, r0, #0x400 + add r0, r0, r1, lsl #6 + str r0, [r7, #0xb4] + strh r8, [r0, #2] + mov r1, r8 + mov r0, #0 + bl ov29_022F9408 + ldr r1, [r7, #0xb4] + mov r2, #0 + strh r0, [r1, #4] + ldr r1, [r7, #0xb4] + and r0, r6, #0xff + strb r2, [r1, #6] + ldr r1, [r7, #0xb4] + strb r2, [r1, #8] + strh r4, [r7, #0xa8] + strb r6, [r7, #0xaa] + bl ov29_022DE9F8 + ldr r1, [sp, #8] + mov r0, #7 + add r1, r1, #0x1a + strh r1, [r7, #0xac] + strb r0, [r7, #0xae] + mov r1, #0 + strb r1, [r7, #0x28] + strb r1, [r7, #0xb0] + mov r0, #0xff + strb r0, [r7, #0xaf] + mov r0, #1 + strb r0, [r7, #0xb1] + strb r0, [r7, #0xb3] + str r1, [r7, #0x1c] + bl ov29_022E2978 + ldr r1, [sp, #8] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17a] + ldr r1, [sp, #4] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17b] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r1, lsr #0x10 + bl ov29_022E1AF4 + ldr r1, _022E1EC0 ; =0x02353538 + mov r0, r7 + ldr r1, [r1] + add r1, r1, #0x700 + ldrh r3, [r1, #0x88] + add r2, r3, #1 + strh r2, [r1, #0x88] + strh r3, [r7, #0x26] + b _022E1EB8 +_022E1EA8: + add r5, r5, #1 +_022E1EAC: + cmp r5, #4 + blt _022E1D90 + mov r0, #0 +_022E1EB8: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E1EC0: .word 0x02353538 + arm_func_end ov29_022E1D2C + + arm_func_start ov29_022E1EC4 +ov29_022E1EC4: ; 0x022E1EC4 + ldr r2, _022E1EF4 ; =0x0237C79C + mov r3, #0 + add ip, r2, r0 + mov r2, #1 + b _022E1EE8 +_022E1ED8: + add r0, r3, #1 + mov r0, r0, lsl #0x10 + strb r2, [ip, r3] + mov r3, r0, lsr #0x10 +_022E1EE8: + cmp r3, r1 + blo _022E1ED8 + bx lr + .align 2, 0 +_022E1EF4: .word 0x0237C79C + arm_func_end ov29_022E1EC4 + + arm_func_start ov29_022E1EF8 +ov29_022E1EF8: ; 0x022E1EF8 + mov r0, #0 + ldr r2, _022E1F30 ; =0x0237C79C + mov r3, r0 +_022E1F04: + ldrb r1, [r2, r3] + cmp r1, #0 + add r1, r3, #1 + addeq r0, r0, #1 + mov r1, r1, lsl #0x10 + moveq r0, r0, lsl #0x10 + mov r3, r1, lsr #0x10 + moveq r0, r0, asr #0x10 + cmp r3, #0xae + blo _022E1F04 + bx lr + .align 2, 0 +_022E1F30: .word 0x0237C79C + arm_func_end ov29_022E1EF8 + + arm_func_start ov29_022E1F34 +ov29_022E1F34: ; 0x022E1F34 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, #0 + mov r8, r0 + mov r5, r4 +_022E1F44: + ldr r0, _022E2010 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + beq _022E1FE4 + ldr r0, [r7, #0xb4] + ldrsh r0, [r0, #4] + bl GetSpriteSize + mov r6, r0 + ldrb r0, [r7, #0xaa] + bl ov29_022DE954 + cmp r0, #0 + add r0, r4, #0x62 + strh r0, [r7, #0xac] + ldr r0, [r7, #0xb4] + movne r6, r6, lsl #1 + strb r5, [r0, #0x17a] + ldr r0, [r7, #0xb4] + mov r2, #0 + strb r6, [r0, #0x17b] + mov r1, #1 + ldr r0, _022E2014 ; =0x0237C79C + b _022E1FC0 +_022E1FB0: + cmp r4, #0xae + strltb r1, [r0, r4] + addlt r4, r4, #1 + add r2, r2, #1 +_022E1FC0: + cmp r2, r6 + blt _022E1FB0 + cmp r8, #0 + beq _022E1FE4 + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 +_022E1FE4: + add r5, r5, #1 + cmp r5, #0x10 + blt _022E1F44 + mov r1, #0 + ldr r0, _022E2014 ; =0x0237C79C + b _022E2004 +_022E1FFC: + strb r1, [r0, r4] + add r4, r4, #1 +_022E2004: + cmp r4, #0xae + blt _022E1FFC + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E2010: .word 0x02353538 +_022E2014: .word 0x0237C79C + arm_func_end ov29_022E1F34 + + arm_func_start ov29_022E2018 +ov29_022E2018: ; 0x022E2018 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + mov r0, r2 + mov r6, r1 + mvn r4, #0 + bl GetSpriteSize + mov r5, r0 + ldrsh r0, [sp, #0x18] + cmp r0, #0 + movlt r0, #0 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + bl ov29_022DE954 + cmp r0, #0 + movne r5, r5, lsl #1 + mov r3, #0 + rsb ip, r5, #0xae + mov r2, r3 + ldr r1, _022E20BC ; =0x0237C79C + b _022E2098 +_022E2064: + mov r8, r2 + add lr, r1, r3 + b _022E2080 +_022E2070: + ldrb r0, [lr, r8] + cmp r0, #0 + bne _022E2088 + add r8, r8, #1 +_022E2080: + cmp r8, r5 + blt _022E2070 +_022E2088: + cmp r8, r5 + moveq r4, r3 + beq _022E20A0 + add r3, r3, #1 +_022E2098: + cmp r3, ip + ble _022E2064 +_022E20A0: + mvn r0, #0 + cmp r4, r0 + moveq r0, #0 + strne r4, [r7] + strne r5, [r6] + movne r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E20BC: .word 0x0237C79C + arm_func_end ov29_022E2018 + + arm_func_start ov29_022E20C0 +ov29_022E20C0: ; 0x022E20C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r8, r0 + mov r0, #2 + bl ov29_022DEA10 + mov r6, r0 + mov r1, r8 + mov r0, #0 + bl ov29_022F9408 + mov r4, r0 + bl GetSpriteIndex__022F7388 + mov r3, r0 + add r0, sp, #8 + add r1, sp, #4 + mov r2, r8 + str r6, [sp] + bl ov29_022E2018 + cmp r0, #0 + moveq r0, #0 + beq _022E2254 + mov r5, #0 + ldr sb, _022E225C ; =0x02353538 + b _022E2248 +_022E211C: + ldr r0, [sb] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + bne _022E2244 + mov r0, #1 + str r0, [r7] + strb r5, [r7, #0x24] + mov r0, #0 + ldr r1, _022E225C ; =0x02353538 + strb r0, [r7, #0x22] + ldr r1, [r1] + add r2, r5, r5, lsl #3 + add r1, r1, #0xf4 + add r1, r1, #0x1000 + add r2, r1, r2, lsl #6 + str r2, [r7, #0xb4] + mov r1, r8 + strh r8, [r2, #2] + bl ov29_022F9408 + ldr r2, [r7, #0xb4] + mov r1, #1 + strh r0, [r2, #4] + ldr r0, [r7, #0xb4] + mov r2, #0 + strb r1, [r0, #6] + ldr r1, [r7, #0xb4] + mov r0, r4 + strb r2, [r1, #8] + bl GetSpriteIndex__022F7388 + strh r0, [r7, #0xa8] + strb r6, [r7, #0xaa] + ldr r0, [sp, #8] + add r0, r0, #0x62 + strh r0, [r7, #0xac] + ldrb r0, [r7, #0xaa] + bl ov29_022DE9F8 + mov r0, #7 + strb r0, [r7, #0xae] + mov r1, #0 + strb r1, [r7, #0x28] + strb r1, [r7, #0xb0] + mov r0, #0xff + strb r0, [r7, #0xaf] + mov r0, #1 + strb r0, [r7, #0xb1] + strb r0, [r7, #0xb3] + str r1, [r7, #0x1c] + ldr r1, [sp, #8] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17a] + ldr r1, [sp, #4] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17b] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r1, lsr #0x10 + bl ov29_022E1EC4 + bl ov29_022E2978 + ldr r1, _022E225C ; =0x02353538 + mov r0, r7 + ldr r1, [r1] + add r1, r1, #0x700 + ldrh r3, [r1, #0x88] + add r2, r3, #1 + strh r2, [r1, #0x88] + strh r3, [r7, #0x26] + b _022E2254 +_022E2244: + add r5, r5, #1 +_022E2248: + cmp r5, #0x10 + blt _022E211C + mov r0, #0 +_022E2254: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E225C: .word 0x02353538 + arm_func_end ov29_022E20C0 + + arm_func_start ov29_022E2260 +ov29_022E2260: ; 0x022E2260 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + mov r5, #0 + ldr r4, _022E2310 ; =0x02353538 + b _022E2300 +_022E2280: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xcc8] + mov r0, r6 + bl EntityIsValid__022E1A1C + cmp r0, #0 + bne _022E22FC + mov r1, #2 + ldr r0, _022E2310 ; =0x02353538 + str r1, [r6] + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x3c4 + add r0, r0, #0x3c00 + add r0, r0, r5, lsl #2 + str r0, [r6, #0xb4] + strb sl, [r0] + ldr r1, [r6, #0xb4] + mov r0, r6 + strb r8, [r1, #1] + ldr r1, [r6, #0xb4] + strb r7, [r1, #2] + str r2, [r6, #0x1c] + strb r2, [r6, #0x22] + ldrh r1, [sb] + strh r1, [r6, #4] + ldrh r1, [sb, #2] + strh r1, [r6, #6] + strh r2, [r6, #0x26] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022E22FC: + add r5, r5, #1 +_022E2300: + cmp r5, #0x40 + blt _022E2280 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022E2310: .word 0x02353538 + arm_func_end ov29_022E2260 + + arm_func_start ov29_022E2314 +ov29_022E2314: ; 0x022E2314 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _022E2410 ; =0x02353538 + ldr r2, _022E2414 ; =0x020A1AE8 + ldr r1, [r1] + mov r6, r0 + add r0, r1, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r2, r0] + cmp r0, #1 + bne _022E235C + ldrsh r0, [r6] + ldrsh r1, [r6, #2] + bl GetTileSafe + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022E235C: + mov r4, #0 + ldr r7, _022E2410 ; =0x02353538 + b _022E2400 +_022E2368: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xbc8] + mov r0, r5 + bl EntityIsValid__022E1A1C + cmp r0, #0 + bne _022E23FC + ldr r0, _022E2410 ; =0x02353538 + mov r1, #3 + str r1, [r5] + ldr r1, [r0] + mov r0, #6 + add r1, r1, #0x3e40 + mla r0, r4, r0, r1 + str r0, [r5, #0xb4] + ldrh r0, [r6] + mov r1, #0x18 + mov r2, #0 + strh r0, [r5, #4] + ldrh r3, [r6, #2] + mov r0, r5 + strh r3, [r5, #6] + ldrsh r3, [r6] + ldrsh r4, [r6, #2] + smulbb r3, r3, r1 + smulbb r4, r4, r1 + add r1, r3, #4 + mov r1, r1, lsl #8 + add r3, r4, #4 + str r1, [r5, #0xc] + mov r1, r3, lsl #8 + str r1, [r5, #0x10] + strh r2, [r5, #0x26] + strb r2, [r5, #0x22] + str r2, [r5, #0x1c] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E23FC: + add r4, r4, #1 +_022E2400: + cmp r4, #0x40 + blt _022E2368 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E2410: .word 0x02353538 +_022E2414: .word 0x020A1AE8 + arm_func_end ov29_022E2314 + + arm_func_start ov29_022E2418 +ov29_022E2418: ; 0x022E2418 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_023386D8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022E246C ; =0x02353538 + mov r1, #5 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x12000 + ldr r0, [r0, #0xdc8] + str r1, [r0] + str r2, [r0, #0x1c] + strb r2, [r0, #0x22] + ldrh r1, [r4] + strh r1, [r0, #4] + ldrh r1, [r4, #2] + strh r1, [r0, #6] + strh r2, [r0, #0x26] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E246C: .word 0x02353538 + arm_func_end ov29_022E2418 + + arm_func_start ov29_022E2470 +ov29_022E2470: ; 0x022E2470 + mov r1, #6 + str r1, [r0] + mov r1, #0 + strh r1, [r0, #4] + strh r1, [r0, #6] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + strh r1, [r0, #0x26] + strb r1, [r0, #0x22] + bx lr + arm_func_end ov29_022E2470 + + arm_func_start ov29_022E2498 +ov29_022E2498: ; 0x022E2498 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + cmp r0, #0 + beq _022E2560 + cmp r0, #1 + beq _022E24C0 + cmp r0, #6 + beq _022E2560 + b _022E2568 +_022E24C0: + ldrb r0, [r5, #0x20] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022E2570 ; =0x02353538 + ldr r2, [r5, #0xb4] + ldr r0, [r0] + ldrb r1, [r2, #6] + add r0, r0, #0x21c + add r4, r0, #0x1a000 + ldr r0, [r4, #0x10] + cmp r1, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #0x28] + cmp r1, #0 + ldreqb r1, [r2, #0xef] + cmpeq r1, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #0x34] + cmp r1, #0 + bne _022E252C + ldrb r1, [r4, #0x23] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_022E252C: + ldrb r1, [r4, #0x26] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl HasDropeyeStatus + mov r2, r0 + mov r0, r4 + add r1, r5, #4 + bl ov29_022E90CC + ldmia sp!, {r3, r4, r5, pc} +_022E2560: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E2568: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E2570: .word 0x02353538 + arm_func_end ov29_022E2498 + + arm_func_start ov29_022E2574 +ov29_022E2574: ; 0x022E2574 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldrb r5, [r0, #0x20] + cmp r5, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr lr, [r0] + cmp r1, #0 + movne r6, #0x40 + moveq r6, #0x20 + cmp lr, #2 + bne _022E25D8 + ldr r2, _022E2724 ; =0x02353538 + ldr r3, _022E2728 ; =0x0001A224 + ldr r4, [r2] + add r8, r3, #2 + ldrsh ip, [r0, #4] + mov r7, #0x18 + ldrsh r2, [r0, #6] + ldrsh r3, [r4, r3] + smulbb ip, ip, r7 + ldrsh r8, [r4, r8] + smulbb r7, r2, r7 + sub r2, ip, r3 + sub r7, r7, r8 + b _022E2600 +_022E25D8: + ldr r3, _022E2724 ; =0x02353538 + ldr r2, _022E2728 ; =0x0001A224 + ldr r4, [r3] + add r3, r2, #2 + ldrsh r2, [r4, r2] + ldr r8, [r0, #0xc] + ldrsh r3, [r4, r3] + ldr r7, [r0, #0x10] + rsb r2, r2, r8, asr #8 + rsb r7, r3, r7, asr #8 +_022E2600: + rsb r3, r6, #0 + cmp r2, r3 + cmpge r7, r3 + blt _022E271C + add r3, r6, #0xff + cmp r2, r3 + addle r2, r6, #0xc0 + cmple r7, r2 + bgt _022E271C + add r2, r4, #0x21c + cmp lr, #6 + add r6, r2, #0x1a000 + addls pc, pc, lr, lsl #2 + b _022E2714 +_022E2638: ; jump table + b _022E270C ; case 0 + b _022E267C ; case 1 + b _022E26F0 ; case 2 + b _022E2654 ; case 3 + b _022E2714 ; case 4 + b _022E2714 ; case 5 + b _022E270C ; case 6 +_022E2654: + ldrb r1, [r6, #0x27] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r0, r0, #4 + bl ov29_022E2CA0 + cmp r0, #0 + bne _022E2714 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E267C: + ldr r3, [r0, #0xb4] + ldrb r2, [r3, #6] + cmp r2, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r2, r4, #0x1a000 + ldrb r2, [r2, #0x244] + cmp r2, #0 + ldreqb r2, [r3, #0xef] + cmpeq r2, #1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r2, [r6, #0x26] + cmp r2, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + cmp r1, #0 + add r0, r0, #4 + beq _022E26DC + bl ov29_022E2D3C + cmp r0, #0 + bne _022E2714 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E26DC: + bl ov29_022E2CA0 + cmp r0, #0 + bne _022E2714 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E26F0: + add r0, r4, #0x1a000 + ldrb r0, [r0, #0x244] + cmp r0, #0 + cmpeq r5, #0 + bne _022E2714 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E270C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E2714: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E271C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E2724: .word 0x02353538 +_022E2728: .word 0x0001A224 + arm_func_end ov29_022E2574 + + arm_func_start ov29_022E272C +ov29_022E272C: ; 0x022E272C + ldr ip, _022E2738 ; =ov29_022E2574 + mov r1, #0 + bx ip + .align 2, 0 +_022E2738: .word ov29_022E2574 + arm_func_end ov29_022E272C + + arm_func_start ov29_022E273C +ov29_022E273C: ; 0x022E273C + ldr ip, _022E2748 ; =ov29_022E2574 + mov r1, #1 + bx ip + .align 2, 0 +_022E2748: .word ov29_022E2574 + arm_func_end ov29_022E273C + + arm_func_start ov29_022E274C +ov29_022E274C: ; 0x022E274C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x20] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4] + cmp r0, #1 + bne _022E27F4 + ldr r0, [r5] + cmp r0, #1 + bne _022E27E0 + mov r0, r5 + bl CanSeeInvisibleMonsters + cmp r0, #0 + ldreq r0, [r4, #0xb4] + ldreqb r0, [r0, #0xef] + cmpeq r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + beq _022E27F4 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E27E0: + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_022E27F4: + mov r0, r5 + bl HasDropeyeStatus + mov r2, r0 + add r0, r5, #4 + add r1, r4, #4 + bl ov29_022E90CC + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E274C + + arm_func_start CanTargetEntity +CanTargetEntity: ; 0x022E2810 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x20] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4] + cmp r0, #1 + bne _022E28B8 + ldr r0, [r5] + cmp r0, #1 + bne _022E28A4 + mov r0, r5 + bl CanSeeInvisibleMonsters + cmp r0, #0 + ldreq r0, [r4, #0xb4] + ldreqb r0, [r0, #0xef] + cmpeq r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + beq _022E28B8 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022E28A4: + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_022E28B8: + mov r0, r5 + bl HasDropeyeStatus + mov r2, r0 + add r0, r5, #4 + add r1, r4, #4 + bl IsPositionInSight + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CanTargetEntity + + arm_func_start ov29_022E28D4 +ov29_022E28D4: ; 0x022E28D4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl EntityIsValid__022E1A1C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x20] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl HasDropeyeStatus + mov r2, r0 + add r0, r5, #4 + add r1, r4, #4 + bl ov29_022E90CC + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E28D4 + + arm_func_start ov29_022E2930 +ov29_022E2930: ; 0x022E2930 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl HasDropeyeStatus + mov r2, r0 + mov r1, r4 + add r0, r5, #4 + bl ov29_022E90CC + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E2930 + + arm_func_start CanTargetPosition +CanTargetPosition: ; 0x022E2954 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl HasDropeyeStatus + mov r2, r0 + mov r1, r4 + add r0, r5, #4 + bl IsPositionInSight + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CanTargetPosition + + arm_func_start ov29_022E2978 +ov29_022E2978: ; 0x022E2978 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, #0 + ldr r6, _022E2A34 ; =0x02353538 + mov r4, r5 +_022E2988: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + ldrne r0, [r6] + add r4, r4, #1 + addne r0, r0, r5, lsl #2 + addne r0, r0, #0x12000 + strne r7, [r0, #0xb78] + addne r5, r5, #1 + cmp r4, #4 + blt _022E2988 + ldr r6, _022E2A34 ; =0x02353538 + mov r4, #0 +_022E29CC: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__022E1A1C + cmp r0, #0 + ldrne r0, [r6] + add r4, r4, #1 + addne r0, r0, r5, lsl #2 + addne r0, r0, #0x12000 + strne r7, [r0, #0xb78] + addne r5, r5, #1 + cmp r4, #0x10 + blt _022E29CC + mov r2, #0 + ldr r1, _022E2A34 ; =0x02353538 + b _022E2A28 +_022E2A14: + ldr r0, [r1] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + str r2, [r0, #0xb78] + add r5, r5, #1 +_022E2A28: + cmp r5, #0x14 + blt _022E2A14 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E2A34: .word 0x02353538 + arm_func_end ov29_022E2978 + + arm_func_start ov29_022E2A38 +ov29_022E2A38: ; 0x022E2A38 + ldr r1, _022E2A74 ; =0x02353538 + mov r2, #0 + ldr r3, [r1] + b _022E2A64 +_022E2A48: + add r1, r3, r2, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb28] + cmp r0, r1 + moveq r0, r2 + bxeq lr + add r2, r2, #1 +_022E2A64: + cmp r2, #4 + blt _022E2A48 + mvn r0, #0 + bx lr + .align 2, 0 +_022E2A74: .word 0x02353538 + arm_func_end ov29_022E2A38 + + arm_func_start ov29_022E2A78 +ov29_022E2A78: ; 0x022E2A78 + stmdb sp!, {r4, lr} + ldr r2, [r1] + mov r4, r0 + cmp r2, #1 + beq _022E2AA0 + cmp r2, #2 + beq _022E2AAC + cmp r2, #3 + ldmeqia sp!, {r4, pc} + b _022E2ABC +_022E2AA0: + ldr r1, [r1, #0xb4] + bl ov29_02300164 + ldmia sp!, {r4, pc} +_022E2AAC: + ldr r1, [r1, #0xb4] + ldrb r1, [r1] + bl ov29_022ED82C + ldmia sp!, {r4, pc} +_022E2ABC: + ldr r0, _022E2AD4 ; =0x00000A42 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + bl Strcpy + ldmia sp!, {r4, pc} + .align 2, 0 +_022E2AD4: .word 0x00000A42 + arm_func_end ov29_022E2A78 + + arm_func_start SubstitutePlaceholderStringTags +SubstitutePlaceholderStringTags: ; 0x022E2AD8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r5, r2 + bl ov29_0234B034 + ldr r1, [r6] + mov r4, r0 + cmp r1, #1 + beq _022E2B10 + cmp r1, #2 + beq _022E2B3C + cmp r1, #3 + beq _022E2B2C + b _022E2B50 +_022E2B10: + mov r1, #0 + str r1, [sp] + ldr r2, [r6, #0xb4] + mov r1, r7 + mov r3, r5 + bl ov29_0230040C + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2B2C: + ldr r2, [r6, #0xb4] + mov r1, r7 + bl ov29_02344BA8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2B3C: + ldr r2, [r6, #0xb4] + mov r1, r7 + ldrb r2, [r2] + bl ov29_022EDF7C + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E2B50: + ldr r0, _022E2B64 ; =0x00000A42 + bl StringFromMessageId + add r1, r4, r7, lsl #2 + str r0, [r1, #0x38] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E2B64: .word 0x00000A42 + arm_func_end SubstitutePlaceholderStringTags + + arm_func_start ov29_022E2B68 +ov29_022E2B68: ; 0x022E2B68 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022E2C5C ; =0x02353538 + movs r5, r0 + ldr r2, [r1] + mov r1, #0 + add r0, r2, #0x21c + add r4, r0, #0x1a000 + strh r1, [r4, #8] + ldr r0, _022E2C60 ; =0x0001A21C + strh r1, [r4, #0xa] + strh r1, [r2, r0] + strh r1, [r4, #2] + strh r1, [r4, #0xc] + strh r1, [r4, #0xe] + strh r1, [r4, #4] + strh r1, [r4, #6] + str r1, [r4, #0x14] + strb r1, [r4, #0x2f] + mov r0, #1 + strb r0, [r4, #0x30] + strb r0, [r4, #0x31] + str r1, [r4, #0x18] + str r1, [r4, #0x1c] + bne _022E2BF4 + strb r1, [r4, #0x22] + strb r1, [r4, #0x29] + strb r1, [r4, #0x28] + strb r1, [r4, #0x26] + strb r1, [r4, #0x2a] + strb r1, [r4, #0x27] + strb r1, [r4, #0x23] + strb r1, [r4, #0x24] + strb r1, [r4, #0x32] + strb r1, [r4, #0x33] + strb r1, [r4, #0x34] +_022E2BF4: + mov r1, #0 + str r1, [r4, #0x10] + mov r0, #3 + strb r0, [r4, #0x20] + strb r1, [r4, #0x35] + strb r1, [r4, #0x2b] + strb r1, [r4, #0x36] + strb r1, [r4, #0x37] + strb r1, [r4, #0x2d] + mov r0, #1 + strb r0, [r4, #0x2e] + bl ov29_022E2C6C + ldr r1, _022E2C64 ; =0x0000FFFF + ldr r0, _022E2C68 ; =0x0237C84C + cmp r5, #0 + str r1, [r0] + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022E2C5C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x28000 + ldrb r0, [r0, #0x6c8] + ands r0, r0, #3 + strb r0, [r4, #0x21] + moveq r0, #1 + streqb r0, [r4, #0x24] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E2C5C: .word 0x02353538 +_022E2C60: .word 0x0001A21C +_022E2C64: .word 0x0000FFFF +_022E2C68: .word 0x0237C84C + arm_func_end ov29_022E2B68 + + arm_func_start ov29_022E2C6C +ov29_022E2C6C: ; 0x022E2C6C + ldr r0, _022E2C9C ; =0x02353538 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x21c + add r0, r0, #0x1a000 + strh r1, [r0, #0x3c] + strh r1, [r0, #0x3e] + strh r1, [r0, #0x40] + strh r1, [r0, #0x42] + strh r1, [r0, #0x38] + strh r1, [r0, #0x3a] + bx lr + .align 2, 0 +_022E2C9C: .word 0x02353538 + arm_func_end ov29_022E2C6C + + arm_func_start ov29_022E2CA0 +ov29_022E2CA0: ; 0x022E2CA0 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022E2D34 ; =0x02353538 + mov r4, r0 + ldr r3, [r1] + ldr r0, _022E2D38 ; =0x0001A21C + ldrsh r1, [r4] + ldrsh r2, [r3, r0] + add r0, r3, #0x21c + add r5, r0, #0x1a000 + sub r0, r2, r1 + ldr r6, [r5, #0x10] + bl Abs + cmp r0, #6 + bgt _022E2D2C + ldrsh r1, [r5, #2] + ldrsh r0, [r4, #2] + sub r0, r1, r0 + bl Abs + cmp r0, #5 + bgt _022E2D2C + mov r0, r5 + bl ov29_022E3534 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + cmp r6, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl HasDropeyeStatus + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl ov29_022E90CC + ldmia sp!, {r4, r5, r6, pc} +_022E2D2C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E2D34: .word 0x02353538 +_022E2D38: .word 0x0001A21C + arm_func_end ov29_022E2CA0 + + arm_func_start ov29_022E2D3C +ov29_022E2D3C: ; 0x022E2D3C + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022E2DD0 ; =0x02353538 + mov r4, r0 + ldr r3, [r1] + ldr r0, _022E2DD4 ; =0x0001A21C + ldrsh r1, [r4] + ldrsh r2, [r3, r0] + add r0, r3, #0x21c + add r5, r0, #0x1a000 + sub r0, r2, r1 + ldr r6, [r5, #0x10] + bl Abs + cmp r0, #6 + bgt _022E2DC8 + ldrsh r1, [r5, #2] + ldrsh r0, [r4, #2] + sub r0, r1, r0 + bl Abs + cmp r0, #6 + bgt _022E2DC8 + mov r0, r5 + bl ov29_022E3534 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + cmp r6, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl HasDropeyeStatus + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl ov29_022E90CC + ldmia sp!, {r4, r5, r6, pc} +_022E2DC8: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E2DD0: .word 0x02353538 +_022E2DD4: .word 0x0001A21C + arm_func_end ov29_022E2D3C + + arm_func_start UpdateMapSurveyorFlag +UpdateMapSurveyorFlag: ; 0x022E2DD8 + stmdb sp!, {r3, lr} + mov r0, #0x41 + bl TeamMemberHasEnabledIqSkill + ldr r1, _022E2DF8 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x1a000 + strb r0, [r1, #0x241] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2DF8: .word 0x02353538 + arm_func_end UpdateMapSurveyorFlag + + arm_func_start ov29_022E2DFC +ov29_022E2DFC: ; 0x022E2DFC + stmdb sp!, {r3, lr} + ldr r1, _022E2E50 ; =0x02353538 + cmp r0, #0 + ldr r1, [r1] + add r1, r1, #0x21c + add r1, r1, #0x1a000 + str r0, [r1, #0x10] + moveq r0, #0 + streqb r0, [r1, #0x2f] + beq _022E2E40 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #7] + cmp r0, #0 + moveq r0, #0 + streqb r0, [r1, #0x2f] + movne r0, #1 + strneb r0, [r1, #0x2f] +_022E2E40: + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_022E2C6C + ldmia sp!, {r3, pc} + .align 2, 0 +_022E2E50: .word 0x02353538 + arm_func_end ov29_022E2DFC + + arm_func_start ov29_022E2E54 +ov29_022E2E54: ; 0x022E2E54 + stmdb sp!, {r4, lr} + ldr r2, _022E2EC0 ; =0x02353538 + mov r4, r1 + ldr r1, [r2] + cmp r0, #0 + add r1, r1, #0x21c + add r2, r1, #0x1a000 + moveq r1, #0 + streqb r1, [r2, #0x2f] + beq _022E2E98 + ldr r1, [r0, #0xb4] + ldrb r1, [r1, #7] + cmp r1, #0 + moveq r1, #0 + streqb r1, [r2, #0x2f] + movne r1, #1 + strneb r1, [r2, #0x2f] +_022E2E98: + str r0, [r2, #0x10] + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_022E2C6C + bl ov29_02304954 + cmp r4, #0 + ldmeqia sp!, {r4, pc} + bl ov29_02336F4C + bl ov29_02339CE8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E2EC0: .word 0x02353538 + arm_func_end ov29_022E2E54 + + arm_func_start ov29_022E2EC4 +ov29_022E2EC4: ; 0x022E2EC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r1, _022E32DC ; =0x02353538 + str r0, [sp] + ldr r0, [r1] + cmp r0, #0 + beq _022E32D4 + add r0, r0, #0x21c + add r4, r0, #0x1a000 + ldr r5, [r4, #0x10] + cmp r5, #0 + beq _022E32D0 + mov r0, r5 + bl EntityIsValid__022E32E8 + cmp r0, #0 + beq _022E32D0 + ldrb r8, [r4, #0x32] + ldrb sb, [r4, #0x33] + ldrh r0, [r4, #8] + ldr sl, [r5, #0xb4] + mov r6, #0 + strh r0, [r4, #0xc] + ldrh r2, [r4, #0xa] + mov r0, r5 + mov r1, #0x18 + strh r2, [r4, #0xe] + ldrh r2, [r4] + mov fp, r6 + mov r7, r6 + strh r2, [r4, #4] + ldrh r2, [r4, #2] + str r6, [sp, #4] + strh r2, [r4, #6] + ldrsh r2, [r5, #4] + strh r2, [r4] + ldrsh r2, [r5, #6] + strh r2, [r4, #2] + ldr r2, [r5, #0xc] + mov r2, r2, asr #8 + sub r2, r2, #0x80 + strh r2, [r4, #8] + ldr r2, [r5, #0x10] + mov r2, r2, asr #8 + sub r2, r2, #0x6c + strh r2, [r4, #0xa] + ldrb r2, [r4, #0x27] + str r2, [sp, #0xc] + ldrb r2, [r4, #0x26] + str r2, [sp, #8] + bl ItemIsActive__022E330C + cmp r0, #0 + ldrneb r0, [sl, #7] + mov r1, #0 + cmpne r0, #0 + movne r0, #1 + strneb r0, [r4, #0x26] + strneb r0, [r4, #0x27] + ldreqb r0, [sl, #0xf9] + streqb r0, [r4, #0x26] + ldreqb r0, [sl, #0xfa] + streqb r0, [r4, #0x27] + strb r1, [r4, #0x32] + strb r1, [r4, #0x33] + mov r0, r5 + mov r1, #0xe + bl ItemIsActive__022E330C + cmp r0, #0 + ldrneb r0, [sl, #7] + cmpne r0, #0 + movne r0, #1 + strneb r0, [r4, #0x32] + strneb r0, [r4, #0x33] + ldrb r1, [r4, #0x27] + ldr r0, [sp, #0xc] + cmp r0, r1 + ldreqb r0, [r4, #0x32] + ldrb r1, [r4, #0x26] + cmpeq r8, r0 + ldr r0, [sp, #8] + movne r6, #1 + cmp r0, r1 + ldreqb r0, [r4, #0x33] + cmpeq sb, r0 + ldrb r0, [sl, #0xfb] + movne fp, #1 + strb r0, [r4, #0x2a] + ldrb r0, [r4, #0x2d] + ldrb r8, [r4, #0x22] + cmp r0, #0 + bne _022E309C + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + movne r0, #1 + movne r2, #0xe + strneb r0, [r4, #0x22] + moveq r2, #0 + ldr r0, _022E32E0 ; =0x0237C84C + streqb r2, [r4, #0x22] + ldr r1, [r0] + cmp r1, r2 + beq _022E30A8 + str r2, [r0] + cmp r2, #0xe + mov r0, #2 + mov r1, #0 + bne _022E3088 + bl sub_02009194 + mov r0, #3 + mov r1, #0 + bl sub_02009194 + b _022E30A8 +_022E3088: + bl sub_020091B0 + mov r0, #3 + mov r1, #0 + bl sub_020091B0 + b _022E30A8 +_022E309C: + ldr r1, _022E32E4 ; =0x0000FFFF + ldr r0, _022E32E0 ; =0x0237C84C + str r1, [r0] +_022E30A8: + ldrb r0, [r4, #0x22] + ldrb r1, [r4, #0x29] + cmp r8, r0 + ldrb r0, [sl, #0xf1] + movne r7, #1 + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + strb r0, [r4, #0x29] + ldrb r0, [r4, #0x29] + cmp r1, r0 + ldreq r0, _022E32DC ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x2c000 + ldreqb r0, [r0, #0xb10] + cmpeq r0, #0 + beq _022E3108 + bl ov29_023047DC + ldr r0, _022E32DC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + mov r7, #1 + add r0, r0, #0x2c000 + strb r1, [r0, #0xb10] +_022E3108: + mov r0, r5 + ldrb r8, [r4, #0x28] + bl CanSeeInvisibleMonsters + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + strb r0, [r4, #0x28] + ldrb r0, [r4, #0x28] + cmp r8, r0 + movne r7, #1 + strne r7, [sp, #4] + ldrb r8, [r4, #0x34] + mov r0, r5 + bl HasDropeyeStatus + and r1, r0, #0xff + cmp r8, r1 + strb r0, [r4, #0x34] + movne r7, #1 + strne r7, [sp, #4] + ldr r0, [sp, #4] + cmp r0, #0 + beq _022E3168 + bl ov29_02336F4C + bl ov29_02339CE8 +_022E3168: + cmp r7, #0 + beq _022E3178 + mov r0, #0 + bl ov29_022E3A58 +_022E3178: + ldr r0, [sp] + cmp r0, #0 + beq _022E3228 + ldrb r0, [r4, #0x2c] + cmp r0, #0 + bne _022E3228 + ldrsh r5, [r4, #8] + ldrsh r7, [r4, #0xc] + sub r0, r7, r5 + bl Abs + cmp r0, #8 + bge _022E31C0 + ldrsh r1, [r4, #0xe] + ldrsh r0, [r4, #0xa] + sub r0, r1, r0 + bl Abs + cmp r0, #8 + blt _022E31D0 +_022E31C0: + bl ov29_02336F4C + mov r0, #1 + strb r0, [r4, #0x2c] + b _022E3228 +_022E31D0: + cmp r7, r5 + bge _022E31E8 + mov r0, #0xff + mov r1, #0 + bl ov29_0233711C + b _022E31F8 +_022E31E8: + ble _022E31F8 + mov r0, #0 + mov r1, r0 + bl ov29_0233711C +_022E31F8: + ldrsh r1, [r4, #0xa] + ldrsh r0, [r4, #0xe] + cmp r0, r1 + bge _022E3218 + mov r0, #0 + mov r1, #0xc0 + bl ov29_023372A4 + b _022E3228 +_022E3218: + ble _022E3228 + mov r0, #0 + mov r1, r0 + bl ov29_023372A4 +_022E3228: + cmp fp, #0 + ldreqsh r1, [r4] + ldreqsh r0, [r4, #4] + cmpeq r1, r0 + ldreqsh r1, [r4, #2] + ldreqsh r0, [r4, #6] + cmpeq r1, r0 + beq _022E3288 + ldr r4, _022E32DC ; =0x02353538 + mov r5, #0 +_022E3250: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__022E32E8 + cmp r0, #0 + beq _022E327C + ldrsh r0, [r7, #4] + ldrsh r1, [r7, #6] + bl ov29_023391EC +_022E327C: + add r5, r5, #1 + cmp r5, #0x14 + blt _022E3250 +_022E3288: + cmp r6, #0 + beq _022E32D0 + ldr r4, _022E32DC ; =0x02353538 + mov r5, #0 +_022E3298: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xbc8] + mov r0, r6 + bl EntityIsValid__022E32E8 + cmp r0, #0 + beq _022E32C4 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl ov29_023391EC +_022E32C4: + add r5, r5, #1 + cmp r5, #0x40 + blt _022E3298 +_022E32D0: + bl ov29_022E34C8 +_022E32D4: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E32DC: .word 0x02353538 +_022E32E0: .word 0x0237C84C +_022E32E4: .word 0x0000FFFF + arm_func_end ov29_022E2EC4 diff --git a/asm/overlay_29_022E330C.s b/asm/overlay_29_022E330C.s new file mode 100644 index 00000000..a8e89de3 --- /dev/null +++ b/asm/overlay_29_022E330C.s @@ -0,0 +1,377 @@ + .include "asm/macros.inc" + .include "overlay_29_022E330C.inc" + + .text + + arm_func_start ItemIsActive__022E330C +ItemIsActive__022E330C: ; 0x022E330C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__022E330C + + arm_func_start ov29_022E333C +ov29_022E333C: ; 0x022E333C + ldr r0, _022E3358 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23d] + cmp r0, #0 + moveq r0, #2 + bx lr + .align 2, 0 +_022E3358: .word 0x02353538 + arm_func_end ov29_022E333C + + arm_func_start ov29_022E335C +ov29_022E335C: ; 0x022E335C + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022E3428 ; =0x02353538 + mov r5, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r1, [r0, #0x24d] + ldr r4, [r0, #0x22c] + cmp r1, #0 + bne _022E33A0 + bl ov10_022BFD20 + cmp r0, #0 + bne _022E33A0 + cmp r4, #0 + beq _022E33A0 + ldr r0, [r4] + cmp r0, #1 + moveq r5, #1 +_022E33A0: + cmp r5, #0 + bne _022E33B0 + bl ov29_022E2C6C + ldmia sp!, {r3, r4, r5, pc} +_022E33B0: + ldr r0, _022E3428 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x21c + add r4, r0, #0x1a000 + ldr r0, [r4, #0x10] + ldr r5, [r0, #0xb4] + bl ov29_02335A10 + ldr r1, _022E3428 ; =0x02353538 + ldr r0, _022E342C ; =0x000003E7 + ldr r1, [r1] + ldrb r2, [r1, #0x749] + ldrsh r1, [r1, #0x1e] + add r1, r2, r1 + strh r1, [r4, #0x3c] + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r4, #0x42] + ldrsh r0, [r5, #0x10] + strh r0, [r4, #0x40] + ldrb r0, [r5, #0xa] + strh r0, [r4, #0x3e] + ldrsh r1, [r4, #0x42] + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + mov r0, r0, asr #3 + strh r0, [r4, #0x44] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E3428: .word 0x02353538 +_022E342C: .word 0x000003E7 + arm_func_end ov29_022E335C + + arm_func_start ov29_022E3430 +ov29_022E3430: ; 0x022E3430 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _022E34A8 ; =0x02353538 + mov r7, #0 + ldr r1, [r1] + mov r4, r0 + mov r2, #1 + add r0, r1, #0x1a000 + strb r2, [r0, #0x23f] + mov r5, r7 +_022E3454: + mov r6, r5 +_022E3458: + mov r0, r6 + mov r1, r7 + bl GetTileSafe + ldrh r1, [r0, #2] + add r6, r6, #1 + cmp r6, #0x38 + orr r1, r1, #1 + strh r1, [r0, #2] + blt _022E3458 + add r7, r7, #1 + cmp r7, #0x20 + blt _022E3454 + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_02336F4C + bl ov29_02339CE8 + ldr r1, _022E34AC ; =0x00000B77 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E34A8: .word 0x02353538 +_022E34AC: .word 0x00000B77 + arm_func_end ov29_022E3430 + + arm_func_start ov29_022E34B0 +ov29_022E34B0: ; 0x022E34B0 + ldr r1, _022E34C4 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x1a000 + strb r0, [r1, #0x24c] + bx lr + .align 2, 0 +_022E34C4: .word 0x02353538 + arm_func_end ov29_022E34B0 + + arm_func_start ov29_022E34C8 +ov29_022E34C8: ; 0x022E34C8 + ldr r0, _022E352C ; =0x02353538 + ldr r3, [r0] + add r0, r3, #0x1a000 + ldr r2, [r0, #0x234] + cmp r2, #0 + bxeq lr + ldr r1, _022E3530 ; =0x0235110C + cmp r2, #0x1f + movge r2, #0x1f + ldr r2, [r1, r2, lsl #2] + add r0, r3, #0x1a000 + ldr r1, _022E352C ; =0x02353538 + str r2, [r0, #0x230] + ldr r0, [r1] + add r0, r0, #0x1a000 + ldr r2, [r0, #0x234] + sub r2, r2, #1 + str r2, [r0, #0x234] + ldr r0, [r1] + add r0, r0, #0x1a000 + ldr r1, [r0, #0x234] + cmp r1, #0 + ldreq r1, [r0, #0x238] + streq r1, [r0, #0x234] + bx lr + .align 2, 0 +_022E352C: .word 0x02353538 +_022E3530: .word 0x0235110C + arm_func_end ov29_022E34C8 + + arm_func_start ov29_022E3534 +ov29_022E3534: ; 0x022E3534 + ldrb r1, [r0, #0x34] + cmp r1, #0 + bne _022E3558 + ldrb r1, [r0, #0x23] + cmp r1, #0 + ldreqb r0, [r0, #0x24] + cmpeq r0, #0 + movne r0, #1 + bxne lr +_022E3558: + mov r0, #0 + bx lr + arm_func_end ov29_022E3534 + + arm_func_start ov29_022E3560 +ov29_022E3560: ; 0x022E3560 + ldr r1, _022E356C ; =0x0235354C + strb r0, [r1] + bx lr + .align 2, 0 +_022E356C: .word 0x0235354C + arm_func_end ov29_022E3560 + + arm_func_start ov29_022E3570 +ov29_022E3570: ; 0x022E3570 + ldr r0, _022E357C ; =0x0235354C + ldrb r0, [r0] + bx lr + .align 2, 0 +_022E357C: .word 0x0235354C + arm_func_end ov29_022E3570 + + arm_func_start ov29_022E3580 +ov29_022E3580: ; 0x022E3580 + ldr ip, _022E358C ; =ov10_022BF8E8 + mov r0, #0 + bx ip + .align 2, 0 +_022E358C: .word ov10_022BF8E8 + arm_func_end ov29_022E3580 + + arm_func_start ov29_022E3590 +ov29_022E3590: ; 0x022E3590 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r6 + mov r1, r5 + mov r2, r4 + and r3, r3, #0xff + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_022E3590 + + arm_func_start ov29_022E35E4 +ov29_022E35E4: ; 0x022E35E4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x30 + mov r8, r0 + mov r5, r1 + mov r4, r2 + mov r7, r3 + bl EntityIsValid__022E37B8 + cmp r0, #0 + mvneq r0, #0 + beq _022E37A8 + mov r0, r8 + ldr r6, [r8, #0xb4] + bl ov29_022E5ED0 + cmp r0, #0 + mvneq r0, #0 + beq _022E37A8 + ldrb r0, [sp, #0x4c] + cmp r0, #0 + ldreqb r0, [r6, #0x10b] + cmpeq r0, #2 + mvneq r0, #0 + beq _022E37A8 + ldr r0, [sp, #0x48] + cmp r0, #0 + beq _022E365C + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bl ov29_022E38E0 +_022E365C: + add r0, sp, #0 + mov r2, r7 + add r1, r8, #0x2c + bl sub_0201CF90 + ldrsh r7, [sp] + cmp r7, #0x63 + ldrnesh r2, [sp, #2] + cmpne r2, #0x63 + ldreq r1, [r8, #0x10] + ldreq r0, [r6, #0x188] + ldreq r7, [r8, #0xc] + subeq r8, r1, r0 + beq _022E36A8 + ldr r1, [r8, #0x10] + ldr r3, [r8, #0xc] + ldr r0, [r6, #0x188] + add r2, r1, r2, lsl #8 + add r7, r3, r7, lsl #8 + sub r8, r2, r0 +_022E36A8: + ldr r0, _022E37B0 ; =0x02353538 + ldr r2, _022E37B4 ; =0x0001A226 + ldr r3, [r0] + add r0, sp, #4 + ldrsh r2, [r3, r2] + rsb r6, r2, r1, asr #8 + bl ov10_022BF274 + ldrsh r0, [sp, #0x50] + mov r1, #0 + str r5, [sp, #4] + str r1, [sp, #8] + cmp r0, #0 + blt _022E36E4 + cmp r0, #8 + ble _022E36F0 +_022E36E4: + mvn r0, #0 + str r0, [sp, #0xc] + b _022E36F4 +_022E36F0: + str r0, [sp, #0xc] +_022E36F4: + add r0, r6, r6, lsr #31 + mov r0, r0, asr #1 + mov r1, #0 + ldr r3, [sp, #0x54] + mov r6, r7, asr #8 + mov r5, r8, asr #8 + add r0, r0, #1 + mvn r2, #0 + strh r6, [sp, #0x10] + strh r5, [sp, #0x12] + strb r2, [sp, #0x18] + strh r1, [sp, #0x14] + strh r1, [sp, #0x16] + str r0, [sp, #0x1c] + cmp r3, #0 + bne _022E3740 + add r0, sp, #0x20 + bl sub_0201C000 + b _022E3758 +_022E3740: + add r2, sp, #0x20 + mov r1, #6 +_022E3748: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E3748 +_022E3758: + add r0, sp, #4 + mov r1, #0 + bl ov10_022BF2B4 + cmp r4, #0 + beq _022E37A8 + mov r0, r0, lsl #0x10 + mov r6, #0 + mov r5, r0, asr #0x10 + mov r4, #0x42 + b _022E379C +_022E3780: + mov r0, r5 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E37A4 + mov r0, r4 + bl AdvanceFrame + add r6, r6, #1 +_022E379C: + cmp r6, #0x64 + blt _022E3780 +_022E37A4: + mvn r0, #0 +_022E37A8: + add sp, sp, #0x30 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E37B0: .word 0x02353538 +_022E37B4: .word 0x0001A226 + arm_func_end ov29_022E35E4 diff --git a/asm/overlay_29_022E37DC.s b/asm/overlay_29_022E37DC.s new file mode 100644 index 00000000..2b07abaa --- /dev/null +++ b/asm/overlay_29_022E37DC.s @@ -0,0 +1,7446 @@ + .include "asm/macros.inc" + .include "overlay_29_022E37DC.inc" + + .text + + arm_func_start ov29_022E37DC +ov29_022E37DC: ; 0x022E37DC + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldrsh ip, [r0] + mov r3, #0x18 + smulbb ip, ip, r3 + add ip, ip, #0xc + mov ip, ip, lsl #8 + str ip, [sp] + ldrsh ip, [r0, #2] + add r0, sp, #0 + smulbb r3, ip, r3 + add r3, r3, #0x10 + mov r3, r3, lsl #8 + str r3, [sp, #4] + bl ov29_022E3820 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E37DC + + arm_func_start ov29_022E3820 +ov29_022E3820: ; 0x022E3820 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x2c + mov r5, r0 + add r0, sp, #0 + mov r6, r1 + mov r4, r2 + bl ov10_022BF274 + mov ip, #0 + sub r3, ip, #1 + str r6, [sp] + str ip, [sp, #4] + str r3, [sp, #8] + ldr r0, [r5] + ldr r1, _022E38DC ; =0x0000FFFF + mov r0, r0, asr #8 + strh r0, [sp, #0xc] + ldr r2, [r5, #4] + add r0, sp, #0x1c + mov r2, r2, asr #8 + strh r2, [sp, #0xe] + strb r3, [sp, #0x14] + strh ip, [sp, #0x10] + strh ip, [sp, #0x12] + str r1, [sp, #0x18] + bl sub_0201C000 + add r0, sp, #0 + mov r1, #0 + bl ov10_022BF2B4 + cmp r4, #0 + beq _022E38D4 + mov r0, r0, lsl #0x10 + mov r6, #0 + mov r5, r0, asr #0x10 + mov r4, #0x42 + b _022E38C8 +_022E38AC: + mov r0, r5 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E38D0 + mov r0, r4 + bl AdvanceFrame + add r6, r6, #1 +_022E38C8: + cmp r6, #0x64 + blt _022E38AC +_022E38D0: + mvn r0, #0 +_022E38D4: + add sp, sp, #0x2c + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022E38DC: .word 0x0000FFFF + arm_func_end ov29_022E3820 + + arm_func_start ov29_022E38E0 +ov29_022E38E0: ; 0x022E38E0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _022E3A38 ; =0x02353538 + mov r7, #0 + ldr r2, [r1] + mov r1, r7 + add r2, r2, #0x1a000 + mov r8, r0 + str r7, [r2, #0x238] + bl ov10_022BF9CC + cmp r0, #0 + bne _022E3920 + mov r0, r8 + mov r1, #1 + bl ov10_022BF9CC + cmp r0, #0 + beq _022E3980 +_022E3920: + mov r7, #0 + mov r5, #1 + mov r6, r7 + mov r4, #0x4a + b _022E3968 +_022E3934: + mov r0, r8 + mov r1, r6 + bl ov10_022BF9CC + cmp r0, #0 + bne _022E395C + mov r0, r8 + mov r1, r5 + bl ov10_022BF9CC + cmp r0, #0 + beq _022E3970 +_022E395C: + mov r0, r4 + bl AdvanceFrame + add r7, r7, #1 +_022E3968: + cmp r7, #0x3e8 + blt _022E3934 +_022E3970: + mov r0, #0x4a + bl AdvanceFrame + mov r0, #0x4a + bl AdvanceFrame +_022E3980: + cmp r7, #0x3e8 + beq _022E3990 + cmp r8, #0 + beq _022E3994 +_022E3990: + bl ov10_022BDC68 +_022E3994: + mov r0, #1 + bl ov29_022DE5F0 + cmp r0, #0x100 + bge _022E3A0C + mov r0, #1 + bl ov29_022DE5F0 + mov r6, r0 + mov r7, #0 + mov r5, #0x4a + mov r4, #1 + b _022E39F8 +_022E39C0: + mov r0, r5 + bl AdvanceFrame + cmp r6, #0x100 + movge r6, #0x100 + bge _022E3A00 + add r0, r6, #4 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + mov r0, r6 + mov r1, r4 + bl ov29_022DE5D8 + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022E39F8: + cmp r7, #0x3e8 + blt _022E39C0 +_022E3A00: + mov r0, r6 + mov r1, #1 + bl ov29_022DE5D8 +_022E3A0C: + ldr r0, _022E3A3C ; =0x0235354C + ldrb r0, [r0] + cmp r0, #0 + beq _022E3A30 + mov r0, #0x10 + bl ov29_022ED0F4 + ldr r0, _022E3A3C ; =0x0235354C + mov r1, #0 + strb r1, [r0] +_022E3A30: + bl ov29_022E6E40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E3A38: .word 0x02353538 +_022E3A3C: .word 0x0235354C + arm_func_end ov29_022E38E0 + + arm_func_start ov29_022E3A40 +ov29_022E3A40: ; 0x022E3A40 + ldr r1, [r1, #0xb4] + ldr r2, [r1, #0x218] + ldr r1, [r1, #0x21c] + str r2, [r0] + str r1, [r0, #4] + bx lr + arm_func_end ov29_022E3A40 + + arm_func_start ov29_022E3A58 +ov29_022E3A58: ; 0x022E3A58 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r6, _022E3AB0 ; =0x02353538 + mov r5, r0 + mov r4, #0 + mov r7, #1 +_022E3A6C: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__022E37B8 + cmp r0, #0 + beq _022E3AA0 + ldr r0, [r8, #0xb4] + cmp r5, #0 + strneb r7, [r0, #0x156] + mov r0, r8 + bl UpdateStatusIconFlags +_022E3AA0: + add r4, r4, #1 + cmp r4, #0x14 + blt _022E3A6C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E3AB0: .word 0x02353538 + arm_func_end ov29_022E3A58 + + arm_func_start UpdateStatusIconFlags +UpdateStatusIconFlags: ; 0x022E3AB4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r0 + bl EntityIsValid__022E37B8 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, [r4, #0xb4] + mov r1, #0 + ldrsh r4, [r2, #2] + mov r5, #1 + mov r0, r1 + cmp r4, #0xb9 + addne r3, r5, #0x310 + cmpne r4, r3 + bne _022E3AF8 + ldrb r3, [r2, #0xbe] + cmp r3, #0x7f + moveq r5, #0 +_022E3AF8: + cmp r5, #0 + beq _022E3B1C + ldrb r5, [r2, #0xbd] + ldr r4, _022E3D94 ; =0x0235130C + add r3, r4, r5, lsl #3 + ldr r4, [r4, r5, lsl #3] + ldr r3, [r3, #4] + orr r1, r1, r4 + orr r0, r0, r3 +_022E3B1C: + ldrb r7, [r2, #0xbf] + ldr r4, _022E3D98 ; =0x02351294 + ldrb r6, [r2, #0xc4] + ldr r3, _022E3D9C ; =0x02351374 + add r5, r4, r7, lsl #3 + add ip, r3, r6, lsl #3 + ldr r4, [r4, r7, lsl #3] + ldr lr, [r5, #4] + ldrb sl, [r2, #0xd0] + ldr r8, _022E3DA0 ; =0x023513B4 + ldrb r7, [r2, #0xd2] + ldr r5, _022E3DA4 ; =0x023513F4 + add fp, r8, sl, lsl #3 + add sb, r5, r7, lsl #3 + orr r0, r0, lr + ldr lr, [ip, #4] + ldrb ip, [r2, #0xd5] + orr r1, r1, r4 + ldr r4, _022E3DA8 ; =0x023514F4 + ldr r3, [r3, r6, lsl #3] + add r6, r4, ip, lsl #3 + orr r0, r0, lr + ldr lr, [fp, #4] + ldrb fp, [r2, #0xd8] + orr r1, r1, r3 + ldr r3, _022E3DAC ; =0x0235133C + ldr r8, [r8, sl, lsl #3] + add sl, r3, fp, lsl #3 + orr r0, r0, lr + ldr lr, [sb, #4] + ldrb sb, [r2, #0xe0] + orr r1, r1, r8 + ldr r8, _022E3DB0 ; =0x023511FC + ldr r5, [r5, r7, lsl #3] + add r7, r8, sb, lsl #3 + orr r0, r0, lr + ldr lr, [r6, #4] + ldrb r6, [r2, #0xec] + orr r1, r1, r5 + ldr r5, _022E3DB4 ; =0x023512BC + ldr ip, [r4, ip, lsl #3] + add r4, r5, r6, lsl #3 + orr r0, r0, lr + ldr sl, [sl, #4] + ldrb lr, [r2, #0xee] + orr r1, r1, ip + ldr ip, _022E3DB8 ; =0x02351214 + ldr fp, [r3, fp, lsl #3] + add r3, ip, lr, lsl #3 + orr r0, r0, sl + ldr sl, [r7, #4] + ldrb r7, [r2, #0xef] + orr fp, r1, fp + ldr r1, _022E3DBC ; =0x023512E4 + ldr sb, [r8, sb, lsl #3] + add r8, r1, r7, lsl #3 + orr r0, r0, sl + ldr sl, [r4, #4] + ldrb r4, [r2, #0xf1] + orr fp, fp, sb + ldr sb, _022E3DC0 ; =0x0235126C + ldr r6, [r5, r6, lsl #3] + add r5, sb, r4, lsl #3 + orr r0, r0, sl + ldr sl, [r3, #4] + ldrb r3, [r2, #0xf3] + orr r6, fp, r6 + ldr fp, _022E3DC4 ; =0x023511BC + ldr ip, [ip, lr, lsl #3] + add lr, fp, r3, lsl #3 + orr sl, r0, sl + ldr r0, [r8, #4] + ldr r1, [r1, r7, lsl #3] + orr r7, r6, ip + ldr r6, [sb, r4, lsl #3] + orr r8, r7, r1 + ldr r4, [r5, #4] + orr r7, sl, r0 + ldr r1, [fp, r3, lsl #3] + orr r5, r8, r6 + ldr r0, [lr, #4] + orr r3, r7, r4 + orr r0, r3, r0 + orr r8, r5, r1 + ldrb r7, [r2, #0xf5] + ldr r6, _022E3DC8 ; =0x023511EC + ldrb r5, [r2, #0xf7] + ldr r4, _022E3DCC ; =0x023511CC + add r1, r6, r7, lsl #3 + add r3, r4, r5, lsl #3 + ldr r7, [r6, r7, lsl #3] + ldr r6, [r1, #4] + ldrb r1, [r2, #0xfd] + ldr r4, [r4, r5, lsl #3] + ldr r3, [r3, #4] + orr r0, r0, r6 + orr r0, r0, r3 + cmp r1, #0 + orr r5, r8, r7 + orr r1, r5, r4 + ldrb r3, [r2, #0xfe] + orrne r0, r0, #0 + orrne r1, r1, #0x1000000 + cmp r3, #0 + ldrb r3, [r2, #6] + orrne r0, r0, #0 + orrne r1, r1, #0x2000000 + cmp r3, #0 + bne _022E3D00 + ldrsh r5, [r2, #0x12] + ldrsh r4, [r2, #0x16] + ldr r3, _022E3DD0 ; =0x000003E7 + add r5, r5, r4 + cmp r5, r3 + movgt r5, r3 + mov r3, r5, asr #1 + ldrsh r4, [r2, #0x10] + add r3, r5, r3, lsr #30 + cmp r4, r3, asr #2 + orrlt r0, r0, #0 + orrlt r1, r1, #0x2000 +_022E3D00: + ldr r3, _022E3DD4 ; =0x02353538 + ldr r3, [r3] + ldrb r3, [r3, #0x78d] + cmp r3, #0 + beq _022E3D30 + ldrb r3, [r2, #0x62] + tst r3, #1 + movne r3, #1 + moveq r3, #0 + tst r3, #0xff + orrne r0, r0, #0 + orrne r1, r1, #0x2000 +_022E3D30: + ldr r3, [r2, #0x34] + cmp r3, #0x100 + ldrge r3, [r2, #0x38] + cmpge r3, #0x100 + ldrge r3, [r2, #0x3c] + cmpge r3, #0x100 + ldrge r3, [r2, #0x40] + cmpge r3, #0x100 + ldrgesh r3, [r2, #0x24] + cmpge r3, #0xa + ldrgesh r3, [r2, #0x26] + cmpge r3, #0xa + ldrgesh r3, [r2, #0x28] + cmpge r3, #0xa + ldrgesh r3, [r2, #0x2a] + cmpge r3, #0xa + ldrgesh r3, [r2, #0x2c] + cmpge r3, #0xa + ldrgesh r3, [r2, #0x2e] + cmpge r3, #0xa + orrlt r1, r1, #0x8000000 + orrlt r0, r0, #0 + str r1, [r2, #0x218] + str r0, [r2, #0x21c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E3D94: .word 0x0235130C +_022E3D98: .word 0x02351294 +_022E3D9C: .word 0x02351374 +_022E3DA0: .word 0x023513B4 +_022E3DA4: .word 0x023513F4 +_022E3DA8: .word 0x023514F4 +_022E3DAC: .word 0x0235133C +_022E3DB0: .word 0x023511FC +_022E3DB4: .word 0x023512BC +_022E3DB8: .word 0x02351214 +_022E3DBC: .word 0x023512E4 +_022E3DC0: .word 0x0235126C +_022E3DC4: .word 0x023511BC +_022E3DC8: .word 0x023511EC +_022E3DCC: .word 0x023511CC +_022E3DD0: .word 0x000003E7 +_022E3DD4: .word 0x02353538 + arm_func_end UpdateStatusIconFlags + + arm_func_start ov29_022E3DD8 +ov29_022E3DD8: ; 0x022E3DD8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x144 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x144 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E3DD8 + + arm_func_start ov29_022E3E24 +ov29_022E3E24: ; 0x022E3E24 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E3E70 ; =0x00000143 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E3E70 ; =0x00000143 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E3E70: .word 0x00000143 + arm_func_end ov29_022E3E24 + + arm_func_start ov29_022E3E74 +ov29_022E3E74: ; 0x022E3E74 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x25 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x25 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + ldr r1, _022E3ECC ; =0x0000030E + mov r0, r4 + bl ov29_022E56A0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E3ECC: .word 0x0000030E + arm_func_end ov29_022E3E74 + + arm_func_start ov29_022E3ED0 +ov29_022E3ED0: ; 0x022E3ED0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E3F1C ; =0x00000143 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E3F1C ; =0x00000143 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E3F1C: .word 0x00000143 + arm_func_end ov29_022E3ED0 + + arm_func_start ov29_022E3F20 +ov29_022E3F20: ; 0x022E3F20 + bx lr + arm_func_end ov29_022E3F20 + + arm_func_start ov29_022E3F24 +ov29_022E3F24: ; 0x022E3F24 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E3F70 ; =0x00000141 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E3F70 ; =0x00000141 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E3F70: .word 0x00000141 + arm_func_end ov29_022E3F24 + + arm_func_start ov29_022E3F74 +ov29_022E3F74: ; 0x022E3F74 + bx lr + arm_func_end ov29_022E3F74 + + arm_func_start ov29_022E3F78 +ov29_022E3F78: ; 0x022E3F78 + bx lr + arm_func_end ov29_022E3F78 + + arm_func_start ov29_022E3F7C +ov29_022E3F7C: ; 0x022E3F7C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #7 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #7 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E3F7C + + arm_func_start ov29_022E3FC8 +ov29_022E3FC8: ; 0x022E3FC8 + bx lr + arm_func_end ov29_022E3FC8 + + arm_func_start ov29_022E3FCC +ov29_022E3FCC: ; 0x022E3FCC + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #4 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #4 + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E3FCC + + arm_func_start ov29_022E4014 +ov29_022E4014: ; 0x022E4014 + bx lr + arm_func_end ov29_022E4014 + + arm_func_start ov29_022E4018 +ov29_022E4018: ; 0x022E4018 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4064 ; =0x00000171 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4064 ; =0x00000171 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4064: .word 0x00000171 + arm_func_end ov29_022E4018 + + arm_func_start ov29_022E4068 +ov29_022E4068: ; 0x022E4068 + bx lr + arm_func_end ov29_022E4068 + + arm_func_start ov29_022E406C +ov29_022E406C: ; 0x022E406C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E40B4 ; =0x00000171 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E40B4 ; =0x00000171 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E40B4: .word 0x00000171 + arm_func_end ov29_022E406C + + arm_func_start ov29_022E40B8 +ov29_022E40B8: ; 0x022E40B8 + bx lr + arm_func_end ov29_022E40B8 + + arm_func_start ov29_022E40BC +ov29_022E40BC: ; 0x022E40BC + bx lr + arm_func_end ov29_022E40BC + + arm_func_start ov29_022E40C0 +ov29_022E40C0: ; 0x022E40C0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1ac + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1ac + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E40C0 + + arm_func_start ov29_022E4108 +ov29_022E4108: ; 0x022E4108 + bx lr + arm_func_end ov29_022E4108 + + arm_func_start ov29_022E410C +ov29_022E410C: ; 0x022E410C + bx lr + arm_func_end ov29_022E410C + + arm_func_start ov29_022E4110 +ov29_022E4110: ; 0x022E4110 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #4 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4110 + + arm_func_start ov29_022E415C +ov29_022E415C: ; 0x022E415C + bx lr + arm_func_end ov29_022E415C + + arm_func_start ov29_022E4160 +ov29_022E4160: ; 0x022E4160 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1a8 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1a8 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4160 + + arm_func_start ov29_022E41AC +ov29_022E41AC: ; 0x022E41AC + bx lr + arm_func_end ov29_022E41AC + + arm_func_start ov29_022E41B0 +ov29_022E41B0: ; 0x022E41B0 + stmdb sp!, {r3, lr} + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _022E41C8 ; =0x00000221 + bl ov29_022E56A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E41C8: .word 0x00000221 + arm_func_end ov29_022E41B0 + + arm_func_start ov29_022E41CC +ov29_022E41CC: ; 0x022E41CC + ldr ip, _022E41D8 ; =ov29_022E56A0 + mov r1, #0x310 + bx ip + .align 2, 0 +_022E41D8: .word ov29_022E56A0 + arm_func_end ov29_022E41CC + + arm_func_start ov29_022E41DC +ov29_022E41DC: ; 0x022E41DC + ldr ip, _022E41EC ; =ov29_023049A8 + mov r1, #0xa + mov r2, #8 + bx ip + .align 2, 0 +_022E41EC: .word ov29_023049A8 + arm_func_end ov29_022E41DC + + arm_func_start ov29_022E41F0 +ov29_022E41F0: ; 0x022E41F0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E423C ; =0x000001A7 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E423C ; =0x000001A7 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E423C: .word 0x000001A7 + arm_func_end ov29_022E41F0 + + arm_func_start ov29_022E4240 +ov29_022E4240: ; 0x022E4240 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E428C ; =0x000001A7 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E428C ; =0x000001A7 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E428C: .word 0x000001A7 + arm_func_end ov29_022E4240 + + arm_func_start ov29_022E4290 +ov29_022E4290: ; 0x022E4290 + bx lr + arm_func_end ov29_022E4290 + + arm_func_start ov29_022E4294 +ov29_022E4294: ; 0x022E4294 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x4c + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x4c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4294 + + arm_func_start ov29_022E42E0 +ov29_022E42E0: ; 0x022E42E0 + bx lr + arm_func_end ov29_022E42E0 + + arm_func_start ov29_022E42E4 +ov29_022E42E4: ; 0x022E42E4 + bx lr + arm_func_end ov29_022E42E4 + + arm_func_start ov29_022E42E8 +ov29_022E42E8: ; 0x022E42E8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r5 + mov r1, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E42E8 + + arm_func_start ov29_022E4338 +ov29_022E4338: ; 0x022E4338 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4384 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4384 ; =0x000001A9 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4384: .word 0x000001A9 + arm_func_end ov29_022E4338 + + arm_func_start ov29_022E4388 +ov29_022E4388: ; 0x022E4388 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E43D4 ; =0x0000013A + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x138 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E43D4: .word 0x0000013A + arm_func_end ov29_022E4388 + + arm_func_start ov29_022E43D8 +ov29_022E43D8: ; 0x022E43D8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4424 ; =0x0000013A + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x138 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4424: .word 0x0000013A + arm_func_end ov29_022E43D8 + + arm_func_start ov29_022E4428 +ov29_022E4428: ; 0x022E4428 + bx lr + arm_func_end ov29_022E4428 + + arm_func_start ov29_022E442C +ov29_022E442C: ; 0x022E442C + bx lr + arm_func_end ov29_022E442C + + arm_func_start ov29_022E4430 +ov29_022E4430: ; 0x022E4430 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E447C ; =0x00000171 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E447C ; =0x00000171 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E447C: .word 0x00000171 + arm_func_end ov29_022E4430 + + arm_func_start ov29_022E4480 +ov29_022E4480: ; 0x022E4480 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #7 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #7 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4480 + + arm_func_start ov29_022E44CC +ov29_022E44CC: ; 0x022E44CC + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4518 ; =0x0000018B + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4518 ; =0x0000018B + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4518: .word 0x0000018B + arm_func_end ov29_022E44CC + + arm_func_start ov29_022E451C +ov29_022E451C: ; 0x022E451C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4568 ; =0x0000018A + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x188 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4568: .word 0x0000018A + arm_func_end ov29_022E451C + + arm_func_start ov29_022E456C +ov29_022E456C: ; 0x022E456C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #5 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #5 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E456C + + arm_func_start ov29_022E45B8 +ov29_022E45B8: ; 0x022E45B8 + ldr ip, _022E45C4 ; =ov29_022E56A0 + ldr r1, _022E45C8 ; =0x00000227 + bx ip + .align 2, 0 +_022E45C4: .word ov29_022E56A0 +_022E45C8: .word 0x00000227 + arm_func_end ov29_022E45B8 + + arm_func_start ov29_022E45CC +ov29_022E45CC: ; 0x022E45CC + bx lr + arm_func_end ov29_022E45CC + + arm_func_start ov29_022E45D0 +ov29_022E45D0: ; 0x022E45D0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r0 + mov r0, #0x2f + mov r4, r1 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x2f + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + mov r0, #0x30 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r1, #2 + str r1, [sp] + mov r2, #0 + str r2, [sp, #4] + sub r1, r2, #1 + str r1, [sp, #8] + str r2, [sp, #0xc] + mov r0, r5 + mov r1, #0x30 + mov r2, #1 + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E45D0 + + arm_func_start ov29_022E465C +ov29_022E465C: ; 0x022E465C + bx lr + arm_func_end ov29_022E465C + + arm_func_start ov29_022E4660 +ov29_022E4660: ; 0x022E4660 + bx lr + arm_func_end ov29_022E4660 + + arm_func_start ov29_022E4664 +ov29_022E4664: ; 0x022E4664 + bx lr + arm_func_end ov29_022E4664 + + arm_func_start ov29_022E4668 +ov29_022E4668: ; 0x022E4668 + bx lr + arm_func_end ov29_022E4668 + + arm_func_start ov29_022E466C +ov29_022E466C: ; 0x022E466C + bx lr + arm_func_end ov29_022E466C + + arm_func_start ov29_022E4670 +ov29_022E4670: ; 0x022E4670 + bx lr + arm_func_end ov29_022E4670 + + arm_func_start ov29_022E4674 +ov29_022E4674: ; 0x022E4674 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x21 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x21 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4674 + + arm_func_start ov29_022E46C0 +ov29_022E46C0: ; 0x022E46C0 + ldr ip, _022E46CC ; =ov29_022E56A0 + mov r1, #0x30c + bx ip + .align 2, 0 +_022E46CC: .word ov29_022E56A0 + arm_func_end ov29_022E46C0 + + arm_func_start ov29_022E46D0 +ov29_022E46D0: ; 0x022E46D0 + bx lr + arm_func_end ov29_022E46D0 + + arm_func_start ov29_022E46D4 +ov29_022E46D4: ; 0x022E46D4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_022E5ED0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + mov r1, r4 + ldrb r0, [r0, #0x11e] + mov r2, #1 + mov r3, #0xb + bl ov29_022EA718 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E46D4 + + arm_func_start ov29_022E4704 +ov29_022E4704: ; 0x022E4704 + ldr ip, _022E4710 ; =ov29_022E56A0 + mov r1, #0x21c + bx ip + .align 2, 0 +_022E4710: .word ov29_022E56A0 + arm_func_end ov29_022E4704 + + arm_func_start ov29_022E4714 +ov29_022E4714: ; 0x022E4714 + bx lr + arm_func_end ov29_022E4714 + + arm_func_start ov29_022E4718 +ov29_022E4718: ; 0x022E4718 + bx lr + arm_func_end ov29_022E4718 + + arm_func_start ov29_022E471C +ov29_022E471C: ; 0x022E471C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4768 ; =0x00000131 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4768 ; =0x00000131 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4768: .word 0x00000131 + arm_func_end ov29_022E471C + + arm_func_start ov29_022E476C +ov29_022E476C: ; 0x022E476C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x30 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x30 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E476C + + arm_func_start ov29_022E47B8 +ov29_022E47B8: ; 0x022E47B8 + bx lr + arm_func_end ov29_022E47B8 + + arm_func_start ov29_022E47BC +ov29_022E47BC: ; 0x022E47BC + bx lr + arm_func_end ov29_022E47BC + + arm_func_start ov29_022E47C0 +ov29_022E47C0: ; 0x022E47C0 + bx lr + arm_func_end ov29_022E47C0 + + arm_func_start ov29_022E47C4 +ov29_022E47C4: ; 0x022E47C4 + bx lr + arm_func_end ov29_022E47C4 + + arm_func_start ov29_022E47C8 +ov29_022E47C8: ; 0x022E47C8 + bx lr + arm_func_end ov29_022E47C8 + + arm_func_start ov29_022E47CC +ov29_022E47CC: ; 0x022E47CC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r5, r1 + mov r1, #0xe + mov r4, r0 + bl MonsterIsType + cmp r0, #0 + beq _022E4828 + mov r0, r5 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, r5 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E4860 +_022E4828: + mov r0, #0xe + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xe + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E4860: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022E47CC + + arm_func_start ov29_022E4868 +ov29_022E4868: ; 0x022E4868 + bx lr + arm_func_end ov29_022E4868 + + arm_func_start ov29_022E486C +ov29_022E486C: ; 0x022E486C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x41 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x41 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E486C + + arm_func_start ov29_022E48B8 +ov29_022E48B8: ; 0x022E48B8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4910 ; =0x0000011E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x11c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + mov r0, r4 + mov r1, #0x20c + bl ov29_022E56A0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4910: .word 0x0000011E + arm_func_end ov29_022E48B8 + + arm_func_start ov29_022E4914 +ov29_022E4914: ; 0x022E4914 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4960 ; =0x000001AE + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x1ac + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4960: .word 0x000001AE + arm_func_end ov29_022E4914 + + arm_func_start ov29_022E4964 +ov29_022E4964: ; 0x022E4964 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E49B0 ; =0x000001B1 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E49B0 ; =0x000001B1 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E49B0: .word 0x000001B1 + arm_func_end ov29_022E4964 + + arm_func_start ov29_022E49B4 +ov29_022E49B4: ; 0x022E49B4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4A00 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4A00 ; =0x000001A9 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4A00: .word 0x000001A9 + arm_func_end ov29_022E49B4 + + arm_func_start ov29_022E4A04 +ov29_022E4A04: ; 0x022E4A04 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4A50 ; =0x00000192 + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4A50: .word 0x00000192 + arm_func_end ov29_022E4A04 + + arm_func_start ov29_022E4A54 +ov29_022E4A54: ; 0x022E4A54 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4AA0 ; =0x0000018E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x18c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4AA0: .word 0x0000018E + arm_func_end ov29_022E4A54 + + arm_func_start ov29_022E4AA4 +ov29_022E4AA4: ; 0x022E4AA4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x190 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4AA4 + + arm_func_start ov29_022E4AF0 +ov29_022E4AF0: ; 0x022E4AF0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x15 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x15 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4AF0 + + arm_func_start ov29_022E4B3C +ov29_022E4B3C: ; 0x022E4B3C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4B88 ; =0x00000171 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4B88 ; =0x00000171 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4B88: .word 0x00000171 + arm_func_end ov29_022E4B3C + + arm_func_start ov29_022E4B8C +ov29_022E4B8C: ; 0x022E4B8C + ldr ip, _022E4B98 ; =ov29_022E56A0 + ldr r1, _022E4B9C ; =0x0000030E + bx ip + .align 2, 0 +_022E4B98: .word ov29_022E56A0 +_022E4B9C: .word 0x0000030E + arm_func_end ov29_022E4B8C + + arm_func_start ov29_022E4BA0 +ov29_022E4BA0: ; 0x022E4BA0 + ldr ip, _022E4BAC ; =ov29_022E56A0 + ldr r1, _022E4BB0 ; =0x0000030E + bx ip + .align 2, 0 +_022E4BAC: .word ov29_022E56A0 +_022E4BB0: .word 0x0000030E + arm_func_end ov29_022E4BA0 + + arm_func_start ov29_022E4BB4 +ov29_022E4BB4: ; 0x022E4BB4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x15 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x15 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4BB4 + + arm_func_start ov29_022E4C00 +ov29_022E4C00: ; 0x022E4C00 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0xf + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xf + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E4C00 + + arm_func_start ov29_022E4C4C +ov29_022E4C4C: ; 0x022E4C4C + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r1, #2 + mov ip, #0 + stmia sp, {r1, ip} + sub r1, ip, #1 + str r1, [sp, #8] + mov r1, #0x15 + mov r2, #1 + mov r3, #3 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E4C4C + + arm_func_start ov29_022E4C84 +ov29_022E4C84: ; 0x022E4C84 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4CD0 ; =0x000001F7 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4CD0 ; =0x000001F7 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4CD0: .word 0x000001F7 + arm_func_end ov29_022E4C84 + + arm_func_start ov29_022E4CD4 +ov29_022E4CD4: ; 0x022E4CD4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E4D20 ; =0x000001F9 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4D20 ; =0x000001F9 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E4D20: .word 0x000001F9 + arm_func_end ov29_022E4CD4 + + arm_func_start ov29_022E4D24 +ov29_022E4D24: ; 0x022E4D24 + bx lr + arm_func_end ov29_022E4D24 + + arm_func_start ov29_022E4D28 +ov29_022E4D28: ; 0x022E4D28 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E4D80 + mov r0, #0x194 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x194 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E4DB8 +_022E4D80: + ldr r0, _022E4DC8 ; =0x00000193 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4DC8 ; =0x00000193 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E4DB8: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E4DC8: .word 0x00000193 + arm_func_end ov29_022E4D28 + + arm_func_start ov29_022E4DCC +ov29_022E4DCC: ; 0x022E4DCC + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E4E24 + ldr r0, _022E4E6C ; =0x0000018F + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4E6C ; =0x0000018F + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E4E5C +_022E4E24: + ldr r0, _022E4E70 ; =0x00000191 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4E70 ; =0x00000191 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E4E5C: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E4E6C: .word 0x0000018F +_022E4E70: .word 0x00000191 + arm_func_end ov29_022E4DCC + + arm_func_start ov29_022E4E74 +ov29_022E4E74: ; 0x022E4E74 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E4ECC + ldr r0, _022E4F14 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E4F14 ; =0x000001A9 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E4F04 +_022E4ECC: + ldr r0, _022E4F18 ; =0x00000192 + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E4F04: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E4F14: .word 0x000001A9 +_022E4F18: .word 0x00000192 + arm_func_end ov29_022E4E74 + + arm_func_start ov29_022E4F1C +ov29_022E4F1C: ; 0x022E4F1C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E4F74 + ldr r0, _022E4FBC ; =0x0000018E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x18c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E4FAC +_022E4F74: + mov r0, #0x190 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E4FAC: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E4FBC: .word 0x0000018E + arm_func_end ov29_022E4F1C + + arm_func_start ov29_022E4FC0 +ov29_022E4FC0: ; 0x022E4FC0 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E5018 + ldr r0, _022E5060 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E5060 ; =0x000001A9 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E5050 +_022E5018: + ldr r0, _022E5064 ; =0x00000192 + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E5050: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E5060: .word 0x000001A9 +_022E5064: .word 0x00000192 + arm_func_end ov29_022E4FC0 + + arm_func_start ov29_022E5068 +ov29_022E5068: ; 0x022E5068 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E50C0 + mov r0, #0x194 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x194 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E50F8 +_022E50C0: + ldr r0, _022E5108 ; =0x00000193 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E5108 ; =0x00000193 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E50F8: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E5108: .word 0x00000193 + arm_func_end ov29_022E5068 + + arm_func_start ov29_022E510C +ov29_022E510C: ; 0x022E510C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E5164 + ldr r0, _022E51AC ; =0x0000018E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x18c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E519C +_022E5164: + mov r0, #0x190 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x190 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E519C: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E51AC: .word 0x0000018E + arm_func_end ov29_022E510C + + arm_func_start ov29_022E51B0 +ov29_022E51B0: ; 0x022E51B0 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E5208 + ldr r0, _022E5250 ; =0x0000018F + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E5250 ; =0x0000018F + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E5240 +_022E5208: + ldr r0, _022E5254 ; =0x00000191 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E5254 ; =0x00000191 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E5240: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E5250: .word 0x0000018F +_022E5254: .word 0x00000191 + arm_func_end ov29_022E51B0 + + arm_func_start ov29_022E5258 +ov29_022E5258: ; 0x022E5258 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E52B0 + mov r0, #0x18c + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x18c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E52E8 +_022E52B0: + mov r0, #0xd + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xd + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E52E8: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + arm_func_end ov29_022E5258 + + arm_func_start ov29_022E52F8 +ov29_022E52F8: ; 0x022E52F8 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, [sp, #0x1c] + mov r4, r0 + cmp r1, #0 + bne _022E5350 + ldr r0, _022E5398 ; =0x0000018D + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E5398 ; =0x0000018D + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E5388 +_022E5350: + mov r0, #0xe + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xe + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E5388: + add sp, sp, #0x10 + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_022E5398: .word 0x0000018D + arm_func_end ov29_022E52F8 + + arm_func_start ov29_022E539C +ov29_022E539C: ; 0x022E539C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E53E8 ; =0x00000143 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E53E8 ; =0x00000143 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E53E8: .word 0x00000143 + arm_func_end ov29_022E539C + + arm_func_start ov29_022E53EC +ov29_022E53EC: ; 0x022E53EC + bx lr + arm_func_end ov29_022E53EC + + arm_func_start ov29_022E53F0 +ov29_022E53F0: ; 0x022E53F0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x19 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x19 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E53F0 + + arm_func_start ov29_022E543C +ov29_022E543C: ; 0x022E543C + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r1, #2 + mov ip, #0 + stmia sp, {r1, ip} + sub r1, ip, #1 + str r1, [sp, #8] + mov r1, #0x15 + mov r2, #1 + mov r3, #3 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E543C + + arm_func_start ov29_022E5474 +ov29_022E5474: ; 0x022E5474 + bx lr + arm_func_end ov29_022E5474 + + arm_func_start ov29_022E5478 +ov29_022E5478: ; 0x022E5478 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r2, _022E5508 ; =0x02353538 + mov r4, r0 + ldr r2, [r2] + ldr r0, [r1, #8] + ldrb r1, [r2, #0x1c5] + cmp r1, #0 + beq _022E54A0 + bl ov29_0230D618 +_022E54A0: + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022E54BC +_022E54AC: ; jump table + b _022E54BC ; case 0 + b _022E54C4 ; case 1 + b _022E54CC ; case 2 + b _022E54D4 ; case 3 +_022E54BC: + mov r1, #8 + b _022E54D8 +_022E54C4: + mov r1, #9 + b _022E54D8 +_022E54CC: + mov r1, #0xa + b _022E54D8 +_022E54D4: + mov r1, #0xb +_022E54D8: + mov ip, #0 + mov r2, #1 + str ip, [sp] + str r2, [sp, #4] + sub r0, r2, #2 + str r0, [sp, #8] + mov r0, r4 + mov r3, #3 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5508: .word 0x02353538 + arm_func_end ov29_022E5478 + + arm_func_start ov29_022E550C +ov29_022E550C: ; 0x022E550C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E5558 ; =0x0000013E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x13c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5558: .word 0x0000013E + arm_func_end ov29_022E550C + + arm_func_start ov29_022E555C +ov29_022E555C: ; 0x022E555C + bx lr + arm_func_end ov29_022E555C + + arm_func_start ov29_022E5560 +ov29_022E5560: ; 0x022E5560 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r1 + cmp r2, #1 + bne _022E55B0 + mov r0, #0xf8 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xf8 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + b _022E55E8 +_022E55B0: + mov r0, #0xf9 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0xf9 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 +_022E55E8: + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E5560 + + arm_func_start ov29_022E55F0 +ov29_022E55F0: ; 0x022E55F0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r0, #0x2a + mov r4, r1 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x2a + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E55F0 + + arm_func_start ov29_022E563C +ov29_022E563C: ; 0x022E563C + ldr ip, _022E564C ; =ov29_022E3820 + mov r1, #0x90 + mov r2, #1 + bx ip + .align 2, 0 +_022E564C: .word ov29_022E3820 + arm_func_end ov29_022E563C + + arm_func_start ov29_022E5650 +ov29_022E5650: ; 0x022E5650 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r0, _022E569C ; =0x00000167 + mov r4, r1 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E569C ; =0x00000167 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E569C: .word 0x00000167 + arm_func_end ov29_022E5650 + + arm_func_start ov29_022E56A0 +ov29_022E56A0: ; 0x022E56A0 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0 + bne _022E56BC + mov r0, r4 + bl ov29_022EACCC + ldmia sp!, {r4, pc} +_022E56BC: + bl ov29_022E5ED0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl ov29_022EACCC + ldmia sp!, {r4, pc} + arm_func_end ov29_022E56A0 + + arm_func_start ov29_022E56D4 +ov29_022E56D4: ; 0x022E56D4 + stmdb sp!, {r4, lr} + mov r4, r1 + bl ov29_022E2CA0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl ov29_022EACCC + ldmia sp!, {r4, pc} + arm_func_end ov29_022E56D4 + + arm_func_start ov29_022E56F4 +ov29_022E56F4: ; 0x022E56F4 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0 + bne _022E5710 + mov r0, r4 + bl ov29_022EACE4 + ldmia sp!, {r4, pc} +_022E5710: + bl ov29_022E5ED0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl ov29_022EACCC + ldmia sp!, {r4, pc} + arm_func_end ov29_022E56F4 + + arm_func_start ov29_022E5728 +ov29_022E5728: ; 0x022E5728 + stmdb sp!, {r3, lr} + cmp r1, #0 + bne _022E5740 + ldr r0, _022E5760 ; =0x0000130E + bl ov29_022EACCC + ldmia sp!, {r3, pc} +_022E5740: + cmp r1, #1 + bne _022E5754 + ldr r0, _022E5764 ; =0x0000130D + bl ov29_022EACCC + ldmia sp!, {r3, pc} +_022E5754: + ldr r0, _022E5768 ; =0x0000130C + bl ov29_022EACCC + ldmia sp!, {r3, pc} + .align 2, 0 +_022E5760: .word 0x0000130E +_022E5764: .word 0x0000130D +_022E5768: .word 0x0000130C + arm_func_end ov29_022E5728 + + arm_func_start ov29_022E576C +ov29_022E576C: ; 0x022E576C + stmdb sp!, {r3, lr} + ldr r0, [r1, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + beq _022E578C + ldr r0, _022E5798 ; =0x00001306 + bl ov29_022EACCC + ldmia sp!, {r3, pc} +_022E578C: + ldr r0, _022E579C ; =0x00001307 + bl ov29_022EACCC + ldmia sp!, {r3, pc} + .align 2, 0 +_022E5798: .word 0x00001306 +_022E579C: .word 0x00001307 + arm_func_end ov29_022E576C + + arm_func_start ov29_022E57A0 +ov29_022E57A0: ; 0x022E57A0 + stmdb sp!, {r3, lr} + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + beq _022E57C0 + ldr r0, _022E57CC ; =0x00001306 + bl ov29_022EACCC + ldmia sp!, {r3, pc} +_022E57C0: + ldr r0, _022E57D0 ; =0x00001307 + bl ov29_022EACCC + ldmia sp!, {r3, pc} + .align 2, 0 +_022E57CC: .word 0x00001306 +_022E57D0: .word 0x00001307 + arm_func_end ov29_022E57A0 + + arm_func_start ov29_022E57D4 +ov29_022E57D4: ; 0x022E57D4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E585C ; =0x0000025A + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x258 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + ldr r0, _022E5860 ; =0x0000025B + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r1, #2 + str r1, [sp] + mov r2, #0 + str r2, [sp, #4] + sub r1, r2, #1 + str r1, [sp, #8] + str r2, [sp, #0xc] + ldr r1, _022E5860 ; =0x0000025B + mov r0, r4 + mov r2, #1 + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E585C: .word 0x0000025A +_022E5860: .word 0x0000025B + arm_func_end ov29_022E57D4 + + arm_func_start ov29_022E5864 +ov29_022E5864: ; 0x022E5864 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x16 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x16 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E5864 + + arm_func_start ov29_022E58B0 +ov29_022E58B0: ; 0x022E58B0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r2 + mov sl, r0 + mov r5, r1 + cmp r4, #0x11 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r5 + bl ov29_022E2CA0 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsh r0, [r5] + mov r2, #0x18 + add r1, sp, #0 + smulbb r0, r0, r2 + add r0, r0, #0xc + mov r0, r0, lsl #8 + mov r0, r0, asr #8 + strh r0, [sp] + ldrsh r3, [r5, #2] + mov r0, r4 + smulbb r2, r3, r2 + add r2, r2, #0x10 + mov r2, r2, lsl #8 + mov r2, r2, asr #8 + strh r2, [sp, #2] + bl ov10_022BEC08 + cmp r4, #4 + mov r6, r0 + cmpne r4, #0x18 + bne _022E5944 + mov r0, #0 + mov r1, #0x308 + bl ov29_022E56A0 + mov r0, #0x28 + mov r1, #0x33 + bl ov29_022EA370 + b _022E59C4 +_022E5944: + cmp r4, #8 + bne _022E59B8 + ldr sb, [sl, #0xb4] + mov r7, #0 + mov r0, r6, lsl #0x10 + ldrb r8, [sb, #0x4c] + mov r4, r0, asr #0x10 + mov r5, r7 + mov fp, #2 + b _022E59A4 +_022E596C: + sub r0, r8, #1 + and r8, r0, #7 + mov r0, sl + mov r1, r5 + mov r2, r8 + bl ov29_023049A8 + mov r0, fp + mov r1, #0x33 + bl ov29_022EA370 + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E59AC + add r7, r7, #2 +_022E59A4: + cmp r7, #0x3e8 + blt _022E596C +_022E59AC: + and r0, r8, #7 + strb r0, [sb, #0x4c] + b _022E59C4 +_022E59B8: + mov r0, #0x28 + mov r1, #0x33 + bl ov29_022EA370 +_022E59C4: + mov r0, r6, lsl #0x10 + mov r7, #0 + mov r4, r0, asr #0x10 + mov r5, #0x42 + b _022E59F4 +_022E59D8: + mov r0, r5 + bl AdvanceFrame + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r7, r7, #1 +_022E59F4: + cmp r7, #0x3e8 + blt _022E59D8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_022E58B0 + + arm_func_start ov29_022E5A00 +ov29_022E5A00: ; 0x022E5A00 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r5, r0 + mov r4, r1 + bl ov29_022E5ED0 + cmp r0, #0 + beq _022E5AD4 + ldrb r0, [r4] + ldr r1, [r5, #0xc] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r4, #0 + ldreqsh r4, [r4, #4] + mov r1, r1, asr #8 + ldr r0, _022E5ADC ; =0x02353538 + strh r1, [sp, #4] + ldr r2, [r5, #0x10] + ldr r1, [r0] + mov r0, r2, asr #8 + strh r0, [sp, #6] + ldr r0, _022E5AE0 ; =0x0001A226 + ldrsh r3, [sp, #6] + ldrsh r1, [r1, r0] + add r0, sp, #8 + add r2, r5, #0x2c + sub r1, r3, r1 + add r1, r1, r1, lsr #31 + mov r3, r1, asr #1 + mov r1, #4 + add r5, r3, #1 + bl sub_0201D034 + add r1, sp, #4 + add r2, sp, #8 + mov r0, r4 + mov r3, #0 + str r5, [sp] + bl ov10_022BEC94 + mov r0, r0, lsl #0x10 + mov r6, #0 + mov r4, r0, asr #0x10 + mov r5, #0x42 + b _022E5ACC +_022E5AB0: + mov r0, r5 + bl AdvanceFrame + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E5AD4 + add r6, r6, #1 +_022E5ACC: + cmp r6, #0x3e8 + blt _022E5AB0 +_022E5AD4: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E5ADC: .word 0x02353538 +_022E5AE0: .word 0x0001A226 + arm_func_end ov29_022E5A00 + + arm_func_start ov29_022E5AE4 +ov29_022E5AE4: ; 0x022E5AE4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r5, r0 + mov r4, r1 + bl ov29_022E5ED0 + cmp r0, #0 + beq _022E5BC8 + ldrb r0, [r4] + ldr r1, [r5, #0xc] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r4, #0 + ldreqsh r4, [r4, #4] + mov r1, r1, asr #8 + ldr r0, _022E5BD0 ; =0x02353538 + strh r1, [sp, #4] + ldr r2, [r5, #0x10] + ldr r1, [r0] + mov r0, r2, asr #8 + strh r0, [sp, #6] + ldr r0, _022E5BD4 ; =0x0001A226 + ldrsh r3, [sp, #6] + ldrsh r1, [r1, r0] + add r0, sp, #8 + add r2, r5, #0x2c + sub r1, r3, r1 + add r1, r1, r1, lsr #31 + mov r1, r1, asr #1 + add r1, r1, #1 + mov r3, r1, lsl #0x10 + mov r1, #4 + mov r5, r3, asr #0x10 + bl sub_0201D034 + add r1, sp, #4 + add r2, sp, #8 + mov r0, r4 + mov r3, #1 + str r5, [sp] + bl ov10_022BEC94 + mov r0, r0, lsl #0x10 + mov r6, #0 + mov r4, r0, asr #0x10 + mov r5, #0x42 + b _022E5BC0 +_022E5B9C: + mov r0, r5 + bl AdvanceFrame + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E5BC8 + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_022E5BC0: + cmp r6, #0x3e8 + blt _022E5B9C +_022E5BC8: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E5BD0: .word 0x02353538 +_022E5BD4: .word 0x0001A226 + arm_func_end ov29_022E5AE4 + + arm_func_start ov29_022E5BD8 +ov29_022E5BD8: ; 0x022E5BD8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x40 + mov r5, r0 + bl ov29_022E272C + cmp r0, #0 + beq _022E5D4C + ldr r1, [r5, #0xb4] + ldr r0, [r5, #0xc] + ldrb r4, [r1, #0x4c] + mov r1, r0, asr #8 + ldr r0, _022E5D58 ; =0x02353538 + strh r1, [sp, #0x10] + ldr r2, [r5, #0x10] + ldr r1, [r0] + mov r0, r2, asr #8 + strh r0, [sp, #0x12] + ldr r0, _022E5D5C ; =0x0001A226 + ldrsh r2, [sp, #0x12] + ldrsh r1, [r1, r0] + add r0, sp, #0x14 + sub r1, r2, r1 + add r1, r1, r1, lsr #31 + mov sl, r1, asr #1 + bl ov10_022BF274 + mov r5, #0 + ldrsh r3, [sp, #0x10] + ldrsh r2, [sp, #0x12] + ldr r6, _022E5D60 ; =0x00000165 + sub r1, r5, #1 + add r0, sp, #0x30 + str r6, [sp, #0x14] + str r5, [sp, #0x18] + str r4, [sp, #0x1c] + strh r3, [sp, #0x20] + strh r2, [sp, #0x22] + strh r5, [sp, #0x24] + strh r5, [sp, #0x26] + strb r1, [sp, #0x28] + str sl, [sp, #0x2c] + bl sub_0201C000 + add r0, sp, #0x14 + mov r1, r5 + bl ov10_022BF2B4 + ldr r2, _022E5D64 ; =0x0235171C + mov sb, r5 + add r1, r2, r4, lsl #2 + mov r3, r4, lsl #2 + ldrh r2, [r2, r3] + ldrh r1, [r1, #2] + mov r0, r0, lsl #0x10 + strh r2, [sp, #0xc] + strh r1, [sp, #0xe] + ldrsh r8, [sp, #0xc] + ldrsh r7, [sp, #0xe] + ldr r4, _022E5D58 ; =0x02353538 + ldr fp, _022E5D5C ; =0x0001A226 + mov r5, r0, asr #0x10 + mov r6, sb +_022E5CC0: + mov r0, r5 + add r1, sp, #0x10 + mov r2, r6 + mov r3, sl + str r6, [sp] + bl ov10_022BF45C + mov r0, #0x42 + bl AdvanceFrame + ldrsh r0, [sp, #0x12] + ldrsh r1, [sp, #0x10] + add sb, sb, #1 + add r0, r0, r7, lsl #2 + add r1, r1, r8, lsl #2 + strh r0, [sp, #0x12] + strh r1, [sp, #0x10] + ldr r0, [r4] + ldrsh r1, [sp, #0x12] + ldrsh r0, [r0, fp] + cmp sb, #6 + sub r0, r1, r0 + add r0, r0, r0, lsr #31 + mov sl, r0, asr #1 + blt _022E5CC0 + bl ov10_022BDC68 + ldrsh r2, [sp, #0x10] + ldrsh r1, [sp, #0x12] + add r0, sp, #4 + mov r4, r2, lsl #8 + mov r3, r1, lsl #8 + mov r1, #0x1a0 + mov r2, #1 + str r4, [sp, #4] + str r3, [sp, #8] + bl ov29_022E3820 + b _022E5D50 +_022E5D4C: + mvn r0, #0 +_022E5D50: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E5D58: .word 0x02353538 +_022E5D5C: .word 0x0001A226 +_022E5D60: .word 0x00000165 +_022E5D64: .word 0x0235171C + arm_func_end ov29_022E5BD8 + + arm_func_start ov29_022E5D68 +ov29_022E5D68: ; 0x022E5D68 + stmdb sp!, {r4, lr} + mov r4, #0x3f00 + bl GetFloorType + cmp r0, #0 + beq _022E5D88 + cmp r0, #1 + cmpne r0, #2 + beq _022E5DA4 +_022E5D88: + ldr r0, _022E5DB0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl DungeonGoesUp + cmp r0, #0 + ldrne r4, _022E5DB4 ; =0x0000130A + ldreq r4, _022E5DB8 ; =0x00001309 +_022E5DA4: + mov r0, r4 + bl ov29_022EACCC + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5DB0: .word 0x02353538 +_022E5DB4: .word 0x0000130A +_022E5DB8: .word 0x00001309 + arm_func_end ov29_022E5D68 + + arm_func_start ov29_022E5DBC +ov29_022E5DBC: ; 0x022E5DBC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + cmp r4, #3 + bne _022E5DD8 + mov r0, #0 + bl ov29_022EAE14 +_022E5DD8: + cmp r5, #4 + beq _022E5E10 + cmp r4, #3 + bne _022E5DFC + ldr r0, _022E5E7C ; =0x0235119C + mov r1, r4, lsl #1 + ldrh r0, [r0, r1] + bl ov29_022EACCC + b _022E5E3C +_022E5DFC: + ldr r0, _022E5E7C ; =0x0235119C + mov r1, r4, lsl #1 + ldrh r0, [r0, r1] + bl ov29_022EACE4 + b _022E5E3C +_022E5E10: + cmp r4, #3 + bne _022E5E2C + ldr r0, _022E5E80 ; =0x02351194 + mov r1, r4, lsl #1 + ldrh r0, [r0, r1] + bl ov29_022EACCC + b _022E5E3C +_022E5E2C: + ldr r0, _022E5E7C ; =0x0235119C + mov r1, r4, lsl #1 + ldrh r0, [r0, r1] + bl ov29_022EACE4 +_022E5E3C: + mov r0, r5 + mov r1, r4 + mov r2, #0x80 + bl ov29_022E6A00 + mov r4, #0x46 + b _022E5E5C +_022E5E54: + mov r0, r4 + bl AdvanceFrame +_022E5E5C: + bl ov29_022E6C08 + cmp r0, #0 + bne _022E5E54 + bl ov29_022E6CE0 + bl ov29_02339148 + mov r0, #1 + bl ov29_0234B1A4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E5E7C: .word 0x0235119C +_022E5E80: .word 0x02351194 + arm_func_end ov29_022E5DBC + + arm_func_start ov29_022E5E84 +ov29_022E5E84: ; 0x022E5E84 + stmdb sp!, {r4, r5, r6, lr} + mov r1, #8 + mov r2, r1 + mov r6, r0 + bl ov29_023049A8 + mov r5, #0 + mov r4, #0x51 + b _022E5EC4 +_022E5EA4: + mov r0, r4 + bl AdvanceFrame + ldr r0, [r6, #0x58] + tst r0, #3 + ldreqb r0, [r6, #0xaf] + cmpeq r0, #8 + ldmneia sp!, {r4, r5, r6, pc} + add r5, r5, #1 +_022E5EC4: + cmp r5, #0x64 + blt _022E5EA4 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_022E5E84 + + arm_func_start ov29_022E5ED0 +ov29_022E5ED0: ; 0x022E5ED0 + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x20] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _022E5F1C ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x1a000 + ldrb r2, [r1, #0x23e] + cmp r2, #0 + beq _022E5F14 + ldr r1, [r1, #0x22c] + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_022E5F14: + bl ov29_022E272C + ldmia sp!, {r3, pc} + .align 2, 0 +_022E5F1C: .word 0x02353538 + arm_func_end ov29_022E5ED0 + + arm_func_start ov29_022E5F20 +ov29_022E5F20: ; 0x022E5F20 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r0, _022E5FDC ; =0x00000199 + mov r8, #0 + ldr fp, _022E5FE0 ; =0x02353538 + rsb r4, r0, #0x198 + mov r7, r8 + mov r6, #2 + mov r5, r8 +_022E5F44: + ldr r0, [fp] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__022E37B8 + cmp r0, #0 + ldrne sl, [sb, #0xb4] + ldrneb r0, [sl, #0xfc] + cmpne r0, #0 + beq _022E5FC8 + ldr r0, _022E5FDC ; =0x00000199 + strb r7, [sl, #0xfc] + bl GetEffectAnimationField0x19 + str r6, [sp] + str r5, [sp, #4] + str r4, [sp, #8] + and r3, r0, #0xff + ldr r1, _022E5FDC ; =0x00000199 + str r5, [sp, #0xc] + mov r0, sb + mov r2, r5 + bl ov29_022E35E4 + ldrb r0, [sl, #6] + cmp r0, #0 + bne _022E5FC8 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022E5FE4 ; =0x00000B92 + mov r0, sb + bl LogMessageByIdWithPopup +_022E5FC8: + add r8, r8, #1 + cmp r8, #0x14 + blt _022E5F44 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E5FDC: .word 0x00000199 +_022E5FE0: .word 0x02353538 +_022E5FE4: .word 0x00000B92 + arm_func_end ov29_022E5F20 + + arm_func_start ov29_022E5FE8 +ov29_022E5FE8: ; 0x022E5FE8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + ldr r2, _022E60D4 ; =0x02353538 + mov r6, r0 + ldr r0, [r2] + mov r5, r1 + add r0, r0, #0x1a000 + ldr r4, [r0, #0x22c] + cmp r4, #0 + bne _022E6018 + bl GetLeader + mov r4, r0 +_022E6018: + ldr r0, _022E60D8 ; =0x023511DC + mov r1, r6, lsl #1 + ldrh r1, [r0, r1] + cmp r1, #0x3f00 + beq _022E6034 + mov r0, r4 + bl ov29_022E56A0 +_022E6034: + ldr r0, _022E60DC ; =0x0235122C + ldr r7, [r0, r6, lsl #2] + cmp r7, #0 + blt _022E60CC + cmp r5, #0 + beq _022E6090 + bl ov29_022E0880 + cmp r0, #0 + bne _022E6090 + mov r0, r7 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, r7 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + b _022E60CC +_022E6090: + ldr r0, _022E60E0 ; =0x0235124C + ldr r5, [r0, r6, lsl #2] + mov r0, r5 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, r5 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 +_022E60CC: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E60D4: .word 0x02353538 +_022E60D8: .word 0x023511DC +_022E60DC: .word 0x0235122C +_022E60E0: .word 0x0235124C + arm_func_end ov29_022E5FE8 + + arm_func_start ov29_022E60E4 +ov29_022E60E4: ; 0x022E60E4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x29 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x29 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E60E4 + + arm_func_start ov29_022E6130 +ov29_022E6130: ; 0x022E6130 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6178 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E6178 ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6178: .word 0x000001A9 + arm_func_end ov29_022E6130 + + arm_func_start ov29_022E617C +ov29_022E617C: ; 0x022E617C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E61C4 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E61C4 ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E61C4: .word 0x000001A9 + arm_func_end ov29_022E617C + + arm_func_start ov29_022E61C8 +ov29_022E61C8: ; 0x022E61C8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6210 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E6210 ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6210: .word 0x000001A9 + arm_func_end ov29_022E61C8 + + arm_func_start ov29_022E6214 +ov29_022E6214: ; 0x022E6214 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E625C ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E625C ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E625C: .word 0x000001A9 + arm_func_end ov29_022E6214 + + arm_func_start ov29_022E6260 +ov29_022E6260: ; 0x022E6260 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1a8 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1a8 + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E6260 + + arm_func_start ov29_022E62A8 +ov29_022E62A8: ; 0x022E62A8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x29 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x29 + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E62A8 + + arm_func_start ov29_022E62F0 +ov29_022E62F0: ; 0x022E62F0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x48 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x48 + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E62F0 + + arm_func_start ov29_022E6338 +ov29_022E6338: ; 0x022E6338 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6384 ; =0x000001A6 + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x1a4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6384: .word 0x000001A6 + arm_func_end ov29_022E6338 + + arm_func_start ov29_022E6388 +ov29_022E6388: ; 0x022E6388 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E63D4 ; =0x00000297 + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E63D4 ; =0x00000297 + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E63D4: .word 0x00000297 + arm_func_end ov29_022E6388 + + arm_func_start ov29_022E63D8 +ov29_022E63D8: ; 0x022E63D8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6420 ; =0x0000018E + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r2, #0 + mov r1, #2 + stmia sp, {r1, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + add r1, r1, #0x18c + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6420: .word 0x0000018E + arm_func_end ov29_022E63D8 + + arm_func_start ov29_022E6424 +ov29_022E6424: ; 0x022E6424 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1b0 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1b0 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + mov r0, #0xa + mov r1, #0x42 + bl ov29_022EA370 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E6424 + + arm_func_start ov29_022E647C +ov29_022E647C: ; 0x022E647C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1a8 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1a8 + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E647C + + arm_func_start ov29_022E64C4 +ov29_022E64C4: ; 0x022E64C4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E650C ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E650C ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E650C: .word 0x000001A9 + arm_func_end ov29_022E64C4 + + arm_func_start ov29_022E6510 +ov29_022E6510: ; 0x022E6510 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6558 ; =0x000001A9 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E6558 ; =0x000001A9 + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6558: .word 0x000001A9 + arm_func_end ov29_022E6510 + + arm_func_start ov29_022E655C +ov29_022E655C: ; 0x022E655C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E65A4 ; =0x000001AB + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + ldr r1, _022E65A4 ; =0x000001AB + mov r0, r4 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E65A4: .word 0x000001AB + arm_func_end ov29_022E655C + + arm_func_start ov29_022E65A8 +ov29_022E65A8: ; 0x022E65A8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #4 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E65A8 + + arm_func_start ov29_022E65F4 +ov29_022E65F4: ; 0x022E65F4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6640 ; =0x0000011E + bl GetEffectAnimationField0x19 + mov r2, r0 + mov ip, #0 + mov r1, #2 + stmia sp, {r1, ip} + sub r0, ip, #1 + str r0, [sp, #8] + and r3, r2, #0xff + mov r0, r4 + add r1, r1, #0x11c + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6640: .word 0x0000011E + arm_func_end ov29_022E65F4 + + arm_func_start ov29_022E6644 +ov29_022E6644: ; 0x022E6644 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r0, _022E6690 ; =0x0000011D + bl GetEffectAnimationField0x19 + mov r2, r0 + and r3, r2, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + ldr r1, _022E6690 ; =0x0000011D + mov r0, r4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6690: .word 0x0000011D + arm_func_end ov29_022E6644 + + arm_func_start ov29_022E6694 +ov29_022E6694: ; 0x022E6694 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, _022E66C0 ; =0x0000019E + mov r2, #1 + bl ov29_022E37DC + cmp r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0 + mov r1, #9 + bl ov29_022E56F4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E66C0: .word 0x0000019E + arm_func_end ov29_022E6694 + + arm_func_start ov29_022E66C4 +ov29_022E66C4: ; 0x022E66C4 + ldr ip, _022E66D4 ; =ov29_022E37DC + mov r1, #0x36 + mov r2, #1 + bx ip + .align 2, 0 +_022E66D4: .word ov29_022E37DC + arm_func_end ov29_022E66C4 + + arm_func_start ov29_022E66D8 +ov29_022E66D8: ; 0x022E66D8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x15 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x15 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E66D8 + + arm_func_start ov29_022E6724 +ov29_022E6724: ; 0x022E6724 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x1b4 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x1b4 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E6724 + + arm_func_start ov29_022E6770 +ov29_022E6770: ; 0x022E6770 + ldr ip, _022E6780 ; =ov29_022E37DC + mov r1, #0x37 + mov r2, #1 + bx ip + .align 2, 0 +_022E6780: .word ov29_022E37DC + arm_func_end ov29_022E6770 + + arm_func_start ov29_022E6784 +ov29_022E6784: ; 0x022E6784 + ldr ip, _022E6794 ; =ov29_022E37DC + mov r1, #0x29 + mov r2, #1 + bx ip + .align 2, 0 +_022E6794: .word ov29_022E37DC + arm_func_end ov29_022E6784 + + arm_func_start ov29_022E6798 +ov29_022E6798: ; 0x022E6798 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #0x18 + bl GetEffectAnimationField0x19 + mov r1, r0 + and r3, r1, #0xff + mov r0, #2 + mov ip, #0 + stmia sp, {r0, ip} + sub r0, ip, #1 + str r0, [sp, #8] + mov r0, r4 + mov r1, #0x18 + mov r2, #1 + str ip, [sp, #0xc] + bl ov29_022E35E4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E6798 + + arm_func_start ov29_022E67E4 +ov29_022E67E4: ; 0x022E67E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r4, r2 + mov r5, #0x200 + bl ov29_022E5ED0 + cmp r0, #0 + beq _022E68AC + mov r0, r7 + bl GetEffectAnimationField0x19 + mov r3, r0 + mov r0, #2 + mov r2, #0 + stmia sp, {r0, r2} + sub r0, r2, #1 + str r0, [sp, #8] + mov r0, r6 + mov r1, r7 + and r3, r3, #0xff + str r2, [sp, #0xc] + bl ov29_022E35E4 + mov r0, r4 + mov r1, #0x42 + bl ov29_022EA370 + mov r4, #0x42 + ldr sb, _022E68B4 ; =0x02353538 + ldr r7, _022E68B8 ; =0x0001A226 + mvn r8, #7 + b _022E6894 +_022E6860: + mov r0, r4 + bl AdvanceFrame + ldr r0, [r6, #0x1c] + add r2, r0, r5 + str r2, [r6, #0x1c] + ldr r0, [sb] + ldr r1, [r6, #0x10] + ldrsh r0, [r0, r7] + sub r1, r1, r2 + add r5, r5, #0x100 + rsb r0, r0, r1, asr #8 + cmp r0, r8 + blt _022E68A0 +_022E6894: + ldr r0, [r6, #0x1c] + cmp r0, #0xc800 + blt _022E6860 +_022E68A0: + mov r0, #0 + strb r0, [r6, #0x20] + bl ov29_022E38E0 +_022E68AC: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E68B4: .word 0x02353538 +_022E68B8: .word 0x0001A226 + arm_func_end ov29_022E67E4 + + arm_func_start ov29_022E68BC +ov29_022E68BC: ; 0x022E68BC + ldr ip, _022E68D0 ; =ov29_022E67E4 + mov r1, r0 + ldr r0, _022E68D4 ; =0x0000013E + mov r2, #5 + bx ip + .align 2, 0 +_022E68D0: .word ov29_022E67E4 +_022E68D4: .word 0x0000013E + arm_func_end ov29_022E68BC + + arm_func_start ov29_022E68D8 +ov29_022E68D8: ; 0x022E68D8 + ldr ip, _022E68EC ; =ov29_022E67E4 + mov r1, r0 + mov r0, #0x1bc + mov r2, #0xe + bx ip + .align 2, 0 +_022E68EC: .word ov29_022E67E4 + arm_func_end ov29_022E68D8 + + arm_func_start ov29_022E68F0 +ov29_022E68F0: ; 0x022E68F0 + ldr ip, _022E6904 ; =ov29_022E67E4 + mov r1, r0 + ldr r0, _022E6908 ; =0x0000013E + mov r2, #5 + bx ip + .align 2, 0 +_022E6904: .word ov29_022E67E4 +_022E6908: .word 0x0000013E + arm_func_end ov29_022E68F0 + + arm_func_start ov29_022E690C +ov29_022E690C: ; 0x022E690C + ldr ip, _022E6920 ; =ov29_022E67E4 + mov r1, r0 + ldr r0, _022E6924 ; =0x0000013E + mov r2, #5 + bx ip + .align 2, 0 +_022E6920: .word ov29_022E67E4 +_022E6924: .word 0x0000013E + arm_func_end ov29_022E690C + + arm_func_start ov29_022E6928 +ov29_022E6928: ; 0x022E6928 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x1c + ldr r3, _022E69F8 ; =0x023511B0 + mov r4, r1 + add r2, sp, #0x10 + mov r5, r0 + mov r1, #6 +_022E6944: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E6944 + ldr r0, _022E69FC ; =0x0000027A + bl GetEffectAnimationField0x19 + mov r3, #2 + mov r1, r4, lsr #0x1f + mov ip, r0 + rsb r0, r1, r4, lsl #29 + add r0, r1, r0, ror #29 + mov r0, r0, lsl #0x10 + str r3, [sp] + mov r2, #0 + add r1, r3, #0x278 + str r2, [sp, #4] + mov r0, r0, asr #0x10 + str r0, [sp, #8] + add r4, sp, #0x10 + mov r0, r5 + and r3, ip, #0xff + str r4, [sp, #0xc] + bl ov29_022E35E4 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r6, #0 + mov r4, #0x42 + b _022E69D8 +_022E69B4: + mov r0, r5 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E69E0 + mov r0, r4 + bl AdvanceFrame + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_022E69D8: + cmp r6, #0x64 + blt _022E69B4 +_022E69E0: + cmp r5, #0 + blt _022E69F0 + mov r0, r5 + bl ov10_022BDE50 +_022E69F0: + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022E69F8: .word 0x023511B0 +_022E69FC: .word 0x0000027A + arm_func_end ov29_022E6928 + + arm_func_start ov29_022E6A00 +ov29_022E6A00: ; 0x022E6A00 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x38 + mov r8, r0 + mov r7, r1 + mov r4, r2 + mov r5, #0 + bl GetLeader + mov r6, r0 + mov r0, #0xcc + mov r1, #7 + bl MemAlloc + ldr r1, _022E6BF8 ; =0x0235354C + add r2, r7, #1 + str r0, [r1, #4] + str r8, [r0] + ldr r0, [r1, #4] + mov r2, r2, lsl #2 + str r2, [r0, #8] + ldr r0, [r1, #4] + ldr r3, _022E6BFC ; =0x023511A4 + str r4, [r0, #4] + add r2, sp, #0 + mov r4, r5 + mov r1, #6 +_022E6A60: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E6A60 + b _022E6BDC +_022E6A74: + add r0, sp, #0xc + bl ov10_022BF274 + ldr r0, _022E6BF8 ; =0x0235354C + ldr r2, _022E6C00 ; =0x02351464 + ldr r7, [r0, #4] + mov r0, #0x18 + ldr r3, [r7] + mov r1, #0 + mla r0, r3, r0, r2 + mov r2, r5, lsl #3 + ldrsh r0, [r2, r0] + str r4, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0xc] + ldr r1, [r6, #0xc] + mov r0, #2 + mov r1, r1, asr #8 + strh r1, [sp, #0x18] + ldr r1, [r6, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0x1a] + bl RandIntSafe + ldr r3, [r7] + ldr r2, _022E6C00 ; =0x02351464 + mov r1, #0x18 + mla r1, r3, r1, r2 + add r1, r1, r5, lsl #3 + ldr r2, [r1, #4] + add r1, r7, r4, lsl #2 + add r2, r0, r2, lsl #1 + mov r0, #0xff + str r2, [r1, #0x4c] + bl RandIntSafe + ldr r1, _022E6BF8 ; =0x0235354C + mov r2, r4, lsl #1 + ldr r1, [r1, #4] + add r3, r0, #0x9f + add r1, r1, r4, lsl #2 + add r0, r2, #8 + strh r3, [r1, #0x8c] + bl RandIntSafe + mov r2, r4, lsr #0x1f + rsb r1, r2, r4, lsl #30 + add r2, r2, r1, ror #30 + mov r1, #0x28 + mul r7, r2, r1 + rsb r2, r7, #0x18 + ldr r3, _022E6BF8 ; =0x0235354C + add r2, r2, r0 + ldr r1, [r3, #4] + mov r7, #4 + add r0, r1, r4, lsl #2 + strh r2, [r0, #0x8e] + ldr r1, [r3, #4] + ldr r0, _022E6C04 ; =0x0000FFFF + add r2, r1, r4, lsl #2 + ldrsh r1, [r2, #0x8c] + add r3, sp, #0 + strh r1, [sp, #0x1c] + ldrsh ip, [r2, #0x8e] + add r2, sp, #0x28 + mov r1, #6 + strh ip, [sp, #0x1e] + strb r7, [sp, #0x20] + str r0, [sp, #0x24] +_022E6B78: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E6B78 + add r0, sp, #0xc + mov r1, #0 + bl ov10_022BF2B4 + ldr r1, _022E6BF8 ; =0x0235354C + add r5, r5, #1 + ldr r2, [r1, #4] + cmp r5, #3 + add r2, r2, r4, lsl #2 + str r0, [r2, #0xc] + bge _022E6BD4 + ldr r0, [r1, #4] + ldr r1, _022E6C00 ; =0x02351464 + ldr r2, [r0] + mov r0, #0x18 + mla r0, r2, r0, r1 + mov r1, r5, lsl #3 + ldrsh r0, [r1, r0] + cmp r0, #0 + bne _022E6BD8 +_022E6BD4: + mov r5, #0 +_022E6BD8: + add r4, r4, #1 +_022E6BDC: + ldr r0, _022E6BF8 ; =0x0235354C + ldr r0, [r0, #4] + ldr r0, [r0, #8] + cmp r4, r0 + blt _022E6A74 + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E6BF8: .word 0x0235354C +_022E6BFC: .word 0x023511A4 +_022E6C00: .word 0x02351464 +_022E6C04: .word 0x0000FFFF + arm_func_end ov29_022E6A00 + + arm_func_start ov29_022E6C08 +ov29_022E6C08: ; 0x022E6C08 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + ldr r0, _022E6CDC ; =0x0235354C + mov sl, #0 + ldr r1, [r0, #4] + mov sb, #0 + ldr r0, [r1, #4] + mov r6, #1 + cmp r0, #0 + subne r0, r0, #1 + strne r0, [r1, #4] + movne sb, #1 + mvn r7, #0x9e + mov r8, #0x9f + mov r5, sl + ldr r4, _022E6CDC ; =0x0235354C + b _022E6CC0 +_022E6C4C: + ldr r0, [r4, #4] + add r2, r0, sl, lsl #2 + ldrsh r1, [r2, #0x8c] + ldr r0, [r2, #0x4c] + sub r0, r1, r0 + strh r0, [r2, #0x8c] + ldr r2, [r4, #4] + add r1, r2, sl, lsl #2 + ldrsh r0, [r1, #0x8c] + cmp r0, r7 + bgt _022E6C8C + ldr r0, [r2, #4] + cmp r0, #0 + strgth r8, [r1, #0x8c] + strleh r7, [r1, #0x8c] + b _022E6C90 +_022E6C8C: + mov sb, r6 +_022E6C90: + ldr r2, [r4, #4] + mov r1, r5 + str r5, [sp] + add r0, r2, sl, lsl #2 + ldr r0, [r0, #0xc] + add r2, r2, #0x8c + mov r0, r0, lsl #0x10 + mov r3, r5 + mov r0, r0, asr #0x10 + add r2, r2, sl, lsl #2 + bl ov10_022BF45C + add sl, sl, #1 +_022E6CC0: + ldr r0, [r4, #4] + ldr r0, [r0, #8] + cmp sl, r0 + blt _022E6C4C + mov r0, sb + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022E6CDC: .word 0x0235354C + arm_func_end ov29_022E6C08 + + arm_func_start ov29_022E6CE0 +ov29_022E6CE0: ; 0x022E6CE0 + stmdb sp!, {r3, r4, r5, lr} + ldr r5, _022E6D64 ; =0x0235354C + ldr r0, [r5, #4] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r4, #0 + b _022E6D34 +_022E6CFC: + add r0, r1, r4, lsl #2 + ldr r0, [r0, #0xc] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl AnimationHasMoreFrames + cmp r0, #0 + beq _022E6D30 + ldr r0, [r5, #4] + add r0, r0, r4, lsl #2 + ldr r0, [r0, #0xc] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BDE50 +_022E6D30: + add r4, r4, #1 +_022E6D34: + ldr r1, [r5, #4] + ldr r0, [r1, #8] + cmp r4, r0 + blt _022E6CFC + bl ov10_022BDC68 + ldr r0, _022E6D64 ; =0x0235354C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _022E6D64 ; =0x0235354C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E6D64: .word 0x0235354C + arm_func_end ov29_022E6CE0 + + arm_func_start ov29_022E6D68 +ov29_022E6D68: ; 0x022E6D68 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _022E6DCC ; =0x02353538 + mov r4, #0 + ldr r3, [r3] + add r3, r3, #0x218 + add lr, r3, #0x400 + mvn r3, #0 + b _022E6DC0 +_022E6D88: + ldr ip, [lr, r4, lsl #4] + add r5, lr, r4, lsl #4 + cmp ip, r3 + bne _022E6DBC + str r0, [r5] + str r1, [r5, #0xc] + str r2, [r5, #4] + ldr r0, [r5] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BEFD8 + strb r0, [r5, #8] + ldmia sp!, {r3, r4, r5, pc} +_022E6DBC: + add r4, r4, #1 +_022E6DC0: + cmp r4, #3 + blt _022E6D88 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E6DCC: .word 0x02353538 + arm_func_end ov29_022E6D68 + + arm_func_start ov29_022E6DD0 +ov29_022E6DD0: ; 0x022E6DD0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, #0 + ldr r4, _022E6E3C ; =0x02353538 + mov r7, sb + mov r8, #1 + mvn r6, #0 + mov r5, sb +_022E6DEC: + ldr r0, [r4] + add r0, r0, #0x218 + add r0, r0, #0x400 + ldr r1, [r0, sb, lsl #4] + add sl, r0, sb, lsl #4 + cmp r1, #0 + movge r0, r8 + movlt r0, r7 + tst r0, #0xff + beq _022E6E2C + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + bl AnimationHasMoreFrames + cmp r0, #0 + streq r6, [sl] + streq r5, [sl, #0xc] +_022E6E2C: + add sb, sb, #1 + cmp sb, #3 + blt _022E6DEC + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022E6E3C: .word 0x02353538 + arm_func_end ov29_022E6DD0 + + arm_func_start ov29_022E6E40 +ov29_022E6E40: ; 0x022E6E40 + mov ip, #0 + ldr r1, _022E6E7C ; =0x02353538 + mvn r3, #0 + mov r2, ip +_022E6E50: + ldr r0, [r1] + add r0, r0, #0x218 + add r0, r0, #0x400 + str r3, [r0, ip, lsl #4] + add r0, r0, ip, lsl #4 + str r2, [r0, #4] + arm_func_end ov29_022E6E40 + + arm_func_start ov29_022E6E68 +ov29_022E6E68: ; 0x022E6E68 + add ip, ip, #1 + str r2, [r0, #0xc] + cmp ip, #3 + blt _022E6E50 + bx lr + .align 2, 0 +_022E6E7C: .word 0x02353538 + arm_func_end ov29_022E6E68 + + arm_func_start ov29_022E6E80 +ov29_022E6E80: ; 0x022E6E80 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r2, _022E6F8C ; =0x0235118C + mov sl, r0 + ldrh r5, [r2, #4] + ldrh r4, [r2, #6] + ldrh r3, [r2] + ldrh r0, [r2, #2] + strh r5, [sp, #0x10] + strh r4, [sp, #0x12] + strh r0, [sp, #0xe] + strh r3, [sp, #0xc] + mvn r0, #0 + ldrh r6, [sp, #0x10] + ldrh r5, [sp, #0x12] + ldrh r4, [sp, #0xc] + ldrh fp, [sp, #0xe] + str r1, [sp, #4] + mov r7, #0 + str r0, [sp, #8] +_022E6ED0: + ldr r0, _022E6F90 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x218 + add r0, r0, #0x400 + add r8, r0, r7, lsl #4 + ldr r0, [r0, r7, lsl #4] + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + tst r0, #0xff + beq _022E6F78 + ldr r0, [r8, #0xc] + cmp r0, sl + bne _022E6F78 + strh r6, [sp, #0x18] + strh r5, [sp, #0x1a] + ldr r0, [sl, #0xc] + mov r0, r0, asr #8 + strh r0, [sp, #0x18] + ldr r0, [sl, #0x10] + mov r0, r0, asr #8 + strh r0, [sp, #0x1a] + strh r4, [sp, #0x14] + strh fp, [sp, #0x16] + ldrsb r1, [r8, #8] + ldr r0, [sp, #8] + ldr sb, [sl, #0xb4] + cmp r1, r0 + beq _022E6F54 + and r2, r1, #0xff + add r0, sp, #0x14 + add r1, sl, #0x2c + bl sub_0201CF90 +_022E6F54: + ldrb r0, [sb, #0x4c] + ldr r3, [sp, #4] + add r1, sp, #0x18 + str r0, [sp] + ldr r0, [r8] + add r2, sp, #0x14 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BFB6C +_022E6F78: + add r7, r7, #1 + cmp r7, #3 + blt _022E6ED0 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E6F8C: .word 0x0235118C +_022E6F90: .word 0x02353538 + arm_func_end ov29_022E6E80 + + arm_func_start ov29_022E6F94 +ov29_022E6F94: ; 0x022E6F94 + ldr r1, _022E6FB8 ; =0x02353538 + mov r2, #0xff + ldr r0, [r1] + add r0, r0, #0x28000 + strb r2, [r0, #0x6b0] + ldr r0, [r1] + add r0, r0, #0x28000 + strb r2, [r0, #0x6b1] + bx lr + .align 2, 0 +_022E6FB8: .word 0x02353538 + arm_func_end ov29_022E6F94 + + arm_func_start ov29_022E6FBC +ov29_022E6FBC: ; 0x022E6FBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x50 + ldr r3, _022E79E4 ; =0x02353538 + ldr r4, _022E79E8 ; =0x02351584 + ldr r6, [r3] + ldr r7, [r4, #0xc] + ldr r8, [r4, #8] + add r3, r6, #0x4a + str r1, [sp] + add r4, r6, #0x348 + mov r5, r0 + add r1, r4, #0x400 + add r0, r3, #0x700 + mov r4, r2 + str r8, [sp, #0x48] + str r7, [sp, #0x4c] + bl DungeonFloorToGroupFloor + ldr r1, _022E79E4 ; =0x02353538 + ldr r3, [r1] + ldrb r2, [r3, #0x74a] + add r0, r3, #0x28000 + strb r2, [r0, #0x6b0] + ldrb r2, [r3, #0x74b] + strb r2, [r0, #0x6b1] + ldr r0, [r1] + ldrb r0, [r0, #0x748] + bl GetNbPrecedingFloors + ldr r1, _022E79E4 ; =0x02353538 + mov r6, #0 + ldr r2, [r1] + strh r0, [r2, #0x20] + ldr r0, [r1] + strh r6, [r0, #0x1e] + ldr r3, [r1] + ldrsh r2, [r3, #0x20] + ldrsh r0, [r3, #0x1e] + add r0, r2, r0 + strh r0, [r3, #0x22] + ldr r0, [r1] + str r6, [sp, #0x28] + ldr r0, [r0, #0x7cc] + mov r2, #0xf + cmp r0, #1 + bne _022E707C + ldr r1, _022E79EC ; =0x02351594 + add r0, sp, #0x48 + bl LoadFileFromRom__02008C3C + b _022E709C +_022E707C: + cmp r0, #2 + add r0, sp, #0x48 + bne _022E7094 + ldr r1, _022E79F0 ; =0x023515B0 + bl LoadFileFromRom__02008C3C + b _022E709C +_022E7094: + ldr r1, _022E79F4 ; =0x023515CC + bl LoadFileFromRom__02008C3C +_022E709C: + mov r0, #0x65 + bl AdvanceFrame + ldr r1, [sp, #0x48] + add r0, sp, #0x28 + bl HandleSir0Translation + mov r0, #0x65 + ldr sb, [sp, #0x28] + bl AdvanceFrame + ldr r0, _022E79E4 ; =0x02353538 + ldr r6, [sb] + ldr r7, [r0] + mov r1, #0x12 + add r0, r7, #0x28000 + ldrb r3, [r0, #0x6b0] + ldrb r2, [r0, #0x6b1] + ldrb r0, [r7, #0x748] + ldr r3, [r6, r3, lsl #2] + mla r6, r2, r1, r3 + bl GetNbFloorsPlusOne + ldr r2, _022E79E4 ; =0x02353538 + ldr r1, [r2] + add r1, r1, #0x2c000 + strb r0, [r1, #0xaf4] + ldr r0, [r2] + ldrb r0, [r0, #0x748] + cmp r0, #0xae + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _022E7138 + bl ov29_0234914C + cmp r0, #0 + bne _022E7138 + ldr r0, _022E79E4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x2c000 + ldrb r1, [r0, #0xaf4] + sub r1, r1, #1 + strb r1, [r0, #0xaf4] +_022E7138: + ldr r0, _022E79E4 ; =0x02353538 + ldrsh r2, [r6] + ldr r3, [sb, #4] + ldr r1, [r0] + add r7, r3, r2, lsl #5 + ldr r0, _022E79F8 ; =0x000286B2 + mov r2, #0x10 + add r3, r1, r0 +_022E7158: + ldrh r0, [r7], #2 + subs r2, r2, #1 + strh r0, [r3], #2 + bne _022E7158 + ldr r2, _022E79FC ; =0x000286CE + ldr r3, _022E7A00 ; =0x0002CB08 + ldrsh r7, [r1, r2] + mov r0, #0 + strh r7, [r1, r3] + rsb r1, r2, #0x55000 + ldr r2, _022E79E4 ; =0x02353538 +_022E7184: + ldrsh r7, [r6, #4] + ldr r8, [sb, #0x10] + ldr r3, [r2] + ldr r8, [r8, r7, lsl #2] + mov r7, r0, lsl #1 + ldrh r7, [r8, r7] + add r3, r3, r0, lsl #1 + add r0, r0, #1 + strh r7, [r3, r1] + cmp r0, #0x19 + blt _022E7184 + cmp r4, #0 + beq _022E71C0 + mov r0, r5 + blx r4 +_022E71C0: + cmp r5, #0 + bne _022E7674 + ldr r0, _022E79E8 ; =0x02351584 + mov r4, #0 + ldrh r2, [r0] + ldrh r1, [r0, #2] + mov r0, r4 + mov r8, r4 + str r4, [sp, #0xc] + str r4, [sp, #4] + strh r2, [sp, #0x44] + strh r1, [sp, #0x46] + mov fp, #1 + bl DungeonRngSetSecondary + bl IsDestinationFloorWithMonster + str r0, [sp, #0x10] + ldr r3, _022E7A04 ; =0x0000FFFF + ldr r1, _022E79E4 ; =0x02353538 + ldr r0, _022E7A08 ; =0x0002C9EA + mov r5, r4 +_022E7210: + ldr r2, [r1] + add r2, r2, r5, lsl #1 + strh r3, [r2, r0] + add r5, r5, #1 + cmp r5, #0x10 + blt _022E7210 + bl IsItemForSpecialSpawnInBag + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #4] + ldr r0, _022E79E4 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsDojoDungeon + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #4] + ldr r0, _022E7A0C ; =0x00000906 + mov r1, #0xf + bl MemAlloc + str r0, [sp, #0x18] + bl GetNbRecruited + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + mov r7, r0 + ldr r0, _022E7A10 ; =0x00000229 + mov sl, #0 + sub r0, r0, #0xaa + str r0, [sp, #0x20] + ldr r0, _022E7A10 ; =0x00000229 + rsb r0, r0, #0x600 + str r0, [sp, #0x24] +_022E7294: + mov r0, #0 + str r0, [sp, #8] + ldrsh r0, [r6, #2] + ldr r1, [sb, #0xc] + ldr r0, [r1, r0, lsl #2] + add r0, r0, sl, lsl #3 + bl GetMonsterIdFromSpawnEntry + movs r5, r0 + beq _022E73B0 + ldr r1, _022E7A10 ; =0x00000229 + cmp r5, r1 + streqh sl, [sp, #0x44] + beq _022E7398 + ldr r1, [sp, #0x20] + cmp r5, r1 + ldrne r1, [sp, #0x24] + cmpne r5, r1 + streqh sl, [sp, #0x46] + beq _022E7398 + bl CanMonsterSpawn + cmp r0, #0 + addeq sl, sl, #1 + beq _022E7294 + ldr r0, _022E79E4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x28000 + ldrb r0, [r0, #0x6c4] + bl ov29_022E0864 + cmp r0, #0 + bne _022E7398 + mov r0, r5 + bl ov29_022FB5EC + cmp r0, #0 + beq _022E7398 + mov r0, r5 + bl NeedsItemToSpawn + cmp r0, #0 + beq _022E7390 + ldr r0, _022E79E4 ; =0x02353538 + mov r1, r5 + ldr r0, [r0] + add r0, r0, #0x7d0 + bl ov29_0231B3FC + cmp r0, #0 + ldreq r0, [sp, #0x10] + cmpeq r0, #0 + ldreq r0, [sp, #0x18] + moveq r1, r5, lsl #1 + ldreqsh r0, [r0, r1] + cmpeq r0, #0 + bne _022E7398 + ldr r0, [sp, #4] + cmp r0, #0 + beq _022E7398 + ldrsh r0, [r6, #2] + ldr r1, [sb, #0xc] + mov r8, r5 + ldr r0, [r1, r0, lsl #2] + add r0, r0, sl, lsl #3 + bl GetMonsterLevelFromSpawnEntry + and r0, r0, #0xff + str r0, [sp, #0xc] + b _022E7398 +_022E7390: + mov r0, #1 + str r0, [sp, #8] +_022E7398: + ldr r0, [sp, #8] + cmp r0, #0 + strne sl, [r7, r4, lsl #2] + addne r4, r4, #1 + add sl, sl, #1 + b _022E7294 +_022E73B0: + bl FloorNumberIsEven + cmp r0, #0 + ldreq r0, _022E79E4 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x700 + streqh r8, [r0, #0xa8] + beq _022E73E4 + mov r0, r8 + bl GetSecondFormIfValid + ldr r1, _022E79E4 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x700 + strh r0, [r1, #0xa8] +_022E73E4: + ldr r1, _022E79E4 ; =0x02353538 + mov r0, #0x10 + ldr r2, [r1] + ldr r1, [sp, #0xc] + strb r1, [r2, #0x7aa] + bl DungeonRandInt + add r0, r0, #1 + str r0, [sp, #0x14] + sub r0, r4, #1 + mov sl, #0 + str r0, [sp, #0x1c] + b _022E7448 +_022E7414: + mov r5, #0 + b _022E7438 +_022E741C: + mov r0, r4 + bl DungeonRandInt + ldr r2, [r7, r5, lsl #2] + ldr r1, [r7, r0, lsl #2] + str r1, [r7, r5, lsl #2] + str r2, [r7, r0, lsl #2] + add r5, r5, #1 +_022E7438: + ldr r0, [sp, #0x1c] + cmp r5, r0 + blt _022E741C + add sl, sl, #1 +_022E7448: + ldr r0, [sp, #0x14] + cmp sl, r0 + blt _022E7414 + ldr r0, [sp] + cmp r0, #0 + movne r4, #0 + bne _022E746C + cmp r4, #0xe + movge r4, #0xe +_022E746C: + ldr r0, _022E7A10 ; =0x00000229 + bl GetSpriteFileSize + add r5, r0, #0 + ldr r0, _022E7A14 ; =0x0000017F + bl GetSpriteFileSize + ldr r1, [sp, #0x10] + add r5, r5, r0 + cmp r1, #0 + beq _022E749C + bl ov29_02349378 + add r5, r5, r0 + b _022E74B0 +_022E749C: + cmp r8, #0 + beq _022E74B0 + mov r0, r8 + bl GetSpriteFileSize + add r5, r5, r0 +_022E74B0: + mov r8, #0 + b _022E7528 +_022E74B8: + ldr r0, _022E79E4 ; =0x02353538 + ldr r2, [r7, r8, lsl #2] + ldr r0, [r0] + add r1, r0, r8, lsl #1 + ldr r0, _022E7A08 ; =0x0002C9EA + strh r2, [r1, r0] + ldrsh r1, [r6, #2] + ldr r2, [sb, #0xc] + ldr r0, [r7, r8, lsl #2] + ldr r1, [r2, r1, lsl #2] + add r2, sp, #0x3c + add r3, r1, r0, lsl #3 + mov r1, #4 +_022E74EC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E74EC + add r0, sp, #0x3c + bl GetMonsterIdFromSpawnEntry + mov sl, r0 + add r0, sp, #0x3c + bl GetMonsterLevelFromSpawnEntry + cmp fp, r0 + movlt fp, r0 + mov r0, sl + bl ov29_022F7068 + add r5, r5, r0 + add r8, r8, #1 +_022E7528: + cmp r8, r4 + blt _022E74B8 + ldr r0, _022E79E4 ; =0x02353538 + ldr r1, _022E7A18 ; =0x0002C9E6 + ldr r0, [r0] + cmp r5, #0x58000 + strh fp, [r0, r1] + bls _022E75C4 + sub sl, r4, #1 + mov r8, #0 + add fp, r1, #4 + b _022E75B8 +_022E7558: + ldrsh r1, [r6, #2] + ldr r2, [sb, #0xc] + ldr r0, [r7, sl, lsl #2] + ldr r1, [r2, r1, lsl #2] + add r2, sp, #0x34 + add r3, r1, r0, lsl #3 + mov r1, #4 +_022E7574: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E7574 + add r0, sp, #0x34 + bl GetMonsterIdFromSpawnEntry + bl ov29_022F7068 + sub r5, r5, r0 + ldr r1, _022E79E4 ; =0x02353538 + ldr r0, _022E7A04 ; =0x0000FFFF + ldr r1, [r1] + cmp r5, #0x58000 + add r1, r1, sl, lsl #1 + strh r0, [r1, fp] + add r8, r8, #1 + blo _022E75C0 + sub sl, sl, #1 +_022E75B8: + cmp sl, #0 + bge _022E7558 +_022E75C0: + sub r4, r4, r8 +_022E75C4: + ldrh r2, [sp, #0x44] + ldr r0, _022E7A04 ; =0x0000FFFF + cmp r2, r0 + beq _022E75EC + ldr r1, _022E79E4 ; =0x02353538 + ldr r0, _022E7A08 ; =0x0002C9EA + ldr r1, [r1] + add r1, r1, r4, lsl #1 + strh r2, [r1, r0] + add r4, r4, #1 +_022E75EC: + ldrh r2, [sp, #0x46] + ldr r0, _022E7A04 ; =0x0000FFFF + ldr r3, _022E79E4 ; =0x02353538 + cmp r2, r0 + ldrne r1, _022E79E4 ; =0x02353538 + ldrne r0, _022E7A08 ; =0x0002C9EA + ldrne r1, [r1] + addne r1, r1, r4, lsl #1 + strneh r2, [r1, r0] + ldr r2, _022E7A08 ; =0x0002C9EA + mov r1, #0 +_022E7618: + mov r0, r1 + b _022E764C +_022E7620: + ldr r4, [r3] + add r5, r4, r0, lsl #1 + add r4, r4, r1, lsl #1 + ldrh r8, [r5, r2] + ldrh r5, [r4, r2] + cmp r5, r8 + strhih r8, [r4, r2] + ldrhi r4, [r3] + addhi r4, r4, r0, lsl #1 + strhih r5, [r4, r2] + add r0, r0, #1 +_022E764C: + cmp r0, #0x10 + blt _022E7620 + add r1, r1, #1 + cmp r1, #0xf + blt _022E7618 + ldr r0, [sp, #0x18] + bl MemFree + mov r0, r7 + bl MemFree + bl DungeonRngSetPrimary +_022E7674: + mov r4, #0 + bl FloorNumberIsEven + cmp r0, #0 + ldr r0, _022E79E4 ; =0x02353538 + mov r5, #0 + ldr r0, [r0] + movne r4, #1 + ldrb r0, [r0, #0x748] + mov r8, r5 + cmp r0, #0x3d + moveq r4, #1 + bl IsDestinationFloorWithFixedRoom + cmp r0, #0 + beq _022E76D0 + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + bne _022E76CC + mov r0, #0xa + bl IsCurrentMissionType + cmp r0, #0 + beq _022E76D0 +_022E76CC: + mov r5, #1 +_022E76D0: + mov sl, #0 + b _022E77CC +_022E76D8: + ldr r1, _022E79E4 ; =0x02353538 + ldr r0, _022E7A08 ; =0x0002C9EA + ldr r2, [r1] + ldr r1, _022E7A04 ; =0x0000FFFF + add r2, r2, sl, lsl #1 + ldrh r3, [r2, r0] + cmp r3, r1 + beq _022E77D4 + ldrsh r0, [r6, #2] + ldr r1, [sb, #0xc] + add r2, sp, #0x2c + ldr r0, [r1, r0, lsl #2] + mov r1, #4 + add r3, r0, r3, lsl #3 +_022E7710: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E7710 + add r0, sp, #0x2c + bl GetMonsterIdFromSpawnEntry + cmp r5, #0 + ldrne r2, _022E7A10 ; =0x00000229 + cmpne r0, r2 + subne r1, r2, #0xaa + cmpne r0, r1 + rsbne r1, r2, #0x600 + cmpne r0, r1 + bne _022E77C8 + ldr r1, _022E79E4 ; =0x02353538 + add r7, sp, #0x2c + ldr r1, [r1] + mov r2, #4 + add r1, r1, r8, lsl #3 + add r1, r1, #0x164 + add r3, r1, #0x2c800 +_022E7764: + ldrh r1, [r7], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + bne _022E7764 + cmp r4, #0 + ldrne r1, _022E7A10 ; =0x00000229 + cmpne r0, r1 + beq _022E77C4 + cmp r0, #0x258 + bge _022E77C4 + add r7, r0, #0x258 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetMonsterGenderVeneer + cmp r0, #2 + bne _022E77C4 + ldr r1, _022E79E4 ; =0x02353538 + mov r0, r7, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + add r0, r2, #0x164 + add r0, r0, #0x2c800 + add r0, r0, r8, lsl #3 + bl SetMonsterId +_022E77C4: + add r8, r8, #1 +_022E77C8: + add sl, sl, #1 +_022E77CC: + cmp sl, #0x10 + blt _022E76D8 +_022E77D4: + bl ov29_023361D4 + cmp r0, #0 + beq _022E782C + ldr r0, _022E79E4 ; =0x02353538 + ldr r3, _022E7A18 ; =0x0002C9E6 + ldr r4, [r0] + rsb r1, r8, #0x10 + add r2, r4, #0x4000 + add r0, r4, #0x164 + add r0, r0, #0x2c800 + ldrb r2, [r2, #0xda] + ldrsh r3, [r4, r3] + add r0, r0, r8, lsl #3 + bl ov29_02343E20 + ldr r2, _022E79E4 ; =0x02353538 + ldr r1, [r2] + add r1, r1, #0x12000 + str r0, [r1, #0xb20] + ldr r0, [r2] + add r0, r0, #0x12000 + ldr r0, [r0, #0xb20] + add r8, r8, r0 +_022E782C: + ldr r4, _022E79E4 ; =0x02353538 + ldr r0, _022E7A1C ; =0x0002C9E4 + ldr r1, [r4] + mov r5, #0 + strh r8, [r1, r0] + b _022E7860 +_022E7844: + ldr r0, [r4] + mov r1, r5 + add r0, r0, #0x164 + add r0, r0, #0x2c800 + add r0, r0, r8, lsl #3 + bl SetMonsterId + add r8, r8, #1 +_022E7860: + cmp r8, #0x10 + blt _022E7844 + mov r0, #0xb10 + mov r1, #0 + bl MemAlloc + ldr r2, _022E79E4 ; =0x02353538 + ldr r1, _022E7A20 ; =0x0002C9E8 + ldr r2, [r2] + mov r4, #0 + strh r4, [r2, r1] +_022E7888: + add r1, r6, r4, lsl #1 + ldrsh r2, [r1, #6] + ldr r5, [sb, #8] + mov r1, #0 + ldr r2, [r5, r2, lsl #2] + ldr r5, _022E7A24 ; =0xFFFF8AD0 + mov r3, r1 + mov sl, r1 + rsb r7, r5, #0 + b _022E7908 +_022E78B0: + mov r8, r1, lsl #1 + ldrh fp, [r2, r8] + cmp fp, r5, lsr #16 + moveq r8, r3, lsl #1 + streqh fp, [r0, r8] + addeq r3, r3, #1 + beq _022E7904 + cmp fp, r7 + blo _022E78F8 + add fp, fp, r5 + b _022E78EC +_022E78DC: + mov r8, r3, lsl #1 + strh sl, [r0, r8] + add r3, r3, #1 + sub fp, fp, #1 +_022E78EC: + cmp fp, #0 + bne _022E78DC + b _022E7904 +_022E78F8: + mov r8, r3, lsl #1 + strh fp, [r0, r8] + add r3, r3, #1 +_022E7904: + add r1, r1, #1 +_022E7908: + cmp r3, #0x17c + blt _022E78B0 + mov r1, #0xb10 + mul r1, r4, r1 + mov r2, #0 + ldr r7, _022E79E4 ; =0x02353538 + ldr r5, _022E7A28 ; =0x000286D2 + mov r3, r2 +_022E7928: + mov sl, r2, lsl #1 + ldr r8, [r7] + ldrh sl, [r0, sl] + add r8, r1, r8 + add r8, r8, r2, lsl #1 + add r3, r3, #1 + strh sl, [r8, r5] + cmp r3, #0x10 + add r2, r2, #1 + blt _022E7928 + ldr r7, _022E79E4 ; =0x02353538 + ldr r5, _022E7A2C ; =0x000286F2 + mov r3, #0 +_022E795C: + mov sl, r2, lsl #1 + ldr r8, [r7] + ldrh sl, [r0, sl] + add r8, r1, r8 + add r8, r8, r3, lsl #1 + add r3, r3, #1 + strh sl, [r8, r5] + cmp r3, #0x16c + add r2, r2, #1 + blt _022E795C + add r4, r4, #1 + cmp r4, #6 + blt _022E7888 + mov r8, #0 + ldr r2, _022E7A2C ; =0x000286F2 + ldr r4, _022E79E4 ; =0x02353538 + ldr r1, _022E7A20 ; =0x0002C9E8 + ldr r3, _022E7A04 ; =0x0000FFFF + mov r6, r8 +_022E79A8: + ldr r5, [r4] + add r7, r5, r8, lsl #1 + ldrh r5, [r7, r2] + cmp r5, r3 + streqh r6, [r7, r2] + ldreq r5, [r4] + streqh r8, [r5, r1] + add r8, r8, #1 + cmp r8, #0x16c + blt _022E79A8 + bl MemFree + add r0, sp, #0x48 + bl UnloadFile + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E79E4: .word 0x02353538 +_022E79E8: .word 0x02351584 +_022E79EC: .word 0x02351594 +_022E79F0: .word 0x023515B0 +_022E79F4: .word 0x023515CC +_022E79F8: .word 0x000286B2 +_022E79FC: .word 0x000286CE +_022E7A00: .word 0x0002CB08 +_022E7A04: .word 0x0000FFFF +_022E7A08: .word 0x0002C9EA +_022E7A0C: .word 0x00000906 +_022E7A10: .word 0x00000229 +_022E7A14: .word 0x0000017F +_022E7A18: .word 0x0002C9E6 +_022E7A1C: .word 0x0002C9E4 +_022E7A20: .word 0x0002C9E8 +_022E7A24: .word 0xFFFF8AD0 +_022E7A28: .word 0x000286D2 +_022E7A2C: .word 0x000286F2 + arm_func_end ov29_022E6FBC + + arm_func_start ov29_022E7A30 +ov29_022E7A30: ; 0x022E7A30 + stmdb sp!, {r3, lr} + ldr r0, _022E7A80 ; =0x00002710 + bl DungeonRandInt + ldr r1, _022E7A84 ; =0x02353538 + mov r3, #0 + ldr ip, [r1] + ldr r1, _022E7A88 ; =0x0002C932 + b _022E7A70 +_022E7A50: + add r2, ip, r3, lsl #1 + ldrh r2, [r2, r1] + cmp r2, #0 + beq _022E7A6C + cmp r2, r0 + andge r0, r3, #0xff + ldmgeia sp!, {r3, pc} +_022E7A6C: + add r3, r3, #1 +_022E7A70: + cmp r3, #0x19 + blt _022E7A50 + mov r0, #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E7A80: .word 0x00002710 +_022E7A84: .word 0x02353538 +_022E7A88: .word 0x0002C932 + arm_func_end ov29_022E7A30 + + arm_func_start ov29_022E7A8C +ov29_022E7A8C: ; 0x022E7A8C + stmdb sp!, {r4, lr} + mov r4, #0 + b _022E7AB0 +_022E7A98: + bl ov29_022E7A30 + cmp r0, #0 + cmpne r0, #0x17 + cmpne r0, #0x11 + bne _022E7AB8 + add r4, r4, #1 +_022E7AB0: + cmp r4, #0x1e + blt _022E7A98 +_022E7AB8: + cmp r4, #0x1e + moveq r0, #0x10 + ldmia sp!, {r4, pc} + arm_func_end ov29_022E7A8C + + arm_func_start ov29_022E7AC4 +ov29_022E7AC4: ; 0x022E7AC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, r0 + ldr r0, _022E7BA8 ; =0x00002710 + bl DungeonRandInt + mov r1, #0xb10 + mul r5, r4, r1 + ldr r2, _022E7BAC ; =0x02353538 + mov r4, #0x10 + ldr r1, [r2] + mov r3, #0 + add r6, r1, r5 + ldr r1, _022E7BB0 ; =0x000286D2 + b _022E7B18 +_022E7AF8: + add r2, r6, r3, lsl #1 + ldrsh r2, [r2, r1] + cmp r2, #0 + beq _022E7B14 + cmp r2, r0 + andge r4, r3, #0xff + bge _022E7B20 +_022E7B14: + add r3, r3, #1 +_022E7B18: + cmp r3, #0x10 + blt _022E7AF8 +_022E7B20: + cmp r4, #0x10 + moveq r0, #0xb7 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, _022E7BA8 ; =0x00002710 + bl DungeonRandInt + mov r6, r0 + mov r7, #0 + ldr sb, _022E7BAC ; =0x02353538 + ldr r8, _022E7BB4 ; =0x000286F2 + b _022E7B98 +_022E7B48: + ldr r0, [sb] + add r0, r5, r0 + add r0, r0, r7, lsl #1 + ldrsh r0, [r0, r8] + cmp r0, #0 + beq _022E7B94 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemCategoryVeneer + cmp r4, r0 + bne _022E7B94 + ldr r0, [sb] + add r0, r5, r0 + add r0, r0, r7, lsl #1 + ldrsh r0, [r0, r8] + cmp r0, r6 + movge r0, r7, lsl #0x10 + movge r0, r0, asr #0x10 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022E7B94: + add r7, r7, #1 +_022E7B98: + cmp r7, #0x16c + blt _022E7B48 + mov r0, #0xb7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022E7BA8: .word 0x00002710 +_022E7BAC: .word 0x02353538 +_022E7BB0: .word 0x000286D2 +_022E7BB4: .word 0x000286F2 + arm_func_end ov29_022E7AC4 + + arm_func_start ov29_022E7BB8 +ov29_022E7BB8: ; 0x022E7BB8 + stmdb sp!, {r3, lr} + mov r0, #4 + bl ov29_022E7AC4 + cmp r0, #0xb7 + moveq r0, #0x46 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E7BB8 + + arm_func_start ov29_022E7BD0 +ov29_022E7BD0: ; 0x022E7BD0 + stmdb sp!, {r3, lr} + mov r0, #5 + bl ov29_022E7AC4 + cmp r0, #0xb7 + moveq r0, #0x46 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E7BD0 + + arm_func_start ov29_022E7BE8 +ov29_022E7BE8: ; 0x022E7BE8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 + ldr r7, _022E7C5C ; =0x02353538 + b _022E7C4C +_022E7C00: + ldr r0, [r7] + add r0, r0, #0x164 + add r0, r0, #0x2c800 + add r0, r0, r4, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r0, #0 + beq _022E7C54 + ldr r0, [r7] + add r2, r6, r5, lsl #3 + add r0, r0, r4, lsl #3 + add r0, r0, #0x164 + add r3, r0, #0x2c800 + mov r1, #4 +_022E7C34: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E7C34 + add r5, r5, #1 + add r4, r4, #1 +_022E7C4C: + cmp r4, #0x10 + blt _022E7C00 +_022E7C54: + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E7C5C: .word 0x02353538 + arm_func_end ov29_022E7BE8 + + arm_func_start ov29_022E7C60 +ov29_022E7C60: ; 0x022E7C60 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, #0 + b _022E7CE4 +_022E7C74: + ldr r0, _022E7CF4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x164 + add r0, r0, #0x2c800 + add r0, r0, r4, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r0, #0 + beq _022E7CEC + bl GetSpriteSize + cmp r0, #6 + bhi _022E7CE0 + ldr r1, _022E7CF4 ; =0x02353538 + ldr r0, _022E7CF8 ; =0x0002C966 + ldr r1, [r1] + add r1, r1, r4, lsl #3 + ldrsh r0, [r1, r0] + cmp r0, #0 + beq _022E7CE0 + add r0, r1, #0x164 + add r3, r0, #0x2c800 + add r2, r6, r5, lsl #3 + mov r1, #4 +_022E7CCC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022E7CCC + add r5, r5, #1 +_022E7CE0: + add r4, r4, #1 +_022E7CE4: + cmp r4, #0x10 + blt _022E7C74 +_022E7CEC: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E7CF4: .word 0x02353538 +_022E7CF8: .word 0x0002C966 + arm_func_end ov29_022E7C60 + + arm_func_start ov29_022E7CFC +ov29_022E7CFC: ; 0x022E7CFC + stmdb sp!, {r3, lr} + ldr r1, _022E7D48 ; =0x02353538 + ldr r0, [r1] + add r0, r0, #0x3000 + ldrb r2, [r0, #0xe28] + cmp r2, #0 + ldmneia sp!, {r3, pc} + mov r2, #1 + strb r2, [r0, #0xe28] + ldr r0, [r1] + mov r1, #0 + add r0, r0, #0x174 + add r0, r0, #0x3800 + bl ov29_022E7BE8 + ldr r1, _022E7D48 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x3000 + str r0, [r1, #0xe20] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E7D48: .word 0x02353538 + arm_func_end ov29_022E7CFC + + arm_func_start IsOnMonsterSpawnList +IsOnMonsterSpawnList: ; 0x022E7D4C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + ldr r4, _022E7D9C ; =0x02353538 + b _022E7D8C +_022E7D60: + ldr r0, [r4] + add r0, r0, #0x164 + add r0, r0, #0x2c800 + add r0, r0, r5, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r0, #0 + beq _022E7D94 + cmp r0, r6 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 +_022E7D8C: + cmp r5, #0x10 + blt _022E7D60 +_022E7D94: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E7D9C: .word 0x02353538 + arm_func_end IsOnMonsterSpawnList + + arm_func_start GetMonsterIdToSpawn +GetMonsterIdToSpawn: ; 0x022E7DA0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _022E7E50 ; =0x00002710 + bl DungeonRandInt + ldr r1, _022E7E54 ; =0x02353538 + mov ip, #0 + ldr r1, [r1] + add r2, r1, #0x3000 + ldr lr, [r2, #0xe20] + add r3, r1, r4, lsl #1 + b _022E7E00 +_022E7DCC: + add r2, r3, ip, lsl #3 + add r2, r2, #0x3900 + ldrsh r2, [r2, #0x76] + cmp r2, #0 + beq _022E7DFC + cmp r2, r0 + blt _022E7DFC + add r0, r1, #0x174 + add r0, r0, #0x3800 + add r0, r0, ip, lsl #3 + bl GetMonsterIdFromSpawnEntry + ldmia sp!, {r4, pc} +_022E7DFC: + add ip, ip, #1 +_022E7E00: + cmp ip, lr + blt _022E7DCC + mov r3, #0 + add r2, r1, r4, lsl #1 + b _022E7E40 +_022E7E14: + add r0, r2, r3, lsl #3 + add r0, r0, #0x3900 + ldrsh r0, [r0, #0x76] + cmp r0, #0 + beq _022E7E3C + add r0, r1, #0x174 + add r0, r0, #0x3800 + add r0, r0, r3, lsl #3 + bl GetMonsterIdFromSpawnEntry + ldmia sp!, {r4, pc} +_022E7E3C: + add r3, r3, #1 +_022E7E40: + cmp r3, lr + blt _022E7E14 + bl GetKecleonIdToSpawnByFloor + ldmia sp!, {r4, pc} + .align 2, 0 +_022E7E50: .word 0x00002710 +_022E7E54: .word 0x02353538 + arm_func_end GetMonsterIdToSpawn + + arm_func_start GetMonsterLevelToSpawn +GetMonsterLevelToSpawn: ; 0x022E7E58 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, #0 + ldr r6, _022E7EC0 ; =0x02353538 + b _022E7EA4 +_022E7E6C: + add r0, r1, #0x174 + add r0, r0, #0x3800 + add r0, r0, r4, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r5, r0 + bne _022E7EA0 + ldr r0, _022E7EC0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x174 + add r0, r0, #0x3800 + add r0, r0, r4, lsl #3 + bl GetMonsterLevelFromSpawnEntry + ldmia sp!, {r4, r5, r6, pc} +_022E7EA0: + add r4, r4, #1 +_022E7EA4: + ldr r1, [r6] + add r0, r1, #0x3000 + ldr r0, [r0, #0xe20] + cmp r4, r0 + blt _022E7E6C + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E7EC0: .word 0x02353538 + arm_func_end GetMonsterLevelToSpawn + + arm_func_start ov29_022E7EC4 +ov29_022E7EC4: ; 0x022E7EC4 + stmdb sp!, {r3, lr} + mov r0, #0x230 + mov r1, #0 + bl MemAlloc + ldr r2, _022E7F40 ; =0x02353554 + mov r1, #0x230 + str r0, [r2] + bl MemZero + ldr r0, _022E7F40 ; =0x02353554 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1] + ldr r1, [r0] + strb r2, [r1, #0x29] + ldr r1, [r0] + strb r2, [r1, #0x2c] + ldr r1, [r0] + strb r2, [r1, #0x2b] + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + strb r2, [r0, #0x228] + bl ov29_022E8708 + ldr r0, _022E7F40 ; =0x02353554 + mov r3, #2 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #0x229] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E7F40: .word 0x02353554 + arm_func_end ov29_022E7EC4 + + arm_func_start ov29_022E7F44 +ov29_022E7F44: ; 0x022E7F44 + stmdb sp!, {r3, lr} + ldr r0, _022E7F78 ; =0x02353554 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov29_022E8C4C + ldr r0, _022E7F78 ; =0x02353554 + ldr r0, [r0] + bl MemFree + ldr r0, _022E7F78 ; =0x02353554 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E7F78: .word 0x02353554 + arm_func_end ov29_022E7F44 + + arm_func_start ov29_022E7F7C +ov29_022E7F7C: ; 0x022E7F7C + ldr r0, _022E7F90 ; =0x02353554 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0] + bx lr + .align 2, 0 +_022E7F90: .word 0x02353554 + arm_func_end ov29_022E7F7C + + arm_func_start ov29_022E7F94 +ov29_022E7F94: ; 0x022E7F94 + stmdb sp!, {r3, lr} + ldr r0, _022E8014 ; =0x02353554 + mov r3, #0 + ldr r2, [r0] + mov r1, #1 + strb r3, [r2, #0x228] + ldr r0, [r0] + strb r1, [r0] + bl ov29_02339138 + mov r0, #1 + mov r1, r0 + bl ov29_02339D7C + bl ov29_02339CE8 + mov r0, #0 + bl SetMinimapDataE447 + ldr r1, _022E8014 ; =0x02353554 + mov r0, #1 + ldr r1, [r1] + strb r0, [r1] + bl SetMinimapDataE448 + bl ov29_022E8104 + bl ov29_022F42D8 + cmp r0, #2 + ldr r0, _022E8014 ; =0x02353554 + moveq r1, #1 + ldr r0, [r0] + movne r1, #0 + and r1, r1, #0xff + add r0, r0, #0xb8 + bl ov29_022DC738 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8014: .word 0x02353554 + arm_func_end ov29_022E7F94 + + arm_func_start ov29_022E8018 +ov29_022E8018: ; 0x022E8018 + stmdb sp!, {r3, lr} + ldr r0, _022E8050 ; =0x02353554 + ldr r0, [r0] + ldrb r0, [r0, #0x228] + cmp r0, #0 + beq _022E8048 + bl ov29_022DC76C + bl ov29_022DC778 + ldr r0, _022E8050 ; =0x02353554 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x228] +_022E8048: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8050: .word 0x02353554 + arm_func_end ov29_022E8018 + + arm_func_start ov29_022E8054 +ov29_022E8054: ; 0x022E8054 + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x10] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + strb r1, [r0, #0x10] + bl sub_0204AEA0 + cmp r0, #3 + ldrne r0, _022E80CC ; =0x02353554 + movne r1, #0 + ldrne r0, [r0] + strneb r1, [r0] + ldmneia sp!, {r3, pc} + ldr r0, _022E80CC ; =0x02353554 + ldr r0, [r0] + ldrb r0, [r0] + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl ov29_02339138 + mov r0, #0 + mov r1, #1 + bl ov29_0233A0E8 + mov r0, #1 + mov r1, #0 + bl ov29_02339D7C + ldr r0, _022E80CC ; =0x02353554 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E80CC: .word 0x02353554 + arm_func_end ov29_022E8054 + + arm_func_start ov29_022E80D0 +ov29_022E80D0: ; 0x022E80D0 + stmdb sp!, {r3, lr} + bl ov29_022DC77C + ldr r1, _022E8100 ; =0x02353554 + mov r0, #0 + ldr r1, [r1] + strb r0, [r1] + bl SetMinimapDataE448 + mov r0, #1 + bl ov29_0233A1BC + bl ov29_02339138 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8100: .word 0x02353554 + arm_func_end ov29_022E80D0 + + arm_func_start ov29_022E8104 +ov29_022E8104: ; 0x022E8104 + stmdb sp!, {r3, lr} + ldr r0, _022E812C ; =0x02353554 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x228] + ldr r0, [r0] + add r0, r0, #0xb8 + bl ov10_022C1E50 + bl ov29_022E8CE8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E812C: .word 0x02353554 + arm_func_end ov29_022E8104 + + arm_func_start ov29_022E8130 +ov29_022E8130: ; 0x022E8130 + stmdb sp!, {r3, lr} + ldr r0, _022E818C ; =0x02353554 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x228] + ldr r0, [r0] + strb r2, [r0, #0x229] + bl ov29_022E8104 + ldr r0, _022E818C ; =0x02353554 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x24] + bl ov29_022F42D8 + cmp r0, #2 + ldr r0, _022E818C ; =0x02353554 + moveq r1, #1 + ldr r0, [r0] + movne r1, #0 + and r1, r1, #0xff + add r0, r0, #0xb8 + bl ov29_022DC694 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E818C: .word 0x02353554 + arm_func_end ov29_022E8130 + + arm_func_start ov29_022E8190 +ov29_022E8190: ; 0x022E8190 + stmdb sp!, {r3, lr} + ldr r0, _022E81C4 ; =0x02353554 + ldr r0, [r0] + ldrb r0, [r0, #0x228] + cmp r0, #0 + beq _022E81BC + bl ov29_022DC6D0 + ldr r0, _022E81C4 ; =0x02353554 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x228] +_022E81BC: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E81C4: .word 0x02353554 + arm_func_end ov29_022E8190 + + arm_func_start ov29_022E81C8 +ov29_022E81C8: ; 0x022E81C8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_022DC6DC + ldrb r0, [r4, #0x10] + cmp r0, #0 + movne r0, #0 + strneb r0, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end ov29_022E81C8 + + arm_func_start ov29_022E81E8 +ov29_022E81E8: ; 0x022E81E8 + stmdb sp!, {r3, lr} + bl ov29_022DC728 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E81E8 + + arm_func_start ov29_022E81F8 +ov29_022E81F8: ; 0x022E81F8 + stmdb sp!, {r3, lr} + bl sub_0204AF58 + cmp r0, #0 + bne _022E8210 + bl ov29_022E8104 + ldmia sp!, {r3, pc} +_022E8210: + bl sub_0204AEA0 + cmp r0, #1 + bne _022E8238 + ldr r0, _022E8240 ; =0x02353554 + ldr r0, [r0] + ldrsh r0, [r0, #8] + cmp r0, #1 + beq _022E8238 + mov r0, #1 + bl ov29_022E8CA8 +_022E8238: + bl ov29_022E8CE8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8240: .word 0x02353554 + arm_func_end ov29_022E81F8 + + arm_func_start ov29_022E8244 +ov29_022E8244: ; 0x022E8244 + stmdb sp!, {r3, lr} + bl sub_0204AEA0 + cmp r0, #4 + ldreq r0, _022E826C ; =0x02353554 + ldreq r0, [r0] + ldreqsh r0, [r0, #8] + cmpeq r0, #4 + ldmneia sp!, {r3, pc} + bl ov29_022E9008 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E826C: .word 0x02353554 + arm_func_end ov29_022E8244 + + arm_func_start ov29_022E8270 +ov29_022E8270: ; 0x022E8270 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r3, _022E83FC ; =0x02353554 + mov sl, r0 + ldr r3, [r3] + mov sb, r1 + mov fp, r2 + cmp r3, #0 + beq _022E83F4 + ldr r8, [sl, #0xb4] + bl GetSleepAnimationId + ldr r1, _022E8400 ; =0x02353538 + mov r4, r0 + ldr r1, [r1] + mov r5, #0 + add r1, r1, #0x1a000 + ldr r0, [r1, #0x22c] + mov r6, r5 + cmp r0, sl + ldrsh r0, [sl, #0xa8] + mov r7, r5 + str r0, [sp, #0x18] + moveq r0, r5 + arm_func_end ov29_022E8270 + + arm_func_start ov29_022E82CC +ov29_022E82CC: ; 0x022E82CC + ldrneb r0, [r1, #0x245] + cmp r0, #0 + bne _022E82E4 + ldrb r0, [r8, #0xd8] + cmp r0, #2 + bne _022E82F0 +_022E82E4: + ldr r0, _022E8404 ; =0x00000229 + bl GetSpriteIndex__022F7388 + str r0, [sp, #0x18] +_022E82F0: + ldrb r0, [r8, #0xc4] + cmp r0, #1 + cmpne r0, #6 + beq _022E8364 + ldr r0, _022E8400 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x78b] + cmp r0, #0 + beq _022E832C + bl ov29_0234B4E0 + cmp r0, #0 + addeq r0, r5, #2 + moveq r0, r0, lsl #0x10 + moveq r5, r0, asr #0x10 + beq _022E8354 +_022E832C: + ldrb r0, [sl, #0xaf] + cmp r0, #0 + cmpne r0, #7 + bne _022E8354 + ldr r0, [sl, #0xb4] + ldr r0, [r0, #0x110] + cmp r0, #1 + addgt r0, r5, #1 + movgt r0, r0, lsl #0x10 + movgt r5, r0, asr #0x10 +_022E8354: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + b _022E8368 +_022E8364: + mov r5, #0 +_022E8368: + ldrb r0, [r8, #0x10b] + cmp r0, #2 + beq _022E83A4 + ldrb r1, [r8, #0xc4] + cmp r1, #6 + ldrneb r0, [r8, #0xbf] + cmpne r0, #4 + cmpne r1, #2 + bne _022E83A4 + ldr r0, _022E8408 ; =0x0237C850 + ldr r0, [r0] + and r0, r0, #2 + add r0, r6, r0 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_022E83A4: + ldrb r0, [r8, #0xef] + cmp r0, #1 + ldreq r0, _022E8400 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x1a000 + ldreqb r0, [r0, #0x244] + cmpeq r0, #0 + moveq r7, #1 + cmp r4, #0xff + beq _022E83F4 + mov r0, #1 + stmia sp, {r0, sb, fp} + str r5, [sp, #0xc] + str r6, [sp, #0x10] + str r7, [sp, #0x14] + ldrsh r1, [r8, #4] + ldr r3, [r8, #0xb0] + ldr r0, [sp, #0x18] + mov r2, r4 + bl ov29_022DC6E8 +_022E83F4: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E83FC: .word 0x02353554 +_022E8400: .word 0x02353538 +_022E8404: .word 0x00000229 +_022E8408: .word 0x0237C850 + arm_func_end ov29_022E82CC + + arm_func_start ov29_022E840C +ov29_022E840C: ; 0x022E840C + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _022E8478 ; =0x02353554 + ldr r0, [r0] + ldrb r0, [r0, #0x29] + cmp r0, #0 + movne r0, #0 + bne _022E8470 + add r0, sp, #0 + bl ov10_022C22A0 + ldr r0, _022E8478 ; =0x02353554 + add r1, sp, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x80 + mov r3, #1 + bl ov10_022C1E80 + bl sub_02048400 + cmp r0, #0 + beq _022E8460 + bl sub_02048384 +_022E8460: + ldr r1, _022E8478 ; =0x02353554 + mov r0, #1 + ldr r1, [r1] + strb r0, [r1, #0x29] +_022E8470: + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022E8478: .word 0x02353554 + arm_func_end ov29_022E840C + + arm_func_start ov29_022E847C +ov29_022E847C: ; 0x022E847C + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x10] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + mov r1, #0 + strb r1, [r0, #0x10] + bl sub_020483B8 + ldr r0, _022E84AC ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E84AC: .word 0x02353554 + arm_func_end ov29_022E847C + + arm_func_start ov29_022E84B0 +ov29_022E84B0: ; 0x022E84B0 + stmdb sp!, {r3, lr} + ldr r0, _022E84FC ; =0x02353554 + ldr r1, [r0] + ldrb r0, [r1, #0x29] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x80 + bl ov10_022C2278 + bl sub_02048400 + cmp r0, #0 + beq _022E84E4 + bl sub_020483D8 +_022E84E4: + ldr r0, _022E84FC ; =0x02353554 + mov r2, #0 + ldr r1, [r0] + mov r0, #1 + strb r2, [r1, #0x29] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E84FC: .word 0x02353554 + arm_func_end ov29_022E84B0 + + arm_func_start ov29_022E8500 +ov29_022E8500: ; 0x022E8500 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0 + bl ov10_022C22A0 + ldr r0, _022E8548 ; =0x02353554 + add r1, sp, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x80 + mov r3, #1 + bl ov10_022C1E80 + ldr r0, _022E8548 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + bl ov29_022E8E94 + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022E8548: .word 0x02353554 + arm_func_end ov29_022E8500 + + arm_func_start ov29_022E854C +ov29_022E854C: ; 0x022E854C + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0x10 + bl ov29_022E8F78 + ldr r0, _022E8584 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + mov r0, #0 + strb r0, [r4, #0x10] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E8584: .word 0x02353554 + arm_func_end ov29_022E854C + + arm_func_start ov29_022E8588 +ov29_022E8588: ; 0x022E8588 + stmdb sp!, {r3, lr} + ldr r0, _022E85A4 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C2278 + bl ov29_022E8F28 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E85A4: .word 0x02353554 + arm_func_end ov29_022E8588 + + arm_func_start ov29_022E85A8 +ov29_022E85A8: ; 0x022E85A8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0 + bl ov10_022C22A0 + ldr r0, _022E85F0 ; =0x02353554 + add r1, sp, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x80 + mov r3, #1 + bl ov10_022C1E80 + ldr r0, _022E85F0 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + bl ov29_022E8FCC + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022E85F0: .word 0x02353554 + arm_func_end ov29_022E85A8 + + arm_func_start ov29_022E85F4 +ov29_022E85F4: ; 0x022E85F4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r0, [r4, #0x10] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r4, #0x10 + bl ov29_022E9014 + ldr r0, _022E862C ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + mov r0, #0 + strb r0, [r4, #0x10] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E862C: .word 0x02353554 + arm_func_end ov29_022E85F4 + + arm_func_start ov29_022E8630 +ov29_022E8630: ; 0x022E8630 + stmdb sp!, {r3, lr} + ldr r0, _022E864C ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C2278 + bl ov29_022E8FF8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E864C: .word 0x02353554 + arm_func_end ov29_022E8630 + + arm_func_start ov29_022E8650 +ov29_022E8650: ; 0x022E8650 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0 + bl ov10_022C22A0 + ldr r0, _022E8698 ; =0x02353554 + add r1, sp, #0 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x80 + mov r3, #1 + bl ov10_022C1E80 + ldr r0, _022E8698 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C21D8 + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_022E8698: .word 0x02353554 + arm_func_end ov29_022E8650 + + arm_func_start ov29_022E869C +ov29_022E869C: ; 0x022E869C + mov r0, #1 + bx lr + arm_func_end ov29_022E869C + + arm_func_start ov29_022E86A4 +ov29_022E86A4: ; 0x022E86A4 + bx lr + arm_func_end ov29_022E86A4 + + arm_func_start ov29_022E86A8 +ov29_022E86A8: ; 0x022E86A8 + stmdb sp!, {r3, lr} + ldr r0, _022E86C4 ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0x80 + bl ov10_022C2278 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E86C4: .word 0x02353554 + arm_func_end ov29_022E86A8 + + arm_func_start ov29_022E86C8 +ov29_022E86C8: ; 0x022E86C8 + str r1, [r0] + ldr r1, [sp] + stmib r0, {r2, r3} + str r1, [r0, #0xc] + mov r1, #1 + strb r1, [r0, #0x10] + bx lr + arm_func_end ov29_022E86C8 + + arm_func_start ov29_022E86E4 +ov29_022E86E4: ; 0x022E86E4 + stmdb sp!, {r3, lr} + ldr r0, _022E8704 ; =0x02353554 + ldr r0, [r0] + ldr r0, [r0, #0x18] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + blx r0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8704: .word 0x02353554 + arm_func_end ov29_022E86E4 + + arm_func_start ov29_022E8708 +ov29_022E8708: ; 0x022E8708 + stmdb sp!, {r3, lr} + bl sub_0204AEA0 + cmp r0, #3 + bne _022E8724 + mov r0, #3 + bl ov29_022E8CA8 + ldmia sp!, {r3, pc} +_022E8724: + cmp r0, #2 + bne _022E8738 + mov r0, #0 + bl ov29_022E8CA8 + ldmia sp!, {r3, pc} +_022E8738: + cmp r0, #0 + bne _022E874C + mov r0, #2 + bl ov29_022E8CA8 + ldmia sp!, {r3, pc} +_022E874C: + cmp r0, #4 + bne _022E8760 + mov r0, #4 + bl ov29_022E8CA8 + ldmia sp!, {r3, pc} +_022E8760: + bl ov29_022E81F8 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E8708 + + arm_func_start ov29_022E8768 +ov29_022E8768: ; 0x022E8768 + ldr ip, _022E8774 ; =ov29_022E8CA8 + mov r0, #5 + bx ip + .align 2, 0 +_022E8774: .word ov29_022E8CA8 + arm_func_end ov29_022E8768 + + arm_func_start ov29_022E8778 +ov29_022E8778: ; 0x022E8778 + stmdb sp!, {r3, lr} + ldr r0, _022E87B0 ; =0x02353554 + mov r3, #3 + ldr r2, [r0] + sub r1, r3, #4 + str r3, [r2, #0xc] + ldr r0, [r0] + strh r1, [r0, #0x10] + bl ov29_022E8104 + ldr r0, _022E87B0 ; =0x02353554 + ldr r1, [r0] + ldrsh r0, [r1, #0x10] + strh r0, [r1, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E87B0: .word 0x02353554 + arm_func_end ov29_022E8778 + + arm_func_start ov29_022E87B4 +ov29_022E87B4: ; 0x022E87B4 + ldr r1, _022E87D8 ; =0x02353554 + ldr r2, [r1] + ldrsh r1, [r2, #8] + cmp r1, r0 + ldreq r0, [r2, #4] + cmpeq r0, #5 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022E87D8: .word 0x02353554 + arm_func_end ov29_022E87B4 + + arm_func_start ov29_022E87DC +ov29_022E87DC: ; 0x022E87DC + stmdb sp!, {r3, lr} + bl sub_0204AEA0 + ldr r1, _022E87F8 ; =0x023515E8 + mov r0, r0, lsl #1 + ldrsh r0, [r1, r0] + bl ov29_022E87B4 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E87F8: .word 0x023515E8 + arm_func_end ov29_022E87DC + + arm_func_start ov29_022E87FC +ov29_022E87FC: ; 0x022E87FC + ldr r1, _022E880C ; =0x02353554 + ldr r1, [r1] + strb r0, [r1, #0x2b] + bx lr + .align 2, 0 +_022E880C: .word 0x02353554 + arm_func_end ov29_022E87FC + + arm_func_start ov29_022E8810 +ov29_022E8810: ; 0x022E8810 + ldr r0, _022E8830 ; =0x02353554 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022E8830: .word 0x02353554 + arm_func_end ov29_022E8810 + + arm_func_start ov29_022E8834 +ov29_022E8834: ; 0x022E8834 + ldr r1, _022E8844 ; =0x02353554 + ldr r1, [r1] + strb r0, [r1, #0x2c] + bx lr + .align 2, 0 +_022E8844: .word 0x02353554 + arm_func_end ov29_022E8834 + + arm_func_start ov29_022E8848 +ov29_022E8848: ; 0x022E8848 + ldr r0, _022E8868 ; =0x02353554 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022E8868: .word 0x02353554 + arm_func_end ov29_022E8848 + + arm_func_start ov29_022E886C +ov29_022E886C: ; 0x022E886C + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022E8BA0 ; =0x02353554 + ldr r5, [r0] + cmp r5, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, [r5, #4] + cmp r1, #6 + addls pc, pc, r1, lsl #2 + ldmia sp!, {r3, r4, r5, pc} +_022E8890: ; jump table + ldmia sp!, {r3, r4, r5, pc} ; case 0 + b _022E88AC ; case 1 + b _022E88C0 ; case 2 + b _022E8A80 ; case 3 + b _022E8AC8 ; case 4 + b _022E8B00 ; case 5 + b _022E8B5C ; case 6 +_022E88AC: + ldrb r0, [r5, #0x2b] + cmp r0, #0 + moveq r0, #2 + streq r0, [r5, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E88C0: + ldrb r0, [r5, #2] + cmp r0, #0 + beq _022E88EC + mov r0, #1 + bl ov29_0234C70C + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _022E8BA0 ; =0x02353554 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] +_022E88EC: + bl ov29_022E8C4C + ldr r0, _022E8BA0 ; =0x02353554 + ldr r4, [r0] + ldrsh r0, [r4, #0x10] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022E89DC +_022E8908: ; jump table + b _022E8920 ; case 0 + b _022E8940 ; case 1 + b _022E8960 ; case 2 + b _022E8980 ; case 3 + b _022E89A0 ; case 4 + b _022E89C0 ; case 5 +_022E8920: + ldr ip, _022E8BA4 ; =ov29_022E84B0 + ldr r1, _022E8BA8 ; =ov29_022E840C + ldr r3, _022E8BAC ; =ov29_022E847C + add r0, r4, #0x14 + mov r2, #0 + str ip, [sp] + bl ov29_022E86C8 + b _022E89DC +_022E8940: + ldr ip, _022E8BB0 ; =ov29_022E81E8 + ldr r1, _022E8BB4 ; =ov29_022E8130 + ldr r2, _022E8BB8 ; =ov29_022E8190 + ldr r3, _022E8BBC ; =ov29_022E81C8 + add r0, r4, #0x14 + str ip, [sp] + bl ov29_022E86C8 + b _022E89DC +_022E8960: + ldr ip, _022E8BC0 ; =ov29_022E8588 + ldr r1, _022E8BC4 ; =ov29_022E8500 + ldr r3, _022E8BC8 ; =ov29_022E854C + add r0, r4, #0x14 + mov r2, #0 + str ip, [sp] + bl ov29_022E86C8 + b _022E89DC +_022E8980: + ldr ip, _022E8BCC ; =ov29_022E80D0 + ldr r1, _022E8BD0 ; =ov29_022E7F94 + ldr r2, _022E8BD4 ; =ov29_022E8018 + ldr r3, _022E8BD8 ; =ov29_022E8054 + add r0, r4, #0x14 + str ip, [sp] + bl ov29_022E86C8 + b _022E89DC +_022E89A0: + ldr ip, _022E8BDC ; =ov29_022E8630 + ldr r1, _022E8BE0 ; =ov29_022E85A8 + ldr r3, _022E8BE4 ; =ov29_022E85F4 + add r0, r4, #0x14 + mov r2, #0 + str ip, [sp] + bl ov29_022E86C8 + b _022E89DC +_022E89C0: + ldr ip, _022E8BE8 ; =ov29_022E86A8 + ldr r1, _022E8BEC ; =ov29_022E8650 + ldr r2, _022E8BF0 ; =0x022E869C + ldr r3, _022E8BF4 ; =0x022E86A4 + add r0, r4, #0x14 + str ip, [sp] + bl ov29_022E86C8 +_022E89DC: + ldr r0, _022E8BA0 ; =0x02353554 + ldrsh r1, [r4, #0x10] + ldr r0, [r0] + strh r1, [r0, #8] + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _022E8A20 + ldr r0, _022E8BF8 ; =0x0235352C + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl sub_0200B3D4 + ldr r0, _022E8BF8 ; =0x0235352C + ldr r0, [r0] + ldr r0, [r0, #0x30] + bl sub_0200B330 + ldr r0, [r4, #0x14] + blx r0 +_022E8A20: + mov r1, #0 + ldr r0, _022E8BA0 ; =0x02353554 + str r1, [r5, #0xc] + ldr r2, [r0] + ldrb r1, [r2, #0x2c] + cmp r1, #0 + movne r0, #3 + strne r0, [r2, #4] + ldmneia sp!, {r3, r4, r5, pc} + mov r1, #5 + str r1, [r2, #4] + ldr r0, [r0] + ldrb r0, [r0, #2] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #1 + mov r2, r0 + mov r1, #0x4000 + bl ov29_0234C668 + ldr r0, _022E8BA0 ; =0x02353554 + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E8A80: + ldrb r1, [r5, #0x2c] + cmp r1, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r1, #5 + str r1, [r5, #4] + ldr r0, [r0] + ldrb r0, [r0, #2] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #1 + mov r2, r0 + mov r1, #0x4000 + bl ov29_0234C668 + ldr r0, _022E8BA0 ; =0x02353554 + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E8AC8: + bl ov29_022E86E4 + ldr r0, _022E8BA0 ; =0x02353554 + ldr r0, [r0] + ldrb r0, [r0, #2] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #1 + bl ov29_0234C70C + cmp r0, #0 + ldreq r0, _022E8BA0 ; =0x02353554 + moveq r1, #5 + ldreq r0, [r0] + streq r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E8B00: + bl ov29_022E86E4 + ldr r0, [r5, #0xc] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022E8BA0 ; =0x02353554 + ldr r2, [r0] + ldrb r1, [r2, #1] + strb r1, [r2, #2] + ldr r1, [r0] + ldrb r0, [r1, #2] + cmp r0, #0 + moveq r0, #6 + streq r0, [r1, #4] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #2 + mov r1, #0x4000 + mov r2, #1 + bl ov29_0234C668 + ldr r0, _022E8BA0 ; =0x02353554 + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} +_022E8B5C: + ldrb r0, [r5, #2] + cmp r0, #0 + beq _022E8B78 + mov r0, #1 + bl ov29_0234C70C + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_022E8B78: + bl ov29_022E8C4C + ldr r0, _022E8BA0 ; =0x02353554 + ldr r1, [r0] + ldrb r0, [r1, #0x2b] + cmp r0, #0 + movne r0, #1 + strne r0, [r1, #4] + moveq r0, #2 + streq r0, [r1, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E8BA0: .word 0x02353554 +_022E8BA4: .word ov29_022E84B0 +_022E8BA8: .word ov29_022E840C +_022E8BAC: .word ov29_022E847C +_022E8BB0: .word ov29_022E81E8 +_022E8BB4: .word ov29_022E8130 +_022E8BB8: .word ov29_022E8190 +_022E8BBC: .word ov29_022E81C8 +_022E8BC0: .word ov29_022E8588 +_022E8BC4: .word ov29_022E8500 +_022E8BC8: .word ov29_022E854C +_022E8BCC: .word ov29_022E80D0 +_022E8BD0: .word ov29_022E7F94 +_022E8BD4: .word ov29_022E8018 +_022E8BD8: .word ov29_022E8054 +_022E8BDC: .word ov29_022E8630 +_022E8BE0: .word ov29_022E85A8 +_022E8BE4: .word ov29_022E85F4 +_022E8BE8: .word ov29_022E86A8 +_022E8BEC: .word ov29_022E8650 +_022E8BF0: .word 0x022E869C +_022E8BF4: .word 0x022E86A4 +_022E8BF8: .word 0x0235352C + arm_func_end ov29_022E886C + + arm_func_start ov29_022E8BFC +ov29_022E8BFC: ; 0x022E8BFC + ldr r1, _022E8C0C ; =0x02353554 + ldr r1, [r1] + strb r0, [r1, #1] + bx lr + .align 2, 0 +_022E8C0C: .word 0x02353554 + arm_func_end ov29_022E8BFC + + arm_func_start ov29_022E8C10 +ov29_022E8C10: ; 0x022E8C10 + stmdb sp!, {r3, lr} + ldr r0, _022E8C48 ; =0x02353554 + ldr r2, [r0] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + ldrb r0, [r2, #0x2a] + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r1, [r2, #0x1c] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + add r0, r2, #0x14 + blx r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8C48: .word 0x02353554 + arm_func_end ov29_022E8C10 + + arm_func_start ov29_022E8C4C +ov29_022E8C4C: ; 0x022E8C4C + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _022E8CA4 ; =0x02353554 + ldr r4, [r0] + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _022E8C98 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x20] + blx r0 + movs r5, r0 + beq _022E8C9C + mov r1, #0 + mov r2, r1 + mov r3, r1 + add r0, r4, #0x14 + str r1, [sp] + bl ov29_022E86C8 + b _022E8C9C +_022E8C98: + mov r5, #1 +_022E8C9C: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E8CA4: .word 0x02353554 + arm_func_end ov29_022E8C4C + + arm_func_start ov29_022E8CA8 +ov29_022E8CA8: ; 0x022E8CA8 + ldr r1, _022E8CE4 ; =0x02353554 + ldr r3, [r1] + ldrsh r2, [r3, #8] + cmp r2, r0 + ldrne r2, [r3, #0xc] + cmpne r2, #1 + bxeq lr + mov r2, #1 + str r2, [r3, #0xc] + ldr r3, [r1] + mov r2, #0 + strh r0, [r3, #0x10] + ldr r0, [r1] + strb r2, [r0, #0x28] + bx lr + .align 2, 0 +_022E8CE4: .word 0x02353554 + arm_func_end ov29_022E8CA8 + + arm_func_start ov29_022E8CE8 +ov29_022E8CE8: ; 0x022E8CE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x54 + mov sb, #0 + ldr fp, _022E8E54 ; =0x000003E7 + mov r8, sb +_022E8CFC: + ldr r0, _022E8E58 ; =0x02353538 + ldr r1, [r0] + add r0, r1, r8, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + cmp r0, #0 + moveq r0, #0 + beq _022E8D30 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_022E8D30: + cmp r0, #0 + beq _022E8DE4 + add r0, r1, r8, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb28] + ldr r0, _022E8E5C ; =0x02353554 + ldr r7, [r6, #0xb4] + ldr r0, [r0] + add r5, r0, #0xb8 + mov r0, #0x5c + smulbb r4, sb, r0 + ldrb r0, [r7, #0x165] + cmp r0, #0 + bne _022E8DE4 + add r0, sp, #0x14 + mov r1, r7 + mov r2, #0 + bl ov29_0230027C + ldrsh r1, [r7, #0x12] + ldrsh r0, [r7, #0x16] + add sl, r1, r0 + cmp sl, fp + mov r0, r6 + movgt sl, fp + bl GetSleepAnimationId + ldrb r3, [r7, #0xa] + mov r1, sl, lsl #0x10 + mov r1, r1, asr #0x10 + str r3, [sp] + ldrsh r3, [r7, #0x10] + add r2, sp, #0x14 + str r3, [sp, #4] + str r1, [sp, #8] + ldrsh r1, [r6, #0xa8] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r1, [r7, #0xb0] + ldrsh r3, [r7, #4] + mov r1, r1, lsl #0x10 + add r0, r5, r4 + mov r1, r1, asr #0x10 + bl ov10_022C1DE0 + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_022E8DE4: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022E8CFC + mov r0, #0x5c + smulbb r4, sb, r0 + mov r3, #0 + ldr r1, _022E8E5C ; =0x02353554 + b _022E8E24 +_022E8E0C: + ldr r2, [r1] + add r0, sb, #1 + add r2, r4, r2 + mov r0, r0, lsl #0x10 + strb r3, [r2, #0xb8] + mov sb, r0, asr #0x10 +_022E8E24: + cmp sb, #4 + blt _022E8E0C + ldr r0, _022E8E5C ; =0x02353554 + ldr r0, [r0] + add r0, r0, #0xb8 + bl ov29_022DC684 + ldr r0, _022E8E5C ; =0x02353554 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x228] + add sp, sp, #0x54 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E8E54: .word 0x000003E7 +_022E8E58: .word 0x02353538 +_022E8E5C: .word 0x02353554 + arm_func_end ov29_022E8CE8 + + arm_func_start ov29_022E8E60 +ov29_022E8E60: ; 0x022E8E60 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _022E8E90 ; =0x00003FCB + bl StringFromMessageId + mov r1, #0 + mov r3, r0 + mov r0, r4 + mov r2, r1 + bl sub_02026214 + mov r0, r4 + bl sub_02027AF0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E8E90: .word 0x00003FCB + arm_func_end ov29_022E8E60 + + arm_func_start ov29_022E8E94 +ov29_022E8E94: ; 0x022E8E94 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + ldr r0, _022E8F1C ; =0x02353558 + ldr r0, [r0] + cmp r0, #0 + movne r0, #0 + bne _022E8F14 + mov r0, #0x54 + mov r1, #8 + bl MemAlloc + ldr r2, _022E8F1C ; =0x02353558 + mov r1, #0x54 + str r0, [r2] + bl MemZero + ldr r0, _022E8F20 ; =0x023515F4 + add ip, sp, #0 + ldmia r0, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + ldr r1, _022E8F24 ; =ov29_022E8E60 + mov r0, ip + bl sub_0202F8C4 + ldr r1, _022E8F1C ; =0x02353558 + ldr r2, [r1] + strb r0, [r2] + ldr r0, [r1] + add r0, r0, #4 + bl InitPreprocessorArgs + ldr r0, _022E8F1C ; =0x02353558 + mov r2, #0x10000 + ldr r1, [r0] + mov r0, #1 + str r2, [r1, #0x50] +_022E8F14: + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8F1C: .word 0x02353558 +_022E8F20: .word 0x023515F4 +_022E8F24: .word ov29_022E8E60 + arm_func_end ov29_022E8E94 + + arm_func_start ov29_022E8F28 +ov29_022E8F28: ; 0x022E8F28 + stmdb sp!, {r3, lr} + ldr r0, _022E8F74 ; =0x02353558 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl sub_0202F918 + ldr r0, _022E8F74 ; =0x02353558 + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1] + ldr r0, [r0] + bl MemFree + ldr r0, _022E8F74 ; =0x02353558 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8F74: .word 0x02353558 + arm_func_end ov29_022E8F28 + + arm_func_start ov29_022E8F78 +ov29_022E8F78: ; 0x022E8F78 + stmdb sp!, {r4, lr} + ldrb r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + mov r1, #0 + strb r1, [r0] + ldr r1, _022E8FC4 ; =0x02353558 + ldr r0, _022E8FC8 ; =0x00003FCB + ldr r1, [r1] + ldrsb r4, [r1] + bl StringFromMessageId + mov r1, #0 + mov r3, r0 + mov r0, r4 + mov r2, r1 + bl sub_02026214 + mov r0, r4 + bl sub_02027AF0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E8FC4: .word 0x02353558 +_022E8FC8: .word 0x00003FCB + arm_func_end ov29_022E8F78 + + arm_func_start ov29_022E8FCC +ov29_022E8FCC: ; 0x022E8FCC + stmdb sp!, {r3, lr} + ldr r0, _022E8FF4 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0x700 + ldrsb r0, [r0, #0x98] + ldrb r1, [r1, #0x748] + bl ov29_0234F25C + bl ov29_0234F278 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8FF4: .word 0x02353538 + arm_func_end ov29_022E8FCC + + arm_func_start ov29_022E8FF8 +ov29_022E8FF8: ; 0x022E8FF8 + stmdb sp!, {r3, lr} + bl ov29_0234F2B8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_022E8FF8 + + arm_func_start ov29_022E9008 +ov29_022E9008: ; 0x022E9008 + ldr ip, _022E9010 ; =ov29_0234F290 + bx ip + .align 2, 0 +_022E9010: .word ov29_0234F290 + arm_func_end ov29_022E9008 + + arm_func_start ov29_022E9014 +ov29_022E9014: ; 0x022E9014 + ldrb r0, [r0] + cmp r0, #0 + bx lr + arm_func_end ov29_022E9014 + + arm_func_start GetDirectionTowardsPosition +GetDirectionTowardsPosition: ; 0x022E9020 + ldrsh r3, [r1] + ldrsh r2, [r0] + ldrsh r1, [r1, #2] + ldrsh r0, [r0, #2] + subs r3, r3, r2 + sub r2, r1, r0 + cmpeq r2, #0 + moveq r0, #0 + bxeq lr + cmp r3, #1 + movge r3, #1 + cmp r2, #1 + mvn r0, #0 + movge r2, #1 + cmp r3, r0 + movle r3, r0 + mvn r0, #0 + cmp r2, r0 + movle r2, r0 + ldr r1, _022E9088 ; =0x02351604 + add r2, r2, #1 + mov r0, #0xc + mla r0, r2, r0, r1 + add r1, r3, #1 + ldr r0, [r0, r1, lsl #2] + bx lr + .align 2, 0 +_022E9088: .word 0x02351604 + arm_func_end GetDirectionTowardsPosition + + arm_func_start GetChebyshevDistance +GetChebyshevDistance: ; 0x022E908C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldrsh r1, [r5] + ldrsh r0, [r4] + sub r0, r1, r0 + bl Abs + ldrsh r1, [r4, #2] + ldrsh r2, [r5, #2] + mov r4, r0 + sub r0, r2, r1 + bl Abs + cmp r4, r0 + movle r4, r0 + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GetChebyshevDistance + + arm_func_start ov29_022E90CC +ov29_022E90CC: ; 0x022E90CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r4, r1 + mov r6, r2 + bl ov29_022E333C + mov r5, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + bl GetTile + cmp r6, #0 + ldrb ip, [r0, #7] + bne _022E9104 + cmp ip, #0xff + bne _022E913C +_022E9104: + ldrsh r1, [r7] + ldrsh r0, [r4] + sub r0, r1, r0 + bl Abs + cmp r0, r5 + bgt _022E9198 + ldrsh r1, [r7, #2] + ldrsh r0, [r4, #2] + sub r0, r1, r0 + bl Abs + cmp r0, r5 + bgt _022E9198 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E913C: + ldr r0, _022E91A0 ; =0x02353538 + mov r1, #0x1c + ldr r0, [r0] + ldrsh r2, [r4] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r3, ip, r1, r0 + ldrsh r0, [r3, #2] + sub r0, r0, #1 + cmp r0, r2 + ldrlesh r0, [r3, #4] + ldrlesh r1, [r4, #2] + suble r0, r0, #1 + cmple r0, r1 + bgt _022E9198 + ldrsh r0, [r3, #6] + add r0, r0, #1 + cmp r0, r2 + ldrgtsh r0, [r3, #8] + addgt r0, r0, #1 + cmpgt r0, r1 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} +_022E9198: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E91A0: .word 0x02353538 + arm_func_end ov29_022E90CC + + arm_func_start IsPositionInSight +IsPositionInSight: ; 0x022E91A4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r4, r1 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r7, r2 + bl GetTile + ldrb r6, [r0, #7] + cmp r6, #0xff + beq _022E9230 + cmp r7, #0 + bne _022E9230 + ldr r0, _022E9294 ; =0x02353538 + mov r1, #0x1c + ldr r0, [r0] + ldrsh r2, [r4] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r3, r6, r1, r0 + ldrsh r0, [r3, #2] + sub r0, r0, #1 + cmp r0, r2 + ldrlesh r0, [r3, #4] + ldrlesh r1, [r4, #2] + suble r0, r0, #1 + cmple r0, r1 + bgt _022E9230 + ldrsh r0, [r3, #6] + add r0, r0, #1 + cmp r0, r2 + ldrgtsh r0, [r3, #8] + addgt r0, r0, #1 + cmpgt r0, r1 + movgt r0, #1 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} +_022E9230: + ldrsh r1, [r5, #2] + ldrsh r0, [r4, #2] + sub r0, r1, r0 + bl Abs + ldrsh r2, [r5] + ldrsh r1, [r4] + mov r6, r0 + sub r0, r2, r1 + bl Abs + cmp r0, r6 + movle r0, r6 + cmp r0, #2 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, r6, r7, pc} + bne _022E928C + mov r0, r5 + mov r1, r4 + bl ov29_022E935C + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E928C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E9294: .word 0x02353538 + arm_func_end IsPositionInSight + + arm_func_start ov29_022E9298 +ov29_022E9298: ; 0x022E9298 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r4, r1 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r7, r2 + bl GetTile + mov r6, r0 + bl ov29_022E333C + cmp r7, #0 + ldrb r2, [r6, #7] + bne _022E92D0 + cmp r2, #0xff + bne _022E930C +_022E92D0: + ldrsh r1, [r5] + sub r1, r1, r0 + str r1, [r4] + ldrsh r1, [r5] + add r1, r1, r0 + add r1, r1, #1 + str r1, [r4, #8] + ldrsh r1, [r5, #2] + sub r1, r1, r0 + str r1, [r4, #4] + ldrsh r1, [r5, #2] + add r0, r1, r0 + add r0, r0, #1 + str r0, [r4, #0xc] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022E930C: + ldr r0, _022E9358 ; =0x02353538 + mov r1, #0x1c + ldr r0, [r0] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r1, r2, r1, r0 + ldrsh r0, [r1, #2] + sub r0, r0, #1 + str r0, [r4] + ldrsh r0, [r1, #6] + add r0, r0, #2 + str r0, [r4, #8] + ldrsh r0, [r1, #4] + sub r0, r0, #1 + str r0, [r4, #4] + ldrsh r0, [r1, #8] + add r0, r0, #2 + str r0, [r4, #0xc] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022E9358: .word 0x02353538 + arm_func_end ov29_022E9298 + + arm_func_start ov29_022E935C +ov29_022E935C: ; 0x022E935C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldrsh r4, [r8] + ldrsh r0, [r7] + sub r0, r4, r0 + bl Abs + mov r6, r0 + cmp r6, #1 + bgt _022E93A0 + ldrsh r1, [r8, #2] + ldrsh r0, [r7, #2] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + movle r0, #1 + ldmleia sp!, {r4, r5, r6, r7, r8, pc} +_022E93A0: + ldrsh r5, [r8, #2] + ldrsh r0, [r7, #2] + sub r0, r5, r0 + bl Abs + cmp r6, r0 + movle r6, r0 + cmp r6, #2 + bne _022E9480 + mov r6, #0 + b _022E9410 +_022E93C8: + ldrsh r0, [r7] + cmp r4, r0 + addlt r4, r4, #1 + cmp r4, r0 + ldrsh r0, [r7, #2] + subgt r4, r4, #1 + cmp r5, r0 + addlt r5, r5, #1 + cmp r5, r0 + subgt r5, r5, #1 + mov r0, r4 + mov r1, r5 + bl GetTile + ldrh r0, [r0] + tst r0, #3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r6, r6, #1 +_022E9410: + cmp r6, #2 + blt _022E93C8 + ldrsh r4, [r7] + ldrsh r5, [r7, #2] + mov r6, #0 + b _022E9470 +_022E9428: + ldrsh r0, [r8] + cmp r4, r0 + addlt r4, r4, #1 + cmp r4, r0 + ldrsh r0, [r8, #2] + subgt r4, r4, #1 + cmp r5, r0 + addlt r5, r5, #1 + cmp r5, r0 + subgt r5, r5, #1 + mov r0, r4 + mov r1, r5 + bl GetTile + ldrh r0, [r0] + tst r0, #3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r6, r6, #1 +_022E9470: + cmp r6, #2 + blt _022E9428 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022E9480: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_022E935C + + arm_func_start ov29_022E9488 +ov29_022E9488: ; 0x022E9488 + stmdb sp!, {r3, r4, r5, lr} + ldr ip, _022E955C ; =0x02353538 + ldr r3, _022E9560 ; =0x0001A224 + ldr r4, [ip] + add ip, r3, #2 + ldrsh r3, [r4, r3] + ldrsh r4, [r4, ip] + mvn lr, #0xf + sub r3, r0, r3 + sub r0, r1, r4 + cmp r3, lr + cmpge r0, lr + blt _022E9554 + rsb r1, lr, #0xff + cmp r3, r1 + cmplt r0, #0xd0 + bge _022E9554 + mov r1, #0xc + mul ip, r2, r1 + ldr r4, _022E9564 ; =0x0237C88A + ldr r5, _022E9568 ; =0x0237C890 + ldrh r2, [r4, ip] + sub r1, r1, #0x20c + ldrsh r5, [r5, ip] + and r1, r2, r1 + strh r1, [r4, ip] + add r1, r3, r5 + ldrh r2, [r4, ip] + and r1, r1, lr, lsr #23 + ldr r3, _022E956C ; =0x0237C88E + orr r1, r2, r1 + strh r1, [r4, ip] + ldr r1, _022E9570 ; =0x0237C892 + ldrh r4, [r3, ip] + ldrsh lr, [r1, ip] + ldr r1, _022E9574 ; =0xFFFF000F + ldr r2, _022E9578 ; =0x020AFC4C + and r1, r4, r1 + strh r1, [r3, ip] + add r0, r0, lr + ldr r1, _022E957C ; =0x0237C888 + mov lr, r0, lsl #0x14 + ldrh r4, [r3, ip] + ldr r0, [r2] + add r1, r1, ip + orr r4, r4, lr, lsr #16 + mov r2, #0 + strh r4, [r3, ip] + bl sub_0201B9F8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022E9554: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E955C: .word 0x02353538 +_022E9560: .word 0x0001A224 +_022E9564: .word 0x0237C88A +_022E9568: .word 0x0237C890 +_022E956C: .word 0x0237C88E +_022E9570: .word 0x0237C892 +_022E9574: .word 0xFFFF000F +_022E9578: .word 0x020AFC4C +_022E957C: .word 0x0237C888 + arm_func_end ov29_022E9488 + + arm_func_start GetLeader +GetLeader: ; 0x022E9580 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022E95EC ; =0x0235355C + ldr r0, [r0] + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r5, #0 + ldr r4, _022E95F0 ; =0x02353538 + b _022E95DC +_022E95A0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb28] + mov r0, r6 + bl EntityIsValid__022E95F4 + cmp r0, #0 + ldrne r0, [r6, #0xb4] + ldrneb r0, [r0, #7] + cmpne r0, #0 + ldrne r1, _022E95EC ; =0x0235355C + movne r0, r6 + strne r6, [r1] + ldmneia sp!, {r4, r5, r6, pc} + add r5, r5, #1 +_022E95DC: + cmp r5, #4 + blt _022E95A0 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E95EC: .word 0x0235355C +_022E95F0: .word 0x02353538 + arm_func_end GetLeader diff --git a/asm/overlay_29_022E9618.s b/asm/overlay_29_022E9618.s new file mode 100644 index 00000000..05b5851d --- /dev/null +++ b/asm/overlay_29_022E9618.s @@ -0,0 +1,1621 @@ + .include "asm/macros.inc" + .include "overlay_29_022E9618.inc" + + .text + + arm_func_start ov29_022E9618 +ov29_022E9618: ; 0x022E9618 + stmdb sp!, {r3, lr} + bl GetLeader + ldr r0, [r0, #0xb4] + ldmia sp!, {r3, pc} + arm_func_end ov29_022E9618 + + arm_func_start ov29_022E9628 +ov29_022E9628: ; 0x022E9628 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xe20 + mov sl, r0 + str r1, [sp] + bl GetLeader + mov r4, #0 + str r0, [sp, #0x14] + mov r8, r4 + b _022E9830 +_022E964C: + mov r0, #0x38 + bl DungeonRandInt + mov sb, r0 + mov r0, #0x20 + bl DungeonRandInt + ldr r1, [sp, #0x14] + str r0, [sp, #0x10] + ldrh r2, [r1, #4] + ldrh r1, [r1, #6] + mov r5, #0 + strh r2, [sp, #0x1c] + ldrsh r0, [sp, #0x1c] + strh r1, [sp, #0x1e] + ldrsh fp, [sp, #0x1e] + str r0, [sp, #8] + b _022E97F4 +_022E968C: + cmp r4, #0x700 + ldr r7, [sp, #0x10] + bge _022E97FC + ldr r0, [sp, #8] + mov r6, #0 + sub r0, r0, sb + str r0, [sp, #4] + and r0, sb, #0xff + str r0, [sp, #0x18] + b _022E97DC +_022E96B4: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, sb + mov r1, r7 + bl GetTile + cmp r4, #0x700 + bge _022E97E4 + ldr r1, [sp] + cmp r1, #0 + beq _022E96E8 + ldrh r1, [r0] + tst r1, #0x800 + arm_func_end ov29_022E9628 + + arm_func_start ov29_022E96E4 +ov29_022E96E4: ; 0x022E96E4 + bne _022E97D8 +_022E96E8: + cmp r8, #0 + bne _022E974C + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #1 + bne _022E97A8 + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _022E97A8 + ldr r1, [r0, #0x10] + cmp r1, #0 + ldreq r0, [r0, #0xc] + cmpeq r0, #0 + bne _022E97A8 + ldr r0, [sp, #4] + bl Abs + cmp r0, #6 + bge _022E9740 + sub r0, fp, r7 + bl Abs + cmp r0, #6 + blt _022E97A8 +_022E9740: + mov r0, #1 + str r0, [sp, #0xc] + b _022E97A8 +_022E974C: + ldrh r1, [r0] + cmp r8, #1 + and r1, r1, #3 + bne _022E978C + cmp r1, #1 + bne _022E97A8 + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _022E97A8 + ldr r1, [r0, #0x10] + cmp r1, #0 + ldreq r0, [r0, #0xc] + cmpeq r0, #0 + moveq r0, #1 + streq r0, [sp, #0xc] + b _022E97A8 +_022E978C: + cmp r1, #1 + ldreq r1, [r0, #0x10] + cmpeq r1, #0 + ldreq r0, [r0, #0xc] + cmpeq r0, #0 + moveq r0, #1 + streq r0, [sp, #0xc] +_022E97A8: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _022E97CC + ldr r1, [sp, #0x18] + add r0, sp, #0x20 + strb r1, [r0, r4, lsl #1] + add r0, r0, r4, lsl #1 + strb r7, [r0, #1] + add r4, r4, #1 +_022E97CC: + add r7, r7, #1 + cmp r7, #0x20 + movge r7, #0 +_022E97D8: + add r6, r6, #1 +_022E97DC: + cmp r6, #0x20 + blt _022E96B4 +_022E97E4: + add sb, sb, #1 + cmp sb, #0x38 + movge sb, #0 + add r5, r5, #1 +_022E97F4: + cmp r5, #0x38 + blt _022E968C +_022E97FC: + cmp r4, #0 + beq _022E982C + mov r0, r4 + bl DungeonRandInt + add r2, sp, #0x20 + ldrb r2, [r2, r0, lsl #1] + add r1, sp, #0x21 + strh r2, [sl] + ldrb r1, [r1, r0, lsl #1] + mov r0, #1 + strh r1, [sl, #2] + b _022E983C +_022E982C: + add r8, r8, #1 +_022E9830: + cmp r8, #3 + blt _022E964C + mov r0, #0 +_022E983C: + add sp, sp, #0xe20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_022E96E4 + + arm_func_start ov29_022E9844 +ov29_022E9844: ; 0x022E9844 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r8, r3 + mov sl, r0 + mov r0, #0 + str r0, [sp, #4] + str r1, [sp] + add r3, r8, #1 + mov r1, r0 + mov r0, r3, lsl #1 + mov sb, r2 + ldr r7, [sp, #0x30] + bl MemAlloc + mov r4, r0 + mov r1, #0 + b _022E9890 +_022E9884: + mov r0, r1, lsl #1 + strh r1, [r4, r0] + add r1, r1, #1 +_022E9890: + cmp r1, r8 + blt _022E9884 + cmp r7, #0 + beq _022E9918 + mov r0, #4 + bl DungeonRandInt + add r0, r0, #1 + mov r0, r0, lsl #0x10 + str r0, [sp, #8] + sub fp, r8, #1 + mov r6, #0 + b _022E990C +_022E98C0: + mov r5, #0 + b _022E98F8 +_022E98C8: + mov r0, r8 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + mov r3, r5, lsl #1 + mov r1, r0, asr #0xf + ldrsh r2, [r4, r3] + ldrsh r0, [r4, r1] + add r5, r5, #1 + mov r5, r5, lsl #0x10 + strh r0, [r4, r3] + strh r2, [r4, r1] + mov r5, r5, asr #0x10 +_022E98F8: + cmp r5, fp + blt _022E98C8 + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_022E990C: + ldr r0, [sp, #8] + cmp r6, r0, asr #16 + blt _022E98C0 +_022E9918: + mov r6, #0 + b _022E99D0 +_022E9920: + mov r0, r6, lsl #1 + ldrsh r0, [r4, r0] + mov r0, r0, lsl #2 + ldrsh r5, [sb, r0] + cmp r5, #0x63 + beq _022E99D8 + add r1, sb, r0 + ldr r0, [sp] + ldrsh r1, [r1, #2] + ldrsh r3, [r0] + ldrsh r2, [r0, #2] + add fp, r3, r5 + add r5, r2, r1 + mov r0, fp + mov r1, r5 + bl GetTile + ldrh r1, [r0] + tst r1, #0x800 + bne _022E99CC + cmp r7, #0 + beq _022E99A0 + ldrb r2, [r0, #7] + cmp r2, #0xff + beq _022E99CC + ldr r2, _022E99EC ; =0x02353538 + ldr r2, [r2] + add r2, r2, #0xcc00 + ldrsh r3, [r2, #0xe4] + cmp r3, fp + ldreqsh r2, [r2, #0xe6] + cmpeq r2, r5 + beq _022E99CC +_022E99A0: + and r1, r1, #3 + cmp r1, #1 + ldreq r1, [r0, #0x10] + cmpeq r1, #0 + ldreq r0, [r0, #0xc] + cmpeq r0, #0 + streqh fp, [sl] + streqh r5, [sl, #2] + moveq r0, #1 + streq r0, [sp, #4] + beq _022E99D8 +_022E99CC: + add r6, r6, #1 +_022E99D0: + cmp r6, r8 + blt _022E9920 +_022E99D8: + mov r0, r4 + bl MemFree + ldr r0, [sp, #4] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E99EC: .word 0x02353538 + arm_func_end ov29_022E9844 + + arm_func_start ov29_022E99F0 +ov29_022E99F0: ; 0x022E99F0 + stmdb sp!, {r3, lr} + str r2, [sp] + ldr r2, _022E9A08 ; =0x02351844 + mov r3, #0x19 + bl ov29_022E9844 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9A08: .word 0x02351844 + arm_func_end ov29_022E99F0 + + arm_func_start ov29_022E9A0C +ov29_022E9A0C: ; 0x022E9A0C + stmdb sp!, {r3, lr} + str r2, [sp] + ldr r2, _022E9A24 ; =0x023517DC + mov r3, #0x19 + bl ov29_022E9844 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9A24: .word 0x023517DC + arm_func_end ov29_022E9A0C + + arm_func_start ov29_022E9A28 +ov29_022E9A28: ; 0x022E9A28 + stmdb sp!, {r3, lr} + str r2, [sp] + ldr r2, _022E9A40 ; =0x023518AC + mov r3, #0x31 + bl ov29_022E9844 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9A40: .word 0x023518AC + arm_func_end ov29_022E9A28 + + arm_func_start TickStatusTurnCounter +TickStatusTurnCounter: ; 0x022E9A44 + ldrb r1, [r0] + cmp r1, #0x7f + moveq r0, r1 + bxeq lr + cmp r1, #0 + moveq r0, r1 + subne r1, r1, #1 + strneb r1, [r0] + andne r0, r1, #0xff + bx lr + arm_func_end TickStatusTurnCounter + + arm_func_start ov29_022E9A6C +ov29_022E9A6C: ; 0x022E9A6C + ldrh r2, [r0] + ldr r1, _022E9A98 ; =0x00007530 + cmp r2, r1 + moveq r0, r2 + bxeq lr + cmp r2, #0 + moveq r0, r2 + subne r1, r2, #1 + strneh r1, [r0] + ldrneh r0, [r0] + bx lr + .align 2, 0 +_022E9A98: .word 0x00007530 + arm_func_end ov29_022E9A6C + + arm_func_start ov29_022E9A9C +ov29_022E9A9C: ; 0x022E9A9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sb, r1 + ldr r8, [sb, #0xb4] + mov sl, r0 + mov r0, sb + mov r1, #1 + ldrb r4, [r8, #0x4c] + bl ov29_02300818 + cmp r0, #0 + beq _022E9B00 + ldr r0, _022E9CA0 ; =0x0235171C + mov r2, r4, lsl #2 + ldrsh r1, [r0, r2] + ldrsh r3, [sb, #4] + ldr r0, _022E9CA4 ; =0x0235171E + add r1, r1, r1, lsl #1 + add r1, r3, r1 + strh r1, [sl] + ldrsh r0, [r0, r2] + ldrsh r1, [sb, #6] + add r0, r0, r0, lsl #1 + add r0, r1, r0 + strh r0, [sl, #2] + b _022E9C98 +_022E9B00: + ldrsh r2, [r8, #0x5a] + mvn r0, #0 + cmp r2, r0 + ldreqsh r1, [r8, #0x5c] + cmpeq r1, r0 + bne _022E9C8C + ldr r0, _022E9CA8 ; =0x02353538 + ldrb r6, [r8, #0x4c] + ldr r1, [r0] + ldr r4, _022E9CAC ; =0x0235179C + add r0, r1, #0x3000 + ldrb r0, [r0, #0xe38] + ldr r3, _022E9CB0 ; =0x023517A0 + mov r5, r6, lsl #3 + cmp r0, #0 + ldrsh r0, [r3, r5] + ldr r2, _022E9CB4 ; =0x023517A2 + ldr r4, [r4, r6, lsl #3] + str r0, [sp, #0x14] + ldrsh r0, [r2, r5] + str r0, [sp, #0x10] + ldrsh r0, [sb, #4] + str r0, [sp, #0xc] + ldrsh r0, [sb, #6] + str r0, [sp, #8] + beq _022E9B80 + add r0, r1, #0x378 + add r0, r0, #0x12800 + str r0, [sp, #4] + mov r0, #0x14 + str r0, [sp] + b _022E9C44 +_022E9B80: + ldrb r0, [r8, #6] + cmp r0, #0 + bne _022E9BA4 + add r0, r1, #0x338 + add r0, r0, #0x12800 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp] + b _022E9C44 +_022E9BA4: + add r0, r1, #0x328 + add r0, r0, #0x12800 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp] + b _022E9C44 +_022E9BBC: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0xc] + ldrsh r2, [r4, #2] + mla fp, r3, r1, r0 + ldr r1, [sp, #0x10] + ldr r0, [sp, #8] + mov r6, #0 + mla r5, r2, r1, r0 + b _022E9C34 +_022E9BE0: + ldr r0, [sp, #4] + ldr r7, [r0, r6, lsl #2] + mov r0, r7 + bl EntityIsValid__022E95F4 + cmp r0, #0 + beq _022E9C30 + ldrsh r0, [r7, #4] + cmp r0, fp + ldreqsh r0, [r7, #6] + cmpeq r0, r5 + bne _022E9C30 + mov r2, #0 + mov r1, r7 + mov r0, sb + mov r3, r2 + bl ov29_0230175C + cmp r0, #1 + streqh fp, [sl] + streqh r5, [sl, #2] + beq _022E9C98 +_022E9C30: + add r6, r6, #1 +_022E9C34: + ldr r0, [sp] + cmp r6, r0 + blt _022E9BE0 + add r4, r4, #4 +_022E9C44: + ldrsh r3, [r4] + cmp r3, #0x63 + bne _022E9BBC + ldrb r1, [r8, #0x4c] + ldr r0, _022E9CA0 ; =0x0235171C + ldrsh r2, [sb, #4] + mov r1, r1, lsl #2 + ldrsh r1, [r0, r1] + ldr r0, _022E9CA4 ; =0x0235171E + add r1, r2, r1, lsl #1 + strh r1, [sl] + ldrb r1, [r8, #0x4c] + ldrsh r2, [sb, #6] + mov r1, r1, lsl #2 + ldrsh r0, [r0, r1] + add r0, r2, r0, lsl #1 + strh r0, [sl, #2] + b _022E9C98 +_022E9C8C: + strh r2, [sl] + ldrsh r0, [r8, #0x5c] + strh r0, [sl, #2] +_022E9C98: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E9CA0: .word 0x0235171C +_022E9CA4: .word 0x0235171E +_022E9CA8: .word 0x02353538 +_022E9CAC: .word 0x0235179C +_022E9CB0: .word 0x023517A0 +_022E9CB4: .word 0x023517A2 + arm_func_end ov29_022E9A9C + + arm_func_start ov29_022E9CB8 +ov29_022E9CB8: ; 0x022E9CB8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r1, _022E9F04 ; =0x0237C850 + ldr r0, _022E9F08 ; =0xFFFF000F + ldrh r2, [r1, #0x1a] + mov lr, #0 + and r2, r2, r0 + strh r2, [r1, #0x1a] + ldrh r2, [r1, #0x14] + bic r2, r2, #0x100 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + bic r2, r2, #0x200 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + bic r2, r2, #0xc00 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + bic r2, r2, #0x1000 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + bic r2, r2, #0x2000 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + orr r2, r2, #0x2000 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x14] + bic r2, r2, #0xc000 + strh r2, [r1, #0x14] + ldrh r2, [r1, #0x16] + and r2, r2, r0, asr #7 + strh r2, [r1, #0x16] + ldrh r2, [r1, #0x16] + bic r2, r2, #0x3e00 + strh r2, [r1, #0x16] + ldrh r2, [r1, #0x16] + bic r2, r2, #0xc000 + strh r2, [r1, #0x16] + ldrh r2, [r1, #0x16] + orr r2, r2, #0x4000 + strh r2, [r1, #0x16] + ldrh r2, [r1, #0x18] + and r0, r2, r0, asr #6 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x18] + bic r0, r0, #0xc00 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x18] + bic r0, r0, #0xf000 + strh r0, [r1, #0x18] + ldrh r0, [r1, #0x1a] + bic r0, r0, #1 + strh r0, [r1, #0x1a] + ldrh r0, [r1, #0x1a] + bic r0, r0, #2 + strh r0, [r1, #0x1a] + ldrh r0, [r1, #0x1a] + bic r0, r0, #4 + strh r0, [r1, #0x1a] +_022E9DA0: + mov r0, #0x48 + mul r5, lr, r0 + ldr r3, _022E9F0C ; =0x0237C888 + mov r8, #0x400 + ldr r2, _022E9F10 ; =0x02351628 + mov r1, #0x18 + mla r6, lr, r1, r2 + ldr r0, _022E9F14 ; =0x02351658 + add r4, r3, r5 + add r5, r0, r5 + mov ip, #0 + rsb r8, r8, #0 + mov r7, #0xc +_022E9DD4: + mul r3, ip, r7 + ldrh r2, [r4, r3] + add r1, r5, r3 + ldr r0, [r5, r3] + bic r2, r2, #0x100 + strh r2, [r4, r3] + ldrh r2, [r4, r3] + ldr sl, [r1, #4] + ldr sb, [r1, #8] + bic r1, r2, #0x200 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + mov r0, r0, lsl #0x1e + add r2, r4, r3 + bic r1, r1, #0xc00 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + mov sl, sl, lsl #0x1e + and sb, sb, r8, lsr #22 + bic r1, r1, #0x1000 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + bic r1, r1, #0x2000 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + orr r1, r1, #0x2000 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + bic r1, r1, #0xc000 + strh r1, [r4, r3] + ldrh r1, [r4, r3] + orr r0, r1, r0, lsr #16 + strh r0, [r4, r3] + ldrh r0, [r2, #2] + bic r0, r0, #0x3e00 + strh r0, [r2, #2] + ldrh r0, [r2, #2] + bic r0, r0, #0xc000 + strh r0, [r2, #2] + ldrh r0, [r2, #2] + orr r0, r0, sl, lsr #16 + strh r0, [r2, #2] + ldrh r0, [r2, #4] + and r0, r0, r8 + strh r0, [r2, #4] + ldrh r0, [r2, #4] + orr r0, r0, sb + strh r0, [r2, #4] + ldrh r0, [r2, #4] + bic r0, r0, #0xc00 + strh r0, [r2, #4] + ldrh r0, [r2, #4] + orr r0, r0, #0xc00 + strh r0, [r2, #4] + ldrh r3, [r2, #4] + mov r1, ip, lsl #2 + add r0, r6, ip, lsl #2 + bic r3, r3, #0xf000 + strh r3, [r2, #4] + ldrh r3, [r2, #6] + add ip, ip, #1 + ldrh r1, [r6, r1] + bic r3, r3, #1 + strh r3, [r2, #6] + ldrh r3, [r2, #6] + ldrh r0, [r0, #2] + cmp ip, #6 + bic r3, r3, #2 + strh r3, [r2, #6] + strh r1, [r2, #8] + strh r0, [r2, #0xa] + blt _022E9DD4 + add lr, lr, #1 + cmp lr, #2 + blt _022E9DA0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022E9F04: .word 0x0237C850 +_022E9F08: .word 0xFFFF000F +_022E9F0C: .word 0x0237C888 +_022E9F10: .word 0x02351628 +_022E9F14: .word 0x02351658 + arm_func_end ov29_022E9CB8 + + arm_func_start ov29_022E9F18 +ov29_022E9F18: ; 0x022E9F18 + stmdb sp!, {r3, lr} + ldr r0, _022E9F70 ; =0x000003E7 + ldr r1, _022E9F74 ; =0x0237C850 + mov r2, #0 + str r0, [r1, #4] + ldr r0, _022E9F78 ; =0x02353560 + str r2, [r1, #0x10] + strb r2, [r0, #2] + strh r2, [r1, #0x1c] + bl ov29_022E9CB8 + ldr r2, _022E9F7C ; =0x02353538 + mov r3, #1 + ldr r0, [r2] + ldr r1, _022E9F74 ; =0x0237C850 + add r0, r0, #0x1a000 + strb r3, [r0, #0x24c] + ldr r0, [r2] + mov r2, #0 + add r0, r0, #0x1a000 + strb r3, [r0, #0x24d] + str r2, [r1, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9F70: .word 0x000003E7 +_022E9F74: .word 0x0237C850 +_022E9F78: .word 0x02353560 +_022E9F7C: .word 0x02353538 + arm_func_end ov29_022E9F18 + + arm_func_start ov29_022E9F80 +ov29_022E9F80: ; 0x022E9F80 + ldr r2, _022E9F98 ; =0x02353560 + mov r3, #0 + strb r0, [r2] + str r1, [r2, #8] + str r3, [r2, #0xc] + bx lr + .align 2, 0 +_022E9F98: .word 0x02353560 + arm_func_end ov29_022E9F80 + + arm_func_start ov29_022E9F9C +ov29_022E9F9C: ; 0x022E9F9C + ldr r0, _022E9FBC ; =0x02353560 + ldrb r1, [r0, #1] + cmp r1, #0 + ldrneb r2, [r0, #5] + movne r1, #0 + strneb r2, [r0, #6] + strneb r1, [r0, #1] + bx lr + .align 2, 0 +_022E9FBC: .word 0x02353560 + arm_func_end ov29_022E9F9C + + arm_func_start ov29_022E9FC0 +ov29_022E9FC0: ; 0x022E9FC0 + ldr r0, _022E9FCC ; =0x02353560 + ldrb r0, [r0, #3] + bx lr + .align 2, 0 +_022E9FCC: .word 0x02353560 + arm_func_end ov29_022E9FC0 + + arm_func_start ov29_022E9FD0 +ov29_022E9FD0: ; 0x022E9FD0 + ldr r1, _022E9FDC ; =0x02353560 + strb r0, [r1, #3] + bx lr + .align 2, 0 +_022E9FDC: .word 0x02353560 + arm_func_end ov29_022E9FD0 + + arm_func_start AdvanceFrame +AdvanceFrame: ; 0x022E9FE0 + stmdb sp!, {r3, lr} + ldr r1, _022EA004 ; =0x02353560 + ldrb r1, [r1, #3] + cmp r1, #0 + beq _022E9FFC + bl ov29_022EA2A4 + ldmia sp!, {r3, pc} +_022E9FFC: + bl ov29_022EA324 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EA004: .word 0x02353560 + arm_func_end AdvanceFrame + + arm_func_start ov29_022EA008 +ov29_022EA008: ; 0x022EA008 + stmdb sp!, {r3, lr} + ldr r0, _022EA290 ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, _022EA294 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA27C + bl ov29_0234B854 + bl ov29_022E886C + ldr r0, _022EA290 ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + beq _022EA0F8 + mov r0, #1 + bl ov29_022E2EC4 + ldr r1, _022EA290 ; =0x02353538 + ldr r0, _022EA298 ; =0x0001A224 + ldr ip, [r1] + add r1, r0, #2 + add r2, ip, #0x1a000 + ldrsh r3, [ip, r1] + ldr r1, [r2, #0x230] + ldrsh r0, [ip, r0] + sub r1, r3, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, #1 + mov r3, #0 + bl sub_02051E20 + ldr r1, _022EA290 ; =0x02353538 + ldr r0, [r1] + add ip, r0, #0x1a000 + ldrb r0, [ip, #0x251] + cmp r0, #0 + beq _022EA0DC + mov r0, #2 + strb r0, [ip, #0x23c] + ldr r0, _022EA298 ; =0x0001A224 + ldr ip, [r1] + add r1, r0, #2 + add r2, ip, #0x1a000 + ldrsh r3, [ip, r1] + ldr r1, [r2, #0x230] + mov r2, #0 + sub r1, r3, r1 + mov r1, r1, lsl #0x10 + ldrsh r0, [ip, r0] + mov r3, r2 + mov r1, r1, asr #0x10 + bl sub_02051E20 + b _022EA0F8 +_022EA0DC: + mov r0, #0 + mov lr, #3 + mov r1, r0 + mov r2, r0 + mov r3, r0 + strb lr, [ip, #0x23c] + bl sub_02051E20 +_022EA0F8: + bl ov29_0230473C + bl ov29_022E1854 + bl ov29_022E335C + ldr r0, _022EA290 ; =0x02353538 + ldr r1, [r0] + ldrsh r0, [r1, #0x1c] + cmp r0, #0x64 + addlt r0, r0, #1 + strlth r0, [r1, #0x1c] + ldr r0, _022EA29C ; =0x0237C850 + ldr r0, [r0, #4] + cmp r0, #0 + cmpne r0, #3 + cmpne r0, #0xc + bne _022EA140 + mov r0, #0 + bl ov29_02339A24 + b _022EA154 +_022EA140: + bl sub_0204AEA0 + cmp r0, #3 + bne _022EA154 + mov r0, #1 + bl ov29_02339A24 +_022EA154: + bl ov29_022EA64C + bl ov29_022EA80C + bl ov29_02335A10 + ldr r1, _022EA294 ; =0x02353560 + ldrb r0, [r1] + cmp r0, #0 + beq _022EA1D0 + ldr r0, _022EA290 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r2, [r0, #0x24a] + cmp r2, #0 + beq _022EA1B8 + bl ov29_022DE11C + cmp r0, #0 + beq _022EA1D0 + ldr r0, _022EA290 ; =0x02353538 + mov r2, #0 + ldr r0, [r0] + ldr r1, _022EA294 ; =0x02353560 + add r0, r0, #0x1a000 + strb r2, [r0, #0x24a] + ldr r0, [r1, #8] + str r0, [r1, #0xc] + b _022EA1D0 +_022EA1B8: + ldr r2, [r1, #0xc] + sub r2, r2, #1 + str r2, [r1, #0xc] + cmp r2, #0 + movle r1, #1 + strleb r1, [r0, #0x24a] +_022EA1D0: + ldr r0, _022EA290 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x24a] + cmp r0, #0 + beq _022EA214 + bl ov29_0234B4F4 + cmp r0, #3 + beq _022EA214 + ldr r1, _022EA290 ; =0x02353538 + ldr r0, _022EA294 ; =0x02353560 + ldr r1, [r1] + ldrb r3, [r0, #2] + add r2, r1, #0x1e0 + mov r0, #0xa0 + mov r1, #0x20 + bl ov29_022DE134 +_022EA214: + ldr r1, _022EA290 ; =0x02353538 + ldr r0, _022EA2A0 ; =0x0001A21C + ldr r2, [r1] + add r1, r0, #2 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + bl GetTile + cmp r0, #0 + beq _022EA260 + ldr r2, _022EA290 ; =0x02353538 + ldrb r1, [r0, #7] + ldr r2, [r2] + cmp r2, #0 + addne r0, r2, #0xc4 + addne r0, r0, #0x4000 + add r2, r2, #0x21c + moveq r0, #0 + add r2, r2, #0x1a000 + bl ov29_022ED800 +_022EA260: + bl ov29_02338AC4 + bl ov29_022E8C10 + ldr r0, _022EA290 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x224 + add r0, r0, #0x1a000 + bl ov29_022DD8B4 +_022EA27C: + ldr r0, _022EA29C ; =0x0237C850 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EA290: .word 0x02353538 +_022EA294: .word 0x02353560 +_022EA298: .word 0x0001A224 +_022EA29C: .word 0x0237C850 +_022EA2A0: .word 0x0001A21C + arm_func_end ov29_022EA008 + + arm_func_start ov29_022EA2A4 +ov29_022EA2A4: ; 0x022EA2A4 + stmdb sp!, {r3, lr} + ldr r0, _022EA318 ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + bne _022EA2C0 + bl ov29_022DDEF8 + ldmia sp!, {r3, pc} +_022EA2C0: + ldr r0, _022EA31C ; =0x02353560 + ldrb r0, [r0, #6] + cmp r0, #0 + ldrne r0, _022EA320 ; =0x0237C850 + ldrne r1, [r0, #0x10] + addne r1, r1, #1 + strne r1, [r0, #0x10] + bl ov29_022DDEF8 + ldr r0, _022EA318 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + strb r1, [r0, #0x248] + bl ov29_0233A290 + ldr r0, _022EA31C ; =0x02353560 + ldrb r0, [r0, #6] + cmp r0, #0 + ldrne r0, _022EA320 ; =0x0237C850 + ldrne r1, [r0, #0x10] + subne r1, r1, #1 + strne r1, [r0, #0x10] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EA318: .word 0x02353538 +_022EA31C: .word 0x02353560 +_022EA320: .word 0x0237C850 + arm_func_end ov29_022EA2A4 + + arm_func_start ov29_022EA324 +ov29_022EA324: ; 0x022EA324 + stmdb sp!, {r3, lr} + ldr r0, _022EA368 ; =0x02353560 + ldrb r0, [r0, #6] + cmp r0, #0 + ldrne r0, _022EA36C ; =0x0237C850 + ldrne r1, [r0, #0x10] + addne r1, r1, #1 + strne r1, [r0, #0x10] + bl ov29_022DDEF8 + ldr r0, _022EA368 ; =0x02353560 + ldrb r0, [r0, #6] + cmp r0, #0 + ldrne r0, _022EA36C ; =0x0237C850 + ldrne r1, [r0, #0x10] + subne r1, r1, #1 + strne r1, [r0, #0x10] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EA368: .word 0x02353560 +_022EA36C: .word 0x0237C850 + arm_func_end ov29_022EA324 + + arm_func_start ov29_022EA370 +ov29_022EA370: ; 0x022EA370 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + ldr r4, _022EA3B0 ; =0x02353560 + b _022EA3A4 +_022EA384: + ldrb r0, [r4, #3] + cmp r0, #0 + mov r0, r5 + beq _022EA39C + bl ov29_022EA2A4 + b _022EA3A0 +_022EA39C: + bl ov29_022EA324 +_022EA3A0: + sub r6, r6, #1 +_022EA3A4: + cmp r6, #0 + bne _022EA384 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EA3B0: .word 0x02353560 + arm_func_end ov29_022EA370 + + arm_func_start ov29_022EA3B4 +ov29_022EA3B4: ; 0x022EA3B4 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022EA3F0 ; =0x0237C694 + ldr r5, _022EA3F4 ; =0x02353560 + mov r6, r0 +_022EA3C4: + ldrb r0, [r5, #3] + cmp r0, #0 + mov r0, r6 + beq _022EA3DC + bl ov29_022EA2A4 + b _022EA3E0 +_022EA3DC: + bl ov29_022EA324 +_022EA3E0: + ldrh r0, [r4] + tst r0, #0xf0 + bne _022EA3C4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EA3F0: .word 0x0237C694 +_022EA3F4: .word 0x02353560 + arm_func_end ov29_022EA3B4 + + arm_func_start ov29_022EA3F8 +ov29_022EA3F8: ; 0x022EA3F8 + ldr ip, _022EA404 ; =ov29_022DE638 + mov r0, #0x100 + bx ip + .align 2, 0 +_022EA404: .word ov29_022DE638 + arm_func_end ov29_022EA3F8 + + arm_func_start ov29_022EA408 +ov29_022EA408: ; 0x022EA408 + ldr r0, _022EA414 ; =0x0237C850 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022EA414: .word 0x0237C850 + arm_func_end ov29_022EA408 + + arm_func_start ov29_022EA418 +ov29_022EA418: ; 0x022EA418 + ldr r1, _022EA424 ; =0x02353560 + strb r0, [r1, #4] + bx lr + .align 2, 0 +_022EA424: .word 0x02353560 + arm_func_end ov29_022EA418 + + arm_func_start ov29_022EA428 +ov29_022EA428: ; 0x022EA428 + stmdb sp!, {r4, lr} + ldr r1, _022EA620 ; =0x0237C850 + mov r4, r0 + ldr r0, [r1, #4] + cmp r4, r0 + ldmeqia sp!, {r4, pc} + cmp r4, #0xd + bgt _022EA48C + cmp r4, #0 + addge pc, pc, r4, lsl #2 + b _022EA614 +_022EA454: ; jump table + b _022EA4B4 ; case 0 + b _022EA498 ; case 1 + b _022EA540 ; case 2 + b _022EA4E0 ; case 3 + b _022EA540 ; case 4 + b _022EA570 ; case 5 + b _022EA508 ; case 6 + b _022EA524 ; case 7 + b _022EA5C4 ; case 8 + b _022EA5E0 ; case 9 + b _022EA614 ; case 10 + b _022EA5FC ; case 11 + b _022EA614 ; case 12 + b _022EA594 ; case 13 +_022EA48C: + ldr r0, _022EA624 ; =0x000003E7 + cmp r4, r0 + b _022EA614 +_022EA498: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + b _022EA614 +_022EA4B4: + ldr r0, _022EA628 ; =0x02353560 + ldrb r1, [r0, #3] + cmp r1, #0 + beq _022EA614 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _022EA614 + bl ov29_02339CE8 + mov r0, #0 + bl ov29_02339FF4 + b _022EA614 +_022EA4E0: + ldr r0, _022EA628 ; =0x02353560 + ldrb r1, [r0, #3] + cmp r1, #0 + beq _022EA614 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _022EA614 + mov r0, #1 + bl ov29_02339FF4 + b _022EA614 +_022EA508: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + b _022EA614 +_022EA524: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + b _022EA614 +_022EA540: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + bl sub_0204AEC0 + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0233A248 + b _022EA614 +_022EA570: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + mov r0, #0 + bl ov29_0233A248 + b _022EA614 +_022EA594: + ldr r0, _022EA628 ; =0x02353560 + ldrb r1, [r0, #3] + cmp r1, #0 + beq _022EA5BC + ldrb r0, [r0, #4] + cmp r0, #0 + bne _022EA5BC + bl ov29_02339CE8 + mov r0, #1 + bl ov29_02339FF4 +_022EA5BC: + mov r4, #0 + b _022EA614 +_022EA5C4: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + b _022EA614 +_022EA5E0: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 + b _022EA614 +_022EA5FC: + ldr r0, _022EA628 ; =0x02353560 + ldrb r0, [r0, #3] + cmp r0, #0 + beq _022EA614 + mov r0, #0 + bl ov29_0234B1A4 +_022EA614: + ldr r0, _022EA620 ; =0x0237C850 + str r4, [r0, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_022EA620: .word 0x0237C850 +_022EA624: .word 0x000003E7 +_022EA628: .word 0x02353560 + arm_func_end ov29_022EA428 + + arm_func_start ov29_022EA62C +ov29_022EA62C: ; 0x022EA62C + ldr r1, _022EA644 ; =0x0237C850 + mov r2, #0xa + ldr ip, _022EA648 ; =ov29_0234B1A4 + mov r0, #0 + str r2, [r1, #4] + bx ip + .align 2, 0 +_022EA644: .word 0x0237C850 +_022EA648: .word ov29_0234B1A4 + arm_func_end ov29_022EA62C + + arm_func_start ov29_022EA64C +ov29_022EA64C: ; 0x022EA64C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r0, _022EA708 ; =0x0237C850 + mov r2, #0 + ldr r1, [r0, #8] + adds r1, r1, #1 + str r1, [r0, #8] + movmi r1, #0 + strmi r1, [r0, #8] + ldr r0, _022EA708 ; =0x0237C850 + ldr r1, [r0, #8] + cmp r1, #0xc + movge r1, #0 + strge r1, [r0, #8] + ldr r0, _022EA708 ; =0x0237C850 + mov r1, #0xb + ldr r3, [r0, #8] + mov r0, r3, asr #1 + add r0, r3, r0, lsr #30 + mov r0, r0, asr #2 + add ip, r0, r0, lsl #1 + str r2, [sp] + str r1, [sp, #4] + ldr r0, _022EA70C ; =0x02353540 + ldr r1, _022EA710 ; =0x020AFC4C + ldr r2, [r0] + ldr r0, [r1] + add r1, r2, ip, lsl #8 + mov r2, #0x1e8 + mov r3, #0x100 + mov r4, ip, lsl #8 + bl sub_0201BAC8 + mov r0, #0 + str r0, [sp] + mov r1, #0xb + str r1, [sp, #4] + ldr r0, _022EA70C ; =0x02353540 + ldr r1, _022EA710 ; =0x020AFC4C + ldr ip, [r0] + add r3, r4, #0x100 + ldr r0, [r1] + add r1, ip, r3 + ldr r2, _022EA714 ; =0x000001EA + mov r3, #0x200 + bl sub_0201BAC8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022EA708: .word 0x0237C850 +_022EA70C: .word 0x02353540 +_022EA710: .word 0x020AFC4C +_022EA714: .word 0x000001EA + arm_func_end ov29_022EA64C + + arm_func_start ov29_022EA718 +ov29_022EA718: ; 0x022EA718 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + movs sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022EA7FC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r6, #0 + mov fp, #0x29 + ldr r5, _022EA800 ; =0x0237C850 + ldr r4, _022EA804 ; =0x02353560 + b _022EA78C +_022EA75C: + ldrsh r0, [r5, #0x1c] + cmp r0, #0 + beq _022EA794 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _022EA780 + mov r0, fp + bl ov29_022EA2A4 + b _022EA788 +_022EA780: + mov r0, #0x29 + bl ov29_022EA324 +_022EA788: + add r6, r6, #1 +_022EA78C: + cmp r6, #0x14 + blt _022EA75C +_022EA794: + ldr r1, _022EA800 ; =0x0237C850 + mov r0, #0x3c + str sl, [r1, #0x20] + strb r8, [r1, #0x24] + strh r0, [r1, #0x1c] + str sb, [r1, #0x28] + ldrh r2, [sb, #0x26] + mov r0, #0 + cmp r7, #0 + str r2, [r1, #0x2c] + str r0, [r1, #0x30] + str r0, [r1, #0x34] + bge _022EA7F4 + ldr r0, _022EA808 ; =0xFFFFFC19 + cmp sl, r0 + movlt r0, #6 + strlth r0, [r1, #0x1e] + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sl, #0 + movge r0, #0xa + strgeh r0, [r1, #0x1e] + movlt r0, #3 + strlth r0, [r1, #0x1e] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022EA7F4: + strh r7, [r1, #0x1e] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EA7FC: .word 0x02353538 +_022EA800: .word 0x0237C850 +_022EA804: .word 0x02353560 +_022EA808: .word 0xFFFFFC19 + arm_func_end ov29_022EA718 + + arm_func_start ov29_022EA80C +ov29_022EA80C: ; 0x022EA80C + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r0, _022EA95C ; =0x0237C850 + ldrsh r1, [r0, #0x1c] + cmp r1, #0 + beq _022EA954 + ldr r0, [r0, #0x28] + cmp r0, #0 + moveq r0, #0 + beq _022EA848 + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_022EA848: + cmp r0, #0 + ldreq r0, _022EA95C ; =0x0237C850 + moveq r1, #0 + streqh r1, [r0, #0x1c] + beq _022EA954 + ldr r3, _022EA95C ; =0x0237C850 + ldr r5, [r3, #0x28] + ldr r1, [r3, #0x2c] + ldrh r0, [r5, #0x26] + cmp r1, r0 + movne r0, #0 + strneh r0, [r3, #0x1c] + bne _022EA954 + ldrsh r2, [r3, #0x1c] + ldr r1, _022EA960 ; =0x02353538 + ldr r0, _022EA964 ; =0x0001A224 + sub r2, r2, #1 + strh r2, [r3, #0x1c] + ldr r4, [r3, #0x34] + add r2, r0, #2 + sub lr, r4, #0x2e + str lr, [r3, #0x34] + ldr r4, [r5, #0xb4] + ldr ip, [r1] + add r1, r4, #0x100 + ldrsh r5, [r1, #0x82] + ldrsh r4, [r1, #0x84] + ldr r1, [r3, #0x30] + ldrsh r0, [ip, r0] + add r5, r5, r1, asr #8 + ldrsh r1, [ip, r2] + add r4, r4, lr, asr #8 + sub r2, r4, #0x18 + sub r4, r5, r0 + mvn r0, #0x1f + cmp r4, r0 + sub r5, r2, r1 + addge r0, r0, #0x18 + cmpge r5, r0 + blt _022EA954 + cmp r4, #0xff + cmplt r5, #0xc0 + bge _022EA954 + ldrsh r1, [r3, #0x1c] + mov r0, #0xff + cmp r1, #0x1f + bge _022EA910 + rsb r0, r1, r1, lsl #8 + mov r1, #0x1f + bl DivideInt +_022EA910: + ldr ip, _022EA95C ; =0x0237C850 + mov r1, r4, lsl #0x10 + ldrh r4, [ip, #0x1e] + mov r2, r5, lsl #0x10 + mov r3, r0, lsl #0x10 + str r4, [sp] + ldr r4, [ip, #0x20] + mov r0, r1, asr #0x10 + mov r1, r4, lsl #0x10 + mov r1, r1, asr #0x10 + str r1, [sp, #4] + ldrb r4, [ip, #0x24] + mov r1, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, #0xff + str r4, [sp, #8] + bl ov29_02335F40 +_022EA954: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022EA95C: .word 0x0237C850 +_022EA960: .word 0x02353538 +_022EA964: .word 0x0001A224 + arm_func_end ov29_022EA80C + + arm_func_start ov29_022EA968 +ov29_022EA968: ; 0x022EA968 + orr r1, r0, #1 + ldr r0, _022EA97C ; =0x02353570 + bic r1, r1, #0xff000000 + str r1, [r0, #8] + bx lr + .align 2, 0 +_022EA97C: .word 0x02353570 + arm_func_end ov29_022EA968 + + arm_func_start GenerateDungeonRngSeed +GenerateDungeonRngSeed: ; 0x022EA980 + ldr r2, _022EA9C4 ; =0x02353570 + mov r1, #0x10000 + ldr r3, [r2, #8] + ldr r0, _022EA9C8 ; =0x5D588B65 + rsb r1, r1, #0 + mul ip, r3, r0 + add ip, ip, #1 + mul r0, ip, r0 + add r3, r0, #1 + mov r0, ip, lsr #0x10 + mov r0, r0, lsl #0x10 + and r1, r3, r1 + orr r0, r1, r0, lsr #16 + bic r0, r0, #0xff000000 + str r3, [r2, #8] + orr r0, r0, #1 + bx lr + .align 2, 0 +_022EA9C4: .word 0x02353570 +_022EA9C8: .word 0x5D588B65 + arm_func_end GenerateDungeonRngSeed + + arm_func_start GetDungeonRngPreseed +GetDungeonRngPreseed: ; 0x022EA9CC + ldr r0, _022EA9D8 ; =0x02353570 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_022EA9D8: .word 0x02353570 + arm_func_end GetDungeonRngPreseed + + arm_func_start SetDungeonRngPreseed +SetDungeonRngPreseed: ; 0x022EA9DC + ldr r1, _022EA9E8 ; =0x02353570 + str r0, [r1, #8] + bx lr + .align 2, 0 +_022EA9E8: .word 0x02353570 + arm_func_end SetDungeonRngPreseed + + arm_func_start InitDungeonRng +InitDungeonRng: ; 0x022EA9EC + ldr r1, _022EAA18 ; =0x02353570 + orr r2, r0, #1 + str r2, [r1, #0xc] + mov r2, #0 + str r2, [r1, #4] + ldr r1, _022EAA1C ; =0x02353584 +_022EAA04: + str r0, [r1, r2, lsl #2] + add r2, r2, #1 + cmp r2, #5 + blt _022EAA04 + bx lr + .align 2, 0 +_022EAA18: .word 0x02353570 +_022EAA1C: .word 0x02353584 + arm_func_end InitDungeonRng + + arm_func_start DungeonRand16Bit +DungeonRand16Bit: ; 0x022EAA20 + stmdb sp!, {r3, lr} + ldr r1, _022EAA88 ; =0x02353570 + ldrb r0, [r1] + cmp r0, #0 + ldr r0, _022EAA8C ; =0x5D588B65 + beq _022EAA5C + ldr lr, [r1, #0x10] + ldr r3, _022EAA90 ; =0x02353584 + ldr r1, _022EAA94 ; =0x00269EC3 + ldr r2, [r3, lr, lsl #2] + umull ip, r0, r2, r0 + adds r1, ip, r1 + mov r0, r1, lsl #0x10 + str r1, [r3, lr, lsl #2] + b _022EAA80 +_022EAA5C: + ldr r2, [r1, #4] + add r2, r2, #1 + str r2, [r1, #4] + ldr r2, [r1, #0xc] + mul r0, r2, r0 + add r2, r0, #1 + mov r0, r2, lsr #0x10 + mov r0, r0, lsl #0x10 + str r2, [r1, #0xc] +_022EAA80: + mov r0, r0, lsr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EAA88: .word 0x02353570 +_022EAA8C: .word 0x5D588B65 +_022EAA90: .word 0x02353584 +_022EAA94: .word 0x00269EC3 + arm_func_end DungeonRand16Bit + + arm_func_start DungeonRandInt +DungeonRandInt: ; 0x022EAA98 + stmdb sp!, {r4, lr} + mov r4, r0 + bl DungeonRand16Bit + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mul r0, r1, r4 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4, pc} + arm_func_end DungeonRandInt + + arm_func_start DungeonRandRange +DungeonRandRange: ; 0x022EAAC0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, r4 + ldmeqia sp!, {r3, r4, r5, pc} + bge _022EAAFC + bl DungeonRand16Bit + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + sub r0, r4, r5 + mul r0, r1, r0 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + add r0, r5, r0, lsr #16 + ldmia sp!, {r3, r4, r5, pc} +_022EAAFC: + bl DungeonRand16Bit + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + sub r0, r5, r4 + mul r0, r1, r0 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + add r0, r4, r0, lsr #16 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DungeonRandRange diff --git a/asm/overlay_29_022EAB50.s b/asm/overlay_29_022EAB50.s index 29e128b8..c7396422 100644 --- a/asm/overlay_29_022EAB50.s +++ b/asm/overlay_29_022EAB50.s @@ -2102,118455 +2102,3 @@ _022EC5DC: _022EC600: .word 0x02353538 _022EC604: .word 0x02352284 arm_func_end RunLeaderTurn - - arm_func_start EntityIsValid__022EC608 -EntityIsValid__022EC608: ; 0x022EC608 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022EC608 - - arm_func_start ov29_022EC62C -ov29_022EC62C: ; 0x022EC62C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r0 - bl GetLeader - cmp r6, r0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r7, _022EC6D8 ; =0x02353538 - ldr r1, [r7] - ldrb r0, [r1, #0x10] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - strb r4, [r1, #0x10] - mov sb, r4 - mov r8, r4 - b _022EC6CC -_022EC668: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__022EC608 - cmp r0, #0 - cmpne r6, r5 - beq _022EC6C8 - ldr r0, [r5, #0xb4] - ldrh r0, [r0] - tst r0, #0x8000 - beq _022EC6C8 - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r5 - mov r1, sb - bl RunMonsterAi - mov r0, r5 - bl ExecuteMonsterAction - bl ov29_022EF9C8 - mov r0, r8 - bl TryForcedLoss -_022EC6C8: - add r4, r4, #1 -_022EC6CC: - cmp r4, #0x14 - blt _022EC668 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EC6D8: .word 0x02353538 - arm_func_end ov29_022EC62C - - arm_func_start TrySpawnMonsterAndActivatePlusMinus -TrySpawnMonsterAndActivatePlusMinus: ; 0x022EC6DC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _022EC7E0 ; =0x02353538 - ldr r1, _022EC7E4 ; =0x023522B6 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x80] - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl TrySpawnMonsterAndTickSpawnCounter - ldr r4, _022EC7E0 ; =0x02353538 - mov r8, #0 - ldr r0, [r4] - mov fp, #1 - add r0, r0, #0x3000 - strb r8, [r0, #0xe34] - ldr r0, [r4] - mov r7, r8 - add r0, r0, #0x3000 - strb r8, [r0, #0xe35] - ldr r0, [r4] - mov r6, fp - add r0, r0, #0x3000 - strb r8, [r0, #0xe36] - ldr r0, [r4] - mov r5, fp - add r0, r0, #0x3000 - strb r8, [r0, #0xe37] -_022EC750: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__022EC608 - cmp r0, #0 - beq _022EC7C8 - ldr r0, [sb, #0xb4] - mov r1, #0x3f - strb r7, [r0, #0x152] - ldrb r0, [r0, #6] - cmp r0, #0 - moveq sl, fp - mov r0, sb - movne sl, r7 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - mov r1, #0x38 - addne r0, r0, sl - addne r0, r0, #0x3000 - strneb r6, [r0, #0xe36] - mov r0, sb - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - addne r0, r0, sl - addne r0, r0, #0x3000 - strneb r5, [r0, #0xe34] -_022EC7C8: - add r8, r8, #1 - cmp r8, #0x14 - blt _022EC750 - mov r0, #0 - bl TryForcedLoss - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EC7E0: .word 0x02353538 -_022EC7E4: .word 0x023522B6 - arm_func_end TrySpawnMonsterAndActivatePlusMinus - - arm_func_start IsFloorOver -IsFloorOver: ; 0x022EC7E8 - stmdb sp!, {r3, lr} - ldr r0, _022EC858 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - bl GetLeader - cmp r0, #0 - ldreq r1, _022EC858 ; =0x02353538 - moveq r0, #1 - ldreq r1, [r1] - streqb r0, [r1, #0x758] - ldmeqia sp!, {r3, pc} - ldr r0, _022EC858 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #6] - cmp r0, #1 - moveq r0, #2 - streqb r0, [r1, #0x758] - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r0, #2 - moveq r0, #2 - streqb r0, [r1, #0x758] - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EC858: .word 0x02353538 - arm_func_end IsFloorOver - - arm_func_start ov29_022EC85C -ov29_022EC85C: ; 0x022EC85C - stmdb sp!, {r3, lr} - bl GetForcedLossReason - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - bl IsFloorOver - ldmia sp!, {r3, pc} - arm_func_end ov29_022EC85C - - arm_func_start ov29_022EC878 -ov29_022EC878: ; 0x022EC878 - mov r2, #0 - strb r2, [r0] - strb r2, [r0, #1] - strb r2, [r0, #2] - strb r2, [r0, #3] - strb r2, [r0, #4] - ldr r1, _022EC8A4 ; =0x02353598 - strb r2, [r0, #5] - mov r0, #1 - strb r0, [r1] - bx lr - .align 2, 0 -_022EC8A4: .word 0x02353598 - arm_func_end ov29_022EC878 - - arm_func_start ov29_022EC8A8 -ov29_022EC8A8: ; 0x022EC8A8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - mov r5, r1 - mov r0, r2 - mov r1, #0x30 - mov r4, r3 - bl DivideInt - mov r3, r1, lsl #1 - and r0, r3, #0xff - mov r2, r0, lsr #1 - ldr r1, _022EC998 ; =0x02352390 - mov r0, #0xc0 - strb r3, [r6, #4] - add r2, r2, #1 - strb r2, [r6, #2] - add r4, r4, #2 - smlabb r5, r5, r0, r1 - b _022EC96C -_022EC8F0: - strb r4, [r6, #3] - mov r8, #0x63 - ldr r7, _022EC99C ; =0x02353538 - b _022EC93C -_022EC900: - ldrb r1, [r6, #3] - mov r0, r8 - sub r1, r1, #1 - strb r1, [r6, #3] - ldrb r1, [r6, #5] - eor r1, r1, #1 - strb r1, [r6, #5] - ldrb r3, [r6, #4] - and r2, r1, #0xff - ldr r1, [r7] - add r2, r3, r2 - ldr r2, [r5, r2, lsl #2] - add r1, r1, #0x1a000 - str r2, [r1, #0x230] - bl AdvanceFrame -_022EC93C: - ldrb r0, [r6, #3] - cmp r0, #0 - bne _022EC900 - ldrb r0, [r6, #4] - cmp r0, #0 - subne r0, r0, #2 - strneb r0, [r6, #4] - mov r0, #0 - strb r0, [r6, #5] - ldrb r0, [r6, #2] - sub r0, r0, #1 - strb r0, [r6, #2] -_022EC96C: - ldrb r0, [r6, #2] - cmp r0, #0 - bne _022EC8F0 - ldr r0, _022EC99C ; =0x02353538 - mov r2, #0 - ldr r0, [r0] - ldr r1, _022EC9A0 ; =0x02353598 - add r0, r0, #0x1a000 - str r2, [r0, #0x230] - strb r2, [r1] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EC998: .word 0x02352390 -_022EC99C: .word 0x02353538 -_022EC9A0: .word 0x02353598 - arm_func_end ov29_022EC8A8 - - arm_func_start ov29_022EC9A4 -ov29_022EC9A4: ; 0x022EC9A4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r3, #0xc - smulbb r3, r1, r3 - ldr r1, _022ECAD8 ; =0x022C6320 - mov r6, r0 - ldrb r4, [r1, r3] - mov r5, r2 - cmp r4, #5 - beq _022ECA28 - cmp r5, #0 - bne _022EC9E0 - ldr r1, _022ECADC ; =0x00000BFD - bl LogMessageByIdWithPopupCheckUser - b _022ECA18 -_022EC9E0: - cmp r5, #1 - bne _022EC9F4 - ldr r1, _022ECAE0 ; =0x00000BFE - bl LogMessageByIdWithPopupCheckUser - b _022ECA18 -_022EC9F4: - cmp r5, #2 - bne _022ECA08 - ldr r1, _022ECAE4 ; =0x00000BFF - bl LogMessageByIdWithPopupCheckUser - b _022ECA18 -_022ECA08: - cmp r5, #3 - bne _022ECA18 - mov r1, #0xc00 - bl LogMessageByIdWithPopupCheckUser -_022ECA18: - mov r0, r4 - mov r1, #0 - bl ov29_022E5DBC - b _022ECAD0 -_022ECA28: - bl ov29_022EAEF0 - mov r4, r0 - cmp r5, #0 - bne _022ECA48 - ldr r1, _022ECAE8 ; =0x00000C01 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022ECA8C -_022ECA48: - cmp r5, #1 - bne _022ECA60 - ldr r1, _022ECAEC ; =0x00000C02 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022ECA8C -_022ECA60: - cmp r5, #2 - bne _022ECA78 - ldr r1, _022ECAF0 ; =0x00000C03 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022ECA8C -_022ECA78: - cmp r5, #3 - bne _022ECA8C - ldr r1, _022ECAF4 ; =0x00000C04 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_022ECA8C: - add r0, sp, #0 - bl ov29_022EC878 - ldr r0, _022ECAF8 ; =0x02352380 - ldr r0, [r0, r5, lsl #2] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov29_022EAE14 - mov r0, r5, lsl #2 - add r0, r0, #8 - mov r2, r0, lsl #0x10 - mov r3, r2, asr #0x10 - add r0, sp, #0 - mov r1, r5 - mov r2, #0x10 - bl ov29_022EC8A8 - mov r0, r4 - bl ov29_022EAE14 -_022ECAD0: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022ECAD8: .word 0x022C6320 -_022ECADC: .word 0x00000BFD -_022ECAE0: .word 0x00000BFE -_022ECAE4: .word 0x00000BFF -_022ECAE8: .word 0x00000C01 -_022ECAEC: .word 0x00000C02 -_022ECAF0: .word 0x00000C03 -_022ECAF4: .word 0x00000C04 -_022ECAF8: .word 0x02352380 - arm_func_end ov29_022EC9A4 - - arm_func_start ov29_022ECAFC -ov29_022ECAFC: ; 0x022ECAFC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - add r0, sp, #0 - bl ov29_022EC878 - mov r0, r4, lsl #2 - add r0, r0, #2 - mov r2, r0, lsl #0x10 - mov r3, r2, asr #0x10 - add r0, sp, #0 - mov r1, r4 - mov r2, #8 - bl ov29_022EC8A8 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ov29_022ECAFC - - arm_func_start ov29_022ECB38 -ov29_022ECB38: ; 0x022ECB38 - ldr r0, _022ECB44 ; =0x02353598 - ldrb r0, [r0] - bx lr - .align 2, 0 -_022ECB44: .word 0x02353598 - arm_func_end ov29_022ECB38 - - arm_func_start DecrementWindCounter -DecrementWindCounter: ; 0x022ECB48 - stmdb sp!, {r4, lr} - bl GetLeader - movs r4, r0 - moveq r0, #0 - beq _022ECB70 - ldr r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_022ECB70: - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _022ECD7C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r1, [r0, #0x84] - cmp r1, #0 - subgt r1, r1, #1 - strgth r1, [r0, #0x84] - ldr r0, _022ECD7C ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0x700 - ldrsh r0, [r0, #0x84] - cmp r0, #1 - movlt r0, #3 - strltb r0, [r1, #0x79a] - ldr r0, _022ECD7C ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x79a] - cmp r0, #0 - bne _022ECC2C - add r0, r1, #0x700 - ldrsh r0, [r0, #0x84] - cmp r0, #0xfa - ldmgeia sp!, {r4, pc} - bl ov29_022F2FE4 - mov r1, #1 - mov r0, r4 - mov r2, r1 - bl ov29_022F98B4 - mov r0, r4 - bl DisplayActions - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022ECD7C ; =0x02353538 - mov r0, r4 - ldr r2, [r1] - add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] - ldrb r2, [r2, #0x79a] - bl ov29_022EC9A4 - ldr r0, _022ECD7C ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x79a] - ldmia sp!, {r4, pc} -_022ECC2C: - cmp r0, #1 - bne _022ECC9C - add r0, r1, #0x700 - ldrsh r0, [r0, #0x84] - cmp r0, #0x96 - ldmgeia sp!, {r4, pc} - bl ov29_022F2FE4 - mov r1, #1 - mov r0, r4 - mov r2, r1 - bl ov29_022F98B4 - mov r0, r4 - bl DisplayActions - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022ECD7C ; =0x02353538 - mov r0, r4 - ldr r2, [r1] - add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] - ldrb r2, [r2, #0x79a] - bl ov29_022EC9A4 - ldr r0, _022ECD7C ; =0x02353538 - mov r1, #2 - ldr r0, [r0] - strb r1, [r0, #0x79a] - ldmia sp!, {r4, pc} -_022ECC9C: - cmp r0, #2 - add r0, r1, #0x700 - ldrsh r0, [r0, #0x84] - bne _022ECD0C - cmp r0, #0x32 - ldmgeia sp!, {r4, pc} - bl ov29_022F2FE4 - mov r1, #1 - mov r0, r4 - mov r2, r1 - bl ov29_022F98B4 - mov r0, r4 - bl DisplayActions - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022ECD7C ; =0x02353538 - mov r0, r4 - ldr r2, [r1] - add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] - ldrb r2, [r2, #0x79a] - bl ov29_022EC9A4 - ldr r0, _022ECD7C ; =0x02353538 - mov r1, #3 - ldr r0, [r0] - strb r1, [r0, #0x79a] - ldmia sp!, {r4, pc} -_022ECD0C: - cmp r0, #1 - ldmgeia sp!, {r4, pc} - bl ov29_022F2FE4 - mov r1, #1 - mov r0, r4 - mov r2, r1 - bl ov29_022F98B4 - mov r0, r4 - bl DisplayActions - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022ECD7C ; =0x02353538 - mov r0, r4 - ldr r2, [r1] - add r1, r2, #0x4000 - ldrsh r1, [r1, #0xd4] - ldrb r2, [r2, #0x79a] - bl ov29_022EC9A4 - ldr r0, _022ECD7C ; =0x02353538 - ldr r1, _022ECD80 ; =0x0000025D - ldr r3, [r0] - mov ip, #4 - mov r0, r4 - mov r2, r4 - strb ip, [r3, #0x79a] - bl HandleFaint - ldmia sp!, {r4, pc} - .align 2, 0 -_022ECD7C: .word 0x02353538 -_022ECD80: .word 0x0000025D - arm_func_end DecrementWindCounter - - arm_func_start ov29_022ECD84 -ov29_022ECD84: ; 0x022ECD84 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__022ECDC0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4] - cmp r0, #1 - ldmneia sp!, {r4, pc} - ldr r1, [r4, #0xb4] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _022ECDBC ; =0x0237C974 - bl ov29_02300164 - ldmia sp!, {r4, pc} - .align 2, 0 -_022ECDBC: .word 0x0237C974 - arm_func_end ov29_022ECD84 - - arm_func_start EntityIsValid__022ECDC0 -EntityIsValid__022ECDC0: ; 0x022ECDC0 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022ECDC0 - - arm_func_start ov29_022ECDE4 -ov29_022ECDE4: ; 0x022ECDE4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _022ECF34 ; =0x02353538 - mov r6, r1 - ldr r1, [r4] - mov sb, r0 - add r1, r1, #0x20c - mov r0, r6 - mov r8, r2 - mov r7, r3 - add r4, r1, #0x2c800 - mov r5, #0 - bl EntityIsValid__022ECDC0 - cmp r0, #0 - beq _022ECE28 - ldr r0, [r6] - cmp r0, #1 - ldreq r5, [r6, #0xb4] -_022ECE28: - cmp r5, #0 - ldr r6, [r8, #0xb4] - beq _022ECE44 - mov r0, r4 - mov r1, r5 - bl ov29_02300164 - b _022ECE6C -_022ECE44: - ldr r1, _022ECF38 ; =0x0237C974 - ldrb r0, [r1] - cmp r0, #0 - beq _022ECE60 - mov r0, r4 - bl Strcpy - b _022ECE6C -_022ECE60: - ldr r1, _022ECF3C ; =0x00000A41 - mov r0, r4 - bl GetStringFromFileVeneer -_022ECE6C: - mov r1, r6 - add r0, r4, #0x1e - bl ov29_02300164 - cmp r7, #0 - moveq r0, #0 - streqb r0, [r4, #0x3c] - beq _022ECE94 - mov r1, r7 - add r0, r4, #0x3c - bl Strcpy -_022ECE94: - mov r1, r8 - add r0, r4, #0x70 - bl ov29_022F89CC - strh sb, [r4, #0x5a] - ldrh r1, [r6, #0x62] - ldr r0, _022ECF40 ; =0x000003E7 - ldr r3, _022ECF34 ; =0x02353538 - strh r1, [r4, #0x5e] - ldrh r1, [r6, #0x64] - strh r1, [r4, #0x60] - ldrh r1, [r6, #0x66] - strh r1, [r4, #0x62] - ldr r1, [r6, #0x20] - str r1, [r4, #0x64] - ldrb r1, [r6, #0xa] - strb r1, [r4, #0x6e] - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r4, #0x68] - ldrb r1, [r6, #0x1a] - ldr r0, _022ECF38 ; =0x0237C974 - mov r2, #0x28 - strb r1, [r4, #0x6a] - ldrb r5, [r6, #0x1b] - mov r1, #0 - strb r5, [r4, #0x6b] - ldrb r5, [r6, #0x1c] - strb r5, [r4, #0x6c] - ldrb r5, [r6, #0x1d] - strb r5, [r4, #0x6d] - ldr r5, [r3] - ldrb r3, [r5, #0x748] - strb r3, [r4, #0x5c] - ldrb r3, [r5, #0x749] - strb r3, [r4, #0x5d] - bl Memset - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022ECF34: .word 0x02353538 -_022ECF38: .word 0x0237C974 -_022ECF3C: .word 0x00000A41 -_022ECF40: .word 0x000003E7 - arm_func_end ov29_022ECDE4 - - arm_func_start ov29_022ECF44 -ov29_022ECF44: ; 0x022ECF44 - ldr r1, _022ECF6C ; =0x02353538 - ldr r0, _022ECF70 ; =0x0002CA66 - ldr r2, [r1] - ldr r1, _022ECF74 ; =0x00000279 - ldrsh r0, [r2, r0] - cmp r0, r1 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022ECF6C: .word 0x02353538 -_022ECF70: .word 0x0002CA66 -_022ECF74: .word 0x00000279 - arm_func_end ov29_022ECF44 - - arm_func_start ov29_022ECF78 -ov29_022ECF78: ; 0x022ECF78 - ldr r1, _022ECFAC ; =0x02353538 - ldr r0, _022ECFB0 ; =0x0002CA66 - ldr r2, [r1] - ldr r1, _022ECFB4 ; =0x0000027A - ldrsh r2, [r2, r0] - cmp r2, r1 - addne r0, r1, #3 - cmpne r2, r0 - addne r0, r1, #1 - cmpne r2, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_022ECFAC: .word 0x02353538 -_022ECFB0: .word 0x0002CA66 -_022ECFB4: .word 0x0000027A - arm_func_end ov29_022ECF78 - - arm_func_start ov29_022ECFB8 -ov29_022ECFB8: ; 0x022ECFB8 - stmdb sp!, {r4, lr} - ldr r1, _022ED004 ; =0x02353538 - mov r4, r0 - ldr r1, [r1] - cmp r1, #0 - beq _022ECFF8 - add r0, r1, #0x20c - add lr, r0, #0x2c800 - mov ip, #0xe -_022ECFDC: - ldmia lr!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _022ECFDC - ldmia lr, {r0, r1} - stmia r4, {r0, r1} - ldmia sp!, {r4, pc} -_022ECFF8: - mov r1, #0xe8 - bl MemZero - ldmia sp!, {r4, pc} - .align 2, 0 -_022ED004: .word 0x02353538 - arm_func_end ov29_022ECFB8 - - arm_func_start SetForcedLossReason -SetForcedLossReason: ; 0x022ED008 - ldr r1, _022ED018 ; =0x02353538 - ldr r1, [r1] - str r0, [r1, #0x14] - bx lr - .align 2, 0 -_022ED018: .word 0x02353538 - arm_func_end SetForcedLossReason - - arm_func_start GetForcedLossReason -GetForcedLossReason: ; 0x022ED01C - ldr r0, _022ED02C ; =0x02353538 - ldr r0, [r0] - ldr r0, [r0, #0x14] - bx lr - .align 2, 0 -_022ED02C: .word 0x02353538 - arm_func_end GetForcedLossReason - - arm_func_start ov29_022ED030 -ov29_022ED030: ; 0x022ED030 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _022ED0A0 ; =0x02352690 - ldr r2, _022ED0A4 ; =0x00000401 - ldr r3, [r1, #4] - ldr ip, [r1] - str r3, [sp, #4] - add r0, sp, #0 - mov r1, #4 - mov r3, #0x300 - str ip, [sp] - bl LoadWteFromFileDirectory - ldr r0, [sp, #4] - mov r1, #0x400 - mov r2, #0x1d - mov r3, #0 - bl ProcessWte - ldr r1, [sp, #4] - ldr r0, [sp] - ldrh r2, [r1, #0xc] - ldr r1, _022ED0A8 ; =0x0237C99C - strh r2, [r1] - bl sub_0201E080 - ldr r0, _022ED0AC ; =0x0235359C - mov r1, #1 - strb r1, [r0] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022ED0A0: .word 0x02352690 -_022ED0A4: .word 0x00000401 -_022ED0A8: .word 0x0237C99C -_022ED0AC: .word 0x0235359C - arm_func_end ov29_022ED030 - - arm_func_start ov29_022ED0B0 -ov29_022ED0B0: ; 0x022ED0B0 - ldr r0, _022ED0C0 ; =0x0235359C - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_022ED0C0: .word 0x0235359C - arm_func_end ov29_022ED0B0 - - arm_func_start ov29_022ED0C4 -ov29_022ED0C4: ; 0x022ED0C4 - ldr r0, _022ED0D0 ; =0x0235359C - ldrb r0, [r0, #4] - bx lr - .align 2, 0 -_022ED0D0: .word 0x0235359C - arm_func_end ov29_022ED0C4 - - arm_func_start ov29_022ED0D4 -ov29_022ED0D4: ; 0x022ED0D4 - cmp r0, #0 - movlt r0, #0 - cmp r0, #0xff - ldr r1, _022ED0F0 ; =0x0235359C - movgt r0, #0xff - strb r0, [r1, #4] - bx lr - .align 2, 0 -_022ED0F0: .word 0x0235359C - arm_func_end ov29_022ED0D4 - - arm_func_start ov29_022ED0F4 -ov29_022ED0F4: ; 0x022ED0F4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022ED180 ; =0x0235359C - mov r4, r0 - ldrb r7, [r1, #4] - cmp r7, #0x80 - ldmlsia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0x80 - mov r6, #0x80 - mov r5, #0x68 - ble _022ED174 - b _022ED144 -_022ED120: - sub r0, r7, r4 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x80 - movle r7, r6 - mov r0, r7 - bl ov29_022ED0D4 - mov r0, r5 - bl AdvanceFrame -_022ED144: - cmp r7, #0x80 - bne _022ED120 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022ED150: - add r0, r7, r4 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x80 - movge r7, r6 - mov r0, r7 - bl ov29_022ED0D4 - mov r0, r5 - bl AdvanceFrame -_022ED174: - cmp r7, #0x80 - bne _022ED150 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022ED180: .word 0x0235359C - arm_func_end ov29_022ED0F4 - - arm_func_start ov29_022ED184 -ov29_022ED184: ; 0x022ED184 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x88 - ldr r3, _022ED7F0 ; =0x0235359C - ldrb r3, [r3] - cmp r3, #0 - beq _022ED7E8 - ldrb r4, [r2, #0x34] - cmp r4, #0 - bne _022ED1D0 - ldrb r3, [r2, #0x23] - cmp r3, #0 - ldreqb r3, [r2, #0x24] - cmpeq r3, #0 - ldreqb r3, [r2, #0x30] - cmpeq r3, #0 - movne r3, #1 - moveq r3, #0 - cmp r3, #0 - bne _022ED7E8 -_022ED1D0: - cmp r4, #0 - bne _022ED1E0 - cmp r1, #0xff - bne _022ED370 -_022ED1E0: - add r0, sp, #0x48 - bl sub_0201E730 - ldr r1, _022ED7F4 ; =0x0237C99C - ldr r0, _022ED7F8 ; =0x020AFC70 - ldrh r2, [r1] - mov r3, #5 - mov r1, #0x400 - strb r3, [sp, #0x84] - strh r2, [sp, #0x5c] - ldr r0, [r0] - str r1, [sp, #0x68] - ldr r1, [r0, #0xe0] - ldr r0, _022ED7F0 ; =0x0235359C - add r1, r1, #0x3a00 - str r1, [sp, #0x6c] - ldrb r6, [r0, #4] - mov r5, #0 - mov r3, #0x30 - mov r4, #4 - mov r1, #0x100 - mov r2, #0x22 - add r0, sp, #0x48 - strb r6, [sp, #0x77] - strh r5, [sp, #0x5e] - strh r5, [sp, #0x60] - strh r4, [sp, #0x62] - strh r4, [sp, #0x64] - strh r3, [sp, #0x72] - strb r2, [sp, #0x86] - strh r5, [sp, #0x48] - strh r5, [sp, #0x4a] - strh r1, [sp, #0x4c] - strh r5, [sp, #0x4e] - strh r5, [sp, #0x50] - strh r3, [sp, #0x52] - strh r1, [sp, #0x54] - strh r3, [sp, #0x56] - bl sub_0201F2A0 - mov r4, r5 - mov r3, #0x90 - mov r2, #0x100 - mov r1, #0xc0 - add r0, sp, #0x48 - strh r4, [sp, #0x48] - strh r3, [sp, #0x4a] - strh r2, [sp, #0x4c] - strh r3, [sp, #0x4e] - strh r4, [sp, #0x50] - strh r1, [sp, #0x52] - strh r2, [sp, #0x54] - strh r1, [sp, #0x56] - bl sub_0201F2A0 - mov r3, #0x30 - mov r2, #0x50 - mov r1, #0x90 - add r0, sp, #0x48 - strh r4, [sp, #0x48] - strh r3, [sp, #0x4a] - strh r2, [sp, #0x4c] - strh r3, [sp, #0x4e] - strh r4, [sp, #0x50] - strh r1, [sp, #0x52] - strh r2, [sp, #0x54] - strh r1, [sp, #0x56] - bl sub_0201F2A0 - mov r3, #0xb0 - mov r2, #0x30 - mov r1, #0x100 - mov r0, #0x90 - strh r3, [sp, #0x48] - strh r2, [sp, #0x4a] - strh r1, [sp, #0x4c] - strh r2, [sp, #0x4e] - strh r3, [sp, #0x50] - strh r0, [sp, #0x52] - strh r1, [sp, #0x54] - strh r0, [sp, #0x56] - add r0, sp, #0x48 - bl sub_0201F2A0 - mov r6, #0x50 - mov r5, #0x30 - mov r4, #0xb0 - mov r3, #0x90 - mov r2, #0 - mov r1, #0x60 - add r0, sp, #0x48 - strh r6, [sp, #0x48] - strh r5, [sp, #0x4a] - strh r4, [sp, #0x4c] - strh r5, [sp, #0x4e] - strh r6, [sp, #0x50] - strh r3, [sp, #0x52] - strh r4, [sp, #0x54] - strh r3, [sp, #0x56] - strh r2, [sp, #0x5e] - strh r2, [sp, #0x60] - strh r1, [sp, #0x62] - strh r1, [sp, #0x64] - bl sub_0201F2A0 - b _022ED7E8 -_022ED370: - ldr r6, _022ED7FC ; =0x02352698 - add r5, sp, #0 - mov r4, #4 -_022ED37C: - ldrh r3, [r6], #2 - subs r4, r4, #1 - strh r3, [r5], #2 - bne _022ED37C - mov r3, #0x1c - smlabb r3, r1, r3, r0 - ldr r1, [r3, #0xc] - add r0, sp, #8 - strh r1, [sp] - ldr r1, [r3, #0x10] - strh r1, [sp, #2] - ldr r1, [r3, #0x14] - strh r1, [sp, #4] - ldr r1, [r3, #0x18] - strh r1, [sp, #6] - ldrsh r5, [r2, #0xa] - ldrsh r4, [r2, #8] - bl sub_0201E730 - ldrsh r3, [sp, #2] - ldrsh r6, [sp, #4] - ldrsh lr, [sp] - sub r3, r3, r5 - ldrsh r2, [sp, #6] - mov r1, #5 - mov r0, #0x400 - ldr ip, _022ED7F8 ; =0x020AFC70 - mov r3, r3, lsl #0x10 - sub r6, r6, r4 - sub lr, lr, r4 - mov r4, r3, asr #0x10 - sub r5, r2, r5 - mov r3, r6, lsl #0x10 - mov r6, r5, lsl #0x10 - ldr r7, _022ED7F4 ; =0x0237C99C - strb r1, [sp, #0x44] - ldrh r1, [r7] - ldr r5, [ip] - str r0, [sp, #0x28] - ldr r0, [r5, #0xe0] - mov r2, lr, lsl #0x10 - add r5, r0, #0x3a00 - str r5, [sp, #0x2c] - strh r1, [sp, #0x1c] - ldr r0, _022ED7F0 ; =0x0235359C - mov r1, #0 - ldrb ip, [r0, #4] - mov r7, #4 - mov r5, #0x30 - mov r0, #0x22 - strh r5, [sp, #0x32] - strb ip, [sp, #0x37] - strh r1, [sp, #0x1e] - strh r1, [sp, #0x20] - strh r7, [sp, #0x22] - strh r7, [sp, #0x24] - strb r0, [sp, #0x46] - cmp r4, #0 - mov r5, r2, asr #0x10 - mov r7, r3, asr #0x10 - mov r6, r6, asr #0x10 - ble _022ED4A4 - mov r0, r4, lsl #0x10 - mov r2, r0, asr #0x10 - mov r3, #0x100 - add r0, sp, #8 - strh r1, [sp, #8] - strh r1, [sp, #0xa] - strh r3, [sp, #0xc] - strh r1, [sp, #0xe] - strh r1, [sp, #0x10] - strh r2, [sp, #0x12] - strh r3, [sp, #0x14] - strh r2, [sp, #0x16] - bl sub_0201F2A0 -_022ED4A4: - cmp r6, #0 - movlt r0, #0 - movge r0, r6 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - rsb r0, r1, #0xc0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0 - ble _022ED508 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - mov ip, #0 - mov r3, #0x100 - add r0, sp, #8 - strh ip, [sp, #8] - strh r1, [sp, #0xa] - strh r3, [sp, #0xc] - strh r1, [sp, #0xe] - strh ip, [sp, #0x10] - strh r2, [sp, #0x12] - strh r3, [sp, #0x14] - strh r2, [sp, #0x16] - bl sub_0201F2A0 -_022ED508: - cmp r4, #0 - movlt r0, #0 - movge r0, r4 - mov r0, r0, lsl #0x10 - sub r1, r6, r0, asr #16 - cmp r1, #0xc0 - movgt r1, #0xc0 - mov ip, r0, asr #0x10 - cmp r5, #0 - mov r0, r1, lsl #0x10 - ble _022ED574 - add r1, ip, r0, asr #16 - mov r0, r5, lsl #0x10 - mov r2, r0, asr #0x10 - mov r3, #0 - mov r0, r1, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, sp, #8 - strh r3, [sp, #8] - strh ip, [sp, #0xa] - strh r2, [sp, #0xc] - strh ip, [sp, #0xe] - strh r3, [sp, #0x10] - strh r1, [sp, #0x12] - strh r2, [sp, #0x14] - strh r1, [sp, #0x16] - bl sub_0201F2A0 -_022ED574: - cmp r4, #0 - movlt r0, #0 - movge r0, r4 - mov r0, r0, lsl #0x10 - rsb r1, r7, #0x100 - mov r2, r1, lsl #0x10 - sub r3, r6, r0, asr #16 - cmp r3, #0xc0 - mov r2, r2, asr #0x10 - movgt r3, #0xc0 - mov r1, r0, asr #0x10 - cmp r2, #0 - mov r0, r3, lsl #0x10 - ble _022ED5EC - add r3, r7, r2 - add r2, r1, r0, asr #16 - mov r0, r3, lsl #0x10 - mov r3, r0, asr #0x10 - mov r0, r2, lsl #0x10 - mov r2, r0, asr #0x10 - add r0, sp, #8 - strh r7, [sp, #8] - strh r1, [sp, #0xa] - strh r3, [sp, #0xc] - strh r1, [sp, #0xe] - strh r7, [sp, #0x10] - strh r2, [sp, #0x12] - strh r3, [sp, #0x14] - strh r2, [sp, #0x16] - bl sub_0201F2A0 -_022ED5EC: - mvn r0, #0x1f - cmp r5, r0 - cmpgt r4, r0 - ble _022ED660 - cmp r5, #0x120 - cmplt r4, #0xe0 - bge _022ED660 - add r0, r5, #0x20 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - mov ip, #0 - mov r3, #0x30 - add r1, r4, #0x20 - mov r0, r1, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, sp, #8 - strh ip, [sp, #0x1e] - strh ip, [sp, #0x20] - strh r3, [sp, #0x22] - strh r3, [sp, #0x24] - strh r5, [sp, #8] - strh r4, [sp, #0xa] - strh r2, [sp, #0xc] - strh r4, [sp, #0xe] - strh r5, [sp, #0x10] - strh r1, [sp, #0x12] - strh r2, [sp, #0x14] - strh r1, [sp, #0x16] - bl sub_0201F2A0 -_022ED660: - sub r7, r7, #0x20 - mov r0, r7, lsl #0x10 - mvn r1, #0x1f - cmp r1, r0, asr #16 - mov r2, r0, asr #0x10 - bge _022ED6E4 - cmp r4, r1 - ble _022ED6E4 - cmp r2, #0x120 - cmplt r4, #0xe0 - bge _022ED6E4 - add r0, r2, #0x20 - mov r0, r0, lsl #0x10 - mov ip, r0, asr #0x10 - mov r1, #0x30 - add r3, r4, #0x20 - mov r0, r3, lsl #0x10 - mov r3, r0, asr #0x10 - mov lr, #0 - add r0, sp, #8 - strh r1, [sp, #0x1e] - strh lr, [sp, #0x20] - strh r1, [sp, #0x22] - strh r1, [sp, #0x24] - strh r2, [sp, #8] - strh r4, [sp, #0xa] - strh ip, [sp, #0xc] - strh r4, [sp, #0xe] - strh r2, [sp, #0x10] - strh r3, [sp, #0x12] - strh ip, [sp, #0x14] - strh r3, [sp, #0x16] - bl sub_0201F2A0 -_022ED6E4: - sub r4, r6, #0x20 - mov r0, r4, lsl #0x10 - mvn r2, #0x1f - mov r1, r0, asr #0x10 - cmp r5, r2 - cmpgt r1, r2 - ble _022ED764 - cmp r5, #0x120 - cmplt r1, #0xe0 - bge _022ED764 - add r0, r5, #0x20 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - mov r6, #0x30 - add r2, r1, #0x20 - mov r0, r2, lsl #0x10 - mov r2, r0, asr #0x10 - mov ip, #0 - add r0, sp, #8 - strh ip, [sp, #0x1e] - strh r6, [sp, #0x20] - strh r6, [sp, #0x22] - strh r6, [sp, #0x24] - strh r5, [sp, #8] - strh r1, [sp, #0xa] - strh r3, [sp, #0xc] - strh r1, [sp, #0xe] - strh r5, [sp, #0x10] - strh r2, [sp, #0x12] - strh r3, [sp, #0x14] - strh r2, [sp, #0x16] - bl sub_0201F2A0 -_022ED764: - mov r0, r7, lsl #0x10 - mov r1, r4, lsl #0x10 - mvn r2, #0x1f - cmp r2, r0, asr #16 - mov r5, r0, asr #0x10 - mov r4, r1, asr #0x10 - bge _022ED7E8 - cmp r4, r2 - ble _022ED7E8 - cmp r5, #0x120 - cmplt r4, #0xe0 - bge _022ED7E8 - add r0, r5, #0x20 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - mov r3, #0x30 - add r1, r4, #0x20 - mov r0, r1, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, sp, #8 - strh r3, [sp, #0x1e] - strh r3, [sp, #0x20] - strh r3, [sp, #0x22] - strh r3, [sp, #0x24] - strh r5, [sp, #8] - strh r4, [sp, #0xa] - strh r2, [sp, #0xc] - strh r4, [sp, #0xe] - strh r5, [sp, #0x10] - strh r1, [sp, #0x12] - strh r2, [sp, #0x14] - strh r1, [sp, #0x16] - bl sub_0201F2A0 -_022ED7E8: - add sp, sp, #0x88 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022ED7F0: .word 0x0235359C -_022ED7F4: .word 0x0237C99C -_022ED7F8: .word 0x020AFC70 -_022ED7FC: .word 0x02352698 - arm_func_end ov29_022ED184 - - arm_func_start ov29_022ED800 -ov29_022ED800: ; 0x022ED800 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r3, r0, #0xe900 - ldrh r3, [r3, #0xec] - tst r3, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x224 - add r0, r0, #0xac00 - bl ov29_022ED184 - ldmia sp!, {r3, pc} - arm_func_end ov29_022ED800 - - arm_func_start ov29_022ED82C -ov29_022ED82C: ; 0x022ED82C - stmdb sp!, {r4, lr} - add r1, r1, #0xc1 - add r1, r1, #0x3400 - mov r1, r1, lsl #0x10 - mov r4, r0 - mov r0, r1, lsr #0x10 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - bl Strcpy - ldmia sp!, {r4, pc} - arm_func_end ov29_022ED82C - - arm_func_start ov29_022ED858 -ov29_022ED858: ; 0x022ED858 - cmp r1, #0 - strne r1, [r0, #0x10] - strneb r2, [r1, #0x20] - bx lr - arm_func_end ov29_022ED858 - - arm_func_start ov29_022ED868 -ov29_022ED868: ; 0x022ED868 - ldr r0, _022ED880 ; =0x02353538 - ldr ip, _022ED884 ; =ov29_02344148 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bx ip - .align 2, 0 -_022ED880: .word 0x02353538 -_022ED884: .word ov29_02344148 - arm_func_end ov29_022ED868 - - arm_func_start ov29_022ED888 -ov29_022ED888: ; 0x022ED888 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r0, _022ED96C ; =0x023526A0 - mov sl, #0 - ldrh r1, [r0] - ldrh r0, [r0, #2] - add r6, sp, #4 - strh r1, [sp] - strh r0, [sp, #2] - mov r4, #6 - mov fp, #2 - mov r7, sl -_022ED8B8: - mov r0, sl, lsl #0x10 - mov r8, r7 - mov r5, r0, asr #0x10 -_022ED8C4: - mov r0, r8 - mov r1, sl - bl GetTileSafe - mov sb, r0 - ldrh r0, [sb, #2] - tst r0, #4 - beq _022ED94C - strh r8, [sp, #4] - strh r5, [sp, #6] - ldrh r0, [sb, #2] - tst r0, #0x40 - movne r0, r4 - bne _022ED8FC - bl ov29_022E7A30 -_022ED8FC: - cmp r0, #0x11 - mov r1, r6 - bne _022ED92C - mov r2, fp - mov r3, #0 - bl ov29_022E2260 - movs r1, r0 - beq _022ED94C - mov r0, sb - mov r2, #1 - bl ov29_022ED858 - b _022ED94C -_022ED92C: - mov r2, #0 - mov r3, r2 - bl ov29_022E2260 - movs r1, r0 - beq _022ED94C - mov r0, sb - mov r2, #0 - bl ov29_022ED858 -_022ED94C: - add r8, r8, #1 - cmp r8, #0x38 - blt _022ED8C4 - add sl, sl, #1 - cmp sl, #0x20 - blt _022ED8B8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022ED96C: .word 0x023526A0 - arm_func_end ov29_022ED888 - - arm_func_start ov29_022ED970 -ov29_022ED970: ; 0x022ED970 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r1 - mov r6, r2 - mov r8, r0 - mov r0, r7 - mov r1, r6 - mov r5, r3 - bl GetTileSafe - mov r4, r0 - add r1, sp, #0 - mov r0, r8 - mov r3, r5 - mov r2, #0 - strh r7, [sp] - strh r6, [sp, #2] - bl ov29_022E2260 - movs r1, r0 - beq _022ED9C8 - ldrb r2, [sp, #0x20] - mov r0, r4 - bl ov29_022ED858 -_022ED9C8: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov29_022ED970 - - arm_func_start ov29_022ED9D0 -ov29_022ED9D0: ; 0x022ED9D0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r0, _022EDBB8 ; =0x02353538 - ldr r1, _022EDBBC ; =0x0001A21E - ldr r0, [r0] - ldrsh r2, [r0, r1] - add r1, r0, #0x1a000 - ldrb r8, [r1, #0x244] - sub sb, r2, #5 - b _022EDB9C -_022ED9F8: - ldr r1, _022EDBC0 ; =0x0001A21C - mov r2, #0x18 - ldrsh r0, [r0, r1] - mul sl, sb, r2 - sub r7, r0, #6 - mov r0, r1 - add fp, r0, #8 - ldr r0, _022EDBC4 ; =0x0000013E - ldr r6, _022EDBC8 ; =0x0237C864 - sub r0, r0, #0x1f - str r0, [sp, #4] - mov r0, r1 - add r5, r0, #0xa - ldr r4, _022EDBCC ; =0xFFFF000F - b _022EDB7C -_022EDA34: - mov r0, #0 - str r0, [sp] - mov r0, r7 - mov r1, sb - bl GetTile - ldr r2, [r0, #0x10] - cmp r2, #0 - beq _022EDA74 - ldr r1, [r2] - cmp r1, #2 - bne _022EDA74 - ldrb r1, [r2, #0x20] - cmp r1, #0 - cmpeq r8, #0 - movne r1, #1 - strne r1, [sp] -_022EDA74: - ldrh r0, [r0] - tst r0, #0x200 - movne r0, #1 - strne r0, [sp] - ldr r0, [sp] - cmp r0, #0 - beq _022EDB78 - ldr r0, _022EDBB8 ; =0x02353538 - ldr r3, [r0] - mov r0, #0x18 - mul r2, r7, r0 - ldrsh r1, [r3, fp] - ldrsh r0, [r3, r5] - sub r1, r2, r1 - sub r2, sl, r0 - cmp r1, r4, asr #11 - cmpge r2, r4, asr #11 - blt _022EDB78 - ldr r0, [sp, #4] - cmp r1, r0 - cmple r2, #0xe0 - bgt _022EDB78 - ldrh ip, [r6] - add r0, r2, #4 - add r1, r1, #4 - bic ip, ip, #0xc00 - strh ip, [r6] - ldrh ip, [r6, #6] - and r3, r1, r4, lsr #23 - mov r0, r0, lsl #0x14 - and ip, ip, r4 - strh ip, [r6, #6] - ldrh ip, [r6, #6] - mov r1, r6 - mov r2, #0 - orr r0, ip, r0, lsr #16 - strh r0, [r6, #6] - ldrh r0, [r6, #2] - and r0, r0, r4, asr #7 - strh r0, [r6, #2] - ldrh r0, [r6, #2] - orr r0, r0, r3 - strh r0, [r6, #2] - ldrh r0, [r6, #4] - bic r0, r0, #0xc00 - strh r0, [r6, #4] - ldrh r0, [r6, #4] - orr r0, r0, #0xc00 - strh r0, [r6, #4] - ldrh r0, [r6, #4] - bic r0, r0, #0xf000 - strh r0, [r6, #4] - ldrh r0, [r6, #4] - orr r0, r0, #0xa000 - strh r0, [r6, #4] - ldrh r0, [r6, #4] - and r0, r0, r4, asr #6 - strh r0, [r6, #4] - ldrh r3, [r6, #4] - orr r0, r3, #0x3e - orr r0, r0, #0x100 - strh r0, [r6, #4] - ldr r0, _022EDBD0 ; =0x020AFC4C - ldr r0, [r0] - bl sub_0201B9F8 -_022EDB78: - add r7, r7, #1 -_022EDB7C: - ldr r0, _022EDBB8 ; =0x02353538 - ldr r1, _022EDBC0 ; =0x0001A21C - ldr r0, [r0] - ldrsh r1, [r0, r1] - add r1, r1, #6 - cmp r7, r1 - blt _022EDA34 - add sb, sb, #1 -_022EDB9C: - ldr r1, _022EDBBC ; =0x0001A21E - ldrsh r1, [r0, r1] - add r1, r1, #5 - cmp sb, r1 - blt _022ED9F8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EDBB8: .word 0x02353538 -_022EDBBC: .word 0x0001A21E -_022EDBC0: .word 0x0001A21C -_022EDBC4: .word 0x0000013E -_022EDBC8: .word 0x0237C864 -_022EDBCC: .word 0xFFFF000F -_022EDBD0: .word 0x020AFC4C - arm_func_end ov29_022ED9D0 - - arm_func_start ov29_022EDBD4 -ov29_022EDBD4: ; 0x022EDBD4 - stmdb sp!, {r3, r4, r5, lr} - ldr lr, _022EDC28 ; =0x02353538 - ldrsh r5, [r0] - ldr r3, _022EDC2C ; =0x00012AAA - ldr r4, [lr] - add ip, r3, #2 - strh r5, [r4, r3] - ldrsh r4, [r0, #2] - ldr r0, [lr] - mov r3, #1 - strh r4, [r0, ip] - ldr r0, [lr] - add r0, r0, #0x12000 - strb r1, [r0, #0xaae] - ldr r0, [lr] - add r0, r0, #0x12000 - strb r2, [r0, #0xaaf] - ldr r0, [lr] - add r0, r0, #0x12000 - strb r3, [r0, #0xaa8] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EDC28: .word 0x02353538 -_022EDC2C: .word 0x00012AAA - arm_func_end ov29_022EDBD4 - - arm_func_start ov29_022EDC30 -ov29_022EDC30: ; 0x022EDC30 - stmdb sp!, {r3, lr} - mov r1, r0 - ldrsh r0, [r1] - ldrsh r1, [r1, #2] - bl GetTileSafe - ldrh r2, [r0] - tst r2, #0x200 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrb r1, [r0, #7] - cmp r1, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, pc} - tst r2, #8 - movne r0, #0 - ldmneia sp!, {r3, pc} - tst r2, #0x20 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #1 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022EDCB4 - ldr r0, [r0] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_022EDCB4: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_022EDC30 - - arm_func_start ov29_022EDCBC -ov29_022EDCBC: ; 0x022EDCBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - mov r6, r2 - mov r5, r3 - bl GetTileSafe - mov r4, r0 - cmp r7, #0x19 - blo _022EDD14 - mov sb, #0 - b _022EDD04 -_022EDCF0: - bl ov29_022E7A30 - mov r7, r0 - cmp r7, #0x11 - bne _022EDD0C - add sb, sb, #1 -_022EDD04: - cmp sb, #0x1e - blt _022EDCF0 -_022EDD0C: - cmp sb, #0x1e - moveq r7, #0x10 -_022EDD14: - ldrh r1, [r4] - tst r1, #0x200 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r4, #7] - cmp r0, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - tst r1, #8 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - tst r1, #0x20 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrh r0, [r4] - and r0, r0, #3 - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _022EDDA0 - ldr r1, [r0] - cmp r1, #2 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl ov29_022E1608 - strb r7, [r0] - ldr r0, [r4, #0x10] - bl ov29_022E1608 - strb r6, [r0, #1] - ldr r1, [r4, #0x10] - mov r0, #1 - strb r5, [r1, #0x20] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022EDDA0: - mov r0, r7 - mov r1, r8 - mov r2, r6 - mov r3, #0 - bl ov29_022E2260 - movs r1, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r4 - mov r2, r5 - bl ov29_022ED858 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022EDCBC - - arm_func_start ov29_022EDDD4 -ov29_022EDDD4: ; 0x022EDDD4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022EDE6C ; =0x02353538 - mov r5, r0 - ldr r0, [r1] - add r0, r0, #0x12000 - ldrb r2, [r0, #0xaa8] - cmp r2, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r2, #0 - strb r2, [r0, #0xaa8] - ldr r3, [r1] - ldr r0, _022EDE70 ; =0x00012AAA - add r2, r3, #0x12000 - ldrb r1, [r2, #0xaae] - ldrb r2, [r2, #0xaaf] - add r0, r3, r0 - mov r3, #1 - bl ov29_022EDCBC - movs r4, r0 - ldr r1, _022EDE70 ; =0x00012AAA - beq _022EDE48 - ldr r0, _022EDE6C ; =0x02353538 - ldr r2, _022EDE74 ; =0x00000E57 - ldr r3, [r0] - mov r0, r5 - add r1, r3, r1 - bl LogMessageByIdWithPopupCheckUserUnknown - b _022EDE60 -_022EDE48: - ldr r0, _022EDE6C ; =0x02353538 - ldr r2, _022EDE78 ; =0x00000E58 - ldr r3, [r0] - mov r0, r5 - add r1, r3, r1 - bl LogMessageByIdWithPopupCheckUserUnknown -_022EDE60: - bl ov29_02336F4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EDE6C: .word 0x02353538 -_022EDE70: .word 0x00012AAA -_022EDE74: .word 0x00000E57 -_022EDE78: .word 0x00000E58 - arm_func_end ov29_022EDDD4 - - arm_func_start ov29_022EDE7C -ov29_022EDE7C: ; 0x022EDE7C - stmdb sp!, {r4, lr} - mov r2, r0 - mov r4, r1 - ldrsh r0, [r2] - ldrsh r1, [r2, #2] - bl GetTileSafe - ldr r2, [r0, #0x10] - cmp r2, #0 - beq _022EDED4 - ldr r1, [r2] - cmp r1, #2 - bne _022EDECC - mov r1, #0 - str r1, [r2] - str r1, [r0, #0x10] - cmp r4, #0 - beq _022EDEC4 - bl ov29_02336F4C -_022EDEC4: - mov r0, #1 - ldmia sp!, {r4, pc} -_022EDECC: - mov r0, #0 - ldmia sp!, {r4, pc} -_022EDED4: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_022EDE7C - - arm_func_start ov29_022EDEDC -ov29_022EDEDC: ; 0x022EDEDC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl GetTile - ldr r1, [r0, #0x10] - cmp r1, #0 - beq _022EDF50 - ldr r0, [r1] - cmp r0, #2 - bne _022EDF48 - ldr r0, _022EDF58 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x13] - cmp r0, #0 - bne _022EDF34 - mov r0, #1 - strb r0, [r1, #0x20] - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl ov29_023391EC -_022EDF34: - cmp r4, #0 - beq _022EDF40 - bl ov29_02336F4C -_022EDF40: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022EDF48: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_022EDF50: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EDF58: .word 0x02353538 - arm_func_end ov29_022EDEDC - - arm_func_start ov29_022EDF5C -ov29_022EDF5C: ; 0x022EDF5C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl sub_02024FC8 - bl ov29_0234B034 - add r0, r0, r5, lsl #2 - str r4, [r0, #0x10] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022EDF5C - - arm_func_start ov29_022EDF7C -ov29_022EDF7C: ; 0x022EDF7C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl sub_02024FC8 - add r0, r6, r5, lsl #2 - str r4, [r0, #0x10] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_022EDF7C - - arm_func_start ov29_022EDFA0 -ov29_022EDFA0: ; 0x022EDFA0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, r1 - mov sl, r0 - ldrsh r0, [sb] - ldrsh r1, [sb, #2] - mov fp, r2 - mov r7, r3 - bl GetTileSafe - ldr r4, [r0, #0x10] - str r0, [sp, #0x10] - cmp r4, #0 - beq _022EE2F4 - ldr r0, [r4] - cmp r0, #2 - bne _022EE2F4 - mov r0, r4 - bl ov29_022E1608 - mov r6, r0 - ldrb r1, [r6] - mov r0, #0 - bl ov29_022EDF5C - ldr r0, [sp, #0x10] - ldr r5, [r0, #0xc] - cmp r5, #0 - ldrne r0, [r5] - cmpne r0, #1 - ldrb r0, [r4, #0x20] - movne r5, #0 - cmp r5, #0 - str r0, [sp, #0xc] - mov r0, #1 - strb r0, [r4, #0x20] - beq _022EE1D8 - mov r0, r5 - bl ov29_022F9840 - cmp r7, #0 - ldrneb r0, [r6] - cmpne r0, #0x11 - beq _022EE148 - cmp r0, #0x17 - mov r8, #0 - moveq r7, #0x64 - beq _022EE05C - mov r0, #0x64 - bl DungeonRandInt - mov r7, r0 -_022EE05C: - mov r0, r5 - mov r1, #0x23 - bl ItemIsActive__022EE318 - cmp r0, #0 - ldrne r8, _022EE2FC ; =0x00000E59 - bne _022EE0C8 - mov r0, r5 - mov r1, #0x26 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022EE0C8 - mov r0, #0x32 - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _022EE0C8 - mov r1, sl - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - bl ov29_023361D4 - cmp r0, #0 - ldrne r8, _022EE300 ; =0x00000E5B - bne _022EE0C8 - mov r0, sb - mov r1, #1 - bl ov29_022EDE7C - ldr r8, _022EE304 ; =0x00000E5A -_022EE0C8: - ldr r0, [sp, #0xc] - cmp r0, #1 - beq _022EE0EC - ldr r0, _022EE308 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x244] - cmp r0, #0 - beq _022EE100 -_022EE0EC: - cmp r7, #0 - bge _022EE110 - cmp r8, #0 - ldreq r8, _022EE30C ; =0x00000E5C - b _022EE110 -_022EE100: - cmp r7, #0xf - bge _022EE110 - cmp r8, #0 - ldreq r8, _022EE30C ; =0x00000E5C -_022EE110: - cmp r8, #0 - beq _022EE1D8 - mov r0, sb - bl ov29_022E2CA0 - cmp r0, #0 - beq _022EE12C - bl ov29_02336F4C -_022EE12C: - mov r0, sl - mov r1, r5 - mov r2, r8 - bl LogMessageByIdWithPopupCheckUserTarget - cmp fp, #0 - bne _022EE1D8 - b _022EE2F4 -_022EE148: - mov r0, r5 - mov r1, #0x26 - mov r7, #0 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022EE1D8 - ldr r0, _022EE310 ; =0x022C445C - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _022EE1A4 - mov r1, sl - mov r0, #1 - mov r2, r7 - bl SubstitutePlaceholderStringTags - bl ov29_023361D4 - cmp r0, #0 - ldrne r7, _022EE300 ; =0x00000E5B - bne _022EE1A4 - mov r0, sb - mov r1, #1 - bl ov29_022EDE7C - ldr r7, _022EE304 ; =0x00000E5A -_022EE1A4: - cmp r7, #0 - beq _022EE1D8 - mov r0, sb - bl ov29_022E2CA0 - cmp r0, #0 - beq _022EE1C0 - bl ov29_02336F4C -_022EE1C0: - mov r0, sl - mov r1, r5 - mov r2, r7 - bl LogMessageByIdWithPopupCheckUserTarget - cmp fp, #0 - beq _022EE2F4 -_022EE1D8: - mov r0, sb - bl ov29_022E2CA0 - cmp r0, #0 - beq _022EE264 - mov r0, #0 - mov r1, #0x11c - bl ov29_022E56A0 - bl ov29_02336F4C - ldrb r2, [r6] - mov r0, sl - mov r1, sb - bl ov29_022E58B0 - mov r0, r4 - bl ov29_022E1608 - mov r6, r0 - mov r0, #0 - ldrb r1, [r6] - bl ov29_022EDF5C - ldr r0, _022EE308 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - beq _022EE248 - ldr r1, _022EE314 ; =0x00000E5D - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022EE264 -_022EE248: - ldrb r1, [r6] - mov r0, sl - add r1, r1, #0x51 - add r1, r1, #0xb00 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - bl LogMessageByIdWithPopupCheckUser -_022EE264: - cmp r5, #0 - beq _022EE29C - ldrb r0, [r6, #1] - cmp r0, #2 - bne _022EE288 - mov r0, r5 - mov r1, #1 - bl ov29_0230D47C - b _022EE29C -_022EE288: - cmp r0, #1 - bne _022EE29C - mov r0, r5 - mov r1, #0 - bl ov29_0230D47C -_022EE29C: - str sb, [sp] - ldrb r6, [r6] - mov r0, r4 - ldr r3, [sp, #0x10] - mov r1, sl - mov r2, r5 - str r6, [sp, #4] - mov r4, #0 - str r4, [sp, #8] - bl ov29_022EF154 - mov r4, r0 - mov r0, r5 - bl EntityIsValid__022EE348 - cmp r0, #0 - beq _022EE2E0 - mov r0, r5 - bl EnemyEvolution -_022EE2E0: - cmp r4, #0 - beq _022EE2F4 - mov r0, sb - mov r1, #1 - bl ov29_022EDE7C -_022EE2F4: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EE2FC: .word 0x00000E59 -_022EE300: .word 0x00000E5B -_022EE304: .word 0x00000E5A -_022EE308: .word 0x02353538 -_022EE30C: .word 0x00000E5C -_022EE310: .word 0x022C445C -_022EE314: .word 0x00000E5D - arm_func_end ov29_022EDFA0 - - arm_func_start ItemIsActive__022EE318 -ItemIsActive__022EE318: ; 0x022EE318 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__022EE318 - - arm_func_start EntityIsValid__022EE348 -EntityIsValid__022EE348: ; 0x022EE348 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022EE348 - - arm_func_start ov29_022EE36C -ov29_022EE36C: ; 0x022EE36C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - movs r4, r1 - mov r5, r0 - beq _022EE424 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x19 - mov ip, #1 - mov r3, #3 - bge _022EE3B8 - ldr r0, _022EE42C ; =0x02352AEC - str ip, [sp] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerOffensiveStat - b _022EE424 -_022EE3B8: - cmp r0, #0x32 - bge _022EE3E0 - ldr r0, _022EE430 ; =0x02352AE8 - str ip, [sp] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerOffensiveStat - b _022EE424 -_022EE3E0: - cmp r0, #0x4b - bge _022EE408 - ldr r0, _022EE42C ; =0x02352AEC - str ip, [sp] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerDefensiveStat - b _022EE424 -_022EE408: - ldr r0, _022EE430 ; =0x02352AE8 - str ip, [sp] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerDefensiveStat -_022EE424: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EE42C: .word 0x02352AEC -_022EE430: .word 0x02352AE8 - arm_func_end ov29_022EE36C - - arm_func_start ov29_022EE434 -ov29_022EE434: ; 0x022EE434 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xcc - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r1, #0x15 - ldr r7, [sb, #0xb4] - bl ItemIsActive__022EE318 - cmp r0, #0 - beq _022EE470 - mov r0, sl - mov r1, sb - mov r2, #0xe60 - bl LogMessageByIdWithPopupCheckUserTarget - b _022EE610 -_022EE470: - ldrb r0, [r7, #7] - mvn r4, #0 - mov r5, #0 - cmp r0, #0 - beq _022EE508 - ldr fp, _022EE618 ; =0x020AF6B8 - mov r6, r5 -_022EE48C: - mov r0, #6 - mul r8, r6, r0 - ldr r0, [fp] - ldr r0, [r0, #0x384] - add r1, r0, r8 - ldrb r0, [r0, r8] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022EE4FC - ldrsh r0, [r1, #4] - bl IsNotMoney - cmp r0, #0 - beq _022EE4FC - ldr r0, [fp] - ldr r0, [r0, #0x384] - add r1, r0, r8 - ldrb r0, [r0, r8] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldreqb r0, [r1, #1] - cmpeq r0, #0 - addeq r0, sp, #0 - streq r1, [r0, r5, lsl #2] - addeq r5, r5, #1 -_022EE4FC: - add r6, r6, #1 - cmp r6, #0x32 - blt _022EE48C -_022EE508: - ldrb r0, [r7, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022EE558 - ldrsh r0, [r7, #0x66] - bl IsNotMoney - cmp r0, #0 - beq _022EE558 - ldrb r0, [r7, #0x62] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addeq r0, sp, #0 - addeq r1, r7, #0x62 - moveq r4, r5 - streq r1, [r0, r5, lsl #2] - addeq r5, r5, #1 -_022EE558: - cmp r5, #0 - bne _022EE574 - ldr r2, _022EE61C ; =0x00000E5F - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _022EE610 -_022EE574: - mov r0, r5 - bl DungeonRandInt - mov r5, r0 - add r1, sp, #0 - ldr r1, [r1, r5, lsl #2] - mov r0, #0 - bl ov29_02344B44 - add r0, sp, #0 - ldr r1, [r0, r5, lsl #2] - ldrb r0, [r1] - orr r0, r0, #8 - strb r0, [r1] - ldrb r0, [r1, #1] - cmp r0, #0 - beq _022EE5E8 - cmp r5, r4 - bne _022EE5C4 - mov r1, #8 - bl sub_0200FAEC - b _022EE5E8 -_022EE5C4: - ldr r1, _022EE620 ; =0x02353538 - sub r0, r0, #1 - ldr r2, [r1] - add r1, r0, r0, lsl #3 - add r0, r2, #0x56 - add r2, r0, #0x800 - ldrb r0, [r2, r1, lsl #6] - orr r0, r0, #8 - strb r0, [r2, r1, lsl #6] -_022EE5E8: - bl ov29_022FB920 - ldr r1, _022EE624 ; =0x00000309 - mov r0, sb - bl ov29_022E56A0 - ldr r2, _022EE628 ; =0x00000E5E - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - bl ov29_022E8104 - bl ov29_022E81F8 -_022EE610: - add sp, sp, #0xcc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EE618: .word 0x020AF6B8 -_022EE61C: .word 0x00000E5F -_022EE620: .word 0x02353538 -_022EE624: .word 0x00000309 -_022EE628: .word 0x00000E5E - arm_func_end ov29_022EE434 - - arm_func_start ov29_022EE62C -ov29_022EE62C: ; 0x022EE62C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xd8 - movs sl, r1 - mov fp, r0 - mov r5, #0 - beq _022EE800 - ldr r2, [sl, #0xb4] - sub r0, r5, #1 - ldrb r1, [r2, #7] - mov r4, r5 - str r0, [sp, #4] - cmp r1, #0 - beq _022EE6C0 - ldr r0, _022EE808 ; =0x020AF6B8 - mov r1, r5 - ldr r6, [r0] - mov lr, r5 - ldr r3, [r6, #0x384] - mov r0, #1 - add sb, sp, #8 - mov r8, #6 -_022EE680: - mul r7, r1, r8 - ldrb ip, [r3, r7] - tst ip, #1 - movne ip, r0 - moveq ip, lr - tst ip, #0xff - beq _022EE6B4 - ldr ip, [r6, #0x384] - add ip, ip, r7 - ldrb r7, [ip, #1] - cmp r7, #0 - streq ip, [sb, r4, lsl #2] - addeq r4, r4, #1 -_022EE6B4: - add r1, r1, #1 - cmp r1, #0x32 - blt _022EE680 -_022EE6C0: - ldrb r0, [r2, #0x62] - mov sb, #0 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r0, sp, #8 - addne r1, r2, #0x62 - strne r1, [r0, r4, lsl #2] - ldr r0, _022EE80C ; =0x022C4434 - strne r4, [sp, #4] - ldrsh r0, [r0] - addne r4, r4, #1 - str r0, [sp] - b _022EE7B0 -_022EE6FC: - add r0, sp, #8 - ldr r7, [r0, sb, lsl #2] - ldrsh r0, [r7, #4] - bl GetItemCategoryVeneer - cmp r0, #3 - bne _022EE7AC - ldrsh r0, [r7, #4] - cmp r0, #0x6f - beq _022EE7AC - mov r0, #0x64 - bl DungeonRandInt - ldr r1, [sp] - cmp r0, r1 - bge _022EE7AC - add r0, sp, #8 - ldr r8, [r0, sb, lsl #2] - mov r1, #0x6f - ldrb r6, [r8, #1] - mov r0, r8 - mov r2, #2 - add r5, r5, #1 - bl ov29_02344BD0 - cmp r6, #0 - beq _022EE7AC - ldr r0, [sp, #4] - strb r6, [r7, #1] - cmp sb, r0 - bne _022EE77C - add r0, sp, #8 - ldr r0, [r0, sb, lsl #2] - bl sub_0200FA68 - b _022EE7AC -_022EE77C: - ldr r0, _022EE810 ; =0x02353538 - ldrb r2, [r8, #1] - ldr r3, [r0] - ldrh r1, [r8] - add r0, r2, r2, lsl #3 - add r0, r3, r0, lsl #6 - add r0, r0, #0x600 - strh r1, [r0, #0x16] - ldrh r1, [r8, #2] - strh r1, [r0, #0x18] - ldrh r1, [r8, #4] - strh r1, [r0, #0x1a] -_022EE7AC: - add sb, sb, #1 -_022EE7B0: - cmp sb, r4 - blt _022EE6FC - cmp r5, #0 - bne _022EE7D4 - ldr r2, _022EE814 ; =0x00000E63 - mov r0, fp - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - b _022EE800 -_022EE7D4: - cmp r5, #1 - bne _022EE7F0 - ldr r2, _022EE818 ; =0x00000E61 - mov r0, fp - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - b _022EE800 -_022EE7F0: - ldr r2, _022EE81C ; =0x00000E62 - mov r0, fp - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget -_022EE800: - add sp, sp, #0xd8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EE808: .word 0x020AF6B8 -_022EE80C: .word 0x022C4434 -_022EE810: .word 0x02353538 -_022EE814: .word 0x00000E63 -_022EE818: .word 0x00000E61 -_022EE81C: .word 0x00000E62 - arm_func_end ov29_022EE62C - - arm_func_start ov29_022EE820 -ov29_022EE820: ; 0x022EE820 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r7, r1 - mov r8, r0 - mov r6, r2 - mov r5, r3 - mov r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022EE980 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_02344148 - cmp r0, #0 - bne _022EE868 - ldr r1, _022EE984 ; =0x00000E64 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022EE868: - cmp r5, #0 - ldr r5, [r7, #0xb4] - bne _022EE8AC - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _022EE8AC - mov r0, r6 - mov r1, #0x20 - bl ov29_022EF478 - mov r0, r7 - mov r1, #0x308 - mov r4, #1 - bl ov29_022E56A0 - mov r0, #0x1e - mov r1, #0x48 - bl ov29_022EA370 -_022EE8AC: - ldrb r0, [r5, #7] - cmp r0, #0 - beq _022EE91C - bl GetFloorType - cmp r0, #2 - beq _022EE90C - mov r2, #1 - strb r2, [r5, #0x172] - mov r0, #0x28 - mov r1, #0x4b - strb r2, [r5, #0x174] - bl ov29_022EA370 - ldr r1, _022EE988 ; =0x022C44E4 - mov r0, r7 - ldrsh r1, [r1] - mov r2, #0x11 - mov r3, #0x254 - bl ov29_0230D11C - ldr r0, _022EE980 ; =0x02353538 - mov r1, #2 - ldr r0, [r0] - mov r4, #0 - strb r1, [r0, #6] - b _022EE968 -_022EE90C: - ldr r1, _022EE98C ; =0x00000E66 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _022EE968 -_022EE91C: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #6] - cmp r0, #0 - beq _022EE94C - ldr r2, _022EE990 ; =0x00000E65 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _022EE958 -_022EE94C: - ldr r1, _022EE990 ; =0x00000E65 - mov r0, r8 - bl LogMessageByIdWithPopup -_022EE958: - mov r0, r7 - mov r2, r8 - mov r1, #0x254 - bl HandleFaint -_022EE968: - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - mov r1, #5 - bl ov29_022EF478 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EE980: .word 0x02353538 -_022EE984: .word 0x00000E64 -_022EE988: .word 0x022C44E4 -_022EE98C: .word 0x00000E66 -_022EE990: .word 0x00000E65 - arm_func_end ov29_022EE820 - - arm_func_start ov29_022EE994 -ov29_022EE994: ; 0x022EE994 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #3 - mov r5, r1 - bl DungeonRandInt - ldr r1, _022EEA20 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_02344148 - cmp r0, #0 - bne _022EE9D8 - ldr r1, _022EEA24 ; =0x00000E68 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022EE9D8: - mov r0, r6 - mov r1, r5 - add r2, r4, #2 - bl ov29_022EF4B4 - mov r4, r0 - ldr r1, _022EEA28 ; =0x0000030F - mov r0, r5 - bl ov29_022E56D4 - cmp r4, #0 - bne _022EEA10 - ldr r1, _022EEA24 ; =0x00000E68 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022EEA10: - ldr r1, _022EEA2C ; =0x00000E67 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EEA20: .word 0x02353538 -_022EEA24: .word 0x00000E68 -_022EEA28: .word 0x0000030F -_022EEA2C: .word 0x00000E67 - arm_func_end ov29_022EE994 - - arm_func_start ov29_022EEA30 -ov29_022EEA30: ; 0x022EEA30 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - movs r4, r1 - mov r5, r0 - mov r8, #0 - beq _022EEB08 - ldr r1, [r4, #0xb4] - mov r0, r8 - add lr, r1, #0x124 - mov r7, r8 - mov r6, r8 - mov ip, #1 - add r2, sp, #0x10 - add r1, sp, #0 -_022EEA68: - ldrb r3, [lr, r7, lsl #3] - add sb, lr, r7, lsl #3 - tst r3, #1 - movne r3, ip - moveq r3, r6 - tst r3, #0xff - ldrneb r3, [sb, #6] - cmpne r3, #0 - strne r7, [r1, r0, lsl #2] - strne sb, [r2, r0, lsl #2] - add r7, r7, #1 - addne r0, r0, #1 - cmp r7, #4 - blt _022EEA68 - cmp r0, #0 - beq _022EEADC - bl DungeonRandInt - mov r6, r0 - add r1, sp, #0x10 - ldr r1, [r1, r6, lsl #2] - mov r0, #0 - strb r0, [r1, #6] - ldrh r1, [r1, #4] - bl ov29_0234B084 - add r1, sp, #0 - ldr r1, [r1, r6, lsl #2] - mov r0, r4 - bl ov29_022FA574 - mov r8, #1 -_022EEADC: - cmp r8, #0 - beq _022EEAF8 - ldr r2, _022EEB10 ; =0x00000E69 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _022EEB08 -_022EEAF8: - ldr r2, _022EEB14 ; =0x00000E6A - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_022EEB08: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EEB10: .word 0x00000E69 -_022EEB14: .word 0x00000E6A - arm_func_end ov29_022EEA30 - - arm_func_start ov29_022EEB18 -ov29_022EEB18: ; 0x022EEB18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sl, r0 - mov r4, r1 - mov r7, #0 - bl ov29_022E333C - ldr r1, _022EED1C ; =0x02353538 - mov r5, r0 - ldr r0, [r1] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_02344148 - cmp r0, #0 - bne _022EEB60 - ldr r1, _022EED20 ; =0x00000E6B - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022EED14 -_022EEB60: - ldrsh r0, [r4] - ldrsh r1, [r4, #2] - bl GetTile - ldrb r2, [r0, #7] - cmp r2, #0xff - bne _022EEB94 - ldrsh r1, [r4] - ldrsh r0, [r4, #2] - sub fp, r1, r5 - sub sb, r0, r5 - add r4, r1, r5 - add r5, r0, r5 - b _022EECE8 -_022EEB94: - ldr r0, _022EED1C ; =0x02353538 - mov r1, #0x1c - ldr r0, [r0] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r0, r2, r1, r0 - ldrsh r3, [r0, #2] - ldrsh r2, [r0, #4] - ldrsh r1, [r0, #6] - ldrsh r0, [r0, #8] - sub fp, r3, #1 - sub sb, r2, #1 - add r4, r1, #1 - add r5, r0, #1 - b _022EECE8 -_022EEBD0: - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - mov r6, fp - str r0, [sp] - b _022EECDC -_022EEBE4: - mov r0, r6 - mov r1, sb - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022EECD8 - ldr r1, [r0] - cmp r1, #3 - bne _022EECD8 - bl ov29_022E1610 - ldrb r0, [r0] - tst r0, #2 - bne _022EECD8 - bl GetKecleonIdToSpawnByFloor - strh r0, [sp, #4] - mov r8, #0 - b _022EEC68 -_022EEC28: - ldr r0, _022EED1C ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - beq _022EEC44 - bl GetKecleonIdToSpawnByFloor - b _022EEC4C -_022EEC44: - mov r0, #0 - bl GetMonsterIdToSpawn -_022EEC4C: - strh r0, [sp, #4] - ldrsh r0, [sp, #4] - mov r1, #0 - bl MewSpawnCheck - cmp r0, #0 - bne _022EEC70 - add r8, r8, #1 -_022EEC68: - cmp r8, #0x64 - blt _022EEC28 -_022EEC70: - ldrsh r0, [sp, #4] - mov r1, #0 - bl MewSpawnCheck - cmp r0, #0 - beq _022EECCC - mov r0, #0 - strh r0, [sp, #0xc] - strb r0, [sp, #6] - ldr r0, [sp] - mov r1, #1 - strh r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #8] - strb r0, [sp, #0x12] - add r0, sp, #4 - strh r6, [sp, #0xe] - bl SpawnMonster - cmp r0, #0 - beq _022EECCC - add r0, sp, #0xe - mov r1, #0 - bl ov29_023456BC - add r7, r7, #1 -_022EECCC: - mov r0, r6 - mov r1, sb - bl ov29_023391EC -_022EECD8: - add r6, r6, #1 -_022EECDC: - cmp r6, r4 - ble _022EEBE4 - add sb, sb, #1 -_022EECE8: - cmp sb, r5 - ble _022EEBD0 - cmp r7, #0 - beq _022EED08 - ldr r1, _022EED24 ; =0x00000E6C - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022EED14 -_022EED08: - ldr r1, _022EED28 ; =0x00000E6D - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_022EED14: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EED1C: .word 0x02353538 -_022EED20: .word 0x00000E6B -_022EED24: .word 0x00000E6C -_022EED28: .word 0x00000E6D - arm_func_end ov29_022EEB18 - - arm_func_start ov29_022EED2C -ov29_022EED2C: ; 0x022EED2C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - movs r5, r1 - mov r6, r0 - beq _022EEE38 - mov r0, r5 - mov r1, #6 - mov r2, #8 - bl ov29_023049A8 - mov r0, #0x10 - mov r1, #0x55 - bl ov29_022EA370 - mov r0, r5 - mov r1, #8 - bl ov29_02304A48 - mov r0, r5 - mov r1, #0x2c - ldr r4, [r5, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - bne _022EEE38 - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022EEE38 - ldrh r0, [r4, #0x62] - strh r0, [sp, #0x10] - ldrh r0, [r4, #0x64] - strh r0, [sp, #0x12] - ldrh r0, [r4, #0x66] - strh r0, [sp, #0x14] - ldrb r0, [r4, #6] - cmp r0, #0 - bne _022EEDC4 - ldrb r0, [r4, #0x63] - bl RemoveHeldItemNoHole -_022EEDC4: - mov r0, #0 - strb r0, [r4, #0x62] - bl ov29_02347030 - ldr r1, _022EEE40 ; =0x0000130F - mov r0, r5 - bl ov29_022E56A0 - ldrb r1, [r4, #0x4c] - ldr r0, _022EEE44 ; =0x0235171C - ldrsh r3, [r5, #4] - mov r1, r1, lsl #0x1d - mov r4, r1, lsr #0x1b - ldrsh r2, [r0, r4] - ldr r1, _022EEE48 ; =0x0235171E - mov r0, r6 - add r2, r3, r2 - strh r2, [sp, #0xc] - ldrsh r2, [r1, r4] - ldrsh r3, [r5, #6] - mov r4, #1 - ldr r1, _022EEE4C ; =0x02351844 - add r2, r3, r2 - strh r2, [sp, #0xe] - str r4, [sp] - str r1, [sp, #4] - add r2, sp, #0xc - add r3, sp, #0x10 - add r1, r5, #4 - str r4, [sp, #8] - bl ov29_02346344 -_022EEE38: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022EEE40: .word 0x0000130F -_022EEE44: .word 0x0235171C -_022EEE48: .word 0x0235171E -_022EEE4C: .word 0x02351844 - arm_func_end ov29_022EED2C - - arm_func_start ov29_022EEE50 -ov29_022EEE50: ; 0x022EEE50 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - mov r1, #0xd - ldr r5, [r4, #0xb4] - bl ov29_02301EAC - cmp r0, #0 - bne _022EEEBC - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _022EEEDC ; =0x000003E7 - add r2, r2, r1 - ldr r1, _022EEEE0 ; =0x022C4770 - cmp r2, r0 - movgt r2, r0 - ldr r1, [r1] - mov r0, r2, lsl #8 - bl MultiplyByFixedPoint - bl sub_02001888 - mov r1, r0 - ldr r3, _022EEEE4 ; =0x0000026D - mov r0, r4 - mov r1, r1, asr #8 - mov r2, #0x16 - bl ov29_0230D11C - ldmia sp!, {r3, r4, r5, pc} -_022EEEBC: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022EEEE8 ; =0x00000E6E - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EEEDC: .word 0x000003E7 -_022EEEE0: .word 0x022C4770 -_022EEEE4: .word 0x0000026D -_022EEEE8: .word 0x00000E6E - arm_func_end ov29_022EEE50 - - arm_func_start ov29_022EEEEC -ov29_022EEEEC: ; 0x022EEEEC - stmdb sp!, {r3, r4, r5, lr} - movs r4, r1 - mov r5, r0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _022EEF3C ; =0x022C45CC - mov r0, r4 - ldrsh r1, [r1] - mov r2, #0x15 - mov r3, #0x26c - bl ov29_0230D11C - mov r0, r4 - bl ov29_022FBD80 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022EEF3C: .word 0x022C45CC - arm_func_end ov29_022EEEEC - - arm_func_start ov29_022EEF40 -ov29_022EEF40: ; 0x022EEF40 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x64 - movs sb, r2 - str r0, [sp, #0xc] - mov sl, r1 - str r3, [sp, #0x10] - ldr r8, [sp, #0x88] - beq _022EF064 - bl ov29_022E7A8C - ldr r1, _022EF06C ; =0x022C4B18 - mov r4, r0 - ldrb r0, [r1, r4] - cmp r0, #0 - bne _022EEFB0 - mov r0, sl - mov r1, r8 - mov r2, r4 - bl ov29_022E58B0 - str r8, [sp] - str r4, [sp, #4] - mov r4, #1 - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r1, sl - mov r2, sb - str r4, [sp, #8] - bl ov29_022EF154 - b _022EF064 -_022EEFB0: - ldr r0, [sb, #0xb4] - mov r5, #0 - ldrb fp, [r0, #6] - str sb, [sp, #0x14] - add r7, r5, #1 -_022EEFC4: - ldr r0, _022EF070 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__022EE348 - cmp r0, #0 - cmpne sb, r6 - beq _022EF004 - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #6] - cmp fp, r0 - addeq r0, sp, #0x14 - streq r6, [r0, r7, lsl #2] - addeq r7, r7, #1 -_022EF004: - add r5, r5, #1 - cmp r5, #0x14 - blt _022EEFC4 - mov sb, #0 - add r5, sp, #0x14 - mov fp, #1 - b _022EF05C -_022EF020: - ldr r6, [r5, sb, lsl #2] - mov r2, r4 - mov r0, r6 - add r1, r6, #4 - bl ov29_022E58B0 - str r8, [sp] - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x10] - mov r2, r6 - mov r1, sl - stmib sp, {r4, fp} - bl ov29_022EF154 - mov r0, #1 - bl ov29_022E38E0 - add sb, sb, #1 -_022EF05C: - cmp sb, r7 - blt _022EF020 -_022EF064: - add sp, sp, #0x64 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EF06C: .word 0x022C4B18 -_022EF070: .word 0x02353538 - arm_func_end ov29_022EEF40 - - arm_func_start ov29_022EF074 -ov29_022EF074: ; 0x022EF074 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - mov r0, #3 - mov r4, r1 - bl DungeonRandInt - mov r2, r0 - mov r0, sl - mov r1, r4 - add r2, r2, #2 - bl ov29_022EF4B4 - cmp r0, #0 - ble _022EF0B0 - ldr r1, _022EF148 ; =0x0000030F - mov r0, r4 - bl ov29_022E56D4 -_022EF0B0: - mov r7, #0 - ldr r4, _022EF14C ; =0x02353538 - mov r8, r7 - mov r5, #1 - mov r6, r7 -_022EF0C4: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb38] - mov r0, sb - bl EntityIsValid__022EE348 - cmp r0, #0 - ldrne r0, [sb, #0xb4] - ldrneb r1, [r0, #9] - cmpne r1, #1 - ldrneb r1, [r0, #0xbc] - cmpne r1, #7 - beq _022EF11C - bl IsExperienceLocked - cmp r0, #0 - bne _022EF11C - mov r0, sb - mov r1, sb - mov r2, r6 - bl ov29_02314EB8 - cmp r0, #0 - movne r7, r5 -_022EF11C: - add r8, r8, #1 - cmp r8, #0x10 - blt _022EF0C4 - cmp r7, #0 - ldrne r0, _022EF150 ; =0x00000E6F - moveq r0, #0xe70 - mov r1, r0, lsl #0x10 - mov r0, sl - mov r1, r1, lsr #0x10 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022EF148: .word 0x0000030F -_022EF14C: .word 0x02353538 -_022EF150: .word 0x00000E6F - arm_func_end ov29_022EF074 - - arm_func_start ov29_022EF154 -ov29_022EF154: ; 0x022EF154 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldrb ip, [sp, #0x24] - ldr lr, [sp, #0x20] - mov r7, r0 - mov r6, r1 - mov r5, r2 - cmp ip, #0x20 - mov r4, #0 - addls pc, pc, ip, lsl #2 - b _022EF454 -_022EF180: ; jump table - b _022EF454 ; case 0 - b _022EF204 ; case 1 - b _022EF214 ; case 2 - b _022EF224 ; case 3 - b _022EF234 ; case 4 - b _022EF248 ; case 5 - b _022EF260 ; case 6 - b _022EF280 ; case 7 - b _022EF2A4 ; case 8 - b _022EF2C4 ; case 9 - b _022EF2F4 ; case 10 - b _022EF314 ; case 11 - b _022EF328 ; case 12 - b _022EF348 ; case 13 - b _022EF368 ; case 14 - b _022EF388 ; case 15 - b _022EF398 ; case 16 - b _022EF3BC ; case 17 - b _022EF3D0 ; case 18 - b _022EF3E4 ; case 19 - b _022EF408 ; case 20 - b _022EF418 ; case 21 - b _022EF428 ; case 22 - b _022EF438 ; case 23 - b _022EF444 ; case 24 - b _022EF454 ; case 25 - b _022EF454 ; case 26 - b _022EF454 ; case 27 - b _022EF454 ; case 28 - b _022EF454 ; case 29 - b _022EF454 ; case 30 - b _022EF454 ; case 31 - b _022EF248 ; case 32 -_022EF204: - mov r0, r6 - mov r1, r5 - bl ov29_022EE36C - b _022EF454 -_022EF214: - mov r0, r6 - mov r1, r5 - bl ov29_022EE434 - b _022EF454 -_022EF224: - mov r0, r6 - mov r1, r5 - bl ov29_022EE62C - b _022EF454 -_022EF234: - mov r0, r6 - mov r1, lr - bl ov29_022EE994 - mov r4, #1 - b _022EF454 -_022EF248: - mov r2, r3 - ldrb r3, [sp, #0x28] - mov r0, r6 - mov r1, r5 - bl ov29_022EE820 - b _022EF454 -_022EF260: - cmp r5, #0 - beq _022EF454 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, r4 - bl TryWarp - b _022EF454 -_022EF280: - cmp r5, #0 - beq _022EF454 - mov r0, #8 - bl DungeonRandInt - mov r2, r0 - mov r0, r7 - mov r1, r5 - bl TryBlowAway - b _022EF454 -_022EF2A4: - cmp r5, #0 - beq _022EF454 - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #1 - bl TryInflictConfusedStatus - b _022EF454 -_022EF2C4: - cmp r5, #0 - beq _022EF454 - ldr r1, _022EF460 ; =0x022C4720 - mov r0, r5 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r6 - mov r1, r5 - mov r3, #1 - bl TryInflictSleepStatus - b _022EF454 -_022EF2F4: - cmp r5, #0 - beq _022EF454 - mov r2, #1 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl LowerSpeed - b _022EF454 -_022EF314: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl TrySealMove - b _022EF454 -_022EF328: - cmp r5, #0 - beq _022EF454 - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #1 - bl TryInflictPoisonedStatus - b _022EF454 -_022EF348: - ldr ip, _022EF464 ; =0x00000251 - mov r0, r6 - mov r1, r5 - add r2, r5, #4 - mov r3, #1 - stmia sp, {r4, ip} - bl ov29_02320448 - b _022EF454 -_022EF368: - ldr ip, _022EF464 ; =0x00000251 - mov r0, r6 - mov r1, r5 - add r2, r5, #4 - mov r3, #2 - stmia sp, {r4, ip} - bl ov29_02320448 - b _022EF454 -_022EF388: - mov r0, r6 - mov r1, r5 - bl ov29_022EEA30 - b _022EF454 -_022EF398: - cmp r5, #0 - beq _022EF454 - ldr r0, _022EF468 ; =0x022C45C8 - ldr r3, _022EF46C ; =0x00000252 - ldrsh r1, [r0] - mov r0, r5 - mov r2, #0xf - bl ov29_0230D11C - b _022EF454 -_022EF3BC: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov29_02319624 - b _022EF454 -_022EF3D0: - mov r0, r6 - mov r1, lr - bl ov29_022EEB18 - mov r4, #1 - b _022EF454 -_022EF3E4: - cmp r5, #0 - beq _022EF454 - ldr r0, _022EF470 ; =0x022C4418 - ldr r3, _022EF474 ; =0x00000245 - ldrsh r1, [r0] - mov r0, r5 - mov r2, #0xa - bl ov29_0230D11C - b _022EF454 -_022EF408: - mov r0, r6 - mov r1, r5 - bl ov29_022EEE50 - b _022EF454 -_022EF418: - mov r0, r6 - mov r1, r5 - bl ov29_022EEEEC - b _022EF454 -_022EF428: - mov r0, r6 - mov r1, r5 - bl ov29_022EED2C - b _022EF454 -_022EF438: - str lr, [sp] - bl ov29_022EEF40 - b _022EF454 -_022EF444: - mov r0, r6 - mov r1, lr - bl ov29_022EF074 - mov r4, #1 -_022EF454: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EF460: .word 0x022C4720 -_022EF464: .word 0x00000251 -_022EF468: .word 0x022C45C8 -_022EF46C: .word 0x00000252 -_022EF470: .word 0x022C4418 -_022EF474: .word 0x00000245 - arm_func_end ov29_022EF154 - - arm_func_start ov29_022EF478 -ov29_022EF478: ; 0x022EF478 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0x10] - mov r5, r1 - mov r0, r4 - bl EntityIsValid__022EE348 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4] - cmp r0, #2 - bne _022EF4AC - mov r0, r4 - bl ov29_022E1608 - strb r5, [r0] -_022EF4AC: - bl ov29_02336F4C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022EF478 - - arm_func_start ov29_022EF4B4 -ov29_022EF4B4: ; 0x022EF4B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r0, #8 - mov sl, r1 - mov sb, r2 - bl DungeonRandInt - mov r8, r0 - ldr r0, _022EF5D0 ; =0x0000017B - mov r7, #0 - mov r6, r7 - add r5, r0, #2 - add r4, r0, #3 - b _022EF5BC -_022EF4E8: - mov r0, #0 - bl GetMonsterIdToSpawn - mov fp, r0 - bl FemaleToMaleForm - ldr r1, _022EF5D0 ; =0x0000017B - cmp r0, r1 - cmpne r0, #0x17c - cmpne r0, r5 - cmpne r0, r4 - beq _022EF52C - sub r0, r0, #0x1cc - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022EF534 -_022EF52C: - mov r0, #1 - b _022EF538 -_022EF534: - mov r0, #0 -_022EF538: - cmp r0, #0 - bne _022EF5B8 - strh fp, [sp] - ldrsh r0, [sp] - mov r1, #0 - and r8, r8, #7 - bl MewSpawnCheck - cmp r0, #0 - beq _022EF5B4 - ldr r1, _022EF5D4 ; =0x0235171C - mov r0, #0 - mov r2, r8, lsl #2 - ldrsh r3, [r1, r2] - strh r0, [sp, #8] - strb r0, [sp, #2] - ldrsh r0, [sl] - add r1, r1, r8, lsl #2 - ldrsh r2, [r1, #2] - add r0, r0, r3 - strh r0, [sp, #0xa] - ldrsh r3, [sl, #2] - add r0, sp, #0 - mov r1, #1 - add r2, r3, r2 - strh r2, [sp, #0xc] - mov r2, #0 - str r2, [sp, #4] - strb r2, [sp, #0xe] - bl SpawnMonster - cmp r0, #0 - addne r7, r7, #1 -_022EF5B4: - add r8, r8, #1 -_022EF5B8: - add r6, r6, #1 -_022EF5BC: - cmp r6, sb - blt _022EF4E8 - mov r0, r7 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022EF5D0: .word 0x0000017B -_022EF5D4: .word 0x0235171C - arm_func_end ov29_022EF4B4 - - arm_func_start ov29_022EF5D8 -ov29_022EF5D8: ; 0x022EF5D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r5, #0 - bl ov29_022E333C - ldrb r7, [r8, #0x25] - mov r6, r0 - cmp r7, #0xff - beq _022EF608 - mov r0, r8 - bl HasDropeyeStatus - cmp r0, #0 - beq _022EF65C -_022EF608: - ldrsh r0, [r8, #6] - sub r4, r0, r6 - b _022EF648 -_022EF614: - ldrsh r0, [r8, #4] - sub r7, r0, r6 - b _022EF634 -_022EF620: - mov r0, r7 - mov r1, r4 - bl ov29_022EF700 - orr r5, r5, r0 - add r7, r7, #1 -_022EF634: - ldrsh r0, [r8, #4] - add r0, r0, r6 - cmp r7, r0 - ble _022EF620 - add r4, r4, #1 -_022EF648: - ldrsh r0, [r8, #6] - add r0, r0, r6 - cmp r4, r0 - ble _022EF614 - b _022EF6C4 -_022EF65C: - ldr r0, _022EF6F4 ; =0x02353538 - mov r1, #0x1c - ldr r0, [r0] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r4, r7, r1, r0 - ldrsh r0, [r4, #4] - sub r6, r0, #1 - b _022EF6B4 -_022EF680: - ldrsh r0, [r4, #2] - sub r7, r0, #1 - b _022EF6A0 -_022EF68C: - mov r0, r7 - mov r1, r6 - bl ov29_022EF700 - orr r5, r5, r0 - add r7, r7, #1 -_022EF6A0: - ldrsh r0, [r4, #6] - add r0, r0, #1 - cmp r7, r0 - ble _022EF68C - add r6, r6, #1 -_022EF6B4: - ldrsh r0, [r4, #8] - add r0, r0, #1 - cmp r6, r0 - ble _022EF680 -_022EF6C4: - cmp r5, #0 - beq _022EF6E4 - ldr r1, _022EF6F8 ; =0x00000E02 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - bl ov29_02339CE8 - bl ov29_02336F4C - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022EF6E4: - ldr r1, _022EF6FC ; =0x00000E03 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EF6F4: .word 0x02353538 -_022EF6F8: .word 0x00000E02 -_022EF6FC: .word 0x00000E03 - arm_func_end ov29_022EF5D8 - - arm_func_start ov29_022EF700 -ov29_022EF700: ; 0x022EF700 - stmdb sp!, {r3, lr} - bl GetTile - ldr r1, [r0, #0x10] - cmp r1, #0 - beq _022EF730 - ldr r0, [r1] - cmp r0, #2 - ldreqb r0, [r1, #0x20] - cmpeq r0, #0 - moveq r0, #1 - streqb r0, [r1, #0x20] - ldmeqia sp!, {r3, pc} -_022EF730: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_022EF700 - - arm_func_start ov29_022EF738 -ov29_022EF738: ; 0x022EF738 - stmdb sp!, {r3, lr} - bl ov29_023361D4 - cmp r0, #0 - beq _022EF780 - ldr r0, _022EF798 ; =0x02353538 - mov r1, #0xc - ldr r0, [r0] - ldr r2, _022EF79C ; =0x022C6C7A - add r0, r0, #0x4000 - ldrb r3, [r0, #0xda] - smulbb r1, r3, r1 - ldrb r1, [r2, r1] - cmp r1, #0 - movne r1, #2 - strneb r1, [r0, #0xca] - moveq r1, #1 - streqb r1, [r0, #0xca] - ldmia sp!, {r3, pc} -_022EF780: - ldr r0, _022EF798 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x4000 - strb r1, [r0, #0xca] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EF798: .word 0x02353538 -_022EF79C: .word 0x022C6C7A - arm_func_end ov29_022EF738 - - arm_func_start EntityIsValid__022EF7A0 -EntityIsValid__022EF7A0: ; 0x022EF7A0 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022EF7A0 - - arm_func_start ov29_022EF7C4 -ov29_022EF7C4: ; 0x022EF7C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r2 - cmp r1, #5 - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r4, _022EF89C ; =0x02353538 - ldr r0, [r4] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xca] - cmp r0, #0 - cmpne r0, #1 - cmpne r0, #3 - beq _022EF874 - mov r5, #1 - mov r6, #0 - b _022EF84C -_022EF804: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb38] - cmp r8, sb - beq _022EF840 - mov r0, sb - bl EntityIsValid__022EF7A0 - cmp r0, #0 - beq _022EF840 - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #8] - cmp r0, #0 - moveq r5, #0 - beq _022EF854 -_022EF840: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_022EF84C: - cmp r6, #0x10 - blt _022EF804 -_022EF854: - cmp r5, #0 - beq _022EF874 - mov r0, #0x64 - bl ov29_0234BA54 - ldr r0, _022EF89C ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #6] -_022EF874: - cmp r7, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _022EF89C ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #6] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _022EF8A0 ; =0x000003E7 - bl ov29_022EAE14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EF89C: .word 0x02353538 -_022EF8A0: .word 0x000003E7 - arm_func_end ov29_022EF7C4 - - arm_func_start ov29_022EF8A4 -ov29_022EF8A4: ; 0x022EF8A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, #1 - ldr r5, _022EF934 ; =0x02353538 - mov r7, r8 - mov r6, #0 - mvn r4, #0 -_022EF8BC: - ldr r0, [r5] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] - cmp sb, #0 - beq _022EF918 - mov r0, sb - bl EntityIsValid__022EF7A0 - cmp r0, #0 - ldrne r0, [r5] - addne r0, r0, r8, lsl #2 - addne r0, r0, #0xcc00 - ldrnesh r1, [r0, #0xec] - cmpne r1, r4 - ldrnesh r2, [r0, #0xee] - cmpne r2, r4 - beq _022EF918 - mov r0, sb - mov r3, r7 - bl ov29_022F85F0 - mov r0, sb - mov r1, r6 - bl ov29_022E1A40 -_022EF918: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022EF8BC - bl ov29_023444D4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022EF934: .word 0x02353538 - arm_func_end ov29_022EF8A4 - - arm_func_start ov29_022EF938 -ov29_022EF938: ; 0x022EF938 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _022EF9B4 ; =0x02353538 - mov r4, #0 - mov r6, #4 -_022EF948: - ldr r0, [r5] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - cmp r7, #0 - beq _022EF99C - mov r0, r7 - bl EntityIsValid__022EF7A0 - cmp r0, #0 - beq _022EF99C - ldr r0, [r5] - add r0, r0, r4 - add r0, r0, #0xc000 - ldrb r1, [r0, #0xd0c] - mov r0, r7 - cmp r1, #0xff - beq _022EF994 - bl ov29_022FA360 - b _022EF99C -_022EF994: - mov r1, r6 - bl ov29_022FA360 -_022EF99C: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #4 - blt _022EF948 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022EF9B4: .word 0x02353538 - arm_func_end ov29_022EF938 - - arm_func_start ov29_022EF9B8 -ov29_022EF9B8: ; 0x022EF9B8 - bx lr - arm_func_end ov29_022EF9B8 - - arm_func_start ov29_022EF9BC -ov29_022EF9BC: ; 0x022EF9BC - ldr ip, _022EF9C4 ; =ov29_02348F20 - bx ip - .align 2, 0 -_022EF9C4: .word ov29_02348F20 - arm_func_end ov29_022EF9BC - - arm_func_start ov29_022EF9C8 -ov29_022EF9C8: ; 0x022EF9C8 - stmdb sp!, {r3, lr} - bl IsFloorOver - cmp r0, #0 - ldreq r0, _022EF9E8 ; =0x02353538 - ldreq r0, [r0] - ldreqb r0, [r0, #6] - cmpeq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022EF9E8: .word 0x02353538 - arm_func_end ov29_022EF9C8 - - arm_func_start ov29_022EF9EC -ov29_022EF9EC: ; 0x022EF9EC - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xbc] - cmp r0, #0x14 - addls pc, pc, r0, lsl #2 - b _022EFA64 -_022EFA00: ; jump table - b _022EFA5C ; case 0 - b _022EFA5C ; case 1 - b _022EFA5C ; case 2 - b _022EFA5C ; case 3 - b _022EFA5C ; case 4 - b _022EFA5C ; case 5 - b _022EFA64 ; case 6 - b _022EFA54 ; case 7 - b _022EFA5C ; case 8 - b _022EFA54 ; case 9 - b _022EFA54 ; case 10 - b _022EFA54 ; case 11 - b _022EFA54 ; case 12 - b _022EFA54 ; case 13 - b _022EFA54 ; case 14 - b _022EFA54 ; case 15 - b _022EFA5C ; case 16 - b _022EFA5C ; case 17 - b _022EFA5C ; case 18 - b _022EFA5C ; case 19 - b _022EFA5C ; case 20 -_022EFA54: - mov r0, #1 - bx lr -_022EFA5C: - mov r0, #0 - bx lr -_022EFA64: - mov r0, #0 - bx lr - arm_func_end ov29_022EF9EC - - arm_func_start ov29_022EFA6C -ov29_022EFA6C: ; 0x022EFA6C - mov r0, #1 - bx lr - arm_func_end ov29_022EFA6C - - arm_func_start ov29_022EFA74 -ov29_022EFA74: ; 0x022EFA74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldr r1, _022EFAE0 ; =0x02353538 - ldr r0, _022EFAE4 ; =0x000286D0 - ldr r1, [r1] - ldrsh r6, [r1, r0] - cmp r6, #0 - ble _022EFAD8 - add r0, sp, #0 - mov r1, #0x44 - bl ov29_0230F798 - mov r7, r0 - cmp r7, #0 - ble _022EFAD8 - mov r8, #0 - add r5, sp, #0 - mov r4, r8 - b _022EFAD0 -_022EFABC: - ldr r0, [r5, r8, lsl #2] - mov r1, r6 - mov r2, r4 - bl ov29_022FA144 - add r8, r8, #1 -_022EFAD0: - cmp r8, r7 - blt _022EFABC -_022EFAD8: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022EFAE0: .word 0x02353538 -_022EFAE4: .word 0x000286D0 - arm_func_end ov29_022EFA74 - - arm_func_start ov29_022EFAE8 -ov29_022EFAE8: ; 0x022EFAE8 - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #3 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_022EFAE8 - - arm_func_start ov29_022EFB04 -ov29_022EFB04: ; 0x022EFB04 - add r0, r0, #0xf0 - and r0, r0, #0xff - cmp r0, #4 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_022EFB04 - - arm_func_start ov29_022EFB20 -ov29_022EFB20: ; 0x022EFB20 - stmdb sp!, {r3, lr} - cmp r0, #0 - beq _022EFB48 - mov r0, #0xa - bl ov29_0234BA54 - mov r0, #0 - bl ov29_0234B1A4 - mov r0, #0xa - mov r1, #0x62 - bl ov29_022EA370 -_022EFB48: - bl ov29_0234D630 - ldr r1, _022EFB7C ; =0x023535A4 - mvn r2, #1 - mov r0, #1 - strb r2, [r1] - bl ov29_022DE5F0 - ldr r1, _022EFB80 ; =0x0237C9A0 - strh r0, [r1, #2] - mov r0, #0 - bl ov29_022DE5F0 - ldr r1, _022EFB80 ; =0x0237C9A0 - strh r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022EFB7C: .word 0x023535A4 -_022EFB80: .word 0x0237C9A0 - arm_func_end ov29_022EFB20 - - arm_func_start ov29_022EFB84 -ov29_022EFB84: ; 0x022EFB84 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - bl ov29_0234D8A0 - cmp r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0xa - mov r1, #0x62 - bl ov29_022EA370 - ldmia sp!, {r4, pc} - arm_func_end ov29_022EFB84 - - arm_func_start ov29_022EFBAC -ov29_022EFBAC: ; 0x022EFBAC - ldr r1, _022F04E4 ; =0x000001FE - cmp r0, r1 - bgt _022F0314 - bge _022F04C4 - cmp r0, #0x1d4 - bgt _022F024C - bge _022F04C4 - sub r2, r1, #0x53 - cmp r0, r2 - bgt _022F01E4 - sub r1, r1, #0xe9 - subs r1, r0, r1 - addpl pc, pc, r1, lsl #2 - b _022EFE40 -_022EFBE4: ; jump table - b _022F04C4 ; case 0 - b _022F04C4 ; case 1 - b _022F04C4 ; case 2 - b _022F04CC ; case 3 - b _022F04DC ; case 4 - b _022F04DC ; case 5 - b _022F04DC ; case 6 - b _022F04DC ; case 7 - b _022F04DC ; case 8 - b _022F04DC ; case 9 - b _022F04DC ; case 10 - b _022F04DC ; case 11 - b _022F04CC ; case 12 - b _022F04CC ; case 13 - b _022F04DC ; case 14 - b _022F04DC ; case 15 - b _022F04DC ; case 16 - b _022F04DC ; case 17 - b _022F04C4 ; case 18 - b _022F04DC ; case 19 - b _022F04C4 ; case 20 - b _022F04DC ; case 21 - b _022F04DC ; case 22 - b _022F04DC ; case 23 - b _022F04DC ; case 24 - b _022F04DC ; case 25 - b _022F04DC ; case 26 - b _022F04DC ; case 27 - b _022F04DC ; case 28 - b _022F04C4 ; case 29 - b _022F04C4 ; case 30 - b _022F04DC ; case 31 - b _022F04DC ; case 32 - b _022F04DC ; case 33 - b _022F04DC ; case 34 - b _022F04C4 ; case 35 - b _022F04DC ; case 36 - b _022F04DC ; case 37 - b _022F04DC ; case 38 - b _022F04DC ; case 39 - b _022F04DC ; case 40 - b _022F04DC ; case 41 - b _022F04C4 ; case 42 - b _022F04C4 ; case 43 - b _022F04DC ; case 44 - b _022F04DC ; case 45 - b _022F04DC ; case 46 - b _022F04DC ; case 47 - b _022F04DC ; case 48 - b _022F04DC ; case 49 - b _022F04DC ; case 50 - b _022F04DC ; case 51 - b _022F04CC ; case 52 - b _022F04DC ; case 53 - b _022F04DC ; case 54 - b _022F04DC ; case 55 - b _022F04DC ; case 56 - b _022F04DC ; case 57 - b _022F04C4 ; case 58 - b _022F04DC ; case 59 - b _022F04DC ; case 60 - b _022F04DC ; case 61 - b _022F04DC ; case 62 - b _022F04DC ; case 63 - b _022F04CC ; case 64 - b _022F04CC ; case 65 - b _022F04DC ; case 66 - b _022F04DC ; case 67 - b _022F04DC ; case 68 - b _022F04C4 ; case 69 - b _022F04C4 ; case 70 - b _022F04C4 ; case 71 - b _022F04C4 ; case 72 - b _022F04DC ; case 73 - b _022F04DC ; case 74 - b _022F04DC ; case 75 - b _022F04C4 ; case 76 - b _022F04DC ; case 77 - b _022F04DC ; case 78 - b _022F04DC ; case 79 - b _022F04CC ; case 80 - b _022F04C4 ; case 81 - b _022F04DC ; case 82 - b _022F04DC ; case 83 - b _022F04C4 ; case 84 - b _022F04CC ; case 85 - b _022F04CC ; case 86 - b _022F04DC ; case 87 - b _022F04C4 ; case 88 - b _022F04C4 ; case 89 - b _022F04C4 ; case 90 - b _022F04C4 ; case 91 - b _022F04DC ; case 92 - b _022F04DC ; case 93 - b _022F04C4 ; case 94 - b _022F04C4 ; case 95 - b _022F04DC ; case 96 - b _022F04DC ; case 97 - b _022F04DC ; case 98 - b _022F04DC ; case 99 - b _022F04C4 ; case 100 - b _022F04DC ; case 101 - b _022F04C4 ; case 102 - b _022F04C4 ; case 103 - b _022F04C4 ; case 104 - b _022F04C4 ; case 105 - b _022F04DC ; case 106 - b _022F04DC ; case 107 - b _022F04C4 ; case 108 - b _022F04DC ; case 109 - b _022F04C4 ; case 110 - b _022F04DC ; case 111 - b _022F04DC ; case 112 - b _022F04DC ; case 113 - b _022F04DC ; case 114 - b _022F04DC ; case 115 - b _022F04DC ; case 116 - b _022F04C4 ; case 117 - b _022F04CC ; case 118 - b _022F04DC ; case 119 - b _022F04DC ; case 120 - b _022F04CC ; case 121 - b _022F04C4 ; case 122 - b _022F04C4 ; case 123 - b _022F04C4 ; case 124 - b _022F04C4 ; case 125 - b _022F04DC ; case 126 - b _022F04DC ; case 127 - b _022F04CC ; case 128 - b _022F04C4 ; case 129 - b _022F04C4 ; case 130 - b _022F04DC ; case 131 - b _022F04DC ; case 132 - b _022F04C4 ; case 133 - b _022F04DC ; case 134 - b _022F04C4 ; case 135 - b _022F04C4 ; case 136 - b _022F04C4 ; case 137 - b _022F04DC ; case 138 - b _022F04C4 ; case 139 - b _022F04C4 ; case 140 - b _022F04C4 ; case 141 - b _022F04C4 ; case 142 - b _022F04C4 ; case 143 - b _022F04C4 ; case 144 - b _022F04DC ; case 145 - b _022F04DC ; case 146 - b _022F04DC ; case 147 - b _022F04CC ; case 148 - b _022F04CC ; case 149 - b _022F04CC ; case 150 -_022EFE40: - cmp r0, #0xee - bgt _022F0194 - subs r1, r0, #0x29 - addpl pc, pc, r1, lsl #2 - b _022F016C -_022EFE54: ; jump table - b _022F04C4 ; case 0 - b _022F04C4 ; case 1 - b _022F04DC ; case 2 - b _022F04DC ; case 3 - b _022F04DC ; case 4 - b _022F04DC ; case 5 - b _022F04DC ; case 6 - b _022F04DC ; case 7 - b _022F04C4 ; case 8 - b _022F04CC ; case 9 - b _022F04CC ; case 10 - b _022F04DC ; case 11 - b _022F04CC ; case 12 - b _022F04DC ; case 13 - b _022F04DC ; case 14 - b _022F04DC ; case 15 - b _022F04DC ; case 16 - b _022F04CC ; case 17 - b _022F04CC ; case 18 - b _022F04DC ; case 19 - b _022F04DC ; case 20 - b _022F04DC ; case 21 - b _022F04DC ; case 22 - b _022F04DC ; case 23 - b _022F04D4 ; case 24 - b _022F04DC ; case 25 - b _022F04DC ; case 26 - b _022F04DC ; case 27 - b _022F04DC ; case 28 - b _022F04DC ; case 29 - b _022F04DC ; case 30 - b _022F04C4 ; case 31 - b _022F04C4 ; case 32 - b _022F04C4 ; case 33 - b _022F04DC ; case 34 - b _022F04DC ; case 35 - b _022F04DC ; case 36 - b _022F04DC ; case 37 - b _022F04DC ; case 38 - b _022F04DC ; case 39 - b _022F04C4 ; case 40 - b _022F04C4 ; case 41 - b _022F04DC ; case 42 - b _022F04DC ; case 43 - b _022F04DC ; case 44 - b _022F04DC ; case 45 - b _022F04DC ; case 46 - b _022F04DC ; case 47 - b _022F04DC ; case 48 - b _022F04DC ; case 49 - b _022F04C4 ; case 50 - b _022F04C4 ; case 51 - b _022F04C4 ; case 52 - b _022F04DC ; case 53 - b _022F04DC ; case 54 - b _022F04DC ; case 55 - b _022F04DC ; case 56 - b _022F04CC ; case 57 - b _022F04CC ; case 58 - b _022F04DC ; case 59 - b _022F04DC ; case 60 - b _022F04DC ; case 61 - b _022F04DC ; case 62 - b _022F04DC ; case 63 - b _022F04DC ; case 64 - b _022F04DC ; case 65 - b _022F04DC ; case 66 - b _022F04DC ; case 67 - b _022F04C4 ; case 68 - b _022F04C4 ; case 69 - b _022F04DC ; case 70 - b _022F04DC ; case 71 - b _022F04DC ; case 72 - b _022F04DC ; case 73 - b _022F04DC ; case 74 - b _022F04C4 ; case 75 - b _022F04C4 ; case 76 - b _022F04C4 ; case 77 - b _022F04C4 ; case 78 - b _022F04DC ; case 79 - b _022F04DC ; case 80 - b _022F04DC ; case 81 - b _022F04DC ; case 82 - b _022F04DC ; case 83 - b _022F04DC ; case 84 - b _022F04DC ; case 85 - b _022F04DC ; case 86 - b _022F04DC ; case 87 - b _022F04C4 ; case 88 - b _022F04C4 ; case 89 - b _022F04DC ; case 90 - b _022F04CC ; case 91 - b _022F04C4 ; case 92 - b _022F04CC ; case 93 - b _022F04CC ; case 94 - b _022F04DC ; case 95 - b _022F04C4 ; case 96 - b _022F04DC ; case 97 - b _022F04DC ; case 98 - b _022F04DC ; case 99 - b _022F04DC ; case 100 - b _022F04C4 ; case 101 - b _022F04DC ; case 102 - b _022F04C4 ; case 103 - b _022F04C4 ; case 104 - b _022F04C4 ; case 105 - b _022F04DC ; case 106 - b _022F04DC ; case 107 - b _022F04DC ; case 108 - b _022F04C4 ; case 109 - b _022F04C4 ; case 110 - b _022F04DC ; case 111 - b _022F04DC ; case 112 - b _022F04DC ; case 113 - b _022F04DC ; case 114 - b _022F04DC ; case 115 - b _022F04DC ; case 116 - b _022F04DC ; case 117 - b _022F04DC ; case 118 - b _022F04DC ; case 119 - b _022F04CC ; case 120 - b _022F04CC ; case 121 - b _022F04CC ; case 122 - b _022F04CC ; case 123 - b _022F04C4 ; case 124 - b _022F04C4 ; case 125 - b _022F04DC ; case 126 - b _022F04DC ; case 127 - b _022F04C4 ; case 128 - b _022F04C4 ; case 129 - b _022F04C4 ; case 130 - b _022F04DC ; case 131 - b _022F04DC ; case 132 - b _022F04DC ; case 133 - b _022F04DC ; case 134 - b _022F04DC ; case 135 - b _022F04DC ; case 136 - b _022F04DC ; case 137 - b _022F04DC ; case 138 - b _022F04DC ; case 139 - b _022F04DC ; case 140 - b _022F04DC ; case 141 - b _022F04DC ; case 142 - b _022F04DC ; case 143 - b _022F04DC ; case 144 - b _022F04DC ; case 145 - b _022F04C4 ; case 146 - b _022F04C4 ; case 147 - b _022F04C4 ; case 148 - b _022F04C4 ; case 149 - b _022F04C4 ; case 150 - b _022F04DC ; case 151 - b _022F04C4 ; case 152 - b _022F04DC ; case 153 - b _022F04DC ; case 154 - b _022F04DC ; case 155 - b _022F04DC ; case 156 - b _022F04CC ; case 157 - b _022F04DC ; case 158 - b _022F04C4 ; case 159 - b _022F04C4 ; case 160 - b _022F04C4 ; case 161 - b _022F04C4 ; case 162 - b _022F04C4 ; case 163 - b _022F04C4 ; case 164 - b _022F04C4 ; case 165 - b _022F04C4 ; case 166 - b _022F04C4 ; case 167 - b _022F04C4 ; case 168 - b _022F04C4 ; case 169 - b _022F04C4 ; case 170 - b _022F04C4 ; case 171 - b _022F04C4 ; case 172 - b _022F04C4 ; case 173 - b _022F04C4 ; case 174 - b _022F04C4 ; case 175 - b _022F04C4 ; case 176 - b _022F04C4 ; case 177 - b _022F04C4 ; case 178 - b _022F04C4 ; case 179 - b _022F04C4 ; case 180 - b _022F04C4 ; case 181 - b _022F04C4 ; case 182 - b _022F04C4 ; case 183 - b _022F04C4 ; case 184 - b _022F04C4 ; case 185 - b _022F04C4 ; case 186 - b _022F04C4 ; case 187 - b _022F04DC ; case 188 - b _022F04DC ; case 189 - b _022F04DC ; case 190 - b _022F04C4 ; case 191 - b _022F04DC ; case 192 - b _022F04C4 ; case 193 - b _022F04DC ; case 194 - b _022F04DC ; case 195 - b _022F04DC ; case 196 - b _022F04C4 ; case 197 -_022F016C: - cmp r0, #0xf - bgt _022F0188 - cmp r0, #0xc - blt _022F04DC - cmpne r0, #0xf - beq _022F04C4 - b _022F04DC -_022F0188: - cmp r0, #0x16 - beq _022F04C4 - b _022F04DC -_022F0194: - cmp r0, #0x104 - bgt _022F01D4 - subs r1, r0, #0xfa - addpl pc, pc, r1, lsl #2 - b _022F04DC -_022F01A8: ; jump table - b _022F04C4 ; case 0 - b _022F04DC ; case 1 - b _022F04DC ; case 2 - b _022F04C4 ; case 3 - b _022F04CC ; case 4 - b _022F04DC ; case 5 - b _022F04DC ; case 6 - b _022F04C4 ; case 7 - b _022F04DC ; case 8 - b _022F04DC ; case 9 - b _022F04C4 ; case 10 -_022F01D4: - ldr r1, _022F04E8 ; =0x00000112 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F01E4: - sub r2, r1, #0x37 - cmp r0, r2 - bgt _022F0220 - bge _022F04C4 - sub r2, r1, #0x39 - cmp r0, r2 - bgt _022F0210 - sub r1, r1, #0x39 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0210: - sub r1, r1, #0x38 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0220: - sub r2, r1, #0x2c - cmp r0, r2 - bgt _022F023C - sub r1, r1, #0x2c - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F023C: - sub r1, r1, #0x2b - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F024C: - sub r2, r1, #0x14 - cmp r0, r2 - bgt _022F02BC - bge _022F04CC - sub r2, r1, #0x20 - cmp r0, r2 - bgt _022F0294 - bge _022F04C4 - sub r2, r1, #0x27 - cmp r0, r2 - bgt _022F0288 - sub r1, r1, #0x27 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0288: - cmp r0, #0x1d8 - beq _022F04CC - b _022F04DC -_022F0294: - sub r2, r1, #0x1f - cmp r0, r2 - bgt _022F02B0 - sub r1, r1, #0x1f - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F02B0: - cmp r0, #0x1e4 - beq _022F04C4 - b _022F04DC -_022F02BC: - sub r2, r1, #0xb - cmp r0, r2 - bgt _022F02F8 - bge _022F04C4 - sub r2, r1, #0xd - cmp r0, r2 - bgt _022F02E8 - sub r1, r1, #0xd - cmp r0, r1 - beq _022F04CC - b _022F04DC -_022F02E8: - sub r1, r1, #0xc - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F02F8: - cmp r0, #0x1f4 - bgt _022F0308 - beq _022F04C4 - b _022F04DC -_022F0308: - cmp r0, #0x1f8 - beq _022F04C4 - b _022F04DC -_022F0314: - add r2, r1, #0x9b - cmp r0, r2 - bgt _022F03FC - bge _022F04D4 - add r2, r1, #0x10 - cmp r0, r2 - bgt _022F0398 - bge _022F04CC - cmp r0, #0x204 - bgt _022F036C - bge _022F04C4 - add r2, r1, #1 - cmp r0, r2 - bgt _022F035C - add r1, r1, #1 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F035C: - add r1, r1, #4 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F036C: - add r2, r1, #0xb - cmp r0, r2 - bgt _022F0388 - add r1, r1, #0xb - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0388: - add r1, r1, #0xf - cmp r0, r1 - beq _022F04CC - b _022F04DC -_022F0398: - add r2, r1, #0x17 - cmp r0, r2 - bgt _022F03D0 - bge _022F04C4 - add r2, r1, #0x15 - cmp r0, r2 - bgt _022F03C4 - add r1, r1, #0x15 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F03C4: - cmp r0, #0x214 - beq _022F04C4 - b _022F04DC -_022F03D0: - add r2, r1, #0x37 - cmp r0, r2 - bgt _022F03EC - add r1, r1, #0x37 - cmp r0, r1 - beq _022F04CC - b _022F04DC -_022F03EC: - add r1, r1, #0x38 - cmp r0, r1 - beq _022F04CC - b _022F04DC -_022F03FC: - ldr r2, _022F04EC ; =0x0000037F - cmp r0, r2 - bgt _022F0464 - bge _022F04C4 - sub r1, r2, #0x82 - cmp r0, r1 - bgt _022F0440 - bge _022F04C4 - sub r1, r2, #0xa6 - cmp r0, r1 - bgt _022F0430 - beq _022F04C4 - b _022F04DC -_022F0430: - sub r1, r2, #0xa5 - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0440: - sub r1, r2, #0x81 - cmp r0, r1 - bgt _022F0454 - beq _022F04C4 - b _022F04DC -_022F0454: - sub r1, r2, #0x61 - cmp r0, r1 - beq _022F04CC - b _022F04DC -_022F0464: - add r1, r2, #0x9f - cmp r0, r1 - bgt _022F0498 - bge _022F04C4 - add r1, r2, #0x5a - cmp r0, r1 - bgt _022F0488 - beq _022F04C4 - b _022F04DC -_022F0488: - add r1, r2, #0x6a - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F0498: - add r1, r2, #0xcb - cmp r0, r1 - bgt _022F04B8 - bge _022F04C4 - add r1, r2, #0xab - cmp r0, r1 - beq _022F04C4 - b _022F04DC -_022F04B8: - add r1, r2, #0xcc - cmp r0, r1 - bne _022F04DC -_022F04C4: - mov r0, #0 - bx lr -_022F04CC: - mov r0, #1 - bx lr -_022F04D4: - mov r0, #0 - bx lr -_022F04DC: - mov r0, #1 - bx lr - .align 2, 0 -_022F04E4: .word 0x000001FE -_022F04E8: .word 0x00000112 -_022F04EC: .word 0x0000037F - arm_func_end ov29_022EFBAC - - arm_func_start ov29_022F04F0 -ov29_022F04F0: ; 0x022F04F0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldrsh r0, [r4, #4] - bl ov29_022EFBAC - cmp r0, #0 - movne r0, #1 - strneb r0, [r5, #0xb3] - strneb r0, [r4, #0x171] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022F04F0 - - arm_func_start ov29_022F0518 -ov29_022F0518: ; 0x022F0518 - ldr r2, [r0, #0xb4] - mov r1, #0 - ldr ip, _022F0530 ; =sub_0201D198 - add r0, r0, #0x2c - strb r1, [r2, #0x171] - bx ip - .align 2, 0 -_022F0530: .word sub_0201D198 - arm_func_end ov29_022F0518 - - arm_func_start ov29_022F0534 -ov29_022F0534: ; 0x022F0534 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _022F058C ; =0x02353538 - mov r7, r0 - mov r5, #0 -_022F0544: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__022F0590 - cmp r0, #0 - beq _022F057C - cmp r7, #0 - mov r0, r6 - bne _022F0578 - bl ov29_022F0518 - b _022F057C -_022F0578: - bl ov29_022F04F0 -_022F057C: - add r5, r5, #1 - cmp r5, #0x14 - blt _022F0544 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F058C: .word 0x02353538 - arm_func_end ov29_022F0534 - - arm_func_start EntityIsValid__022F0590 -EntityIsValid__022F0590: ; 0x022F0590 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022F0590 - - arm_func_start ov29_022F05B4 -ov29_022F05B4: ; 0x022F05B4 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r2, #0 - bne _022F05D4 - bl ov29_022F0518 - mov r0, r4 - bl ov29_022F0518 - ldmia sp!, {r4, pc} -_022F05D4: - bl ov29_022F04F0 - mov r0, r4 - bl ov29_022F04F0 - ldmia sp!, {r4, pc} - arm_func_end ov29_022F05B4 - - arm_func_start ov29_022F05E4 -ov29_022F05E4: ; 0x022F05E4 - stmdb sp!, {r3, lr} - bl ov29_022F0AE0 - bl ov29_0234D668 - bl ov29_0234D838 - mov r0, #0x20 - mov r1, #0x62 - bl ov29_022EA370 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F05E4 - - arm_func_start ov29_022F0604 -ov29_022F0604: ; 0x022F0604 - stmdb sp!, {r3, lr} - mov r3, #0 - str r3, [sp] - bl ov29_022F0984 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0604 - - arm_func_start ov29_022F0618 -ov29_022F0618: ; 0x022F0618 - stmdb sp!, {r3, lr} - mov ip, #0 - str ip, [sp] - bl ov29_022F0984 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0618 - - arm_func_start ov29_022F062C -ov29_022F062C: ; 0x022F062C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, #1 - str r4, [sp] - bl ov29_022F0984 - mov r4, r0 - bl ov29_022F0AE0 - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_022F062C - - arm_func_start ov29_022F0654 -ov29_022F0654: ; 0x022F0654 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - add r1, r1, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r4 - and r1, r1, #0xff - bl ov29_022FA360 - ldmia sp!, {r4, pc} - arm_func_end ov29_022F0654 - - arm_func_start ov29_022F067C -ov29_022F067C: ; 0x022F067C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x24 - mov r7, r0 - mov r6, r2 - cmp r1, #0 - bne _022F06F4 - mov r5, #0 - ldr r8, _022F077C ; =0x02353538 - mov r4, r5 - add sb, sp, #0x10 -_022F06A4: - ldr r0, [r8] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] - mov r0, sl - bl EntityIsValid__022F0590 - cmp r0, #0 - strne sl, [sb, r5, lsl #2] - add r4, r4, #1 - addne r5, r5, #1 - cmp r4, #4 - blt _022F06A4 - cmp r5, #4 - addlt r0, sp, #0x10 - movlt r1, #0 - strlt r1, [r0, r5, lsl #2] - blt _022F0700 - moveq r0, #0 - streq r0, [sp, #0x20] - b _022F0700 -_022F06F4: - mov r0, #0 - str r1, [sp, #0x10] - str r0, [sp, #0x14] -_022F0700: - mov r2, #0 - mov r4, #1 - strb r4, [sp, #8] - strh r2, [sp, #0xa] - strh r6, [sp, #0xc] - strb r4, [sp, #0xe] - strb r2, [sp, #0xf] - add r1, sp, #8 - add r3, sp, #0x10 - mov r0, r7 - stmia sp, {r2, r4} - bl ov29_02322DDC - mov r0, r4 - bl ov29_022E38E0 - mov r3, #0 - add r0, sp, #0x10 - add r2, sp, #8 - mov r1, r7 - str r3, [sp] - bl ExecuteMoveEffect - bl ov29_022E81F8 - mov r0, #0xa - bl ov29_0234BA54 - mov r0, #0 - bl ov29_0234B1A4 - bl GetLeader - mov r1, r4 - mov r2, r1 - bl ov29_022F98B4 - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F077C: .word 0x02353538 - arm_func_end ov29_022F067C - - arm_func_start ov29_022F0780 -ov29_022F0780: ; 0x022F0780 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl ov29_0234D668 - bl ov29_0234B034 - mov r2, #0 - mov r1, r0 - mov ip, #1 - mov r0, r4 - mov r3, r2 - str ip, [sp] - bl ov29_0234D690 - bl ov29_0234D650 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_022F0780 - - arm_func_start ov29_022F07BC -ov29_022F07BC: ; 0x022F07BC - stmdb sp!, {r3, lr} - rsb r0, r0, #0 - bl AddMoneyCarried - ldr r0, _022F07D4 ; =0x00001308 - bl sub_02017C80 - ldmia sp!, {r3, pc} - .align 2, 0 -_022F07D4: .word 0x00001308 - arm_func_end ov29_022F07BC - - arm_func_start ov29_022F07D8 -ov29_022F07D8: ; 0x022F07D8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r5, _022F0844 ; =0x02353538 - mov r4, r0 - mov r6, #0 -_022F07E8: - ldr r0, [r5] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__022F0590 - cmp r0, #0 - beq _022F082C - mov r0, r7 - bl ov29_022FBDF0 - cmp r0, #0 - beq _022F082C - mov r0, r7 - mov r1, r4 - bl ov29_022FA360 - mov r0, r7 - bl UpdateAiTargetPos -_022F082C: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x14 - blt _022F07E8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F0844: .word 0x02353538 - arm_func_end ov29_022F07D8 - - arm_func_start ov29_022F0848 -ov29_022F0848: ; 0x022F0848 - ldr ip, _022F0858 ; =ov29_022EA428 - mov r0, #0 - mov r1, r0 - bx ip - .align 2, 0 -_022F0858: .word ov29_022EA428 - arm_func_end ov29_022F0848 - - arm_func_start ov29_022F085C -ov29_022F085C: ; 0x022F085C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r8, r1 - mov r1, #1 - mov r1, r1, lsl r8 - str r1, [sp, #4] - mov r1, r1, lsl #8 - mov fp, r0 - mov r0, #0x100 - str r1, [sp] - bl sub_02001AB0 - ldr r1, _022F0980 ; =0x02353538 - mov r0, #0x400 - ldr r2, [r1] - mov r1, #0 - add r5, r2, #0x1e0 - bl MemAlloc - mov r6, r0 - mov r4, #0 -_022F08A8: - add r3, r5, r4, lsl #2 - add r2, r6, r4, lsl #2 - mov r1, #4 -_022F08B4: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022F08B4 - add r4, r4, #1 - cmp r4, #0x100 - blt _022F08A8 - mov r4, #0 - b _022F0964 -_022F08D8: - mov r0, #0x25 - mov r7, r4, lsl #8 - bl AdvanceFrame - ldr r0, [sp] - mov sl, #0 - sub sb, r0, r4, lsl #8 -_022F08F0: - add r1, r6, sl, lsl #2 - ldrb r0, [r6, sl, lsl #2] - ldrb r3, [r1, #1] - ldrb r2, [r1, #2] - mul r0, sb, r0 - add r1, fp, sl, lsl #2 - mul ip, sb, r3 - mul r2, sb, r2 - ldrb lr, [r1, #1] - ldrb r3, [r1, #2] - ldrb r1, [fp, sl, lsl #2] - mla ip, r7, lr, ip - mla r2, r7, r3, r2 - mla r0, r7, r1, r0 - mov r0, r0, asr #8 - mov r0, r0, asr r8 - mov r3, ip, asr #8 - mov r1, r2, asr #8 - mov r3, r3, asr r8 - strb r0, [r5, sl, lsl #2] - add r2, r5, sl, lsl #2 - add sl, sl, #1 - strb r3, [r2, #1] - mov r0, r1, asr r8 - strb r0, [r2, #2] - cmp sl, #0x100 - blt _022F08F0 - bl ov29_022DE608 - add r4, r4, #1 -_022F0964: - ldr r0, [sp, #4] - cmp r4, r0 - blt _022F08D8 - mov r0, r6 - bl MemFree - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F0980: .word 0x02353538 - arm_func_end ov29_022F085C - - arm_func_start ov29_022F0984 -ov29_022F0984: ; 0x022F0984 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r6, r1 - ldr r4, [r6, #0xb4] - mov r7, r0 - ldrsh r1, [r4, #2] - add r0, sp, #0xc - mov r5, r3 - bl ov29_0234BAC0 - ldrb r0, [r4, #6] - cmp r0, #0 - bne _022F09E0 - mov r0, r6 - bl ov29_022F9C4C - cmp r0, #0 - bne _022F09E0 - mov r1, r6 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrsh r0, [r4, #0xc] - bl ov29_0234B118 - b _022F09F4 -_022F09E0: - ldrsh r1, [r4, #2] - mov r0, #1 - bl ov29_0234B0CC - ldrsh r0, [r4, #2] - bl ov29_0234B104 -_022F09F4: - cmp r5, #0 - beq _022F0A6C - mov r1, #1 - add r0, sp, #4 - mov r2, r5 - mov r3, r1 - str r1, [sp] - bl ov29_0234D860 - ldrb r0, [sp, #0x30] - cmp r0, #0 - beq _022F0A28 - ldr r0, _022F0AA0 ; =ov29_022F0AA4 - bl ov29_0234D878 -_022F0A28: - add r0, sp, #0xc - bl ov29_0234D65C - bl ov29_0234B034 - mov r1, r0 - mov ip, #0 - add r2, sp, #4 - mov r0, r7 - mov r3, #1 - str ip, [sp] - bl ov29_0234D690 - bl ov29_0234D650 - bl ov29_0234D88C - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - b _022F0A98 -_022F0A6C: - add r0, sp, #0xc - bl ov29_0234D65C - bl ov29_0234B034 - mov r1, r0 - mov r3, #1 - mov r0, r7 - mov r2, #0 - str r3, [sp] - bl ov29_0234D690 - bl ov29_0234D650 - mov r0, #1 -_022F0A98: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022F0AA0: .word ov29_022F0AA4 - arm_func_end ov29_022F0984 - - arm_func_start ov29_022F0AA4 -ov29_022F0AA4: ; 0x022F0AA4 - stmdb sp!, {r3, lr} - ldr r1, _022F0AD4 ; =0x023535A4 - mvn r0, #1 - ldrsb r1, [r1] - cmp r1, r0 - ldmneia sp!, {r3, pc} - ldr r0, _022F0AD8 ; =0x023526A8 - ldr r1, _022F0ADC ; =ov29_022F0B10 - bl sub_0202F8C4 - ldr r1, _022F0AD4 ; =0x023535A4 - strb r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F0AD4: .word 0x023535A4 -_022F0AD8: .word 0x023526A8 -_022F0ADC: .word ov29_022F0B10 - arm_func_end ov29_022F0AA4 - - arm_func_start ov29_022F0AE0 -ov29_022F0AE0: ; 0x022F0AE0 - stmdb sp!, {r3, lr} - ldr r0, _022F0B0C ; =0x023535A4 - mvn r1, #1 - ldrsb r0, [r0] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202F8FC - ldr r0, _022F0B0C ; =0x023535A4 - mvn r1, #1 - strb r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F0B0C: .word 0x023535A4 - arm_func_end ov29_022F0AE0 - - arm_func_start ov29_022F0B10 -ov29_022F0B10: ; 0x022F0B10 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xd4 - mov r4, r0 - bl sub_02027B1C - add r0, sp, #4 - bl InitPreprocessorArgs - bl GetGold - str r0, [sp, #0x28] - add r1, sp, #4 - str r1, [sp] - ldr r2, _022F0B84 ; =0x023526B8 - add r0, sp, #0x54 - mov r1, #0x80 - mov r3, #0x400 - bl PreprocessString - mov r1, #4 - ldr r3, _022F0B88 ; =0x00000225 - mov r0, r4 - mov r2, r1 - bl sub_02026268 - mov r0, r4 - mov r1, #0xa - mov r2, #0x14 - add r3, sp, #0x54 - bl sub_02026214 - mov r0, r4 - bl sub_02027AF0 - add sp, sp, #0xd4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022F0B84: .word 0x023526B8 -_022F0B88: .word 0x00000225 - arm_func_end ov29_022F0B10 - - arm_func_start ov29_022F0B8C -ov29_022F0B8C: ; 0x022F0B8C - stmdb sp!, {r3, lr} - bl ov29_022E9618 - add r0, r0, #0x4a - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0B8C - - arm_func_start ov29_022F0B9C -ov29_022F0B9C: ; 0x022F0B9C - stmdb sp!, {r3, lr} - bl ov29_022E9618 - ldrh r0, [r0, #0x4a] - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0B9C - - arm_func_start ov29_022F0BAC -ov29_022F0BAC: ; 0x022F0BAC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r3, r0 - mov r6, r1 - add r0, sp, #0 - add r1, r3, #0x2c - mov r2, #3 - ldrsh r4, [r3, #0x48] - ldrsh r5, [r3, #0x4a] - bl sub_0201CF90 - ldrsh r0, [sp] - add r0, r4, r0 - sub r0, r0, #0xc - str r0, [r6, #8] - ldrsh r0, [sp, #2] - add r0, r5, r0 - sub r0, r0, #0xc - str r0, [r6] - ldrsh r0, [sp] - add r0, r4, r0 - add r0, r0, #0xc - str r0, [r6, #0xc] - ldrsh r0, [sp, #2] - add r0, r5, r0 - add r0, r0, #0xc - str r0, [r6, #4] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_022F0BAC - - arm_func_start ov29_022F0C1C -ov29_022F0C1C: ; 0x022F0C1C - stmdb sp!, {r3, lr} - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, [r0, #0xb4] - mov r2, #0 - bl ov29_022F3B98 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0C1C - - arm_func_start ov29_022F0C3C -ov29_022F0C3C: ; 0x022F0C3C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - movs r4, r0 - moveq r0, #0 - beq _022F0C90 - cmp r1, #0 - beq _022F0C74 - add r3, sp, #0 - mov r2, #4 -_022F0C60: - ldrh r0, [r1], #2 - subs r2, r2, #1 - strh r0, [r3], #2 - bne _022F0C60 - b _022F0C80 -_022F0C74: - add r0, sp, #0 - mov r1, #0x160 - bl InitMove -_022F0C80: - ldr r1, [r4, #0xb4] - add r2, sp, #0 - mov r0, r4 - bl ov29_022F3B98 -_022F0C90: - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ov29_022F0C3C - - arm_func_start ov29_022F0C98 -ov29_022F0C98: ; 0x022F0C98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl sub_0204AEA0 - mov r7, r0 - mov r0, #4 - mov r1, #0x2f - mov r8, #0 - bl ov29_022EA370 - mov r0, r8 - mov r1, r0 - bl ov29_022E0DD8 - mov r0, #2 - mov r1, r8 - bl ov29_022E0DD8 - mov r0, #3 - mov r1, r8 - bl ov29_022E0DD8 - mov r0, #4 - mov r1, r8 - bl ov29_022E0DD8 - ldr r1, _022F0EC8 ; =0x02353538 - ldr r2, _022F0ECC ; =0x0237CFBB - ldr r1, [r1] - mov r0, #1 - strb r0, [r2] - add r1, r1, #0x1a000 - strb r0, [r1, #0x249] - bl ov29_0234B1A4 - mov r0, #1 - bl ov29_02338F58 - cmp sl, #0 - bne _022F0D24 - bl sub_0204AEC0 - cmp r0, #0 - bne _022F0D44 -_022F0D24: - mov r0, #0 - mov r1, r0 - bl ov29_02339D7C - cmp sl, #0 - beq _022F0D44 - mov r0, #0xc - mov r1, #0 - bl ov29_022EA428 -_022F0D44: - bl ov29_023391C0 - mov sb, r0 - mov r0, #0 - mov r1, r0 - bl ov29_02339190 - bl ov29_02339CE8 - mov r0, #4 - mov r1, #0x2f - bl ov29_022EA370 - ldr r4, _022F0ED0 ; =0x0237C6A4 - ldr r5, _022F0ECC ; =0x0237CFBB - ldr r6, _022F0ED4 ; =0x0237C694 - mov fp, #0x2f -_022F0D78: - mov r0, fp - bl AdvanceFrame - ldrh r3, [r6, #2] - tst r3, #6 - beq _022F0D98 - ldr r0, _022F0ED8 ; =0x00003F03 - bl sub_02017C80 - b _022F0E30 -_022F0D98: - ldrb r0, [r5] - cmp r0, #0 - bne _022F0DDC - ldrh r2, [r4] - mov r1, #0 - tst r2, #0x40 - beq _022F0DBC - tst r2, #2 - movne r1, #1 -_022F0DBC: - cmp r1, #0 - movne r8, #1 - cmp r8, #0 - beq _022F0DE0 - tst r2, #4 - beq _022F0DE0 - bl ov29_022E0C4C - b _022F0E30 -_022F0DDC: - mov r8, #0 -_022F0DE0: - tst r3, #1 - bne _022F0E18 - tst r3, #0x400 - bne _022F0E18 - cmp r0, #0 - beq _022F0D78 - ldrh r1, [r4] - mov r2, #0 - tst r1, #0x40 - beq _022F0E10 - tst r1, #2 - movne r2, #1 -_022F0E10: - cmp r2, #0 - beq _022F0D78 -_022F0E18: - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [r5] - bl ov29_02339CE8 - b _022F0D78 -_022F0E30: - cmp sl, #0 - bne _022F0E44 - bl sub_0204AEC0 - cmp r0, #0 - bne _022F0E64 -_022F0E44: - mov r0, #0 - mov r1, r0 - bl ov29_0233A0E8 - cmp sl, #0 - beq _022F0E64 - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 -_022F0E64: - mov r0, sb - mov r1, #0 - bl ov29_02339190 - mov r0, #0 - bl ov29_02338F58 - ldr r1, _022F0EC8 ; =0x02353538 - mov r0, r7 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0x1a000 - strb r2, [r1, #0x249] - bl sub_0204AEB0 - ldr r0, _022F0ECC ; =0x0237CFBB - mov r1, #1 - strb r1, [r0] - bl ov29_02339CE8 - mov r0, #0 - bl ov29_022E0DF0 - mov r0, #0x2f - bl AdvanceFrame - mov r0, #0x2f - bl AdvanceFrame - bl sub_02006B70 - bl ov29_022E0B44 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F0EC8: .word 0x02353538 -_022F0ECC: .word 0x0237CFBB -_022F0ED0: .word 0x0237C6A4 -_022F0ED4: .word 0x0237C694 -_022F0ED8: .word 0x00003F03 - arm_func_end ov29_022F0C98 - - arm_func_start ov29_022F0EDC -ov29_022F0EDC: ; 0x022F0EDC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xdc - ldr r1, _022F1DDC ; =0x02353538 - add r0, sp, #0xb6 - ldr r2, [r1] - mov r1, #5 - add r2, r2, #0x21c - add r5, r2, #0x1a000 - mov r2, #3 - str r2, [sp, #0x68] - mov r2, #0 - str r2, [sp, #0x64] - bl MemZero - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strh r1, [r0, #0x1c] - bl GetLeader - mov r1, #1 - mov r2, r1 - bl ov29_022F98B4 - bl GetLeader - bl ov29_022FB538 - bl GetLeader - bl ov29_022FF3F4 - cmp r0, #0 - beq _022F0F58 - mov r0, #0x3c - mov r1, #0x10 - bl ov29_022EA370 - b _022F2B34 -_022F0F58: - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x78e] - bl ov29_02339CD4 - ldr r0, _022F1DDC ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #5] - cmp r0, #0 - beq _022F1000 - mov r0, #0 - strb r0, [r1, #5] - bl IsGoldenChamber - cmp r0, #0 - beq _022F0FAC - bl ov29_0234A980 - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _022F2B34 -_022F0FAC: - bl GetLeader - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - bne _022F1000 - mov r0, #0xa - bl ov29_0234BA54 - mov r0, #1 - bl ov29_022EB398 - bl ov29_022F2FE4 - mov r0, #0 - bl ov29_0233A248 - bl GetLeader - mov r1, #0 - bl ov29_0234E8F8 - bl ov29_022E0B44 - bl sub_02006B70 - bl ov29_022E9618 - ldrh r0, [r0, #0x4a] - cmp r0, #0 - bne _022F2B34 -_022F1000: - mov r0, #1 - mov r1, r0 - mov r2, r0 - bl ov29_022FA2F0 - ldr r1, _022F1DE0 ; =0x0235171C - ldrsh r0, [r1, #0x12] - str r0, [sp, #8] - ldrsh r0, [r1, #0x10] - str r0, [sp, #4] -_022F1024: - bl GetLeader - ldr r1, _022F1DDC ; =0x02353538 - mov r6, r0 - ldr r0, [r1] - ldr sb, [r6, #0xb4] - ldrb r0, [r0, #0x78b] - cmp r0, #0 - beq _022F1064 - bl ov29_022F308C - cmp r0, #0 - movne r0, #2 - strneh r0, [sb, #0x4a] - movne r0, #0 - strneb r0, [sb, #0x4e] - bne _022F2B34 - bl ov29_022F2FE4 -_022F1064: - ldr r1, _022F1DE4 ; =0x0237C9A4 - mov r2, #0 - strb r2, [r1, #2] - ldr r0, _022F1DDC ; =0x02353538 - strb r2, [r1, #1] - ldr r0, [r0] - ldr r0, [r0, #0x614] - cmp r0, #0 - strltb r2, [sp, #0xb6] - strltb r2, [sp, #0xb7] - strltb r2, [sp, #0xb8] - strltb r2, [sp, #0xba] - blt _022F10AC - mov r0, #1 - strb r0, [sp, #0xb6] - strb r2, [sp, #0xb7] - strb r2, [sp, #0xb8] - strb r2, [sp, #0xba] -_022F10AC: - mov r0, #0 - str r0, [sp, #0x6c] - bl ov29_022EB3C8 - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #0 - strb r1, [r0] - strb r1, [r0, #3] - sub r0, sp, #4 - str r0, [sp, #0x70] - ldr r0, _022F1DE8 ; =0x00000BA3 - mvn r4, #0 - sub r0, r0, #1 - str r0, [sp, #0x88] - ldr r0, _022F1DE8 ; =0x00000BA3 - sub r0, r0, #2 - str r0, [sp, #0x84] - ldr r0, _022F1DE8 ; =0x00000BA3 - sub r0, r0, #5 - str r0, [sp, #0x80] - ldr r0, _022F1DE8 ; =0x00000BA3 - sub r0, r0, #4 - str r0, [sp, #0x7c] - add r0, sb, #0x100 - str r0, [sp, #0x8c] -_022F110C: - mov r7, #0 - mov r0, r7 - str r0, [sp, #0x4c] - str r0, [sp, #0x48] - str r0, [sp, #0x2c] - ldrb r0, [sp, #0xb6] - cmp r0, #0 - bne _022F2970 - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrsh r0, [r0, #4] - add r1, r0, #1 - ldr r0, _022F1DE4 ; =0x0237C9A4 - strh r1, [r0, #4] - ldrb r0, [r5, #0x35] - cmp r0, #0 - movne r0, r7 - strne r0, [sp, #0x6c] - ldreq r0, [sp, #0x6c] - addeq r0, r0, #1 - streq r0, [sp, #0x6c] - ldr r0, [sp, #0x68] - cmp r0, #0 - beq _022F117C - subs r0, r0, #1 - str r0, [sp, #0x68] - bne _022F117C - mov r0, #0 - bl ov29_023055B0 -_022F117C: - mov r0, r6 - bl ov29_022F2B74 - ldr r0, _022F1DEC ; =0x0237C6A4 - mov r8, #0 - ldrh r1, [r0] - tst r1, #0x40 - movne r0, #1 - moveq r0, #0 - and sl, r0, #0xff - tst r1, #0x10 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - str r0, [sp, #0x58] - tst r1, #0x20 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - tst r1, #0x200 - str r0, [sp, #0x54] - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - str r0, [sp, #0x50] - mov r0, r8 - str r0, [sp, #0x5c] - bl ov29_022E0C3C - cmp r0, #0 - beq _022F1208 - cmp sl, #0 - bne _022F1200 - mov r0, r8 - bl ov29_022E0C2C -_022F1200: - mov sl, #0 - b _022F1228 -_022F1208: - mov r0, r8 - bl ov29_022E0C2C - ldr r0, _022F1DEC ; =0x0237C6A4 - ldrh r0, [r0] - tst r0, #0x100 - movne r0, #1 - moveq r0, r8 - and sl, r0, #0xff -_022F1228: - ldr r0, [sp, #0x50] - cmp r0, #0 - beq _022F1268 - mov r0, r6 - add r1, sp, #0xae - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - ldrsh r1, [r6, #4] - ldrsh r0, [sp, #0xae] - cmp r1, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xb0] - cmpeq r1, r0 - moveq r0, #0 - streq r0, [sp, #0x50] -_022F1268: - ldr r0, _022F1DEC ; =0x0237C6A4 - mov r1, #0 - ldrh r0, [r0] - tst r0, #0x80 - beq _022F1284 - tst r0, #0x1000 - movne r1, #1 -_022F1284: - cmp r1, #0 - beq _022F12E0 - mov r0, r6 - add r1, sp, #0xae - mov r2, #0x66 - mov r3, #0 - bl ov29_022F3EA0 - mov r0, r6 - add r1, sp, #0xaa - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - ldrsh r2, [r6, #4] - ldrsh r0, [sp, #0xae] - cmp r2, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xb0] - cmpeq r1, r0 - ldreqsh r0, [sp, #0xaa] - cmpeq r2, r0 - ldreqsh r0, [sp, #0xac] - cmpeq r1, r0 - moveq r8, #1 -_022F12E0: - ldr r0, [sp, #0x54] - cmp r0, #0 - beq _022F1344 - mov r0, r6 - add r1, sp, #0xae - mov r2, #0x66 - mov r3, #0 - bl ov29_022F3EA0 - mov r0, r6 - add r1, sp, #0xaa - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - ldrsh r2, [r6, #4] - ldrsh r0, [sp, #0xae] - cmp r2, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xb0] - cmpeq r1, r0 - ldreqsh r0, [sp, #0xaa] - cmpeq r2, r0 - ldreqsh r0, [sp, #0xac] - cmpeq r1, r0 - moveq r0, #1 - streq r0, [sp, #0x5c] -_022F1344: - cmp r8, #0 - bne _022F1364 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #1 - beq _022F13B0 - tst r0, #2 - beq _022F13B0 -_022F1364: - ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x46] - ldr r0, [sp, #0x70] - strh r1, [r0] - ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x48] - ldr r0, [sp, #0x70] - strh r1, [r0, #2] - ldr r0, [r0] - bl CeilFixedPoint - cmp r0, #0 - beq _022F13B0 - mov r0, #1 - bl ov29_022EB3C8 - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x78e] - b _022F2970 -_022F13B0: - mov r0, #0 - strh r4, [sp, #0xb2] - strh r4, [sp, #0xb4] - str r0, [sp, #0x34] - str r0, [sp, #0x30] - str r0, [sp, #0x38] - mov fp, r0 - mov r8, r0 - str r0, [sp, #0x60] - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #2] - cmp r0, #0 - bne _022F1440 - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _022F1408 - mov r8, #1 - bl GetEquippedThrowableItem - cmp r0, #0 - movge r0, r8 - strge r0, [sp, #0x60] - b _022F1440 -_022F1408: - ldr r0, _022F1DEC ; =0x0237C6A4 - mov r1, r8 - ldrh r0, [r0] - tst r0, #0x80 - beq _022F1424 - tst r0, #2 - movne r1, #1 -_022F1424: - cmp r1, #0 - movne r8, #2 - bne _022F1440 - cmp sl, #0 - ldreq r0, [sp, #0x50] - cmpeq r0, #0 - movne r8, #3 -_022F1440: - cmp r8, #0 - beq _022F16F4 - cmp r8, #1 - mov r0, r6 - add r1, sp, #0xa6 - mov r3, #0 - bne _022F1468 - mov r2, #0x65 - bl ov29_022F3EA0 - b _022F1470 -_022F1468: - mov r2, #0x64 - bl ov29_022F3EA0 -_022F1470: - mov r7, r0 - cmp r7, #0 - blt _022F16F4 - ldrsh r1, [r6, #4] - ldrsh r0, [sp, #0xa6] - cmp r1, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xa8] - cmpeq r1, r0 - beq _022F16F4 - mov r0, r6 - add r1, sp, #0xa6 - bl ov29_022F426C - cmp r0, #0 - bne _022F16F4 - ldrh r0, [sp, #0xa8] - ldrh r1, [sp, #0xa6] - mov r3, #0 - strh r0, [sp, #0x94] - strh r0, [sp, #0xa4] - add r0, r7, #4 - strh r1, [sp, #0xa2] - strh r1, [sp, #0x92] - mov r0, r0, lsl #0x1d - ldr r1, _022F1DE0 ; =0x0235171C - mov ip, r0, lsr #0x1b - ldrsh r1, [r1, ip] - ldrsh r2, [sp, #0xa2] - ldr ip, _022F1DE0 ; =0x0235171C - add r0, ip, r0, lsr #27 - add r1, r2, r1 - strh r1, [sp, #0xa2] - ldrsh r0, [r0, #2] - ldrsh ip, [sp, #0xa4] - ldrsh r2, [r6, #4] - ldrsh r1, [sp, #0xa2] - add r0, ip, r0 - strh r0, [sp, #0xa4] - cmp r2, r1 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xa4] - cmpeq r1, r0 - ldrh r1, [sp, #0x92] - ldrh r0, [sp, #0x94] - moveq r3, #1 - cmp r8, #2 - strh r1, [sp, #0xb2] - strh r0, [sp, #0xb4] - beq _022F1548 - ldr r0, [sp, #0x60] - cmp r0, #0 - beq _022F15C0 - cmp r3, #0 - bne _022F15C0 -_022F1548: - add r0, sp, #0xa6 - bl ov29_02337B68 - cmp r0, #0 - beq _022F16F4 - ldr r1, [sp, #0x60] - ldr r0, [r0, #0xb4] - cmp r1, #1 - bne _022F1584 - bl ov29_022F2B3C - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x38] - moveq r0, #0 - streq r0, [sp, #0x38] - b _022F16F4 -_022F1584: - cmp r1, #2 - bne _022F15A8 - bl ov29_022F2B3C - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x38] - moveq r0, #0 - streq r0, [sp, #0x38] - b _022F16F4 -_022F15A8: - cmp r8, #2 - moveq r0, #0 - streq r0, [sp, #0x30] - moveq fp, #1 - streq r0, [sp, #0x34] - b _022F16F4 -_022F15C0: - ldrsh r1, [r6, #4] - ldrsh r0, [sp, #0xa2] - cmp r1, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xa4] - cmpeq r1, r0 - bne _022F16F4 - add r0, sp, #0xa6 - bl ov29_02337B68 - str r0, [sp, #0x74] - cmp r0, #0 - beq _022F16A4 - cmp r8, #1 - ldr r0, [r0, #0xb4] - bne _022F166C - mov r1, #0 - str r1, [sp, #0x30] - mov fp, r1 - bl ov29_022F2B3C - cmp r0, #0 - beq _022F163C - ldr r0, [sp, #0x60] - cmp r0, #1 - mov r0, #1 - streq r0, [sp, #0x38] - strne r0, [sp, #0x30] - movne r0, fp - strne r0, [sp, #0x38] - mov r0, #0 - str r0, [sp, #0x34] - b _022F1698 -_022F163C: - mov r1, fp - str r1, [sp, #0x38] - ldr r0, [sp, #0x74] - mov r1, #1 - bl IsBlinded - cmp r0, #0 - mov r0, #1 - strne r0, [sp, #0x30] - movne r0, fp - strne r0, [sp, #0x34] - streq r0, [sp, #0x34] - b _022F1698 -_022F166C: - cmp r8, #3 - bne _022F1698 - bl ov29_022F2B3C - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x30] - moveq r0, #0 - mov fp, #0 - streq r0, [sp, #0x30] - mov r0, fp - str r0, [sp, #0x34] -_022F1698: - and r0, r7, #7 - strb r0, [sb, #0x4c] - b _022F16F4 -_022F16A4: - ldrsh r1, [r6, #4] - ldr r0, [sp, #4] - ldrsh r2, [r6, #6] - add r0, r1, r0 - ldr r1, [sp, #8] - add r1, r2, r1 - bl GetTile - ldrh r0, [r0] - tst r0, #0x2000 - beq _022F16F4 - mov r0, #4 - strb r0, [sb, #0x4c] - mov r0, #1 - str r0, [sp, #0x4c] - mov r0, r6 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r6 - mov r2, #4 - bl ov29_023049A8 -_022F16F4: - bl sub_0204AF10 - cmp r0, #0 - moveq r1, #0 - beq _022F17E0 - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #2] - cmp r0, #0 - movne r1, #0 - bne _022F17E0 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - and r0, r0, #0xf0 - mov r0, r0, lsl #0x10 - movs r0, r0, lsr #0x10 - cmpeq r0, #0 - moveq r1, #0 - beq _022F17E0 - cmp r0, #0x50 - moveq r1, #3 - streq r1, [sp, #0x20] - cmp r0, #0x60 - moveq r1, #5 - streq r1, [sp, #0x20] - cmp r0, #0x90 - moveq r1, #1 - streq r1, [sp, #0x20] - cmp r0, #0xa0 - moveq r1, #7 - streq r1, [sp, #0x20] - cmp r0, #0x40 - moveq r1, #4 - streq r1, [sp, #0x20] - cmp r0, #0x80 - moveq r1, #0 - streq r1, [sp, #0x20] - cmp r0, #0x10 - moveq r1, #2 - streq r1, [sp, #0x20] - cmp r0, #0x20 - moveq r0, #6 - streq r0, [sp, #0x20] - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #1] - cmp r0, #0 - beq _022F17B8 - ldr r0, [sp, #0x20] - tst r0, #1 - moveq r1, #0 - beq _022F17E0 -_022F17B8: - ldr r0, [sp, #0x20] - ldrb r8, [sb, #0x4c] - and r1, r0, #7 - mov r0, r6 - strb r1, [sb, #0x4c] - bl ov29_022F87C0 - cmp r0, #0 - moveq r1, #0 - streqb r8, [sb, #0x4c] - movne r1, #1 -_022F17E0: - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #2] - cmp r0, #0 - bne _022F1884 - cmp r1, #0 - beq _022F1884 - ldr r0, [sp, #0x64] - cmp r0, #0 - bne _022F18B4 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #2 - beq _022F1868 - mov r0, r6 - bl ov29_022F87C0 - cmp r0, #0 - beq _022F1838 - mov r0, r6 - mov r1, sb - bl ov29_022F37D0 - cmp r0, #0 - beq _022F1844 -_022F1838: - mov r0, #0 - str r0, [sp, #0x48] - b _022F18B4 -_022F1844: - mov r0, #1 - str r0, [sp, #0x48] - ldr r0, _022F1DDC ; =0x02353538 - ldr r1, [r0] - mov r0, #1 - str r0, [sp, #0x2c] - mov r0, #0 - strb r0, [r1, #0x78c] - b _022F18B4 -_022F1868: - mov r0, #1 - str r0, [sp, #0x48] - ldr r0, _022F1DDC ; =0x02353538 - ldr r1, [r0] - mov r0, #0 - strb r0, [r1, #0x78c] - b _022F18B4 -_022F1884: - cmp r0, #0 - bne _022F18A0 - ldr r0, [sp, #0x5c] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x48] - bne _022F18B4 -_022F18A0: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #1 - movne r0, #1 - strne r0, [sp, #0x48] -_022F18B4: - ldr r0, [sp, #0x30] - cmp r0, #0 - mov r0, #0 - str r0, [sp, #0x64] - cmpeq fp, #0 - ldreq r0, [sp, #0x38] - cmpeq r0, #0 - beq _022F19DC - ldrsh r0, [sp, #0xb2] - ldrsh r1, [sp, #0xb4] - bl GetTileSafe - str r0, [sp, #0x78] - mov r0, #7 - bl sub_02017CCC - ldr r0, [sp, #0x38] - cmp r0, #0 - beq _022F198C - ldrsh r1, [sp, #0xb2] - ldrsh r0, [r6, #4] - sub r0, r1, r0 - bl Abs - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - ldrsh r1, [sp, #0xb4] - ldrsh r0, [r6, #6] - sub r0, r1, r0 - bl Abs - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - ldr r0, [sp, #0x78] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _022F19DC - ldr r0, [sp, #0x60] - cmp r0, #2 - bne _022F1968 - add r0, r6, #4 - add r1, sp, #0xb2 - bl GetDirectionTowardsPosition - strb r0, [sb, #0x4c] - ldrsh r0, [sp, #0xb2] - strh r0, [sb, #0x5a] - ldrsh r0, [sp, #0xb4] - strh r0, [sb, #0x5c] - b _022F19DC -_022F1968: - cmp r8, #0 - cmpne r1, #0 - cmpne r8, r1 - bne _022F19DC - add r0, r6, #4 - add r1, sp, #0xb2 - bl GetDirectionTowardsPosition - strb r0, [sb, #0x4c] - b _022F19DC -_022F198C: - ldrsh r1, [sp, #0xb2] - ldrsh r0, [r6, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _022F19DC - ldrsh r1, [sp, #0xb4] - ldrsh r0, [r6, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _022F19DC - ldr r0, [sp, #0x78] - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _022F19DC - add r0, r6, #4 - add r1, sp, #0xb2 - bl GetDirectionTowardsPosition - strb r0, [sb, #0x4c] -_022F19DC: - ldr r0, [sp, #0x48] - cmp r0, #0 - ldreq r0, [sp, #0x34] - cmpeq r0, #0 - ldreq r0, [sp, #0x30] - cmpeq r0, #0 - cmpeq fp, #0 - beq _022F1CC0 - ldr r0, [sp, #0x2c] - cmp r0, #0 - bne _022F1A64 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #2 - beq _022F1A64 - ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x46] - ldr r0, [sp, #0x70] - strh r1, [r0] - ldr r0, [sp, #0x8c] - ldrh r1, [r0, #0x48] - ldr r0, [sp, #0x70] - strh r1, [r0, #2] - ldr r0, [r0] - bl CeilFixedPoint - cmp r0, #0 - beq _022F1CE0 - mov r0, #1 - bl ov29_022EB3C8 - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x78e] - b _022F2970 -_022F1A64: - mov r0, r6 - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - beq _022F1AA0 - ldr r1, _022F1DF4 ; =0x00000B9A - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - bl ov29_022EB3C8 - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x78e] - b _022F2970 -_022F1AA0: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x200 - cmpeq fp, #0 - beq _022F1C48 - mov r4, #0 - mov r1, r4 - mov r2, #1 - b _022F1AF4 -_022F1AC4: - add r0, sb, r4, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _022F1AF0 - add r0, sb, r4, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #8 - bne _022F1AFC -_022F1AF0: - add r4, r4, #1 -_022F1AF4: - cmp r4, #4 - blt _022F1AC4 -_022F1AFC: - cmp r4, #4 - bne _022F1B20 - ldr r1, _022F1DF8 ; =0x00000B9B - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - cmp fp, #0 - beq _022F2970 - bl sub_02006B70 - b _022F2970 -_022F1B20: - mov r3, #0 - mov r1, r3 - mov r2, #1 - b _022F1B5C -_022F1B30: - add r0, sb, r3, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - addne r0, sb, r3, lsl #3 - ldrneb r0, [r0, #0x12a] - cmpne r0, #0 - bne _022F1B64 - add r3, r3, #1 -_022F1B5C: - cmp r3, #4 - blt _022F1B30 -_022F1B64: - cmp r3, #4 - bne _022F1B9C - bl sub_0204AF20 - cmp r0, #0 - beq _022F1B8C - mov r0, r6 - mov r1, #0 - bl ov29_022F0C3C - cmp r0, #0 - beq _022F2970 -_022F1B8C: - add r0, sb, #0x4a - mov r1, #0x17 - bl SetMonsterActionFields - b _022F2970 -_022F1B9C: - mov r7, r4 - mov r1, #0 - b _022F1BD8 -_022F1BA8: - cmp r7, r4 - beq _022F1BC0 - add r0, sb, r7, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #2 - beq _022F1BE0 -_022F1BC0: - add r0, sb, r7, lsl #3 - ldrb r0, [r0, #0x12a] - cmp r0, #0 - movne r1, #1 - bne _022F1BE0 - add r7, r7, #1 -_022F1BD8: - cmp r7, #4 - blt _022F1BA8 -_022F1BE0: - cmp r1, #0 - bne _022F1C04 - ldr r1, _022F1DFC ; =0x00000B9C - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - cmp fp, #0 - beq _022F2970 - bl sub_02006B70 - b _022F2970 -_022F1C04: - bl sub_0204AF20 - cmp r0, #0 - beq _022F1C28 - add r1, sb, #0x124 - mov r0, r6 - add r1, r1, r7, lsl #3 - bl ov29_022F0C3C - cmp r0, #0 - beq _022F2970 -_022F1C28: - mov r0, r6 - bl ov29_022E2A38 - mov r2, r4, lsl #0x10 - mov r1, r0 - add r0, sb, #0x4a - mov r2, r2, asr #0x10 - bl ov29_022EBC98 - b _022F2970 -_022F1C48: - ldr r0, [sp, #0x34] - cmp r0, #0 - beq _022F1C74 - mov r0, r6 - mov r1, sb - bl ov29_022F37D0 - cmp r0, #0 - beq _022F1CE0 - mov r0, #1 - str r0, [sp, #0x64] - b _022F2970 -_022F1C74: - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _022F1C9C - mov r0, r6 - mov r1, sb - bl ov29_022F37D0 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x64] - bne _022F2970 -_022F1C9C: - mov r0, r6 - mov r1, sb - bl ov29_022F3AFC - cmp r0, #0 - bne _022F2970 - add r0, sb, #0x4a - mov r1, #0x32 - bl SetMonsterActionFields - b _022F2970 -_022F1CC0: - ldr r0, [sp, #0x4c] - cmp r0, #0 - beq _022F1CE0 - mov r0, r6 - mov r1, sb - bl ov29_022F3AFC - cmp r0, #0 - bne _022F2970 -_022F1CE0: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #0x400 - beq _022F1D10 - mov r0, #0 - mov r1, #1 - strb r1, [sp, #0xb6] - strb r0, [sp, #0xb7] - strb r0, [sp, #0xb8] - strb r0, [sp, #0xb9] - strb r0, [sp, #0xba] - b _022F2970 -_022F1D10: - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _022F1D84 - mov r0, r6 - add r1, sp, #0xcc - bl ov29_022F0BAC - ldr r0, [sp, #0xd4] - ldr r1, [sp, #0xcc] - ldr r2, [sp, #0xd8] - ldr r3, [sp, #0xd0] - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - bl ov29_022E0CB8 - cmp r0, #0 - beq _022F1D84 - mov r0, #0 - mov r1, #1 - strb r1, [sp, #0xb6] - strb r0, [sp, #0xb7] - strb r0, [sp, #0xb8] - strb r0, [sp, #0xb9] - strb r0, [sp, #0xba] - b _022F2970 -_022F1D84: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #6] - tst r0, #2 - beq _022F1DB0 - mov r1, #1 - mov r0, #0 - strb r1, [sp, #0xb6] - strb r0, [sp, #0xb7] - strb r0, [sp, #0xb8] - strb r1, [sp, #0xb9] - b _022F2970 -_022F1DB0: - ldr r1, [sp, #0x6c] - ldr r0, _022F1E00 ; =0x00000708 - cmp r1, r0 - blt _022F1E04 - mov r1, #1 - mov r0, #0 - strb r1, [sp, #0xb6] - strb r1, [sp, #0xb7] - strb r0, [sp, #0xb8] - strb r0, [sp, #0xb9] - b _022F2970 - .align 2, 0 -_022F1DDC: .word 0x02353538 -_022F1DE0: .word 0x0235171C -_022F1DE4: .word 0x0237C9A4 -_022F1DE8: .word 0x00000BA3 -_022F1DEC: .word 0x0237C6A4 -_022F1DF0: .word 0x0237C694 -_022F1DF4: .word 0x00000B9A -_022F1DF8: .word 0x00000B9B -_022F1DFC: .word 0x00000B9C -_022F1E00: .word 0x00000708 -_022F1E04: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x800 - bne _022F1E3C - tst r0, #8 - cmpeq sl, #0 - bne _022F1E3C - ldrb r0, [r5, #0x35] - cmp r0, #0 - beq _022F1E3C - bl ov29_0233779C - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #0 - strb r1, [r0, #2] -_022F1E3C: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x200 - beq _022F1E90 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #2 - beq _022F1E90 - bl sub_0204AF78 - mov r0, #4 - bl sub_02017CCC - mov r0, #0 - mov r1, #1 - bl OpenMessageLog - bl sub_0204AF78 - cmp r0, #0 - beq _022F1E88 - bl ov29_0234BB38 - bl ov29_022E81F8 -_022F1E88: - bl ov29_022E0B44 - bl sub_02006B70 -_022F1E90: - mov r0, #0 - str r0, [sp, #0x44] - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x100 - beq _022F1ECC - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #1] - cmp r0, #0 - ldreq r0, _022F1DE4 ; =0x0237C9A4 - moveq r1, #0 - streqh r1, [r0, #4] - mov r1, #1 - ldr r0, _022F1DE4 ; =0x0237C9A4 - b _022F1ED4 -_022F1ECC: - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #0 -_022F1ED4: - strb r1, [r0, #1] - ldr r0, _022F1DF0 ; =0x0237C694 - mov r8, #0 - ldrh r0, [r0, #2] - tst r0, #0x800 - bne _022F1EF4 - tst r0, #8 - beq _022F1EF8 -_022F1EF4: - mov r8, #1 -_022F1EF8: - cmp sl, #0 - beq _022F1F68 - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #2] - cmp r0, #0 - bne _022F1F68 - mov r0, r6 - add r1, sp, #0xbc - bl ov29_022F0BAC - ldr r0, _022F1DEC ; =0x0237C6A4 - ldrh r0, [r0] - tst r0, #0x100 - beq _022F1F68 - ldr r0, [sp, #0xc4] - ldr r1, [sp, #0xbc] - ldr r2, [sp, #0xc8] - ldr r3, [sp, #0xc0] - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - bl ov29_022E0CB8 - cmp r0, #0 - movne r8, #1 -_022F1F68: - cmp r8, #0 - beq _022F20B8 - ldr r0, [r6, #0xb4] - str r0, [sp, #0x10] - ldrb r0, [r0, #0xf1] - cmp r0, #2 - beq _022F2098 - mov r0, r6 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - bne _022F2098 - mov fp, #0 - b _022F2090 -_022F1FA0: - mov r0, #0 - str r0, [sp, #0x18] - ldr r0, [sp, #0x10] - ldrb r1, [r0, #0x4c] - mov r0, #1 - str r0, [sp, #0x1c] - add r8, r1, #1 - b _022F204C -_022F1FC0: - and r8, r8, #7 - ldr r1, _022F1DE0 ; =0x0235171C - mov r2, r8, lsl #2 - ldrsh r3, [r1, r2] - ldr r2, _022F1DE0 ; =0x0235171C - ldrsh r0, [r6, #4] - add r2, r2, r8, lsl #2 - ldrsh r1, [r6, #6] - ldrsh r2, [r2, #2] - add r0, r0, r3 - add r1, r1, r2 - bl GetTile - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _022F203C - ldr r0, [r1] - cmp r0, #1 - bne _022F203C - ldr r0, [r1, #0xb4] - str r0, [sp, #0xc] - mov r0, r6 - bl ov29_022E274C - cmp r0, #0 - beq _022F203C - cmp fp, #0 - ldreq r0, [sp, #0xc] - ldreqb r0, [r0, #6] - cmpeq r0, #0 - movne r0, #1 - strne r0, [sp, #0x18] - bne _022F2058 -_022F203C: - ldr r0, [sp, #0x1c] - add r8, r8, #1 - add r0, r0, #1 - str r0, [sp, #0x1c] -_022F204C: - ldr r0, [sp, #0x1c] - cmp r0, #8 - blt _022F1FC0 -_022F2058: - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _022F208C - and r2, r8, #7 - ldr r1, [r6, #0xb4] - mov r0, r6 - strb r2, [r1, #0x4c] - bl GetSleepAnimationId - mov r2, r8 - mov r1, r0 - mov r0, r6 - bl ov29_023049A8 - b _022F2098 -_022F208C: - add fp, fp, #1 -_022F2090: - cmp fp, #1 - blt _022F1FA0 -_022F2098: - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #1 - strb r1, [r0, #2] - ldrb r0, [sb, #0x4c] - strb r0, [r5, #0x36] - mov r0, #0xff - strb r0, [r5, #0x37] - bl ov29_022E0B44 -_022F20B8: - ldr r0, [sp, #0x38] - cmp r0, #0 - bne _022F20E4 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x200 - beq _022F20EC - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #0x100 - beq _022F20EC -_022F20E4: - mov r0, #1 - str r0, [sp, #0x44] -_022F20EC: - ldr r0, [sp, #0x44] - cmp r0, #0 - beq _022F2118 - mov r0, r6 - bl ov29_023186CC - cmp r0, #0 - beq _022F2118 - mov r0, r6 - bl ov29_02318700 - mov r0, #0 - str r0, [sp, #0x44] -_022F2118: - ldr r0, [sp, #0x44] - cmp r0, #0 - beq _022F2180 - bl GetEquippedThrowableItem - movs fp, r0 - bmi _022F2180 - mov r8, #1 - bl sub_0204AF20 - cmp r0, #0 - beq _022F2150 - mov r0, r6 - bl ov29_022F0C1C - cmp r0, #0 - moveq r8, #0 -_022F2150: - cmp r8, #0 - beq _022F2970 - mov r0, #0xb - bl ov29_022EB3C8 - add r0, fp, #1 - strb r0, [sb, #0x4e] - mov r0, #0 - strh r0, [sb, #0x50] - strh r0, [sb, #0x52] - ldrh r0, [sb, #0x4a] - cmp r0, #0 - bne _022F2970 -_022F2180: - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - bne _022F21B4 - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #4 - beq _022F21B4 - mov r0, #0 - bl ov29_022F0C98 - mov sl, #0 -_022F21B4: - strh r4, [sp, #0xb2] - strh r4, [sp, #0xb4] - mov r0, #0 - str r0, [sp, #0x3c] - str r0, [sp, #0x40] - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r1, r0, #0x100 - ldrsh r3, [r1, #0xd8] - cmp r3, #0 - blt _022F2210 - ldrsh r2, [r6, #4] - cmp r2, r3 - ldreqsh r1, [r1, #0xda] - ldreqsh r2, [r6, #6] - cmpeq r2, r1 - moveq r7, r4 - beq _022F23C4 - add r1, r0, #0x1d8 - mov r0, r6 - bl ov29_022F40B8 - mov r7, r0 - b _022F23C4 -_022F2210: - ldr r1, _022F1DE4 ; =0x0237C9A4 - ldrb r1, [r1, #2] - cmp r1, #0 - bne _022F2324 - ldr r1, [sp, #0x58] - cmp r1, #0 - cmpeq sl, #0 - ldreq r1, [sp, #0x50] - cmpeq r1, #0 - beq _022F2324 - cmp sl, #0 - beq _022F225C - mov r0, r6 - add r1, sp, #0x9e - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - mov r7, r0 - b _022F22A8 -_022F225C: - ldr r0, [sp, #0x58] - cmp r0, #0 - beq _022F2284 - mov r0, r6 - add r1, sp, #0x9e - mov r2, #0x66 - mov r3, #0 - bl ov29_022F3EA0 - mov r7, r0 - b _022F22A8 -_022F2284: - ldr r0, [sp, #0x50] - cmp r0, #0 - beq _022F22A8 - mov r0, r6 - add r1, sp, #0x9e - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - mov r7, r0 -_022F22A8: - cmp r7, #0 - blt _022F23C4 - ldrsh r1, [r6, #4] - ldrsh r0, [sp, #0x9e] - cmp r1, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0xa0] - cmpeq r1, r0 - beq _022F231C - mov r0, r6 - add r1, sp, #0x9e - bl ov29_022F426C - cmp r0, #0 - beq _022F23C4 - mov r0, r6 - add r1, sp, #0x9e - bl ov29_022F40B8 - ldr r1, [sp, #0x50] - mov r7, r0 - mov r0, #1 - str r0, [sp, #0x40] - cmp r1, #0 - ldrh r1, [sp, #0x9e] - ldrh r0, [sp, #0xa0] - strh r1, [sp, #0xb2] - strh r0, [sp, #0xb4] - movne r0, #1 - strne r0, [sp, #0x3c] - b _022F23C4 -_022F231C: - ldrb r7, [sb, #0x4c] - b _022F23C4 -_022F2324: - ldrb r0, [r0, #0x78c] - cmp r0, #0 - beq _022F234C - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #1] - cmp r0, #0 - ldreq r0, _022F1DF0 ; =0x0237C694 - ldreqh r1, [r0, #2] - moveq r2, r1 - beq _022F2368 -_022F234C: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r1, [r0] - ldrb r0, [r5, #0x35] - cmp r0, #0 - ldrne r0, _022F1DF0 ; =0x0237C694 - ldrneh r2, [r0, #2] - moveq r2, r1 -_022F2368: - and r0, r1, #0xf0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r7, r4 - cmp r1, #0x50 - moveq r7, #3 - and r0, r2, #0xf0 - cmp r1, #0x60 - moveq r7, #5 - mov r0, r0, lsl #0x10 - cmp r1, #0x90 - moveq r7, #1 - cmp r1, #0xa0 - mov r2, r0, lsr #0x10 - moveq r7, #7 - cmp r2, #0x40 - moveq r7, #4 - cmp r2, #0x80 - moveq r7, #0 - cmp r2, #0x10 - moveq r7, #2 - cmp r2, #0x20 - moveq r7, #6 -_022F23C4: - ldr r0, [sp, #0x5c] - cmp r0, #0 - bne _022F243C - ldr r0, [sp, #0x54] - cmp r0, #0 - beq _022F243C - mov r0, r6 - add r1, sp, #0x9a - mov r2, #2 - mov r3, #0 - bl ov29_022F3EA0 - movs r7, r0 - bmi _022F243C - ldrsh r1, [r6, #4] - ldrsh r0, [sp, #0x9a] - cmp r1, r0 - ldreqsh r1, [r6, #6] - ldreqsh r0, [sp, #0x9c] - cmpeq r1, r0 - beq _022F243C - strb r7, [sb, #0x4c] - mov r0, #1 - str r0, [sp, #0x3c] - ldrb r0, [r5, #0x35] - cmp r0, #0 - beq _022F243C - bl ov29_0233779C - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #0 - strb r1, [r0, #2] -_022F243C: - ldr r0, _022F1DDC ; =0x02353538 - cmp sl, #0 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xdc] - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xde] - ldrne r0, _022F1DE4 ; =0x0237C9A4 - ldrneb r0, [r0, #2] - cmpne r0, #0 - beq _022F248C - mov r0, r6 - add r1, sp, #0x96 - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - mov r7, r0 - strb r7, [r5, #0x36] -_022F248C: - cmp r7, #0 - blt _022F2944 - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #1] - cmp r0, #0 - beq _022F24AC - tst r7, #1 - beq _022F2964 -_022F24AC: - ldrb r0, [sb, #0x4c] - cmp r0, r7 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - str r0, [sp, #0x28] - and r0, r7, #7 - strb r0, [sb, #0x4c] - ldr r0, _022F1DE4 ; =0x0237C9A4 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _022F251C - mov r0, r6 - strb r7, [r5, #0x36] - bl GetSleepAnimationId - mov r1, r0 - mov r2, r7 - mov r0, r6 - bl ov29_023049A8 - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xd8] - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xda] - b _022F2964 -_022F251C: - mov r8, #0 - mov r0, r8 - str r0, [sp, #0x24] - add r1, sp, #0x90 - bl GetPressedButtons - ldr fp, [r6, #0xb4] - ldr r1, _022F1DE0 ; =0x0235171C - ldrb r3, [fp, #0x4c] - ldrsh r2, [r6, #4] - ldrsh r0, [r6, #6] - mov sl, r3, lsl #2 - ldrsh r1, [r1, sl] - ldr sl, _022F1DE0 ; =0x0235171C - add r3, sl, r3, lsl #2 - add r1, r2, r1 - ldrsh r3, [r3, #2] - mov r1, r1, lsl #0x10 - add r2, r0, r3 - mov r0, r1, asr #0x10 - mov r1, r2, lsl #0x10 - mov r1, r1, asr #0x10 - bl GetTile - ldr r0, [r0, #0xc] - str r0, [sp, #0x14] - cmp r0, #0 - moveq r0, r8 - beq _022F2748 - ldr r0, [r0] - cmp r0, #1 - movne r0, r8 - bne _022F2748 - ldr r0, [sp, #0x14] - ldr sl, [r0, #0xb4] - ldrb r0, [sl, #6] - cmp r0, #0 - ldrneb r0, [sl, #9] - cmpne r0, #1 - cmpne r0, #2 - beq _022F25D8 - mov r0, sl - bl IsExperienceLocked - cmp r0, #0 - bne _022F25D8 - ldrb r0, [sl, #0xbc] - cmp r0, #7 - movne r0, r8 - bne _022F2748 -_022F25D8: - mov r0, fp - bl ov29_022F35E0 - cmp r0, #0 - moveq r0, #0 - beq _022F2748 - mov r0, sl - bl ov29_022F35E0 - cmp r0, #0 - moveq r0, #0 - beq _022F2748 - ldrb r0, [fp, #0xd0] - cmp r0, #2 - moveq r0, #0 - beq _022F2748 - ldrb r0, [sl, #0xd0] - cmp r0, #2 - moveq r0, #0 - beq _022F2748 - ldrb r0, [sl, #0xbd] - cmp r0, #0 - cmpne r0, #2 - cmpne r0, #4 - movne r0, #0 - bne _022F2748 - ldrb r0, [fp, #0xbd] - cmp r0, #0 - cmpne r0, #2 - cmpne r0, #4 - movne r0, #0 - bne _022F2748 - ldr r0, [sp, #0x14] - mov r1, #0 - bl ov29_0232461C - cmp r0, #0 - movne r0, #0 - bne _022F2748 - ldrb r1, [fp, #0x4c] - mov r0, r6 - bl ov29_0230105C - cmp r0, #0 - moveq r0, #0 - beq _022F2748 - ldr r0, [sp, #0x14] - add r1, r6, #4 - bl ov29_022FF958 - cmp r0, #0 - beq _022F26B8 - mov r0, #0 - ldr r1, _022F1DE8 ; =0x00000BA3 - mov r2, #1 - mov r3, r0 - str r0, [sp] - bl ov29_0234D518 - cmp r0, #2 - moveq r0, #0 - beq _022F2748 -_022F26B8: - add r0, fp, #0x4a - mov r1, #2 - bl SetMonsterActionFields - ldr r0, _022F1DF0 ; =0x0237C694 - mov r1, #2 - ldrh r0, [r0] - tst r0, #2 - movne r0, #0 - moveq r0, #1 - strb r0, [fp, #0x4e] - ldrh r2, [fp] - add r0, sl, #0x4a - orr r2, r2, #0x8000 - strh r2, [fp] - bl SetMonsterActionFields - mov r0, #0 - strb r0, [sl, #0x4e] - ldrb r1, [fp, #0x4c] - add r2, sl, #0x100 - mov r0, #1 - add r1, r1, #4 - and r1, r1, #7 - strb r1, [sl, #0x4c] - ldrh r1, [sl] - orr r1, r1, #0x8000 - strh r1, [sl] - ldr r1, [sp, #0x14] - ldrsh r1, [r1, #4] - strh r1, [r2, #0x7e] - ldr r1, [sp, #0x14] - ldrsh r1, [r1, #6] - strh r1, [r2, #0x80] - ldr r1, _022F1DDC ; =0x02353538 - ldr r2, [r1] - mov r1, r0 - strb r1, [r2, #0x10] -_022F2748: - cmp r0, #0 - bne _022F2970 - ldrb r0, [sb, #0xc4] - cmp r0, #2 - ldreq r0, [sp, #0x7c] - streq r0, [sp, #0x24] - orreq r0, r8, #1 - andeq r8, r0, #0xff - beq _022F27C8 - cmp r0, #7 - ldreq r0, [sp, #0x80] - streq r0, [sp, #0x24] - orreq r0, r8, #1 - andeq r8, r0, #0xff - beq _022F27C8 - cmp r0, #5 - moveq r0, #0xba0 - streq r0, [sp, #0x24] - orreq r0, r8, #1 - andeq r8, r0, #0xff - beq _022F27C8 - cmp r0, #3 - ldreq r0, [sp, #0x84] - streq r0, [sp, #0x24] - orreq r0, r8, #1 - andeq r8, r0, #0xff - beq _022F27C8 - cmp r0, #4 - ldreq r0, [sp, #0x88] - streq r0, [sp, #0x24] - orreq r0, r8, #1 - andeq r8, r0, #0xff -_022F27C8: - mov r0, r6 - mov r1, r7 - bl ov29_02300E78 - cmp r0, #0 - orreq r0, r8, #2 - andeq r8, r0, #0xff - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _022F2804 - mov r0, r6 - bl GetSleepAnimationId - mov r2, r7 - mov r1, r0 - mov r0, r6 - bl ov29_023049A8 -_022F2804: - tst r8, #2 - bne _022F2910 - tst r8, #1 - beq _022F2864 - ldr r0, [sp, #0x24] - cmp r0, #0 - beq _022F282C - ldr r1, [sp, #0x24] - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_022F282C: - mov r0, #1 - bl ov29_022EB3C8 - ldr r1, _022F1DDC ; =0x02353538 - mov r3, #1 - ldr r0, [r1] - sub r2, r3, #2 - strb r3, [r0, #0x78e] - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xd8] - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xda] - b _022F2970 -_022F2864: - mov r0, #2 - bl ov29_022EB3C8 - ldr r0, [sp, #0x40] - cmp r0, #0 - beq _022F289C - ldr r0, _022F1DDC ; =0x02353538 - ldrh r2, [sp, #0xb2] - ldr r1, [r0] - mov r0, #7 - add r1, r1, #0x100 - strh r2, [r1, #0xd8] - ldrh r2, [sp, #0xb4] - strh r2, [r1, #0xda] - bl sub_02017CCC -_022F289C: - ldr r0, _022F1DF0 ; =0x0237C694 - ldrh r0, [r0] - tst r0, #2 - ldreq r0, [sp, #0x3c] - cmpeq r0, #0 - beq _022F2904 - add r0, sb, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - beq _022F2904 - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #0xd0] - cmp r0, #2 - ldrne r0, _022F1DDC ; =0x02353538 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #0x78b] - mov r0, #0 - strb r0, [sb, #0x4e] - b _022F2970 -_022F2904: - mov r0, #1 - strb r0, [sb, #0x4e] - b _022F2970 -_022F2910: - tst r8, #1 - beq _022F2920 - mov r0, #0x23 - bl ov29_022EA3B4 -_022F2920: - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xd8] - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xda] - b _022F2964 -_022F2944: - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xd8] - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - strh r4, [r0, #0xda] -_022F2964: - mov r0, #0xf - bl AdvanceFrame - b _022F110C -_022F2970: - ldrb r0, [r5, #0x35] - cmp r0, #0 - beq _022F2980 - bl ov29_0233779C -_022F2980: - ldrh r0, [sb, #0x4a] - cmp r0, #0x2d - cmpne r0, #0x13 - bne _022F29B0 - mov r0, r6 - bl ov29_022F59C4 - bl IsFloorOver - cmp r0, #0 - bne _022F2B34 - mov r0, #0 - bl ov29_022EB3C8 - b _022F1024 -_022F29B0: - ldrb r0, [sp, #0xb6] - cmp r0, #0 - bne _022F2A00 - ldr r0, _022F1DDC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x78c] - ldrh r0, [sb, #0x4a] - cmp r0, #0 - beq _022F29F4 - mov r0, r6 - bl ov29_022EB944 - cmp r0, #0 - bne _022F2B34 - mov r0, #0xf - bl AdvanceFrame - b _022F2B34 -_022F29F4: - mov r0, #0xf - bl AdvanceFrame - b _022F1024 -_022F2A00: - mov r0, #0xf - bl AdvanceFrame - bl ov29_02346E5C - mov r0, #0 - bl ov29_0233A248 - mov r0, #1 - mov r1, #0 - bl ov29_022EA428 - ldrb r0, [sp, #0xb9] - cmp r0, #0 - beq _022F2A70 - bl GetLeader - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - bne _022F2A70 - mov r0, #4 - bl sub_02017CCC - ldrb r0, [sp, #0xb7] - ldrb r1, [sp, #0xb8] - mov r2, #1 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bl ov29_0234DDF4 - bl sub_02006B70 - b _022F2A9C -_022F2A70: - mov r0, #4 - bl sub_02017CCC - ldrb r0, [sp, #0xb7] - ldrb r1, [sp, #0xb8] - mov r2, #0 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bl ov29_0234DDF4 - bl sub_02006B70 -_022F2A9C: - bl ov29_022E0B44 - ldr r0, _022F1DE4 ; =0x0237C9A4 - mov r1, #0 - strb r1, [r0, #2] - strb r1, [r5, #0x35] - bl ov29_0233779C - bl IsFloorOver - cmp r0, #0 - bne _022F2B34 - ldrh r0, [sb, #0x4a] - cmp r0, #0 - beq _022F2B18 - cmp r0, #0x2b - bne _022F2AEC - ldr r0, _022F1DDC ; =0x02353538 - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #8] - ldr r0, [r0] - strb r2, [r0, #7] -_022F2AEC: - ldrh r0, [sb, #0x4a] - cmp r0, #0x2e - bne _022F2B34 - ldr r0, _022F1DDC ; =0x02353538 - mov r3, #1 - ldr r2, [r0] - mov r1, #0 - strb r3, [r2, #8] - ldr r0, [r0] - strb r1, [r0, #7] - b _022F2B34 -_022F2B18: - mov r0, #0xf - bl AdvanceFrame - ldr r0, _022F1DDC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - beq _022F1024 -_022F2B34: - add sp, sp, #0xdc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_022F0EDC - - arm_func_start ov29_022F2B3C -ov29_022F2B3C: ; 0x022F2B3C - ldrb r1, [r0, #6] - cmp r1, #0 - beq _022F2B6C - ldrb r1, [r0, #8] - cmp r1, #0 - ldreqb r1, [r0, #9] - cmpeq r1, #0 - bne _022F2B6C - ldrb r0, [r0, #0xbc] - cmp r0, #7 - movne r0, #1 - bxne lr -_022F2B6C: - mov r0, #0 - bx lr - arm_func_end ov29_022F2B3C - - arm_func_start ov29_022F2B74 -ov29_022F2B74: ; 0x022F2B74 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r1, _022F2FBC ; =0x02353538 - ldr r8, _022F2FC0 ; =0x0237C9A4 - ldr r1, [r1] - ldrb r2, [r8, #1] - add r1, r1, #0x21c - str r0, [sp] - cmp r2, #0 - add r5, r1, #0x1a000 - beq _022F2D58 - ldr r0, _022F2FC4 ; =0x0000013F - mov r6, #0x400 - rsb r6, r6, #0 - add r0, r0, #0x9c - mov r4, #0 - str r0, [sp, #8] - add r7, r6, #0x200 -_022F2BBC: - ldr r0, _022F2FC8 ; =0x023526D8 - mov r1, #6 - ldrh r2, [sp, #0x10] - mla r0, r4, r1, r0 - bic r1, r2, #0x100 - strh r1, [sp, #0x10] - ldrh r2, [sp, #0x10] - ldrb r1, [r0, #5] - bic r2, r2, #0x200 - strh r2, [sp, #0x10] - cmp r1, #0 - ldrh r1, [sp, #0x10] - movne r2, #0x10 - moveq r2, #0 - bic r1, r1, #0xc00 - strh r1, [sp, #0x10] - ldrh r1, [sp, #0x10] - orr r1, r1, #0x400 - strh r1, [sp, #0x10] - ldrh r1, [sp, #0x10] - bic r1, r1, #0x1000 - strh r1, [sp, #0x10] - ldrh r1, [sp, #0x10] - bic r1, r1, #0x2000 - strh r1, [sp, #0x10] - ldrh r1, [sp, #0x10] - orr r1, r1, #0x2000 - strh r1, [sp, #0x10] - ldrh r1, [sp, #0x10] - bic r1, r1, #0xc000 - strh r1, [sp, #0x10] - ldrb r1, [r0, #4] - cmp r1, #0 - movne r1, #8 - moveq r1, #0 - add r1, r1, r2 - ldrh r3, [sp, #0x12] - mov sb, r1, lsl #0x1b - ldrh r1, [sp, #0x16] - ldrh r2, [sp, #0x14] - bic r3, r3, #0x3e00 - bic r1, r1, #1 - and r2, r2, r6 - strh r3, [sp, #0x12] - strh r1, [sp, #0x16] - strh r2, [sp, #0x14] - ldrh r1, [sp, #0x12] - ldrh r3, [sp, #0x14] - ldrh r2, [sp, #0x16] - orr r1, r1, sb, lsr #18 - strh r1, [sp, #0x12] - ldr r1, [sp, #8] - ldrsh fp, [r0] - orr r1, r3, r1 - strh r1, [sp, #0x14] - bic r1, r2, #2 - strh r1, [sp, #0x16] - ldrh r1, [sp, #0x14] - ldrh r2, [sp, #0x12] - ldrsh sb, [r0, #2] - bic r1, r1, #0xc00 - bic r2, r2, #0xc000 - strh r1, [sp, #0x14] - strh r2, [sp, #0x12] - ldrh r2, [sp, #0x14] - ldrh r0, [sp, #0x12] - ldrh r1, [sp, #0x16] - orr r2, r2, #0x800 - strh r2, [sp, #0x14] - ldrh r2, [sp, #0x14] - and sl, r0, r7 - ldr r0, _022F2FCC ; =0xFFFF000F - bic r2, r2, #0xf000 - strh r2, [sp, #0x14] - ldrsh ip, [r8, #4] - and r3, r1, r0 - ldr r0, _022F2FD0 ; =0x020AFC4C - add ip, ip, ip, lsr #31 - strh r3, [sp, #0x16] - mov r3, ip, asr #1 - and r3, r3, #7 - add r3, r3, #0xa - strh sl, [sp, #0x12] - mul sl, fp, r3 - mul r3, sb, r3 - add sb, sl, #0x7c - and sl, sb, r6, lsr #23 - ldrh fp, [sp, #0x12] - add r3, r3, #0x62 - ldrh sb, [sp, #0x16] - mov r3, r3, lsl #0x14 - orr sl, fp, sl - orr r3, sb, r3, lsr #16 - ldr r0, [r0] - ldr r2, _022F2FC4 ; =0x0000013F - add r1, sp, #0x10 - strh sl, [sp, #0x12] - strh r3, [sp, #0x16] - bl sub_0201B9F8 - add r4, r4, #1 - cmp r4, #4 - blt _022F2BBC - b _022F2F7C -_022F2D58: - ldrb r0, [r5, #0x35] - cmp r0, #0 - beq _022F2F7C - ldrb r3, [r5, #0x36] - cmp r3, #0 - blt _022F2F7C - cmp r3, #8 - bge _022F2F7C - ldrb r0, [r8, #3] - ldr r2, _022F2FC0 ; =0x0237C9A4 - cmp r0, #0 - ldrneb r0, [r8] - ldrsh r2, [r2, #4] - cmpne r0, #0 - mov r0, #0xc - mul r1, r3, r0 - add r2, r2, r2, lsr #31 - ldr r0, _022F2FD4 ; =0x023526F0 - mov r2, r2, asr #1 - and r2, r2, #7 - ldr r3, _022F2FD8 ; =0x023526F2 - add r7, r2, #0xa - ldrsh r4, [r0, r1] - ldrsh r2, [r3, r1] - movne sl, #3 - moveq sl, #1 - mul r3, r2, r7 - mul r6, r4, r7 - add r7, r6, #0x7c - cmp sl, #0 - add r8, r3, #0x62 - mov r6, #0 - ble _022F2F7C - ldr r3, _022F2FDC ; =0x023526F4 - mov r4, #0x400 - ldr r2, _022F2FE0 ; =0x000003FF - ldr r3, [r3, r1] - add sb, r0, r1 - sub r0, r2, #0x2c0 - rsb r4, r4, #0 - str r0, [sp, #4] - add r0, r4, #0x200 - and fp, r3, r2 - str r0, [sp, #0xc] - b _022F2F74 -_022F2E0C: - ldrh r1, [sp, #0x10] - ldrb r0, [sb, #9] - ldrh r3, [sp, #0x12] - bic r1, r1, #0x100 - strh r1, [sp, #0x10] - cmp r0, #0 - ldrh r0, [sp, #0x10] - movne r1, #0x10 - ldrh r2, [sp, #0x14] - bic r0, r0, #0x200 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - bic r3, r3, #0x3e00 - strh r3, [sp, #0x12] - bic r0, r0, #0xc00 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - and r2, r2, r4 - strh r2, [sp, #0x14] - orr r0, r0, #0x400 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - moveq r1, #0 - ldrh r3, [sp, #0x12] - bic r0, r0, #0x1000 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - ldrh r2, [sp, #0x14] - bic r0, r0, #0x2000 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - orr r0, r0, #0x2000 - strh r0, [sp, #0x10] - ldrh r0, [sp, #0x10] - bic r0, r0, #0xc000 - strh r0, [sp, #0x10] - ldrb r0, [sb, #8] - cmp r0, #0 - movne r0, #8 - moveq r0, #0 - add r0, r0, r1 - ldrh r1, [sp, #0x16] - mov r0, r0, lsl #0x1b - orr r0, r3, r0, lsr #18 - bic r1, r1, #1 - strh r1, [sp, #0x16] - strh r0, [sp, #0x12] - orr r0, r2, fp - ldrh r2, [sp, #0x12] - ldrh r1, [sp, #0x16] - strh r0, [sp, #0x14] - bic r2, r2, #0xc000 - bic r0, r1, #2 - ldrh r1, [sp, #0x14] - strh r2, [sp, #0x12] - strh r0, [sp, #0x16] - bic r1, r1, #0xc00 - strh r1, [sp, #0x14] - ldrh r1, [sp, #0x14] - ldrh r3, [sp, #0x12] - ldrh r2, [sp, #0x16] - orr r1, r1, #0x800 - strh r1, [sp, #0x14] - ldr r1, [sp, #0xc] - and r0, r7, r4, lsr #23 - and r1, r3, r1 - strh r1, [sp, #0x12] - ldr r1, _022F2FCC ; =0xFFFF000F - ldrh r3, [sp, #0x14] - and r1, r2, r1 - ldrh r2, [sp, #0x12] - strh r1, [sp, #0x16] - bic r3, r3, #0xf000 - orr r0, r2, r0 - strh r0, [sp, #0x12] - ldrh r1, [sp, #0x16] - mov r0, r8, lsl #0x14 - ldr r2, [sp, #4] - orr r0, r1, r0, lsr #16 - strh r0, [sp, #0x16] - ldr r0, _022F2FD0 ; =0x020AFC4C - add r1, sp, #0x10 - ldr r0, [r0] - strh r3, [sp, #0x14] - bl sub_0201B9F8 - ldrsh r1, [sb] - ldrsh r0, [sb, #2] - add r6, r6, #1 - add r7, r7, r1, lsl #2 - add r8, r8, r0, lsl #2 -_022F2F74: - cmp r6, sl - blt _022F2E0C -_022F2F7C: - ldr r0, _022F2FC0 ; =0x0237C9A4 - ldrb r1, [r0, #2] - cmp r1, #0 - ldrneb r2, [r5, #0x36] - ldrneb r1, [r5, #0x37] - cmpne r1, r2 - beq _022F2FB4 - strb r2, [r5, #0x37] - ldrb r3, [r0, #2] - ldr r0, [sp] - ldrb r1, [r5, #0x36] - add r0, r0, #4 - mov r2, #0 - bl ov29_02337428 -_022F2FB4: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F2FBC: .word 0x02353538 -_022F2FC0: .word 0x0237C9A4 -_022F2FC4: .word 0x0000013F -_022F2FC8: .word 0x023526D8 -_022F2FCC: .word 0xFFFF000F -_022F2FD0: .word 0x020AFC4C -_022F2FD4: .word 0x023526F0 -_022F2FD8: .word 0x023526F2 -_022F2FDC: .word 0x023526F4 -_022F2FE0: .word 0x000003FF - arm_func_end ov29_022F2B74 - - arm_func_start ov29_022F2FE4 -ov29_022F2FE4: ; 0x022F2FE4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _022F3084 ; =0x02353538 - ldr r2, _022F3088 ; =0x0237C694 - ldr r6, [r1] - mov r4, #0 - ldrb r5, [r6, #0x78c] - ldrb r0, [r6, #0x78b] - ldrh r7, [r2] - sub r3, r4, #1 - orr r0, r5, r0 - strb r0, [r6, #0x78c] - ldr r0, [r1] - and r5, r7, #0xf0 - strb r4, [r0, #0x78b] - ldr r0, [r1] - mov r8, #0x54 - add r0, r0, #0x100 - strh r3, [r0, #0xd8] - ldr r0, [r1] - ldr r7, _022F3088 ; =0x0237C694 - add r0, r0, #0x100 - strh r3, [r0, #0xda] - ldrh r0, [r2] - ldr r6, _022F3084 ; =0x02353538 - tst r0, #0x100 - movne r4, #1 - b _022F3070 -_022F3050: - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrh r0, [r7] - and r0, r0, #0xf0 - tst r5, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - bl AdvanceFrame -_022F3070: - ldr r0, [r6] - ldrb r0, [r0, #0x78c] - cmp r0, #0 - bne _022F3050 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F3084: .word 0x02353538 -_022F3088: .word 0x0237C694 - arm_func_end ov29_022F2FE4 - - arm_func_start ov29_022F308C -ov29_022F308C: ; 0x022F308C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x68 - ldr r0, _022F35D4 ; =0x02353538 - ldr r5, [r0] - bl GetLeader - mov r4, r0 - ldrsh sl, [r4, #4] - ldrsh sb, [r4, #6] - ldr r2, [r4, #0xb4] - mov r0, sl - mov r1, sb - ldrb r7, [r2, #0x4c] - bl GetTile - ldrb r1, [r5, #0x78b] - ldr r3, _022F35D8 ; =0x0235171C - mov r5, r7, lsl #2 - ldr r2, _022F35DC ; =0x0235171E - ldrsh r6, [r3, r5] - mov r8, r0 - cmp r1, #0 - ldrsh r5, [r2, r5] - moveq r0, #0 - beq _022F35CC - ldr r0, [r8, #0x10] - cmp r0, #0 - movne r0, #0 - bne _022F35CC - add r1, sp, #0x4c - mov r0, r4 - strh sl, [sp, #0x4c] - strh sb, [sp, #0x4e] - bl ov29_022FFA94 - cmp r0, #0 - movne r0, #0 - bne _022F35CC - mov r0, r4 - mov r1, r7 - bl ov29_02300FCC - cmp r0, #0 - moveq r0, #0 - beq _022F35CC - ldrb r0, [r8, #7] - str r0, [sp, #0x10] - cmp r0, #0xff - bne _022F3160 - add r0, sl, r6 - add r1, sb, r5 - bl GetTile - ldrb r0, [r0, #7] - cmp r0, #0xff - beq _022F3170 - mov r0, #0 - b _022F35CC -_022F3160: - ldrh r0, [r8] - tst r0, #8 - movne r0, #0 - bne _022F35CC -_022F3170: - mvn r6, #0 - ldr r5, _022F35D8 ; =0x0235171C - b _022F31C4 -_022F317C: - add r0, r7, r6 - mov r0, r0, lsl #0x1d - mov r1, r0, lsr #0x1b - add r0, r5, r0, lsr #27 - ldrsh r2, [r5, r1] - ldrsh r1, [r0, #2] - add r0, sl, r2 - add r1, sb, r1 - bl GetTile - ldr r1, [r0, #0xc] - cmp r1, #0 - movne r0, #0 - bne _022F35CC - ldrh r0, [r0] - tst r0, #0x200 - movne r0, #0 - bne _022F35CC - add r6, r6, #1 -_022F31C4: - cmp r6, #1 - ble _022F317C - add r1, r7, #4 - add r0, r7, #5 - mov r1, r1, lsl #0x1d - mov r0, r0, lsl #0x1d - add r2, r7, #3 - mov r2, r2, lsl #0x1d - ldr r6, _022F35D8 ; =0x0235171C - mov r5, r1, lsr #0x1b - mov fp, r0, lsr #0x1b - ldrsh r1, [r6, r5] - ldr r8, _022F35DC ; =0x0235171E - mov r3, r2, lsr #0x1b - add r1, sl, r1 - ldrsh r2, [r6, r3] - ldrsh r0, [r6, fp] - ldrsh r6, [r8, r3] - add r2, sl, r2 - ldrsh r5, [r8, r5] - ldrsh r3, [r8, fp] - add r8, sl, r0 - add r0, sb, r5 - str r1, [sp, #8] - str r0, [sp, #4] - ldr r0, [sp, #8] - add r6, sb, r6 - str r0, [sp, #0x60] - ldr r0, [sp, #4] - add r1, sb, r3 - str r0, [sp, #0x54] - and r0, r7, #1 - str r2, [sp, #0x5c] - str r8, [sp, #0x64] - str r6, [sp, #0x50] - str r1, [sp, #0x58] - str r0, [sp] - mvn r5, #0 - b _022F33E4 -_022F3260: - add r8, sl, r5 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - mvn r6, #0 - str r0, [sp, #0x14] - b _022F33D8 -_022F3278: - add fp, sb, r6 - mov r0, r8 - mov r1, fp - bl GetTile - ldr r1, [r0, #0x10] - str r0, [sp, #0xc] - cmp r1, #0 - beq _022F32DC - mov r0, #0 - b _022F32C0 -_022F32A0: - add r2, sp, #0x5c - ldr r2, [r2, r0, lsl #2] - cmp r8, r2 - addeq r2, sp, #0x50 - ldreq r2, [r2, r0, lsl #2] - cmpeq fp, r2 - beq _022F32C8 - add r0, r0, #1 -_022F32C0: - cmp r0, #3 - blt _022F32A0 -_022F32C8: - cmp r0, #3 - ldreq r0, [r1] - cmpeq r0, #3 - moveq r0, #0 - beq _022F35CC -_022F32DC: - ldr r0, [sp] - cmp r0, #0 - beq _022F3324 - cmp r1, #0 - beq _022F3368 - ldr r0, [r1] - cmp r0, #2 - bne _022F3368 - ldrb r0, [r1, #0x20] - cmp r0, #0 - ldreq r0, _022F35D4 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x1a000 - ldreqb r0, [r0, #0x244] - cmpeq r0, #0 - beq _022F3368 - mov r0, #0 - b _022F35CC -_022F3324: - cmp r5, #0 - cmpne r6, #0 - bne _022F3368 - cmp r1, #0 - beq _022F3368 - ldr r0, [r1] - cmp r0, #2 - bne _022F3368 - ldrb r0, [r1, #0x20] - cmp r0, #0 - ldreq r0, _022F35D4 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x1a000 - ldreqb r0, [r0, #0x244] - cmpeq r0, #0 - movne r0, #0 - bne _022F35CC -_022F3368: - cmp r5, #0 - cmpne r6, #0 - bne _022F33D4 - cmp r5, #0 - cmpeq r6, #0 - beq _022F33D4 - ldr r0, [sp, #8] - cmp r0, r8 - ldreq r0, [sp, #4] - cmpeq r0, fp - beq _022F33D4 - ldr r0, [sp, #0x14] - add r1, sp, #0x48 - strh r0, [sp, #0x48] - mov r0, r4 - strh fp, [sp, #0x4a] - bl ov29_022FFA94 - cmp r0, #0 - bne _022F33D4 - ldr r0, [sp, #0x10] - cmp r0, #0xff - ldrne r0, [sp, #0xc] - ldrneb r1, [r0, #7] - ldrne r0, [sp, #0x10] - cmpne r0, r1 - movne r0, #0 - bne _022F35CC -_022F33D4: - add r6, r6, #1 -_022F33D8: - cmp r6, #1 - ble _022F3278 - add r5, r5, #1 -_022F33E4: - cmp r5, #1 - ble _022F3260 - ldr r0, [sp] - cmp r0, #0 - bne _022F35C8 - cmp r7, #0 - cmpne r7, #4 - bne _022F34E8 - sub r3, sl, #1 - sub r2, sb, #1 - add r1, sp, #0x44 - mov r0, r4 - strh r3, [sp, #0x44] - strh r2, [sp, #0x46] - bl ov29_022FFA94 - mov r5, r0 - sub r2, sl, #1 - add r1, sp, #0x40 - mov r0, r4 - strh r2, [sp, #0x40] - strh sb, [sp, #0x42] - bl ov29_022FFA94 - mov r6, r0 - sub r3, sl, #1 - add r2, sb, #1 - add r1, sp, #0x3c - mov r0, r4 - strh r3, [sp, #0x3c] - strh r2, [sp, #0x3e] - bl ov29_022FFA94 - cmp r6, #0 - bne _022F3474 - cmp r5, r6 - cmpeq r6, r0 - movne r0, #0 - bne _022F35CC -_022F3474: - add r3, sl, #1 - sub r2, sb, #1 - add r1, sp, #0x38 - mov r0, r4 - strh r3, [sp, #0x38] - strh r2, [sp, #0x3a] - bl ov29_022FFA94 - mov r5, r0 - add r2, sl, #1 - add r1, sp, #0x34 - mov r0, r4 - strh r2, [sp, #0x34] - strh sb, [sp, #0x36] - bl ov29_022FFA94 - mov r6, r0 - add r3, sl, #1 - add r2, sb, #1 - add r1, sp, #0x30 - mov r0, r4 - strh r3, [sp, #0x30] - strh r2, [sp, #0x32] - bl ov29_022FFA94 - cmp r6, #0 - bne _022F35C8 - cmp r5, r6 - cmpeq r6, r0 - beq _022F35C8 - mov r0, #0 - b _022F35CC -_022F34E8: - sub r3, sl, #1 - sub r2, sb, #1 - add r1, sp, #0x2c - mov r0, r4 - strh r3, [sp, #0x2c] - strh r2, [sp, #0x2e] - bl ov29_022FFA94 - mov r5, r0 - sub r2, sb, #1 - add r1, sp, #0x28 - mov r0, r4 - strh sl, [sp, #0x28] - strh r2, [sp, #0x2a] - bl ov29_022FFA94 - mov r6, r0 - add r3, sl, #1 - sub r2, sb, #1 - add r1, sp, #0x24 - mov r0, r4 - strh r3, [sp, #0x24] - strh r2, [sp, #0x26] - bl ov29_022FFA94 - cmp r6, #0 - bne _022F3558 - cmp r5, r6 - cmpeq r6, r0 - movne r0, #0 - bne _022F35CC -_022F3558: - sub r3, sl, #1 - add r2, sb, #1 - add r1, sp, #0x20 - mov r0, r4 - strh r3, [sp, #0x20] - strh r2, [sp, #0x22] - bl ov29_022FFA94 - mov r5, r0 - add r2, sb, #1 - add r1, sp, #0x1c - mov r0, r4 - strh sl, [sp, #0x1c] - strh r2, [sp, #0x1e] - bl ov29_022FFA94 - mov r6, r0 - add r3, sl, #1 - add r2, sb, #1 - add r1, sp, #0x18 - mov r0, r4 - strh r3, [sp, #0x18] - strh r2, [sp, #0x1a] - bl ov29_022FFA94 - cmp r6, #0 - bne _022F35C8 - cmp r5, r6 - cmpeq r6, r0 - movne r0, #0 - bne _022F35CC -_022F35C8: - mov r0, #1 -_022F35CC: - add sp, sp, #0x68 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F35D4: .word 0x02353538 -_022F35D8: .word 0x0235171C -_022F35DC: .word 0x0235171E - arm_func_end ov29_022F308C - - arm_func_start ov29_022F35E0 -ov29_022F35E0: ; 0x022F35E0 - ldrb r0, [r0, #0xc4] - cmp r0, #2 - moveq r0, #0 - bxeq lr - cmp r0, #1 - moveq r0, #0 - bxeq lr - cmp r0, #7 - moveq r0, #0 - bxeq lr - cmp r0, #5 - moveq r0, #0 - bxeq lr - cmp r0, #3 - moveq r0, #0 - bxeq lr - cmp r0, #4 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_022F35E0 - - arm_func_start ov29_022F3634 -ov29_022F3634: ; 0x022F3634 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - bl GetLeader - movs r4, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - bl GetTileAtEntity - mov r5, r0 - mov r0, r4 - mov r1, #0xd - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r0, [r4, #0xb4] - ldrneb r0, [r0, #0xef] - cmpne r0, #3 - beq _022F3698 - mov r0, r4 - mov r1, #0x10 - bl HasHeldItem - cmp r0, #0 - bne _022F3698 - add r0, r4, #4 - bl ov29_02337D68 -_022F3698: - ldrh r0, [r5] - tst r0, #0x200 - ldrne r0, _022F37CC ; =0x02353538 - movne r1, #1 - ldrne r0, [r0] - strneb r1, [r0, #5] - ldr r5, [r5, #0x10] - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r5] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F36CC: ; jump table - ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 1 - b _022F36E8 ; case 2 - b _022F3778 ; case 3 - ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 4 - b _022F37C0 ; case 5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 6 -_022F36E8: - mov r0, r5 - bl ov29_022E1608 - mov r6, r0 - mov r7, #0 - mov r0, r4 - mov r1, #0x13 - mov r8, r7 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022F372C - ldrb r0, [r5, #0x20] - cmp r0, #0 - bne _022F372C - mov r0, #1 - strb r0, [r5, #0x20] - bl ov29_02336F4C - mov r8, #1 -_022F372C: - ldrb r0, [r6, #1] - cmp r0, #0 - moveq r7, #1 - beq _022F3750 - cmp r0, #1 - moveq r7, #0 - beq _022F3750 - cmp r0, #2 - moveq r7, #1 -_022F3750: - cmp r7, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r8, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - add r1, r4, #4 - mov r2, #0 - mov r3, #1 - bl ov29_022EDFA0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F3778: - mov r0, r5 - bl ov29_022E1610 - ldrb r0, [r0] - tst r0, #2 - bne _022F37A0 - add r0, r4, #4 - mov r1, #1 - bl ov29_02345058 - bl ov29_022FB920 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F37A0: - mov r0, r4 - bl ShouldMonsterRunAway - cmp r0, #0 - ldreq r0, _022F37CC ; =0x02353538 - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0, #0x614] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022F37C0: - mov r0, #1 - bl ov29_02338794 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F37CC: .word 0x02353538 - arm_func_end ov29_022F3634 - - arm_func_start ov29_022F37D0 -ov29_022F37D0: ; 0x022F37D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r4, r1 - bl ov29_022F87C0 - movs r5, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r5] - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - bl ov29_023009CC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #0xb4] - mov r6, #1 - ldrb r0, [r1, #6] - cmp r0, #0 - beq _022F3850 - ldrb r0, [r1, #0xbc] - cmp r0, #7 - cmpne r0, #0x10 - cmpne r0, #0x11 - cmpne r0, #0x12 - cmpne r0, #0x13 - cmpne r0, #0x14 - ldrneb r0, [r1, #9] - cmpne r0, #1 - movne r6, #0 - b _022F3874 -_022F3850: - mov r2, #0 - mov r0, r7 - mov r1, r5 - mov r3, r2 - bl ov29_0230175C - cmp r0, #1 - movne r0, r6 - moveq r0, #0 - and r6, r0, #0xff -_022F3874: - cmp r6, #0 - beq _022F3888 - add r0, r4, #0x4a - mov r1, #0x13 - bl SetMonsterActionFields -_022F3888: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022F37D0 - - arm_func_start ov29_022F3890 -ov29_022F3890: ; 0x022F3890 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r1 - mov r6, r0 - bl ov29_022E9618 - mov r4, r0 - cmp r5, #0 - beq _022F38D0 - ldrb r0, [r4, #0xd0] - cmp r0, #4 - bne _022F38D0 - ldrb r0, [r4, #0x4c] - add r1, r0, #4 - and r0, r1, #0xff - and r0, r0, #7 - strb r0, [r4, #0x4c] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022F38D0: - ldrb r0, [r4, #0xd0] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #8 - bl DungeonRandInt - mov sb, r0 - mov r8, #0 - mov r7, #1 - b _022F3928 -_022F38F4: - cmp r5, #0 - movne r0, r7 - bne _022F390C - mov r0, r6 - mov r1, sb - bl ov29_02300E78 -_022F390C: - cmp r0, #0 - andne r0, sb, #7 - strneb r0, [r4, #0x4c] - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, sb, #1 - and sb, r0, #7 - add r8, r8, #1 -_022F3928: - cmp r8, #8 - blt _022F38F4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022F3890 - - arm_func_start ov29_022F3934 -ov29_022F3934: ; 0x022F3934 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _022F3AE4 ; =0x02353538 - ldr r0, [r0] - ldr r6, [r0, #0xc8] - bl GetLeader - ldr sb, [r6, #0xb4] - mov fp, r0 - ldrb r0, [sb, #7] - ldr sl, [fp, #0xb4] - cmp r0, #0 - beq _022F3970 - ldr r1, _022F3AE8 ; =0x00000BA4 - mov r0, r6 - bl LogMessageByIdWithPopup - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F3970: - mov r0, #2 - bl ov29_02346BD8 - cmp r0, #0 - bne _022F398C - bl ov29_022F670C - cmp r0, #0 - beq _022F399C -_022F398C: - ldr r1, _022F3AEC ; =0x00000BA5 - mov r0, r6 - bl LogMessageByIdWithPopup - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F399C: - ldr r0, _022F3AE4 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x790] - cmp r0, #0 - beq _022F39C0 - ldr r1, _022F3AF0 ; =0x00000BA6 - mov r0, r6 - bl LogMessageByIdWithPopup - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F39C0: - mov r5, #0 - strb r5, [r1, #0x799] - mov r0, #1 - strb r0, [sb, #7] - strb r5, [sl, #7] - mvn r4, #0 -_022F39D8: - mov r0, r5 - bl GetActiveTeamMember - mov r7, r0 - ldrb r0, [r7] - mov r8, r4 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F3A40 - ldrsh r0, [r7, #8] - bl CheckTeamMemberIdx__022F9C34 - cmp r0, #0 - ldrsh r0, [sb, #0xc] - ldreqsh r8, [r7, #8] - cmp r5, r0 - bne _022F3A38 - mov r0, #1 - strb r0, [r7, #1] - cmp r8, r4 - beq _022F3A40 - mov r0, r8 - bl sub_02056754 - b _022F3A40 -_022F3A38: - mov r0, #0 - strb r0, [r7, #1] -_022F3A40: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #4 - blt _022F39D8 - ldr r0, _022F3AF4 ; =0x0235355C - mov r1, #0 - str r1, [r0] - add r3, sl, #0x4a - add r2, sb, #0x4a - mov r1, #0xa -_022F3A6C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022F3A6C - mov r0, r6 - mov r1, #1 - bl ov29_022E2E54 - bl ov29_022E8104 - bl ov29_022E81F8 - mov r0, fp - bl ov29_022E3DD8 - bl GetLeader - bl ov29_022E3E24 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - ldr r1, _022F3AF8 ; =0x00000BA7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - bl ov29_022F62CC - mov r0, fp - mov r1, #0 - strh r1, [sb, #0x68] - strh r1, [sl, #0x68] - bl ov29_022F9EA0 - mov r0, r6 - bl ov29_022F9EA0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F3AE4: .word 0x02353538 -_022F3AE8: .word 0x00000BA4 -_022F3AEC: .word 0x00000BA5 -_022F3AF0: .word 0x00000BA6 -_022F3AF4: .word 0x0235355C -_022F3AF8: .word 0x00000BA7 - arm_func_end ov29_022F3934 - - arm_func_start ov29_022F3AFC -ov29_022F3AFC: ; 0x022F3AFC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl ov29_022F89AC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrh r0, [r0] - tst r0, #0x2000 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov29_023491B8 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_023009CC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - bl ov29_022E28D4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r4 - bl ov29_023009CC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, r5, #0x4a - mov r1, #0x42 - bl SetMonsterActionFields - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_022F3AFC - - arm_func_start ov29_022F3B8C -ov29_022F3B8C: ; 0x022F3B8C - ldr ip, _022F3B94 ; =ov29_022FBAB4 - bx ip - .align 2, 0 -_022F3B94: .word ov29_022FBAB4 - arm_func_end ov29_022F3B8C - - arm_func_start ov29_022F3B98 -ov29_022F3B98: ; 0x022F3B98 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r4, #0 - str r4, [sp, #4] - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov fp, r4 - str r4, [sp] - bl sub_0204AF20 - cmp r0, #0 - moveq r0, r4 - beq _022F3E88 - cmp r8, #0 - ldrb r5, [sl, #0xb0] - beq _022F3C4C - mov r6, r4 - mov r0, sl - mov r1, r8 - mov r2, r6 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - mov r1, r0, lsl #0x10 - mov r7, r1, asr #0x10 - mov r0, sl - mov r1, r8 - mov r2, r4 - bl GetEntityMoveTargetAndRange - cmp r7, #0 - cmpne r7, #0x10 - cmpne r7, #0x40 - cmpne r7, #0x50 - cmpne r7, #0x80 - and r0, r0, #0xf - cmpne r7, #0x90 - beq _022F3C3C - cmp r0, #4 - bne _022F3C40 - ldrh r0, [r8, #4] - cmp r0, #0x80 - beq _022F3C40 -_022F3C3C: - mov r6, #1 -_022F3C40: - cmp r6, #0 - moveq r0, #1 - beq _022F3E88 -_022F3C4C: - bl ov29_022F2FE4 - ldr r1, _022F3E90 ; =0x0237C9A4 - mov r2, #0 - strb r2, [r1, #1] - mov r0, #1 - strh r2, [r1, #4] - bl ov29_0234B4CC - mov r0, #0 - bl ov29_0234B1A4 - ldr r0, _022F3E94 ; =0x00000BA8 - bl ov29_0234FC50 - bl ov29_022E0B44 - ldr r6, _022F3E90 ; =0x0237C9A4 - mvn r8, #0 -_022F3C84: - mov r0, #0x62 - bl AdvanceFrame - ldrb r0, [r6, #1] - cmp r0, #0 - beq _022F3CAC - mov r0, sl - bl ov29_022F2B74 - ldrsh r0, [r6, #4] - add r0, r0, #1 - strh r0, [r6, #4] -_022F3CAC: - ldr r0, _022F3E98 ; =0x0237C6A4 - mov r1, #0 - ldrh r0, [r0] - tst r0, #0x40 - beq _022F3CC8 - tst r0, #2 - movne r1, #1 -_022F3CC8: - cmp r1, #0 - beq _022F3D10 - add r1, sp, #8 - mov r0, sl - mov r2, #0x64 - mov r3, #0 - bl ov29_022F3EA0 - ldrsh r2, [sl, #4] - ldrsh r1, [sp, #8] - mov r7, r0 - cmp r2, r1 - ldreqsh r1, [sl, #6] - ldreqsh r0, [sp, #0xa] - cmpeq r1, r0 - movne r0, #1 - moveq r4, #1 - strne r0, [sp, #4] - b _022F3DE0 -_022F3D10: - ldr r0, _022F3E9C ; =0x0237C694 - ldrh r0, [r0] - tst r0, #0x100 - and r0, r0, #0xf0 - mov r0, r0, lsl #0x10 - movne r1, #1 - mov r0, r0, lsr #0x10 - strneb r1, [r6, #1] - bne _022F3D4C - mov r1, #0 - strb r1, [r6, #1] - strh r1, [r6, #4] - ldr r1, _022F3E9C ; =0x0237C694 - ldrh r1, [r1, #2] - and r0, r0, r1 -_022F3D4C: - mov r7, r8 - cmp r0, #0x50 - moveq r7, #3 - cmp r0, #0x60 - moveq r7, #5 - cmp r0, #0x90 - moveq r7, #1 - cmp r0, #0xa0 - moveq r7, #7 - cmp r0, #0x40 - moveq r7, #4 - cmp r0, #0x80 - moveq r7, #0 - cmp r0, #0x10 - moveq r7, #2 - cmp r0, #0x20 - ldrb r0, [r6, #1] - moveq r7, #6 - cmp r0, #0 - beq _022F3DB0 - cmp r7, #0 - blt _022F3DC0 - tst r7, #1 - bne _022F3DE0 - b _022F3DC0 -_022F3DB0: - cmp r7, #0 - blt _022F3DC0 - tst r7, #1 - beq _022F3DE0 -_022F3DC0: - ldr r0, _022F3E9C ; =0x0237C694 - ldrh r0, [r0, #2] - tst r0, #2 - movne r4, #1 - bne _022F3DE0 - tst r0, #1 - beq _022F3C84 - mov fp, #1 -_022F3DE0: - bl ov29_0234FCA8 - cmp r0, #0 - beq _022F3DFC - mov r0, #0x62 - bl AdvanceFrame - mov r0, #0x62 - bl AdvanceFrame -_022F3DFC: - cmp r4, #0 - bne _022F3E5C - ldr r0, [sp, #4] - cmp r0, #0 - bne _022F3E28 - mvn r0, #0 - cmp r7, r0 - beq _022F3E24 - cmp fp, #0 - beq _022F3E28 -_022F3E24: - ldrb r7, [sb, #0x4c] -_022F3E28: - and r1, r7, #7 - mov r0, sl - strb r1, [sb, #0x4c] - bl GetSleepAnimationId - mov r1, r0 - mov r0, sl - mov r2, r7 - bl ov29_023049A8 - mov r0, #0x62 - bl AdvanceFrame - mov r0, #1 - str r0, [sp] - b _022F3E68 -_022F3E5C: - mov r0, #1 - strb r5, [sb, #0x4c] - bl sub_02017CCC -_022F3E68: - ldr r1, _022F3E90 ; =0x0237C9A4 - mov r0, #0 - strb r0, [r1, #1] - strh r0, [r1, #4] - bl ov29_0234B4CC - bl ov29_022E0B44 - bl sub_02006B70 - ldr r0, [sp] -_022F3E88: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F3E90: .word 0x0237C9A4 -_022F3E94: .word 0x00000BA8 -_022F3E98: .word 0x0237C6A4 -_022F3E9C: .word 0x0237C694 - arm_func_end ov29_022F3B98 - - arm_func_start ov29_022F3EA0 -ov29_022F3EA0: ; 0x022F3EA0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r5, r0 - mov sb, r1 - mov r4, r3 - cmp r2, #0x64 - mov r6, #0 - add r0, sp, #0 - bne _022F3ECC - bl ov29_022E0C64 - b _022F3EE0 -_022F3ECC: - cmp r2, #0x65 - bne _022F3EDC - bl ov29_022E0C80 - b _022F3EE0 -_022F3EDC: - bl ov29_022E0C9C -_022F3EE0: - ldr r1, _022F40AC ; =0x02353538 - ldr r0, _022F40B0 ; =0x0001A224 - ldr r7, [r1] - ldr r2, [sp] - ldrsh r0, [r7, r0] - mov r1, #0x18 - add r0, r2, r0 - bl DivideInt - ldr r1, _022F40B4 ; =0x0001A226 - ldr r3, [sp, #4] - ldrsh r2, [r7, r1] - mov r7, r0 - mov r1, #0x18 - add r0, r3, r2 - bl DivideInt - mov r8, r0 - strh r7, [sb] - strh r8, [sb, #2] - ldrsh r1, [sb] - ldrsh r0, [r5, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #2 - ble _022F3F58 - ldrsh r1, [sb, #2] - ldrsh r0, [r5, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #2 - bgt _022F3F5C -_022F3F58: - mov r6, #1 -_022F3F5C: - mov r0, sb - bl ov29_022E2CA0 - cmp r0, #0 - cmpeq r6, #0 - beq _022F40A0 - ldrsh r0, [r5, #4] - mvn r6, #0 - cmp r0, r7 - ldreqsh r1, [r5, #6] - cmpeq r1, r8 - moveq r6, #0 - cmp r0, r7 - bne _022F3F9C - ldrsh r1, [r5, #6] - cmp r1, r8 - movlt r6, #0 -_022F3F9C: - cmp r0, r7 - ldrltsh r1, [r5, #6] - cmplt r1, r8 - movlt r6, #1 - cmp r0, r7 - bge _022F3FC0 - ldrsh r1, [r5, #6] - cmp r1, r8 - moveq r6, #2 -_022F3FC0: - cmp r0, r7 - bge _022F3FD4 - ldrsh r1, [r5, #6] - cmp r1, r8 - movgt r6, #3 -_022F3FD4: - cmp r0, r7 - bne _022F3FE8 - ldrsh r1, [r5, #6] - cmp r1, r8 - movgt r6, #4 -_022F3FE8: - cmp r0, r7 - ldrgtsh r1, [r5, #6] - cmpgt r1, r8 - movgt r6, #5 - cmp r0, r7 - ble _022F400C - ldrsh r1, [r5, #6] - cmp r1, r8 - moveq r6, #6 -_022F400C: - cmp r0, r7 - ble _022F4020 - ldrsh r0, [r5, #6] - cmp r0, r8 - movlt r6, #7 -_022F4020: - cmp r6, #0 - movlt r0, r6 - blt _022F40A4 - cmp r4, #0 - beq _022F4098 - mov r0, r5 - mov r1, r6 - bl ov29_02301158 - cmp r0, #0 - movne r0, r6 - bne _022F40A4 - tst r6, #1 - moveq r0, r6 - beq _022F40A4 - sub r1, r6, #1 - mov r0, r5 - and r1, r1, #7 - bl ov29_02301158 - cmp r0, #0 - subne r0, r6, #1 - andne r0, r0, #7 - bne _022F40A4 - add r1, r6, #1 - mov r0, r5 - and r1, r1, #7 - bl ov29_02301158 - cmp r0, #0 - addne r0, r6, #1 - andne r0, r0, #7 - bne _022F40A4 -_022F4098: - mov r0, r6 - b _022F40A4 -_022F40A0: - mvn r0, #0 -_022F40A4: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F40AC: .word 0x02353538 -_022F40B0: .word 0x0001A224 -_022F40B4: .word 0x0001A226 - arm_func_end ov29_022F3EA0 - - arm_func_start ov29_022F40B8 -ov29_022F40B8: ; 0x022F40B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - ldrsh r2, [sb] - mov sl, r0 - cmp r2, #0 - movlt r0, #0 - blt _022F425C - ldrsh r0, [sb, #2] - cmp r0, #0 - movlt r0, #0 - blt _022F425C - add r0, sl, #4 - bl GetDirectionTowardsPosition - mov r5, r0 - mov r0, sl - mov r1, r5 - bl ov29_02301158 - cmp r0, #0 - movne r0, r5 - bne _022F425C - tst r5, #1 - beq _022F4218 - ldrsh r1, [sl, #4] - ldrsh r0, [sb] - sub r0, r1, r0 - bl Abs - ldrsh r2, [sl, #6] - ldrsh r1, [sb, #2] - mov r6, r0 - sub r0, r2, r1 - bl Abs - mov r7, r0 - cmp r6, r7 - movgt r1, #1 - ldr r0, _022F4264 ; =0x023526C8 - movle r1, #0 - add r0, r0, r1, lsl #3 - ldrb r0, [r5, r0] - cmp r0, #0 - bne _022F4178 - sub r1, r5, #1 - add r0, r5, #1 - and r1, r1, #7 - and r0, r0, #7 - str r1, [sp] - str r0, [sp, #4] - b _022F4190 -_022F4178: - add r1, r5, #1 - sub r0, r5, #1 - and r1, r1, #7 - and r0, r0, #7 - str r1, [sp] - str r0, [sp, #4] -_022F4190: - mov r4, #0 - b _022F420C -_022F4198: - add r0, sp, #0 - ldr r8, [r0, r4, lsl #2] - ldr r0, _022F4268 ; =0x0235171C - mov r1, r8, lsl #2 - ldrsh r1, [r0, r1] - ldrsh r2, [sl, #4] - ldrsh r0, [sb] - add r1, r2, r1 - sub r0, r1, r0 - bl Abs - ldr r1, _022F4268 ; =0x0235171C - ldrsh r3, [sl, #6] - add r1, r1, r8, lsl #2 - ldrsh r2, [r1, #2] - mov fp, r0 - ldrsh r1, [sb, #2] - add r0, r3, r2 - sub r0, r0, r1 - bl Abs - cmp fp, r6 - cmple r0, r7 - bgt _022F4208 - mov r0, sl - mov r1, r8 - bl ov29_02301158 - cmp r0, #0 - movne r0, r8 - bne _022F425C -_022F4208: - add r4, r4, #1 -_022F420C: - cmp r4, #2 - blt _022F4198 - b _022F4258 -_022F4218: - sub r1, r5, #1 - mov r0, sl - and r1, r1, #7 - bl ov29_02301158 - cmp r0, #0 - subne r0, r5, #1 - andne r0, r0, #7 - bne _022F425C - add r1, r5, #1 - mov r0, sl - and r1, r1, #7 - bl ov29_02301158 - cmp r0, #0 - addne r0, r5, #1 - andne r0, r0, #7 - bne _022F425C -_022F4258: - mov r0, r5 -_022F425C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F4264: .word 0x023526C8 -_022F4268: .word 0x0235171C - arm_func_end ov29_022F40B8 - - arm_func_start ov29_022F426C -ov29_022F426C: ; 0x022F426C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl GetTileSafe - ldr r1, _022F42D4 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - bl ov29_022FF958 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F42D4: .word 0x02353538 - arm_func_end ov29_022F426C - - arm_func_start ov29_022F42D8 -ov29_022F42D8: ; 0x022F42D8 - stmdb sp!, {r3, lr} - bl GetHero - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrsh r0, [r0, #4] - bl GetMonsterGenderVeneer - ldmia sp!, {r3, pc} - arm_func_end ov29_022F42D8 - - arm_func_start ov29_022F42F8 -ov29_022F42F8: ; 0x022F42F8 - cmp r0, #0 - moveq r1, #0 - beq _022F4318 - ldr r1, [r0] - cmp r1, #0 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff -_022F4318: - cmp r1, #0 - ldrne r0, [r0, #0xb4] - ldrneb r0, [r0, #7] - cmpne r0, #0 - bxeq lr - ldr r0, _022F434C ; =0x02353538 - mov r3, #0 - ldr r2, [r0] - sub r1, r3, #1 - strb r3, [r2, #5] - ldr r0, [r0] - str r1, [r0, #0x614] - bx lr - .align 2, 0 -_022F434C: .word 0x02353538 - arm_func_end ov29_022F42F8 - - arm_func_start ov29_022F4350 -ov29_022F4350: ; 0x022F4350 - ldr r2, [r0, #0xb4] - mov r3, #1 - ldr ip, _022F436C ; =ov29_02345058 - add r0, r0, #4 - mov r1, #0 - strb r3, [r2, #0x4e] - bx ip - .align 2, 0 -_022F436C: .word ov29_02345058 - arm_func_end ov29_022F4350 - - arm_func_start ov29_022F4370 -ov29_022F4370: ; 0x022F4370 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, r1 - mov r1, #0 - mov r2, #0xfe - mov r6, r0 - bl ov29_022EB54C - mov sb, #0 - mov lr, #1 - mov r4, r0 - mov ip, sb - mov fp, sb - mov r2, lr - ldr r1, _022F44D4 ; =0x020AF6B8 - mov r0, #6 - b _022F441C -_022F43AC: - mul r7, sb, r0 - ldr r3, [r1] - ldr r8, [r3, #0x384] - ldrb sl, [r8, r7] - tst sl, #1 - movne r3, lr - moveq r3, ip - tst r3, #0xff - beq _022F4418 - ldrb r3, [r8, r7] - tst r3, #0x10 - beq _022F4418 - tst sl, #8 - movne r3, r2 - moveq r3, fp - tst r3, #0xff - beq _022F440C - add r1, r8, r7 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F44D8 ; =0x00000BA9 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F440C: - ldrb r3, [r8, r7] - bic r3, r3, #0x10 - strb r3, [r8, r7] -_022F4418: - add sb, sb, #1 -_022F441C: - cmp sb, #0x32 - blt _022F43AC - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldr r0, _022F44DC ; =0x00003F07 - bl ov29_022EACCC - cmp r5, #0 - beq _022F4494 - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4468 - ldr r1, _022F44E0 ; =0x00000BAA - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022F4494 -_022F4468: - ldrsh r0, [r4, #4] - bl GetItemCategoryVeneer - cmp r0, #0 - bne _022F4488 - ldr r1, _022F44E4 ; =0x00000BAB - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022F4494 -_022F4488: - ldr r1, _022F44E8 ; =0x00000BAC - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_022F4494: - ldrb r0, [r4] - orr r0, r0, #0x10 - strb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - cmpne r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F44EC ; =0x00000BAE - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F44D4: .word 0x020AF6B8 -_022F44D8: .word 0x00000BA9 -_022F44DC: .word 0x00003F07 -_022F44E0: .word 0x00000BAA -_022F44E4: .word 0x00000BAB -_022F44E8: .word 0x00000BAC -_022F44EC: .word 0x00000BAE - arm_func_end ov29_022F4370 - - arm_func_start ov29_022F44F0 -ov29_022F44F0: ; 0x022F44F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 - mov r7, #1 - mov sl, r0 - mov sb, r1 - mov r6, r8 - mov fp, r7 - ldr r5, _022F45BC ; =0x020AF6B8 - mov r4, #6 - b _022F45B0 -_022F4518: - mul r2, r8, r4 - ldr r0, [r5] - ldr r3, [r0, #0x384] - ldrb r1, [r3, r2] - tst r1, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _022F45AC - ldrb r0, [r3, r2] - tst r0, #0x10 - beq _022F45AC - tst r1, #8 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _022F4578 - add r1, r3, r2 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F45C0 ; =0x00000BA9 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022F4578: - ldrb ip, [r3, r2] - mov r0, #0 - add r1, r3, r2 - bic ip, ip, #0x10 - strb ip, [r3, r2] - bl ov29_02344B44 - ldr r0, _022F45C4 ; =0x00003F07 - bl ov29_022EACCC - cmp sb, #0 - beq _022F45AC - ldr r1, _022F45C8 ; =0x00000BAD - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_022F45AC: - add r8, r8, #1 -_022F45B0: - cmp r8, #0x32 - blt _022F4518 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F45BC: .word 0x020AF6B8 -_022F45C0: .word 0x00000BA9 -_022F45C4: .word 0x00003F07 -_022F45C8: .word 0x00000BAD - arm_func_end ov29_022F44F0 - - arm_func_start ov29_022F45CC -ov29_022F45CC: ; 0x022F45CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x14 - mov sl, r0 - mov r1, #1 - bl ov29_022EB568 - mov r4, r0 - ldr r8, [sl, #0xb4] - mov r0, sl - mov r1, #0 - mov r2, #2 - ldr sb, [r4, #0xb4] - bl ov29_022EB54C - ldrb r1, [r8, #0x4e] - mov r5, r0 - mov r0, r5 - cmp r1, #0x80 - moveq r1, #1 - movne r1, #0 - and r6, r1, #0xff - bl GetItemIndex - mov r7, r0 - cmp r6, #0 - bne _022F4668 - ldrb r0, [r5] - tst r0, #0x10 - beq _022F4668 - ldrb r0, [r5] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4668 - mov r1, r5 - mov r0, #1 - bl ov29_02344B44 - mov r0, sl - mov r1, #0xbb0 - bl LogMessageByIdWithPopupCheckUser - b _022F48B8 -_022F4668: - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrb r0, [sb, #0x62] - tst r0, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _022F47CC - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F46C0 - add r1, sb, #0x62 - mov r0, #1 - bl ov29_02344B44 - ldr r1, _022F48C0 ; =0x00000BAF - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022F48B8 -_022F46C0: - ldrh r0, [sb, #0x62] - cmp r6, #0 - add r1, sp, #0xc - strh r0, [sp, #0xc] - ldrh r2, [sb, #0x64] - ldrb r0, [sp, #0xc] - ldrb r3, [sp, #0xd] - strh r2, [sp, #0xe] - ldrh r6, [sb, #0x66] - bic r2, r0, #0x10 - strh r6, [sp, #0x10] - ldrh r0, [r5] - strh r0, [sp, #6] - ldrh r6, [r5, #2] - ldrb r0, [sp, #6] - strh r6, [sp, #8] - ldrh r5, [r5, #4] - bic r0, r0, #0x10 - strh r5, [sp, #0xa] - strb r3, [sp, #7] - strb r2, [sp, #0xc] - strb r0, [sp, #6] - beq _022F472C - add r0, sl, #4 - mov r2, #1 - bl ov29_02345538 - b _022F4734 -_022F472C: - mov r0, r1 - bl sub_0200FB54 -_022F4734: - ldrh r0, [sp, #6] - cmp r7, #0 - strh r0, [sb, #0x62] - ldrh r0, [sp, #8] - strh r0, [sb, #0x64] - ldrh r0, [sp, #0xa] - strh r0, [sb, #0x66] - blt _022F4770 - ldrb r0, [r8, #0x54] - bl ov29_022EB594 - mov r2, r0 - add r1, sp, #6 - mov r0, r7 - bl sub_0200FBE0 - b _022F4778 -_022F4770: - mov r0, sb - bl ov29_02346F14 -_022F4778: - add r1, sp, #6 - mov r0, #0 - bl ov29_02344B44 - add r1, sp, #0xc - mov r0, #1 - bl ov29_02344B44 - ldr r0, _022F48C4 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F48C8 ; =0x00000BB2 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldrb r0, [sp, #6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4878 - ldr r1, _022F48CC ; =0x00000BAE - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022F4878 -_022F47CC: - ldrh r0, [r5] - cmp r7, #0 - strh r0, [sp] - ldrh r1, [r5, #2] - ldrb r0, [sp] - strh r1, [sp, #2] - ldrh r1, [r5, #4] - bic r0, r0, #0x10 - strb r0, [sp] - ldrh r0, [sp] - strh r1, [sp, #4] - strh r0, [sb, #0x62] - ldrh r0, [sp, #2] - strh r0, [sb, #0x64] - ldrh r0, [sp, #4] - strh r0, [sb, #0x66] - blt _022F482C - ldrb r0, [r8, #0x54] - bl ov29_022EB594 - mov r2, r0 - mov r0, r7 - add r1, sb, #0x62 - bl sub_0200FBE0 - b _022F4834 -_022F482C: - mov r0, sb - bl ov29_02346F14 -_022F4834: - add r1, sp, #0 - mov r0, #0 - bl ov29_02344B44 - ldr r0, _022F48C4 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F48D0 ; =0x00000BB3 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldrb r0, [sp] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4878 - ldr r1, _022F48CC ; =0x00000BAE - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_022F4878: - mov r0, r4 - bl ov29_022F9EA0 - mov r0, sl - mov r1, r4 - bl ov29_02321164 - ldrb r0, [sb, #7] - ldr r1, _022F48D4 ; =0x02353538 - cmp r0, #0 - ldreqh r0, [sb] - orreq r0, r0, #0x4000 - streqh r0, [sb] - ldr r1, [r1] - mov r0, sl - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C -_022F48B8: - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F48C0: .word 0x00000BAF -_022F48C4: .word 0x00001317 -_022F48C8: .word 0x00000BB2 -_022F48CC: .word 0x00000BAE -_022F48D0: .word 0x00000BB3 -_022F48D4: .word 0x02353538 - arm_func_end ov29_022F45CC - - arm_func_start ov29_022F48D8 -ov29_022F48D8: ; 0x022F48D8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r1, #0 - mov r6, r0 - bl ov29_022EB568 - mov r4, r0 - ldr r5, [r4, #0xb4] - ldrb r0, [r5, #0x62] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - mov r0, #0 - beq _022F4928 - add r1, r5, #0x62 - bl ov29_02344B44 - ldr r1, _022F49D0 ; =0x00000BAE - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _022F49C8 -_022F4928: - ldrh r2, [r5, #0x62] - add r1, sp, #0 - strh r2, [sp] - ldrh r3, [r5, #0x64] - ldrb r2, [sp] - strh r3, [sp, #2] - ldrh r3, [r5, #0x66] - bic r2, r2, #0x10 - strh r3, [sp, #4] - strb r2, [sp] - bl ov29_02344B44 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r0, r5, #0x62 - bl ItemZInit - add r0, sp, #0 - bl sub_0200FB54 - ldr r0, _022F49D4 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F49D8 ; =0x00000BB5 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r4 - bl ov29_022F9EA0 - mov r1, r4 - mov r0, r6 - bl ov29_02321164 - ldrb r0, [r5, #7] - ldr r1, _022F49DC ; =0x02353538 - cmp r0, #0 - ldreqh r0, [r5] - orreq r0, r0, #0x4000 - streqh r0, [r5] - ldr r1, [r1] - mov r0, r6 - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C -_022F49C8: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F49D0: .word 0x00000BAE -_022F49D4: .word 0x00001317 -_022F49D8: .word 0x00000BB5 -_022F49DC: .word 0x02353538 - arm_func_end ov29_022F48D8 - - arm_func_start ov29_022F49E0 -ov29_022F49E0: ; 0x022F49E0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r1, #0 - mov r7, r0 - bl ov29_022EB568 - mov r4, r0 - ldr r5, [r4, #0xb4] - ldr r2, _022F4BC8 ; =0x00001565 - mov r0, r7 - mov r1, #1 - bl ov29_022EB54C - ldrb r1, [r5, #0x62] - mov r6, r0 - tst r1, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4A44 - add r1, r5, #0x62 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F4BCC ; =0x00000BAE - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022F4BC0 -_022F4A44: - ldrb r0, [r6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4A84 - ldrb r0, [r6] - tst r0, #0x10 - beq _022F4A84 - mov r1, r6 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F4BCC ; =0x00000BAE - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022F4BC0 -_022F4A84: - ldrb r2, [r5, #0x62] - add r1, r5, #0x62 - mov r0, #0 - bic r2, r2, #0x10 - strb r2, [r5, #0x62] - ldrb r2, [r6] - bic r2, r2, #0x10 - strb r2, [r6] - bl ov29_02344B44 - mov r1, r6 - mov r0, #1 - bl ov29_02344B44 - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrh r3, [r5, #0x62] - ldrh r2, [r5, #0x64] - ldrh r1, [r5, #0x66] - ldrb r0, [r5, #6] - strh r3, [sp] - strh r2, [sp, #2] - strh r1, [sp, #4] - cmp r0, #0 - bne _022F4AF0 - add r0, r5, #0x62 - bl RemoveEquivItemNoHole -_022F4AF0: - ldrh r0, [r6] - strh r0, [r5, #0x62] - ldrh r0, [r6, #2] - strh r0, [r5, #0x64] - ldrh r0, [r6, #4] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - movne r0, #0 - strneb r0, [r5, #0x63] - bne _022F4B24 - mov r0, r5 - bl ov29_02346F14 -_022F4B24: - ldrh r2, [sp] - ldrh r0, [sp, #2] - ldrh r1, [sp, #4] - strh r2, [r6] - strh r0, [r6, #2] - mov r0, r6 - strh r1, [r6, #4] - bl ov29_02346FB8 - cmp r0, #0 - movlt r0, #0 - strltb r0, [r6, #1] - blt _022F4B70 - ldr r2, _022F4BD0 ; =0x02353538 - add r1, r0, r0, lsl #3 - ldr r0, [r2] - add r0, r0, #0x3f4 - add r0, r0, #0x400 - add r0, r0, r1, lsl #6 - bl ov29_02346F14 -_022F4B70: - bl ov29_02347030 - ldr r0, _022F4BD4 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F4BD8 ; =0x00000BB6 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, r7 - mov r1, r4 - bl ov29_02321164 - ldrb r0, [r5, #7] - ldr r1, _022F4BD0 ; =0x02353538 - cmp r0, #0 - ldreqh r0, [r5] - orreq r0, r0, #0x4000 - streqh r0, [r5] - ldr r1, [r1] - mov r0, r7 - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C -_022F4BC0: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F4BC8: .word 0x00001565 -_022F4BCC: .word 0x00000BAE -_022F4BD0: .word 0x02353538 -_022F4BD4: .word 0x00001317 -_022F4BD8: .word 0x00000BB6 - arm_func_end ov29_022F49E0 - - arm_func_start ov29_022F4BDC -ov29_022F4BDC: ; 0x022F4BDC - stmdb sp!, {r3, lr} - mov r1, #0 - bl ov29_022EB568 - ldr r0, [r0, #0xb4] - mov r1, #1 - strb r1, [r0, #0x109] - ldmia sp!, {r3, pc} - arm_func_end ov29_022F4BDC - - arm_func_start ov29_022F4BF8 -ov29_022F4BF8: ; 0x022F4BF8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r1, #0 - mov r2, #4 - ldr r6, [r5, #0xb4] - bl ov29_022EB54C - mov r4, r0 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldrb r1, [r6, #0x4e] - cmp r1, #0x80 - bne _022F4C3C - ldr r1, _022F4D94 ; =0x00000BB7 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4C3C: - cmp r1, #0x33 - bhs _022F4C78 - ldrb r0, [r4] - tst r0, #0x10 - beq _022F4C78 - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4C78 - ldr r1, _022F4D98 ; =0x00000BAE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4C78: - cmp r1, #0x81 - bne _022F4CA8 - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4CA8 - ldr r1, _022F4D98 ; =0x00000BAE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4CA8: - ldrsh r0, [r5, #4] - ldrsh r1, [r5, #6] - bl GetTile - ldrh r1, [r0] - tst r1, #0x200 - beq _022F4CD0 - ldr r1, _022F4D9C ; =0x00000BB8 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4CD0: - and r1, r1, #3 - cmp r1, #1 - beq _022F4CEC - ldr r1, _022F4D9C ; =0x00000BB8 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4CEC: - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022F4D08 - ldr r1, _022F4D9C ; =0x00000BB8 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4D08: - ldrb r2, [r4] - mov r1, r4 - mov r0, #0 - bic r2, r2, #0x10 - strb r2, [r4] - bl ov29_02344B44 - mov r1, r4 - add r0, r5, #4 - mov r2, #1 - bl ov29_02345538 - cmp r0, #0 - bne _022F4D48 - ldr r1, _022F4D9C ; =0x00000BB8 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, r5, r6, pc} -_022F4D48: - mov r0, r4 - bl ItemZInit - bl ov29_02347030 - ldr r0, _022F4DA0 ; =0x00001317 - bl ov29_022EACCC - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022F4DA4 ; =0x00000BB9 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - ldr r1, _022F4DA8 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F4D94: .word 0x00000BB7 -_022F4D98: .word 0x00000BAE -_022F4D9C: .word 0x00000BB8 -_022F4DA0: .word 0x00001317 -_022F4DA4: .word 0x00000BB9 -_022F4DA8: .word 0x02353538 - arm_func_end ov29_022F4BF8 - - arm_func_start ov29_022F4DAC -ov29_022F4DAC: ; 0x022F4DAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r8, r0 - ldr r6, [r8, #0xb4] - mov r1, #0 - mov r2, #5 - bl ov29_022EB54C - mov r4, r0 - mov r0, r8 - mov r1, #1 - mov r2, #6 - bl ov29_022EB54C - ldrb r1, [r6, #0x4e] - mov r7, r0 - cmp r1, #0x80 - beq _022F4DFC - ldr r1, _022F503C ; =0x00000BBA - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _022F5034 -_022F4DFC: - ldrb r1, [r6, #0x54] - cmp r1, #0x33 - bhs _022F4E48 - ldrb r0, [r7] - tst r0, #0x10 - beq _022F4E48 - ldrb r0, [r7] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4E48 - mov r1, r7 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F5040 ; =0x00000BAE - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _022F5034 -_022F4E48: - cmp r1, #0x81 - bne _022F4E84 - ldrb r0, [r7] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F4E84 - mov r1, r7 - mov r0, #1 - bl ov29_02344B44 - ldr r1, _022F5044 ; =0x00000BB1 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _022F5034 -_022F4E84: - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #3 - beq _022F4EB4 - ldr r1, _022F5048 ; =0x00000BBB - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _022F5034 -_022F4EB4: - mov r0, r4 - bl ov29_02348D3C - ldrh r1, [r4] - mov r5, r0 - add r0, r6, #0x50 - strh r1, [sp] - ldrh r2, [r4, #2] - ldrb r1, [sp] - mov ip, #0 - strh r2, [sp, #2] - ldrh r2, [r4, #4] - bic r3, r1, #0x10 - mov r1, #1 - strh r2, [sp, #4] - ldrh r2, [r7] - strh r2, [sp, #6] - ldrh lr, [r7, #2] - ldrb r2, [sp, #6] - ldrb r4, [sp, #7] - strh lr, [sp, #8] - ldrh lr, [r7, #4] - bic r2, r2, #0x10 - strh lr, [sp, #0xa] - strb ip, [sp, #7] - strb r3, [sp] - strb r2, [sp, #6] - bl ov29_023456BC - mov r0, r7 - bl RemoveEquivItemNoHole - ldrb r0, [r7, #1] - cmp r0, #0 - beq _022F4F3C - mov r0, r7 - bl ItemZInit -_022F4F3C: - add r1, sp, #6 - add r0, r6, #0x50 - mov r2, #1 - bl ov29_02345538 - cmp r0, #0 - bne _022F4F68 - ldr r1, _022F504C ; =0x00000BBC - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - bl ov29_02347030 - b _022F5034 -_022F4F68: - strb r4, [sp, #1] - ldrb r0, [r6, #0x54] - cmp r0, #0x81 - bne _022F4F94 - ldrh r0, [sp] - strh r0, [r6, #0x62] - ldrh r0, [sp, #2] - strh r0, [r6, #0x64] - ldrh r0, [sp, #4] - strh r0, [r6, #0x66] - b _022F4FDC -_022F4F94: - mov r0, r7 - bl ov29_02346FB8 - cmp r0, #0 - blt _022F4FD0 - ldr r1, _022F5050 ; =0x02353538 - add r0, r0, r0, lsl #3 - ldr r2, [r1] - ldrh r1, [sp] - add r0, r2, r0, lsl #6 - add r0, r0, #0x800 - strh r1, [r0, #0x56] - ldrh r1, [sp, #2] - strh r1, [r0, #0x58] - ldrh r1, [sp, #4] - strh r1, [r0, #0x5a] -_022F4FD0: - add r0, sp, #0 - mov r1, r4 - bl AddItemToBag -_022F4FDC: - bl ov29_02347030 - add r1, sp, #6 - mov r0, #0 - bl ov29_02344B44 - add r1, sp, #0 - mov r0, #1 - bl ov29_02344B44 - ldr r0, _022F5054 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F5058 ; =0x00000BBD - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _022F5050 ; =0x02353538 - mov r0, r8 - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C - add r0, sp, #0 - mov r1, r5 - bl ov29_02348ECC - cmp r0, #0 -_022F5034: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F503C: .word 0x00000BBA -_022F5040: .word 0x00000BAE -_022F5044: .word 0x00000BB1 -_022F5048: .word 0x00000BBB -_022F504C: .word 0x00000BBC -_022F5050: .word 0x02353538 -_022F5054: .word 0x00001317 -_022F5058: .word 0x00000BBD - arm_func_end ov29_022F4DAC - - arm_func_start ov29_022F505C -ov29_022F505C: ; 0x022F505C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - ldrsh r0, [r7, #4] - ldrsh r1, [r7, #6] - ldr r5, [r7, #0xb4] - bl GetTile - mov r4, r0 - mov r0, r7 - mov r1, #0 - mov r2, #7 - bl ov29_022EB54C - mov r6, r0 - mov r1, r6 - mov r0, #0 - bl ov29_02344B44 - ldrb r1, [r5, #0x4e] - cmp r1, #0x33 - bhs _022F50E8 - ldrb r0, [r6] - tst r0, #0x10 - beq _022F50E8 - ldrb r0, [r6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F50E8 - mov r1, r6 - mov r0, #1 - bl ov29_02344B44 - ldr r1, _022F5274 ; =0x00000BB1 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022F526C -_022F50E8: - cmp r1, #0x81 - bne _022F5118 - ldrb r0, [r6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F5118 - mov r0, r7 - mov r1, #0xbb0 - bl LogMessageByIdWithPopupCheckUser - b _022F526C -_022F5118: - ldr r0, [r4, #0x10] - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #3 - beq _022F513C - ldr r1, _022F5278 ; =0x00000BBB - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022F526C -_022F513C: - bl ov29_022E1610 - mov r4, r0 - mov r1, r4 - mov r0, #1 - bl ov29_02344B44 - ldrh r2, [r6] - add r0, r7, #4 - mov r1, #1 - strh r2, [sp] - ldrh r3, [r6, #2] - ldrb r2, [sp] - strh r3, [sp, #2] - ldrh ip, [r6, #4] - bic r3, r2, #0x10 - strh ip, [sp, #4] - ldrh r2, [r4] - strh r2, [sp, #6] - ldrh ip, [r4, #2] - ldrb r2, [sp, #6] - strh ip, [sp, #8] - ldrh r4, [r4, #4] - bic r2, r2, #0x10 - strh r4, [sp, #0xa] - strb r3, [sp] - strb r2, [sp, #6] - bl ov29_023456BC - mov r0, r6 - bl RemoveEquivItemNoHole - ldrb r0, [r6, #1] - cmp r0, #0 - beq _022F51C0 - mov r0, r6 - bl ItemZInit -_022F51C0: - add r1, sp, #0 - add r0, r7, #4 - mov r2, #1 - bl ov29_02345538 - cmp r0, #0 - bne _022F51EC - ldr r1, _022F527C ; =0x00000BBC - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - bl ov29_02347030 - b _022F526C -_022F51EC: - add r0, sp, #6 - bl ov29_02348D3C - ldrb r1, [r5, #0x4e] - mov r4, r0 - add r0, sp, #6 - cmp r1, #0x81 - bne _022F5228 - ldrh r1, [sp, #6] - strh r1, [r5, #0x62] - ldrh r1, [sp, #8] - strh r1, [r5, #0x64] - ldrh r1, [sp, #0xa] - strh r1, [r5, #0x66] - bl AddItemToBagNoHeld - b _022F522C -_022F5228: - bl AddItemToBagNoHeld -_022F522C: - bl ov29_02347030 - ldr r0, _022F5280 ; =0x00001317 - bl ov29_022EACCC - ldr r1, _022F5284 ; =0x00000BBD - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _022F5288 ; =0x02353538 - mov r0, r7 - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C - add r0, sp, #6 - mov r1, r4 - bl ov29_02348ECC - cmp r0, #0 -_022F526C: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022F5274: .word 0x00000BB1 -_022F5278: .word 0x00000BBB -_022F527C: .word 0x00000BBC -_022F5280: .word 0x00001317 -_022F5284: .word 0x00000BBD -_022F5288: .word 0x02353538 - arm_func_end ov29_022F505C - - arm_func_start EntityIsValid__022F528C -EntityIsValid__022F528C: ; 0x022F528C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022F528C - - arm_func_start ov29_022F52B0 -ov29_022F52B0: ; 0x022F52B0 - ldr ip, _022F52B8 ; =ov29_02343D30 - bx ip - .align 2, 0 -_022F52B8: .word ov29_02343D30 - arm_func_end ov29_022F52B0 - - arm_func_start ov29_022F52BC -ov29_022F52BC: ; 0x022F52BC - ldr ip, _022F52C8 ; =ov29_022F52F8 - mov r1, r0 - bx ip - .align 2, 0 -_022F52C8: .word ov29_022F52F8 - arm_func_end ov29_022F52BC - - arm_func_start ov29_022F52CC -ov29_022F52CC: ; 0x022F52CC - ldr r2, [r0, #0xb4] - ldr r1, _022F52F0 ; =0x02353538 - ldrb r2, [r2, #0x54] - ldr r1, [r1] - ldr ip, _022F52F4 ; =ov29_022F52F8 - add r1, r1, r2, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb28] - bx ip - .align 2, 0 -_022F52F0: .word 0x02353538 -_022F52F4: .word ov29_022F52F8 - arm_func_end ov29_022F52CC - - arm_func_start ov29_022F52F8 -ov29_022F52F8: ; 0x022F52F8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov r8, r1 - mov sb, r0 - mov r0, r8 - ldr r5, [r8, #0xb4] - bl ov29_023186CC - cmp r0, #0 - beq _022F5334 - mov r0, r8 - bl ov29_02318700 - mov r0, #0x14 - mov r1, #9 - bl ov29_022EA370 - b _022F54B0 -_022F5334: - mov r0, sb - bl ov29_022F3B8C - mov r0, sb - mov r1, #0 - mov r2, #8 - bl ov29_022EB54C - mov r4, r0 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - bl ov29_0234B034 - mov r2, r5 - mov r1, #0 - str r1, [sp] - mov r3, r1 - bl ov29_0230040C - mov r0, r8 - mov r1, r4 - bl ov29_0231D4A4 - cmp r0, #0 - beq _022F54B0 - mov r0, r4 - bl ov29_022EB378 - mov r1, r0 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldrh r2, [r4] - mov r0, sb - mov r1, #0 - strh r2, [sp, #8] - ldrh r3, [r4, #2] - mov r2, #0x66 - strh r3, [sp, #0xa] - ldrh r3, [r4, #4] - strh r3, [sp, #0xc] - bl ov29_022EB60C - mov r0, #0x1e - mov r1, #0x11 - bl ov29_022EA370 - mov r0, #0 - str r8, [sp] - add r1, sp, #8 - str r1, [sp, #4] - mov r1, r0 - mov r2, r0 - mov r3, r8 - bl ApplyItemEffect - mov r0, r8 - bl EntityIsValid__022F528C - cmp r0, #0 - ldrne r0, [r8, #0xb4] - ldrneb r0, [r0, #7] - cmpne r0, #0 - beq _022F5498 - mov r0, r8 - mov r1, #0x33 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022F5498 - ldrsh r0, [sp, #0xc] - bl ov29_02347000 - cmp r0, #0 - beq _022F5498 - mov r7, #0 - ldr r4, _022F54B8 ; =0x02353538 - add r6, sp, #8 - mov r5, r7 -_022F5440: - ldr r0, [r4] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] - cmp sl, r8 - beq _022F5484 - mov r0, sl - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F5484 - str sl, [sp] - mov r0, r5 - mov r1, r5 - mov r2, r5 - mov r3, r8 - str r6, [sp, #4] - bl ApplyItemEffect -_022F5484: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022F5440 -_022F5498: - ldr r1, _022F54B8 ; =0x02353538 - mov r0, sb - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C -_022F54B0: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F54B8: .word 0x02353538 - arm_func_end ov29_022F52F8 - - arm_func_start ov29_022F54BC -ov29_022F54BC: ; 0x022F54BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x14 - mov sb, r0 - ldr r8, [sb, #0xb4] - bl ov29_022F3B8C - mov r0, sb - mov r1, #0 - mov r2, #9 - bl ov29_022EB54C - mov r4, r0 - mov r0, sb - bl ov29_023186CC - cmp r0, #0 - beq _022F550C - mov r0, sb - bl ov29_02318700 - mov r0, #0x14 - mov r1, #9 - bl ov29_022EA370 - b _022F5978 -_022F550C: - ldrb r0, [r8, #0x4e] - cmp r0, #0x81 - bne _022F5558 - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F5558 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F5980 ; =0x00000BAE - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x14 - mov r1, #0x4c - bl ov29_022EA370 - b _022F5978 -_022F5558: - ldrsh r0, [r4, #4] - bl GetItemCategoryVeneer - cmp r0, #0 - beq _022F5578 - ldrsh r0, [r4, #4] - bl GetItemCategoryVeneer - cmp r0, #1 - bne _022F55B8 -_022F5578: - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022F55B8 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _022F5980 ; =0x00000BAE - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x14 - mov r1, #0x4c - bl ov29_022EA370 - b _022F5978 -_022F55B8: - mov r0, sb - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - beq _022F55E8 - ldr r1, _022F5984 ; =0x00000BBE - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x14 - mov r1, #0x4c - bl ov29_022EA370 - b _022F5978 -_022F55E8: - ldrh r0, [r4] - mov r2, #0 - add r1, sp, #0xc - strh r0, [sp, #0xc] - ldrh r5, [r4, #2] - ldrb r3, [sp, #0xc] - mov r0, sb - strh r5, [sp, #0xe] - ldrh r5, [r4, #4] - bic r3, r3, #0x10 - strh r5, [sp, #0x10] - strb r3, [sp, #0xc] - strb r2, [sp, #0xd] - bl ov29_0230F9A4 - ldrb r0, [r8, #0x4e] - cmp r0, #0x80 - bne _022F563C - add r0, r8, #0x50 - mov r1, #1 - mov r4, #0 - bl ov29_023456BC -_022F563C: - ldrsh r0, [sp, #0x10] - mov r5, #1 - bl GetItemCategoryVeneer - cmp r0, #0 - beq _022F5660 - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - cmp r0, #1 - bne _022F566C -_022F5660: - ldrh r0, [sp, #0xe] - cmp r0, #1 - movhi r5, #0 -_022F566C: - cmp r5, #0 - ldrb r0, [r8, #0x4e] - beq _022F56A8 - cmp r0, #0x80 - beq _022F56F4 - mov r0, r4 - bl ov29_02346FB8 - cmp r0, #0 - blt _022F5698 - mov r0, r4 - bl RemoveEquivItemNoHole -_022F5698: - mov r0, r4 - bl ItemZInit - bl ov29_02347030 - b _022F56F4 -_022F56A8: - cmp r0, #0x80 - bne _022F56D0 - ldrh r2, [sp, #0xe] - add r1, sp, #0xc - add r0, r8, #0x50 - sub r3, r2, #1 - mov r2, #1 - strh r3, [sp, #0xe] - bl ov29_02345538 - b _022F56F4 -_022F56D0: - mov r0, r4 - bl ov29_02346FB8 - cmp r0, #0 - blt _022F56E8 - mov r0, r4 - bl DecrementStackItem -_022F56E8: - ldrh r0, [r4, #2] - sub r0, r0, #1 - strh r0, [r4, #2] -_022F56F4: - mov r0, sb - mov r1, #0x30 - bl ItemIsActive__022F5994 - cmp r0, #0 - beq _022F5714 - mov r0, #8 - bl DungeonRandInt - strb r0, [r8, #0x4c] -_022F5714: - mov r0, sb - bl ov29_022E272C - cmp r0, #0 - beq _022F577C - ldr r1, _022F5988 ; =0x00000103 - mov r0, sb - ldrb r7, [r8, #0x4c] - bl ov29_022E56A0 - mov r6, #0 - mov r5, r6 - mov r4, #2 - mov sl, #0x15 -_022F5744: - sub r0, r7, #1 - and r7, r0, #7 - mov r0, sb - mov r1, r5 - mov r2, r7 - bl ov29_023049A8 - mov r0, r4 - mov r1, sl - bl ov29_022EA370 - add r6, r6, #1 - cmp r6, #8 - blt _022F5744 - mov r0, #4 - strb r0, [r8, #0x179] -_022F577C: - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - cmp r0, #0 - beq _022F579C - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - cmp r0, #1 - bne _022F57A4 -_022F579C: - mov r0, #1 - strh r0, [sp, #0xe] -_022F57A4: - add r1, sp, #0xc - mov r0, #0 - bl ov29_02344B70 - bl ov29_0234B034 - mov r1, #0 - mov r2, r8 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - cmp r0, #0 - bne _022F57E8 - mov r0, sb - mov r1, #0xbc0 - bl LogMessageByIdWithPopupCheckUser - b _022F57F4 -_022F57E8: - ldr r1, _022F598C ; =0x00000BBF - mov r0, sb - bl LogMessageByIdWithPopupCheckUser -_022F57F4: - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - mov r1, r0 - mov r0, sb - bl ov29_022E5728 - mov r0, sb - mov r1, #0x2e - bl ItemIsActive__022F5994 - cmp r0, #0 - movne r0, #1 - strneb r0, [sp, #9] - moveq r0, #0 - streqb r0, [sp, #9] - ldrb r0, [r8, #0xee] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022F5880 -_022F5838: ; jump table - b _022F5848 ; case 0 - b _022F585C ; case 1 - b _022F5870 ; case 2 - b _022F5880 ; case 3 -_022F5848: - mov r1, #0 - mov r0, #0xa - strb r1, [sp, #8] - strh r0, [sp, #0xa] - b _022F5880 -_022F585C: - mov r1, #0 - mov r0, #0x63 - strb r1, [sp, #8] - strh r0, [sp, #0xa] - b _022F5880 -_022F5870: - mov r1, #1 - mov r0, #0x63 - strb r1, [sp, #8] - strh r0, [sp, #0xa] -_022F5880: - ldr r1, [sb, #0xb4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _022F58A0 - add r0, r1, #0x228 - mov r1, #0x24 - bl ExclusiveItemEffectFlagTest -_022F58A0: - cmp r0, #0 - movne r1, #0 - movne r0, #0x63 - strneb r1, [sp, #8] - strneh r0, [sp, #0xa] - mov r0, sb - mov r1, #0x16 - bl ItemIsActive__022F5994 - cmp r0, #0 - bne _022F58DC - mov r0, sb - mov r1, #0x42 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022F58EC -_022F58DC: - mov r1, #1 - mov r0, #0x63 - strb r1, [sp, #8] - strh r0, [sp, #0xa] -_022F58EC: - ldrsh r0, [sp, #0x10] - bl GetItemCategoryVeneer - cmp r0, #1 - bne _022F5928 - add r0, sp, #4 - mov r1, sb - bl ov29_022E9A9C - add r4, sp, #8 - add r1, sp, #0xc - add r3, sp, #4 - mov r0, sb - add r2, sb, #4 - str r4, [sp] - bl ov29_02347BC8 - b _022F5944 -_022F5928: - add r0, sp, #8 - str r0, [sp] - ldrb r3, [r8, #0x4c] - add r1, sp, #0xc - mov r0, sb - add r2, sb, #4 - bl ov29_02347518 -_022F5944: - mov r0, sb - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F5978 - ldrb r1, [r8, #0x4c] - mov r0, sb - bl ov29_02304A48 - ldr r1, _022F5990 ; =0x02353538 - mov r0, sb - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02307F4C -_022F5978: - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F5980: .word 0x00000BAE -_022F5984: .word 0x00000BBE -_022F5988: .word 0x00000103 -_022F598C: .word 0x00000BBF -_022F5990: .word 0x02353538 - arm_func_end ov29_022F54BC - - arm_func_start ItemIsActive__022F5994 -ItemIsActive__022F5994: ; 0x022F5994 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__022F5994 - - arm_func_start ov29_022F59C4 -ov29_022F59C4: ; 0x022F59C4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_022F87C0 - movs r1, r0 - moveq r1, #0 - beq _022F59FC - ldr r0, [r1] - cmp r0, #1 - movne r1, #0 - bne _022F59FC - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - movne r1, #0 -_022F59FC: - mov r0, r4 - mvn r2, #0 - bl ov29_022F5A40 - ldmia sp!, {r4, pc} - arm_func_end ov29_022F59C4 - - arm_func_start ov29_022F5A0C -ov29_022F5A0C: ; 0x022F5A0C - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetLeader - ldr r1, _022F5A3C ; =0x02353538 - ldrb r3, [r4, #4] - ldr r1, [r1] - mov r2, #0 - add r1, r1, r3, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb28] - bl ov29_022F5A40 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F5A3C: .word 0x02353538 - arm_func_end ov29_022F5A0C - - arm_func_start ov29_022F5A40 -ov29_022F5A40: ; 0x022F5A40 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov r6, r0 - movs sl, r1 - mov r5, r2 - ldr r8, [r6, #0xb4] - bne _022F5A70 - ldr r1, _022F5D9C ; =0x00000BC1 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F5D94 -_022F5A70: - bl ov29_023009CC - cmp r0, #0 - bne _022F5A90 - ldr r1, _022F5D9C ; =0x00000BC1 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F5D94 -_022F5A90: - ldr r0, [sl, #0xb4] - ldrb r0, [r0, #0xbc] - bl ov29_022EFB04 - movs r4, r0 - bne _022F5ADC - mov r0, r6 - mov r1, sl - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #1 - beq _022F5D84 - mov r0, sl - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #1 - beq _022F5D84 -_022F5ADC: - ldr sb, [sl, #0xb4] - bl ov29_0234B034 - mov r1, #0 - mov r2, sb - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - mov r1, #1 - mov r2, sb - mov r3, #7 - bl ov29_0230040C - mov r0, #3 - bl ov29_02348C64 - mov r0, r6 - mov r1, sl - bl ov29_02307BDC - mov r0, sl - bl ov29_023009CC - cmp r0, #0 - beq _022F5B4C - mov r0, sl - mov r1, #1 - bl ov29_02300818 - cmp r0, #0 - beq _022F5B78 -_022F5B4C: - add r0, r6, #4 - add r1, sl, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r6 - bl ov29_02304AFC - ldr r1, _022F5DA0 ; =0x00000BC2 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F5D94 -_022F5B78: - add r0, r6, #4 - add r1, sl, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r6 - bl ov29_02304AFC - cmp r5, #0 - blt _022F5BA8 - mov r0, sl - mov r1, r5 - bl ov29_02304AFC - b _022F5BB8 -_022F5BA8: - ldrb r1, [r8, #0x4c] - mov r0, sl - add r1, r1, #4 - bl ov29_02304AFC -_022F5BB8: - cmp r4, #0 - beq _022F5BD0 - mov r0, r6 - mov r1, sl - bl ov29_02344544 - b _022F5D94 -_022F5BD0: - ldrb r0, [sb, #9] - cmp r0, #1 - bne _022F5BE4 - bl ov29_022F6748 - b _022F5D94 -_022F5BE4: - ldrb r0, [sb, #0xbc] - cmp r0, #7 - bne _022F5C3C - ldr r0, _022F5DA4 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - beq _022F5C18 - ldr r1, _022F5DA8 ; =0x00000BC3 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F5D94 -_022F5C18: - bl ov29_023491A4 - ldrb r0, [r0, #0x18] - cmp r0, #0 - mov r0, sl - beq _022F5C34 - bl ov29_0234A5E4 - b _022F5D94 -_022F5C34: - bl ov29_0234A2D4 - b _022F5D94 -_022F5C3C: - ldrsh r2, [sb, #0x12] - ldrsh r1, [sb, #0x16] - ldr r0, _022F5DAC ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, lsl #3 - mov r1, #0xa - bl DivideInt - ldrsh r1, [sb, #0x10] - cmp r1, r0 - movge r4, #0 - bge _022F5C84 - mov r0, sl - bl HasLowHealth - cmp r0, #0 - moveq r4, #1 - movne r4, #2 -_022F5C84: - bl sub_02025888 - ldrb r1, [sb, #0x48] - mov r5, r0 - cmp r1, #0xd6 - bne _022F5CA4 - ldr r1, _022F5DB0 ; =0x0000025E - bl GetStringFromFileVeneer - b _022F5D3C -_022F5CA4: - mov r0, sl - mov r6, #0x14 - bl ov29_0231AE3C - str r0, [sp, #4] - ldr r0, _022F5DB4 ; =0x000004D3 - sub fp, r0, #0x1b -_022F5CBC: - mov r0, sb - bl ov29_0234CFEC - mov r7, r0 - cmp r7, fp - ldrne r0, _022F5DB4 ; =0x000004D3 - cmpne r7, r0 - moveq r2, #0 - beq _022F5CE8 - ldrb r0, [r8, #0x48] - bl ov29_0234CFA0 - mov r2, r0 -_022F5CE8: - mov r0, r7 - mov r1, r4 - bl GetTalkLine - mov r1, r0 - mov r0, r5 - bl GetStringFromFileVeneer - ldr r0, [sp, #4] - cmp r0, #0 - bne _022F5D3C - ldr r1, _022F5DB8 ; =0x02352750 - mov r0, r5 - bl sub_02020880 - cmp r0, #0 - beq _022F5D3C - subs r6, r6, #1 - bne _022F5D34 - ldr r1, _022F5DBC ; =0x02352758 - mov r0, r5 - bl Strcpy -_022F5D34: - cmp r6, #0 - bne _022F5CBC -_022F5D3C: - ldrb r0, [sb, #0x48] - cmp r0, #0xd7 - bne _022F5D5C - mov r0, sl - bl HasLowHealth - cmp r0, #0 - movne r2, #2 - bne _022F5D60 -_022F5D5C: - mov r2, #0 -_022F5D60: - ldrsh r1, [sb, #4] - add r0, sp, #8 - bl ov29_0234BAC0 - add r1, sp, #8 - mov r0, sl - mov r2, r5 - mov r3, #1 - bl ov29_0234D304 - b _022F5D94 -_022F5D84: - ldr r1, _022F5D9C ; =0x00000BC1 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 -_022F5D94: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F5D9C: .word 0x00000BC1 -_022F5DA0: .word 0x00000BC2 -_022F5DA4: .word 0x02353538 -_022F5DA8: .word 0x00000BC3 -_022F5DAC: .word 0x000003E7 -_022F5DB0: .word 0x0000025E -_022F5DB4: .word 0x000004D3 -_022F5DB8: .word 0x02352750 -_022F5DBC: .word 0x02352758 - arm_func_end ov29_022F5A40 - - arm_func_start ov29_022F5DC0 -ov29_022F5DC0: ; 0x022F5DC0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetLeader - ldr r1, _022F5DF0 ; =0x02353538 - ldrb r3, [r4, #4] - ldr r1, [r1] - mov r2, #0 - add r1, r1, r3, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb28] - bl ov29_022F5DF4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F5DF0: .word 0x02353538 - arm_func_end ov29_022F5DC0 - - arm_func_start ov29_022F5DF4 -ov29_022F5DF4: ; 0x022F5DF4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x44 - movs r7, r1 - ldr r4, [r7, #0xb4] - mov r0, #0 - bne _022F5E1C - ldr r1, _022F5F0C ; =0x00000BC4 - mov r2, #1 - bl DisplayMessage2 - b _022F5F04 -_022F5E1C: - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrsh r0, [r4, #0xc] - ldr r5, _022F5F10 ; =0x00000BC5 - cmp r0, #0 - add r6, r5, #4 - blt _022F5E84 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetActiveTeamMember - mov r4, r0 - ldrsh r0, [r4, #8] - bl ov29_022F9C40 - cmp r0, #0 - addne r5, r5, #3 - addne r6, r5, #3 - bne _022F5E84 - ldrsh r0, [r4, #8] - bl IsMonsterIdInNormalRange__022F9C68 - cmp r0, #0 - beq _022F5E84 - bl ov29_022E08A0 - cmp r0, #0 - addne r5, r5, #2 - ldr r6, _022F5F14 ; =0x00000BCA - addeq r5, r5, #1 -_022F5E84: - mov r2, #1 - mov r1, r5 - mov r3, r2 - mov r0, #0 - str r2, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _022F5F04 - mov r0, #0 - bl ov29_0233A248 - mov r0, #0 - bl sub_02024FB8 - mov r1, r0 - add r0, sp, #4 - mov r2, #0x40 - bl Strncpy - mov r0, r7 - bl ov29_022E690C - mov r0, r7 - mov r1, #0x25c - mov r2, #0 - bl HandleFaint - bl UpdateMapSurveyorFlag - bl ov29_022E8104 - bl ov29_022E81F8 - mov r0, #0 - add r1, sp, #4 - bl ov29_0234B0B4 - mov r1, r6 - mov r0, #0 - mov r2, #1 - bl DisplayMessage -_022F5F04: - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_022F5F0C: .word 0x00000BC4 -_022F5F10: .word 0x00000BC5 -_022F5F14: .word 0x00000BCA - arm_func_end ov29_022F5DF4 - - arm_func_start ov29_022F5F18 -ov29_022F5F18: ; 0x022F5F18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov sb, r0 - mov r7, #0 - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F5F88 - ldr r0, _022F6050 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_02344160 - cmp r0, #0 - bne _022F5F60 - ldr r1, _022F6054 ; =0x00000DFD - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - b _022F6048 -_022F5F60: - ldr r4, [sb, #0xb4] - mov r1, r7 - mov r0, sb - strb r1, [r4, #0x23f] - bl ov29_0231A7A0 - cmp r0, #0 - movne r7, #1 - strneb r7, [r4, #0x23f] - mov r0, #0 - strb r0, [r4, #0x23e] -_022F5F88: - mov r6, #0 - mov r4, #1 - mov r5, r6 - mov sl, r4 - b _022F5FD8 -_022F5F9C: - ldr r8, [sb, #0xb4] - mov r0, sb - str r5, [sp] - ldrb r1, [r8, #0x54] - mov r2, r4 - mov r3, r5 - bl ov29_0232145C - bl IsFloorOver - cmp r0, #0 - ldreqb r0, [r8, #0x23e] - cmpeq r0, #0 - ldreqb r0, [r8, #0x163] - cmpeq r0, #0 - bne _022F5FEC - add r6, r6, #1 -_022F5FD8: - mov r0, sb - mov r1, sl - bl GetNumberOfAttacks - cmp r6, r0 - blt _022F5F9C -_022F5FEC: - mov r0, sb - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F6014 - cmp r7, #0 - moveq r1, #1 - movne r1, #0 - mov r0, sb - and r1, r1, #0xff - bl UpdateMovePp -_022F6014: - bl IsFloorOver - cmp r0, #0 - bne _022F6048 - mov r0, sb - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F6040 - ldr r1, [sb, #0xb4] - mov r0, sb - ldrb r1, [r1, #0x54] - bl ov29_022FA574 -_022F6040: - mov r0, sb - bl TryActivateTruant -_022F6048: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F6050: .word 0x02353538 -_022F6054: .word 0x00000DFD - arm_func_end ov29_022F5F18 - - arm_func_start ov29_022F6058 -ov29_022F6058: ; 0x022F6058 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sl, r0 - ldr r7, [sl, #0xb4] - ldr r2, _022F61F8 ; =0x0237CA80 - mov r3, #0 - add r0, sp, #0xc - str r3, [r2] - mov sb, r1 - bl InitMove - ldrb r0, [r7, #0xd0] - cmp r0, #1 - bne _022F60AC - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022F61FC ; =0x00000BCC - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022F61F0 -_022F60AC: - ldrb r0, [r7, #0xbf] - cmp r0, #4 - bne _022F60D8 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022F6200 ; =0x00000BCD - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _022F61F0 -_022F60D8: - mov r6, #0 - cmp sb, #0x160 - moveq r8, #1 - movne r8, #0 - strb r6, [r7, #0x163] - mov fp, r6 - mov r5, #0xa - add r4, sp, #0xc - b _022F6154 -_022F60FC: - mov r0, sl - bl ov29_022F3B8C - str fp, [r7, #0x18c] - ldrb r1, [sp, #0xc] - strb r5, [sp, #0x12] - mov r0, sl - orr r1, r1, #0xc - strb r1, [sp, #0xc] - str fp, [sp] - mov r1, r8 - mov r2, fp - mov r3, fp - str r4, [sp, #4] - bl ov29_02322374 - mov r0, sl - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F6168 - ldrb r0, [r7, #0x163] - cmp r0, #0 - bne _022F6168 - add r6, r6, #1 -_022F6154: - mov r0, sl - mov r1, #1 - bl GetNumberOfAttacks - cmp r6, r0 - blt _022F60FC -_022F6168: - mov r0, sl - bl EntityIsValid__022F528C - cmp r0, #0 - beq _022F61F0 - cmp sb, #0x160 - ldreq r0, _022F61F8 ; =0x0237CA80 - ldreq r0, [r0] - cmpeq r0, #0 - bne _022F6198 - ldr r1, _022F6204 ; =0x00000BCE - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_022F6198: - ldrb r0, [r7, #7] - cmp r0, #0 - cmpne sb, #0x160 - beq _022F61E8 - ldrb r1, [r7, #0x4c] - ldr r0, _022F6208 ; =0x0235171C - ldrsh r3, [sl, #4] - mov r1, r1, lsl #2 - ldrsh r2, [r0, r1] - ldr r1, _022F620C ; =0x0235171E - add r0, sp, #8 - add r2, r3, r2 - strh r2, [sp, #8] - ldrb r2, [r7, #0x4c] - ldrsh r3, [sl, #6] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1 - strh r1, [sp, #0xa] - bl ov29_02338430 -_022F61E8: - mov r0, sl - bl EnemyEvolution -_022F61F0: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F61F8: .word 0x0237CA80 -_022F61FC: .word 0x00000BCC -_022F6200: .word 0x00000BCD -_022F6204: .word 0x00000BCE -_022F6208: .word 0x0235171C -_022F620C: .word 0x0235171E - arm_func_end ov29_022F6058 - - arm_func_start ov29_022F6210 -ov29_022F6210: ; 0x022F6210 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - bl EntityIsValid__022F62A8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r4, #0 - ldr r7, _022F62A4 ; =0x02353538 - b _022F6294 -_022F6234: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb38] - mov r0, r5 - bl EntityIsValid__022F62A8 - cmp r0, #0 - beq _022F6288 - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #9] - cmp r0, #1 - bne _022F6288 - mov r0, r5 - bl ov29_023009CC - cmp r0, #0 - beq _022F6288 - ldrb r1, [r6, #0x25] - ldrb r0, [r5, #0x25] - cmp r1, r0 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022F6288: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_022F6294: - cmp r4, #0x10 - blt _022F6234 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F62A4: .word 0x02353538 - arm_func_end ov29_022F6210 - - arm_func_start EntityIsValid__022F62A8 -EntityIsValid__022F62A8: ; 0x022F62A8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022F62A8 - - arm_func_start ov29_022F62CC -ov29_022F62CC: ; 0x022F62CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov sl, r0 - bl IsFloorOver - cmp r0, #0 - bne _022F66F4 - bl GetLeader - ldr r1, _022F66FC ; =0x02353538 - mov r4, r0 - ldr r1, [r1] - ldr r6, [r4, #0xb4] - ldrb fp, [r1, #0x7c8] - bl GetTileAtEntity - ldrh r0, [r0] - ldr r7, _022F66FC ; =0x02353538 - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 - and r5, r0, #0xff - ldr r0, [r7] - strb r5, [r0, #0x7c8] - ldr r0, [r7] - strb r5, [r0, #0x7c9] - ldr r1, [r7] - ldrb r0, [r1, #0x790] - cmp r0, #0 - bne _022F66F4 - ldr r0, [r1, #0x7c4] - cmp r0, #0 - beq _022F66F4 - ldrb r0, [r6, #0xef] - cmp r0, #1 - bne _022F6380 - ldrb r0, [r1, #0x7c9] - cmp r0, #0 - beq _022F6364 - mov r0, #0 - bl ov29_022E38E0 -_022F6364: - ldr r0, _022F66FC ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x7c8] - ldr r0, [r0] - strb r2, [r0, #0x7c9] - b _022F66F4 -_022F6380: - mov r6, #0 - mov r8, r6 -_022F6388: - ldr r0, [r7] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb38] - mov r0, sb - bl EntityIsValid__022F62A8 - cmp r0, #0 - beq _022F63D8 - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #9] - cmp r0, #1 - bne _022F63D8 - mov r0, sb - bl ov29_023009CC - cmp r0, #0 - beq _022F63D8 - ldrb r1, [r4, #0x25] - ldrb r0, [sb, #0x25] - cmp r1, r0 - moveq r6, #1 -_022F63D8: - add r8, r8, #1 - cmp r8, #0x10 - blt _022F6388 - bl GetKecleonIdToSpawnByFloor - mov r1, r0 - add r0, sp, #0x18 - mov r2, #0 - bl ov29_0234BAC0 - cmp fp, #0 - cmpeq r5, #1 - bne _022F6448 - cmp r6, #0 - beq _022F66F4 - mov r0, r4 - bl ov29_022F6210 - movs r5, r0 - beq _022F6434 - add r0, r5, #4 - add r1, r4, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r5 - bl ov29_02304A48 -_022F6434: - ldr r1, _022F6700 ; =0x00000E53 - add r0, sp, #0x18 - mov r2, #1 - bl DisplayMessage2 - b _022F66F4 -_022F6448: - cmp r5, #1 - beq _022F66F4 - cmp fp, #1 - cmpeq r5, #0 - beq _022F6464 - cmp sl, #0 - beq _022F66F4 -_022F6464: - mov r7, #0 - str r7, [sp] - bl ov29_022F670C - cmp r0, #0 - beq _022F6620 - mov r0, #1 - str r0, [sp] - mov r8, r7 - ldr sb, _022F66FC ; =0x02353538 - b _022F6618 -_022F648C: - ldr r0, [sb] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb38] - mov r0, sl - bl EntityIsValid__022F62A8 - cmp r0, #0 - beq _022F6614 - ldr r0, [sl, #0xb4] - ldrb r0, [r0, #9] - cmp r0, #1 - bne _022F6614 - mov r0, sl - bl ov29_023009CC - cmp r0, #0 - beq _022F6614 - ldrb r1, [r4, #0x25] - ldrb r0, [sl, #0x25] - cmp r1, r0 - bne _022F6614 - ldrsh r1, [r4, #4] - ldrsh r0, [sl, #4] - mov r7, #1 - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _022F6510 - ldrsh r1, [r4, #6] - ldrsh r0, [sl, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _022F65CC -_022F6510: - ldr r0, _022F6704 ; =0x02352760 - mvn r8, #0 - ldrh r1, [r0] - ldrh r0, [r0, #2] - str r8, [sp, #4] - strh r1, [sp, #0x10] - strh r0, [sp, #0x12] - ldrh r0, [sp, #0x10] - str r0, [sp, #8] - ldrh r0, [sp, #0x12] - str r0, [sp, #0xc] - b _022F65C4 -_022F6540: - ldr sb, [sp, #4] - b _022F65B8 -_022F6548: - ldr r0, [sp, #8] - strh r0, [sp, #0x14] - ldr r0, [sp, #0xc] - strh r0, [sp, #0x16] - ldrsh r0, [r4, #4] - add r0, r8, r0 - strh r0, [sp, #0x14] - ldrsh r1, [r4, #6] - ldrsh r0, [sp, #0x14] - add r1, sb, r1 - strh r1, [sp, #0x16] - ldrsh r1, [sp, #0x16] - bl GetTile - ldrb r0, [r0, #7] - cmp r0, #0xff - beq _022F65B4 - mov r0, sl - add r1, sp, #0x14 - bl ov29_022FF764 - cmp r0, #0 - bne _022F65B4 - add r3, sp, #0x14 - mov r0, r4 - mov r1, sl - mov r2, #3 - bl TryWarp - b _022F65CC -_022F65B4: - add sb, sb, #1 -_022F65B8: - cmp sb, #1 - ble _022F6548 - add r8, r8, #1 -_022F65C4: - cmp r8, #1 - ble _022F6540 -_022F65CC: - mov r0, r4 - bl ov29_023009CC - cmp r0, #0 - moveq r7, #0 - beq _022F65F8 - add r0, r4, #4 - add r1, sl, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r4 - bl ov29_02304A00 -_022F65F8: - add r0, sl, #4 - add r1, r4, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, sl - bl ov29_02304A48 - b _022F6620 -_022F6614: - add r8, r8, #1 -_022F6618: - cmp r8, #0x10 - blt _022F648C -_022F6620: - ldr r0, [sp] - cmp r0, #0 - beq _022F6654 - cmp r7, #0 - bne _022F6654 - ldr r0, _022F66FC ; =0x02353538 - ldr r0, [r0] - ldr r1, [r0, #0x7c4] - ldr r0, [r0, #0x7bc] - cmp r1, r0 - ble _022F66F4 - bl ov29_022F6CAC - b _022F66F4 -_022F6654: - ldr r0, [sp] - cmp r0, #0 - beq _022F6688 - cmp r6, #0 - bne _022F6688 - ldr r0, _022F66FC ; =0x02353538 - ldr r0, [r0] - ldr r1, [r0, #0x7c4] - ldr r0, [r0, #0x7bc] - cmp r1, r0 - ble _022F66F4 - bl ov29_022F6CAC - b _022F66F4 -_022F6688: - mov r0, r7 - bl ov29_022F67D0 - mov r0, r7 - bl ov29_022F6A0C - cmp r0, #0 - beq _022F66A8 - bl ov29_022F6CAC - b _022F66F4 -_022F66A8: - cmp fp, #1 - cmpeq r5, #0 - bne _022F66F4 - cmp r6, #0 - beq _022F66F4 - mov r0, r4 - bl ov29_022F6210 - movs r5, r0 - beq _022F66E4 - add r0, r5, #4 - add r1, r4, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r5 - bl ov29_02304A48 -_022F66E4: - ldr r1, _022F6708 ; =0x00000E52 - add r0, sp, #0x18 - mov r2, #1 - bl DisplayMessage2 -_022F66F4: - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F66FC: .word 0x02353538 -_022F6700: .word 0x00000E53 -_022F6704: .word 0x02352760 -_022F6708: .word 0x00000E52 - arm_func_end ov29_022F62CC - - arm_func_start ov29_022F670C -ov29_022F670C: ; 0x022F670C - ldr r0, _022F6744 ; =0x02353538 - ldr r2, [r0] - ldr r1, [r2, #0x7c4] - ldr r0, [r2, #0x7bc] - sub r0, r1, r0 - cmp r0, #0 - movgt r0, #1 - bxgt lr - ldr r0, [r2, #0x7c0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022F6744: .word 0x02353538 - arm_func_end ov29_022F670C - - arm_func_start ov29_022F6748 -ov29_022F6748: ; 0x022F6748 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - bl GetKecleonIdToSpawnByFloor - mov r1, r0 - add r0, sp, #0 - mov r2, #0 - bl ov29_0234BAC0 - mov r0, #1 - bl ov29_022F67D0 - mov r0, #1 - bl ov29_022F6A0C - movs r4, r0 - beq _022F67B4 - bl GetLeader - bl GetTileAtEntity - ldrh r0, [r0] - tst r0, #0x20 - beq _022F67AC - cmp r4, #2 - beq _022F67C4 - ldr r1, _022F67CC ; =0x00000E51 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F67C4 -_022F67AC: - bl ov29_022F6CAC - b _022F67C4 -_022F67B4: - add r0, sp, #0 - mov r1, #0xe50 - mov r2, #1 - bl DisplayMessage2 -_022F67C4: - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F67CC: .word 0x00000E51 - arm_func_end ov29_022F6748 - - arm_func_start ov29_022F67D0 -ov29_022F67D0: ; 0x022F67D0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - ldr r1, _022F69EC ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - mov r5, #0 - ldr r0, [r0, #0x7c0] - cmp r0, #0 - beq _022F69E4 - mov r0, #0x3e - bl TeamLeaderIqSkillIsEnabled - cmp r0, #0 - movne r5, #1 - bl GetKecleonIdToSpawnByFloor - mov r1, r0 - add r0, sp, #0x14 - mov r2, #0 - bl ov29_0234BAC0 - ldr r0, _022F69EC ; =0x02353538 - cmp r4, #0 - ldr r0, [r0] - ldr r4, [r0, #0x7c0] - beq _022F69E4 - ldr r0, _022F69F0 ; =0x023535A8 - cmp r5, #0 - str r4, [r0] - beq _022F6870 - ldr r0, _022F69F4 ; =0x022C4800 - mov r1, r4, lsl #8 - ldr r3, [r0] - mov r2, #0x64 - smull r0, r1, r3, r1 - mov r3, #0 - bl sub_0208FC8C - bl sub_020018A4 - mov r4, r0 - ldr r1, _022F69F8 ; =0x00000E4F - add r0, sp, #0x14 - mov r2, #1 - bl DisplayMessage2 -_022F6870: - mov r1, r4 - mov r0, #0 - bl ov29_0234B09C - mov r2, #0 - ldr r1, _022F69FC ; =0x00000E4D - add r0, sp, #0x14 - mov r3, r2 - str r2, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _022F69E4 - ldr r0, _022F6A00 ; =0x00001308 - bl ov29_022EACCC - mov r0, r4 - bl AddMoneyCarried - ldr r1, _022F6A04 ; =0x02352760 - ldr r0, _022F69EC ; =0x02353538 - ldrh r3, [r1, #4] - ldr r0, [r0] - ldrh r2, [r1, #6] - add r1, r0, #0xc000 - strh r3, [sp, #4] - strh r2, [sp, #6] - ldr sl, [r0, #0x7bc] - ldr sb, [r1, #0xd14] - b _022F69A8 -_022F68D8: - add r0, r0, #0xc000 - ldr r8, [r0, #0xd18] - mov r0, sb, lsl #0x10 - mov r7, r0, asr #0x10 - add r6, sp, #0xc - add r5, sp, #8 - mov fp, #1 - ldr r4, _022F69EC ; =0x02353538 - b _022F6990 -_022F68FC: - mov r0, sb - mov r1, r8 - strh r7, [sp, #8] - strh r8, [sp, #0xa] - bl GetTile - ldrh r1, [r0] - tst r1, #0x20 - ldrne r0, [r0, #0x10] - cmpne r0, #0 - beq _022F698C - ldr r1, [r0] - cmp r1, #3 - bne _022F698C - bl ov29_022E1610 - ldrb r1, [r0] - tst r1, #2 - bne _022F698C - ldrh r2, [r0] - mov r1, fp - strh r2, [sp, #0xc] - ldrh r2, [r0, #2] - strh r2, [sp, #0xe] - ldrh r2, [r0, #4] - mov r0, r5 - strh r2, [sp, #0x10] - bl ov29_023456BC - ldrsh r0, [sp, #0x10] - bl sub_0200CCE0 - cmp r0, #0 - ldrneb r0, [sp, #0xc] - mov r1, r6 - mov r2, #1 - orrne r0, r0, #2 - strneb r0, [sp, #0xc] - mov r0, r5 - bl ov29_02345538 -_022F698C: - add r8, r8, #1 -_022F6990: - ldr r0, [r4] - add r1, r0, #0xc000 - ldr r1, [r1, #0xd20] - cmp r8, r1 - ble _022F68FC - add sb, sb, #1 -_022F69A8: - add r1, r0, #0xc000 - ldr r1, [r1, #0xd1c] - cmp sb, r1 - ble _022F68D8 - ldr r1, _022F69EC ; =0x02353538 - add r0, sp, #0x14 - ldr r4, [r1] - ldr r1, _022F6A08 ; =0x00000E4A - ldr r2, [r4, #0x7bc] - ldr r3, [r4, #0x7c4] - sub r2, r2, sl - add r3, r3, r2 - mov r2, #1 - str r3, [r4, #0x7c4] - bl DisplayMessage2 -_022F69E4: - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F69EC: .word 0x02353538 -_022F69F0: .word 0x023535A8 -_022F69F4: .word 0x022C4800 -_022F69F8: .word 0x00000E4F -_022F69FC: .word 0x00000E4D -_022F6A00: .word 0x00001308 -_022F6A04: .word 0x02352760 -_022F6A08: .word 0x00000E4A - arm_func_end ov29_022F67D0 - - arm_func_start ov29_022F6A0C -ov29_022F6A0C: ; 0x022F6A0C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r0, #0x3e - mov r4, #0 - bl TeamLeaderIqSkillIsEnabled - cmp r0, #0 - movne r4, #1 - bl GetKecleonIdToSpawnByFloor - mov r1, r0 - add r0, sp, #4 - mov r2, #0 - bl ov29_0234BAC0 - ldr r0, _022F6C8C ; =0x02353538 - cmp r4, #0 - ldr r0, [r0] - ldr r1, [r0, #0x7c4] - ldr r0, [r0, #0x7bc] - sub r6, r1, r0 - beq _022F6A80 - ldr r0, _022F6C90 ; =0x022C473C - mov r3, r6, lsl #8 - ldr r0, [r0] - mov r2, #0x64 - smull r0, r1, r3, r0 - mov r3, #0 - bl sub_0208FC8C - bl sub_020018A4 - mov r6, r0 -_022F6A80: - cmp r6, #0 - movle r0, #0 - ble _022F6C84 - cmp r5, #0 - beq _022F6AE0 - cmp r4, #0 - beq _022F6AAC - ldr r1, _022F6C94 ; =0x00000E4E - add r0, sp, #4 - mov r2, #1 - bl DisplayMessage2 -_022F6AAC: - mov r1, r6 - mov r0, #0 - bl ov29_0234B09C - mov r2, #0 - ldr r1, _022F6C98 ; =0x00000E4C - add r0, sp, #4 - mov r3, #1 - str r2, [sp] - bl ov29_0234D518 - cmp r0, #1 - beq _022F6AE8 - mov r0, #1 - b _022F6C84 -_022F6AE0: - mov r0, #1 - b _022F6C84 -_022F6AE8: - bl GetGold - cmp r0, r6 - bge _022F6B0C - ldr r1, _022F6C9C ; =0x00000E4B - add r0, sp, #4 - mov r2, #1 - bl DisplayMessage2 - mov r0, #2 - b _022F6C84 -_022F6B0C: - ldr r0, _022F6CA0 ; =0x00001308 - bl ov29_022EACCC - rsb r0, r6, #0 - bl AddMoneyCarried - mov r6, #0 - mov r4, r6 -_022F6B24: - mov r5, r4 -_022F6B28: - mov r0, r6 - mov r1, r5 - bl GetTile - ldrh r1, [r0] - tst r1, #0x20 - bne _022F6B78 - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022F6B78 - ldr r1, [r0] - cmp r1, #3 - bne _022F6B78 - bl ov29_022E1610 - mov r7, r0 - ldrsh r0, [r7, #4] - bl sub_0200CCE0 - cmp r0, #0 - ldrneb r0, [r7] - bicne r0, r0, #2 - strneb r0, [r7] -_022F6B78: - add r5, r5, #1 - cmp r5, #0x20 - blt _022F6B28 - add r6, r6, #1 - cmp r6, #0x38 - blt _022F6B24 - mov r6, #0 - ldr sb, _022F6CA4 ; =0x020AF6B8 - mov r4, r6 - mov r5, #1 - mov r8, #6 -_022F6BA4: - mul r1, r6, r8 - ldr r0, [sb] - ldr r2, [r0, #0x384] - ldrb r0, [r2, r1] - add r7, r2, r1 - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022F6BE4 - ldrsh r0, [r7, #4] - bl sub_0200CCE0 - cmp r0, #0 - ldrneb r0, [r7] - bicne r0, r0, #2 - strneb r0, [r7] -_022F6BE4: - add r6, r6, #1 - cmp r6, #0x32 - blt _022F6BA4 - mov r7, #0 - ldr r8, _022F6C8C ; =0x02353538 - mov r4, r7 - mov r5, #1 -_022F6C00: - ldr r0, [r8] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__022F62A8 - cmp r0, #0 - beq _022F6C54 - ldr r6, [r6, #0xb4] - ldrb r0, [r6, #0x62] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022F6C54 - ldrsh r0, [r6, #0x66] - bl sub_0200CCE0 - cmp r0, #0 - ldrneb r0, [r6, #0x62] - bicne r0, r0, #2 - strneb r0, [r6, #0x62] -_022F6C54: - add r7, r7, #1 - cmp r7, #0x14 - blt _022F6C00 - ldr r1, _022F6C8C ; =0x02353538 - add r0, sp, #4 - ldr r4, [r1] - ldr r1, _022F6CA8 ; =0x00000E49 - ldr r3, [r4, #0x7bc] - mov r2, #1 - str r3, [r4, #0x7c4] - bl DisplayMessage2 - mov r0, #0 -_022F6C84: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F6C8C: .word 0x02353538 -_022F6C90: .word 0x022C473C -_022F6C94: .word 0x00000E4E -_022F6C98: .word 0x00000E4C -_022F6C9C: .word 0x00000E4B -_022F6CA0: .word 0x00001308 -_022F6CA4: .word 0x020AF6B8 -_022F6CA8: .word 0x00000E49 - arm_func_end ov29_022F6A0C - - arm_func_start ov29_022F6CAC -ov29_022F6CAC: ; 0x022F6CAC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _022F6E0C ; =0x02353538 - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x790] - ldr r0, [r0] - strb r2, [r0, #0x791] - bl GetLeader - ldr r1, _022F6E10 ; =0x00000E54 - bl LogMessageByIdWithPopupCheckUser - mov r6, #0 - mov r4, r6 -_022F6CDC: - mov r5, r4 -_022F6CE0: - mov r0, r6 - mov r1, r5 - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _022F6D14 - ldr r1, [r0] - cmp r1, #3 - bne _022F6D14 - bl ov29_022E1610 - ldrb r1, [r0] - bic r1, r1, #2 - strb r1, [r0] -_022F6D14: - add r5, r5, #1 - cmp r5, #0x20 - blt _022F6CE0 - add r6, r6, #1 - cmp r6, #0x38 - blt _022F6CDC - mov r7, #0 - ldr r1, _022F6E14 ; =0x020AF6B8 - mov r3, r7 - mov r4, #1 - mov r0, #6 -_022F6D40: - mul r5, r7, r0 - ldr r2, [r1] - add r7, r7, #1 - ldr r6, [r2, #0x384] - ldrb r2, [r6, r5] - tst r2, #1 - movne r2, r4 - moveq r2, r3 - tst r2, #0xff - ldrneb r2, [r6, r5] - bicne r2, r2, #2 - strneb r2, [r6, r5] - cmp r7, #0x32 - blt _022F6D40 - mov r8, #0 - ldr sb, _022F6E0C ; =0x02353538 - mov r6, r8 - mov r4, r8 - mov r5, #1 -_022F6D8C: - ldr r0, [sb] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] - mov r0, sl - bl EntityIsValid__022F62A8 - cmp r0, #0 - beq _022F6DDC - ldr r7, [sl, #0xb4] - mov r0, sl - strb r6, [r7, #9] - bl CalcSpeedStageWrapper - ldrb r0, [r7, #0x62] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - ldrneb r0, [r7, #0x62] - bicne r0, r0, #2 - strneb r0, [r7, #0x62] -_022F6DDC: - add r8, r8, #1 - cmp r8, #0x14 - blt _022F6D8C - ldr r0, _022F6E0C ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x7c4] - ldr r1, [r0] - str r2, [r1, #0x7bc] - ldr r0, [r0] - str r2, [r0, #0x7c0] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022F6E0C: .word 0x02353538 -_022F6E10: .word 0x00000E54 -_022F6E14: .word 0x020AF6B8 - arm_func_end ov29_022F6CAC - - arm_func_start ResetDamageDesc -ResetDamageDesc: ; 0x022F6E18 - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - str r1, [r0, #8] - strb r1, [r0, #0xc] - strb r1, [r0, #0xd] - strb r1, [r0, #0xe] - strb r1, [r0, #0xf] - strb r1, [r0, #0x10] - bx lr - arm_func_end ResetDamageDesc - - arm_func_start ov29_022F6E40 -ov29_022F6E40: ; 0x022F6E40 - stmdb sp!, {r4, lr} - ldr r0, _022F6ED8 ; =0x0001A002 - mov r1, #0 - bl MemAlloc - ldr r2, _022F6EDC ; =0x0237C9AC - ldr r1, _022F6ED8 ; =0x0001A002 - str r0, [r2] - bl MemZero - ldr r0, _022F6EDC ; =0x0237C9AC - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - strh r1, [r0] - bl ov29_0231B490 - mov r2, #0 - ldr r0, _022F6EE0 ; =0x0237C9B0 - mov r1, r2 -_022F6E84: - str r1, [r0, r2, lsl #2] - add r2, r2, #1 - cmp r2, #2 - blt _022F6E84 - ldr r0, _022F6EE4 ; =0x00000216 - bl GetSpriteFileSize - mov r4, r0 - ldr r0, _022F6EE8 ; =0x00000217 - bl GetSpriteFileSize - cmp r4, r0 - bne _022F6EC0 - mov r0, #0x218 - bl GetSpriteFileSize - ldr r0, _022F6EEC ; =0x00000211 - bl GetSpriteFileSize -_022F6EC0: - ldr r0, _022F6EF0 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x3000 - str r1, [r0, #0xe1c] - ldmia sp!, {r4, pc} - .align 2, 0 -_022F6ED8: .word 0x0001A002 -_022F6EDC: .word 0x0237C9AC -_022F6EE0: .word 0x0237C9B0 -_022F6EE4: .word 0x00000216 -_022F6EE8: .word 0x00000217 -_022F6EEC: .word 0x00000211 -_022F6EF0: .word 0x02353538 - arm_func_end ov29_022F6E40 - - arm_func_start ov29_022F6EF4 -ov29_022F6EF4: ; 0x022F6EF4 - ldr r1, _022F6F08 ; =0x0000FFFF - ldr r0, _022F6F0C ; =0x023535AC - strh r1, [r0, #2] - strh r1, [r0] - bx lr - .align 2, 0 -_022F6F08: .word 0x0000FFFF -_022F6F0C: .word 0x023535AC - arm_func_end ov29_022F6EF4 - - arm_func_start ov29_022F6F10 -ov29_022F6F10: ; 0x022F6F10 - stmdb sp!, {r4, r5, r6, lr} - bl ov29_022F7008 - ldr r0, _022F6F60 ; =0x0237C9AC - ldr r0, [r0] - bl MemFree - mov r6, #0 - ldr r5, _022F6F64 ; =0x0237C9B0 - mov r4, r6 -_022F6F30: - ldr r0, [r5, r6, lsl #2] - cmp r0, #0 - beq _022F6F44 - bl MemFree - str r4, [r5, r6, lsl #2] -_022F6F44: - add r6, r6, #1 - cmp r6, #2 - blt _022F6F30 - ldr r0, _022F6F60 ; =0x0237C9AC - mov r1, #0 - str r1, [r0] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F6F60: .word 0x0237C9AC -_022F6F64: .word 0x0237C9B0 - arm_func_end ov29_022F6F10 - - arm_func_start ov29_022F6F68 -ov29_022F6F68: ; 0x022F6F68 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _022F6FFC ; =0x023535AC - mov r5, r0 - ldrh r0, [r2, #2] - mov r4, r1 - cmp r0, r5 - ldreqh r0, [r2] - cmpeq r0, r4 - beq _022F6FE8 - ldr r0, _022F7000 ; =0x0237C9AC - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrsh r0, [r0] - cmp r0, #0 - beq _022F6FA8 - bl ov29_022F7008 -_022F6FA8: - mov r1, #1 - ldr r0, _022F7004 ; =0x020AFC68 - str r1, [sp] - ldr r1, _022F7000 ; =0x0237C9AC - ldr r0, [r0] - ldr r3, [r1] - mov r1, r5 - mov r2, r4 - bl sub_0201D590 - ldr r1, _022F7000 ; =0x0237C9AC - ldr r2, _022F6FFC ; =0x023535AC - ldr r1, [r1] - add r1, r1, #0x1a000 - strh r0, [r1] - strh r5, [r2, #2] - strh r4, [r2] -_022F6FE8: - ldr r0, _022F7000 ; =0x0237C9AC - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrsh r0, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F6FFC: .word 0x023535AC -_022F7000: .word 0x0237C9AC -_022F7004: .word 0x020AFC68 - arm_func_end ov29_022F6F68 - - arm_func_start ov29_022F7008 -ov29_022F7008: ; 0x022F7008 - stmdb sp!, {r3, lr} - ldr r0, _022F7048 ; =0x0237C9AC - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrsh r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _022F704C ; =0x020AFC68 - ldr r0, [r0] - bl DeleteWanTableEntryVeneer - ldr r0, _022F7048 ; =0x0237C9AC - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - strh r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F7048: .word 0x0237C9AC -_022F704C: .word 0x020AFC68 - arm_func_end ov29_022F7008 - - arm_func_start ov29_022F7050 -ov29_022F7050: ; 0x022F7050 - ldr r0, _022F7064 ; =0x0237C9AC - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrsh r0, [r0] - bx lr - .align 2, 0 -_022F7064: .word 0x0237C9AC - arm_func_end ov29_022F7050 - - arm_func_start ov29_022F7068 -ov29_022F7068: ; 0x022F7068 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl IsCastform - cmp r0, #0 - beq _022F70B4 - ldr r0, _022F70F4 ; =0x0000017B - bl GetSpriteFileSize - add r4, r4, r0 - mov r0, #0x17c - bl GetSpriteFileSize - add r4, r4, r0 - ldr r0, _022F70F8 ; =0x0000017D - bl GetSpriteFileSize - add r4, r4, r0 - ldr r0, _022F70FC ; =0x0000017E - bl GetSpriteFileSize - add r4, r4, r0 - b _022F70EC -_022F70B4: - mov r0, r5 - bl IsCherrim - cmp r0, #0 - beq _022F70E0 - mov r0, #0x1cc - bl GetSpriteFileSize - add r4, r4, r0 - ldr r0, _022F7100 ; =0x000001CD - bl GetSpriteFileSize - add r4, r4, r0 - b _022F70EC -_022F70E0: - mov r0, r5 - bl GetSpriteFileSize - add r4, r4, r0 -_022F70EC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F70F4: .word 0x0000017B -_022F70F8: .word 0x0000017D -_022F70FC: .word 0x0000017E -_022F7100: .word 0x000001CD - arm_func_end ov29_022F7068 - - arm_func_start ov29_022F7104 -ov29_022F7104: ; 0x022F7104 - ldr r1, _022F712C ; =0x02353538 - mov r3, #0x400 - ldr r0, [r1] - mov r2, #0xa - add r0, r0, #0x3000 - str r3, [r0, #0xe2c] - ldr r0, [r1] - add r0, r0, #0x3000 - str r2, [r0, #0xe30] - bx lr - .align 2, 0 -_022F712C: .word 0x02353538 - arm_func_end ov29_022F7104 - - arm_func_start ov29_022F7130 -ov29_022F7130: ; 0x022F7130 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _022F72F8 ; =0x02353538 - mov r2, #0 - ldr r0, [r0] - mov r3, r2 - add r0, r0, #0x114 - add r4, r0, #0x19800 - ldr r0, _022F72FC ; =0x00000483 -_022F7150: - mov r1, r2, lsl #1 - add r2, r2, #1 - strh r3, [r4, r1] - cmp r2, r0 - blt _022F7150 - ldr r1, _022F72F8 ; =0x02353538 - ldr r0, _022F7300 ; =0x00000229 - ldr r2, [r1] - mov r1, #1 - add r2, r2, #0x2c000 - str r3, [r2, #0xb0c] - bl LoadMonsterSprite - mov r6, #0 - mov r5, #1 - ldr r4, _022F72F8 ; =0x02353538 - b _022F71AC -_022F7190: - add r0, r1, #0x174 - add r0, r0, #0x3800 - add r0, r0, r6, lsl #3 - bl GetMonsterIdFromSpawnEntry - mov r1, r5 - bl LoadMonsterSprite - add r6, r6, #1 -_022F71AC: - ldr r1, [r4] - add r0, r1, #0x3000 - ldr r0, [r0, #0xe20] - cmp r6, r0 - blt _022F7190 - bl LoadMissionMonsterSprites - ldr r0, _022F72F8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r1, [r0, #0xa8] - cmp r1, #0 - beq _022F71E8 - ldrsh r0, [r0, #0xa8] - mov r1, #1 - bl LoadMonsterSprite -_022F71E8: - mov sb, #0 - mov r8, #1 - ldr fp, _022F7304 ; =0x00000217 - mov r7, sb - mov r5, sb - mov r6, r8 - mov r4, sb -_022F7204: - mov r0, sb - bl GetActiveTeamMember - mov sl, r0 - ldrb r0, [sl] - tst r0, #1 - movne r1, r8 - moveq r1, r7 - tst r1, #0xff - beq _022F7278 - tst r0, #2 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _022F7278 - ldrsh r0, [sl, #0xc] - bl IsShaymin - cmp r0, #0 - beq _022F726C - mov r0, r4 - bl ov29_0231B4AC - cmp r0, #0 - beq _022F726C - mov r0, fp - mov r1, #0 - bl LoadMonsterSprite - b _022F7278 -_022F726C: - ldrsh r0, [sl, #0xc] - mov r1, #0 - bl LoadMonsterSprite -_022F7278: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #4 - blt _022F7204 - ldr r0, _022F72F8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0x6e - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r7, #0 - mov r6, #1 - mov r5, r7 - mov r4, r6 -_022F72B4: - mov r0, r7 - bl GetExplorerMazeMonster - ldrb r1, [r0] - tst r1, #1 - movne r1, r6 - moveq r1, r5 - tst r1, #0xff - beq _022F72E0 - ldrsh r0, [r0, #4] - mov r1, r4 - bl LoadMonsterSprite -_022F72E0: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022F72B4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F72F8: .word 0x02353538 -_022F72FC: .word 0x00000483 -_022F7300: .word 0x00000229 -_022F7304: .word 0x00000217 - arm_func_end ov29_022F7130 - - arm_func_start ov29_022F7308 -ov29_022F7308: ; 0x022F7308 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, #0 - ldr r4, _022F7360 ; =0x02353538 - mov r5, r6 -_022F7318: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - cmp r7, #0 - beq _022F7350 - mov r0, r7 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F7350 - ldr r0, [r7, #0xb4] - mov r1, r5 - ldrsh r0, [r0, #4] - bl LoadMonsterSprite -_022F7350: - add r6, r6, #1 - cmp r6, #0x14 - blt _022F7318 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F7360: .word 0x02353538 - arm_func_end ov29_022F7308 - - arm_func_start EntityIsValid__022F7364 -EntityIsValid__022F7364: ; 0x022F7364 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022F7364 - - arm_func_start GetSpriteIndex__022F7388 -GetSpriteIndex__022F7388: ; 0x022F7388 - ldr r2, _022F73A0 ; =0x02353538 - ldr r1, _022F73A4 ; =0x00019914 - ldr r2, [r2] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_022F73A0: .word 0x02353538 -_022F73A4: .word 0x00019914 - arm_func_end GetSpriteIndex__022F7388 - - arm_func_start JoinedAtRangeCheck2Veneer -JoinedAtRangeCheck2Veneer: ; 0x022F73A8 - ldr ip, _022F73B0 ; =JoinedAtRangeCheck2 - bx ip - .align 2, 0 -_022F73B0: .word JoinedAtRangeCheck2 - arm_func_end JoinedAtRangeCheck2Veneer - - arm_func_start FloorNumberIsEven -FloorNumberIsEven: ; 0x022F73B4 - ldr r0, _022F73E8 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x748] - cmp r0, #0x5b - ldreqb r0, [r1, #0x749] - cmpeq r0, #0xa - moveq r0, #0 - bxeq lr - ldrb r0, [r1, #0x749] - tst r0, #1 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_022F73E8: .word 0x02353538 - arm_func_end FloorNumberIsEven - - arm_func_start GetKecleonIdToSpawnByFloor -GetKecleonIdToSpawnByFloor: ; 0x022F73EC - stmdb sp!, {r3, lr} - bl FloorNumberIsEven - cmp r0, #0 - ldrne r0, _022F7404 ; =0x000003D7 - ldreq r0, _022F7408 ; =0x0000017F - ldmia sp!, {r3, pc} - .align 2, 0 -_022F7404: .word 0x000003D7 -_022F7408: .word 0x0000017F - arm_func_end GetKecleonIdToSpawnByFloor - - arm_func_start ov29_022F740C -ov29_022F740C: ; 0x022F740C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _022F74D0 ; =0x02353538 - mov r7, r0 - ldr r2, [r2] - mov r6, r1 - add r1, r2, #0x114 - add r5, r1, #0x19800 - bl GetSpriteIndex__020526EC - mov r4, r0 - mov r1, r7, lsl #1 - mov r0, r7 - strh r6, [r5, r1] - bl GetMonsterGender - cmp r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0x258 - bge _022F7490 - add r6, r7, #0x258 - mov r1, r6, lsl #0x10 - mov r0, r7 - mov r1, r1, asr #0x10 - bl GendersEqualNotGenderless - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetSpriteIndex__020526EC - cmp r4, r0 - moveq r0, r7, lsl #1 - ldreqsh r1, [r5, r0] - moveq r0, r6, lsl #1 - streqh r1, [r5, r0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022F7490: - sub r6, r7, #0x258 - mov r1, r6, lsl #0x10 - mov r0, r7 - mov r1, r1, asr #0x10 - bl GendersEqualNotGenderless - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetSpriteIndex__020526EC - cmp r4, r0 - moveq r0, r7, lsl #1 - ldreqsh r1, [r5, r0] - moveq r0, r6, lsl #1 - streqh r1, [r5, r0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F74D0: .word 0x02353538 - arm_func_end ov29_022F740C - - arm_func_start ov29_022F74D4 -ov29_022F74D4: ; 0x022F74D4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _022F75C4 ; =0x02353538 - mov r6, r0 - ldr r2, [r1] - ldr r1, _022F75C8 ; =0x00019914 - add r2, r2, r6, lsl #1 - ldrsh r1, [r2, r1] - cmp r1, #0 - bne _022F75BC - bl GetSpriteIndex__020526EC - mov r4, r0 - mov r0, r6 - bl IsShaymin - cmp r0, #0 - beq _022F756C - mov r0, r6 - bl IsShaymin - cmp r0, #0 - mov r0, r6 - movne r5, #0 - bl GetSpriteFileSize - mov r1, #0 - bl MemAlloc - ldr r2, _022F75CC ; =0x0237C9B0 - mov r1, #1 - str r0, [r2, r5, lsl #2] - str r1, [sp] - ldr r0, _022F75D0 ; =0x020AFC68 - ldr r3, [r2, r5, lsl #2] - ldr r0, [r0] - mov r2, r4 - mov r1, #0 - bl sub_0201D590 - mov r1, r0 - mov r0, r6 - bl ov29_022F740C - b _022F7598 -_022F756C: - mov r1, #1 - ldr r0, _022F75D0 ; =0x020AFC68 - str r1, [sp] - mov r1, #0 - ldr r0, [r0] - mov r2, r4 - mov r3, r1 - bl sub_0201D484 - mov r1, r0 - mov r0, r6 - bl ov29_022F740C -_022F7598: - mov r1, r4 - mov r0, #0 - bl GetFileLengthInPackWithPackNb - ldr r1, _022F75C4 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x2c000 - ldr r2, [r1, #0xb0c] - add r0, r2, r0 - str r0, [r1, #0xb0c] -_022F75BC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022F75C4: .word 0x02353538 -_022F75C8: .word 0x00019914 -_022F75CC: .word 0x0237C9B0 -_022F75D0: .word 0x020AFC68 - arm_func_end ov29_022F74D4 - - arm_func_start ov29_022F75D4 -ov29_022F75D4: ; 0x022F75D4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r2, _022F764C ; =0x02353538 - mov r5, r1 - ldr r1, [r2] - mov r6, r0 - add r1, r1, #0x114 - mov r0, r5 - add r4, r1, #0x19800 - bl GetSpriteIndex__020526EC - mov r1, #1 - str r1, [sp] - mov r1, r6, lsl #1 - ldr r2, _022F7650 ; =0x020AFC68 - mov r3, r0 - ldrsh r1, [r4, r1] - ldr r0, [r2] - mov r2, #0 - bl ReplaceWanFromBinFile - mov r1, r0 - mov r0, r5 - bl ov29_022F740C - mov r3, r6, lsl #1 - ldrsh r2, [r4, r3] - mov r1, r5, lsl #1 - mov r0, #0 - strh r2, [r4, r1] - strh r0, [r4, r3] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022F764C: .word 0x02353538 -_022F7650: .word 0x020AFC68 - arm_func_end ov29_022F75D4 - - arm_func_start LoadMonsterSprite -LoadMonsterSprite: ; 0x022F7654 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - bne _022F769C - ldr r0, _022F7748 ; =0xFFFFFE5E - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - bhi _022F769C - ldr r0, _022F774C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3e00 - ldrsh r0, [r0, #0x3a] - bl ov29_022F74D4 - ldmia sp!, {r4, pc} -_022F769C: - mov r0, r4 - bl ov29_022F74D4 - ldr r1, _022F7750 ; =0x0000017B - cmp r4, r1 - cmpne r4, #0x17c - addne r0, r1, #2 - cmpne r4, r0 - addne r0, r1, #3 - cmpne r4, r0 - beq _022F76E4 - ldr r0, _022F7754 ; =0xFFFFFC2D - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - bhi _022F7704 -_022F76E4: - ldr r0, _022F7750 ; =0x0000017B - bl ov29_022F74D4 - mov r0, #0x17c - bl ov29_022F74D4 - ldr r0, _022F7758 ; =0x0000017D - bl ov29_022F74D4 - ldr r0, _022F775C ; =0x0000017E - bl ov29_022F74D4 -_022F7704: - cmp r4, #0x1cc - ldrne r0, _022F7760 ; =0x000001CD - cmpne r4, r0 - beq _022F7734 - ldr r0, _022F7764 ; =0xFFFFFBDC - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - ldmhiia sp!, {r4, pc} -_022F7734: - mov r0, #0x1cc - bl ov29_022F74D4 - ldr r0, _022F7760 ; =0x000001CD - bl ov29_022F74D4 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F7748: .word 0xFFFFFE5E -_022F774C: .word 0x02353538 -_022F7750: .word 0x0000017B -_022F7754: .word 0xFFFFFC2D -_022F7758: .word 0x0000017D -_022F775C: .word 0x0000017E -_022F7760: .word 0x000001CD -_022F7764: .word 0xFFFFFBDC - arm_func_end LoadMonsterSprite - - arm_func_start ov29_022F7768 -ov29_022F7768: ; 0x022F7768 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022F77F4 ; =0x02353538 - mov r5, r0 - ldr r1, [r1] - ldr r0, _022F77F8 ; =0x00019914 - add r1, r1, r5, lsl #1 - ldrsh r1, [r1, r0] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _022F77FC ; =0x020AFC68 - ldr r0, [r0] - bl DeleteWanTableEntryVeneer - ldr r0, _022F77F4 ; =0x02353538 - ldr r1, _022F77F8 ; =0x00019914 - ldr r2, [r0] - mov r3, #0 - add r2, r2, r5, lsl #1 - mov r0, r5 - strh r3, [r2, r1] - bl IsShaymin - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl IsShaymin - cmp r0, #0 - ldr r0, _022F7800 ; =0x0237C9B0 - movne r4, #0 - ldr r0, [r0, r4, lsl #2] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl MemFree - ldr r0, _022F7800 ; =0x0237C9B0 - mov r1, #0 - str r1, [r0, r4, lsl #2] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F77F4: .word 0x02353538 -_022F77F8: .word 0x00019914 -_022F77FC: .word 0x020AFC68 -_022F7800: .word 0x0237C9B0 - arm_func_end ov29_022F7768 - - arm_func_start ov29_022F7804 -ov29_022F7804: ; 0x022F7804 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _022F7830 ; =0x00000483 - mov r5, #0 -_022F7810: - mov r0, r5 - bl ov29_022F7768 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - cmp r4, r0, asr #16 - mov r5, r0, asr #0x10 - bgt _022F7810 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F7830: .word 0x00000483 - arm_func_end ov29_022F7804 - - arm_func_start ov29_022F7834 -ov29_022F7834: ; 0x022F7834 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, #0 - mov r5, r0 - mov r8, r4 - mov r6, r4 - mov r7, #1 -_022F784C: - mov r0, r8 - bl GetActiveTeamMember - ldrb r0, [r0] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - addne r4, r4, #1 - cmp r8, #4 - blt _022F784C - cmp r4, #4 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r7, #0 - mov r8, r7 - mov r4, r7 - mov r6, #1 -_022F78A8: - mov r0, r8 - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r1, r6 - moveq r1, r4 - tst r1, #0xff - beq _022F78D4 - ldrsh r0, [r0, #0xc] - bl GetBodySize - add r7, r7, r0 -_022F78D4: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022F78A8 - ldrsh r0, [r5, #4] - bl GetBodySize - add r0, r7, r0 - cmp r0, #6 - movgt r0, #1 - movle r0, #0 - tst r0, #0xff - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_022F7834 - - arm_func_start ov29_022F7910 -ov29_022F7910: ; 0x022F7910 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - mov sl, r0 - ldrb r0, [sl] - mov r5, #0 - tst r0, #1 - movne r0, #1 - moveq r0, r5 - tst r0, #0xff - ldrnesh r0, [sl, #4] - cmpne r0, #0 - moveq r0, #0 - beq _022F7BCC - ldrb r0, [sl, #2] - cmp r0, #0xfa - movne r0, #0 - bne _022F7BCC - b _022F7AA4 -_022F7958: - mov r0, sl - bl ov29_022F7834 - cmp r0, #0 - beq _022F7AA0 - ldrsh r1, [sl, #4] - mov r0, #0 - bl ov29_0234B06C - ldr r1, _022F7BD4 ; =0x00000C0D - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov sb, #0 - mov r7, sb - bl StoryRestrictionsEnabled - cmp r0, #0 - movne sb, #1 - mov r8, #0 - mov fp, #1 - add r4, sp, #0x44 -_022F79A4: - mov r0, r8 - bl GetActiveTeamMember - mov r6, r0 - ldrb r0, [r6] - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _022F7A14 - ldrb r0, [r6, #1] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _022F7A14 - cmp sb, #0 - beq _022F7A0C - ldrb r0, [r6, #3] - cmp r0, #0xd6 - moveq r1, #1 - movne r1, #0 - tst r1, #0xff - bne _022F7A14 - bl JoinedAtRangeCheck2 - cmp r0, #0 - bne _022F7A14 -_022F7A0C: - str r6, [r4, r7, lsl #2] - add r7, r7, #1 -_022F7A14: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022F79A4 - cmp r7, #0 - beq _022F7AAC - add r0, sp, #0x44 - mov r1, r7 - bl ov29_0234EF24 - movs r4, r0 - beq _022F7AA4 - add r0, sp, #4 - mov r1, r4 - bl sub_020585B4 - add r1, sp, #4 - mov r0, #1 - bl ov29_0234B0B4 - mov r0, #0 - mov r3, #1 - ldr r1, _022F7BD8 ; =0x00000C0E - mov r2, r0 - str r3, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _022F7AA4 - ldr r1, _022F7BDC ; =0x00000C0F - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldrsh r0, [r4, #8] - bl sub_020566C4 - mov r0, #0 - strb r0, [r4] - b _022F7AA4 -_022F7AA0: - mov r5, #1 -_022F7AA4: - cmp r5, #0 - beq _022F7958 -_022F7AAC: - cmp r5, #0 - bne _022F7AD8 - ldrsh r1, [sl, #4] - mov r0, #0 - bl ov29_0234B06C - ldr r1, _022F7BE0 ; =0x00000C0C - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - b _022F7BCC -_022F7AD8: - mov r4, #0 - mov r6, r4 - mov r7, #1 - b _022F7BA4 -_022F7AE8: - mov r0, r4 - bl GetActiveTeamMember - mov r5, r0 - ldrb r0, [r5] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - bne _022F7B98 - ldr r2, _022F7BE4 ; =0x000055AA - mov r0, r5 - mov r1, sl - mov r3, r4 - bl sub_02053250 - ldr r0, _022F7BE8 ; =0x020B0A48 - mov r1, r4, lsl #1 - ldr r0, [r0] - mvn r3, #0 - add r0, r0, #0x9000 - ldr r2, [r0, #0x870] - ldr r0, _022F7BEC ; =0x020A1C7C - strh r3, [r2, r1] - ldrb r2, [r5] - ldr r1, [r0, #0x20] - orr r0, r2, #1 - strb r0, [r5] - ldrsh r0, [r5, #6] - cmp r0, r1 - bge _022F7B70 - strh r1, [r5, #6] - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #6] - add r0, r5, #0x4c - bl sub_02058EB0 -_022F7B70: - ldrb r1, [r5] - add r0, r5, #0x3e - orr r1, r1, #2 - strb r1, [r5] - strh r4, [r5, #0xa] - bl ItemZInit - ldrsh r1, [sl, #4] - mov r0, #0 - bl ov29_0234B06C - b _022F7BAC -_022F7B98: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_022F7BA4: - cmp r4, #4 - blt _022F7AE8 -_022F7BAC: - ldrsh r1, [sl, #4] - mov r0, #0 - bl ov29_0234B06C - ldr r1, _022F7BF0 ; =0x00000C12 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #1 -_022F7BCC: - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F7BD4: .word 0x00000C0D -_022F7BD8: .word 0x00000C0E -_022F7BDC: .word 0x00000C0F -_022F7BE0: .word 0x00000C0C -_022F7BE4: .word 0x000055AA -_022F7BE8: .word 0x020B0A48 -_022F7BEC: .word 0x020A1C7C -_022F7BF0: .word 0x00000C12 - arm_func_end ov29_022F7910 - - arm_func_start ov29_022F7BF4 -ov29_022F7BF4: ; 0x022F7BF4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldrb r0, [r6] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrnesh r0, [r6, #4] - cmpne r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, _022F7E18 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsRecruitingAllowed - cmp r0, #0 - ldrne r0, _022F7E18 ; =0x02353538 - ldrne r0, [r0] - ldrneb r0, [r0, #0x759] - cmpne r0, #0 - bne _022F7C7C - ldrb r0, [r6, #2] - cmp r0, #0xd9 - blo _022F7C5C - cmp r0, #0xe4 - blo _022F7C7C -_022F7C5C: - ldrsh r1, [r6, #4] - mov r0, #0 - bl ov29_0234B06C - ldr r1, _022F7E1C ; =0x00000C0B - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F7E10 -_022F7C7C: - mov r0, r6 - bl ov29_022F7834 - cmp r0, #0 - beq _022F7CD4 - ldrsh r1, [r6, #4] - mov r0, #0 - bl ov29_0234B06C - ldrb r0, [r6, #2] - cmp r0, #0xd9 - blo _022F7CC0 - cmp r0, #0xe4 - bhs _022F7CC0 - mov r0, #0 - mov r1, #0xc10 - mov r2, #1 - bl DisplayMessage2 - b _022F7E10 -_022F7CC0: - ldr r1, _022F7E20 ; =0x00000C0A - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F7E10 -_022F7CD4: - mov r4, #0 - mov r7, r4 - mov r8, #1 - b _022F7DC4 -_022F7CE4: - mov r0, r4 - bl GetActiveTeamMember - mov r5, r0 - ldrb r0, [r5] - tst r0, #1 - movne r0, r8 - moveq r0, r7 - tst r0, #0xff - bne _022F7DB8 - ldr r2, _022F7E24 ; =0x000055AA - mov r0, r5 - mov r1, r6 - mov r3, r4 - bl sub_02053250 - ldr r0, _022F7E28 ; =0x020B0A48 - mov r1, r4, lsl #1 - ldr r0, [r0] - mvn r3, #0 - add r0, r0, #0x9000 - ldr r2, [r0, #0x870] - ldr r0, _022F7E2C ; =0x020A1C7C - strh r3, [r2, r1] - ldrb r2, [r5] - ldr r1, [r0, #0x20] - orr r0, r2, #1 - strb r0, [r5] - ldrsh r0, [r5, #6] - cmp r0, r1 - bge _022F7D6C - strh r1, [r5, #6] - ldrsh r1, [r5, #0xc] - ldrsh r2, [r5, #6] - add r0, r5, #0x4c - bl sub_02058EB0 -_022F7D6C: - ldrb r1, [r5] - add r0, r5, #0x3e - orr r1, r1, #2 - strb r1, [r5] - strh r4, [r5, #0xa] - bl ItemZInit - ldrsh r1, [r6, #4] - mov r0, #0 - bl ov29_0234B06C - ldrb r0, [r6, #2] - cmp r0, #0xd9 - blo _022F7DA4 - cmp r0, #0xe4 - blo _022F7E10 -_022F7DA4: - ldr r1, _022F7E30 ; =0x00000C11 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _022F7E10 -_022F7DB8: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_022F7DC4: - cmp r4, #4 - blt _022F7CE4 - ldrsh r1, [r6, #4] - mov r0, #0 - bl ov29_0234B06C - ldrb r0, [r6, #2] - cmp r0, #0xd9 - blo _022F7E00 - cmp r0, #0xe4 - bhs _022F7E00 - mov r0, #0 - mov r1, #0xc10 - mov r2, #1 - bl DisplayMessage2 - b _022F7E10 -_022F7E00: - ldr r1, _022F7E20 ; =0x00000C0A - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 -_022F7E10: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F7E18: .word 0x02353538 -_022F7E1C: .word 0x00000C0B -_022F7E20: .word 0x00000C0A -_022F7E24: .word 0x000055AA -_022F7E28: .word 0x020B0A48 -_022F7E2C: .word 0x020A1C7C -_022F7E30: .word 0x00000C11 - arm_func_end ov29_022F7BF4 - - arm_func_start ov29_022F7E34 -ov29_022F7E34: ; 0x022F7E34 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, #0 - mov r6, r8 - mov r7, #1 - mov r4, r8 - mov r5, r8 -_022F7E4C: - mov r0, r8 - bl GetActiveTeamMember - mov sb, r0 - ldrb r0, [sb] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _022F7E94 - ldrsh r0, [sb, #8] - bl sub_02056264 - cmp r0, #0 - strneb r5, [sb] - bne _022F7E94 - ldrsh r0, [sb, #8] - bl CheckTeamMemberIdx__02056228 - cmp r0, #0 - strneb r4, [sb] -_022F7E94: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022F7E4C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022F7E34 - - arm_func_start ov29_022F7EAC -ov29_022F7EAC: ; 0x022F7EAC - stmdb sp!, {r3, r4, r5, lr} - bl GetLeader - ldr r1, _022F7F04 ; =0x02353538 - mov r2, #0 - ldr r5, [r1] - movs r4, r0 - strb r2, [r5, #0x78b] - strb r2, [r5, #0x78c] - strb r2, [r5, #0x78e] - str r2, [r5, #0xcc] - ldmeqia sp!, {r3, r4, r5, pc} - bl GetTileAtEntity - ldrh r0, [r0] - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 - strb r0, [r5, #0x7c8] - and r1, r0, #0xff - add r0, r4, #4 - strb r1, [r5, #0x7c9] - bl ov29_02337A3C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F7F04: .word 0x02353538 - arm_func_end ov29_022F7EAC - - arm_func_start ov29_022F7F08 -ov29_022F7F08: ; 0x022F7F08 - stmdb sp!, {r3, lr} - ldrb r0, [r0, #7] - cmp r0, #0 - beq _022F7F28 - bl GetForcedLossReason - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_022F7F28: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F7F08 - - arm_func_start HandleFaint -HandleFaint: ; 0x022F7F30 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xbc - mov sl, r0 - mov r8, r2 - mov sb, r1 - ldr r7, [sl, #0xb4] - bl GetTileAtEntity - mov r4, r0 - cmp r8, #0 - bne _022F7F64 - add r0, sp, #4 - bl ov29_022E2470 - add r8, sp, #4 -_022F7F64: - ldr r0, [r4, #0xc] - cmp r0, sl - moveq r0, #0 - streq r0, [r4, #0xc] - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - bl ov29_023391EC - mov r5, #0 - ldr fp, _022F85D0 ; =0x02353538 - mov r4, r5 -_022F7F8C: - ldr r0, [fp] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - cmp r6, #0 - beq _022F7FC4 - mov r0, r6 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F7FC4 - ldr r1, [r6, #0xb4] - ldr r0, [r1, #0x84] - cmp r0, sl - streq r4, [r1, #0x84] -_022F7FC4: - add r5, r5, #1 - cmp r5, #0x14 - blt _022F7F8C - ldrb r0, [r7, #0xd8] - cmp r0, #2 - ldreq r0, _022F85D0 ; =0x02353538 - moveq r1, #0 - ldreq r0, [r0] - addeq r0, r0, #0x3000 - streqb r1, [r0, #0xe38] - ldrb r0, [r7, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _022F8008 - ldr r0, [r7, #0xb4] - bl FreeOtherWrappedMonsters -_022F8008: - mov r0, sl - bl ov29_023159D4 - mov r1, #0 - strb r1, [sl, #0x22] - ldr r0, _022F85D4 ; =0x0235355C - strb r1, [sl, #0x20] - str r1, [r0] - ldrb r0, [r7, #7] - cmp r0, #0 - bne _022F8098 - ldrb r0, [r7, #0x48] - bl JoinedAtRangeCheck2 - cmp r0, #0 - beq _022F8098 - bl StoryRestrictionsEnabled - cmp r0, #0 - beq _022F8098 - mov r0, #1 - bl SetForcedLossReason - mov r2, #0 - ldr r0, _022F85D0 ; =0x02353538 - strh r2, [r7, #0x10] - ldr r0, [r0] - mov r1, sl - add r0, r0, #0x248 - add r0, r0, #0x400 - bl ov29_022E2A78 - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75f] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r7, #0x165] - bl ov29_022E8104 - bl ov29_022E81F8 - b _022F85C8 -_022F8098: - ldrb r0, [r7, #7] - cmp r0, #0 - beq _022F83B4 - mov r0, #0 - bl ov29_0234B1A4 - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75f] - cmp r0, #0 - bne _022F80F4 - bl GetForcedLossReason - cmp r0, #1 - mov r0, #1 - streqb r0, [sl, #0x20] - strneb r0, [r7, #0x165] - bl ov29_022E8104 - bl ov29_022E81F8 - mov r0, #0x3c - mov r1, #0x49 - bl ov29_022EA370 - mov r0, #0 - mov r1, r0 - bl OpenMessageLog -_022F80F4: - ldr r1, _022F85D0 ; =0x02353538 - ldr r2, [r1] - ldrb r0, [r2, #0xa] - cmp r0, #0 - bne _022F825C - mov r4, #0 - bl IsOutlawOrChallengeRequestFloor - cmp r0, #0 - bne _022F8234 - bl GetForcedLossReason - cmp r0, #4 - beq _022F8234 - ldr r0, _022F85D0 ; =0x02353538 - ldr r2, [r0] - ldrb r0, [r2, #0x790] - cmp r0, #0 - bne _022F8234 - ldr r1, _022F85D8 ; =0x0000025B - cmp sb, r1 - addne r0, r1, #6 - cmpne sb, r0 - addne r0, r1, #0xb - cmpne sb, r0 - addne r0, r1, #2 - cmpne sb, r0 - beq _022F8234 - add r0, r2, #0x4000 - ldrb r0, [r0, #0xca] - cmp r0, #0 - bne _022F8234 - add r0, r2, #0x700 - ldrsb r2, [r0, #0x9b] - cmp r2, #0 - blt _022F8234 - ldrsb r0, [r0, #0x98] - cmp r0, #3 - cmpne r0, #2 - beq _022F8234 - cmp r2, #0 - ble _022F8220 - mov r0, r4 - mov r3, #1 - ldr r1, _022F85DC ; =0x00000C13 - mov r2, r0 - str r3, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _022F8208 - ldr r1, _022F85E0 ; =0x00000C14 - mov r0, r4 - mov r2, #1 - bl DisplayMessage - ldr r1, _022F85D0 ; =0x02353538 - mov r0, #1 - ldr r2, [r1] - strb r0, [r2, #8] - ldr r2, [r1] - strb r0, [r2, #0xa] - ldr r2, [r1] - strb r0, [r2, #0x758] - ldr r2, [r1] - add r1, r2, #0x700 - ldrsb r1, [r1, #0x9b] - sub r1, r1, #1 - strb r1, [r2, #0x79b] - bl ov29_0234B010 - bl ov29_022E8104 - bl ov29_022E81F8 - b _022F85C8 -_022F8208: - cmp r0, #2 - bne _022F8240 - mov r0, r7 - bl ov29_022F7F08 - mov r4, r0 - b _022F8240 -_022F8220: - rsb r1, r1, #0xe70 - mov r0, r4 - mov r2, #1 - bl DisplayMessage2 - b _022F8240 -_022F8234: - mov r0, r7 - bl ov29_022F7F08 - mov r4, r0 -_022F8240: - mov r0, #1 - bl ov29_0234B010 - cmp r4, #0 - beq _022F8284 - mov r0, sl - bl ov29_022E68BC - b _022F8284 -_022F825C: - mov r0, #1 - strb r0, [r2, #8] - ldr r2, [r1] - strb r0, [r2, #0xa] - ldr r1, [r1] - strb r0, [r1, #0x758] - bl ov29_0234B010 - bl ov29_022E8104 - bl ov29_022E81F8 - b _022F85C8 -_022F8284: - ldr r0, _022F85E4 ; =0x00000266 - cmp sb, r0 - bne _022F82B4 - ldr r1, _022F85D0 ; =0x02353538 - mov r0, sb - ldr r2, [r1] - mov r1, r8 - add r3, r2, #0x248 - mov r2, sl - add r3, r3, #0x400 - bl ov29_022ECDE4 - b _022F82C8 -_022F82B4: - mov r0, sb - mov r1, r8 - mov r2, sl - mov r3, #0 - bl ov29_022ECDE4 -_022F82C8: - ldr r0, _022F85E8 ; =0x0000025E - cmp sb, r0 - bne _022F83B4 - mov r5, #0 - mov r4, r5 - ldr r6, _022F85D0 ; =0x02353538 - b _022F8328 -_022F82E4: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F8324 - ldr r5, [r8, #0xb4] - ldrsh r0, [r5, #0x10] - cmp r0, #0 - bne _022F8324 - ldrb r0, [r5, #0x48] - bl JoinedAtRangeCheck2 - cmp r0, #0 - bne _022F8330 -_022F8324: - add r4, r4, #1 -_022F8328: - cmp r4, #4 - blt _022F82E4 -_022F8330: - cmp r5, #0 - beq _022F83B4 - ldrsh r0, [r5, #0xc] - bl GetActiveTeamMember - mov r4, r0 - ldrsh r0, [r5, #0xc] - mov r1, r5 - bl ov29_022FE048 - ldrsh r0, [r4, #8] - bl IsMonsterIdInNormalRange__02056294 - cmp r0, #0 - beq _022F83A8 - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsLevelResetDungeon - cmp r0, #0 - bne _022F83A8 - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r0, [r0, #0x98] - cmp r0, #3 - beq _022F83A8 - ldrsh r0, [r5, #0xc] - mvn r1, #0 - bl sub_02058674 - ldrsh r0, [r4, #8] - mov r1, r4 - bl sub_0205349C -_022F83A8: - ldrb r0, [r4] - orr r0, r0, #8 - strb r0, [r4] -_022F83B4: - mov r0, sl - mov r1, #1 - bl ov29_022E1C0C - ldrb r0, [r7, #6] - cmp r0, #0 - ldrne r0, _022F85D8 ; =0x0000025B - cmpne sb, r0 - beq _022F83F4 - ldrb r0, [r7, #0xbc] - bl ov29_022EFAE8 - cmp r0, #0 - beq _022F83F4 - mov r0, #1 - bl SetMissionTargetEnemyDefeated - mov r0, #1 - bl ov29_02349688 -_022F83F4: - ldrb r0, [r7, #0x48] - cmp r0, #0xfa - bne _022F8428 - mov r0, #2 - bl SetForcedLossReason - ldr r0, _022F85D0 ; =0x02353538 - mov r1, sl - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x248 - add r0, r0, #0x400 - bl ov29_022E2A78 - b _022F8460 -_022F8428: - cmp r0, #0xe3 - beq _022F8460 - bl JoinedAtRangeCheck - cmp r0, #0 - beq _022F8460 - mov r0, #3 - bl SetForcedLossReason - ldr r0, _022F85D0 ; =0x02353538 - mov r1, sl - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x248 - add r0, r0, #0x400 - bl ov29_022E2A78 -_022F8460: - bl GetLeader - cmp r0, #0 - ldrne r0, _022F85D8 ; =0x0000025B - cmpne sb, r0 - beq _022F84AC - ldrb r0, [r7, #7] - cmp r0, #0 - bne _022F84AC - bl GetForcedLossReason - cmp r0, #0 - bne _022F84AC - ldr r0, _022F85EC ; =0x00000233 - ldrb r1, [r7, #0xbc] - cmp sb, r0 - moveq r2, #1 - movne r2, #0 - mov r0, sl - and r2, r2, #0xff - bl ov29_022EF7C4 -_022F84AC: - ldrb r0, [r7, #6] - cmp r0, #0 - bne _022F8594 - ldrsh r0, [r7, #0xc] - bl GetActiveTeamMember - mov r4, r0 - ldrsh r0, [r7, #0xc] - mov r1, r7 - bl ov29_022FE048 - ldrsh r0, [r4, #8] - bl IsMonsterIdInNormalRange__02056294 - cmp r0, #0 - beq _022F856C - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsLevelResetDungeon - cmp r0, #0 - bne _022F8528 - ldr r0, _022F85D0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r0, [r0, #0x98] - cmp r0, #3 - beq _022F8528 - ldrsh r0, [r7, #0xc] - mvn r1, #0 - bl sub_02058674 - ldrsh r0, [r4, #8] - mov r1, r4 - bl sub_0205349C -_022F8528: - ldrb r0, [r7, #7] - mov r5, #0 - cmp r0, #0 - ldr r0, _022F85D0 ; =0x02353538 - movne r5, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x75c] - cmp r0, #0 - bne _022F855C - ldrb r0, [r7, #0x48] - bl JoinedAtRangeCheck2 - cmp r0, #0 - movne r5, #1 -_022F855C: - cmp r5, #0 - bne _022F856C - ldrsh r0, [r4, #8] - bl sub_020566C4 -_022F856C: - ldrb r0, [r7, #7] - cmp r0, #0 - ldrneb r0, [r4] - orrne r0, r0, #8 - strneb r0, [r4] - bne _022F8594 - add r0, r7, #0x62 - bl sub_0200FB54 - mov r0, #0 - strb r0, [r4] -_022F8594: - ldr r0, [r7, #0xb0] - bl ov29_022DDB68 - ldr r0, _022F85D0 ; =0x02353538 - ldr r1, _022F85D4 ; =0x0235355C - mov r2, #0 - ldr r0, [r0] - str r2, [r1] - mov r1, #1 - strb r1, [r0, #0xe] - str r2, [sl] - bl ov29_022E2978 - bl ov29_022E8104 - bl ov29_022E81F8 -_022F85C8: - add sp, sp, #0xbc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F85D0: .word 0x02353538 -_022F85D4: .word 0x0235355C -_022F85D8: .word 0x0000025B -_022F85DC: .word 0x00000C13 -_022F85E0: .word 0x00000C14 -_022F85E4: .word 0x00000266 -_022F85E8: .word 0x0000025E -_022F85EC: .word 0x00000233 - arm_func_end HandleFaint - - arm_func_start ov29_022F85F0 -ov29_022F85F0: ; 0x022F85F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov r7, r2 - mov sb, r0 - mov r0, r8 - mov r1, r7 - mov r6, r3 - bl GetTileSafe - ldr r5, [sb, #0xb4] - mov r4, r0 - ldrb r0, [r5, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _022F8634 - ldr r0, [r5, #0xb4] - bl FreeOtherWrappedMonsters -_022F8634: - ldrb r0, [r5, #0xc4] - cmp r0, #7 - cmpne r0, #5 - cmpne r0, #2 - bne _022F8658 - mov r0, sb - mov r1, sb - mov r2, #1 - bl EndFrozenClassStatus -_022F8658: - ldrsh r1, [sb, #4] - cmp r8, r1 - ldreqsh r0, [sb, #6] - cmpeq r7, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r1, #0 - ldrgesh r2, [sb, #6] - cmpge r2, #0 - blt _022F8690 - mov r0, sb - bl ov29_02337EC0 - ldrsh r0, [sb, #4] - ldrsh r1, [sb, #6] - bl ov29_023391EC -_022F8690: - ldrsh r2, [sb, #4] - mov r0, r8, lsl #0x10 - mov r1, r7, lsl #0x10 - strh r2, [sb, #8] - ldrsh r2, [sb, #6] - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - strh r2, [sb, #0xa] - strh r0, [sb, #4] - strh r1, [sb, #6] - ldrb r2, [r5, #7] - cmp r2, #0 - beq _022F86C8 - bl ov29_02338F24 -_022F86C8: - str sb, [r4, #0xc] - ldrb r0, [r5, #7] - cmp r0, #0 - beq _022F86FC - mov r0, r8, lsl #0x10 - mov r1, r7, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - bl ov29_02338F24 - ldr r0, _022F87BC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #5] -_022F86FC: - mov r0, r8 - mov r1, r7 - bl ov29_023391EC - cmp r6, #0 - beq _022F871C - cmp r6, #1 - beq _022F8768 - b _022F87A8 -_022F871C: - ldrh r0, [r5, #0x72] - strh r0, [r5, #0x76] - ldrh r0, [r5, #0x74] - strh r0, [r5, #0x78] - ldrh r0, [r5, #0x6e] - strh r0, [r5, #0x72] - ldrh r0, [r5, #0x70] - strh r0, [r5, #0x74] - ldrh r0, [r5, #0x6a] - strh r0, [r5, #0x6e] - ldrh r0, [r5, #0x6c] - strh r0, [r5, #0x70] - ldrb r0, [r5, #0xef] - cmp r0, #1 - ldrneh r0, [sb, #8] - strneh r0, [r5, #0x6a] - ldrneh r0, [sb, #0xa] - strneh r0, [r5, #0x6c] - b _022F87A8 -_022F8768: - ldrh r0, [sb, #4] - strh r0, [r5, #0x6a] - ldrh r0, [sb, #6] - strh r0, [r5, #0x6c] - ldrh r0, [r5, #0x6a] - strh r0, [r5, #0x6e] - ldrh r0, [r5, #0x6c] - strh r0, [r5, #0x70] - ldrh r0, [r5, #0x6e] - strh r0, [r5, #0x72] - ldrh r0, [r5, #0x70] - strh r0, [r5, #0x74] - ldrh r0, [r5, #0x72] - strh r0, [r5, #0x76] - ldrh r0, [r5, #0x74] - strh r0, [r5, #0x78] -_022F87A8: - ldrb r1, [r4, #7] - mov r0, sb - strb r1, [sb, #0x25] - bl ov29_02304BAC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F87BC: .word 0x02353538 - arm_func_end ov29_022F85F0 - - arm_func_start ov29_022F87C0 -ov29_022F87C0: ; 0x022F87C0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r5, [r4, #0xb4] - ldrb r1, [r5, #0x4c] - bl CanAttackInDirection - cmp r0, #0 - beq _022F8820 - ldrb r2, [r5, #0x4c] - ldr r1, _022F8828 ; =0x0235171C - ldr r0, _022F882C ; =0x0235171E - mov ip, r2, lsl #2 - ldrsh lr, [r4, #4] - ldrsh r3, [r1, ip] - ldrsh r2, [r4, #6] - ldrsh r1, [r0, ip] - add r0, lr, r3 - add r1, r2, r1 - bl GetTile - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _022F8820 - ldr r1, [r0] - cmp r1, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_022F8820: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F8828: .word 0x0235171C -_022F882C: .word 0x0235171E - arm_func_end ov29_022F87C0 - - arm_func_start ov29_022F8830 -ov29_022F8830: ; 0x022F8830 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r5, [r4, #0xb4] - ldr r0, _022F88B8 ; =0x0235171C - ldrb r2, [r5, #0x4c] - ldrsh r3, [r4, #4] - ldr r1, _022F88BC ; =0x0235171E - mov r2, r2, lsl #2 - ldrsh r0, [r0, r2] - add r0, r3, r0 - strh r0, [sp] - ldrb r2, [r5, #0x4c] - ldrsh r3, [r4, #6] - ldrsh r0, [sp] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1 - strh r1, [sp, #2] - ldrsh r1, [sp, #2] - bl GetTile - mov r5, r0 - add r1, sp, #0 - mov r0, r4 - bl ov29_022FFB90 - cmp r0, #0 - bne _022F88B0 - ldr r0, [r5, #0xc] - cmp r0, #0 - beq _022F88B0 - ldr r1, [r0] - cmp r1, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_022F88B0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F88B8: .word 0x0235171C -_022F88BC: .word 0x0235171E - arm_func_end ov29_022F8830 - - arm_func_start ov29_022F88C0 -ov29_022F88C0: ; 0x022F88C0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldr r0, _022F89A4 ; =0x0235171C - ldrb r2, [r4, #0x4c] - ldrsh r3, [r5, #4] - ldr r1, _022F89A8 ; =0x0235171E - mov r2, r2, lsl #2 - ldrsh r0, [r0, r2] - add r0, r3, r0 - strh r0, [sp] - ldrb r2, [r4, #0x4c] - ldrsh r3, [r5, #6] - ldrsh r0, [sp] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1 - strh r1, [sp, #2] - ldrsh r1, [sp, #2] - bl GetTile - add r1, sp, #0 - mov r0, r5 - bl ov29_022FFB90 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #0x4c] - ldr r0, _022F89A4 ; =0x0235171C - ldrsh r2, [r5, #4] - mov r1, r1, lsl #2 - ldrsh r0, [r0, r1] - ldr r1, _022F89A8 ; =0x0235171E - add r0, r2, r0, lsl #1 - strh r0, [sp] - ldrb r2, [r4, #0x4c] - ldrsh r3, [r5, #6] - ldrsh r0, [sp] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1, lsl #1 - strh r1, [sp, #2] - ldrsh r1, [sp, #2] - bl GetTile - mov r4, r0 - add r1, sp, #0 - mov r0, r5 - bl ov29_022FFB90 - cmp r0, #0 - bne _022F899C - ldr r0, [r4, #0xc] - cmp r0, #0 - beq _022F899C - ldr r1, [r0] - cmp r1, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_022F899C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F89A4: .word 0x0235171C -_022F89A8: .word 0x0235171E - arm_func_end ov29_022F88C0 - - arm_func_start ov29_022F89AC -ov29_022F89AC: ; 0x022F89AC - stmdb sp!, {r3, lr} - mov r1, r0 - add r0, sp, #0 - bl ov29_022F8FF8 - ldrsh r0, [sp] - ldrsh r1, [sp, #2] - bl GetTile - ldmia sp!, {r3, pc} - arm_func_end ov29_022F89AC - - arm_func_start ov29_022F89CC -ov29_022F89CC: ; 0x022F89CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - ldr r5, [r6, #0xb4] - mov r7, r0 - mov r1, r5 - add r0, r7, #2 - bl ov29_02300164 - ldrsh r1, [r5, #2] - ldr r0, _022F8FF0 ; =0x000003E7 - mov r3, #0 - strh r1, [r7] - ldrsh r1, [r5, #0x10] - str r1, [r7, #0x24] - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - str r1, [r7, #0x28] - ldrb r0, [r5, #0xa] - str r0, [r7, #0x2c] - ldr r0, [r5, #0x20] - str r0, [r7, #0x30] -_022F8A28: - add r2, r5, r3 - ldrb r0, [r2, #0x1a] - add r1, r7, r3 - add r3, r3, #1 - strb r0, [r1, #0x34] - ldrb r0, [r2, #0x1c] - cmp r3, #2 - strb r0, [r1, #0x36] - ldrb r0, [r2, #0x5e] - strb r0, [r1, #0x16] - ldrb r0, [r2, #0x60] - strb r0, [r1, #0x18] - blt _022F8A28 - ldrb r0, [r5, #7] - mov r1, #0 - strb r0, [r7, #0x38] - strb r1, [r7, #0x39] - strb r1, [r7, #0x3a] - strb r1, [r7, #0x3b] - strb r1, [r7, #0x3c] - ldrb r0, [r5, #0xd8] - cmp r0, #4 - moveq r0, #1 - streqb r0, [r7, #0x45] - strneb r1, [r7, #0x45] - mov r0, r6 - mov r1, #0x6f - bl AbilityIsActive2 - str r0, [sp] - ldrsh r1, [r5, #2] - ldrsh r3, [r5, #0xe] - mov r0, r7 - add r2, r5, #0x62 - bl sub_0205A450 - ldrb r2, [r5, #0xa8] - mov r1, #0 - add r0, r5, #0x90 - strb r2, [r7, #0x54] - ldrh r2, [r5, #0x62] - add r4, r7, #0x48 - ldr r3, _022F8FF4 ; =0x02353538 - strh r2, [r7, #0x1c] - ldrh r2, [r5, #0x64] - strh r2, [r7, #0x1e] - ldrh r2, [r5, #0x66] - strh r2, [r7, #0x20] - ldrsh r2, [r5, #0xe] - strh r2, [r7, #0x3e] - ldrb r2, [r5, #0x48] - strb r2, [r7, #0x1a] - ldrb r2, [r5, #0x49] - strb r2, [r7, #0x1b] - strb r1, [r7, #0x42] - strb r1, [r7, #0x43] - ldmia r0, {r0, r1, r2} - stmia r4, {r0, r1, r2} - ldr r0, [r3] - ldrb r0, [r0, #0x75a] - cmp r0, #0 - moveq r0, #3 - beq _022F8B24 - mov r0, r5 - bl ov29_022F9B8C -_022F8B24: - strb r0, [r7, #0x44] - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _022F8FF0 ; =0x000003E7 - mov r4, #0 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - add r0, r2, r0, lsr #30 - ldrsh r1, [r5, #0x10] - sub r2, sp, #4 - cmp r1, r0, asr #2 - movle r0, #6 - strleb r0, [r7, #0x58] - ldr r0, _022F8FF4 ; =0x02353538 - addle r4, r4, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x78d] - cmp r0, #0 - addne r0, r7, r4 - movne r1, #0xb - strneb r1, [r0, #0x58] - add r0, r5, #0x100 - ldrh r1, [r0, #0x46] - addne r4, r4, #1 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - bne _022F8BC4 - ldrb r0, [r5, #7] - cmp r0, #0 - movne r1, #0x13 - add r0, r7, r4 - moveq r1, #0x42 - strb r1, [r0, #0x58] - add r4, r4, #1 -_022F8BC4: - ldr r0, [r6, #0xb4] - ldr r0, [r0, #0x110] - cmp r0, #1 - addgt r0, r7, r4 - movgt r1, #0x1b - strgtb r1, [r0, #0x58] - ldr r0, [r6, #0xb4] - addgt r4, r4, #1 - ldr r0, [r0, #0x110] - cmp r0, #1 - addlt r0, r7, r4 - movlt r1, #0x29 - strltb r1, [r0, #0x58] - ldr r0, [r5, #0x34] - addlt r4, r4, #1 - cmp r0, #0x100 - ldrge r0, [r5, #0x38] - cmpge r0, #0x100 - ldrge r0, [r5, #0x3c] - cmpge r0, #0x100 - ldrge r0, [r5, #0x40] - cmpge r0, #0x100 - ldrgesh r0, [r5, #0x24] - cmpge r0, #0xa - ldrgesh r0, [r5, #0x26] - cmpge r0, #0xa - ldrgesh r0, [r5, #0x28] - cmpge r0, #0xa - ldrgesh r0, [r5, #0x2a] - cmpge r0, #0xa - ldrgesh r0, [r5, #0x2c] - cmpge r0, #0xa - ldrgesh r0, [r5, #0x2e] - cmpge r0, #0xa - addlt r0, r7, r4 - movlt r1, #0x3b - strltb r1, [r0, #0x58] - ldr r0, [r5, #0x34] - addlt r4, r4, #1 - cmp r0, #0x100 - ldrle r0, [r5, #0x38] - cmple r0, #0x100 - ldrle r0, [r5, #0x3c] - cmple r0, #0x100 - ldrle r0, [r5, #0x40] - cmple r0, #0x100 - ldrlesh r0, [r5, #0x24] - cmple r0, #0xa - ldrlesh r0, [r5, #0x26] - cmple r0, #0xa - ldrlesh r0, [r5, #0x28] - cmple r0, #0xa - ldrlesh r0, [r5, #0x2a] - cmple r0, #0xa - ldrlesh r0, [r5, #0x2c] - cmple r0, #0xa - ldrlesh r0, [r5, #0x2e] - cmple r0, #0xa - addgt r0, r7, r4 - movgt r1, #0x45 - strgtb r1, [r0, #0x58] - ldrb r1, [r5, #0xbd] - addgt r4, r4, #1 - cmp r1, #0 - beq _022F8CD8 - cmp r4, #0x1e - addlt r0, r7, r4 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8CD8: - ldrb r1, [r5, #0xbf] - cmp r1, #0 - beq _022F8CF8 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #6 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8CF8: - ldrb r1, [r5, #0xc4] - cmp r1, #0 - beq _022F8D18 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0xb - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8D18: - ldrb r1, [r5, #0xd0] - cmp r1, #0 - beq _022F8D38 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x13 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8D38: - ldrb r1, [r5, #0xd2] - cmp r1, #0 - beq _022F8D58 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x1b - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8D58: - ldrb r1, [r5, #0xd5] - cmp r1, #0 - beq _022F8D78 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x29 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8D78: - ldrb r1, [r5, #0xd8] - cmp r1, #0 - beq _022F8D98 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x3b - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8D98: - ldrb r1, [r5, #0xe0] - cmp r1, #0 - beq _022F8DB8 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x42 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8DB8: - ldrb r1, [r5, #0xec] - cmp r1, #0 - beq _022F8DD8 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x45 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8DD8: - ldrb r1, [r5, #0xee] - cmp r1, #0 - beq _022F8DF8 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x4a - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8DF8: - ldrb r1, [r5, #0xef] - cmp r1, #0 - beq _022F8E18 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x4d - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8E18: - ldrb r1, [r5, #0xf1] - cmp r1, #0 - beq _022F8E38 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x52 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8E38: - ldrb r1, [r5, #0xf3] - cmp r1, #0 - beq _022F8E58 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x57 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8E58: - ldrb r1, [r5, #0xf5] - cmp r1, #0 - beq _022F8E78 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x59 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8E78: - ldrb r1, [r5, #0xf7] - cmp r1, #0 - beq _022F8E98 - cmp r4, #0x1e - addlt r0, r7, r4 - addlt r1, r1, #0x5b - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8E98: - ldrb r0, [r5, #0x11e] - cmp r0, #0 - beq _022F8EB8 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x5d - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8EB8: - ldrb r0, [r5, #0xf9] - cmp r0, #0 - beq _022F8ED8 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x5e - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8ED8: - ldrb r0, [r5, #0xfa] - cmp r0, #0 - beq _022F8EF8 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x5f - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8EF8: - ldrb r0, [r5, #0xfd] - cmp r0, #0 - beq _022F8F18 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x60 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8F18: - ldrb r0, [r5, #0xfe] - cmp r0, #0 - beq _022F8F38 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x61 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8F38: - mov r0, r6 - bl ShouldMonsterRunAway - cmp r0, #0 - beq _022F8F5C - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x62 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8F5C: - ldrb r0, [r5, #0x106] - cmp r0, #0 - beq _022F8F7C - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x63 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8F7C: - mov r0, r6 - mov r1, #0 - bl GetNumberOfAttacks - cmp r0, #2 - blt _022F8FA4 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x64 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8FA4: - ldrb r0, [r5, #0xfb] - cmp r0, #0 - beq _022F8FC4 - cmp r4, #0x1e - addlt r0, r7, r4 - movlt r1, #0x65 - strltb r1, [r0, #0x58] - addlt r4, r4, #1 -_022F8FC4: - mov r1, #0 - b _022F8FD8 -_022F8FCC: - add r0, r7, r4 - strb r1, [r0, #0x58] - add r4, r4, #1 -_022F8FD8: - cmp r4, #0x1e - blt _022F8FCC - add r0, r7, r4 - mov r1, #0 - strb r1, [r0, #0x58] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F8FF0: .word 0x000003E7 -_022F8FF4: .word 0x02353538 - arm_func_end ov29_022F89CC - - arm_func_start ov29_022F8FF8 -ov29_022F8FF8: ; 0x022F8FF8 - stmdb sp!, {r4, lr} - ldr r2, [r1, #0xb4] - ldr ip, _022F9050 ; =0x0235171C - ldrb lr, [r2, #0x4c] - ldrsh r4, [r1, #4] - ldr r3, _022F9054 ; =0x0235171E - mov lr, lr, lsl #2 - ldrsh ip, [ip, lr] - add r4, r4, ip - strh r4, [r0] - ldrb ip, [r2, #0x4c] - ldrsh lr, [r1, #6] - mov r1, ip, lsl #2 - ldrsh r1, [r3, r1] - add r1, lr, r1 - strh r1, [r0, #2] - ldrb r0, [r2, #0x4c] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_022F9050: .word 0x0235171C -_022F9054: .word 0x0235171E - arm_func_end ov29_022F8FF8 - - arm_func_start ov29_022F9058 -ov29_022F9058: ; 0x022F9058 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r4, [r1, #0xb4] - mov r5, r0 - ldrsh r0, [r4, #2] - strh r0, [r5] - ldrh r0, [r1, #4] - strh r0, [r5, #2] - ldrh r0, [r1, #6] - strh r0, [r5, #4] - ldrb r0, [r4, #0x100] - cmp r0, #0 - ldrnesh r0, [r4, #0x14] - ldreqsh r0, [r4, #0x12] - strh r0, [r5, #6] - ldrb r1, [r4, #0xa] - add r0, sp, #0 - strh r1, [r5, #0xc] - ldrsh r1, [r4, #2] - ldrb r2, [r4, #0xa] - bl GetLvlStats - ldr r0, [sp] - add r3, r4, #0x124 - str r0, [r5, #0x10] - ldrb r0, [r4, #0x1a] - add r2, r5, #0x22 - mov r1, #0x11 - strb r0, [r5, #8] - ldrb r0, [r4, #0x1b] - strb r0, [r5, #9] - ldrb r0, [r4, #0x1c] - strb r0, [r5, #0xa] - ldrb r0, [r4, #0x1d] - strb r0, [r5, #0xb] - ldrh r0, [r4, #0x62] - strh r0, [r5, #0x1c] - ldrh r0, [r4, #0x64] - strh r0, [r5, #0x1e] - ldrh r0, [r4, #0x66] - strh r0, [r5, #0x20] -_022F90F8: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022F90F8 - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - strh r1, [r5, #0x14] - ldrh r1, [r0, #0x48] - strh r1, [r5, #0x16] - ldrh r1, [r0, #0x4a] - strh r1, [r5, #0x18] - ldrh r0, [r0, #0x4c] - strh r0, [r5, #0x1a] - ldrh r0, [r4, #0x44] - strh r0, [r5, #0x44] - ldrh r0, [r4, #0x46] - strh r0, [r5, #0x46] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022F9058 - - arm_func_start UpdateAiTargetPos -UpdateAiTargetPos: ; 0x022F9144 - stmdb sp!, {r3, lr} - ldr lr, [r0, #0xb4] - ldr r2, _022F918C ; =0x0235171C - ldrb r3, [lr, #0x4c] - ldrsh ip, [r0, #4] - add r1, lr, #0x100 - mov r3, r3, lsl #2 - ldrsh r3, [r2, r3] - ldr r2, _022F9190 ; =0x0235171E - add r3, ip, r3 - strh r3, [r1, #0x7e] - ldrb r3, [lr, #0x4c] - ldrsh ip, [r0, #6] - mov r0, r3, lsl #2 - ldrsh r0, [r2, r0] - add r0, ip, r0 - strh r0, [r1, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_022F918C: .word 0x0235171C -_022F9190: .word 0x0235171E - arm_func_end UpdateAiTargetPos - - arm_func_start ov29_022F9194 -ov29_022F9194: ; 0x022F9194 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r1, #0x25 - ldr r4, [r5, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - beq _022F91D8 - mov r0, r5 - bl GetApparentWeather - mov r1, #6 - mul r2, r0, r1 - ldr r1, _022F9234 ; =0x022C4C6C - mov r0, #0 - ldrb r1, [r1, r2] - strb r1, [r4, #0x5e] - strb r0, [r4, #0x5f] - b _022F91FC -_022F91D8: - mov r5, #0 -_022F91DC: - ldrsh r0, [r4, #2] - mov r1, r5 - bl GetType - add r1, r4, r5 - add r5, r5, #1 - strb r0, [r1, #0x5e] - cmp r5, #2 - blt _022F91DC -_022F91FC: - mov r5, #0 -_022F9200: - ldrsh r0, [r4, #2] - mov r1, r5 - bl GetAbility - add r1, r4, r5 - add r5, r5, #1 - strb r0, [r1, #0x60] - cmp r5, #2 - blt _022F9200 - ldr r0, _022F9238 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0xe] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022F9234: .word 0x022C4C6C -_022F9238: .word 0x02353538 - arm_func_end ov29_022F9194 - - arm_func_start TryActivateSlowStart -TryActivateSlowStart: ; 0x022F923C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, #0 - mov r7, #1 - ldr r5, _022F92D0 ; =0x00000C17 - ldr r4, _022F92D4 ; =0x02353538 - mov r6, sb - mov fp, r7 - mov r8, #0x5e -_022F925C: - ldr r0, [r4] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] - mov r0, sl - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F92C0 - mov r0, sl - mov r1, r8 - bl AbilityIsActive2 - cmp r0, #0 - beq _022F92C0 - mov r0, r7 - mov r1, sl - mov r2, r6 - bl SubstitutePlaceholderStringTags - mov r0, sl - mov r1, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, sl - mov r1, sl - mov r2, fp - mov r3, #0 - bl LowerSpeed -_022F92C0: - add sb, sb, #1 - cmp sb, #0x14 - blt _022F925C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F92D0: .word 0x00000C17 -_022F92D4: .word 0x02353538 - arm_func_end TryActivateSlowStart - - arm_func_start TryActivateArtificialWeatherAbilities -TryActivateArtificialWeatherAbilities: ; 0x022F92D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bl IsSecretFloor - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r4, _022F9404 ; =0x02353538 - ldr r1, [r4] - ldrb r0, [r1, #0xe] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov sb, #0 - strb sb, [r1, #0xe] - ldr r0, [r4] - mov r5, #1 - add r0, r0, #0xc000 - strb sb, [r0, #0xd5d] - mov r6, r5 - mov r7, r5 - mov r8, r5 - mov fp, r5 -_022F9324: - ldr r0, [r4] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] - mov r0, sl - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F93F4 - mov r0, sl - mov r1, #4 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - addne r0, r0, #0xcd00 - strneh r8, [r0, #0x52] - bne _022F93C0 - mov r0, sl - mov r1, #0x1c - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - addne r0, r0, #0xcd00 - strneh r7, [r0, #0x4e] - bne _022F93C0 - mov r0, sl - mov r1, #0x31 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - addne r0, r0, #0xcd00 - strneh r6, [r0, #0x4c] - bne _022F93C0 - mov r0, sl - mov r1, #0x78 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r4] - addne r0, r0, #0xcd00 - strneh r5, [r0, #0x54] -_022F93C0: - mov r0, sl - mov r1, #8 - bl AbilityIsActive2 - cmp r0, #0 - bne _022F93E8 - mov r0, sl - mov r1, #0x2d - bl AbilityIsActive2 - cmp r0, #0 - beq _022F93F4 -_022F93E8: - ldr r0, [r4] - add r0, r0, #0xc000 - strb fp, [r0, #0xd5d] -_022F93F4: - add sb, sb, #1 - cmp sb, #0x14 - blt _022F9324 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022F9404: .word 0x02353538 - arm_func_end TryActivateArtificialWeatherAbilities - - arm_func_start ov29_022F9408 -ov29_022F9408: ; 0x022F9408 - stmdb sp!, {r4, lr} - movs r4, r0 - beq _022F94A8 - ldr r2, _022F94E0 ; =0x0000017B - cmp r1, r2 - blt _022F945C - add r2, r2, #3 - cmp r1, r2 - bgt _022F945C - mov r1, #0x25 - bl AbilityIsActive2 - cmp r0, #0 - ldreq r0, _022F94E0 ; =0x0000017B - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl GetApparentWeather - mov r1, #6 - mul r1, r0, r1 - ldr r0, _022F94E4 ; =0x022C4C6E - ldrsh r0, [r0, r1] - ldmia sp!, {r4, pc} -_022F945C: - ldr r0, _022F94E8 ; =0x000003D3 - cmp r1, r0 - blt _022F94D8 - add r0, r0, #3 - cmp r1, r0 - bgt _022F94D8 - mov r0, r4 - mov r1, #0x25 - bl AbilityIsActive2 - cmp r0, #0 - ldreq r0, _022F94E8 ; =0x000003D3 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl GetApparentWeather - mov r1, #6 - mul r1, r0, r1 - ldr r0, _022F94EC ; =0x022C4C70 - ldrsh r0, [r0, r1] - ldmia sp!, {r4, pc} -_022F94A8: - ldr r0, _022F94E0 ; =0x0000017B - cmp r1, r0 - blt _022F94C0 - add r2, r0, #3 - cmp r1, r2 - ldmleia sp!, {r4, pc} -_022F94C0: - ldr r0, _022F94E8 ; =0x000003D3 - cmp r1, r0 - blt _022F94D8 - add r2, r0, #3 - cmp r1, r2 - ldmleia sp!, {r4, pc} -_022F94D8: - mov r0, r1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022F94E0: .word 0x0000017B -_022F94E4: .word 0x022C4C6E -_022F94E8: .word 0x000003D3 -_022F94EC: .word 0x022C4C70 - arm_func_end ov29_022F9408 - - arm_func_start ov29_022F94F0 -ov29_022F94F0: ; 0x022F94F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - cmpne sb, r8 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r5, [sb, #0xb4] - ldr r6, [r8, #0xb4] - ldrb r0, [r5, #0xbc] - bl ov29_022EFB04 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r6, #0x60] - mvn r4, #0 - cmp r0, #0x28 - ldrb r0, [r6, #0x61] - moveq r4, #0 - cmp r0, #0x28 - moveq r4, #1 - cmp r4, #0 - blt _022F95FC - ldrb r1, [r5, #0x60] - ldrb r2, [r5, #0x61] - mov r0, #0 - cmp r1, #0 - strneb r1, [sp] - addne r0, r0, #1 - cmp r2, #0 - addne r1, sp, #0 - strneb r2, [r1, r0] - addne r0, r0, #1 - cmp r0, #0 - mvneq r0, #0 - beq _022F95A0 - cmp r0, #1 - moveq r0, #0 - beq _022F95A0 - bl DungeonRandInt -_022F95A0: - cmp r0, #0 - blt _022F95FC - add r1, sp, #0 - ldrb r3, [r1, r0] - ldr r1, _022F96BC ; =0x02353538 - add r2, r6, r4 - strb r3, [r2, #0x60] - mov r0, #0 - ldr r3, [r1] - mov r4, #1 - mov r1, r8 - mov r2, r0 - strb r4, [r3, #0xe] - bl SubstitutePlaceholderStringTags - ldr r2, _022F96C0 ; =0x00000C18 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - bl ov29_022E6260 - mov r0, sb - mov r1, r8 - bl ov29_022FA7DC -_022F95FC: - ldrb r0, [r6, #0x164] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - mov r0, sb - mov r1, r8 - mov r2, #0x3b - mov r3, #1 - strb r4, [r6, #0x164] - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - mov r1, r7 - bl GetMoveTypeForMonster - ldrh r1, [r7, #4] - mov r4, r0 - cmp r1, #0x1f - bne _022F9658 - mov r0, sb - bl GetApparentWeather - ldr r1, _022F96C4 ; =0x022C48DC - ldrb r4, [r1, r0] -_022F9658: - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r8 - mov r1, r4 - bl MonsterIsType - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #0 - strb r4, [r6, #0x5e] - strb r0, [r6, #0x5f] - mov r3, #1 - mov r1, r8 - mov r2, r0 - strb r3, [r6, #0xff] - bl SubstitutePlaceholderStringTags - ldrb r1, [r6, #0x5e] - mov r0, #0 - bl ov29_0234B084 - ldr r2, _022F96C8 ; =0x00000C19 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - bl ov29_022E647C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022F96BC: .word 0x02353538 -_022F96C0: .word 0x00000C18 -_022F96C4: .word 0x022C48DC -_022F96C8: .word 0x00000C19 - arm_func_end ov29_022F94F0 - - arm_func_start DefenderAbilityIsActive__022F96CC -DefenderAbilityIsActive__022F96CC: ; 0x022F96CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _022F9710 - bl IsMonster__022F9720 - cmp r0, #0 - cmpne r4, #0 - beq _022F9710 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022F9710: - mov r0, r6 - mov r1, r5 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end DefenderAbilityIsActive__022F96CC - - arm_func_start IsMonster__022F9720 -IsMonster__022F9720: ; 0x022F9720 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__022F9720 - - arm_func_start ov29_022F9744 -ov29_022F9744: ; 0x022F9744 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r4, r2 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl EntityIsValid__022F7364 - cmp r0, #0 - cmpne r7, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r5, [r6, #0xb4] - mov r0, r6 - bl Conversion2IsActive - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r4 - bl GetMoveTypeForMonster - bl sub_02050964 - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov29_02307CE0 - mov r0, r6 - strb r4, [r5, #0x5e] - mov r1, #0 - strb r1, [r5, #0x5f] - bl ov29_022E4160 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #0 - bl ov29_0234B084 - mov r0, r7 - mov r1, r6 - ldr r2, _022F97EC ; =0x00000C16 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F97EC: .word 0x00000C16 - arm_func_end ov29_022F9744 - - arm_func_start TryActivateTruant -TryActivateTruant: ; 0x022F97F0 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F9838 - mov r0, r4 - mov r1, #0x2a - bl AbilityIsActive2 - cmp r0, #0 - beq _022F9838 - mov r2, #0 - str r2, [sp] - mov r0, r4 - mov r1, r4 - mov r3, #1 - str r2, [sp, #4] - bl TryInflictPausedStatus -_022F9838: - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end TryActivateTruant - - arm_func_start ov29_022F9840 -ov29_022F9840: ; 0x022F9840 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5] - cmp r0, #1 - bne _022F987C - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - and r4, r0, #0xff -_022F987C: - bl sub_0204AEF0 - cmp r0, #0 - moveq r4, #0 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_022E272C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, #1 - mov r0, r5 - mov r2, r1 - bl ov29_022F98B4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022F9840 - - arm_func_start ov29_022F98B4 -ov29_022F98B4: ; 0x022F98B4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _022F9968 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldr r0, [r0, #0x22c] - cmp r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - beq _022F9928 - mov r0, #1 - bl ov29_022E38E0 - mov r7, #0x34 - ldr r5, _022F9968 ; =0x02353538 - b _022F9918 -_022F9910: - mov r0, r7 - bl AdvanceFrame -_022F9918: - ldr r0, [r5] - ldrsh r0, [r0, #0x1c] - cmp r0, #0x3c - blt _022F9910 -_022F9928: - mov r0, #4 - mov r1, #0x44 - bl ov29_022EA370 - mov r0, r6 - mov r1, r4 - bl ov29_022E2E54 - cmp r4, #0 - beq _022F9950 - add r0, r6, #4 - bl ov29_02337A3C -_022F9950: - ldr r0, _022F9968 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strh r1, [r0, #0x1c] - bl ov29_022E81F8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022F9968: .word 0x02353538 - arm_func_end ov29_022F98B4 - - arm_func_start ov29_022F996C -ov29_022F996C: ; 0x022F996C - bx lr - arm_func_end ov29_022F996C - - arm_func_start ov29_022F9970 -ov29_022F9970: ; 0x022F9970 - stmdb sp!, {r4, r5, r6, lr} - mov r4, #0 - ldr r6, _022F99E8 ; =0x02353538 - b _022F99DC -_022F9980: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F99D8 - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #3 - bne _022F99D8 - ldr r1, _022F99E8 ; =0x02353538 - ldr r0, [r1] - add r0, r0, #0x19000 - str r5, [r0, #0x904] - ldr r2, [r5, #0xb4] - ldr r0, [r1] - ldr r1, [r2, #0xb0] - add r0, r0, #0x19000 - str r1, [r0, #0x90c] - ldmia sp!, {r4, r5, r6, pc} -_022F99D8: - add r4, r4, #1 -_022F99DC: - cmp r4, #0x14 - blt _022F9980 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022F99E8: .word 0x02353538 - arm_func_end ov29_022F9970 - - arm_func_start ov29_022F99EC -ov29_022F99EC: ; 0x022F99EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - mov r4, #0 - ldr r6, _022F9A70 ; =0x02353538 - mov r5, r4 - add r7, sp, #0 -_022F9A04: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb38] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F9A40 - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xbc] - cmp r0, #0xb - blo _022F9A40 - cmp r0, #0xe - strls r8, [r7, r4, lsl #2] - addls r4, r4, #1 -_022F9A40: - add r5, r5, #1 - cmp r5, #0x10 - blt _022F9A04 - cmp r4, #0 - movle r0, #0 - ble _022F9A68 - mov r0, r4 - bl DungeonRandInt - add r1, sp, #0 - ldr r0, [r1, r0, lsl #2] -_022F9A68: - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022F9A70: .word 0x02353538 - arm_func_end ov29_022F99EC - - arm_func_start RestorePpAllMovesSetFlags -RestorePpAllMovesSetFlags: ; 0x022F9A74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, [r0, #0xb4] - mov r7, #0 - add r6, r0, #0x124 - mov r4, r7 - mov r5, #1 -_022F9A8C: - ldrb r0, [r6, r7, lsl #3] - add r8, r6, r7, lsl #3 - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022F9AE4 - ldrh r1, [r8, #2] - mov r0, r8 - bic r1, r1, #8 - strh r1, [r8, #2] - ldrh r1, [r8, #2] - bic r1, r1, #0x10 - strh r1, [r8, #2] - ldrh r1, [r8, #2] - bic r1, r1, #0x40 - strh r1, [r8, #2] - ldrh r1, [r8, #2] - orr r1, r1, #4 - strh r1, [r8, #2] - bl GetMaxPpWrapper - strb r0, [r8, #6] -_022F9AE4: - add r7, r7, #1 - cmp r7, #4 - blt _022F9A8C - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end RestorePpAllMovesSetFlags - - arm_func_start ov29_022F9AF4 -ov29_022F9AF4: ; 0x022F9AF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r1, [sb, #0xb4] - mov r5, #0 - ldrb r8, [r1, #6] - bl ov29_022F87C0 - cmp r0, #0 - moveq r0, r5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mvn r7, #0 - mov r4, r7 -_022F9B20: - mov r6, r4 -_022F9B24: - ldrsh r0, [sb, #4] - ldrsh r1, [sb, #6] - add r0, r0, r6 - add r1, r1, r7 - bl GetTileSafe - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _022F9B60 - ldr r0, [r1] - cmp r0, #1 - bne _022F9B60 - ldr r0, [r1, #0xb4] - ldrb r0, [r0, #6] - cmp r8, r0 - addne r5, r5, #1 -_022F9B60: - add r6, r6, #1 - cmp r6, #1 - ble _022F9B24 - add r7, r7, #1 - cmp r7, #1 - ble _022F9B20 - cmp r5, #2 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022F9AF4 - - arm_func_start ov29_022F9B8C -ov29_022F9B8C: ; 0x022F9B8C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x4c - mov r2, #0 - mov r1, #1 - mov r4, r0 - strb r2, [sp, #4] - strb r1, [sp, #5] - str r2, [sp] - ldrsh r1, [r4, #2] - add r0, sp, #8 - add r3, sp, #4 - bl sub_02052E2C - ldrsh r0, [r4, #2] - mov r1, #0 - mov r2, #6 - strh r0, [sp, #0xc] - ldrb r0, [r4, #0xa] - strb r0, [sp, #9] - ldrsh r0, [r4, #0xe] - strh r0, [sp, #0x10] - ldrb r0, [r4, #0x1a] - strb r0, [sp, #0x14] - ldrb r0, [r4, #0x1c] - strb r0, [sp, #0x16] - ldrb r0, [r4, #0x48] - strb r0, [sp, #0xa] - ldrb r0, [r4, #0x49] - strb r0, [sp, #0xb] - add r0, sp, #8 -_022F9C00: - mla lr, r1, r2, r0 - add r3, r4, r1, lsl #3 - ldrb ip, [r3, #0x124] - add r3, r3, #0x100 - add r1, r1, #1 - strb ip, [lr, #0x22] - ldrh r3, [r3, #0x28] - cmp r1, #4 - strh r3, [lr, #0x24] - blt _022F9C00 - bl GetMonsterEvoStatus - add sp, sp, #0x4c - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_022F9B8C - - arm_func_start CheckTeamMemberIdx__022F9C34 -CheckTeamMemberIdx__022F9C34: ; 0x022F9C34 - ldr ip, _022F9C3C ; =CheckTeamMemberIdx__02056228 - bx ip - .align 2, 0 -_022F9C3C: .word CheckTeamMemberIdx__02056228 - arm_func_end CheckTeamMemberIdx__022F9C34 - - arm_func_start ov29_022F9C40 -ov29_022F9C40: ; 0x022F9C40 - ldr ip, _022F9C48 ; =sub_02056264 - bx ip - .align 2, 0 -_022F9C48: .word sub_02056264 - arm_func_end ov29_022F9C40 - - arm_func_start ov29_022F9C4C -ov29_022F9C4C: ; 0x022F9C4C - stmdb sp!, {r3, lr} - ldr r0, [r0, #0xb4] - ldrsh r0, [r0, #0xc] - bl GetActiveTeamMember - ldrsh r0, [r0, #8] - bl sub_02056264 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F9C4C - - arm_func_start IsMonsterIdInNormalRange__022F9C68 -IsMonsterIdInNormalRange__022F9C68: ; 0x022F9C68 - ldr ip, _022F9C70 ; =IsMonsterIdInNormalRange__02056294 - bx ip - .align 2, 0 -_022F9C70: .word IsMonsterIdInNormalRange__02056294 - arm_func_end IsMonsterIdInNormalRange__022F9C68 - - arm_func_start ov29_022F9C74 -ov29_022F9C74: ; 0x022F9C74 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022F9E80 - ldr r5, [r6, #0xb4] - ldrb r0, [r5, #0x103] - cmp r0, #0 - beq _022F9E78 - mov r0, r6 - bl GetTileAtEntity - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - bne _022F9D50 - ldr r0, _022F9E88 ; =0x02353538 - ldr r1, _022F9E8C ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - bne _022F9D34 - ldrb r0, [r5, #0xc4] - cmp r0, #1 - bne _022F9CF0 - mov r0, r6 - mov r1, r6 - mov r2, #1 - bl EndFrozenClassStatus -_022F9CF0: - ldrsh r0, [r5, #2] - bl GetMobilityType - cmp r0, #4 - ldrnesh r1, [r5, #2] - ldrne r0, _022F9E90 ; =0x00000115 - cmpne r1, r0 - cmpne r1, #0x92 - ldrneb r0, [r5, #0xbf] - cmpne r0, #1 - beq _022F9E78 - mov r3, #0 - mov r0, r6 - mov r1, r6 - mov r2, #1 - str r3, [sp] - bl TryInflictBurnStatus - b _022F9E78 -_022F9D34: - ldrb r0, [r5, #0xbf] - cmp r0, #1 - bne _022F9E78 - mov r0, r6 - mov r1, r6 - bl ov29_023061A8 - b _022F9E78 -_022F9D50: - cmp r0, #0 - bne _022F9E78 - ldrb r0, [r5, #7] - cmp r0, #0 - beq _022F9E78 - add r0, r5, #0x100 - ldrh r1, [r0, #0x48] - ldrh r4, [r0, #0x46] - sub r3, sp, #4 - strh r1, [sp, #0xa] - mov r0, r1 - strh r4, [r3] - strh r0, [r3, #2] - ldr r1, _022F9E94 ; =0x02352768 - ldr r0, [r3] - ldrh r2, [r1] - strh r4, [sp, #8] - strh r2, [r3] - ldrh r1, [r1, #2] - strh r1, [r3, #2] - ldr r1, [r3] - bl SubFixedPoint - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r1, [sp, #4] - add r0, r5, #0x100 - ldrh r3, [sp, #6] - strh r1, [r0, #0x46] - ldrh r2, [sp, #8] - strh r3, [r0, #0x48] - sub r0, sp, #4 - ldrh r1, [sp, #0xa] - strh r2, [r0] - mov r4, #0 - strh r1, [r0, #2] - ldr r0, [r0] - bl CeilFixedPoint - cmp r0, #0x14 - blt _022F9E18 - add r0, r5, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0x14 - ldrlt r4, _022F9E98 ; =0x00000C1A -_022F9E18: - ldrh r1, [sp, #8] - ldrh r0, [sp, #0xa] - sub r2, sp, #4 - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0xa - blt _022F9E64 - add r0, r5, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0xa - ldrlt r4, _022F9E9C ; =0x00000C1B -_022F9E64: - cmp r4, #0 - beq _022F9E78 - mov r0, r6 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUser -_022F9E78: - mov r0, #0 - strb r0, [r5, #0x103] -_022F9E80: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_022F9E88: .word 0x02353538 -_022F9E8C: .word 0x020A1AE8 -_022F9E90: .word 0x00000115 -_022F9E94: .word 0x02352768 -_022F9E98: .word 0x00000C1A -_022F9E9C: .word 0x00000C1B - arm_func_end ov29_022F9C74 - - arm_func_start ov29_022F9EA0 -ov29_022F9EA0: ; 0x022F9EA0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r1, #0x6f - ldr r4, [r5, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - bne _022F9FEC - ldrb r0, [r4, #7] - cmp r0, #0 - bne _022F9FBC - mov r0, r5 - mov r1, #0x11 - bl HasHeldItem - cmp r0, #0 - bne _022F9EF4 - mov r0, r5 - mov r1, #0x32 - bl HasHeldItem - cmp r0, #0 - beq _022F9F60 -_022F9EF4: - mov r0, #0xa - bl sub_02050FF8 - add r1, r4, #0x100 - ldrh r2, [r1, #0x46] - sub r3, sp, #4 - strh r0, [sp, #8] - strh r2, [r3] - ldrh r1, [r1, #0x48] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xa] - strh r1, [r3, #2] - ldrh r2, [sp, #8] - ldr r0, [r3] - ldrh r1, [sp, #0xa] - strh r2, [r3] - strh r1, [r3, #2] - ldr r1, [r3] - bl SubFixedPoint - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r2, [sp, #4] - add r0, r4, #0x100 - ldrh r1, [sp, #6] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] - b _022F9F9C -_022F9F60: - mov r0, r5 - mov r1, #0x22 - bl HasHeldItem - cmp r0, #0 - beq _022F9F9C - mov r0, #0 - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r2, [sp] - add r0, r4, #0x100 - ldrh r1, [sp, #2] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] -_022F9F9C: - ldr r0, _022FA028 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x78d] - cmp r0, #0 - beq _022F9FEC - mov r0, r5 - bl UpdateStatusIconFlags - b _022F9FEC -_022F9FBC: - ldrsh r1, [r4, #0x66] - ldrsh r0, [r4, #0x68] - cmp r0, r1 - beq _022F9FEC - cmp r1, #0x18 - cmpne r0, #0x18 - cmpne r1, #0xe - cmpne r0, #0xe - bne _022F9FEC - mov r0, #1 - bl ov29_022E2EC4 - bl ov29_02339CE8 -_022F9FEC: - ldrsh r1, [r4, #0x68] - ldrsh r0, [r4, #0x66] - cmp r1, r0 - beq _022FA000 - bl ov29_02307DD0 -_022FA000: - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrnesh r0, [r4, #0x66] - moveq r0, #0 - strh r0, [r4, #0x68] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022FA028: .word 0x02353538 - arm_func_end ov29_022F9EA0 - - arm_func_start ov29_022FA02C -ov29_022FA02C: ; 0x022FA02C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x90 - mov sl, r0 - mov r3, r1 - ldrsh r1, [sl, #2] - mov sb, r2 - add r0, sp, #4 - mov r2, r3 - bl GetLearnableIqSkills - mov r6, r0 - ldrsh r1, [sl, #2] - ldrsh r2, [sl, #0xe] - add r0, sp, #0x49 - bl GetLearnableIqSkills - mov r7, r0 - bl ov29_0234B034 - mov r1, #0 - mov r2, sl - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r8, #1 - add r5, sp, #4 - mov r4, r8 - mov fp, #0 -_022FA090: - mov r1, #0 - mov r2, r1 - mov r3, r1 - b _022FA0B4 -_022FA0A0: - ldrb r0, [r5, r3] - cmp r0, r8 - moveq r1, r4 - beq _022FA0BC - add r3, r3, #1 -_022FA0B4: - cmp r3, r6 - blt _022FA0A0 -_022FA0BC: - mov r3, fp - b _022FA0DC -_022FA0C4: - add r0, r5, r3 - ldrb r0, [r0, #0x45] - cmp r8, r0 - moveq r2, #1 - beq _022FA0E4 - add r3, r3, #1 -_022FA0DC: - cmp r3, r7 - blt _022FA0C4 -_022FA0E4: - cmp r1, r2 - beq _022FA12C - add r0, sl, #0x90 - and r1, r8, #0xff - bl EnableIqSkill - add r0, sl, #0x9c - and r1, r8, #0xff - bl EnableIqSkill - cmp sb, #0 - bne _022FA12C - mov r0, #4 - bl sub_02017C50 - mov r0, #0 - and r1, r8, #0xff - bl ov29_0234B084 - ldr r1, _022FA140 ; =0x00000C1C - mov r0, #0 - bl LogMessageByIdWithPopup -_022FA12C: - add r8, r8, #1 - cmp r8, #0x45 - blt _022FA090 - add sp, sp, #0x90 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FA140: .word 0x00000C1C - arm_func_end ov29_022FA02C - - arm_func_start ov29_022FA144 -ov29_022FA144: ; 0x022FA144 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r5, [r7, #0xb4] - ldr r0, _022FA1CC ; =0x000003E7 - ldrsh r4, [r5, #0xe] - mov r6, r2 - add r1, r4, r1 - strh r1, [r5, #0xe] - ldrsh r1, [r5, #0xe] - cmp r1, r0 - strgth r0, [r5, #0xe] - cmp r6, #0 - bne _022FA1B0 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrsh r0, [r5, #0xe] - cmp r4, r0 - bne _022FA1A4 - ldr r1, _022FA1D0 ; =0x00000C27 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022FA1B0 -_022FA1A4: - ldr r1, _022FA1D4 ; =0x00000C26 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser -_022FA1B0: - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl ov29_022FA02C - mov r0, r7 - bl ov29_023021F0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FA1CC: .word 0x000003E7 -_022FA1D0: .word 0x00000C27 -_022FA1D4: .word 0x00000C26 - arm_func_end ov29_022FA144 - - arm_func_start ov29_022FA1D8 -ov29_022FA1D8: ; 0x022FA1D8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0xb4] - mov r5, r1 - ldrb r1, [r4, #7] - cmp r1, #0 - beq _022FA210 - ldrsh r1, [r6, #4] - add r0, r4, #0x100 - strh r1, [r0, #0x7e] - ldrsh r1, [r6, #6] - add r1, r1, #1 - strh r1, [r0, #0x80] - b _022FA27C -_022FA210: - ldrb r1, [r4, #0x16a] - cmp r1, #0xff - beq _022FA274 - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - ldrb r2, [r4, #0x16a] - ldr r1, _022FA2E8 ; =0x0235171C - add r0, r4, #0x100 - strb r2, [r4, #0x4c] - mov r2, r2, lsl #2 - ldrsh r3, [r1, r2] - ldrsh ip, [r6, #4] - ldr r2, _022FA2EC ; =0x0235171E - mov r1, #0xff - add r3, ip, r3 - strh r3, [r0, #0x7e] - ldrb r3, [r4, #0x4c] - ldrsh ip, [r6, #6] - mov r3, r3, lsl #2 - ldrsh r2, [r2, r3] - add r2, ip, r2 - strh r2, [r0, #0x80] - strb r1, [r4, #0x16a] - b _022FA27C -_022FA274: - mov r1, r2 - bl AiMovement -_022FA27C: - add r0, r4, #0x100 - ldrsh r1, [r0, #0x7e] - cmp r1, #0 - ldreqsh r0, [r0, #0x80] - cmpeq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, #1 - bl ov29_02300818 - cmp r0, #0 - beq _022FA2B8 - mov r0, r6 - bl ov29_02300CB0 - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_022FA2B8: - add r1, r4, #0x7e - add r0, r6, #4 - add r1, r1, #0x100 - bl GetDirectionTowardsPosition - mov r1, r0 - and r0, r1, #7 - strb r0, [r4, #0x4c] - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02304A48 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FA2E8: .word 0x0235171C -_022FA2EC: .word 0x0235171E - arm_func_end ov29_022FA1D8 - - arm_func_start ov29_022FA2F0 -ov29_022FA2F0: ; 0x022FA2F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr sb, _022FA35C ; =0x02353538 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0 -_022FA308: - ldr r0, [sb] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r4, [r0, #0xb78] - mov r0, r4 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FA34C - cmp r7, #0 - ldrne r0, [r4, #0xb4] - ldrneb r0, [r0, #0xbc] - cmpne r0, #7 - bne _022FA34C - mov r0, r4 - mov r1, r8 - mov r2, r6 - bl ov29_022FA1D8 -_022FA34C: - add r5, r5, #1 - cmp r5, #0x14 - blt _022FA308 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FA35C: .word 0x02353538 - arm_func_end ov29_022FA2F0 - - arm_func_start ov29_022FA360 -ov29_022FA360: ; 0x022FA360 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, [r6, #0xb4] - and r1, r5, #7 - mov r0, r6 - strb r1, [r4, #0x4c] - bl GetSleepAnimationId - mov r1, r0 - ldrb r2, [r4, #0x4c] - mov r0, r6 - bl ov29_023049A8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_022FA360 - - arm_func_start ov29_022FA3A0 -ov29_022FA3A0: ; 0x022FA3A0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, r4 - add r0, r5, #4 - bl GetDirectionTowardsPosition - and r1, r0, #0xff - mov r0, r5 - bl ov29_022FA360 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022FA3A0 - - arm_func_start ov29_022FA3D4 -ov29_022FA3D4: ; 0x022FA3D4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _022FA414 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - mov r6, #0 - add r0, r0, #0x328 - add r5, r0, #0x12800 -_022FA3F0: - ldr r0, [r5, r6, lsl #2] - mov r1, r4 - bl ov29_022FA3A0 - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #4 - blt _022FA3F0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FA414: .word 0x02353538 - arm_func_end ov29_022FA3D4 - - arm_func_start ov29_022FA418 -ov29_022FA418: ; 0x022FA418 - stmdb sp!, {r3, lr} - bl ov29_023361D4 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov29_022EF938 - ldmia sp!, {r3, pc} - arm_func_end ov29_022FA418 - - arm_func_start ShouldMonsterHeadToStairs -ShouldMonsterHeadToStairs: ; 0x022FA430 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - bl GetStairsRoom - mov r5, r0 - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - bl GetTile - ldrb r0, [r0, #7] - cmp r5, r0 - bne _022FA514 - ldr r1, _022FA51C ; =0x02353538 - add r0, sl, #4 - ldr r1, [r1] - add r1, r1, #0xe4 - add r1, r1, #0xcc00 - bl GetChebyshevDistance - ldr r7, _022FA520 ; =0x00002710 - ldr r4, _022FA51C ; =0x02353538 - mov r6, r0 - mov r8, #0 -_022FA480: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FA4E8 - mov r0, sl - mov r1, sb - bl ov29_023018AC - cmp r0, #1 - bne _022FA4E8 - ldrsh r0, [sb, #4] - ldrsh r1, [sb, #6] - bl GetTile - ldrb r0, [r0, #7] - cmp r5, r0 - bne _022FA4E8 - ldr r1, [r4] - add r0, sb, #4 - add r1, r1, #0xe4 - add r1, r1, #0xcc00 - bl GetChebyshevDistance - cmp r0, r7 - movlt r7, r0 -_022FA4E8: - add r8, r8, #1 - cmp r8, #0x14 - blt _022FA480 - ldr r0, _022FA520 ; =0x00002710 - cmp r7, r0 - beq _022FA50C - beq _022FA514 - cmp r7, r6 - ble _022FA514 -_022FA50C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_022FA514: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FA51C: .word 0x02353538 -_022FA520: .word 0x00002710 - arm_func_end ShouldMonsterHeadToStairs - - arm_func_start ov29_022FA524 -ov29_022FA524: ; 0x022FA524 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _022FA570 ; =0x02353538 - mov r5, #0 -_022FA530: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FA560 - ldr r1, [r6, #0xb4] - mov r0, r6 - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 -_022FA560: - add r5, r5, #1 - cmp r5, #0x14 - blt _022FA530 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FA570: .word 0x02353538 - arm_func_end ov29_022FA524 - - arm_func_start ov29_022FA574 -ov29_022FA574: ; 0x022FA574 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xb4] - mov r1, r4 - add r0, r0, #0x124 - bl sub_0201405C - cmp r0, #0 - bne _022FA5B4 - ldr r1, _022FA5E4 ; =0x00000C1D - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_022FA5B4: - cmp r0, #1 - bne _022FA5CC - ldr r1, _022FA5E8 ; =0x00000C1E - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_022FA5CC: - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _022FA5EC ; =0x00000C1F - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FA5E4: .word 0x00000C1D -_022FA5E8: .word 0x00000C1E -_022FA5EC: .word 0x00000C1F - arm_func_end ov29_022FA574 - - arm_func_start MewSpawnCheck -MewSpawnCheck: ; 0x022FA5F0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl CanMonsterSpawn - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r5, #0x97 - bne _022FA63C - ldr r0, _022FA644 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3000 - ldrb r0, [r0, #0xe39] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_022FA63C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FA644: .word 0x02353538 - arm_func_end MewSpawnCheck - - arm_func_start ov29_022FA648 -ov29_022FA648: ; 0x022FA648 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, #0 - mov r6, #1 - mov fp, r6 - mov r5, r7 -_022FA65C: - ldr r0, _022FA74C ; =0x02353538 - ldr r0, [r0] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FA730 - ldr sl, [r8, #0xb4] - ldrb r1, [sl, #7] - ldrsh r0, [sl, #0xc] - cmp r1, #0 - beq _022FA6C4 - strb r6, [sl, #0x165] - bl ov29_022E8104 - bl ov29_022E81F8 - bl ov29_022E0A04 - cmp r0, #1 - mov r0, r8 - bne _022FA6B8 - bl ov29_022E68D8 - b _022FA6BC -_022FA6B8: - bl ov29_022E68BC -_022FA6BC: - strb r5, [r8, #0x20] - b _022FA730 -_022FA6C4: - cmp r0, #0 - blt _022FA730 - mov sb, #0 - bl GetActiveTeamMember - mov r4, r0 - bl ov29_022E0A04 - cmp r0, #0 - movne sb, #1 - bne _022FA70C - ldrsh r0, [r4, #8] - bl sub_02056264 - cmp r0, #0 - movne sb, #1 - bne _022FA70C - ldrsh r0, [r4, #8] - bl IsMonsterIdInNormalRange__02056294 - cmp r0, #0 - movne sb, #1 -_022FA70C: - cmp sb, #0 - beq _022FA730 - strb fp, [sl, #0x165] - bl ov29_022E8104 - bl ov29_022E81F8 - mov r0, r8 - bl ov29_022E68BC - mov r0, #0 - strb r0, [r8, #0x20] -_022FA730: - add r7, r7, #1 - cmp r7, #4 - blt _022FA65C - mov r0, #0x1e - mov r1, #0x4a - bl ov29_022EA370 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FA74C: .word 0x02353538 - arm_func_end ov29_022FA648 - - arm_func_start ov29_022FA750 -ov29_022FA750: ; 0x022FA750 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r6, #0 - ldr r4, _022FA7D8 ; =0x02353538 - mov r5, r6 -_022FA760: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FA7C8 - ldr sb, [r8, #0xb4] - mov r7, r5 -_022FA788: - ldr r0, [r4] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] - mov r0, sl - bl EntityIsValid__022F7364 - cmp r0, #0 - cmpne r8, sl - beq _022FA7BC - ldrh r1, [sb, #0x80] - ldrh r0, [sl, #0x26] - cmp r1, r0 - streq sl, [sb, #0x84] -_022FA7BC: - add r7, r7, #1 - cmp r7, #0x14 - blt _022FA788 -_022FA7C8: - add r6, r6, #1 - cmp r6, #0x14 - blt _022FA760 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FA7D8: .word 0x02353538 - arm_func_end ov29_022FA750 - - arm_func_start ov29_022FA7DC -ov29_022FA7DC: ; 0x022FA7DC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - mov r2, #0x16 - mov r3, #1 - mov r6, r0 - ldr r4, [r5, #0xb4] - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA81C - ldrb r0, [r4, #0xbf] - cmp r0, #4 - bne _022FA81C - mov r0, r6 - mov r1, r5 - bl ov29_023061A8 -_022FA81C: - mov r0, r6 - mov r1, r5 - mov r2, #0x40 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA850 - ldrb r0, [r4, #0xd0] - cmp r0, #2 - bne _022FA850 - mov r0, r6 - mov r1, r5 - bl EndCringeClassStatus -_022FA850: - mov r0, r6 - mov r1, r5 - mov r2, #0x42 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA884 - ldrb r0, [r4, #0xbf] - cmp r0, #1 - bne _022FA884 - mov r0, r6 - mov r1, r5 - bl ov29_023061A8 -_022FA884: - mov r0, r6 - mov r1, r5 - mov r2, #0x29 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA8B8 - ldrb r0, [r4, #0xd0] - cmp r0, #7 - bne _022FA8B8 - mov r0, r6 - mov r1, r5 - bl EndCringeClassStatus -_022FA8B8: - mov r0, r6 - mov r1, r5 - mov r2, #0x36 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - bne _022FA8F0 - mov r0, r6 - mov r1, r5 - mov r2, #0x49 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA924 -_022FA8F0: - mov r0, r5 - bl ov29_023007A8 - cmp r0, #0 - bne _022FA90C - ldrb r0, [r4, #0xbd] - cmp r0, #4 - bne _022FA924 -_022FA90C: - mov r3, #1 - mov r0, r6 - mov r1, r5 - mov r2, #0 - str r3, [sp] - bl ov29_02305FDC -_022FA924: - mov r0, r6 - mov r1, r5 - mov r2, #0x41 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA95C - ldrb r0, [r4, #0xc4] - cmp r0, #1 - bne _022FA95C - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl EndFrozenClassStatus -_022FA95C: - mov r0, r6 - mov r1, r5 - mov r2, #0x45 - mov r3, #1 - bl DefenderAbilityIsActive__022F96CC - cmp r0, #0 - beq _022FA998 - ldrb r0, [r4, #0xbf] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _022FA998 - mov r0, r6 - mov r1, r5 - bl ov29_023061A8 -_022FA998: - mov r0, r5 - mov r1, #0x25 - bl AbilityIsActive2 - cmp r0, #0 - beq _022FA9CC - mov r0, #0 - strb r0, [r4, #0xff] - ldrb r0, [r4, #0xd5] - cmp r0, #0xc - bne _022FA9CC - mov r0, r6 - mov r1, r5 - bl ov29_023064F4 -_022FA9CC: - mov r0, r5 - mov r1, #0x2b - bl AbilityIsActive2 - cmp r0, #0 - beq _022FA9FC - ldrb r0, [r4, #0xc4] - cmp r0, #2 - bne _022FA9FC - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl EndFrozenClassStatus -_022FA9FC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_022FA7DC - - arm_func_start ov29_022FAA04 -ov29_022FAA04: ; 0x022FAA04 - ldr ip, [r0, #0xb4] - mov r3, #0 -_022FAA0C: - add r2, ip, r3, lsl #3 - ldrb r0, [r2, #0x124] - add r3, r3, #1 - cmp r3, #4 - bic r0, r0, #0x10 - strb r0, [r2, #0x124] - blt _022FAA0C - ldrb r0, [ip, #0x144] - bic r0, r0, #0x10 - strb r0, [ip, #0x144] - ldrh r0, [r1, #4] - cmp r0, #0x160 - ldreqb r0, [ip, #0x144] - orreq r0, r0, #0x10 - streqb r0, [ip, #0x144] - ldrneb r0, [r1] - orrne r0, r0, #0x10 - strneb r0, [r1] - bx lr - arm_func_end ov29_022FAA04 - - arm_func_start ov29_022FAA58 -ov29_022FAA58: ; 0x022FAA58 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r1, _022FAC90 ; =0x02353538 - mov sl, r0 - ldr r0, [r1] - mov r6, #0 - add r0, r0, #0x328 - add r4, r0, #0x12800 -_022FAA78: - ldr r5, [r4, r6, lsl #2] - mov r0, r5 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FAB98 - mov r0, r5 - mov r1, #0x37 - bl IqSkillIsEnabled - cmp r0, #0 - beq _022FAB98 - ldr sb, [r5, #0xb4] - mov r8, #0 - mov r7, r8 - add fp, sb, #0x124 -_022FAAB0: - ldrb r1, [fp, r7, lsl #3] - add r0, fp, r7, lsl #3 - str r0, [sp] - tst r1, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022FAB00 - ldr r0, [sp] - bl GetMaxPpWrapper - ldr r1, [sp] - ldrb r1, [r1, #6] - cmp r1, r0 - beq _022FAB00 - add r0, r8, #1 - mov r1, r0, lsl #0x10 - mov r2, r8, lsl #1 - add r0, sp, #4 - strh r7, [r0, r2] - mov r8, r1, asr #0x10 -_022FAB00: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022FAAB0 - cmp r8, #0 - ble _022FAB4C - mov r0, r8 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - add r1, sp, #4 - mov r0, r0, asr #0xf - ldrsh r0, [r1, r0] - add r1, sb, #0x124 - add r1, r1, r0, lsl #3 - ldrb r0, [r1, #6] - add r0, r0, #1 - strb r0, [r1, #6] - b _022FAB54 -_022FAB4C: - mov r0, #0 - b _022FAB58 -_022FAB54: - mov r0, #1 -_022FAB58: - cmp r0, #0 - beq _022FAB98 - mov r0, r5 - bl ov29_022E4964 - cmp sl, #0 - bne _022FAB98 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, #0x37 - bl ov29_0234B084 - mov r0, r5 - mov r1, #0xc20 - bl LogMessageByIdWithPopupCheckUser -_022FAB98: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #4 - blt _022FAA78 - mov r8, #0 - mov fp, r8 -_022FABB4: - ldr sb, [r4, r8, lsl #2] - mov r0, sb - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FAC74 - ldr r6, [sb, #0xb4] - mov r7, fp - add r5, r6, #0x124 - b _022FABFC -_022FABD8: - add r0, r5, r7, lsl #3 - bl GetMaxPp - add r1, r6, r7, lsl #3 - ldrb r1, [r1, #0x12a] - cmp r1, r0 - blt _022FAC04 - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022FABFC: - cmp r7, #4 - blt _022FABD8 -_022FAC04: - cmp r7, #4 - beq _022FAC74 - mov r0, sb - mov r1, #0x47 - bl ExclusiveItemEffectIsActive__022FAC98 - cmp r0, #0 - beq _022FAC74 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, sb - mov r1, #0x47 - add r2, sp, #0xc - bl ov29_0230F654 - mov r0, #1 - add r1, sp, #0xc - bl ov29_02344B44 - cmp sl, #0 - bne _022FAC60 - ldr r1, _022FAC94 ; =0x00000C23 - mov r0, sb - bl LogMessageByIdWithPopupCheckUser -_022FAC60: - mov r0, sb - mov r1, sb - mov r2, #1 - mov r3, sl - bl RestoreMovePP -_022FAC74: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022FABB4 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FAC90: .word 0x02353538 -_022FAC94: .word 0x00000C23 - arm_func_end ov29_022FAA58 - - arm_func_start ExclusiveItemEffectIsActive__022FAC98 -ExclusiveItemEffectIsActive__022FAC98: ; 0x022FAC98 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__022FAC98 - - arm_func_start ov29_022FACBC -ov29_022FACBC: ; 0x022FACBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - ldr r1, _022FAD44 ; =0x02353538 - mov sb, r0 - ldr r0, [r1] - mov r8, #0 - add r0, r0, #0x328 - ldr r5, _022FAD48 ; =0x000003E7 - add r7, r0, #0x12800 - mov r4, r8 - mov r6, #0x48 -_022FACE8: - ldr sl, [r7, r8, lsl #2] - mov r0, sl - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FAD28 - mov r0, sl - mov r1, r6 - bl ExclusiveItemEffectIsActive__022FAC98 - cmp r0, #0 - beq _022FAD28 - mov r0, sl - mov r1, sl - mov r2, r5 - mov r3, r4 - str sb, [sp] - bl TryIncreaseHp -_022FAD28: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022FACE8 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FAD44: .word 0x02353538 -_022FAD48: .word 0x000003E7 - arm_func_end ov29_022FACBC - - arm_func_start ov29_022FAD4C -ov29_022FAD4C: ; 0x022FAD4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _022FAF00 ; =0x02353538 - mov r8, #0 - ldr r1, [r1] - sub r3, r8, #1 - add r2, r1, #0xcc00 - ldrsh r4, [r2, #0xe4] - add r1, r1, #0x328 - add r5, r1, #0x12800 - cmp r4, r3 - ldreqsh r1, [r2, #0xe6] - mov sb, r0 - moveq r0, r3 - cmpeq r1, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r7, #0 - mov r4, #0x1a - b _022FADE4 -_022FAD94: - ldr r6, [r5, r7, lsl #2] - mov r0, r6 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FADD8 - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #0x48] - cmp r0, #0xd9 - blo _022FADC0 - cmp r0, #0xe4 - blo _022FADD8 -_022FADC0: - mov r0, r6 - mov r1, r4 - bl IqSkillIsEnabled - cmp r0, #0 - movne r8, #1 - bne _022FADEC -_022FADD8: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022FADE4: - cmp r7, #4 - blt _022FAD94 -_022FADEC: - cmp r8, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl GetFloorType - cmp r0, #0 - bne _022FAEEC - cmp sb, #0 - bne _022FAE14 - ldr r1, _022FAF04 ; =0x00000C21 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_022FAE14: - bl GetLeader - mov r5, r0 - add r0, sp, #0 - add r1, sp, #2 - mov r4, #0 - bl ov29_023363C0 - ldrsh r1, [sp] - ldrsh r3, [r5, #4] - ldrsh r2, [sp, #2] - cmp r3, r1 - ldreqsh r0, [r5, #6] - cmpeq r0, r2 - cmp r3, r1 - bne _022FAE58 - ldrsh r0, [r5, #6] - cmp r0, r2 - movlt r4, #0 -_022FAE58: - cmp r3, r1 - ldrltsh r0, [r5, #6] - cmplt r0, r2 - movlt r4, #1 - cmp r3, r1 - bge _022FAE7C - ldrsh r0, [r5, #6] - cmp r0, r2 - moveq r4, #2 -_022FAE7C: - cmp r3, r1 - bge _022FAE90 - ldrsh r0, [r5, #6] - cmp r0, r2 - movgt r4, #3 -_022FAE90: - cmp r3, r1 - bne _022FAEA4 - ldrsh r0, [r5, #6] - cmp r0, r2 - movgt r4, #4 -_022FAEA4: - cmp r3, r1 - ldrgtsh r0, [r5, #6] - cmpgt r0, r2 - movgt r4, #5 - cmp r3, r1 - ble _022FAEC8 - ldrsh r0, [r5, #6] - cmp r0, r2 - moveq r4, #6 -_022FAEC8: - cmp r3, r1 - ble _022FAEDC - ldrsh r0, [r5, #6] - cmp r0, r2 - movlt r4, #7 -_022FAEDC: - mov r0, r5 - mov r1, r4 - bl ov29_022E6928 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FAEEC: - bl GetFloorType - cmp r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl GetFloorType - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FAF00: .word 0x02353538 -_022FAF04: .word 0x00000C21 - arm_func_end ov29_022FAD4C - - arm_func_start ov29_022FAF08 -ov29_022FAF08: ; 0x022FAF08 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _022FAFC8 ; =0x02353538 - mov r6, r0 - ldr r0, [r1] - mov r5, #0 - add r0, r0, #0x328 - add r8, r0, #0x12800 - bl ov29_022E0880 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov sb, r5 - mov r7, #0x36 - b _022FAF74 -_022FAF3C: - ldr r4, [r8, sb, lsl #2] - mov r0, r4 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FAF68 - mov r0, r4 - mov r1, r7 - bl IqSkillIsEnabled - cmp r0, #0 - movne r5, #1 - bne _022FAF7C -_022FAF68: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_022FAF74: - cmp sb, #4 - blt _022FAF3C -_022FAF7C: - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _022FAFC8 ; =0x02353538 - ldr r0, _022FAFCC ; =0x00012AF8 - ldr r1, [r1] - ldrsh r1, [r1, r0] - cmp r1, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #0 - bl ov29_0234B09C - ldr r1, _022FAFD0 ; =0x00000C22 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x78 - mov r1, #0xa - bl ov29_022EA370 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FAFC8: .word 0x02353538 -_022FAFCC: .word 0x00012AF8 -_022FAFD0: .word 0x00000C22 - arm_func_end ov29_022FAF08 - - arm_func_start ov29_022FAFD4 -ov29_022FAFD4: ; 0x022FAFD4 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_022FAFD4 - - arm_func_start GetTeamMemberWithIqSkill -GetTeamMemberWithIqSkill: ; 0x022FAFF8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _022FB060 ; =0x02353538 - mov r4, #0 - ldr r1, [r1] - mov r5, r0 - add r0, r1, #0x328 - mov r7, r4 - add r6, r0, #0x12800 - b _022FB050 -_022FB01C: - ldr r0, [r6, r7, lsl #2] - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FB044 - ldr r0, [r6, r7, lsl #2] - mov r1, r5 - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r4, [r6, r7, lsl #2] - bne _022FB058 -_022FB044: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022FB050: - cmp r7, #4 - blt _022FB01C -_022FB058: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FB060: .word 0x02353538 - arm_func_end GetTeamMemberWithIqSkill - - arm_func_start TeamMemberHasEnabledIqSkill -TeamMemberHasEnabledIqSkill: ; 0x022FB064 - stmdb sp!, {r3, lr} - bl GetTeamMemberWithIqSkill - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end TeamMemberHasEnabledIqSkill - - arm_func_start TeamLeaderIqSkillIsEnabled -TeamLeaderIqSkillIsEnabled: ; 0x022FB080 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetLeader - mov r1, r4 - bl IqSkillIsEnabled - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end TeamLeaderIqSkillIsEnabled - - arm_func_start ov29_022FB0A8 -ov29_022FB0A8: ; 0x022FB0A8 - stmdb sp!, {r3, lr} - ldr ip, [r0, #0xb4] - mov r0, #0 - mov lr, r0 - mov r2, r0 - mov r3, #1 -_022FB0C0: - add r1, ip, lr, lsl #3 - ldrb r1, [r1, #0x124] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _022FB0F4 - add r1, ip, lr, lsl #3 - ldrb r1, [r1, #0x12a] - cmp r1, #0 - addeq r0, r0, #1 - moveq r0, r0, lsl #0x10 - moveq r0, r0, asr #0x10 -_022FB0F4: - add r1, lr, #1 - mov r1, r1, lsl #0x10 - mov lr, r1, asr #0x10 - cmp lr, #4 - blt _022FB0C0 - ldmia sp!, {r3, pc} - arm_func_end ov29_022FB0A8 - - arm_func_start ov29_022FB10C -ov29_022FB10C: ; 0x022FB10C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - ldr r6, [sb, #0xb4] - mov r7, #0 - mov sl, r0 - mov r8, r2 - add r4, r6, #0x124 - mov fp, r7 - mov r5, #1 - b _022FB198 -_022FB134: - add r0, r6, r7, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, r5 - moveq r0, fp - tst r0, #0xff - beq _022FB18C - cmp r8, #0 - beq _022FB168 - add r0, r4, r7, lsl #3 - bl ov29_02324798 - cmp r0, #0 - beq _022FB18C -_022FB168: - add r0, r4, r7, lsl #3 - bl GetMoveType - mov r2, r0 - mov r0, sb - mov r1, sl - bl ov29_0230AA8C - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_022FB18C: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022FB198: - cmp r7, #4 - blt _022FB134 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_022FB10C - - arm_func_start ov29_022FB1A8 -ov29_022FB1A8: ; 0x022FB1A8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - ldr r6, [r0, #0xb4] - mov r4, r7 - mov r5, #1 - b _022FB204 -_022FB1C0: - add r0, r6, r7, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022FB1F8 - add r0, r6, r7, lsl #3 - add r0, r0, #0x100 - ldrh r0, [r0, #0x28] - bl IsOneHitKoMove - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022FB1F8: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 -_022FB204: - cmp r7, #4 - blt _022FB1C0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FB1A8 - - arm_func_start ov29_022FB214 -ov29_022FB214: ; 0x022FB214 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x74 - mov sl, r0 - mov sb, r1 - mov r5, #0 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FB244 - mov r0, sb - bl EntityIsValid__022F7364 - cmp r0, #0 - bne _022FB24C -_022FB244: - mov r0, #0 - b _022FB508 -_022FB24C: - ldr r4, [sb, #0xb4] - ldrb r0, [r4, #6] - cmp r0, #0 - ldrsh r0, [r4, #0x66] - beq _022FB31C - cmp r0, #0 - beq _022FB504 - ldrsh r0, [r4, #0x66] - bl ov29_0231E990 - cmp r0, #0 - beq _022FB504 - mov r0, sl - add r1, r4, #0x62 - bl ov29_0231D4A4 - cmp r0, #0 - beq _022FB504 - mov r0, r5 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, sb - mov r0, #1 - mov r2, r5 - bl SubstitutePlaceholderStringTags - add r1, r4, #0x62 - mov r0, #1 - bl ov29_02344B44 - ldr r2, _022FB510 ; =0x00000C24 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldrh r2, [r4, #0x62] - mov r0, sl - add r1, r4, #0x62 - strh r2, [sp, #8] - ldrh r2, [r4, #0x64] - strh r2, [sp, #0xa] - ldrh r2, [r4, #0x66] - strh r2, [sp, #0xc] - bl ov29_0230F9A4 - add r0, r4, #0x62 - bl ItemZInit - mov r0, r5 - str sl, [sp] - add r1, sp, #8 - str r1, [sp, #4] - mov r3, sb - mov r1, r0 - mov r2, r0 - bl ApplyItemEffect - mov r5, #1 - b _022FB504 -_022FB31C: - bl ov29_0231E990 - cmp r0, #0 - beq _022FB3D4 - mov r0, sl - add r1, r4, #0x62 - bl ov29_0231D4A4 - cmp r0, #0 - beq _022FB504 - mov r0, r5 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, sb - mov r0, #1 - mov r2, r5 - bl SubstitutePlaceholderStringTags - add r1, r4, #0x62 - mov r0, #1 - bl ov29_02344B44 - ldr r2, _022FB510 ; =0x00000C24 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldrh r2, [r4, #0x62] - mov r0, sl - add r1, r4, #0x62 - strh r2, [sp, #8] - ldrh r2, [r4, #0x64] - strh r2, [sp, #0xa] - ldrh r2, [r4, #0x66] - strh r2, [sp, #0xc] - bl ov29_0230F9A4 - add r0, r4, #0x62 - bl RemoveEquivItem - add r0, r4, #0x62 - bl ItemZInit - mov r0, r5 - str sl, [sp] - add r1, sp, #8 - str r1, [sp, #4] - mov r3, sb - mov r1, r0 - mov r2, r0 - bl ApplyItemEffect - mov r5, #1 - b _022FB504 -_022FB3D4: - bl GetNbItemsInBag - mov r7, r0 - mov r6, r5 - add r4, sp, #0xe - b _022FB3F8 -_022FB3E8: - mov r0, r7 - bl RandInt - strb r0, [r4, r6] - add r6, r6, #1 -_022FB3F8: - cmp r6, r7 - blt _022FB3E8 - add r0, sp, #0xe - mov r1, #0 - add r0, r0, r7 - b _022FB418 -_022FB410: - strb r1, [r0, r1] - add r1, r1, #1 -_022FB418: - cmp r1, r7 - blt _022FB410 - mov r8, #0 - add r4, sp, #0xe - ldr fp, _022FB514 ; =0x020AF6B8 - b _022FB4FC -_022FB430: - ldrb r1, [r4, r8] - ldr r3, [fp] - mov r0, #6 - smulbb r2, r1, r0 - ldr r1, [r3, #0x384] - ldrb r0, [r1, r2] - add r6, r1, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022FB4F8 - ldrb r0, [r6, #1] - cmp r0, #0 - bne _022FB4F8 - ldrsh r0, [r6, #4] - bl ov29_0231E990 - cmp r0, #0 - beq _022FB4F8 - mov r0, sl - mov r1, r6 - bl ov29_0231D4A4 - cmp r0, #0 - beq _022FB504 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, sb - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r1, r6 - mov r0, #1 - bl ov29_02344B44 - mov r0, sl - mov r1, sb - ldr r2, _022FB518 ; =0x00000C25 - bl LogMessageByIdWithPopupCheckUserTarget - str sl, [sp] - mov r3, sb - str r6, [sp, #4] - mov r0, #0 - mov r1, r0 - mov r2, r0 - bl ApplyItemEffect - mov r0, r6 - bl RemoveEquivItem - mov r5, #1 - b _022FB504 -_022FB4F8: - add r8, r8, #1 -_022FB4FC: - cmp r8, r7, lsl #1 - blt _022FB430 -_022FB504: - mov r0, r5 -_022FB508: - add sp, sp, #0x74 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FB510: .word 0x00000C24 -_022FB514: .word 0x020AF6B8 -_022FB518: .word 0x00000C25 - arm_func_end ov29_022FB214 - - arm_func_start ov29_022FB51C -ov29_022FB51C: ; 0x022FB51C - stmdb sp!, {r3, lr} - bl GetScenarioBalance__0204CB94 - cmp r0, #2 - movhs r0, #1 - movlo r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_022FB51C - - arm_func_start ov29_022FB538 -ov29_022FB538: ; 0x022FB538 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r5, [r6, #0xb4] - mov r4, #0 - ldr r7, _022FB5E8 ; =0x02353538 - strb r4, [r5, #0x10c] - ldr r0, [r7] - add r0, r0, #0x3000 - ldrb r0, [r0, #0xe38] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - b _022FB5DC -_022FB574: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - cmpne r8, r6 - beq _022FB5D8 - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #2 - bne _022FB5D8 - mov r0, r6 - mov r1, r8 - bl ov29_022E274C - cmp r0, #0 - beq _022FB5D8 - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xd9] - cmp r0, #0 - movne r0, #2 - moveq r0, #1 - strb r0, [r5, #0x10c] - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_022FB5D8: - add r4, r4, #1 -_022FB5DC: - cmp r4, #0x14 - blt _022FB574 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FB5E8: .word 0x02353538 - arm_func_end ov29_022FB538 - - arm_func_start ov29_022FB5EC -ov29_022FB5EC: ; 0x022FB5EC - stmdb sp!, {r4, lr} - bl GetSpawnThreshold - mov r4, r0 - bl GetScenarioBalance__022E095C - cmp r4, r0 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end ov29_022FB5EC - - arm_func_start HasLowHealth -HasLowHealth: ; 0x022FB610 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__022F7364 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4] - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r3, [r4, #0xb4] - ldr r0, _022FB674 ; =0x000003E7 - ldrsh r2, [r3, #0x12] - ldrsh r1, [r3, #0x16] - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r3, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_022FB674: .word 0x000003E7 - arm_func_end HasLowHealth - - arm_func_start ov29_022FB678 -ov29_022FB678: ; 0x022FB678 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, #0 - ldr r4, _022FB6E0 ; =0x0235171C - b _022FB6D0 -_022FB690: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh r3, [r4, r1] - ldrsh ip, [r7, #4] - ldrsh r1, [r0, #2] - ldrsh r2, [r7, #6] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr r0, [r0, #0xc] - cmp r0, r6 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_022FB6D0: - cmp r5, #8 - blt _022FB690 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FB6E0: .word 0x0235171C - arm_func_end ov29_022FB678 - - arm_func_start ov29_022FB6E4 -ov29_022FB6E4: ; 0x022FB6E4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__022F9720 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0x48] - cmp r0, #0xd6 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end ov29_022FB6E4 - - arm_func_start ov29_022FB718 -ov29_022FB718: ; 0x022FB718 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr sb, [sl, #0xb4] - mov r1, #0 - mov r0, sl - strh r1, [sb, #0x16] - bl Conversion2IsActive - mov r6, r0 - mov r0, sl - mov r1, #0x38 - ldr r4, [sl, #0xb4] - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r0, _022FB834 ; =0x020A1870 - mov r8, #0 - ldrnesh r1, [r4, #0x16] - ldrnesh r0, [r0] - add r5, r4, #0x124 - mov fp, r8 - addne r0, r1, r0 - strneh r0, [r4, #0x16] - mov r4, #1 -_022FB77C: - ldrb r0, [r5, r8, lsl #3] - add r7, r5, r8, lsl #3 - tst r0, #1 - movne r0, r4 - moveq r0, fp - tst r0, #0xff - beq _022FB7C0 - ldrh r2, [r7, #2] - mov r0, sl - mov r1, #0x39 - bic r2, r2, #0x100 - strh r2, [r7, #2] - bl IqSkillIsEnabled - cmp r0, #0 - ldrneh r0, [r7, #2] - orrne r0, r0, #0x100 - strneh r0, [r7, #2] -_022FB7C0: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022FB77C - mov r0, sl - bl ov29_02348100 - cmp r6, #2 - bne _022FB7FC - mov r0, sl - bl Conversion2IsActive - cmp r0, #0 - bne _022FB7FC - mov r0, sl - bl ov29_02307CE0 -_022FB7FC: - ldrsh r1, [sb, #0x12] - ldrsh r0, [sb, #0x16] - ldr r2, _022FB838 ; =0x000003E7 - add r1, r1, r0 - cmp r1, r2 - ldrsh r0, [sb, #0x10] - movle r2, r1 - cmp r0, r2 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, _022FB838 ; =0x000003E7 - cmp r1, r0 - movgt r1, r0 - strh r1, [sb, #0x10] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FB834: .word 0x020A1870 -_022FB838: .word 0x000003E7 - arm_func_end ov29_022FB718 - - arm_func_start ov29_022FB83C -ov29_022FB83C: ; 0x022FB83C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sl, r0 - mov sb, r1 - bl EntityIsValid__022F7364 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r8, [sl, #0xb4] - mov r7, #0 - add r6, r8, #0x124 - mov r4, r7 - mov r5, #1 -_022FB868: - ldrb r0, [r6, r7, lsl #3] - mov r1, r7, lsl #3 - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022FB88C - add r0, r6, r1 - bl GetMoveBasePp -_022FB88C: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022FB868 - mov r0, sl - bl ov29_022FB718 - cmp sb, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrsh r2, [r8, #0x12] - ldrsh r1, [r8, #0x16] - ldr r0, _022FB91C ; =0x000003E7 - mov sb, #0 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r8, #0x10] - add r6, r8, #0x124 - mov r4, sb - mov r5, #1 -_022FB8DC: - ldrb r0, [r6, sb, lsl #3] - add r7, r6, sb, lsl #3 - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _022FB904 - mov r0, r7 - bl GetMaxPp - strb r0, [r7, #6] -_022FB904: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #4 - blt _022FB8DC - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FB91C: .word 0x000003E7 - arm_func_end ov29_022FB83C - - arm_func_start ov29_022FB920 -ov29_022FB920: ; 0x022FB920 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _022FB980 ; =0x02353538 - mov r5, #0 -_022FB92C: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - bl ov29_022FB718 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #4 - blt _022FB92C - mov r0, #0x41 - bl TeamMemberHasEnabledIqSkill - cmp r0, #0 - ldrne r0, _022FB980 ; =0x02353538 - movne r1, #1 - ldreq r0, _022FB980 ; =0x02353538 - moveq r1, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - strb r1, [r0, #0x241] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FB980: .word 0x02353538 - arm_func_end ov29_022FB920 - - arm_func_start ov29_022FB984 -ov29_022FB984: ; 0x022FB984 - mov r0, #0 - bx lr - arm_func_end ov29_022FB984 - - arm_func_start ov29_022FB98C -ov29_022FB98C: ; 0x022FB98C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r2, #1 - ldr r0, _022FB9B8 ; =0x0000270F - mov r4, r1 - sub r3, r2, #2 - bl ov29_022EA718 - mov r0, r5 - mov r1, r4 - bl ov29_022E576C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FB9B8: .word 0x0000270F - arm_func_end ov29_022FB98C - - arm_func_start ov29_022FB9BC -ov29_022FB9BC: ; 0x022FB9BC - stmdb sp!, {r3, lr} - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xbc] - bl ov29_022EFB04 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_022FB9BC - - arm_func_start ov29_022FB9E0 -ov29_022FB9E0: ; 0x022FB9E0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl IsMonster__022F9720 - cmp r0, #0 - beq _022FBA4C - ldr r1, [r5, #0xb4] - mov r0, #0 - add ip, r1, #0x124 - mov r2, r0 - mov r3, #1 - b _022FBA44 -_022FBA10: - ldrb r1, [ip, r0, lsl #3] - add lr, ip, r0, lsl #3 - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _022FBA38 - ldrh r1, [lr, #4] - cmp r1, r4 - ldmeqia sp!, {r3, r4, r5, pc} -_022FBA38: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -_022FBA44: - cmp r0, #4 - blt _022FBA10 -_022FBA4C: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022FB9E0 - - arm_func_start ov29_022FBA54 -ov29_022FBA54: ; 0x022FBA54 - stmdb sp!, {r3, lr} - bl ov29_022FB9E0 - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_022FBA54 - - arm_func_start ov29_022FBA70 -ov29_022FBA70: ; 0x022FBA70 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__022F9720 - cmp r0, #0 - beq _022FBAAC - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0x48] - cmp r0, #0xfa - moveq r0, #1 - ldmeqia sp!, {r4, pc} - cmp r0, #0xd9 - blo _022FBAAC - cmp r0, #0xe4 - movlo r0, #1 - ldmloia sp!, {r4, pc} -_022FBAAC: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_022FBA70 - - arm_func_start ov29_022FBAB4 -ov29_022FBAB4: ; 0x022FBAB4 - ldr r2, [r0, #0xb4] - cmp r2, #0 - addne r0, r2, #0x100 - movne r1, #0 - strneh r1, [r0, #0x92] - strne r1, [r2, #0x18c] - bx lr - arm_func_end ov29_022FBAB4 - - arm_func_start IsSpecialStoryAlly -IsSpecialStoryAlly: ; 0x022FBAD0 - ldrb r0, [r0, #0x48] - cmp r0, #0xd9 - blo _022FBAE8 - cmp r0, #0xe4 - movlo r0, #1 - bxlo lr -_022FBAE8: - mov r0, #0 - bx lr - arm_func_end IsSpecialStoryAlly - - arm_func_start IsExperienceLocked -IsExperienceLocked: ; 0x022FBAF0 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x48] - cmp r1, #0xfa - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl IsSpecialStoryAlly - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsExperienceLocked - - arm_func_start ov29_022FBB1C -ov29_022FBB1C: ; 0x022FBB1C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - ldr r4, _022FBBE4 ; =0x02353538 - ldr sl, _022FBBE8 ; =0x00019914 - mov r7, #0 - add r6, sp, #0 - mov r5, #3 -_022FBB38: - ldr r0, [r4] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FBBD0 - ldr sb, [r8, #0xb4] - ldr r2, [r4] - ldrsh r1, [sb, #4] - add r0, r8, #0x2c - add r1, r2, r1, lsl #1 - ldrsh r1, [r1, sl] - strh r1, [r8, #0xa8] - bl sub_0201C0CC - ldrsh r1, [r8, #0xa8] - add r0, r8, #0x2c - bl sub_0201C0E8 - mov r0, r8 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r8 - bl ov29_02304830 - ldrh r0, [r8, #4] - mov r2, r6 - mov r3, r5 - strh r0, [sp] - ldrh r0, [r8, #6] - strh r0, [sp, #2] - ldr r0, [sb, #0xb0] - ldrsh r1, [sb, #4] - bl ov29_022DDA54 - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - bl GetTileSafe - ldrb r0, [r0, #7] - strb r0, [r8, #0x25] -_022FBBD0: - add r7, r7, #1 - cmp r7, #0x14 - blt _022FBB38 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FBBE4: .word 0x02353538 -_022FBBE8: .word 0x00019914 - arm_func_end ov29_022FBB1C - - arm_func_start ov29_022FBBEC -ov29_022FBBEC: ; 0x022FBBEC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, #0 - ldr r6, _022FBC48 ; =0x02353538 - b _022FBC38 -_022FBC00: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FBC34 - ldr r0, [r7, #0xb4] - ldrb r0, [r0, #0xbc] - cmp r5, r0 - moveq r0, r7 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FBC34: - add r4, r4, #1 -_022FBC38: - cmp r4, #0x14 - blt _022FBC00 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FBC48: .word 0x02353538 - arm_func_end ov29_022FBBEC - - arm_func_start ov29_022FBC4C -ov29_022FBC4C: ; 0x022FBC4C - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - ldr r4, _022FBC90 ; =0x02353538 - b _022FBC80 -_022FBC5C: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - bl EntityIsValid__022F7364 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - add r5, r5, #1 -_022FBC80: - cmp r5, #4 - blt _022FBC5C - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FBC90: .word 0x02353538 - arm_func_end ov29_022FBC4C - - arm_func_start ov29_022FBC94 -ov29_022FBC94: ; 0x022FBC94 - stmdb sp!, {r4, r5, r6, lr} - bl GetBodySize - ldr r6, _022FBD04 ; =0x02353538 - mov r4, r0 - mov r5, #0 -_022FBCA8: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - bl EntityIsValid__022F7364 - cmp r0, #0 - beq _022FBCE4 - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - ldr r0, [r0, #0xb4] - ldrsh r0, [r0, #2] - bl GetBodySize - add r4, r4, r0 -_022FBCE4: - add r5, r5, #1 - cmp r5, #4 - blt _022FBCA8 - cmp r4, #6 - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FBD04: .word 0x02353538 - arm_func_end ov29_022FBC94 - - arm_func_start ov29_022FBD08 -ov29_022FBD08: ; 0x022FBD08 - ldr r0, _022FBD20 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x3000 - str r1, [r0, #0xe1c] - bx lr - .align 2, 0 -_022FBD20: .word 0x02353538 - arm_func_end ov29_022FBD08 - - arm_func_start ov29_022FBD24 -ov29_022FBD24: ; 0x022FBD24 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__022F9720 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _022FBD7C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1cc - add r3, r0, #0x3c00 - ldr r2, [r3, #0x50] - cmp r2, #0x14 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0xb4] - mov r0, #1 - ldr r1, [r1, #0xb0] - str r1, [r3, r2, lsl #2] - ldr r1, [r3, #0x50] - add r1, r1, #1 - str r1, [r3, #0x50] - ldmia sp!, {r4, pc} - .align 2, 0 -_022FBD7C: .word 0x02353538 - arm_func_end ov29_022FBD24 - - arm_func_start ov29_022FBD80 -ov29_022FBD80: ; 0x022FBD80 - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__022F9720 - cmp r0, #0 - beq _022FBDD4 - ldr r0, _022FBDDC ; =0x02353538 - ldr r1, [r4, #0xb4] - ldr r0, [r0] - ldr r2, [r1, #0xb0] - add r0, r0, #0x1cc - add r1, r0, #0x3c00 - ldr ip, [r1, #0x50] - mov r3, #0 - b _022FBDCC -_022FBDB8: - ldr r0, [r1, r3, lsl #2] - cmp r2, r0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r3, r3, #1 -_022FBDCC: - cmp r3, ip - blt _022FBDB8 -_022FBDD4: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FBDDC: .word 0x02353538 - arm_func_end ov29_022FBD80 - - arm_func_start ov29_022FBDE0 -ov29_022FBDE0: ; 0x022FBDE0 - ldr ip, _022FBDEC ; =ov29_022EFAE8 - ldrb r0, [r0, #0xbc] - bx ip - .align 2, 0 -_022FBDEC: .word ov29_022EFAE8 - arm_func_end ov29_022FBDE0 - - arm_func_start ov29_022FBDF0 -ov29_022FBDF0: ; 0x022FBDF0 - ldr r0, [r0, #0xb4] - ldr ip, _022FBE00 ; =ov29_022EFB04 - ldrb r0, [r0, #0xbc] - bx ip - .align 2, 0 -_022FBE00: .word ov29_022EFB04 - arm_func_end ov29_022FBDF0 - - arm_func_start ov29_022FBE04 -ov29_022FBE04: ; 0x022FBE04 - stmdb sp!, {r3, lr} - ldrb r0, [r0, #6] - cmp r0, #0 - bne _022FBE4C - ldr r0, _022FBE54 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl GetTurnLimit - ldr r1, _022FBE54 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x700 - ldrsh r1, [r1, #0x84] - cmp r1, r0 - bne _022FBE4C - bl ov29_023361D4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} -_022FBE4C: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBE54: .word 0x02353538 - arm_func_end ov29_022FBE04 - - arm_func_start ov29_022FBE58 -ov29_022FBE58: ; 0x022FBE58 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr ip, [r4, #0xb4] - mov r6, #1 - strb r6, [ip, #0x100] - ldrsh r5, [ip, #0x12] - ldrsh r3, [ip, #0x16] - ldr r7, _022FBF04 ; =0x022C5938 - mov r0, #0xc - add r5, r5, r3 - smlabb r3, r1, r0, r7 - rsb lr, r6, #0x3e8 - cmp r5, lr - movgt r5, lr - strh r5, [ip, #0x14] - mov r0, #0 - strh r0, [ip, #0x16] - strh r0, [ip, #0x18] - ldrsh r5, [r3, #2] - add lr, ip, #0x100 - add r0, ip, #0x90 - strh r5, [ip, #0x12] - ldrsh r5, [r3, #2] - strh r5, [ip, #0x10] - ldrb r5, [r3, #6] - strb r5, [ip, #0x1a] - ldrb r5, [r3, #7] - strb r5, [ip, #0x1b] - ldrb r5, [r3, #8] - strb r5, [ip, #0x1c] - ldrb r3, [r3, #9] - strb r3, [ip, #0x1d] - strh r1, [lr, #0x68] - strb r2, [ip, #0x16a] - ldrsh r1, [ip, #2] - ldrsh r2, [ip, #0xe] - bl sub_02058EB0 - mov r0, r4 - bl ov29_023021F0 - mov r0, r4 - mov r1, #1 - bl ov29_022FB83C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FBF04: .word 0x022C5938 - arm_func_end ov29_022FBE58 - - arm_func_start ov29_022FBF08 -ov29_022FBF08: ; 0x022FBF08 - stmdb sp!, {r3, lr} - ldr r0, _022FBF2C ; =0x02353538 - ldr r0, [r0] - ldr r0, [r0, #0x7cc] - sub r0, r0, #1 - cmp r0, #1 - ldmhiia sp!, {r3, pc} - bl LoadWazaP2 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBF2C: .word 0x02353538 - arm_func_end ov29_022FBF08 - - arm_func_start ov29_022FBF30 -ov29_022FBF30: ; 0x022FBF30 - stmdb sp!, {r3, lr} - ldr r0, _022FBF54 ; =0x02353538 - ldr r0, [r0] - ldr r0, [r0, #0x7cc] - sub r0, r0, #1 - cmp r0, #1 - ldmhiia sp!, {r3, pc} - bl UnloadCurrentWazaP - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBF54: .word 0x02353538 - arm_func_end ov29_022FBF30 - - arm_func_start ov29_022FBF58 -ov29_022FBF58: ; 0x022FBF58 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x218 - ldr r1, _022FC230 ; =0x02353538 - mov r0, #0 - ldr r1, [r1] - add r1, r1, #0xf4 - add r5, r1, #0x3400 - bl DungeonRngSetSecondary - bl ov29_022FBF08 - add r0, sp, #0x16 - mov r1, #0 - bl ov29_022E7BE8 - mov r4, r0 - mov r6, #0 - b _022FC028 -_022FBF94: - add r0, sp, #0x16 - add r7, r0, r6, lsl #3 - mov r0, r7 - bl GetMonsterIdFromSpawnEntry - strh r0, [r5] - mov r0, r7 - bl GetMonsterLevelFromSpawnEntry - strh r0, [r5, #2] - ldrsh r1, [r5] - ldrsh r2, [r5, #2] - add r0, r5, #4 - bl ov29_02303B18 - ldrh r0, [r5, #4] - cmp r0, #0 - moveq r0, #0x170 - streqh r0, [r5, #4] - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl ov29_022FE2FC - strh r0, [r5, #0xc] - mov r7, #0 -_022FBFE8: - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r2, r7 - add r8, r5, r7 - bl ov29_022FE350 - strb r0, [r8, #0xe] - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r2, r7 - bl ov29_022FE3B8 - add r7, r7, #1 - strb r0, [r8, #0x10] - cmp r7, #2 - blt _022FBFE8 - add r5, r5, #0x12 - add r6, r6, #1 -_022FC028: - cmp r6, r4 - blt _022FBF94 - mov r0, #0 - b _022FC040 -_022FC038: - strh r0, [r5], #0x12 - add r6, r6, #1 -_022FC040: - cmp r6, #0x40 - blt _022FC038 - cmp r4, #0x40 - bge _022FC0A8 - bl IsDestinationFloorWithFixedRoom - cmp r0, #0 - bne _022FC0A8 - bl IsDestinationFloorWithMonster - cmp r0, #0 - beq _022FC0A8 - mov r0, #0xa - bl IsCurrentMissionType - cmp r0, #0 - bne _022FC088 - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _022FC0A8 -_022FC088: - add r0, sp, #8 - bl ov29_022FE420 - add r0, sp, #0x16 - ldrsh r1, [sp, #0xc] - ldrsh r2, [sp, #8] - add r0, r0, r4, lsl #3 - bl SetMonsterLevelAndId - add r4, r4, #1 -_022FC0A8: - cmp r4, #0x40 - bge _022FC0E0 - ldr r0, _022FC230 ; =0x02353538 - ldr r2, [r0] - add r0, r2, #0x700 - ldrsh r1, [r0, #0xa8] - cmp r1, #0 - beq _022FC0E0 - ldrb r1, [r2, #0x7aa] - ldrsh r2, [r0, #0xa8] - add r3, sp, #0x16 - add r0, r3, r4, lsl #3 - bl SetMonsterLevelAndId - add r4, r4, #1 -_022FC0E0: - mov r2, #0 - ldr r1, _022FC230 ; =0x02353538 - mov sl, r2 -_022FC0EC: - ldr r0, [r1] - add r0, r0, r2 - add r0, r0, #0x3000 - add r2, r2, #1 - strb sl, [r0, #0xb74] - cmp r2, #0x258 - blt _022FC0EC - mvn r0, #0 - mov r5, #1 - str r0, [sp] - b _022FC1E8 -_022FC118: - ldr r6, [sp] - mov r8, #0 - mov r7, r6 - b _022FC194 -_022FC128: - add r0, sp, #0x16 - add sb, r0, r8, lsl #3 - mov r0, sb - bl GetMonsterIdFromSpawnEntry - mov fp, r0 - mov r0, sb - bl GetMonsterLevelFromSpawnEntry - str r0, [sp, #4] - mov r0, fp - mov r1, #0x258 - bl DivideInt - ldr r0, _022FC230 ; =0x02353538 - mov r1, r1, lsl #0x10 - ldr r0, [r0] - mov sb, r1, asr #0x10 - add r0, r0, r1, asr #16 - add r0, r0, #0x3000 - ldrb r0, [r0, #0xb74] - cmp r0, #0 - bne _022FC190 - ldr r1, [sp, #4] - mov r0, sb - bl GetExp - cmp r7, r0 - movlt r7, r0 - movlt r6, sb -_022FC190: - add r8, r8, #1 -_022FC194: - cmp r8, r4 - blt _022FC128 - cmp r6, #0 - blt _022FC1F0 - cmp r5, #0x100 - ble _022FC1C8 - ldr r0, _022FC230 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r6 - add r1, r0, #0x3000 - mov r0, #1 - strb r0, [r1, #0xb74] - b _022FC1E4 -_022FC1C8: - ldr r0, _022FC230 ; =0x02353538 - rsb r1, r5, #0x100 - ldr r0, [r0] - add r5, r5, #2 - add r0, r0, r6 - add r0, r0, #0x3000 - strb r1, [r0, #0xb74] -_022FC1E4: - add sl, sl, #1 -_022FC1E8: - cmp sl, r4 - blt _022FC118 -_022FC1F0: - ldr r1, _022FC230 ; =0x02353538 - mov r4, #0 - mov r2, #1 -_022FC1FC: - ldr r0, [r1] - add r0, r0, r4 - add r0, r0, #0x3000 - ldrb r3, [r0, #0xb74] - add r4, r4, #1 - cmp r3, #0 - streqb r2, [r0, #0xb74] - cmp r4, #0x258 - blt _022FC1FC - bl ov29_022FBF30 - bl DungeonRngSetPrimary - add sp, sp, #0x218 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC230: .word 0x02353538 - arm_func_end ov29_022FBF58 - - arm_func_start ov29_022FC234 -ov29_022FC234: ; 0x022FC234 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - ldrsh r0, [sp, #0x30] - mov sb, r1 - mov r1, #0x258 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x34] - bl DivideInt - mov r0, r1, lsl #0x10 - ldr r2, _022FC464 ; =0x02353538 - mov r4, r0, asr #0x10 - ldr r1, [r2] - mov fp, #0 - add r0, r1, #0xf4 - add r5, r0, #0x3400 - mov r3, r5 - mov r0, #0x12 - b _022FC314 -_022FC284: - mul r2, fp, r0 - ldrsh r1, [r3, r2] - add r5, r3, r2 - cmp r1, #0 - beq _022FC31C - cmp r1, r4 - ldreqsh r1, [r5, #2] - cmpeq r1, r6 - bne _022FC310 - mov r1, r4 - mov r2, r6 - add r0, r5, #4 - bl ov29_02303B18 - mov r4, #0 -_022FC2BC: - add r0, r5, r4, lsl #1 - ldrh r1, [r0, #4] - add r0, sl, r4, lsl #3 - bl GetInfoMoveCheckId - add r4, r4, #1 - cmp r4, #4 - blt _022FC2BC - ldrsh r0, [r5, #0xc] - mov r2, #0 - strh r0, [sb] -_022FC2E4: - add r1, r5, r2 - ldrb r0, [r1, #0xe] - strb r0, [r8, r2] - ldrb r0, [r1, #0x10] - strb r0, [r7, r2] - add r2, r2, #1 - cmp r2, #2 - blt _022FC2E4 - mov r0, #0 - strb r0, [sl, #0x20] - b _022FC45C -_022FC310: - add fp, fp, #1 -_022FC314: - cmp fp, #0x40 - blt _022FC284 -_022FC31C: - cmp fp, #0x40 - bne _022FC3A4 - add r0, sp, #0 - mov r1, r4 - mov r2, r6 - bl ov29_02303B18 - mov r5, #0 - add fp, sp, #0 -_022FC33C: - mov r0, r5, lsl #1 - ldrh r1, [fp, r0] - add r0, sl, r5, lsl #3 - bl GetInfoMoveCheckId - add r5, r5, #1 - cmp r5, #4 - blt _022FC33C - mov r0, r4 - mov r1, r6 - bl ov29_022FE2FC - strh r0, [sb] - mov r5, #0 -_022FC36C: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl ov29_022FE350 - strb r0, [r8, r5] - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl ov29_022FE3B8 - strb r0, [r7, r5] - add r5, r5, #1 - cmp r5, #2 - blt _022FC36C - b _022FC454 -_022FC3A4: - strh r4, [r5] - mov r1, r4 - mov r2, r6 - strh r6, [r5, #2] - add r0, r5, #4 - bl ov29_02303B18 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl ov29_022FE2FC - strh r0, [r5, #0xc] - mov r6, #0 -_022FC3D0: - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r2, r6 - add r4, r5, r6 - bl ov29_022FE350 - strb r0, [r4, #0xe] - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - mov r2, r6 - bl ov29_022FE3B8 - add r6, r6, #1 - strb r0, [r4, #0x10] - cmp r6, #2 - blt _022FC3D0 - mov r4, #0 -_022FC40C: - add r0, r5, r4, lsl #1 - ldrh r1, [r0, #4] - add r0, sl, r4, lsl #3 - bl GetInfoMoveCheckId - add r4, r4, #1 - cmp r4, #4 - blt _022FC40C - ldrsh r0, [r5, #0xc] - mov r2, #0 - strh r0, [sb] -_022FC434: - add r1, r5, r2 - ldrb r0, [r1, #0xe] - strb r0, [r8, r2] - ldrb r0, [r1, #0x10] - strb r0, [r7, r2] - add r2, r2, #1 - cmp r2, #2 - blt _022FC434 -_022FC454: - mov r0, #0 - strb r0, [sl, #0x20] -_022FC45C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC464: .word 0x02353538 - arm_func_end ov29_022FC234 - - arm_func_start ov29_022FC468 -ov29_022FC468: ; 0x022FC468 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, [sp, #0x24] - mov sb, r0 - cmp r4, #0xb - mov r0, #0 - cmp r4, #0xc - moveq r0, #1 - cmp r4, #0xd - moveq r0, #2 - cmp r4, #0xe - moveq r0, #3 - mov r8, r1 - mov r7, r2 - mov r6, r3 - ldr r5, [sp, #0x20] - bl GetExplorerMazeMonster - mov r4, r0 - mov r0, sb - add r1, r4, #0x22 - bl GroundToDungeonMoveset - ldrsh r0, [r4, #0xa] - mov r2, #0 - strh r0, [r8] -_022FC4C4: - add r1, r4, r2 - ldrb r0, [r1, #0xc] - strb r0, [r7, r2] - ldrb r0, [r1, #0xe] - strb r0, [r6, r2] - add r2, r2, #1 - cmp r2, #2 - blt _022FC4C4 - ldrsh r1, [r4, #8] - ldr r0, _022FC508 ; =0x020A1C7C - ldr r0, [r0, #0x20] - strh r1, [r5] - cmp r1, r0 - strlth r0, [r5] - mov r0, #0 - strb r0, [sb, #0x20] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FC508: .word 0x020A1C7C - arm_func_end ov29_022FC468 - - arm_func_start InitTeam -InitTeam: ; 0x022FC50C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - mov sl, r0 - mov r0, #0 - bl DungeonRngSetSecondary - ldr r0, _022FC98C ; =0x02353538 - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe0] - ldrsh r1, [r1, #0xe2] - bl GetTile - ldrb fp, [r0, #7] - mov r4, #0 -_022FC540: - mov r0, r4 - bl GetActiveTeamMember - add r1, r4, #1 - mov r1, r1, lsl #0x10 - strh r4, [r0, #0xa] - mov r4, r1, asr #0x10 - cmp r4, #4 - blt _022FC540 - mov r7, #0 - mov r6, #1 - mov r8, r7 - mov r5, r7 - mov sb, r6 - add r4, sp, #0x34 -_022FC578: - mov r0, r8 - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r2, r6 - moveq r2, r5 - tst r2, #0xff - beq _022FC5B0 - tst r1, #2 - movne r1, sb - moveq r1, #0 - tst r1, #0xff - strne r0, [r4, r7, lsl #2] - addne r7, r7, #1 -_022FC5B0: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022FC578 - mov r1, #0 - add r0, sp, #0x34 - b _022FC5D8 -_022FC5D0: - str r1, [r0, r7, lsl #2] - add r7, r7, #1 -_022FC5D8: - cmp r7, #4 - blt _022FC5D0 - mov r8, #0 - mov r7, r8 - mov r3, r8 - mov r4, #1 - mov r2, r8 - add r5, sp, #0x34 - add r1, sp, #0x24 -_022FC5FC: - ldr r6, [r5, r7, lsl #2] - cmp r6, #0 - beq _022FC628 - ldrb r0, [r6, #1] - cmp r0, #0 - movne r0, r4 - moveq r0, r3 - tst r0, #0xff - strne r6, [r1, r8, lsl #2] - strne r2, [r5, r7, lsl #2] - addne r8, r8, #1 -_022FC628: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022FC5FC - ldr r0, _022FC98C ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75c] - cmp r0, #0 - bne _022FC698 - mov r7, #0 - mov r4, r7 - add r5, sp, #0x34 - add sb, sp, #0x24 -_022FC660: - ldr r6, [r5, r7, lsl #2] - cmp r6, #0 - beq _022FC684 - ldrb r0, [r6, #3] - bl JoinedAtRangeCheck2Veneer - cmp r0, #0 - strne r6, [sb, r8, lsl #2] - strne r4, [r5, r7, lsl #2] - addne r8, r8, #1 -_022FC684: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _022FC660 -_022FC698: - mov r4, #0 - mov r2, r4 - add r1, sp, #0x24 - add r3, sp, #0x34 -_022FC6A8: - ldr r0, [r3, r4, lsl #2] - cmp r0, #0 - strne r0, [r1, r8, lsl #2] - add r0, r4, #1 - mov r0, r0, lsl #0x10 - strne r2, [r3, r4, lsl #2] - mov r4, r0, asr #0x10 - addne r8, r8, #1 - cmp r4, #4 - blt _022FC6A8 - mov r1, #0 - add r0, sp, #0x24 - b _022FC6E4 -_022FC6DC: - str r1, [r0, r8, lsl #2] - add r8, r8, #1 -_022FC6E4: - cmp r8, #4 - blt _022FC6DC - mov sb, #0 -_022FC6F0: - add r0, sp, #0x24 - ldr r5, [r0, sb, lsl #2] - mov r6, #0 - cmp r5, #0 - beq _022FC8BC - ldrsh r1, [r5, #0xc] - sub r0, r1, #0x17c - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #2 - ldrls r0, _022FC990 ; =0x0000017B - strlsh r0, [r5, #0xc] - bls _022FC74C - sub r0, r1, #0x3d4 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #2 - ldrls r0, _022FC994 ; =0x000003D3 - strlsh r0, [r5, #0xc] -_022FC74C: - mov r4, #0 -_022FC750: - ldr r0, _022FC998 ; =0x02351E28 - mov r1, r4, lsl #2 - ldrh r1, [r0, r1] - add r0, r0, r4, lsl #2 - ldrh r0, [r0, #2] - strh r1, [sp, #0x1e] - ldrsh r8, [sp, #0x1e] - strh r0, [sp, #0x20] - cmp r8, #0x63 - beq _022FC808 - ldr r0, _022FC98C ; =0x02353538 - ldrsh r7, [sp, #0x20] - ldr r0, [r0] - add r0, r0, #0xcc00 - ldrsh r1, [r0, #0xe2] - ldrsh r2, [r0, #0xe0] - add r1, r7, r1 - add r0, r8, r2 - bl GetTile - mov r1, r0 - ldrb r0, [r1, #7] - cmp r0, fp - bne _022FC800 - ldrsh r0, [r5, #0xc] - bl ov29_022FF6C4 - cmp r0, #0 - bne _022FC800 - ldr r0, _022FC98C ; =0x02353538 - mov r1, #0 - ldr r2, [r0] - mov r0, #1 - str r1, [sp] - stmib sp, {r0, r1, sl} - str r1, [sp, #0x10] - add r0, r2, #0xcc00 - ldrsh r1, [r0, #0xe0] - ldrsh r2, [r0, #0xe2] - ldrsh r0, [r5, #0xc] - mov r3, r5 - add r1, r8, r1 - add r2, r7, r2 - bl InitTeamMember - mov r6, #1 - b _022FC808 -_022FC800: - add r4, r4, #1 - b _022FC750 -_022FC808: - cmp r6, #0 - bne _022FC8BC - ldr r8, _022FC998 ; =0x02351E28 - mov r7, #0 -_022FC818: - mov r0, r7, lsl #2 - ldrh r1, [r8, r0] - add r0, r8, r7, lsl #2 - ldrh r0, [r0, #2] - strh r1, [sp, #0x14] - ldrsh r6, [sp, #0x14] - strh r0, [sp, #0x16] - cmp r6, #0x63 - beq _022FC8BC - ldr r0, _022FC98C ; =0x02353538 - ldrsh r4, [sp, #0x16] - ldr r0, [r0] - add r0, r0, #0xcc00 - ldrsh r1, [r0, #0xe2] - ldrsh r2, [r0, #0xe0] - add r1, r4, r1 - add r0, r6, r2 - bl GetTile - mov r1, r0 - ldrsh r0, [r5, #0xc] - bl ov29_022FF6C4 - cmp r0, #0 - bne _022FC8B4 - ldr r0, _022FC98C ; =0x02353538 - mov r1, #0 - ldr r2, [r0] - mov r0, #1 - str r1, [sp] - stmib sp, {r0, r1, sl} - str r1, [sp, #0x10] - add r0, r2, #0xcc00 - ldrsh r1, [r0, #0xe0] - ldrsh r2, [r0, #0xe2] - ldrsh r0, [r5, #0xc] - mov r3, r5 - add r1, r6, r1 - add r2, r4, r2 - bl InitTeamMember - b _022FC8BC -_022FC8B4: - add r7, r7, #1 - b _022FC818 -_022FC8BC: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #4 - blt _022FC6F0 - bl ov29_022FCD04 - mov r2, #0 - mov r8, r2 - add r1, sp, #0x18 -_022FC8E0: - add r0, r2, #1 - mov r0, r0, lsl #0x10 - strb r8, [r1, r2] - mov r2, r0, asr #0x10 - cmp r2, #5 - blt _022FC8E0 - ldr r4, _022FC98C ; =0x02353538 - mov r6, #0 - mov r7, #1 - add r5, sp, #0x18 -_022FC908: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - bl EntityIsValid__022FC99C - cmp r0, #0 - beq _022FC964 - ldr r0, [r4] - add r1, r8, r8, lsl #3 - add r0, r0, #0x56 - add r2, r0, #0x800 - ldrb r0, [r2, r1, lsl #6] - add r2, r2, r1, lsl #6 - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - ldrneb r1, [r2, #1] - cmpne r1, #0 - addne r0, r8, #1 - andne r0, r0, #0xff - strneb r0, [r5, r1] - strneb r0, [r2, #1] -_022FC964: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _022FC908 - add r0, sp, #0x18 - bl sub_0200F9B4 - bl DungeonRngSetPrimary - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC98C: .word 0x02353538 -_022FC990: .word 0x0000017B -_022FC994: .word 0x000003D3 -_022FC998: .word 0x02351E28 - arm_func_end InitTeam - - arm_func_start EntityIsValid__022FC99C -EntityIsValid__022FC99C: ; 0x022FC99C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022FC99C - - arm_func_start ov29_022FC9C0 -ov29_022FC9C0: ; 0x022FC9C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r0, #0 - bl DungeonRngSetSecondary - mov sl, #0 - mov r8, #1 - mov sb, sl - mov r7, sl - mov r5, sl - mov r6, r8 - ldr r4, _022FCCF0 ; =0x000055AA - b _022FCA44 -_022FC9F0: - mov r0, sb - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r2, r8 - moveq r2, r7 - tst r2, #0xff - beq _022FCA38 - tst r1, #2 - movne r1, r6 - moveq r1, r5 - tst r1, #0xff - beq _022FCA38 - ldrsh r1, [r0, #8] - cmp r1, r4 - streq r0, [sp, #0x18] - addeq sl, sl, #1 - beq _022FCA4C -_022FCA38: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_022FCA44: - cmp sb, #4 - blt _022FC9F0 -_022FCA4C: - mov r1, #0 - add r0, sp, #0x18 - b _022FCA60 -_022FCA58: - str r1, [r0, sl, lsl #2] - add sl, sl, #1 -_022FCA60: - cmp sl, #4 - blt _022FCA58 - ldr r0, _022FCCF4 ; =0x0235355C - mov r1, #0 - str r1, [r0] - bl GetLeader - mov r4, r0 - bl EntityIsValid__022FC99C - cmp r0, #0 - ldreq r0, _022FCCF8 ; =0x02353538 - ldrnesh sb, [r4, #4] - ldreq r0, [r0] - ldrnesh r8, [r4, #6] - addeq r0, r0, #0xcc00 - ldreqsh sb, [r0, #0xe0] - ldreqsh r8, [r0, #0xe2] - mov r0, sb - mov r1, r8 - bl GetTile - ldrb r4, [r0, #7] - mov sl, #0 -_022FCAB4: - add r0, sp, #0x18 - ldr r6, [r0, sl, lsl #2] - mov r7, #0 - cmp r6, #0 - beq _022FCCD0 - ldrb r0, [r6] - tst r0, #1 - movne r1, #1 - moveq r1, r7 - tst r1, #0xff - beq _022FCCD0 - tst r0, #2 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _022FCCD0 - ldrsh r1, [r6, #8] - ldr r0, _022FCCF0 ; =0x000055AA - cmp r1, r0 - bne _022FCCD0 - ldr r0, _022FCCFC ; =0x00005AA5 - ldr fp, _022FCD00 ; =0x02351E28 - mov r5, #0 - strh r0, [r6, #8] -_022FCB14: - mov r0, r5, lsl #2 - ldrh r0, [fp, r0] - add r1, fp, r5, lsl #2 - ldrh r1, [r1, #2] - strh r0, [sp, #0x14] - ldrsh r0, [sp, #0x14] - strh r1, [sp, #0x16] - cmp r0, #0x63 - beq _022FCBAC - ldrsh r1, [sp, #0x16] - add r0, r0, sb - add r1, r1, r8 - bl GetTile - mov r1, r0 - ldrb r0, [r1, #7] - cmp r0, r4 - bne _022FCBA4 - ldrsh r0, [r6, #0xc] - bl ov29_022FF6C4 - cmp r0, #0 - bne _022FCBA4 - mov r1, #0 - str r1, [sp] - mov r0, #1 - stmib sp, {r0, r1} - str r1, [sp, #0xc] - str r1, [sp, #0x10] - ldrsh r1, [sp, #0x14] - ldrsh r2, [sp, #0x16] - ldrsh r0, [r6, #0xc] - mov r3, r6 - add r1, r1, sb - add r2, r2, r8 - bl InitTeamMember - mov r7, #1 - b _022FCBAC -_022FCBA4: - add r5, r5, #1 - b _022FCB14 -_022FCBAC: - cmp r7, #0 - bne _022FCC48 - ldr fp, _022FCD00 ; =0x02351E28 - mov r5, #0 -_022FCBBC: - mov r0, r5, lsl #2 - ldrh r0, [fp, r0] - add r1, fp, r5, lsl #2 - ldrh r1, [r1, #2] - strh r0, [sp, #0x14] - ldrsh r0, [sp, #0x14] - strh r1, [sp, #0x16] - cmp r0, #0x63 - beq _022FCC48 - ldrsh r1, [sp, #0x16] - add r0, r0, sb - add r1, r1, r8 - bl GetTile - mov r1, r0 - ldrsh r0, [r6, #0xc] - bl ov29_022FF6C4 - cmp r0, #0 - bne _022FCC40 - mov r1, #0 - str r1, [sp] - mov r0, #1 - stmib sp, {r0, r1} - str r1, [sp, #0xc] - str r1, [sp, #0x10] - ldrsh r1, [sp, #0x14] - ldrsh r2, [sp, #0x16] - ldrsh r0, [r6, #0xc] - mov r3, r6 - add r1, r1, sb - add r2, r2, r8 - bl InitTeamMember - mov r7, #1 - b _022FCC48 -_022FCC40: - add r5, r5, #1 - b _022FCBBC -_022FCC48: - cmp r7, #0 - bne _022FCCD0 - mov r7, #0 - add r5, sp, #0x14 - mov fp, r7 - b _022FCCC8 -_022FCC60: - mov r0, r5 - mov r1, fp - bl ov29_022E9628 - cmp r0, #0 - beq _022FCCC4 - ldrsh r0, [sp, #0x14] - ldrsh r1, [sp, #0x16] - bl GetTile - mov r1, r0 - ldrsh r0, [r6, #0xc] - bl ov29_022FF6C4 - cmp r0, #0 - bne _022FCCC4 - mov r1, #0 - str r1, [sp] - mov r0, #1 - stmib sp, {r0, r1} - str r1, [sp, #0xc] - str r1, [sp, #0x10] - ldrsh r0, [r6, #0xc] - ldrsh r1, [sp, #0x14] - ldrsh r2, [sp, #0x16] - mov r3, r6 - bl InitTeamMember - b _022FCCD0 -_022FCCC4: - add r7, r7, #1 -_022FCCC8: - cmp r7, #0x64 - blt _022FCC60 -_022FCCD0: - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 - cmp sl, #4 - blt _022FCAB4 - bl DungeonRngSetPrimary - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FCCF0: .word 0x000055AA -_022FCCF4: .word 0x0235355C -_022FCCF8: .word 0x02353538 -_022FCCFC: .word 0x00005AA5 -_022FCD00: .word 0x02351E28 - arm_func_end ov29_022FC9C0 - - arm_func_start ov29_022FCD04 -ov29_022FCD04: ; 0x022FCD04 - stmdb sp!, {r4, r5, r6, lr} - mov r5, #0 - ldr r4, _022FCD70 ; =0x02353538 - b _022FCD64 -_022FCD14: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] - mov r0, r6 - bl EntityIsValid__022FC99C - cmp r0, #0 - ldrne r0, [r6, #0xb4] - ldrneb r0, [r0, #7] - cmpne r0, #0 - beq _022FCD60 - mov r0, r6 - bl ov29_022E2DFC - ldrh r1, [r6, #4] - ldr r0, _022FCD74 ; =0x0237C690 - strh r1, [r0] - ldrh r1, [r6, #6] - strh r1, [r0, #2] - ldmia sp!, {r4, r5, r6, pc} -_022FCD60: - add r5, r5, #1 -_022FCD64: - cmp r5, #4 - blt _022FCD14 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FCD70: .word 0x02353538 -_022FCD74: .word 0x0237C690 - arm_func_end ov29_022FCD04 - - arm_func_start ov29_022FCD78 -ov29_022FCD78: ; 0x022FCD78 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - add r0, sp, #0x24 - mov r1, #0xe - bl MemZero - mov r0, #0 - strb r0, [sp, #0x2c] - mov r7, #1 - bl IsDestinationFloorWithFixedRoom - cmp r0, #0 - bne _022FCE00 - bl IsDestinationFloorWithMonster - cmp r0, #0 - beq _022FCE00 - mov r0, #0xa - bl IsCurrentMissionType - cmp r0, #0 - bne _022FCDD0 - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _022FCDDC -_022FCDD0: - add r0, sp, #0x24 - bl ov29_022FE420 - b _022FCE34 -_022FCDDC: - bl ov29_023491A4 - ldrsh r2, [r0, #0xc] - mov r0, r7 - mov r1, #7 - strh r2, [sp, #0x24] - strb r1, [sp, #0x26] - strh r0, [sp, #0x28] - strb r0, [sp, #0x2a] - b _022FCE34 -_022FCE00: - ldr r0, _022FD080 ; =0x02353538 - ldr r2, [r0] - add r0, r2, #0x700 - ldrsh r0, [r0, #0xa8] - cmp r0, #0 - moveq r7, #0 - beq _022FCE34 - mov r1, #0 - strb r1, [sp, #0x26] - strh r0, [sp, #0x24] - ldrb r0, [r2, #0x7aa] - strh r0, [sp, #0x28] - strb r1, [sp, #0x2a] -_022FCE34: - ldr r0, _022FD080 ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - mov r0, #0x38 - add r1, r1, #0x3000 - strb r2, [r1, #0xe39] - bl DungeonRandInt - mov r6, r0 - mov r0, #0x20 - bl DungeonRandInt - mov sl, r0 - mov r0, #0 - bl DungeonRngSetSecondary - bl ov29_022FBF08 - mov sb, #0 - mov fp, sb -_022FCE74: - add sl, sl, #1 - cmp sl, #0x20 - moveq sl, #0 - mov r0, sl, lsl #0x10 - mov r5, #0 - mov r4, r0, asr #0x10 -_022FCE8C: - add r6, r6, #1 - cmp r6, #0x38 - moveq r6, #0 - mov r0, r6 - mov r1, sl - bl GetTile - ldrh r0, [r0, #2] - tst r0, #8 - beq _022FCF48 - cmp sb, #0 - mov r8, #0 - add sb, sb, #1 - bne _022FCED0 - cmp r7, #0 - beq _022FCF48 - mov r8, #1 - b _022FCEE8 -_022FCED0: - mov r0, r8 - bl GetMonsterIdToSpawn - strh r0, [sp, #0x14] - mov r0, r8 - strh r0, [sp, #0x1c] - strb r0, [sp, #0x16] -_022FCEE8: - mov r0, #0 - str r0, [sp, #0x18] - strb r0, [sp, #0x22] - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r8, #0 - strh r4, [sp, #0x20] - strh r0, [sp, #0x1e] - cmpne r7, #0 - beq _022FCF28 - strh r0, [sp, #0x2e] - mov r0, #1 - strb r0, [sp, #0x2c] - strh r4, [sp, #0x30] - mov r7, #0 - b _022FCF48 -_022FCF28: - ldrsh r0, [sp, #0x14] - mov r1, #1 - bl MewSpawnCheck - cmp r0, #0 - beq _022FCF48 - add r0, sp, #0x14 - mov r1, #0 - bl SpawnMonster -_022FCF48: - add r5, r5, #1 - cmp r5, #0x38 - blt _022FCE8C - add fp, fp, #1 - cmp fp, #0x20 - blt _022FCE74 - bl DungeonRngSetPrimary - mov r0, #0 - bl DungeonRngSetSecondary - ldrb r0, [sp, #0x2c] - cmp r0, #0 - beq _022FD060 - ldrsh r3, [sp, #0x24] - ldrb r2, [sp, #0x26] - ldrsh r1, [sp, #0x28] - ldrb r0, [sp, #0x2b] - strh r3, [sp, #4] - strb r2, [sp, #6] - strh r1, [sp, #0xc] - cmp r0, #0 - beq _022FD020 - bl IsOutlawMonsterHouseFloor - cmp r0, #0 - bne _022FCFB4 - bl IsDestinationFloorWithFleeingOutlaw - cmp r0, #0 - beq _022FCFEC -_022FCFB4: - ldr r1, _022FD080 ; =0x02353538 - add r0, sp, #0 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0xce0 - add r1, r1, #0xc000 - bl ov29_022E9A0C - cmp r0, #0 - ldrnesh r1, [sp] - ldrnesh r0, [sp, #2] - moveq r7, #1 - strneh r1, [sp, #0x2e] - strneh r0, [sp, #0x30] - b _022FD020 -_022FCFEC: - ldr r1, _022FD080 ; =0x02353538 - add r0, sp, #0 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0xce0 - add r1, r1, #0xc000 - bl ov29_022E99F0 - cmp r0, #0 - ldrnesh r1, [sp] - ldrnesh r0, [sp, #2] - moveq r7, #1 - strneh r1, [sp, #0x2e] - strneh r0, [sp, #0x30] -_022FD020: - cmp r7, #0 - bne _022FD060 - ldrsh r3, [sp, #0x2e] - ldrsh r2, [sp, #0x30] - mov r1, #0 - add r0, sp, #4 - str r1, [sp, #8] - strb r1, [sp, #0x12] - strh r3, [sp, #0xe] - strh r2, [sp, #0x10] - bl SpawnMonster - cmp r0, #0 - bne _022FD060 - ldrb r0, [sp, #0x2a] - cmp r0, #0 - movne r7, #1 -_022FD060: - cmp r7, #0 - beq _022FD070 - mov r0, #1 - bl SetTargetMonsterNotFoundFlag -_022FD070: - bl ov29_022FBF30 - bl DungeonRngSetPrimary - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FD080: .word 0x02353538 - arm_func_end ov29_022FCD78 - - arm_func_start SpawnMonster -SpawnMonster: ; 0x022FD084 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, r1 - ldrsh r0, [r7, #0xa] - ldrsh r1, [r7, #0xc] - bl GetTile - mov r1, r0 - ldrsh r0, [r7] - bl ov29_022FF6C4 - cmp r0, #0 - movne r0, #0 - bne _022FD2F8 - ldrsh r0, [r7] - bl ov29_022E20C0 - movs r4, r0 - mov r0, #0 - beq _022FD2F8 - ldr r3, _022FD300 ; =0x0237C690 - mov r1, r4 - mov r2, r7 - bl ov29_022FD9D4 - ldr r5, [r4, #0xb4] - mov r0, #1 - strb r0, [r5, #6] - mov r1, #0 - strb r1, [r5, #8] - ldr r0, _022FD304 ; =0x02353538 - ldr r1, _022FD308 ; =0x0002CB08 - ldr r2, [r0] - mov r0, r4 - ldrsh r1, [r2, r1] - strh r1, [r5, #0xe] - bl ov29_023021F0 - ldrb r0, [r7, #2] - bl ov29_022EFAE8 - cmp r0, #0 - beq _022FD154 - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _022FD150 - mov r0, #0x49 - strb r0, [r5, #0x62] - mov r0, #1 - strh r0, [r5, #0x64] - bl GetItemToRetrieve - strh r0, [r5, #0x66] - mov r0, #0 - strb r0, [r5, #0x63] - b _022FD154 -_022FD150: - bl IsDestinationFloorWithFleeingOutlaw -_022FD154: - ldrb ip, [r7, #2] - add r0, ip, #0xf5 - and r0, r0, #0xff - cmp r0, #3 - bhi _022FD194 - add r0, r5, #0xe - str r0, [sp] - add r0, r5, #0x124 - add r1, r5, #0x12 - add r2, r5, #0x1a - add r3, r5, #0x1c - str ip, [sp, #4] - bl ov29_022FC468 - mov r0, r4 - bl ov29_023021F0 - b _022FD1F0 -_022FD194: - ldrsh r2, [r5, #2] - add r0, r5, #0x124 - add r1, r5, #0x12 - str r2, [sp] - ldrb ip, [r5, #0xa] - add r2, r5, #0x1a - add r3, r5, #0x1c - str ip, [sp, #4] - bl ov29_022FC234 - ldrb r1, [r5, #6] - cmp r1, #0 - beq _022FD1D0 - ldrb r0, [r7, #2] - cmp r0, #0xa - beq _022FD1E8 -_022FD1D0: - cmp r1, #0 - beq _022FD1F0 - ldrb r0, [r7, #2] - bl ov29_022EFB04 - cmp r0, #0 - beq _022FD1F0 -_022FD1E8: - mov r0, #1 - strb r0, [r5, #8] -_022FD1F0: - ldrb r0, [r7, #2] - bl ov29_022EFAE8 - cmp r0, #0 - beq _022FD224 - ldr r0, _022FD30C ; =0x022C45A4 - ldrsh r2, [r5, #0x12] - ldrsh r1, [r0] - ldr r0, _022FD310 ; =0x000003E7 - add r1, r2, r1 - strh r1, [r5, #0x12] - ldrsh r1, [r5, #0x12] - cmp r1, r0 - strgth r0, [r5, #0x12] -_022FD224: - ldr r0, _022FD304 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - cmp r0, #0x67 - bne _022FD278 - ldr r1, _022FD314 ; =0x022C489C - add r0, r5, #0x1a - ldrb r1, [r1] - bl sub_02054FEC - ldr r1, _022FD314 ; =0x022C489C - add r0, r5, #0x1b - ldrb r1, [r1, #1] - bl sub_02054FEC - ldr r1, _022FD314 ; =0x022C489C - add r0, r5, #0x1c - ldrb r1, [r1, #2] - bl sub_02055020 - ldr r1, _022FD314 ; =0x022C489C - add r0, r5, #0x1d - ldrb r1, [r1, #3] - bl sub_02055020 -_022FD278: - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _022FD310 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r5, #0x10] - ldr r1, [r7, #4] - mov r0, r4 - str r1, [r5, #0x120] - mov r1, #1 - bl ov29_022FB83C - ldrb r0, [r7, #2] - cmp r0, #0 - cmpeq r6, #0 - ldreqb r0, [r7, #0xe] - cmpeq r0, #0 - bne _022FD2F4 - mov r0, #0x64 - bl DungeonRandInt - mov r5, r0 - ldrsh r0, [r7] - bl GetChanceAsleep - cmp r0, r5 - ble _022FD2F4 - mov r0, r4 - mov r1, #0x7f - bl InflictSleepStatusSingle - mov r0, r4 - mov r1, #8 - bl ov29_02304A48 -_022FD2F4: - mov r0, r4 -_022FD2F8: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FD300: .word 0x0237C690 -_022FD304: .word 0x02353538 -_022FD308: .word 0x0002CB08 -_022FD30C: .word 0x022C45A4 -_022FD310: .word 0x000003E7 -_022FD314: .word 0x022C489C - arm_func_end SpawnMonster - - arm_func_start ov29_022FD318 -ov29_022FD318: ; 0x022FD318 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov29_022FBC4C - cmp r0, #0 - moveq r0, #0 - beq _022FD3AC - cmp r4, #0 - bne _022FD36C - mov r0, r6 - mov r1, r5 - bl GetTile - mov r1, r0 - mov r0, r7 - bl ov29_022FF6C4 - cmp r0, #0 - movne r0, #0 - bne _022FD3AC -_022FD36C: - mov r1, r7 - mov r0, #0 - bl ov29_022F9408 - bl GetSpriteIndex__022F7388 - mov r4, r0 - mov r0, #1 - bl ov29_022DEA10 - str r0, [sp] - add r0, sp, #8 - mov r2, r7 - mov r3, r4 - add r1, sp, #4 - bl ov29_022E1C84 - cmp r0, #0 - moveq r0, #0 - movne r0, #1 -_022FD3AC: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end ov29_022FD318 - - arm_func_start InitTeamMember -InitTeamMember: ; 0x022FD3B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x14 - mov r5, r3 - ldrb r3, [r5, #1] - mov r7, r0 - ldr r4, [sp, #0x38] - cmp r3, #0 - movne r0, #1 - moveq r0, #0 - and r6, r0, #0xff - cmp r4, #0 - movne r0, #0 - strne r0, [r4] - mov r0, r7 - mov sl, r1 - mov sb, r2 - bl GetBaseForm - ldr r1, _022FD77C ; =0x000001A2 - cmp r0, r1 - bne _022FD420 - ldrb r0, [sp, #0x3c] - cmp r0, #0 - ldrne r0, _022FD780 ; =0x02353538 - ldrne r0, [r0] - addne r0, r0, #0x3e00 - ldrnesh r7, [r0, #0x3a] - moveq r7, r1 -_022FD420: - ldrb r0, [sp, #0x48] - mov r1, sl - mov r2, sb - cmp r0, #0 - movne r3, #1 - moveq r3, #0 - mov r0, r7 - and r3, r3, #0xff - bl ov29_022FD318 - cmp r0, #0 - moveq r0, #0 - beq _022FD774 - mov r0, r7 - bl ov29_022E1D2C - ldr r1, _022FD784 ; =0x0237C9C0 - strh r7, [sp, #4] - ldrb r3, [r1] - ldr r2, _022FD788 ; =0x0235171C - ldr r1, _022FD78C ; =0x0235171E - mov r3, r3, lsl #2 - ldrsh r2, [r2, r3] - ldrsh r1, [r1, r3] - mov r7, r0 - strh sl, [sp, #0xe] - strh sb, [sp, #0x10] - ldrb r8, [r5, #2] - mov r3, #0 - add r2, sl, r2 - add r1, sb, r1 - strh r2, [sp] - strh r1, [sp, #2] - strb r3, [sp, #6] - str r3, [sp, #8] - strb r3, [sp, #0x12] - cmp r6, #0 - addne r3, sp, #0 - ldreq r3, _022FD790 ; =0x0237C690 - add r2, sp, #4 - mov r1, r7 - mov r0, #1 - strh r8, [sp, #0xc] - bl ov29_022FD9D4 - ldr r8, [r7, #0xb4] - mov r2, #0 - strb r2, [r8, #6] - strb r2, [r8, #8] - strb r2, [r8, #9] - ldrb r1, [sp, #0x40] - strb r6, [r8, #7] - ldr r0, _022FD794 ; =0x0235355C - strb r1, [r8, #0x102] - str r2, [r0] - cmp r6, #0 - ldrne r0, _022FD790 ; =0x0237C690 - mov r3, #0 - strneh sl, [r0] - strneh sb, [r0, #2] - ldrsh r0, [r5, #0xe] - strh r0, [r8, #0x10] - ldrsh r0, [r5, #0x10] - strh r0, [r8, #0x12] - strh r3, [r8, #0x16] - ldr r0, [r5, #0x18] - str r0, [r8, #0x20] -_022FD520: - add r2, r5, r3 - ldrb r0, [r2, #0x12] - add r1, r8, r3 - add r3, r3, #1 - strb r0, [r1, #0x1a] - ldrb r0, [r2, #0x14] - cmp r3, #2 - strb r0, [r1, #0x1c] - blt _022FD520 - add r3, r5, #0x1c - add r2, r8, #0x124 - mov r1, #0x11 -_022FD550: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022FD550 - mov r2, #0 - add r1, r8, #0x124 - mov sb, r2 - mov sl, #1 -_022FD570: - ldrb r3, [r1, r2, lsl #3] - mov r0, r2, lsl #3 - add r2, r2, #1 - tst r3, #1 - movne r3, sl - moveq r3, sb - tst r3, #0xff - ldrneb r3, [r1, r0] - bicne r6, r3, #0x10 - andne r3, r6, #0xff - bicne r3, r3, #0x20 - strneb r3, [r1, r0] - cmp r2, #4 - blt _022FD570 - ldrb r1, [r8, #0x144] - add r0, r5, #0x4c - add sb, r8, #0x90 - bic r2, r1, #0x10 - and r1, r2, #0xff - bic r1, r1, #0x20 - strb r1, [r8, #0x144] - ldrb r1, [r5, #2] - add r3, r8, #0x100 - mov r6, #0 - strb r1, [r8, #0xa] - ldrsh r1, [r5, #6] - strh r1, [r8, #0xe] - ldrb r1, [r5, #0x58] - strb r1, [r8, #0xa8] - ldmia r0, {r0, r1, r2} - stmia sb, {r0, r1, r2} - ldrh r1, [r5, #0x5a] - mov r0, r7 - strh r1, [r8, #0x44] - ldrh r1, [r5, #0x5c] - strh r1, [r8, #0x46] - ldrb r1, [r5, #3] - strb r1, [r8, #0x48] - ldrb r1, [r5, #4] - strb r1, [r8, #0x49] - ldrh r1, [r5, #0x44] - strh r1, [r3, #0x46] - ldrh r1, [r5, #0x46] - strh r1, [r3, #0x48] - ldrh r1, [r5, #0x48] - strh r1, [r3, #0x4a] - ldrh r1, [r5, #0x4a] - strh r1, [r3, #0x4c] - ldrsh r1, [r5, #0xa] - strh r1, [r8, #0xc] - ldrh r1, [r5, #0x3e] - strh r1, [r8, #0x62] - ldrh r1, [r5, #0x40] - strh r1, [r8, #0x64] - ldrh r1, [r5, #0x42] - strh r1, [r8, #0x66] - strb r6, [r8, #0xfc] - strb r6, [r8, #0x103] - strb r6, [r8, #0x23c] - strb r6, [r8, #0x23d] - strh r6, [r8, #0x68] - bl ov29_023021F0 - ldrb r1, [sp, #0x44] - mov r0, r7 - bl ov29_022FB83C - bl GetCurrentBagCapacity - cmp r0, #1 - beq _022FD760 - bl ov29_022E0880 - cmp r0, #0 - bne _022FD760 - mov r0, r7 - bl ov29_022FBA70 - cmp r0, #0 - bne _022FD760 - ldrb r0, [r8, #0x60] - cmp r0, #0x47 - ldrneb r0, [r8, #0x61] - cmpne r0, #0x47 - bne _022FD760 - ldr r2, [r7, #0xb4] - ldr r0, _022FD798 ; =0x022C4520 - ldrb r1, [r2, #6] - ldrsh r5, [r0] - cmp r1, #0 - movne r0, #0 - bne _022FD6D8 - add r0, r2, #0x228 - mov r1, #0x61 - bl ExclusiveItemEffectFlagTest -_022FD6D8: - cmp r0, #0 - beq _022FD6FC - ldr r1, _022FD79C ; =0x022C4858 - mov r0, r5, lsl #8 - ldr r1, [r1] - bl MultiplyByFixedPoint - mov r1, r0, asr #7 - add r0, r0, r1, lsr #24 - mov r5, r0, asr #8 -_022FD6FC: - mov r0, r5 - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _022FD760 - ldrb r0, [r8, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _022FD760 - bl IsBagFull - cmp r0, #0 - bne _022FD760 - mov r0, #0 - bl ov29_022E7AC4 - mov r1, r0 - cmp r1, #0xb7 - beq _022FD760 - add r0, r8, #0x62 - mov r2, #0 - bl InitStandardItem - mov r0, r8 - bl ov29_02346F14 - mov r0, #1 - strb r0, [r8, #0xfc] -_022FD760: - mov r0, r7 - bl ov29_022F9EA0 - cmp r4, #0 - strne r7, [r4] - mov r0, #1 -_022FD774: - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FD77C: .word 0x000001A2 -_022FD780: .word 0x02353538 -_022FD784: .word 0x0237C9C0 -_022FD788: .word 0x0235171C -_022FD78C: .word 0x0235171E -_022FD790: .word 0x0237C690 -_022FD794: .word 0x0235355C -_022FD798: .word 0x022C4520 -_022FD79C: .word 0x022C4858 - arm_func_end InitTeamMember - - arm_func_start ov29_022FD7A0 -ov29_022FD7A0: ; 0x022FD7A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r7, r0 - mov r6, r1 - ldrb r1, [r7, #0xaa] - mov r0, r6 - mov r4, #0 - bl ov29_022E1AAC - mov sb, r0 - mov r0, r7 - bl ov29_022E1AD4 - ldr r5, [r7, #0xb4] - mov r8, r0 - ldr r0, [r5, #0xb0] - bl ov29_022DDB68 - ldrb r0, [r5, #6] - cmp r0, #0 - beq _022FD864 - cmp sb, r8 - ble _022FD864 - mov r1, r6 - mov r0, r4 - bl ov29_022F9408 - mov r8, r0 - bl GetSpriteIndex__022F7388 - mov r4, r0 - mov r0, r7 - mov r1, #1 - bl ov29_022E1C0C - mov r0, #1 - bl ov29_022E1F34 - mov r3, r4 - ldrb r4, [r7, #0xaa] - mov r2, r8 - add r0, sp, #0xc - add r1, sp, #8 - str r4, [sp] - bl ov29_022E2018 - cmp r0, #0 - bne _022FD860 - ldrb r2, [r7, #0xaa] - add r0, sp, #0xc - add r1, sp, #8 - str r2, [sp] - ldr r2, [r7, #0xb4] - ldrsh r3, [r7, #0xa8] - ldrsh r2, [r2, #4] - bl ov29_022E2018 -_022FD860: - mov r4, #1 -_022FD864: - mov r0, #0 - strh r6, [sp, #0x10] - strh r0, [sp, #0x18] - strb r0, [sp, #0x12] - ldrh r2, [r7, #4] - mov r1, r6 - strh r2, [sp, #0x1a] - ldrh r2, [r7, #6] - strh r2, [sp, #0x1c] - str r0, [sp, #0x14] - bl ov29_022F9408 - mov r1, #0 - strb r1, [r7, #0x22] - ldr r1, [r7, #0xb4] - strh r0, [r1, #4] - ldr r1, [r7, #0xb4] - strh r6, [r1, #2] - bl GetSpriteIndex__022F7388 - strh r0, [r7, #0xa8] - cmp r4, #0 - beq _022FD904 - ldr r0, [sp, #0xc] - add r0, r0, #0x62 - strh r0, [r7, #0xac] - ldr r1, [sp, #0xc] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17a] - ldr r1, [sp, #8] - ldr r0, [r7, #0xb4] - strb r1, [r0, #0x17b] - ldrb r0, [r5, #6] - cmp r0, #0 - beq _022FD904 - ldr r0, [sp, #0xc] - ldr r1, [sp, #8] - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, r1, lsr #0x10 - bl ov29_022E1EC4 -_022FD904: - mov r0, #7 - strb r0, [r7, #0xae] - mov r1, #0 - strb r1, [r7, #0xb0] - mov r0, #0xff - strb r0, [r7, #0xaf] - mov r0, #1 - strb r0, [r7, #0xb1] - strb r0, [r7, #0xb3] - strb r1, [r7, #0x28] - str r1, [r7, #0x1c] - ldrb r0, [r5, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _022FD94C - ldr r0, [r5, #0xb4] - bl FreeOtherWrappedMonsters -_022FD94C: - ldrb r0, [r5, #6] - add r2, sp, #0x10 - mov r1, r7 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - mov r3, #0 - bl ov29_022FD9D4 - ldrsh r2, [r5, #2] - add r0, r5, #0x124 - add r1, r5, #0x12 - str r2, [sp] - ldrb r4, [r5, #0xa] - add r2, r5, #0x1a - add r3, r5, #0x1c - str r4, [sp, #4] - bl ov29_022FC234 - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _022FD9D0 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r5, #0x10] - mov r1, #0 - mov r0, r7 - strb r1, [r5, #9] - bl ov29_022E6644 - mov r0, r7 - bl UpdateStatusIconFlags - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FD9D0: .word 0x000003E7 - arm_func_end ov29_022FD7A0 - - arm_func_start ov29_022FD9D4 -ov29_022FD9D4: ; 0x022FD9D4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - ldr r4, _022FDDB0 ; =0x02353538 - mov r7, r1 - ldr r4, [r4] - mov r1, #1 - strb r1, [r4, #0xe] - ldr r4, [r7, #0xb4] - mov r8, r0 - mov r6, r2 - mov r0, r4 - mov r5, r3 - bl ov29_022FDDC0 - mov r0, #0 - ldrb r2, [r6, #2] - mov r3, #1 - sub r1, r0, #1 - strb r2, [r4, #0xbc] - strb r3, [r7, #0x20] - strb r0, [r7, #0x22] - sub r0, r0, #2 - strh r1, [r7, #8] - strh r1, [r7, #0xa] - strh r0, [r7, #4] - strh r0, [r7, #6] - mov r0, r7 - ldrsh r1, [r6, #0xa] - ldrsh r2, [r6, #0xc] - bl ov29_022F85F0 - mov r0, r7 - mov r1, #0 - bl ov29_022E1A40 - cmp r8, #0 - bne _022FDAD4 - ldrsh r1, [r6] - ldr r0, _022FDDB4 ; =0x0000017F - cmp r1, r0 - addne r0, r0, #0x258 - cmpne r1, r0 - bne _022FDAAC - ldr r0, _022FDDB0 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x790] - cmp r0, #0 - bne _022FDAAC - add r0, r1, #0x4000 - ldrb r0, [r0, #0xc6] - cmp r0, #0 - beq _022FDAAC - ldrb r0, [r6, #2] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r4, #9] - beq _022FDAB4 -_022FDAAC: - mov r0, #0 - strb r0, [r4, #9] -_022FDAB4: - ldrsh r0, [r4, #2] - bl GetBaseForm - cmp r0, #0x97 - ldreq r0, _022FDDB0 ; =0x02353538 - moveq r1, #1 - ldreq r0, [r0] - addeq r0, r0, #0x3000 - streqb r1, [r0, #0xe39] -_022FDAD4: - ldr r1, _022FDDB0 ; =0x02353538 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x3000 - ldr r0, [r0, #0xe2c] - str r0, [r4, #0xb0] - ldr r0, [r1] - add r0, r0, #0x3000 - ldr r1, [r0, #0xe2c] - add r1, r1, #1 - str r1, [r0, #0xe2c] - str r2, [r4, #0xb4] - ldrsh r0, [r6, #8] - cmp r0, #0 - bne _022FDB18 - ldrsh r0, [r6] - bl GetMonsterLevelToSpawn -_022FDB18: - strb r0, [r4, #0xa] - ldr r0, [r6, #4] - mov r2, #1 - str r0, [r4, #0x120] - strh r2, [r4, #0xe] - ldrsh r1, [r4, #2] - add r0, r4, #0x90 - bl sub_02058EB0 - add r0, r4, #0x44 - bl ShuffleHiddenPower - mov r1, #1 - strh r1, [r4, #0x12] - mov r0, #0x64 - strh r1, [r4, #0x10] - bl sub_02050FF8 - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r0, [sp, #4] - add r1, r4, #0x100 - ldrh r2, [sp, #6] - strh r0, [r1, #0x46] - mov r0, #0x64 - strh r2, [r1, #0x48] - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r2, [sp] - add r0, r4, #0x100 - ldrh r1, [sp, #2] - strh r2, [r0, #0x4a] - cmp r5, #0 - strh r1, [r0, #0x4c] - ldrneh r1, [r5] - strneh r1, [r0, #0x7e] - ldrneh r1, [r5, #2] - moveq r1, #0 - streqh r1, [r0, #0x7e] - strh r1, [r0, #0x80] - mov r3, #0 - strh r3, [r4] - strb r3, [r4, #0x14e] - strb r3, [r4, #0x14f] - add r0, r4, #0x200 - strh r3, [r0, #0xc] - strh r3, [r0, #0xe] - strb r3, [r4, #0x7c] - ldrh r2, [r7, #4] - mov r0, r4 - mov r1, #1 - strh r2, [r4, #0x8c] - ldrh r2, [r7, #6] - strh r2, [r4, #0x8e] - str r3, [r4, #0x84] - str r3, [r4, #0x88] - strh r3, [r4, #0x80] - strb r3, [r4, #0x10b] - str r3, [r4, #0x188] - strb r3, [r4, #0x10c] - strb r3, [r4, #0x23c] - strb r3, [r4, #0x23d] - strb r3, [r4, #0x23f] - bl ov29_022FDDC0 - add r0, r4, #0x62 - bl ItemZInit - mov r2, #0 - strh r2, [r4, #0x68] - str r2, [r4, #0x218] - str r2, [r4, #0x21c] - mov r0, #0xff - strb r0, [r4, #0x177] - strb r0, [r4, #0x178] - str r2, [r4, #0x214] - strb r2, [r4, #0x151] - strb r2, [r4, #0x150] - strb r2, [r4, #0x179] - add r0, r4, #0x200 - strh r2, [r0, #0x10] - strh r2, [r0, #0x12] - strb r2, [r4, #0x152] - strb r2, [r4, #0x153] - add r0, r4, #0x100 - strh r2, [r0, #0x92] - str r2, [r4, #0x18c] - strb r2, [r4, #0x105] - strb r2, [r4, #0x104] - strb r2, [r4, #0x109] - strb r2, [r4, #0x155] - mov r1, #1 - strb r1, [r4, #0x156] - strh r2, [r0, #0x58] - strh r2, [r0, #0x5a] - strb r2, [r4, #0x15c] - strb r2, [r4, #0x15d] - strb r2, [r4, #0x15e] - strb r2, [r4, #0x15f] - strb r2, [r4, #0x17c] - strb r2, [r4, #0x106] - strb r2, [r4, #0x107] - mov r0, #0x63 - strb r0, [r4, #0x10a] - strb r2, [r4, #0x162] - strb r2, [r4, #0x163] - strb r2, [r4, #0x164] - strb r2, [r4, #0x165] - strb r2, [r4, #0x170] - mov r0, r7 - strb r2, [r4, #0x171] - bl CalcSpeedStageWrapper - mov r0, #1 - strb r0, [r4, #0x160] - mov r0, #0 - strb r0, [r4, #0x172] - strb r0, [r4, #0x174] - strb r0, [r4, #0x173] - strb r0, [r4, #0x175] - strb r0, [r4, #0x176] - ldrsh r1, [r4, #4] - cmp r1, #0x32 - ldrne r0, _022FDDB8 ; =0x0000028A - cmpne r1, r0 - cmpne r1, #0x33 - addne r0, r0, #1 - cmpne r1, r0 - moveq r0, #0 - streqb r0, [r4, #0x160] - ldr r1, _022FDDBC ; =0x0235276C - ldr r0, _022FDDB0 ; =0x02353538 - ldrh r3, [r1] - ldr r0, [r0] - add r2, sp, #8 - strh r3, [sp, #8] - ldrh r1, [r1, #2] - add r0, r0, #0x1a000 - strh r1, [sp, #0xa] - ldrsh r1, [r7, #4] - strh r1, [sp, #8] - ldrsh r1, [r7, #6] - strh r1, [sp, #0xa] - ldrb r3, [r0, #0x23c] - ldrsh r1, [r4, #4] - ldr r0, [r4, #0xb0] - bl ov29_022DDA54 - mov r0, r7 - bl ov29_023021F0 - mov r1, #0 - mov r0, r7 - mov r2, r1 - bl ov29_022FA1D8 - mov r1, #0 - strh r1, [r4, #0xac] - str r1, [r4, #0x18c] - add r0, r4, #0x100 - strh r1, [r0, #0x90] - strb r1, [r4, #0x166] - strb r1, [r4, #0x167] - strb r1, [r4, #0x221] - strh r1, [r0, #0x68] - mov r2, #0xff - add r0, r4, #0x224 - mov r1, #0x18 - strb r2, [r4, #0x16a] - bl MemZero - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FDDB0: .word 0x02353538 -_022FDDB4: .word 0x0000017F -_022FDDB8: .word 0x0000028A -_022FDDBC: .word 0x0235276C - arm_func_end ov29_022FD9D4 - - arm_func_start ov29_022FDDC0 -ov29_022FDDC0: ; 0x022FDDC0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r2, #0 - strb r2, [sl, #0xbd] - strb r2, [sl, #0xbe] - strb r2, [sl, #0xbf] - strb r2, [sl, #0xc0] - strb r2, [sl, #0xc1] - strb r2, [sl, #0xc2] - strb r2, [sl, #0xc4] - strb r2, [sl, #0xcc] - strb r2, [sl, #0xcd] - mov r0, #0x22 - str r0, [sl, #0xc8] - strb r2, [sl, #0xd0] - strb r2, [sl, #0xd1] - strb r2, [sl, #0xd2] - strb r2, [sl, #0xd5] - strb r2, [sl, #0xd6] - strb r2, [sl, #0xd8] - strb r2, [sl, #0xdb] - strb r2, [sl, #0xdc] - strb r2, [sl, #0xe0] - strb r2, [sl, #0xe9] - strb r2, [sl, #0xea] - strb r2, [sl, #0xec] - strb r2, [sl, #0xed] - strb r2, [sl, #0xee] - strb r2, [sl, #0xef] - strb r2, [sl, #0xf0] - strb r2, [sl, #0xf1] - strb r2, [sl, #0xf2] - strb r2, [sl, #0xf3] - strb r2, [sl, #0xf4] - strb r2, [sl, #0xf5] - strb r2, [sl, #0xf6] - strb r2, [sl, #0xf7] - strb r2, [sl, #0xf8] - strb r2, [sl, #0xf9] - strb r2, [sl, #0xfa] - strb r2, [sl, #0xfb] - mov r0, #0xff - strb r0, [sl, #0x177] - mov sb, r1 - strb r0, [sl, #0x178] - mov r6, r2 -_022FDE78: - add r0, sl, r2 - strb r6, [r0, #0x114] - add r2, r2, #1 - strb r6, [r0, #0x119] - cmp r2, #5 - blt _022FDE78 - mov r8, r6 - mov r5, #1 - mov fp, #0xa - mov r4, #0x100 -_022FDEA0: - ldrsh r0, [sl, #2] - mov r1, r8 - add r7, sl, r8 - bl GetAbility - and r1, r0, #0xff - cmp r1, #0x25 - strb r0, [r7, #0x60] - moveq r6, #1 - cmp sb, #0 - strneb r5, [r7, #0x1a] - strneb r5, [r7, #0x1c] - add r1, sl, r8, lsl #1 - strh fp, [r1, #0x24] - strh fp, [r1, #0x28] - add r0, sl, r8, lsl #2 - strh fp, [r1, #0x2c] - str r4, [r0, #0x34] - add r8, r8, #1 - str r4, [r0, #0x3c] - cmp r8, #2 - blt _022FDEA0 - cmp r6, #0 - beq _022FDF24 - mov r0, #0 - bl GetApparentWeather - mov r1, #6 - mul r2, r0, r1 - ldr r1, _022FDF9C ; =0x022C4C6C - mov r0, #0 - ldrb r1, [r1, r2] - strb r1, [sl, #0x5e] - strb r0, [sl, #0x5f] - b _022FDF48 -_022FDF24: - mov r4, #0 -_022FDF28: - ldrsh r0, [sl, #2] - mov r1, r4 - bl GetType - add r1, sl, r4 - add r4, r4, #1 - strb r0, [r1, #0x5e] - cmp r4, #2 - blt _022FDF28 -_022FDF48: - mov r2, #0 - strb r2, [sl, #0xaa] - strb r2, [sl, #0xab] - ldr r0, _022FDFA0 ; =0x02353538 - strb r2, [sl, #0xa9] - ldr r0, [r0] - mov r1, #1 - strb r1, [r0, #0xe] - strh r2, [sl, #0x30] - strb r2, [sl, #0x11e] - strb r2, [sl, #0x106] - strb r2, [sl, #0x11f] - strb r2, [sl, #0xfd] - strb r2, [sl, #0x108] - strb r2, [sl, #0xfe] - strb r2, [sl, #0xff] - strb r2, [sl, #0x100] - mov r0, sl - strb r2, [sl, #0x10b] - bl ov29_02307DC0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FDF9C: .word 0x022C4C6C -_022FDFA0: .word 0x02353538 - arm_func_end ov29_022FDDC0 - - arm_func_start ov29_022FDFA4 -ov29_022FDFA4: ; 0x022FDFA4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, #0 - mov r4, r7 - mov r5, #1 - mov r6, r7 -_022FDFB8: - ldr r0, _022FE044 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] - mov r0, r8 - bl EntityIsValid__022FC99C - cmp r0, #0 - ldrne r1, [r8, #0xb4] - mvnne r0, #0 - ldrnesh r3, [r1, #0xc] - cmpne r3, r0 - beq _022FE034 - mov r8, r6 -_022FDFF0: - add r0, r1, r8, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - addne r0, r1, r8, lsl #3 - addne r0, r0, #0x100 - ldrneh r2, [r0, #0x26] - add r8, r8, #1 - bicne r2, r2, #1 - strneh r2, [r0, #0x26] - cmp r8, #4 - blt _022FDFF0 - mov r0, r3, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov29_022FE048 -_022FE034: - add r7, r7, #1 - cmp r7, #4 - blt _022FDFB8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FE044: .word 0x02353538 - arm_func_end ov29_022FDFA4 - - arm_func_start ov29_022FE048 -ov29_022FE048: ; 0x022FE048 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - bl GetActiveTeamMember - ldrsh r1, [r4, #0x10] - mov r3, r0 - mov r5, #0 - strh r1, [r3, #0xe] - ldrsh r0, [r4, #0x12] - strh r0, [r3, #0x10] - ldr r0, [r4, #0x20] - str r0, [r3, #0x18] -_022FE074: - add r2, r4, r5 - ldrb r0, [r2, #0x1a] - add r1, r3, r5 - add r5, r5, #1 - strb r0, [r1, #0x12] - ldrb r0, [r2, #0x1c] - cmp r5, #2 - strb r0, [r1, #0x14] - blt _022FE074 - ldrsh r1, [r4, #4] - sub r0, r1, #0x17c - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #2 - ldrls r0, _022FE188 ; =0x0000017B - strlsh r0, [r3, #0xc] - bls _022FE0E0 - sub r0, r1, #0x3d4 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #2 - ldrls r0, _022FE18C ; =0x000003D3 - strlsh r0, [r3, #0xc] -_022FE0E0: - add r5, r4, #0x124 - add r2, r3, #0x1c - mov r1, #0x11 -_022FE0EC: - ldrh r0, [r5], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022FE0EC - ldrb r1, [r4, #0xa] - add r0, r4, #0x90 - add r5, r3, #0x4c - strb r1, [r3, #2] - ldrsh r1, [r4, #0xe] - add ip, r4, #0x100 - ldr lr, _022FE190 ; =0x000055AA - strh r1, [r3, #6] - ldmia r0, {r0, r1, r2} - stmia r5, {r0, r1, r2} - ldrb r0, [r4, #0xa8] - strb r0, [r3, #0x58] - ldrh r0, [r4, #0x44] - strh r0, [r3, #0x5a] - ldrh r0, [r4, #0x46] - strh r0, [r3, #0x5c] - ldrh r0, [ip, #0x46] - strh r0, [r3, #0x44] - ldrh r0, [ip, #0x48] - strh r0, [r3, #0x46] - ldrh r0, [ip, #0x4a] - strh r0, [r3, #0x48] - ldrh r0, [ip, #0x4c] - strh r0, [r3, #0x4a] - ldrh r0, [r4, #0x62] - strh r0, [r3, #0x3e] - ldrh r0, [r4, #0x64] - strh r0, [r3, #0x40] - ldrh r0, [r4, #0x66] - strh r0, [r3, #0x42] - ldrsh r0, [r3, #8] - cmp r0, lr - ldreq r0, _022FE194 ; =0x00005AA5 - streqh r0, [r3, #8] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FE188: .word 0x0000017B -_022FE18C: .word 0x000003D3 -_022FE190: .word 0x000055AA -_022FE194: .word 0x00005AA5 - arm_func_end ov29_022FE048 - - arm_func_start ov29_022FE198 -ov29_022FE198: ; 0x022FE198 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr ip, _022FE248 ; =0x02353538 - mov r6, #0 - ldr r4, [ip] - mov lr, #6 - add ip, r4, #0x5e0 - ldr r7, [ip, #0x30] - b _022FE1E8 -_022FE1B8: - mla r5, r6, lr, ip - ldrb r4, [r5, #3] - cmp r4, #0 - beq _022FE1E4 - ldrb r4, [r5, #4] - cmp r0, r4 - ldreqb r4, [r5, #5] - cmpeq r1, r4 - streqh r2, [r5] - streqb r3, [r5, #2] - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_022FE1E4: - add r6, r6, #1 -_022FE1E8: - cmp r6, r7 - blt _022FE1B8 - cmp r7, #8 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - mov lr, #6 - mla r4, r7, lr, ip - mov r5, #1 - strb r5, [r4, #3] - ldr r5, [ip, #0x30] - mla r4, r5, lr, ip - strb r0, [r4, #4] - ldr r4, [ip, #0x30] - mla r0, r4, lr, ip - strb r1, [r0, #5] - ldr r0, [ip, #0x30] - mul r1, r0, lr - strh r2, [ip, r1] - ldr r1, [ip, #0x30] - mla r0, r1, lr, ip - strb r3, [r0, #2] - ldr r0, [ip, #0x30] - add r0, r0, #1 - str r0, [ip, #0x30] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FE248: .word 0x02353538 - arm_func_end ov29_022FE198 - - arm_func_start ov29_022FE24C -ov29_022FE24C: ; 0x022FE24C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - ldr r0, _022FE2E0 ; =0x02353538 - ldr r0, [r0] - add r6, r0, #0x5e0 - bl ov29_022FBF08 - mov r5, #0 - mov r4, r5 - add sb, sp, #0 - mov r8, #1 - mov r7, #6 - b _022FE2C8 -_022FE27C: - mla r3, r5, r7, r6 - ldrb r0, [r3, #3] - cmp r0, #0 - beq _022FE2C4 - ldrsh r2, [r3] - mov r0, sb - mov r1, r8 - strh r2, [sp] - strh r4, [sp, #8] - ldrb r2, [r3, #4] - strh r2, [sp, #0xa] - ldrb r2, [r3, #5] - strh r2, [sp, #0xc] - ldrb r2, [r3, #2] - strb r2, [sp, #2] - str r4, [sp, #4] - strb r4, [sp, #0xe] - bl SpawnMonster -_022FE2C4: - add r5, r5, #1 -_022FE2C8: - ldr r0, [r6, #0x30] - cmp r5, r0 - blt _022FE27C - bl ov29_022FBF30 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FE2E0: .word 0x02353538 - arm_func_end ov29_022FE24C - - arm_func_start ov29_022FE2E4 -ov29_022FE2E4: ; 0x022FE2E4 - ldr r0, _022FE2F8 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x610] - bx lr - .align 2, 0 -_022FE2F8: .word 0x02353538 - arm_func_end ov29_022FE2E4 - - arm_func_start ov29_022FE2FC -ov29_022FE2FC: ; 0x022FE2FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r8, r0 - mov r7, r1 - bl GetBaseHp - mov r6, r0 - mov r5, #2 - add r4, sp, #0 - b _022FE33C -_022FE320: - mov r0, r4 - mov r1, r8 - mov r2, r5 - bl GetLvlStats - ldrh r0, [sp, #4] - add r5, r5, #1 - add r6, r6, r0 -_022FE33C: - cmp r5, r7 - ble _022FE320 - mov r0, r6 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov29_022FE2FC - - arm_func_start ov29_022FE350 -ov29_022FE350: ; 0x022FE350 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r7, r2 - mov r4, r1 - mov r1, r7 - mov r5, r0 - bl GetBaseOffensiveStat - add r6, sp, #0 - add sb, r6, r7 - mov r8, r0 - mov r7, #2 - b _022FE39C -_022FE380: - mov r0, r6 - mov r1, r5 - mov r2, r7 - bl GetLvlStats - ldrb r0, [sb, #6] - add r7, r7, #1 - add r8, r8, r0 -_022FE39C: - cmp r7, r4 - ble _022FE380 - cmp r8, #0xff - movgt r8, #0xff - mov r0, r8 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022FE350 - - arm_func_start ov29_022FE3B8 -ov29_022FE3B8: ; 0x022FE3B8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r7, r2 - mov r4, r1 - mov r1, r7 - mov r5, r0 - bl GetBaseDefensiveStat - add r6, sp, #0 - add sb, r6, r7 - mov r8, r0 - mov r7, #2 - b _022FE404 -_022FE3E8: - mov r0, r6 - mov r1, r5 - mov r2, r7 - bl GetLvlStats - ldrb r0, [sb, #8] - add r7, r7, #1 - add r8, r8, r0 -_022FE404: - cmp r7, r4 - ble _022FE3E8 - cmp r8, #0xff - movgt r8, #0xff - mov r0, r8 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_022FE3B8 - - arm_func_start ov29_022FE420 -ov29_022FE420: ; 0x022FE420 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _022FE4A0 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetMissionRank - mov r5, r0 - bl ov29_023491A4 - ldrsh r2, [r0, #0xe] - ldr r0, _022FE4A4 ; =0x020A1998 - mov r1, r5, lsl #1 - ldrsh r1, [r0, r1] - strh r2, [r4] - mov r0, #1 - strh r1, [r4, #4] - strb r0, [r4, #6] - strb r0, [r4, #7] - bl IsDestinationFloorWithHiddenOutlaw - cmp r0, #0 - movne r0, #2 - strneb r0, [r4, #2] - movne r0, #0 - strneb r0, [r4, #7] - ldmneia sp!, {r3, r4, r5, pc} - bl IsDestinationFloorWithFleeingOutlaw - cmp r0, #0 - movne r0, #3 - strneb r0, [r4, #2] - moveq r0, #1 - streqb r0, [r4, #2] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FE4A0: .word 0x02353538 -_022FE4A4: .word 0x020A1998 - arm_func_end ov29_022FE420 - - arm_func_start ov29_022FE4A8 -ov29_022FE4A8: ; 0x022FE4A8 - ldr r0, _022FE4B8 ; =0x0237C9C0 - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_022FE4B8: .word 0x0237C9C0 - arm_func_end ov29_022FE4A8 - - arm_func_start ExecuteMonsterAction -ExecuteMonsterAction: ; 0x022FE4BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r0, #1 - bl ov29_022E38E0 - bl ov29_022FBD08 - mov r0, #1 - bl ov29_0234B024 - ldr r6, [sb, #0xb4] - mov r1, #0 - strb r1, [r6, #0x109] - ldr r0, _022FED70 ; =0x02353538 - strb r1, [r6, #0xfc] - ldr r1, [r0] - ldr r0, _022FED74 ; =0x022C4F3C - str sb, [r1, #0xc4] - ldrh r2, [r6, #0x4a] - ldrb r0, [r0, r2, lsl #1] - cmp r0, #0 - beq _022FE538 - ldrb r0, [r6, #7] - cmp r0, #0 - beq _022FE528 - ldr r1, _022FED78 ; =0x022C4F3D - mov r0, sb - ldrb r1, [r1, r2, lsl #1] - bl ov29_022F3890 - b _022FE538 -_022FE528: - ldr r1, _022FED78 ; =0x022C4F3D - mov r0, sb - ldrb r1, [r1, r2, lsl #1] - bl ov29_023085DC -_022FE538: - mov r0, sb - mov r1, #0 - bl ov29_02300DCC - cmp r0, #0 - beq _022FE568 - mov r0, sb - mov r1, #1 - bl ov29_0232461C - cmp r0, #0 - beq _022FE568 - mov r0, sb - bl ov29_02318D58 -_022FE568: - mov r4, #0 - add r3, r6, #0x124 - mov r1, r4 - mov r2, #1 -_022FE578: - ldrb r0, [r3, r4, lsl #3] - add r5, r3, r4, lsl #3 - add r4, r4, #1 - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - ldrneh r0, [r5, #2] - bicne r0, r0, #4 - strneh r0, [r5, #2] - cmp r4, #4 - blt _022FE578 - bl ov29_022E81F8 - mov r0, sb - mov r1, #0 - bl ov29_022EB944 - cmp r0, #0 - bne _022FE638 - mov r0, sb - bl DisplayActions - cmp r0, #0 - beq _022FE608 - bl IsFloorOver - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, _022FED7C ; =0x0237C9C0 - ldrb r0, [r0, #1] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FE608: - ldrb r0, [r6, #7] - cmp r0, #0 - bne _022FE61C - mov r0, #0xa - bl ov29_0234BA54 -_022FE61C: - ldrb r0, [r6, #0x23c] - cmp r0, #0 - bne _022FE630 - mov r0, sb - bl ov29_022F9840 -_022FE630: - mov r0, #0xa - bl AdvanceFrame -_022FE638: - mov r0, #0 - strb r0, [r6, #0x23c] - ldrh r0, [r6, #0x4a] - mov r4, #0 - ldr r1, _022FED80 ; =0x0237CA6C - cmp r0, #1 - cmpne r0, #0 - cmpne r0, #4 - cmpne r0, #2 - movne r0, #1 - strneb r0, [r6, #0x152] - strb r4, [r6, #0x154] - ldr r0, _022FED84 ; =0x0237CA68 - strb r4, [r1] - strb r4, [r0] - mov r1, #1 - strb r1, [r6, #0x103] - ldrh r0, [r6, #0x4a] - cmp r0, #0x42 - addls pc, pc, r0, lsl #2 - b _022FEBAC -_022FE68C: ; jump table - b _022FEBAC ; case 0 - b _022FEBAC ; case 1 - b _022FE798 ; case 2 - b _022FEBAC ; case 3 - b _022FEBAC ; case 4 - b _022FEBAC ; case 5 - b _022FEBAC ; case 6 - b _022FEBAC ; case 7 - b _022FEAA4 ; case 8 - b _022FEA30 ; case 9 - b _022FEAB0 ; case 10 - b _022FEAC8 ; case 11 - b _022FEBAC ; case 12 - b _022FEA08 ; case 13 - b _022FEA08 ; case 14 - b _022FEBAC ; case 15 - b _022FEA20 ; case 16 - b _022FEBAC ; case 17 - b _022FEA08 ; case 18 - b _022FEB0C ; case 19 - b _022FEB18 ; case 20 - b _022FE99C ; case 21 - b _022FEBAC ; case 22 - b _022FEB24 ; case 23 - b _022FEBAC ; case 24 - b _022FEBAC ; case 25 - b _022FEBAC ; case 26 - b _022FEBAC ; case 27 - b _022FEBAC ; case 28 - b _022FEBAC ; case 29 - b _022FEBAC ; case 30 - b _022FEBAC ; case 31 - b _022FEBAC ; case 32 - b _022FEBAC ; case 33 - b _022FEBAC ; case 34 - b _022FEB68 ; case 35 - b _022FEB74 ; case 36 - b _022FEB44 ; case 37 - b _022FE9A8 ; case 38 - b _022FEAC8 ; case 39 - b _022FEBAC ; case 40 - b _022FEBAC ; case 41 - b _022FEBAC ; case 42 - b _022FEBAC ; case 43 - b _022FEA28 ; case 44 - b _022FEBAC ; case 45 - b _022FEBAC ; case 46 - b _022FEBAC ; case 47 - b _022FEBAC ; case 48 - b _022FEA14 ; case 49 - b _022FEB34 ; case 50 - b _022FEBAC ; case 51 - b _022FEBAC ; case 52 - b _022FEBAC ; case 53 - b _022FEA3C ; case 54 - b _022FEA48 ; case 55 - b _022FEA60 ; case 56 - b _022FEB80 ; case 57 - b _022FEABC ; case 58 - b _022FEA84 ; case 59 - b _022FEA6C ; case 60 - b _022FEA78 ; case 61 - b _022FEA54 ; case 62 - b _022FEB5C ; case 63 - b _022FEBAC ; case 64 - b _022FEAC8 ; case 65 - b _022FEBA0 ; case 66 -_022FE798: - ldrb r0, [r6, #0xc4] - cmp r0, #2 - cmpne r0, #7 - beq _022FE7B8 - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #2 - bhi _022FE818 -_022FE7B8: - mov r0, #0 - strh r0, [r6, #0x4a] - mov r0, #1 - strb r0, [r6, #0x151] - ldrb r0, [r6, #7] - cmp r0, #0 - beq _022FEBB4 - ldr r0, _022FED70 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - ldrsh r0, [r0, #0xd8] - cmp r0, #0 - blt _022FE7F4 - mov r0, #0x56 - bl AdvanceFrame -_022FE7F4: - ldr r1, _022FED70 ; =0x02353538 - mvn r2, #0 - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xd8] - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xda] - b _022FEBB4 -_022FE818: - ldrb r1, [r6, #0x4c] - ldrh r3, [r6] - ldr r2, _022FED88 ; =0x0235171C - mov r8, r1, lsl #2 - ldr r0, _022FED8C ; =0x0235171E - ldrsh ip, [sb, #4] - ldrsh r7, [r2, r8] - ldrsh r5, [sb, #6] - ldrsh r2, [r0, r8] - add r0, ip, r7 - mov r0, r0, lsl #0x10 - add r2, r5, r2 - mov r2, r2, lsl #0x10 - mov r5, r4 - tst r3, #0x8000 - mov r7, r0, asr #0x10 - mov r8, r2, asr #0x10 - bne _022FE870 - mov r0, sb - bl ov29_02300E78 - cmp r0, #0 - moveq r5, #1 -_022FE870: - cmp r5, #0 - beq _022FE8D8 - mov r0, #0 - strh r0, [r6, #0x4a] - mov r0, #1 - strb r0, [r6, #0x151] - ldrb r0, [r6, #7] - cmp r0, #0 - beq _022FEBB4 - ldr r0, _022FED70 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x100 - ldrsh r0, [r0, #0xd8] - cmp r0, #0 - blt _022FE8B4 - mov r0, #0x56 - bl AdvanceFrame -_022FE8B4: - ldr r1, _022FED70 ; =0x02353538 - mvn r2, #0 - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xd8] - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xda] - b _022FEBB4 -_022FE8D8: - ldrsh r2, [sb, #4] - mov r0, sb - mov r1, r7 - strh r2, [sp] - ldrsh r4, [sb, #6] - mov r2, r8 - mov r3, #0 - strh r4, [sp, #2] - bl ov29_022F85F0 - ldrb r1, [r6, #0x4c] - add r2, sp, #0 - mov r0, sb - bl ov29_02304D20 - mov r0, sb - mov r1, #0xd - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r6, #0xef] - cmpne r0, #3 - beq _022FE95C - mov r0, sb - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _022FE94C - mov r0, sb - mov r1, #0x10 - bl HasHeldItem -_022FE94C: - cmp r0, #0 - bne _022FE95C - add r0, sb, #4 - bl ov29_02337CCC -_022FE95C: - ldrb r0, [r6, #7] - mov r4, #1 - cmp r0, #0 - beq _022FEBB4 - ldrb r0, [r6, #0xd0] - cmp r0, #2 - bne _022FEBB4 - ldr r1, _022FED70 ; =0x02353538 - sub r2, r4, #2 - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xd8] - ldr r0, [r1] - add r0, r0, #0x100 - strh r2, [r0, #0xda] - b _022FEBB4 -_022FE99C: - mov r0, sb - bl ov29_0231A8A0 - b _022FEBB4 -_022FE9A8: - bl ov29_022E5D68 - ldr r0, _022FED70 ; =0x02353538 - mov r2, #1 - ldr r0, [r0] - ldr r1, _022FED7C ; =0x0237C9C0 - strb r2, [r0, #6] - ldrb r2, [r6, #0x4c] - add r0, sb, #4 - strb r2, [r1] - bl ov29_02338708 - cmp r0, #0 - beq _022FEBB4 - bl ov29_02338850 - cmp r0, #1 - bne _022FE9F0 - mov r0, #1 - bl ov29_02338898 - b _022FEBB4 -_022FE9F0: - bl ov29_02338850 - cmp r0, #2 - bne _022FEBB4 - mov r0, #2 - bl ov29_02338898 - b _022FEBB4 -_022FEA08: - mov r0, sb - bl ov29_022F52CC - b _022FEBB4 -_022FEA14: - mov r0, sb - bl ov29_0231A9F8 - b _022FEBB4 -_022FEA20: - strh r1, [r6, #0x4a] - b _022FEBB4 -_022FEA28: - strh r1, [r6, #0x4a] - b _022FEBB4 -_022FEA30: - mov r0, sb - bl ov29_022F4350 - b _022FEBB4 -_022FEA3C: - mov r0, sb - bl ov29_022F45CC - b _022FEBB4 -_022FEA48: - mov r0, sb - bl ov29_022F48D8 - b _022FEBB4 -_022FEA54: - mov r0, sb - bl ov29_022F49E0 - b _022FEBB4 -_022FEA60: - mov r0, sb - bl ov29_022F4BDC - b _022FEBB4 -_022FEA6C: - mov r0, sb - bl ov29_022F4370 - b _022FEBB4 -_022FEA78: - mov r0, sb - bl ov29_022F44F0 - b _022FEBB4 -_022FEA84: - ldr r0, _022FED70 ; =0x02353538 - ldrb r1, [r6, #0x4e] - ldr r2, [r0] - add r0, r2, r1, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - str r0, [r2, #0xc8] - b _022FEBB4 -_022FEAA4: - mov r0, sb - bl ov29_022F4BF8 - b _022FEBB4 -_022FEAB0: - mov r0, sb - bl ov29_022F4DAC - b _022FEBB4 -_022FEABC: - mov r0, sb - bl ov29_022F505C - b _022FEBB4 -_022FEAC8: - mov r0, r6 - bl ov29_02302368 - cmp r0, #0 - beq _022FEAEC - mov r0, sb - bl ov29_022F996C - mov r0, sb - bl ov29_022F54BC - b _022FEBB4 -_022FEAEC: - mov r0, r4 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, sb - mov r1, #0xdf0 - bl LogMessageByIdWithPopupCheckUser - b _022FEBB4 -_022FEB0C: - mov r0, sb - bl ov29_022F59C4 - b _022FEBB4 -_022FEB18: - mov r0, sb - bl ov29_022F5F18 - b _022FEBB4 -_022FEB24: - mov r0, sb - mov r1, #0x160 - bl ov29_022F6058 - b _022FEBB4 -_022FEB34: - mov r0, sb - rsb r1, r1, #0x164 - bl ov29_022F6058 - b _022FEBB4 -_022FEB44: - mov r0, sb - mov r2, r4 - mov r3, r4 - add r1, sb, #4 - bl ov29_022EDFA0 - b _022FEBB4 -_022FEB5C: - mov r0, sb - bl ov29_0230F158 - b _022FEBB4 -_022FEB68: - mov r0, sb - bl ov29_0230F140 - b _022FEBB4 -_022FEB74: - mov r0, sb - bl ov29_0230F14C - b _022FEBB4 -_022FEB80: - mov r0, r4 - mov r1, sb - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldr r1, _022FED90 ; =0x00000DF1 - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - b _022FEBB4 -_022FEBA0: - mov r0, sb - bl ov29_022F52B0 - b _022FEBB4 -_022FEBAC: - mov r0, #1 - strh r0, [r6, #0x4a] -_022FEBB4: - mov r0, sb - bl ov29_022EDDD4 - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r2, [sb, #0xb4] - ldrb r0, [r2, #0x154] - cmp r0, #0 - bne _022FEBF0 - mov r1, #0 - mov r0, sb - strb r1, [r2, #0x154] - bl ov29_02318D58 -_022FEBF0: - mov r0, #0 - bl ov29_022E3A58 - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl ov29_022EF9BC - ldrb r0, [r6, #0x155] - cmp r0, #0 - beq _022FEC88 - mov ip, #0 - mov r5, #1 - mov r8, ip - strb ip, [r6, #0x155] - add r7, r6, #0x124 - mov r3, ip - mov r1, ip - mov r0, r5 -_022FEC3C: - ldrb r2, [r7, r8, lsl #3] - add lr, r7, r8, lsl #3 - tst r2, #1 - movne r2, r5 - moveq r2, r3 - tst r2, #0xff - beq _022FEC68 - ldrb r2, [lr] - tst r2, #0x10 - movne ip, r0 - strneb r1, [lr, #6] -_022FEC68: - add r8, r8, #1 - cmp r8, #4 - blt _022FEC3C - cmp ip, #0 - beq _022FEC88 - ldr r1, _022FED94 ; =0x00000DF2 - mov r0, sb - bl LogMessageByIdWithPopupCheckUser -_022FEC88: - bl ov29_022FF168 - bl ov29_022EC85C - cmp r0, #0 - bne _022FECB4 - bl ov29_022FEFC8 - bl ov29_022FEDBC - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FECB4: - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl ov29_022EC85C - cmp r0, #0 - bne _022FECD8 - bl ov29_02346888 -_022FECD8: - mov r0, #0 - bl ov29_022E3A58 - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r6, #0x14e] - cmp r0, #0 - cmpeq r4, #0 - bne _022FED68 - mov r0, sb - add r1, sb, #4 - bl ov29_022FFC9C - cmp r0, #0 - beq _022FED58 - ldr r0, [r6, #0x110] - cmp r0, #1 - ble _022FED50 - mov r0, #0 - bl DisplayActions - mov r0, sb - bl EntityIsValid__022FED98 - cmp r0, #0 - beq _022FED48 - bl IsFloorOver - cmp r0, #0 - beq _022FED50 -_022FED48: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FED50: - mov r0, sb - bl ov29_02321104 -_022FED58: - mov r0, sb - bl ov29_0230FC24 - mov r0, sb - bl EnemyEvolution -_022FED68: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FED70: .word 0x02353538 -_022FED74: .word 0x022C4F3C -_022FED78: .word 0x022C4F3D -_022FED7C: .word 0x0237C9C0 -_022FED80: .word 0x0237CA6C -_022FED84: .word 0x0237CA68 -_022FED88: .word 0x0235171C -_022FED8C: .word 0x0235171E -_022FED90: .word 0x00000DF1 -_022FED94: .word 0x00000DF2 - arm_func_end ExecuteMonsterAction - - arm_func_start EntityIsValid__022FED98 -EntityIsValid__022FED98: ; 0x022FED98 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__022FED98 - - arm_func_start ov29_022FEDBC -ov29_022FEDBC: ; 0x022FEDBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r4, #0 -_022FEDC8: - ldr r0, _022FEFB8 ; =0x02353538 - mov r6, #0 - ldr r0, [r0] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__022FED98 - cmp r0, #0 - ldrne r8, [r7, #0xb4] - ldrneb r5, [r8, #0x177] - cmpne r5, #0xff - beq _022FEFA4 - mov r0, r7 - mov r1, #1 - bl ov29_02300DCC - cmp r0, #0 - movne r0, #0xff - strneb r0, [r8, #0x177] - bne _022FEFA4 - mov r0, r7 - bl ov29_023007A8 - cmp r0, #0 - moveq r0, #0xff - streqb r0, [r8, #0x177] - beq _022FEFA4 - ldrb r0, [r8, #0xf3] - cmp r0, #1 - moveq r0, #0xff - streqb r0, [r8, #0x177] - beq _022FEFA4 - mov r0, #4 - bl DungeonRandInt - ldr fp, _022FEFBC ; =0x0000020D - mov sb, r6 - add lr, r8, #0x124 - sub r1, fp, #0xc6 - b _022FEF80 -_022FEE60: - ldrb r2, [lr, r0, lsl #3] - add sl, lr, r0, lsl #3 - tst r2, #1 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - beq _022FEF70 - add ip, sp, #8 - mov r3, #4 -_022FEE84: - ldrh r2, [sl], #2 - subs r3, r3, #1 - strh r2, [ip], #2 - bne _022FEE84 - ldrh r2, [sp, #0xc] - cmp r2, #0x8a - cmpne r2, r1 - cmpne r2, fp - beq _022FEF70 - mov sb, #0 - add r6, r8, #0x124 - mov fp, #1 - b _022FEF20 -_022FEEB8: - ldrb r0, [r6, sb, lsl #3] - add sl, r6, sb, lsl #3 - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _022FEF1C - ldrb r0, [r8, #7] - cmp r0, #0 - bne _022FEEEC - ldrb r0, [sl] - tst r0, #4 - beq _022FEF1C -_022FEEEC: - ldrh r0, [sl, #4] - cmp r0, #0xe3 - bne _022FEF1C - mov r0, r7 - mov r1, sl - mov r2, #1 - bl CanMonsterUseMove - cmp r0, #0 - beq _022FEF1C - add r0, sl, #6 - bl TickStatusTurnCounter - b _022FEF28 -_022FEF1C: - add sb, sb, #1 -_022FEF20: - cmp sb, #4 - blt _022FEEB8 -_022FEF28: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022FEFC0 ; =0x00000DF3 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - and r0, r5, #7 - strb r0, [r8, #0x4c] - mov r1, #0 - add r2, sp, #8 - stmia sp, {r1, r2} - mov r0, r7 - mov r2, r1 - mov r3, #1 - bl ov29_02322374 - mov r6, #1 - b _022FEF88 -_022FEF70: - add r0, r0, #1 - cmp r0, #4 - moveq r0, #0 - add sb, sb, #1 -_022FEF80: - cmp sb, #4 - blt _022FEE60 -_022FEF88: - mov r0, #0xff - strb r0, [r8, #0x177] - cmp r6, #0 - beq _022FEFA4 - ldr r1, _022FEFC4 ; =0x00001204 - mov r0, r7 - bl ov29_022E56A0 -_022FEFA4: - add r4, r4, #1 - cmp r4, #0x14 - blt _022FEDC8 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FEFB8: .word 0x02353538 -_022FEFBC: .word 0x0000020D -_022FEFC0: .word 0x00000DF3 -_022FEFC4: .word 0x00001204 - arm_func_end ov29_022FEDBC - - arm_func_start ov29_022FEFC8 -ov29_022FEFC8: ; 0x022FEFC8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r5, #0 -_022FEFD4: - ldr r0, _022FF160 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__022FED98 - cmp r0, #0 - ldrne sl, [r8, #0xb4] - ldrneb r7, [sl, #0x178] - cmpne r7, #0xff - beq _022FF14C - mov r0, r8 - mov r1, #1 - bl ov29_02300DCC - cmp r0, #0 - movne r0, #0xff - strneb r0, [sl, #0x178] - strneb r0, [sl, #0x177] - bne _022FF14C - mov r0, r8 - bl ov29_023007A8 - cmp r0, #0 - moveq r0, #0xff - streqb r0, [sl, #0x178] - streqb r0, [sl, #0x177] - beq _022FF14C - ldrb r0, [sl, #0xf3] - cmp r0, #1 - moveq r0, #0xff - streqb r0, [sl, #0x178] - streqb r0, [sl, #0x177] - beq _022FF14C - mov r6, #0 - add r4, sl, #0x124 - mov fp, #1 - b _022FF0F8 -_022FF068: - ldrb r0, [r4, r6, lsl #3] - add sb, r4, r6, lsl #3 - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _022FF0F4 - ldrb r0, [sl, #7] - cmp r0, #0 - bne _022FF09C - ldrb r0, [sb] - tst r0, #4 - beq _022FF0F4 -_022FF09C: - ldrh r0, [sb, #4] - cmp r0, #0x19 - bne _022FF0F4 - mov r0, r8 - mov r1, sb - mov r2, #1 - bl CanMonsterUseMove - cmp r0, #0 - beq _022FF0F4 - add r2, sp, #8 - mov r3, sb - mov r1, #4 -_022FF0CC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _022FF0CC - add r0, sb, #6 - bl TickStatusTurnCounter - mov r0, r8 - mov r1, sb - bl ov29_022FAA04 - b _022FF100 -_022FF0F4: - add r6, r6, #1 -_022FF0F8: - cmp r6, #4 - blt _022FF068 -_022FF100: - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _022FF164 ; =0x00000DF4 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - and r0, r7, #7 - mov r1, #0 - strb r0, [sl, #0x4c] - add r3, sp, #8 - stmia sp, {r1, r3} - mov r0, r8 - mov r2, r1 - mov r3, #1 - bl ov29_02322374 - mov r0, #0xff - strb r0, [sl, #0x178] - strb r0, [sl, #0x177] -_022FF14C: - add r5, r5, #1 - cmp r5, #0x14 - blt _022FEFD4 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FF160: .word 0x02353538 -_022FF164: .word 0x00000DF4 - arm_func_end ov29_022FEFC8 - - arm_func_start ov29_022FF168 -ov29_022FF168: ; 0x022FF168 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 - ldr r5, _022FF1C4 ; =0x02353538 - mov r6, r4 -_022FF178: - ldr r0, [r5] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__022FED98 - cmp r0, #0 - ldrne r2, [r7, #0xb4] - ldrneb r0, [r2, #0x15c] - cmpne r0, #0 - beq _022FF1B4 - mov r0, r7 - mov r1, r7 - strb r6, [r2, #0x15c] - bl ov29_02313CE4 -_022FF1B4: - add r4, r4, #1 - cmp r4, #0x14 - blt _022FF178 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FF1C4: .word 0x02353538 - arm_func_end ov29_022FF168 - - arm_func_start HasStatusThatPreventsActing -HasStatusThatPreventsActing: ; 0x022FF1C8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r0, r4, #0x4a - mov r1, #1 - bl SetMonsterActionFields - ldrb r0, [r4, #0xbd] - cmp r0, #1 - cmpne r0, #3 - cmpne r0, #5 - bne _022FF20C - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF20C: - ldrb r0, [r4, #0xc4] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _022FF27C -_022FF21C: ; jump table - b _022FF27C ; case 0 - b _022FF238 ; case 1 - b _022FF27C ; case 2 - b _022FF24C ; case 3 - b _022FF260 ; case 4 - b _022FF27C ; case 5 - b _022FF274 ; case 6 -_022FF238: - ldr r1, _022FF3DC ; =0x00000C28 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF24C: - ldr r1, _022FF3E0 ; =0x00000C29 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF260: - ldr r1, _022FF3E4 ; =0x00000C2A - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF274: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF27C: - ldrb r0, [r4, #0xd0] - cmp r0, #3 - beq _022FF294 - cmp r0, #7 - beq _022FF2A8 - b _022FF2BC -_022FF294: - ldr r1, _022FF3E8 ; =0x00000C2B - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF2A8: - ldr r1, _022FF3EC ; =0x00000C2C - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF2BC: - ldrb r0, [r4, #0xd2] - cmp r0, #1 - bne _022FF2DC - ldr r1, _022FF3F0 ; =0x00000C2D - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF2DC: - ldrb r0, [r4, #0xd8] - cmp r0, #2 - bne _022FF320 - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - mov r0, #8 - bl DungeonRandInt - strb r0, [r4, #0x4c] - ldrsh r2, [r5, #4] - add r1, r4, #0x100 - mov r0, #1 - strh r2, [r1, #0x7e] - ldrsh r2, [r5, #6] - sub r2, r2, #1 - strh r2, [r1, #0x80] - ldmia sp!, {r3, r4, r5, pc} -_022FF320: - ldrb r0, [r4, #9] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - beq _022FF3AC - ldrb r1, [r4, #0x4c] - mov r0, r5 - bl ov29_02300E78 - cmp r0, #0 - beq _022FF368 - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - b _022FF3A4 -_022FF368: - mov r0, #2 - bl DungeonRandInt - cmp r0, #0 - beq _022FF39C - mov r0, #8 - bl DungeonRandInt - and r1, r0, #0xff - and r0, r1, #7 - strb r0, [r4, #0x4c] - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - b _022FF3A4 -_022FF39C: - mov r0, r5 - bl ChooseAiMove -_022FF3A4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022FF3AC: - ldrb r0, [r4, #0xf1] - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - mov r0, #8 - bl DungeonRandInt - strb r0, [r4, #0x4c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FF3DC: .word 0x00000C28 -_022FF3E0: .word 0x00000C29 -_022FF3E4: .word 0x00000C2A -_022FF3E8: .word 0x00000C2B -_022FF3EC: .word 0x00000C2C -_022FF3F0: .word 0x00000C2D - arm_func_end HasStatusThatPreventsActing - - arm_func_start ov29_022FF3F4 -ov29_022FF3F4: ; 0x022FF3F4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r0 - mov r4, #0 - ldr r6, [r7, #0xb4] - mov r0, r4 - mov r1, r7 - mov r2, r4 - bl SubstitutePlaceholderStringTags - add r0, r6, #0x4a - mov r1, #1 - bl SetMonsterActionFields - ldrb r0, [r6, #0xbd] - cmp r0, #1 - cmpne r0, #3 - cmpne r0, #5 - bne _022FF448 - ldr r1, _022FF60C ; =0x00000C2E - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF448: - ldrb r0, [r6, #0xc4] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _022FF4B8 -_022FF458: ; jump table - b _022FF4B8 ; case 0 - b _022FF474 ; case 1 - b _022FF4B8 ; case 2 - b _022FF488 ; case 3 - b _022FF49C ; case 4 - b _022FF4B8 ; case 5 - b _022FF4B0 ; case 6 -_022FF474: - ldr r1, _022FF610 ; =0x00000C28 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF488: - ldr r1, _022FF614 ; =0x00000C29 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF49C: - ldr r1, _022FF618 ; =0x00000C2A - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF4B0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF4B8: - ldrb r0, [r6, #0xd0] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _022FF51C -_022FF4C8: ; jump table - b _022FF51C ; case 0 - b _022FF51C ; case 1 - b _022FF4EC ; case 2 - b _022FF4F4 ; case 3 - b _022FF51C ; case 4 - b _022FF51C ; case 5 - b _022FF51C ; case 6 - b _022FF508 ; case 7 - b _022FF51C ; case 8 -_022FF4EC: - mov r4, #1 - b _022FF51C -_022FF4F4: - ldr r1, _022FF61C ; =0x00000C2B - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF508: - ldr r1, _022FF620 ; =0x00000C2C - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF51C: - ldrb r0, [r6, #0xd2] - cmp r0, #1 - bne _022FF53C - ldr r1, _022FF624 ; =0x00000C2D - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF53C: - cmp r0, #0 - cmpne r0, #0xb - cmpne r0, #0xc - beq _022FF604 - cmp r4, #0 - beq _022FF564 - ldr r1, _022FF628 ; =0x00000C2F - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _022FF5FC -_022FF564: - mov r5, #0 - add r4, r6, #0x124 - mov r8, r5 - mov sb, #1 - b _022FF5F4 -_022FF578: - ldrb r0, [r4, r5, lsl #3] - mov r1, r5, lsl #3 - tst r0, #1 - movne r0, sb - moveq r0, r8 - tst r0, #0xff - beq _022FF5F0 - mov r0, r7 - add r1, r4, r1 - bl ov29_023245A4 - cmp r0, #0 - beq _022FF5F0 - ldrb r0, [r6, #0xd4] - cmp r0, r5 - bne _022FF5F0 - b _022FF5CC -_022FF5B8: - add r0, r6, r5, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #2 - beq _022FF5D4 - sub r5, r5, #1 -_022FF5CC: - cmp r5, #0 - bgt _022FF5B8 -_022FF5D4: - ldrb r1, [r6, #0x4e] - mov r2, r5, lsl #0x10 - add r0, r6, #0x4a - mov r2, r2, asr #0x10 - bl ov29_022EBC98 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_022FF5F0: - add r5, r5, #1 -_022FF5F4: - cmp r5, #4 - blt _022FF578 -_022FF5FC: - mov r0, r7 - bl ov29_02318D58 -_022FF604: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FF60C: .word 0x00000C2E -_022FF610: .word 0x00000C28 -_022FF614: .word 0x00000C29 -_022FF618: .word 0x00000C2A -_022FF61C: .word 0x00000C2B -_022FF620: .word 0x00000C2C -_022FF624: .word 0x00000C2D -_022FF628: .word 0x00000C2F - arm_func_end ov29_022FF3F4 - - arm_func_start ov29_022FF62C -ov29_022FF62C: ; 0x022FF62C - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetMobilityType - cmp r4, #0 - beq _022FF660 - cmp r0, #0 - cmpne r0, #4 - moveq r1, #1 - movne r1, #0 - tst r1, #0xff - ldrne r0, _022FF670 ; =0x0237C9B8 - ldrneb r0, [r0, #5] - ldmneia sp!, {r4, pc} -_022FF660: - cmp r0, #4 - ldrhs r1, _022FF670 ; =0x0237C9B8 - ldrhsb r0, [r1, r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_022FF670: .word 0x0237C9B8 - arm_func_end ov29_022FF62C - - arm_func_start ov29_022FF674 -ov29_022FF674: ; 0x022FF674 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #0xef] - cmp r0, #4 - moveq r2, #1 - movne r2, #0 - mov r0, r1 - and r1, r2, #0xff - bl ov29_022FF62C - mov r4, r0 - cmp r4, #3 - beq _022FF6BC - mov r0, r5 - bl HasConditionalGroundImmunity - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} -_022FF6BC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022FF674 - - arm_func_start ov29_022FF6C4 -ov29_022FF6C4: ; 0x022FF6C4 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r1, [r4, #0xc] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - ldrh r1, [r4] - tst r1, #0x10 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r1, #0 - bl ov29_022FF62C - ldrh r1, [r4] - cmp r0, #3 - and r1, r1, #3 - addls pc, pc, r0, lsl #2 - b _022FF754 -_022FF708: ; jump table - b _022FF718 ; case 0 - b _022FF728 ; case 1 - b _022FF744 ; case 2 - b _022FF754 ; case 3 -_022FF718: - cmp r1, #1 - bne _022FF75C - mov r0, #0 - ldmia sp!, {r4, pc} -_022FF728: - cmp r1, #2 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r1, #1 - bne _022FF75C - mov r0, #0 - ldmia sp!, {r4, pc} -_022FF744: - cmp r1, #0 - beq _022FF75C - mov r0, #0 - ldmia sp!, {r4, pc} -_022FF754: - mov r0, #0 - ldmia sp!, {r4, pc} -_022FF75C: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov29_022FF6C4 - - arm_func_start ov29_022FF764 -ov29_022FF764: ; 0x022FF764 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - ldr r5, [r6, #0xb4] - bl GetTile - ldrsh r1, [r7] - mov r4, r0 - cmp r1, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r0, [r7, #2] - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0x38 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0x20 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_02336204 - cmp r0, #0 - bne _022FF810 - ldrb r0, [r5, #0xef] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022FF810: - ldrsh r1, [r5, #2] - mov r0, r6 - bl ov29_022FF674 - ldrh r2, [r4] - mov r1, r0 - mov r0, r6 - and r4, r2, #3 - bl ov29_022FF8C8 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022FF888 -_022FF83C: ; jump table - b _022FF84C ; case 0 - b _022FF85C ; case 1 - b _022FF878 ; case 2 - b _022FF888 ; case 3 -_022FF84C: - cmp r4, #1 - bne _022FF890 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF85C: - cmp r4, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #1 - bne _022FF890 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF878: - cmp r4, #0 - beq _022FF890 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF888: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FF890: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FF764 - - arm_func_start ItemIsActive__022FF898 -ItemIsActive__022FF898: ; 0x022FF898 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__022FF898 - - arm_func_start ov29_022FF8C8 -ov29_022FF8C8: ; 0x022FF8C8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - cmp r4, #3 - beq _022FF8EC - mov r1, #0xc - bl IqSkillIsEnabled - cmp r0, #0 - movne r4, #2 -_022FF8EC: - mov r0, r5 - mov r1, #0xd - bl IqSkillIsEnabled - cmp r0, #0 - movne r4, #3 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022FF8C8 - - arm_func_start ov29_022FF908 -ov29_022FF908: ; 0x022FF908 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldrb r1, [r4, #0xef] - cmp r1, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrsh r1, [r4, #2] - mov r0, r5 - bl ov29_022FF674 - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022FF908 - - arm_func_start ov29_022FF958 -ov29_022FF958: ; 0x022FF958 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - ldr r5, [r6, #0xb4] - bl GetTile - ldrsh r1, [r7] - mov r4, r0 - cmp r1, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r0, [r7, #2] - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0x38 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0x20 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #1 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_02336204 - cmp r0, #0 - bne _022FFA0C - ldrb r0, [r5, #0xef] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA0C: - ldrsh r1, [r5, #2] - mov r0, r6 - bl ov29_022FF674 - ldrh r2, [r4] - mov r1, r0 - mov r0, r6 - and r4, r2, #3 - bl ov29_022FF8C8 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022FFA84 -_022FFA38: ; jump table - b _022FFA48 ; case 0 - b _022FFA58 ; case 1 - b _022FFA74 ; case 2 - b _022FFA84 ; case 3 -_022FFA48: - cmp r4, #1 - bne _022FFA8C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA58: - cmp r4, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #1 - bne _022FFA8C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA74: - cmp r4, #0 - beq _022FFA8C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA84: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFA8C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FF958 - - arm_func_start ov29_022FFA94 -ov29_022FFA94: ; 0x022FFA94 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - ldr r5, [r6, #0xb4] - bl GetTile - ldrsh r1, [r7] - mov r4, r0 - cmp r1, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r0, [r7, #2] - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0x38 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0x20 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #1 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r1, [r5, #2] - mov r0, r6 - bl ov29_022FF674 - ldrh r1, [r4] - cmp r0, #3 - and r1, r1, #3 - addls pc, pc, r0, lsl #2 - b _022FFB80 -_022FFB34: ; jump table - b _022FFB44 ; case 0 - b _022FFB54 ; case 1 - b _022FFB70 ; case 2 - b _022FFB70 ; case 3 -_022FFB44: - cmp r1, #1 - bne _022FFB88 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFB54: - cmp r1, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #1 - bne _022FFB88 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFB70: - cmp r1, #0 - beq _022FFB88 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFB80: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFB88: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FFA94 - - arm_func_start ov29_022FFB90 -ov29_022FFB90: ; 0x022FFB90 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - ldr r5, [r6, #0xb4] - bl GetTile - ldrsh r1, [r7] - mov r4, r0 - cmp r1, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r0, [r7, #2] - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0x38 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0x20 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #1 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_02336204 - cmp r0, #0 - bne _022FFC44 - ldrb r0, [r5, #0xef] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022FFC44: - ldrsh r1, [r5, #2] - mov r0, r6 - bl ov29_022FF674 - ldrh r2, [r4] - mov r1, r0 - mov r0, r6 - and r4, r2, #3 - bl ov29_022FF8C8 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022FFC94 -_022FFC70: ; jump table - b _022FFC80 ; case 0 - b _022FFC80 ; case 1 - b _022FFC80 ; case 2 - b _022FFC94 ; case 3 -_022FFC80: - cmp r4, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFC94: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FFB90 - - arm_func_start ov29_022FFC9C -ov29_022FFC9C: ; 0x022FFC9C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r6, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - ldr r5, [r6, #0xb4] - bl GetTile - ldrsh r1, [r7] - mov r4, r0 - cmp r1, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r0, [r7, #2] - cmp r0, #0 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - cmp r1, #0x38 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - cmp r0, #0x20 - movge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0xc] - cmp r1, #0 - beq _022FFD38 - ldr r0, [r1] - cmp r0, #1 - bne _022FFD30 - ldr r0, [r1, #0xb4] - cmp r0, r5 - beq _022FFD38 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFD30: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFD38: - bl ov29_02336204 - cmp r0, #0 - bne _022FFD6C - ldrb r0, [r5, #0xef] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_022FFD6C: - ldrsh r1, [r5, #2] - mov r0, r6 - bl ov29_022FF674 - ldrh r2, [r4] - mov r1, r0 - mov r0, r6 - and r4, r2, #3 - bl ov29_022FF8C8 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022FFDE4 -_022FFD98: ; jump table - b _022FFDA8 ; case 0 - b _022FFDB8 ; case 1 - b _022FFDD4 ; case 2 - b _022FFDE4 ; case 3 -_022FFDA8: - cmp r4, #1 - bne _022FFDEC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFDB8: - cmp r4, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #1 - bne _022FFDEC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFDD4: - cmp r4, #0 - beq _022FFDEC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFDE4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_022FFDEC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_022FFC9C - - arm_func_start CalcSpeedStage -CalcSpeedStage: ; 0x022FFDF4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r7, r1 - ldr r6, [r8, #0xb4] - bl GetApparentWeather - mov r4, #0 - mov r5, r0 - mov r1, r4 -_022FFE14: - add r2, r6, r1 - ldrb r0, [r2, #0x119] - add r1, r1, #1 - cmp r0, #0 - ldrb r0, [r2, #0x114] - subne r4, r4, r7 - cmp r0, #0 - addne r4, r4, r7 - cmp r1, #5 - blt _022FFE14 - ldrb r0, [r6, #0xbf] - cmp r0, #4 - ldrsh r0, [r6, #2] - subeq r4, r4, #1 - bl GetSpeedStatus - add r4, r4, r0 - mov r0, r8 - mov r1, #6 - bl MonsterIsType - cmp r0, #0 - beq _022FFE78 - mov r0, r8 - bl GetApparentWeather - cmp r0, #7 - addeq r4, r4, #1 -_022FFE78: - mov r0, r8 - mov r1, #0x3a - bl IqSkillIsEnabled - cmp r0, #0 - ldr r1, _022FFF18 ; =0x023535B8 - addne r4, r4, #1 - ldrb r0, [r1, r5] - cmp r0, #0 - beq _022FFEB0 - ldrb r1, [r1, r5] - mov r0, r8 - bl ExclusiveItemEffectIsActive__022FFF28 - cmp r0, #0 - addne r4, r4, #1 -_022FFEB0: - ldrsh r1, [r6, #4] - ldr r0, _022FFF1C ; =0x000001A5 - cmp r1, r0 - addne r0, r0, #0x72 - cmpne r1, r0 - ldrsh r1, [r6, #2] - ldr r0, _022FFF20 ; =0x0000017F - addeq r4, r4, #1 - cmp r1, r0 - addne r0, r0, #0x258 - cmpne r1, r0 - bne _022FFEFC - ldrb r0, [r6, #6] - cmp r0, #0 - ldrne r0, _022FFF24 ; =0x02353538 - ldrne r0, [r0] - ldrneb r0, [r0, #0x790] - cmpne r0, #0 - addne r4, r4, #1 -_022FFEFC: - cmp r4, #0 - movlt r4, #0 - cmp r4, #5 - movge r4, #4 - mov r0, r4 - str r4, [r6, #0x110] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FFF18: .word 0x023535B8 -_022FFF1C: .word 0x000001A5 -_022FFF20: .word 0x0000017F -_022FFF24: .word 0x02353538 - arm_func_end CalcSpeedStage - - arm_func_start ExclusiveItemEffectIsActive__022FFF28 -ExclusiveItemEffectIsActive__022FFF28: ; 0x022FFF28 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__022FFF28 - - arm_func_start CalcSpeedStageWrapper -CalcSpeedStageWrapper: ; 0x022FFF4C - ldr ip, _022FFF58 ; =CalcSpeedStage - mov r1, #1 - bx ip - .align 2, 0 -_022FFF58: .word CalcSpeedStage - arm_func_end CalcSpeedStageWrapper - - arm_func_start GetNumberOfAttacks -GetNumberOfAttacks: ; 0x022FFF5C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r5, #0 - mov sl, r0 - mov sb, r1 - mov r6, r5 - mov r7, r5 - bl EntityIsValid__023000E4 - cmp r0, #0 - moveq r0, r5 - beq _023000D4 - mov r0, sl - bl GetApparentWeather - mov r8, r0 - cmp r8, #4 - bne _022FFFB8 - mov r0, sl - mov r1, #0x1b - bl AbilityIsActive - cmp r0, #0 - movne r5, #1 - movne r6, r5 - b _022FFFD8 -_022FFFB8: - cmp r8, #1 - bne _022FFFD8 - mov r0, sl - mov r1, #0x4a - bl AbilityIsActive - cmp r0, #0 - movne r5, #1 - movne r6, r5 -_022FFFD8: - ldr r4, _023000DC ; =0x023535B0 - ldrb r0, [r4, r8] - cmp r0, #0 - beq _02300000 - ldrb r1, [r4, r8] - mov r0, sl - bl ExclusiveItemEffectIsActive__022FFF28 - cmp r0, #0 - ldrneb r7, [r4, r8] - movne r5, #1 -_02300000: - mov r0, sl - mov r1, #0x54 - bl AbilityIsActive - cmp r0, #0 - beq _02300028 - ldr r0, [sl, #0xb4] - ldrsh r0, [r0, #0x66] - cmp r0, #0 - moveq r5, #1 - moveq r6, r5 -_02300028: - cmp sb, #0 - beq _023000C8 - cmp r6, #0 - beq _02300068 - ldr r0, [sl, #0xb4] - mov r2, r5 - mov r1, #0x40 - bl ov29_023023C0 - cmp r0, #0 - beq _023000C8 - mov r0, sl - bl ov29_022E655C - mov r0, sl - mov r1, #0xc30 - bl LogMessageByIdWithPopupCheckUser - b _023000C8 -_02300068: - cmp r7, #0 - beq _023000C8 - ldr r0, [sl, #0xb4] - mov r2, r5 - mov r1, #0x40 - bl ov29_023023C0 - cmp r0, #0 - beq _023000C8 - mov r0, sl - bl ov29_022E655C - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r2, sp, #0 - mov r0, sl - mov r1, r7 - bl ov29_0230F654 - add r1, sp, #0 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _023000E0 ; =0x00000C31 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_023000C8: - cmp r5, #0 - movne r0, #2 - moveq r0, #1 -_023000D4: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023000DC: .word 0x023535B0 -_023000E0: .word 0x00000C31 - arm_func_end GetNumberOfAttacks - - arm_func_start EntityIsValid__023000E4 -EntityIsValid__023000E4: ; 0x023000E4 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__023000E4 - - arm_func_start ov29_02300108 -ov29_02300108: ; 0x02300108 - ldr r1, _02300160 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x1a000 - ldrb r2, [r1, #0x23e] - cmp r2, #0 - ldreqb r2, [r1, #0x245] - cmpeq r2, #0 - bne _0230013C - ldrb r1, [r1, #0x244] - cmp r1, #0 - ldreqb r1, [r0, #0xef] - cmpeq r1, #1 - bne _0230014C -_0230013C: - ldrb r1, [r0, #6] - cmp r1, #0 - movne r0, #1 - bxne lr -_0230014C: - ldrb r0, [r0, #0xd8] - cmp r0, #2 - moveq r0, #2 - movne r0, #0 - bx lr - .align 2, 0 -_02300160: .word 0x02353538 - arm_func_end ov29_02300108 - - arm_func_start ov29_02300164 -ov29_02300164: ; 0x02300164 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl ov29_02300108 - cmp r0, #1 - bne _02300190 - ldr r1, _02300274 ; =0x00000C34 - mov r0, r5 - bl sub_020258E4 - ldmia sp!, {r3, r4, r5, pc} -_02300190: - cmp r0, #2 - bne _023001A8 - ldr r1, _02300278 ; =0x00000C32 - mov r0, r5 - bl sub_020258E4 - ldmia sp!, {r3, r4, r5, pc} -_023001A8: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _0230025C - ldrb r0, [r4, #0xbc] - cmp r0, #0xb - bne _023001DC - mov r0, #0 - bl GetExplorerMazeMonster - mov r1, r0 - mov r0, r5 - mov r2, #0x4e - bl sub_02056084 - ldmia sp!, {r3, r4, r5, pc} -_023001DC: - cmp r0, #0xc - bne _02300200 - mov r0, #1 - bl GetExplorerMazeMonster - mov r1, r0 - mov r0, r5 - mov r2, #0x4e - bl sub_02056084 - ldmia sp!, {r3, r4, r5, pc} -_02300200: - cmp r0, #0xd - bne _02300224 - mov r0, #2 - bl GetExplorerMazeMonster - mov r1, r0 - mov r0, r5 - mov r2, #0x4e - bl sub_02056084 - ldmia sp!, {r3, r4, r5, pc} -_02300224: - cmp r0, #0xe - bne _02300248 - mov r0, #3 - bl GetExplorerMazeMonster - mov r1, r0 - mov r0, r5 - mov r2, #0x4e - bl sub_02056084 - ldmia sp!, {r3, r4, r5, pc} -_02300248: - ldrsh r1, [r4, #4] - mov r0, r5 - mov r2, #0x4e - bl GetNameWithGender - ldmia sp!, {r3, r4, r5, pc} -_0230025C: - ldrsh r0, [r4, #0xc] - bl GetActiveTeamMember - mov r1, r0 - mov r0, r5 - bl sub_020585B4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02300274: .word 0x00000C34 -_02300278: .word 0x00000C32 - arm_func_end ov29_02300164 - - arm_func_start ov29_0230027C -ov29_0230027C: ; 0x0230027C - stmdb sp!, {r4, lr} - sub sp, sp, #0x100 - ldrb r2, [r1, #0xd8] - mov r4, r0 - cmp r2, #2 - bne _023002B4 - ldr r1, _023002C0 ; =0x00000C32 - add r0, sp, #0 - bl sub_020258E4 - ldr r1, _023002C4 ; =0x023527C0 - add r2, sp, #0 - mov r0, r4 - bl SprintfStatic - b _023002B8 -_023002B4: - bl ov29_02300164 -_023002B8: - add sp, sp, #0x100 - ldmia sp!, {r4, pc} - .align 2, 0 -_023002C0: .word 0x00000C32 -_023002C4: .word 0x023527C0 - arm_func_end ov29_0230027C - - arm_func_start SprintfStatic -SprintfStatic: ; 0x023002C8 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl Vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic - - arm_func_start ov29_023002F0 -ov29_023002F0: ; 0x023002F0 - stmdb sp!, {r3, r4, r5, lr} - ldrb r3, [r1, #0xd8] - mov r5, r0 - mov r4, r2 - cmp r3, #2 - bne _02300328 - ldr r0, _02300350 ; =0x00000C33 - bl StringFromMessageId - mov r3, r0 - ldr r1, _02300354 ; =0x023527D0 - mov r0, r5 - mov r2, r4 - bl SprintfStatic - ldmia sp!, {r3, r4, r5, pc} -_02300328: - ldrb r3, [r1, #6] - cmp r3, #0 - beq _02300344 - ldrsh r1, [r1, #4] - mov r2, #0x4e - bl GetName - ldmia sp!, {r3, r4, r5, pc} -_02300344: - ldrsh r1, [r1, #0xc] - bl sub_02058534 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02300350: .word 0x00000C33 -_02300354: .word 0x023527D0 - arm_func_end ov29_023002F0 - - arm_func_start ov29_02300358 -ov29_02300358: ; 0x02300358 - stmdb sp!, {r4, lr} - ldr r2, _02300400 ; =0x02353538 - mov r4, r0 - ldr r0, [r2] - add r0, r0, #0x1a000 - ldrb r2, [r0, #0x23e] - cmp r2, #0 - ldreqb r0, [r0, #0x245] - cmpeq r0, #0 - bne _0230038C - ldrb r0, [r1, #0xef] - cmp r0, #1 - bne _023003B0 -_0230038C: - ldrb r0, [r1, #6] - cmp r0, #0 - beq _023003B0 - ldr r0, _02300404 ; =0x00000C35 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - bl Strcpy - ldmia sp!, {r4, pc} -_023003B0: - ldrb r0, [r1, #0xd8] - cmp r0, #2 - bne _023003D4 - ldr r0, _02300408 ; =0x00000C33 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - bl Strcpy - ldmia sp!, {r4, pc} -_023003D4: - ldrb r0, [r1, #6] - cmp r0, #0 - beq _023003F0 - ldrsh r1, [r1, #4] - mov r0, r4 - bl GetNameRaw - ldmia sp!, {r4, pc} -_023003F0: - ldrsh r1, [r1, #0xc] - mov r0, r4 - bl sub_0205858C - ldmia sp!, {r4, pc} - .align 2, 0 -_02300400: .word 0x02353538 -_02300404: .word 0x00000C35 -_02300408: .word 0x00000C33 - arm_func_end ov29_02300358 - - arm_func_start ov29_0230040C -ov29_0230040C: ; 0x0230040C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl sub_02024FB8 - ldrsh r1, [sp, #0x18] - mov r4, r0 - cmp r1, #0 - beq _02300448 - cmp r1, #1 - beq _02300454 - cmp r1, #2 - beq _02300488 - b _02300490 -_02300448: - mov r1, r5 - bl ov29_02300164 - b _02300490 -_02300454: - mov r0, r5 - bl ov29_02300108 - cmp r0, #0 - bne _02300478 - ldrsh r1, [r5, #4] - mov r0, r4 - mov r2, #0x6a - bl GetNameWithGender - b _02300490 -_02300478: - mov r0, r4 - mov r1, r5 - bl ov29_02300164 - b _02300490 -_02300488: - mov r1, r5 - bl ov29_02300358 -_02300490: - cmp r7, #0 - addne r0, r7, r6, lsl #2 - strne r4, [r0, #0x38] - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r4 - bl ov29_0234B0B4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0230040C - - arm_func_start ov29_023004B0 -ov29_023004B0: ; 0x023004B0 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xbd] - cmp r0, #1 - moveq r0, #1 - bxeq lr - cmp r0, #3 - moveq r0, #1 - bxeq lr - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_023004B0 - - arm_func_start ov29_023004E4 -ov29_023004E4: ; 0x023004E4 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xbf] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_023004E4 - - arm_func_start ov29_02300500 -ov29_02300500: ; 0x02300500 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xc4] - cmp r0, #3 - cmpne r0, #5 - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end ov29_02300500 - - arm_func_start ov29_02300520 -ov29_02300520: ; 0x02300520 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xd0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02300520 - - arm_func_start ov29_0230053C -ov29_0230053C: ; 0x0230053C - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #1 - moveq r0, #1 - bxeq lr - cmp r0, #2 - moveq r0, #1 - bxeq lr - cmp r0, #4 - moveq r0, #1 - bxeq lr - cmp r0, #5 - moveq r0, #1 - bxeq lr - cmp r0, #6 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_0230053C - - arm_func_start ov29_02300588 -ov29_02300588: ; 0x02300588 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xe0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02300588 - - arm_func_start ov29_023005A4 -ov29_023005A4: ; 0x023005A4 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xec] - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_023005A4 - - arm_func_start ov29_023005C0 -ov29_023005C0: ; 0x023005C0 - stmdb sp!, {r4, lr} - ldr r4, [r0, #0xb4] - bl IsBlinded - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - ldrb r0, [r4, #0xf1] - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end ov29_023005C0 - - arm_func_start ov29_023005FC -ov29_023005FC: ; 0x023005FC - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xf3] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_023005FC - - arm_func_start ov29_02300618 -ov29_02300618: ; 0x02300618 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xf5] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02300618 - - arm_func_start ov29_02300634 -ov29_02300634: ; 0x02300634 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0xb4] - mov r5, r1 - bl ov29_023004B0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_023004E4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02300500 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02300520 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_0230053C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02300588 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_023005A4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - bl ov29_023005C0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_023005FC - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02300618 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldrb r0, [r4, #0xfe] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldrb r0, [r4, #0x106] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov ip, #0 - add r3, r4, #0x124 - mov r1, ip - mov r2, #1 - b _02300770 -_02300740: - ldrb r0, [r3, ip, lsl #3] - add lr, r3, ip, lsl #3 - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _0230076C - ldrh r0, [lr, #2] - tst r0, #1 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_0230076C: - add ip, ip, #1 -_02300770: - cmp ip, #4 - blt _02300740 - mov r1, #0 - b _02300798 -_02300780: - add r0, r4, r1 - ldrb r0, [r0, #0x119] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - add r1, r1, #1 -_02300798: - cmp r1, #5 - blt _02300780 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_02300634 - - arm_func_start ov29_023007A8 -ov29_023007A8: ; 0x023007A8 - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #0xbd] - cmp r0, #1 - moveq r0, #1 - bxeq lr - cmp r0, #5 - moveq r0, #1 - bxeq lr - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_023007A8 - - arm_func_start ov29_023007DC -ov29_023007DC: ; 0x023007DC - ldr r3, [r0, #0xb4] - ldr r0, _02300814 ; =0x000003E7 - ldrsh r2, [r3, #0x12] - ldrsh r1, [r3, #0x16] - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r3, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r0, #1 - movgt r0, #0 - bx lr - .align 2, 0 -_02300814: .word 0x000003E7 - arm_func_end ov29_023007DC - - arm_func_start ov29_02300818 -ov29_02300818: ; 0x02300818 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - cmp r1, #0 - ldr r4, [r5, #0xb4] - beq _02300840 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02300840: - ldrb r0, [r4, #0xbd] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #7 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_02300CB0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #6 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x105] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02300818 - - arm_func_start ov29_023008DC -ov29_023008DC: ; 0x023008DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - cmp r1, #0 - ldr r4, [r5, #0xb4] - beq _02300904 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02300904: - ldrb r0, [r4, #0xbd] - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #5 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #7 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_02300D00 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #6 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x105] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023008DC - - arm_func_start ov29_023009A0 -ov29_023009A0: ; 0x023009A0 - stmdb sp!, {r4, lr} - mov r1, #0 - mov r4, r0 - bl ov29_0232461C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, pc} - mov r0, r4 - mov r1, #0 - bl ov29_02300818 - ldmia sp!, {r4, pc} - arm_func_end ov29_023009A0 - - arm_func_start ov29_023009CC -ov29_023009CC: ; 0x023009CC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - mov r1, #0 - bl ov29_0232461C - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xbd] - cmp r0, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ShouldMonsterRunAway - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xf3] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r3, [r4, #0xc4] - cmp r3, #6 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r3, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r2, [r4, #0xd0] - cmp r2, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #0xbd] - cmp r1, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xef] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r1, #5 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r2, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r3, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r3, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xf1] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd8] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #7 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023009CC - - arm_func_start ov29_02300B04 -ov29_02300B04: ; 0x02300B04 - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #1 - cmpne r0, #5 - cmpne r0, #3 - beq _02300B30 - ldrb r0, [r1, #0xc4] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #6 - bhi _02300B38 -_02300B30: - mov r0, #0 - bx lr -_02300B38: - mov r0, #1 - bx lr - arm_func_end ov29_02300B04 - - arm_func_start ov29_02300B40 -ov29_02300B40: ; 0x02300B40 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xbc] - cmp r0, #7 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl IsExperienceLocked - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #7] - cmp r0, #0 - bne _02300B90 - mov r0, r5 - bl ShouldMonsterRunAway - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02300B90: - mov r0, r5 - mov r1, #0 - bl ov29_02300818 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_02300CB0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0 - bl ov29_0232461C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02300B40 - - arm_func_start ov29_02300BF8 -ov29_02300BF8: ; 0x02300BF8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xbc] - cmp r0, #7 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl IsExperienceLocked - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #7] - cmp r0, #0 - bne _02300C48 - mov r0, r5 - bl ShouldMonsterRunAway - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02300C48: - mov r0, r5 - mov r1, #0 - bl ov29_023008DC - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_02300D00 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0 - bl ov29_0232461C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xc4] - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02300BF8 - - arm_func_start ov29_02300CB0 -ov29_02300CB0: ; 0x02300CB0 - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #2 - cmpne r0, #4 - cmpne r0, #0 - movne r0, #1 - bxne lr - ldrb r0, [r1, #0xc4] - cmp r0, #1 - moveq r0, #1 - bxeq lr - cmp r0, #6 - moveq r0, #1 - bxeq lr - ldrb r0, [r1, #0xd2] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02300CB0 - - arm_func_start ov29_02300D00 -ov29_02300D00: ; 0x02300D00 - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #2 - cmpne r0, #4 - cmpne r0, #0 - movne r0, #1 - bxne lr - ldrb r0, [r1, #0xc4] - cmp r0, #1 - moveq r0, #1 - bxeq lr - cmp r0, #6 - moveq r0, #1 - bxeq lr - ldrb r0, [r1, #0xd2] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02300D00 - - arm_func_start ov29_02300D50 -ov29_02300D50: ; 0x02300D50 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xb4] - ldrb r3, [r1, #0xc4] - cmp r3, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r3, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r2, [r1, #0xd0] - cmp r2, #7 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r2, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r1, [r1, #0xbf] - cmp r1, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r3, #6 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r2, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov29_02300CB0 - ldmia sp!, {r3, pc} - arm_func_end ov29_02300D50 - - arm_func_start ov29_02300DC0 -ov29_02300DC0: ; 0x02300DC0 - ldr ip, _02300DC8 ; =ov29_02300D50 - bx ip - .align 2, 0 -_02300DC8: .word ov29_02300D50 - arm_func_end ov29_02300DC0 - - arm_func_start ov29_02300DCC -ov29_02300DCC: ; 0x02300DCC - stmdb sp!, {r3, lr} - cmp r1, #0 - ldr r2, [r0, #0xb4] - bne _02300DF4 - ldrb r1, [r2, #0xbd] - cmp r1, #2 - cmpne r1, #4 - cmpne r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} -_02300DF4: - ldrb r1, [r2, #0xc4] - cmp r1, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #6 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r1, [r2, #0xd0] - cmp r1, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #7 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r1, [r2, #0xbf] - cmp r1, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ShouldMonsterRunAway - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02300DCC - - arm_func_start ov29_02300E78 -ov29_02300E78: ; 0x02300E78 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r2, [r6, #0xb4] - mov r5, r1 - ldrsh r1, [r2, #2] - bl ov29_022FF674 - ldr r2, _02300F24 ; =0x0235171C - mov ip, r5, lsl #2 - ldr r1, _02300F28 ; =0x0235171E - ldrsh r3, [r2, ip] - ldrsh lr, [r6, #4] - mov r4, r0 - ldrsh r2, [r6, #6] - ldrsh r1, [r1, ip] - add r0, lr, r3 - add r1, r2, r1 - bl GetTile - ldrh r1, [r0] - tst r1, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r0, #0xc] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - and r2, r5, #0xff - bl ov29_02300F30 - mov r4, r0 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl GetTile - add r0, r0, r4 - ldr r1, _02300F2C ; =0x02352798 - and r2, r5, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02300F24: .word 0x0235171C -_02300F28: .word 0x0235171E -_02300F2C: .word 0x02352798 - arm_func_end ov29_02300E78 - - arm_func_start ov29_02300F30 -ov29_02300F30: ; 0x02300F30 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl ov29_02336204 - cmp r0, #0 - bne _02300FC4 - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #0xef] - cmp r0, #3 - moveq r5, #3 - beq _02300FC4 - mov r0, r6 - mov r1, #0x10 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r5, #3 - bne _02300FC4 - cmp r5, #3 - beq _02300F98 - mov r0, r6 - mov r1, #0xc - bl IqSkillIsEnabled - cmp r0, #0 - movne r5, #2 - bne _02300FC4 -_02300F98: - mov r0, r6 - mov r1, #0xd - bl IqSkillIsEnabled - cmp r0, #0 - beq _02300FC4 - cmp r4, #0xff - moveq r5, #3 - beq _02300FC4 - tst r4, #1 - movne r5, #2 - moveq r5, #3 -_02300FC4: - mov r0, r5 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_02300F30 - - arm_func_start ov29_02300FCC -ov29_02300FCC: ; 0x02300FCC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, _02301050 ; =0x0235171C - mov ip, r4, lsl #2 - ldr r0, _02301054 ; =0x0235171E - ldrsh r3, [r1, ip] - ldrsh lr, [r5, #4] - ldrsh r1, [r0, ip] - ldrsh r2, [r5, #6] - add r0, lr, r3 - add r1, r2, r1 - bl GetTile - ldrh r1, [r0] - tst r1, #0x10 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, [r0, #0xc] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrsh r0, [r5, #4] - ldrsh r1, [r5, #6] - bl GetTile - ldr r1, _02301058 ; =0x02352790 - and r2, r4, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02301050: .word 0x0235171C -_02301054: .word 0x0235171E -_02301058: .word 0x02352790 - arm_func_end ov29_02300FCC - - arm_func_start ov29_0230105C -ov29_0230105C: ; 0x0230105C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r2, [r6, #0xb4] - mov r5, r1 - ldrsh r1, [r2, #2] - bl ov29_022FF674 - ldr r2, _0230110C ; =0x0235171C - mov ip, r5, lsl #2 - ldr r1, _02301110 ; =0x0235171E - ldrsh r3, [r2, ip] - ldrsh lr, [r6, #4] - mov r4, r0 - ldrsh r2, [r6, #6] - ldrsh r1, [r1, ip] - add r0, lr, r3 - add r1, r2, r1 - bl GetTile - ldrh r1, [r0] - tst r1, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r0, #0xc] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #1 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - and r2, r5, #0xff - bl ov29_02300F30 - mov r4, r0 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl GetTile - add r0, r0, r4 - ldr r1, _02301114 ; =0x02352788 - and r2, r5, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230110C: .word 0x0235171C -_02301110: .word 0x0235171E -_02301114: .word 0x02352788 - arm_func_end ov29_0230105C - - arm_func_start IsMonsterCornered -IsMonsterCornered: ; 0x02301118 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - b _02301148 -_02301128: - mov r0, r5 - mov r1, r4 - bl ov29_02301158 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r4, #1 - and r4, r0, #0xff -_02301148: - cmp r4, #8 - blo _02301128 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end IsMonsterCornered - - arm_func_start ov29_02301158 -ov29_02301158: ; 0x02301158 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r2, [r6, #0xb4] - mov r5, r1 - ldrsh r1, [r2, #2] - bl ov29_022FF674 - ldr r2, _02301228 ; =0x0235171C - mov ip, r5, lsl #2 - ldr r1, _0230122C ; =0x0235171E - ldrsh r3, [r2, ip] - ldrsh lr, [r6, #4] - mov r4, r0 - ldrsh r2, [r6, #6] - ldrsh r1, [r1, ip] - add r0, lr, r3 - add r1, r2, r1 - bl GetTile - ldrh r1, [r0] - tst r1, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _023011E0 - ldr r0, [r1] - cmp r0, #1 - bne _023011E0 - mov r0, r6 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_023011E0: - mov r0, r6 - mov r1, r4 - and r2, r5, #0xff - bl ov29_02300F30 - mov r4, r0 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl GetTile - add r0, r0, r4 - ldr r1, _02301230 ; =0x02352780 - and r2, r5, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02301228: .word 0x0235171C -_0230122C: .word 0x0235171E -_02301230: .word 0x02352780 - arm_func_end ov29_02301158 - - arm_func_start CanAttackInDirection -CanAttackInDirection: ; 0x02301234 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r2, [r6, #0xb4] - mov r5, r1 - ldrsh r1, [r2, #2] - bl ov29_022FF674 - mov r4, r0 - ldr r1, _023012EC ; =0x0235171C - mov ip, r5, lsl #2 - cmp r4, #1 - ldr r0, _023012F0 ; =0x0235171E - ldrsh r3, [r1, ip] - ldrsh lr, [r6, #4] - ldrsh r1, [r0, ip] - ldrsh r2, [r6, #6] - add r0, lr, r3 - movls r4, #2 - add r1, r2, r1 - bl GetTile - ldrh r1, [r0] - tst r1, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r0, #0xc] - cmp r0, #0 - ldrne r0, [r0] - cmpne r0, #1 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - and r2, r5, #0xff - bl ov29_02300F30 - mov r4, r0 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl GetTile - add r0, r0, r4 - ldr r1, _023012F4 ; =0x02352778 - and r2, r5, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023012EC: .word 0x0235171C -_023012F0: .word 0x0235171E -_023012F4: .word 0x02352778 - arm_func_end CanAttackInDirection - - arm_func_start CanAiMonsterMoveInDirection -CanAiMonsterMoveInDirection: ; 0x023012F8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - ldr r3, [r8, #0xb4] - mov r7, r1 - ldrsh r1, [r3, #2] - mov r6, r2 - bl ov29_022FF674 - mov r1, #0 - strb r1, [r6] - ldr r2, _02301484 ; =0x0235171C - mov r4, r7, lsl #2 - ldr r1, _02301488 ; =0x0235171E - ldrsh r3, [r2, r4] - ldrsh ip, [r8, #4] - mov r5, r0 - ldrsh r2, [r8, #6] - ldrsh r1, [r1, r4] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - mov r4, r0 - ldrh r0, [r4] - tst r0, #0x10 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - tst r0, #0x40 - beq _02301390 - ldr r0, _0230148C ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x793] - cmp r0, #0 - bne _02301390 - mov r0, r8 - mov r1, #0xf - bl IqSkillIsEnabled - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_02301390: - ldr r0, [r4, #0x10] - cmp r0, #0 - beq _023013E4 - mov r0, r8 - mov r1, #0xe - bl IqSkillIsEnabled - cmp r0, #0 - beq _023013E4 - ldr r1, [r4, #0x10] - ldr r0, [r1] - cmp r0, #2 - bne _023013E4 - ldrb r0, [r1, #0x20] - cmp r0, #0 - bne _023013DC - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xf1] - cmp r0, #3 - bne _023013E4 -_023013DC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023013E4: - ldrh r0, [r4] - and r0, r0, #3 - cmp r0, #2 - bne _0230142C - ldr r0, _0230148C ; =0x02353538 - ldr r1, _02301490 ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - bne _0230142C - mov r0, r8 - mov r1, #0x14 - bl IqSkillIsEnabled - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_0230142C: - mov r0, r8 - mov r1, r5 - and r2, r7, #0xff - bl ov29_02300F30 - mov r5, r0 - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - bl GetTile - add r0, r0, r5 - ldr r1, _02301494 ; =0x02352770 - and r2, r7, #7 - ldrb r1, [r1, r2] - ldrb r0, [r0, #8] - tst r1, r0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - mov r0, #1 - strneb r0, [r6] - movne r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02301484: .word 0x0235171C -_02301488: .word 0x0235171E -_0230148C: .word 0x02353538 -_02301490: .word 0x020A1AE8 -_02301494: .word 0x02352770 - arm_func_end CanAiMonsterMoveInDirection - - arm_func_start ov29_02301498 -ov29_02301498: ; 0x02301498 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r1, [r5, #0xb4] - ldrsh r1, [r1, #2] - bl ov29_022FF674 - mov r1, r0 - mov r0, r5 - mov r2, #0xff - bl ov29_02300F30 - mov r4, r0 - cmp r4, #3 - bne _023014FC - ldr r4, [r5, #0xb4] - mov r0, #0x64 - bl DungeonRandInt - add r1, r4, #0x200 - ldrsh r2, [r1, #0x12] - add r0, r2, r0 - strh r0, [r1, #0x12] - ldrsh r0, [r1, #0x12] - cmp r0, #0xc8 - mov r0, #0 - strgeh r0, [r1, #0x12] - movge r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_023014FC: - ldr r0, _0230158C ; =0x02353538 - ldr r1, _02301590 ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - cmpeq r4, #1 - bne _02301534 - mov r0, r5 - mov r1, #0x14 - bl IqSkillIsEnabled - cmp r0, #0 - movne r4, #0 -_02301534: - ldrsh r0, [r5, #4] - ldrsh r1, [r5, #6] - bl GetTile - add r0, r0, r4 - ldrb r0, [r0, #8] - cmp r0, #0x54 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0x51 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0x45 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0x15 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #0x55 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230158C: .word 0x02353538 -_02301590: .word 0x020A1AE8 - arm_func_end ov29_02301498 - - arm_func_start ov29_02301594 -ov29_02301594: ; 0x02301594 - stmdb sp!, {r4, lr} - mov r4, r1 - mov r1, #3 - bl ov29_02301F20 - cmp r0, #0 - cmpne r4, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_02301594 - - arm_func_start ShouldMonsterRunAway -ShouldMonsterRunAway: ; 0x023015B8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl EntityIsValid__023000E4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0x104] - cmp r0, #0 - ldrneb r0, [r4, #0x105] - cmpne r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #7] - cmp r0, #0 - bne _0230169C - mov r0, r5 - mov r1, #0x2b - bl AbilityIsActive - cmp r0, #0 - beq _02301644 - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _023016A4 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - ldrsh r1, [r4, #0x10] - add r0, r2, r2, lsr #31 - cmp r1, r0, asr #1 - movlt r0, #1 - movge r0, #0 - tst r0, #0xff - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02301644: - mov r0, r5 - mov r1, #0xa - bl ov29_02301F20 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #6 - bl ov29_02301F20 - cmp r0, #0 - beq _0230169C - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _023016A4 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - ldrsh r1, [r4, #0x10] - add r0, r2, r2, lsr #31 - cmp r1, r0, asr #1 - movle r0, #1 - ldmleia sp!, {r3, r4, r5, pc} -_0230169C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023016A4: .word 0x000003E7 - arm_func_end ShouldMonsterRunAway - - arm_func_start ShouldMonsterRunAwayVariation -ShouldMonsterRunAwayVariation: ; 0x023016A8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ShouldMonsterRunAway - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ov29_023016D8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ShouldMonsterRunAwayVariation - - arm_func_start ov29_023016D8 -ov29_023016D8: ; 0x023016D8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r4, [r6, #0xb4] - mov r5, r1 - ldrb r1, [r4, #7] - cmp r1, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r1, #0x2b - bl AbilityIsActive - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02301758 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - ldrsh r1, [r4, #0x10] - add r0, r2, r2, lsr #31 - cmp r1, r0, asr #1 - movle r1, #1 - movgt r1, #0 - and r2, r1, #0xff - mov r0, r4 - mov r1, #4 - bl ov29_023023C0 - cmp r5, #0 - cmpne r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_022E62A8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02301758: .word 0x000003E7 - arm_func_end ov29_023016D8 - - arm_func_start ov29_0230175C -ov29_0230175C: ; 0x0230175C - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0xb4] - ldr r5, [r1, #0xb4] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #9] - cmp r1, #1 - ldrneb r1, [r5, #9] - cmpne r1, #1 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #0xbc] - cmp r1, #7 - ldrneb r1, [r5, #0xbc] - cmpne r1, #7 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r3, #0 - beq _023017C4 - ldrb r1, [r4, #6] - cmp r1, #0 - ldreqb r1, [r5, #0xc4] - cmpeq r1, #6 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} -_023017C4: - cmp r2, #0 - ldreqb r1, [r5, #0xef] - cmpeq r1, #1 - bne _023017E4 - bl CanSeeInvisibleMonsters - cmp r0, #0 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} -_023017E4: - ldrb r0, [r4, #0x10c] - cmp r0, #0 - bne _02301804 - ldrb r0, [r4, #7] - cmp r0, #0 - movne r1, #0 - moveq r1, #1 - b _02301810 -_02301804: - cmp r0, #1 - moveq r1, #2 - movne r1, #3 -_02301810: - ldrb r0, [r4, #9] - cmp r0, #0 - beq _02301828 - cmp r0, #3 - moveq r2, #1 - b _02301844 -_02301828: - ldrb r0, [r4, #6] - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - cmp r0, #0 - ldrneb r0, [r4, #8] - cmpne r0, #0 -_02301844: - ldrb r0, [r5, #9] - movne r2, #0 - cmp r0, #0 - beq _02301860 - cmp r0, #3 - moveq r3, #1 - b _0230187C -_02301860: - ldrb r0, [r5, #6] - cmp r0, #0 - movne r3, #1 - moveq r3, #0 - cmp r0, #0 - ldrneb r0, [r5, #8] - cmpne r0, #0 -_0230187C: - ldrb r0, [r5, #0xd8] - movne r3, #0 - cmp r0, #2 - ldr r0, _023018A8 ; =0x023527A0 - moveq r4, #1 - add r0, r0, r1, lsl #3 - add r0, r0, r2, lsl #2 - movne r4, #0 - add r0, r0, r3, lsl #1 - ldrb r0, [r4, r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023018A8: .word 0x023527A0 - arm_func_end ov29_0230175C - - arm_func_start ov29_023018AC -ov29_023018AC: ; 0x023018AC - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0xb4] - ldr r5, [r1, #0xb4] - ldrb r0, [r4, #0xbc] - cmp r0, #7 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl IsExperienceLocked - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #9] - cmp r0, #0 - cmpne r0, #3 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r5, #0xbc] - cmp r0, #7 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl IsExperienceLocked - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r5, #9] - cmp r0, #0 - cmpne r0, #3 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r1, [r4, #6] - ldrb r0, [r5, #6] - cmp r1, r0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023018AC - - arm_func_start ov29_02301940 -ov29_02301940: ; 0x02301940 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r3, [r4, #0xb4] - mov r5, r0 - ldrb r0, [r3, #0xd5] - cmp r0, #2 - bne _02301988 - cmp r2, #0 - beq _02301980 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02301990 ; =0x00000C36 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02301980: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_02301988: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02301990: .word 0x00000C36 - arm_func_end ov29_02301940 - - arm_func_start ov29_02301994 -ov29_02301994: ; 0x02301994 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl GetApparentWeather - cmp r0, #1 - bne _02301A00 - mov r0, r6 - mov r1, r5 - mov r2, #0x7b - mov r3, #1 - bl DefenderAbilityIsActive__02301A0C - cmp r0, #0 - beq _02301A00 - cmp r4, #0 - beq _023019F8 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02301A08 ; =0x00000C37 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023019F8: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02301A00: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02301A08: .word 0x00000C37 - arm_func_end ov29_02301994 - - arm_func_start DefenderAbilityIsActive__02301A0C -DefenderAbilityIsActive__02301A0C: ; 0x02301A0C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _02301A50 - bl IsMonster__02301A60 - cmp r0, #0 - cmpne r4, #0 - beq _02301A50 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02301A50: - mov r0, r6 - mov r1, r5 - bl AbilityIsActive - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end DefenderAbilityIsActive__02301A0C - - arm_func_start IsMonster__02301A60 -IsMonster__02301A60: ; 0x02301A60 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__02301A60 - - arm_func_start ov29_02301A84 -ov29_02301A84: ; 0x02301A84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov sb, r2 - bl GetApparentWeather - ldr r6, _02301B24 ; =0x023535C0 - mov r7, r0 - ldrb r0, [r6, r7] - mov r8, #0 - cmp r0, #0 - beq _02301B18 - ldrb r1, [r6, r7] - mov r0, r4 - bl ExclusiveItemEffectIsActive__022FFF28 - cmp r0, #0 - beq _02301B18 - cmp sb, #0 - ldrb r6, [r6, r7] - beq _02301B14 - mov r0, r8 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r2, sp, #0 - mov r0, r4 - mov r1, r6 - bl ov29_0230F654 - add r1, sp, #0 - mov r0, #1 - bl ov29_02344B44 - ldr r2, _02301B28 ; =0x00000C39 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02301B14: - mov r8, #1 -_02301B18: - mov r0, r8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02301B24: .word 0x023535C0 -_02301B28: .word 0x00000C39 - arm_func_end ov29_02301A84 - - arm_func_start ov29_02301B2C -ov29_02301B2C: ; 0x02301B2C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #0 - mov r5, r2 - mov r6, r1 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - bl ov29_023197CC - movs r4, r0 - beq _02301BB0 - cmp r5, #0 - beq _02301BA8 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r4, #1 - bne _02301B8C - ldr r2, _02301C20 ; =0x00000C38 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02301BA8 -_02301B8C: - cmp r4, #2 - bne _02301BA8 - ldr r2, _02301C24 ; =0x00000C39 - mov r0, r7 - mov r1, r6 - mov r3, #0x26 - bl ov29_02314DC4 -_02301BA8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02301BB0: - mov r0, r7 - mov r1, r6 - mov r2, #0xf - mov r3, #1 - bl DefenderAbilityIsActive__02301A0C - cmp r0, #0 - bne _02301BE8 - mov r0, r7 - mov r1, r6 - mov r2, #0x18 - mov r3, #1 - bl DefenderAbilityIsActive__02301A0C - cmp r0, #0 - beq _02301C18 -_02301BE8: - cmp r5, #0 - beq _02301C10 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02301C28 ; =0x00000C3A - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02301C10: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02301C18: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02301C20: .word 0x00000C38 -_02301C24: .word 0x00000C39 -_02301C28: .word 0x00000C3A - arm_func_end ov29_02301B2C - - arm_func_start ov29_02301C2C -ov29_02301C2C: ; 0x02301C2C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r8, [sl, #0xb4] - mov sb, r1 - ldrb r0, [r8, #0xbd] - cmp r0, #1 - cmpne r0, #5 - cmpne r0, #3 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r6, #0 - add r5, r8, #0x124 - mov fp, r6 - mov r4, #1 - b _02301CCC -_02301C68: - ldrb r1, [r5, r6, lsl #3] - add r7, r5, r6, lsl #3 - tst r1, #1 - movne r0, r4 - moveq r0, fp - tst r0, #0xff - beq _02301CC8 - ldrb r0, [r8, #7] - cmp r0, #0 - bne _02301C98 - tst r1, #4 - beq _02301CC8 -_02301C98: - mov r0, sl - mov r1, r7 - mov r2, #1 - bl ov29_02324BE8 - cmp r0, #0 - ldrneb r0, [r7, #6] - cmpne r0, #0 - beq _02301CC8 - ldrh r0, [r7, #4] - cmp r0, sb - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02301CC8: - add r6, r6, #1 -_02301CCC: - cmp r6, #4 - blt _02301C68 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02301C2C - - arm_func_start NoGastroAcidStatus -NoGastroAcidStatus: ; 0x02301CDC - stmdb sp!, {r4, lr} - mov r4, r0 - bl IsMonster__02301A60 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #4 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end NoGastroAcidStatus - - arm_func_start AbilityIsActive -AbilityIsActive: ; 0x02301D10 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl IsMonster__02301A60 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - ldr r1, [r5, #0xb4] - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r1, #0x60] - cmp r0, r4 - bne _02301D58 - mov r0, r5 - mov r1, r4 - bl NoGastroAcidStatus - ldmia sp!, {r3, r4, r5, pc} -_02301D58: - ldrb r0, [r1, #0x61] - cmp r0, r4 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl NoGastroAcidStatus - ldmia sp!, {r3, r4, r5, pc} - arm_func_end AbilityIsActive - - arm_func_start AbilityIsActive2 -AbilityIsActive2: ; 0x02301D78 - ldr ip, _02301D80 ; =AbilityIsActive - bx ip - .align 2, 0 -_02301D80: .word AbilityIsActive - arm_func_end AbilityIsActive2 - - arm_func_start ov29_02301D84 -ov29_02301D84: ; 0x02301D84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r0 - mov r6, r1 - mov r5, #0 - mov r4, #1 - ldr r8, _02301E14 ; =0x02353538 - b _02301E04 -_02301DA0: - ldr r0, [r8] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__023000E4 - cmp r0, #0 - cmpne r7, sb - beq _02301DF8 - mov r0, r7 - mov r1, sb - bl ov29_022FAFD4 - cmp r0, #0 - beq _02301DF8 - mov r0, r7 - mov r1, sb - mov r2, r6 - mov r3, r4 - bl DefenderAbilityIsActive__02301A0C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02301DF8: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_02301E04: - cmp r5, #0x14 - blt _02301DA0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02301E14: .word 0x02353538 - arm_func_end ov29_02301D84 - - arm_func_start LevitateIsActive -LevitateIsActive: ; 0x02301E18 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GravityIsActive - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - mov r1, #0x37 - bl AbilityIsActive - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end LevitateIsActive - - arm_func_start MonsterIsType -MonsterIsType: ; 0x02301E50 - cmp r1, #0 - ldr r2, [r0, #0xb4] - moveq r0, #0 - bxeq lr - ldrb r0, [r2, #0x5e] - cmp r0, r1 - moveq r0, #1 - bxeq lr - ldrb r0, [r2, #0x5f] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end MonsterIsType - - arm_func_start ov29_02301E88 -ov29_02301E88: ; 0x02301E88 - stmdb sp!, {r3, lr} - cmp r1, #0xa - bne _02301EA4 - bl GravityIsActive - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} -_02301EA4: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02301E88 - - arm_func_start ov29_02301EAC -ov29_02301EAC: ; 0x02301EAC - stmdb sp!, {r3, lr} - ldr r3, [r0, #0xb4] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrb r2, [r3, #0x5e] - cmp r2, r1 - bne _02301ED4 - bl ov29_02301E88 - ldmia sp!, {r3, pc} -_02301ED4: - ldrb r2, [r3, #0x5f] - cmp r2, r1 - movne r0, #0 - ldmneia sp!, {r3, pc} - bl ov29_02301E88 - ldmia sp!, {r3, pc} - arm_func_end ov29_02301EAC - - arm_func_start CanSeeInvisibleMonsters -CanSeeInvisibleMonsters: ; 0x02301EEC - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xb4] - ldrb r1, [r1, #0xf1] - cmp r1, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - mov r1, #0x21 - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end CanSeeInvisibleMonsters - - arm_func_start ov29_02301F20 -ov29_02301F20: ; 0x02301F20 - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #7] - cmp r0, #0 - beq _02301F38 - cmp r1, #1 - b _02301F40 -_02301F38: - ldrb r0, [r2, #0xa8] - cmp r0, r1 -_02301F40: - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov29_02301F20 - - arm_func_start HasDropeyeStatus -HasDropeyeStatus: ; 0x02301F50 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__023000E4 - cmp r0, #0 - beq _02301F78 - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xf1] - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_02301F78: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end HasDropeyeStatus - - arm_func_start IqSkillIsEnabled -IqSkillIsEnabled: ; 0x02301F80 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - bne _02301FAC - ldr r0, _02301FB8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x12] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} -_02301FAC: - add r0, r2, #0x9c - bl IqSkillFlagTest - ldmia sp!, {r3, pc} - .align 2, 0 -_02301FB8: .word 0x02353538 - arm_func_end IqSkillIsEnabled - - arm_func_start ov29_02301FBC -ov29_02301FBC: ; 0x02301FBC - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - ldrb r0, [r4, #6] - mov r6, #0 - cmp r0, #0 - str r6, [r4, #0x9c] - beq _02302118 - str r6, [r4, #0xa0] - str r6, [r4, #0xa4] - b _0230202C -_02301FE4: - ldrsh r0, [r4, #2] - and r1, r6, #0xff - bl GetSpeciesIqSkill - mov r5, r0 - cmp r5, #0xff - beq _02302034 - ldrsh r0, [r4, #0xe] - mov r1, r5 - bl CanLearnIqSkill - cmp r0, #0 - beq _02302028 - mov r1, r5 - add r0, r4, #0x90 - bl EnableIqSkill - mov r1, r5 - add r0, r4, #0x9c - bl EnableIqSkill -_02302028: - add r6, r6, #1 -_0230202C: - cmp r6, #0x19 - blt _02301FE4 -_02302034: - ldr r0, _023021E8 ; =0x020A188C - ldrsh r1, [r4, #0xe] - ldrsh r0, [r0] - cmp r1, r0 - bge _02302068 - add r0, r4, #0x9c - mov r1, #0x17 - bl IqSkillFlagTest - cmp r0, #0 - beq _02302068 - add r0, r4, #0x9c - mov r1, #0x17 - bl DisableIqSkill -_02302068: - mov r0, r4 - bl ov29_022FBDE0 - cmp r0, #0 - bne _0230208C - ldr r0, _023021EC ; =0x020A18A4 - ldrsh r1, [r4, #0xe] - ldrsh r0, [r0] - cmp r1, r0 - bge _023020AC -_0230208C: - add r0, r4, #0x9c - mov r1, #0x16 - bl IqSkillFlagTest - cmp r0, #0 - beq _023020AC - add r0, r4, #0x9c - mov r1, #0x16 - bl DisableIqSkill -_023020AC: - add r0, r4, #0x9c - mov r1, #0x15 - bl IqSkillFlagTest - cmp r0, #0 - beq _023020CC - add r0, r4, #0x9c - mov r1, #0x15 - bl DisableIqSkill -_023020CC: - add r0, r4, #0x9c - mov r1, #0x14 - bl IqSkillFlagTest - cmp r0, #0 - beq _023020EC - add r0, r4, #0x9c - mov r1, #0x14 - bl DisableIqSkill -_023020EC: - add r0, r4, #0x9c - mov r1, #0xb - bl IqSkillFlagTest - cmp r0, #0 - beq _0230210C - add r0, r4, #0x9c - mov r1, #0xb - bl DisableIqSkill -_0230210C: - mov r0, #2 - strb r0, [r4, #0xa8] - ldmia sp!, {r4, r5, r6, pc} -_02302118: - str r6, [r4, #0xa0] - str r6, [r4, #0xa4] - b _02302174 -_02302124: - ldrsh r0, [r4, #2] - and r1, r6, #0xff - bl GetSpeciesIqSkill - mov r5, r0 - cmp r5, #0xff - beq _0230217C - ldrsh r0, [r4, #0xe] - mov r1, r5 - bl CanLearnIqSkill - cmp r0, #0 - beq _02302170 - mov r1, r5 - add r0, r4, #0x90 - bl IqSkillFlagTest - cmp r0, #0 - beq _02302170 - mov r1, r5 - add r0, r4, #0x9c - bl EnableIqSkill -_02302170: - add r6, r6, #1 -_02302174: - cmp r6, #0x19 - blt _02302124 -_0230217C: - mov r0, #3 - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _023021A4 - add r0, r4, #0x90 - mov r1, #0x18 - bl EnableIqSkill - add r0, r4, #0x9c - mov r1, #0x18 - bl EnableIqSkill -_023021A4: - add r0, r4, #0x90 - mov r1, #0x38 - bl IqSkillFlagTest - cmp r0, #0 - beq _023021C4 - add r0, r4, #0x9c - mov r1, #0x38 - bl EnableIqSkill -_023021C4: - add r0, r4, #0x90 - mov r1, #0x39 - bl IqSkillFlagTest - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r0, r4, #0x9c - mov r1, #0x39 - bl EnableIqSkill - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023021E8: .word 0x020A188C -_023021EC: .word 0x020A18A4 - arm_func_end ov29_02301FBC - - arm_func_start ov29_023021F0 -ov29_023021F0: ; 0x023021F0 - ldr ip, _023021FC ; =ov29_02301FBC - ldr r0, [r0, #0xb4] - bx ip - .align 2, 0 -_023021FC: .word ov29_02301FBC - arm_func_end ov29_023021F0 - - arm_func_start ov29_02302200 -ov29_02302200: ; 0x02302200 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r6, #0 - ldr r5, _02302278 ; =0x02353538 - b _02302268 -_02302228: - ldr r1, [r5] - mov r0, r4 - add r1, r1, r6, lsl #2 - add r1, r1, #0x12000 - ldr r7, [r1, #0xb28] - bl EntityIsValid__023000E4 - cmp r0, #0 - cmpne r4, r7 - beq _02302264 - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02302264: - add r6, r6, #1 -_02302268: - cmp r6, #4 - blt _02302228 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02302278: .word 0x02353538 - arm_func_end ov29_02302200 - - arm_func_start GetMoveTypeForMonster -GetMoveTypeForMonster: ; 0x0230227C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldrh r0, [r4, #4] - bl IsRegularAttackOrProjectile - cmp r0, #0 - bne _023022C0 - mov r0, r5 - bl EntityIsValid__023000E4 - cmp r0, #0 - beq _023022C0 - mov r0, r5 - mov r1, #0x6b - bl AbilityIsActive - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_023022C0: - ldrh r1, [r4, #4] - cmp r1, #0x144 - ldreq r0, [r5, #0xb4] - ldreqb r0, [r0, #0x46] - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _02302318 ; =0x000001D7 - cmp r1, r0 - bne _023022F4 - mov r0, r5 - bl ov29_0231AE90 - cmp r0, #0 - ldrneb r0, [r0, #2] - ldmneia sp!, {r3, r4, r5, pc} -_023022F4: - ldrh r0, [r4, #4] - cmp r0, #0x1f - bne _0230230C - mov r0, r5 - bl ov29_0231AF0C - ldmia sp!, {r3, r4, r5, pc} -_0230230C: - mov r0, r4 - bl GetMoveType - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02302318: .word 0x000001D7 - arm_func_end GetMoveTypeForMonster - - arm_func_start GetMovePower -GetMovePower: ; 0x0230231C - stmdb sp!, {r3, r4, r5, lr} - ldrh r2, [r1, #4] - mov r5, r0 - ldrb r4, [r1, #7] - cmp r2, #0x144 - ldreq r0, [r5, #0xb4] - ldreqsh r0, [r0, #0x44] - addeq r0, r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r1 - bl GetMoveBasePower - add r4, r4, r0 - mov r0, r5 - mov r1, #0x2b - bl ItemIsActive__022FF898 - cmp r0, #0 - movne r4, r4, lsl #1 - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GetMovePower - - arm_func_start ov29_02302368 -ov29_02302368: ; 0x02302368 - stmdb sp!, {r3, lr} - ldrsh r0, [r0, #2] - bl CanThrowItems - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02302368 - - arm_func_start ov29_02302388 -ov29_02302388: ; 0x02302388 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__023000E4 - cmp r0, #0 - ldrne r0, [r4, #0xb4] - ldrneb r1, [r0, #0xbc] - cmpne r1, #7 - beq _023023B8 - bl IsExperienceLocked - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_023023B8: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_02302388 - - arm_func_start ov29_023023C0 -ov29_023023C0: ; 0x023023C0 - stmdb sp!, {r3, lr} - add r3, r0, #0x100 - ldrh ip, [r3, #0x58] - tst ip, r1 - ldrneh ip, [r3, #0x5a] - ldreqh lr, [r3, #0x5a] - orrne ip, ip, r1 - mvneq ip, r1 - andeq ip, lr, ip - cmp r2, #0 - add r2, r0, #0x100 - strh ip, [r3, #0x5a] - ldrneh r3, [r2, #0x58] - ldreqh ip, [r2, #0x58] - add r0, r0, #0x100 - orrne r3, r3, r1 - mvneq r3, r1 - andeq r3, ip, r3 - strh r3, [r2, #0x58] - ldrh r2, [r0, #0x5a] - tst r2, r1 - bne _02302428 - ldrh r0, [r0, #0x58] - tst r0, r1 - movne r0, #1 - ldmneia sp!, {r3, pc} -_02302428: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_023023C0 - - arm_func_start ov29_02302430 -ov29_02302430: ; 0x02302430 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl ov29_02301994 - cmp r0, #0 - movne r0, #1 - bne _023024D4 - mov r0, r5 - mov r1, #0x59 - bl ExclusiveItemEffectIsActive__022FFF28 - cmp r0, #0 - beq _023024B4 - cmp r4, #0 - beq _023024AC - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r2, sp, #0 - mov r0, r5 - mov r1, #0x59 - bl ov29_0230F654 - add r1, sp, #0 - mov r0, #1 - bl ov29_02344B44 - ldr r2, _023024DC ; =0x00000C39 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023024AC: - mov r0, #1 - b _023024D4 -_023024B4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov29_02301A84 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_023024D4: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023024DC: .word 0x00000C39 - arm_func_end ov29_02302430 - - arm_func_start ov29_023024E0 -ov29_023024E0: ; 0x023024E0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #7 - mov r5, r0 - bl IqSkillIsEnabled - cmp r0, #0 - bne _02302534 - cmp r4, #0 - beq _02302518 - mov r0, r5 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - bne _0230252C -_02302518: - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #0xd0] - cmp r0, #2 - cmpne r0, #4 - bne _02302534 -_0230252C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_02302534: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023024E0 - - arm_func_start AddExpSpecial -AddExpSpecial: ; 0x0230253C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - ldr r5, [r7, #0xb4] - mov r6, r2 - mov r0, r5 - bl IsExperienceLocked - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r5, #0xa] - cmp r0, #0x64 - bne _02302580 - cmp r6, #0 - ldrgt r0, _023026B4 ; =0x02353538 - movgt r1, #1 - ldrgt r0, [r0] - strgtb r1, [r0, #0xf] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02302580: - ldr r2, [r5, #0x20] - mov r0, r7 - mov r1, #0x1c - add r4, r2, r6 - bl IqSkillIsEnabled - cmp r0, #0 - beq _023025C0 - ldr r0, _023026B8 ; =0x022C44A8 - mov r1, #0x64 - ldrsh r0, [r0] - mov r0, r0, lsl #8 - bl DivideInt - mov r1, r0 - mov r0, r6, lsl #8 - bl MultiplyByFixedPoint - add r4, r4, r0, asr #8 -_023025C0: - mov r0, r7 - mov r1, #0x43 - bl ItemIsActive__023026CC - cmp r0, #0 - beq _023025F8 - ldr r0, _023026BC ; =0x022C469C - mov r1, #0x64 - ldrsh r0, [r0] - mov r0, r0, lsl #8 - bl DivideInt - mov r1, r0 - mov r0, r6, lsl #8 - bl MultiplyByFixedPoint - add r4, r4, r0, asr #8 -_023025F8: - mov r0, r7 - mov r1, #0x42 - bl ItemIsActive__023026CC - cmp r0, #0 - beq _02302630 - ldr r0, _023026C0 ; =0x022C4698 - mov r1, #0x64 - ldrsh r0, [r0] - mov r0, r0, lsl #8 - bl DivideInt - mov r1, r0 - mov r0, r6, lsl #8 - bl MultiplyByFixedPoint - add r4, r4, r0, asr #8 -_02302630: - ldr r1, [r7, #0xb4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _02302650 - add r0, r1, #0x228 - mov r1, #0x4f - bl ExclusiveItemEffectFlagTest -_02302650: - cmp r0, #0 - beq _0230267C - ldr r0, _023026C4 ; =0x022C458C - mov r1, #0x64 - ldrsh r0, [r0] - mov r0, r0, lsl #8 - bl DivideInt - mov r1, r0 - mov r0, r6, lsl #8 - bl MultiplyByFixedPoint - add r4, r4, r0, asr #8 -_0230267C: - ldr r0, _023026C8 ; =0x0098967F - cmp r4, r0 - movge r4, r0 - ldr r0, [r5, #0x20] - subs r2, r4, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r5, #0x214] - ldr r0, _023026B4 ; =0x02353538 - add r1, r1, r2 - str r1, [r5, #0x214] - ldr r0, [r0] - mov r1, #1 - strb r1, [r0, #0xf] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023026B4: .word 0x02353538 -_023026B8: .word 0x022C44A8 -_023026BC: .word 0x022C469C -_023026C0: .word 0x022C4698 -_023026C4: .word 0x022C458C -_023026C8: .word 0x0098967F - arm_func_end AddExpSpecial - - arm_func_start ItemIsActive__023026CC -ItemIsActive__023026CC: ; 0x023026CC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__023026CC - - arm_func_start EnemyEvolution -EnemyEvolution: ; 0x023026FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x168 - mov sl, r0 - bl sub_02025888 - ldr r0, _02302A28 ; =0x02353538 - ldr r2, [r0] - ldrb r1, [r2, #0xf] - ldrb r0, [r2, #0x748] - cmp r1, #0 - str r0, [sp, #8] - beq _02302A20 - mov r0, #0 - strb r0, [r2, #0xf] - bl GetForcedLossReason - cmp r0, #0 - bne _02302A20 - mov r0, sl - bl EntityIsValid__02302A38 - cmp r0, #0 - bne _02302758 - add r0, sp, #0xb0 - bl ov29_022E2470 - add sl, sp, #0xb0 -_02302758: - ldr r0, _02302A2C ; =0x023527F8 - mov r4, #0 - ldr r3, [r0] - ldr r2, [r0, #4] - ldr r1, [r0, #8] - ldr r0, [r0, #0xc] - str r3, [sp, #0x14] - str r2, [sp, #0x18] - str r1, [sp, #0xc] - str r0, [sp, #0x10] -_02302780: - ldr r0, _02302A28 ; =0x02353538 - ldr r3, [sp, #0x14] - ldr r0, [r0] - ldr r2, [sp, #0x18] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - ldr r1, [sp, #0xc] - ldr r0, [sp, #0x10] - mov r6, #0 - str r6, [sp, #4] - str r3, [sp, #0x24] - str r2, [sp, #0x28] - str r1, [sp, #0x1c] - str r0, [sp, #0x20] - cmp r5, #0 - beq _02302A14 - mov r0, r5 - bl EntityIsValid__02302A38 - cmp r0, #0 - ldrne sb, [r5, #0xb4] - ldrnesh r0, [sb, #0x10] - cmpne r0, #0 - beq _02302A14 - ldrb r0, [sb, #0x102] - cmp r0, #0 - movne r0, r6 - strneb r0, [sb, #0x102] - bne _02302A08 - ldr fp, [sb, #0x214] - cmp fp, #0 - beq _023028C4 - ldrb r0, [sb, #7] - cmp r0, #0 - beq _02302818 - ldrb r1, [sb, #0xa] - add r0, sp, #0x54 - bl sub_02058C9C -_02302818: - ldrsh r2, [sb, #0x12] - ldrsh r0, [sb, #0x16] - ldrb r7, [sb, #0x1a] - ldr r1, _02302A30 ; =0x000003E7 - add r0, r2, r0 - ldrb r3, [sb, #0x1b] - ldrb r2, [sb, #0x1c] - str r0, [sp, #4] - cmp r0, r1 - strgt r1, [sp, #4] - ldrb r1, [sb, #0x1d] - ldrb r0, [sb, #0xa] - str r7, [sp, #0x24] - str r3, [sp, #0x28] - str r2, [sp, #0x1c] - str r1, [sp, #0x20] - cmp r0, #0x64 - beq _023028C4 - ldr r0, [sp, #8] - bl IsExpEnabledInDungeon - cmp r0, #0 - beq _023028C4 - ldr r0, [sb, #0x20] - mov r1, fp - add r2, r0, fp - mov r0, #0 - str r2, [sb, #0x20] - bl ov29_0234B09C - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - mov r2, sb - mov r3, r1 - bl ov29_0230040C - mov r0, sl - ldr r1, _02302A34 ; =0x00000F1F - bl LogMessageByIdWithPopup - mov r0, sl - mov r1, r5 - mov r2, #1 - mov r3, r2 - bl ov29_0230303C - orr r6, r6, r0 -_023028C4: - ldrb r0, [sb, #0x153] - cmp r0, #0 - beq _02302968 - ldrsh r0, [sb, #2] - mov r2, #0 - add r1, sp, #0x2c - mov r3, r2 - bl GetEvolutions - movs r6, r0 - beq _02302964 - bl DungeonRandInt - mov r8, r0 - mov r7, #0 - b _0230293C -_023028FC: - mov r1, r8, lsl #1 - add r0, sp, #0x2c - ldrsh r0, [r0, r1] - bl IsOnMonsterSpawnList - cmp r0, #0 - beq _0230292C - mov r1, r8, lsl #1 - add r0, sp, #0x2c - ldrsh r0, [r0, r1] - bl GetSpriteIndex__022F7388 - cmp r0, #0 - bne _02302944 -_0230292C: - add r8, r8, #1 - cmp r8, r6 - movge r8, #0 - add r7, r7, #1 -_0230293C: - cmp r7, r6 - blt _023028FC -_02302944: - cmp r7, r6 - bge _02302964 - add r0, sp, #0x2c - mov r1, r8, lsl #1 - ldrsh r2, [r0, r1] - mov r0, sl - mov r1, r5 - bl EvolveMonster -_02302964: - mov r6, #0 -_02302968: - cmp r6, #0 - beq _023029EC - ldrb r0, [sb, #6] - cmp r0, #0 - bne _023029EC - ldrsh r2, [sb, #0x12] - ldrsh r1, [sb, #0x16] - ldr r0, _02302A30 ; =0x000003E7 - ldr r3, [sp, #0x28] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldr r0, [sp, #4] - sub r0, r1, r0 - str r0, [sp, #0x84] - ldrb r2, [sb, #0x1a] - ldr r1, [sp, #0x24] - ldr r0, [sp, #0x1c] - sub r1, r2, r1 - str r1, [sp, #0x88] - ldrb r1, [sb, #0x1c] - ldr r2, [sp, #0x20] - sub r0, r1, r0 - str r0, [sp, #0x8c] - ldrb r6, [sb, #0x1b] - add r1, sp, #0x60 - mov r0, r5 - sub r3, r6, r3 - str r3, [sp, #0x90] - ldrb r3, [sb, #0x1d] - sub r2, r3, r2 - str r2, [sp, #0x94] - bl ov29_02302CC8 -_023029EC: - cmp fp, #0 - beq _02302A08 - add r2, sp, #0x54 - mov r0, sl - mov r1, r5 - mov r3, #1 - bl ov29_02302C04 -_02302A08: - mov r0, #0 - str r0, [sb, #0x214] - strb r0, [sb, #0x153] -_02302A14: - add r4, r4, #1 - cmp r4, #0x14 - blt _02302780 -_02302A20: - add sp, sp, #0x168 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02302A28: .word 0x02353538 -_02302A2C: .word 0x023527F8 -_02302A30: .word 0x000003E7 -_02302A34: .word 0x00000F1F - arm_func_end EnemyEvolution - - arm_func_start EntityIsValid__02302A38 -EntityIsValid__02302A38: ; 0x02302A38 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02302A38 - - arm_func_start ov29_02302A5C -ov29_02302A5C: ; 0x02302A5C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x74 - mov sb, r1 - mov sl, r0 - mov r0, sb - str r2, [sp] - mov r8, r3 - bl EntityIsValid__02302A38 - cmp r0, #0 - beq _02302BF4 - ldr r5, [sb, #0xb4] - mov r4, #0 - ldrb r0, [r5, #7] - cmp r0, #0 - beq _02302AA4 - ldrb r1, [r5, #0xa] - add r0, sp, #0xc - bl sub_02058C9C -_02302AA4: - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _02302BFC ; =0x000003E7 - ldrb fp, [r5, #0x1c] - add r7, r2, r1 - ldrb r1, [r5, #0x1a] - cmp r7, r0 - movgt r7, r0 - str r1, [sp, #8] - ldrb r1, [r5, #0x1b] - mov r0, r5 - ldrb r6, [r5, #0x1d] - str r1, [sp, #4] - bl IsExperienceLocked - cmp r0, #0 - bne _02302BA8 - ldrb r1, [r5, #0xa] - ldr r0, [sp] - add r2, r1, r0 - cmp r2, #0x64 - movge r2, #0x64 - cmp r2, r1 - beq _02302BA8 - ldrsh r1, [r5, #2] - add r0, sp, #0x18 - bl GetLvlStats - ldr r1, [sp, #0x18] - ldrb r3, [sp, #0x98] - str r1, [r5, #0x20] - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_0230303C - orrs r4, r4, r0 - beq _02302BA8 - ldrb r0, [r5, #6] - cmp r0, #0 - bne _02302BA8 - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _02302BFC ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - sub r0, r1, r7 - str r0, [sp, #0x48] - ldrb r1, [r5, #0x1a] - ldr r0, [sp, #8] - cmp r8, #0 - sub r0, r1, r0 - str r0, [sp, #0x4c] - ldrb r0, [r5, #0x1c] - sub r0, r0, fp - str r0, [sp, #0x50] - ldrb r1, [r5, #0x1b] - ldr r0, [sp, #4] - sub r0, r1, r0 - str r0, [sp, #0x54] - ldrb r0, [r5, #0x1d] - sub r0, r0, r6 - str r0, [sp, #0x58] - beq _02302BA8 - add r1, sp, #0x24 - mov r0, sb - bl ov29_02302CC8 -_02302BA8: - add r2, sp, #0xc - mov r0, sl - mov r1, sb - mov r3, r8 - bl ov29_02302C04 - mov r0, #0 - str r0, [r5, #0x214] - strb r0, [r5, #0x153] - cmp r4, #0 - bne _02302BF4 - cmp r8, #0 - beq _02302BF4 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02302C00 ; =0x00000F1D - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02302BF4: - add sp, sp, #0x74 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02302BFC: .word 0x000003E7 -_02302C00: .word 0x00000F1D - arm_func_end ov29_02302A5C - - arm_func_start ov29_02302C04 -ov29_02302C04: ; 0x02302C04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - ldr r1, [sb, #0xb4] - mov sl, r0 - ldrb r0, [r1, #7] - mov r8, r2 - mov r4, r3 - cmp r0, #0 - beq _02302CB8 - ldrb r1, [r1, #0xa] - add r0, sp, #0 - bl sub_02058C9C - ldr r0, _02302CC0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl sub_0204F610 - cmp r0, #0 - bne _02302CB8 - cmp r4, #0 - beq _02302CB8 - mov r7, #0 - ldr r4, _02302CC4 ; =0x00000F2A - mov fp, r7 - mov r5, #1 - add r6, sp, #0 -_02302C6C: - ldrb r0, [r8, r7] - cmp r0, #0 - ldreqb r0, [r6, r7] - cmpeq r0, #1 - bne _02302CAC - mov r0, fp - mov r1, sb - mov r2, fp - bl SubstitutePlaceholderStringTags - mov r0, r5 - and r1, r7, #0xff - bl ov29_0234B084 - mov r0, sl - mov r1, sb - mov r2, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02302CAC: - add r7, r7, #1 - cmp r7, #0xc - blt _02302C6C -_02302CB8: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02302CC0: .word 0x02353538 -_02302CC4: .word 0x00000F2A - arm_func_end ov29_02302C04 - - arm_func_start ov29_02302CC8 -ov29_02302CC8: ; 0x02302CC8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x58 - mov sb, r0 - mov r8, r1 - mov r4, #0 - bl sub_02025888 - mov r5, r0 - ldr r7, [sb, #0xb4] - mov r0, sb - mov r1, r4 - mov r2, #1 - bl ov29_022F98B4 - add r0, sp, #0x18 - mov r1, r7 - bl ov29_02300164 - add r1, sp, #0x18 - mov r0, sb - str r1, [r8, #0x38] - bl ov29_023009CC - cmp r0, #0 - beq _02302DBC - mov r0, sb - mov r6, r4 - bl ov29_022FB6E4 - cmp r0, #0 - bne _02302D40 - ldrb r0, [r7, #7] - cmp r0, #0 - moveq r6, #1 - b _02302D58 -_02302D40: - ldr r0, _02302F64 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsSpecialEpisodeDungeon - cmp r0, #0 - movne r6, #1 -_02302D58: - cmp r6, #0 - beq _02302DEC - mov r0, r7 - bl ov29_0234CFEC - mov r6, r0 - ldrb r0, [r7, #0x48] - bl ov29_0234CFA0 - mov r2, r0 - mov r0, r6 - mov r1, #3 - bl GetTalkLine - mov r6, r0 - ldrsh r1, [r7, #4] - add r0, sp, #8 - mov r2, #0 - bl ov29_0234BAC0 - mov r1, r6 - mov r0, r5 - bl GetStringFromFileVeneer - mov r0, sb - add r1, sp, #8 - mov r2, r5 - mov r3, #1 - bl ov29_0234D304 - b _02302DEC -_02302DBC: - ldr r0, _02302F68 ; =0x00000F27 - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcpy - mov r2, r4 - mov r0, r5 - mov r3, r2 - str r8, [sp] - mov r1, #1 - str r1, [sp, #4] - bl ov29_0234D234 -_02302DEC: - mov r0, #0 - strb r0, [r5] - ldr r0, [r8, #0x24] - cmp r0, #0 - ble _02302E18 - ldr r0, _02302F6C ; =0x00000F18 - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcat - add r4, r4, #1 -_02302E18: - ldr r0, [r8, #0x28] - cmp r0, #0 - ble _02302E5C - ldr r0, _02302F70 ; =0x023527F0 - ldrb r2, [r0, r4] - cmp r2, #0 - beq _02302E44 - ldr r1, _02302F74 ; =0x023535C8 - mov r0, r5 - ldr r1, [r1, r2, lsl #2] - bl Strcat -_02302E44: - ldr r0, _02302F78 ; =0x00000F19 - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcat - add r4, r4, #1 -_02302E5C: - ldr r0, [r8, #0x2c] - cmp r0, #0 - ble _02302EA0 - ldr r0, _02302F70 ; =0x023527F0 - ldrb r2, [r0, r4] - cmp r2, #0 - beq _02302E88 - ldr r1, _02302F74 ; =0x023535C8 - mov r0, r5 - ldr r1, [r1, r2, lsl #2] - bl Strcat -_02302E88: - ldr r0, _02302F7C ; =0x00000F1A - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcat - add r4, r4, #1 -_02302EA0: - ldr r0, [r8, #0x30] - cmp r0, #0 - ble _02302EE4 - ldr r0, _02302F70 ; =0x023527F0 - ldrb r2, [r0, r4] - cmp r2, #0 - beq _02302ECC - ldr r1, _02302F74 ; =0x023535C8 - mov r0, r5 - ldr r1, [r1, r2, lsl #2] - bl Strcat -_02302ECC: - ldr r0, _02302F80 ; =0x00000F1B - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcat - add r4, r4, #1 -_02302EE4: - ldr r0, [r8, #0x34] - cmp r0, #0 - ble _02302F24 - ldr r0, _02302F70 ; =0x023527F0 - ldrb r2, [r0, r4] - cmp r2, #0 - beq _02302F10 - ldr r1, _02302F74 ; =0x023535C8 - mov r0, r5 - ldr r1, [r1, r2, lsl #2] - bl Strcat -_02302F10: - ldr r0, _02302F84 ; =0x00000F1C - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - bl Strcat -_02302F24: - ldrb r0, [r5] - cmp r0, #0 - beq _02302F4C - mov r2, #0 - mov r0, r5 - mov r3, r2 - str r8, [sp] - mov r1, #1 - str r1, [sp, #4] - bl ov29_0234D234 -_02302F4C: - bl GetLeader - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - add sp, sp, #0x58 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02302F64: .word 0x02353538 -_02302F68: .word 0x00000F27 -_02302F6C: .word 0x00000F18 -_02302F70: .word 0x023527F0 -_02302F74: .word 0x023535C8 -_02302F78: .word 0x00000F19 -_02302F7C: .word 0x00000F1A -_02302F80: .word 0x00000F1B -_02302F84: .word 0x00000F1C - arm_func_end ov29_02302CC8 - - arm_func_start ov29_02302F88 -ov29_02302F88: ; 0x02302F88 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - bl EntityIsValid__02302A38 - cmp r0, #0 - beq _02303030 - ldr r5, [r7, #0xb4] - mov r4, #0 - mov r0, r5 - bl IsExperienceLocked - cmp r0, #0 - bne _02303000 - ldrb r0, [r5, #0xa] - sub r2, r0, r6 - cmp r2, #1 - movlt r2, #1 - cmp r2, r0 - beq _02303000 - ldrsh r1, [r5, #2] - add r0, sp, #0 - bl GetLvlStats - ldr r2, [sp] - mov r0, r8 - mov r1, r7 - str r2, [r5, #0x20] - bl ov29_02303284 - orr r4, r4, r0 -_02303000: - mov r0, #0 - str r0, [r5, #0x214] - strb r0, [r5, #0x153] - cmp r4, #0 - bne _02303030 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02303038 ; =0x00000F1E - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02303030: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02303038: .word 0x00000F1E - arm_func_end ov29_02302F88 - - arm_func_start ov29_0230303C -ov29_0230303C: ; 0x0230303C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r1 - str r0, [sp, #4] - mov r0, sl - mov r6, #0 - mov sb, r2 - str r3, [sp, #8] - bl EntityIsValid__02302A38 - cmp r0, #0 - moveq r0, r6 - beq _02303268 - ldr r7, [sl, #0xb4] - mov r0, r7 - ldrsh fp, [r7, #2] - ldr r8, [r7, #0x20] - bl IsExperienceLocked - cmp r0, #0 - movne r0, r6 - bne _02303268 - ldrb r0, [r7, #0xa] - ldr r4, _02303270 ; =0x0237C9C4 - add r5, r0, #1 - b _0230325C -_0230309C: - add r0, sp, #0xc - mov r1, fp - mov r2, r5 - bl GetLvlStats - ldr r0, [sp, #0xc] - cmp r0, r8 - bgt _02303264 - strb r5, [r7, #0xa] - str r8, [r7, #0x20] - cmp sb, #0 - beq _02303160 - ldrb r0, [r7, #6] - cmp r0, #0 - bne _02303124 - mov r0, sl - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - cmp r6, #0 - bne _023030F0 - bl ov29_022EAC7C -_023030F0: - mov r0, #0 - mov r1, r5 - bl ov29_0234B09C - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r0, sl - mov r1, #0xf20 - bl ov29_0234D484 - b _02303160 -_02303124: - cmp r6, #0 - bne _02303130 - bl ov29_022EAC7C -_02303130: - mov r0, #0 - mov r1, r5 - bl ov29_0234B09C - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r0, sl - mov r1, #0xf20 - bl LogMessageByIdWithPopup -_02303160: - ldrh r1, [sp, #0x10] - add r0, r7, #0x12 - mov r6, #1 - bl sub_02054FB8 - ldrsh r1, [r7, #0x10] - ldrh r0, [sp, #0x10] - add r0, r1, r0 - strh r0, [r7, #0x10] - ldrsh r1, [r7, #0x12] - ldrsh r0, [r7, #0x16] - add r2, r1, r0 - ldr r0, _02303274 ; =0x000003E7 - cmp r2, r0 - movgt r1, r0 - ldrsh r0, [r7, #0x10] - movle r1, r2 - cmp r0, r1 - blt _023031B8 - ldr r0, _02303274 ; =0x000003E7 - cmp r2, r0 - movgt r2, r0 - strh r2, [r7, #0x10] -_023031B8: - ldr r0, _02303278 ; =0x0237C9C8 - ldrb r2, [r7, #0x1a] - mov r1, r0 - strb r2, [r1] - ldrb r2, [r7, #0x1b] - strb r2, [r1, #1] - ldrb r1, [r7, #0x1c] - strb r1, [r4] - ldrb r1, [r7, #0x1d] - strb r1, [r4, #1] - ldrb r1, [sp, #0x12] - bl sub_02054FEC - ldrb r1, [sp, #0x13] - ldr r0, _0230327C ; =0x0237C9C9 - bl sub_02054FEC - ldrb r1, [sp, #0x14] - mov r0, r4 - bl sub_02055020 - ldrb r1, [sp, #0x15] - ldr r0, _02303280 ; =0x0237C9C5 - bl sub_02055020 - mov r0, sl - bl ov29_023021F0 - mov r0, sl - bl ov29_02318D58 - ldr r0, _02303278 ; =0x0237C9C8 - mov r1, sl - ldrb r2, [r0] - ldr r0, [sp, #4] - strb r2, [r7, #0x1a] - ldr r2, _02303278 ; =0x0237C9C8 - ldr r3, [sp, #8] - ldrb ip, [r2, #1] - mov r2, sb - strb ip, [r7, #0x1b] - ldrb ip, [r4] - strb ip, [r7, #0x1c] - ldrb ip, [r4, #1] - strb ip, [r7, #0x1d] - bl ov29_023034E0 - add r5, r5, #1 -_0230325C: - cmp r5, #0x64 - ble _0230309C -_02303264: - mov r0, r6 -_02303268: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02303270: .word 0x0237C9C4 -_02303274: .word 0x000003E7 -_02303278: .word 0x0237C9C8 -_0230327C: .word 0x0237C9C9 -_02303280: .word 0x0237C9C5 - arm_func_end ov29_0230303C - - arm_func_start ov29_02303284 -ov29_02303284: ; 0x02303284 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sl, r1 - str r0, [sp, #4] - mov r0, sl - bl EntityIsValid__02302A38 - cmp r0, #0 - moveq r0, #0 - beq _023034BC - ldr r7, [sl, #0xb4] - mov r0, r7 - ldrsh r5, [r7, #2] - ldr r8, [r7, #0x20] - ldrb r6, [r7, #0xa] - bl IsExperienceLocked - cmp r0, #0 - movne r0, #0 - bne _023034BC - mov sb, #1 - add r4, sp, #8 - b _023032F8 -_023032D8: - mov r0, r4 - mov r1, r5 - mov r2, sb - bl GetLvlStats - ldr r0, [sp, #8] - cmp r0, r8 - bge _02303304 - add sb, sb, #1 -_023032F8: - ldrb r0, [r7, #0xa] - cmp sb, r0 - blt _023032D8 -_02303304: - sub r4, sb, #1 - ldrb sb, [r7, #0xa] - ldr fp, _023034C4 ; =0x0237C9C4 - b _02303450 -_02303314: - cmp sb, #0x64 - strge r8, [r7, #0x20] - bge _0230333C - add r0, sp, #8 - mov r1, r5 - add r2, sb, #1 - bl GetLvlStats - ldr r0, [sp, #8] - sub r0, r0, #1 - str r0, [r7, #0x20] -_0230333C: - cmp r6, sb - ble _0230344C - add r0, sp, #8 - mov r1, r5 - add r2, sb, #1 - bl GetLvlStats - strb sb, [r7, #0xa] - ldrh r1, [sp, #0xc] - add r0, r7, #0x10 - rsb r1, r1, #0 - bl sub_02054FB8 - ldrh r1, [sp, #0xc] - add r0, r7, #0x12 - rsb r1, r1, #0 - bl sub_02054FB8 - ldrsh r1, [r7, #0x12] - ldrsh r0, [r7, #0x16] - add r2, r1, r0 - ldr r0, _023034C8 ; =0x000003E7 - cmp r2, r0 - movgt r1, r0 - ldrsh r0, [r7, #0x10] - movle r1, r2 - cmp r0, r1 - blt _023033B0 - ldr r0, _023034C8 ; =0x000003E7 - cmp r2, r0 - movgt r2, r0 - strh r2, [r7, #0x10] -_023033B0: - ldr r0, _023034CC ; =0x0237C9C8 - ldrb r2, [r7, #0x1a] - mov r1, r0 - strb r2, [r1] - ldrb r2, [r7, #0x1b] - strb r2, [r1, #1] - ldrb r1, [r7, #0x1c] - strb r1, [fp] - ldrb r1, [r7, #0x1d] - strb r1, [fp, #1] - ldrb r1, [sp, #0xe] - rsb r1, r1, #0 - bl sub_02054FEC - ldrb r1, [sp, #0xf] - ldr r0, _023034D0 ; =0x0237C9C9 - rsb r1, r1, #0 - bl sub_02054FEC - ldrb r1, [sp, #0x10] - mov r0, fp - rsb r1, r1, #0 - bl sub_02055020 - ldrb r1, [sp, #0x11] - ldr r0, _023034D4 ; =0x0237C9C5 - rsb r1, r1, #0 - bl sub_02055020 - mov r0, sl - bl ov29_023021F0 - mov r0, sl - bl ov29_02318D58 - ldr r0, _023034CC ; =0x0237C9C8 - ldrb r0, [r0] - strb r0, [r7, #0x1a] - ldr r0, _023034CC ; =0x0237C9C8 - ldrb r0, [r0, #1] - strb r0, [r7, #0x1b] - ldrb r0, [fp] - strb r0, [r7, #0x1c] - ldrb r0, [fp, #1] - strb r0, [r7, #0x1d] -_0230344C: - sub sb, sb, #1 -_02303450: - cmp sb, r4 - bgt _02303314 - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldrb r1, [r7, #0xa] - cmp r1, r6 - bne _02303494 - ldr r2, _023034D8 ; =0x00000F22 - ldr r0, [sp, #4] - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _023034BC -_02303494: - mov r0, #0 - bl ov29_0234B09C - mov r0, sl - mov r1, #0x204 - bl ov29_022E56A0 - ldr r2, _023034DC ; =0x00000F21 - ldr r0, [sp, #4] - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 -_023034BC: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023034C4: .word 0x0237C9C4 -_023034C8: .word 0x000003E7 -_023034CC: .word 0x0237C9C8 -_023034D0: .word 0x0237C9C9 -_023034D4: .word 0x0237C9C5 -_023034D8: .word 0x00000F22 -_023034DC: .word 0x00000F21 - arm_func_end ov29_02303284 - - arm_func_start ov29_023034E0 -ov29_023034E0: ; 0x023034E0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x78 - mov sb, r1 - ldr r5, [sb, #0xb4] - mov r4, #0 - ldrb r0, [r5, #6] - mov r8, r2 - mov fp, r4 - str r3, [sp, #8] - cmp r0, #0 - str r4, [sp, #0xc] - add r0, r5, #0x4a - strne r4, [sp, #8] - movne r8, r4 - bl ov29_022EBCE8 - mov sl, #0 - mov r6, r0 - mvn r0, #0 - cmp r6, r0 - addne r0, r5, r6, lsl #3 - addne r0, r0, #0x100 - ldrneh r7, [r0, #0x28] - mov ip, sl - mov lr, sl - moveq r7, #0 - mov r3, #1 - add r0, sp, #0x10 -_0230354C: - add r1, r5, ip, lsl #3 - ldrb r1, [r1, #0x124] - tst r1, #1 - movne r1, r3 - moveq r1, lr - tst r1, #0xff - beq _02303588 - add r1, r5, ip, lsl #3 - add r1, r1, #0x100 - ldrh r2, [r1, #0x28] - mov r1, sl, lsl #1 - add sl, sl, #1 - strh r2, [r0, r1] - mov r1, sl, lsl #0x10 - mov sl, r1, asr #0x10 -_02303588: - add r1, ip, #1 - mov r1, r1, lsl #0x10 - mov ip, r1, asr #0x10 - cmp ip, #4 - blt _0230354C - mov r2, sl - mov r3, #0 - add r1, sp, #0x10 - b _023035C0 -_023035AC: - add r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r2, r2, lsl #1 - strh r3, [r1, r2] - mov r2, r0, asr #0x10 -_023035C0: - cmp r2, #4 - blt _023035AC - add r1, sp, #0x10 - stmia sp, {r1, sl} - ldrsh r1, [r5, #2] - ldrb r2, [r5, #0xa] - ldrsh r3, [r5, #0xe] - add r0, sp, #0x58 - bl sub_02053904 - mov sl, r0 - add r0, sp, #0x18 - add r1, r5, #0x124 - bl sub_020149C0 - cmp sl, #0 - beq _02303670 - mov r0, sl - bl DungeonRandInt - mov sl, #0 - add ip, sp, #0x18 - mov r1, sl - mov r2, #1 - b _02303668 -_02303618: - ldrb r3, [ip, sl, lsl #3] - tst r3, #1 - movne r3, r2 - moveq r3, r1 - tst r3, #0xff - bne _02303664 - add r1, sp, #0x58 - mov r0, r0, lsl #1 - ldrh r2, [r1, r0] - add r3, sp, #0x18 - mov r0, sb - add r1, r3, sl, lsl #3 - bl ov29_0231EA04 - add r2, sp, #0x1a - mov r1, sl, lsl #3 - ldrh r0, [r2, r1] - orr r0, r0, #4 - strh r0, [r2, r1] - b _02303670 -_02303664: - add sl, sl, #1 -_02303668: - cmp sl, #8 - blt _02303618 -_02303670: - add sl, sp, #0x18 -_02303674: - mov lr, #0 - mov r1, lr -_0230367C: - ldrb r0, [sl, r1, lsl #3] - add r1, r1, #1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne lr, lr, #1 - cmp r1, #8 - blt _0230367C - cmp lr, #4 - bgt _02303770 - mov sl, #0 - mov ip, sl - b _023036FC -_023036B4: - add r1, r5, ip, lsl #3 - add r0, sp, #0x18 - add r2, r1, #0x124 - add r3, r0, ip, lsl #3 - mov r1, #4 -_023036C8: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023036C8 - add r0, r5, ip, lsl #3 - add r0, r0, #0x100 - ldrh r1, [r0, #0x26] - add ip, ip, #1 - tst r1, #4 - bicne r1, r1, #4 - strneh r1, [r0, #0x26] - ldrneh r4, [r0, #0x28] - movne sl, #1 -_023036FC: - cmp ip, lr - blt _023036B4 - mov r1, #0 - b _02303718 -_0230370C: - add r0, r5, ip, lsl #3 - strb r1, [r0, #0x124] - add ip, ip, #1 -_02303718: - cmp ip, #4 - blt _0230370C - cmp sl, #0 - cmpne r8, #0 - beq _02303818 - bl ov29_0234B034 - mov r1, #0 - mov r2, r5 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r1, r4 - mov r0, #0 - bl ov29_0234B084 - ldr r1, _023038C4 ; =0x0000131B - mov r0, sb - bl ov29_022E56A0 - ldr r1, _023038C8 ; =0x00000F23 - mov r0, sb - bl ov29_0234D484 - mov fp, #1 - b _02303818 -_02303770: - ldrb r0, [r5, #6] - cmp r0, #0 - bne _02303808 - ldr r0, [sp, #8] - cmp r0, #0 - beq _02303808 - ldr r0, [sp, #0xc] - cmp r0, #0 - bne _023037E8 - cmp r8, #0 - beq _023037E8 - mov r0, #0xa - mov r1, #6 - bl ov29_022EA370 - ldrsh r1, [r5, #2] - ldr r0, _023038CC ; =0xFFFFFE5E - mov r2, #1 - add r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - mov r0, #0 - ldr r1, _023038D0 ; =0x00000F25 - bhi _023037E4 - add r1, r1, #1 - bl DisplayMessage2 - b _023037E8 -_023037E4: - bl DisplayMessage2 -_023037E8: - mov r0, #1 - str r0, [sp, #0xc] - mov r0, sb - mov r1, sl - mov r2, #1 - mov r3, #0 - bl ov29_0234FAEC - b _02303674 -_02303808: - mov r0, sb - mov r1, sl - bl ov29_02303BEC - b _02303674 -_02303818: - cmp fp, #0 - cmpne r7, #0 - mvnne r0, #0 - cmpne r6, r0 - beq _023038BC - mov r2, #0 - mov r4, r6 - mov r0, r2 - mov r1, #1 - b _0230389C -_02303840: - add r3, r5, r4, lsl #3 - ldrb r3, [r3, #0x124] - tst r3, #1 - movne r3, r1 - moveq r3, r0 - tst r3, #0xff - beq _02303870 - add r3, r5, r4, lsl #3 - add r3, r3, #0x100 - ldrh r3, [r3, #0x28] - cmp r7, r3 - beq _023038A4 -_02303870: - add r3, r4, #1 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - mov r4, r3, lsr #0x1f - rsb r3, r4, r3, lsl #30 - add r4, r4, r3, ror #30 - add r3, r2, #1 - mov r2, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r4, r2, asr #0x10 - mov r2, r3, asr #0x10 -_0230389C: - cmp r2, #4 - blt _02303840 -_023038A4: - cmp r2, #4 - beq _023038B4 - cmp r4, r6 - beq _023038BC -_023038B4: - mov r0, #1 - strb r0, [r5, #0x23e] -_023038BC: - add sp, sp, #0x78 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023038C4: .word 0x0000131B -_023038C8: .word 0x00000F23 -_023038CC: .word 0xFFFFFE5E -_023038D0: .word 0x00000F25 - arm_func_end ov29_023034E0 - - arm_func_start ov29_023038D4 -ov29_023038D4: ; 0x023038D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xa4 - mov sl, r0 - ldr r8, [sl, #0xb4] - mov r6, r1 - mov r5, #0 - add r0, sp, #0 - add r1, r8, #0x124 - mov r7, r5 - bl sub_020149C0 - mov r4, r5 - add r3, sp, #0 - mov r0, r5 - mov r1, #1 - b _02303958 -_02303910: - ldrb r2, [r3, r4, lsl #3] - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - bne _02303954 - add r1, sp, #0 - mov r0, sl - mov r2, r6 - add r1, r1, r4, lsl #3 - bl ov29_0231EA04 - add r2, sp, #2 - mov r1, r4, lsl #3 - ldrh r0, [r2, r1] - orr r0, r0, #4 - strh r0, [r2, r1] - b _02303960 -_02303954: - add r4, r4, #1 -_02303958: - cmp r4, #8 - blt _02303910 -_02303960: - mov sb, #0 - mov fp, #1 - add r4, sp, #0 - b _02303AC8 -_02303970: - mov r6, #0 - mov r1, r6 -_02303978: - ldrb r0, [r4, r1, lsl #3] - add r1, r1, #1 - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - addne r6, r6, #1 - cmp r1, #8 - blt _02303978 - cmp r6, #4 - bgt _02303A84 - mov sb, #0 - add r4, r8, #0x124 - add fp, sp, #0 - b _02303A14 -_023039B4: - add r0, r8, sb, lsl #3 - add r3, fp, sb, lsl #3 - add r2, r0, #0x124 - mov r1, #4 -_023039C4: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023039C4 - add r0, r8, sb, lsl #3 - add r3, r0, #0x100 - ldrh r0, [r3, #0x26] - tst r0, #4 - beq _02303A10 - bic r5, r0, #4 - add r0, sp, #0x40 - mov r2, #0 - add r1, r4, sb, lsl #3 - strh r5, [r3, #0x26] - bl FormatMoveString - add r0, r8, sb, lsl #3 - add r0, r0, #0x100 - ldrh r5, [r0, #0x28] - mov r7, #1 -_02303A10: - add sb, sb, #1 -_02303A14: - cmp sb, r6 - blt _023039B4 - mov r1, #0 - b _02303A30 -_02303A24: - add r0, r8, sb, lsl #3 - strb r1, [r0, #0x124] - add sb, sb, #1 -_02303A30: - cmp sb, #4 - blt _02303A24 - cmp r7, #0 - beq _02303AD0 - ldrb r0, [r8, #6] - cmp r0, #0 - bne _02303AD0 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r5 - mov r0, #0 - bl ov29_0234B084 - ldr r1, _02303B08 ; =0x0000131B - mov r0, sl - bl ov29_022E56A0 - ldr r1, _02303B0C ; =0x00000F23 - mov r0, sl - bl ov29_0234D484 - b _02303AD0 -_02303A84: - ldrb r0, [r8, #6] - mov r7, #0 - cmp r0, #0 - bne _02303AC4 - ldr r1, _02303B10 ; =0x00000F28 - mov r0, r7 - mov r2, #1 - bl DisplayMessage - mov r2, #1 - mov r0, sl - mov r1, r4 - mov r3, r2 - bl ov29_0234FAEC - cmp r0, #0 - moveq r0, r7 - beq _02303B00 -_02303AC4: - add sb, sb, #1 -_02303AC8: - cmp sb, #0x1e - blt _02303970 -_02303AD0: - cmp r7, #0 - ldreqb r0, [r8, #6] - cmpeq r0, #0 - bne _02303AFC - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02303B14 ; =0x00000F24 - mov r0, sl - bl ov29_0234D484 -_02303AFC: - mov r0, #1 -_02303B00: - add sp, sp, #0xa4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02303B08: .word 0x0000131B -_02303B0C: .word 0x00000F23 -_02303B10: .word 0x00000F28 -_02303B14: .word 0x00000F24 - arm_func_end ov29_023038D4 - - arm_func_start ov29_02303B18 -ov29_02303B18: ; 0x02303B18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov sb, r2 - mov r2, #0 - mov sl, r0 - mov r8, r2 -_02303B30: - mov r0, r2, lsl #1 - add r2, r2, #1 - strh r8, [sl, r0] - cmp r2, #4 - blt _02303B30 - mov r0, r1 - bl GetMovesetLevelUpPtr - mov r7, r0 - add r6, sp, #0 - mov r5, #0 - mov r4, #4 - b _02303BD8 -_02303B60: - mov r0, r7 - mov r1, r6 - bl sub_0205384C - ldrb r1, [r0] - add r7, r0, #1 - cmp r1, sb - bgt _02303BE4 - mov r1, r5 - ldrh r2, [sp] - b _02303BA4 -_02303B88: - mov r0, r1, lsl #1 - ldrh r0, [sl, r0] - cmp r2, r0 - beq _02303BAC - add r0, r1, #1 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 -_02303BA4: - cmp r1, #4 - blt _02303B88 -_02303BAC: - cmp r1, #4 - bne _02303BD8 - cmp r8, #4 - movne r0, r8 - addne r8, r8, #1 - bne _02303BCC - mov r0, r4 - bl DungeonRandInt -_02303BCC: - ldrh r1, [sp] - mov r0, r0, lsl #1 - strh r1, [sl, r0] -_02303BD8: - ldrb r0, [r7] - cmp r0, #0 - bne _02303B60 -_02303BE4: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02303B18 - - arm_func_start ov29_02303BEC -ov29_02303BEC: ; 0x02303BEC - stmdb sp!, {r4, lr} - mov r0, #0 - mov r4, r1 - mov ip, r0 - mov r2, r0 - mov r3, #1 -_02303C04: - ldrb r1, [r4, ip, lsl #3] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - ldrneb r1, [r4, ip, lsl #3] - addne r0, r0, #1 - bicne r1, r1, #2 - strneb r1, [r4, ip, lsl #3] - add ip, ip, #1 - cmp ip, #8 - blt _02303C04 - bl DungeonRandInt - add r1, r4, r0, lsl #3 - ldrh lr, [r1, #4] - b _02303C64 -_02303C44: - add ip, r4, r0, lsl #3 - add r3, ip, #8 - mov r2, #4 -_02303C50: - ldrh r1, [r3], #2 - subs r2, r2, #1 - strh r1, [ip], #2 - bne _02303C50 - add r0, r0, #1 -_02303C64: - cmp r0, #7 - blt _02303C44 - mov r1, #0 - mov r0, lr - strb r1, [r4, #0x38] - ldmia sp!, {r4, pc} - arm_func_end ov29_02303BEC - - arm_func_start EvolveMonster -EvolveMonster: ; 0x02303C7C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r7, r1 - ldr r6, [r7, #0xb4] - mov r8, r0 - mov r5, r2 - bl ov29_0234B034 - mov r1, #0 - mov r2, r6 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r1, r5 - mov r0, #1 - bl ov29_0234B06C - mov r0, r5 - bl GetSpriteIndex__022F7388 - strh r5, [r6, #4] - strh r5, [r6, #2] - mov r4, r0 - ldrb r2, [r6, #0xa] - add r0, sp, #0x14 - mov r1, r5 - bl GetLvlStats - ldr r1, [sp, #0x14] - mov r0, r6 - str r1, [r6, #0x20] - mov r1, #0 - strh r4, [r7, #0xa8] - bl ov29_022FDDC0 - mov r0, r7 - bl ov29_022F9194 - mov r0, r7 - mov r1, #7 - bl ov29_02304830 - ldr r2, _02303DFC ; =0x00000F29 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - bl ov29_022E6724 - bl ov29_022EAC9C - ldr r0, _02303E00 ; =0x0000013F - cmp r5, r0 - addne r0, r0, #0x258 - cmpne r5, r0 - bne _02303DF4 - mov r5, #0 - ldr r4, _02303E04 ; =0x0235171C - mov r8, #0x140 - b _02303D84 -_02303D48: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh ip, [r7, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [r7, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - mov r1, r0 - mov r0, r8 - bl ov29_022FF6C4 - cmp r0, #0 - beq _02303D8C - add r5, r5, #1 -_02303D84: - cmp r5, #8 - blt _02303D48 -_02303D8C: - mov r0, #0x140 - bl IsOnMonsterSpawnList - cmp r0, #0 - beq _02303DF4 - mov r0, #0x140 - strh r0, [sp, #4] - ldrb r1, [r6, #0xa] - mov r2, #0 - ldr r0, _02303E04 ; =0x0235171C - mov r5, r5, lsl #2 - strh r1, [sp, #0xc] - strb r2, [sp, #6] - ldrsh r3, [r0, r5] - ldrsh r4, [r7, #4] - ldr r1, _02303E08 ; =0x0235171E - add r0, sp, #4 - add r3, r4, r3 - strh r3, [sp, #0xe] - ldrsh r4, [r7, #6] - ldrsh r3, [r1, r5] - mov r1, #1 - str r2, [sp, #8] - add r3, r4, r3 - strh r3, [sp, #0x10] - strb r2, [sp, #0x12] - bl SpawnMonster -_02303DF4: - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02303DFC: .word 0x00000F29 -_02303E00: .word 0x0000013F -_02303E04: .word 0x0235171C -_02303E08: .word 0x0235171E - arm_func_end EvolveMonster - - arm_func_start ov29_02303E0C -ov29_02303E0C: ; 0x02303E0C - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0xbc] - cmp r1, #1 - cmpne r1, #2 - cmpne r1, #3 - cmpne r1, #0xb - cmpne r1, #0xc - cmpne r1, #0xd - cmpne r1, #0xe - beq _02303E4C - cmp r1, #4 - bne _02303E54 - ldrsh r0, [r0, #2] - bl NeedsItemToSpawn - cmp r0, #0 - beq _02303E54 -_02303E4C: - mov r0, #1 - ldmia sp!, {r3, pc} -_02303E54: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_02303E0C - - arm_func_start ov29_02303E5C -ov29_02303E5C: ; 0x02303E5C - stmdb sp!, {r3, r4, r5, lr} - mvn r4, #0x1f - cmp r3, r4 - ldrgtsh ip, [sp, #0x10] - cmpgt ip, r4 - ldmleia sp!, {r3, r4, r5, pc} - rsb lr, r4, #0xff - cmp r3, lr - cmplt ip, #0xe0 - ldmgeia sp!, {r3, r4, r5, pc} - cmp r1, #6 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r5, _02303F0C ; =0x0237C888 - mov lr, #0x48 - smlabb r5, r2, lr, r5 - mov r2, #0xc - mla r1, r2, r1, r5 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh lr, [r1, #2] - ldrsh r5, [r1, #8] - sub r0, r2, #0x20c - and r0, lr, r0 - strh r0, [r1, #2] - ldrh r2, [r1, #2] - add r0, r3, r5 - and r0, r0, r4, lsr #23 - orr r0, r2, r0 - strh r0, [r1, #2] - ldrh r3, [r1, #6] - ldrsh r4, [r1, #0xa] - ldr r0, _02303F10 ; =0xFFFF000F - ldr r2, _02303F14 ; =0x020AFC4C - and r0, r3, r0 - strh r0, [r1, #6] - add r0, ip, r4 - ldrh r4, [r1, #6] - mov r3, r0, lsl #0x14 - ldr r0, [r2] - orr r3, r4, r3, lsr #16 - mov r2, #0 - strh r3, [r1, #6] - bl sub_0201B9F8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02303F0C: .word 0x0237C888 -_02303F10: .word 0xFFFF000F -_02303F14: .word 0x020AFC4C - arm_func_end ov29_02303E5C - - arm_func_start ov29_02303F18 -ov29_02303F18: ; 0x02303F18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x38 - ldr r1, _023046C8 ; =0x02353538 - mov r7, r0 - ldr r0, [r1] - ldr r5, [r7, #0xb4] - add r0, r0, #0x1a000 - ldr r1, [r0, #0x22c] - cmp r1, r7 - moveq r4, #0 - ldrneb r4, [r0, #0x245] - ldrb r0, [r5, #0xd8] - ldrb r1, [r7, #0xaf] - cmp r0, #2 - ldrb r0, [r7, #0xae] - moveq r4, #1 - cmp r1, r0 - ldreqb r1, [r7, #0xb1] - ldreqb r0, [r7, #0xb0] - cmpeq r1, r0 - ldreqb r0, [r7, #0xb3] - cmpeq r0, #0 - bne _02304044 - add r0, r7, #0x2c - mov r6, #0 - bl sub_0201D1B0 - cmp r0, #0 - moveq r6, #1 - cmp r6, #0 - beq _02304044 - mov r0, r7 - bl GetSleepAnimationId - mov r3, #1 - strb r3, [r7, #0x21] - ldrb r1, [r5, #0x10a] - cmp r1, #0x63 - bne _02303FF4 - ldrb r6, [r7, #0xaf] - cmp r6, #0xd - bhs _02303FF0 - ldrb r1, [r5, #0xd2] - cmp r1, #1 - moveq r3, #2 - beq _02303FD4 - ldrb r1, [r7, #0x23] - cmp r1, #3 - movlo r3, #0 -_02303FD4: - ldr r2, _023046CC ; =0x02352810 - mov r1, #0xd - mla r1, r3, r1, r2 - ldrb r1, [r6, r1] - cmp r1, #7 - moveq r1, r0 - b _02303FF4 -_02303FF0: - mov r1, #0x63 -_02303FF4: - cmp r1, #0x63 - beq _02304044 - strb r1, [r7, #0xae] - mov r1, #0 - strb r1, [r7, #0x28] - ldrb r2, [r7, #0xb1] - mov r1, #1 - and r2, r2, #7 - strb r2, [r7, #0xb0] - strb r1, [r7, #0xb3] - ldrb r1, [r5, #0x23d] - cmp r1, #0 - ldreqb r1, [r7, #0xae] - cmpeq r1, #6 - ldreqb r1, [r7, #0xb2] - addeq r2, r1, #1 - andeq r1, r2, #0xff - streqb r2, [r7, #0xb2] - cmpeq r1, #0x10 - streqb r0, [r7, #0xae] -_02304044: - ldrh r0, [r7, #0x2e] - orr r0, r0, #0x10 - strh r0, [r7, #0x2e] - ldrb r2, [r7, #0xae] - ldrb r0, [r7, #0xaf] - cmp r0, r2 - ldreqb r1, [r7, #0xb1] - ldreqb r0, [r7, #0xb0] - cmpeq r1, r0 - ldreqb r0, [r7, #0xb3] - cmpeq r0, #0 - beq _023041F4 - strb r2, [r7, #0xaf] - ldrb r1, [r7, #0xb0] - mov r0, #0 - strb r1, [r7, #0xb1] - strb r0, [r7, #0xb3] - ldrb r0, [r7, #0x28] - cmp r0, #0 - movne r6, #2 - ldreqsh r6, [r7, #0xac] - cmp r4, #0 - bne _0230414C - cmp r0, #0 - beq _023040EC - bl ov29_022F7050 - mov r1, r0 - add r0, r7, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - mov r1, r6, lsl #0x10 - mov r3, r1, asr #0x10 - mov r1, #0 - str r1, [sp] - and r0, r0, #3 - stmib sp, {r0, r1} - str r1, [sp, #0xc] - ldrb r1, [r7, #0xae] - ldrb r2, [r7, #0xb0] - add r0, r7, #0x2c - bl sub_0201C418 - b _023041E4 -_023040EC: - ldrsh r1, [r7, #0xa8] - add r0, r7, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - ldrb r1, [r7, #0xaa] - and r0, r0, #3 - mov r3, r6, lsl #0x10 - str r1, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldrb r1, [r7, #0xae] - ldrb r2, [r7, #0xb0] - add r0, r7, #0x2c - mov r3, r3, asr #0x10 - bl sub_0201C418 - ldrb r0, [r5, #0x171] - cmp r0, #0 - beq _023041E4 - add r0, r7, #0x2c - mov r1, #1 - bl sub_0201D198 - b _023041E4 -_0230414C: - cmp r0, #0 - beq _02304198 - bl ov29_022F7050 - mov r1, r0 - add r0, r7, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - mov r1, r6, lsl #0x10 - mov r3, r1, asr #0x10 - mov r1, #0 - str r1, [sp] - and r0, r0, #3 - stmib sp, {r0, r1} - str r1, [sp, #0xc] - ldrb r1, [r7, #0xae] - ldrb r2, [r7, #0xb0] - add r0, r7, #0x2c - bl sub_0201C418 - b _023041E4 -_02304198: - ldr r0, _023046D0 ; =0x00000229 - bl GetSpriteIndex__022F7388 - mov r1, r0 - add r0, r7, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - mov r1, r6, lsl #0x10 - mov r3, r1, asr #0x10 - ldrb r2, [r7, #0xaa] - and r1, r0, #3 - mov r0, #0 - str r2, [sp] - str r1, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - add r0, r7, #0x2c - ldrb r1, [r7, #0xae] - ldrb r2, [r7, #0xb0] - bl sub_0201C418 -_023041E4: - ldrb r0, [r7, #0xae] - cmp r0, #6 - movne r0, #0 - strneb r0, [r7, #0xb2] -_023041F4: - ldr r1, [r7, #0xc] - ldr r0, [r7, #0x14] - cmp r1, r0 - ldreq r1, [r7, #0x10] - ldreq r0, [r7, #0x18] - cmpeq r1, r0 - bne _02304224 - ldrb r0, [r7, #0x23] - cmp r0, #0xa - addlo r0, r0, #1 - strlob r0, [r7, #0x23] - b _0230422C -_02304224: - mov r0, #0 - strb r0, [r7, #0x23] -_0230422C: - ldr r1, [r7, #0xc] - ldr r0, _023046D4 ; =0x0001A224 - str r1, [r7, #0x14] - ldr r2, [r7, #0x10] - ldr r1, _023046C8 ; =0x02353538 - str r2, [r7, #0x18] - ldr r8, [r1] - add r1, r0, #2 - ldrsh r4, [r8, r1] - ldr r6, [r7, #0x10] - ldr r3, [r7, #0x1c] - ldrb r2, [r5, #0x160] - rsb r1, r4, r6, asr #8 - ldrsh r8, [r8, r0] - add r1, r1, r1, lsr #31 - ldr sb, [r7, #0xc] - ldr r0, [r5, #0x188] - sub r3, r6, r3 - sub r0, r3, r0 - rsb r8, r8, sb, asr #8 - mov sl, r1, asr #1 - cmp r2, #0 - rsb sb, r4, r0, asr #8 - subeq sl, sl, #1 - bl ov29_022ECB38 - cmp r0, #0 - beq _023042B0 - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - tst r0, #1 - mvnne r0, #1 - moveq r0, #2 - add r8, r8, r0 -_023042B0: - ldrb r0, [r5, #0x172] - cmp r0, #0 - bne _023042D8 - mov r0, r7 - bl ov29_022E273C - ldrb r1, [r5, #0x170] - mov r4, r0 - cmp r1, #0 - movne r4, #0 - b _02304310 -_023042D8: - ldrb r0, [r5, #0x173] - cmp r0, #0 - beq _023042FC - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - tst r0, #4 - movne r0, #1 - mvneq r0, #0 - add r8, r8, r0 -_023042FC: - ldrb r0, [r5, #0x174] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r4, r0, #0xff -_02304310: - ldr r3, _023046DC ; =0x0235280C - add r0, sp, #0x28 - ldrh r6, [r3] - add r2, r7, #0x2c - mov r1, #4 - strh r6, [sp, #0x18] - ldrh r3, [r3, #2] - strh r3, [sp, #0x1a] - ldr r3, [r7, #0xc] - mov r3, r3, asr #8 - strh r3, [sp, #0x18] - ldr ip, [r7, #0x10] - ldr r6, [r7, #0x1c] - ldr r3, [r5, #0x188] - sub r6, ip, r6 - sub r3, r6, r3 - mov r3, r3, asr #8 - strh r3, [sp, #0x1a] - bl sub_0201D034 - ldr r1, _023046C8 ; =0x02353538 - ldr r0, [r5, #0xb0] - ldr r2, [r1] - add r1, sp, #0x18 - add r2, r2, #0x1a000 - ldrb r3, [r2, #0x23c] - add r2, sp, #0x28 - bl ov29_022DDB98 - add r0, sp, #0x10 - mov r1, r7 - bl ov29_022E3A40 - cmp r4, #0 - ldrneb r0, [r5, #0x156] - cmpne r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - str r0, [sp] - ldrsh r1, [r5, #4] - ldr r0, [r5, #0xb0] - ldr r2, [sp, #0x10] - ldr r3, [sp, #0x14] - bl ov29_022DD7D8 - mov r0, r7 - mov r1, sl - bl ov29_022E6E80 - mov r0, r7 - bl ov29_023046E8 - cmp r4, #0 - beq _0230464C - ldr r0, [r7, #0xb4] - ldr r1, _023046C8 ; =0x02353538 - ldr r3, _023046E0 ; =0x0000F3FF - ldrb r6, [r0, #0x220] - mov r0, #0 - ldr r1, [r1] - add r2, r3, #0xc00 - strh r3, [sp, #0x1c] - strh r2, [sp, #0x1e] - strh r3, [sp, #0x20] - strh r0, [sp, #0x22] - strh r0, [sp, #0x24] - add r2, r1, #0x1a000 - ldrb r2, [r2, #0x23c] - mov r2, r2, lsl #0xa - strh r2, [sp, #0x26] - ldrb r2, [r5, #6] - cmp r2, #0 - beq _02304458 - ldrb r2, [r5, #0xbc] - cmp r2, #0xb - blo _02304434 - cmp r2, #0xe - bls _02304458 -_02304434: - ldrsh r3, [r5, #4] - ldr r2, _023046E4 ; =0xFFFFFE5D - add r2, r3, r2 - mov r2, r2, lsl #0x10 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - cmp r2, #2 - movls r0, #1 -_02304458: - ldrb r2, [r5, #0xef] - cmp r2, #1 - addeq r1, r1, #0x1a000 - ldreqb r1, [r1, #0x244] - cmpeq r1, #0 - moveq r0, #1 - cmp r0, #0 - beq _023044B8 - bl ov29_02338988 - cmp r0, #0 - beq _02304498 - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - tst r0, #1 - beq _023044B8 - b _023046C0 -_02304498: - bl ov29_022E3580 - cmp r0, #0 - bne _023044B8 - bl ov29_022E3570 - cmp r0, #0 - ldreqh r0, [sp, #0x22] - orreq r0, r0, #0x400 - streqh r0, [sp, #0x22] -_023044B8: - ldrh r2, [r7, #0x2e] - add r1, sp, #0x1c - add r0, r7, #0x2c - orr r2, r2, #0x20 - strh r2, [r7, #0x2e] - bl sub_0201D110 - ldrb r0, [r5, #6] - cmp r0, #0 - ldrneb r0, [r5, #0xd8] - cmpne r0, #2 - moveq r0, #1 - movne r0, #0 - mov r1, r0, lsl #0x10 - mov r0, r5 - mov r4, r1, asr #0x10 - bl IsExperienceLocked - cmp r0, #0 - bne _0230450C - ldrb r0, [r5, #0xbc] - cmp r0, #7 - bne _02304510 -_0230450C: - mov r4, #1 -_02304510: - strh sl, [r7, #0x64] - strh r8, [r7, #0x48] - strh sb, [r7, #0x4a] - ldrb r0, [r5, #0x10b] - cmp r0, #2 - beq _02304590 - ldrb r1, [r5, #0xc4] - cmp r1, #6 - ldrneb r0, [r5, #0xbf] - cmpne r0, #4 - cmpne r1, #2 - bne _02304558 - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - and r0, r0, #2 - add r0, r8, r0 - strh r0, [r7, #0x48] - strh sb, [r7, #0x4a] -_02304558: - ldrb r0, [r7, #0x22] - cmp r0, #0 - bne _02304570 - add r0, r7, #0x2c - bl sub_0201CF5C - b _02304590 -_02304570: - cmp r0, #1 - bne _02304590 - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - tst r0, #1 - beq _02304590 - add r0, r7, #0x2c - bl sub_0201CF5C -_02304590: - ldrsh r2, [r7, #0x50] - add r1, r5, #0x100 - ldr r0, _023046D4 ; =0x0001A224 - strh r2, [r1, #0x82] - ldrsh r8, [r7, #0x52] - ldr r3, _023046C8 ; =0x02353538 - add r2, r0, #2 - strh r8, [r1, #0x84] - ldrsh sb, [r1, #0x82] - ldr r8, [r7, #0xc] - add r8, sb, r8, asr #8 - strh r8, [r1, #0x82] - ldrsh sb, [r1, #0x84] - ldr r8, [r7, #0x10] - add r8, sb, r8, asr #8 - strh r8, [r1, #0x84] - ldr sb, [r3] - ldrsh r8, [r1, #0x82] - ldrsh r0, [sb, r0] - ldrsh r3, [r1, #0x84] - ldrsh r1, [sb, r2] - sub r0, r8, r0 - mov r0, r0, lsl #0x10 - sub r1, r3, r1 - mov r1, r1, lsl #0x10 - mov r8, r0, asr #0x10 - mov sb, r1, asr #0x10 - bl ov29_022ECB38 - cmp r0, #0 - beq _02304628 - ldr r0, _023046D8 ; =0x0237C850 - ldr r0, [r0] - tst r0, #1 - mvnne r0, #1 - moveq r0, #2 - add r0, r8, r0 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 -_02304628: - ldrb r0, [r7, #0x22] - cmp r0, #0 - bne _0230464C - str sb, [sp] - ldrb r0, [r5, #0x160] - mov r1, r6 - mov r2, r4 - mov r3, r8 - bl ov29_02303E5C -_0230464C: - ldrb r0, [r5, #0xc4] - cmp r0, #1 - cmpne r0, #6 - beq _023046C0 - ldr r0, _023046C8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x78b] - cmp r0, #0 - beq _02304690 - bl ov29_0234B4E0 - cmp r0, #0 - bne _02304690 - add r0, r7, #0x2c - bl sub_0201C458 - add r0, r7, #0x2c - bl sub_0201C458 - b _023046B8 -_02304690: - ldrb r0, [r7, #0xaf] - cmp r0, #0 - cmpne r0, #7 - bne _023046B8 - ldr r0, [r7, #0xb4] - ldr r0, [r0, #0x110] - cmp r0, #1 - ble _023046B8 - add r0, r7, #0x2c - bl sub_0201C458 -_023046B8: - add r0, r7, #0x2c - bl sub_0201C458 -_023046C0: - add sp, sp, #0x38 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023046C8: .word 0x02353538 -_023046CC: .word 0x02352810 -_023046D0: .word 0x00000229 -_023046D4: .word 0x0001A224 -_023046D8: .word 0x0237C850 -_023046DC: .word 0x0235280C -_023046E0: .word 0x0000F3FF -_023046E4: .word 0xFFFFFE5D - arm_func_end ov29_02303F18 - - arm_func_start ov29_023046E8 -ov29_023046E8: ; 0x023046E8 - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0x172] - cmp r0, #0 - bxne lr - ldrb r0, [r1, #0x10b] - cmp r0, #1 - ldr r0, [r1, #0x188] - bne _02304728 - cmp r0, #0xc800 - bxge lr - add r0, r0, #0x800 - str r0, [r1, #0x188] - cmp r0, #0xc800 - movgt r0, #0xc800 - strgt r0, [r1, #0x188] - bx lr -_02304728: - subs r0, r0, #0xc00 - str r0, [r1, #0x188] - movmi r0, #0 - strmi r0, [r1, #0x188] - bx lr - arm_func_end ov29_023046E8 - - arm_func_start ov29_0230473C -ov29_0230473C: ; 0x0230473C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, #0 - ldr r6, _023047B4 ; =0x02353538 - mov r7, r5 -_0230474C: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r4, [r0, #0xb78] - mov r0, r4 - bl EntityIsValid__023047B8 - cmp r0, #0 - ldrne r2, [r4, #0xb4] - ldrneb r0, [r2, #0x179] - cmpne r0, #0 - beq _023047A4 - sub r1, r0, #1 - and r0, r1, #0xff - strb r1, [r2, #0x179] - tst r0, #1 - bne _023047A4 - ldrb r2, [r2, #0x4c] - mov r0, r4 - mov r1, r7 - sub r2, r2, #1 - and r2, r2, #7 - bl ov29_023049A8 -_023047A4: - add r5, r5, #1 - cmp r5, #0x14 - blt _0230474C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023047B4: .word 0x02353538 - arm_func_end ov29_0230473C - - arm_func_start EntityIsValid__023047B8 -EntityIsValid__023047B8: ; 0x023047B8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__023047B8 - - arm_func_start ov29_023047DC -ov29_023047DC: ; 0x023047DC - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _0230482C ; =0x02353538 - mov r5, #0 -_023047E8: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__023047B8 - cmp r0, #0 - beq _0230481C - mov r0, r6 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r6 - bl ov29_02304830 -_0230481C: - add r5, r5, #1 - cmp r5, #0x14 - blt _023047E8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230482C: .word 0x02353538 - arm_func_end ov29_023047DC - - arm_func_start ov29_02304830 -ov29_02304830: ; 0x02304830 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r2, _0230494C ; =0x02353538 - mov r5, r0 - ldr r0, [r2] - ldr r4, [r5, #0xb4] - add r0, r0, #0x1a000 - ldr r2, [r0, #0x22c] - ldrb r3, [r0, #0x245] - cmp r5, r2 - mov r2, #0 - strb r2, [r5, #0x28] - strb r1, [r5, #0xaf] - and r0, r1, #0xff - strb r0, [r5, #0xae] - ldrb r0, [r4, #0x4c] - moveq r3, #0 - strb r0, [r5, #0xb1] - strb r0, [r5, #0xb0] - strb r2, [r5, #0xb3] - ldrb r0, [r4, #0xd8] - ldrsh r6, [r5, #0xac] - cmp r0, #2 - beq _023048E0 - cmp r3, #0 - bne _023048E0 - ldrsh r1, [r5, #0xa8] - add r0, r5, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - ldrb r1, [r5, #0xaa] - and r0, r0, #3 - mov r3, r6, lsl #0x10 - str r1, [sp] - str r0, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - str r0, [sp, #0xc] - ldrb r1, [r5, #0xae] - ldrb r2, [r5, #0xb0] - add r0, r5, #0x2c - mov r3, r3, asr #0x10 - bl sub_0201C418 - b _0230492C -_023048E0: - ldr r0, _02304950 ; =0x00000229 - bl GetSpriteIndex__022F7388 - mov r1, r0 - add r0, r5, #0x2c - bl sub_0201C0E8 - bl Rand16Bit - mov r1, r6, lsl #0x10 - mov r3, r1, asr #0x10 - ldrb r2, [r5, #0xaa] - and r1, r0, #3 - mov r0, #0 - str r2, [sp] - str r1, [sp, #4] - str r0, [sp, #8] - str r0, [sp, #0xc] - add r0, r5, #0x2c - ldrb r1, [r5, #0xae] - ldrb r2, [r5, #0xb0] - bl sub_0201C418 -_0230492C: - mov r0, #0 - strb r0, [r5, #0xb2] - ldrb r0, [r4, #6] - cmp r0, #0 - bne _02304944 - bl ov29_022E8104 -_02304944: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230494C: .word 0x02353538 -_02304950: .word 0x00000229 - arm_func_end ov29_02304830 - - arm_func_start ov29_02304954 -ov29_02304954: ; 0x02304954 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _023049A4 ; =0x02353538 - mov r5, #0 -_02304960: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__023047B8 - cmp r0, #0 - beq _02304994 - mov r0, r6 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r6 - bl ov29_02304830 -_02304994: - add r5, r5, #1 - cmp r5, #0x14 - blt _02304960 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023049A4: .word 0x02353538 - arm_func_end ov29_02304954 - - arm_func_start ov29_023049A8 -ov29_023049A8: ; 0x023049A8 - ldr r3, [r0] - cmp r3, #1 - bxne lr - mov r3, #0 - strb r3, [r0, #0x28] - strb r1, [r0, #0xae] - cmp r2, #0 - bxlt lr - cmp r2, #8 - strltb r2, [r0, #0xb0] - bx lr - arm_func_end ov29_023049A8 - - arm_func_start ov29_023049D4 -ov29_023049D4: ; 0x023049D4 - stmdb sp!, {r3, lr} - ldr r3, [r0] - cmp r3, #1 - ldmneia sp!, {r3, pc} - ldrb r3, [r0, #0xaf] - cmp r3, r1 - ldreqb r3, [r0, #0xb1] - cmpeq r3, r2 - ldmeqia sp!, {r3, pc} - bl ov29_023049A8 - ldmia sp!, {r3, pc} - arm_func_end ov29_023049D4 - - arm_func_start ov29_02304A00 -ov29_02304A00: ; 0x02304A00 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, [r5] - mov r4, r1 - cmp r2, #1 - ldmneia sp!, {r3, r4, r5, pc} - bl GetSleepAnimationId - strb r0, [r5, #0xae] - mov r0, #0 - strb r0, [r5, #0x28] - cmp r4, #0 - ldmltia sp!, {r3, r4, r5, pc} - cmp r4, #8 - ldrlt r0, [r5, #0xb4] - andlt r1, r4, #7 - strltb r1, [r0, #0x4c] - strltb r1, [r5, #0xb0] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02304A00 - - arm_func_start ov29_02304A48 -ov29_02304A48: ; 0x02304A48 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, [r5] - mov r4, r1 - cmp r2, #1 - ldmneia sp!, {r3, r4, r5, pc} - bl GetSleepAnimationId - strb r0, [r5, #0xae] - mov r0, #0 - strb r0, [r5, #0x28] - cmp r4, #0 - ldmltia sp!, {r3, r4, r5, pc} - cmp r4, #8 - strltb r4, [r5, #0xb0] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02304A48 - - arm_func_start ov29_02304A84 -ov29_02304A84: ; 0x02304A84 - ldr r2, [r0] - cmp r2, #1 - bxne lr - mov r2, #6 - strb r2, [r0, #0xae] - mov r2, #0 - strb r2, [r0, #0x28] - cmp r1, #0 - bxlt lr - cmp r1, #8 - strltb r1, [r0, #0xb0] - bx lr - arm_func_end ov29_02304A84 - - arm_func_start GetSleepAnimationId -GetSleepAnimationId: ; 0x02304AB4 - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #1 - cmpne r0, #5 - cmpne r0, #3 - bne _02304AE8 - ldrsh r0, [r1, #4] - cmp r0, #0xb9 - ldreqb r0, [r1, #0xbe] - cmpeq r0, #0x7f - moveq r0, #7 - movne r0, #5 - bx lr -_02304AE8: - ldrb r0, [r1, #0xd2] - cmp r0, #1 - moveq r0, #0xb - movne r0, #7 - bx lr - arm_func_end GetSleepAnimationId - - arm_func_start ov29_02304AFC -ov29_02304AFC: ; 0x02304AFC - ldr r2, [r0, #0xb4] - and r1, r1, #7 - ldr ip, _02304B10 ; =ov29_02304A48 - strb r1, [r2, #0x4c] - bx ip - .align 2, 0 -_02304B10: .word ov29_02304A48 - arm_func_end ov29_02304AFC - - arm_func_start ov29_02304B14 -ov29_02304B14: ; 0x02304B14 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - bl EntityIsValid__023047B8 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r6, [r7, #0xb4] - mov r5, #0 - mov r4, #0x21 - b _02304B58 -_02304B38: - mov r0, r4 - bl AdvanceFrame - ldrsh r0, [r6, #4] - ldrb r1, [r7, #0xaf] - bl sub_02053038 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r5, r5, #1 -_02304B58: - cmp r5, #0x64 - blt _02304B38 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02304B14 - - arm_func_start ov29_02304B64 -ov29_02304B64: ; 0x02304B64 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _02304BA8 ; =0x02353538 - mov r5, #0 -_02304B70: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__023047B8 - cmp r0, #0 - beq _02304B98 - mov r0, r6 - bl ov29_02304BAC -_02304B98: - add r5, r5, #1 - cmp r5, #0x14 - blt _02304B70 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02304BA8: .word 0x02353538 - arm_func_end ov29_02304B64 - - arm_func_start ov29_02304BAC -ov29_02304BAC: ; 0x02304BAC - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - bl GetTileAtEntity - ldrh r1, [r0] - ldr r5, [r4, #0xb4] - ldrsh r0, [r5, #4] - and r6, r1, #3 - bl GetShadowSize - mov r4, r0 - cmp r6, #3 - moveq r0, #6 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r6, #1 - bne _02304BF8 - bl ov29_02337E94 - cmp r0, #0 - ldrne r0, _02304C30 ; =0x02352808 - ldrneb r4, [r0, r4] - b _02304C24 -_02304BF8: - cmp r6, #2 - bne _02304C24 - ldr r0, _02304C34 ; =0x02353538 - ldr r1, _02304C38 ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - ldrne r0, _02304C30 ; =0x02352808 - ldrneb r4, [r0, r4] -_02304C24: - mov r0, r4 - strb r4, [r5, #0x220] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02304C30: .word 0x02352808 -_02304C34: .word 0x02353538 -_02304C38: .word 0x020A1AE8 - arm_func_end ov29_02304BAC - - arm_func_start ov29_02304C3C -ov29_02304C3C: ; 0x02304C3C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, r0 - mov sl, r1 - bl EntityIsValid__023047B8 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r4] - cmp r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [r4, #0xb4] - mov r0, r4 - ldrb r7, [r1, #0x4c] - mov r8, r7 - bl ov29_022E272C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov sb, #0 - mov r6, #2 - mov r5, #0x43 - b _02304CC0 -_02304C8C: - mov r0, r4 - mov r1, r8 - bl ov29_02304A48 - mov r0, r6 - mov r1, r5 - bl ov29_022EA370 - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - add r0, sb, #1 - mov r0, r0, lsl #0x10 - and r8, r1, #7 - mov sb, r0, asr #0x10 -_02304CC0: - cmp sb, sl, lsl #3 - blt _02304C8C - mov r6, #2 - mov r5, #0x43 - b _02304CFC -_02304CD4: - mov r0, r4 - mov r1, r8 - bl ov29_02304A48 - mov r0, r6 - mov r1, r5 - bl ov29_022EA370 - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - and r8, r0, #7 -_02304CFC: - cmp r8, r7 - bne _02304CD4 - mov r0, r4 - mov r1, r8 - bl ov29_02304A48 - mov r0, #2 - mov r1, #0x43 - bl ov29_022EA370 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02304C3C - - arm_func_start ov29_02304D20 -ov29_02304D20: ; 0x02304D20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r0 - ldr sb, [r6, #0xb4] - mov r5, r1 - add r0, sb, #0x200 - ldrsh r0, [r0, #0xc] - mov r4, r2 - cmp r0, #4 - movge r0, #0 - strgeh r0, [sb, #0x4a] - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl sub_0204AEE0 - cmp r0, #0 - movne r1, #2 - ldr r2, _02304FD4 ; =0x0237C9CC - moveq r1, #1 - str r1, [r2] - add r0, sb, #0x200 - ldrsh r3, [r0, #0xc] - mov r1, #0x1c - add r0, sb, #0x19c - smulbb sl, r3, r1 - add r7, r0, sl - mov r1, #0 - strb r1, [r7, #0x1a] - str r5, [r7, #0xc] - ldrsh r8, [r6, #4] - mov r3, r5, lsl #2 - ldr r1, _02304FD8 ; =0x0235173C - strh r8, [r0, sl] - ldrsh r5, [r6, #6] - ldr r0, _02304FDC ; =0x0235173E - ldrsh r1, [r1, r3] - strh r5, [r7, #2] - ldrsh r5, [r4] - ldrsh r0, [r0, r3] - str r5, [r7, #4] - ldrsh r3, [r4, #2] - str r3, [r7, #8] - ldr r3, [r2] - mul r1, r3, r1 - str r1, [r7, #0x10] - ldr r1, [r2] - mul r0, r1, r0 - str r0, [r7, #0x14] - bl sub_0204AEE0 - cmp r0, #0 - movne r1, #2 - ldr r5, _02304FD4 ; =0x0237C9CC - moveq r1, #1 - add r0, sb, #0x200 - str r1, [r5] - ldrsh r1, [r0, #0xc] - add r1, r1, #1 - strh r1, [r0, #0xc] - ldrsh r0, [r0, #0xc] - cmp r0, #2 - bne _02304E6C - ldr r1, [r5] - mov r0, #0x18 - mov r1, r1, lsl #1 - bl DivideInt - add r1, sb, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [sb, #0x1ac] - mov r1, r5 - mov r0, r0, lsl #1 - str r0, [sb, #0x1ac] - ldr r2, [sb, #0x1b0] - mov r0, #0x18 - mov r2, r2, lsl #1 - str r2, [sb, #0x1b0] - ldr r1, [r1] - mov r1, r1, lsl #1 - bl DivideInt - strh r0, [r7, #0x18] - ldr r0, [r7, #0x10] - mov r0, r0, lsl #1 - str r0, [r7, #0x10] - ldr r0, [r7, #0x14] - mov r0, r0, lsl #1 - str r0, [r7, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02304E6C: - cmp r0, #3 - bne _02304F14 - mov r6, #0 - mov r4, #0x18 - mov sl, #0x1c -_02304E80: - mla r8, r6, sl, sb - ldr r1, [r5] - mov r0, r4 - add r1, r1, r1, lsl #1 - bl DivideInt - add r1, r8, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [r8, #0x1ac] - add r6, r6, #1 - add r0, r0, r0, lsl #1 - str r0, [r8, #0x1ac] - ldr r0, [r8, #0x1b0] - cmp r6, #2 - add r0, r0, r0, lsl #1 - str r0, [r8, #0x1b0] - ldr r0, [r8, #0x1ac] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r8, #0x1ac] - ldr r0, [r8, #0x1b0] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r8, #0x1b0] - blt _02304E80 - ldr r1, _02304FD4 ; =0x0237C9CC - mov r0, #0x18 - ldr r1, [r1] - add r1, r1, r1, lsl #1 - bl DivideInt - strh r0, [r7, #0x18] - ldr r0, [r7, #0x10] - add r0, r0, r0, lsl #1 - str r0, [r7, #0x10] - ldr r0, [r7, #0x14] - add r0, r0, r0, lsl #1 - str r0, [r7, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02304F14: - cmp r0, #4 - bne _02304FC0 - mov r8, #0 - mov r6, #0x18 - mov fp, #3 - mov r4, #0x1c -_02304F2C: - mla sl, r8, r4, sb - ldr r1, [r5] - mov r0, r6 - mov r1, r1, lsl #2 - bl DivideInt - add r1, sl, #0x100 - strh r0, [r1, #0xb4] - ldr r0, [sl, #0x1ac] - mov r1, fp - mov r0, r0, lsl #2 - str r0, [sl, #0x1ac] - ldr r0, [sl, #0x1b0] - mov r0, r0, lsl #2 - str r0, [sl, #0x1b0] - ldr r0, [sl, #0x1ac] - bl DivideInt - str r0, [sl, #0x1ac] - ldr r0, [sl, #0x1b0] - mov r1, #3 - bl DivideInt - add r8, r8, #1 - str r0, [sl, #0x1b0] - cmp r8, #3 - blt _02304F2C - ldr r1, _02304FD4 ; =0x0237C9CC - mov r0, #0x18 - ldr r1, [r1] - mov r1, r1, lsl #2 - bl DivideInt - strh r0, [r7, #0x18] - ldr r0, [r7, #0x10] - mov r0, r0, lsl #2 - str r0, [r7, #0x10] - ldr r0, [r7, #0x14] - mov r0, r0, lsl #2 - str r0, [r7, #0x14] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02304FC0: - ldr r1, [r5] - mov r0, #0x18 - bl DivideInt - strh r0, [r7, #0x18] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02304FD4: .word 0x0237C9CC -_02304FD8: .word 0x0235173C -_02304FDC: .word 0x0235173E - arm_func_end ov29_02304D20 - - arm_func_start DisplayActions -DisplayActions: ; 0x02304FE0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r1, _02305580 ; =0x0237C9C1 - mov r6, #0 - mov sl, r0 - mov r7, r6 - strb r6, [r1] - bl sub_0204AEE0 - cmp r0, #0 - mov r5, #0 - movne r1, #2 - ldr r0, _02305584 ; =0x0237C9CC - moveq r1, #1 - str r1, [r0] - mov r4, r5 - mov fp, r5 -_02305020: - ldr r0, _02305588 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__0230558C - cmp r0, #0 - beq _02305160 - ldr sb, [r8, #0xb4] - add r0, sb, #0x200 - ldrsh r0, [r0, #0xc] - cmp r0, #0 - bne _023050EC - ldrb r0, [sb, #0x151] - cmp r0, #0 - beq _02305160 - strb r4, [sb, #0x151] - add r0, sb, #0x100 - ldrsh r1, [r0, #0x7e] - cmp r1, #0 - ldreqsh r0, [r0, #0x80] - cmpeq r0, #0 - beq _02305160 - ldrsh r0, [r8, #4] - cmp r1, r0 - addeq r0, sb, #0x100 - ldreqsh r1, [r0, #0x80] - ldreqsh r0, [r8, #6] - cmpeq r1, r0 - beq _02305160 - mov r0, r8 - mov r1, #1 - bl ov29_02300818 - cmp r0, #0 - beq _023050C0 - mov r0, r8 - bl ov29_02300CB0 - cmp r0, #0 - bne _02305160 -_023050C0: - add r0, r8, #4 - add r1, sb, #0x7e - add r1, r1, #0x100 - bl GetDirectionTowardsPosition - mov r1, r0 - ldrb r0, [sb, #0x4c] - cmp r1, r0 - beq _02305160 - mov r0, r8 - bl ov29_02304A48 - b _02305160 -_023050EC: - ldrh r2, [sb] - mov r0, r8 - add r1, sp, #0xc - orr r2, r2, #0x2000 - strh r2, [sb] - ldr r3, [sb, #0x1a0] - mov r2, #0x18 - mul r2, r3, r2 - add r2, r2, #0xc - mov r2, r2, lsl #8 - str r2, [sp, #0xc] - ldr r3, [sb, #0x1a4] - mov r2, #0x18 - mul r2, r3, r2 - add r2, r2, #0x10 - mov r2, r2, lsl #8 - str r2, [sp, #0x10] - bl ov29_022E1A40 - ldr r2, [sb, #0x1a8] - mov r0, r8 - mov r1, #0 - bl ov29_023049D4 - add r0, sb, #0x200 - strh fp, [r0, #0xe] - mov r0, r8 - mov r6, #1 - bl ov29_022E272C - cmp r0, #0 - movne r7, r6 -_02305160: - add r5, r5, #1 - cmp r5, #0x14 - blt _02305020 - cmp r6, #0 - moveq r0, #0 - beq _02305578 - ldr r0, _02305588 ; =0x02353538 - ldr r1, [r0] - ldr r6, [r1, #0xc4] - str sl, [r1, #0xc4] - ldr r0, [r0] - ldrb r0, [r0, #0x78b] - cmp r0, #0 - bne _0230532C - cmp r7, #0 - beq _0230532C - mov r0, #0x35 - bl ov29_0234BA18 - mov r5, #0 - b _02305314 -_023051B0: - mov r0, #7 - bl AdvanceFrame - mov sl, #0 - ldr r4, _02305588 ; =0x02353538 - mov fp, sl -_023051C4: - ldr r0, [r4] - add r0, r0, sl, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__0230558C - cmp r0, #0 - beq _02305304 - ldr sb, [r7, #0xb4] - add r0, sb, #0x200 - ldrsh r2, [r0, #0xe] - ldrsh r1, [r0, #0xc] - add r3, sb, #0x19c - mov r0, #0x1c - smlabb r8, r2, r0, r3 - cmp r1, #0 - beq _02305304 - mov r0, r7 - ldr r1, [r8, #0x10] - ldr r2, [r8, #0x14] - bl ov29_022E1A90 - ldrb r0, [sb, #7] - cmp r0, #0 - beq _02305258 - ldr r0, [r4] - add r0, r0, #0x100 - ldrsh r1, [r0, #0xdc] - cmp r1, #0 - blt _02305258 - ldr r1, [r7, #0xc] - mov r1, r1, asr #8 - strh r1, [r0, #0xdc] - ldr r1, [r7, #0x10] - ldr r0, [r4] - mov r1, r1, asr #8 - add r0, r0, #0x100 - strh r1, [r0, #0xde] -_02305258: - ldrsh r0, [r8, #0x18] - sub r0, r0, #1 - strh r0, [r8, #0x18] - ldrsh r0, [r8, #0x18] - cmp r0, #0 - bne _02305304 - add r2, sb, #0x200 - ldrsh r0, [r2, #0xe] - add r0, r0, #1 - strh r0, [r2, #0xe] - ldrsh r1, [r2, #0xe] - ldrsh r0, [r2, #0xc] - cmp r1, r0 - streqh fp, [r2, #0xc] - beq _02305304 - mov r0, #0x1c - smlabb r0, r1, r0, sb - ldr r3, [r0, #0x1a0] - mov r1, #0x18 - mul r1, r3, r1 - add r1, r1, #0xc - mov r1, r1, lsl #8 - str r1, [sp, #4] - ldrsh r3, [r2, #0xe] - mov r2, #0x1c - mov r0, r7 - smlabb r2, r3, r2, sb - ldr r3, [r2, #0x1a4] - mov r2, #0x18 - mul r2, r3, r2 - add r2, r2, #0x10 - mov r2, r2, lsl #8 - add r1, sp, #4 - str r2, [sp, #8] - bl ov29_022E1A40 - add r2, sb, #0x200 - ldrsh r3, [r2, #0xe] - mov r2, #0x1c - mov r0, r7 - smlabb r2, r3, r2, sb - ldr r2, [r2, #0x1a8] - mov r1, #0 - bl ov29_023049D4 -_02305304: - add sl, sl, #1 - cmp sl, #0x14 - blt _023051C4 - add r5, r5, #1 -_02305314: - ldr r1, _02305584 ; =0x0237C9CC - mov r0, #0x18 - ldr r1, [r1] - bl DivideInt - cmp r5, r0 - blt _023051B0 -_0230532C: - mov r7, #0 - ldr r8, _02305588 ; =0x02353538 - mov r4, r7 -_02305338: - ldr r0, [r8] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230537C - ldr r1, [r5, #0xb4] - add r0, r1, #0x200 - strh r4, [r0, #0xc] - ldrh r0, [r1] - tst r0, #0x2000 - beq _0230537C - mov r0, r5 - mov r1, r4 - bl ov29_022E1A40 -_0230537C: - add r7, r7, #1 - cmp r7, #0x14 - blt _02305338 - bl ov29_02307DD0 - mov r8, #0 -_02305390: - mov sl, #0 - mov fp, sl - mov r7, #1 - ldr r5, _02305588 ; =0x02353538 - ldr r4, _02305580 ; =0x0237C9C1 - b _02305530 -_023053A8: - ldr r0, [r5] - add r0, r0, sl, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - bl IsFloorOver - cmp r0, #0 - bne _02305538 - ldr r0, [sb, #0xb4] - cmp r8, #0 - ldrb r1, [r0, #7] - bne _023053F0 - cmp r1, #0 - beq _0230552C - b _023053F8 -_023053F0: - cmp r1, #0 - bne _0230552C -_023053F8: - ldrh r3, [sb, #4] - ldrh r2, [sb, #6] - ldrh r1, [r0] - strh r3, [sp] - strh r2, [sp, #2] - tst r1, #0x2000 - bne _02305430 - mov r0, sb - bl ov29_0234AD10 - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - b _023054E4 -_02305430: - bic r1, r1, #0x2000 - strh r1, [r0] - ldrb r0, [r0, #7] - cmp r0, #0 - beq _0230545C - add r0, sb, #4 - bl ov29_02337A3C - mov r0, fp - bl ov29_022F62CC - bl ov29_022F3634 - b _0230547C -_0230545C: - mov r0, sb - bl ov29_0234AD10 - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - mov r0, sb - bl ov29_02305694 -_0230547C: - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - bl IsFloorOver - cmp r0, #0 - bne _02305538 - mov r0, #0 - bl TryForcedLoss - mov r0, sb - bl ov29_0230FC24 - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - bl IsFloorOver - cmp r0, #0 - bne _02305538 - mov r0, sb - bl EnemyEvolution - bl ov29_02346888 - ldr r1, [r5] - mov r0, sb - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02305814 -_023054E4: - mov r0, sb - bl EntityIsValid__0230558C - cmp r0, #0 - beq _0230552C - bl IsFloorOver - cmp r0, #0 - bne _02305538 - ldrsh r1, [sp] - ldrsh r0, [sb, #4] - cmp r1, r0 - ldreqsh r1, [sp, #2] - ldreqsh r0, [sb, #6] - cmpeq r1, r0 - mov r0, sb - strneb r7, [r4] - bl ov29_022F9C74 - mov r0, sb - bl ov29_02321104 -_0230552C: - add sl, sl, #1 -_02305530: - cmp sl, #0x14 - blt _023053A8 -_02305538: - add r8, r8, #1 - cmp r8, #2 - blt _02305390 - bl ov29_022EF9C8 - bl IsFloorOver - cmp r0, #0 - ldrne r1, _02305588 ; =0x02353538 - movne r0, #1 - ldrne r1, [r1] - strne r6, [r1, #0xc4] - bne _02305578 - bl ov29_022EF9BC - ldr r1, _02305588 ; =0x02353538 - mov r0, #1 - ldr r1, [r1] - str r6, [r1, #0xc4] -_02305578: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02305580: .word 0x0237C9C1 -_02305584: .word 0x0237C9CC -_02305588: .word 0x02353538 - arm_func_end DisplayActions - - arm_func_start EntityIsValid__0230558C -EntityIsValid__0230558C: ; 0x0230558C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0230558C - - arm_func_start ov29_023055B0 -ov29_023055B0: ; 0x023055B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, #0 - mov r5, #1 - ldr r4, _02305690 ; =0x02353538 - b _02305684 -_023055C4: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__0230558C - cmp r0, #0 - beq _02305680 - ldr r8, [r7, #0xb4] - ldrb r0, [r8, #7] - cmp r0, #0 - bne _02305680 - mov r0, r8 - bl ov29_022FBE04 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r0, r8, #0x100 - ldrsh r1, [r0, #0x7e] - cmp r1, #0 - ldreqsh r0, [r0, #0x80] - cmpeq r0, #0 - beq _02305680 - ldrsh r0, [r7, #4] - cmp r1, r0 - addeq r0, r8, #0x100 - ldreqsh r1, [r0, #0x80] - ldreqsh r0, [r7, #6] - cmpeq r1, r0 - beq _02305680 - mov r0, r7 - mov r1, r5 - bl ov29_02300818 - cmp r0, #0 - bne _02305680 - add r1, r8, #0x7e - add r0, r7, #4 - add r1, r1, #0x100 - bl GetDirectionTowardsPosition - mov sb, r0 - and r1, sb, #7 - mov r0, r7 - strb r1, [r8, #0x4c] - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - mov r2, sb - bl ov29_023049A8 -_02305680: - add r6, r6, #1 -_02305684: - cmp r6, #0x14 - blt _023055C4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02305690: .word 0x02353538 - arm_func_end ov29_023055B0 - - arm_func_start ov29_02305694 -ov29_02305694: ; 0x02305694 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r8, [sb, #0xb4] - bl EntityIsValid__0230558C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - bl GetTileAtEntity - mov r4, r0 - mov r0, sb - mov r1, #0xd - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r8, #0xef] - cmpne r0, #3 - beq _02305708 - mov r0, sb - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _023056F8 - mov r0, sb - mov r1, #0x10 - bl HasHeldItem -_023056F8: - cmp r0, #0 - bne _02305708 - add r0, sb, #4 - bl ov29_02337D68 -_02305708: - ldr r4, [r4, #0x10] - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r4] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02305724: ; jump table - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 1 - b _02305740 ; case 2 - b _02305808 ; case 3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 6 -_02305740: - mov r0, r4 - bl ov29_022E1608 - ldrb r1, [r8, #6] - mov r6, #0 - mov r5, r0 - mov r7, r6 - cmp r1, #0 - bne _02305790 - mov r0, sb - mov r1, #0x13 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02305790 - ldrb r0, [r4, #0x20] - cmp r0, #0 - bne _02305790 - mov r0, #1 - strb r0, [r4, #0x20] - bl ov29_02336F4C - mov r7, #1 -_02305790: - ldrb r0, [r5, #1] - cmp r0, #0 - bne _023057B8 - ldrb r0, [r4, #0x20] - cmp r0, #0 - beq _023057E0 - ldrb r0, [r8, #6] - cmp r0, #0 - moveq r6, #1 - b _023057E0 -_023057B8: - cmp r0, #1 - bne _023057D0 - ldrb r0, [r8, #6] - cmp r0, #0 - movne r6, #1 - b _023057E0 -_023057D0: - cmp r0, #2 - ldreqb r0, [r8, #6] - cmpeq r0, #0 - moveq r6, #1 -_023057E0: - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r7, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - add r1, sb, #4 - mov r2, #0 - mov r3, #1 - bl ov29_022EDFA0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02305808: - mov r0, sb - bl ov29_0230F164 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02305694 - - arm_func_start ov29_02305814 -ov29_02305814: ; 0x02305814 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__0230558C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl IsFloorOver - cmp r0, #0 - ldreq r0, _023058BC ; =0x02353538 - ldreq r0, [r0] - ldreqb r0, [r0, #0x793] - cmpeq r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl GetTileAtEntity - ldrh r0, [r0] - tst r0, #0x40 - ldmeqia sp!, {r3, r4, r5, pc} - bl GetLeader - ldr r1, _023058C0 ; =0x00000C82 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _023058BC ; =0x02353538 - mov r0, r5 - ldr r2, [r1] - mov r3, #1 - mov r1, r4 - strb r3, [r2, #0x794] - bl ov29_02307F4C - mov r0, #0 - bl ov29_022E3A58 - add r0, r5, #4 - bl ov29_022E2CA0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0x78 - mov r1, #0x39 - bl ov29_022EA370 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023058BC: .word 0x02353538 -_023058C0: .word 0x00000C82 - arm_func_end ov29_02305814 - - arm_func_start ov29_023058C4 -ov29_023058C4: ; 0x023058C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r7, r3 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb - mov r1, r4 - ldr r6, [sb, #0xb4] - bl ov29_02300634 - cmp r0, #0 - beq _02305AD8 - mov r0, sb - mov r4, #1 - bl ov29_023004B0 - cmp r0, #0 - beq _0230593C - mov r2, r5 - mov fp, r4 - mov r0, sl - mov r1, sb - mov r3, r2 - str fp, [sp] - bl ov29_02305FDC -_0230593C: - mov r0, sb - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb - bl ov29_023004E4 - cmp r0, #0 - beq _0230596C - mov r0, sl - mov r1, sb - bl ov29_023061A8 -_0230596C: - ldrb r0, [sp, #0x28] - cmp r0, #0 - mov r0, sb - beq _0230599C - bl ov29_02300500 - cmp r0, #0 - beq _023059C0 - mov r0, sl - mov r1, sb - mov r2, #1 - bl EndFrozenClassStatus - b _023059C0 -_0230599C: - bl ov29_02300500 - cmp r0, #0 - ldrneb r0, [r6, #0xc4] - cmpne r0, #3 - beq _023059C0 - mov r0, sl - mov r1, sb - mov r2, #1 - bl EndFrozenClassStatus -_023059C0: - mov r0, sb - bl ov29_02300520 - cmp r0, #0 - beq _023059DC - mov r0, sl - mov r1, sb - bl EndCringeClassStatus -_023059DC: - mov r0, sb - bl ov29_0230053C - cmp r0, #0 - beq _02305A00 - mov r0, sl - mov r1, sb - mov r2, #0 - mov r3, #1 - bl ov29_02306728 -_02305A00: - mov r0, sb - bl ov29_02300588 - cmp r0, #0 - beq _02305A1C - mov r0, sl - mov r1, sb - bl ov29_023068C4 -_02305A1C: - mov r0, sb - bl ov29_023005A4 - cmp r0, #0 - beq _02305A38 - mov r0, sl - mov r1, sb - bl ov29_02306950 -_02305A38: - mov r0, sb - mov r1, #0 - bl ov29_023005C0 - cmp r0, #0 - beq _02305A58 - mov r0, sl - mov r1, sb - bl ov29_02306B28 -_02305A58: - mov r0, sb - bl ov29_023005FC - cmp r0, #0 - beq _02305A74 - mov r0, sl - mov r1, sb - bl ov29_02306BF8 -_02305A74: - mov r0, sb - bl ov29_02300618 - cmp r0, #0 - beq _02305A90 - mov r0, sl - mov r1, sb - bl ov29_02306C64 -_02305A90: - ldrb r0, [r6, #0x106] - cmp r0, #0 - beq _02305AB4 - ldr r2, _02305BF0 ; =0x00000C83 - mov r3, #0 - mov r0, sl - mov r1, sb - strb r3, [r6, #0x106] - bl LogMessageByIdWithPopupCheckUserTarget -_02305AB4: - ldrb r0, [r6, #0xfe] - cmp r0, #0 - beq _02305AD8 - ldr r2, _02305BF4 ; =0x00000C84 - mov r3, #0 - mov r0, sl - mov r1, sb - strb r3, [r6, #0xfe] - bl LogMessageByIdWithPopupCheckUserTarget -_02305AD8: - mov r0, sb - bl CalcSpeedStageWrapper - mov r2, #0 - mov fp, r0 - mov r1, r2 -_02305AEC: - add r0, r6, r2 - add r2, r2, #1 - strb r1, [r0, #0x119] - cmp r2, #5 - blt _02305AEC - mov r0, sb - bl CalcSpeedStageWrapper - cmp fp, r0 - beq _02305B40 - mov r0, #0 - mov r1, sb - mov r2, r0 - mov r4, #1 - bl SubstitutePlaceholderStringTags - ldr r1, [r6, #0x110] - ldr r0, _02305BF8 ; =0x02353318 - mov r1, r1, lsl #1 - ldrh r2, [r0, r1] - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02305B40: - mov fp, #0 - mov r1, #1 - add r2, r6, #0x124 - mov r0, fp - mov ip, r1 -_02305B54: - ldrb r6, [r2, fp, lsl #3] - add r3, r2, fp, lsl #3 - tst r6, #1 - movne r6, r1 - moveq r6, r0 - tst r6, #0xff - beq _02305B88 - ldrh r6, [r3, #2] - tst r6, #1 - bicne r6, r6, #1 - movne r4, ip - movne r5, ip - strneh r6, [r3, #2] -_02305B88: - add fp, fp, #1 - cmp fp, #4 - blt _02305B54 - cmp r4, #0 - beq _02305BC8 - cmp r8, #0 - beq _02305BAC - mov r0, sb - bl ov29_022E543C -_02305BAC: - cmp r5, #0 - beq _02305BE0 - ldr r2, _02305BFC ; =0x00000C85 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02305BE0 -_02305BC8: - cmp r7, #0 - bne _02305BE0 - ldr r2, _02305C00 ; =0x00000C86 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02305BE0: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02305BF0: .word 0x00000C83 -_02305BF4: .word 0x00000C84 -_02305BF8: .word 0x02353318 -_02305BFC: .word 0x00000C85 -_02305C00: .word 0x00000C86 - arm_func_end ov29_023058C4 - - arm_func_start EntityIsValid__02305C04 -EntityIsValid__02305C04: ; 0x02305C04 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02305C04 - - arm_func_start ov29_02305C28 -ov29_02305C28: ; 0x02305C28 - stmdb sp!, {r3, lr} - mov ip, #0 - str ip, [sp] - bl ov29_023058C4 - ldmia sp!, {r3, pc} - arm_func_end ov29_02305C28 - - arm_func_start ov29_02305C3C -ov29_02305C3C: ; 0x02305C3C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xb8 - mov sb, r0 - mov r8, r1 - bl EntityIsValid__02305C04 - cmp r0, #0 - beq _02305F4C - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - beq _02305F4C - mov r5, #0 - mov r0, sb - mov r1, r5 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - bl ov29_02300634 - cmp r0, #0 - beq _02305D28 - mov r0, sb - mov r1, r8 - bl ov29_02306DCC - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_02306F00 - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_02307078 - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_02307198 - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_0230737C - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_023076C0 - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_023077FC - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_023078EC - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_02307A2C - orr r5, r5, r0 - mov r0, sb - mov r1, r8 - bl ov29_02307B0C - orr r5, r5, r0 -_02305D28: - ldrb r0, [r6, #0x106] - cmp r0, #0 - beq _02305D68 - mov r0, sb - mov r1, r8 - mov r2, #1 - bl ov29_0231662C - cmp r0, #0 - ldrneb r1, [r6, #0x106] - orrne r0, r5, #0x11 - andne r5, r0, #0xff - orreq r0, r5, #1 - andeq r5, r0, #0xff - strneb r1, [r7, #0x106] - mov r0, #0 - strb r0, [r6, #0x106] -_02305D68: - ldrb r0, [r6, #0xfe] - cmp r0, #0 - beq _02305DAC - mov r0, sb - mov r1, r8 - mov r2, #0 - mov r3, #1 - bl ov29_023174C8 - cmp r0, #0 - ldrneb r1, [r6, #0xfe] - orrne r0, r5, #0x11 - andne r5, r0, #0xff - orreq r0, r5, #1 - andeq r5, r0, #0xff - strneb r1, [r7, #0xfe] - mov r0, #0 - strb r0, [r6, #0xfe] -_02305DAC: - mov r0, sb - mov r1, r8 - mov r2, #0 - bl ov29_02301940 - cmp r0, #0 - bne _02305E08 - mov r0, sb - mov r1, r8 - mov r2, #0 - bl ov29_02302430 - cmp r0, #0 - bne _02305E08 - mov r2, #0 -_02305DE0: - add r0, r6, r2 - ldrb r0, [r0, #0x119] - add r1, r7, r2 - add r2, r2, #1 - strb r0, [r1, #0x119] - cmp r0, #0 - orrne r0, r5, #0x11 - andne r5, r0, #0xff - cmp r2, #5 - blt _02305DE0 -_02305E08: - mov r0, sb - bl CalcSpeedStageWrapper - mov r2, #0 - mov r4, r0 - mov r1, r2 -_02305E1C: - add r0, r6, r2 - add r2, r2, #1 - strb r1, [r0, #0x119] - cmp r2, #5 - blt _02305E1C - mov r0, sb - bl CalcSpeedStageWrapper - cmp r4, r0 - orrne r0, r5, #1 - andne r5, r0, #0xff - mov r0, #0 - add r6, r6, #0x124 - mov r3, r0 - mov r4, #1 -_02305E54: - ldrb r1, [r6, r0, lsl #3] - add ip, r6, r0, lsl #3 - tst r1, #1 - movne r1, r4 - moveq r1, r3 - tst r1, #0xff - beq _02305E88 - ldrh r1, [ip, #2] - tst r1, #1 - orrne r2, r5, #1 - bicne r1, r1, #1 - strneh r1, [ip, #2] - andne r5, r2, #0xff -_02305E88: - add r0, r0, #1 - cmp r0, #4 - blt _02305E54 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xd8] - mov r2, #0 - cmp r0, #2 - mov r0, #1 - bne _02305ED0 - mov r1, r8 - strb r2, [r7, #0xd8] - bl SubstitutePlaceholderStringTags - mov r0, #2 - strb r0, [r7, #0xd8] - b _02305ED8 -_02305ED0: - mov r1, r8 - bl SubstitutePlaceholderStringTags -_02305ED8: - cmp r5, #0 - beq _02305EF4 - cmp r5, #1 - beq _02305F08 - cmp r5, #0x11 - beq _02305F24 - b _02305F3C -_02305EF4: - ldr r2, _02305F54 ; =0x00000CCC - add r1, sp, #0 - mov r0, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02305F3C -_02305F08: - mov r0, sb - bl ov29_022E543C - ldr r2, _02305F58 ; =0x00000CCB - add r1, sp, #0 - mov r0, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02305F3C -_02305F24: - mov r0, sb - bl ov29_022E543C - ldr r2, _02305F5C ; =0x00000CCA - add r1, sp, #0 - mov r0, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02305F3C: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags -_02305F4C: - add sp, sp, #0xb8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02305F54: .word 0x00000CCC -_02305F58: .word 0x00000CCB -_02305F5C: .word 0x00000CCA - arm_func_end ov29_02305C3C - - arm_func_start ov29_02305F60 -ov29_02305F60: ; 0x02305F60 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r0, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r5, [r4, #0xb4] - mov r1, #0 - mov r0, r5 - bl ov29_022FDDC0 - mov ip, #0 - strb ip, [r5, #0x106] - strb ip, [r5, #0xfe] - add r3, r5, #0x124 - mov r1, ip - mov r2, #1 -_02305FA0: - ldrb r0, [r3, ip, lsl #3] - add lr, r3, ip, lsl #3 - add ip, ip, #1 - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - ldrneh r0, [lr, #2] - bicne r0, r0, #1 - strneh r0, [lr, #2] - cmp ip, #4 - blt _02305FA0 - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02305F60 - - arm_func_start ov29_02305FDC -ov29_02305FDC: ; 0x02305FDC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - mov r0, r8 - mov r7, r2 - mov r6, r3 - mov r4, #0 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r4 - ldr r5, [r8, #0xb4] - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xbd] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02306164 -_02306028: ; jump table - b _02306164 ; case 0 - b _02306044 ; case 1 - b _0230605C ; case 2 - b _02306070 ; case 3 - b _02306118 ; case 4 - b _023060A8 ; case 5 - b _02306164 ; case 6 -_02306044: - ldr r2, _0230618C ; =0x00000C8D - mov r0, sb - mov r1, r8 - mov r4, #1 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306164 -_0230605C: - ldr r2, _02306190 ; =0x00000C8E - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306164 -_02306070: - mov r4, #1 - mov r0, sb - mov r1, r8 - rsb r2, r4, #0xc90 - bl LogMessageByIdWithPopupCheckUserTarget - cmp r6, #0 - beq _02306164 - ldr r0, _02306194 ; =0x022C45A8 - ldr r3, _02306198 ; =0x0000024E - ldrsh r1, [r0] - mov r0, r8 - mov r2, #8 - bl ov29_0230D11C - b _02306164 -_023060A8: - mov r0, sb - mov r1, r8 - mov r2, #0xc90 - mov r4, #1 - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r0, [sp, #0x20] - cmp r0, #0 - beq _023060E8 - ldr r0, _0230619C ; =0x022C45A0 - mov r6, r4 - ldrsh r2, [r0] - mov r0, sb - mov r1, r8 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp -_023060E8: - ldrb r0, [sp, #0x20] - mov r6, #0 - strb r6, [r5, #0xbd] - cmp r0, #0 - beq _02306164 - mov r2, #1 - mov r0, sb - mov r1, r8 - mov r3, r2 - str r6, [sp] - bl ov29_023058C4 - b _02306164 -_02306118: - cmp r7, #0 - beq _02306154 - ldr r1, _023061A0 ; =0x022C4868 - mov r3, r4 - mov r0, r8 - mov r2, #1 - strb r3, [r5, #0xbd] - bl CalcStatusDuration - mov r2, r0 - mov r0, sb - mov r1, r8 - add r2, r2, #1 - mov r3, #1 - bl TryInflictSleepStatus - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02306154: - ldr r2, _023061A4 ; =0x00000C91 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_02306164: - mov r1, #0 - mov r0, r8 - strb r1, [r5, #0xbd] - bl UpdateStatusIconFlags - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r8 - mov r1, #8 - bl ov29_02304A48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230618C: .word 0x00000C8D -_02306190: .word 0x00000C8E -_02306194: .word 0x022C45A8 -_02306198: .word 0x0000024E -_0230619C: .word 0x022C45A0 -_023061A0: .word 0x022C4868 -_023061A4: .word 0x00000C91 - arm_func_end ov29_02305FDC - - arm_func_start ov29_023061A8 -ov29_023061A8: ; 0x023061A8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - arm_func_end ov29_023061A8 - - arm_func_start ov29_023061CC -ov29_023061CC: ; 0x023061CC - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xbf] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - arm_func_end ov29_023061CC - - arm_func_start caseD_6 -caseD_6: ; 0x023061E4 - b _02306238 -_023061E8: ; jump table - b _02306238 ; case 0 - b _02306228 ; case 1 - b _02306200 ; case 2 - b _02306200 ; case 3 - b _02306214 ; case 4 - b _02306238 ; case 5 -_02306200: - ldr r2, _0230624C ; =0x00000C9E - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306238 -_02306214: - ldr r2, _02306250 ; =0x00000C9C - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306238 -_02306228: - ldr r2, _02306254 ; =0x00000C9D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - arm_func_end caseD_6 -_02306238: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xbf] - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230624C: .word 0x00000C9E -_02306250: .word 0x00000C9C -_02306254: .word 0x00000C9D - - arm_func_start EndFrozenClassStatus -EndFrozenClassStatus: ; 0x02306258 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r4, #0 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - ldr r5, [r7, #0xb4] - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xc4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02306398 -_023062A0: ; jump table - b _02306398 ; case 0 - b _023062C4 ; case 1 - b _02306300 ; case 2 - b _02306338 ; case 3 - b _0230635C ; case 4 - b _0230631C ; case 5 - b _02306380 ; case 6 - b _023062E4 ; case 7 - b _02306398 ; case 8 -_023062C4: - cmp r6, #0 - beq _023062DC - ldr r2, _023063BC ; =0x00000C9F - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_023062DC: - mov r4, #1 - b _02306398 -_023062E4: - cmp r6, #0 - beq _02306398 - ldr r2, _023063C0 ; =0x00000C99 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306398 -_02306300: - cmp r6, #0 - beq _02306398 - ldr r2, _023063C4 ; =0x00000C9A - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306398 -_0230631C: - cmp r6, #0 - beq _02306398 - ldr r2, _023063C8 ; =0x00000C9B - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02306398 -_02306338: - cmp r6, #0 - beq _02306350 - ldr r2, _023063CC ; =0x00000C98 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02306350: - ldr r0, [r5, #0xb4] - bl FreeOtherWrappedMonsters - b _02306398 -_0230635C: - cmp r6, #0 - beq _02306374 - ldr r2, _023063CC ; =0x00000C98 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02306374: - ldr r0, [r5, #0xb4] - bl FreeOtherWrappedMonsters - b _02306398 -_02306380: - cmp r6, #0 - beq _02306398 - ldr r2, _023063D0 ; =0x00000CBB - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02306398: - mov r1, #0 - mov r0, r7 - strb r1, [r5, #0xc4] - bl UpdateStatusIconFlags - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - bl ov29_022E6798 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023063BC: .word 0x00000C9F -_023063C0: .word 0x00000C99 -_023063C4: .word 0x00000C9A -_023063C8: .word 0x00000C9B -_023063CC: .word 0x00000C98 -_023063D0: .word 0x00000CBB - arm_func_end EndFrozenClassStatus - - arm_func_start EndCringeClassStatus -EndCringeClassStatus: ; 0x023063D4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd0] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _023064C0 -_02306414: ; jump table - b _023064C0 ; case 0 - b _023064B0 ; case 1 - b _02306438 ; case 2 - b _02306474 ; case 3 - b _0230644C ; case 4 - b _02306460 ; case 5 - b _0230649C ; case 6 - b _02306488 ; case 7 - b _023064C0 ; case 8 -_02306438: - ldr r2, _023064DC ; =0x00000C97 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_0230644C: - ldr r2, _023064E0 ; =0x00000CA4 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_02306460: - ldr r2, _023064E4 ; =0x00000CA7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_02306474: - ldr r2, _023064E8 ; =0x00000CBD - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_02306488: - ldr r2, _023064EC ; =0x00000CB7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_0230649C: - mov r0, r6 - mov r1, r5 - mov r2, #0xcb0 - bl LogMessageByIdWithPopupCheckUserTarget - b _023064C0 -_023064B0: - ldr r2, _023064F0 ; =0x00000CBC - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023064C0: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xd0] - bl UpdateStatusIconFlags - mov r0, r5 - bl CalcSpeedStageWrapper - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023064DC: .word 0x00000C97 -_023064E0: .word 0x00000CA4 -_023064E4: .word 0x00000CA7 -_023064E8: .word 0x00000CBD -_023064EC: .word 0x00000CB7 -_023064F0: .word 0x00000CBC - arm_func_end EndCringeClassStatus - - arm_func_start ov29_023064F4 -ov29_023064F4: ; 0x023064F4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0x12 - addls pc, pc, r0, lsl #2 - b _02306688 -_02306530: ; jump table - b _02306688 ; case 0 - b _0230657C ; case 1 - b _0230658C ; case 2 - b _0230659C ; case 3 - b _023065AC ; case 4 - b _023065BC ; case 5 - b _023065CC ; case 6 - b _023065DC ; case 7 - b _023065EC ; case 8 - b _023065FC ; case 9 - b _023065AC ; case 10 - b _0230660C ; case 11 - b _0230661C ; case 12 - b _0230663C ; case 13 - b _0230664C ; case 14 - b _0230665C ; case 15 - b _0230666C ; case 16 - b _0230667C ; case 17 - b _02306688 ; case 18 -_0230657C: - ldr r1, _0230669C ; =0x00000C87 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230658C: - ldr r1, _023066A0 ; =0x00000C8A - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230659C: - ldr r1, _023066A4 ; =0x00000C88 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065AC: - ldr r1, _023066A8 ; =0x00000C89 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065BC: - ldr r1, _023066AC ; =0x00000C8B - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065CC: - ldr r1, _023066B0 ; =0x00000C8C - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065DC: - ldr r1, _023066B4 ; =0x00000CA6 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065EC: - ldr r1, _023066B8 ; =0x00000CAE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_023065FC: - ldr r1, _023066BC ; =0x00000CB1 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230660C: - ldr r1, _023066C0 ; =0x00000CB2 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230661C: - ldr r1, _023066C4 ; =0x00000CB3 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - bl ov29_022E65F4 - mov r0, r5 - bl ov29_02307CE0 - b _02306688 -_0230663C: - ldr r1, _023066C8 ; =0x00000CB4 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230664C: - ldr r1, _023066CC ; =0x00000CB5 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230665C: - ldr r1, _023066D0 ; =0x00000CBE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230666C: - mov r0, r5 - mov r1, #0xcc0 - bl LogMessageByIdWithPopupCheckUser - b _02306688 -_0230667C: - ldr r1, _023066D4 ; =0x00000CC1 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_02306688: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xd5] - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230669C: .word 0x00000C87 -_023066A0: .word 0x00000C8A -_023066A4: .word 0x00000C88 -_023066A8: .word 0x00000C89 -_023066AC: .word 0x00000C8B -_023066B0: .word 0x00000C8C -_023066B4: .word 0x00000CA6 -_023066B8: .word 0x00000CAE -_023066BC: .word 0x00000CB1 -_023066C0: .word 0x00000CB2 -_023066C4: .word 0x00000CB3 -_023066C8: .word 0x00000CB4 -_023066CC: .word 0x00000CB5 -_023066D0: .word 0x00000CBE -_023066D4: .word 0x00000CC1 - arm_func_end ov29_023064F4 - - arm_func_start ov29_023066D8 -ov29_023066D8: ; 0x023066D8 - stmdb sp!, {r4, lr} - mov r4, r1 - mov r0, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #3 - ldmneia sp!, {r4, pc} - ldr r1, _02306724 ; =0x02353538 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x19000 - str r2, [r0, #0x904] - ldr r0, [r1] - add r0, r0, #0x19000 - str r2, [r0, #0x90c] - ldmia sp!, {r4, pc} - .align 2, 0 -_02306724: .word 0x02353538 - arm_func_end ov29_023066D8 - - arm_func_start ov29_02306728 -ov29_02306728: ; 0x02306728 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, #0 - ldr r4, [r7, #0xb4] - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd8] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02306894 -_02306770: ; jump table - b _02306894 ; case 0 - b _02306790 ; case 1 - b _023067D4 ; case 2 - b _023067AC ; case 3 - b _02306830 ; case 4 - b _02306868 ; case 5 - b _02306880 ; case 6 - b _02306894 ; case 7 -_02306790: - cmp r6, #1 - cmpne r5, #0 - beq _02306894 - ldr r1, _023068A8 ; =0x00000C95 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _02306894 -_023067AC: - cmp r6, #3 - cmpne r5, #0 - beq _023067C4 - ldr r1, _023068AC ; =0x00000C96 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser -_023067C4: - mov r0, r8 - mov r1, r7 - bl ov29_023066D8 - b _02306894 -_023067D4: - mov r1, #0 - mov r0, r7 - strb r1, [r4, #0xd8] - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 - ldr r1, _023068B0 ; =0x02353538 - mov r0, #0 - ldr r1, [r1] - cmp r6, #2 - add r1, r1, #0x3000 - strb r0, [r1, #0xe38] - beq _02306894 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r5, #0 - beq _02306894 - ldr r1, _023068B4 ; =0x00000CA5 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _02306894 -_02306830: - mov r1, #0 - mov r0, r7 - strb r1, [r4, #0xd8] - bl ov29_022FB984 - cmp r5, #0 - beq _02306854 - ldr r1, _023068B8 ; =0x00000CBF - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser -_02306854: - ldr r0, _023068B0 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0xe] - b _02306894 -_02306868: - cmp r5, #0 - beq _02306894 - ldr r1, _023068BC ; =0x00000CC2 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _02306894 -_02306880: - cmp r5, #0 - beq _02306894 - ldr r1, _023068C0 ; =0x00000CC3 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser -_02306894: - mov r1, #0 - mov r0, r7 - strb r1, [r4, #0xd8] - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023068A8: .word 0x00000C95 -_023068AC: .word 0x00000C96 -_023068B0: .word 0x02353538 -_023068B4: .word 0x00000CA5 -_023068B8: .word 0x00000CBF -_023068BC: .word 0x00000CC2 -_023068C0: .word 0x00000CC3 - arm_func_end ov29_02306728 - - arm_func_start ov29_023068C4 -ov29_023068C4: ; 0x023068C4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xe0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230692C -_02306900: ; jump table - b _0230692C ; case 0 - b _02306910 ; case 1 - b _02306920 ; case 2 - b _0230692C ; case 3 -_02306910: - ldr r1, _02306948 ; =0x00000C94 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _0230692C -_02306920: - ldr r1, _0230694C ; =0x00000CAF - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_0230692C: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xe0] - mov r1, #0xff - strb r1, [r4, #0xe8] - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306948: .word 0x00000C94 -_0230694C: .word 0x00000CAF - arm_func_end ov29_023068C4 - - arm_func_start ov29_02306950 -ov29_02306950: ; 0x02306950 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xec] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _023069E0 -_0230698C: ; jump table - b _023069E0 ; case 0 - b _023069A4 ; case 1 - b _023069B4 ; case 2 - b _023069C4 ; case 3 - b _023069D4 ; case 4 - b _023069E0 ; case 5 -_023069A4: - mov r0, r5 - mov r1, #0xca0 - bl LogMessageByIdWithPopupCheckUser - b _023069E0 -_023069B4: - ldr r1, _023069F4 ; =0x00000CA1 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _023069E0 -_023069C4: - ldr r1, _023069F8 ; =0x00000CA2 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _023069E0 -_023069D4: - ldr r1, _023069FC ; =0x00000CA3 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_023069E0: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xec] - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023069F4: .word 0x00000CA1 -_023069F8: .word 0x00000CA2 -_023069FC: .word 0x00000CA3 - arm_func_end ov29_02306950 - - arm_func_start ov29_02306A00 -ov29_02306A00: ; 0x02306A00 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r1 - mov r4, #0 - mov r0, r8 - mov r7, r2 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - ldr r6, [r8, #0xb4] - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xef] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02306ADC -_02306A48: ; jump table - b _02306ADC ; case 0 - b _02306A60 ; case 1 - b _02306A84 ; case 2 - b _02306A74 ; case 3 - b _02306AC4 ; case 4 - b _02306ADC ; case 5 -_02306A60: - ldr r1, _02306B18 ; =0x00000CA8 - mov r0, r8 - mov r4, #1 - bl LogMessageByIdWithPopupCheckUser - b _02306ADC -_02306A74: - ldr r1, _02306B1C ; =0x00000CB8 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _02306ADC -_02306A84: - ldrsh r1, [r6, #2] - mov r0, r8 - bl ov29_022F9408 - strh r0, [r6, #4] - ldrsh r0, [r6, #4] - bl GetSpriteIndex__022F7388 - strh r0, [r8, #0xa8] - mov r0, r8 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r8 - bl ov29_02304830 - ldr r1, _02306B20 ; =0x00000CB6 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _02306ADC -_02306AC4: - cmp r7, #0 - bne _02306AD8 - ldr r1, _02306B24 ; =0x00000CAC - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser -_02306AD8: - mov r5, #1 -_02306ADC: - mov r1, #0 - mov r0, r8 - strb r1, [r6, #0xef] - bl UpdateStatusIconFlags - cmp r4, #0 - beq _02306AFC - mov r0, #1 - bl ov29_022F62CC -_02306AFC: - cmp r7, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r8 - bl ov29_02321104 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02306B18: .word 0x00000CA8 -_02306B1C: .word 0x00000CB8 -_02306B20: .word 0x00000CB6 -_02306B24: .word 0x00000CAC - arm_func_end ov29_02306A00 - - arm_func_start ov29_02306B28 -ov29_02306B28: ; 0x02306B28 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf1] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02306BB8 -_02306B64: ; jump table - b _02306BB8 ; case 0 - b _02306B7C ; case 1 - b _02306B8C ; case 2 - b _02306B9C ; case 3 - b _02306BAC ; case 4 - b _02306BB8 ; case 5 -_02306B7C: - ldr r1, _02306BE8 ; =0x00000CA9 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306BB8 -_02306B8C: - ldr r1, _02306BEC ; =0x00000CAA - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306BB8 -_02306B9C: - ldr r1, _02306BF0 ; =0x00000CAB - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02306BB8 -_02306BAC: - ldr r1, _02306BF4 ; =0x00000CAD - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_02306BB8: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xf1] - bl UpdateStatusIconFlags - ldrb r0, [r4, #7] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0x31 - bl AdvanceFrame - bl ov29_02336F4C - bl ov29_02339CE8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306BE8: .word 0x00000CA9 -_02306BEC: .word 0x00000CAA -_02306BF0: .word 0x00000CAB -_02306BF4: .word 0x00000CAD - arm_func_end ov29_02306B28 - - arm_func_start ov29_02306BF8 -ov29_02306BF8: ; 0x02306BF8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf3] - cmp r0, #0 - beq _02306C4C - cmp r0, #1 - beq _02306C40 - cmp r0, #2 - b _02306C4C -_02306C40: - ldr r1, _02306C60 ; =0x00000CB9 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_02306C4C: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xf3] - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306C60: .word 0x00000CB9 - arm_func_end ov29_02306BF8 - - arm_func_start ov29_02306C64 -ov29_02306C64: ; 0x02306C64 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf5] - cmp r0, #0 - beq _02306CB8 - arm_func_end ov29_02306C64 - - arm_func_start ov29_02306C9C -ov29_02306C9C: ; 0x02306C9C - cmp r0, #1 - beq _02306CAC - cmp r0, #2 - b _02306CB8 -_02306CAC: - ldr r1, _02306CCC ; =0x00000CC4 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_02306CB8: - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xf5] - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02306CCC: .word 0x00000CC4 - arm_func_end ov29_02306C9C - - arm_func_start ov29_02306CD0 -ov29_02306CD0: ; 0x02306CD0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r0, r6 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r4, #0 - ldr r5, [r6, #0xb4] - mov r0, r4 - mov r1, r6 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xf7] - cmp r0, #0 - beq _02306D2C - cmp r0, #1 - beq _02306D1C - cmp r0, #2 - b _02306D2C -_02306D1C: - ldr r1, _02306D50 ; =0x00000CC5 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r4, #1 -_02306D2C: - mov r1, #0 - mov r0, r6 - strb r1, [r5, #0xf7] - bl UpdateStatusIconFlags - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_02321134 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02306D50: .word 0x00000CC5 - arm_func_end ov29_02306CD0 - - arm_func_start ov29_02306D54 -ov29_02306D54: ; 0x02306D54 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, #0 - ldr r4, _02306DC8 ; =0x02353538 - mov sb, r0 - mov r5, r8 - mov r6, #1 - mov r7, r8 -_02306D70: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr r1, [r0, #0xb78] - cmp r1, #0 - moveq r0, r7 - beq _02306DA0 - ldr r0, [r1] - cmp r0, #1 - moveq r0, r6 - movne r0, r5 - and r0, r0, #0xff -_02306DA0: - cmp r0, #0 - beq _02306DB0 - mov r0, sb - bl ov29_02306CD0 -_02306DB0: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x14 - blt _02306D70 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02306DC8: .word 0x02353538 - arm_func_end ov29_02306D54 - - arm_func_start ov29_02306DCC -ov29_02306DCC: ; 0x02306DCC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov r8, r1 - mov r4, #0 - mov sb, r0 - mov r0, r8 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - beq _02306EF8 - mov r1, sb - mov r2, r0 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xbd] - cmp r0, #0 - moveq r0, r4 - beq _02306EF8 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02306E9C -_02306E3C: ; jump table - b _02306E9C ; case 0 - b _02306E58 ; case 1 - b _02306E9C ; case 2 - b _02306E58 ; case 3 - b _02306E58 ; case 4 - b _02306E7C ; case 5 - b _02306E9C ; case 6 -_02306E58: - mov r2, #1 - mov r0, sb - mov r1, r8 - mov r3, r2 - str r4, [sp] - bl ov29_02311C28 - mov sl, r0 - mov r4, #1 - b _02306E9C -_02306E7C: - mov r2, r4 - mov r0, sb - mov r1, r8 - mov r3, r2 - str r2, [sp] - bl ov29_02311C28 - mov sl, r0 - mov r4, #1 -_02306E9C: - cmp sl, #0 - beq _02306EBC - ldrb r1, [r6, #0xbd] - orr r0, r5, #0x11 - and r5, r0, #0xff - strb r1, [r7, #0xbd] - ldrb r0, [r6, #0xbe] - strb r0, [r7, #0xbe] -_02306EBC: - cmp r4, #0 - orrne r1, r5, #1 - movne r0, #0 - strneb r0, [r6, #0xbd] - andne r5, r1, #0xff - cmp r4, #0 - beq _02306EE4 - mov r0, sb - mov r1, #0x378 - bl ov29_02304A48 -_02306EE4: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r5 -_02306EF8: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02306DCC - - arm_func_start ov29_02306F00 -ov29_02306F00: ; 0x02306F00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov sl, #0 - mov sb, r0 - mov r8, r1 - mov r4, sl - mov r5, sl - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, sl - beq _02307070 - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, sl - beq _02307070 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - ldrb r0, [r6, #0xbf] - cmp r0, #0 - mov r0, sl - beq _02307070 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, sl - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xbf] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0230701C -_02306F84: ; jump table - b _0230701C ; case 0 - b _02306FFC ; case 1 - b _02306F9C ; case 2 - b _02306FBC ; case 3 - b _02306FDC ; case 4 - b _0230701C ; case 5 -_02306F9C: - mov r0, sb - mov r1, r8 - mov r2, sl - mov r3, #1 - bl TryInflictPoisonedStatus - mov sl, r0 - mov r4, #1 - b _0230701C -_02306FBC: - mov r0, sb - mov r1, r8 - mov r2, sl - mov r3, #1 - bl TryInflictBadlyPoisonedStatus - mov sl, r0 - mov r4, #1 - b _0230701C -_02306FDC: - mov r0, sb - mov r1, r8 - mov r2, sl - mov r3, #1 - bl TryInflictParalysisStatus - mov sl, r0 - mov r4, #1 - b _0230701C -_02306FFC: - mov r2, sl - mov r4, #1 - mov r0, sb - mov r1, r8 - mov r3, r2 - str r4, [sp] - bl TryInflictBurnStatus - mov sl, r0 -_0230701C: - cmp sl, #0 - beq _02307048 - add r3, r6, #0xbf - add r2, r7, #0xbf - mov r1, #4 -_02307030: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _02307030 - orr r0, r5, #0x11 - and r5, r0, #0xff -_02307048: - cmp r4, #0 - orrne r0, r5, #1 - movne r1, #0 - andne r5, r0, #0xff - mov r0, sb - strneb r1, [r6, #0xbf] - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r5 -_02307070: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02306F00 - - arm_func_start ov29_02307078 -ov29_02307078: ; 0x02307078 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - ldrb r1, [r6, #0xc4] - cmp r1, #3 - cmpne r1, #4 - beq _023070E0 - ldrb r0, [r7, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _023070E8 -_023070E0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_023070E8: - cmp r1, #7 - addls pc, pc, r1, lsl #2 - b _0230714C -_023070F4: ; jump table - b _0230714C ; case 0 - b _0230714C ; case 1 - b _02307114 ; case 2 - b _0230714C ; case 3 - b _0230714C ; case 4 - b _0230714C ; case 5 - b _0230714C ; case 6 - b _02307130 ; case 7 -_02307114: - mov r0, sb - mov r1, r8 - mov r2, #1 - bl TryInflictShadowHoldStatus - mov sl, r0 - mov r4, #1 - b _0230714C -_02307130: - mov r0, sb - mov r1, r8 - mov r2, #0x7e - mov r3, #1 - bl TryInflictConstrictionStatus - mov sl, r0 - mov r4, #1 -_0230714C: - cmp sl, #0 - beq _0230716C - add r0, r6, #0xc4 - add r7, r7, #0xc4 - ldmia r0, {r0, r1, r2} - orr r3, r5, #0x11 - stmia r7, {r0, r1, r2} - and r5, r3, #0xff -_0230716C: - cmp r4, #0 - orrne r0, r5, #1 - movne r1, #0 - andne r5, r0, #0xff - mov r0, sb - strneb r1, [r6, #0xc4] - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02307078 - - arm_func_start ov29_02307198 -ov29_02307198: ; 0x02307198 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - beq _02307374 - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - beq _02307374 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - ldrb r0, [r6, #0xd0] - cmp r0, #0 - mov r0, r4 - beq _02307374 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xd0] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _0230731C -_0230721C: ; jump table - b _0230731C ; case 0 - b _02307300 ; case 1 - b _02307240 ; case 2 - b _0230729C ; case 3 - b _02307260 ; case 4 - b _02307280 ; case 5 - b _023072E4 ; case 6 - b _023072C4 ; case 7 - b _0230731C ; case 8 -_02307240: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl TryInflictConfusedStatus - mov sl, r0 - mov r4, #1 - b _0230731C -_02307260: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl TryInflictCoweringStatus - mov sl, r0 - mov r4, #1 - b _0230731C -_02307280: - mov r0, sb - mov r1, r8 - mov r2, #1 - bl ov29_023163A8 - mov sl, r0 - mov r4, #1 - b _0230731C -_0230729C: - mov r3, r4 - mov r0, sb - mov r1, r8 - str r3, [sp] - mov r2, #1 - str r2, [sp, #4] - bl TryInflictPausedStatus - mov sl, r0 - mov r4, #1 - b _0230731C -_023072C4: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl TryInflictInfatuatedStatus - mov sl, r0 - mov r4, #1 - b _0230731C -_023072E4: - mov r0, sb - mov r1, r8 - mov r2, #1 - bl ov29_02316720 - mov sl, r0 - mov r4, #1 - b _0230731C -_02307300: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl TryInflictCringeStatus - mov sl, r0 - mov r4, #1 -_0230731C: - cmp sl, #0 - beq _0230733C - ldrb r1, [r6, #0xd0] - orr r0, r5, #0x11 - and r5, r0, #0xff - strb r1, [r7, #0xd0] - ldrb r0, [r6, #0xd1] - strb r0, [r7, #0xd1] -_0230733C: - cmp r4, #0 - movne r0, #0 - orrne r1, r5, #1 - strneb r0, [r6, #0xd0] - mov r0, sb - andne r5, r1, #0xff - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, sb - bl CalcSpeedStageWrapper - mov r0, r8 - bl CalcSpeedStageWrapper - mov r0, r5 -_02307374: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02307198 - - arm_func_start ov29_0230737C -ov29_0230737C: ; 0x0230737C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov r5, r4 - mov r6, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - beq _023076B4 - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - beq _023076B4 - mov r1, sb - mov r2, r0 - ldr r7, [sb, #0xb4] - ldr sl, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xd8] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230749C -_023073F0: ; jump table - b _0230749C ; case 0 - b _02307410 ; case 1 - b _0230741C ; case 2 - b _0230749C ; case 3 - b _02307440 ; case 4 - b _02307460 ; case 5 - b _02307480 ; case 6 - b _0230749C ; case 7 -_02307410: - mov r5, #1 - mov r4, r5 - b _0230749C -_0230741C: - mov r2, r4 - mov r4, #1 - mov r0, sb - mov r1, r8 - mov r3, r2 - str r4, [sp] - bl ov29_02315E24 - mov r5, r0 - b _0230749C -_02307440: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl ov29_0231827C - mov r5, r0 - mov r4, #1 - b _0230749C -_02307460: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl ov29_023185A8 - mov r5, r0 - mov r4, #1 - b _0230749C -_02307480: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl ov29_0231872C - mov r5, r0 - mov r4, #1 -_0230749C: - ldrb r0, [r7, #0xd8] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _023076A0 -_023074AC: ; jump table - b _023076A0 ; case 0 - b _023074C8 ; case 1 - b _02307528 ; case 2 - b _023076A0 ; case 3 - b _02307554 ; case 4 - b _023075D4 ; case 5 - b _0230763C ; case 6 -_023074C8: - cmp r5, #0 - beq _02307500 - mov r0, sb - mov r1, r8 - bl ov29_023066D8 - add r3, r7, #0xd8 - add r2, sl, #0xd8 - mov r1, #5 -_023074E8: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _023074E8 - orr r0, r6, #0x11 - and r6, r0, #0xff -_02307500: - cmp r4, #0 - beq _023076A0 - mov r0, r8 - mov r1, sb - mov r2, #1 - mov r3, #0 - bl ov29_02306728 - orr r0, r6, #1 - and r6, r0, #0xff - b _023076A0 -_02307528: - cmp r5, #0 - beq _023076A0 - mov r3, #0 - mov r0, sb - mov r1, r8 - mov r2, #1 - str r3, [sp] - bl ov29_02315E24 - orr r0, r6, #0x11 - and r6, r0, #0xff - b _023076A0 -_02307554: - cmp r5, #0 - beq _023075AC - mov r0, sb - mov r1, r8 - bl ov29_023066D8 - add r3, r7, #0xd8 - add r2, sl, #0xd8 - mov r1, #5 -_02307574: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _02307574 - ldr r1, _023076BC ; =0x02353538 - mov r0, r8 - ldr r1, [r1] - mov r2, #1 - strb r2, [r1, #0xe] - bl ov29_022FB984 - mov r0, r8 - bl UpdateStatusIconFlags - orr r0, r6, #0x11 - and r6, r0, #0xff -_023075AC: - cmp r4, #0 - beq _023076A0 - mov r0, r8 - mov r1, sb - mov r2, #4 - mov r3, #0 - bl ov29_02306728 - orr r0, r6, #1 - and r6, r0, #0xff - b _023076A0 -_023075D4: - cmp r5, #0 - beq _02307614 - mov r0, sb - mov r1, r8 - bl ov29_023066D8 - add r3, r7, #0xd8 - add r2, sl, #0xd8 - mov r1, #5 -_023075F4: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _023075F4 - mov r0, r8 - bl UpdateStatusIconFlags - orr r0, r6, #0x11 - and r6, r0, #0xff -_02307614: - cmp r4, #0 - beq _023076A0 - mov r0, r8 - mov r1, sb - mov r2, #5 - mov r3, #0 - bl ov29_02306728 - orr r0, r6, #1 - and r6, r0, #0xff - b _023076A0 -_0230763C: - cmp r5, #0 - beq _0230767C - mov r0, sb - mov r1, r8 - bl ov29_023066D8 - add r3, r7, #0xd8 - add r2, sl, #0xd8 - mov r1, #5 -_0230765C: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _0230765C - mov r0, r8 - bl UpdateStatusIconFlags - orr r0, r6, #0x11 - and r6, r0, #0xff -_0230767C: - cmp r4, #0 - beq _023076A0 - mov r0, r8 - mov r1, sb - mov r2, #6 - mov r3, #0 - bl ov29_02306728 - orr r0, r6, #1 - and r6, r0, #0xff -_023076A0: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r6 -_023076B4: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023076BC: .word 0x02353538 - arm_func_end ov29_0230737C - - arm_func_start ov29_023076C0 -ov29_023076C0: ; 0x023076C0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - ldrb r0, [r6, #0xe0] - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xe0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230776C -_02307740: ; jump table - b _0230776C ; case 0 - b _02307750 ; case 1 - b _0230776C ; case 2 - b _0230776C ; case 3 -_02307750: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl TryInflictLeechSeedStatus - mov sl, r0 - mov r4, #1 -_0230776C: - cmp sl, #0 - beq _023077CC - add r0, r6, #0xe0 - add r3, r7, #0xe0 - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #0xff - strb r0, [r7, #0xe8] - ldr r2, _023077F8 ; =0x02353538 - mov r0, #0 -_02307794: - ldr r1, [r2] - add r1, r1, r0, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb78] - cmp sb, r1 - streqb r0, [r7, #0xe8] - ldreq r1, [sb, #0xb4] - add r0, r0, #1 - ldreq r1, [r1, #0xb0] - streq r1, [r7, #0xe4] - cmp r0, #0x14 - blt _02307794 - orr r0, r5, #0x11 - and r5, r0, #0xff -_023077CC: - cmp r4, #0 - orrne r0, r5, #1 - movne r1, #0 - andne r5, r0, #0xff - mov r0, sb - strneb r1, [r6, #0xe0] - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023077F8: .word 0x02353538 - arm_func_end ov29_023076C0 - - arm_func_start ov29_023077FC -ov29_023077FC: ; 0x023077FC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sb - mov r2, r0 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xec] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _023078A0 -_0230786C: ; jump table - b _023078A0 ; case 0 - b _023078A0 ; case 1 - b _02307884 ; case 2 - b _023078A0 ; case 3 - b _023078A0 ; case 4 - b _023078A0 ; case 5 -_02307884: - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, #1 - bl ov29_02315C00 - mov sl, r0 - mov r4, #1 -_023078A0: - cmp sl, #0 - beq _023078C0 - ldrb r1, [r6, #0xec] - orr r0, r5, #0x11 - and r5, r0, #0xff - strb r1, [r7, #0xec] - ldrb r0, [r6, #0xed] - strb r0, [r7, #0xed] -_023078C0: - cmp r4, #0 - orrne r0, r5, #1 - movne r1, #0 - andne r5, r0, #0xff - mov r0, sb - strneb r1, [r6, #0xec] - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_023077FC - - arm_func_start ov29_023078EC -ov29_023078EC: ; 0x023078EC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov sl, r4 - mov r5, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sb - mov r2, r0 - ldr r6, [sb, #0xb4] - ldr r7, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r8 - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xf1] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _023079C4 -_0230795C: ; jump table - b _023079C4 ; case 0 - b _02307974 ; case 1 - b _02307994 ; case 2 - b _023079C4 ; case 3 - b _023079B0 ; case 4 - b _023079C4 ; case 5 -_02307974: - mov r0, sb - mov r1, r8 - mov r2, #1 - mov r3, r4 - bl ov29_023176CC - mov sl, r0 - mov r4, #1 - b _023079C4 -_02307994: - mov r0, sb - mov r1, r8 - mov r2, #1 - bl ov29_02317844 - mov sl, r0 - mov r4, #1 - b _023079C4 -_023079B0: - mov r0, sb - mov r1, r8 - bl ov29_02317AF4 - mov sl, r0 - mov r4, #1 -_023079C4: - cmp sl, #0 - beq _023079E4 - ldrb r1, [r6, #0xf1] - orr r0, r5, #0x11 - and r5, r0, #0xff - strb r1, [r7, #0xf1] - ldrb r0, [r6, #0xf2] - strb r0, [r7, #0xf2] -_023079E4: - cmp r4, #0 - orrne r0, r5, #1 - movne r1, #0 - andne r5, r0, #0xff - mov r0, sb - strneb r1, [r6, #0xf1] - bl UpdateStatusIconFlags - mov r0, r8 - bl UpdateStatusIconFlags - ldrb r0, [r6, #7] - cmp r0, #0 - beq _02307A24 - mov r0, #0x31 - bl AdvanceFrame - bl ov29_02336F4C - bl ov29_02339CE8 -_02307A24: - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_023078EC - - arm_func_start ov29_02307A2C -ov29_02307A2C: ; 0x02307A2C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sl, r0 - mov sb, r1 - mov r5, r4 - mov r6, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, sb - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sl - mov r2, r0 - ldr r7, [sl, #0xb4] - ldr r8, [sb, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, sb - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xf3] - cmp r0, #0 - beq _02307AC0 - cmp r0, #1 - beq _02307AA8 - cmp r0, #2 - b _02307AC0 -_02307AA8: - mov r0, sl - mov r1, sb - mov r2, #1 - bl ov29_02317124 - mov r5, r0 - mov r4, #1 -_02307AC0: - cmp r5, #0 - beq _02307AE0 - ldrb r1, [r7, #0xf3] - orr r0, r6, #0x11 - and r6, r0, #0xff - strb r1, [r8, #0xf3] - ldrb r0, [r7, #0xf4] - strb r0, [r8, #0xf4] -_02307AE0: - cmp r4, #0 - orrne r0, r6, #1 - movne r1, #0 - andne r6, r0, #0xff - mov r0, sl - strneb r1, [r7, #0xf3] - bl UpdateStatusIconFlags - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02307A2C - - arm_func_start ov29_02307B0C -ov29_02307B0C: ; 0x02307B0C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sl, r0 - mov sb, r1 - mov r5, r4 - mov r6, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, sb - bl EntityIsValid__02305C04 - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, sl - mov r2, r0 - ldr r7, [sl, #0xb4] - ldr r8, [sb, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, sb - mov r0, #1 - mov r2, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xf5] - cmp r0, #1 - bne _02307B90 - mov r0, sl - mov r1, sb - mov r2, #1 - bl ov29_02318850 - mov r5, r0 - mov r4, #1 -_02307B90: - cmp r5, #0 - beq _02307BB0 - ldrb r1, [r7, #0xf5] - orr r0, r6, #0x11 - and r6, r0, #0xff - strb r1, [r8, #0xf5] - ldrb r0, [r7, #0xf6] - strb r0, [r8, #0xf6] -_02307BB0: - cmp r4, #0 - orrne r0, r6, #1 - movne r1, #0 - andne r6, r0, #0xff - mov r0, sl - strneb r1, [r7, #0xf5] - bl UpdateStatusIconFlags - mov r0, sb - bl UpdateStatusIconFlags - mov r0, r6 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_02307B0C - - arm_func_start ov29_02307BDC -ov29_02307BDC: ; 0x02307BDC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - ldr r4, [r5, #0xb4] - mov r6, r0 - ldrb r2, [r4, #0xc4] - mov r3, #0 - cmp r2, #6 - bne _02307C0C - mov r2, #1 - bl EndFrozenClassStatus - mov r3, #1 -_02307C0C: - ldrb r0, [r4, #0xbd] - cmp r0, #1 - ldreqb r0, [r4, #0xbe] - cmpeq r0, #0x7f - bne _02307C3C - mov r3, #1 - mov r0, r6 - mov r1, r5 - mov r2, #0 - str r3, [sp] - bl ov29_02305FDC - mov r3, #1 -_02307C3C: - mov r0, r3 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_02307BDC - - arm_func_start ov29_02307C48 -ov29_02307C48: ; 0x02307C48 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr ip, [r4, #0xb4] - mov r3, #0 - mov r1, #1 - strb r3, [ip, #0xbd] - mov r2, r1 - strb r3, [ip, #0xbe] - bl ov29_022FA1D8 - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r4, pc} - arm_func_end ov29_02307C48 - - arm_func_start ov29_02307C78 -ov29_02307C78: ; 0x02307C78 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r3, [r4, #0xb4] - ldrb r0, [r3, #0xc4] - cmp r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - strb r0, [r3, #0xc4] - strb r0, [r3, #0xcc] - mov r1, r4 - mov r2, r0 - strb r0, [r3, #0xcd] - bl SubstitutePlaceholderStringTags - ldr r2, _02307CDC ; =0x00000C9F - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02307CDC: .word 0x00000C9F - arm_func_end ov29_02307C78 - - arm_func_start ov29_02307CE0 -ov29_02307CE0: ; 0x02307CE0 - stmdb sp!, {r4, lr} - ldr r4, [r0, #0xb4] - mov r1, #0 - bl ov29_02307D54 - mov r1, #0 - strb r1, [r4, #0xff] - ldrsh r0, [r4, #2] - bl GetType - strb r0, [r4, #0x5e] - ldrsh r0, [r4, #2] - mov r1, #1 - bl GetType - strb r0, [r4, #0x5f] - ldmia sp!, {r4, pc} - arm_func_end ov29_02307CE0 - - arm_func_start ov29_02307D18 -ov29_02307D18: ; 0x02307D18 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #7 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ov29_023064F4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02307D18 - - arm_func_start ov29_02307D54 -ov29_02307D54: ; 0x02307D54 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02305C04 - cmp r0, #0 - ldrne r2, [r5, #0xb4] - ldrneb r0, [r2, #0xa9] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - strb r0, [r2, #0xa9] - ldrb r1, [r2, #0xaa] - cmp r4, #0 - strb r1, [r2, #0x5e] - ldrb r1, [r2, #0xab] - strb r1, [r2, #0x5f] - strb r0, [r2, #0xaa] - strb r0, [r2, #0xab] - ldmeqia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02307DBC ; =0x00000CC8 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02307DBC: .word 0x00000CC8 - arm_func_end ov29_02307D54 - - arm_func_start ov29_02307DC0 -ov29_02307DC0: ; 0x02307DC0 - mov r1, #0 - strb r1, [r0, #0x104] - strb r1, [r0, #0x105] - bx lr - arm_func_end ov29_02307DC0 - - arm_func_start ov29_02307DD0 -ov29_02307DD0: ; 0x02307DD0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 -_02307DD8: - ldr r0, _02307EF4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb38] - mov r0, r6 - bl EntityIsValid__02307EF8 - cmp r0, #0 - beq _02307EE4 - ldr r1, [r6, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #1 - ldreqb r0, [r1, #0xbe] - cmpeq r0, #0x7f - bne _02307EE4 - mov r8, #0 - mov r7, r8 - mov r5, r8 - ldrb sl, [r6, #0x25] - ldr fp, _02307EF4 ; =0x02353538 - b _02307EBC -_02307E2C: - ldr r0, [fp] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] - mov r0, sb - bl EntityIsValid__02307EF8 - cmp r0, #0 - beq _02307EB8 - mov r0, sb - mov r1, #0x1f - bl ItemIsActive__02307F1C - cmp r0, #0 - bne _02307EB8 - ldrsh r1, [sb, #4] - ldrsh r0, [r6, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _02307E94 - ldrsh r1, [sb, #6] - ldrsh r0, [r6, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - movle r8, #1 - ble _02307EC4 -_02307E94: - mov r0, sb - mov r1, #0x24 - bl ItemIsActive__02307F1C - cmp r0, #0 - beq _02307EB8 - ldrb r0, [sb, #0x25] - cmp sl, r0 - moveq r7, #1 - beq _02307EC4 -_02307EB8: - add r5, r5, #1 -_02307EBC: - cmp r5, #4 - blt _02307E2C -_02307EC4: - cmp r7, #0 - bne _02307ED4 - cmp r8, #0 - movne r7, #1 -_02307ED4: - cmp r7, #0 - beq _02307EE4 - mov r0, r6 - bl ov29_02307C48 -_02307EE4: - add r4, r4, #1 - cmp r4, #0x10 - blt _02307DD8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02307EF4: .word 0x02353538 - arm_func_end ov29_02307DD0 - - arm_func_start EntityIsValid__02307EF8 -EntityIsValid__02307EF8: ; 0x02307EF8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02307EF8 - - arm_func_start ItemIsActive__02307F1C -ItemIsActive__02307F1C: ; 0x02307F1C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__02307F1C - - arm_func_start ov29_02307F4C -ov29_02307F4C: ; 0x02307F4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1a0 - mov r4, r0 - mov r5, r1 - bl EntityIsValid__02307EF8 - cmp r0, #0 - beq _02308268 - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - bne _02308268 - mov r0, r4 - bl GetTileAtEntity - ldrh r0, [r0] - tst r0, #0x40 - beq _02308268 - ldr r0, _02308270 ; =0x02353538 - ldr r2, [r0] - ldrb r1, [r2, #0x793] - cmp r1, #0 - bne _02308268 - mov r1, #1 - strb r1, [r2, #0x793] - ldr r1, [r0] - add r0, r1, #0x4000 - ldrb r2, [r0, #0xc9] - cmp r2, #0xff - beq _02308268 - add r0, r1, #0x2e8 - add r1, r0, #0xec00 - mov r0, #0x1c - mla r1, r2, r0, r1 - cmp r5, #0 - mov r5, #0 - beq _02308064 - ldrsh r0, [r4, #6] - add r7, sp, #0x10 - sub sb, r0, #4 - b _02308050 -_02307FE8: - ldrsh r0, [r4, #4] - sub r8, r0, #4 - mov r0, sb, lsl #0x10 - mov r6, r0, asr #0x10 - b _0230803C -_02307FFC: - mov r0, r8 - mov r1, sb - bl GetTileSafe - ldr r1, [r0, #0xc] - cmp r1, #0 - ldreqh r0, [r0] - andeq r0, r0, #3 - cmpeq r0, #1 - bne _02308038 - cmp r5, #0x64 - movlt r1, r5, lsl #2 - addlt r0, r7, r5, lsl #2 - strlth r8, [r7, r1] - strlth r6, [r0, #2] - addlt r5, r5, #1 -_02308038: - add r8, r8, #1 -_0230803C: - ldrsh r0, [r4, #4] - add r0, r0, #4 - cmp r8, r0 - ble _02307FFC - add sb, sb, #1 -_02308050: - ldrsh r0, [r4, #6] - add r0, r0, #4 - cmp sb, r0 - ble _02307FE8 - b _02308124 -_02308064: - ldrsh r2, [r4, #4] - ldrsh r0, [r1, #2] - add fp, sp, #0x10 - sub r7, r2, #4 - cmp r7, r0 - movle r7, r0 - add r8, r2, #5 - ldrsh r2, [r4, #6] - ldrsh r0, [r1, #6] - sub sb, r2, #4 - cmp r8, r0 - movge r8, r0 - ldrsh r0, [r1, #4] - add sl, r2, #5 - cmp sb, r0 - movle sb, r0 - ldrsh r0, [r1, #8] - cmp sl, r0 - movge sl, r0 - b _0230811C -_023080B4: - mov r0, sb, lsl #0x10 - mov r6, r7 - mov r4, r0, asr #0x10 - b _02308110 -_023080C4: - mov r0, r6 - mov r1, sb - bl GetTileSafe - ldr r1, [r0, #0xc] - cmp r1, #0 - ldreqh r1, [r0] - andeq r1, r1, #3 - cmpeq r1, #1 - bne _0230810C - ldrh r0, [r0] - tst r0, #0x40 - beq _0230810C - cmp r5, #0x64 - movlt r1, r5, lsl #2 - addlt r0, fp, r5, lsl #2 - strlth r6, [fp, r1] - strlth r4, [r0, #2] - addlt r5, r5, #1 -_0230810C: - add r6, r6, #1 -_02308110: - cmp r6, r8 - blt _023080C4 - add sb, sb, #1 -_0230811C: - cmp sb, sl - blt _023080B4 -_02308124: - ldr r0, _02308274 ; =0x022C4560 - ldr r1, _02308278 ; =0x022C4660 - ldrsh r0, [r0] - ldrsh r1, [r1] - bl DungeonRandRange - mov r6, r0 - cmp r6, r5 - movge r6, r5 - mov r8, #0 - b _02308258 -_0230814C: - mov r0, r5 - bl DungeonRandInt - mov r3, #0 - mov r4, r0 - add r2, sp, #0x10 - mov r0, r3 - b _02308188 -_02308168: - mov r1, r4, lsl #2 - ldrsh r1, [r2, r1] - cmp r1, #0 - bne _02308190 - add r4, r4, #1 - cmp r4, r5 - movge r4, r0 - add r3, r3, #1 -_02308188: - cmp r3, r5 - blt _02308168 -_02308190: - add r0, sp, #0x10 - mov r1, r4, lsl #2 - ldrsh r7, [r0, r1] - cmp r7, #0 - beq _02308260 - mov r0, #1 - bl GetMonsterIdToSpawn - add r1, sp, #0x10 - mov r3, #0 - strh r0, [sp] - add r0, r1, r4, lsl #2 - ldrsh r2, [r0, #2] - mov r1, #1 - ldrsh r0, [sp] - strh r3, [sp, #8] - strb r3, [sp, #2] - str r3, [sp, #4] - strb r1, [sp, #0xe] - strh r7, [sp, #0xa] - strh r2, [sp, #0xc] - bl MewSpawnCheck - cmp r0, #0 - beq _02308254 - add r0, sp, #0 - mov r1, #0 - bl SpawnMonster - mov r4, r0 - bl EntityIsValid__02307EF8 - cmp r0, #0 - beq _02308254 - mov r0, #0xc800 - str r0, [r4, #0x1c] - mov sl, #0 - mov sb, #0xaa - mov r7, #0x57 - b _02308244 -_02308220: - ldr r0, [r4, #0x1c] - mov r1, sb - bl MultiplyByFixedPoint - str r0, [r4, #0x1c] - cmp r0, #0x100 - blt _0230824C - mov r0, r7 - bl AdvanceFrame - add sl, sl, #1 -_02308244: - cmp sl, #0x64 - blt _02308220 -_0230824C: - mov r0, #0 - str r0, [r4, #0x1c] -_02308254: - add r8, r8, #1 -_02308258: - cmp r8, r6 - blt _0230814C -_02308260: - mov r0, #1 - bl ov29_022E38E0 -_02308268: - add sp, sp, #0x1a0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02308270: .word 0x02353538 -_02308274: .word 0x022C4560 -_02308278: .word 0x022C4660 - arm_func_end ov29_02307F4C - - arm_func_start EntityIsValid__0230827C -EntityIsValid__0230827C: ; 0x0230827C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0230827C - - arm_func_start ov29_023082A0 -ov29_023082A0: ; 0x023082A0 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xb4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldrb r0, [r1, #0xa8] - bl sub_02058C3C - ldmia sp!, {r3, pc} - arm_func_end ov29_023082A0 - - arm_func_start ov29_023082C4 -ov29_023082C4: ; 0x023082C4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl GetLeader - movs r4, r0 - beq _02308338 - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl ov29_0230175C - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl CanTargetEntity - cmp r0, #0 - movne r0, r4 - ldmneia sp!, {r3, r4, r5, pc} -_02308338: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023082C4 - - arm_func_start RunMonsterAi -RunMonsterAi: ; 0x02308340 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - ldrh r1, [r4] - tst r1, #0x8000 - beq _02308374 - ldrb r1, [r4, #0xc4] - cmp r1, #6 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r5 - mov r2, #1 - bl EndFrozenClassStatus - ldmia sp!, {r3, r4, r5, pc} -_02308374: - mov r1, #0 - strb r1, [r4, #0x10c] - ldrb r1, [r4, #0xbc] - cmp r1, #6 - bls _02308394 - bl ov29_022EF9EC - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_02308394: - ldrb r0, [r4, #0xbc] - cmp r0, #7 - ldrneb r0, [r4, #0x109] - cmpne r0, #0 - beq _023083F0 - mov r0, r5 - bl ov29_02300B40 - cmp r0, #0 - beq _023083DC - mov r0, #0 - mov r1, r5 - mov r2, r0 - strb r0, [r4, #0x109] - bl SubstitutePlaceholderStringTags - ldr r1, _023085D4 ; =0x00000DED - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_023083DC: - mov r0, r5 - bl ov29_0230E914 - ldrh r0, [r4, #0x4a] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_023083F0: - mov r0, r5 - bl HasStatusThatPreventsActing - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_022FB538 - add r0, r4, #0x4a - bl ClearMonsterActionFields - ldrb r0, [r4, #0xbc] - cmp r0, #7 - bne _02308450 - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - mov r0, #8 - bl DungeonRandInt - strb r0, [r4, #0x4c] - ldrsh r1, [r5, #4] - add r0, r4, #0x100 - strh r1, [r0, #0x7e] - ldrsh r1, [r5, #6] - sub r1, r1, #1 - strh r1, [r0, #0x80] - ldmia sp!, {r3, r4, r5, pc} -_02308450: - mov r0, r5 - bl ov29_0230E914 - ldrh r0, [r4, #0x4a] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0x15 - bl IqSkillIsEnabled - cmp r0, #0 - bne _02308510 - mov r0, r5 - bl ChooseAiMove - ldrh r0, [r4, #0x4a] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #2 - bne _023084A8 - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - ldmia sp!, {r3, r4, r5, pc} -_023084A8: - ldrsh r0, [r4, #2] - bl GetCanMoveFlag - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #1 - bl AiMovement - ldrb r0, [r4, #6] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0x17 - bl IqSkillIsEnabled - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r4, #0x4a] - cmp r0, #1 - ldmhiia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _023085D8 ; =0x00000DEE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_02308510: - ldrb r0, [r4, #0xd0] - cmp r0, #2 - bne _0230852C - ldrsh r1, [r4, #2] - add r0, r4, #0x4a - bl SetActionPassTurnOrWalk - ldmia sp!, {r3, r4, r5, pc} -_0230852C: - ldrsh r0, [r4, #2] - bl GetCanMoveFlag - cmp r0, #0 - beq _02308548 - mov r0, r5 - mov r1, #1 - bl AiMovement -_02308548: - ldrh r0, [r4, #0x4a] - cmp r0, #0 - cmpne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ChooseAiMove - ldrsh r0, [r4, #2] - bl GetCanMoveFlag - cmp r0, #0 - ldrneb r0, [r4, #6] - cmpne r0, #0 - beq _023085B4 - mov r0, r5 - mov r1, #0x17 - bl IqSkillIsEnabled - cmp r0, #0 - beq _023085B4 - ldrh r0, [r4, #0x4a] - cmp r0, #1 - bhi _023085B4 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _023085D8 ; =0x00000DEE - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_023085B4: - ldrh r0, [r4, #0x4a] - cmp r0, #0 - cmpne r0, #1 - movne r0, #0 - strneb r0, [r4, #0x7d] - strneb r0, [r4, #0x14e] - strneb r0, [r4, #0x151] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023085D4: .word 0x00000DED -_023085D8: .word 0x00000DEE - arm_func_end RunMonsterAi - - arm_func_start ov29_023085DC -ov29_023085DC: ; 0x023085DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - cmp r1, #0 - ldr r4, [r5, #0xb4] - beq _02308618 - ldrb r1, [r4, #0xd0] - cmp r1, #4 - bne _02308618 - ldrb r1, [r4, #0x4c] - add r2, r1, #4 - and r1, r2, #0xff - and r1, r1, #7 - strb r1, [r4, #0x4c] - bl UpdateAiTargetPos - ldmia sp!, {r3, r4, r5, pc} -_02308618: - ldrb r0, [r4, #0xd0] - cmp r0, #2 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #8 - bl DungeonRandInt - strb r0, [r4, #0x4c] - mov r0, r5 - bl UpdateAiTargetPos - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023085DC - - arm_func_start ov29_0230863C -ov29_0230863C: ; 0x0230863C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - ldr r7, [sp, #0x68] - ldrsh r4, [sp, #0x6c] - ldr r6, [sp, #0x74] - str r7, [sp] - stmib sp, {r4, r6} - mov r8, r2 - mov sl, r0 - mov sb, r1 - bl ApplyDamage - cmp r0, #0 - ldreqb r0, [r8, #0x10] - cmpeq r0, #0 - bne _02308F68 - mov r0, sl - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _02308F68 - mov r0, sb - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _02308F68 - ldr r0, [sl] - cmp r0, #1 - ldreq r0, [sb] - cmpeq r0, #1 - bne _02308F68 - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xd2] - cmp r0, #0xc - bne _023086D4 - ldr r1, _02308F70 ; =0x02352AEC - mov r0, sl - ldr r2, [r1] - mov r1, sb - mov r3, #1 - bl BoostOffensiveStat -_023086D4: - ldr r0, [sp, #0x70] - cmp r0, #0 - beq _02308F68 - mov r0, sb - bl ov29_02300D50 - cmp r0, #0 - ldreq r0, [sb, #0xb4] - ldreqb r0, [r0, #0xd2] - cmpeq r0, #0 - movne r0, #0 - bne _02308F64 - mov r0, sl - mov r1, #0x29 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02308730 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F74 ; =0x022C442C - ldrsh r1, [r1] - cmp r0, r1 - movlt r0, #0 - blt _02308F64 -_02308730: - ldrb r0, [r8, #0xd] - bl ov29_0231EA30 - cmp r0, #0 - bne _02308778 - cmp sl, sb - beq _02308778 - ldrsh r1, [sl, #4] - ldrsh r0, [sb, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _02308778 - ldrsh r1, [sl, #6] - ldrsh r0, [sb, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _02308780 -_02308778: - mov r0, #0 - b _023087B4 -_02308780: - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xd - bne _023087A8 - mov r0, sb - mov r1, sl - bl ov29_022E5E84 - mov r0, sb - mov r1, sl - bl ov29_0231EDFC -_023087A8: - mov r0, sl - mov r1, sb - bl ov29_0230D654 -_023087B4: - cmp r0, #0 - movne r0, #1 - bne _02308F64 - ldrb r0, [r8, #0xd] - bl ov29_0231EA30 - mov r4, r0 - cmp sl, sb - mov r5, #0 - beq _02308808 - ldrsh r1, [sl, #4] - ldrsh r0, [sb, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _02308808 - ldrsh r1, [sl, #6] - ldrsh r0, [sb, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _02308810 -_02308808: - mov r0, #0 - b _02308A28 -_02308810: - add r0, sp, #0x2c - bl ResetDamageDesc - ldr r0, [sb, #0xb4] - cmp r4, #0 - ldrb r0, [r0, #0xd5] - bne _023088E4 - cmp r0, #4 - bne _0230883C - mov r0, sb - bl ov29_022E3F24 - add r5, r5, #4 -_0230883C: - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xa - bne _02308858 - mov r0, sb - bl ov29_022E3F24 - add r5, r5, #1 -_02308858: - mov r0, sb - mov r1, #0x20 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - mov r0, sb - mov r1, #0x23 - addne r5, r5, #4 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - mov r0, sb - mov r1, #0x31 - addne r5, r5, #1 - bl IqSkillIsEnabled - cmp r0, #0 - beq _023088B0 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F78 ; =0x022C44C0 - mov r0, r0, lsl #0x10 - ldrsh r1, [r1] - cmp r1, r0, asr #16 - addgt r5, r5, #4 -_023088B0: - mov r0, sb - mov r1, #0x27 - bl IqSkillIsEnabled - cmp r0, #0 - beq _023088F8 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F7C ; =0x022C4464 - mov r0, r0, lsl #0x10 - ldrsh r1, [r1] - cmp r1, r0, asr #16 - addgt r5, r5, #1 - b _023088F8 -_023088E4: - cmp r0, #8 - bne _023088F8 - mov r0, sb - bl ov29_022E40C0 - add r5, r5, #4 -_023088F8: - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xf - bne _02308914 - mov r0, sb - bl ov29_022E57D4 - add r5, r5, #2 -_02308914: - mov r0, sl - mov r1, sb - mov r2, #0x12 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - addne r5, r5, #2 - cmp r5, #0 - beq _02308A1C - ldr r2, _02308F80 ; =0x00000C3F - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, [r8] - mov r1, #6 - mul r2, r0, r5 - mov r0, r2, asr #1 - add r0, r2, r0, lsr #30 - mov r0, r0, asr #2 - str r0, [sp, #0x2c] - ldrb r2, [r8, #0xc] - mov r0, #2 - mov r3, #0 - strb r2, [sp, #0x38] - str r1, [sp, #0x30] - str r0, [sp, #0x34] - ldrb r0, [r8, #0xd] - strb r0, [sp, #0x39] - strb r3, [sp, #0x3a] - strb r3, [sp, #0x3b] - strb r3, [sp, #0x3c] - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xf - bne _023089FC - mov r2, #1 - add r1, sp, #0xc - mov r0, sb - strb r2, [sp, #0x39] - bl ov29_023380FC - mov fp, r0 - ldrsh r5, [sp, #0x6c] - mov r4, #0 - b _023089F0 -_023089C4: - str r7, [sp] - stmib sp, {r5, r6} - add r0, sp, #0xc - ldr r1, [r0, r4, lsl #2] - mov r0, sb - add r2, sp, #0x2c - mov r3, #0 - bl ApplyDamage - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_023089F0: - cmp r4, fp - blt _023089C4 - b _02308A1C -_023089FC: - ldrsh r0, [sp, #0x6c] - str r7, [sp] - add r2, sp, #0x2c - str r0, [sp, #4] - mov r0, sb - mov r1, sl - str r6, [sp, #8] - bl ApplyDamage -_02308A1C: - mov r0, sl - mov r1, sb - bl ov29_0230D654 -_02308A28: - cmp r0, #0 - movne r0, #1 - bne _02308F64 - cmp sl, sb - beq _02308A6C - ldrsh r1, [sl, #4] - ldrsh r0, [sb, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _02308A6C - ldrsh r1, [sl, #6] - ldrsh r0, [sb, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _02308A74 -_02308A6C: - mov r0, #0 - b _02308ECC -_02308A74: - ldrb r0, [r8, #0xd] - bl ov29_0231EA30 - mov r4, r0 - mov r0, sb - mov r1, #0xb - ldr r6, [sl, #0xb4] - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02308B04 - cmp r4, #0 - bne _02308B04 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F84 ; =0x022C45B4 - ldrsh r1, [r1] - cmp r0, r1 - bge _02308B04 - mov r0, #0x12c - bl DungeonRandInt - cmp r0, #0x64 - mov r2, #0xb - bge _02308AE0 - mov r0, sl - mov r1, sb - mov r3, #0x40 - bl ov29_0230F728 - b _02308B04 -_02308AE0: - cmp r0, #0xc8 - mov r0, sl - mov r1, sb - bge _02308AFC - mov r3, #0x10 - bl ov29_0230F728 - b _02308B04 -_02308AFC: - mov r3, #0x80 - bl ov29_0230F728 -_02308B04: - ldr r5, _02308F88 ; =0x023535DC - b _02308B54 -_02308B0C: - ldrb r1, [r5] - mov r0, sb - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02308B50 - ldr r3, [r5, #8] - mov r0, sl - mov r1, sb - mov r2, r4 - blx r3 - cmp r0, #0 - beq _02308B50 - ldrb r2, [r5] - ldr r3, [r5, #4] - mov r0, sl - mov r1, sb - bl ov29_0230F728 -_02308B50: - add r5, r5, #0x10 -_02308B54: - ldrb r0, [r5] - cmp r0, #0 - bne _02308B0C - mov r0, sb - mov r1, #0x1b - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02308BB0 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F8C ; =0x022C45B0 - ldrsh r1, [r1] - cmp r0, r1 - bge _02308BB0 - mov r0, sb - bl HasLowHealth - cmp r0, #0 - beq _02308BB0 - mov r0, sl - mov r1, sb - mov r2, #0x1b - mov r3, #0x40000 - bl ov29_0230F728 -_02308BB0: - mov r0, sl - mov r1, sb - mov r2, #5 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308C38 - ldrb r0, [r6, #0xf7] - mov r5, #0 - cmp r0, #1 - beq _02308C00 - mov r0, sl - mov r1, #0xa - bl ov29_02301EAC - cmp r0, #0 - bne _02308C00 - mov r0, sl - bl LevitateIsActive - cmp r0, #0 - beq _02308C0C -_02308C00: - bl GravityIsActive - cmp r0, #0 - moveq r5, #1 -_02308C0C: - cmp r5, #0 - bne _02308C38 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F90 ; =0x022C4564 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #1 - strlth r1, [r0, #0x92] -_02308C38: - mov r0, sl - mov r1, sb - mov r2, #0xa - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308C88 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F94 ; =0x022C468C - ldrsh r1, [r1] - cmp r0, r1 - bge _02308C88 - add r0, r6, #0x100 - ldrh r3, [r0, #0x92] - ldr r1, _02308F98 ; =0x0237CA6D - mov r2, #0 - orr r3, r3, #2 - strh r3, [r0, #0x92] - strb r2, [r1] -_02308C88: - mov r0, sl - mov r1, sb - mov r2, #0x17 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308CDC - mov r0, sl - mov r1, #0x11 - bl MonsterIsType - cmp r0, #0 - beq _02308CDC - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308F9C ; =0x022C4460 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #4 - strlth r1, [r0, #0x92] -_02308CDC: - mov r0, sl - mov r1, sb - mov r2, #0x20 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308D24 - cmp r4, #0 - bne _02308D24 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FA0 ; =0x022C4550 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #8 - strlth r1, [r0, #0x92] -_02308D24: - mov r0, sl - mov r1, sb - mov r2, #0x27 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308D64 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FA4 ; =0x022C45C0 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x20 - strlth r1, [r0, #0x92] -_02308D64: - mov r0, sl - mov r1, sb - mov r2, #0x3d - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308DE0 - cmp r4, #0 - bne _02308DE0 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FA8 ; =0x022C45AC - ldrsh r1, [r1] - cmp r0, r1 - bge _02308DE0 - mov r0, #3 - bl DungeonRandInt - cmp r0, #1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x40 - strlth r1, [r0, #0x92] - blt _02308DE0 - cmp r0, #2 - add r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x10 - strlth r1, [r0, #0x92] - ldrgeh r1, [r0, #0x92] - orrge r1, r1, #0x80 - strgeh r1, [r0, #0x92] -_02308DE0: - mov r0, sl - mov r1, sb - mov r2, #0x3e - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308E20 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FAC ; =0x022C467C - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x100 - strlth r1, [r0, #0x92] -_02308E20: - mov r0, sl - mov r1, sb - mov r2, #0x44 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308E80 - ldr r1, [sb, #0xb4] - ldrsh r0, [r6, #2] - ldrsh r1, [r1, #2] - bl sub_02054EC8 - cmp r0, #0 - beq _02308E80 - cmp r4, #0 - bne _02308E80 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FB0 ; =0x022C4524 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x200 - strlth r1, [r0, #0x92] -_02308E80: - mov r2, #1 - mov r0, sl - mov r1, sb - mov r3, r2 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02308EC0 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02308FB4 ; =0x022C4638 - ldrsh r1, [r1] - cmp r0, r1 - addlt r0, r6, #0x100 - ldrlth r1, [r0, #0x92] - orrlt r1, r1, #0x400 - strlth r1, [r0, #0x92] -_02308EC0: - mov r0, sl - mov r1, sb - bl ov29_0230D654 -_02308ECC: - cmp r0, #0 - movne r0, #1 - bne _02308F64 - ldr r0, [sb, #0xb4] - ldrb r1, [r0, #0xe0] - cmp r1, #2 - bne _02308F4C - ldr r1, _02308FB8 ; =0x02353538 - ldrb r2, [r0, #0xe8] - ldr r1, [r1] - add r1, r1, r2, lsl #2 - add r1, r1, #0x12000 - ldr r4, [r1, #0xb78] - cmp r4, #0 - moveq r1, #0 - streqb r1, [r0, #0xe0] - beq _02308F4C - ldr r1, [r4, #0xb4] - ldr r2, [r0, #0xe4] - ldr r1, [r1, #0xb0] - cmp r2, r1 - movne r1, #0 - strneb r1, [r0, #0xe0] - bne _02308F4C - mov r0, r4 - mov r1, sb - bl ov29_022E45D0 - ldr r1, [r8] - mov r0, r4 - mov r2, #0xc - mov r3, #0x238 - bl ov29_0230D11C -_02308F4C: - mov r0, sl - mov r1, sb - bl ov29_0230D654 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 -_02308F64: - cmp r0, #0 -_02308F68: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02308F70: .word 0x02352AEC -_02308F74: .word 0x022C442C -_02308F78: .word 0x022C44C0 -_02308F7C: .word 0x022C4464 -_02308F80: .word 0x00000C3F -_02308F84: .word 0x022C45B4 -_02308F88: .word 0x023535DC -_02308F8C: .word 0x022C45B0 -_02308F90: .word 0x022C4564 -_02308F94: .word 0x022C468C -_02308F98: .word 0x0237CA6D -_02308F9C: .word 0x022C4460 -_02308FA0: .word 0x022C4550 -_02308FA4: .word 0x022C45C0 -_02308FA8: .word 0x022C45AC -_02308FAC: .word 0x022C467C -_02308FB0: .word 0x022C4524 -_02308FB4: .word 0x022C4638 -_02308FB8: .word 0x02353538 - arm_func_end ov29_0230863C - - arm_func_start EntityIsValid__02308FBC -EntityIsValid__02308FBC: ; 0x02308FBC - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02308FBC - - arm_func_start ApplyDamage -ApplyDamage: ; 0x02308FE0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x64 - ldr r5, [sp, #0x8c] - mov sb, #0 - mov r6, r2 - mov r7, r1 - strb sb, [r6, #0x10] - ldr r1, [r7] - mov r8, r0 - str r3, [sp, #0x10] - mov fp, sb - str sb, [sp, #0x14] - cmp r1, #1 - bne _0230902C - ldr r0, [r7, #0xb4] - ldrb r0, [r0, #0xbc] - bl ov29_022EFB04 - cmp r0, #0 - beq _0230903C -_0230902C: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_0230903C: - ldr r4, [r7, #0xb4] - ldrb r0, [r4, #6] - cmp r0, #0 - beq _0230905C - ldrb r0, [r4, #8] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x14] -_0230905C: - mov r0, r8 - mov r1, r7 - bl ov29_02307BDC - mov r0, r8 - mov r1, r7 - bl ov29_0230D440 - ldr r0, [r8] - cmp r0, #1 - ldreq r0, [r8, #0xb4] - ldreqb r0, [r0, #0xec] - cmpeq r0, #3 - ldreqb r0, [r6, #0xf] - cmpeq r0, #0 - ldreq r0, _02309F98 ; =0x022C4598 - ldreqsh r0, [r0] - streq r0, [r6] - ldr r0, [r8] - cmp r0, #1 - bne _02309134 - mov r0, r8 - mov r1, r7 - mov r2, #0x73 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - ldrne r0, [r6, #4] - cmpne r0, #4 - cmpne r0, #0xe - cmpne r0, #0 - cmpne r0, #0x17 - beq _023091A4 - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _02309F9C ; =0x00000C46 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _02309124 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _02309124 - mov r0, r8 - mov r1, r7 - bl ov29_022E576C -_02309124: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309134: - cmp r0, #6 - bne _023091A4 - mov r0, r7 - mov r1, #0x73 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, [r6, #4] - cmpne r0, #4 - cmpne r0, #0xe - cmpne r0, #0x17 - beq _023091A4 - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _02309F9C ; =0x00000C46 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _02309194 - mov r0, r7 - bl ov29_022E57A0 -_02309194: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_023091A4: - ldr r0, _02309FA0 ; =0x0000024D - cmp r5, r0 - beq _02309224 - ldr r0, [r8] - cmp r0, #1 - bne _02309224 - mov r0, r8 - mov r1, r7 - mov r2, #0xd - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02309224 - ldr r1, [r6] - ldr r0, _02309FA4 ; =0x0000270F - cmp r1, r0 - bne _02309224 - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - mov r1, r7 - mov r2, #0xc40 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r7 - bl ov29_022E576C - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309224: - ldrb r0, [r4, #0xc4] - cmp r0, #1 - bne _02309274 - cmp r5, #0x250 - beq _02309264 - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _02309FA8 ; =0x00000C41 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r7 - bl ov29_022E576C -_02309264: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309274: - ldrb r0, [r4, #0xbd] - cmp r0, #1 - cmpne r0, #5 - cmpne r0, #3 - bne _0230929C - ldrb r0, [r4, #0xbe] - cmp r0, #0x7f - bne _0230929C - mov r0, r7 - bl ov29_02307C48 -_0230929C: - ldr r0, [r8] - cmp r0, #1 - bne _023093D8 - mov r0, r8 - mov r1, r7 - mov r2, #0x23 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _023092F8 - ldrb r0, [r6, #0xc] - cmp r0, #5 - bne _023092F8 - mov r3, #0 - str r3, [sp] - ldr r2, [r6] - mov r0, r8 - mov r1, r7 - bl TryIncreaseHp - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_023092F8: - mov r0, r8 - mov r1, r7 - mov r2, #0x24 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02309348 - ldrb r0, [r6, #0xc] - cmp r0, #3 - bne _02309348 - mov r3, #0 - str r3, [sp] - ldr r2, [r6] - mov r0, r8 - mov r1, r7 - bl TryIncreaseHp - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309348: - mov r0, r8 - mov r1, r7 - mov r2, #0x55 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _02309398 - ldrb r0, [r6, #0xc] - cmp r0, #3 - bne _02309398 - mov r3, #0 - str r3, [sp] - ldr r2, [r6] - mov r0, r8 - mov r1, r7 - bl TryIncreaseHp - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309398: - mov r0, r8 - mov r1, r7 - mov r2, #0x66 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _023093D8 - ldrb r0, [r6, #0xc] - cmp r0, #5 - bne _023093D8 - mov r0, r7 - bl ov29_0231B060 - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_023093D8: - ldr sl, _02309FAC ; =0x023528A4 - b _0230944C -_023093E0: - ldrb r0, [r6, #0xc] - cmp r1, r0 - bne _02309448 - ldr r1, [sl, #4] - mov r0, r8 - and r2, r1, #0xff - str r2, [sp] - mov r2, #0 - mov r1, r7 - mov r3, r2 - bl ov29_02314D40 - cmp r0, #0 - beq _02309448 - ldr r0, [sl, #4] - cmp r0, #0x71 - mov r0, #1 - strleb r0, [r6, #0x10] - ble _02309440 - str r0, [sp] - ldr r2, [r6] - mov r0, r8 - mov r1, r7 - mov r3, #0 - bl TryIncreaseHp -_02309440: - mov r0, #0 - b _0230945C -_02309448: - add sl, sl, #8 -_0230944C: - ldrb r1, [sl] - cmp r1, #0x12 - bne _023093E0 - mov r0, #1 -_0230945C: - cmp r0, #0 - bne _023094D8 - ldrb r0, [r6, #0x10] - cmp r0, #0 - beq _023094C8 - ldr r0, [r8] - cmp r0, #1 - bne _023094AC - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _023094C8 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _023094C8 - mov r0, r8 - mov r1, r7 - bl ov29_022FB98C - b _023094C8 -_023094AC: - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _023094C8 - mov r0, r8 - mov r1, r7 - bl ov29_022FB98C -_023094C8: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_023094D8: - ldr r0, [r6] - cmp r0, #0 - ble _02309520 - mov r0, r7 - mov r1, #0x51 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02309520 - ldr r0, _02309FB0 ; =0x022C45C4 - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _02309520 - mov r0, r7 - mov r1, r7 - mov r2, #1 - mov r3, #0 - bl ov29_02317E88 -_02309520: - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _023095A0 - ldrb r0, [r6, #0xe] - cmp r0, #0 - beq _02309548 - ldr r2, _02309FB4 ; =0x00000C42 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02309548: - ldr r0, [r6, #8] - cmp r0, #0 - beq _02309568 - cmp r0, #1 - beq _0230957C - cmp r0, #3 - beq _02309590 - b _023095A0 -_02309568: - ldr r2, _02309FB8 ; =0x00000C43 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _023095A0 -_0230957C: - ldr r2, _02309FBC ; =0x00000C44 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _023095A0 -_02309590: - ldr r2, _02309FC0 ; =0x00000C45 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_023095A0: - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, [r6] - cmp r1, #0 - bne _02309650 - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _02309618 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _02309618 - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _02309608 - ldr r2, _02309FC4 ; =0x00000C47 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02309608: - mov r0, r8 - mov r1, r7 - bl ov29_022E576C - b _02309640 -_02309618: - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _02309634 - ldr r2, _02309FC4 ; =0x00000C47 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02309634: - mov r0, #0x1e - mov r1, #0x18 - bl ov29_022EA370 -_02309640: - mov r0, #1 - strb r0, [r6, #0x10] - mov r0, #0 - b _0230A918 -_02309650: - ldr r0, _02309FA4 ; =0x0000270F - cmp r1, r0 - bne _02309740 - ldr r0, [sp, #0x90] - cmp r0, #0 - beq _02309718 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _02309718 - mov r0, r7 - bl GetTileAtEntity - mov r2, #0 - mov r1, #1 - str r2, [sp] - str r1, [sp, #4] - add r1, r1, #0x2b4 - str r2, [sp, #8] - str r2, [sp, #0xc] - mov fp, r0 - mov r0, r7 - mov r3, #3 - bl ov29_022E35E4 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 - mvn r1, #0 - cmp sl, r1 - ldr r0, _02309FC8 ; =0x023535D4 - strh r1, [r0] - beq _02309718 - b _023096D4 -_023096CC: - mov r0, #0x18 - bl AdvanceFrame -_023096D4: - mov r0, sl - bl ov10_022BF964 - cmp r0, #0 - bne _023096CC - mov r0, sl - bl ov10_022BDE50 - mov r2, #0 - str r2, [sp] - mov r0, #1 - stmib sp, {r0, r2} - ldr r1, _02309FCC ; =0x000002B6 - mov r0, r7 - mov r3, #3 - str r2, [sp, #0xc] - bl ov29_022E35E4 - ldr r1, _02309FC8 ; =0x023535D4 - strh r0, [r1] -_02309718: - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _02309734 - ldr r2, _02309FD0 ; =0x00000C48 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02309734: - ldr r0, _02309FD4 ; =0x000003E7 - str r0, [r4, #0xb8] - b _02309808 -_02309740: - mov r0, #0 - bl ov29_0234B09C - ldr r1, [r6, #4] - ldr r2, [r4, #0xb8] - cmp r1, #0x1b - ldrlt r0, _02309FD8 ; =0x02353330 - movge sl, #0 - movlt r1, r1, lsl #1 - ldrlth sl, [r0, r1] - ldr r1, [r6] - ldr r0, _02309FD4 ; =0x000003E7 - add r1, r2, r1 - str r1, [r4, #0xb8] - cmp r1, r0 - strgt r0, [r4, #0xb8] - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _023097E4 - ldr r0, [r6, #4] - cmp r0, #0xe - cmpne r0, #0x17 - ldrne r0, _02309FDC ; =0x0000025F - cmpne r5, r0 - beq _023097BC - ldr r0, [r6] - mov r2, #1 - mov r1, r7 - rsb r0, r0, #0 - sub r3, r2, #2 - bl ov29_022EA718 -_023097BC: - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _02309808 - cmp sl, #0 - beq _02309808 - mov r0, r8 - mov r1, r7 - mov r2, sl - bl LogMessageByIdWithPopupCheckUserTarget - b _02309808 -_023097E4: - ldrb r0, [r4, #0x15c] - cmp r0, #0 - bne _02309808 - cmp sl, #0 - beq _02309808 - mov r0, r8 - mov r1, r7 - mov r2, sl - bl LogMessageByIdWithPopupCheckUserTarget -_02309808: - ldr r0, [r6, #4] - cmp r0, #0xe - bne _02309820 - ldrsh r0, [r4, #0x10] - cmp r0, #1 - bgt _0230991C -_02309820: - cmp fp, #0 - bne _0230991C - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _0230991C - ldrsh r1, [r8, #4] - ldrsh r0, [r7, #4] - cmp r1, r0 - ldreqsh r1, [r8, #6] - ldreqsh r0, [r7, #6] - cmpeq r1, r0 - beq _023098EC - ldr r0, [r8] - cmp r0, #1 - bne _023098EC - ldrb r0, [r4, #7] - mov sl, #0 - cmp r0, #0 - beq _023098A0 - bl sub_0204AF00 - cmp r0, #0 - beq _023098A0 - mov r0, r7 - bl ov29_022F9AF4 - cmp r0, #0 - bne _023098A0 - mov r0, r7 - mov r1, r8 - bl ov29_022E274C - cmp r0, #0 - movne sl, #1 -_023098A0: - ldrb r0, [r4, #0xf1] - cmp r0, #2 - beq _023098C0 - mov r0, r7 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - beq _023098C4 -_023098C0: - mov sl, #0 -_023098C4: - cmp sl, #0 - beq _023098E4 - add r0, r7, #4 - add r1, r8, #4 - ldr sl, [r7, #0xb4] - bl GetDirectionTowardsPosition - and r0, r0, #7 - strb r0, [sl, #0x4c] -_023098E4: - mov r0, r7 - bl UpdateAiTargetPos -_023098EC: - ldr r0, _02309FDC ; =0x0000025F - cmp r5, r0 - beq _0230991C - ldr r1, [r7, #0xb4] - mov r0, r7 - ldrb r2, [r1, #0x4c] - mov r1, #6 - bl ov29_023049A8 - mov r0, r7 - mov r1, r6 - bl ov29_022E5478 - mov sb, #1 -_0230991C: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _0230995C - ldr r0, [r6] - cmp r0, #0 - ble _0230995C - ldr r0, [r8] - cmp r0, #1 - ldreq r0, [r8, #0xb4] - ldreqb r0, [r0, #6] - cmpeq r0, #0 - bne _0230995C - ldrsh r0, [r4, #2] - bl SetMonsterFlag2 - ldrsh r0, [r4, #2] - bl SetPokemonBattled -_0230995C: - ldrsh sl, [r4, #0x10] - ldr r0, [r6] - cmp sl, r0 - subgt r0, sl, r0 - movle r0, #0 - strh r0, [r4, #0x10] - ldrb r0, [r4, #0xd5] - cmp r0, #9 - bne _023099A8 - ldrsh r0, [r4, #0x10] - cmp r0, #0 - bne _02309A28 - ldr r2, _02309FE0 ; =0x00000C49 - mov r3, #1 - mov r0, r8 - mov r1, r7 - strh r3, [r4, #0x10] - bl LogMessageByIdWithPopupCheckUserTarget - b _02309A28 -_023099A8: - ldr r0, [sp, #0x10] - cmp r0, #1 - bne _023099DC - ldrsh r0, [r4, #0x10] - cmp r0, #0 - bne _02309A28 - ldr r2, _02309FE4 ; =0x00000C4A - mov r3, #1 - mov r0, r8 - mov r1, r7 - strh r3, [r4, #0x10] - bl LogMessageByIdWithPopupCheckUserTarget - b _02309A28 -_023099DC: - mov r0, r7 - mov r1, #0x22 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02309A28 - ldr r0, _02309FE8 ; =0x022C4834 - ldr r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _02309A28 - ldrsh r0, [r4, #0x10] - cmp r0, #0 - bne _02309A28 - ldr r2, _02309FE0 ; =0x00000C49 - mov r3, #1 - mov r0, r8 - mov r1, r7 - strh r3, [r4, #0x10] - bl LogMessageByIdWithPopupCheckUserTarget -_02309A28: - bl ov29_022E81F8 - ldrsh r0, [r4, #0x10] - subs sl, sl, r0 - movmi sl, #0 - cmp sb, #0 - cmpeq fp, #0 - beq _02309A50 - mov r0, #0xa - mov r1, #0x18 - bl ov29_022EA370 -_02309A50: - mov r0, r7 - bl UpdateStatusIconFlags - ldrsh r0, [r4, #0x10] - cmp r0, #0 - beq _02309B20 - cmp sb, #0 - beq _02309A78 - mov r0, r7 - mov r1, #8 - bl ov29_02304A48 -_02309A78: - ldr r0, [r6, #4] - cmp r0, #0xe - beq _02309B04 - mov r0, r7 - mov r1, #0x17 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _02309AC4 - cmp sl, #0 - ble _02309AC4 - ldr r1, [r6] - ldr r0, _02309FA4 ; =0x0000270F - cmp r1, r0 - beq _02309AC4 - ldr r1, _02309FEC ; =0x022C45FC - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl AddExpSpecial -_02309AC4: - mov r0, r7 - mov r1, #0x50 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _02309B04 - cmp sl, #0 - ble _02309B04 - ldr r1, [r6] - ldr r0, _02309FA4 ; =0x0000270F - cmp r1, r0 - beq _02309B04 - ldr r1, _02309FEC ; =0x022C45FC - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl AddExpSpecial -_02309B04: - cmp fp, #0 - beq _02309B18 - mov r0, r7 - bl ov29_0230D7D4 - bl ov29_02336F4C -_02309B18: - mov r0, #0 - b _0230A918 -_02309B20: - ldr r0, _02309FDC ; =0x0000025F - cmp r5, r0 - bne _02309B5C - ldr r1, [r7, #0xb4] - mov r0, r7 - ldrb r2, [r1, #0x4c] - mov r1, #6 - bl ov29_023049A8 - mov r0, r7 - mov r1, r6 - bl ov29_022E5478 - mov r0, #0xa - mov r1, #0x18 - bl ov29_022EA370 - mov sb, #1 -_02309B5C: - ldrb r0, [r4, #0xef] - cmp r0, #2 - bne _02309B78 - mov r0, r8 - mov r1, r7 - mov r2, #0 - bl ov29_02306A00 -_02309B78: - cmp fp, #0 - beq _02309BA4 - mov r0, #0x14 - mov r1, #0x18 - bl ov29_022EA370 - mov r1, #2 - mov r0, r7 - strb r1, [r7, #0x22] - bl ov29_0230D7D4 - bl ov29_02336F4C - b _02309BC0 -_02309BA4: - cmp sb, #0 - beq _02309BC0 - mov r2, #1 - mov r0, #0x1e - mov r1, #0x18 - strb r2, [r7, #0x22] - bl ov29_022EA370 -_02309BC0: - mov r0, r8 - mov sb, #1 - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _02309BE8 - ldr r0, [r8] - cmp r0, #1 - bne _02309BE8 - cmp r8, r7 - movne sb, #0 -_02309BE8: - mov r0, #0 - mov r1, r8 - mov r2, r0 - strb r0, [r4, #0x156] - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r0, [r6, #4] - cmp r0, #0x13 - cmpne r0, #4 - cmpne r0, #0x14 - ldrb r0, [r4, #6] - bne _02309C50 - cmp r0, #0 - beq _02309C40 - ldr r2, _02309FF0 ; =0x00000C4B - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02309DC8 -_02309C40: - ldr r1, _02309FF0 ; =0x00000C4B - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309C50: - cmp r0, #0 - beq _02309C98 - ldrb r0, [r4, #0xbc] - cmp r0, #7 - bne _02309C7C - ldr r0, _02309FF4 ; =0x02353220 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309C7C: - ldr r0, _02309FF8 ; =0x0235321C - mov r1, sb, lsl #1 - ldrh r2, [r0, r1] - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02309DC8 -_02309C98: - ldrsh r0, [r4, #0xc] - bl GetActiveTeamMember - ldrb r1, [r4, #7] - mov r6, r0 - cmp r1, #0 - bne _02309CD4 - ldrb r0, [r4, #0x48] - bl JoinedAtRangeCheck2Veneer - cmp r0, #0 - beq _02309CEC - ldr r0, _02309FFC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75c] - cmp r0, #0 - bne _02309CEC -_02309CD4: - ldr r0, _0230A000 ; =0x02353228 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309CEC: - mov r0, r4 - bl IsExperienceLocked - cmp r0, #0 - beq _02309D3C - mov r0, r4 - bl IsSpecialStoryAlly - cmp r0, #0 - beq _02309D24 - ldr r0, _0230A004 ; =0x02353234 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309D24: - ldr r0, _0230A008 ; =0x0235322C - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309D3C: - ldrb r0, [r4, #0xbc] - cmp r0, #7 - bne _02309D60 - ldr r0, _02309FF4 ; =0x02353220 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309D60: - ldrsh r0, [r6, #8] - bl IsMonsterIdInNormalRange__022F9C68 - cmp r0, #0 - beq _02309DB4 - ldr r0, _02309FFC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75d] - cmp r0, #0 - beq _02309D9C - ldr r0, _0230A00C ; =0x02353224 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309D9C: - ldr r0, _0230A010 ; =0x02353230 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup - b _02309DC8 -_02309DB4: - ldr r0, _0230A014 ; =0x02353218 - mov r1, sb, lsl #1 - ldrh r1, [r0, r1] - mov r0, r8 - bl LogMessageByIdWithPopup -_02309DC8: - ldrb r0, [r4, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _02309DE4 - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters -_02309DE4: - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _02309F44 - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _02309F44 - ldrb r0, [r4, #0x62] - tst r0, #2 - ldreqsh r1, [r4, #0x66] - ldreq r0, _0230A018 ; =0x00000153 - cmpeq r1, r0 - bne _02309F44 - mov r0, r7 - bl ov29_022E550C - mov r0, #0 - strb r0, [r7, #0x22] - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02309FD4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r4, #0x10] - mov r2, #0 - strb r2, [r4, #0x162] - mov r0, #1 - strb r0, [r4, #0x156] - add r0, r4, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] - ldrb r0, [r4, #7] - cmp r0, #0 - ldrne r0, _02309FFC ; =0x02353538 - ldrne r1, [r0] - strneb r2, [r1, #0x799] - ldrne r0, [r0] - strneb r2, [r0, #0x78d] - add r0, r4, #0x62 - bl ItemZInit - ldrb r0, [r4, #0xd8] - cmp r0, #3 - bne _02309EC0 - mov r0, r8 - mov r1, r7 - mov r2, #3 - mov r3, #1 - bl ov29_02306728 - b _02309EDC -_02309EC0: - cmp r0, #2 - bne _02309EDC - mov r0, r8 - mov r1, r7 - mov r2, #2 - mov r3, #1 - bl ov29_02306728 -_02309EDC: - mov r0, r7 - bl ov29_023159D4 - mov r0, r4 - mov r1, #0 - bl ov29_022FDDC0 - bl ov10_022BDC68 - mov r0, r7 - bl RestorePpAllMovesSetFlags - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, #1 - mov r1, r7 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - ldr r1, _0230A01C ; =0x00000C4C - bl LogMessageByIdWithPopup - mov r0, r7 - bl ov29_0230D628 - mov r0, #0 - b _0230A918 -_02309F44: - ldrb r0, [r4, #7] - cmp r0, #0 - beq _0230A224 - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _0230A224 - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldreqsh r1, [r4, #0x66] - ldreq r0, _0230A020 ; =0x00000159 - cmpeq r1, r0 - bne _0230A224 - mov sl, #0 - mov sb, sl - ldr r6, _02309FFC ; =0x02353538 - b _0230A090 - .align 2, 0 -_02309F98: .word 0x022C4598 -_02309F9C: .word 0x00000C46 -_02309FA0: .word 0x0000024D -_02309FA4: .word 0x0000270F -_02309FA8: .word 0x00000C41 -_02309FAC: .word 0x023528A4 -_02309FB0: .word 0x022C45C4 -_02309FB4: .word 0x00000C42 -_02309FB8: .word 0x00000C43 -_02309FBC: .word 0x00000C44 -_02309FC0: .word 0x00000C45 -_02309FC4: .word 0x00000C47 -_02309FC8: .word 0x023535D4 -_02309FCC: .word 0x000002B6 -_02309FD0: .word 0x00000C48 -_02309FD4: .word 0x000003E7 -_02309FD8: .word 0x02353330 -_02309FDC: .word 0x0000025F -_02309FE0: .word 0x00000C49 -_02309FE4: .word 0x00000C4A -_02309FE8: .word 0x022C4834 -_02309FEC: .word 0x022C45FC -_02309FF0: .word 0x00000C4B -_02309FF4: .word 0x02353220 -_02309FF8: .word 0x0235321C -_02309FFC: .word 0x02353538 -_0230A000: .word 0x02353228 -_0230A004: .word 0x02353234 -_0230A008: .word 0x0235322C -_0230A00C: .word 0x02353224 -_0230A010: .word 0x02353230 -_0230A014: .word 0x02353218 -_0230A018: .word 0x00000153 -_0230A01C: .word 0x00000C4C -_0230A020: .word 0x00000159 -_0230A024: - ldr r0, [r6] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] - mov r0, sl - bl EntityIsValid__02308FBC - cmp r0, #0 - cmpne sl, r7 - beq _0230A08C - mov r0, r7 - mov r1, sl - bl ov29_022E274C - cmp r0, #0 - beq _0230A08C - ldrsh r1, [sl, #4] - ldrsh r0, [r7, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _0230A08C - ldrsh r1, [sl, #6] - ldrsh r0, [r7, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _0230A098 -_0230A08C: - add sb, sb, #1 -_0230A090: - cmp sb, #4 - blt _0230A024 -_0230A098: - cmp sb, #4 - beq _0230A224 - mov r0, r7 - bl ov29_022E550C - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrh r2, [sl, #4] - ldrh r1, [sl, #6] - mov r0, sl - strh r2, [sp, #0x18] - strh r1, [sp, #0x1a] - mov r2, r7 - mov r1, #0x260 - bl HandleFaint - ldrsh r1, [sp, #0x18] - ldrsh r2, [sp, #0x1a] - mov r0, r7 - mov r3, #1 - bl ov29_022F85F0 - mov r0, r7 - mov r1, #0 - bl ov29_022E1A40 - mov r0, #0 - strb r0, [r7, #0x22] - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02309FD4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r7 - strh r1, [r4, #0x10] - bl ov29_022E66D8 - mov r2, #0 - strb r2, [r4, #0x162] - mov r0, #1 - strb r0, [r4, #0x156] - add r0, r4, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] - ldrb r0, [r4, #7] - cmp r0, #0 - ldrne r0, _02309FFC ; =0x02353538 - ldrne r1, [r0] - strneb r2, [r1, #0x799] - ldrne r0, [r0] - strneb r2, [r0, #0x78d] - add r0, r4, #0x62 - bl ItemZInit - ldrb r0, [r4, #0xd8] - cmp r0, #3 - bne _0230A190 - mov r0, r8 - mov r1, r7 - mov r2, #3 - mov r3, #1 - bl ov29_02306728 - b _0230A1AC -_0230A190: - cmp r0, #2 - bne _0230A1AC - mov r0, r8 - mov r1, r7 - mov r2, #2 - mov r3, #1 - bl ov29_02306728 -_0230A1AC: - mov r0, r7 - bl ov29_023159D4 - mov r0, r4 - mov r1, #0 - bl ov29_022FDDC0 - bl ov10_022BDC68 - mov r0, r7 - bl RestorePpAllMovesSetFlags - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, sl - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - ldr r1, _0230A920 ; =0x00000C4D - bl LogMessageByIdWithPopup - mov r0, r7 - bl ov29_0230D628 - mov r0, #0 - b _0230A918 -_0230A224: - mov r0, r7 - mov r1, #0x16 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230A5E0 - ldrb r0, [r4, #0x62] - mov r6, #0 - mov sb, r6 - tst r0, #1 - movne r0, #1 - moveq r0, r6 - tst r0, #0xff - beq _0230A29C - mov r0, r7 - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - bne _0230A29C - ldrb r0, [r4, #0x62] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0230A29C - ldrsh r0, [r4, #0x66] - cmp r0, #0x49 - addeq r6, r4, #0x62 - beq _0230A29C - cmp r0, #0x69 - addeq sb, r4, #0x62 -_0230A29C: - cmp r6, #0 - ldreqb r0, [r4, #6] - cmpeq r0, #0 - bne _0230A330 - ldr r0, _0230A924 ; =0x020AF6B8 - mov sl, #0 - ldr ip, [r0] - mov lr, sl - mov r1, #1 - mov r0, #6 - b _0230A328 -_0230A2C8: - mul r2, sl, r0 - ldr r3, [ip, #0x384] - add fp, r3, r2 - ldrb r2, [r3, r2] - tst r2, #1 - movne r3, r1 - moveq r3, lr - tst r3, #0xff - beq _0230A324 - tst r2, #8 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - ldreqb r2, [fp, #1] - cmpeq r2, #0 - bne _0230A324 - ldrsh r2, [fp, #4] - cmp r2, #0x49 - moveq r6, fp - beq _0230A330 - cmp sb, #0 - cmpeq r2, #0x69 - moveq sb, fp -_0230A324: - add sl, sl, #1 -_0230A328: - cmp sl, #0x32 - blt _0230A2C8 -_0230A330: - cmp r6, #0 - beq _0230A45C - mov r0, r7 - bl ov29_022FBD24 - mov r0, r7 - bl ov29_022E550C - mov r0, r6 - bl ov29_0230D688 - mov r0, #0 - strb r0, [r7, #0x22] - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02309FD4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [r4, #0x10] - mov r2, #0 - strb r2, [r4, #0x162] - mov r0, #1 - strb r0, [r4, #0x156] - add r0, r4, #0x100 - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] - ldrb r0, [r4, #7] - cmp r0, #0 - ldrne r0, _02309FFC ; =0x02353538 - ldrne r1, [r0] - strneb r2, [r1, #0x799] - ldrne r0, [r0] - strneb r2, [r0, #0x78d] - ldrb r0, [r4, #0xd8] - cmp r0, #3 - bne _0230A3D8 - mov r0, r8 - mov r1, r7 - mov r2, #3 - mov r3, #1 - bl ov29_02306728 - b _0230A3F4 -_0230A3D8: - cmp r0, #2 - bne _0230A3F4 - mov r0, r8 - mov r1, r7 - mov r2, #2 - mov r3, #1 - bl ov29_02306728 -_0230A3F4: - mov r0, r7 - bl ov29_023159D4 - mov r0, r4 - mov r1, #0 - bl ov29_022FDDC0 - bl ov10_022BDC68 - mov r0, r7 - bl RestorePpAllMovesSetFlags - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, #1 - mov r1, r7 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - ldr r1, _0230A01C ; =0x00000C4C - bl LogMessageByIdWithPopup - mov r0, r7 - bl ov29_0230D628 - mov r0, #0 - b _0230A918 -_0230A45C: - ldr r0, _02309FFC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _0230A5E0 - cmp sb, #0 - beq _0230A5E0 - bl ov29_022EAF20 - ldrb r1, [r4, #0xd8] - mov r6, r0 - cmp r1, #2 - bne _0230A4A0 - ldrb r2, [r4, #0xd8] - mov r0, r7 - mov r1, r7 - mov r3, #0 - bl ov29_02306728 -_0230A4A0: - mov r0, #0 - mov r1, #0x69 - bl ov29_02344B9C - mov r0, #1 - mov r1, #0x49 - bl ov29_02344B9C - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - bl ov29_022EFB20 - mov r0, r7 - bl ov29_022E550C - mov r0, sb - bl ov29_0230D688 - mov r0, #0 - strb r0, [r7, #0x22] - mov r0, #1 - strb r0, [r4, #0x23d] - mov r0, r7 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r7 - bl ov29_02304830 - mov r0, #1 - mov r1, r7 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - ldr r1, _0230A01C ; =0x00000C4C - bl LogMessageByIdWithPopup - mov r0, #0xa - bl ov29_0234BA54 - mov r0, #0 - bl ov29_0234B1A4 - mov r0, #1 - bl ov29_022F0534 - ldr r0, _0230A928 ; =0x00000C6A - bl ov29_022F0780 - mov r0, r7 - mov r1, #0xb - bl ov29_02304830 - ldr r0, _0230A92C ; =0x00000C6B - mov r1, r7 - mov r2, #0 - bl ov29_022F0604 - mov r0, #4 - bl ov29_022EAF34 - mov r0, r7 - bl ov29_022F0518 - mov r0, r7 - mov r1, #6 - bl ov29_02304830 - ldr r0, _0230A930 ; =0x00000C6C - bl ov29_022F0780 - bl ov29_022F05E4 - mov r0, #1 - bl ov29_022EFB84 - mov r0, #1 - strb r0, [r7, #0x22] - mov r0, #0 - strb r0, [r4, #0x23d] - mov r0, r8 - ldr r1, _0230A934 ; =0x00000C6D - bl LogMessageByIdWithPopup - mov r0, #0xa - bl ov29_0234BA54 - mov r0, #0 - bl ov29_022F0534 - ldr r0, _02309FFC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd6] - bl ov29_022EAD00 - bl ov29_022EAE14 - mov r0, r6 - bl ov29_022EAF34 - mov r0, r7 - bl ov29_0230D628 -_0230A5E0: - ldrb r0, [r4, #7] - cmp r0, #0 - bne _0230A69C - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230A690 - ldrb r0, [r4, #6] - cmp r0, #0 - beq _0230A67C - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _0230A648 - mov r0, r4 - bl ov29_022FBDE0 - cmp r0, #0 - beq _0230A648 - ldrb r0, [r4, #0x62] - tst r0, #0x40 - bicne r1, r0, #0x40 - andne r0, r1, #0xff - orrne r0, r0, #0x80 - strneb r0, [r4, #0x62] -_0230A648: - mov r0, r7 - add r1, r7, #4 - add r2, r4, #0x62 - mov r3, #1 - bl ov29_02345A3C - cmp r0, #0 - beq _0230A684 - ldrb r0, [r4, #0x62] - tst r0, #0x80 - beq _0230A684 - mov r0, #1 - bl ov29_0234969C - b _0230A684 -_0230A67C: - add r0, r4, #0x62 - bl sub_0200FB54 -_0230A684: - add r0, r4, #0x62 - bl ItemZInit - b _0230A69C -_0230A690: - mov r0, r8 - mov r1, r7 - bl ov29_0230F9D8 -_0230A69C: - ldrb r0, [r4, #0x100] - mov r6, #0 - cmp r0, #0 - ldrne r0, _02309FFC ; =0x02353538 - ldrne r1, _02309FD4 ; =0x000003E7 - ldrne r0, [r0] - addne r0, r0, #0x700 - strneh r1, [r0, #0x96] - ldr r0, [r8] - cmp r0, #1 - bne _0230A7FC - ldrsh r0, [r4, #2] - ldrb r1, [r4, #0xa] - ldr sl, [r8, #0xb4] - bl GetExp - mov sb, r0 - mov r0, r4 - bl ov29_02303E0C - cmp r0, #0 - bne _0230A7FC - ldrb r0, [r4, #0x100] - cmp r0, #0 - beq _0230A714 - add r0, r4, #0x100 - ldrsh r2, [r0, #0x68] - mov r0, #0xc - ldr r1, _0230A938 ; =0x022C593C - smulbb r0, r2, r0 - ldrsh sb, [r1, r0] - b _0230A740 -_0230A714: - ldrb r0, [r4, #0x108] - cmp r0, #0 - addeq r0, sb, sb, lsr #31 - moveq sb, r0, asr #1 - beq _0230A738 - cmp r0, #2 - addeq r0, sb, sb, lsl #1 - addeq r0, r0, r0, lsr #31 - moveq sb, r0, asr #1 -_0230A738: - cmp sb, #0 - moveq sb, #1 -_0230A740: - ldrb r0, [r4, #0xfd] - cmp r0, #0 - movne r0, #1 - strneb r0, [sl, #0x155] - ldr r0, [sp, #0x88] - cmp r0, #1 - bne _0230A7FC - ldrb r0, [sl, #6] - cmp r0, #0 - bne _0230A7D4 - ldrb r0, [r4, #6] - cmp r0, #0 - beq _0230A7FC - mov r0, r8 - mov r1, r8 - mov r2, sb - bl AddExpSpecial - ldr r6, _02309FFC ; =0x02353538 - mov r4, #0 -_0230A78C: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] - mov r0, sl - bl EntityIsValid__02308FBC - cmp r0, #0 - cmpne sl, r8 - beq _0230A7C0 - mov r0, r8 - mov r1, sl - mov r2, sb - bl AddExpSpecial -_0230A7C0: - add r4, r4, #1 - cmp r4, #4 - blt _0230A78C - mov r6, #1 - b _0230A7FC -_0230A7D4: - ldr r0, _02309FFC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl CanEnemyEvolve - cmp r0, #0 - movne r1, #1 - ldrne r0, _02309FFC ; =0x02353538 - strneb r1, [sl, #0x153] - ldrne r0, [r0] - strneb r1, [r0, #0xf] -_0230A7FC: - mov r0, r8 - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _0230A824 - ldr r0, [r8] - cmp r0, #1 - ldreq r0, [r8, #0xb4] - ldreqb r0, [r0, #7] - cmpeq r0, #0 - moveq r6, #0 -_0230A824: - cmp r6, #0 - beq _0230A8CC - add r0, sp, #0x1c - mov r1, r7 - bl ov29_022F9058 - mov r0, r8 - mov r1, r7 - bl ov29_0230DBD0 - cmp r0, #0 - beq _0230A8A8 - add r2, sp, #0x1c - mov r0, r8 - mov r1, r7 - bl ov29_0230E064 - cmp r0, #0 - bne _0230A898 - mov r0, r7 - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _0230A8F4 - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl ov29_0230AA0C - mov r0, r7 - mov r2, r8 - mov r1, #0x234 - bl HandleFaint - b _0230A8F4 -_0230A898: - ldr r0, _0230A93C ; =0x0237CA6C - mov r1, #1 - strb r1, [r0] - b _0230A8F4 -_0230A8A8: - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl ov29_0230AA0C - mov r0, r7 - mov r1, r5 - mov r2, r8 - bl HandleFaint - b _0230A8F4 -_0230A8CC: - mov r0, r8 - mov r1, r7 - mov r2, r5 - bl ov29_0230AA0C - mov r0, r8 - bl ov29_022ECD84 - mov r0, r7 - mov r1, r5 - mov r2, r8 - bl HandleFaint -_0230A8F4: - ldr r0, _0230A93C ; =0x0237CA6C - ldrb r0, [r0] - cmp r0, #0 - bne _0230A914 - ldr r0, [sp, #0x14] - cmp r0, #0 - beq _0230A914 - bl ov29_0233847C -_0230A914: - mov r0, #1 -_0230A918: - add sp, sp, #0x64 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230A920: .word 0x00000C4D -_0230A924: .word 0x020AF6B8 -_0230A928: .word 0x00000C6A -_0230A92C: .word 0x00000C6B -_0230A930: .word 0x00000C6C -_0230A934: .word 0x00000C6D -_0230A938: .word 0x022C593C -_0230A93C: .word 0x0237CA6C - arm_func_end ApplyDamage - - arm_func_start DefenderAbilityIsActive__0230A940 -DefenderAbilityIsActive__0230A940: ; 0x0230A940 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _0230A984 - bl IsMonster__0230A994 - cmp r0, #0 - cmpne r4, #0 - beq _0230A984 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0230A984: - mov r0, r6 - mov r1, r5 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end DefenderAbilityIsActive__0230A940 - - arm_func_start IsMonster__0230A994 -IsMonster__0230A994: ; 0x0230A994 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__0230A994 - - arm_func_start ExclusiveItemEffectIsActive__0230A9B8 -ExclusiveItemEffectIsActive__0230A9B8: ; 0x0230A9B8 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__0230A9B8 - - arm_func_start ItemIsActive__0230A9DC -ItemIsActive__0230A9DC: ; 0x0230A9DC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__0230A9DC - - arm_func_start ov29_0230AA0C -ov29_0230AA0C: ; 0x0230AA0C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r4, r2 - mov r2, #0x76 - mov r3, #1 - mov r6, r0 - mov r5, r1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230AA78 - ldr r0, _0230AA84 ; =0x022C4594 - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - ldrne ip, _0230AA88 ; =0x0000026F - cmpne r4, ip - beq _0230AA78 - mov r0, #0 - str r0, [sp] - mov r0, r6 - mov r1, r5 - add r2, r5, #4 - mov r3, #1 - str ip, [sp, #4] - bl ov29_02320788 - mov r0, #1 - b _0230AA7C -_0230AA78: - mov r0, #0 -_0230AA7C: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230AA84: .word 0x022C4594 -_0230AA88: .word 0x0000026F - arm_func_end ov29_0230AA0C - - arm_func_start ov29_0230AA8C -ov29_0230AA8C: ; 0x0230AA8C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r3, _0230AB4C ; =0x02352838 - mov sl, r0 - ldrh r4, [r3] - ldrh r3, [r3, #2] - mov sb, r1 - mov r8, r2 - strh r4, [sp] - strh r3, [sp, #2] - bl ov29_0230AB58 - ldr fp, _0230AB50 ; =0x02353538 - mov r7, r0 - mov r6, #0 - mov r5, #1 - add r4, sp, #0 -_0230AAC8: - cmp r7, #0 - bne _0230AB04 - mov r0, r8 - bl ov29_0230ABF0 - cmp r0, #0 - beq _0230AB04 - mov r0, sl - mov r1, sb - mov r2, r6 - bl ov29_0230AC04 - cmp r0, #0 - ldrne r1, [fp] - movne r0, #0 - strneb r5, [r1, #0x1d4] - bne _0230AB18 -_0230AB04: - mov r0, sl - mov r1, sb - mov r2, r6 - mov r3, r8 - bl GetTypeMatchup -_0230AB18: - add r1, r6, #1 - mov r1, r1, lsl #0x10 - mov r2, r6, lsl #1 - mov r6, r1, asr #0x10 - strh r0, [r4, r2] - cmp r6, #2 - blt _0230AAC8 - ldrsh r2, [sp] - ldr r0, _0230AB54 ; =0x022C4D14 - ldrsh r1, [sp, #2] - add r0, r0, r2, lsl #4 - ldr r0, [r0, r1, lsl #2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230AB4C: .word 0x02352838 -_0230AB50: .word 0x02353538 -_0230AB54: .word 0x022C4D14 - arm_func_end ov29_0230AA8C - - arm_func_start ov29_0230AB58 -ov29_0230AB58: ; 0x0230AB58 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, #0 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r5, #0x57 - mov fp, r6 - mov r4, #1 - b _0230ABDC -_0230AB7C: - mov r0, sl - mov r1, r5 - ldr r7, [sb, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - beq _0230ABB4 - add r0, r7, r6 - ldrb r0, [r0, #0x5e] - cmp r0, #0xe - bne _0230ABB4 - cmp r8, #1 - cmpne r8, #7 - moveq r0, r4 - beq _0230ABB8 -_0230ABB4: - mov r0, fp -_0230ABB8: - cmp r0, #0 - ldrne r1, _0230ABEC ; =0x02353538 - movne r0, #1 - ldrne r1, [r1] - strneb r0, [r1, #0x1cc] - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0230ABDC: - cmp r6, #2 - blt _0230AB7C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230ABEC: .word 0x02353538 - arm_func_end ov29_0230AB58 - - arm_func_start ov29_0230ABF0 -ov29_0230ABF0: ; 0x0230ABF0 - cmp r0, #1 - cmpne r0, #7 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end ov29_0230ABF0 - - arm_func_start ov29_0230AC04 -ov29_0230AC04: ; 0x0230AC04 - stmdb sp!, {r3, lr} - ldr r3, [r1, #0xb4] - add r1, r3, r2 - ldrb r1, [r1, #0x5e] - cmp r1, #0xe - bne _0230AC50 - ldrb r1, [r3, #0xfe] - cmp r1, #0 - bne _0230AC38 - mov r1, #0x45 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230AC40 -_0230AC38: - mov r0, #1 - b _0230AC44 -_0230AC40: - mov r0, #0 -_0230AC44: - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0230AC50: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_0230AC04 - - arm_func_start GetTypeMatchup -GetTypeMatchup: ; 0x0230AC58 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - ldr r4, [r7, #0xb4] - mov r6, r2 - ldrb r1, [r4, #0xf5] - mov r5, r3 - cmp r1, #1 - beq _0230AC88 - mov r1, #0x46 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230ACA0 -_0230AC88: - cmp r5, #0xb - addeq r0, r4, r6 - ldreqb r0, [r0, #0x5e] - cmpeq r0, #0x10 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0230ACA0: - cmp r5, #9 - bne _0230ACE0 - bl GravityIsActive - cmp r0, #0 - beq _0230ACCC - add r0, r4, r6 - ldrb r0, [r0, #0x5e] - cmp r0, #0xa - bne _0230ACE0 - mov r0, #2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230ACCC: - mov r0, r7 - bl HasConditionalGroundImmunity - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0230ACE0: - ldr r1, _0230AD00 ; =0x022C56B0 - mov r0, #0x24 - mla r0, r5, r0, r1 - add r1, r4, r6 - ldrb r1, [r1, #0x5e] - mov r1, r1, lsl #1 - ldrsh r0, [r1, r0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230AD00: .word 0x022C56B0 - arm_func_end GetTypeMatchup - - arm_func_start ov29_0230AD04 -ov29_0230AD04: ; 0x0230AD04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x64 - ldr r5, _0230B774 ; =0x02352838 - mov sl, r1 - ldr r4, [r5, #0x1c] - ldr r5, [r5, #0x20] - ldr r8, [sp, #0x88] - ldr r1, [sp, #0x90] - ldr r7, [sp, #0x8c] - str r1, [sp, #0x90] - ldr r6, [sl, #0xb4] - mov r1, #1 - mov fp, r0 - mov sb, r2 - str r3, [sp, #4] - str r4, [sp, #0x34] - str r5, [sp, #0x38] - bl IntToFixedPoint64 - mov r0, #0 - str r0, [sp, #0x30] - strb r0, [r7, #0xe] - ldr r1, [sp, #0x30] - mov r0, sb - strb r1, [r7, #0xf] - bl EntityIsValid__02308FBC - cmp r0, #0 - moveq r0, #1 - beq _0230B76C - mov r0, r8 - bl ov29_0230ABF0 - str r0, [sp, #0x2c] - mov r0, sl - mov r1, sb - mov r2, #0x35 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - cmpne r8, #0 - movne r0, #1 - strne r0, [sp, #0x30] - mov r3, #2 - mov r0, sl - mov r1, sb - mov r2, r8 - str r3, [r7, #8] - bl ov29_0230AB58 - ldr r3, _0230B778 ; =0x022C4820 - str r0, [sp, #0x28] - ldr r0, [r3] - ldr r2, _0230B77C ; =0x022C4824 - str r0, [sp, #0x24] - ldr r0, [r2] - ldr r1, _0230B780 ; =0x022C482C - str r0, [sp, #0x20] - ldr r0, [r1] - ldr r1, _0230B784 ; =0x022C4758 - str r0, [sp, #0x1c] - ldr r0, _0230B788 ; =0x022C474C - mov r4, #0 - ldr r0, [r0] - str r0, [sp, #0x18] - ldr r0, [r1] - ldr r1, _0230B78C ; =0x022C481C - str r0, [sp, #0x14] - ldr r0, _0230B790 ; =0x022C4810 - ldr r0, [r0] - str r0, [sp, #0x10] - ldr r0, [r1] - str r0, [sp, #0xc] - ldr r0, _0230B794 ; =0x022C4818 - ldr r0, [r0] - str r0, [sp, #8] - b _0230AF8C -_0230AE28: - ldr r0, [sp, #0x90] - cmp r0, #0 - bne _0230AE90 - mov r0, sl - mov r1, #0x3b - bl IqSkillIsEnabled - cmp r0, #0 - bne _0230AE5C - mov r0, sb - mov r1, #0x3b - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230AE90 -_0230AE5C: - ldr r1, [sp, #0x24] - add r0, sp, #0x44 - bl FixedPoint32To64 - ldr r1, [sp, #0x20] - add r0, sp, #0x4c - bl FixedPoint32To64 - ldr r1, [sp, #0x1c] - add r0, sp, #0x54 - bl FixedPoint32To64 - ldr r1, [sp, #0x18] - add r0, sp, #0x5c - bl FixedPoint32To64 - b _0230AEC0 -_0230AE90: - ldr r1, [sp, #0x14] - add r0, sp, #0x44 - bl FixedPoint32To64 - ldr r1, [sp, #0x10] - add r0, sp, #0x4c - bl FixedPoint32To64 - ldr r1, [sp, #0xc] - add r0, sp, #0x54 - bl FixedPoint32To64 - ldr r1, [sp, #8] - add r0, sp, #0x5c - bl FixedPoint32To64 -_0230AEC0: - mov r0, fp - bl FixedPoint64IsZero - cmp r0, #0 - bne _0230AF94 - ldr r0, [sp, #0x28] - cmp r0, #0 - bne _0230AF1C - ldr r0, [sp, #0x2c] - cmp r0, #0 - beq _0230AF1C - mov r0, sl - mov r1, sb - mov r2, r4, lsl #0x10 - mov r2, r2, asr #0x10 - bl ov29_0230AC04 - cmp r0, #0 - beq _0230AF1C - ldr r0, _0230B798 ; =0x02353538 - mov r5, #0 - ldr r1, [r0] - mov r0, #1 - strb r0, [r1, #0x1d4] - b _0230AF38 -_0230AF1C: - mov r0, sl - mov r1, sb - mov r2, r4, lsl #0x10 - mov r2, r2, asr #0x10 - mov r3, r8 - bl GetTypeMatchup - mov r5, r0 -_0230AF38: - mov r0, sl - mov r1, #0x3b - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230AF64 - add r2, sp, #0x44 - mov r0, fp - mov r1, fp - add r2, r2, r5, lsl #3 - bl MultiplyFixedPoint64 - b _0230AF80 -_0230AF64: - cmp r5, #2 - beq _0230AF80 - add r2, sp, #0x44 - mov r0, fp - mov r1, fp - add r2, r2, r5, lsl #3 - bl MultiplyFixedPoint64 -_0230AF80: - add r0, sp, #0x34 - str r5, [r0, r4, lsl #2] - add r4, r4, #1 -_0230AF8C: - cmp r4, #2 - blt _0230AE28 -_0230AF94: - ldr r0, _0230B798 ; =0x02353538 - ldr r4, [sp, #0x34] - ldr r2, [r0] - ldr r1, _0230B79C ; =0x022C4D14 - strb r4, [r2, #0x18c] - ldr r3, [sp, #0x38] - ldr r2, [r0] - add r1, r1, r4, lsl #4 - ldr r0, [r1, r3, lsl #2] - strb r3, [r2, #0x18d] - cmp r0, #3 - str r0, [r7, #8] - moveq r4, #1 - beq _0230AFEC - ldr r0, [sp, #0x30] - mov r4, #0 - cmp r0, #0 - ldrne r0, _0230B774 ; =0x02352838 - ldrne r1, [r0, #0x3c] - ldrne r0, [r0, #0x40] - strne r1, [fp] - strne r0, [fp, #4] -_0230AFEC: - mov r0, sl - mov r1, #0x50 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B02C - ldr r0, [r7, #8] - cmp r0, #1 - bne _0230B02C - ldr r1, _0230B7A0 ; =0x022C47C0 - add r0, sp, #0x3c - ldr r1, [r1] - bl FixedPoint32To64 - add r2, sp, #0x3c - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 -_0230B02C: - mov r0, sl - mov r1, sb - mov r2, #0x6c - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - bne _0230B064 - mov r0, sl - mov r1, sb - mov r2, #0x6e - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230B080 -_0230B064: - ldr r0, [r7, #8] - cmp r0, #3 - bne _0230B080 - ldr r2, _0230B7A4 ; =0x02352864 - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 -_0230B080: - mov r0, sb - mov r1, #0x5a - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230B0A4 - ldr r2, _0230B7A8 ; =0x0235283C - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 -_0230B0A4: - ldr r0, [sp, #0x90] - cmp r0, #0 - bne _0230B104 - mov r0, sl - mov r1, #0x64 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B104 - ldr r0, _0230B7AC ; =0x022C455C - ldrsh r1, [r0] - ldr r0, [sp, #4] - cmp r0, r1 - bgt _0230B104 - ldr r2, _0230B7B0 ; =0x02352844 - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 - mov r1, #0x64 - ldr r2, _0230B7B4 ; =0x00000C3E - mov r0, sl - str r1, [sp] - mov r1, sb - mov r3, #2 - bl ov29_0234B250 -_0230B104: - cmp r8, #2 - cmpne r8, #6 - bne _0230B14C - mov r0, sl - mov r1, sb - mov r2, #2 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230B14C - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7A8 ; =0x0235283C - ldr r3, [r0] - mov r5, #1 - mov r0, fp - mov r1, fp - strb r5, [r3, #0x1c5] - bl MultiplyFixedPoint64 -_0230B14C: - cmp r8, #2 - bne _0230B198 - mov r0, sl - mov r1, sb - bl ov29_02313C74 - cmp r0, #0 - beq _0230B198 - ldr r1, _0230B798 ; =0x02353538 - mov r0, fp - ldr r2, [r1] - mov r3, #1 - mov r1, #0 - strb r3, [r2, #0x1c6] - bl IntToFixedPoint64 - mov r4, #0 - str r4, [r7, #8] - strb r4, [r7, #0xe] - mov r0, #1 - strb r0, [r7, #0xf] -_0230B198: - cmp r8, #2 - bne _0230B1DC - mov r0, sl - mov r1, sb - mov r2, #0x5f - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230B1DC - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7A8 ; =0x0235283C - ldr r3, [r0] - mov r5, #1 - mov r0, fp - mov r1, fp - strb r5, [r3, #0x1c5] - bl MultiplyFixedPoint64 -_0230B1DC: - cmp r8, #9 - bne _0230B248 - mov r0, sl - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - bne _0230B208 - mov r0, sb - bl LevitateIsActive - cmp r0, #0 - bne _0230B218 -_0230B208: - mov r0, sb - bl HasConditionalGroundImmunity - cmp r0, #0 - beq _0230B248 -_0230B218: - ldr r1, _0230B798 ; =0x02353538 - mov r0, fp - ldr r2, [r1] - mov r3, #1 - mov r1, #0 - strb r3, [r2, #0x1c7] - bl IntToFixedPoint64 - mov r4, #0 - str r4, [r7, #8] - strb r4, [r7, #0xe] - mov r0, #1 - strb r0, [r7, #0xf] -_0230B248: - cmp r8, #3 - bne _0230B2F4 - mov r0, sl - mov r1, #0x10 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B2F4 - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - ldr r0, _0230B7B8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r6, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r0, #1 - movgt r0, #0 - and r7, r0, #0xff - mov r0, r6 - mov r2, r7 - mov r1, #0x80 - bl ov29_023023C0 - mov r5, r0 - cmp r7, #0 - beq _0230B2D4 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7BC ; =0x0235284C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c8] - bl MultiplyFixedPoint64 -_0230B2D4: - cmp r5, #0 - beq _0230B2F4 - mov r0, sl - bl ov29_022E6214 - ldr r2, _0230B7C0 ; =0x00000C4F - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0230B2F4: - cmp r8, #4 - bne _0230B3A0 - mov r0, sl - mov r1, #0x1a - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B3A0 - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - ldr r0, _0230B7B8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r6, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r0, #1 - movgt r0, #0 - and r7, r0, #0xff - mov r0, r6 - mov r2, r7 - mov r1, #2 - bl ov29_023023C0 - mov r5, r0 - cmp r7, #0 - beq _0230B380 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7BC ; =0x0235284C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c9] - bl MultiplyFixedPoint64 -_0230B380: - cmp r5, #0 - beq _0230B3A0 - mov r0, sl - bl ov29_022E61C8 - mov r0, sl - mov r1, sb - mov r2, #0xc50 - bl LogMessageByIdWithPopupCheckUserTarget -_0230B3A0: - cmp r8, #0xc - bne _0230B44C - mov r0, sl - mov r1, #0x43 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B44C - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - ldr r0, _0230B7B8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r6, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r0, #1 - movgt r0, #0 - and r7, r0, #0xff - mov r0, r6 - mov r2, r7 - mov r1, #0x10 - bl ov29_023023C0 - mov r5, r0 - cmp r7, #0 - beq _0230B42C - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7BC ; =0x0235284C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1ca] - bl MultiplyFixedPoint64 -_0230B42C: - cmp r5, #0 - beq _0230B44C - mov r0, sl - bl ov29_022E64C4 - ldr r2, _0230B7C4 ; =0x00000C51 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0230B44C: - cmp r8, #2 - bne _0230B534 - mov r0, sl - mov r1, #0x46 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B4F8 - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - ldr r0, _0230B7B8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r6, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r0, #1 - movgt r0, #0 - and r7, r0, #0xff - mov r0, r6 - mov r2, r7 - mov r1, #0x20 - bl ov29_023023C0 - mov r5, r0 - cmp r7, #0 - beq _0230B4D8 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7BC ; =0x0235284C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1cb] - bl MultiplyFixedPoint64 -_0230B4D8: - cmp r5, #0 - beq _0230B4F8 - mov r0, sl - bl ov29_022E6510 - ldr r2, _0230B7C8 ; =0x00000C52 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0230B4F8: - mov r0, sl - mov r1, sb - mov r2, #0x55 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230B534 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7B0 ; =0x02352844 - ldr r3, [r0] - mov r5, #1 - mov r0, fp - mov r1, fp - strb r5, [r3, #0x1cb] - bl MultiplyFixedPoint64 -_0230B534: - ldrb r0, [r6, #0xbf] - cmp r0, #1 - bne _0230B560 - ldr r1, _0230B7CC ; =0x022C4744 - add r0, sp, #0x3c - ldr r1, [r1] - bl FixedPoint32To64 - add r2, sp, #0x3c - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 -_0230B560: - mov r0, fp - bl FixedPoint64IsZero - cmp r0, #0 - bne _0230B5CC - mov r0, sl - mov r1, r8 - bl MonsterIsType - cmp r0, #0 - beq _0230B5CC - ldr r1, _0230B798 ; =0x02353538 - mov r0, sl - ldr r2, [r1] - mov r3, #1 - mov r1, #0x63 - strb r3, [r2, #0x1cf] - bl AbilityIsActive2 - cmp r0, #0 - beq _0230B5BC - ldr r2, _0230B7BC ; =0x0235284C - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 - b _0230B5CC -_0230B5BC: - ldr r2, _0230B7B0 ; =0x02352844 - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 -_0230B5CC: - mov r0, sl - bl GetApparentWeather - mov r5, r0 - cmp r5, #1 - bne _0230B634 - cmp r8, #2 - bne _0230B60C - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7B0 ; =0x02352844 - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c4] - bl MultiplyFixedPoint64 - b _0230B634 -_0230B60C: - cmp r8, #3 - bne _0230B634 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7A8 ; =0x0235283C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c4] - bl MultiplyFixedPoint64 -_0230B634: - cmp r5, #4 - bne _0230B690 - cmp r8, #2 - bne _0230B668 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7A8 ; =0x0235283C - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c3] - bl MultiplyFixedPoint64 - b _0230B690 -_0230B668: - cmp r8, #3 - bne _0230B690 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7B0 ; =0x02352844 - ldr r3, [r0] - mov r7, #1 - mov r0, fp - mov r1, fp - strb r7, [r3, #0x1c3] - bl MultiplyFixedPoint64 -_0230B690: - cmp r5, #3 - bne _0230B6C0 - cmp r8, #1 - beq _0230B6C0 - ldr r2, _0230B7D0 ; =0x0235285C - mov r0, fp - mov r1, fp - bl MultiplyFixedPoint64 - ldr r0, _0230B798 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x1c2] -_0230B6C0: - ldr r0, _0230B798 ; =0x02353538 - ldr r7, [r0] - add r0, r7, #0xc000 - ldrb r0, [r0, #0xd5b] - cmp r0, #0 - bne _0230B6E0 - cmp r5, #6 - bne _0230B700 -_0230B6E0: - cmp r8, #5 - bne _0230B700 - ldr r2, _0230B7A8 ; =0x0235283C - mov r3, #1 - mov r0, fp - mov r1, fp - strb r3, [r7, #0x1d0] - bl MultiplyFixedPoint64 -_0230B700: - ldr r0, _0230B798 ; =0x02353538 - ldr r5, [r0] - add r0, r5, #0xc000 - ldrb r0, [r0, #0xd5c] - cmp r0, #0 - beq _0230B738 - cmp r8, #2 - bne _0230B738 - ldr r2, _0230B7A8 ; =0x0235283C - mov r3, #1 - mov r0, fp - mov r1, fp - strb r3, [r5, #0x1d1] - bl MultiplyFixedPoint64 -_0230B738: - cmp r8, #5 - ldreqb r0, [r6, #0xd2] - cmpeq r0, #0xb - bne _0230B768 - ldr r0, _0230B798 ; =0x02353538 - ldr r2, _0230B7BC ; =0x0235284C - ldr r3, [r0] - mov r5, #1 - mov r0, fp - mov r1, fp - strb r5, [r3, #0x1d2] - bl MultiplyFixedPoint64 -_0230B768: - mov r0, r4 -_0230B76C: - add sp, sp, #0x64 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230B774: .word 0x02352838 -_0230B778: .word 0x022C4820 -_0230B77C: .word 0x022C4824 -_0230B780: .word 0x022C482C -_0230B784: .word 0x022C4758 -_0230B788: .word 0x022C474C -_0230B78C: .word 0x022C481C -_0230B790: .word 0x022C4810 -_0230B794: .word 0x022C4818 -_0230B798: .word 0x02353538 -_0230B79C: .word 0x022C4D14 -_0230B7A0: .word 0x022C47C0 -_0230B7A4: .word 0x02352864 -_0230B7A8: .word 0x0235283C -_0230B7AC: .word 0x022C455C -_0230B7B0: .word 0x02352844 -_0230B7B4: .word 0x00000C3E -_0230B7B8: .word 0x000003E7 -_0230B7BC: .word 0x0235284C -_0230B7C0: .word 0x00000C4F -_0230B7C4: .word 0x00000C51 -_0230B7C8: .word 0x00000C52 -_0230B7CC: .word 0x022C4744 -_0230B7D0: .word 0x0235285C - arm_func_end ov29_0230AD04 - - arm_func_start ov29_0230B7D4 -ov29_0230B7D4: ; 0x0230B7D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r4, #1 - mov r8, r2 - mov fp, #0 - bl EntityIsValid__02308FBC - cmp r0, #0 - moveq r0, r4 - beq _0230BB98 - mov r0, sl - mov r1, #0x6b - ldr r7, [sl, #0xb4] - ldr r6, [sb, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - movne r8, r4 - cmp r8, #1 - cmpne r8, #7 - moveq fp, #1 - cmp r8, #2 - bne _0230B84C - mov r0, sl - mov r1, sb - bl ov29_02313C74 - cmp r0, #0 - movne r0, #0 - bne _0230BB98 -_0230B84C: - cmp r8, #5 - bne _0230B874 - mov r0, sl - mov r1, sb - mov r2, #0x23 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - movne r0, #0 - bne _0230BB98 -_0230B874: - cmp r8, #3 - bne _0230B89C - mov r0, sl - mov r1, sb - mov r2, #0x24 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - movne r0, #0 - bne _0230BB98 -_0230B89C: - cmp r8, #9 - bne _0230B8E0 - mov r0, sl - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - bne _0230B8C8 - mov r0, sb - bl LevitateIsActive - cmp r0, #0 - bne _0230B8D8 -_0230B8C8: - mov r0, sb - bl HasConditionalGroundImmunity - cmp r0, #0 - beq _0230B8E0 -_0230B8D8: - mov r0, #1 - b _0230BB98 -_0230B8E0: - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_0230AB58 - ldr r1, _0230BBA0 ; =0x02352884 - str r0, [sp] - add ip, sp, #4 - ldmia r1, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - mov r5, #0 - b _0230B9A0 -_0230B90C: - ldr r0, [sp] - add ip, sp, #0x14 - cmp r0, #0 - add r0, sp, #4 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - bne _0230B960 - cmp fp, #0 - beq _0230B960 - add r0, r6, r5 - ldrb r0, [r0, #0x5e] - cmp r0, #0xe - ldreqb r0, [r6, #0xfe] - cmpeq r0, #0 - bne _0230B960 - ldr r1, _0230BBA4 ; =0x02353538 - mov r0, #0 - ldr r2, [r1] - mov r1, #1 - strb r1, [r2, #0x1d4] - b _0230B978 -_0230B960: - mov r0, sl - mov r1, sb - mov r2, r5, lsl #0x10 - mov r2, r2, asr #0x10 - mov r3, r8 - bl GetTypeMatchup -_0230B978: - cmp r4, #0 - beq _0230B9A8 - add r1, sp, #0x14 - ldr r0, [r1, r0, lsl #2] - mul r0, r4, r0 - add r0, r0, r0, lsr #31 - movs r4, r0, asr #1 - moveq r0, #2 - beq _0230BB98 - add r5, r5, #1 -_0230B9A0: - cmp r5, #2 - blt _0230B90C -_0230B9A8: - cmp r8, #2 - cmpne r8, #6 - bne _0230B9D4 - mov r0, sl - mov r1, sb - mov r2, #2 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - movne r0, #2 - bne _0230BB98 -_0230B9D4: - cmp r8, #3 - bne _0230BA1C - mov r0, sl - mov r1, #0x10 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BA1C - ldrsh r2, [r7, #0x12] - ldrsh r1, [r7, #0x16] - ldr r0, _0230BBA8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r7, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r4, r4, lsl #1 -_0230BA1C: - cmp r8, #4 - bne _0230BA64 - mov r0, sl - mov r1, #0x1a - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BA64 - ldrsh r2, [r7, #0x12] - ldrsh r1, [r7, #0x16] - ldr r0, _0230BBA8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r7, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r4, r4, lsl #1 -_0230BA64: - cmp r8, #0xc - bne _0230BAAC - mov r0, sl - mov r1, #0x43 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BAAC - ldrsh r2, [r7, #0x12] - ldrsh r1, [r7, #0x16] - ldr r0, _0230BBA8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r7, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r4, r4, lsl #1 -_0230BAAC: - cmp r8, #2 - bne _0230BAF4 - mov r0, sl - mov r1, #0x46 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BAF4 - ldrsh r2, [r7, #0x12] - ldrsh r1, [r7, #0x16] - ldr r0, _0230BBA8 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r7, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - movle r4, r4, lsl #1 -_0230BAF4: - cmp r4, #0 - moveq r0, #2 - beq _0230BB98 - mov r0, sl - mov r1, r8 - bl MonsterIsType - cmp r0, #0 - mov r0, sl - movne r4, r4, lsl #1 - bl GetApparentWeather - cmp r0, #1 - bne _0230BB3C - cmp r8, #2 - moveq r4, r4, lsl #1 - beq _0230BB3C - cmp r8, #3 - moveq r0, #2 - beq _0230BB98 -_0230BB3C: - ldr r0, _0230BBA4 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5b] - cmp r0, #0 - beq _0230BB60 - cmp r8, #5 - moveq r0, #2 - beq _0230BB98 -_0230BB60: - add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5c] - cmp r0, #0 - beq _0230BB7C - cmp r8, #2 - moveq r0, #2 - beq _0230BB98 -_0230BB7C: - cmp r8, #5 - ldreqb r0, [r7, #0xd2] - cmpeq r0, #0xb - moveq r4, r4, lsl #1 - cmp r4, #3 - movge r4, #3 - add r0, r4, #2 -_0230BB98: - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230BBA0: .word 0x02352884 -_0230BBA4: .word 0x02353538 -_0230BBA8: .word 0x000003E7 - arm_func_end ov29_0230B7D4 - - arm_func_start CalcDamage -CalcDamage: ; 0x0230BBAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc0 - ldr r4, _0230C450 ; =0x02353538 - mov sl, r0 - ldr r4, [r4] - ldr r6, [sl, #0xb4] - ldr r8, [sp, #0xec] - str r2, [sp, #0xc] - mov sb, r1 - ldr r1, [sp, #0xf4] - mov r0, r8 - str r1, [sp, #0xf4] - ldr r1, [sp, #0xf8] - str r3, [sp, #0x10] - str r1, [sp, #0xf8] - ldr r1, [sp, #0xf0] - add r5, r4, #0x184 - ldr r7, [sb, #0xb4] - str r1, [sp, #0x1c] - bl ResetDamageDesc - ldrb r0, [r6, #0x221] - cmp r0, #0 - beq _0230BC1C - ldr r1, _0230C454 ; =0x022C4710 - ldr r0, [sp, #0x1c] - ldr r1, [r1] - bl MultiplyByFixedPoint - str r0, [sp, #0x1c] -_0230BC1C: - mov r0, sl - mov r1, #0x5c - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BC50 - ldr r0, [sp, #0xf4] - bl IsRecoilMove - cmp r0, #0 - ldrne r0, [sp, #0x1c] - addne r0, r0, r0, lsl #1 - addne r0, r0, r0, lsr #31 - movne r0, r0, asr #1 - strne r0, [sp, #0x1c] -_0230BC50: - mov r0, sl - mov r1, #0x65 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BC84 - ldr r0, [sp, #0xf4] - bl IsPunchMove - cmp r0, #0 - beq _0230BC84 - ldr r0, [sp, #0x1c] - mov r1, #0x180 - bl MultiplyByFixedPoint - str r0, [sp, #0x1c] -_0230BC84: - mov r0, sl - mov r1, #0x6b - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0xc] - ldr r1, _0230C458 ; =0x000001D3 - ldr r0, [sp, #0xf4] - cmp r0, r1 - ldreqb r0, [r6, #0x5e] - streq r0, [sp, #0xc] - ldr r0, [sp, #0xf4] - bl MoveIsNotPhysical - str r0, [sp, #0x18] - bl ResetDamageCalcScratchSpace - ldrb r0, [r6, #7] - cmp r0, #0 - bne _0230BD34 - add r0, r6, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - bne _0230BD34 - mov r0, #1 - str r0, [r8] - mov r0, #0 - str r0, [r8, #4] - mov r0, #2 - str r0, [r8, #8] - ldr r0, [sp, #0xf4] - ldr r1, [sp, #0xc] - strb r1, [r8, #0xc] - bl GetMoveCategory - strb r0, [r8, #0xd] - mov r0, #0 - strb r0, [r8, #0xe] - strb r0, [r8, #0xf] - strb r0, [r8, #0x10] - b _0230D054 -_0230BD34: - ldr r1, _0230C45C ; =0x00000163 - ldr r0, [sp, #0xf4] - cmp r0, r1 - bne _0230BDA0 - mov r0, sl - mov r1, sb - mov r2, #0x35 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230BDA0 - mov r0, #1 - str r0, [r8] - mov r0, #0 - str r0, [r8, #4] - mov r0, #2 - str r0, [r8, #8] - ldr r0, [sp, #0xf4] - ldr r1, [sp, #0xc] - strb r1, [r8, #0xc] - bl GetMoveCategory - strb r0, [r8, #0xd] - mov r0, #0 - strb r0, [r8, #0xe] - strb r0, [r8, #0xf] - strb r0, [r8, #0x10] - b _0230D054 -_0230BDA0: - ldr r0, [sp, #0xf4] - ldr r1, [sp, #0xc] - strb r1, [r8, #0xc] - bl GetMoveCategory - strb r0, [r8, #0xd] - ldr r0, [sp, #0xc] - mov r4, #0 - strb r0, [r5] - ldr r0, [sp, #0x18] - mov r1, #0x60 - str r0, [r5, #4] - add r0, r6, r0, lsl #2 - ldr r0, [r0, #0x34] - mov fp, r4 - str r0, [sp, #0x3c] - ldr r0, [sp, #0x18] - add r0, r7, r0, lsl #2 - ldr r0, [r0, #0x3c] - str r0, [sp, #0x38] - mov r0, sl - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BE40 - ldrb r1, [r7, #0x1c] - ldrb r0, [r7, #0x1d] - cmp r1, r0 - blo _0230BE28 - ldr r0, [sp, #0x18] - cmp r0, #1 - ldreqb r0, [r5, #0x32] - addeq r4, r4, #1 - addeq r0, r0, #1 - streqb r0, [r5, #0x32] - b _0230BE40 -_0230BE28: - ldr r0, [sp, #0x18] - cmp r0, #0 - ldreqb r0, [r5, #0x32] - addeq r4, r4, #1 - addeq r0, r0, #1 - streqb r0, [r5, #0x32] -_0230BE40: - ldr r0, [sp, #0xf8] - cmp r0, #0 - ldr r0, [sp, #0x18] - add r0, r6, r0, lsl #1 - ldrsh r0, [r0, #0x24] - str r0, [sp, #0x44] - beq _0230BE70 - ldr r0, [sp, #0xc] - cmp r0, #2 - ldreqsh r0, [r6, #0x30] - streqh r0, [r5, #0x10] - addeq r4, r4, r0 -_0230BE70: - mov r0, sl - mov r1, #0x22 - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5, #0x34] - mov r1, #0x23 - addne r4, r4, #1 - addne r0, r0, #1 - strneb r0, [r5, #0x34] - mov r0, sl - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5, #0x34] - mov r1, #0x3c - subne r4, r4, #1 - subne r0, r0, #1 - strneb r0, [r5, #0x34] - mov r0, sl - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r6, #0x166] - mov r1, #0x32 - cmpne r0, #0 - ldrneb r0, [r5, #0x34] - addne r4, r4, #1 - addne r0, r0, #1 - strneb r0, [r5, #0x34] - mov r0, sl - bl ov29_02338288 - cmp r0, #0 - ldr r0, [sp, #0x18] - addne r4, r4, #1 - cmp r0, #0 - mov r0, sl - bne _0230BFA8 - mov r1, #0x68 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BF5C - ldrsh r0, [r6, #4] - ldrsh r1, [r7, #4] - bl GendersEqualNotGenderless - cmp r0, #0 - ldrneb r0, [r5, #0x32] - addne r4, r4, #1 - addne r0, r0, #1 - strneb r0, [r5, #0x32] - bne _0230BF5C - ldrsh r0, [r6, #4] - bl GetMonsterGenderVeneer - cmp r0, #3 - beq _0230BF5C - ldrsh r0, [r7, #4] - bl GetMonsterGenderVeneer - cmp r0, #3 - ldrneb r0, [r5, #0x32] - subne r4, r4, #1 - subne r0, r0, #1 - strneb r0, [r5, #0x32] -_0230BF5C: - mov r0, sl - bl GetApparentWeather - cmp r0, #1 - bne _0230C040 - mov r0, sl - mov r1, #0x71 - bl AbilityIsActive2 - cmp r0, #0 - bne _0230BF94 - mov r0, sl - mov r1, #0x71 - bl ov29_02301D84 - cmp r0, #0 - beq _0230C040 -_0230BF94: - add r4, r4, #1 - ldrb r0, [r5, #0x32] - add r0, r0, #1 - strb r0, [r5, #0x32] - b _0230C040 -_0230BFA8: - mov r1, #0x5a - bl AbilityIsActive2 - cmp r0, #0 - beq _0230BFD4 - mov r0, sl - bl GetApparentWeather - cmp r0, #1 - ldreqb r0, [r5, #0x32] - addeq r4, r4, #2 - addeq r0, r0, #2 - streqb r0, [r5, #0x32] -_0230BFD4: - mov r0, sb - bl GetApparentWeather - cmp r0, #1 - bne _0230C01C - mov r0, sb - mov r1, #0x71 - bl AbilityIsActive2 - cmp r0, #0 - bne _0230C00C - mov r0, sb - mov r1, #0x71 - bl ov29_02301D84 - cmp r0, #0 - beq _0230C01C -_0230C00C: - add fp, fp, #1 - ldrb r0, [r5, #0x33] - add r0, r0, #1 - strb r0, [r5, #0x33] -_0230C01C: - mov r0, sb - bl GetApparentWeather - cmp r0, #2 - bne _0230C040 - ldrb r0, [r7, #0x5e] - cmp r0, #0xd - ldrneb r0, [r7, #0x5f] - cmpne r0, #0xd - addeq fp, fp, #2 -_0230C040: - ldrsh r1, [r6, #4] - ldr r0, _0230C460 ; =0x000001A3 - cmp r1, r0 - addeq r4, r4, #2 - cmp r1, #0x1a4 - ldr r0, _0230C464 ; =0x000001A5 - subeq r4, r4, #2 - cmp r1, r0 - ldr r0, _0230C468 ; =0x00000211 - subeq r4, r4, #2 - cmp r1, r0 - subeq r4, r4, #2 - beq _0230C07C - cmp r1, #0x218 - addeq r4, r4, #2 -_0230C07C: - ldr r0, [sp, #0x44] - add r0, r0, r4 - str r0, [sp, #0x44] - ldrb r0, [r6, #0x167] - cmp r0, #0 - beq _0230C0AC - mov r0, sl - mov r1, #0x4f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0x14 - strne r0, [sp, #0x44] -_0230C0AC: - ldr r0, [sp, #0x18] - cmp r0, #0 - add r0, r7, r0, lsl #1 - ldrsh r4, [r0, #0x28] - bne _0230C0F4 - ldrb r0, [r7, #0xd2] - mov r1, #0x31 - cmp r0, #6 - moveq r0, #1 - streqb r0, [r5, #0x51] - mov r0, sb - addeq fp, fp, #1 - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5, #0x35] - subne fp, fp, #1 - subne r0, r0, #1 - strneb r0, [r5, #0x35] -_0230C0F4: - mov r0, sb - mov r1, #0x22 - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5, #0x35] - mov r1, #0x23 - subne fp, fp, #1 - subne r0, r0, #1 - strneb r0, [r5, #0x35] - mov r0, sb - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5, #0x35] - addne fp, fp, #1 - addne r0, r0, #1 - strneb r0, [r5, #0x35] - ldrsh r1, [r7, #4] - ldr r0, _0230C460 ; =0x000001A3 - cmp r1, r0 - subeq fp, fp, #2 - cmp r1, #0x1a4 - ldr r0, _0230C464 ; =0x000001A5 - addeq fp, fp, #2 - cmp r1, r0 - ldr r0, _0230C468 ; =0x00000211 - subeq fp, fp, #2 - cmp r1, r0 - addeq fp, fp, #2 - beq _0230C170 - cmp r1, #0x218 - subeq fp, fp, #2 -_0230C170: - ldr r1, _0230C46C ; =0x000001BD - ldr r0, [sp, #0xf4] - add r4, r4, fp - cmp r0, r1 - bne _0230C1F4 - ldrsh r1, [r7, #0x24] - mov r0, #0 - cmp r1, #0xa - subgt r1, r1, #0xa - addgt r0, r0, r1 - movgt r0, r0, lsl #0x10 - ldrsh r1, [r7, #0x28] - movgt r0, r0, asr #0x10 - cmp r1, #0xa - subgt r1, r1, #0xa - addgt r0, r0, r1 - movgt r0, r0, lsl #0x10 - ldrsh r1, [r7, #0x26] - movgt r0, r0, asr #0x10 - cmp r1, #0xa - subgt r1, r1, #0xa - addgt r0, r0, r1 - movgt r0, r0, lsl #0x10 - ldrsh r1, [r7, #0x2a] - movgt r0, r0, asr #0x10 - cmp r1, #0xa - subgt r1, r1, #0xa - addgt r0, r0, r1 - movgt r0, r0, lsl #0x10 - ldr r1, [sp, #0x44] - movgt r0, r0, asr #0x10 - add r0, r1, r0 - str r0, [sp, #0x44] -_0230C1F4: - mov r0, sl - mov r1, #0x67 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0x100 - movne r4, #0xa - strne r0, [sp, #0x38] - bne _0230C23C - mov r0, sl - mov r1, sb - mov r2, #0x67 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - movne r0, #0xa - strne r0, [sp, #0x44] - movne r0, #0x100 - strne r0, [sp, #0x3c] -_0230C23C: - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x18] - cmp r0, #0 - movlt r0, #0 - strlt r0, [sp, #0x44] - ldr r0, [sp, #0x44] - ldr r2, _0230C470 ; =0x022C4D98 - cmp r0, #0x14 - movgt r0, #0x14 - strgt r0, [sp, #0x44] - ldr r0, [sp, #0x44] - strb r0, [r5, #0xa] - add r0, r6, #0x1a - ldrb r3, [r0, r1] - ldr r1, [sp, #0x44] - ldr fp, [r2, r1, lsl #2] - ldr r1, [sp, #0x18] - strh r3, [r5, #0xc] - ldrb r0, [r0, r1] - mov r1, fp - mov r0, r0, lsl #8 - bl MultiplyByFixedPoint - ldr r1, [sp, #0x3c] - bl MultiplyByFixedPoint - mov r0, r0, asr #8 - cmp r4, #0 - movlt r4, #0 - str r0, [sp, #0x90] - cmp r4, #0x14 - movgt r4, #0x14 - ldr r1, [sp, #0x18] - strb r4, [r5, #0xb] - add r0, r7, #0x1c - ldrb r2, [r0, r1] - ldr r1, _0230C474 ; =0x022C4DEC - strh r2, [r5, #0xe] - ldr r2, [sp, #0x18] - ldr r1, [r1, r4, lsl #2] - ldrb r0, [r0, r2] - mov r0, r0, lsl #8 - bl MultiplyByFixedPoint - ldr r1, [sp, #0x38] - bl MultiplyByFixedPoint - mov r0, r0, asr #8 - str r0, [sp, #0x94] - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0230C314 - ldr r1, [sp, #0x18] - mov r0, sl - bl ExclusiveItemOffenseBoost - ldr r1, [sp, #0x90] - add r0, r1, r0 - str r0, [sp, #0x90] -_0230C314: - ldrb r0, [r7, #6] - cmp r0, #0 - bne _0230C338 - ldr r1, [sp, #0x18] - mov r0, sb - bl ExclusiveItemDefenseBoost - ldr r1, [sp, #0x94] - add r0, r1, r0 - str r0, [sp, #0x94] -_0230C338: - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _0230C4D8 - mov r0, sl - mov r1, #0x1a - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C378 - ldr r0, _0230C478 ; =0x020A18AC - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x30] - add r0, r0, r2 - strb r0, [r5, #0x30] -_0230C378: - mov r0, sl - mov r1, #0x32 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C3AC - ldr r0, _0230C47C ; =0x020A187C - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x30] - add r0, r0, r2 - strb r0, [r5, #0x30] -_0230C3AC: - mov r0, sl - bl AuraBowIsActive - cmp r0, #0 - beq _0230C3DC - ldr r0, _0230C480 ; =0x020A1898 - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x31] - add r0, r0, r2 - strb r0, [r5, #0x31] -_0230C3DC: - ldr r0, [sp, #0xf8] - cmp r0, #0 - beq _0230C5E0 - mov r0, sb - mov r1, #0x25 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C41C - ldr r0, _0230C484 ; =0x020A18A8 - ldr r1, [sp, #0x94] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x94] - ldrb r0, [r5, #0x36] - add r0, r0, r2 - strb r0, [r5, #0x36] -_0230C41C: - mov r0, sb - bl AuraBowIsActive - cmp r0, #0 - beq _0230C5E0 - ldr r0, _0230C480 ; =0x020A1898 - ldr r1, [sp, #0x94] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x94] - ldrb r0, [r5, #0x36] - add r0, r0, r2 - strb r0, [r5, #0x36] - b _0230C5E0 - .align 2, 0 -_0230C450: .word 0x02353538 -_0230C454: .word 0x022C4710 -_0230C458: .word 0x000001D3 -_0230C45C: .word 0x00000163 -_0230C460: .word 0x000001A3 -_0230C464: .word 0x000001A5 -_0230C468: .word 0x00000211 -_0230C46C: .word 0x000001BD -_0230C470: .word 0x022C4D98 -_0230C474: .word 0x022C4DEC -_0230C478: .word 0x020A18AC -_0230C47C: .word 0x020A187C -_0230C480: .word 0x020A1898 -_0230C484: .word 0x020A18A8 -_0230C488: .word 0x020A18B4 -_0230C48C: .word 0x020A186C -_0230C490: .word 0x00000C53 -_0230C494: .word 0x00000C54 -_0230C498: .word 0x00000C55 -_0230C49C: .word 0x000003E7 -_0230C4A0: .word 0x020A18D8 -_0230C4A4: .word 0x02352984 -_0230C4A8: .word 0x02352990 -_0230C4AC: .word 0x0235299C -_0230C4B0: .word 0x020A18F4 -_0230C4B4: .word 0x020A18F0 -_0230C4B8: .word 0x020A18CC -_0230C4BC: .word 0x020A18F8 -_0230C4C0: .word 0x020A18EC -_0230C4C4: .word 0x020A18D4 -_0230C4C8: .word 0x020A18E8 -_0230C4CC: .word 0x0235286C -_0230C4D0: .word 0x02352838 -_0230C4D4: .word 0x0235287C -_0230C4D8: - ldr r0, [sp, #0xf8] - cmp r0, #0 - beq _0230C548 - mov r0, sb - mov r1, #0x29 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C518 - ldr r0, _0230C488 ; =0x020A18B4 - ldr r1, [sp, #0x94] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x94] - ldrb r0, [r5, #0x37] - add r0, r0, r2 - strb r0, [r5, #0x37] -_0230C518: - mov r0, sb - bl AuraBowIsActive - cmp r0, #0 - beq _0230C548 - ldr r0, _0230C480 ; =0x020A1898 - ldr r1, [sp, #0x94] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x94] - ldrb r0, [r5, #0x36] - add r0, r0, r2 - strb r0, [r5, #0x36] -_0230C548: - mov r0, sl - mov r1, #0x28 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C57C - ldr r0, _0230C48C ; =0x020A186C - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x31] - add r0, r0, r2 - strb r0, [r5, #0x31] -_0230C57C: - mov r0, sl - mov r1, #0x32 - bl ItemIsActive__0230A9DC - cmp r0, #0 - beq _0230C5B0 - ldr r0, _0230C47C ; =0x020A187C - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x31] - add r0, r0, r2 - strb r0, [r5, #0x31] -_0230C5B0: - mov r0, sb - bl AuraBowIsActive - cmp r0, #0 - beq _0230C5E0 - ldr r0, _0230C480 ; =0x020A1898 - ldr r1, [sp, #0x90] - ldrsh r2, [r0] - add r0, r1, r2 - str r0, [sp, #0x90] - ldrb r0, [r5, #0x31] - add r0, r0, r2 - strb r0, [r5, #0x31] -_0230C5E0: - ldr r0, [sp, #0x10] - mov r1, fp - mov r0, r0, lsl #8 - bl MultiplyByFixedPoint - ldr r1, [sp, #0x3c] - bl MultiplyByFixedPoint - mov r1, r0 - add r0, sp, #0xa0 - bl FixedPoint32To64 - mov r0, #0x64 - bl DungeonRandInt - mov r4, #1 - str r0, [sp, #0x40] - add r0, r6, #0x100 - ldrh r1, [r0, #0x5a] - mov fp, r4 - str r4, [sp, #0x28] - bic r1, r1, #0x100 - strh r1, [r0, #0x5a] - ldrh r1, [r0, #0x58] - str r4, [sp, #0x2c] - bic r1, r1, #0x100 - strh r1, [r0, #0x58] - ldr r0, [sp, #0xf4] - bl MoveIsNotPhysical - str r0, [sp, #0x30] - cmp r0, #0 - bne _0230C6B8 - mov r0, sl - mov r1, #0x11 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230C6B8 - ldr r0, [sl, #0xb4] - mov r1, r4 - str r0, [sp, #0x24] - mov r0, sl - bl ov29_02300634 - str r0, [sp, #0x48] - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x48] - mov r1, r4 - bl ov29_023023C0 - ldr r1, [sp, #0x48] - cmp r1, #0 - movne r4, r4, lsl #1 - cmp r0, #0 - beq _0230C6B8 - mov r0, sl - bl ov29_022E6130 - mov r0, sl - mov r1, sb - ldr r2, _0230C490 ; =0x00000C53 - bl LogMessageByIdWithPopupCheckUserTarget -_0230C6B8: - mov r0, sl - mov r1, #0x22 - bl AbilityIsActive2 - cmp r0, #0 - bne _0230C6E0 - mov r0, sl - mov r1, #0x4b - bl AbilityIsActive2 - cmp r0, #0 - beq _0230C748 -_0230C6E0: - ldr r0, [sp, #0x40] - cmp r0, #0x21 - ldr r0, [sl, #0xb4] - bge _0230C700 - ldr r1, [sp, #0x30] - cmp r1, #0 - moveq r1, #1 - beq _0230C704 -_0230C700: - mov r1, #0 -_0230C704: - and r1, r1, #0xff - str r1, [sp, #0x34] - ldr r2, [sp, #0x34] - mov r1, #0x100 - bl ov29_023023C0 - ldr r1, [sp, #0x34] - cmp r1, #0 - addne r4, r4, r4, lsl #1 - movne fp, fp, lsl #1 - cmp r0, #0 - beq _0230C748 - mov r0, sl - bl ov29_022E617C - mov r0, sl - mov r1, sb - ldr r2, _0230C494 ; =0x00000C54 - bl LogMessageByIdWithPopupCheckUserTarget -_0230C748: - mov r0, sl - mov r1, #0x30 - bl AbilityIsActive2 - cmp r0, #0 - beq _0230C76C - ldr r0, [sp, #0x30] - cmp r0, #0 - addeq r4, r4, r4, lsl #1 - moveq fp, fp, lsl #1 -_0230C76C: - ldr r0, [sl, #0xb4] - mov r1, #0x38 - ldrb r0, [r0, #6] - cmp r0, #0 - moveq r0, #1 - streq r0, [sp, #0x14] - movne r0, #0 - strne r0, [sp, #0x14] - mov r0, sl - bl AbilityIsActive2 - cmp r0, #0 - beq _0230C7D4 - ldr r0, [sp, #0x30] - cmp r0, #1 - bne _0230C7D4 - ldr r0, _0230C450 ; =0x02353538 - ldr r1, [r0] - ldr r0, [sp, #0x14] - add r0, r1, r0 - add r0, r0, #0x3000 - ldrb r0, [r0, #0xe36] - cmp r0, #0 - movne r0, #0xa - mulne r0, fp, r0 - rsbne r4, r4, r4, lsl #4 - movne fp, r0 -_0230C7D4: - mov r0, sl - mov r1, #0x3f - bl AbilityIsActive2 - cmp r0, #0 - beq _0230C820 - ldr r0, [sp, #0x30] - cmp r0, #1 - bne _0230C820 - ldr r0, _0230C450 ; =0x02353538 - ldr r1, [r0] - ldr r0, [sp, #0x14] - add r0, r1, r0 - add r0, r0, #0x3000 - ldrb r0, [r0, #0xe34] - cmp r0, #0 - movne r0, #0xa - mulne r0, fp, r0 - rsbne r4, r4, r4, lsl #4 - movne fp, r0 -_0230C820: - mov r0, sl - mov r1, sb - mov r2, #6 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230C84C - ldr r0, [sp, #0x30] - cmp r0, #0 - moveq r4, r4, lsl #2 - addeq fp, fp, fp, lsl #2 -_0230C84C: - mov r0, sl - mov r1, sb - mov r2, #0x34 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230C8E0 - ldr r0, [sp, #0x30] - cmp r0, #0 - bne _0230C8E0 - ldr r0, [sb, #0xb4] - mov r1, #1 - str r0, [sp, #0x20] - mov r0, sb - bl ov29_02300634 - str r0, [sp, #0x4c] - ldr r0, [sp, #0x20] - ldr r2, [sp, #0x4c] - mov r1, #8 - bl ov29_023023C0 - ldr r1, [sp, #0x4c] - cmp r1, #0 - beq _0230C8C0 - ldr r1, [sp, #0x28] - add r1, r1, r1, lsl #1 - str r1, [sp, #0x28] - ldr r1, [sp, #0x2c] - mov r1, r1, lsl #1 - str r1, [sp, #0x2c] -_0230C8C0: - cmp r0, #0 - beq _0230C8E0 - mov r0, sb - bl ov29_022E63D8 - mov r0, sl - mov r1, sb - ldr r2, _0230C498 ; =0x00000C55 - bl LogMessageByIdWithPopupCheckUserTarget -_0230C8E0: - add r0, sp, #0x90 - ldr r2, [r0] - add r1, sp, #0x94 - mul r0, r2, r4 - ldr r3, [r1] - ldr r2, [sp, #0x28] - cmp fp, #1 - mul r2, r3, r2 - str r2, [r1] - add r1, sp, #0x90 - str r0, [r1] - beq _0230C920 - mov r1, fp - bl DivideInt - add r1, sp, #0x90 - str r0, [r1] -_0230C920: - ldr r0, [sp, #0x2c] - cmp r0, #1 - beq _0230C940 - add r4, sp, #0x94 - mov r1, r0 - ldr r0, [r4] - bl DivideInt - str r0, [r4] -_0230C940: - ldr r0, [sp, #0x90] - strh r0, [r5, #0x12] - ldr r0, [sp, #0x94] - strh r0, [r5, #0x14] - ldr r0, [sp, #0x90] - cmp r0, #0 - movlt r0, #0 - strlt r0, [sp, #0x90] - ldr r1, [sp, #0x90] - ldr r0, _0230C49C ; =0x000003E7 - cmp r1, r0 - strge r0, [sp, #0x90] - ldr r1, [sp, #0x94] - add r0, sp, #0x98 - strh r1, [r5, #0x1a] - ldr r1, [sp, #0x94] - bl IntToFixedPoint64 - ldr r2, [sp, #0x90] - ldr r1, [sp, #0x94] - add r0, sp, #0x88 - sub r1, r2, r1 - bl IntToFixedPoint64 - ldr r1, _0230C4A0 ; =0x020A18D8 - add r0, sp, #0x80 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x88 - add r2, sp, #0x80 - mov r1, r0 - bl DivideFixedPoint64 - ldrb r1, [r6, #0xa] - add r0, sp, #0x80 - bl IntToFixedPoint64 - add r0, sp, #0xa8 - add r1, sp, #0x80 - add r2, sp, #0x88 - bl AddFixedPoint64 - ldr r1, [sp, #0x90] - add r0, sp, #0x80 - bl IntToFixedPoint64 - add r0, sp, #0xa0 - add r2, sp, #0x80 - mov r1, r0 - bl AddFixedPoint64 - add r0, sp, #0xa0 - bl FixedPoint64ToInt - strh r0, [r5, #0x18] - ldrb r1, [r6, #0xa] - add r0, sp, #0xa8 - strh r1, [r5, #0x16] - bl FixedPoint64ToInt - strh r0, [r5, #0x1c] - add r0, sp, #0xa8 - bl FixedPoint64ToInt - mov r1, r0 - ldr r0, _0230C4A4 ; =0x02352984 - bl DebugPrint0__0200C1FC - add r0, sp, #0xa0 - bl FixedPoint64ToInt - mov r1, r0 - ldr r0, _0230C4A8 ; =0x02352990 - bl DebugPrint0__0200C1FC - add r0, sp, #0x98 - bl FixedPoint64ToInt - mov r1, r0 - ldr r0, _0230C4AC ; =0x0235299C - bl DebugPrint0__0200C1FC - ldr r1, _0230C4B0 ; =0x020A18F4 - add r0, sp, #0x70 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x70 - add r1, sp, #0xa0 - mov r2, r0 - bl MultiplyFixedPoint64 - ldr r1, _0230C4B4 ; =0x020A18F0 - add r0, sp, #0x68 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x68 - add r1, sp, #0x98 - mov r2, r0 - bl MultiplyFixedPoint64 - ldr r1, _0230C4B8 ; =0x020A18CC - add r0, sp, #0x78 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x60 - add r1, sp, #0xa8 - add r2, sp, #0x78 - bl AddFixedPoint64 - ldr r1, _0230C4BC ; =0x020A18F8 - add r0, sp, #0x78 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x60 - add r2, sp, #0x78 - mov r1, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0x60 - bl FixedPoint64ToInt - mov r1, r0 - add r0, sp, #0x60 - bl ClampedLn - ldr r1, _0230C4C0 ; =0x020A18EC - add r0, sp, #0x78 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0x60 - add r2, sp, #0x78 - mov r1, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0xb0 - add r1, sp, #0x68 - add r2, sp, #0x70 - bl AddFixedPoint64 - add r0, sp, #0xb0 - add r2, sp, #0x60 - mov r1, r0 - bl AddFixedPoint64 - ldr r1, _0230C4C4 ; =0x020A18D4 - add r0, sp, #0x78 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0xb0 - add r2, sp, #0x78 - mov r1, r0 - bl AddFixedPoint64 - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - bne _0230CB78 - ldrb r0, [r6, #6] - cmp r0, #0 - beq _0230CB78 - ldr r1, _0230C4C8 ; =0x020A18E8 - add r0, sp, #0x78 - ldr r1, [r1] - bl FixedPoint32To64 - add r0, sp, #0xb0 - add r2, sp, #0x78 - mov r1, r0 - bl DivideFixedPoint64 -_0230CB78: - ldr r0, _0230C4CC ; =0x0235286C - add r1, sp, #0xb0 - bl FixedPoint64CmpLt - cmp r0, #0 - ldrne r0, _0230C4D0 ; =0x02352838 - ldrne r1, [r0, #0x38] - ldrne r0, [r0, #0x34] - strne r1, [sp, #0xb4] - strne r0, [sp, #0xb0] - ldr r1, _0230C4D4 ; =0x0235287C - add r0, sp, #0xb0 - bl FixedPoint64CmpLt - cmp r0, #0 - ldrne r0, _0230C4D0 ; =0x02352838 - ldrne r1, [r0, #0x48] - ldrne r0, [r0, #0x44] - strne r1, [sp, #0xb4] - strne r0, [sp, #0xb0] - ldr r0, [sp, #0xf4] - bl IsRegularAttackOrProjectile - cmp r0, #0 - ldr r0, [sp, #0xc] - movne r1, #1 - str r0, [sp] - moveq r1, #0 - and r1, r1, #0xff - str r8, [sp, #4] - str r1, [sp, #8] - ldr r3, [sp, #0x10] - add r0, sp, #0xb8 - mov r1, sl - mov r2, sb - bl ov29_0230AD04 - mov fp, r0 - ldr r0, [sp, #0xc] - cmp r0, #2 - bne _0230CC78 - mov r0, sl - mov r1, sb - bl ov29_02313C74 - movs r4, r0 - beq _0230CC78 - ldrb r0, [r7, #0x15c] - cmp r0, #0 - bne _0230CC78 - ldr r0, [sp, #0xf8] - cmp r0, #0 - beq _0230CC78 - mov r0, #1 - mov r1, sb - strb r0, [r7, #0x15c] - mov r2, #0 - bl SubstitutePlaceholderStringTags - cmp r4, #1 - bne _0230CC68 - ldr r2, _0230D05C ; =0x00000C58 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _0230CC78 -_0230CC68: - ldr r2, _0230D060 ; =0x00000C57 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0230CC78: - ldr r0, [sp, #0xf8] - cmp r0, #0 - beq _0230CD3C - mov r0, sl - mov r1, #0x44 - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - bne _0230CD3C - ldr r0, [sp, #0x18] - cmp r0, #0 - bne _0230CCF0 - ldr r0, [sp, #0xf4] - cmp r0, #0x48 - beq _0230CCBC - ldrb r0, [r7, #0xd5] - cmp r0, #1 - beq _0230CCD0 -_0230CCBC: - mov r0, sb - mov r1, #0x1e - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230CCF0 -_0230CCD0: - mov r0, sb - bl ov29_022E406C - add r0, sp, #0xb8 - ldr r2, _0230D064 ; =0x0235283C - mov r1, r0 - bl MultiplyFixedPoint64 - mov r0, #1 - strb r0, [r5, #0x3a] -_0230CCF0: - ldr r0, [sp, #0x18] - cmp r0, #1 - bne _0230CD3C - ldrb r0, [r7, #0xd5] - cmp r0, #3 - beq _0230CD1C - mov r0, sb - mov r1, #0x1f - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230CD3C -_0230CD1C: - mov r0, sb - bl ov29_022E4018 - add r0, sp, #0xb8 - ldr r2, _0230D064 ; =0x0235283C - mov r1, r0 - bl MultiplyFixedPoint64 - mov r0, #1 - strb r0, [r5, #0x3b] -_0230CD3C: - ldrb r0, [r7, #0xd5] - cmp r0, #0x11 - beq _0230CEEC - mov r0, sl - mov r1, sb - mov r2, #0xc - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - bne _0230CEEC - mov r0, sl - mov r1, sb - mov r2, #0x13 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - bne _0230CEEC - mov r0, sb - mov r1, #0x40 - bl IqSkillIsEnabled - cmp r0, #0 - bne _0230CEEC - ldrsh r0, [r6, #2] - bl GetMonsterGenderVeneer - cmp r0, #2 - ldrne r1, [sp, #0xe8] - ldreq r4, [sp, #0xe8] - addne r0, r1, r1, lsr #31 - addne r4, r1, r0, asr #1 - ldrb r0, [r6, #0xec] - cmp r0, #4 - moveq r0, #1 - streqb r0, [r5, #0x3c] - ldreq r4, _0230C49C ; =0x000003E7 - beq _0230CE74 - mov r0, sl - mov r1, #0x13 - bl ItemIsActive__0230A9DC - cmp r0, #0 - bne _0230CDF0 - mov r0, sl - mov r1, #0x1d - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230CE04 -_0230CDF0: - ldr r0, _0230D068 ; =0x022C46F0 - mov r1, #1 - ldrsh r0, [r0] - strb r1, [r5, #0x38] - add r4, r4, r0 -_0230CE04: - mov r0, sl - mov r1, #0x58 - bl AbilityIsActive2 - cmp r0, #0 - ldrne r0, _0230D06C ; =0x022C4510 - movne r1, #1 - ldrnesh r0, [r0] - strneb r1, [r5, #0x49] - mov r1, #0x14 - addne r4, r4, r0 - mov r0, sb - bl ItemIsActive__0230A9DC - cmp r0, #0 - ldrne r0, _0230D068 ; =0x022C46F0 - movne r1, #1 - ldrnesh r0, [r0] - strneb r1, [r5, #0x39] - addne r4, r4, r0 - cmp fp, #0 - beq _0230CE74 - mov r0, sl - mov r1, #1 - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r0, _0230D070 ; =0x022C45E0 - movne r1, #1 - ldrnesh r4, [r0] - strneb r1, [r5, #0x3d] -_0230CE74: - mov r0, #0x64 - bl DungeonRandInt - cmp r0, r4 - bge _0230CEEC - mov r2, #1 - mov r4, #5 - mov r0, sl - mov r1, sb - add r3, r2, #0xdc0 - str r4, [sp] - bl ov29_02314D40 - cmp r0, #0 - bne _0230CEEC - mov r2, #1 - mov r0, sl - mov r1, #0x5d - strb r2, [r8, #0xe] - bl AbilityIsActive2 - cmp r0, #0 - add r0, sp, #0xb8 - beq _0230CEE0 - ldr r2, _0230D074 ; =0x0235284C - mov r1, r0 - bl MultiplyFixedPoint64 - mov r0, #1 - strb r0, [r5, #0x4a] - b _0230CEEC -_0230CEE0: - ldr r2, _0230D078 ; =0x02352844 - mov r1, r0 - bl MultiplyFixedPoint64 -_0230CEEC: - add r0, sp, #0xb0 - bl FixedPoint64ToInt - str r0, [r5, #0x24] - add r0, sp, #0xb0 - add r2, sp, #0xb8 - mov r1, r0 - bl MultiplyFixedPoint64 - ldr r1, [sp, #0x1c] - add r0, sp, #0x58 - mov r2, r1 - str r2, [r5, #0x2c] - bl FixedPoint32To64 - add r0, sp, #0xb0 - add r2, sp, #0x58 - mov r1, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0xb0 - bl FixedPoint64ToInt - str r0, [r5, #0x20] - mov r0, #0x4000 - bl DungeonRandInt - add r0, r0, #0xe000 - mov r1, #0 - str r0, [sp, #0xbc] - add r0, sp, #0xb0 - str r1, [sp, #0xb8] - add r2, sp, #0xb8 - mov r1, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0x50 - mov r1, #0x64 - bl IntToFixedPoint64 - add r0, sp, #0xb8 - add r1, sp, #0x50 - mov r2, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0xb8 - bl FixedPoint64ToInt - str r0, [r5, #0x28] - add r0, sp, #0xb0 - bl FixedPoint64ToInt - str r0, [r8] - ldr r1, _0230D07C ; =0x00000195 - ldr r0, [sp, #0xf4] - cmp r0, r1 - bne _0230CFBC - ldr r0, [r8] - mov r1, #0x80 - mov r0, r0, lsl #8 - bl MultiplyByFixedPoint - bl RoundUpDiv256 - str r0, [r8] -_0230CFBC: - ldr r1, _0230D07C ; =0x00000195 - ldr r0, [sp, #0xf4] - cmp r0, r1 - bne _0230CFFC - mov r0, sl - mov r1, #0x2f - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230CFFC - ldr r0, _0230D080 ; =0x022C47F8 - ldr r2, [r8] - ldr r1, [r0] - mov r0, r2, lsl #8 - bl MultiplyByFixedPoint - bl RoundUpDiv256 - str r0, [r8] -_0230CFFC: - ldr r0, [r8] - arm_func_end CalcDamage - - arm_func_start ov29_0230D000 -ov29_0230D000: ; 0x0230D000 - cmp r0, #0 - ble _0230D038 - mov r0, sl - mov r1, #0x5b - bl ExclusiveItemEffectIsActive__0230A9B8 - cmp r0, #0 - beq _0230D038 - ldr r0, _0230D084 ; =0x022C4844 - ldr r2, [r8] - ldr r1, [r0] - mov r0, r2, lsl #8 - bl MultiplyByFixedPoint - bl RoundUpDiv256 - str r0, [r8] -_0230D038: - mov r1, #0 - str r1, [r8, #4] - ldr r0, [r8] - cmp r0, #0 - streqb r1, [r8, #0xe] - ldrb r0, [r8, #0xe] - strb r0, [r7, #0x167] -_0230D054: - add sp, sp, #0xc0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230D05C: .word 0x00000C58 -_0230D060: .word 0x00000C57 -_0230D064: .word 0x0235283C -_0230D068: .word 0x022C46F0 -_0230D06C: .word 0x022C4510 -_0230D070: .word 0x022C45E0 -_0230D074: .word 0x0235284C -_0230D078: .word 0x02352844 -_0230D07C: .word 0x00000195 -_0230D080: .word 0x022C47F8 -_0230D084: .word 0x022C4844 - arm_func_end ov29_0230D000 - - arm_func_start ov29_0230D088 -ov29_0230D088: ; 0x0230D088 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x1c - ldr r5, [sp, #0x2c] - ldr r4, [sp, #0x28] - mov lr, r0 - strb r2, [r5, #0xc] - cmp r4, #1 - strb r3, [r5, #0xd] - mov ip, r1 - str r2, [sp] - mov r2, ip - ldr r0, _0230D118 ; =0x000003E7 - movlt r4, #1 - cmp r4, r0 - movgt r4, r0 - add r0, sp, #0x14 - mov r1, lr - mov r3, r4 - str r5, [sp, #4] - mov ip, #0 - str ip, [sp, #8] - bl ov29_0230AD04 - add r0, sp, #0xc - mov r1, r4 - bl IntToFixedPoint64 - add r0, sp, #0xc - add r2, sp, #0x14 - mov r1, r0 - bl MultiplyFixedPoint64 - add r0, sp, #0xc - bl FixedPoint64ToInt - str r0, [r5] - mov r0, #0 - str r0, [r5, #4] - add sp, sp, #0x1c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0230D118: .word 0x000003E7 - arm_func_end ov29_0230D088 - - arm_func_start ov29_0230D11C -ov29_0230D11C: ; 0x0230D11C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xdc - mov r7, r0 - add r0, sp, #0x10 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ResetDamageDesc - add r0, sp, #0x24 - bl ov29_022E2470 - mov r3, #0 - mov r0, #2 - str r0, [sp, #0x18] - str r6, [sp, #0x10] - str r5, [sp, #0x14] - strb r3, [sp, #0x1c] - strb r3, [sp, #0x1e] - strb r3, [sp, #0x1f] - strb r3, [sp, #0x20] - stmia sp, {r3, r4} - str r3, [sp, #8] - mov r1, r7 - add r0, sp, #0x24 - add r2, sp, #0x10 - str r3, [sp, #0xc] - bl ov29_0230863C - add sp, sp, #0xdc - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end ov29_0230D11C - - arm_func_start CalcRecoilDamageFixed -CalcRecoilDamageFixed: ; 0x0230D18C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _0230D238 - ldr r0, [r7] - cmp r0, #1 - bne _0230D1F0 - ldr r0, [r7, #0xb4] - ldrsh r0, [r0, #0x10] - cmp r0, #0 - beq _0230D238 - mov r0, r7 - mov r1, #0x5c - bl AbilityIsActive2 - cmp r0, #0 - beq _0230D1F0 - mov r0, r6, lsl #8 - mov r1, #0x180 - bl MultiplyByFixedPoint - mov r6, r0, asr #8 -_0230D1F0: - ldrb r1, [sp, #0x34] - str r4, [sp] - ldrsh r0, [sp, #0x38] - str r1, [sp, #4] - mov r1, #3 - str r1, [sp, #8] - ldr r1, [sp, #0x3c] - str r0, [sp, #0xc] - ldr r0, [sp, #0x40] - str r1, [sp, #0x10] - ldr r4, [sp, #0x44] - str r0, [sp, #0x14] - arm_func_end CalcRecoilDamageFixed - - arm_func_start ov29_0230D220 -ov29_0230D220: ; 0x0230D220 - mov r0, r7 - mov r1, r7 - mov r2, r6 - mov r3, r5 - str r4, [sp, #0x18] - bl CalcDamageFixed -_0230D238: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end ov29_0230D220 - - arm_func_start CalcDamageFixed -CalcDamageFixed: ; 0x0230D240 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x2c - mov sl, r0 - add r0, sp, #0x18 - mov sb, r1 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x54] - bl ResetDamageDesc - mov r5, #0 - ldrb r0, [sp, #0x58] - ldr r1, [sp, #0x60] - mov r2, #2 - str r2, [sp, #0x20] - str r1, [sp, #0x1c] - strb r6, [sp, #0x24] - strb r5, [sp, #0x26] - strb r5, [sp, #0x27] - strb r0, [sp, #0x25] - cmp r6, #0 - beq _0230D2F8 - add r4, sp, #0x10 -_0230D298: - mov r2, r5, lsl #0x10 - mov r0, sl - mov r1, sb - mov r3, r6 - mov r2, r2, asr #0x10 - bl GetTypeMatchup - str r0, [r4, r5, lsl #2] - add r5, r5, #1 - cmp r5, #2 - blt _0230D298 - mov r0, sl - mov r1, sb - mov r2, #0x35 - mov r3, #1 - bl DefenderAbilityIsActive__0230A940 - cmp r0, #0 - beq _0230D2F8 - ldr r2, [sp, #0x10] - ldr r0, _0230D39C ; =0x022C4D14 - ldr r1, [sp, #0x14] - add r0, r0, r2, lsl #4 - ldr r0, [r0, r1, lsl #2] - cmp r0, #3 - movne r8, #0 -_0230D2F8: - ldrsh r1, [sp, #0x5c] - ldr r0, _0230D3A0 ; =0x00000256 - mov r8, r8, lsl #8 - cmp r1, r0 - bne _0230D334 - mov r0, sl - mov r1, #0x2f - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230D334 - ldr r1, _0230D3A4 ; =0x022C47F8 - mov r0, r8 - ldr r1, [r1] - bl MultiplyByFixedPoint - mov r8, r0 -_0230D334: - mov r0, r8 - bl RoundUpDiv256 - str r0, [sp, #0x18] - cmp r8, #0 - moveq r0, #1 - streqb r0, [sp, #0x28] - movne r0, #0 - strneb r0, [sp, #0x28] - ldrsh r1, [sp, #0x5c] - str r7, [sp] - ldr r0, [sp, #0x64] - str r1, [sp, #4] - str r0, [sp, #8] - ldr r4, [sp, #0x68] - add r2, sp, #0x18 - mov r0, sl - mov r1, sb - mov r3, #0 - str r4, [sp, #0xc] - bl ov29_0230863C - ldr r1, [sp, #0x50] - cmp r1, #0 - ldrneb r0, [sp, #0x28] - strneb r0, [r1] - add sp, sp, #0x2c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0230D39C: .word 0x022C4D14 -_0230D3A0: .word 0x00000256 -_0230D3A4: .word 0x022C47F8 - arm_func_end CalcDamageFixed - - arm_func_start CalcDamageFixedNoCategory -CalcDamageFixedNoCategory: ; 0x0230D3A8 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr lr, [sp, #0x20] - ldrb ip, [sp, #0x24] - str lr, [sp] - ldrsh lr, [sp, #0x28] - str ip, [sp, #4] - mov ip, #3 - str ip, [sp, #8] - ldr ip, [sp, #0x2c] - str lr, [sp, #0xc] - ldr lr, [sp, #0x30] - str ip, [sp, #0x10] - ldr ip, [sp, #0x34] - str lr, [sp, #0x14] - str ip, [sp, #0x18] - bl CalcDamageFixed - add sp, sp, #0x1c - ldmia sp!, {pc} - arm_func_end CalcDamageFixedNoCategory - - arm_func_start CalcDamageFixedWrapper -CalcDamageFixedWrapper: ; 0x0230D3F4 - stmdb sp!, {lr} - sub sp, sp, #0x1c - ldr ip, [sp, #0x20] - ldrb lr, [sp, #0x24] - str ip, [sp] - ldrb ip, [sp, #0x28] - str lr, [sp, #4] - ldrsh lr, [sp, #0x2c] - str ip, [sp, #8] - ldr ip, [sp, #0x30] - str lr, [sp, #0xc] - ldr lr, [sp, #0x34] - str ip, [sp, #0x10] - ldr ip, [sp, #0x38] - str lr, [sp, #0x14] - str ip, [sp, #0x18] - bl CalcDamageFixed - add sp, sp, #0x1c - ldmia sp!, {pc} - arm_func_end CalcDamageFixedWrapper - - arm_func_start ov29_0230D440 -ov29_0230D440: ; 0x0230D440 - ldr r2, [r1, #0xb4] - ldrb r1, [r2, #9] - cmp r1, #0 - bxeq lr - ldr r1, [r0] - cmp r1, #1 - bxne lr - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - movne r0, #2 - strneb r0, [r2, #9] - moveq r0, #3 - streqb r0, [r2, #9] - bx lr - arm_func_end ov29_0230D440 - - arm_func_start ov29_0230D47C -ov29_0230D47C: ; 0x0230D47C - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #9] - cmp r0, #0 - bxeq lr - cmp r1, #0 - movne r0, #2 - strneb r0, [r2, #9] - moveq r0, #3 - streqb r0, [r2, #9] - bx lr - arm_func_end ov29_0230D47C - - arm_func_start ov29_0230D4A4 -ov29_0230D4A4: ; 0x0230D4A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r1, #0xe - mov r5, r2 - ldr r4, [r6, #0xb4] - bl MonsterIsType - cmp r0, #0 - beq _0230D4E8 - cmp r5, #1 - cmpne r5, #7 - bne _0230D4E8 - ldrb r0, [r4, #0xfe] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0230D4E8: - mov r4, #0 - b _0230D518 -_0230D4F0: - mov r2, r4, lsl #0x10 - mov r0, r7 - mov r1, r6 - mov r3, r5 - mov r2, r2, asr #0x10 - bl GetTypeMatchup - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - add r4, r4, #1 -_0230D518: - cmp r4, #2 - blt _0230D4F0 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0230D4A4 - - arm_func_start ResetDamageCalcScratchSpace -ResetDamageCalcScratchSpace: ; 0x0230D528 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0230D614 ; =0x02353538 - mov r1, #0x54 - ldr r4, [r0] - add r5, r4, #0x184 - mov r0, r5 - bl MemZero - mov r1, #0 - strb r1, [r4, #0x184] - str r1, [r5, #4] - strb r1, [r5, #8] - strb r1, [r5, #9] - mov r0, #0xa - strb r0, [r5, #0xa] - strb r0, [r5, #0xb] - mov r0, #1 - strh r0, [r5, #0xc] - strh r0, [r5, #0xe] - strh r1, [r5, #0x10] - strh r1, [r5, #0x14] - strh r1, [r5, #0x12] - strh r1, [r5, #0x16] - strh r1, [r5, #0x1c] - str r1, [r5, #0x20] - str r1, [r5, #0x28] - str r1, [r5, #0x2c] - strb r1, [r5, #0x30] - strb r1, [r5, #0x31] - strb r1, [r5, #0x36] - strb r1, [r5, #0x37] - strb r1, [r5, #0x34] - strb r1, [r5, #0x35] - strb r1, [r5, #0x38] - strb r1, [r5, #0x39] - strb r1, [r5, #0x3a] - strb r1, [r5, #0x3b] - strb r1, [r5, #0x3c] - strb r1, [r5, #0x3d] - strb r1, [r5, #0x3e] - strb r1, [r5, #0x40] - strb r1, [r5, #0x3f] - strb r1, [r5, #0x41] - strb r1, [r5, #0x42] - strb r1, [r5, #0x43] - strb r1, [r5, #0x44] - strb r1, [r5, #0x45] - strb r1, [r5, #0x46] - strb r1, [r5, #0x47] - strb r1, [r5, #0x48] - strb r1, [r5, #0x4b] - strb r1, [r5, #0x4c] - strb r1, [r5, #0x4d] - strb r1, [r5, #0x4e] - strb r1, [r5, #0x4f] - strb r1, [r5, #0x50] - strb r1, [r5, #0x51] - strb r1, [r5, #0x32] - strb r1, [r5, #0x33] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230D614: .word 0x02353538 - arm_func_end ResetDamageCalcScratchSpace - - arm_func_start ov29_0230D618 -ov29_0230D618: ; 0x0230D618 - ldr r1, _0230D624 ; =0x02352894 - ldr r0, [r1, r0, lsl #2] - bx lr - .align 2, 0 -_0230D624: .word 0x02352894 - arm_func_end ov29_0230D618 - - arm_func_start ov29_0230D628 -ov29_0230D628: ; 0x0230D628 - stmdb sp!, {r3, lr} - ldr r1, _0230D650 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x1a000 - ldr r1, [r1, #0x22c] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r1, #1 - bl ov29_022E2E54 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D650: .word 0x02353538 - arm_func_end ov29_0230D628 - - arm_func_start ov29_0230D654 -ov29_0230D654: ; 0x0230D654 - stmdb sp!, {r4, lr} - mov r4, r1 - bl EntityIsValid__02308FBC - cmp r0, #0 - beq _0230D678 - mov r0, r4 - bl EntityIsValid__02308FBC - cmp r0, #0 - bne _0230D680 -_0230D678: - mov r0, #1 - ldmia sp!, {r4, pc} -_0230D680: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_0230D654 - - arm_func_start ov29_0230D688 -ov29_0230D688: ; 0x0230D688 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldrh r3, [r4] - mov r1, #0x55 - mov r2, #2 - strh r3, [sp] - ldrh r3, [r4, #2] - strh r3, [sp, #2] - ldrh r3, [r4, #4] - strh r3, [sp, #4] - bl ov29_02344BD0 - mov r0, r4 - bl SetItemAcquired - ldrb r0, [sp, #1] - strb r0, [r4, #1] - cmp r0, #0 - beq _0230D6FC - add r0, sp, #0 - bl GetEquivItemIndex - cmp r0, #0 - blt _0230D6FC - bl GetItemAtIdx - ldrh r1, [r4] - strh r1, [r0] - ldrh r1, [r4, #2] - strh r1, [r0, #2] - ldrh r1, [r4, #4] - strh r1, [r0, #4] -_0230D6FC: - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ov29_0230D688 - - arm_func_start ov29_0230D704 -ov29_0230D704: ; 0x0230D704 - mov r0, #0 - bx lr - arm_func_end ov29_0230D704 - - arm_func_start ov29_0230D70C -ov29_0230D70C: ; 0x0230D70C - stmdb sp!, {r3, lr} - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _0230D734 ; =0x022C45B4 - arm_func_end ov29_0230D70C - - arm_func_start ov29_0230D71C -ov29_0230D71C: ; 0x0230D71C - ldrsh r1, [r1] - cmp r0, r1 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D734: .word 0x022C45B4 - arm_func_end ov29_0230D71C - - arm_func_start ov29_0230D738 -ov29_0230D738: ; 0x0230D738 - stmdb sp!, {r3, lr} - cmp r2, #0 - bne _0230D760 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _0230D768 ; =0x022C45B4 - ldrsh r1, [r1] - cmp r0, r1 - movlt r0, #1 - ldmltia sp!, {r3, pc} -_0230D760: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230D768: .word 0x022C45B4 - arm_func_end ov29_0230D738 - - arm_func_start ov29_0230D76C -ov29_0230D76C: ; 0x0230D76C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl IsMonster__0230A994 - cmp r0, #0 - beq _0230D798 - mov r0, r5 - bl IsMonster__0230A994 - cmp r0, #0 - bne _0230D7A0 -_0230D798: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0230D7A0: - ldr r0, [r6, #0xb4] - ldr r1, [r5, #0xb4] - ldrsh r0, [r0, #2] - ldrsh r1, [r1, #2] - bl sub_02054EC8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl ov29_0230D738 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0230D76C - - arm_func_start ov29_0230D7D4 -ov29_0230D7D4: ; 0x0230D7D4 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - ldr r2, _0230D870 ; =0x023535D4 - mvn r1, #0 - ldrsh r3, [r2] - mov r4, r0 - cmp r3, r1 - beq _0230D808 - ldrsh r0, [r2] - bl ov10_022BDE50 - ldr r0, _0230D870 ; =0x023535D4 - mvn r1, #0 - strh r1, [r0] -_0230D808: - mov r2, #0 - mov r1, #1 - str r2, [sp] - stmib sp, {r1, r2} - mov r0, r4 - rsb r1, r1, #0x2b8 - mov r3, #3 - str r2, [sp, #0xc] - bl ov29_022E35E4 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mvn r0, #0 - cmp r5, r0 - beq _0230D868 - mov r4, #0x18 - b _0230D850 -_0230D848: - mov r0, r4 - bl AdvanceFrame -_0230D850: - mov r0, r5 - bl ov10_022BF964 - cmp r0, #0 - bne _0230D848 - mov r0, r5 - bl ov10_022BDE50 -_0230D868: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230D870: .word 0x023535D4 - arm_func_end ov29_0230D7D4 - - arm_func_start ov29_0230D874 -ov29_0230D874: ; 0x0230D874 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr lr, [r5, #0xb4] - ldr ip, [r4, #0xb4] - ldrsh r3, [lr, #0x28] - ldrsh r1, [lr, #0x2a] - ldrsh r0, [ip, #0x28] - cmp r2, #0 - strh r0, [lr, #0x28] - ldrsh r0, [ip, #0x2a] - strh r0, [lr, #0x2a] - strh r3, [ip, #0x28] - strh r1, [ip, #0x2a] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0230D8E4 ; =0x00000F2D - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230D8E4: .word 0x00000F2D - arm_func_end ov29_0230D874 - - arm_func_start ov29_0230D8E8 -ov29_0230D8E8: ; 0x0230D8E8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr lr, [r5, #0xb4] - ldr ip, [r4, #0xb4] - ldr r3, [lr, #0x3c] - ldr r1, [lr, #0x40] - ldr r0, [ip, #0x3c] - cmp r2, #0 - str r0, [lr, #0x3c] - ldr r0, [ip, #0x40] - str r0, [lr, #0x40] - str r3, [ip, #0x3c] - str r1, [ip, #0x40] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - arm_func_end ov29_0230D8E8 - - arm_func_start ov29_0230D92C -ov29_0230D92C: ; 0x0230D92C - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0230D958 ; =0x00000F2E - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230D958: .word 0x00000F2E - arm_func_end ov29_0230D92C - - arm_func_start ov29_0230D95C -ov29_0230D95C: ; 0x0230D95C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr lr, [r5, #0xb4] - ldr ip, [r4, #0xb4] - ldrsh r3, [lr, #0x24] - ldrsh r1, [lr, #0x26] - ldrsh r0, [ip, #0x24] - cmp r2, #0 - strh r0, [lr, #0x24] - ldrsh r0, [ip, #0x26] - strh r0, [lr, #0x26] - strh r3, [ip, #0x24] - strh r1, [ip, #0x26] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0230D9CC ; =0x00000F2B - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230D9CC: .word 0x00000F2B - arm_func_end ov29_0230D95C - - arm_func_start ov29_0230D9D0 -ov29_0230D9D0: ; 0x0230D9D0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr lr, [r5, #0xb4] - ldr ip, [r4, #0xb4] - ldr r3, [lr, #0x34] - ldr r1, [lr, #0x38] - ldr r0, [ip, #0x34] - cmp r2, #0 - str r0, [lr, #0x34] - ldr r0, [ip, #0x38] - str r0, [lr, #0x38] - str r3, [ip, #0x34] - str r1, [ip, #0x38] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0230DA40 ; =0x00000F2C - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230DA40: .word 0x00000F2C - arm_func_end ov29_0230D9D0 - - arm_func_start ov29_0230DA44 -ov29_0230DA44: ; 0x0230DA44 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr lr, [r5, #0xb4] - ldr ip, [r4, #0xb4] - ldrsh r3, [lr, #0x2c] - ldrsh r1, [lr, #0x2e] - ldrsh r0, [ip, #0x2c] - cmp r2, #0 - strh r0, [lr, #0x2c] - ldrsh r0, [ip, #0x2e] - strh r0, [lr, #0x2e] - strh r3, [ip, #0x2c] - strh r1, [ip, #0x2e] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0230DAB4 ; =0x00000F2F - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230DAB4: .word 0x00000F2F - arm_func_end ov29_0230DA44 - - arm_func_start ov29_0230DAB8 -ov29_0230DAB8: ; 0x0230DAB8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr ip, [r5, #0xb4] - mov r4, r1 - ldrsh r1, [ip, #0x24] - ldr r3, [ip, #0x34] - ldr r0, [ip, #0x3c] - cmp r2, #0 - str r0, [ip, #0x34] - ldrsh r0, [ip, #0x28] - strh r0, [ip, #0x24] - str r3, [ip, #0x3c] - strh r1, [ip, #0x28] - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - mov r2, #0xf30 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0230DAB8 - - arm_func_start ov29_0230DB14 -ov29_0230DB14: ; 0x0230DB14 - stmdb sp!, {r4, lr} - ldr r1, _0230DBC8 ; =0x02353538 - mov r4, r0 - ldr r1, [r1] - ldrb r1, [r1, #0x759] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl ov29_022EFA6C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0x97 - ldreq r0, _0230DBC8 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x700 - ldreqsb r0, [r0, #0x98] - cmpeq r0, #2 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, _0230DBCC ; =0x000001A3 - cmp r4, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - cmp r4, #0x1a4 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r1, #2 - cmp r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - sub r0, r1, #0xa - cmp r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - sub r0, r1, #9 - cmp r4, r0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - sub r0, r1, #8 - cmp r4, r0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_0230DBC8: .word 0x02353538 -_0230DBCC: .word 0x000001A3 - arm_func_end ov29_0230DB14 - - arm_func_start ov29_0230DBD0 -ov29_0230DBD0: ; 0x0230DBD0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _0230E024 ; =0x02353538 - mov r8, r0 - ldr r0, [r2] - mov r7, r1 - ldrb r0, [r0, #0x748] - ldr r5, [r8, #0xb4] - ldr r6, [r7, #0xb4] - bl IsRecruitingAllowed - cmp r0, #0 - beq _0230DC28 - bl ov29_023361D4 - cmp r0, #0 - bne _0230DC28 - bl IsLegendaryChallengeFloor - cmp r0, #0 - bne _0230DC28 - mov r0, #0xa - mov r1, #6 - bl IsCurrentMissionTypeExact - cmp r0, #0 - beq _0230DC30 -_0230DC28: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230DC30: - ldr r0, _0230E024 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x75d] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r1, #0x748] - cmp r0, #0x5b - bne _0230DC70 - ldrsh r1, [r6, #2] - ldr r0, _0230E028 ; =0x000001E6 - cmp r1, r0 - addne r0, r0, #0x258 - cmpne r1, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230DC70: - ldrsh r0, [r6, #2] - cmp r0, #0x91 - cmpne r0, #0x90 - cmpne r0, #0x92 - ldrne r2, _0230E02C ; =0x0000010F - cmpne r0, r2 - subne r1, r2, #1 - cmpne r0, r1 - cmpne r0, #0x110 - cmpne r0, #0x19c - addne r1, r2, #0x8e - cmpne r0, r1 - addne r1, r2, #0x92 - cmpne r0, r1 - cmpne r0, #0x1a0 - addne r1, r2, #0x93 - cmpne r0, r1 - addne r1, r2, #0x8a - cmpne r0, r1 - addne r1, r2, #0x8b - cmpne r0, r1 - addne r1, r2, #0x8c - cmpne r0, r1 - beq _0230DCF0 - ldr r1, _0230E030 ; =0xFFFFFDEA - add r1, r0, r1 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - bhi _0230DD04 -_0230DCF0: - mov r1, #1 - bl IsMonsterOnTeam - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230DD04: - mov r0, r6 - bl ov29_022FBDE0 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsh r0, [r6, #2] - bl ov29_0230DB14 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsh r1, [r8, #4] - ldrsh r0, [r7, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _0230DD5C - ldrsh r1, [r8, #6] - ldrsh r0, [r7, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _0230DD64 -_0230DD5C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230DD64: - ldrb r0, [r6, #0x48] - cmp r0, #0xfa - ldrneb r0, [r6, #0xbc] - cmpne r0, #7 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - mov r1, r8 - bl ov29_022E274C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #1 - bl ov29_022E1B28 - bl ov29_022E81F8 - ldrsh r0, [r6, #2] - mov r1, #1 - bl IsMonsterOnTeam - mov sb, r0 - mov r0, #0x3e8 - bl DungeonRandInt - mov r4, r0 - bl HasPlayedOldGame - cmp r0, #0 - beq _0230DDE0 - cmp sb, #0 - bne _0230DDE0 - ldrsh r0, [r6, #2] - bl GetRecruitRate2 - mov r6, r0 - b _0230DDEC -_0230DDE0: - ldrsh r0, [r6, #2] - bl GetRecruitRate1 - mov r6, r0 -_0230DDEC: - cmp r6, #0 - ble _0230DDFC - cmp sb, #0 - movne r6, r6, asr #1 -_0230DDFC: - ldr r0, _0230E034 ; =0xFFFFFC19 - cmp r6, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r8 - mov r1, #0x35 - bl ItemIsActive__0230E578 - cmp r0, #0 - ldrne r0, _0230E038 ; =0x022C44FC - ldrnesh r0, [r0] - addne r6, r6, r0 - bne _0230DFD4 - mov r0, r8 - mov r1, #0x39 - bl ItemIsActive__0230E578 - cmp r0, #0 - ldrne r0, _0230E03C ; =0x022C443C - ldrnesh r0, [r0] - addne r6, r6, r0 - bne _0230DFD4 - mov r0, r8 - mov r1, #0x3a - bl ItemIsActive__0230E578 - cmp r0, #0 - ldrne r0, _0230E040 ; =0x022C447C - ldrnesh r0, [r0] - addne r6, r6, r0 - bne _0230DFD4 - mov r0, r8 - mov r1, #0x3b - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DEA0 - mov r0, r7 - mov r1, #6 - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E044 ; =0x022C441C - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DEA0: - mov r0, r8 - mov r1, #0x3c - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DED4 - mov r0, r7 - mov r1, #2 - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E048 ; =0x022C4410 - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DED4: - mov r0, r8 - mov r1, #0x3d - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DF08 - mov r0, r7 - mov r1, #9 - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E04C ; =0x022C470C - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DF08: - mov r0, r8 - mov r1, #0x3e - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DF3C - mov r0, r7 - mov r1, #3 - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E050 ; =0x022C4708 - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DF3C: - mov r0, r8 - mov r1, #0x3f - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DF70 - mov r0, r7 - mov r1, #0xd - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E054 ; =0x022C4704 - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DF70: - mov r0, r8 - mov r1, #0x40 - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DFA4 - mov r0, r7 - mov r1, #4 - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E058 ; =0x022C4700 - ldrnesh r0, [r0] - addne r6, r6, r0 - b _0230DFD4 -_0230DFA4: - mov r0, r8 - mov r1, #0x41 - bl ItemIsActive__0230E578 - cmp r0, #0 - beq _0230DFD4 - mov r0, r7 - mov r1, #0xa - bl MonsterIsType - cmp r0, #0 - ldrne r0, _0230E05C ; =0x022C46FC - ldrnesh r0, [r0] - addne r6, r6, r0 -_0230DFD4: - mov r0, r8 - mov r1, #0x1e - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r0, _0230E038 ; =0x022C44FC - ldrb r1, [r5, #0xa] - ldrnesh r0, [r0] - mov r1, r1, lsl #1 - addne r6, r6, r0 - ldr r0, _0230E060 ; =0x022C5064 - ldrsh r0, [r0, r1] - add r0, r6, r0 - cmp r4, r0 - mov r0, #0 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - bl GetFirstEmptyMemberIdx - cmp r0, #0 - movlt r0, #0 - movge r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230E024: .word 0x02353538 -_0230E028: .word 0x000001E6 -_0230E02C: .word 0x0000010F -_0230E030: .word 0xFFFFFDEA -_0230E034: .word 0xFFFFFC19 -_0230E038: .word 0x022C44FC -_0230E03C: .word 0x022C443C -_0230E040: .word 0x022C447C -_0230E044: .word 0x022C441C -_0230E048: .word 0x022C4410 -_0230E04C: .word 0x022C470C -_0230E050: .word 0x022C4708 -_0230E054: .word 0x022C4704 -_0230E058: .word 0x022C4700 -_0230E05C: .word 0x022C46FC -_0230E060: .word 0x022C5064 - arm_func_end ov29_0230DBD0 - - arm_func_start ov29_0230E064 -ov29_0230E064: ; 0x0230E064 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x114 - mov sl, r0 - mov r0, #0xa - mov r5, #0 - mov sb, r1 - mov r8, r2 - bl ov29_0234BA54 - mov r0, r5 - bl ov29_0234B1A4 - bl ov29_0234D630 - add r0, sb, #4 - add r1, sl, #4 - mvn r7, #0 - bl GetDirectionTowardsPosition - mov r6, r0 - ldr r4, [sb, #0xb4] - mov r0, r5 - strb r0, [sb, #0x22] - mov r0, sl - mov r1, sb - bl ov29_02305F60 - mov r1, r6 - mov r0, sb - bl ov29_02304A48 - ldrsh r0, [r4, #2] - mov r1, #1 - bl IsMonsterOnTeam - cmp r0, #0 - beq _0230E0FC - bl ov29_0234B034 - mov r1, #1 - str r1, [sp] - mov r1, r5 - ldr r2, [sb, #0xb4] - mov r3, r1 - bl ov29_0230040C - b _0230E114 -_0230E0FC: - bl ov29_0234B034 - mov r1, r5 - str r1, [sp] - ldr r2, [sb, #0xb4] - mov r3, r1 - bl ov29_0230040C -_0230E114: - bl ov29_0234B034 - mov r1, r0 - mov r3, #1 - mov r2, #0 - str r3, [sp] - ldr r0, _0230E55C ; =0x00000C77 - mov r3, r2 - bl ov29_0234D7C0 - cmp r0, #2 - moveq r4, #0 - beq _0230E524 - mov r4, #1 - mov r0, #0 - orr r1, r4, #2 - strb r1, [sp, #0xac] - strb r0, [sp, #0xad] - ldrsh r2, [r8, #0xc] - ldr r1, _0230E560 ; =0x02353538 - sub r3, r0, #1 - strb r2, [sp, #0xae] - strh r4, [sp, #0xb2] - ldr r2, [r1] - ldrh r4, [r8, #0x44] - add r1, sp, #0x14 - strh r4, [r1, #0xf2] - ldrh r4, [r8, #0x46] - strh r4, [r1, #0xf4] - strb r0, [sp, #0x104] - strh r3, [sp, #0xb4] - strh r3, [sp, #0xb6] - ldrsh r1, [r8] - strh r1, [sp, #0xb8] - ldrb r1, [r2, #0x748] - strb r1, [sp, #0xaf] - ldrb r1, [r2, #0x749] - add r2, sp, #0xac - strb r1, [sp, #0xb0] - ldrsh r1, [r8, #6] - strh r1, [sp, #0xba] - ldrsh r1, [r8, #6] - strh r1, [sp, #0xbc] - ldrh r1, [r8, #0x14] - strh r1, [sp, #0xf0] - ldrh r1, [r8, #0x16] - strh r1, [sp, #0xf2] - ldrh r1, [r8, #0x18] - strh r1, [sp, #0xf4] - ldrh r1, [r8, #0x1a] - strh r1, [sp, #0xf6] -_0230E1D8: - add r4, r8, r0 - ldrb r1, [r4, #8] - add r3, r2, r0 - add r0, r0, #1 - strb r1, [r3, #0x12] - ldrb r1, [r4, #0xa] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - strb r1, [r3, #0x14] - cmp r0, #2 - blt _0230E1D8 - ldr r0, [r8, #0x10] - add r2, sp, #0xc8 - str r0, [sp, #0xc4] - add r3, r8, #0x22 - mov r1, #0x11 -_0230E218: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0230E218 - ldrh r0, [r8, #0x1c] - strh r0, [sp, #0xea] - ldrh r0, [r8, #0x1e] - strh r0, [sp, #0xec] - ldrh r0, [r8, #0x20] - strh r0, [sp, #0xee] - ldrsh r0, [r8] - bl GetNameString - mov r1, r0 - add r0, sp, #0x100 - add r0, r0, #0xa - mov r2, #0xa - bl sub_02025314 - ldrsh r1, [sp, #0xb8] - ldrsh r2, [sp, #0xb2] - add r0, sp, #0xf8 - bl sub_02058EB0 - add r1, sp, #0x100 - add r0, sp, #0x98 - add r1, r1, #0xa - mov r2, #0xa - add r4, sp, #0x18 - bl StrncpySimpleNoPad - bl ov29_022EACAC - bl ov29_0234B034 - mov r1, r0 - mov r0, #1 - str r0, [sp] - mov r2, #0 - ldr r0, _0230E564 ; =0x00000C7B - mov r3, r2 - bl ov29_0234D7C0 - cmp r0, #1 - bne _0230E2D4 - bl ov29_0234D838 - add r6, sp, #0x100 - add r6, r6, #0xa -_0230E2BC: - mov r0, r6 - add r1, sp, #0x98 - mov r2, #0 - bl ov29_0234F008 - cmp r0, #0 - beq _0230E2BC -_0230E2D4: - add r1, sp, #0xac - mov r0, r4 - bl sub_020585B4 - mov r1, r4 - mov r0, #0 - bl ov29_0234B0B4 - mov r0, #1 - mov r1, #0 - bl ov29_0234B084 - ldr r0, _0230E568 ; =0x00000C7E - bl ov29_0230E658 - ldrsh r1, [r8, #2] - ldrsh r2, [r8, #4] - mov r0, sb - bl ov29_02337EC0 - ldrsh r2, [r8, #2] - ldrsh r3, [r8, #4] - mov r0, sl - mov r1, sb - bl ov29_0230E5A8 - cmp r0, #0 - bne _0230E42C - add r0, sp, #0xac - mvn r1, #0 - bl ov29_0230E5FC - mov r7, r0 - b _0230E410 -_0230E340: - ldr r0, _0230E56C ; =0x00000C7F - bl ov29_0230E658 - mvn r4, #0 -_0230E34C: - bl ov29_0234D838 - add r1, sp, #0x100 - mov r0, sb - add r1, r1, #0xa - bl ov29_0234EE10 - movs r6, r0 - beq _0230E3D4 - cmp r6, sb - add r0, sp, #0x58 - bne _0230E380 - add r1, sp, #0xac - bl sub_020585B4 - b _0230E38C -_0230E380: - ldr r1, [r6, #0xb4] - ldrsh r1, [r1, #0xc] - bl sub_020584FC -_0230E38C: - mov r0, #0 - add r1, sp, #0x58 - bl ov29_0234B0B4 - mov r0, #1 - mov r1, sl - mov r2, #0 - bl SubstitutePlaceholderStringTags - bl ov29_0234B034 - mov r1, #1 - mov r2, #0 - str r1, [sp] - mov r1, r0 - mov r0, #0xc80 - mov r3, r2 - bl ov29_0234D7C0 - mov fp, r0 - cmp fp, r4 - beq _0230E34C -_0230E3D4: - cmp fp, #2 - cmpne r6, #0 - beq _0230E410 - ldr r0, _0230E56C ; =0x00000C7F - add r0, r0, #2 - bl ov29_0230E658 - mov r0, r6 - bl ov29_022E68BC - ldr r1, _0230E570 ; =0x00000233 - mov r0, r6 - mov r2, sl - bl HandleFaint - cmp r6, sb - moveq r4, #1 - beq _0230E524 -_0230E410: - mov r0, sl - mov r1, sb - ldrsh r2, [r8, #2] - ldrsh r3, [r8, #4] - bl ov29_0230E5A8 - cmp r0, #0 - beq _0230E340 -_0230E42C: - mov r6, #0 - mov r4, r6 - mov r5, #1 - b _0230E468 -_0230E43C: - mov r0, r6 - bl GetActiveTeamMember - ldrb r0, [r0] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _0230E470 - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0230E468: - cmp r6, #4 - blt _0230E43C -_0230E470: - add r0, sp, #0xac - mov r1, r7 - strh r6, [sp, #0xb6] - bl ov29_0230E5FC - strh r0, [sp, #0xb4] - ldrsh r1, [sp, #0xb4] - mov r0, r6 - bl sub_02056698 - ldr r1, _0230E570 ; =0x00000233 - mov r0, sb - mov r2, sl - bl HandleFaint - mov r0, r6 - bl GetActiveTeamMember - mov r4, r0 - add r7, sp, #0xac - mov r6, r4 - mov r5, #6 -_0230E4B8: - ldmia r7!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _0230E4B8 - ldmia r7, {r0, r1} - stmia r6, {r0, r1} - bl ov29_022E8104 - bl ov29_022E81F8 - add r1, sp, #0x14 - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - mov r0, #1 - str r0, [sp, #8] - str r0, [sp, #0xc] - str r0, [sp, #0x10] - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - ldrsh r2, [r8, #4] - mov r3, r4 - bl InitTeamMember - ldrsh r0, [r4, #0xc] - bl SetPokemonJoined - bl ov29_022E8104 - bl ov29_022E81F8 - ldr r5, [sp, #0x14] - mov r4, #1 -_0230E524: - mov r0, #1 - bl ov29_0234D8A0 - cmp r4, #0 - bne _0230E540 - ldr r1, _0230E574 ; =0x00000C78 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_0230E540: - cmp r5, #0 - beq _0230E550 - mov r0, r5 - bl ov29_02321104 -_0230E550: - mov r0, r4 - add sp, sp, #0x114 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230E55C: .word 0x00000C77 -_0230E560: .word 0x02353538 -_0230E564: .word 0x00000C7B -_0230E568: .word 0x00000C7E -_0230E56C: .word 0x00000C7F -_0230E570: .word 0x00000233 -_0230E574: .word 0x00000C78 - arm_func_end ov29_0230E064 - - arm_func_start ItemIsActive__0230E578 -ItemIsActive__0230E578: ; 0x0230E578 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__0230E578 - - arm_func_start ov29_0230E5A8 -ov29_0230E5A8: ; 0x0230E5A8 - stmdb sp!, {r4, lr} - ldr r4, [r1, #0xb4] - mov r1, r2 - ldrsh r0, [r4, #2] - mov r2, r3 - mov r3, #1 - bl ov29_022FD318 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldrsh r0, [r4, #2] - bl ov29_022FBC94 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl sub_02056830 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end ov29_0230E5A8 - - arm_func_start ov29_0230E5FC -ov29_0230E5FC: ; 0x0230E5FC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x44 - mov r5, r0 - mov r4, r1 - add r0, sp, #0 - mov r1, r5 - bl sub_020534BC - mov r1, #0 - sub r0, r1, #1 - strb r1, [sp, #6] - strb r1, [sp, #7] - cmp r4, r0 - bne _0230E640 - add r0, sp, #0 - bl sub_02055CCC - mov r4, r0 - b _0230E64C -_0230E640: - ldrsh r0, [r5, #8] - add r1, sp, #0 - bl sub_02055D7C -_0230E64C: - mov r0, r4 - add sp, sp, #0x44 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_0230E5FC - - arm_func_start ov29_0230E658 -ov29_0230E658: ; 0x0230E658 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl sub_02025888 - mov r5, r0 - mov r0, r4 - bl StringFromMessageId - mov r4, r0 - bl ov29_0234B034 - mov r2, r4 - str r0, [sp] - mov r0, r5 - mov r1, #0x400 - mov r3, r1 - bl PreprocessString - mov r0, r5 - bl ov29_0234BB50 - bl ov29_0234B034 - mov r1, r0 - mov r0, r5 - mov r2, #1 - str r2, [sp] - mov r2, #0 - mov r3, r2 - bl ov29_0234D6C8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0230E658 - - arm_func_start TrySpawnMonsterAndTickSpawnCounter -TrySpawnMonsterAndTickSpawnCounter: ; 0x0230E6BC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - ldr r0, _0230E8D8 ; =0x02353538 - mov r6, #0 - ldr r7, [r0] - add r0, r7, #0x700 - ldrsh r1, [r0, #0x86] - cmp r1, #0 - beq _0230E8D0 - ldrsh r1, [r0, #0x82] - add r1, r1, #1 - strh r1, [r0, #0x82] - ldrb r1, [r7, #0x790] - cmp r1, #0 - bne _0230E710 - ldr r1, _0230E8DC ; =0x022C44DC - ldrsh r2, [r0, #0x82] - ldrsh r0, [r1] - cmp r2, r0 - bge _0230E724 - b _0230E8D0 -_0230E710: - ldr r1, _0230E8E0 ; =0x022C4640 - ldrsh r2, [r0, #0x82] - ldrsh r0, [r1] - cmp r2, r0 - blt _0230E8D0 -_0230E724: - cmp r2, #0x384 - ble _0230E76C - add r0, r7, #0x19000 - ldr r4, [r0, #0x908] - mov r0, r4 - bl EntityIsValid__0230E8F0 - cmp r0, #0 - beq _0230E76C - add r0, r7, #0x19000 - ldrh r1, [r4, #0x26] - ldr r0, [r0, #0x910] - cmp r1, r0 - bne _0230E76C - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r6, r4 -_0230E76C: - mov r5, #0 - add r0, r7, #0x700 - strh r5, [r0, #0x82] - add r0, r7, #0x19000 - mov r4, r5 - str r5, [r0, #0x908] -_0230E784: - add r0, r7, r4, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb38] - mov r0, r8 - bl EntityIsValid__0230E8F0 - cmp r0, #0 - beq _0230E7B8 - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - bl GetTile - ldrh r0, [r0] - tst r0, #0x100 - addeq r5, r5, #1 -_0230E7B8: - add r4, r4, #1 - cmp r4, #0x10 - blt _0230E784 - ldrb r0, [r7, #0x790] - cmp r0, #0 - bne _0230E80C - ldr r0, _0230E8D8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xc9] - cmp r0, #0xff - bne _0230E7FC - ldr r0, _0230E8E4 ; =0x022C4430 - ldrsh r0, [r0] - cmp r5, r0 - blt _0230E80C - b _0230E8D0 -_0230E7FC: - ldr r0, _0230E8E8 ; =0x022C46A4 - ldrsh r0, [r0] - cmp r5, r0 - bge _0230E8D0 -_0230E80C: - cmp r6, #0 - beq _0230E828 - ldr r1, _0230E8EC ; =0x00000C5D - mov r0, #0 - bl LogMessageByIdWithPopup - mov r0, r6 - bl ov29_022E62F0 -_0230E828: - ldrb r0, [r7, #0x790] - cmp r0, #0 - beq _0230E83C - bl GetKecleonIdToSpawnByFloor - b _0230E844 -_0230E83C: - mov r0, #0 - bl GetMonsterIdToSpawn -_0230E844: - mov r5, r0 - mov r0, r5 - bl GetMonsterLevelToSpawn - movs r4, r0 - mov r0, r5 - mov r1, #0 - moveq r4, #1 - bl MewSpawnCheck - cmp r0, #0 - beq _0230E8D0 - add r0, sp, #0xa - mov r1, #0 - bl ov29_022E9628 - cmp r0, #0 - beq _0230E8D0 - mov r1, #0 - mov r0, #0x64 - strh r5, [sp] - strh r4, [sp, #8] - strb r1, [sp, #2] - bl DungeonRandInt - ldr r1, _0230E8D8 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - ldrb r0, [r0, #0x748] - bl GetRandomMovementChance - cmp r4, r0 - movlt r0, #1 - strlt r0, [sp, #4] - movge r0, #0 - strge r0, [sp, #4] - mov r1, #0 - add r0, sp, #0 - strb r1, [sp, #0xe] - bl SpawnMonster -_0230E8D0: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0230E8D8: .word 0x02353538 -_0230E8DC: .word 0x022C44DC -_0230E8E0: .word 0x022C4640 -_0230E8E4: .word 0x022C4430 -_0230E8E8: .word 0x022C46A4 -_0230E8EC: .word 0x00000C5D - arm_func_end TrySpawnMonsterAndTickSpawnCounter - - arm_func_start EntityIsValid__0230E8F0 -EntityIsValid__0230E8F0: ; 0x0230E8F0 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0230E8F0 - - arm_func_start ov29_0230E914 -ov29_0230E914: ; 0x0230E914 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - mov sl, r0 - ldr r7, [sl, #0xb4] - bl ov29_02300B40 - cmp r0, #0 - movne r0, #0 - strneb r0, [r7, #0x109] - bne _0230ED98 - ldrb r0, [r7, #0x109] - cmp r0, #0 - beq _0230EAF0 - ldrb r0, [r7, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230ED98 - ldrsh r0, [r7, #0x66] - bl GetItemCategoryVeneer - cmp r0, #0 - bne _0230EA08 - mov r0, sl - add r2, r7, #0x62 - mov r1, #2 - mov r3, #1 - bl ov29_0230EDB0 - mov r4, #0 - ldr r6, _0230EDA0 ; =0x0237C9D8 - ldr r5, _0230EDA4 ; =0x023536FC - b _0230E9DC -_0230E990: - ldr r0, [r6, r4, lsl #2] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0230E9D8 - add r0, r7, #0x4a - mov r1, #0x24 - bl SetMonsterActionFields - mov r0, #0x81 - strb r0, [r7, #0x4e] - ldrsh r1, [sl, #4] - ldr r0, _0230EDA8 ; =0x0237C9F8 - strh r1, [r7, #0x50] - ldrsh r1, [sl, #6] - strh r1, [r7, #0x52] - ldr r0, [r0, r4, lsl #2] - and r0, r0, #7 - strb r0, [r7, #0x4c] - b _0230E9E8 -_0230E9D8: - add r4, r4, #1 -_0230E9DC: - ldr r0, [r5] - cmp r4, r0 - blt _0230E990 -_0230E9E8: - ldr r0, _0230EDA4 ; =0x023536FC - ldr r0, [r0] - cmp r4, r0 - bne _0230ED98 - add r0, r7, #0x4a - mov r1, #0x39 - bl SetMonsterActionFields - b _0230ED98 -_0230EA08: - cmp r0, #1 - bne _0230EAAC - add r2, sp, #0 - mov r0, sl - add r1, r7, #0x62 - mov r3, #1 - bl ov29_0230F02C - ldr r0, _0230EDA4 ; =0x023536FC - ldr r1, [r0] - cmp r1, #0 - beq _0230EA9C - ldr r0, [r0] - bl DungeonRandInt - mov r4, r0 - add r0, r7, #0x4a - mov r1, #0x24 - bl SetMonsterActionFields - mov r0, #0x81 - strb r0, [r7, #0x4e] - ldrsh r2, [sl, #4] - add r1, sp, #0 - add r0, sl, #4 - strh r2, [r7, #0x50] - ldrsh r2, [sl, #6] - add r1, r1, r4, lsl #2 - strh r2, [r7, #0x52] - bl GetDirectionTowardsPosition - and r0, r0, #7 - strb r0, [r7, #0x4c] - add r1, sp, #0 - mov r0, r4, lsl #2 - ldrh r0, [r1, r0] - add r1, r1, r4, lsl #2 - strh r0, [r7, #0x5a] - ldrh r0, [r1, #2] - strh r0, [r7, #0x5c] - b _0230ED98 -_0230EA9C: - add r0, r7, #0x4a - mov r1, #0x39 - bl SetMonsterActionFields - b _0230ED98 -_0230EAAC: - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - add r0, r7, #0x4a - bhi _0230EAE4 - mov r1, #0x23 - bl SetMonsterActionFields - mov r0, #0x81 - strb r0, [r7, #0x4e] - ldrsh r0, [sl, #4] - strh r0, [r7, #0x50] - ldrsh r0, [sl, #6] - strh r0, [r7, #0x52] - b _0230ED98 -_0230EAE4: - mov r1, #0x39 - bl SetMonsterActionFields - b _0230ED98 -_0230EAF0: - mov r0, sl - mov r1, #0x16 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0230ED98 - mov r5, #1 - b _0230ED90 -_0230EB0C: - cmp r5, #1 - addeq r8, r7, #0x62 - moveq r6, #0x81 - beq _0230EB84 - cmp r5, #0 - bne _0230EB58 - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _0230ED8C - ldr r1, [r0] - cmp r1, #3 - bne _0230ED8C - bl ov29_022E1610 - mov r8, r0 - mov r6, #0x80 - b _0230EB84 -_0230EB58: - ldrb r0, [r7, #7] - cmp r0, #0 - beq _0230ED98 - ldr r0, _0230EDAC ; =0x020AF6B8 - sub r1, r5, #1 - ldr r0, [r0] - sub r2, r5, #2 - ldr r3, [r0, #0x384] - mov r0, #6 - mla r8, r2, r0, r3 - and r6, r1, #0xff -_0230EB84: - ldrb r1, [r8] - tst r1, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230ED8C - ldrb r0, [r8] - tst r0, #2 - bne _0230ED8C - tst r1, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0230ED8C - ldrsh r0, [r8, #4] - mov r1, #0 - bl TestItemAiFlag - cmp r0, #0 - beq _0230EC4C - mov r0, sl - mov r1, r8 - mov r2, #2 - bl ov29_0231E05C - movs r4, r0 - beq _0230EC4C - ldrsh r0, [r8, #4] - bl GetItemCategoryVeneer - mov sb, r0 - cmp sb, #9 - ldreqb r0, [r7, #6] - cmpeq r0, #0 - beq _0230EC4C - mov r0, r4 - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0230EC4C - cmp sb, #9 - add r0, r7, #0x4a - bne _0230EC2C - mov r1, #0x31 - bl SetMonsterActionFields - b _0230EC34 -_0230EC2C: - mov r1, #0x23 - bl SetMonsterActionFields -_0230EC34: - strb r6, [r7, #0x4e] - ldrsh r0, [sl, #4] - strh r0, [r7, #0x50] - ldrsh r0, [sl, #6] - strh r0, [r7, #0x52] - b _0230ED98 -_0230EC4C: - mov r0, r7 - bl ov29_02302368 - cmp r0, #0 - beq _0230ED8C - mov r4, #1 - ldr fp, _0230EDA4 ; =0x023536FC - b _0230ED84 -_0230EC68: - ldrsh r0, [r8, #4] - mov r1, r4 - bl TestItemAiFlag - cmp r0, #0 - beq _0230ED80 - ldrsh r0, [r8, #4] - bl GetItemCategoryVeneer - cmp r0, #1 - mov r0, sl - mov r3, #0 - bne _0230ED14 - mov r1, r8 - add r2, sp, #0 - bl ov29_0230F02C - ldr r0, [fp] - cmp r0, #0 - beq _0230ED80 - ldr r0, _0230EDA4 ; =0x023536FC - ldr r0, [r0] - bl DungeonRandInt - mov r4, r0 - add r0, r7, #0x4a - mov r1, #0x24 - bl SetMonsterActionFields - strb r6, [r7, #0x4e] - ldrsh r2, [sl, #4] - add r1, sp, #0 - add r0, sl, #4 - strh r2, [r7, #0x50] - ldrsh r2, [sl, #6] - add r1, r1, r4, lsl #2 - strh r2, [r7, #0x52] - bl GetDirectionTowardsPosition - and r0, r0, #7 - strb r0, [r7, #0x4c] - add r1, sp, #0 - mov r0, r4, lsl #2 - ldrh r0, [r1, r0] - add r1, r1, r4, lsl #2 - strh r0, [r7, #0x5a] - ldrh r0, [r1, #2] - strh r0, [r7, #0x5c] - b _0230ED98 -_0230ED14: - mov r1, r4 - mov r2, r8 - bl ov29_0230EDB0 - mov sb, #0 - b _0230ED74 -_0230ED28: - ldr r0, _0230EDA0 ; =0x0237C9D8 - ldr r0, [r0, sb, lsl #2] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0230ED70 - add r0, r7, #0x4a - mov r1, #0x24 - bl SetMonsterActionFields - strb r6, [r7, #0x4e] - ldrsh r1, [sl, #4] - ldr r0, _0230EDA8 ; =0x0237C9F8 - strh r1, [r7, #0x50] - ldrsh r1, [sl, #6] - strh r1, [r7, #0x52] - ldr r0, [r0, sb, lsl #2] - and r0, r0, #7 - strb r0, [r7, #0x4c] - b _0230ED98 -_0230ED70: - add sb, sb, #1 -_0230ED74: - ldr r0, [fp] - cmp sb, r0 - blt _0230ED28 -_0230ED80: - add r4, r4, #1 -_0230ED84: - cmp r4, #3 - blt _0230EC68 -_0230ED8C: - add r5, r5, #1 -_0230ED90: - cmp r5, #0x34 - blt _0230EB0C -_0230ED98: - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230EDA0: .word 0x0237C9D8 -_0230EDA4: .word 0x023536FC -_0230EDA8: .word 0x0237C9F8 -_0230EDAC: .word 0x020AF6B8 - arm_func_end ov29_0230E914 - - arm_func_start ov29_0230EDB0 -ov29_0230EDB0: ; 0x0230EDB0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r4, _0230EFF4 ; =0x023536FC - mov r5, #0 - mov sl, r0 - str r3, [sp, #8] - ldr r0, _0230EFF8 ; =0x0237C9D0 - str r1, [sp] - str r2, [sp, #4] - str r5, [r4] - mov fp, r5 -_0230EDDC: - strb fp, [r0, r5] - add r5, r5, #1 - cmp r5, #8 - blt _0230EDDC - mvn r0, #0 - str r0, [sp, #0x10] -_0230EDF4: - ldr r0, _0230EFFC ; =0x02353538 - ldr r0, [r0] - add r0, r0, fp, lsl #2 - add r0, r0, #0x12000 - ldr r4, [r0, #0xb78] - mov r0, r4 - bl EntityIsValid__0230F008 - cmp r0, #0 - cmpne sl, r4 - beq _0230EFE0 - ldr r0, [sp] - mov r2, #0 - cmp r0, #1 - mov r0, sl - mov r1, r4 - bne _0230EE50 - mov r3, r2 - bl ov29_0230175C - cmp r0, #0 - bne _0230EFE0 - mov r0, #3 - str r0, [sp, #0xc] - b _0230EE68 -_0230EE50: - mov r3, #1 - bl ov29_0230175C - cmp r0, #1 - bne _0230EFE0 - mov r0, #1 - str r0, [sp, #0xc] -_0230EE68: - mov r0, sl - mov r1, r4 - bl ov29_022E274C - cmp r0, #0 - beq _0230EFE0 - ldrsh r6, [r4, #4] - ldrsh r7, [sl, #4] - sub r0, r7, r6 - bl Abs - mov r5, r0 - ldrsh r8, [r4, #6] - ldrsh sb, [sl, #6] - sub r0, sb, r8 - bl Abs - ldr r1, [sl, #0xb4] - ldrb r1, [r1, #0xee] - cmp r1, #0 - bne _0230EEC4 - cmp r5, r0 - movgt r1, r5 - movle r1, r0 - cmp r1, #0xa - bgt _0230EFE0 -_0230EEC4: - cmp r5, r0 - ldr r5, [sp, #0x10] - bne _0230EF08 - cmp r7, r6 - cmplt sb, r8 - movlt r5, #1 - blt _0230EF54 - cmp r7, r6 - bge _0230EEF4 - cmp sb, r8 - movgt r5, #3 - bgt _0230EF54 -_0230EEF4: - cmp r7, r6 - cmpgt sb, r8 - movgt r5, #5 - movle r5, #7 - b _0230EF54 -_0230EF08: - cmp r7, r6 - bne _0230EF1C - cmp sb, r8 - movlt r5, #0 - blt _0230EF54 -_0230EF1C: - cmp r7, r6 - bge _0230EF30 - cmp sb, r8 - moveq r5, #2 - beq _0230EF54 -_0230EF30: - cmp r7, r6 - bne _0230EF44 - cmp sb, r8 - movgt r5, #4 - bgt _0230EF54 -_0230EF44: - cmp r7, r6 - ble _0230EF54 - cmp sb, r8 - moveq r5, #6 -_0230EF54: - cmp r5, #0 - blt _0230EFE0 - ldr r0, _0230EFF8 ; =0x0237C9D0 - ldrb r0, [r0, r5] - cmp r0, #0 - bne _0230EFE0 - mov r0, sl - mov r1, r4 - mov r2, r5 - mov r3, #0xa - bl IsTargetInRange - cmp r0, #0 - beq _0230EFE0 - ldr r0, _0230EFF8 ; =0x0237C9D0 - mov r1, #1 - strb r1, [r0, r5] - ldr r0, [sp, #8] - cmp r0, #0 - ldr r0, _0230EFF4 ; =0x023536FC - ldr r1, [r0] - ldr r0, _0230F000 ; =0x0237C9F8 - str r5, [r0, r1, lsl #2] - movne r0, #0x64 - bne _0230EFC4 - ldr r2, [sp, #0xc] - ldr r1, [sp, #4] - mov r0, r4 - bl ov29_0231E05C -_0230EFC4: - ldr r1, _0230EFF4 ; =0x023536FC - ldr r2, [r1] - ldr r1, _0230F004 ; =0x0237C9D8 - str r0, [r1, r2, lsl #2] - ldr r0, _0230EFF4 ; =0x023536FC - add r1, r2, #1 - str r1, [r0] -_0230EFE0: - add fp, fp, #1 - cmp fp, #0x14 - blt _0230EDF4 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230EFF4: .word 0x023536FC -_0230EFF8: .word 0x0237C9D0 -_0230EFFC: .word 0x02353538 -_0230F000: .word 0x0237C9F8 -_0230F004: .word 0x0237C9D8 - arm_func_end ov29_0230EDB0 - - arm_func_start EntityIsValid__0230F008 -EntityIsValid__0230F008: ; 0x0230F008 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0230F008 - - arm_func_start ov29_0230F02C -ov29_0230F02C: ; 0x0230F02C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r4, _0230F138 ; =0x023536FC - mov r6, #0 - mov sl, r0 - mov fp, r1 - mov sb, r2 - mov r8, r3 - str r6, [r4] -_0230F04C: - ldr r0, _0230F13C ; =0x02353538 - ldr r0, [r0] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__0230F008 - cmp r0, #0 - cmpne sl, r7 - beq _0230F128 - mov r0, sl - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - beq _0230F128 - mov r0, sl - mov r1, r7 - mov r2, #0 - mov r3, #1 - bl ov29_0230175C - cmp r0, #1 - bne _0230F128 - ldrsh r1, [r7, #6] - ldrsh r0, [sl, #6] - sub r0, r1, r0 - bl Abs - ldrsh r2, [r7, #4] - ldrsh r1, [sl, #4] - mov r5, r0 - sub r0, r2, r1 - bl Abs - cmp r0, r5 - movle r0, r5 - cmp r0, #0xa - bgt _0230F128 - cmp r8, #0 - bne _0230F0FC - mov r0, r7 - mov r1, fp - mov r2, #1 - bl ov29_0231E05C - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0230F128 -_0230F0FC: - ldr r0, [r4] - ldrsh r1, [r7, #4] - mov r0, r0, lsl #2 - strh r1, [sb, r0] - ldr r0, [r4] - ldrsh r1, [r7, #6] - add r0, sb, r0, lsl #2 - strh r1, [r0, #2] - ldr r0, [r4] - add r0, r0, #1 - str r0, [r4] -_0230F128: - add r6, r6, #1 - cmp r6, #0x14 - blt _0230F04C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230F138: .word 0x023536FC -_0230F13C: .word 0x02353538 - arm_func_end ov29_0230F02C - - arm_func_start ov29_0230F140 -ov29_0230F140: ; 0x0230F140 - ldr ip, _0230F148 ; =ov29_022F52BC - bx ip - .align 2, 0 -_0230F148: .word ov29_022F52BC - arm_func_end ov29_0230F140 - - arm_func_start ov29_0230F14C -ov29_0230F14C: ; 0x0230F14C - ldr ip, _0230F154 ; =ov29_022F54BC - bx ip - .align 2, 0 -_0230F154: .word ov29_022F54BC - arm_func_end ov29_0230F14C - - arm_func_start ov29_0230F158 -ov29_0230F158: ; 0x0230F158 - ldr ip, _0230F160 ; =ov29_0230F164 - bx ip - .align 2, 0 -_0230F160: .word ov29_0230F164 - arm_func_end ov29_0230F158 - - arm_func_start ov29_0230F164 -ov29_0230F164: ; 0x0230F164 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x198 - mov r8, r0 - ldr r6, [r8, #0xb4] - bl GetTileAtEntity - mov r5, r0 - ldr r4, [r5, #0x10] - cmp r4, #0 - beq _0230F624 - bl IsFloorOver - cmp r0, #0 - bne _0230F624 - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #7] - cmp r0, #0 - bne _0230F624 - ldrb r0, [r6, #9] - cmp r0, #1 - beq _0230F624 - mov r0, r6 - bl IsExperienceLocked - cmp r0, #0 - bne _0230F624 - ldrb r0, [r6, #0xbc] - cmp r0, #7 - beq _0230F624 - ldr r6, [r8, #0xb4] - mov r0, r4 - mov r7, #1 - bl ov29_022E1610 - ldrb r1, [r6, #6] - mov r4, r0 - cmp r1, #0 - beq _0230F204 - bl ov29_02348D00 - cmp r0, #0 - bne _0230F624 -_0230F204: - ldrb r0, [r4] - tst r0, #2 - bne _0230F228 - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0230F22C - ldrh r0, [r5] - tst r0, #0x20 - beq _0230F22C -_0230F228: - mov r7, #0 -_0230F22C: - cmp r7, #0 - beq _0230F624 - mov r0, r8 - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - beq _0230F274 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0230F62C ; =0x00000C5E - mov r0, r8 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F274: - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0230F300 - ldrsh r0, [r4, #4] - bl GetItemCategoryVeneer - cmp r0, #6 - bne _0230F300 - ldrb r0, [r6, #6] - cmp r0, #0 - beq _0230F2A8 - ldr r0, _0230F630 ; =0x00001305 - bl ov29_022EACCC - b _0230F2B0 -_0230F2A8: - ldr r0, _0230F634 ; =0x00001308 - bl ov29_022EACCC -_0230F2B0: - mov r0, r8 - mov r1, #0x1b - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r4] - orrne r0, r0, #0x20 - strneb r0, [r4] - mov r0, r4 - bl sub_0200D8AC - bl AddMoneyCarried - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - add r0, r8, #4 - mov r1, #1 - bl ov29_023456BC - ldr r1, _0230F638 ; =0x00000C5F - mov r0, r8 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F300: - ldr r0, _0230F63C ; =0x02353538 - ldr r0, [r0] - ldrb sb, [r0, #0x75b] - cmp sb, #0 - beq _0230F36C - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0230F36C - ldr r0, _0230F640 ; =0x020AF6B8 - mov r5, #0 - ldr r0, [r0] - add r2, sp, #0 - ldr r7, [r0, #0x384] - add r1, sp, #0xcc - mov r0, #6 -_0230F33C: - mla r3, r5, r0, r7 - str r3, [r2, r5, lsl #2] - str r5, [r1, r5, lsl #2] - add r5, r5, #1 - cmp r5, #0x32 - blt _0230F33C - add r1, r6, #0x62 - mvn r0, #0 - str r1, [sp, #0xc8] - str r0, [sp, #0x194] - mov r5, #0x33 - b _0230F380 -_0230F36C: - add r1, r6, #0x62 - mvn r0, #0 - str r1, [sp] - str r0, [sp, #0xcc] - mov r5, #1 -_0230F380: - ldrsh lr, [r4, #4] - cmp lr, #0xb - bge _0230F4B0 - ldrb r0, [r4] - tst r0, #2 - bne _0230F4B0 - mvn r7, #0 - mov ip, r7 - mov sl, #0 - and r0, r0, #8 - add fp, sp, #0 - b _0230F408 -_0230F3B0: - ldr r1, [fp, sl, lsl #2] - ldrb r1, [r1] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _0230F404 - ldr r3, [fp, sl, lsl #2] - ldrb r2, [r3] - tst r2, #2 - ldreqsh r1, [r3, #4] - cmpeq lr, r1 - andeq r1, r2, #8 - cmpeq r0, r1 - bne _0230F404 - ldrh r1, [r3, #2] - cmp r1, #0x63 - beq _0230F404 - cmp ip, r1 - movlt ip, r1 - movlt r7, sl -_0230F404: - add sl, sl, #1 -_0230F408: - cmp sl, r5 - blt _0230F3B0 - mvn r0, #0 - cmp r7, r0 - beq _0230F4B0 - add r1, sp, #0 - ldr r2, [r1, r7, lsl #2] - ldrh r0, [r4, #2] - ldrh r1, [r2, #2] - add r0, r1, r0 - cmp r0, #0x63 - movge r0, #0x63 - strh r0, [r2, #2] - ldrb r0, [r4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrneb r0, [r2] - orrne r0, r0, #8 - strneb r0, [r2] - bl ov29_02347040 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - add r0, r8, #4 - mov r1, #1 - bl ov29_023456BC - ldr r0, _0230F644 ; =0x00001304 - bl ov29_022EACCC - add r0, sp, #0xcc - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bge _0230F4A0 - mov r0, r8 - mov r1, #0xc60 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F4A0: - ldr r1, _0230F648 ; =0x00000C61 - mov r0, r8 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F4B0: - cmp sb, #0 - beq _0230F4CC - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0230F4CC - bl GetCurrentBagCapacity - mov r5, r0 -_0230F4CC: - mov r7, #0 - add r3, sp, #0 - mov r0, r7 - mov r1, #1 - b _0230F500 -_0230F4E0: - ldr r2, [r3, r7, lsl #2] - ldrb r2, [r2] - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - beq _0230F508 - add r7, r7, #1 -_0230F500: - cmp r7, r5 - blt _0230F4E0 -_0230F508: - mov r0, r8 - mov r1, r4 - mov r2, #1 - bl ov29_02348DD8 - cmp r0, #0 - bne _0230F624 - cmp r7, r5 - bne _0230F544 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _0230F64C ; =0x00000C62 - mov r0, r8 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F544: - ldrb r0, [r6, #6] - cmp r0, #0 - beq _0230F55C - ldr r0, _0230F630 ; =0x00001305 - bl ov29_022EACCC - b _0230F564 -_0230F55C: - ldr r0, _0230F644 ; =0x00001304 - bl ov29_022EACCC -_0230F564: - add r0, sp, #0xcc - ldr r0, [r0, r7, lsl #2] - cmp r0, #0 - bge _0230F5BC - ldrh r1, [r4] - mov r0, r8 - strh r1, [r6, #0x62] - ldrh r1, [r4, #2] - strh r1, [r6, #0x64] - ldrh r1, [r4, #4] - strh r1, [r6, #0x66] - bl ov29_022F9EA0 - mov r1, r4 - mov r0, #0 - bl ov29_02344B44 - add r0, r8, #4 - mov r1, #1 - bl ov29_023456BC - mov r0, r8 - mov r1, #0xc60 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F5BC: - mov r0, r4 - bl ov29_02348D3C - mov r5, r0 - mov r0, r4 - bl ov29_02345004 - cmp r0, #0 - mov r0, #0 - beq _0230F5F8 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0230F650 ; =0x00000C63 - mov r0, r8 - bl LogMessageByIdWithPopup - b _0230F624 -_0230F5F8: - mov r1, r4 - bl ov29_02344B44 - add r0, r8, #4 - mov r1, #1 - bl ov29_023456BC - ldr r1, _0230F648 ; =0x00000C61 - mov r0, r8 - bl LogMessageByIdWithPopup - mov r0, r4 - mov r1, r5 - bl ov29_02348ECC -_0230F624: - add sp, sp, #0x198 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230F62C: .word 0x00000C5E -_0230F630: .word 0x00001305 -_0230F634: .word 0x00001308 -_0230F638: .word 0x00000C5F -_0230F63C: .word 0x02353538 -_0230F640: .word 0x020AF6B8 -_0230F644: .word 0x00001304 -_0230F648: .word 0x00000C61 -_0230F64C: .word 0x00000C62 -_0230F650: .word 0x00000C63 - arm_func_end ov29_0230F164 - - arm_func_start ov29_0230F654 -ov29_0230F654: ; 0x0230F654 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl EntityIsValid__0230F008 - cmp r0, #0 - moveq r0, #0 - beq _0230F6C0 - ldr r3, [r6, #0xb4] - add r0, sp, #4 - ldrb r2, [r3, #0x5f] - mov r1, r5 - str r2, [sp] - ldrsh r2, [r3, #4] - ldrb r3, [r3, #0x5e] - bl sub_0201116C - cmp r0, #0 - moveq r0, #0 - beq _0230F6C0 - ldrh r1, [sp, #4] - mov r0, #1 - strh r1, [r4] - ldrh r1, [sp, #6] - strh r1, [r4, #2] - ldrh r1, [sp, #8] - strh r1, [r4, #4] -_0230F6C0: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0230F654 - - arm_func_start AuraBowIsActive -AuraBowIsActive: ; 0x0230F6C8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r4, [r5, #0xb4] - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230F710 - ldrsh r0, [r4, #0x66] - bl IsAuraBow - cmp r0, #0 - bne _0230F718 -_0230F710: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230F718: - ldrsh r1, [r4, #0x66] - mov r0, r5 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end AuraBowIsActive - - arm_func_start ov29_0230F728 -ov29_0230F728: ; 0x0230F728 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr ip, [r1, #0xb4] - ldr r4, [r0, #0xb4] - ldrb r0, [ip, #0x5f] - mov r5, r3 - mov r1, r2 - str r0, [sp] - ldrsh r2, [ip, #4] - ldrb r3, [ip, #0x5e] - add r0, sp, #4 - bl sub_0201116C - ldr r1, [r4, #0x18c] - add r0, r4, #0x100 - orr r1, r1, r5 - str r1, [r4, #0x18c] - ldrsh r1, [sp, #8] - strh r1, [r0, #0x90] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_0230F728 - - arm_func_start ExclusiveItemOffenseBoost -ExclusiveItemOffenseBoost: ; 0x0230F778 - ldr r0, [r0, #0xb4] - add r0, r0, r1 - ldrb r0, [r0, #0x224] - bx lr - arm_func_end ExclusiveItemOffenseBoost - - arm_func_start ExclusiveItemDefenseBoost -ExclusiveItemDefenseBoost: ; 0x0230F788 - ldr r0, [r0, #0xb4] - add r0, r0, r1 - ldrb r0, [r0, #0x226] - bx lr - arm_func_end ExclusiveItemDefenseBoost - - arm_func_start ov29_0230F798 -ov29_0230F798: ; 0x0230F798 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, #0 - ldr r4, _0230F80C ; =0x02353538 - mov sb, r0 - mov r8, r1 - mov r5, r6 -_0230F7B0: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0230F008 - cmp r0, #0 - beq _0230F7F0 - mov r0, r7 - mov r1, r8 - bl ItemIsActive__0230F810 - cmp r0, #0 - addne r0, r6, #1 - movne r0, r0, lsl #0x10 - strne r7, [sb, r6, lsl #2] - movne r6, r0, asr #0x10 -_0230F7F0: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #4 - blt _0230F7B0 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230F80C: .word 0x02353538 - arm_func_end ov29_0230F798 - - arm_func_start ItemIsActive__0230F810 -ItemIsActive__0230F810: ; 0x0230F810 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__0230F810 - - arm_func_start ov29_0230F840 -ov29_0230F840: ; 0x0230F840 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - mov r6, #0 - ldr r5, _0230F8A8 ; =0x02353538 - b _0230F898 -_0230F854: - ldr r0, [r5] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0230F008 - cmp r0, #0 - beq _0230F88C - mov r0, r7 - mov r1, r4 - bl ExclusiveItemEffectIsActive__0230F8AC - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0230F88C: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0230F898: - cmp r6, #4 - blt _0230F854 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230F8A8: .word 0x02353538 - arm_func_end ov29_0230F840 - - arm_func_start ExclusiveItemEffectIsActive__0230F8AC -ExclusiveItemEffectIsActive__0230F8AC: ; 0x0230F8AC - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__0230F8AC - - arm_func_start ov29_0230F8D0 -ov29_0230F8D0: ; 0x0230F8D0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - bl EntityIsValid__0230F008 - cmp r0, #0 - moveq r0, #0xff - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r8, #0xb4] - mov r5, #0 - ldrb r6, [r0, #0x4c] - ldr r4, _0230F97C ; =0x0235171C - b _0230F96C -_0230F900: - mov r1, r6, lsl #2 - add r0, r4, r6, lsl #2 - ldrsh ip, [r8, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [r8, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr sb, [r0, #0xc] - cmp sb, #0 - beq _0230F958 - mov r0, sb - bl IsMonster__0230F980 - cmp r0, #0 - beq _0230F958 - mov r0, sb - mov r1, r7 - bl ItemIsActive__0230F810 - cmp r0, #0 - movne r0, r6 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230F958: - add r0, r6, #1 - and r0, r0, #0xff - add r1, r5, #1 - and r6, r0, #7 - and r5, r1, #0xff -_0230F96C: - cmp r5, #8 - blo _0230F900 - mov r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230F97C: .word 0x0235171C - arm_func_end ov29_0230F8D0 - - arm_func_start IsMonster__0230F980 -IsMonster__0230F980: ; 0x0230F980 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__0230F980 - - arm_func_start ov29_0230F9A4 -ov29_0230F9A4: ; 0x0230F9A4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl IsMonster__0230F980 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl ov29_0234908C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0230F9A4 - - arm_func_start ov29_0230F9D8 -ov29_0230F9D8: ; 0x0230F9D8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r2, _0230FB28 ; =0x02353538 - mov r6, r0 - ldr r0, [r2] - mov r5, r1 - ldrb r0, [r0, #0x748] - bl TreasureBoxDropsEnabled - cmp r0, #0 - ldrne r4, [r5, #0xb4] - ldrneb r0, [r4, #6] - cmpne r0, #0 - beq _0230FB20 - ldr r0, [r6] - mov r7, #0 - cmp r0, #1 - bne _0230FA54 - mov r0, r6 - mov r1, #0x43 - bl IqSkillIsEnabled - cmp r0, #0 - addne r0, r7, #1 - movne r0, r0, lsl #0x10 - movne r7, r0, asr #0x10 - mov r0, r6 - mov r1, #0x56 - bl ExclusiveItemEffectIsActive__0230F8AC - cmp r0, #0 - addne r0, r7, #1 - movne r0, r0, lsl #0x10 - movne r7, r0, asr #0x10 -_0230FA54: - ldrsh r1, [r4, #2] - add r0, sp, #0 - mov r2, r7 - bl ov29_02346060 - cmp r0, #0 - beq _0230FA84 - add r2, sp, #0 - mov r0, r5 - add r1, r5, #4 - mov r3, #1 - bl ov29_02345A3C - b _0230FB20 -_0230FA84: - mov r0, r6 - mov r1, #0x75 - bl AbilityIsActive2 - mov r2, r0 - add r0, sp, #0 - mov r1, r5 - mov r3, r7 - bl ov29_023460DC - cmp r0, #0 - beq _0230FAC4 - add r2, sp, #0 - mov r0, r5 - add r1, r5, #4 - mov r3, #1 - bl ov29_02345A3C - b _0230FB20 -_0230FAC4: - mov r0, r6 - bl IsMonster__0230F980 - cmp r0, #0 - beq _0230FB20 - mov r0, r6 - mov r1, #0x62 - bl ExclusiveItemEffectIsActive__0230F8AC - cmp r0, #0 - beq _0230FB20 - ldr r0, _0230FB2C ; =0x022C4650 - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0230FB20 - add r0, sp, #0 - mov r1, #0xb7 - mov r2, #2 - bl ov29_02344BD0 - add r2, sp, #0 - mov r0, r5 - add r1, r5, #4 - mov r3, #1 - bl ov29_02345A3C -_0230FB20: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230FB28: .word 0x02353538 -_0230FB2C: .word 0x022C4650 - arm_func_end ov29_0230F9D8 - - arm_func_start ov29_0230FB30 -ov29_0230FB30: ; 0x0230FB30 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0230FB88 ; =0x023529A8 - mov r5, r0 - ldrh r2, [r1] - add r0, sp, #0 - strh r2, [sp] - ldrh r1, [r1, #2] - strh r1, [sp, #2] - bl ov29_02347184 - movs r4, r0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0230FB8C ; =0x00000F62 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230FB88: .word 0x023529A8 -_0230FB8C: .word 0x00000F62 - arm_func_end ov29_0230FB30 - - arm_func_start TickNoSlipCap -TickNoSlipCap: ; 0x0230FB90 - stmdb sp!, {r3, r4, r5, lr} - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0230FBB8 - mov r0, r5 - mov r1, #0xd - bl HasHeldItem -_0230FBB8: - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #6] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x107] - add r1, r0, #1 - and r0, r1, #0xff - cmp r0, #0x14 - strb r1, [r4, #0x107] - movhs r0, #0x13 - strhsb r0, [r4, #0x107] - mov r0, #0x64 - bl DungeonRandInt - ldrb r2, [r4, #0x107] - ldr r1, _0230FC20 ; =0x022C4BE4 - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - cmp r0, r1 - ldmgeia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_0230FB30 - mov r0, #0 - strb r0, [r4, #0x107] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230FC20: .word 0x022C4BE4 - arm_func_end TickNoSlipCap - - arm_func_start ov29_0230FC24 -ov29_0230FC24: ; 0x0230FC24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x34 - movs r5, r0 - beq _02310FF4 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r4, [r5, #0xb4] - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0x150] - bl ov29_022FB718 - bl ov29_0234B294 - mov r0, r5 - bl TryWeatherFormChange - mov r0, r5 - mov r1, #0x1d - bl ItemIsActive__02311034 - cmp r0, #0 - beq _0230FD0C - ldrb r0, [r4, #0x17c] - add r1, r0, #1 - and r0, r1, #0xff - cmp r0, #0x14 - strb r1, [r4, #0x17c] - movhs r0, #0x13 - strhsb r0, [r4, #0x17c] - mov r0, #0x64 - bl DungeonRandInt - ldrb r2, [r4, #0x17c] - ldr r1, _02310A6C ; =0x022C4BBC - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - cmp r0, r1 - bge _0230FD0C - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0x17c] - bl ov29_022EC62C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r2, #0 - mov r0, r5 - mov r1, r5 - mov r3, r2 - bl TryWarp - mov r0, r5 - bl ov29_022F42F8 -_0230FD0C: - ldrb r0, [r4, #7] - cmp r0, #0 - beq _0231013C - mov r0, r5 - mov r1, #0x1e - mov r7, #0xa - bl ItemIsActive__02311034 - cmp r0, #0 - movne r2, r7 - moveq r2, #0 - mov r0, r5 - mov r1, #0x26 - sub r7, r7, r2 - bl ItemIsActive__02311034 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r5 - mov r1, #0x10 - sub r7, r7, r2 - bl IqSkillIsEnabled - cmp r0, #0 - mov r0, r5 - mov r1, #0x22 - subne r7, r7, #1 - bl ItemIsActive__02311034 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r5 - mov r1, #0x11 - add r7, r7, r2 - bl ItemIsActive__02311034 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r5 - mov r1, #0x32 - add r7, r7, r2 - bl ItemIsActive__02311034 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r5 - mov r1, #0x59 - add r7, r7, r2 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - adds r7, r7, r0 - movmi r7, #0 - ldr r3, _02310A70 ; =0x0000199A - cmp r7, #0x13 - mov r6, #0 - ldr r2, _02310A74 ; =0x022C4FC4 - movgt r7, #0x13 - add r0, sp, #0x2c - add r1, sp, #0x24 - str r6, [sp, #0x24] - str r3, [sp, #0x28] - add r2, r2, r7, lsl #3 - bl MultiplyFixedPoint64 - ldrb r2, [r4, #0x15d] - cmp r2, #1 - ldrhi r0, _02310A78 ; =0x022C4A5C - ldrhi r1, [sp, #0x30] - ldrhi r0, [r0, r2, lsl #2] - addhi r0, r1, r0, lsl #16 - strhi r0, [sp, #0x30] - mov r0, #0 - strb r0, [r4, #0x15d] - add r0, r4, #0x100 - ldrh r2, [r0, #0x46] - ldrh r1, [r0, #0x48] - add r0, sp, #0x2c - strh r2, [sp, #0x20] - strh r1, [sp, #0x22] - bl BinToDecFixedPoint - strh r0, [sp, #0x14] - mov r0, r0, lsr #0x10 - add r1, r4, #0x100 - strh r0, [sp, #0x16] - ldrh r0, [r1, #0x46] - sub r3, sp, #4 - ldrh r2, [sp, #0x14] - strh r0, [r3] - ldrh r0, [r1, #0x48] - ldrh r1, [sp, #0x16] - strh r0, [r3, #2] - ldr r0, [r3] - strh r2, [r3] - strh r1, [r3, #2] - ldr r1, [r3] - bl SubFixedPoint - strh r0, [sp, #0x10] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x12] - ldrh r1, [sp, #0x10] - add r0, r4, #0x100 - ldrh r3, [sp, #0x12] - strh r1, [r0, #0x46] - ldrh r2, [sp, #0x20] - strh r3, [r0, #0x48] - sub r0, sp, #4 - ldrh r1, [sp, #0x22] - strh r2, [r0] - mov r6, #0 - strh r1, [r0, #2] - ldr r0, [r0] - mov r7, #1 - bl CeilFixedPoint - cmp r0, #0x14 - blt _0230FEFC - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0x14 - ldrlt r6, _02310A7C ; =0x00000DE6 -_0230FEFC: - ldrh r1, [sp, #0x20] - ldrh r0, [sp, #0x22] - sub r2, sp, #4 - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0xa - blt _0230FF48 - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0xa - ldrlt r6, _02310A80 ; =0x00000DE7 -_0230FF48: - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - bne _0230FF98 - mov r0, #0 - bl sub_02050FF8 - strh r0, [sp, #0xc] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xe] - ldrh r2, [sp, #0xc] - add r0, r4, #0x100 - ldrh r1, [sp, #0xe] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] -_0230FF98: - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - bge _0230FFE8 - mov r0, #0 - bl sub_02050FF8 - strh r0, [sp, #8] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xa] - ldrh r2, [sp, #8] - add r0, r4, #0x100 - ldrh r1, [sp, #0xa] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] -_0230FFE8: - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - bne _023100D8 - bl ov29_022F2FE4 - mov r0, r5 - bl ov29_022EC62C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r0, _02310A84 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x799] - cmp r0, #0xa - addlo r0, r0, #1 - strlob r0, [r1, #0x799] - ldr r0, _02310A84 ; =0x02353538 - mov r1, r5 - ldr r0, [r0] - ldrb r0, [r0, #0x799] - cmp r0, #1 - ldreq r6, _02310A88 ; =0x00000DE8 - cmp r0, #2 - ldreq r6, _02310A8C ; =0x00000DE9 - moveq r7, #0 - cmp r0, #3 - mov r0, r5 - ldreq r6, _02310A90 ; =0x00000DEA - moveq r7, #0 - bl ov29_02307BDC - mov r0, r5 - mov r1, #1 - mov r2, #0xe - mov r3, #0x250 - bl ov29_0230D11C - mov r0, #1 - strb r0, [r4, #0x150] - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - movne r6, #0 - b _023100E8 -_023100D8: - ldr r0, _02310A84 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x799] -_023100E8: - cmp r6, #0 - beq _0231013C - cmp r7, #0 - beq _02310124 - ldr r0, _02310A84 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _02310124 - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310124 - ldr r0, _02310A94 ; =0x00001303 - bl ov29_022EACCC -_02310124: - mov r0, r5 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x1e - mov r1, #0x32 - bl ov29_022EA370 -_0231013C: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r0, _02310A84 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5a] - cmp r0, #0 - bne _0231037C - mov r0, r5 - bl GetApparentWeather - cmp r0, #5 - mov r0, r5 - bne _023101FC - mov r1, #0x77 - bl AbilityIsActive2 - cmp r0, #0 - bne _02310360 - mov r0, r5 - mov r1, #0x4d - bl AbilityIsActive2 - cmp r0, #0 - bne _02310360 - mov r0, r5 - mov r1, #6 - bl MonsterIsType - cmp r0, #0 - bne _02310360 - ldr r3, _02310A98 ; =0x00000DBD - mov r6, #9 - mov r0, r5 - mov r1, r5 - mov r2, #1 - str r6, [sp] - bl ov29_02314D40 - cmp r0, #0 - bne _02310360 - ldr r0, _02310A9C ; =0x022C46EC - ldr r3, _02310AA0 ; =0x0000025F - ldrsh r1, [r0] - mov r0, r5 - mov r2, #0x12 - bl ov29_0230D11C - b _02310360 -_023101FC: - bl GetApparentWeather - cmp r0, #2 - mov r0, r5 - bne _02310298 - mov r1, #0x1d - bl AbilityIsActive2 - cmp r0, #0 - bne _02310360 - mov r0, r5 - mov r1, #9 - bl MonsterIsType - cmp r0, #0 - bne _02310360 - mov r0, r5 - mov r1, #0xd - bl MonsterIsType - cmp r0, #0 - bne _02310360 - mov r0, r5 - mov r1, #0x11 - bl MonsterIsType - cmp r0, #0 - bne _02310360 - ldr r3, _02310A98 ; =0x00000DBD - mov r6, #9 - mov r0, r5 - mov r1, r5 - mov r2, #1 - str r6, [sp] - bl ov29_02314D40 - cmp r0, #0 - bne _02310360 - ldr r0, _02310A9C ; =0x022C46EC - ldr r3, _02310AA0 ; =0x0000025F - ldrsh r1, [r0] - mov r0, r5 - mov r2, #0x12 - bl ov29_0230D11C - b _02310360 -_02310298: - bl GetApparentWeather - cmp r0, #1 - bne _02310360 - mov r0, r5 - mov r1, #0x5a - bl AbilityIsActive2 - cmp r0, #0 - beq _02310304 - ldr r3, _02310A98 ; =0x00000DBD - mov r6, #9 - mov r0, r5 - mov r1, r5 - mov r2, #1 - str r6, [sp] - bl ov29_02314D40 - cmp r0, #0 - bne _02310360 - mov r0, #2 - mov r1, #0x5a - bl ov29_0234B084 - ldr r0, _02310A9C ; =0x022C46EC - mov r2, #0x19 - ldrsh r1, [r0] - mov r0, r5 - rsb r3, r2, #0x278 - bl ov29_0230D11C - b _02310360 -_02310304: - mov r0, r5 - mov r1, #0x55 - bl AbilityIsActive2 - cmp r0, #0 - beq _02310360 - ldr r3, _02310A98 ; =0x00000DBD - mov r6, #9 - mov r0, r5 - mov r1, r5 - mov r2, #1 - str r6, [sp] - bl ov29_02314D40 - cmp r0, #0 - bne _02310360 - mov r0, #2 - mov r1, #0x55 - bl ov29_0234B084 - ldr r0, _02310A9C ; =0x022C46EC - ldr r3, _02310AA0 ; =0x0000025F - ldrsh r1, [r0] - mov r0, r5 - mov r2, #0x1a - bl ov29_0230D11C -_02310360: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_0231037C: - mov r0, #0x64 - bl DungeonRandInt - mov r6, r0 - mov r0, r5 - mov r1, #0x21 - bl AbilityIsActive2 - cmp r0, #0 - beq _023103F8 - ldr r0, _02310AA4 ; =0x022C46A0 - ldrsh r0, [r0] - cmp r6, r0 - bge _023103F8 - mov r0, r5 - mov r1, #0 - bl ov29_02300634 - cmp r0, #0 - beq _023103F8 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl ov29_02305C28 -_023103F8: - mov r0, r5 - mov r1, #0x51 - bl AbilityIsActive2 - cmp r0, #0 - beq _02310474 - mov r0, r5 - bl GetApparentWeather - cmp r0, #4 - bne _02310474 - mov r0, r5 - mov r1, #0 - bl ov29_02300634 - cmp r0, #0 - ldrneb r0, [r4, #0xc4] - cmpne r0, #3 - beq _02310474 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r3, #0 - mov r0, r5 - mov r1, r5 - mov r2, #1 - str r3, [sp] - bl ov29_023058C4 -_02310474: - mov r0, r5 - mov r1, #0xb - bl AbilityIsActive2 - cmp r0, #0 - beq _023104C0 - ldrb r1, [r4, #0x11f] - ldr r0, _02310AA8 ; =0x022C466C - add r2, r1, #1 - ldrsh r0, [r0] - and r1, r2, #0xff - strb r2, [r4, #0x11f] - cmp r1, r0 - blt _023104C0 - mov r3, #0 - mov r0, r5 - mov r1, r5 - mov r2, #0x7f - strb r3, [r4, #0x11f] - bl BoostSpeedOneStage -_023104C0: - ldrb r0, [r4, #0xbd] - cmp r0, #4 - bne _023104F8 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r0, r5 - bl ov29_022E53F0 -_023104F8: - ldrb r0, [r4, #0xbf] - cmp r0, #1 - bne _02310590 - ldrb r0, [r4, #0xc1] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xc1] - ldrb r0, [r4, #0xc1] - cmp r0, #0 - bne _02310574 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r1, _02310AAC ; =0x022C4610 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r5 - strb r2, [r4, #0xc1] - bl ov29_02307BDC - ldr r0, _02310AB0 ; =0x022C44D4 - mov r2, #1 - ldrsh r1, [r0] - mov r0, r5 - rsb r3, r2, #0x248 - bl ov29_0230D11C -_02310574: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_02310590: - bl GravityIsActive - cmp r0, #0 - beq _023105DC - mov r0, r5 - bl HasConditionalGroundImmunity - cmp r0, #0 - beq _023105C0 - mov r0, r5 - mov r1, r5 - bl ov29_02306CD0 - mov r0, r5 - bl ov29_02321104 -_023105C0: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_023105DC: - mov r0, r5 - mov r1, #0x69 - bl AbilityIsActive2 - cmp r0, #0 - beq _02310614 - mov r0, r5 - bl ov29_0231B1B8 - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_02310614: - mov r0, r5 - bl GetTileAtEntity - bl ov29_02337E2C - cmp r0, #0 - bne _023106A4 - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02310AB4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldrsh r0, [r4, #0x10] - cmp r0, r1 - bge _0231067C - mov r0, r5 - mov r1, #0x64 - bl ExclusiveItemEffectIsActive__02311064 - cmp r0, #0 - beq _0231067C - ldr r0, _02310AB8 ; =0x022C4664 - mov r3, #0 - ldrsh r2, [r0] - mov r0, r5 - mov r1, r5 - str r3, [sp] - bl TryIncreaseHp -_0231067C: - mov r0, r5 - mov r1, #0x65 - bl ExclusiveItemEffectIsActive__02311064 - cmp r0, #0 - beq _023106A4 - mov r2, #1 - mov r0, r5 - mov r1, r5 - mov r3, r2 - bl ov29_02305C28 -_023106A4: - mov r0, r5 - mov r1, #0x5c - bl ExclusiveItemEffectIsActive__02311064 - cmp r0, #0 - beq _02310754 - mov sl, #0 - ldr r6, _02310A84 ; =0x02353538 - mov sb, sl - mov r7, #1 -_023106C8: - ldr r0, [r6] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] - mov r0, r8 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310718 - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xbf] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _02310718 - mov r0, r8 - bl ov29_022E543C - mov r0, r8 - mov r1, r8 - bl ov29_023061A8 - mov sl, r7 -_02310718: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #4 - blt _023106C8 - cmp sl, #0 - beq _02310754 - ldr r0, _02310ABC ; =0x022C464C - mov r6, #1 - ldrsh r2, [r0] - mov r0, r5 - mov r1, r5 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp -_02310754: - ldrb r0, [r4, #0xbf] - cmp r0, #2 - bne _02310830 - ldrb r0, [r4, #0xc1] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xc1] - ldrb r0, [r4, #0xc1] - cmp r0, #0 - bne _02310810 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - ldreqb r0, [r4, #0xbf] - cmpeq r0, #2 - bne _02310FF4 - ldr r1, _02310AC0 ; =0x022C46A8 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r5 - strb r2, [r4, #0xc1] - bl ov29_02307BDC - mov r0, r5 - mov r1, #0x72 - bl AbilityIsActive2 - cmp r0, #0 - beq _023107F8 - ldr r0, _02310AC4 ; =0x022C44D8 - mov r6, #1 - ldrsh r2, [r0] - mov r0, r5 - mov r1, r5 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp - b _02310810 -_023107F8: - ldr r0, _02310AC4 ; =0x022C44D8 - mov r2, #3 - ldrsh r1, [r0] - mov r0, r5 - rsb r3, r2, #0x24c - bl ov29_0230D11C -_02310810: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - beq _0231092C - b _02310FF4 -_02310830: - cmp r0, #3 - bne _0231092C - ldrb r0, [r4, #0xc1] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xc1] - ldrb r0, [r4, #0xc1] - cmp r0, #0 - bne _02310910 - ldrb r6, [r4, #0xc2] - cmp r6, #0x1d - addlo r0, r6, #1 - strlob r0, [r4, #0xc2] - ldr r0, _02310AC8 ; =0x022C4414 - cmp r6, #0x1d - ldrsh r0, [r0] - movge r6, #0x1d - cmp r6, #0 - strb r0, [r4, #0xc1] - mov r0, #0 - movlt r6, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - ldreqb r0, [r4, #0xbf] - cmpeq r0, #3 - bne _02310FF4 - mov r0, r5 - mov r1, r5 - bl ov29_02307BDC - mov r0, r5 - mov r1, #0x72 - bl AbilityIsActive2 - cmp r0, #0 - beq _023108F4 - ldr r0, _02310ACC ; =0x022C4C9C - mov r1, r6, lsl #1 - ldrsh r2, [r0, r1] - mov r6, #1 - mov r0, r5 - mov r1, r5 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp - b _02310910 -_023108F4: - ldr r0, _02310ACC ; =0x022C4C9C - mov r1, r6, lsl #1 - ldrsh r1, [r0, r1] - mov r2, #3 - mov r0, r5 - rsb r3, r2, #0x24c - bl ov29_0230D11C -_02310910: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_0231092C: - ldrb r0, [r4, #0xc4] - cmp r0, #7 - bne _023109D4 - ldrb r0, [r4, #0xcd] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xcd] - ldrb r0, [r4, #0xcd] - cmp r0, #0 - bne _023109B4 - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r1, _02310AD0 ; =0x022C4454 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r5 - strb r2, [r4, #0xcd] - bl ov29_02307BDC - ldr r1, [r4, #0xc8] - mov r0, r5 - bl ov29_022E42E8 - ldr r1, _02310AD4 ; =0x022C446C - mov r0, r5 - ldrsh r1, [r1] - mov r2, #2 - mov r3, #0x248 - bl ov29_0230D11C -_023109B4: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - beq _02310B6C - b _02310FF4 -_023109D4: - cmp r0, #4 - bne _02310AF8 - ldrb r0, [r4, #0xcd] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xcd] - ldrb r0, [r4, #0xcd] - cmp r0, #0 - bne _02310A4C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r1, _02310AD8 ; =0x022C45F0 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r5 - strb r2, [r4, #0xcd] - bl ov29_02307BDC - ldr r0, _02310ADC ; =0x022C45D0 - ldr r3, _02310AE0 ; =0x0000024A - ldrsh r1, [r0] - mov r0, r5 - mov r2, #5 - bl ov29_0230D11C -_02310A4C: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - beq _02310B6C - b _02310FF4 - .align 2, 0 -_02310A6C: .word 0x022C4BBC -_02310A70: .word 0x0000199A -_02310A74: .word 0x022C4FC4 -_02310A78: .word 0x022C4A5C -_02310A7C: .word 0x00000DE6 -_02310A80: .word 0x00000DE7 -_02310A84: .word 0x02353538 -_02310A88: .word 0x00000DE8 -_02310A8C: .word 0x00000DE9 -_02310A90: .word 0x00000DEA -_02310A94: .word 0x00001303 -_02310A98: .word 0x00000DBD -_02310A9C: .word 0x022C46EC -_02310AA0: .word 0x0000025F -_02310AA4: .word 0x022C46A0 -_02310AA8: .word 0x022C466C -_02310AAC: .word 0x022C4610 -_02310AB0: .word 0x022C44D4 -_02310AB4: .word 0x000003E7 -_02310AB8: .word 0x022C4664 -_02310ABC: .word 0x022C464C -_02310AC0: .word 0x022C46A8 -_02310AC4: .word 0x022C44D8 -_02310AC8: .word 0x022C4414 -_02310ACC: .word 0x022C4C9C -_02310AD0: .word 0x022C4454 -_02310AD4: .word 0x022C446C -_02310AD8: .word 0x022C45F0 -_02310ADC: .word 0x022C45D0 -_02310AE0: .word 0x0000024A -_02310AE4: .word 0x022C45E8 -_02310AE8: .word 0x022C4590 -_02310AEC: .word 0x022C44BC -_02310AF0: .word 0x022C46AC -_02310AF4: .word 0x022C4588 -_02310AF8: - cmp r0, #5 - bne _02310B6C - ldrb r0, [r4, #0xcd] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xcd] - ldrb r0, [r4, #0xcd] - cmp r0, #0 - bne _02310B6C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldr r1, _02310AE4 ; =0x022C45E8 - ldr r0, _02310AE8 ; =0x022C4590 - ldrsh r3, [r1] - ldrsh r2, [r0] - mov r0, r5 - mov r1, r5 - strb r3, [r4, #0xcd] - mov r6, #1 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp -_02310B6C: - ldrb r0, [r4, #0xd8] - cmp r0, #1 - bne _02310C28 - ldrb r0, [r4, #0xdc] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xdc] - ldrb r0, [r4, #0xdc] - cmp r0, #0 - bne _02310C0C - ldrsh r2, [r4, #0x12] - ldrsh r1, [r4, #0x16] - ldr r0, _02310AB4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - ldr r1, _02310AEC ; =0x022C44BC - movs r6, r0, asr #2 - ldrsh r1, [r1] - mov r0, #0 - addeq r6, r6, #1 - strb r1, [r4, #0xdc] - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - arm_func_end ov29_0230FC24 - - arm_func_start ov29_02310BDC -ov29_02310BDC: ; 0x02310BDC - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r0, r5 - mov r1, r5 - bl ov29_02307BDC - mov r2, #7 - mov r0, r5 - mov r1, r6 - add r3, r2, #0x244 - bl ov29_0230D11C -_02310C0C: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - arm_func_end ov29_02310BDC - - arm_func_start ov29_02310C18 -ov29_02310C18: ; 0x02310C18 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_02310C28: - ldrb r0, [r4, #0xe0] - cmp r0, #1 - bne _02310DE0 - ldrb r0, [r4, #0xea] - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r4, #0xea] - ldrb r0, [r4, #0xea] - cmp r0, #0 - bne _02310DC4 - ldr r0, _02310A84 ; =0x02353538 - ldrb r2, [r4, #0xe8] - ldr r0, [r0] - ldr r1, _02310AF0 ; =0x022C46AC - add r0, r0, r2, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - ldrsh r1, [r1] - ldr r0, _02310AF4 ; =0x022C4588 - cmp r7, #0 - ldrsh r6, [r0] - strb r1, [r4, #0xea] - moveq r0, #0 - streqb r0, [r4, #0xe0] - beq _02310DC4 - ldr r0, [r7, #0xb4] - ldr r1, [r4, #0xe4] - ldr r0, [r0, #0xb0] - cmp r1, r0 - movne r0, #0 - strneb r0, [r4, #0xe0] - bne _02310DC4 - cmp r7, r5 - beq _02310CF0 - cmp r7, #0 - moveq r0, #0 - beq _02310CD0 - ldr r0, [r7] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_02310CD0: - cmp r0, #0 - beq _02310CF0 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r8, #0 - bne _02310D00 -_02310CF0: - mov r0, r5 - mov r1, #0x3a - bl AbilityIsActive2 - mov r8, r0 -_02310D00: - mov r0, r5 - bl ov29_022EC62C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - mov r0, r7 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldrb r0, [r4, #0xc4] - cmp r0, #1 - beq _02310DC4 - mov r0, r5 - mov r1, r5 - bl ov29_02307BDC - mov r0, r5 - mov r1, r6 - mov r2, #9 - mov r3, #0x24c - bl ov29_0230D11C - cmp r8, #0 - beq _02310D94 - mov r0, r7 - mov r1, r7 - bl ov29_02307BDC - mov r2, #0xd - mov r0, r7 - mov r1, r6 - add r3, r2, #0x22c - bl ov29_0230D11C - b _02310DC4 -_02310D94: - mov r0, r5 - mov r1, #0x73 - bl AbilityIsActive2 - cmp r0, #0 - bne _02310DC4 - mov r8, #1 - mov r0, r7 - mov r1, r7 - mov r2, r6 - mov r3, #0 - str r8, [sp] - bl TryIncreaseHp -_02310DC4: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_02310DE0: - ldrb r0, [r4, #0x106] - cmp r0, #0 - beq _02310E9C - add r0, r4, #6 - add r0, r0, #0x100 - bl TickStatusTurnCounter - ldrb r0, [r4, #0x106] - cmp r0, #0 - bne _02310E9C - mov r0, #0 - bl DisplayActions - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _02310FFC ; =0x00000DEB - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - bl ov29_02307BDC - ldrb r0, [r4, #0xd5] - cmp r0, #7 - bne _02310E6C - ldr r1, _02311000 ; =0x00000DEC - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - b _02310E80 -_02310E6C: - mov r2, #0xb - ldr r1, _02311004 ; =0x0000270F - mov r0, r5 - rsb r3, r2, #0x258 - bl ov29_0230D11C -_02310E80: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 -_02310E9C: - ldrb r0, [r4, #0xd2] - cmp r0, #1 - bne _02310F70 - add r0, r4, #0xd3 - bl TickStatusTurnCounter - ldrb r0, [r4, #0xd3] - cmp r0, #0 - bne _02310F70 - mov r1, #0 - mov r0, r5 - strb r1, [r4, #0xd2] - bl ov29_02300818 - cmp r0, #0 - bne _02310F70 - mov r0, r5 - mov r1, #0 - bl ov29_02300DCC - cmp r0, #0 - bne _02310F70 - mov r0, r5 - bl ov29_02300CB0 - cmp r0, #0 - bne _02310F70 - mov r0, #0 - bl DisplayActions - ldrh r0, [r4, #0xac] - cmp r0, #0 - ldreq r0, _02311008 ; =0x00000165 - streqh r0, [r4, #0xac] - ldrh r1, [r4, #0xac] - add r0, sp, #0x18 - bl InitMove - mov r1, #0 - ldrb r0, [sp, #0x18] - add r6, sp, #0x18 - mov r2, r1 - orr r0, r0, #0x10 - strb r0, [sp, #0x18] - mov r0, r5 - mov r3, r1 - stmia sp, {r1, r6} - bl ov29_02322374 - mov r1, #0 - mov r0, r5 - strh r1, [r4, #0xac] - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r0, #0 - str r0, [r4, #0xb8] -_02310F70: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - ldrb r0, [r4, #0xd2] - cmp r0, #0xc - bne _02310FD0 - add r0, r4, #0xd3 - bl TickStatusTurnCounter - ldrb r0, [r4, #0xd3] - cmp r0, #0 - bne _02310FD0 - mov r0, #0 - strb r0, [r4, #0xd2] - mov r1, r5 - mov r2, r0 - strb r0, [r4, #0x154] - bl SubstitutePlaceholderStringTags - ldr r1, _0231100C ; =0x00000CBA - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_02310FD0: - mov r0, r5 - bl EntityIsValid__02311010 - cmp r0, #0 - beq _02310FF4 - bl IsFloorOver - cmp r0, #0 - bne _02310FF4 - mov r0, r5 - bl TickNoSlipCap -_02310FF4: - add sp, sp, #0x34 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02310FFC: .word 0x00000DEB -_02311000: .word 0x00000DEC -_02311004: .word 0x0000270F -_02311008: .word 0x00000165 -_0231100C: .word 0x00000CBA - arm_func_end ov29_02310C18 - - arm_func_start EntityIsValid__02311010 -EntityIsValid__02311010: ; 0x02311010 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02311010 - - arm_func_start ItemIsActive__02311034 -ItemIsActive__02311034: ; 0x02311034 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__02311034 - - arm_func_start ExclusiveItemEffectIsActive__02311064 -ExclusiveItemEffectIsActive__02311064: ; 0x02311064 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__02311064 - - arm_func_start TickStatusAndHealthRegen -TickStatusAndHealthRegen: ; 0x02311088 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - mov r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl ov29_0234B294 - ldr r7, [sl, #0xb4] - ldrb r0, [r7, #0xbf] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _023110E0 - mov r0, sl - mov r1, #0x72 - bl AbilityIsActive2 - cmp r0, #0 - moveq r4, #1 -_023110E0: - ldrb r0, [r7, #0x150] - cmp r0, #0 - cmpeq r4, #0 - bne _023112A8 - ldrb r0, [r7, #0xd8] - cmp r0, #5 - ldrneb r0, [r7, #0xbd] - cmpne r0, #3 - beq _023112A8 - ldrb r0, [r7, #6] - mov r4, #0 - cmp r0, #0 - bne _02311120 - ldrsh r0, [r7, #2] - bl GetRegenSpeed - mov r4, r0 -_02311120: - cmp r4, #0 - beq _023112A8 - mov r0, sl - mov r1, #0x11 - bl ItemIsActive__02311034 - cmp r0, #0 - bne _02311150 - mov r0, sl - mov r1, #0x35 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231115C -_02311150: - ldr r0, _02311800 ; =0x022C46F8 - ldrsh r0, [r0] - add r4, r4, r0 -_0231115C: - ldrb r0, [r7, #0xd5] - mov r1, #3 - cmp r0, #6 - ldreq r0, _02311804 ; =0x022C46D0 - ldreqsh r0, [r0] - addeq r4, r4, r0 - mov r0, sl - bl AbilityIsActive2 - cmp r0, #0 - beq _0231119C - mov r0, sl - bl GetApparentWeather - cmp r0, #4 - ldreq r0, _02311808 ; =0x022C4578 - ldreqsh r0, [r0] - addeq r4, r4, r0 -_0231119C: - mov r0, sl - mov r1, #0x55 - bl AbilityIsActive2 - cmp r0, #0 - beq _023111C8 - mov r0, sl - bl GetApparentWeather - cmp r0, #4 - ldreq r0, _02311808 ; =0x022C4578 - ldreqsh r0, [r0] - addeq r4, r4, r0 -_023111C8: - mov r0, sl - mov r1, #0x4d - bl AbilityIsActive2 - cmp r0, #0 - beq _023111F4 - mov r0, sl - bl GetApparentWeather - cmp r0, #5 - ldreq r0, _0231180C ; =0x022C4630 - ldreqsh r0, [r0] - addeq r4, r4, r0 -_023111F4: - mov r0, sl - mov r1, #0x49 - bl ExclusiveItemEffectIsActive__02311064 - cmp r0, #0 - ldrne r0, _02311810 ; =0x022C4674 - ldrsh r2, [r7, #0x12] - ldrnesh r0, [r0] - ldrsh r1, [r7, #0x16] - addne r4, r4, r0 - cmp r4, #0x1f4 - movgt r4, #0x1f4 - add r3, r2, r1 - cmp r4, #0x1e - ldr r0, _02311814 ; =0x000003E7 - movlt r4, #0x1e - cmp r3, r0 - movgt r3, r0 - add r0, r7, #0x200 - ldrsh r1, [r0, #0x10] - add r2, r7, #0x210 - add r1, r1, r3 - strh r1, [r0, #0x10] - b _02311268 -_02311250: - ldrsh r1, [r7, #0x10] - add r1, r1, #1 - strh r1, [r7, #0x10] - ldrsh r1, [r2] - sub r1, r1, r4 - strh r1, [r2] -_02311268: - ldrsh r1, [r0, #0x10] - cmp r1, r4 - bge _02311250 - ldrsh r1, [r7, #0x12] - ldrsh r0, [r7, #0x16] - ldr r2, _02311814 ; =0x000003E7 - add r1, r1, r0 - cmp r1, r2 - ldrsh r0, [r7, #0x10] - movle r2, r1 - cmp r0, r2 - blt _023112A8 - ldr r0, _02311814 ; =0x000003E7 - cmp r1, r0 - movgt r1, r0 - strh r1, [r7, #0x10] -_023112A8: - ldrb r0, [r7, #0xbd] - cmp r0, #0 - beq _0231131C - add r0, r7, #0xbe - bl TickStatusTurnCounter - ldrb r0, [r7, #0xbe] - cmp r0, #0 - bne _0231131C - ldr r0, [r7, #0x110] - cmp r0, #1 - ble _02311304 - ldrb r0, [r7, #0xbd] - cmp r0, #4 - bne _02311304 - mov r0, #0 - bl DisplayActions - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02311304: - mov r2, #1 - mov r0, sl - mov r1, sl - mov r3, r2 - str r2, [sp] - bl ov29_02305FDC -_0231131C: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xbf] - cmp r0, #0 - beq _02311364 - add r0, r7, #0xc0 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xc0] - cmp r0, #0 - bne _02311364 - mov r0, sl - mov r1, sl - bl ov29_023061A8 -_02311364: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xc4] - cmp r0, #0 - beq _023113B0 - add r0, r7, #0xcc - bl TickStatusTurnCounter - ldrb r0, [r7, #0xcc] - cmp r0, #0 - bne _023113B0 - mov r0, sl - mov r1, sl - mov r2, #1 - bl EndFrozenClassStatus -_023113B0: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xd0] - cmp r0, #0 - beq _023113F8 - add r0, r7, #0xd1 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xd1] - cmp r0, #0 - bne _023113F8 - mov r0, sl - mov r1, sl - bl EndCringeClassStatus -_023113F8: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xd5] - cmp r0, #0 - beq _02311468 - add r0, r7, #0xd6 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xd5] - cmp r0, #0x10 - bne _02311450 - add r0, r7, #0xd7 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xd7] - cmp r0, #0 - bne _02311450 - mov r0, sl - bl ov29_023183E8 -_02311450: - ldrb r0, [r7, #0xd6] - cmp r0, #0 - bne _02311468 - mov r0, sl - mov r1, sl - bl ov29_023064F4 -_02311468: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xd8] - cmp r0, #0 - beq _023114B8 - add r0, r7, #0xdb - bl TickStatusTurnCounter - ldrb r0, [r7, #0xdb] - cmp r0, #0 - bne _023114B8 - mov r0, sl - mov r1, sl - mov r2, #0 - mov r3, #1 - bl ov29_02306728 -_023114B8: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xe0] - cmp r0, #0 - beq _02311500 - add r0, r7, #0xe9 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xe9] - cmp r0, #0 - bne _02311500 - mov r0, sl - mov r1, sl - bl ov29_023068C4 -_02311500: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xec] - cmp r0, #0 - beq _02311548 - add r0, r7, #0xed - bl TickStatusTurnCounter - ldrb r0, [r7, #0xed] - cmp r0, #0 - bne _02311548 - mov r0, sl - mov r1, sl - bl ov29_02306950 -_02311548: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xef] - cmp r0, #0 - beq _02311594 - add r0, r7, #0xf0 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xf0] - cmp r0, #0 - bne _02311594 - mov r0, sl - mov r1, sl - mov r2, #0 - bl ov29_02306A00 -_02311594: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xf1] - cmp r0, #0 - beq _023115DC - add r0, r7, #0xf2 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xf2] - cmp r0, #0 - bne _023115DC - mov r0, sl - mov r1, sl - bl ov29_02306B28 -_023115DC: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xf3] - cmp r0, #0 - beq _02311624 - add r0, r7, #0xf4 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xf4] - cmp r0, #0 - bne _02311624 - mov r0, sl - mov r1, sl - bl ov29_02306BF8 -_02311624: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xf5] - cmp r0, #0 - beq _0231166C - add r0, r7, #0xf6 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xf6] - cmp r0, #0 - bne _0231166C - mov r0, sl - mov r1, sl - bl ov29_02306C64 -_0231166C: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xf7] - cmp r0, #0 - beq _023116B4 - add r0, r7, #0xf8 - bl TickStatusTurnCounter - ldrb r0, [r7, #0xf8] - cmp r0, #0 - bne _023116B4 - mov r0, sl - mov r1, sl - bl ov29_02306CD0 -_023116B4: - mov r0, sl - bl EntityIsValid__02311010 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsFloorOver - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0x105] - cmp r0, #0 - beq _0231174C - add r0, r7, #5 - add r0, r0, #0x100 - bl TickStatusTurnCounter - ldrb r0, [r7, #0x105] - cmp r0, #0 - bne _0231174C - ldrb r0, [r7, #0x104] - cmp r0, #2 - bne _02311720 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02311818 ; =0x00000CC6 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _02311744 -_02311720: - cmp r0, #1 - bne _02311744 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231181C ; =0x00000CC7 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_02311744: - mov r0, #0 - strb r0, [r7, #0x104] -_0231174C: - mov r6, #0 - add r0, r7, #0x19 - mov sb, r6 - add r5, r0, #0x100 - add r4, r7, #0x114 - mov fp, #1 -_02311764: - add r8, r7, sb - ldrb r0, [r8, #0x119] - cmp r0, #0 - beq _02311788 - add r0, r5, sb - bl TickStatusTurnCounter - ldrb r0, [r8, #0x119] - cmp r0, #0 - moveq r6, fp -_02311788: - ldrb r0, [r8, #0x114] - cmp r0, #0 - beq _023117A8 - add r0, r4, sb - bl TickStatusTurnCounter - ldrb r0, [r8, #0x114] - cmp r0, #0 - moveq r6, #1 -_023117A8: - add sb, sb, #1 - cmp sb, #5 - blt _02311764 - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0xb4] - mov r0, sl - ldr r5, [r1, #0x110] - bl CalcSpeedStageWrapper - mov r4, r0 - cmp r5, r4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, _02311820 ; =0x02353318 - mov r1, r4, lsl #1 - ldrh r1, [r0, r1] - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02311800: .word 0x022C46F8 -_02311804: .word 0x022C46D0 -_02311808: .word 0x022C4578 -_0231180C: .word 0x022C4630 -_02311810: .word 0x022C4674 -_02311814: .word 0x000003E7 -_02311818: .word 0x00000CC6 -_0231181C: .word 0x00000CC7 -_02311820: .word 0x02353318 - arm_func_end TickStatusAndHealthRegen - - arm_func_start InflictSleepStatusSingle -InflictSleepStatusSingle: ; 0x02311824 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r4, #0 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r5, [r7, #0xb4] - ldrb r0, [r5, #0xbd] - cmp r0, #3 - beq _023118A0 - cmp r0, #1 - beq _02311898 - mov r0, #1 - strb r0, [r5, #0xbd] - cmp r6, #0x7f - beq _02311890 - mov r0, r7 - mov r1, #0x2f - bl AbilityIsActive2 - cmp r0, #0 - beq _02311890 - add r0, r6, r6, lsr #31 - mov r6, r0, asr #1 - cmp r6, #1 - movlt r6, #1 -_02311890: - strb r6, [r5, #0xbe] - b _023118A4 -_02311898: - mov r4, #1 - b _023118A4 -_023118A0: - mov r4, #2 -_023118A4: - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end InflictSleepStatusSingle - - arm_func_start EntityIsValid__023118B4 -EntityIsValid__023118B4: ; 0x023118B4 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__023118B4 - - arm_func_start TryInflictSleepStatus -TryInflictSleepStatus: ; 0x023118D8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r4, r3 - mov r2, #1 - mov r3, r2 - mov r7, r0 - mov r6, r1 - str r4, [sp] - bl ov29_023119E4 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #0xbd] - cmp r0, #2 - bne _02311930 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _023119D0 ; =0x00000D09 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02311930: - cmp r0, #5 - bne _02311954 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _023119D4 ; =0x00000D0A - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02311954: - mov r0, r6 - bl ov29_022E3E74 - mov r0, r6 - mov r1, r5 - bl InflictSleepStatusSingle - mov r4, r0 - mov r0, r6 - mov r1, #8 - bl ov29_02304A48 - cmp r4, #1 - bne _02311994 - ldr r2, _023119D8 ; =0x00000D06 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02311994: - cmp r4, #2 - bne _023119B0 - ldr r2, _023119DC ; =0x00000D07 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023119B0: - ldr r2, _023119E0 ; =0x00000D04 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023119D0: .word 0x00000D09 -_023119D4: .word 0x00000D0A -_023119D8: .word 0x00000D06 -_023119DC: .word 0x00000D07 -_023119E0: .word 0x00000D04 - arm_func_end TryInflictSleepStatus - - arm_func_start ov29_023119E4 -ov29_023119E4: ; 0x023119E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - ldr r4, [sp, #0x20] - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #1 - beq _02311B78 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r5, #0 - beq _02311A48 - mov r0, r8 - mov r1, r7 - mov r2, r4 - bl ov29_02301940 - cmp r0, #0 - movne r0, #1 - bne _02311B78 -_02311A48: - cmp r6, #0 - beq _02311A6C - mov r0, r8 - mov r1, r7 - mov r2, r4 - bl ov29_02302430 - cmp r0, #0 - movne r0, #1 - bne _02311B78 -_02311A6C: - mov r0, r7 - mov r1, #0x11 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02311AA0 - cmp r4, #0 - beq _02311A98 - ldr r2, _02311B80 ; =0x00000DA4 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02311A98: - mov r0, #1 - b _02311B78 -_02311AA0: - mov r0, r8 - mov r1, r7 - mov r2, #0x36 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02311ADC - cmp r4, #0 - beq _02311AD4 - ldr r2, _02311B84 ; =0x00000DA5 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02311AD4: - mov r0, #1 - b _02311B78 -_02311ADC: - mov r0, r8 - mov r1, r7 - mov r2, #0x49 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02311B18 - cmp r4, #0 - beq _02311B10 - ldr r2, _02311B88 ; =0x00000DA6 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02311B10: - mov r0, #1 - b _02311B78 -_02311B18: - mov r0, r7 - mov r1, #0x1c - bl ItemIsActive__02311BF8 - cmp r0, #0 - beq _02311B4C - cmp r4, #0 - beq _02311B44 - ldr r2, _02311B8C ; =0x00000DB1 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02311B44: - mov r0, #1 - b _02311B78 -_02311B4C: - ldr r3, _02311B90 ; =0x00000DC2 - mov ip, #0xa - mov r0, r8 - mov r1, r7 - mov r2, r4 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_02311B78: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311B80: .word 0x00000DA4 -_02311B84: .word 0x00000DA5 -_02311B88: .word 0x00000DA6 -_02311B8C: .word 0x00000DB1 -_02311B90: .word 0x00000DC2 - arm_func_end ov29_023119E4 - - arm_func_start DefenderAbilityIsActive__02311B94 -DefenderAbilityIsActive__02311B94: ; 0x02311B94 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _02311BE8 - cmp r0, #0 - moveq r1, #0 - beq _02311BC8 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_02311BC8: - cmp r1, #0 - cmpne r3, #0 - beq _02311BE8 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_02311BE8: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__02311B94 - - arm_func_start ItemIsActive__02311BF8 -ItemIsActive__02311BF8: ; 0x02311BF8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__02311BF8 - - arm_func_start ov29_02311C28 -ov29_02311C28: ; 0x02311C28 - stmdb sp!, {r3, lr} - ldrb ip, [sp, #8] - str ip, [sp] - bl ov29_023119E4 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02311C28 - - arm_func_start TryInflictNightmareStatus -TryInflictNightmareStatus: ; 0x02311C4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r2 - mov r2, #1 - mov r3, r2 - mov r7, r0 - mov r6, r1 - str r2, [sp] - mov r4, #0 - bl ov29_023119E4 - cmp r0, #0 - bne _02311D4C - ldr r5, [r6, #0xb4] - ldrb r0, [r5, #0xbd] - cmp r0, #2 - beq _02311D34 - mov r0, r6 - bl ov29_022E4B8C - ldrb r0, [r5, #0xbd] - cmp r0, #3 - beq _02311CE0 - mov r0, r7 - mov r1, r6 - mov r2, #0x2f - mov r3, #1 - strb r8, [r5, #0xbe] - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02311CE4 - ldrb r0, [r5, #0xbe] - mov r1, r0, asr #1 - and r0, r1, #0xff - cmp r0, #1 - strb r1, [r5, #0xbe] - movlo r0, #1 - strlob r0, [r5, #0xbe] - b _02311CE4 -_02311CE0: - mov r4, #1 -_02311CE4: - mov r2, #3 - mov r0, r6 - mov r1, #8 - strb r2, [r5, #0xbd] - bl ov29_02304A48 - cmp r4, #0 - beq _02311D14 - ldr r2, _02311D54 ; =0x00000D0D - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311D44 -_02311D14: - ldr r2, _02311D58 ; =0x00000D0C - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _02311D44 -_02311D34: - ldr r2, _02311D5C ; =0x00000D0E - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02311D44: - mov r0, r6 - bl UpdateStatusIconFlags -_02311D4C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311D54: .word 0x00000D0D -_02311D58: .word 0x00000D0C -_02311D5C: .word 0x00000D0E - arm_func_end TryInflictNightmareStatus - - arm_func_start TryInflictNappingStatus -TryInflictNappingStatus: ; 0x02311D60 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r4, #0 - mov r6, r2 - mov r5, #1 - mov r2, r4 - mov r3, r4 - mov r8, r0 - mov r7, r1 - str r5, [sp] - bl ov29_023119E4 - cmp r0, #0 - bne _02311E5C - ldr r5, [r7, #0xb4] - ldrb r0, [r5, #0xbd] - cmp r0, #2 - beq _02311E44 - mov r0, r7 - bl ov29_022E4BA0 - ldrb r0, [r5, #0xbd] - cmp r0, #0 - cmpne r0, #4 - bne _02311DFC - mov r0, r8 - mov r1, r7 - mov r2, #0x2f - mov r3, #1 - strb r6, [r5, #0xbe] - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02311E00 - ldrb r0, [r5, #0xbe] - mov r1, r0, asr #1 - and r0, r1, #0xff - cmp r0, #1 - strb r1, [r5, #0xbe] - movlo r0, #1 - strlob r0, [r5, #0xbe] - b _02311E00 -_02311DFC: - mov r4, #1 -_02311E00: - mov r2, #5 - mov r0, r7 - mov r1, #8 - strb r2, [r5, #0xbd] - bl ov29_02304A48 - cmp r4, #0 - beq _02311E30 - ldr r2, _02311E64 ; =0x00000D08 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311E54 -_02311E30: - ldr r2, _02311E68 ; =0x00000D05 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311E54 -_02311E44: - ldr r2, _02311E6C ; =0x00000D0B - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02311E54: - mov r0, r7 - bl UpdateStatusIconFlags -_02311E5C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311E64: .word 0x00000D08 -_02311E68: .word 0x00000D05 -_02311E6C: .word 0x00000D0B - arm_func_end TryInflictNappingStatus - - arm_func_start TryInflictYawningStatus -TryInflictYawningStatus: ; 0x02311E70 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r2 - mov r2, #1 - mov r3, r2 - mov r6, r0 - mov r5, r1 - str r2, [sp] - bl ov29_023119E4 - cmp r0, #0 - bne _02311F6C - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0xbd] - cmp r0, #0 - bne _02311EEC - mov r0, #4 - strb r0, [r1, #0xbd] - mov r0, r5 - strb r4, [r1, #0xbe] - bl ov29_022E53EC - mov r0, r5 - mov r1, #8 - bl ov29_02304A48 - ldr r2, _02311F74 ; =0x00000D0F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02311F64 -_02311EEC: - cmp r0, #1 - cmpne r0, #3 - cmpne r0, #5 - bne _02311F10 - ldr r2, _02311F78 ; =0x00000D12 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311F64 -_02311F10: - cmp r0, #2 - bne _02311F2C - mov r0, r6 - mov r1, r5 - mov r2, #0xd10 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311F64 -_02311F2C: - cmp r0, #4 - bne _02311F48 - ldr r2, _02311F7C ; =0x00000D11 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02311F64 -_02311F48: - ldr r2, _02311F74 ; =0x00000D0F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet -_02311F64: - mov r0, r5 - bl UpdateStatusIconFlags -_02311F6C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02311F74: .word 0x00000D0F -_02311F78: .word 0x00000D12 -_02311F7C: .word 0x00000D11 - arm_func_end TryInflictYawningStatus - - arm_func_start TryInflictSleeplessStatus -TryInflictSleeplessStatus: ; 0x02311F80 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r4, #0 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r5, [r6, #0xb4] - mov r1, r6 - ldrb r0, [r5, #0xbd] - cmp r0, #1 - cmpne r0, #5 - cmpne r0, #3 - mov r0, #0 - mov r2, r0 - moveq r4, #1 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xbd] - cmp r0, #2 - beq _02312040 - ldr r1, _0231205C ; =0x022C4728 - mov r3, #2 - mov r0, r6 - mov r2, #0 - strb r3, [r5, #0xbd] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r5, #0xbe] - mov r1, #0xff - strb r1, [r5, #0x178] - mov r0, r6 - strb r1, [r5, #0x177] - bl ov29_022E4BB4 - mov r0, r6 - mov r1, #8 - bl ov29_02304A48 - cmp r4, #0 - beq _0231202C - ldr r2, _02312060 ; =0x00000D13 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0231202C: - ldr r2, _02312064 ; =0x00000D15 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02312050 -_02312040: - ldr r2, _02312068 ; =0x00000D14 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02312050: - mov r0, r6 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0231205C: .word 0x022C4728 -_02312060: .word 0x00000D13 -_02312064: .word 0x00000D15 -_02312068: .word 0x00000D14 - arm_func_end TryInflictSleeplessStatus - - arm_func_start TryInflictPausedStatus -TryInflictPausedStatus: ; 0x0231206C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r4, r2 - mov r5, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - ldr r4, [r6, #0xb4] - beq _023120BC - ldrb r2, [sp, #0x18] - mov r0, r7 - mov r1, r6 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_023120BC: - ldrb r2, [sp, #0x18] - mov r0, r7 - mov r1, r6 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [sp, #0x1c] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_0234B034 - mov r1, #0 - mov r2, r4 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldrb r0, [r4, #0xd0] - cmp r0, #3 - beq _02312160 - mov r1, #3 - mov r0, r6 - strb r1, [r4, #0xd0] - add r1, r5, #1 - strb r1, [r4, #0xd1] - bl ov29_022E4428 - cmp r5, #1 - bne _02312140 - ldr r2, _0231219C ; =0x00000D16 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02312150 -_02312140: - ldr r2, _023121A0 ; =0x00000D18 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02312150: - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _0231218C -_02312160: - cmp r5, #1 - bne _0231217C - ldr r2, _023121A4 ; =0x00000D17 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231218C -_0231217C: - ldr r2, _023121A8 ; =0x00000D19 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0231218C: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0231219C: .word 0x00000D16 -_023121A0: .word 0x00000D18 -_023121A4: .word 0x00000D17 -_023121A8: .word 0x00000D19 - arm_func_end TryInflictPausedStatus - - arm_func_start TryInflictInfatuatedStatus -TryInflictInfatuatedStatus: ; 0x023121AC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r8, r2 - mov r7, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - beq _0231231C - mov r0, r5 - mov r1, r4 - mov r2, r8 - ldr r6, [r4, #0xb4] - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - bne _0231231C - mov r0, r5 - mov r1, r4 - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - bne _0231231C - mov r0, r5 - mov r1, r4 - mov r2, #0x29 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02312260 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r8, #0 - beq _02312258 - ldr r2, _02312324 ; =0x00000DA3 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02312258: - mov r0, #0 - b _0231231C -_02312260: - ldr r3, _02312328 ; =0x00000DBB - mov ip, #3 - mov r0, r5 - mov r1, r4 - mov r2, r8 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #0 - bne _0231231C - cmp r7, #0 - movne r0, #1 - bne _0231231C - bl ov29_0234B034 - mov r1, #0 - mov r2, r6 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldrb r0, [r6, #0xd0] - cmp r0, #7 - beq _02312300 - ldr r1, _0231232C ; =0x022C4804 - mov r3, #7 - mov r0, r4 - mov r2, #1 - strb r3, [r6, #0xd0] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r4 - strb r1, [r6, #0xd1] - bl ov29_022E4C00 - ldr r2, _02312330 ; =0x00000D1A - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - mov r1, r4 - bl TryActivateQuickFeet - b _02312310 -_02312300: - ldr r2, _02312334 ; =0x00000D1B - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02312310: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 -_0231231C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02312324: .word 0x00000DA3 -_02312328: .word 0x00000DBB -_0231232C: .word 0x022C4804 -_02312330: .word 0x00000D1A -_02312334: .word 0x00000D1B - arm_func_end TryInflictInfatuatedStatus - - arm_func_start TryInflictBurnStatus -TryInflictBurnStatus: ; 0x02312338 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r4, r2 - mov r8, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r7, [sb, #0xb4] - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r0, sl - mov r1, sb - mov r2, #0x42 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _023123F0 - cmp r8, #0 - beq _023123E8 - ldr r2, _023125F0 ; =0x00000DAB - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_023123E8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023123F0: - mov r0, sb - mov r1, #2 - bl MonsterIsType - cmp r0, #0 - beq _02312424 - cmp r8, #0 - beq _0231241C - ldr r2, _023125F4 ; =0x00000DAC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231241C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312424: - mov r0, sb - bl GetTileAtEntity - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - bne _0231247C - ldr r0, _023125F8 ; =0x02353538 - ldr r1, _023125FC ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - beq _0231247C - cmp r8, #0 - beq _02312474 - ldr r2, _02312600 ; =0x00000DB9 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312474: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231247C: - ldrb r0, [sp, #0x28] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xbf] - mov r5, #1 - cmp r0, #1 - beq _023124F4 - ldr r1, _02312604 ; =0x022C4874 - mov r0, sb - mov r2, r5 - strb r5, [r7, #0xbf] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xc0] - mov r5, #0 - strb r5, [r7, #0xc1] - strb r5, [r7, #0xc2] - cmp r4, #0 - beq _023124D4 - mov r0, sb - bl ov29_022E4294 -_023124D4: - ldr r2, _02312608 ; =0x00000D1C - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet - b _02312504 -_023124F4: - ldr r2, _0231260C ; =0x00000D1D - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312504: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, sb - mov r1, #0x19 - bl AbilityIsActive2 - cmp r0, #0 - beq _023125E8 - cmp r5, #0 - bne _023125E8 - mov r5, #0 - ldr fp, _02312610 ; =0x0235171C - mov r4, r5 -_02312534: - mov r1, r4, lsl #2 - add r0, fp, r4, lsl #2 - ldrsh r3, [fp, r1] - ldrsh r1, [r0, #2] - ldrsh r0, [sb, #4] - ldrsh r2, [sb, #6] - add r0, r0, r3 - add r1, r2, r1 - bl GetTile - ldr r6, [r0, #0xc] - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023125DC - ldr r0, [r6] - cmp r0, #1 - bne _023125DC - cmp r5, #0 - bne _023125AC - mov r5, #1 - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldr r2, _02312614 ; =0x00000DC5 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_023125AC: - mov r0, sb - mov r1, r6 - bl ov29_023018AC - cmp r0, #1 - bne _023125DC - mov r2, #0 - str r2, [sp] - mov r0, sl - mov r1, r6 - mov r2, #1 - mov r3, r8 - bl TryInflictBurnStatus -_023125DC: - add r4, r4, #1 - cmp r4, #8 - blt _02312534 -_023125E8: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023125F0: .word 0x00000DAB -_023125F4: .word 0x00000DAC -_023125F8: .word 0x02353538 -_023125FC: .word 0x020A1AE8 -_02312600: .word 0x00000DB9 -_02312604: .word 0x022C4874 -_02312608: .word 0x00000D1C -_0231260C: .word 0x00000D1D -_02312610: .word 0x0235171C -_02312614: .word 0x00000DC5 - arm_func_end TryInflictBurnStatus - - arm_func_start TryInflictBurnStatusWholeTeam -TryInflictBurnStatusWholeTeam: ; 0x02312618 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - ldr r4, _02312660 ; =0x02353538 - mov r6, r7 - mov r5, #1 -_0231262C: - ldr r0, [r4] - mov r2, r5 - add r0, r0, r7, lsl #2 - str r6, [sp] - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - mov r3, r5 - mov r1, r0 - bl TryInflictBurnStatus - add r7, r7, #1 - cmp r7, #4 - blt _0231262C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02312660: .word 0x02353538 - arm_func_end TryInflictBurnStatusWholeTeam - - arm_func_start TryInflictPoisonedStatus -TryInflictPoisonedStatus: ; 0x02312664 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r4, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r7, [sb, #0xb4] - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r0, sb - mov r1, #0x1b - bl ItemIsActive__02311BF8 - cmp r0, #0 - beq _02312714 - cmp r8, #0 - beq _0231270C - mov r0, sl - mov r1, sb - mov r2, #0xdb0 - bl LogMessageByIdWithPopupCheckUserTarget -_0231270C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312714: - mov r0, sl - mov r1, sb - mov r2, #0x45 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02312750 - cmp r8, #0 - beq _02312748 - ldr r2, _02312924 ; =0x00000DAD - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312748: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312750: - mov r0, sb - mov r1, #8 - bl MonsterIsType - cmp r0, #0 - bne _02312778 - mov r0, sb - mov r1, #0x11 - bl MonsterIsType - cmp r0, #0 - beq _02312798 -_02312778: - cmp r8, #0 - beq _02312790 - ldr r2, _02312928 ; =0x00000DAE - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312790: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312798: - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xbf] - mov r4, #1 - cmp r0, #3 - beq _02312830 - cmp r0, #2 - beq _0231281C - ldr r1, _0231292C ; =0x022C4878 - mov r3, #2 - mov r0, sb - mov r2, r4 - strb r3, [r7, #0xbf] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xc0] - mov r4, #0 - strb r4, [r7, #0xc1] - mov r0, sb - strb r4, [r7, #0xc2] - bl ov29_022E4388 - ldr r2, _02312930 ; =0x00000D1E - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sb - mov r1, #8 - bl ov29_02304A84 - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet - b _02312840 -_0231281C: - mov r0, sl - mov r1, sb - mov r2, #0xd20 - bl LogMessageByIdWithPopupCheckUserTarget - b _02312840 -_02312830: - mov r0, sl - mov r1, sb - add r2, r4, #0xd20 - bl LogMessageByIdWithPopupCheckUserTarget -_02312840: - mov r0, sb - mov r1, #0x19 - bl AbilityIsActive2 - cmp r0, #0 - beq _02312914 - cmp r4, #0 - bne _02312914 - mov r5, #0 - ldr fp, _02312934 ; =0x0235171C - mov r4, r5 -_02312868: - mov r1, r4, lsl #2 - add r0, fp, r4, lsl #2 - ldrsh r6, [sb, #4] - ldrsh r3, [fp, r1] - ldrsh r1, [r0, #2] - ldrsh r2, [sb, #6] - add r0, r6, r3 - add r1, r2, r1 - bl GetTile - ldr r6, [r0, #0xc] - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02312908 - ldr r0, [r6] - cmp r0, #1 - bne _02312908 - cmp r5, #0 - bne _023128E0 - mov r5, #1 - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldr r2, _02312938 ; =0x00000DC5 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_023128E0: - mov r0, sb - mov r1, r6 - bl ov29_023018AC - cmp r0, #1 - bne _02312908 - mov r0, sl - mov r1, r6 - mov r2, r8 - mov r3, #0 - bl TryInflictPoisonedStatus -_02312908: - add r4, r4, #1 - cmp r4, #8 - blt _02312868 -_02312914: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02312924: .word 0x00000DAD -_02312928: .word 0x00000DAE -_0231292C: .word 0x022C4878 -_02312930: .word 0x00000D1E -_02312934: .word 0x0235171C -_02312938: .word 0x00000DC5 - arm_func_end TryInflictPoisonedStatus - - arm_func_start TryInflictBadlyPoisonedStatus -TryInflictBadlyPoisonedStatus: ; 0x0231293C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r4, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r7, [sb, #0xb4] - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - mov r0, sb - mov r1, #0x1b - bl ItemIsActive__02311BF8 - cmp r0, #0 - beq _023129EC - cmp r8, #0 - beq _023129E4 - mov r0, sl - mov r1, sb - mov r2, #0xdb0 - bl LogMessageByIdWithPopupCheckUserTarget -_023129E4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023129EC: - mov r0, sl - mov r1, sb - mov r2, #0x45 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02312A28 - cmp r8, #0 - beq _02312A20 - ldr r2, _02312BE0 ; =0x00000DAD - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312A20: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312A28: - mov r0, sb - mov r1, #8 - bl MonsterIsType - cmp r0, #0 - bne _02312A50 - mov r0, sb - mov r1, #0x11 - bl MonsterIsType - cmp r0, #0 - beq _02312A70 -_02312A50: - cmp r8, #0 - beq _02312A68 - ldr r2, _02312BE4 ; =0x00000DAE - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312A68: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02312A70: - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [r7, #0xbf] - mov r4, #1 - cmp r0, #3 - beq _02312AEC - ldr r1, _02312BE8 ; =0x022C4880 - mov r3, #3 - mov r0, sb - mov r2, r4 - strb r3, [r7, #0xbf] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xc0] - mov r4, #0 - strb r4, [r7, #0xc1] - mov r0, sb - strb r4, [r7, #0xc2] - bl ov29_022E43D8 - ldr r2, _02312BEC ; =0x00000D1F - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sb - mov r1, #8 - bl ov29_02304A84 - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet - b _02312AFC -_02312AEC: - mov r0, sl - mov r1, sb - add r2, r4, #0xd20 - bl LogMessageByIdWithPopupCheckUserTarget -_02312AFC: - mov r0, sb - mov r1, #0x19 - bl AbilityIsActive2 - cmp r0, #0 - beq _02312BD0 - cmp r4, #0 - bne _02312BD0 - mov r5, #0 - ldr fp, _02312BF0 ; =0x0235171C - mov r4, r5 -_02312B24: - mov r1, r4, lsl #2 - add r0, fp, r4, lsl #2 - ldrsh r6, [sb, #4] - ldrsh r3, [fp, r1] - ldrsh r1, [r0, #2] - ldrsh r2, [sb, #6] - add r0, r6, r3 - add r1, r2, r1 - bl GetTile - ldr r6, [r0, #0xc] - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02312BC4 - ldr r0, [r6] - cmp r0, #1 - bne _02312BC4 - cmp r5, #0 - bne _02312B9C - mov r5, #1 - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldr r2, _02312BF4 ; =0x00000DC5 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02312B9C: - mov r0, sb - mov r1, r6 - bl ov29_023018AC - cmp r0, #1 - bne _02312BC4 - mov r0, sl - mov r1, r6 - mov r2, r8 - mov r3, #0 - bl TryInflictBadlyPoisonedStatus -_02312BC4: - add r4, r4, #1 - cmp r4, #8 - blt _02312B24 -_02312BD0: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02312BE0: .word 0x00000DAD -_02312BE4: .word 0x00000DAE -_02312BE8: .word 0x022C4880 -_02312BEC: .word 0x00000D1F -_02312BF0: .word 0x0235171C -_02312BF4: .word 0x00000DC5 - arm_func_end TryInflictBadlyPoisonedStatus - - arm_func_start TryInflictFrozenStatus -TryInflictFrozenStatus: ; 0x02312BF8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r4, [r6, #0xb4] - ldrb r0, [r4, #0xc4] - cmp r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02301940 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02302430 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov ip, #4 - mov r0, r7 - mov r1, r6 - mov r2, r5 - rsb r3, ip, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #0x41 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02312CC4 - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _02312E00 ; =0x00000DA8 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02312CC4: - mov r0, r6 - mov r1, #6 - bl MonsterIsType - cmp r0, #0 - beq _02312CF4 - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _02312E04 ; =0x00000DA9 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02312CF4: - mov r0, r6 - bl GetTileAtEntity - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - bne _02312D48 - ldr r0, _02312E08 ; =0x02353538 - ldr r1, _02312E0C ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - bne _02312D48 - cmp r5, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _02312E10 ; =0x00000DAA - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02312D48: - mov ip, #4 - mov r0, r7 - mov r1, r6 - mov r2, r5 - rsb r3, ip, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r4, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _02312D88 - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters -_02312D88: - mov r0, r6 - bl ov29_022E4C4C - mov r2, #1 - ldr r1, _02312E14 ; =0x022C4870 - mov r0, r6 - strb r2, [r4, #0xc4] - bl CalcStatusDuration - add r3, r0, #1 - strb r3, [r4, #0xcc] - mov r3, #0 - ldr r2, _02312E18 ; =0x00000D22 - mov r0, r7 - mov r1, r6 - strb r3, [r4, #0xcd] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - mov r0, r6 - mov r1, #0 - bl ov29_0231B4EC - cmp r0, #3 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r2, _02312E1C ; =0x00000D23 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02312E00: .word 0x00000DA8 -_02312E04: .word 0x00000DA9 -_02312E08: .word 0x02353538 -_02312E0C: .word 0x020A1AE8 -_02312E10: .word 0x00000DAA -_02312E14: .word 0x022C4870 -_02312E18: .word 0x00000D22 -_02312E1C: .word 0x00000D23 - arm_func_end TryInflictFrozenStatus - - arm_func_start TryInflictConstrictionStatus -TryInflictConstrictionStatus: ; 0x02312E20 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, [r6, #0xb4] - ldrb r1, [r4, #0xc4] - add r0, r1, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _02312EA4 - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters - b _02312ECC -_02312EA4: - cmp r1, #5 - bne _02312ECC - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02312F68 ; =0x00000C9B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02312ECC: - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xc4] - cmp r0, #7 - beq _02312F48 - ldr r1, _02312F6C ; =0x022C48A0 - mov r3, #7 - mov r0, r6 - mov r2, #1 - strb r3, [r4, #0xc4] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r4, #0xcc] - mov r0, #0 - strb r0, [r4, #0xcd] - mov r0, r6 - str r5, [r4, #0xc8] - bl ov29_022E42E4 - ldr r2, _02312F70 ; =0x00000D24 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, #8 - bl ov29_02304A84 - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _02312F58 -_02312F48: - ldr r2, _02312F74 ; =0x00000D25 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02312F58: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02312F68: .word 0x00000C9B -_02312F6C: .word 0x022C48A0 -_02312F70: .word 0x00000D24 -_02312F74: .word 0x00000D25 - arm_func_end TryInflictConstrictionStatus - - arm_func_start TryInflictShadowHoldStatus -TryInflictShadowHoldStatus: ; 0x02312F78 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #0x2b - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _0231302C - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, #0x2b - bl ov29_0234B084 - cmp r4, #0 - bne _02313024 - ldr r2, _0231311C ; =0x00000D28 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02313024: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0231302C: - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r4, [r5, #0xb4] - ldrb r1, [r4, #0xc4] - add r0, r1, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _0231305C - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters - b _02313084 -_0231305C: - cmp r1, #5 - bne _02313084 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02313120 ; =0x00000C9B - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02313084: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xc4] - cmp r0, #2 - beq _023130FC - ldr r1, _02313124 ; =0x022C4898 - mov r3, #2 - mov r0, r5 - mov r2, #1 - strb r3, [r4, #0xc4] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xcc] - mov r1, #0 - strb r1, [r4, #0xcd] - bl ov29_022E42E0 - ldr r2, _02313128 ; =0x00000D26 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - mov r1, #8 - bl ov29_02304A84 - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _0231310C -_023130FC: - ldr r2, _0231312C ; =0x00000D27 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0231310C: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231311C: .word 0x00000D28 -_02313120: .word 0x00000C9B -_02313124: .word 0x022C4898 -_02313128: .word 0x00000D26 -_0231312C: .word 0x00000D27 - arm_func_end TryInflictShadowHoldStatus - - arm_func_start TryInflictIngrainStatus -TryInflictIngrainStatus: ; 0x02313130 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _0231316C - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters -_0231316C: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xc4] - cmp r0, #5 - beq _023131CC - ldr r1, _023131E8 ; =0x022C48B8 - mov r3, #5 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xc4] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xcc] - mov r1, #0 - strb r1, [r4, #0xcd] - bl ov29_022E4D24 - ldr r2, _023131EC ; =0x00000D29 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023131DC -_023131CC: - ldr r2, _023131F0 ; =0x00000D2A - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023131DC: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023131E8: .word 0x022C48B8 -_023131EC: .word 0x00000D29 -_023131F0: .word 0x00000D2A - arm_func_end TryInflictIngrainStatus - - arm_func_start TryInflictWrappedStatus -TryInflictWrappedStatus: ; 0x023131F4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, [r7, #0xb4] - ldr r5, [r6, #0xb4] - ldrb r1, [r4, #0xc4] - cmp r1, #3 - cmpne r1, #4 - ldrneb r0, [r5, #0xc4] - cmpne r0, #3 - cmpne r0, #4 - beq _02313324 - mov r0, #3 - strb r0, [r4, #0xc4] - mov r0, #0x7f - strb r0, [r4, #0xcc] - mov r2, #0 - ldr r1, _023133DC ; =0x022C48AC - mov r0, r6 - strb r2, [r4, #0xcd] - mov r3, #4 - mov r2, #1 - strb r3, [r5, #0xc4] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r5, #0xcc] - mov r0, #0 - ldr r3, _023133E0 ; =0x02353538 - strb r0, [r5, #0xcd] - ldr r1, [r3] - mov r0, r7 - add r1, r1, #0x3000 - ldr r2, [r1, #0xe30] - mov r1, r6 - str r2, [r4, #0xb4] - ldr r2, [r3] - add r2, r2, #0x3000 - ldr r2, [r2, #0xe30] - str r2, [r5, #0xb4] - ldr r2, [r3] - add r2, r2, #0x3000 - ldr r3, [r2, #0xe30] - add r3, r3, #1 - str r3, [r2, #0xe30] - bl ov29_022E4290 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023133E4 ; =0x00000D2B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, #8 - bl ov29_02304A84 - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _023133D0 -_02313324: - cmp r1, #3 - bne _0231334C - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023133E8 ; =0x00000D2C - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0231334C: - ldrb r0, [r5, #0xc4] - cmp r0, #3 - bne _02313378 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023133E8 ; =0x00000D2C - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02313378: - ldrb r0, [r4, #0xc4] - cmp r0, #4 - bne _023133A4 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023133EC ; =0x00000D2D - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023133A4: - ldrb r0, [r5, #0xc4] - cmp r0, #4 - bne _023133D0 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023133EC ; =0x00000D2D - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023133D0: - mov r0, r6 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023133DC: .word 0x022C48AC -_023133E0: .word 0x02353538 -_023133E4: .word 0x00000D2B -_023133E8: .word 0x00000D2C -_023133EC: .word 0x00000D2D - arm_func_end TryInflictWrappedStatus - - arm_func_start FreeOtherWrappedMonsters -FreeOtherWrappedMonsters: ; 0x023133F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, #0 - ldr r7, _02313468 ; =0x02353538 - mov r6, r0 - mov sb, r4 - mov r8, r4 -_02313408: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02313458 - ldr r1, [r5, #0xb4] - ldr r0, [r1, #0xb4] - cmp r0, r6 - bne _02313450 - ldrb r0, [r1, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - strlsb sb, [r1, #0xc4] - str r8, [r1, #0xb4] -_02313450: - mov r0, r5 - bl UpdateStatusIconFlags -_02313458: - add r4, r4, #1 - cmp r4, #0x14 - blt _02313408 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02313468: .word 0x02353538 - arm_func_end FreeOtherWrappedMonsters - - arm_func_start TryInflictPetrifiedStatus -TryInflictPetrifiedStatus: ; 0x0231346C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r5 - bl ov29_022E41F0 - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xc4] - add r0, r0, #0xfd - and r0, r0, #0xff - cmp r0, #1 - bhi _023134E0 - ldr r0, [r4, #0xb4] - bl FreeOtherWrappedMonsters -_023134E0: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xc4] - cmp r0, #6 - beq _02313560 - mov r0, #6 - strb r0, [r4, #0xc4] - ldrb r0, [r4, #7] - mov r2, #1 - cmp r0, #0 - beq _02313524 - ldr r1, _023135E8 ; =0x022C479C - mov r0, r5 - bl CalcStatusDuration - b _02313530 -_02313524: - ldr r1, _023135EC ; =0x022C47A0 - mov r0, r5 - bl CalcStatusDuration -_02313530: - add r0, r0, #1 - strb r0, [r4, #0xcc] - mov r3, #0 - ldr r2, _023135F0 ; =0x00000D32 - mov r0, r6 - mov r1, r5 - strb r3, [r4, #0xcd] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02313570 -_02313560: - ldr r2, _023135F4 ; =0x00000D33 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02313570: - ldrb r0, [r4, #6] - cmp r0, #0 - beq _023135DC - mov r4, #0 - ldr r6, _023135F8 ; =0x02353538 - mov r8, #6 - mov r7, r4 -_0231358C: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] - mov r0, sb - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023135D0 - ldr r1, [sb, #0xb4] - ldrb r0, [r1, #0x7c] - cmp r0, #1 - ldreq r0, [r1, #0x84] - cmpeq r0, r5 - streqb r8, [r1, #0x7c] - streq r7, [r1, #0x84] - streqh r7, [r1, #0x80] - streqb r7, [r1, #0x7e] -_023135D0: - add r4, r4, #1 - cmp r4, #4 - blt _0231358C -_023135DC: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023135E8: .word 0x022C479C -_023135EC: .word 0x022C47A0 -_023135F0: .word 0x00000D32 -_023135F4: .word 0x00000D33 -_023135F8: .word 0x02353538 - arm_func_end TryInflictPetrifiedStatus - - arm_func_start LowerOffensiveStat -LowerOffensiveStat: ; 0x023135FC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - bl sub_02025888 - mov r6, r0 - bl sub_02025888 - mov r4, r0 - mov r1, r5, lsl #0x10 - mov r0, r7 - mov r5, r1, asr #0x10 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023137E8 - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _02313660 - ldr r1, _023137F4 ; =0x00000DCB - mov r0, r6 - bl sub_020258E4 - mov r1, r6 - mov r0, #1 - bl ov29_0234B0B4 - b _02313678 -_02313660: - ldr r1, _023137F8 ; =0x00000DCA - mov r0, r6 - bl sub_020258E4 - mov r1, r6 - mov r0, #1 - bl ov29_0234B0B4 -_02313678: - ldrb r0, [sp, #0x28] - cmp r0, #0 - beq _02313720 - ldrb r2, [sp, #0x2c] - mov r0, r8 - mov r1, r7 - bl ov29_02301B2C - cmp r0, #0 - bne _023137E8 - mov r0, r7 - mov r1, #0x12 - bl ItemIsActive__02311BF8 - cmp r0, #0 - beq _023136D4 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023137FC ; =0x00000DB2 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _023137E8 -_023136D4: - mov r0, r8 - mov r1, r7 - mov r2, #9 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02313720 - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _02313720 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02313800 ; =0x00000D9E - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _023137E8 -_02313720: - mov r0, #0 - mov r1, r7 - mov r2, r0 - ldr r6, [r7, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x20 - ldr r1, [r1] - mov r0, r7 - bl ov29_022E4D28 - mov r0, r7 - mov r1, #0x61 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, r5, lsl #0x11 - movne r5, r0, asr #0x10 - cmp r5, #1 - bne _02313780 - ldr r1, _02313804 ; =0x00000DCD - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #2 - bl ov29_0234B0B4 - b _02313798 -_02313780: - ldr r1, _02313808 ; =0x00000DCC - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #2 - bl ov29_0234B0B4 -_02313798: - ldr r1, [sp, #0x20] - add r0, r6, r1, lsl #1 - ldrsh r0, [r0, #0x24] - subs r4, r0, r5 - movmi r4, #0 - cmp r4, r0 - beq _023137D0 - ldr r2, _0231380C ; =0x00000D91 - add r3, r6, r1, lsl #1 - mov r0, r8 - mov r1, r7 - strh r4, [r3, #0x24] - bl LogMessageByIdWithPopupCheckUserTarget - b _023137E0 -_023137D0: - ldr r2, _02313810 ; =0x00000DD9 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_023137E0: - mov r0, r7 - bl UpdateStatusIconFlags -_023137E8: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_023137F4: .word 0x00000DCB -_023137F8: .word 0x00000DCA -_023137FC: .word 0x00000DB2 -_02313800: .word 0x00000D9E -_02313804: .word 0x00000DCD -_02313808: .word 0x00000DCC -_0231380C: .word 0x00000D91 -_02313810: .word 0x00000DD9 - arm_func_end LowerOffensiveStat - - arm_func_start LowerDefensiveStat -LowerDefensiveStat: ; 0x02313814 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - mov r5, r3 - mov r8, r0 - bl sub_02025888 - mov r6, r0 - bl sub_02025888 - mov r4, r0 - mov r1, r5, lsl #0x10 - mov r0, r7 - mov r5, r1, asr #0x10 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _0231397C - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _02313878 - ldr r1, _02313988 ; =0x00000DC9 - mov r0, r6 - bl sub_020258E4 - mov r1, r6 - mov r0, #1 - bl ov29_0234B0B4 - b _02313890 -_02313878: - ldr r1, _0231398C ; =0x00000DC8 - mov r0, r6 - bl sub_020258E4 - mov r1, r6 - mov r0, #1 - bl ov29_0234B0B4 -_02313890: - ldrb r0, [sp, #0x28] - cmp r0, #0 - beq _023138B4 - ldrb r2, [sp, #0x2c] - mov r0, r8 - mov r1, r7 - bl ov29_02301B2C - cmp r0, #0 - bne _0231397C -_023138B4: - mov r0, #0 - mov r1, r7 - mov r2, r0 - ldr r6, [r7, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x20 - ldr r1, [r1] - mov r0, r7 - bl ov29_022E4DCC - mov r0, r7 - mov r1, #0x61 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, r5, lsl #0x11 - movne r5, r0, asr #0x10 - cmp r5, #1 - bne _02313914 - ldr r1, _02313990 ; =0x00000DCD - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #2 - bl ov29_0234B0B4 - b _0231392C -_02313914: - ldr r1, _02313994 ; =0x00000DCC - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #2 - bl ov29_0234B0B4 -_0231392C: - ldr r1, [sp, #0x20] - add r0, r6, r1, lsl #1 - ldrsh r0, [r0, #0x28] - subs r4, r0, r5 - movmi r4, #0 - cmp r4, r0 - beq _02313964 - add r3, r6, r1, lsl #1 - mov r0, r8 - mov r1, r7 - mov r2, #0xd90 - strh r4, [r3, #0x28] - bl LogMessageByIdWithPopupCheckUserTarget - b _02313974 -_02313964: - ldr r2, _02313998 ; =0x00000DD7 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02313974: - mov r0, r7 - bl UpdateStatusIconFlags -_0231397C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02313988: .word 0x00000DC9 -_0231398C: .word 0x00000DC8 -_02313990: .word 0x00000DCD -_02313994: .word 0x00000DCC -_02313998: .word 0x00000DD7 - arm_func_end LowerDefensiveStat - - arm_func_start BoostOffensiveStat -BoostOffensiveStat: ; 0x0231399C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov r6, r3 - mov sb, r0 - bl sub_02025888 - mov r4, r0 - bl sub_02025888 - mov r5, r0 - mov r1, r6, lsl #0x10 - mov r0, r8 - mov r6, r1, asr #0x10 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02313AE4 - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r7, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x28 - ldr r1, [r1] - mov r0, r8 - bl ov29_022E4E74 - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _02313A24 - ldr r1, _02313AF0 ; =0x00000DCB - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 - b _02313A3C -_02313A24: - ldr r1, _02313AF4 ; =0x00000DCA - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 -_02313A3C: - mov r0, r8 - mov r1, #0x61 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, r6, lsl #0x11 - movne r6, r0, asr #0x10 - cmp r6, #1 - bne _02313A78 - ldr r1, _02313AF8 ; =0x00000DCD - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, #2 - bl ov29_0234B0B4 - b _02313A90 -_02313A78: - ldr r1, _02313AFC ; =0x00000DCC - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, #2 - bl ov29_0234B0B4 -_02313A90: - ldr r1, [sp, #0x28] - add r0, r7, r1, lsl #1 - ldrsh r0, [r0, #0x24] - add r4, r0, r6 - cmp r4, #0x14 - movge r4, #0x14 - cmp r4, r0 - beq _02313ACC - ldr r2, _02313B00 ; =0x00000D8F - add r3, r7, r1, lsl #1 - mov r0, sb - mov r1, r8 - strh r4, [r3, #0x24] - bl LogMessageByIdWithPopupCheckUserTarget - b _02313ADC -_02313ACC: - ldr r2, _02313B04 ; =0x00000DD8 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_02313ADC: - mov r0, r8 - bl UpdateStatusIconFlags -_02313AE4: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02313AF0: .word 0x00000DCB -_02313AF4: .word 0x00000DCA -_02313AF8: .word 0x00000DCD -_02313AFC: .word 0x00000DCC -_02313B00: .word 0x00000D8F -_02313B04: .word 0x00000DD8 - arm_func_end BoostOffensiveStat - - arm_func_start BoostDefensiveStat -BoostDefensiveStat: ; 0x02313B08 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov r6, r3 - mov sb, r0 - bl sub_02025888 - mov r4, r0 - bl sub_02025888 - mov r5, r0 - mov r1, r6, lsl #0x10 - mov r0, r8 - mov r6, r1, asr #0x10 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02313C50 - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r7, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x28 - ldr r1, [r1] - mov r0, r8 - bl ov29_022E4F1C - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _02313B90 - ldr r1, _02313C5C ; =0x00000DC9 - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 - b _02313BA8 -_02313B90: - ldr r1, _02313C60 ; =0x00000DC8 - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 -_02313BA8: - mov r0, r8 - mov r1, #0x61 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, r6, lsl #0x11 - movne r6, r0, asr #0x10 - cmp r6, #1 - bne _02313BE4 - ldr r1, _02313C64 ; =0x00000DCD - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, #2 - bl ov29_0234B0B4 - b _02313BFC -_02313BE4: - ldr r1, _02313C68 ; =0x00000DCC - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, #2 - bl ov29_0234B0B4 -_02313BFC: - ldr r1, [sp, #0x28] - add r0, r7, r1, lsl #1 - ldrsh r0, [r0, #0x28] - add r4, r0, r6 - cmp r4, #0x14 - movge r4, #0x14 - cmp r4, r0 - beq _02313C38 - ldr r2, _02313C6C ; =0x00000D8E - add r3, r7, r1, lsl #1 - mov r0, sb - mov r1, r8 - strh r4, [r3, #0x28] - bl LogMessageByIdWithPopupCheckUserTarget - b _02313C48 -_02313C38: - ldr r2, _02313C70 ; =0x00000DD6 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_02313C48: - mov r0, r8 - bl UpdateStatusIconFlags -_02313C50: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02313C5C: .word 0x00000DC9 -_02313C60: .word 0x00000DC8 -_02313C64: .word 0x00000DCD -_02313C68: .word 0x00000DCC -_02313C6C: .word 0x00000D8E -_02313C70: .word 0x00000DD6 - arm_func_end BoostDefensiveStat - - arm_func_start ov29_02313C74 -ov29_02313C74: ; 0x02313C74 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0x6b - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #0x48 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0xb4] - ldrsh r0, [r0, #0x30] - cmp r0, #2 - movge r0, #1 - movlt r0, #2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02313C74 - - arm_func_start ov29_02313CE4 -ov29_02313CE4: ; 0x02313CE4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r0, r5 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrsh r0, [r4, #0x30] - add r1, r0, #1 - cmp r1, #2 - movge r1, #2 - cmp r0, r1 - beq _02313D34 - mov r0, r5 - strh r1, [r4, #0x30] - bl ov29_022E4338 -_02313D34: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02313CE4 - - arm_func_start ApplyOffensiveStatMultiplier -ApplyOffensiveStatMultiplier: ; 0x02313D40 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - mov r7, r3 - bl sub_02025888 - mov r4, r0 - mov r0, r8 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _02313F3C - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _02313D94 - ldr r1, _02313F48 ; =0x00000DCB - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 - b _02313DAC -_02313D94: - ldr r1, _02313F4C ; =0x00000DCA - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 -_02313DAC: - cmp r7, #0x100 - bge _02313DCC - ldrb r2, [sp, #0x30] - mov r0, sb - mov r1, r8 - bl ov29_02301B2C - cmp r0, #0 - bne _02313F3C -_02313DCC: - mov r0, r8 - mov r1, #0x12 - bl ItemIsActive__02311BF8 - cmp r0, #0 - beq _02313E0C - cmp r7, #0x100 - bge _02313E0C - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02313F50 ; =0x00000DB2 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02313F3C -_02313E0C: - mov r0, sb - mov r1, r8 - mov r2, #9 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02313E6C - ldr r0, [sp, #0x28] - cmp r0, #0 - bne _02313E6C - cmp r7, #0x100 - bge _02313E6C - ldrb r0, [sp, #0x30] - cmp r0, #0 - beq _02313F3C - mov r0, #0 - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02313F54 ; =0x00000D9E - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02313F3C -_02313E6C: - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r5, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - ldr r6, [sp, #0x28] - cmp r7, #0x100 - add r0, r5, r6, lsl #2 - ldr r4, [r0, #0x34] - add r1, sp, #0x28 - mov r0, r8 - bge _02313EA8 - ldr r1, [r1] - bl ov29_022E5068 - b _02313EB0 -_02313EA8: - ldr r1, [r1] - bl ov29_022E4FC0 -_02313EB0: - add r0, r5, r6, lsl #2 - ldr r0, [r0, #0x34] - mov r1, r7 - bl MultiplyByFixedPoint - add r1, r5, r6, lsl #2 - str r0, [r1, #0x34] - cmp r0, #2 - movlt r0, #2 - strlt r0, [r1, #0x34] - add r2, r5, r6, lsl #2 - ldr r1, [r2, #0x34] - ldr r0, _02313F58 ; =0x000063FD - cmp r1, r0 - strgt r0, [r2, #0x34] - add r0, r5, r6, lsl #2 - ldr r0, [r0, #0x34] - cmp r4, r0 - ble _02313F0C - ldr r2, _02313F5C ; =0x00000DD1 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02313F34 -_02313F0C: - bge _02313F24 - mov r0, sb - mov r1, r8 - mov r2, #0xdd0 - bl LogMessageByIdWithPopupCheckUserTarget - b _02313F34 -_02313F24: - ldr r2, _02313F60 ; =0x00000DD3 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_02313F34: - mov r0, r8 - bl UpdateStatusIconFlags -_02313F3C: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02313F48: .word 0x00000DCB -_02313F4C: .word 0x00000DCA -_02313F50: .word 0x00000DB2 -_02313F54: .word 0x00000D9E -_02313F58: .word 0x000063FD -_02313F5C: .word 0x00000DD1 -_02313F60: .word 0x00000DD3 - arm_func_end ApplyOffensiveStatMultiplier - - arm_func_start ApplyDefensiveStatMultiplier -ApplyDefensiveStatMultiplier: ; 0x02313F64 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - mov r7, r3 - bl sub_02025888 - mov r4, r0 - mov r0, r8 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023140C0 - ldr r0, [sp, #0x28] - cmp r0, #0 - beq _02313FB8 - ldr r1, _023140CC ; =0x00000DC9 - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 - b _02313FD0 -_02313FB8: - ldr r1, _023140D0 ; =0x00000DC8 - mov r0, r4 - bl sub_020258E4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 -_02313FD0: - cmp r7, #0x100 - bge _02313FF0 - ldrb r2, [sp, #0x30] - mov r0, sb - mov r1, r8 - bl ov29_02301B2C - cmp r0, #0 - bne _023140C0 -_02313FF0: - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r5, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - ldr r6, [sp, #0x28] - cmp r7, #0x100 - add r0, r5, r6, lsl #2 - ldr r4, [r0, #0x3c] - add r1, sp, #0x28 - mov r0, r8 - bge _0231402C - ldr r1, [r1] - bl ov29_022E51B0 - b _02314034 -_0231402C: - ldr r1, [r1] - bl ov29_022E510C -_02314034: - add r0, r5, r6, lsl #2 - ldr r0, [r0, #0x3c] - mov r1, r7 - bl MultiplyByFixedPoint - add r1, r5, r6, lsl #2 - str r0, [r1, #0x3c] - cmp r0, #2 - movlt r0, #2 - strlt r0, [r1, #0x3c] - add r2, r5, r6, lsl #2 - ldr r1, [r2, #0x3c] - ldr r0, _023140D4 ; =0x000063FD - cmp r1, r0 - strgt r0, [r2, #0x3c] - add r0, r5, r6, lsl #2 - ldr r0, [r0, #0x3c] - cmp r4, r0 - ble _02314090 - ldr r2, _023140D8 ; =0x00000DCF - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _023140B8 -_02314090: - bge _023140A8 - ldr r2, _023140DC ; =0x00000DCE - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _023140B8 -_023140A8: - ldr r2, _023140E0 ; =0x00000DD2 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_023140B8: - mov r0, r8 - bl UpdateStatusIconFlags -_023140C0: - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_023140CC: .word 0x00000DC9 -_023140D0: .word 0x00000DC8 -_023140D4: .word 0x000063FD -_023140D8: .word 0x00000DCF -_023140DC: .word 0x00000DCE -_023140E0: .word 0x00000DD2 - arm_func_end ApplyDefensiveStatMultiplier - - arm_func_start BoostHitChanceStat -BoostHitChanceStat: ; 0x023140E4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r1 - mov r7, r0 - bl sub_02025888 - mov r8, r0 - mov r0, r6 - mov r4, #1 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _0231420C - mov r0, #0 - mov r1, r6 - mov r2, r0 - ldr r5, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x20 - ldr r1, [r1] - mov r0, r6 - bl ov29_022E5258 - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _0231415C - ldr r1, _02314218 ; =0x00000DC7 - mov r0, r8 - bl sub_020258E4 - mov r1, r8 - mov r0, r4 - bl ov29_0234B0B4 - b _02314174 -_0231415C: - ldr r1, _0231421C ; =0x00000DC6 - mov r0, r8 - bl sub_020258E4 - mov r1, r8 - mov r0, r4 - bl ov29_0234B0B4 -_02314174: - mov r0, r6 - mov r1, #0x61 - bl AbilityIsActive2 - ldr r1, [sp, #0x20] - cmp r0, #0 - movne r0, r4, lsl #0x11 - add r2, r5, r1, lsl #1 - movne r4, r0, asr #0x10 - ldrsh r0, [r2, #0x2c] - mov r3, r1, lsl #1 - cmp r0, #0x14 - bge _023141F4 - add r1, r5, #0x2c - ldrsh r0, [r1, r3] - add r0, r0, r4 - strh r0, [r1, r3] - ldrsh r0, [r2, #0x2c] - cmp r0, #0x14 - movgt r0, #0x14 - strgth r0, [r2, #0x2c] - cmp r4, #2 - blt _023141E0 - ldr r2, _02314220 ; =0x00000D95 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314204 -_023141E0: - ldr r2, _02314224 ; =0x00000D93 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314204 -_023141F4: - ldr r2, _02314228 ; =0x00000DD5 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02314204: - mov r0, r6 - bl UpdateStatusIconFlags -_0231420C: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_02314218: .word 0x00000DC7 -_0231421C: .word 0x00000DC6 -_02314220: .word 0x00000D95 -_02314224: .word 0x00000D93 -_02314228: .word 0x00000DD5 - arm_func_end BoostHitChanceStat - - arm_func_start LowerHitChanceStat -LowerHitChanceStat: ; 0x0231422C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r1 - mov r7, r0 - mov r8, r3 - bl sub_02025888 - mov r5, r0 - mov r0, r6 - mov r4, #1 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023143C4 - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _02314284 - ldr r1, _023143D0 ; =0x00000DC7 - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, r4 - bl ov29_0234B0B4 - b _0231429C -_02314284: - ldr r1, _023143D4 ; =0x00000DC6 - mov r0, r5 - bl sub_020258E4 - mov r1, r5 - mov r0, r4 - bl ov29_0234B0B4 -_0231429C: - mov r0, r7 - mov r1, r6 - mov r2, r8 - bl ov29_02301B2C - cmp r0, #0 - bne _023143C4 - mov r0, r7 - mov r1, r6 - mov r2, #0x1e - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02314308 - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _02314308 - cmp r8, #0 - beq _023143C4 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023143D8 ; =0x00000D9F - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _023143C4 -_02314308: - mov r0, r6 - mov r1, #0x61 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, r4, lsl #0x11 - movne r4, r0, asr #0x10 - mov r0, #0 - mov r1, r6 - mov r2, r0 - ldr r5, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - add r1, sp, #0x20 - ldr r1, [r1] - mov r0, r6 - bl ov29_022E52F8 - ldr r1, [sp, #0x20] - add r2, r5, r1, lsl #1 - ldrsh r0, [r2, #0x2c] - mov r3, r1, lsl #1 - cmp r0, #0 - ble _023143AC - add r1, r5, #0x2c - ldrsh r0, [r1, r3] - sub r0, r0, r4 - strh r0, [r1, r3] - ldrsh r0, [r2, #0x2c] - cmp r0, #0 - movlt r0, #0 - strlth r0, [r2, #0x2c] - cmp r4, #2 - blt _02314398 - ldr r2, _023143DC ; =0x00000D94 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _023143BC -_02314398: - ldr r2, _023143E0 ; =0x00000D92 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _023143BC -_023143AC: - ldr r2, _023143E4 ; =0x00000DD4 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023143BC: - mov r0, r6 - bl UpdateStatusIconFlags -_023143C4: - ldmia sp!, {r4, r5, r6, r7, r8, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_023143D0: .word 0x00000DC7 -_023143D4: .word 0x00000DC6 -_023143D8: .word 0x00000D9F -_023143DC: .word 0x00000D94 -_023143E0: .word 0x00000D92 -_023143E4: .word 0x00000DD4 - arm_func_end LowerHitChanceStat - - arm_func_start TryInflictCringeStatus -TryInflictCringeStatus: ; 0x023143E8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r5, r2 - mov r4, r3 - bl sub_02025888 - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #0x1f - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _02314498 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r5, #0 - beq _02314490 - ldr r2, _02314534 ; =0x00000DA2 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02314490: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02314498: - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r4, [r6, #0xb4] - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd0] - cmp r0, #1 - beq _02314514 - ldr r1, _02314538 ; =0x022C4884 - mov r2, #1 - mov r0, r6 - strb r2, [r4, #0xd0] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r6 - strb r1, [r4, #0xd1] - bl ov29_022E539C - ldr r2, _0231453C ; =0x00000D02 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl ov29_0231B364 - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _02314524 -_02314514: - ldr r2, _02314540 ; =0x00000D03 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02314524: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02314534: .word 0x00000DA2 -_02314538: .word 0x022C4884 -_0231453C: .word 0x00000D02 -_02314540: .word 0x00000D03 - arm_func_end TryInflictCringeStatus - - arm_func_start TryInflictParalysisStatus -TryInflictParalysisStatus: ; 0x02314544 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r4, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - beq _023147D0 - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - bne _023147D0 - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - bne _023147D0 - mov r0, sl - mov r1, sb - mov r2, #0x16 - mov r3, #1 - bl DefenderAbilityIsActive__02311B94 - cmp r0, #0 - beq _023145F4 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r8, #0 - beq _023145EC - mov r0, sl - mov r1, sb - mov r2, #0xda0 - bl LogMessageByIdWithPopupCheckUserTarget -_023145EC: - mov r0, #0 - b _023147D0 -_023145F4: - mov r0, sb - mov r1, #1 - bl ExclusiveItemEffectIsActive__023147EC - cmp r0, #0 - beq _02314654 - cmp r8, #0 - beq _0231464C - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r2, sp, #4 - mov r0, sb - mov r1, #1 - bl ov29_0230F654 - add r1, sp, #4 - mov r0, #1 - bl ov29_02344B44 - ldr r2, _023147D8 ; =0x00000DA1 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231464C: - mov r0, #0 - b _023147D0 -_02314654: - cmp r4, #0 - movne r0, #1 - bne _023147D0 - mov r0, #0 - ldr r7, [sb, #0xb4] - mov r1, sb - mov r2, r0 - mov r4, #1 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xbf] - cmp r0, #4 - beq _023146E0 - ldr r1, _023147DC ; =0x022C4894 - mov r3, #4 - mov r0, sb - mov r2, r4 - strb r3, [r7, #0xbf] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xc0] - mov r4, #0 - strb r4, [r7, #0xc1] - mov r0, sl - mov r1, sb - mov r2, #0xd00 - strb r4, [r7, #0xc2] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sb - bl ov29_022E4240 - mov r0, sb - bl CalcSpeedStageWrapper - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet - b _023146F0 -_023146E0: - ldr r2, _023147E0 ; =0x00000D01 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_023146F0: - mov r0, sb - mov r1, #0x19 - bl AbilityIsActive2 - cmp r0, #0 - beq _023147C4 - cmp r4, #0 - bne _023147C4 - mov r5, #0 - ldr fp, _023147E4 ; =0x0235171C - mov r4, r5 -_02314718: - mov r1, r4, lsl #2 - add r0, fp, r4, lsl #2 - ldrsh r6, [sb, #4] - ldrsh r3, [fp, r1] - ldrsh r1, [r0, #2] - ldrsh r2, [sb, #6] - add r0, r6, r3 - add r1, r2, r1 - bl GetTile - ldr r6, [r0, #0xc] - mov r0, r6 - bl EntityIsValid__023118B4 - cmp r0, #0 - beq _023147B8 - ldr r0, [r6] - cmp r0, #1 - bne _023147B8 - cmp r5, #0 - bne _02314790 - mov r5, #1 - bl ov29_0234B034 - mov r1, #0 - mov r2, r7 - mov r3, r1 - str r1, [sp] - bl ov29_0230040C - ldr r2, _023147E8 ; =0x00000DC5 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02314790: - mov r0, sb - mov r1, r6 - bl ov29_023018AC - cmp r0, #1 - bne _023147B8 - mov r0, sl - mov r1, r6 - mov r2, r8 - mov r3, #0 - bl TryInflictParalysisStatus -_023147B8: - add r4, r4, #1 - cmp r4, #8 - blt _02314718 -_023147C4: - mov r0, sb - bl UpdateStatusIconFlags - mov r0, #1 -_023147D0: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023147D8: .word 0x00000DA1 -_023147DC: .word 0x022C4894 -_023147E0: .word 0x00000D01 -_023147E4: .word 0x0235171C -_023147E8: .word 0x00000DC5 - arm_func_end TryInflictParalysisStatus - - arm_func_start ExclusiveItemEffectIsActive__023147EC -ExclusiveItemEffectIsActive__023147EC: ; 0x023147EC - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__023147EC - - arm_func_start BoostSpeed -BoostSpeed: ; 0x02314810 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - mov r0, r8 - mov r7, r2 - mov r6, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - bne _02314850 - ldr r1, _0231492C ; =0x022C4888 - mov r0, r8 - mov r2, #0 - bl CalcStatusDuration - add r6, r0, #1 -_02314850: - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r5, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - mov r0, r8 - mov r1, r7 - bl CalcSpeedStage - mov r4, r0 - cmp r4, #4 - bne _0231489C - ldrb r0, [sp, #0x20] - cmp r0, #0 - beq _02314920 - ldr r2, _02314930 ; =0x00000DDB - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314920 -_0231489C: - mov r2, #0 - b _023148BC -_023148A4: - add r1, r5, r2 - ldrb r0, [r1, #0x114] - cmp r0, #0 - streqb r6, [r1, #0x114] - beq _023148C4 - add r2, r2, #1 -_023148BC: - cmp r2, #5 - blt _023148A4 -_023148C4: - mov r0, r8 - mov r1, r7 - bl CalcSpeedStage - mov r6, r0 - cmp r4, r6 - bne _023148F0 - ldr r2, _02314934 ; =0x00000DDA - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314920 -_023148F0: - mov r0, r8 - bl ov29_022E44CC - ldr r0, _02314938 ; =0x02353318 - mov r1, r6, lsl #1 - ldrh r2, [r0, r1] - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - strb r0, [r5, #0x101] - mov r0, #0 - strb r0, [r5, #0x152] -_02314920: - mov r0, r8 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231492C: .word 0x022C4888 -_02314930: .word 0x00000DDB -_02314934: .word 0x00000DDA -_02314938: .word 0x02353318 - arm_func_end BoostSpeed - - arm_func_start BoostSpeedOneStage -BoostSpeedOneStage: ; 0x0231493C - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, r2 - mov r2, #1 - bl BoostSpeed - ldmia sp!, {r3, pc} - arm_func_end BoostSpeedOneStage - - arm_func_start LowerSpeed -LowerSpeed: ; 0x02314954 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r7, r3 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r7 - bl ov29_02301940 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - mov r2, r7 - bl ov29_02302430 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, #0 - mov r1, sb - mov r2, r0 - ldr r4, [sb, #0xb4] - bl SubstitutePlaceholderStringTags - mov r0, sb - bl CalcSpeedStageWrapper - movs fp, r0 - bne _023149E8 - cmp r7, #0 - beq _02314AA0 - ldr r2, _02314AAC ; =0x00000DDC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02314AA0 -_023149E8: - mov r5, #0 - b _02314A34 -_023149F0: - mov r1, #0 - b _02314A28 -_023149F8: - add r6, r4, r1 - ldrb r0, [r6, #0x119] - cmp r0, #0 - bne _02314A24 - ldr r1, _02314AB0 ; =0x022C488C - mov r0, sb - mov r2, #1 - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r6, #0x119] - b _02314A30 -_02314A24: - add r1, r1, #1 -_02314A28: - cmp r1, #5 - blt _023149F8 -_02314A30: - add r5, r5, #1 -_02314A34: - cmp r5, r8 - blt _023149F0 - mov r0, sb - bl CalcSpeedStageWrapper - mov r4, r0 - cmp fp, r4 - bne _02314A6C - cmp r7, #0 - beq _02314AA0 - ldr r2, _02314AB4 ; =0x00000DDA - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02314AA0 -_02314A6C: - mov r0, sb - bl ov29_022E451C - ldr r0, _02314AB8 ; =0x02353318 - mov r1, r4, lsl #1 - ldrh r2, [r0, r1] - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - cmp r4, #0 - bne _02314AA0 - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet -_02314AA0: - mov r0, sb - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02314AAC: .word 0x00000DDC -_02314AB0: .word 0x022C488C -_02314AB4: .word 0x00000DDA -_02314AB8: .word 0x02353318 - arm_func_end LowerSpeed - - arm_func_start TrySealMove -TrySealMove: ; 0x02314ABC - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov r5, #0 - movs r7, r1 - mov r8, r0 - mov r6, r2 - moveq r0, r5 - beq _02314C18 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, r5 - bne _02314C18 - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, r5 - bne _02314C18 - ldr r0, [r7, #0xb4] - mov r4, r5 - add ip, r0, #0x124 - mov lr, r4 - mov r2, r5 - mov r3, #1 - add r0, sp, #4 -_02314B28: - ldrb r1, [ip, lr, lsl #3] - add sb, ip, lr, lsl #3 - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _02314B54 - ldrh r1, [sb, #2] - tst r1, #1 - streq sb, [r0, r4, lsl #2] - addeq r4, r4, #1 -_02314B54: - add lr, lr, #1 - cmp lr, #4 - blt _02314B28 - cmp r6, #0 - beq _02314B74 - cmp r4, #0 - moveq r0, #0 - beq _02314C18 -_02314B74: - cmp r4, #0 - beq _02314BE8 - ldr r3, _02314C20 ; =0x00000DBE - mov r5, #8 - mov r0, r8 - mov r1, r7 - mov r2, #1 - str r5, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #0 - bne _02314C18 - cmp r6, #0 - movne r0, #1 - bne _02314C18 - mov r0, r4 - bl DungeonRandInt - add r1, sp, #4 - ldr r2, [r1, r0, lsl #2] - mov r0, #0 - ldrh r1, [r2, #2] - orr r1, r1, #1 - strh r1, [r2, #2] - ldrh r1, [r2, #4] - bl ov29_0234B084 - mov r0, r8 - mov r1, r7 - mov r5, #1 - bl TryActivateQuickFeet -_02314BE8: - cmp r5, #0 - beq _02314C04 - ldr r2, _02314C24 ; =0x00000DE3 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314C14 -_02314C04: - ldr r2, _02314C28 ; =0x00000DE4 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02314C14: - mov r0, #1 -_02314C18: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02314C20: .word 0x00000DBE -_02314C24: .word 0x00000DE3 -_02314C28: .word 0x00000DE4 - arm_func_end TrySealMove - - arm_func_start BoostOrLowerSpeed -BoostOrLowerSpeed: ; 0x02314C2C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__023118B4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0x32 - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - mov r2, #1 - mov r0, r5 - beq _02314C74 - mov r1, r4 - mov r3, r2 - bl LowerSpeed - b _02314C84 -_02314C74: - mov r1, r4 - mov r3, #0 - str r2, [sp] - bl BoostSpeed -_02314C84: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end BoostOrLowerSpeed - - arm_func_start ResetHitChanceStat -ResetHitChanceStat: ; 0x02314C8C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r8, r2 - mov r4, r3 - mov r7, #0 - bl EntityIsValid__023118B4 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r5, #0xb4] - add r1, r0, r8, lsl #1 - ldrsh r0, [r1, #0x2c] - cmp r0, #0xa - movne r0, #0xa - movne r7, #1 - strneh r0, [r1, #0x2c] - cmp r7, #0 - beq _02314CE4 - mov r0, r5 - bl ov29_022E543C - b _02314CF4 -_02314CE4: - cmp r4, #0 - beq _02314CF4 - mov r0, r5 - bl ov29_022E543C -_02314CF4: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r7, #0 - beq _02314D20 - mov r0, r6 - mov r1, r5 - mov r2, #0xd60 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314D30 -_02314D20: - ldr r2, _02314D3C ; =0x00000D61 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02314D30: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02314D3C: .word 0x00000D61 - arm_func_end ResetHitChanceStat - - arm_func_start ov29_02314D40 -ov29_02314D40: ; 0x02314D40 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r6, r1 - ldrb r1, [sp, #0x20] - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, r3 - bl ExclusiveItemEffectIsActive__023147EC - cmp r0, #0 - beq _02314DB8 - cmp r5, #0 - beq _02314DB0 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r1, [sp, #0x20] - add r2, sp, #0 - mov r0, r6 - bl ov29_0230F654 - add r1, sp, #0 - mov r0, #1 - bl ov29_02344B44 - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02314DB0: - mov r0, #1 - b _02314DBC -_02314DB8: - mov r0, #0 -_02314DBC: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02314D40 - - arm_func_start ov29_02314DC4 -ov29_02314DC4: ; 0x02314DC4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r0, #0 - mov r5, r2 - mov r2, r0 - mov r6, r1 - mov r4, r3 - bl SubstitutePlaceholderStringTags - add r2, sp, #0 - mov r0, r6 - mov r1, r4 - bl ov29_0230F654 - add r1, sp, #0 - mov r0, #1 - bl ov29_02344B44 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl LogMessageByIdWithPopupCheckUserTarget - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02314DC4 - - arm_func_start TryActivateQuickFeet -TryActivateQuickFeet: ; 0x02314E1C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r1, #0x6d - bl AbilityIsActive2 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r3, #0 - mov r0, r5 - mov r1, r4 - mov r2, #1 - str r3, [sp] - bl BoostSpeed - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end TryActivateQuickFeet - - arm_func_start ov29_02314E60 -ov29_02314E60: ; 0x02314E60 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02314EB0 ; =0x022C4618 - mov r4, r1 - ldr ip, [r4, #0xb4] - mov r3, #1 - mov r5, r0 - ldrsh r1, [r2] - strb r3, [ip, #0x104] - mov r0, r4 - strb r1, [ip, #0x105] - bl ov29_022E60E4 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02314EB4 ; =0x00000DE5 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02314EB0: .word 0x022C4618 -_02314EB4: .word 0x00000DE5 - arm_func_end ov29_02314E60 - - arm_func_start ov29_02314EB8 -ov29_02314EB8: ; 0x02314EB8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r1 - ldr r5, [r7, #0xb4] - mov r8, r0 - mov r4, #0 - mov r6, r2 - mov r2, r4 - mov r0, #1 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xfd] - cmp r0, #0 - beq _02314F04 - cmp r6, #0 - beq _02314F2C - ldr r2, _02314F34 ; =0x00000ED1 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02314F2C -_02314F04: - mov r4, #1 - mov r0, r7 - strb r4, [r5, #0xfd] - bl UpdateStatusIconFlags - cmp r6, #0 - beq _02314F2C - mov r0, r8 - mov r1, r7 - mov r2, #0xed0 - bl LogMessageByIdWithPopupCheckUserTarget -_02314F2C: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02314F34: .word 0x00000ED1 - arm_func_end ov29_02314EB8 - - arm_func_start TryInflictConfusedStatus -TryInflictConfusedStatus: ; 0x02314F38 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02302430 - cmp r0, #0 - mov r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - mov r1, #0x19 - bl ItemIsActive__0231513C - cmp r0, #0 - beq _02314FD8 - cmp r5, #0 - beq _02314FD0 - ldr r2, _02315100 ; =0x00000DAF - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02314FD0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02314FD8: - mov ip, #2 - ldr r3, _02315104 ; =0x00000DBA - mov r0, r7 - mov r1, r6 - mov r2, r5 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, r6 - beq _02315048 - cmp r7, #0 - moveq r0, #0 - beq _02315028 - ldr r0, [r7] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_02315028: - cmp r0, #0 - beq _02315048 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _02315054 -_02315048: - mov r0, r6 - mov r1, #0x40 - bl AbilityIsActive2 -_02315054: - cmp r0, #0 - beq _0231507C - cmp r5, #0 - beq _02315074 - ldr r2, _02315108 ; =0x00000DA7 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02315074: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0231507C: - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov29_022E41CC - ldr r4, [r6, #0xb4] - ldrb r0, [r4, #0xd0] - cmp r0, #2 - beq _023150E0 - ldr r1, _0231510C ; =0x022C4890 - mov r3, #2 - mov r0, r6 - mov r2, #1 - strb r3, [r4, #0xd0] - bl CalcStatusDuration - add r3, r0, #1 - ldr r2, _02315110 ; =0x00000CFE - mov r0, r7 - mov r1, r6 - strb r3, [r4, #0xd1] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _023150F0 -_023150E0: - ldr r2, _02315114 ; =0x00000CFF - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023150F0: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02315100: .word 0x00000DAF -_02315104: .word 0x00000DBA -_02315108: .word 0x00000DA7 -_0231510C: .word 0x022C4890 -_02315110: .word 0x00000CFE -_02315114: .word 0x00000CFF - arm_func_end TryInflictConfusedStatus - - arm_func_start EntityIsValid__02315118 -EntityIsValid__02315118: ; 0x02315118 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02315118 - - arm_func_start ItemIsActive__0231513C -ItemIsActive__0231513C: ; 0x0231513C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__0231513C - - arm_func_start TryInflictCoweringStatus -TryInflictCoweringStatus: ; 0x0231516C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r7, r2 - mov r6, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, r7 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, r7 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r6, [r4, #0xb4] - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xd0] - cmp r0, #4 - beq _02315240 - ldr r1, _02315260 ; =0x022C47B0 - mov r3, #4 - mov r0, r4 - mov r2, #1 - strb r3, [r6, #0xd0] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r4 - strb r1, [r6, #0xd1] - bl ov29_022E41DC - ldr r2, _02315264 ; =0x00000D43 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - mov r1, r4 - bl TryActivateQuickFeet - b _02315250 -_02315240: - ldr r2, _02315268 ; =0x00000D44 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02315250: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02315260: .word 0x022C47B0 -_02315264: .word 0x00000D43 -_02315268: .word 0x00000D44 - arm_func_end TryInflictCoweringStatus - - arm_func_start ov29_0231526C -ov29_0231526C: ; 0x0231526C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r0, r4 - mov r5, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r4, #0xb4] - ldr r3, _023152E0 ; =0x000003E7 - ldrsh r0, [r2, #0x10] - add r0, r0, r5 - strh r0, [r2, #0x10] - ldrsh r1, [r2, #0x12] - ldrsh r0, [r2, #0x16] - add r1, r1, r0 - cmp r1, r3 - ldrsh r0, [r2, #0x10] - movle r3, r1 - cmp r0, r3 - ble _023152D0 - ldr r0, _023152E0 ; =0x000003E7 - cmp r1, r0 - movgt r1, r0 - strh r1, [r2, #0x10] -_023152D0: - mov r0, r4 - bl ov29_022E4480 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023152E0: .word 0x000003E7 - arm_func_end ov29_0231526C - - arm_func_start TryIncreaseHp -TryIncreaseHp: ; 0x023152E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, r3 - mov fp, #0 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, fp - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr sb, [r6, #0xb4] - ldrb r0, [sb, #0xd8] - cmp r0, #5 - bne _02315348 - mov r0, fp - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023155EC ; =0x00000D83 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02315348: - mov r0, r6 - mov r1, #0x34 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231537C - ldr r1, _023155F0 ; =0x022C4470 - mov r0, r5, lsl #8 - ldrsh r1, [r1] - mov r1, r1, lsl #8 - bl MultiplyByFixedPoint - mov r1, #0x64 - bl DivideInt - add r5, r5, r0, asr #8 -_0231537C: - ldrsh r1, [sb, #0x12] - ldrsh r0, [sb, #0x16] - ldr r8, _023155F4 ; =0x000003E7 - ldrsh sl, [sb, #0x10] - add r1, r1, r0 - cmp r1, r8 - ldr r0, _023155F4 ; =0x000003E7 - movle r8, r1 - cmp r1, r0 - movgt r1, r0 - cmp sl, r1 - bne _023153B4 - cmp r4, #0 - bgt _023153C4 -_023153B4: - cmp r5, #0 - bne _02315454 - cmp r4, #0 - ble _02315454 -_023153C4: - ldrsh r1, [sb, #0x12] - ldr r0, _023155F4 ; =0x000003E7 - ldr r2, _023155F4 ; =0x000003E7 - add r1, r1, r4 - strh r1, [sb, #0x12] - ldrsh r1, [sb, #0x10] - add r1, r1, r4 - strh r1, [sb, #0x10] - ldrsh r1, [sb, #0x12] - cmp r1, r0 - strgth r0, [sb, #0x12] - ldrsh r1, [sb, #0x12] - ldrsh r0, [sb, #0x16] - add r1, r1, r0 - cmp r1, r2 - ldrsh r0, [sb, #0x10] - movle r2, r1 - cmp r0, r2 - ble _02315420 - ldr r0, _023155F4 ; =0x000003E7 - cmp r1, r0 - movgt r1, r0 - strh r1, [sb, #0x10] -_02315420: - ldrsh r2, [sb, #0x12] - ldrsh r1, [sb, #0x16] - ldr r0, _023155F4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldrsh r0, [sb, #0x10] - cmp r0, r1 - moveq sl, r0 - mov r0, r6 - bl ov29_022E4430 - mov fp, #1 - b _02315464 -_02315454: - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_0231526C -_02315464: - ldrsh r2, [sb, #0x12] - ldrsh r1, [sb, #0x16] - ldr r0, _023155F4 ; =0x000003E7 - add r2, r2, r1 - ldrsh r1, [sb, #0x10] - cmp r2, r0 - movgt r2, r0 - mov r0, r6 - sub sl, r1, sl - sub r8, r2, r8 - bl UpdateStatusIconFlags - mov r1, sl - mov r0, #0 - bl ov29_0234B09C - mov r0, #1 - mov r1, r8 - bl ov29_0234B09C - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp sl, #0 - cmpeq r8, #0 - bne _02315504 - ldrb r0, [sp, #0x28] - cmp r0, #0 - beq _023154FC - cmp fp, #0 - beq _023154EC - ldr r2, _023155F8 ; =0x00000CFD - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _023154FC -_023154EC: - ldr r2, _023155FC ; =0x00000CFA - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023154FC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02315504: - cmp r4, #0 - cmpeq sl, #0 - bne _02315534 - ldrb r0, [sp, #0x28] - cmp r0, #0 - beq _0231552C - ldr r2, _02315600 ; =0x00000CFB - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0231552C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02315534: - cmp r8, #0 - mov r4, #0 - beq _02315560 - mov r0, r6 - bl ov29_022E272C - cmp r0, #0 - ldr r2, _02315604 ; =0x00000CFC - mov r0, r7 - mov r1, r6 - movne r4, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_02315560: - cmp sl, #0 - beq _023155C8 - mov r0, r6 - bl ov29_022E272C - cmp r0, #0 - movne r4, sl - cmp r5, #0 - beq _023155C8 - ldrsh r2, [sb, #0x12] - ldrsh r1, [sb, #0x16] - ldr r0, _023155F4 ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldrsh r0, [sb, #0x10] - cmp r0, r1 - bne _023155B8 - ldr r2, _02315608 ; =0x00000CF9 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _023155C8 -_023155B8: - ldr r2, _0231560C ; =0x00000CF8 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023155C8: - cmp r4, #0 - beq _023155E4 - mov r2, #1 - mov r0, r4 - mov r1, r6 - sub r3, r2, #2 - bl ov29_022EA718 -_023155E4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023155EC: .word 0x00000D83 -_023155F0: .word 0x022C4470 -_023155F4: .word 0x000003E7 -_023155F8: .word 0x00000CFD -_023155FC: .word 0x00000CFA -_02315600: .word 0x00000CFB -_02315604: .word 0x00000CFC -_02315608: .word 0x00000CF9 -_0231560C: .word 0x00000CF8 - arm_func_end TryIncreaseHp - - arm_func_start ov29_02315610 -ov29_02315610: ; 0x02315610 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r4, #0xb4] - ldrb r0, [r2, #0xfa] - cmp r0, #0 - beq _02315650 - ldr r2, _02315698 ; =0x00000CE4 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_02315650: - mov r1, #1 - mov r0, r4 - strb r1, [r2, #0xfa] - bl ov29_022E465C - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231569C ; =0x00000CE2 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_02339CE8 - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02315698: .word 0x00000CE4 -_0231569C: .word 0x00000CE2 - arm_func_end ov29_02315610 - - arm_func_start ov29_023156A0 -ov29_023156A0: ; 0x023156A0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl GetFloorType - cmp r0, #0 - beq _023156DC - ldr r2, _02315750 ; =0x00000CE6 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_023156DC: - ldr r2, [r4, #0xb4] - ldrb r0, [r2, #0xfb] - cmp r0, #0 - beq _02315700 - ldr r2, _02315754 ; =0x00000CE5 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_02315700: - mov r1, #1 - mov r0, r4 - strb r1, [r2, #0xfb] - bl ov29_022E4660 - mov r0, #0 - bl ov29_02338794 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02315758 ; =0x00000CE3 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_02339CE8 - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02315750: .word 0x00000CE6 -_02315754: .word 0x00000CE5 -_02315758: .word 0x00000CE3 - arm_func_end ov29_023156A0 - - arm_func_start ov29_0231575C -ov29_0231575C: ; 0x0231575C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, [r4, #0xb4] - ldrb r0, [r2, #0xf9] - cmp r0, #0 - beq _0231579C - ldr r2, _023157E4 ; =0x00000CEA - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_0231579C: - mov r1, #1 - mov r0, r4 - strb r1, [r2, #0xf9] - bl ov29_022E4664 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023157E8 ; =0x00000CE9 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - bl ov29_022E2EC4 - bl ov29_02339CE8 - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023157E4: .word 0x00000CEA -_023157E8: .word 0x00000CE9 - arm_func_end ov29_0231575C - - arm_func_start TryInflictLeechSeedStatus -TryInflictLeechSeedStatus: ; 0x023157EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r8, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r0, [r6] - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - cmp r6, r5 - ldr r4, [r5, #0xb4] - bne _02315850 - cmp r8, #0 - beq _02315848 - ldr r2, _023159BC ; =0x00000DE1 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02315848: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02315850: - mov r0, r6 - mov r1, r5 - mov r2, r8 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - mov r1, r5 - mov r2, r8 - bl ov29_02302430 - cmp r0, #0 - mov r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, #4 - bl MonsterIsType - cmp r0, #0 - beq _023158C8 - cmp r8, #0 - beq _023158C0 - ldr r2, _023159C0 ; =0x00000DE2 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023158C0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023158C8: - cmp r7, #0 - ldrb r0, [r4, #0xe0] - beq _023158E8 - cmp r0, #1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023158E8: - cmp r0, #1 - beq _02315930 - cmp r0, #2 - bne _02315908 - ldr r2, _023159C4 ; =0x00000CAF - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02315908: - ldr r1, _023159C8 ; =0x022C4790 - mov r2, #1 - mov r0, r5 - strb r2, [r4, #0xe0] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r4, #0xe9] - mov r0, #0 - strb r0, [r4, #0xea] - b _02315948 -_02315930: - ldr r2, _023159CC ; =0x00000CE1 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02315948: - mov r0, r5 - bl ov29_022E4668 - mov r0, #0xff - ldr r1, _023159D0 ; =0x02353538 - strb r0, [r4, #0xe8] - mov r2, #0 -_02315960: - ldr r0, [r1] - add r0, r0, r2, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb78] - cmp r6, r0 - streqb r2, [r4, #0xe8] - ldreq r0, [r6, #0xb4] - add r2, r2, #1 - ldreq r0, [r0, #0xb0] - streq r0, [r4, #0xe4] - cmp r2, #0x14 - blt _02315960 - mov r0, r6 - mov r1, r5 - mov r2, #0xce0 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023159BC: .word 0x00000DE1 -_023159C0: .word 0x00000DE2 -_023159C4: .word 0x00000CAF -_023159C8: .word 0x022C4790 -_023159CC: .word 0x00000CE1 -_023159D0: .word 0x02353538 - arm_func_end TryInflictLeechSeedStatus - - arm_func_start ov29_023159D4 -ov29_023159D4: ; 0x023159D4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r4, #0 - ldr r5, [r0, #0xb4] - ldr r7, _02315A4C ; =0x02353538 - mov r8, r4 -_023159E8: - ldr r0, [r7] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02315A3C - ldr r2, [r6, #0xb4] - ldrb r0, [r2, #0xe0] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #1 - bhi _02315A3C - ldr r1, [r2, #0xe4] - ldr r0, [r5, #0xb0] - cmp r1, r0 - bne _02315A3C - mov r0, r6 - strb r8, [r2, #0xe0] - bl UpdateStatusIconFlags -_02315A3C: - add r4, r4, #1 - cmp r4, #0x14 - blt _023159E8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02315A4C: .word 0x02353538 - arm_func_end ov29_023159D4 - - arm_func_start TryInflictDestinyBond -TryInflictDestinyBond: ; 0x02315A50 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r6] - cmp r0, #1 - ldreq r0, [r5] - cmpeq r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r6, #0xb4] - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xe0] - cmp r0, #2 - beq _02315AE4 - cmp r0, #1 - bne _02315AB8 - ldr r2, _02315B5C ; =0x00000C94 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02315AB8: - ldr r1, _02315B60 ; =0x022C47D4 - mov r3, #2 - mov r0, r5 - mov r2, #1 - strb r3, [r4, #0xe0] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r4, #0xe9] - mov r0, #0 - strb r0, [r4, #0xea] - b _02315AF8 -_02315AE4: - ldr r2, _02315B64 ; =0x00000D54 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r4, r5, r6, pc} -_02315AF8: - mov r0, r5 - bl ov29_022E45CC - mov r0, #0xff - ldr r1, _02315B68 ; =0x02353538 - strb r0, [r4, #0xe8] - mov r2, #0 -_02315B10: - ldr r0, [r1] - add r0, r0, r2, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb78] - cmp r5, r0 - streqb r2, [r4, #0xe8] - ldreq r0, [r5, #0xb4] - add r2, r2, #1 - ldreq r0, [r0, #0xb0] - streq r0, [r4, #0xe4] - cmp r2, #0x14 - blt _02315B10 - ldr r2, _02315B6C ; =0x00000D53 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02315B5C: .word 0x00000C94 -_02315B60: .word 0x022C47D4 -_02315B64: .word 0x00000D54 -_02315B68: .word 0x02353538 -_02315B6C: .word 0x00000D53 - arm_func_end TryInflictDestinyBond - - arm_func_start ov29_02315B70 -ov29_02315B70: ; 0x02315B70 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r4, [r6, #0xb4] - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xec] - cmp r0, #1 - beq _02315BDC - mov r1, #1 - mov r0, r6 - strb r1, [r4, #0xec] - add r1, r5, #1 - strb r1, [r4, #0xed] - bl ov29_022E456C - ldr r2, _02315BF8 ; =0x00000D2E - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _02315BEC -_02315BDC: - ldr r2, _02315BFC ; =0x00000D2F - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02315BEC: - mov r0, r6 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02315BF8: .word 0x00000D2E -_02315BFC: .word 0x00000D2F - arm_func_end ov29_02315B70 - - arm_func_start ov29_02315C00 -ov29_02315C00: ; 0x02315C00 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r7, r2 - mov r6, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r6, [r4, #0xb4] - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xec] - cmp r0, #2 - beq _02315CC4 - mov r1, #2 - mov r0, r4 - strb r1, [r6, #0xec] - add r1, r7, #1 - strb r1, [r6, #0xed] - bl ov29_022E45B8 - mov r0, r5 - mov r1, r4 - mov r2, #0xd30 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - mov r1, r4 - bl TryActivateQuickFeet - b _02315CD4 -_02315CC4: - ldr r2, _02315CE4 ; =0x00000D31 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02315CD4: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02315CE4: .word 0x00000D31 - arm_func_end ov29_02315C00 - - arm_func_start ov29_02315CE8 -ov29_02315CE8: ; 0x02315CE8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xec] - cmp r0, #3 - beq _02315D60 - ldr r1, _02315D7C ; =0x022C47A4 - mov r3, #3 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xec] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xed] - bl ov29_022E466C - ldr r2, _02315D80 ; =0x00000D3F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02315D70 -_02315D60: - mov r0, r6 - mov r1, r5 - mov r2, #0xd40 - bl LogMessageByIdWithPopupCheckUserTarget -_02315D70: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02315D7C: .word 0x022C47A4 -_02315D80: .word 0x00000D3F - arm_func_end ov29_02315CE8 - - arm_func_start ov29_02315D84 -ov29_02315D84: ; 0x02315D84 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xec] - cmp r0, #4 - beq _02315DFC - ldr r1, _02315E18 ; =0x022C47AC - mov r3, #4 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xec] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xed] - bl ov29_022E4670 - ldr r2, _02315E1C ; =0x00000D41 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02315E0C -_02315DFC: - ldr r2, _02315E20 ; =0x00000D42 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02315E0C: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02315E18: .word 0x022C47AC -_02315E1C: .word 0x00000D41 -_02315E20: .word 0x00000D42 - arm_func_end ov29_02315D84 - - arm_func_start ov29_02315E24 -ov29_02315E24: ; 0x02315E24 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - beq _023160C4 - mov r0, sl - mov r1, sb - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - bne _023160C4 - mov r0, sl - mov r1, sb - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - mov r0, #0 - bne _023160C4 - ldr r6, [sb, #0xb4] - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xd8] - cmp r0, #2 - bne _02315EC4 - cmp r7, #0 - beq _02315EBC - ldr r2, _023160CC ; =0x00000D46 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02315EBC: - mov r0, #1 - b _023160C4 -_02315EC4: - ldrb r0, [sp, #0x38] - cmp r0, #0 - movne r0, #1 - bne _023160C4 - ldr fp, _023160D0 ; =0x02353538 - mov r4, #0 -_02315EDC: - ldr r0, [fp] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - cmpne sb, r5 - beq _02315F34 - ldr r0, [r5, #0xb4] - ldrb r0, [r0, #0xd8] - add r0, r0, #0xfe - and r0, r0, #0xff - cmp r0, #1 - bhi _02315F34 - mov r0, sl - mov r1, r5 - mov r2, #0 - mov r3, r7 - bl ov29_02306728 - mov r0, #0x2a - bl AdvanceFrame -_02315F34: - add r4, r4, #1 - cmp r4, #0x14 - blt _02315EDC - mov r0, sb - bl ov29_022E4674 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xd8] - cmp r0, #0 - beq _02315F78 - mov r0, sl - mov r1, sb - mov r3, r7 - mov r2, #2 - bl ov29_02306728 -_02315F78: - mov r0, sl - mov r1, sb - bl ov29_023066D8 - mov r0, #2 - strb r0, [r6, #0xd8] - ldr r0, [sl, #0xb4] - ldr r1, _023160D4 ; =0x022C47B4 - ldrb r3, [r0, #6] - mov r0, sb - mov r2, #1 - strb r3, [r6, #0xd9] - strb r8, [r6, #0xda] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r6, #0xdb] - mov r0, #0 - strb r0, [r6, #0xdc] - ldrb r0, [r6, #6] - cmp r0, #0 - bne _02315FCC - bl ov29_022E81F8 -_02315FCC: - mov r0, sb - bl GetSleepAnimationId - mov r1, r0 - mov r0, sb - bl ov29_02304830 - ldr r0, _023160D0 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - cmp r7, #0 - add r0, r0, #0x3000 - strb r1, [r0, #0xe38] - beq _0231600C - ldr r2, _023160D8 ; =0x00000D45 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231600C: - mov r0, sl - mov r1, sb - bl TryActivateQuickFeet - mov sl, #0 - mov r4, #1 - mov r6, #6 - mov r5, sl -_02316028: - ldr r0, _023160D0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, sl, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _023160AC - ldr r8, [r7, #0xb4] - strb r6, [r8, #0x7c] - str r5, [r8, #0x84] - strh r5, [r8, #0x80] - ldrb r0, [r8, #7] - cmp r0, #0 - bne _023160AC - add r2, sp, #0 - add r3, r8, #0x4a - mov r1, #0xa -_02316074: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _02316074 - mov r0, r7 - mov r1, r4 - bl AiMovement - add r3, sp, #0 - add r2, r8, #0x4a - mov r1, #0xa -_0231609C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0231609C -_023160AC: - add sl, sl, #1 - cmp sl, #0x14 - blt _02316028 - mov r0, sb - bl UpdateStatusIconFlags - mov r0, #1 -_023160C4: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023160CC: .word 0x00000D46 -_023160D0: .word 0x02353538 -_023160D4: .word 0x022C47B4 -_023160D8: .word 0x00000D45 - arm_func_end ov29_02315E24 - - arm_func_start ov29_023160DC -ov29_023160DC: ; 0x023160DC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - beq _0231626C - mov r0, r7 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - beq _0231626C - mov r0, r8 - mov r1, #0xe - ldr r4, [r8, #0xb4] - ldr r5, [r7, #0xb4] - bl MonsterIsType - cmp r0, #0 - beq _02316218 - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - bne _0231626C - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - bne _0231626C - mov r0, r8 - mov r1, r7 - mov r3, r6 - mov r2, #1 - bl ov29_02306728 - mov r0, r7 - bl ov29_022E46C0 - ldrsh r0, [r4, #0x10] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - strh r0, [r4, #0x10] - ldrsh r0, [r4, #0x10] - cmp r0, #0 - moveq r0, #1 - streqh r0, [r4, #0x10] - ldrb r0, [r5, #0xd8] - cmp r0, #1 - beq _023161E0 - mov r0, r8 - mov r1, r7 - bl ov29_023066D8 - mov r2, #1 - ldr r1, _02316274 ; =0x022C4784 - mov r0, r7 - strb r2, [r5, #0xd8] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r5, #0xdb] - mov r0, #0 - strb r0, [r5, #0xdc] -_023161E0: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _02316208 - ldr r2, _02316278 ; =0x00000CEC - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02316208: - mov r0, r8 - mov r1, r7 - bl TryActivateQuickFeet - b _02316260 -_02316218: - ldr r1, _0231627C ; =0x02352AEC - mov r0, r8 - ldr r2, [r1] - mov r1, r8 - mov r3, #1 - str r2, [sp] - bl BoostOffensiveStat - add r1, sp, #0 - ldr r2, [r1] - mov r0, r8 - mov r1, r8 - mov r3, #1 - bl BoostDefensiveStat - mov r2, #1 - mov r0, r8 - mov r1, r8 - mov r3, r2 - bl LowerSpeed -_02316260: - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, #1 -_0231626C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02316274: .word 0x022C4784 -_02316278: .word 0x00000CEC -_0231627C: .word 0x02352AEC - arm_func_end ov29_023160DC - - arm_func_start ov29_02316280 -ov29_02316280: ; 0x02316280 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r5 - mov r1, r4 - mov r2, #3 - mov r3, #1 - bl ov29_02306728 - mov sb, #0 - ldr r6, _0231639C ; =0x02353538 - mov r8, sb - mov r7, #1 -_023162C0: - ldr r0, [r6] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb78] - mov r0, sl - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02316304 - ldr r0, [sl, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #3 - bne _02316304 - mov r0, r5 - mov r1, sl - mov r2, r8 - mov r3, r7 - bl ov29_02306728 -_02316304: - add sb, sb, #1 - cmp sb, #0x14 - blt _023162C0 - mov r0, r4 - bl ov29_022E46D0 - ldr r6, [r4, #0xb4] - ldrb r0, [r6, #0xd8] - cmp r0, #3 - beq _02316350 - ldr r1, _023163A0 ; =0x022C4788 - mov r3, #3 - mov r0, r4 - mov r2, #0 - strb r3, [r6, #0xd8] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r6, #0xdb] - mov r0, #0 - strb r0, [r6, #0xdc] -_02316350: - ldr r3, _0231639C ; =0x02353538 - mov r0, #0 - ldr r2, [r3] - mov r1, r4 - add r2, r2, #0x19000 - str r4, [r2, #0x904] - ldr r2, [r3] - ldr r6, [r6, #0xb0] - add r3, r2, #0x19000 - mov r2, r0 - str r6, [r3, #0x90c] - bl SubstitutePlaceholderStringTags - ldr r2, _023163A4 ; =0x00000CED - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231639C: .word 0x02353538 -_023163A0: .word 0x022C4788 -_023163A4: .word 0x00000CED - arm_func_end ov29_02316280 - - arm_func_start ov29_023163A8 -ov29_023163A8: ; 0x023163A8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r6, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - beq _023164C0 - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - bne _023164C0 - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - bne _023164C0 - ldr r3, _023164C8 ; =0x00000C39 - mov ip, #8 - mov r0, r5 - mov r1, r4 - mov r2, #1 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #0 - bne _023164C0 - cmp r6, #0 - movne r0, #1 - bne _023164C0 - mov r0, #0 - ldr r6, [r4, #0xb4] - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xd0] - cmp r0, #5 - beq _023164A4 - ldr r1, _023164CC ; =0x022C47BC - mov r3, #5 - mov r0, r4 - mov r2, #1 - strb r3, [r6, #0xd0] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r4 - strb r1, [r6, #0xd1] - bl ov29_022E442C - ldr r2, _023164D0 ; =0x00000D49 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r5 - mov r1, r4 - bl TryActivateQuickFeet - b _023164B4 -_023164A4: - ldr r2, _023164D4 ; =0x00000D4A - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_023164B4: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 -_023164C0: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023164C8: .word 0x00000C39 -_023164CC: .word 0x022C47BC -_023164D0: .word 0x00000D49 -_023164D4: .word 0x00000D4A - arm_func_end ov29_023163A8 - - arm_func_start ov29_023164D8 -ov29_023164D8: ; 0x023164D8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r4, #0 - bl EntityIsValid__02315118 - cmp r0, #0 - mov r0, r4 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r5, [r6, #0xb4] - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0x11e] - cmp r0, #3 - bhs _02316554 - add r1, r0, #1 - mov r0, #1 - strb r1, [r5, #0x11e] - bl ov29_022E38E0 - mov r0, r6 - bl ov29_022E46D4 - ldrb r1, [r5, #0x11e] - mov r0, r4 - bl ov29_0234B09C - ldr r2, _02316574 ; =0x00000D4B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r4, #1 - b _02316564 -_02316554: - ldr r2, _02316578 ; =0x00000D4C - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02316564: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02316574: .word 0x00000D4B -_02316578: .word 0x00000D4C - arm_func_end ov29_023164D8 - - arm_func_start ov29_0231657C -ov29_0231657C: ; 0x0231657C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xef] - cmp r0, #1 - beq _02316604 - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl ov29_02306A00 - mov r3, #1 - ldr r1, _02316620 ; =0x022C47C8 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xef] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xf0] - bl ov29_022E4704 - ldr r2, _02316624 ; =0x00000D4D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02316614 -_02316604: - ldr r2, _02316628 ; =0x00000D4E - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02316614: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02316620: .word 0x022C47C8 -_02316624: .word 0x00000D4D -_02316628: .word 0x00000D4E - arm_func_end ov29_0231657C - - arm_func_start ov29_0231662C -ov29_0231662C: ; 0x0231662C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl ov29_022E4714 - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0x106] - cmp r0, #0 - bne _023166F4 - ldr r1, _02316714 ; =0x022C47D0 - mov r0, r5 - mov r2, #0 - bl CalcStatusDuration - add r3, r0, #1 - ldr r2, _02316718 ; =0x00000D51 - mov r0, r6 - mov r1, r5 - strb r3, [r4, #0x106] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02316704 -_023166F4: - ldr r2, _0231671C ; =0x00000D52 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02316704: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02316714: .word 0x022C47D0 -_02316718: .word 0x00000D51 -_0231671C: .word 0x00000D52 - arm_func_end ov29_0231662C - - arm_func_start ov29_02316720 -ov29_02316720: ; 0x02316720 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - ldr r4, [r6, #0xb4] - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov ip, #8 - ldr r3, _023168C4 ; =0x00000C39 - mov r0, r7 - mov r1, r6 - mov r2, #1 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov lr, #0 - add ip, r4, #0x124 - mov r1, lr - mov r2, #1 - b _023167E8 -_023167BC: - ldrb r0, [ip, lr, lsl #3] - mov r3, lr, lsl #3 - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _023167E4 - ldrb r0, [ip, r3] - tst r0, #0x10 - bne _023167F0 -_023167E4: - add lr, lr, #1 -_023167E8: - cmp lr, #4 - blt _023167BC -_023167F0: - cmp lr, #4 - bne _02316834 - ldrb r0, [r4, #0x144] - tst r0, #0x10 - bne _02316834 - cmp r5, #0 - bne _0231682C - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023168C8 ; =0x00000D57 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0231682C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02316834: - cmp r5, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd0] - cmp r0, #6 - beq _023168A4 - ldr r1, _023168CC ; =0x022C47D8 - mov r3, #6 - mov r0, r6 - mov r2, #1 - strb r3, [r4, #0xd0] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r6 - strb r1, [r4, #0xd1] - bl ov29_022E4718 - ldr r2, _023168D0 ; =0x00000D55 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _023168B4 -_023168A4: - ldr r2, _023168D4 ; =0x00000D56 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023168B4: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023168C4: .word 0x00000C39 -_023168C8: .word 0x00000D57 -_023168CC: .word 0x022C47D8 -_023168D0: .word 0x00000D55 -_023168D4: .word 0x00000D56 - arm_func_end ov29_02316720 - - arm_func_start ov29_023168D8 -ov29_023168D8: ; 0x023168D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r8, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02316B98 - mov r0, #0 - mov r1, r5 - mov r2, r0 - ldr r4, [r5, #0xb4] - bl SubstitutePlaceholderStringTags - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r7, #0 - beq _02316A88 - mov r0, r7 - bl sub_02050FF8 - strh r0, [sp, #0x10] - add r1, r4, #0x100 - ldrh ip, [r1, #0x4a] - ldrh r1, [r1, #0x4c] - mov r0, r0, lsr #0x10 - ldrh r2, [sp, #0x10] - sub r3, sp, #4 - strh r0, [sp, #0x12] - strh r1, [sp, #0x1e] - ldrh r1, [sp, #0x12] - strh r2, [sp, #0x20] - ldrh r0, [sp, #0x1e] - strh ip, [r3] - strh r1, [sp, #0x22] - strh r0, [r3, #2] - ldrh r2, [sp, #0x20] - ldr r0, [r3] - ldrh r1, [sp, #0x22] - strh r2, [r3] - strh ip, [sp, #0x1c] - strh r1, [r3, #2] - ldr r1, [r3] - bl SubFixedPoint - strh r0, [sp, #0xc] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xe] - ldrh r2, [sp, #0xc] - add r1, r4, #0x100 - ldrh r0, [sp, #0xe] - strh r2, [r1, #0x4a] - sub r3, sp, #4 - strh r0, [r1, #0x4c] - ldrh r0, [r1, #0x46] - strh r0, [r3] - ldrh r0, [r1, #0x48] - strh r0, [r3, #2] - ldrh r2, [r1, #0x4a] - ldr r0, [r3] - strh r2, [r3] - ldrh r1, [r1, #0x4c] - strh r1, [r3, #2] - ldr r1, [r3] - bl sub_02050F78 - strh r0, [sp, #8] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xa] - ldrh r0, [sp, #8] - add r1, r4, #0x100 - ldrh r2, [sp, #0xa] - strh r0, [r1, #0x46] - mov r0, #0 - strh r2, [r1, #0x48] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrh r1, [sp, #0x1c] - sub r2, sp, #4 - ldrh r0, [sp, #0x1e] - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r4, #0x100 - mov r4, r0 - ldrh r0, [r1, #0x4a] - sub r2, sp, #4 - strh r0, [r2] - ldrh r0, [r1, #0x4c] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r4, r0 - beq _02316A74 - mov r0, r5 - bl ov29_022E471C - ldr r2, _02316BA0 ; =0x00000D64 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02316B90 -_02316A74: - ldr r2, _02316BA4 ; =0x00000D68 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02316B90 -_02316A88: - mov r0, r8 - bl sub_02050FF8 - strh r0, [sp, #4] - add r1, r4, #0x100 - ldrh ip, [r1, #0x46] - ldrh r1, [r1, #0x48] - mov r0, r0, lsr #0x10 - ldrh r2, [sp, #4] - sub r3, sp, #4 - strh r0, [sp, #6] - strh r1, [sp, #0x1a] - ldrh r1, [sp, #6] - strh r2, [sp, #0x14] - ldrh r0, [sp, #0x1a] - strh ip, [r3] - strh r1, [sp, #0x16] - strh r0, [r3, #2] - ldrh r2, [sp, #0x14] - ldr r0, [r3] - ldrh r1, [sp, #0x16] - strh r2, [r3] - strh ip, [sp, #0x18] - strh r1, [r3, #2] - ldr r1, [r3] - bl SubFixedPoint - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r1, [sp] - add r2, r4, #0x100 - ldrh r3, [sp, #2] - strh r1, [r2, #0x46] - mov r0, #0 - strh r3, [r2, #0x48] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrh r1, [sp, #0x18] - sub r2, sp, #4 - ldrh r0, [sp, #0x1a] - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r4, #0x100 - ldrh r2, [r1, #0x46] - sub r3, sp, #4 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #0x48] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r4, r0 - beq _02316B80 - mov r0, r5 - bl ov29_022E47B8 - ldr r2, _02316BA8 ; =0x00000D63 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02316B90 -_02316B80: - ldr r2, _02316BAC ; =0x00000D69 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02316B90: - mov r0, r5 - bl UpdateStatusIconFlags -_02316B98: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02316BA0: .word 0x00000D64 -_02316BA4: .word 0x00000D68 -_02316BA8: .word 0x00000D63 -_02316BAC: .word 0x00000D69 - arm_func_end ov29_023168D8 - - arm_func_start ov29_02316BB0 -ov29_02316BB0: ; 0x02316BB0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x50] - bl EntityIsValid__02315118 - cmp r0, #0 - beq _023170FC - mov r0, sb - mov r1, #0x25 - ldr r5, [sb, #0xb4] - bl IqSkillIsEnabled - cmp r0, #0 - bne _02316C08 - mov r0, sb - mov r1, #0x59 - bl AbilityIsActive2 - cmp r0, #0 - beq _02316C38 -_02316C08: - ldr r1, _02317104 ; =0x022C44B0 - mov r0, r8, lsl #8 - ldrsh r1, [r1] - mov r1, r1, lsl #8 - bl MultiplyByFixedPoint - mov r1, #0x64 - bl DivideInt - bl sub_02001888 - ldr r1, _02317108 ; =0x000003E7 - add r8, r8, r0, asr #8 - cmp r8, r1 - movgt r8, r1 -_02316C38: - ldrb r0, [r5, #7] - cmp r0, #0 - bne _02316C74 - mov r0, sb - mov r1, #0x22 - bl ItemIsActive__0231513C - cmp r0, #0 - beq _02316C74 - cmp r6, #0 - beq _023170FC - ldr r2, _0231710C ; =0x00000D6C - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023170FC -_02316C74: - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r7, #0 - mov r4, #0 - beq _02316CE8 - add r0, r5, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] - sub r3, sp, #4 - mov fp, r0 - strh r2, [r3] - ldrh r0, [r1, #0x4c] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp fp, r0 - ldr r0, _02317108 ; =0x000003E7 - movge r4, #1 - cmp r8, r0 - moveq r4, #1 -_02316CE8: - cmp r4, #0 - add r0, r5, #0x100 - beq _02316F08 - ldrh r4, [r0, #0x4a] - ldrh r3, [r0, #0x4c] - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r4, [sp, #0x24] - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r3, [sp, #0x26] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] - sub r3, sp, #4 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #0x4c] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r4, r0 - moveq r4, #1 - mov r0, r7 - movne r4, #0 - bl sub_02050FF8 - strh r0, [sp, #0x18] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x1a] - add r1, r5, #0x100 - ldrh r7, [sp, #0x18] - ldrh r2, [sp, #0x1a] - ldrh r0, [r1, #0x4a] - sub r3, sp, #4 - strh r7, [sp, #0x28] - strh r0, [r3] - ldrh r0, [r1, #0x4c] - strh r2, [sp, #0x2a] - ldrh r2, [sp, #0x28] - strh r0, [r3, #2] - ldr r0, [r3] - ldrh r1, [sp, #0x2a] - strh r2, [r3] - strh r1, [r3, #2] - ldr r1, [r3] - bl sub_02050EBC - strh r0, [sp, #0x14] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x16] - ldrh r0, [sp, #0x14] - add r1, r5, #0x100 - ldrh r2, [sp, #0x16] - strh r0, [r1, #0x4a] - mov r0, #0xc8 - strh r2, [r1, #0x4c] - bl sub_02050FF8 - strh r0, [sp, #0x10] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x12] - add r1, r5, #0x100 - ldrh r0, [r1, #0x4a] - sub r7, sp, #4 - ldrh r3, [sp, #0x10] - strh r0, [r7] - ldrh r0, [r1, #0x4c] - ldrh r2, [sp, #0x12] - strh r0, [r7, #2] - ldr r0, [r7] - strh r3, [r7] - strh r2, [r7, #2] - ldr r1, [r7] - bl sub_02050F78 - strh r0, [sp, #0xc] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xe] - ldrh r2, [sp, #0xc] - add r0, r5, #0x100 - ldrh r1, [sp, #0xe] - strh r2, [r0, #0x4a] - tst r4, #0xff - strh r1, [r0, #0x4c] - ldrh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - ldrh r1, [r0, #0x4c] - strh r1, [r0, #0x48] - bne _02316E60 - cmp r6, #0 - beq _02316E60 - ldr r2, _02317110 ; =0x00000D6A - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02316E60: - ldrh r1, [sp, #0x24] - ldrh r0, [sp, #0x26] - sub r2, sp, #4 - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] - sub r3, sp, #4 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #0x4c] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r4, r0 - bne _02316ED4 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _023170F4 - ldr r2, _02317114 ; =0x00000D66 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023170F4 -_02316ED4: - mov r0, sb - bl ov29_022E476C - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _023170F4 - ldr r2, _02317118 ; =0x00000D65 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023170F4 -_02316F08: - ldrh r2, [r0, #0x46] - ldrh r1, [r0, #0x48] - mov r0, r8 - strh r2, [sp, #0x20] - strh r1, [sp, #0x22] - bl sub_02050FF8 - strh r0, [sp, #8] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0xa] - add r1, r5, #0x100 - ldrh r4, [sp, #8] - ldrh r2, [sp, #0xa] - ldrh r0, [r1, #0x46] - sub r3, sp, #4 - strh r4, [sp, #0x1c] - strh r0, [r3] - ldrh r0, [r1, #0x48] - strh r2, [sp, #0x1e] - ldrh r2, [sp, #0x1c] - strh r0, [r3, #2] - ldr r0, [r3] - ldrh r1, [sp, #0x1e] - strh r2, [r3] - strh r1, [r3, #2] - ldr r1, [r3] - bl sub_02050EBC - strh r0, [sp, #4] - mov r0, r0, lsr #0x10 - strh r0, [sp, #6] - ldrh r2, [sp, #4] - add r1, r5, #0x100 - ldrh r0, [sp, #6] - strh r2, [r1, #0x46] - sub r3, sp, #4 - strh r0, [r1, #0x48] - ldrh r0, [r1, #0x46] - strh r0, [r3] - ldrh r0, [r1, #0x48] - strh r0, [r3, #2] - ldrh r2, [r1, #0x4a] - ldr r0, [r3] - strh r2, [r3] - ldrh r1, [r1, #0x4c] - strh r1, [r3, #2] - ldr r1, [r3] - bl sub_02050F78 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldr r0, _02317108 ; =0x000003E7 - ldrh r2, [sp] - cmp r8, r0 - add r0, r5, #0x100 - ldrh r1, [sp, #2] - strh r2, [r0, #0x46] - strh r1, [r0, #0x48] - ldreqh r1, [r0, #0x4a] - streqh r1, [r0, #0x46] - ldreqh r1, [r0, #0x4c] - streqh r1, [r0, #0x48] - mov r0, sb - bl ov29_022E47BC - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrh r1, [sp, #0x20] - sub r2, sp, #4 - ldrh r0, [sp, #0x22] - strh r1, [r2] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r5, #0x100 - ldrh r2, [r1, #0x46] - sub r3, sp, #4 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #0x48] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r4, r0 - bne _02317074 - cmp r6, #0 - beq _023170F4 - ldr r2, _0231711C ; =0x00000D67 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023170F4 -_02317074: - add r0, r5, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - add r1, r5, #0x100 - ldrh r2, [r1, #0x4a] - sub r3, sp, #4 - mov r4, r0 - strh r2, [r3] - ldrh r0, [r1, #0x4c] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r4, r0 - blt _023170DC - cmp r6, #0 - beq _023170F4 - ldr r2, _02317110 ; =0x00000D6A - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023170F4 -_023170DC: - cmp r6, #0 - beq _023170F4 - ldr r2, _02317120 ; =0x00000D6B - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_023170F4: - mov r0, sb - bl UpdateStatusIconFlags -_023170FC: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02317104: .word 0x022C44B0 -_02317108: .word 0x000003E7 -_0231710C: .word 0x00000D6C -_02317110: .word 0x00000D6A -_02317114: .word 0x00000D66 -_02317118: .word 0x00000D65 -_0231711C: .word 0x00000D67 -_02317120: .word 0x00000D6B - arm_func_end ov29_02316BB0 - - arm_func_start ov29_02317124 -ov29_02317124: ; 0x02317124 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf3] - cmp r0, #1 - beq _023171F0 - ldr r1, _02317210 ; =0x022C4848 - mov r2, #1 - mov r0, r5 - strb r2, [r4, #0xf3] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xf4] - bl ov29_022E47C0 - ldr r2, _02317214 ; =0x00000D72 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02317200 -_023171F0: - ldr r2, _02317218 ; =0x00000D73 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02317200: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317210: .word 0x022C4848 -_02317214: .word 0x00000D72 -_02317218: .word 0x00000D73 - arm_func_end ov29_02317124 - - arm_func_start ov29_0231721C -ov29_0231721C: ; 0x0231721C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x240 - mov sb, r1 - mov sl, r0 - mov r0, sb - bl EntityIsValid__02315118 - cmp r0, #0 - beq _023173F4 - ldr r8, [sb, #0xb4] - ldrb r0, [r8, #0xef] - cmp r0, #2 - bne _02317260 - ldr r2, _023173FC ; =0x00000D6F - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023173F4 -_02317260: - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - add r0, sp, #0x40 - mov r1, #0 - bl ov29_022E7C60 - movs r6, r0 - bne _02317298 - ldr r2, _02317400 ; =0x00000D6E - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023173F4 -_02317298: - mov r0, #0 - bl sub_02024FB8 - mov r1, r0 - add r0, sp, #0 - bl Strcpy - mov r4, #0 - mov r7, r4 - ldrsh r5, [r8, #4] - add fp, sp, #0x40 - b _02317310 -_023172C0: - mov r0, r6 - bl DungeonRandInt - add r0, fp, r0, lsl #3 - bl GetMonsterIdFromSpawnEntry - mov r1, r0 - mov r0, sb - bl ov29_022F9408 - ldrsh r1, [r8, #4] - mov r5, r0 - cmp r5, r1 - beq _0231730C - mov r1, #1 - bl MewSpawnCheck - cmp r0, #0 - beq _0231730C - mov r0, r5 - bl GetSpriteIndex__022F7388 - movs r4, r0 - bne _02317318 -_0231730C: - add r7, r7, #1 -_02317310: - cmp r7, #0x14 - blt _023172C0 -_02317318: - cmp r7, #0x14 - bne _02317334 - ldr r2, _02317400 ; =0x00000D6E - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023173F4 -_02317334: - cmp r4, #0 - bne _02317350 - ldr r2, _02317400 ; =0x00000D6E - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023173F4 -_02317350: - strh r5, [r8, #4] - mov r0, sb - strh r4, [sb, #0xa8] - bl ov29_02304BAC - mov r0, sb - bl ov29_022E47C4 - mov r0, sb - bl GetSleepAnimationId - mov r1, r0 - mov r0, sb - bl ov29_02304830 - mov r0, sl - mov r1, sb - mov r2, #0 - bl ov29_02306A00 - mov r0, #2 - strb r0, [r8, #0xef] - ldr r1, _02317404 ; =0x022C47FC - mov r0, sb - mov r2, #1 - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r8, #0xf0] - mov r0, #1 - bl sub_02024FB8 - ldrsh r1, [r8, #4] - mov r2, #0x4e - mov r4, r0 - bl GetNameWithGender - mov r0, #0 - add r1, sp, #0 - bl ov29_0234B0B4 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0B4 - ldr r2, _02317408 ; =0x00000D6D - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sb - bl UpdateStatusIconFlags -_023173F4: - add sp, sp, #0x240 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023173FC: .word 0x00000D6F -_02317400: .word 0x00000D6E -_02317404: .word 0x022C47FC -_02317408: .word 0x00000D6D - arm_func_end ov29_0231721C - - arm_func_start ov29_0231740C -ov29_0231740C: ; 0x0231740C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xef] - cmp r0, #3 - beq _02317494 - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02306A00 - mov r3, #3 - ldr r1, _023174C0 ; =0x022C480C - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xef] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xf0] - bl ov29_022E47C8 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - mov r1, r5 - mov r2, #0xd70 - bl LogMessageByIdWithPopupCheckUserTarget - b _023174B4 -_02317494: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023174C4 ; =0x00000D71 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023174B4: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023174C0: .word 0x022C480C -_023174C4: .word 0x00000D71 - arm_func_end ov29_0231740C - - arm_func_start ov29_023174C8 -ov29_023174C8: ; 0x023174C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, #0 - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov sl, r3 - mov r4, sb - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, sb - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, sb - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - mov r0, sb - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r1, r7 - mov r2, r0 - ldr r5, [r7, #0xb4] - bl SubstitutePlaceholderStringTags - cmp sl, #0 - beq _02317568 - mov r0, r7 - mov r1, #0xe - bl MonsterIsType - cmp r0, #0 - movne r0, #1 - moveq r0, sb - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02317568: - ldrsh r0, [r5, #0x2e] - cmp r0, #0xa - movgt r0, #0xa - movgt sb, #1 - strgth r0, [r5, #0x2e] - cmp sb, #0 - beq _023175A4 - mov r0, r7 - mov r1, r6 - bl ov29_022E47CC - ldr r2, _02317638 ; =0x00000D77 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r4, #1 -_023175A4: - ldrb r0, [r5, #0xfe] - cmp r0, #0 - beq _023175C8 - ldr r2, _0231763C ; =0x00000D75 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_023175C8: - cmp r4, #0 - bne _023175DC - mov r0, r7 - mov r1, r6 - bl ov29_022E47CC -_023175DC: - mov r0, r7 - mov r1, #0xe - bl MonsterIsType - cmp r0, #0 - bne _02317604 - ldr r2, _02317640 ; =0x00000D76 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02317628 -_02317604: - ldr r2, _02317644 ; =0x00000D74 - mov r3, #1 - mov r0, r8 - mov r1, r7 - strb r3, [r5, #0xfe] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r7 - bl TryActivateQuickFeet -_02317628: - mov r0, r7 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02317638: .word 0x00000D77 -_0231763C: .word 0x00000D75 -_02317640: .word 0x00000D76 -_02317644: .word 0x00000D74 - arm_func_end ov29_023174C8 - - arm_func_start ov29_02317648 -ov29_02317648: ; 0x02317648 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _023176C0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x78d] - cmp r0, #0 - bne _023176AC - mov r0, r4 - bl ov29_022E4868 - ldr r1, _023176C0 ; =0x02353538 - mov r0, r4 - ldr r1, [r1] - mov r2, #1 - strb r2, [r1, #0x78d] - bl UpdateStatusIconFlags - ldr r2, _023176C4 ; =0x00000D78 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_023176AC: - ldr r2, _023176C8 ; =0x00000D79 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023176C0: .word 0x02353538 -_023176C4: .word 0x00000D78 -_023176C8: .word 0x00000D79 - arm_func_end ov29_02317648 - - arm_func_start ov29_023176CC -ov29_023176CC: ; 0x023176CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r6, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r6, [r4, #0xb4] - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r6, #0xf1] - cmp r0, #1 - beq _023177B8 - mov r2, #1 - cmp r7, #0 - strb r2, [r6, #0xf1] - movne r0, #0x7f - bne _0231777C - ldr r1, _023177D8 ; =0x022C4828 - mov r0, r4 - bl CalcStatusDuration - add r0, r0, #1 -_0231777C: - strb r0, [r6, #0xf2] - mov r0, r4 - bl ov29_022E486C - ldr r2, _023177DC ; =0x00000D34 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0x31 - bl AdvanceFrame - bl ov29_02336F4C - bl ov29_02339CE8 - mov r0, r5 - mov r1, r4 - bl TryActivateQuickFeet - b _023177C8 -_023177B8: - ldr r2, _023177E0 ; =0x00000D35 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_023177C8: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023177D8: .word 0x022C4828 -_023177DC: .word 0x00000D34 -_023177E0: .word 0x00000D35 - arm_func_end ov29_023176CC - - arm_func_start IsBlinded -IsBlinded: ; 0x023177E4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _0231783C - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0xf1] - cmp r0, #1 - beq _02317834 - cmp r4, #0 - beq _0231783C - ldrb r0, [r1, #7] - cmp r0, #0 - bne _0231783C - mov r0, r5 - mov r1, #0xe - bl ItemIsActive__0231513C - cmp r0, #0 - beq _0231783C -_02317834: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0231783C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end IsBlinded - - arm_func_start ov29_02317844 -ov29_02317844: ; 0x02317844 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - cmp r4, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf1] - cmp r0, #2 - beq _02317930 - mov r0, r5 - bl ov29_022E48B8 - ldr r2, _02317950 ; =0x00000D36 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r3, #2 - ldr r1, _02317954 ; =0x022C4830 - mov r0, r5 - mov r2, #1 - strb r3, [r4, #0xf1] - bl CalcStatusDuration - add r2, r0, #1 - mov r0, r6 - mov r1, r5 - strb r2, [r4, #0xf2] - bl ov29_0231B364 - mov r0, #1 - bl ov29_022E2EC4 - bl ov29_02336F4C - bl ov29_02339CE8 - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02317940 -_02317930: - ldr r2, _02317958 ; =0x00000D37 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02317940: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317950: .word 0x00000D36 -_02317954: .word 0x022C4830 -_02317958: .word 0x00000D37 - arm_func_end ov29_02317844 - - arm_func_start ov29_0231795C -ov29_0231795C: ; 0x0231795C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf1] - cmp r0, #3 - beq _023179E4 - ldr r1, _02317A00 ; =0x022C4838 - mov r3, #3 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xf1] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xf2] - bl ov29_022E4914 - ldr r2, _02317A04 ; =0x00000D38 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0x31 - bl AdvanceFrame - bl ov29_02336F4C - bl ov29_02339CE8 - b _023179F4 -_023179E4: - ldr r2, _02317A08 ; =0x00000D39 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023179F4: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317A00: .word 0x022C4838 -_02317A04: .word 0x00000D38 -_02317A08: .word 0x00000D39 - arm_func_end ov29_0231795C - - arm_func_start ov29_02317A0C -ov29_02317A0C: ; 0x02317A0C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02317A4C - ldr r0, [r4, #0xb4] - ldrsh r0, [r0, #2] - bl GetMobilityType - cmp r0, #0 - cmpne r0, #4 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - bne _02317A54 -_02317A4C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02317A54: - ldr r6, [r4, #0xb4] - ldrb r0, [r6, #0xef] - cmp r0, #4 - beq _02317AB8 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_02306A00 - mov r3, #4 - ldr r1, _02317AE8 ; =0x022C486C - mov r0, r4 - mov r2, #1 - strb r3, [r6, #0xef] - bl CalcStatusDuration - add r3, r0, #1 - mov r0, #0 - mov r1, r4 - mov r2, r0 - strb r3, [r6, #0xf0] - bl SubstitutePlaceholderStringTags - ldr r2, _02317AEC ; =0x00000D3A - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _02317AD8 -_02317AB8: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02317AF0 ; =0x00000D3B - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02317AD8: - mov r0, r4 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317AE8: .word 0x022C486C -_02317AEC: .word 0x00000D3A -_02317AF0: .word 0x00000D3B - arm_func_end ov29_02317A0C - - arm_func_start ov29_02317AF4 -ov29_02317AF4: ; 0x02317AF4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02317B40 - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - bne _02317B40 - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - beq _02317B48 -_02317B40: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02317B48: - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xf1] - cmp r0, #1 - bne _02317B70 - ldr r2, _02317C0C ; =0x00000D3E - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02317B70: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf1] - cmp r0, #4 - beq _02317BEC - ldr r1, _02317C10 ; =0x022C487C - mov r3, #4 - mov r0, r5 - mov r2, #1 - strb r3, [r4, #0xf1] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xf2] - bl sub_01FFB62C - ldr r0, _02317C14 ; =0x00000115 - bl ov29_022EACCC - ldr r2, _02317C18 ; =0x00000D3C - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0x31 - bl AdvanceFrame - bl ov29_02336F4C - bl ov29_02339CE8 - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02317BFC -_02317BEC: - ldr r2, _02317C1C ; =0x00000D3D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02317BFC: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317C0C: .word 0x00000D3E -_02317C10: .word 0x022C487C -_02317C14: .word 0x00000115 -_02317C18: .word 0x00000D3C -_02317C1C: .word 0x00000D3D - arm_func_end ov29_02317AF4 - - arm_func_start RestoreMovePP -RestoreMovePP: ; 0x02317C20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov fp, r2 - mov r8, r3 - mov r6, #0 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02317D48 - ldr r0, [sb, #0xb4] - mov r5, r6 - add r4, r0, #0x124 -_02317C58: - ldrb r0, [r4, r5, lsl #3] - add r7, r4, r5, lsl #3 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02317CD0 - ldrb r1, [r7, #6] - mov r0, r7 - str r1, [sp, #4] - bl GetMaxPp - str r0, [sp] - mov r0, r7 - bl GetMaxPpWrapper - str r0, [sp] - ldr r1, [sp, #4] - ldr r0, [sp] - cmp r1, r0 - bge _02317CD0 - ldr r0, [sp, #4] - mov r6, #1 - add r0, r0, fp - str r0, [sp, #4] - ldr r1, [sp, #4] - ldr r0, [sp] - cmp r1, r0 - ldrgt r0, [sp] - strgt r0, [sp, #4] - ldr r0, [sp, #4] - strb r0, [r7, #6] -_02317CD0: - add r5, r5, #1 - cmp r5, #4 - blt _02317C58 - cmp r6, #0 - beq _02317D18 - mov r0, sb - bl ov29_022E4964 - cmp r8, #0 - bne _02317D40 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02317D50 ; =0x00000DB3 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02317D40 -_02317D18: - cmp r8, #0 - bne _02317D40 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02317D54 ; =0x00000DB4 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_02317D40: - mov r0, sb - bl UpdateStatusIconFlags -_02317D48: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02317D50: .word 0x00000DB3 -_02317D54: .word 0x00000DB4 - arm_func_end RestoreMovePP - - arm_func_start ov29_02317D58 -ov29_02317D58: ; 0x02317D58 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r5, r2 - mov r6, r3 - mov r4, #0 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _02317E78 - ldr r0, [r7, #0xb4] - add r1, r0, #0x124 - ldrb r0, [r1, r5, lsl #3] - add r5, r1, r5, lsl #3 - tst r0, #1 - movne r0, #1 - moveq r0, r4 - tst r0, #0xff - beq _02317E78 - ldrb r1, [r5, #6] - mov r0, r5 - str r1, [sp, #4] - bl GetMaxPp - str r0, [sp] - mov r0, r5 - bl GetMaxPpWrapper - str r0, [sp] - ldr r1, [sp, #4] - ldr r0, [sp] - cmp r1, r0 - bge _02317E04 - ldr r0, [sp, #4] - mov r4, #1 - add r0, r0, r6 - str r0, [sp, #4] - ldr r1, [sp, #4] - ldr r0, [sp] - cmp r1, r0 - ldrgt r0, [sp] - strgt r0, [sp, #4] - ldr r0, [sp, #4] - strb r0, [r5, #6] -_02317E04: - cmp r4, #0 - beq _02317E44 - mov r0, r7 - bl ov29_022E4964 - ldrb r0, [sp, #0x20] - cmp r0, #0 - beq _02317E70 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02317E80 ; =0x00000DB3 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02317E70 -_02317E44: - ldrb r0, [sp, #0x20] - cmp r0, #0 - beq _02317E70 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02317E84 ; =0x00000DB4 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02317E70: - mov r0, r7 - bl UpdateStatusIconFlags -_02317E78: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02317E80: .word 0x00000DB3 -_02317E84: .word 0x00000DB4 - arm_func_end ov29_02317D58 - - arm_func_start ov29_02317E88 -ov29_02317E88: ; 0x02317E88 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov sb, r1 - ldr r1, [sb, #0xb4] - mov r6, #0 - mov sl, r0 - mov r8, r2 - mov r7, r3 - mov r5, r6 - add r4, r1, #0x124 - add fp, sp, #0xc -_02317EB4: - ldrb r1, [r4, r5, lsl #3] - add r0, r4, r5, lsl #3 - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _02317F00 - ldrb r1, [r0, #6] - str r1, [sp, #8] - bl GetMaxPp - str r0, [sp, #4] - ldr r1, [sp, #8] - ldr r0, [sp, #4] - cmp r1, r0 - addlt r0, r6, #1 - movlt r1, r6, lsl #1 - movlt r0, r0, lsl #0x10 - strlth r5, [fp, r1] - movlt r6, r0, asr #0x10 -_02317F00: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #4 - blt _02317EB4 - cmp r6, #0 - ble _02317F48 - mov r0, r6 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - add r1, sp, #0xc - mov r0, r0, asr #0xf - ldrh r2, [r1, r0] - mov r0, sl - mov r1, sb - mov r3, r8 - str r7, [sp] - bl ov29_02317D58 -_02317F48: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02317E88 - - arm_func_start ov29_02317F50 -ov29_02317F50: ; 0x02317F50 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, [r5, #0xb4] - ldrb r3, [r2, #0x1a] - add r1, r3, r4 - cmp r1, #0xff - movge r1, #0xff - and r0, r1, #0xff - strb r1, [r2, #0x1a] - cmp r3, r0 - bhs _02317FC0 - mov r0, r5 - bl ov29_022E49B4 - ldr r2, _02317FDC ; =0x00000D96 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02317FD0 -_02317FC0: - ldr r2, _02317FE0 ; =0x00000D97 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02317FD0: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02317FDC: .word 0x00000D96 -_02317FE0: .word 0x00000D97 - arm_func_end ov29_02317F50 - - arm_func_start ov29_02317FE4 -ov29_02317FE4: ; 0x02317FE4 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, [r5, #0xb4] - ldrb r3, [r2, #0x1b] - add r1, r3, r4 - cmp r1, #0xff - movge r1, #0xff - and r0, r1, #0xff - strb r1, [r2, #0x1b] - cmp r3, r0 - bhs _02318054 - mov r0, r5 - bl ov29_022E4A04 - ldr r2, _02318070 ; =0x00000D98 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02318064 -_02318054: - ldr r2, _02318074 ; =0x00000D99 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318064: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318070: .word 0x00000D98 -_02318074: .word 0x00000D99 - arm_func_end ov29_02317FE4 - - arm_func_start ov29_02318078 -ov29_02318078: ; 0x02318078 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, [r5, #0xb4] - ldrb r3, [r2, #0x1c] - add r1, r3, r4 - cmp r1, #0xff - movge r1, #0xff - and r0, r1, #0xff - strb r1, [r2, #0x1c] - cmp r3, r0 - bhs _023180E8 - mov r0, r5 - bl ov29_022E4A54 - ldr r2, _02318104 ; =0x00000D9A - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023180F8 -_023180E8: - ldr r2, _02318108 ; =0x00000D9B - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023180F8: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318104: .word 0x00000D9A -_02318108: .word 0x00000D9B - arm_func_end ov29_02318078 - - arm_func_start ov29_0231810C -ov29_0231810C: ; 0x0231810C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - mov r4, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, [r5, #0xb4] - ldrb r3, [r2, #0x1d] - add r1, r3, r4 - cmp r1, #0xff - movge r1, #0xff - and r0, r1, #0xff - strb r1, [r2, #0x1d] - cmp r3, r0 - bhs _0231817C - mov r0, r5 - bl ov29_022E4AA4 - ldr r2, _02318198 ; =0x00000D9C - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231818C -_0231817C: - ldr r2, _0231819C ; =0x00000D9D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0231818C: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318198: .word 0x00000D9C -_0231819C: .word 0x00000D9D - arm_func_end ov29_0231810C - - arm_func_start ov29_023181A0 -ov29_023181A0: ; 0x023181A0 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r4, [r5, #0xb4] - mov r6, r0 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xee] - cmp r0, #1 - beq _023181EC - mov r1, #1 - mov r0, r5 - strb r1, [r4, #0xee] - bl ov29_022E4AF0 - ldr r2, _02318208 ; =0x00000DDD - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023181FC -_023181EC: - ldr r2, _0231820C ; =0x00000DDE - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023181FC: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318208: .word 0x00000DDD -_0231820C: .word 0x00000DDE - arm_func_end ov29_023181A0 - - arm_func_start ov29_02318210 -ov29_02318210: ; 0x02318210 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r4, [r5, #0xb4] - mov r6, r0 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xee] - cmp r0, #2 - beq _0231825C - mov r1, #2 - mov r0, r5 - strb r1, [r4, #0xee] - bl ov29_022E4B3C - ldr r2, _02318278 ; =0x00000DDF - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231826C -_0231825C: - mov r0, r6 - mov r1, r5 - mov r2, #0xde0 - bl LogMessageByIdWithPopupCheckUserTarget -_0231826C: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318278: .word 0x00000DDF - arm_func_end ov29_02318210 - - arm_func_start ov29_0231827C -ov29_0231827C: ; 0x0231827C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r8, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - bl EntityIsValid__02315118 - cmp r0, #0 - mov r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r1, r6 - mov r2, r0 - ldr r4, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - cmp r8, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r4, #0xd8] - cmp r0, #4 - beq _02318388 - mov r0, r7 - mov r1, r6 - bl ov29_023066D8 - mov r3, #4 - ldr r1, _023183B0 ; =0x022C476C - mov r0, r6 - mov r2, #1 - strb r3, [r4, #0xd8] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r4, #0xdb] - mov r1, #0 - ldr r0, _023183B4 ; =0x02353538 - strb r1, [r4, #0xdc] - ldr r0, [r0] - mov r1, #1 - strb r1, [r0, #0xe] - cmp r5, #0 - beq _02318370 - ldr r2, _023183B8 ; =0x00000D7B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02318370: - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - mov r0, r6 - bl ov29_022FB984 - b _023183A0 -_02318388: - cmp r5, #0 - beq _023183A0 - ldr r2, _023183BC ; =0x00000D7C - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023183A0: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023183B0: .word 0x022C476C -_023183B4: .word 0x02353538 -_023183B8: .word 0x00000D7B -_023183BC: .word 0x00000D7C - arm_func_end ov29_0231827C - - arm_func_start SetReflectDamageCountdownTo4 -SetReflectDamageCountdownTo4: ; 0x023183C0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02315118 - cmp r0, #0 - ldrne r0, _023183E4 ; =0x022C4620 - ldrne r1, [r4, #0xb4] - ldrnesh r0, [r0] - strneb r0, [r1, #0xd7] - ldmia sp!, {r4, pc} - .align 2, 0 -_023183E4: .word 0x022C4620 - arm_func_end SetReflectDamageCountdownTo4 - - arm_func_start ov29_023183E8 -ov29_023183E8: ; 0x023183E8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl EntityIsValid__02315118 - cmp r0, #0 - beq _0231844C - ldr r3, [r4, #0xb4] - ldr r0, _02318454 ; =0x000003E7 - ldrsh r2, [r3, #0x12] - ldrsh r1, [r3, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldrsh r0, [r3, #0x10] - cmp r0, r1 - bge _02318444 - ldr r0, _02318458 ; =0x022C4628 - mov r3, #0 - ldrsh r2, [r0] - mov r0, r4 - mov r1, r4 - str r3, [sp] - bl TryIncreaseHp -_02318444: - mov r0, r4 - bl SetReflectDamageCountdownTo4 -_0231844C: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02318454: .word 0x000003E7 -_02318458: .word 0x022C4628 - arm_func_end ov29_023183E8 - - arm_func_start ov29_0231845C -ov29_0231845C: ; 0x0231845C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0x10 - beq _023184E0 - ldr r1, _023184FC ; =0x022C4764 - mov r3, #0x10 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl SetReflectDamageCountdownTo4 - ldr r2, _02318500 ; =0x00000D7D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023184F0 -_023184E0: - ldr r2, _02318504 ; =0x00000D7E - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023184F0: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023184FC: .word 0x022C4764 -_02318500: .word 0x00000D7D -_02318504: .word 0x00000D7E - arm_func_end ov29_0231845C - - arm_func_start ov29_02318508 -ov29_02318508: ; 0x02318508 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0x11 - beq _02318584 - ldr r1, _023185A0 ; =0x022C4768 - mov r3, #0x11 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r3, r0, #1 - ldr r2, _023185A4 ; =0x00000D7F - mov r0, r6 - mov r1, r5 - strb r3, [r4, #0xd6] - bl LogMessageByIdWithPopupCheckUserTarget - b _02318594 -_02318584: - mov r0, r6 - mov r1, r5 - mov r2, #0xd80 - bl LogMessageByIdWithPopupCheckUserTarget -_02318594: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023185A0: .word 0x022C4768 -_023185A4: .word 0x00000D7F - arm_func_end ov29_02318508 - - arm_func_start ov29_023185A8 -ov29_023185A8: ; 0x023185A8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r7, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xd8] - cmp r0, #5 - beq _02318698 - mov r0, r6 - mov r1, r5 - bl ov29_023066D8 - mov r3, #5 - ldr r1, _023186C0 ; =0x022C4774 - mov r0, r5 - mov r2, #1 - strb r3, [r7, #0xd8] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xdb] - cmp r4, #0 - beq _02318688 - ldr r2, _023186C4 ; =0x00000D81 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318688: - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _023186B0 -_02318698: - cmp r4, #0 - beq _023186B0 - ldr r2, _023186C8 ; =0x00000D82 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023186B0: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023186C0: .word 0x022C4774 -_023186C4: .word 0x00000D81 -_023186C8: .word 0x00000D82 - arm_func_end ov29_023185A8 - - arm_func_start ov29_023186CC -ov29_023186CC: ; 0x023186CC - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd8] - cmp r0, #6 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end ov29_023186CC - - arm_func_start ov29_02318700 -ov29_02318700: ; 0x02318700 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02318728 ; =0x00000D86 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, pc} - .align 2, 0 -_02318728: .word 0x00000D86 - arm_func_end ov29_02318700 - - arm_func_start ov29_0231872C -ov29_0231872C: ; 0x0231872C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r7, r3 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - cmp r7, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r7, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xd8] - cmp r0, #6 - beq _0231881C - mov r0, r6 - mov r1, r5 - bl ov29_023066D8 - mov r3, #6 - ldr r1, _02318844 ; =0x022C4778 - mov r0, r5 - mov r2, #1 - strb r3, [r7, #0xd8] - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r7, #0xdb] - cmp r4, #0 - beq _0231880C - ldr r2, _02318848 ; =0x00000D84 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0231880C: - mov r0, r6 - mov r1, r5 - bl TryActivateQuickFeet - b _02318834 -_0231881C: - cmp r4, #0 - beq _02318834 - ldr r2, _0231884C ; =0x00000D85 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318834: - mov r0, r5 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02318844: .word 0x022C4778 -_02318848: .word 0x00000D84 -_0231884C: .word 0x00000D85 - arm_func_end ov29_0231872C - - arm_func_start ov29_02318850 -ov29_02318850: ; 0x02318850 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02301940 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl ov29_02302430 - cmp r0, #0 - mov r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r6 - mov r2, r0 - ldr r4, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - mov r0, r6 - mov r1, #0x10 - bl ov29_02301EAC - cmp r0, #0 - bne _02318900 - cmp r5, #0 - bne _023188F8 - ldr r2, _02318974 ; =0x00000D89 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_023188F8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02318900: - cmp r5, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r4, #0xf5] - cmp r0, #1 - beq _02318954 - ldr r1, _02318978 ; =0x022C477C - mov r2, #1 - mov r0, r6 - strb r2, [r4, #0xf5] - bl CalcStatusDuration - add r3, r0, #1 - ldr r2, _0231897C ; =0x00000D87 - mov r0, r7 - mov r1, r6 - strb r3, [r4, #0xf6] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl TryActivateQuickFeet - b _02318964 -_02318954: - ldr r2, _02318980 ; =0x00000D88 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02318964: - mov r0, r6 - bl UpdateStatusIconFlags - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02318974: .word 0x00000D89 -_02318978: .word 0x022C477C -_0231897C: .word 0x00000D87 -_02318980: .word 0x00000D88 - arm_func_end ov29_02318850 - - arm_func_start ov29_02318984 -ov29_02318984: ; 0x02318984 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - bl GravityIsActive - cmp r0, #0 - beq _023189B0 - ldr r2, _02318A3C ; =0x00000D8C - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r4, r5, r6, pc} -_023189B0: - mov r0, r6 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl EntityIsValid__02315118 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xf7] - cmp r0, #1 - beq _02318A20 - ldr r1, _02318A40 ; =0x022C4780 - mov r2, #1 - mov r0, r5 - strb r2, [r4, #0xf7] - bl CalcStatusDuration - add r3, r0, #1 - ldr r2, _02318A44 ; =0x00000D8A - mov r0, r6 - mov r1, r5 - strb r3, [r4, #0xf8] - bl LogMessageByIdWithPopupCheckUserTarget - b _02318A30 -_02318A20: - ldr r2, _02318A48 ; =0x00000D8B - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318A30: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318A3C: .word 0x00000D8C -_02318A40: .word 0x022C4780 -_02318A44: .word 0x00000D8A -_02318A48: .word 0x00000D8B - arm_func_end ov29_02318984 - - arm_func_start HasConditionalGroundImmunity -HasConditionalGroundImmunity: ; 0x02318A4C - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02315118 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl GravityIsActive - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xf7] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - arm_func_end HasConditionalGroundImmunity - - arm_func_start ov29_02318A90 -ov29_02318A90: ; 0x02318A90 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl IsMonster__02318AB0 - cmp r0, #0 - ldrne r0, [r5, #0xb4] - strneb r4, [r0, #0x10b] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02318A90 - - arm_func_start IsMonster__02318AB0 -IsMonster__02318AB0: ; 0x02318AB0 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__02318AB0 - - arm_func_start ov29_02318AD4 -ov29_02318AD4: ; 0x02318AD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov r8, #1 - bl IsMonster__02318AB0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov sb, #0 - ldr r7, [r4, #0xb4] - mov r5, sb - mov r6, r8 - mov r4, #0x53 - b _02318B3C -_02318B04: - ldrb r0, [r7, #0x10b] - cmp r0, #1 - bne _02318B20 - ldr r0, [r7, #0x188] - cmp r0, #0xc800 - movge r8, r6 - movlt r8, r5 -_02318B20: - cmp r8, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r4 - bl AdvanceFrame - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_02318B3C: - cmp sb, #0x190 - blt _02318B04 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02318AD4 - - arm_func_start ov29_02318B48 -ov29_02318B48: ; 0x02318B48 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, r0 - mov r8, #1 - bl IsMonster__02318AB0 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov sb, #0 - ldr r7, [r4, #0xb4] - mov r5, sb - mov r6, r8 - mov r4, #0x53 - b _02318BB0 -_02318B78: - ldrb r0, [r7, #0x10b] - cmp r0, #0 - bne _02318B94 - ldr r0, [r7, #0x188] - cmp r0, #0 - movle r8, r6 - movgt r8, r5 -_02318B94: - cmp r8, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r4 - bl AdvanceFrame - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_02318BB0: - cmp sb, #0x190 - blt _02318B78 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02318B48 - - arm_func_start ov29_02318BBC -ov29_02318BBC: ; 0x02318BBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r1 - mov sb, r0 - mov r0, r8 - mov r7, r2 - mov r6, r3 - bl EntityIsValid__02318D34 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #0 - ldr r5, [r8, #0xb4] - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r5, #0xd2] - cmp r0, r7 - cmpeq r7, #0xc - bne _02318C18 - ldr r2, _02318D20 ; =0x00000D7A - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02318C18: - strb r7, [r5, #0xd2] - mov r2, #0 - add r0, r5, #0x124 - b _02318C3C -_02318C28: - add r1, r0, r2, lsl #3 - cmp r1, r6 - streqb r2, [r5, #0xd4] - beq _02318C44 - add r2, r2, #1 -_02318C3C: - cmp r2, #4 - blt _02318C28 -_02318C44: - add r0, r7, #0xf9 - mov r1, #1 - and r0, r0, #0xff - strb r1, [r5, #0x154] - cmp r0, #1 - mov r4, #0 - movls r4, r1 - strlsb r1, [r5, #0x10b] - bls _02318C7C - cmp r7, #9 - cmpne r7, #0xa - cmpne r7, #0xd - moveq r0, #2 - streqb r0, [r5, #0x10b] -_02318C7C: - cmp r7, #1 - bne _02318CD0 - ldr r1, _02318D24 ; =0x022C4754 - mov r0, r8 - mov r2, #0 - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r5, #0xd3] - mov r0, #0 - str r0, [r5, #0xb8] - ldrh r1, [r6, #4] - cmp r1, #0x154 - ldreq r0, _02318D28 ; =0x00000166 - streqh r0, [r5, #0xac] - beq _02318CD0 - ldr r0, _02318D2C ; =0x00000217 - cmp r1, r0 - subeq r0, r0, #0xb0 - streqh r0, [r5, #0xac] - subne r0, r0, #0xb2 - strneh r0, [r5, #0xac] -_02318CD0: - cmp r7, #0xc - bne _02318CF0 - ldr r1, _02318D30 ; =0x022C475C - mov r0, r8 - mov r2, #0 - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r5, #0xd3] -_02318CF0: - mov r0, r8 - mov r1, r4 - bl ov29_022E41B0 - ldr r2, [sp, #0x20] - mov r0, sb - mov r1, r8 - bl LogMessageWithPopupCheckUserTarget - mov r0, r8 - bl UpdateStatusIconFlags - mov r0, r8 - bl ov29_02318AD4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02318D20: .word 0x00000D7A -_02318D24: .word 0x022C4754 -_02318D28: .word 0x00000166 -_02318D2C: .word 0x00000217 -_02318D30: .word 0x022C475C - arm_func_end ov29_02318BBC - - arm_func_start EntityIsValid__02318D34 -EntityIsValid__02318D34: ; 0x02318D34 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02318D34 - - arm_func_start ov29_02318D58 -ov29_02318D58: ; 0x02318D58 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02318D34 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0xb4] - ldrb r0, [r1, #0xd2] - cmp r0, #1 - cmpne r0, #0xc - movne r0, #0 - strneb r0, [r1, #0xd2] - strneb r0, [r1, #0x154] - strneb r0, [r1, #0x10b] - mov r0, r4 - bl UpdateStatusIconFlags - ldmia sp!, {r4, pc} - arm_func_end ov29_02318D58 - - arm_func_start ov29_02318D98 -ov29_02318D98: ; 0x02318D98 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, #0 - ldr r4, [r6, #0xb4] - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, r5 - bne _02318DEC - ldr r2, _02318E40 ; =0x00000CF3 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02318DEC: - mov r0, r6 - bl ov29_022E3F20 - ldrb r0, [r4, #0xd5] - cmp r0, #4 - cmpne r0, #0xa - cmpne r0, #0xf - beq _02318E20 - ldr r1, _02318E44 ; =0x022C4750 - mov r0, r6 - mov r2, #0 - bl CalcStatusDuration - add r0, r0, #1 - strb r0, [r4, #0xd6] -_02318E20: - ldr r2, _02318E48 ; =0x00000CF2 - mov r0, r7 - mov r1, r6 - strb r5, [r4, #0xd5] - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02318E40: .word 0x00000CF3 -_02318E44: .word 0x022C4750 -_02318E48: .word 0x00000CF2 - arm_func_end ov29_02318D98 - - arm_func_start EntityIsValid__02318E4C -EntityIsValid__02318E4C: ; 0x02318E4C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02318E4C - - arm_func_start ov29_02318E70 -ov29_02318E70: ; 0x02318E70 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #2 - beq _02318EE8 - ldr r1, _02318F04 ; =0x022C4734 - mov r3, #2 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E3F74 - ldr r2, _02318F08 ; =0x00000CEE - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02318EF8 -_02318EE8: - ldr r2, _02318F0C ; =0x00000CEF - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318EF8: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318F04: .word 0x022C4734 -_02318F08: .word 0x00000CEE -_02318F0C: .word 0x00000CEF - arm_func_end ov29_02318E70 - - arm_func_start ov29_02318F10 -ov29_02318F10: ; 0x02318F10 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0xe - beq _02318F88 - ldr r1, _02318FA4 ; =0x022C4738 - mov r3, #0xe - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E3F78 - mov r0, r6 - mov r1, r5 - mov r2, #0xcf0 - bl LogMessageByIdWithPopupCheckUserTarget - b _02318F98 -_02318F88: - ldr r2, _02318FA8 ; =0x00000CF1 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02318F98: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02318FA4: .word 0x022C4738 -_02318FA8: .word 0x00000CF1 - arm_func_end ov29_02318F10 - - arm_func_start ov29_02318FAC -ov29_02318FAC: ; 0x02318FAC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #6 - beq _02319024 - ldr r1, _02319040 ; =0x022C4794 - mov r3, #6 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E3F7C - ldr r2, _02319044 ; =0x00000CDE - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319034 -_02319024: - ldr r2, _02319048 ; =0x00000CDF - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02319034: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319040: .word 0x022C4794 -_02319044: .word 0x00000CDE -_02319048: .word 0x00000CDF - arm_func_end ov29_02318FAC - - arm_func_start ov29_0231904C -ov29_0231904C: ; 0x0231904C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #5 - beq _023190C4 - ldr r1, _023190E0 ; =0x022C4740 - mov r3, #5 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E3FC8 - ldr r2, _023190E4 ; =0x00000CE7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023190D4 -_023190C4: - ldr r2, _023190E8 ; =0x00000CE8 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023190D4: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023190E0: .word 0x022C4740 -_023190E4: .word 0x00000CE7 -_023190E8: .word 0x00000CE8 - arm_func_end ov29_0231904C - - arm_func_start ov29_023190EC -ov29_023190EC: ; 0x023190EC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #3 - beq _02319164 - ldr r1, _02319180 ; =0x022C4730 - mov r3, #3 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E4014 - ldr r2, _02319184 ; =0x00000CF4 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319174 -_02319164: - ldr r2, _02319188 ; =0x00000CF5 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02319174: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319180: .word 0x022C4730 -_02319184: .word 0x00000CF4 -_02319188: .word 0x00000CF5 - arm_func_end ov29_023190EC - - arm_func_start ov29_0231918C -ov29_0231918C: ; 0x0231918C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #1 - beq _02319204 - ldr r1, _02319220 ; =0x022C472C - mov r3, #1 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E4068 - ldr r2, _02319224 ; =0x00000CF6 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319214 -_02319204: - ldr r2, _02319228 ; =0x00000CF7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02319214: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319220: .word 0x022C472C -_02319224: .word 0x00000CF6 -_02319228: .word 0x00000CF7 - arm_func_end ov29_0231918C - - arm_func_start ov29_0231922C -ov29_0231922C: ; 0x0231922C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl ov29_022E40B8 - ldr r4, [r5, #0xb4] - ldrb r0, [r4, #0xd5] - cmp r0, #7 - beq _023192A4 - ldr r1, _023192D0 ; =0x022C47B8 - mov r3, #7 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r3, r0, #1 - mov r0, #0 - mov r1, r5 - mov r2, r0 - strb r3, [r4, #0xd6] - bl SubstitutePlaceholderStringTags - ldr r2, _023192D4 ; =0x00000D47 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023192C4 -_023192A4: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _023192D8 ; =0x00000D48 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023192C4: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023192D0: .word 0x022C47B8 -_023192D4: .word 0x00000D47 -_023192D8: .word 0x00000D48 - arm_func_end ov29_0231922C - - arm_func_start ov29_023192DC -ov29_023192DC: ; 0x023192DC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #8 - beq _02319354 - ldr r1, _02319370 ; =0x022C47CC - mov r3, #8 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E40BC - ldr r2, _02319374 ; =0x00000D4F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319364 -_02319354: - mov r0, r6 - mov r1, r5 - mov r2, #0xd50 - bl LogMessageByIdWithPopupCheckUserTarget -_02319364: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319370: .word 0x022C47CC -_02319374: .word 0x00000D4F - arm_func_end ov29_023192DC - - arm_func_start ov29_02319378 -ov29_02319378: ; 0x02319378 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #9 - beq _023193F0 - ldr r1, _0231940C ; =0x022C47F4 - mov r3, #9 - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E4108 - ldr r2, _02319410 ; =0x00000D58 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319400 -_023193F0: - ldr r2, _02319414 ; =0x00000D59 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02319400: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231940C: .word 0x022C47F4 -_02319410: .word 0x00000D58 -_02319414: .word 0x00000D59 - arm_func_end ov29_02319378 - - arm_func_start ov29_02319418 -ov29_02319418: ; 0x02319418 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0xb - beq _02319490 - ldr r1, _023194AC ; =0x022C4840 - mov r3, #0xb - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E410C - ldr r2, _023194B0 ; =0x00000D5A - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023194A0 -_02319490: - ldr r2, _023194B4 ; =0x00000D5B - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023194A0: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023194AC: .word 0x022C4840 -_023194B0: .word 0x00000D5A -_023194B4: .word 0x00000D5B - arm_func_end ov29_02319418 - - arm_func_start ov29_023194B8 -ov29_023194B8: ; 0x023194B8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - mov r1, #0x25 - ldr r4, [r5, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - beq _02319500 - ldr r2, _02319574 ; =0x00000DC4 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r4, r5, r6, pc} -_02319500: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0xc - beq _02319558 - ldr r1, _02319578 ; =0x022C4854 - mov r3, #0xc - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E415C - ldr r2, _0231957C ; =0x00000D5C - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319568 -_02319558: - ldr r2, _02319580 ; =0x00000D5D - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02319568: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319574: .word 0x00000DC4 -_02319578: .word 0x022C4854 -_0231957C: .word 0x00000D5C -_02319580: .word 0x00000D5D - arm_func_end ov29_023194B8 - - arm_func_start ov29_02319584 -ov29_02319584: ; 0x02319584 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0 - ldr r4, [r5, #0xb4] - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0xd5] - cmp r0, #0xd - beq _023195FC - ldr r1, _02319618 ; =0x022C485C - mov r3, #0xd - mov r0, r5 - mov r2, #0 - strb r3, [r4, #0xd5] - bl CalcStatusDuration - add r1, r0, #1 - mov r0, r5 - strb r1, [r4, #0xd6] - bl ov29_022E41AC - ldr r2, _0231961C ; =0x00000D5E - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231960C -_023195FC: - ldr r2, _02319620 ; =0x00000D5F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0231960C: - mov r0, r5 - bl UpdateStatusIconFlags - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02319618: .word 0x022C485C -_0231961C: .word 0x00000D5E -_02319620: .word 0x00000D5F - arm_func_end ov29_02319584 - - arm_func_start ov29_02319624 -ov29_02319624: ; 0x02319624 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, #0 - bl EntityIsValid__02318E4C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r2, #0xa - mov sl, #0x100 - ldr r3, [r6, #0xb4] - mov ip, r4 - mov fp, #1 - mov r1, r2 - mov r0, r2 - mov lr, sl -_02319668: - add sb, r3, ip, lsl #1 - ldrsh r8, [sb, #0x24] - cmp r8, #0xa - strneh r2, [sb, #0x24] - add sb, r3, ip, lsl #1 - ldrsh r8, [sb, #0x28] - movne r4, fp - cmp r8, #0xa - strneh r1, [sb, #0x28] - add sb, r3, ip, lsl #1 - ldrsh r8, [sb, #0x2c] - movne r4, #1 - cmp r8, #0xa - strneh r0, [sb, #0x2c] - add sb, r3, ip, lsl #2 - ldr r8, [sb, #0x34] - movne r4, #1 - cmp r8, #0x100 - strne sl, [sb, #0x34] - add sb, r3, ip, lsl #2 - ldr r8, [sb, #0x3c] - movne r4, #1 - cmp r8, #0x100 - add ip, ip, #1 - strne lr, [sb, #0x3c] - movne r4, #1 - cmp ip, #2 - blt _02319668 - cmp r4, #0 - beq _023196EC - mov r0, r6 - bl ov29_022E543C - b _023196FC -_023196EC: - cmp r5, #0 - beq _023196FC - mov r0, r6 - bl ov29_022E543C -_023196FC: - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r4, #0 - beq _02319728 - mov r0, r7 - mov r1, r6 - mov r2, #0xd60 - bl LogMessageByIdWithPopupCheckUserTarget - b _02319738 -_02319728: - ldr r2, _02319744 ; =0x00000D61 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_02319738: - mov r0, r6 - bl UpdateStatusIconFlags - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02319744: .word 0x00000D61 - arm_func_end ov29_02319624 - - arm_func_start ov29_02319748 -ov29_02319748: ; 0x02319748 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02318E4C - cmp r0, #0 - beq _0231979C - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xb - moveq r0, #1 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0x25 - bl ExclusiveItemEffectIsActive__023197A8 - cmp r0, #0 - beq _0231979C - ldr r0, _023197A4 ; =0x022C4648 - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r4, pc} -_0231979C: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_023197A4: .word 0x022C4648 - arm_func_end ov29_02319748 - - arm_func_start ExclusiveItemEffectIsActive__023197A8 -ExclusiveItemEffectIsActive__023197A8: ; 0x023197A8 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__023197A8 - - arm_func_start ov29_023197CC -ov29_023197CC: ; 0x023197CC - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02318E4C - cmp r0, #0 - beq _0231980C - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xe - moveq r0, #1 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0x26 - bl ExclusiveItemEffectIsActive__023197A8 - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r4, pc} -_0231980C: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_023197CC - - arm_func_start Conversion2IsActive -Conversion2IsActive: ; 0x02319814 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02318E4C - cmp r0, #0 - beq _02319854 - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #0xd5] - cmp r0, #0xc - moveq r0, #1 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0x27 - bl ExclusiveItemEffectIsActive__023197A8 - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r4, pc} -_02319854: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Conversion2IsActive - - arm_func_start ov29_0231985C -ov29_0231985C: ; 0x0231985C - mov r2, #0 - ldr r0, _0231987C ; =0x0237CA18 - mov r1, r2 -_02319868: - strb r1, [r0, r2] - add r2, r2, #1 - cmp r2, #8 - blt _02319868 - bx lr - .align 2, 0 -_0231987C: .word 0x0237CA18 - arm_func_end ov29_0231985C - - arm_func_start AiConsiderMove -AiConsiderMove: ; 0x02319880 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov sl, r1 - str r0, [sp, #8] - mov r0, #1 - mov sb, r2 - ldr r6, [sl, #0xb4] - str r0, [sp, #0x14] - mov r5, #0 - bl ov29_0231985C - mov r0, sl - mov r1, sb - mov r2, #1 - bl GetEntityMoveTargetAndRange - str r0, [sp, #0x24] - mov r0, sl - mov r1, #8 - bl IqSkillIsEnabled - mov r4, r0 - ldr r0, [sp, #8] - mov r1, r5 - strb r1, [r0] - ldrb r0, [r6, #0xd0] - cmp r0, #5 - bne _023198F8 - mov r0, sb - bl IsAffectedByTaunt - cmp r0, #0 - moveq r0, #1 - beq _02319F64 -_023198F8: - cmp r4, #0 - beq _02319918 - mov r0, sl - mov r1, sb - bl StatusCheckerCheck - cmp r0, #0 - moveq r0, #1 - beq _02319F64 -_02319918: - mov r0, sb - mov r1, #0 - bl GetMoveTargetAndRange - ldr r1, _02319F6C ; =0x00000273 - cmp r0, r1 - bne _02319958 - ldrsh r3, [r6, #0x12] - ldrsh r2, [r6, #0x16] - add r0, r1, #0x174 - add r2, r3, r2 - cmp r2, r0 - movgt r2, r0 - ldrsh r0, [r6, #0x10] - cmp r0, r2 - moveq r0, #1 - beq _02319F64 -_02319958: - ldr r0, [sp, #0x24] - ands r7, r0, #0xf0 - cmpne r7, #0x10 - cmpne r7, #0x20 - bne _02319A54 - mov r0, sl - mov r1, #1 - bl IsBlinded - cmp r0, #0 - beq _023199C0 - ldrb r6, [r6, #0x4c] - ldr r4, _02319F70 ; =0x0237CA18 - ldrb r0, [r4, r6] - cmp r0, #0 - bne _02319E88 - ldr r1, _02319F74 ; =0x0237CA20 - mov r3, #1 - ldr r0, _02319F78 ; =0x0237CA28 - mov r2, #0x63 - strb r3, [r4, r6] - strb r6, [r1] - str r2, [r0] - mov r1, #0 - str r1, [r0, #0x20] - add r5, r5, #1 - b _02319E88 -_023199C0: - ldr fp, _02319F7C ; =0x0235171C - mov r8, #0 -_023199C8: - mov r1, r8, lsl #2 - add r0, fp, r8, lsl #2 - ldrsh r6, [sl, #4] - ldrsh r3, [fp, r1] - ldrsh r2, [sl, #6] - ldrsh r1, [r0, #2] - add r0, r6, r3 - add r1, r2, r1 - bl GetTile - ldr r6, [r0, #0xc] - cmp r6, #0 - beq _02319A44 - ldr r0, [r6] - cmp r0, #1 - bne _02319A44 - cmp r7, #0x10 - cmpne r7, #0x20 - beq _02319A24 - mov r0, sl - mov r1, r8 - bl CanAttackInDirection - cmp r0, #0 - beq _02319A44 -_02319A24: - str sb, [sp] - ldr r1, [sp, #0x24] - mov r0, r5 - mov r2, sl - mov r3, r6 - str r4, [sp, #4] - bl TryAddTargetToAiTargetList - mov r5, r0 -_02319A44: - add r8, r8, #1 - cmp r8, #8 - blt _023199C8 - b _02319E88 -_02319A54: - cmp r7, #0x30 - bne _02319AC8 - ldr r7, _02319F80 ; =0x02353538 - mov r6, #0 -_02319A64: - ldr r0, [r7] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__02319F8C - cmp r0, #0 - beq _02319AB8 - mov r0, sl - mov r1, r8 - bl ov29_022E274C - cmp r0, #0 - beq _02319AB8 - str sb, [sp] - ldr r1, [sp, #0x24] - mov r0, r5 - mov r2, sl - mov r3, r8 - str r4, [sp, #4] - bl TryAddTargetToAiTargetList - mov r5, r0 -_02319AB8: - add r6, r6, #1 - cmp r6, #0x14 - blt _02319A64 - b _02319E88 -_02319AC8: - cmp r7, #0x40 - bne _02319BB0 - mov r8, #0 -_02319AD4: - ldr r0, _02319F7C ; =0x0235171C - mov r2, r8, lsl #2 - add r0, r0, r8, lsl #2 - ldrsh r6, [r0, #2] - ldr r0, _02319F7C ; =0x0235171C - ldrsh r1, [sl, #6] - ldrsh r7, [r0, r2] - ldrsh r0, [sl, #4] - add r1, r1, r6 - add r0, r0, r7 - bl GetTile - mov fp, r0 - mov r0, sl - mov r1, r8 - bl CanAttackInDirection - cmp r0, #0 - beq _02319BA0 - ldr r3, [fp, #0xc] - cmp r3, #0 - beq _02319B58 - ldr r0, [r3] - cmp r0, #1 - bne _02319B58 - str sb, [sp] - ldr r1, [sp, #0x24] - mov r0, r5 - mov r2, sl - str r4, [sp, #4] - mov fp, r5 - bl TryAddTargetToAiTargetList - mov r5, r0 - cmp fp, r5 - bne _02319BA0 -_02319B58: - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - add r0, r0, r7, lsl #1 - add r1, r1, r6, lsl #1 - bl GetTile - ldr r3, [r0, #0xc] - cmp r3, #0 - beq _02319BA0 - ldr r0, [r3] - cmp r0, #1 - bne _02319BA0 - str sb, [sp] - ldr r1, [sp, #0x24] - mov r0, r5 - mov r2, sl - str r4, [sp, #4] - bl TryAddTargetToAiTargetList - mov r5, r0 -_02319BA0: - add r8, r8, #1 - cmp r8, #8 - blt _02319AD4 - b _02319E88 -_02319BB0: - cmp r7, #0x50 - cmpne r7, #0x80 - cmpne r7, #0x90 - bne _02319E00 - cmp r7, #0x50 - moveq r0, #0xa - streq r0, [sp, #0xc] - movne r0, #1 - strne r0, [sp, #0xc] - cmp r7, #0x90 - moveq r0, #2 - streq r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x20] - mvn r0, #0 - str r0, [sp, #0x28] -_02319BF0: - ldr r0, _02319F80 ; =0x02353538 - ldr r1, [r0] - ldr r0, [sp, #0x20] - add r0, r1, r0, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb78] - str r0, [sp, #0x18] - bl EntityIsValid__02319F8C - cmp r0, #0 - ldrne r0, [sp, #0x18] - cmpne sl, r0 - beq _02319DE8 - ldr r1, [sp, #0x18] - add r0, sl, #4 - add r1, r1, #4 - bl GetDirectionTowardsPosition - ldr r1, _02319F70 ; =0x0237CA18 - str r0, [sp, #0x1c] - ldrb r0, [r1, r0] - cmp r0, #0 - bne _02319DE8 - ldr r1, [sp, #0x18] - mov r0, sl - bl ov29_022E274C - cmp r0, #0 - beq _02319DE8 - ldr r0, [sp, #0x18] - ldrsh r6, [sl, #4] - ldrsh fp, [r0, #4] - sub r0, r6, fp - bl Abs - str r0, [sp, #0x10] - ldr r0, [sp, #0x18] - ldrsh r8, [sl, #6] - ldrsh r7, [r0, #6] - sub r0, r8, r7 - bl Abs - ldr r1, [sp, #0x10] - cmp r1, r0 - movgt r2, r1 - movle r2, r0 - cmp r2, #0xa - movgt r0, #0 - bgt _02319D50 - ldr r1, [sp, #0xc] - cmp r2, r1 - movgt r0, #0 - bgt _02319D50 - ldr r1, [sp, #0x10] - cmp r1, r0 - ldr r0, [sp, #0x28] - bne _02319CF8 - cmp r6, fp - cmplt r8, r7 - movlt r0, #1 - blt _02319D44 - cmp r6, fp - bge _02319CE4 - cmp r8, r7 - movgt r0, #3 - bgt _02319D44 -_02319CE4: - cmp r6, fp - cmpgt r8, r7 - movgt r0, #5 - movle r0, #7 - b _02319D44 -_02319CF8: - cmp r6, fp - bne _02319D0C - cmp r8, r7 - movlt r0, #0 - blt _02319D44 -_02319D0C: - cmp r6, fp - bge _02319D20 - cmp r8, r7 - moveq r0, #2 - beq _02319D44 -_02319D20: - cmp r6, fp - bne _02319D34 - cmp r8, r7 - movgt r0, #4 - bgt _02319D44 -_02319D34: - cmp r6, fp - ble _02319D44 - cmp r8, r7 - moveq r0, #6 -_02319D44: - cmp r0, #0 - movge r0, #1 - movlt r0, #0 -_02319D50: - cmp r0, #0 - beq _02319DE8 - str r4, [sp] - ldr r0, [sp, #0x24] - ldr r2, [sp, #0x18] - mov r1, sl - mov r3, sb - bl IsAiTargetEligible - cmp r0, #0 - beq _02319DE8 - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - ldr r3, [sp, #0xc] - mov r0, sl - bl IsTargetInRange - cmp r0, #0 - beq _02319DE8 - ldr r1, _02319F70 ; =0x0237CA18 - ldr r0, [sp, #0x1c] - mov r2, #1 - strb r2, [r1, r0] - mov r1, r0 - ldr r0, _02319F74 ; =0x0237CA20 - strb r1, [r0, r5] - mov r0, sl - mov r1, sb - bl GetMoveTypeForMonster - mov r3, r0 - ldr r1, [sp, #0x24] - ldr r2, [sp, #0x18] - mov r0, sl - bl ov29_0231A364 - ldr r1, _02319F84 ; =0x0237CA28 - str r0, [r1, r5, lsl #2] - ldr r1, [sp, #0x18] - ldr r0, _02319F88 ; =0x0237CA48 - str r1, [r0, r5, lsl #2] - add r5, r5, #1 -_02319DE8: - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x20] - cmp r0, #0x14 - blt _02319BF0 - b _02319E88 -_02319E00: - cmp r7, #0x60 - bne _02319E60 - ldr r7, _02319F80 ; =0x02353538 - mov r6, #0 -_02319E10: - ldr r0, [r7] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl EntityIsValid__02319F8C - cmp r0, #0 - beq _02319E50 - str sb, [sp] - ldr r1, [sp, #0x24] - mov r0, r5 - mov r2, sl - mov r3, r8 - str r4, [sp, #4] - bl TryAddTargetToAiTargetList - mov r5, r0 -_02319E50: - add r6, r6, #1 - cmp r6, #0x14 - blt _02319E10 - b _02319E88 -_02319E60: - cmp r7, #0x70 - bne _02319E88 - str sb, [sp] - ldr r1, [sp, #0x24] - mov r2, sl - mov r3, sl - mov r0, #0 - str r4, [sp, #4] - bl TryAddTargetToAiTargetList - mov r5, r0 -_02319E88: - cmp r5, #0 - ldreq r0, [sp, #8] - moveq r1, #0 - streqb r1, [r0] - beq _02319F60 - mov r0, #0 - str r0, [sp, #0x14] - mov r4, r0 - ldr r3, _02319F84 ; =0x0237CA28 - b _02319EC4 -_02319EB0: - ldr r2, [r3, r4, lsl #2] - ldr r1, [sp, #0x14] - add r4, r4, #1 - cmp r1, r2 - strlt r2, [sp, #0x14] -_02319EC4: - cmp r4, r5 - blt _02319EB0 - mov r6, #0 - mov r2, r6 - ldr r4, _02319F84 ; =0x0237CA28 - b _02319EF0 -_02319EDC: - ldr r3, [r4, r6, lsl #2] - ldr r1, [sp, #0x14] - cmp r1, r3 - strne r2, [r4, r6, lsl #2] - add r6, r6, #1 -_02319EF0: - cmp r6, r5 - blt _02319EDC - mov r3, #0 - ldr r2, _02319F84 ; =0x0237CA28 - b _02319F10 -_02319F04: - ldr r1, [r2, r3, lsl #2] - add r3, r3, #1 - add r0, r0, r1 -_02319F10: - cmp r3, r5 - blt _02319F04 - bl DungeonRandInt - mov r3, #0 - ldr r2, _02319F84 ; =0x0237CA28 - b _02319F38 -_02319F28: - ldr r1, [r2, r3, lsl #2] - subs r0, r0, r1 - bmi _02319F40 - add r3, r3, #1 -_02319F38: - cmp r3, r5 - blt _02319F28 -_02319F40: - ldr r1, _02319F74 ; =0x0237CA20 - ldr r0, [sp, #8] - mov r2, #1 - strb r2, [r0] - ldrb r2, [r1, r3] - mov r1, #8 - strb r2, [r0, #1] - str r1, [r0, #4] -_02319F60: - ldr r0, [sp, #0x14] -_02319F64: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02319F6C: .word 0x00000273 -_02319F70: .word 0x0237CA18 -_02319F74: .word 0x0237CA20 -_02319F78: .word 0x0237CA28 -_02319F7C: .word 0x0235171C -_02319F80: .word 0x02353538 -_02319F84: .word 0x0237CA28 -_02319F88: .word 0x0237CA48 - arm_func_end AiConsiderMove - - arm_func_start EntityIsValid__02319F8C -EntityIsValid__02319F8C: ; 0x02319F8C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02319F8C - - arm_func_start TryAddTargetToAiTargetList -TryAddTargetToAiTargetList: ; 0x02319FB0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r2 - mov r6, r3 - ldrsh r3, [r7, #4] - ldrsh r2, [r6, #4] - mov sb, r0 - mov r8, r1 - cmp r3, r2 - ldreqsh r1, [r7, #6] - ldreqsh r0, [r6, #6] - ldr r2, [r7, #0xb4] - cmpeq r1, r0 - ldreqb r5, [r2, #0x4c] - beq _0231A010 - and r0, r8, #0xf0 - cmp r0, #0x30 - cmpne r0, #0x60 - cmpne r0, #0x70 - ldreqb r5, [r2, #0x4c] - beq _0231A010 - add r0, r7, #4 - add r1, r6, #4 - bl GetDirectionTowardsPosition - mov r5, r0 -_0231A010: - ldr r4, _0231A094 ; =0x0237CA18 - ldrb r0, [r4, r5] - cmp r0, #0 - movne r0, sb - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb ip, [sp, #0x24] - ldr r3, [sp, #0x20] - mov r0, r8 - mov r1, r7 - mov r2, r6 - str ip, [sp] - bl IsAiTargetEligible - cmp r0, #0 - beq _0231A08C - ldr r2, _0231A098 ; =0x0237CA20 - mov r3, #1 - ldr r1, [sp, #0x20] - mov r0, r7 - strb r3, [r4, r5] - strb r5, [r2, sb] - bl GetMoveTypeForMonster - mov r3, r0 - mov r0, r7 - mov r1, r8 - mov r2, r6 - bl ov29_0231A364 - ldr r2, _0231A09C ; =0x0237CA28 - ldr r1, _0231A0A0 ; =0x0237CA48 - str r0, [r2, sb, lsl #2] - str r6, [r1, sb, lsl #2] - add sb, sb, #1 -_0231A08C: - mov r0, sb - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231A094: .word 0x0237CA18 -_0231A098: .word 0x0237CA20 -_0231A09C: .word 0x0237CA28 -_0231A0A0: .word 0x0237CA48 - arm_func_end TryAddTargetToAiTargetList - - arm_func_start IsAiTargetEligible -IsAiTargetEligible: ; 0x0231A0A4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, r0 - mov r6, r2 - mov r2, #0 - mov r7, r1 - mov r5, r3 - mov r4, r2 - ands r0, r8, #0xf - bne _0231A0E4 - mov r0, r7 - mov r1, r6 - mov r3, #1 - bl ov29_0230175C - cmp r0, #1 - moveq r4, #1 - b _0231A1B8 -_0231A0E4: - cmp r0, #1 - bne _0231A108 - mov r0, r7 - mov r1, r6 - mov r3, #1 - bl ov29_0230175C - cmp r0, #0 - moveq r4, #1 - b _0231A1B8 -_0231A108: - cmp r0, #2 - bne _0231A13C - ldr r1, [r6, #0xb4] - mov r4, #1 - ldrb r0, [r1, #9] - cmp r0, #1 - moveq r0, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #0xbc] - cmp r0, #7 - bne _0231A1B8 - mov r0, r2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A13C: - cmp r0, #5 - bne _0231A17C - cmp r7, r6 - ldr r1, [r6, #0xb4] - moveq r0, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #9] - mov r4, #1 - cmp r0, #1 - moveq r0, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #0xbc] - cmp r0, #7 - bne _0231A1B8 - mov r0, r2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A17C: - cmp r0, #6 - bne _0231A1AC - cmp r7, r6 - moveq r0, r2 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r7 - mov r1, r6 - mov r3, #1 - bl ov29_0230175C - cmp r0, #0 - moveq r4, #1 - b _0231A1B8 -_0231A1AC: - sub r0, r0, #3 - cmp r0, #1 - movls r4, #1 -_0231A1B8: - cmp r4, #0 - beq _0231A358 - ldrb r0, [sp, #0x18] - cmp r0, #0 - beq _0231A328 - mov r0, r7 - mov r1, r6 - mov r2, r5 - bl ov29_02333FD0 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - and r0, r8, #0xf00 - cmp r0, #0x100 - bne _0231A21C - mov r0, r5 - mov r1, #2 - bl GetMoveAccuracyOrAiChance - mov r5, r0 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, r5 - blt _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A21C: - cmp r0, #0x200 - bne _0231A23C - mov r0, r6 - bl ov29_023007DC - cmp r0, #0 - bne _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A23C: - cmp r0, #0x300 - bne _0231A260 - mov r0, r6 - mov r1, #1 - bl ov29_02300634 - cmp r0, #0 - bne _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A260: - cmp r0, #0x400 - bne _0231A280 - mov r0, r6 - bl ov29_023007A8 - cmp r0, #0 - bne _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A280: - cmp r0, #0x600 - bne _0231A2B8 - ldr r1, [r6, #0xb4] - ldrb r0, [r1, #0x5e] - cmp r0, #0xe - ldrneb r0, [r1, #0x5f] - cmpne r0, #0xe - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #0xfe] - cmp r0, #0 - beq _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A2B8: - cmp r0, #0x500 - bne _0231A358 - ldrh r1, [r5, #4] - ldr r0, _0231A360 ; =0x000001B7 - cmp r1, r0 - addne r0, r0, #0x57 - cmpne r1, r0 - mov r0, r6 - mov r1, #1 - bne _0231A304 - bl ov29_02300634 - cmp r0, #0 - bne _0231A358 - mov r0, r6 - bl ov29_023007DC - cmp r0, #0 - bne _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A304: - bl ov29_02300634 - cmp r0, #0 - bne _0231A358 - mov r0, r6 - bl ov29_023007DC - cmp r0, #0 - bne _0231A358 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0231A328: - and r0, r8, #0xf00 - cmp r0, #0x100 - bne _0231A358 - mov r0, r5 - mov r1, #2 - bl GetMoveAccuracyOrAiChance - mov r5, r0 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, r5 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, r7, r8, pc} -_0231A358: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0231A360: .word 0x000001B7 - arm_func_end IsAiTargetEligible - - arm_func_start ov29_0231A364 -ov29_0231A364: ; 0x0231A364 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r2 - mov sb, r0 - mov r8, r1 - mov r0, r7 - mov r1, #0x6f - mov r6, r3 - ldr r5, [r7, #0xb4] - mov r4, #1 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0231A3A4 - mov r0, r7 - mov r1, #0xf - bl HasHeldItem -_0231A3A4: - cmp r0, #0 - movne r0, #0x1f4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r5, #6] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - tst r8, #0xf - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - mov r1, #9 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231A404 - ldrsh r0, [r5, #2] - mov r1, #0x258 - bl DivideInt - ldr r0, _0231A45C ; =0x02353538 - ldr r0, [r0] - add r0, r0, r1 - add r0, r0, #0x3000 - ldrb r4, [r0, #0xb74] - b _0231A454 -_0231A404: - mov r0, sb - mov r1, #0xa - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231A42C - ldrsh r0, [r5, #0x10] - rsb r4, r0, #0x1f4 - cmp r4, #1 - movlt r4, #1 - b _0231A454 -_0231A42C: - mov r0, sb - mov r1, #0xb - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231A454 - mov r0, sb - mov r1, r7 - mov r2, r6 - bl ov29_0230B7D4 - add r4, r0, #1 -_0231A454: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231A45C: .word 0x02353538 - arm_func_end ov29_0231A364 - - arm_func_start ov29_0231A460 -ov29_0231A460: ; 0x0231A460 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x48 - mov sl, r0 - ldr r3, [sl, #0xb4] - mov sb, r1 - str r2, [sp] - mov r1, #1 - ldrb r6, [r3, #0x4c] - mov r4, #0 - bl IsBlinded - cmp r0, #0 - movne r7, #1 - bne _0231A4AC - mov r0, sl - mov r1, #0xf - bl ov29_0230F8D0 - cmp r0, #0xff - mov r7, #8 - movne r6, r0 -_0231A4AC: - mov r0, sl - mov r1, #9 - bl IqSkillIsEnabled - cmp r0, #0 - bne _0231A4D4 - mov r0, sl - mov r1, #0xa - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231A4DC -_0231A4D4: - mov r2, #1 - b _0231A4E0 -_0231A4DC: - mov r2, #0 -_0231A4E0: - mov r0, sl - mov r1, #8 - and fp, r2, #0xff - bl IqSkillIsEnabled - str r0, [sp, #4] - mov r5, #0 - b _0231A5CC -_0231A4FC: - and r6, r6, #7 - ldr r1, _0231A690 ; =0x0235171C - mov r2, r6, lsl #2 - ldrsh r3, [r1, r2] - add r1, r1, r6, lsl #2 - ldrsh r0, [sl, #4] - ldrsh r2, [sl, #6] - ldrsh r1, [r1, #2] - add r0, r0, r3 - add r1, r2, r1 - bl GetTile - ldr r8, [r0, #0xc] - cmp r8, #0 - beq _0231A5C4 - ldr r0, [r8] - cmp r0, #1 - bne _0231A5C4 - mov r0, sl - mov r1, r6 - bl CanAttackInDirection - cmp r0, #0 - beq _0231A5C4 - ldr r3, [sp] - mov r0, sl - mov r1, r8 - mov r2, #0 - bl ov29_0230175C - cmp r0, #1 - bne _0231A5C4 - ldr r0, [sp, #4] - cmp r0, #0 - beq _0231A58C - ldr r0, [r8, #0xb4] - ldrb r0, [r0, #0xc4] - cmp r0, #1 - beq _0231A5C4 -_0231A58C: - add r0, sp, #0x28 - mov r1, #0 - str r6, [r0, r4, lsl #2] - mov r2, r8 - mov r0, sl - mov r3, r1 - bl ov29_0231A364 - add r1, sp, #8 - cmp fp, #0 - str r0, [r1, r4, lsl #2] - streq r6, [sb] - moveq r0, #1 - beq _0231A688 - add r4, r4, #1 -_0231A5C4: - add r5, r5, #1 - add r6, r6, #1 -_0231A5CC: - cmp r5, r7 - blt _0231A4FC - cmp r4, #0 - mov r0, #0 - beq _0231A688 - mov r5, r0 - mov r3, r0 - add r2, sp, #8 - b _0231A600 -_0231A5F0: - ldr r1, [r2, r3, lsl #2] - add r3, r3, #1 - cmp r5, r1 - movlt r5, r1 -_0231A600: - cmp r3, r4 - blt _0231A5F0 - mov r6, #0 - mov r1, r6 - add r3, sp, #8 - b _0231A628 -_0231A618: - ldr r2, [r3, r6, lsl #2] - cmp r5, r2 - strne r1, [r3, r6, lsl #2] - add r6, r6, #1 -_0231A628: - cmp r6, r4 - blt _0231A618 - mov r3, #0 - add r2, sp, #8 - b _0231A648 -_0231A63C: - ldr r1, [r2, r3, lsl #2] - add r3, r3, #1 - add r0, r0, r1 -_0231A648: - cmp r3, r4 - blt _0231A63C - bl DungeonRandInt - mov r3, #0 - add r2, sp, #8 - b _0231A670 -_0231A660: - ldr r1, [r2, r3, lsl #2] - subs r0, r0, r1 - bmi _0231A678 - add r3, r3, #1 -_0231A670: - cmp r3, r4 - blt _0231A660 -_0231A678: - add r1, sp, #0x28 - ldr r1, [r1, r3, lsl #2] - mov r0, #1 - str r1, [sb] -_0231A688: - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231A690: .word 0x0235171C - arm_func_end ov29_0231A460 - - arm_func_start IsTargetInRange -IsTargetInRange: ; 0x0231A694 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov sb, r0 - mov r5, r1 - ldrsh r1, [sb, #6] - ldrsh r0, [r5, #6] - mov r8, r2 - mov r7, r3 - sub r0, r1, r0 - bl Abs - ldrsh r2, [sb, #4] - ldrsh r1, [r5, #4] - mov r6, r0 - sub r0, r2, r1 - bl Abs - mov r4, r0 - cmp r4, r6 - movle r4, r6 - cmp r4, r7 - mov r0, sb - mov r1, #3 - movgt r4, r7 - bl IqSkillIsEnabled - cmp r0, #0 - bne _0231A708 - cmp r4, r7 - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0231A708: - ldr r1, _0231A798 ; =0x0235171C - mov r2, r8, lsl #2 - ldr r0, _0231A79C ; =0x0235171E - ldrsh r7, [sb, #4] - ldrsh r8, [sb, #6] - ldrsh sb, [r1, r2] - ldrsh sl, [r0, r2] - mov r6, #0 - b _0231A788 -_0231A72C: - add r7, r7, sb - add r8, r8, sl - cmp r7, #1 - cmpge r8, #1 - blt _0231A790 - cmp r7, #0x37 - cmplt r8, #0x1f - bge _0231A790 - mov r0, r7 - mov r1, r8 - bl GetTile - ldrh r1, [r0] - tst r1, #3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [r0, #0xc] - cmp r0, r5 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add r6, r6, #1 -_0231A788: - cmp r6, r4 - ble _0231A72C -_0231A790: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231A798: .word 0x0235171C -_0231A79C: .word 0x0235171E - arm_func_end IsTargetInRange - - arm_func_start ov29_0231A7A0 -ov29_0231A7A0: ; 0x0231A7A0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 - mov r1, #0x52 - mov r7, r0 - mov r5, r4 - mov r6, r4 - bl ExclusiveItemEffectIsActive__0231A87C - cmp r0, #0 - mov r0, r7 - mov r1, #0x1f - movne r4, #1 - bl IqSkillIsEnabled - cmp r0, #0 - movne r5, #1 - cmp r5, #0 - beq _0231A81C - ldr r0, _0231A870 ; =0x022C459C - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0231A81C - mov r0, r7 - bl ov29_022E3ED0 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231A874 ; =0x00000DF5 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r6, #1 -_0231A81C: - cmp r6, #0 - bne _0231A868 - cmp r4, #0 - beq _0231A868 - ldr r0, _0231A870 ; =0x022C459C - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0231A868 - mov r0, r7 - bl ov29_022E3ED0 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231A878 ; =0x00000DF7 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r6, #1 -_0231A868: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0231A870: .word 0x022C459C -_0231A874: .word 0x00000DF5 -_0231A878: .word 0x00000DF7 - arm_func_end ov29_0231A7A0 - - arm_func_start ExclusiveItemEffectIsActive__0231A87C -ExclusiveItemEffectIsActive__0231A87C: ; 0x0231A87C - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__0231A87C - - arm_func_start ov29_0231A8A0 -ov29_0231A8A0: ; 0x0231A8A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov sb, r0 - mov r7, #0 - bl IsMonster__0231A9D4 - cmp r0, #0 - beq _0231A910 - ldr r0, _0231A9CC ; =0x02353538 - ldr r4, [sb, #0xb4] - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_02344160 - cmp r0, #0 - bne _0231A8EC - ldr r1, _0231A9D0 ; =0x00000DFD - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - b _0231A9C4 -_0231A8EC: - mov r1, r7 - mov r0, sb - strb r1, [r4, #0x23f] - bl ov29_0231A7A0 - cmp r0, #0 - movne r7, #1 - strneb r7, [r4, #0x23f] - mov r0, #0 - strb r0, [r4, #0x23e] -_0231A910: - mov r6, #0 - mov r4, #1 - mov r5, r6 - mov sl, r4 - b _0231A970 -_0231A924: - ldr r8, [sb, #0xb4] - mov r0, sb - str r5, [sp] - ldrb r1, [r8, #0x4e] - mov r2, r4 - mov r3, r5 - bl ov29_0232145C - mov r0, sb - bl EntityIsValid__02319F8C - cmp r0, #0 - beq _0231A984 - bl IsFloorOver - cmp r0, #0 - ldreqb r0, [r8, #0x23e] - cmpeq r0, #0 - ldreqb r0, [r8, #0x163] - cmpeq r0, #0 - bne _0231A984 - add r6, r6, #1 -_0231A970: - mov r0, sb - mov r1, sl - bl GetNumberOfAttacks - cmp r6, r0 - blt _0231A924 -_0231A984: - mov r0, sb - bl EntityIsValid__02319F8C - cmp r0, #0 - beq _0231A9BC - cmp r7, #0 - moveq r1, #1 - movne r1, #0 - ldr r4, [sb, #0xb4] - mov r0, sb - and r1, r1, #0xff - bl UpdateMovePp - ldrb r1, [r4, #0x4e] - mov r0, sb - bl ov29_022FA574 -_0231A9BC: - mov r0, sb - bl TryActivateTruant -_0231A9C4: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231A9CC: .word 0x02353538 -_0231A9D0: .word 0x00000DFD - arm_func_end ov29_0231A8A0 - - arm_func_start IsMonster__0231A9D4 -IsMonster__0231A9D4: ; 0x0231A9D4 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__0231A9D4 - - arm_func_start ov29_0231A9F8 -ov29_0231A9F8: ; 0x0231A9F8 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x34 - mov r7, r0 - mov r1, #0 - mov r2, #0x15 - ldr r5, [r7, #0xb4] - bl ov29_022EB54C - mov r1, r0 - ldrb r0, [r1] - ldrh r4, [r1] - ldrh r3, [r1, #2] - ldrh r2, [r1, #4] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - strh r4, [sp, #0x18] - strh r3, [sp, #0x1a] - strh r2, [sp, #0x1c] - tst r0, #0xff - beq _0231AA60 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _0231AC90 ; =0x00000DF8 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _0231AC88 -_0231AA60: - mov r0, r7 - bl ov29_022FBAB4 - add r2, sp, #0x1e - add r3, r5, #0x4a - mov r1, #0xa -_0231AA74: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0231AA74 - ldr r0, _0231AC94 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_023440AC - cmp r0, #0 - mov r4, #1 - bne _0231AAB4 - ldr r1, _0231AC98 ; =0x00000DF9 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - b _0231AC24 -_0231AAB4: - ldrsh r6, [sp, #0x1c] - mov r0, r6 - bl GetItemMoveId16 - mov r1, r0 - add r0, sp, #0x10 - bl InitMove - ldrb r0, [r5, #7] - cmp r0, #0 - bne _0231AB18 - mov r2, r4 - mov r3, #0xa - strb r2, [sp, #8] - add r0, sp, #8 - mov r1, r7 - add r2, r5, #0x124 - str r3, [sp, #0xc] - bl AiConsiderMove - ldrb r0, [sp, #8] - cmp r0, #0 - beq _0231AB18 - ldrb r1, [sp, #9] - mov r0, r7 - and r1, r1, #7 - strb r1, [r5, #0x4c] - bl UpdateAiTargetPos -_0231AB18: - ldrb r0, [r5, #0xd0] - cmp r0, #1 - bne _0231AB48 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231AC9C ; =0x00000DFA - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r4, #0 - b _0231ABA0 -_0231AB48: - cmp r0, #7 - bne _0231AB74 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231ACA0 ; =0x00000DFB - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r4, #0 - b _0231ABA0 -_0231AB74: - ldrb r0, [r5, #0xbf] - cmp r0, #4 - bne _0231ABA0 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231ACA4 ; =0x00000DFC - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r4, #0 -_0231ABA0: - cmp r4, #0 - beq _0231AC20 - cmp r6, #0x138 - ldrne r0, _0231ACA8 ; =0x00000141 - mov r1, #0 - cmpne r6, r0 - bne _0231AC00 - mov r0, r7 - mov r2, #0x7a - bl ov29_022EB60C - ldrb r2, [sp, #0x10] - mov r0, #0xa - mov r1, #0 - orr r2, r2, #0xc - strb r2, [sp, #0x10] - strb r0, [sp, #0x16] - add r4, sp, #0x10 - mov r0, r7 - mov r2, r6 - mov r3, r1 - stmia sp, {r1, r4} - bl ov29_02322374 - mov r4, #0 - b _0231AC24 -_0231AC00: - add r4, sp, #0x10 - mov r0, r7 - mov r2, r6 - mov r3, r1 - stmia sp, {r1, r4} - bl ov29_02322374 - mov r4, r0 - b _0231AC24 -_0231AC20: - mov r4, #0 -_0231AC24: - mov r0, r7 - bl EntityIsValid__02319F8C - cmp r0, #0 - beq _0231AC60 - cmp r4, #0 - beq _0231AC4C - mov r0, r7 - mov r1, #0 - mov r2, #0x7a - bl ov29_022EB60C -_0231AC4C: - mov r0, r7 - bl EnemyEvolution - mov r0, r7 - bl ov29_02321274 - b _0231AC74 -_0231AC60: - cmp r4, #0 - beq _0231AC74 - add r0, sp, #0x1e - mov r1, #0 - bl ov29_022EB4E8 -_0231AC74: - bl IsFloorOver - cmp r0, #0 - bne _0231AC88 - mov r0, r7 - bl TryActivateTruant -_0231AC88: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0231AC90: .word 0x00000DF8 -_0231AC94: .word 0x02353538 -_0231AC98: .word 0x00000DF9 -_0231AC9C: .word 0x00000DFA -_0231ACA0: .word 0x00000DFB -_0231ACA4: .word 0x00000DFC -_0231ACA8: .word 0x00000141 - arm_func_end ov29_0231A9F8 - - arm_func_start GetEntityMoveTargetAndRange -GetEntityMoveTargetAndRange: ; 0x0231ACAC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldrh r1, [r5, #4] - mov r4, r2 - mov r6, r0 - cmp r1, #0xed - cmpeq r4, #0 - bne _0231ACE0 - mov r1, #0xe - bl MonsterIsType - cmp r0, #0 - moveq r0, #0x73 - ldmeqia sp!, {r4, r5, r6, pc} -_0231ACE0: - mov r0, r5 - mov r1, r4 - bl GetMoveTargetAndRange - mov r4, r0 - mov r0, r5 - bl IsMoveRangeString19 - cmp r0, #0 - beq _0231AD2C - mov r0, r6 - mov r1, #0x55 - bl ExclusiveItemEffectIsActive__0231A87C - cmp r0, #0 - beq _0231AD2C - ldr r0, _0231AD34 ; =0x00000273 - cmp r4, r0 - subeq r4, r0, #0x12 - beq _0231AD2C - cmp r4, #0x73 - moveq r4, #0x61 -_0231AD2C: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231AD34: .word 0x00000273 - arm_func_end GetEntityMoveTargetAndRange - - arm_func_start ov29_0231AD38 -ov29_0231AD38: ; 0x0231AD38 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r2, #1 - bl GetEntityMoveTargetAndRange - and r4, r0, #0xf - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl GetEntityMoveTargetAndRange - cmp r4, #3 - and r0, r0, #0xf - cmpne r4, #1 - cmpne r0, #4 - cmpne r0, #3 - cmpne r0, #1 - cmpne r0, #6 - beq _0231ADA0 - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x70 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_0231ADA0: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0231AD38 - - arm_func_start ov29_0231ADA8 -ov29_0231ADA8: ; 0x0231ADA8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r1, [r0, #0xb4] - mov r0, #0 - mov r5, r0 - add r4, r1, #0x124 - mov ip, r0 - mov lr, #1 - add r2, sp, #0 -_0231ADCC: - ldrb r1, [r4, r5, lsl #3] - add r3, r4, r5, lsl #3 - tst r1, #1 - movne r1, lr - moveq r1, ip - tst r1, #0xff - beq _0231AE00 - ldrh r3, [r3, #4] - add r1, r0, #1 - mov r0, r0, lsl #1 - mov r1, r1, lsl #0x10 - strh r3, [r2, r0] - mov r0, r1, lsr #0x10 -_0231AE00: - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, lsr #0x10 - cmp r5, #4 - blo _0231ADCC - cmp r0, #0 - moveq r0, #0 - beq _0231AE34 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - add r1, sp, #0 - mov r0, r0, lsr #0xf - ldrh r0, [r1, r0] -_0231AE34: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0231ADA8 - - arm_func_start ov29_0231AE3C -ov29_0231AE3C: ; 0x0231AE3C - stmdb sp!, {r3, lr} - ldr ip, [r0, #0xb4] - mov r0, #0 - mov lr, r0 - mov r2, r0 - mov r3, #1 -_0231AE54: - add r1, ip, lr, lsl #3 - ldrb r1, [r1, #0x124] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - add r1, lr, #1 - addne r0, r0, #1 - mov r1, r1, lsl #0x10 - movne r0, r0, lsl #0x10 - mov lr, r1, lsr #0x10 - movne r0, r0, lsr #0x10 - cmp lr, #4 - blo _0231AE54 - ldmia sp!, {r3, pc} - arm_func_end ov29_0231AE3C - - arm_func_start ov29_0231AE90 -ov29_0231AE90: ; 0x0231AE90 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl IsMonster__0231A9D4 - cmp r0, #0 - ldrne r4, [r4, #0xb4] - ldrnesh r0, [r4, #0x66] - cmpne r0, #0 - beq _0231AF00 - mov ip, #0 - ldr r3, _0231AF08 ; =0x022C5130 - mov lr, ip - mov r1, #6 -_0231AEC0: - smulbb r5, lr, r1 - ldrsh r2, [r3, r5] - cmp r2, #0 - beq _0231AEF0 - ldrsh r0, [r4, #0x66] - cmp r0, r2 - moveq ip, #1 - beq _0231AEF0 - add r0, lr, #1 - mov r0, r0, lsl #0x10 - mov lr, r0, asr #0x10 - b _0231AEC0 -_0231AEF0: - cmp ip, #0 - ldrne r0, _0231AF08 ; =0x022C5130 - addne r0, r0, r5 - ldmneia sp!, {r3, r4, r5, pc} -_0231AF00: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231AF08: .word 0x022C5130 - arm_func_end ov29_0231AE90 - - arm_func_start ov29_0231AF0C -ov29_0231AF0C: ; 0x0231AF0C - stmdb sp!, {r3, lr} - bl GetApparentWeather - ldr r1, _0231AF20 ; =0x022C48DC - ldrb r0, [r1, r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0231AF20: .word 0x022C48DC - arm_func_end ov29_0231AF0C - - arm_func_start ov29_0231AF24 -ov29_0231AF24: ; 0x0231AF24 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl IsMonster__0231A9D4 - cmp r0, #0 - beq _0231AFAC - mov r0, r6 - mov r1, r5 - bl ov29_022FB9E0 - mov r1, r0 - cmp r4, #0 - beq _0231AF98 - cmp r1, #0 - bge _0231AF98 - ldr r4, [r6, #0xb4] - mov r1, #0 - mov r2, r1 - add r0, r4, #0x4a - bl SetActionUseMoveAi - mov r2, #1 - strb r2, [r4, #0x124] - add r0, r4, #0x100 - mov r1, #0 - strh r1, [r0, #0x26] - strh r5, [r0, #0x28] - strb r2, [r4, #0x12a] - strb r1, [r4, #0x12b] -_0231AF98: - mov r3, #0 - mov r0, r6 - mov r2, #1 - str r3, [sp] - bl ov29_0232145C -_0231AFAC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0231AF24 - - arm_func_start ov29_0231AFB4 -ov29_0231AFB4: ; 0x0231AFB4 - stmdb sp!, {r4, lr} - mov ip, #0 - ldr r1, _0231B004 ; =0x02353538 - mov r2, ip - mov r3, ip -_0231AFC8: - ldr r0, [r1] - mov r4, r3 - add r0, r0, #0xe4 - add r0, r0, #0x19800 - add lr, r0, ip, lsl #4 -_0231AFDC: - str r2, [lr, r4, lsl #3] - add r0, lr, r4, lsl #3 - add r4, r4, #1 - str r2, [r0, #4] - cmp r4, #2 - blt _0231AFDC - add ip, ip, #1 - cmp ip, #2 - blt _0231AFC8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0231B004: .word 0x02353538 - arm_func_end ov29_0231AFB4 - - arm_func_start ov29_0231B008 -ov29_0231B008: ; 0x0231B008 - stmdb sp!, {r3, r4, r5, lr} - mov lr, #0 - ldr r1, _0231B05C ; =0x02353538 - mov r3, lr - mov r2, #2 - mov ip, lr -_0231B020: - ldr r0, [r1] - mov r5, ip - add r0, r0, #0xe4 - add r0, r0, #0x19800 - add r4, r0, lr, lsl #4 -_0231B034: - str r3, [r4, r5, lsl #3] - add r0, r4, r5, lsl #3 - add r5, r5, #1 - str r2, [r0, #4] - cmp r5, #2 - blt _0231B034 - add lr, lr, #1 - cmp lr, #2 - blt _0231B020 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231B05C: .word 0x02353538 - arm_func_end ov29_0231B008 - - arm_func_start ov29_0231B060 -ov29_0231B060: ; 0x0231B060 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r2, _0231B0A0 ; =0x00000C3B - mov ip, #0x66 - mov r4, r0 - mov r1, #0 - mov r3, #2 - str ip, [sp] - bl ov29_0234B250 - mov r0, r4 - mov r1, r4 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0231B0A0: .word 0x00000C3B - arm_func_end ov29_0231B060 - - arm_func_start ov29_0231B0A4 -ov29_0231B0A4: ; 0x0231B0A4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl EntityIsValid__0231B194 - cmp r0, #0 - beq _0231B184 - mov r0, r4 - bl EntityIsValid__0231B194 - cmp r0, #0 - beq _0231B184 - ldr r0, [r5, #0xb4] - ldr r6, [r4, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - bne _0231B184 - bl ov29_0232E80C - cmp r4, r0 - ldrneb r0, [r6, #6] - cmpne r0, #0 - beq _0231B184 - ldrsh r0, [r6, #0x66] - cmp r0, #0 - bne _0231B150 - ldrsh r0, [r6, #2] - add r1, sp, #0 - bl GetTreasureBoxChances - ldrsh r0, [sp, #4] - cmp r0, #0 - ldrlesh r0, [sp, #6] - cmple r0, #0 - ble _0231B184 - mov r0, r5 - bl ov29_022E4110 - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231B18C ; =0x00000C3D - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231B184 -_0231B150: - mov r0, r5 - bl ov29_022E4110 - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - add r1, r6, #0x62 - mov r0, #2 - bl ov29_02344B44 - ldr r2, _0231B190 ; =0x00000C3C - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_0231B184: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231B18C: .word 0x00000C3D -_0231B190: .word 0x00000C3C - arm_func_end ov29_0231B0A4 - - arm_func_start EntityIsValid__0231B194 -EntityIsValid__0231B194: ; 0x0231B194 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0231B194 - - arm_func_start ov29_0231B1B8 -ov29_0231B1B8: ; 0x0231B1B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - mov sl, r0 - ldr r0, [sl, #0xb4] - mov r6, #0 - ldrb r0, [r0, #6] - ldr r4, _0231B30C ; =0x02353538 - mov r7, #0 - cmp r0, #0 - moveq r0, #1 - movne r0, r6 - and sb, r0, #0xff - add r5, sp, #0 -_0231B1EC: - ldr r0, [r4] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb78] - mov r0, r8 - bl IsMonster__0231B318 - cmp r0, #0 - beq _0231B240 - ldr r0, [r8, #0xb4] - cmp sb, #0 - ldrb r0, [r0, #6] - beq _0231B228 - cmp r0, #0 - beq _0231B240 - b _0231B230 -_0231B228: - cmp r0, #0 - bne _0231B240 -_0231B230: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - str r8, [r5, r6, lsl #2] - mov r6, r0, asr #0x10 -_0231B240: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x14 - blt _0231B1EC - mov r0, #2 - mov r1, #0x69 - bl ov29_0234B084 - ldr r0, _0231B310 ; =0x022C4530 - mov r8, #0 - ldrsh r7, [r0] - mov r4, #0x18 - ldr fp, _0231B314 ; =0x0000026E - add r5, sp, #0 - b _0231B2FC -_0231B27C: - ldr sb, [r5, r8, lsl #2] - cmp sb, #0 - beq _0231B2F0 - mov r0, sb - bl IsMonster__0231B318 - cmp r0, #0 - beq _0231B2F0 - mov r0, sl - mov r1, sb - bl ov29_022E28D4 - cmp r0, #0 - cmpne sl, sb - beq _0231B2F0 - mov r0, sb - bl ov29_023007A8 - cmp r0, #0 - beq _0231B2F0 - mov r0, sb - mov r1, r7 - mov r2, r4 - mov r3, fp - bl ov29_0230D11C - mov r0, sb - bl EntityIsValid__0231B194 - cmp r0, #0 - beq _0231B2F0 - mov r0, sl - mov r1, sb - bl ov29_02307BDC -_0231B2F0: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 -_0231B2FC: - cmp r8, r6 - blt _0231B27C - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231B30C: .word 0x02353538 -_0231B310: .word 0x022C4530 -_0231B314: .word 0x0000026E - arm_func_end ov29_0231B1B8 - - arm_func_start IsMonster__0231B318 -IsMonster__0231B318: ; 0x0231B318 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__0231B318 - - arm_func_start ov29_0231B33C -ov29_0231B33C: ; 0x0231B33C - stmdb sp!, {r4, lr} - ldr r4, [r0, #0xb4] - bl ov29_022E60E4 - ldr r0, _0231B360 ; =0x022C457C - mov r1, #2 - ldrsh r0, [r0] - strb r1, [r4, #0x104] - strb r0, [r4, #0x105] - ldmia sp!, {r4, pc} - .align 2, 0 -_0231B360: .word 0x022C457C - arm_func_end ov29_0231B33C - - arm_func_start ov29_0231B364 -ov29_0231B364: ; 0x0231B364 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - mov r1, #0x70 - bl AbilityIsActive2 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0231B364 - - arm_func_start ov29_0231B39C -ov29_0231B39C: ; 0x0231B39C - mov ip, #0 - mov r3, ip -_0231B3A4: - add r1, ip, #1 - mov r1, r1, lsl #0x10 - strb r3, [r0, ip, lsl #2] - add r2, r0, ip, lsl #2 - mov ip, r1, asr #0x10 - strh r3, [r2, #2] - cmp ip, #8 - blt _0231B3A4 - strh r3, [r0, #0x20] - bx lr - arm_func_end ov29_0231B39C - - arm_func_start ov29_0231B3CC -ov29_0231B3CC: ; 0x0231B3CC - ldrsh r3, [r0, #0x20] - cmp r3, #8 - bxge lr - mov r2, #1 - strb r2, [r0, r3, lsl #2] - ldrsh r2, [r0, #0x20] - add r2, r0, r2, lsl #2 - strh r1, [r2, #2] - ldrsh r1, [r0, #0x20] - add r1, r1, #1 - strh r1, [r0, #0x20] - bx lr - arm_func_end ov29_0231B3CC - - arm_func_start ov29_0231B3FC -ov29_0231B3FC: ; 0x0231B3FC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r0, r1 - bl FemaleToMaleForm - mov r4, r0 - mov r6, #0 - b _0231B44C -_0231B418: - ldrb r0, [r5, r6, lsl #2] - mov r1, r6, lsl #2 - cmp r0, #0 - beq _0231B440 - add r0, r5, r1 - ldrsh r0, [r0, #2] - bl FemaleToMaleForm - cmp r4, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} -_0231B440: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_0231B44C: - ldrsh r0, [r5, #0x20] - cmp r6, r0 - blt _0231B418 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0231B3FC - - arm_func_start ov29_0231B460 -ov29_0231B460: ; 0x0231B460 - stmdb sp!, {r3, lr} - ldr r0, _0231B48C ; =0x02353538 - ldr r2, [r0] - add r0, r2, #0x700 - ldrsh r1, [r0, #0xa8] - cmp r1, #0 - ldmeqia sp!, {r3, pc} - ldrsh r1, [r0, #0xa8] - add r0, r2, #0x7d0 - bl ov29_0231B3CC - ldmia sp!, {r3, pc} - .align 2, 0 -_0231B48C: .word 0x02353538 - arm_func_end ov29_0231B460 - - arm_func_start ov29_0231B490 -ov29_0231B490: ; 0x0231B490 - ldr r0, _0231B4A8 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x3000 - strb r1, [r0, #0xe3c] - bx lr - .align 2, 0 -_0231B4A8: .word 0x02353538 - arm_func_end ov29_0231B490 - - arm_func_start ov29_0231B4AC -ov29_0231B4AC: ; 0x0231B4AC - stmdb sp!, {r3, lr} - cmp r0, #0 - ldreq r0, _0231B4E8 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x3000 - ldreqb r0, [r0, #0xe3c] - ldmeqia sp!, {r3, pc} - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0231B4E8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsSkyExclusiveDungeon - ldmia sp!, {r3, pc} - .align 2, 0 -_0231B4E8: .word 0x02353538 - arm_func_end ov29_0231B4AC - - arm_func_start ov29_0231B4EC -ov29_0231B4EC: ; 0x0231B4EC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - ldr r7, [r8, #0xb4] - cmp r1, #1 - mov r6, #0 - ldrsh r0, [r7, #2] - bne _0231B548 - bl IsShaymin - cmp r0, #0 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsh r4, [r7, #2] - ldr r0, _0231B680 ; =0x00000216 - cmp r4, r0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r1, [r7, #0xc4] - cmp r1, #1 - moveq r0, #2 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r5, r0, #1 - mov r6, #1 - b _0231B570 -_0231B548: - bl IsShaymin - cmp r0, #0 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrsh r4, [r7, #2] - ldr r0, _0231B684 ; =0x00000217 - cmp r4, r0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - sub r5, r0, #1 -_0231B570: - ldrsh r0, [r7, #0xc] - bl GetActiveTeamMember - mov sb, r0 - cmp r6, #0 - beq _0231B5A0 - mov r0, r8 - mov r1, #0x2b8 - mov r2, #0 - bl ov29_022E3590 - mov r0, #0x21 - mov r1, #0x42 - bl ov29_022EA370 -_0231B5A0: - mov r0, #0 - bl ov29_022E9FD0 - mov r0, r4 - mov r1, r5 - bl ov29_022F75D4 - strh r5, [r7, #2] - ldrsh r0, [r7, #2] - strh r0, [r7, #4] - strh r0, [sb, #0xc] - strh r5, [r7, #2] - ldrsh r0, [r7, #2] - strh r0, [r7, #4] - ldr r4, [r8, #0xb4] - ldrsh r0, [r4, #4] - bl GetSpriteIndex__022F7388 - strh r0, [r8, #0xa8] - ldrb r0, [r4, #0xd8] - cmp r0, #2 - beq _0231B5F4 - add r0, r8, #0x2c - bl sub_0201CF80 -_0231B5F4: - mov r0, r8 - bl GetSleepAnimationId - mov r1, r0 - mov r0, r8 - bl ov29_02304830 - mov r0, r8 - bl ov29_02304BAC - mov r0, r8 - bl ov29_022F9194 - mov r0, #1 - bl ov29_022E9FD0 - ldr r0, _0231B684 ; =0x00000217 - cmp r5, r0 - ldreq r0, _0231B688 ; =0x02353538 - moveq r1, #1 - ldrne r0, _0231B688 ; =0x02353538 - movne r1, #0 - ldr r0, [r0] - add r0, r0, #0x3000 - strb r1, [r0, #0xe3c] - bl sub_020017EC - bl ov29_022E81F8 - mov r0, #1 - mov r1, #0x42 - bl ov29_022EA370 - cmp r6, #0 - beq _0231B678 - mov r0, r8 - bl ov29_022F04F0 - mov r0, #1 - bl ov29_022E38E0 - mov r0, r8 - bl ov29_022F0518 -_0231B678: - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231B680: .word 0x00000216 -_0231B684: .word 0x00000217 -_0231B688: .word 0x02353538 - arm_func_end ov29_0231B4EC - - arm_func_start ApplyItemEffect -ApplyItemEffect: ; 0x0231B68C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x5c - movs sb, r0 - mov sl, r2 - mov r8, r3 - ldr r7, [sp, #0x80] - ldr r6, [sp, #0x84] - beq _0231B840 - cmp r1, #0 - bne _0231B840 - mov r0, r7 - ldr r5, [r7, #0xb4] - mov r4, #0 - bl ov29_022FB9BC - cmp r0, #0 - beq _0231B6E4 - mov r0, r8 - mov r2, r6 - add r1, r7, #4 - mov r3, r4 - bl ov29_02345A3C - b _0231CBA4 -_0231B6E4: - ldrb r0, [r5, #6] - cmp r0, #0 - ldrsh r0, [r6, #4] - beq _0231B74C - bl GetItemCategoryVeneer - cmp r0, #0 - beq _0231B720 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #2 - beq _0231B720 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #1 - movne r4, #1 -_0231B720: - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #4 - bne _0231B768 - ldrsh r1, [r6, #4] - cmp r1, #0x190 - blt _0231B768 - ldr r0, _0231C6C0 ; =0x000001AB - cmp r1, r0 - movle r4, #0 - b _0231B768 -_0231B74C: - bl GetItemCategoryVeneer - cmp r0, #2 - beq _0231B768 - mov r0, r7 - mov r1, #2 - bl IqSkillIsEnabled - mov r4, r0 -_0231B768: - mov r0, r7 - bl ov29_02300B40 - cmp r0, #0 - movne r4, #0 - cmp r4, #0 - beq _0231B840 - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0231B840 - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0231B7B0 - bl IsBagFull - cmp r0, #0 - bne _0231B840 -_0231B7B0: - ldrb r0, [r5, #9] - cmp r0, #1 - bne _0231B7D4 - mov r0, r8 - mov r2, r6 - add r1, r7, #4 - mov r3, #0 - bl ov29_02345A3C - b _0231CBA4 -_0231B7D4: - ldr r0, _0231C6C4 ; =0x00001317 - bl ov29_022EACCC - mov r1, r6 - mov r0, #0 - bl ov29_02344B44 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231C6C8 ; =0x00000BE6 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - ldrh r0, [r6] - strh r0, [r5, #0x62] - ldrh r0, [r6, #2] - strh r0, [r5, #0x64] - ldrh r0, [r6, #4] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0231B834 - mov r0, r5 - bl ov29_02346F14 -_0231B834: - mov r0, r7 - bl ov29_022F9EA0 - b _0231CBA4 -_0231B840: - cmp sb, #0 - beq _0231B860 - mov r0, r7 - mov r1, r6 - bl ov29_022E5A00 - mov r0, r8 - mov r1, r7 - bl ov29_0230D440 -_0231B860: - ldrb r0, [r6] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0231B8E4 - mov r1, r6 - mov r0, #0 - bl ov29_02344B44 - ldr r2, _0231C6CC ; =0x00000BE7 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - cmp sb, #0 - beq _0231B8E4 - add r1, sp, #0x21 - ldr r0, _0231C6D0 ; =0x022C4574 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - mov r0, r8 - bl EnemyEvolution - b _0231CBA4 -_0231B8E4: - cmp sb, #0 - bne _0231B8F8 - mov r0, r7 - mov r1, r6 - bl ov29_022E5AE4 -_0231B8F8: - mov r0, r8 - mov r1, r6 - bl ov29_0230F9A4 - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #2 - bne _0231B92C - mov r3, #0 - mov r0, r8 - mov r1, r7 - mov r2, #5 - str r3, [sp] - bl ov29_02316BB0 -_0231B92C: - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #5 - beq _0231B94C - ldrsh r0, [r6, #4] - bl GetItemCategoryVeneer - cmp r0, #0xa - bne _0231B9A8 -_0231B94C: - cmp sb, #0 - beq _0231B994 - add r1, sp, #0x20 - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231B994: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231B9A8: - ldrsh r0, [r6, #4] - cmp r0, #0x19c - bgt _0231BD6C - bge _0231CA60 - cmp r0, #0x194 - bgt _0231BD00 - bge _0231CA60 - cmp r0, #0x190 - bgt _0231BCD0 - bge _0231CA60 - cmp r0, #0xb6 - bgt _0231BCC0 - cmp r0, #0 - addge pc, pc, r0, lsl #2 - b _0231CABC -_0231B9E4: ; jump table - b _0231CABC ; case 0 - b _0231BE50 ; case 1 - b _0231BE88 ; case 2 - b _0231BEC0 ; case 3 - b _0231BEF8 ; case 4 - b _0231BF30 ; case 5 - b _0231BF68 ; case 6 - b _0231BFDC ; case 7 - b _0231BFA0 ; case 8 - b _0231C018 ; case 9 - b _0231C050 ; case 10 - b _0231CABC ; case 11 - b _0231CABC ; case 12 - b _0231CABC ; case 13 - b _0231CABC ; case 14 - b _0231CABC ; case 15 - b _0231CABC ; case 16 - b _0231CABC ; case 17 - b _0231CABC ; case 18 - b _0231CABC ; case 19 - b _0231CABC ; case 20 - b _0231CABC ; case 21 - b _0231CABC ; case 22 - b _0231CABC ; case 23 - b _0231CABC ; case 24 - b _0231CABC ; case 25 - b _0231CABC ; case 26 - b _0231CABC ; case 27 - b _0231CABC ; case 28 - b _0231CABC ; case 29 - b _0231CABC ; case 30 - b _0231CABC ; case 31 - b _0231CABC ; case 32 - b _0231CABC ; case 33 - b _0231CABC ; case 34 - b _0231CABC ; case 35 - b _0231CABC ; case 36 - b _0231CABC ; case 37 - b _0231CABC ; case 38 - b _0231CABC ; case 39 - b _0231CABC ; case 40 - b _0231CABC ; case 41 - b _0231CABC ; case 42 - b _0231CABC ; case 43 - b _0231CABC ; case 44 - b _0231CABC ; case 45 - b _0231CABC ; case 46 - b _0231CABC ; case 47 - b _0231CABC ; case 48 - b _0231CABC ; case 49 - b _0231CABC ; case 50 - b _0231CABC ; case 51 - b _0231CABC ; case 52 - b _0231CABC ; case 53 - b _0231CABC ; case 54 - b _0231CABC ; case 55 - b _0231CABC ; case 56 - b _0231CABC ; case 57 - b _0231CABC ; case 58 - b _0231CABC ; case 59 - b _0231CABC ; case 60 - b _0231CABC ; case 61 - b _0231CABC ; case 62 - b _0231CABC ; case 63 - b _0231CABC ; case 64 - b _0231CABC ; case 65 - b _0231CABC ; case 66 - b _0231CABC ; case 67 - b _0231CABC ; case 68 - b _0231C08C ; case 69 - b _0231C0A4 ; case 70 - b _0231C0CC ; case 71 - b _0231C15C ; case 72 - b _0231CABC ; case 73 - b _0231C118 ; case 74 - b _0231C210 ; case 75 - b _0231C130 ; case 76 - b _0231C0F4 ; case 77 - b _0231C248 ; case 78 - b _0231C258 ; case 79 - b _0231C144 ; case 80 - b _0231C194 ; case 81 - b _0231C184 ; case 82 - b _0231C16C ; case 83 - b _0231C1BC ; case 84 - b _0231C234 ; case 85 - b _0231C1A4 ; case 86 - b _0231C278 ; case 87 - b _0231C268 ; case 88 - b _0231C1F4 ; case 89 - b _0231C1E4 ; case 90 - b _0231C224 ; case 91 - b _0231C304 ; case 92 - b _0231C31C ; case 93 - b _0231C338 ; case 94 - b _0231C348 ; case 95 - b _0231C360 ; case 96 - b _0231C370 ; case 97 - b _0231CABC ; case 98 - b _0231C28C ; case 99 - b _0231C2A4 ; case 100 - b _0231C2BC ; case 101 - b _0231C2D4 ; case 102 - b _0231C380 ; case 103 - b _0231C6B0 ; case 104 - b _0231CABC ; case 105 - b _0231C768 ; case 106 - b _0231C7A0 ; case 107 - b _0231C2EC ; case 108 - b _0231C394 ; case 109 - b _0231C3B4 ; case 110 - b _0231C3F4 ; case 111 - b _0231C3D4 ; case 112 - b _0231C5FC ; case 113 - b _0231C61C ; case 114 - b _0231C63C ; case 115 - b _0231C7B0 ; case 116 - b _0231C7C0 ; case 117 - b _0231C7FC ; case 118 - b _0231C404 ; case 119 - b _0231C420 ; case 120 - b _0231C43C ; case 121 - b _0231C458 ; case 122 - b _0231C474 ; case 123 - b _0231C490 ; case 124 - b _0231C4AC ; case 125 - b _0231C4C8 ; case 126 - b _0231C4E4 ; case 127 - b _0231C500 ; case 128 - b _0231C51C ; case 129 - b _0231C538 ; case 130 - b _0231C554 ; case 131 - b _0231C570 ; case 132 - b _0231C58C ; case 133 - b _0231C5A8 ; case 134 - b _0231C5C4 ; case 135 - b _0231C5E0 ; case 136 - b _0231C80C ; case 137 - b _0231CABC ; case 138 - b _0231CABC ; case 139 - b _0231CABC ; case 140 - b _0231CABC ; case 141 - b _0231CABC ; case 142 - b _0231CABC ; case 143 - b _0231CABC ; case 144 - b _0231CABC ; case 145 - b _0231CABC ; case 146 - b _0231CABC ; case 147 - b _0231CABC ; case 148 - b _0231CABC ; case 149 - b _0231CABC ; case 150 - b _0231CABC ; case 151 - b _0231CABC ; case 152 - b _0231CABC ; case 153 - b _0231CABC ; case 154 - b _0231CABC ; case 155 - b _0231CABC ; case 156 - b _0231CABC ; case 157 - b _0231CABC ; case 158 - b _0231CABC ; case 159 - b _0231CABC ; case 160 - b _0231CABC ; case 161 - b _0231CABC ; case 162 - b _0231CABC ; case 163 - b _0231CABC ; case 164 - b _0231CABC ; case 165 - b _0231CABC ; case 166 - b _0231C81C ; case 167 - b _0231C82C ; case 168 - b _0231C844 ; case 169 - b _0231C8B0 ; case 170 - b _0231C91C ; case 171 - b _0231C988 ; case 172 - b _0231CABC ; case 173 - b _0231CABC ; case 174 - b _0231CABC ; case 175 - b _0231CABC ; case 176 - b _0231CABC ; case 177 - b _0231CABC ; case 178 - b _0231CA50 ; case 179 - b _0231C9F4 ; case 180 - b _0231CABC ; case 181 - b _0231C65C ; case 182 -_0231BCC0: - ldr r1, _0231C6E0 ; =0x0000016B - cmp r0, r1 - beq _0231CB14 - b _0231CABC -_0231BCD0: - ldr r1, _0231C6E4 ; =0x00000192 - cmp r0, r1 - bgt _0231BCF0 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BCF0: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD00: - cmp r0, #0x198 - bgt _0231BD3C - bge _0231CA60 - ldr r1, _0231C6E8 ; =0x00000196 - cmp r0, r1 - bgt _0231BD2C - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD2C: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD3C: - ldr r1, _0231C6EC ; =0x0000019A - cmp r0, r1 - bgt _0231BD5C - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD5C: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BD6C: - cmp r0, #0x1a4 - bgt _0231BDE4 - bge _0231CA60 - cmp r0, #0x1a0 - bgt _0231BDB4 - bge _0231CA60 - ldr r1, _0231C6F0 ; =0x0000019E - cmp r0, r1 - bgt _0231BDA4 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDA4: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDB4: - ldr r1, _0231C6F4 ; =0x000001A2 - cmp r0, r1 - bgt _0231BDD4 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDD4: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BDE4: - cmp r0, #0x1a8 - bgt _0231BE20 - bge _0231CA60 - ldr r1, _0231C6F8 ; =0x000001A6 - cmp r0, r1 - bgt _0231BE10 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE10: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE20: - ldr r1, _0231C6FC ; =0x000001AA - cmp r0, r1 - bgt _0231BE40 - bge _0231CA60 - sub r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE40: - add r1, r1, #1 - cmp r0, r1 - beq _0231CA60 - b _0231CABC -_0231BE50: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x52 - bl InitMove - ldr r0, _0231C704 ; =0x022C4624 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #1 - add r2, sp, #0x52 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BE88: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x4a - bl InitMove - ldr r0, _0231C708 ; =0x022C46E8 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #2 - add r2, sp, #0x4a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BEC0: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x42 - bl InitMove - ldr r0, _0231C70C ; =0x022C46E4 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #3 - add r2, sp, #0x42 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BEF8: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x3a - bl InitMove - ldr r0, _0231C710 ; =0x022C46E0 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #4 - add r2, sp, #0x3a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BF30: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x32 - bl InitMove - ldr r0, _0231C714 ; =0x022C46DC - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #5 - add r2, sp, #0x32 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BF68: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x2a - bl InitMove - ldr r0, _0231C718 ; =0x022C46D8 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #6 - add r2, sp, #0x2a - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231BFA0: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C71C ; =0x022C46B4 - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231BFDC: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C724 ; =0x022C46B8 - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C018: - ldr r1, _0231C700 ; =0x00000195 - add r0, sp, #0x22 - bl InitMove - ldr r0, _0231C728 ; =0x022C44D0 - mov r4, #0x100 - ldrsh r3, [r0] - str r4, [sp] - mov r4, #9 - add r2, sp, #0x22 - mov r0, r8 - mov r1, r7 - str r4, [sp, #4] - bl CalcDamageProjectile - b _0231CB14 -_0231C050: - mov r4, #0 - str r4, [sp] - ldr r0, _0231C72C ; =0x022C46BC - ldr r1, _0231C720 ; =0x0000024F - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C08C: - mov r0, r8 - mov r1, r7 - mov r3, sl - mov r2, #1 - bl ov29_02305C28 - b _0231CB14 -_0231C0A4: - ldr r1, _0231C730 ; =0x022C45EC - ldr r0, _0231C734 ; =0x022C44F4 - ldrsh r2, [r1] - ldrsh r3, [r0] - mov r4, #1 - mov r0, r8 - mov r1, r7 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C0CC: - ldr r1, _0231C738 ; =0x022C4478 - ldr r0, _0231C73C ; =0x022C45F4 - ldrsh r2, [r1] - ldrsh r3, [r0] - mov r4, #1 - mov r0, r8 - mov r1, r7 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C0F4: - ldr r0, _0231C740 ; =0x022C44F8 - mov r4, #1 - ldrsh r3, [r0] - mov r0, r8 - mov r1, r7 - mov r2, #0 - str r4, [sp] - bl TryIncreaseHp - b _0231CB14 -_0231C118: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl ov29_023176CC - b _0231CB14 -_0231C130: - mov r0, r8 - mov r1, r7 - mov r2, #0 - bl ov29_02317844 - b _0231CB14 -_0231C144: - mov r0, r8 - mov r1, r7 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - b _0231CB14 -_0231C15C: - mov r0, r8 - mov r1, r7 - bl ov29_0231795C - b _0231CB14 -_0231C16C: - mov r0, r8 - mov r1, r7 - mov r2, #1 - mov r3, #0 - bl TryInflictConfusedStatus - b _0231CB14 -_0231C184: - mov r0, r8 - mov r1, r7 - bl ov29_0231CBEC - b _0231CB14 -_0231C194: - mov r0, r8 - mov r1, r7 - bl ov29_0231CC18 - b _0231CB14 -_0231C1A4: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryWarp - b _0231CB14 -_0231C1BC: - ldr r1, _0231C744 ; =0x022C4720 - mov r0, r7 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r8 - mov r1, r7 - mov r3, #1 - bl TryInflictSleepStatus - b _0231CB14 -_0231C1E4: - mov r0, r8 - mov r1, r7 - bl TryInflictSleeplessStatus - b _0231CB14 -_0231C1F4: - mov r2, #1 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl ov29_02302A5C - b _0231CB14 -_0231C210: - mov r0, r8 - mov r1, r7 - mov r2, #1 - bl ov29_02302F88 - b _0231CB14 -_0231C224: - mov r0, r8 - mov r1, r7 - bl TryInflictPetrifiedStatus - b _0231CB14 -_0231C234: - ldr r2, _0231C748 ; =0x00000BE9 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C248: - mov r0, r8 - mov r1, r7 - bl ov29_0231CC4C - b _0231CB14 -_0231C258: - mov r0, r8 - mov r1, r7 - bl ov29_0231CC94 - b _0231CB14 -_0231C268: - mov r0, r8 - mov r1, r7 - bl ov29_0231CE68 - b _0231CB14 -_0231C278: - mov r0, r8 - mov r1, r7 - mov r2, sb - bl ov29_0231CF84 - b _0231CB14 -_0231C28C: - ldr r2, _0231C74C ; =0x000003E7 - mov r0, r8 - mov r1, r7 - mov r3, #0 - bl RestoreMovePP - b _0231CB14 -_0231C2A4: - ldr r1, _0231C750 ; =0x022C4420 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ov29_02317F50 - b _0231CB14 -_0231C2BC: - ldr r1, _0231C754 ; =0x022C46CC - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ov29_02317FE4 - b _0231CB14 -_0231C2D4: - ldr r1, _0231C758 ; =0x022C46C8 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ov29_02318078 - b _0231CB14 -_0231C2EC: - ldr r1, _0231C75C ; =0x022C46C4 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - bl ov29_0231810C - b _0231CB14 -_0231C304: - mov r0, r8 - mov r1, r7 - mov r2, #1 - mov r3, #0 - bl ov29_02305C28 - b _0231CB14 -_0231C31C: - mov r3, #1 - mov r0, r8 - mov r1, r7 - mov r2, #5 - str r3, [sp] - bl ov29_02302A5C - b _0231CB14 -_0231C338: - mov r0, r8 - mov r1, r7 - bl ov29_0231CD80 - b _0231CB14 -_0231C348: - mov r0, r8 - mov r1, r7 - mov r2, #4 - mov r3, #0 - bl TryWarp - b _0231CB14 -_0231C360: - mov r0, r8 - mov r1, r7 - bl ViolentSeedBoost - b _0231CB14 -_0231C370: - mov r0, r8 - mov r1, r7 - bl ov29_0231657C - b _0231CB14 -_0231C380: - mov r0, r7 - mov r1, #0xa - mov r2, #0 - bl ov29_022FA144 - b _0231CB14 -_0231C394: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x32 - mov r3, #5 - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C3B4: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x64 - mov r3, #0xa - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C3D4: - mov r4, #1 - mov r0, r8 - mov r1, r7 - rsb r2, r4, #0x3e8 - mov r3, #0xa - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C3F4: - mov r0, r8 - mov r1, r7 - bl ov29_0231D534 - b _0231CB14 -_0231C404: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #1 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C420: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #2 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C43C: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #3 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C458: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #4 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C474: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #5 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C490: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #6 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4AC: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #7 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4C8: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #8 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C4E4: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #9 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C500: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xa - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C51C: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xb - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C538: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xc - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C554: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xd - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C570: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xe - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C58C: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xf - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5A8: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0x10 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5C4: - ldr r1, _0231C760 ; =0x020A1888 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0x11 - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5E0: - ldr r1, _0231C764 ; =0x020A18B0 - mov r0, r8 - ldrsh r3, [r1] - mov r1, r7 - mov r2, #0xff - bl ApplyGummiBoostsDungeonMode - b _0231CB14 -_0231C5FC: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0x32 - mov r3, #5 - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C61C: - mov r4, #1 - mov r0, r8 - mov r1, r7 - mov r2, #0xa - mov r3, #0 - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C63C: - mov r4, #1 - mov r0, r8 - mov r1, r7 - rsb r2, r4, #0x3e8 - mov r3, #0x32 - str r4, [sp] - bl ov29_02316BB0 - b _0231CB14 -_0231C65C: - cmp sb, #0 - beq _0231C6A4 - add r1, sp, #0x1f - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C6A4: - mov r0, r8 - bl ov29_02343CD8 - b _0231CB14 -_0231C6B0: - mov r0, r8 - mov r1, r7 - bl ov29_02317AF4 - b _0231CB14 - .align 2, 0 -_0231C6C0: .word 0x000001AB -_0231C6C4: .word 0x00001317 -_0231C6C8: .word 0x00000BE6 -_0231C6CC: .word 0x00000BE7 -_0231C6D0: .word 0x022C4574 -_0231C6D4: .word 0x00000256 -_0231C6D8: .word 0x022C4558 -_0231C6DC: .word 0x00000BE8 -_0231C6E0: .word 0x0000016B -_0231C6E4: .word 0x00000192 -_0231C6E8: .word 0x00000196 -_0231C6EC: .word 0x0000019A -_0231C6F0: .word 0x0000019E -_0231C6F4: .word 0x000001A2 -_0231C6F8: .word 0x000001A6 -_0231C6FC: .word 0x000001AA -_0231C700: .word 0x00000195 -_0231C704: .word 0x022C4624 -_0231C708: .word 0x022C46E8 -_0231C70C: .word 0x022C46E4 -_0231C710: .word 0x022C46E0 -_0231C714: .word 0x022C46DC -_0231C718: .word 0x022C46D8 -_0231C71C: .word 0x022C46B4 -_0231C720: .word 0x0000024F -_0231C724: .word 0x022C46B8 -_0231C728: .word 0x022C44D0 -_0231C72C: .word 0x022C46BC -_0231C730: .word 0x022C45EC -_0231C734: .word 0x022C44F4 -_0231C738: .word 0x022C4478 -_0231C73C: .word 0x022C45F4 -_0231C740: .word 0x022C44F8 -_0231C744: .word 0x022C4720 -_0231C748: .word 0x00000BE9 -_0231C74C: .word 0x000003E7 -_0231C750: .word 0x022C4420 -_0231C754: .word 0x022C46CC -_0231C758: .word 0x022C46C8 -_0231C75C: .word 0x022C46C4 -_0231C760: .word 0x020A1888 -_0231C764: .word 0x020A18B0 -_0231C768: - mov r0, r8 - mov r1, r7 - bl ov29_02317A0C - cmp r0, #0 - bne _0231CB14 - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBAC ; =0x00000C75 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C7A0: - mov r0, r8 - mov r1, r7 - bl ov29_0231D74C - b _0231CB14 -_0231C7B0: - mov r0, r8 - mov r1, r7 - bl ov29_0231D680 - b _0231CB14 -_0231C7C0: - mov r4, #0 - str r4, [sp] - ldr r0, _0231CBB0 ; =0x022C4438 - str r4, [sp, #4] - mov r1, #0x270 - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C7FC: - mov r0, r8 - mov r1, r7 - bl ov29_0231D6E0 - b _0231CB14 -_0231C80C: - mov r0, r8 - mov r1, r7 - bl ov29_0231D7C0 - b _0231CB14 -_0231C81C: - mov r0, r8 - mov r1, r7 - bl ov29_0231D838 - b _0231CB14 -_0231C82C: - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl ov29_023176CC - b _0231CB14 -_0231C844: - cmp sb, #0 - beq _0231C88C - add r1, sp, #0x1e - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C88C: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C8B0: - cmp sb, #0 - beq _0231C8F8 - add r1, sp, #0x1d - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C8F8: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C91C: - cmp sb, #0 - beq _0231C964 - add r1, sp, #0x1c - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C964: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C988: - cmp sb, #0 - beq _0231C9D0 - add r1, sp, #0x1b - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231C9D0: - mov r0, #0 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CBB4 ; =0x00000C67 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231C9F4: - cmp sb, #0 - beq _0231CA3C - add r1, sp, #0x1a - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CA3C: - ldr r2, _0231CBB8 ; =0x00000C76 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231CA50: - mov r0, r8 - mov r1, r7 - bl ov29_0231D9C0 - b _0231CB14 -_0231CA60: - cmp sb, #0 - beq _0231CAA8 - add r1, sp, #0x19 - ldr r0, _0231CBBC ; =0x022C44EC - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CAA8: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CB14 -_0231CABC: - cmp sb, #0 - beq _0231CB04 - add r1, sp, #0x18 - ldr r0, _0231C6D8 ; =0x022C4558 - str r1, [sp] - mov r4, #0 - ldrsh r2, [r0] - ldr r1, _0231C6D4 ; =0x00000256 - str r4, [sp, #4] - str r1, [sp, #8] - str r4, [sp, #0xc] - str r4, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r3, #1 - str r4, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231CB14 -_0231CB04: - ldr r2, _0231C6DC ; =0x00000BE8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0231CB14: - mov r0, r7 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - beq _0231CB9C - ldr r1, [r7, #0xb4] - ldrsh r4, [r6, #4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _0231CB48 - add r0, r1, #0x228 - mov r1, #0x5d - bl ExclusiveItemEffectFlagTest -_0231CB48: - cmp r0, #0 - beq _0231CB9C - ldr r0, _0231CBC0 ; =0x022C4EB8 - b _0231CB90 -_0231CB58: - cmp r4, r1 - bne _0231CB8C - mov r0, #0xa - bl ov29_0234BA54 - ldr r0, _0231CBC4 ; =0x022C4864 - mov r4, #1 - ldr r2, [r0] - mov r0, r8 - mov r1, r7 - mov r3, #0 - str r4, [sp] - bl TryIncreaseHp - b _0231CB9C -_0231CB8C: - add r0, r0, #2 -_0231CB90: - ldrsh r1, [r0] - cmp r1, #0 - bne _0231CB58 -_0231CB9C: - mov r0, r8 - bl EnemyEvolution -_0231CBA4: - add sp, sp, #0x5c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231CBAC: .word 0x00000C75 -_0231CBB0: .word 0x022C4438 -_0231CBB4: .word 0x00000C67 -_0231CBB8: .word 0x00000C76 -_0231CBBC: .word 0x022C44EC -_0231CBC0: .word 0x022C4EB8 -_0231CBC4: .word 0x022C4864 - arm_func_end ApplyItemEffect - - arm_func_start EntityIsValid__0231CBC8 -EntityIsValid__0231CBC8: ; 0x0231CBC8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0231CBC8 - - arm_func_start ov29_0231CBEC -ov29_0231CBEC: ; 0x0231CBEC - stmdb sp!, {r3, lr} - ldr r2, [r1, #0xb4] - ldrb r2, [r2, #0xbf] - cmp r2, #4 - bne _0231CC08 - bl ov29_023061A8 - ldmia sp!, {r3, pc} -_0231CC08: - ldr r2, _0231CC14 ; =0x00000BE9 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, pc} - .align 2, 0 -_0231CC14: .word 0x00000BE9 - arm_func_end ov29_0231CBEC - - arm_func_start ov29_0231CC18 -ov29_0231CC18: ; 0x0231CC18 - stmdb sp!, {r3, lr} - ldr r2, [r1, #0xb4] - ldrb r2, [r2, #0xbf] - add r2, r2, #0xfe - and r2, r2, #0xff - cmp r2, #1 - bhi _0231CC3C - bl ov29_023061A8 - ldmia sp!, {r3, pc} -_0231CC3C: - ldr r2, _0231CC48 ; =0x00000BE9 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, pc} - .align 2, 0 -_0231CC48: .word 0x00000BE9 - arm_func_end ov29_0231CC18 - - arm_func_start ov29_0231CC4C -ov29_0231CC4C: ; 0x0231CC4C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r2, [r4, #0xb4] - mov r5, r0 - ldrb r2, [r2, #0xbf] - cmp r2, #1 - bne _0231CC70 - bl ov29_023061A8 - ldmia sp!, {r3, r4, r5, pc} -_0231CC70: - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231CC90 ; =0x00000BEA - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231CC90: .word 0x00000BEA - arm_func_end ov29_0231CC4C - - arm_func_start ov29_0231CC94 -ov29_0231CC94: ; 0x0231CC94 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - ldr r4, [r5, #0xb4] - mov r6, r0 - ldrb r2, [r4, #7] - cmp r2, #0 - beq _0231CCC4 - mov r2, #0 - mov r3, #5 - bl ov29_023168D8 - b _0231CD6C -_0231CCC4: - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, #0x12 - bl IqSkillIsEnabled - cmp r0, #0 - beq _0231CCF8 - ldr r2, _0231CD74 ; =0x00000BEB - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CD6C -_0231CCF8: - add r0, r4, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - beq _0231CD5C - mov r0, #0 - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r0, [sp] - add r3, r4, #0x100 - ldrh r4, [sp, #2] - strh r0, [r3, #0x46] - ldr r2, _0231CD78 ; =0x00000BEC - mov r0, r6 - mov r1, r5 - strh r4, [r3, #0x48] - bl LogMessageByIdWithPopupCheckUserTarget - b _0231CD6C -_0231CD5C: - ldr r2, _0231CD7C ; =0x00000BED - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0231CD6C: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0231CD74: .word 0x00000BEB -_0231CD78: .word 0x00000BEC -_0231CD7C: .word 0x00000BED - arm_func_end ov29_0231CC94 - - arm_func_start ov29_0231CD80 -ov29_0231CD80: ; 0x0231CD80 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - ldr r1, _0231CE10 ; =0x023529AC - ldr ip, [r4, #0xb4] - ldrh r3, [r1] - ldrh r2, [r1, #2] - ldrsh r1, [ip, #0x28] - mov r5, r0 - ldrsh r0, [ip, #0x2a] - mov ip, #1 - strh r3, [sp, #8] - cmp r1, #0 - strgth r1, [sp, #8] - str ip, [sp] - strh r2, [sp, #0xa] - cmp r0, #0 - strgth r0, [sp, #0xa] - ldr r0, _0231CE14 ; =0x02352AEC - ldrsh r3, [sp, #8] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerDefensiveStat - ldr r0, _0231CE18 ; =0x02352AE8 - mov ip, #1 - ldr r2, [r0] - str ip, [sp] - ldrsh r3, [sp, #0xa] - mov r0, r5 - mov r1, r4 - str ip, [sp, #4] - bl LowerDefensiveStat - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0231CE10: .word 0x023529AC -_0231CE14: .word 0x02352AEC -_0231CE18: .word 0x02352AE8 - arm_func_end ov29_0231CD80 - - arm_func_start ViolentSeedBoost -ViolentSeedBoost: ; 0x0231CE1C - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r4, [r5, #0xb4] - ldr r2, _0231CE60 ; =0x02352AEC - ldrsh r3, [r4, #0x24] - ldr r2, [r2] - mov r6, r0 - rsb r3, r3, #0x14 - bl BoostOffensiveStat - ldrsh r3, [r4, #0x26] - ldr r1, _0231CE64 ; =0x02352AE8 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - rsb r3, r3, #0x14 - bl BoostOffensiveStat - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231CE60: .word 0x02352AEC -_0231CE64: .word 0x02352AE8 - arm_func_end ViolentSeedBoost - - arm_func_start ov29_0231CE68 -ov29_0231CE68: ; 0x0231CE68 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r0, #0x64 - ldr r6, [r8, #0xb4] - mov r4, #0 - mov r5, #1 - bl DungeonRandInt - ldr r1, _0231CF78 ; =0x022C46C0 - mov ip, #0 - ldrsh r1, [r1] - add r3, r6, #0x124 - cmp r0, r1 - movlt r5, #3 - mov r0, ip - mov r1, #1 - b _0231CF10 -_0231CEAC: - ldrb r2, [r3, ip, lsl #3] - add r7, r3, ip, lsl #3 - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - beq _0231CF0C - mov r0, r7 - bl GetMoveBasePower - cmp r0, #0 - beq _0231CF18 - mov r0, r7 - ldrb r6, [r7, #7] - bl GetMoveMaxGinsengBoost - ldrb r1, [r7, #7] - add r2, r1, r5 - and r1, r2, #0xff - strb r2, [r7, #7] - cmp r1, r0 - strgeb r0, [r7, #7] - ldrb r0, [r7, #7] - cmp r6, r0 - movne r4, #1 - b _0231CF18 -_0231CF0C: - add ip, ip, #1 -_0231CF10: - cmp ip, #4 - blt _0231CEAC -_0231CF18: - cmp r4, #0 - beq _0231CF64 - ldrh r1, [r7, #4] - mov r0, #0 - bl ov29_0234B084 - mov r0, sb - mov r1, r8 - mov r2, #0xbf0 - bl LogMessageByIdWithPopupCheckUserTarget - cmp r5, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #0xa - mov r1, #0x40 - bl ov29_022EA370 - ldr r2, _0231CF7C ; =0x00000BEF - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231CF64: - ldr r2, _0231CF80 ; =0x00000BEE - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231CF78: .word 0x022C46C0 -_0231CF7C: .word 0x00000BEF -_0231CF80: .word 0x00000BEE - arm_func_end ov29_0231CE68 - - arm_func_start ov29_0231CF84 -ov29_0231CF84: ; 0x0231CF84 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - mov r6, r0 - mov r5, r1 - cmp r2, #0 - beq _0231D00C - ldr r7, [r5, #0xb4] - bl ov29_022E0880 - cmp r0, #0 - ldrne r0, _0231D0A8 ; =0x022C45D8 - ldreq r0, _0231D0AC ; =0x022C45D4 - ldrsh r4, [r0] - ldrb r0, [r7, #0xc4] - cmp r0, #1 - bne _0231CFD0 - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl EndFrozenClassStatus -_0231CFD0: - add r0, sp, #0x18 - str r0, [sp] - mov ip, #0 - ldr r0, _0231D0B0 ; =0x00000255 - str ip, [sp, #4] - str r0, [sp, #8] - str ip, [sp, #0xc] - str ip, [sp, #0x10] - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #1 - str ip, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0231D0A0 -_0231D00C: - bl ov29_022E5BD8 - mov r0, r6 - bl ov29_022F8830 - movs r4, r0 - bne _0231D034 - ldr r2, _0231D0B4 ; =0x00000BF2 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231D0A0 -_0231D034: - ldr r7, [r4, #0xb4] - bl ov29_022E0880 - cmp r0, #0 - ldrne r0, _0231D0B8 ; =0x022C45DC - ldreq r0, _0231D0BC ; =0x022C44E8 - ldrsh r5, [r0] - ldrb r0, [r7, #0xc4] - cmp r0, #1 - bne _0231D068 - mov r0, r6 - mov r1, r4 - mov r2, #1 - bl EndFrozenClassStatus -_0231D068: - add r0, sp, #0x18 - str r0, [sp] - mov ip, #0 - ldr r0, _0231D0B0 ; =0x00000255 - str ip, [sp, #4] - str r0, [sp, #8] - str ip, [sp, #0xc] - str ip, [sp, #0x10] - mov r0, r6 - mov r1, r4 - mov r2, r5 - mov r3, #1 - str ip, [sp, #0x14] - bl CalcDamageFixedNoCategory -_0231D0A0: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0231D0A8: .word 0x022C45D8 -_0231D0AC: .word 0x022C45D4 -_0231D0B0: .word 0x00000255 -_0231D0B4: .word 0x00000BF2 -_0231D0B8: .word 0x022C45DC -_0231D0BC: .word 0x022C44E8 - arm_func_end ov29_0231CF84 - - arm_func_start ApplyGummiBoostsDungeonMode -ApplyGummiBoostsDungeonMode: ; 0x0231D0C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r4, #0 - mov sb, r1 - mov sl, r0 - mov r8, r3 - mov r3, r4 - mov r5, r4 - cmp r2, #0xff - ldr r7, [sb, #0xb4] - bne _0231D108 - ldr r1, _0231D468 ; =0x020A1890 - ldr r0, _0231D46C ; =0x020A1894 - ldrsh r1, [r1] - ldrsh r0, [r0] - add fp, r4, r1 - add r3, r4, r0 - b _0231D164 -_0231D108: - ldrb r1, [r7, #0x5e] - ldrb r6, [r7, #0x5f] - mov r0, #0x24 - smulbb r1, r1, r0 - ldr fp, _0231D470 ; =0x020A22B0 - smulbb r6, r6, r0 - add ip, fp, r1 - mov r0, r2, lsl #1 - add fp, fp, r6 - ldrsh ip, [r0, ip] - ldrsh r0, [r0, fp] - cmp ip, r0 - addgt fp, r4, ip - addle fp, r4, r0 - ldr ip, _0231D474 ; =0x020A2538 - mov r0, r2, lsl #1 - add r2, ip, r1 - add r1, ip, r6 - ldrsh r2, [r0, r2] - ldrsh r0, [r0, r1] - cmp r2, r0 - addgt r3, r3, r2 - addle r3, r3, r0 -_0231D164: - mov r6, #1 - mov r0, sl - mov r1, sb - mov r2, r3 - str r6, [sp] - mov r3, #0 - bl ov29_02316BB0 - ldrb r0, [r7, #6] - cmp r0, #0 - bne _0231D284 - mov r0, r7 - bl IsExperienceLocked - cmp r0, #0 - bne _0231D284 - ldrsh r6, [r7, #0xe] - add r2, r6, fp - strh r2, [r7, #0xe] - ldrsh r0, [r7, #0xe] - cmp r0, #1 - movlt r0, #1 - strlth r0, [r7, #0xe] - ldrsh r1, [r7, #0xe] - ldr r0, _0231D478 ; =0x000003E7 - cmp r1, r0 - strgth r0, [r7, #0xe] - ldrsh r1, [r7, #0xe] - cmp r6, r1 - bne _0231D1EC - ldr r2, _0231D47C ; =0x00000BF3 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r4, #1 - b _0231D284 -_0231D1EC: - sub r0, r2, r6 - cmp r0, #9 - movge r5, #0 - bge _0231D214 - cmp r0, #5 - movge r5, #1 - bge _0231D214 - cmp r0, #3 - movge r5, #2 - movlt r5, #3 -_0231D214: - sub r0, r1, r6 - cmp r0, #9 - movge fp, #0 - bge _0231D23C - cmp r0, #5 - movge fp, #1 - bge _0231D23C - cmp r0, #3 - movge fp, #2 - movlt fp, #3 -_0231D23C: - ldr r0, _0231D480 ; =0x023532D0 - mov r1, r5, lsl #1 - ldrh r2, [r0, r1] - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, _0231D484 ; =0x02353324 - mov r1, fp, lsl #1 - ldrh r2, [r0, r1] - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - mov r2, #0 - bl ov29_022FA02C - mov r0, sb - bl ov29_023021F0 -_0231D284: - cmp r5, #3 - beq _0231D460 - ldr r0, _0231D488 ; =0x022C44CC - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - beq _0231D460 - ldr r5, [sb, #0xb4] - ldr r0, _0231D48C ; =0x022C45E4 - ldrb r1, [r5, #0x1a] - ldrsh r0, [r0] - str r1, [sp, #4] - ldrb fp, [r5, #0x1b] - ldrb r6, [r5, #0x1c] - ldrb r7, [r5, #0x1d] - bl DungeonRandInt - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r4, #0 - cmpeq r0, #0xa - moveq r0, #0xf - beq _0231D2F4 - mov r0, #4 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - ldr r1, _0231D490 ; =0x023529B0 - mov r0, r0, lsr #0xf - ldrh r0, [r1, r0] -_0231D2F4: - tst r0, #1 - beq _0231D328 - ldrb r1, [r5, #0x1a] - cmp r1, #0xff - bge _0231D320 - add r1, r1, r8 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - cmp r1, #0xff - movgt r1, #0xff - b _0231D324 -_0231D320: - bic r0, r0, #1 -_0231D324: - strb r1, [r5, #0x1a] -_0231D328: - tst r0, #2 - beq _0231D35C - ldrb r1, [r5, #0x1b] - cmp r1, #0xff - bge _0231D354 - add r1, r1, r8 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - cmp r1, #0xff - movgt r1, #0xff - b _0231D358 -_0231D354: - bic r0, r0, #2 -_0231D358: - strb r1, [r5, #0x1b] -_0231D35C: - tst r0, #4 - beq _0231D390 - ldrb r1, [r5, #0x1c] - cmp r1, #0xff - bge _0231D388 - add r1, r1, r8 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - cmp r1, #0xff - movgt r1, #0xff - b _0231D38C -_0231D388: - bic r0, r0, #4 -_0231D38C: - strb r1, [r5, #0x1c] -_0231D390: - tst r0, #8 - beq _0231D3BC - ldrb r0, [r5, #0x1d] - cmp r0, #0xff - bge _0231D3B8 - add r0, r0, r8 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #0xff - movgt r0, #0xff -_0231D3B8: - strb r0, [r5, #0x1d] -_0231D3BC: - ldrb r1, [r5, #0x1a] - ldr r0, [sp, #4] - cmp r1, r0 - ble _0231D3E8 - sub r1, r1, r0 - mov r0, #0 - bl ov29_0234B09C - ldr r2, _0231D494 ; =0x00000BF7 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231D3E8: - ldrb r0, [r5, #0x1b] - cmp r0, fp - ble _0231D410 - sub r1, r0, fp - mov r0, #0 - bl ov29_0234B09C - ldr r2, _0231D498 ; =0x00000BF8 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231D410: - ldrb r0, [r5, #0x1c] - cmp r0, r6 - ble _0231D438 - sub r1, r0, r6 - mov r0, #0 - bl ov29_0234B09C - ldr r2, _0231D49C ; =0x00000BF9 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231D438: - ldrb r0, [r5, #0x1d] - cmp r0, r7 - ble _0231D460 - sub r1, r0, r7 - mov r0, #0 - bl ov29_0234B09C - ldr r2, _0231D4A0 ; =0x00000BFA - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0231D460: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231D468: .word 0x020A1890 -_0231D46C: .word 0x020A1894 -_0231D470: .word 0x020A22B0 -_0231D474: .word 0x020A2538 -_0231D478: .word 0x000003E7 -_0231D47C: .word 0x00000BF3 -_0231D480: .word 0x023532D0 -_0231D484: .word 0x02353324 -_0231D488: .word 0x022C44CC -_0231D48C: .word 0x022C45E4 -_0231D490: .word 0x023529B0 -_0231D494: .word 0x00000BF7 -_0231D498: .word 0x00000BF8 -_0231D49C: .word 0x00000BF9 -_0231D4A0: .word 0x00000BFA - arm_func_end ApplyGummiBoostsDungeonMode - - arm_func_start ov29_0231D4A4 -ov29_0231D4A4: ; 0x0231D4A4 - stmdb sp!, {r4, lr} - ldrb r2, [r1] - mov r4, r0 - ldr r0, [r4, #0xb4] - tst r2, #8 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - beq _0231D4E4 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _0231D52C ; =0x00000BE7 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r4, pc} -_0231D4E4: - ldrb r0, [r0, #0xf3] - cmp r0, #1 - bne _0231D524 - ldrsh r0, [r1, #4] - bl IsEdible - cmp r0, #0 - beq _0231D524 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231D530 ; =0x00000BF6 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r4, pc} -_0231D524: - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_0231D52C: .word 0x00000BE7 -_0231D530: .word 0x00000BF6 - arm_func_end ov29_0231D4A4 - - arm_func_start ov29_0231D534 -ov29_0231D534: ; 0x0231D534 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov ip, #1 - mov r4, r1 - mov r2, #0x1e - mov r3, #0 - mov r5, r0 - str ip, [sp] - bl ov29_02316BB0 - mov r0, r4 - mov r1, #0x25 - bl IqSkillIsEnabled - cmp r0, #0 - bne _0231D580 - mov r0, r4 - mov r1, #0x59 - bl AbilityIsActive2 - cmp r0, #0 - beq _0231D598 -_0231D580: - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _0231D674 ; =0x022C4680 - ldrsh r1, [r1] - cmp r0, r1 - blt _0231D66C -_0231D598: - mov r0, #5 - bl DungeonRandInt - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0231D66C -_0231D5AC: ; jump table - b _0231D5C0 ; case 0 - b _0231D5D8 ; case 1 - b _0231D5EC ; case 2 - b _0231D60C ; case 3 - b _0231D624 ; case 4 -_0231D5C0: - mov r0, r5 - mov r1, r4 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus - b _0231D66C -_0231D5D8: - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl TryInflictShadowHoldStatus - b _0231D66C -_0231D5EC: - mov r2, #1 - mov ip, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - str ip, [sp] - bl TryInflictBurnStatus - b _0231D66C -_0231D60C: - mov r0, r5 - mov r1, r4 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus - b _0231D66C -_0231D624: - ldr r0, _0231D678 ; =0x02352AEC - mov ip, #1 - ldr r2, [r0] - str ip, [sp] - mov r0, r5 - mov r1, r4 - mov r3, #3 - str ip, [sp, #4] - bl LowerOffensiveStat - ldr r0, _0231D67C ; =0x02352AE8 - mov ip, #1 - str ip, [sp] - ldr r2, [r0] - mov r0, r5 - mov r1, r4 - mov r3, #3 - str ip, [sp, #4] - bl LowerOffensiveStat -_0231D66C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231D674: .word 0x022C4680 -_0231D678: .word 0x02352AEC -_0231D67C: .word 0x02352AE8 - arm_func_end ov29_0231D534 - - arm_func_start ov29_0231D680 -ov29_0231D680: ; 0x0231D680 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - ldr r2, [r5, #0xb4] - mov r6, r0 - ldrsh r4, [r2, #2] - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r4, #0x124 - cmpne r4, #0x37c - bne _0231D6C4 - ldr r2, _0231D6D8 ; =0x000003E7 - mov r0, r6 - mov r1, r5 - mov r3, #0 - bl RestoreMovePP - ldmia sp!, {r4, r5, r6, pc} -_0231D6C4: - ldr r2, _0231D6DC ; =0x00000C64 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0231D6D8: .word 0x000003E7 -_0231D6DC: .word 0x00000C64 - arm_func_end ov29_0231D680 - - arm_func_start ov29_0231D6E0 -ov29_0231D6E0: ; 0x0231D6E0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - bne _0231D730 - bl ov29_02338530 - cmp r0, #0 - bne _0231D730 - mov r0, #1 - bl ov29_02338548 - ldr r2, _0231D744 ; =0x00000C6E - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} -_0231D730: - ldr r2, _0231D748 ; =0x00000C6F - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231D744: .word 0x00000C6E -_0231D748: .word 0x00000C6F - arm_func_end ov29_0231D6E0 - - arm_func_start ov29_0231D74C -ov29_0231D74C: ; 0x0231D74C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0231D788 - ldr r1, _0231D7B8 ; =0x00000C68 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0231D7A0 -_0231D788: - ldr r2, _0231D7BC ; =0x00000C69 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0xa - bl ov29_0234BA54 -_0231D7A0: - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryWarp - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231D7B8: .word 0x00000C68 -_0231D7BC: .word 0x00000C69 - arm_func_end ov29_0231D74C - - arm_func_start ov29_0231D7C0 -ov29_0231D7C0: ; 0x0231D7C0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - ldr r1, [r5, #0xb4] - mov r6, r0 - ldrsh r0, [r1, #2] - bl FemaleToMaleForm - mov r1, #1 - mov r4, r0 - str r1, [sp] - ldr r0, _0231D830 ; =0x022C47E0 - mov r1, r5 - ldrsh r2, [r0] - ldrsh r3, [r0, #2] - mov r0, r6 - bl ov29_02316BB0 - cmp r4, #0x1e0 - cmpne r4, #0xb9 - bne _0231D828 - ldr r1, _0231D834 ; =0x022C47F0 - mov r0, r5 - ldr r1, [r1] - mov r2, #0 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ov29_022FA144 -_0231D828: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0231D830: .word 0x022C47E0 -_0231D834: .word 0x022C47F0 - arm_func_end ov29_0231D7C0 - - arm_func_start ov29_0231D838 -ov29_0231D838: ; 0x0231D838 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r5, r1 - mov r6, r0 - mov r0, r5 - bl ov29_022E272C - cmp r0, #0 - beq _0231D978 - mov r0, #1 - bl ov29_022EFB20 - bl ov29_022EAF20 - mov r4, r0 - mov r0, #3 - bl ov29_022EAF34 - ldr r1, _0231D9B0 ; =0x000003FF - mov r0, #4 - add r2, sp, #4 - mov r3, #0 - bl AllocAndLoadFileInPack - ldr r1, [sp, #4] - add r0, sp, #0 - bl HandleSir0Translation - mov r0, r5 - bl ov29_022F04F0 - ldrb r0, [r5, #0xaa] - mov r1, #1 - bl ov29_022DE47C - mov r0, #0 - bl ov29_022DD828 - ldr r0, [sp] - mov r1, #6 - bl ov29_022F085C - ldr r0, _0231D9B4 ; =0x00000C65 - bl ov29_022F0780 - bl ov29_022F05E4 - mov r0, #0 - bl ov29_022EFB84 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231D9B8 ; =0x00000C66 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0xa - bl ov29_0234BA54 - mov r0, r6 - mov r1, r5 - bl ov29_02319378 - ldr r0, _0231D9BC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd6] - bl ov29_022EAD00 - bl ov29_022EAE14 - mov r0, r4 - bl ov29_022EAF34 - bl ov29_02339CE8 - mov r0, #1 - bl ov29_02339FF4 - mov r0, #0 - bl GetApparentWeather - bl ov29_022DE620 - mov r1, #6 - bl ov29_022F085C - mov r0, r5 - bl ov29_022F0518 - add r0, sp, #4 - bl UnloadFile - ldrb r0, [r5, #0xaa] - mov r1, #0 - bl ov29_022DE47C - bl ov29_022DE608 - mov r0, #1 - bl ov29_022DD828 - mov r0, #0xa - mov r1, r0 - bl ov29_022EA370 - b _0231D9A8 -_0231D978: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231D9B8 ; =0x00000C66 - mov r0, r5 - bl LogMessageByIdWithPopup - mov r0, #0xa - bl ov29_0234BA54 - mov r0, r6 - mov r1, r5 - bl ov29_02319378 -_0231D9A8: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0231D9B0: .word 0x000003FF -_0231D9B4: .word 0x00000C65 -_0231D9B8: .word 0x00000C66 -_0231D9BC: .word 0x02353538 - arm_func_end ov29_0231D838 - - arm_func_start ov29_0231D9C0 -ov29_0231D9C0: ; 0x0231D9C0 - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0x1a - mov r5, r1 - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _0231DA50 - mov r0, r5 - mov r1, #1 - bl ov29_0231B4EC - mov r4, r0 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r4, #3 - bne _0231DA10 - ldr r1, _0231DA70 ; =0x00000C71 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_0231DA10: - cmp r4, #1 - bne _0231DA28 - ldr r1, _0231DA74 ; =0x00000C72 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_0231DA28: - cmp r4, #2 - bne _0231DA40 - ldr r1, _0231DA78 ; =0x00000C74 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_0231DA40: - ldr r1, _0231DA7C ; =0x00000C73 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_0231DA50: - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0231DA7C ; =0x00000C73 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0231DA70: .word 0x00000C71 -_0231DA74: .word 0x00000C72 -_0231DA78: .word 0x00000C74 -_0231DA7C: .word 0x00000C73 - arm_func_end ov29_0231D9C0 - - arm_func_start ov29_0231DA80 -ov29_0231DA80: ; 0x0231DA80 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - mov sl, r0 - ldrsh r0, [sb, #4] - bl GetItemMoveId16 - ldrb r1, [sb] - mov r5, r0 - tst r1, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0231DAC8 - ldr r1, _0231DBE0 ; =0x00000BE7 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231DAC8: - ldrsh r0, [sb, #4] - bl IsHM - cmp r0, #0 - beq _0231DAF0 - ldr r1, _0231DBE4 ; =0x00000BF4 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231DAF0: - ldr fp, _0231DBE8 ; =0x02353538 - mov r4, #0 -_0231DAF8: - ldr r0, [fp] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - beq _0231DB70 - ldr r8, [r7, #0xb4] - mov r0, r5 - ldrsh r1, [r8, #2] - bl sub_02053D1C - mov r6, r0 - mov r0, r7 - mov r1, r5 - bl ov29_022FBA54 - cmp r0, #0 - mov r0, r7 - movne r6, #0 - bl ov29_023009A0 - cmp r0, #0 - ldrb r0, [r8, #0xbc] - movne r6, #0 - cmp r0, #7 - mov r0, r8 - moveq r6, #0 - bl IsExperienceLocked - cmp r0, #0 - movne r6, #0 - strb r6, [r8, #0x161] -_0231DB70: - add r4, r4, #1 - cmp r4, #4 - blt _0231DAF8 - mov r0, #0 - mov r2, r0 - mov r3, r0 - mov r1, #1 - bl ov31_023877EC - mov r4, r0 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r4 - mov r1, sb - bl ov29_022E5AE4 - mov r0, r4 - mov r1, r5 - bl ov29_023038D4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r2, _0231DBEC ; =0x00000141 - mov r0, sl - mov r1, #0 - bl ov29_022EB668 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231DBE0: .word 0x00000BE7 -_0231DBE4: .word 0x00000BF4 -_0231DBE8: .word 0x02353538 -_0231DBEC: .word 0x00000141 - arm_func_end ov29_0231DA80 - - arm_func_start ov29_0231DBF0 -ov29_0231DBF0: ; 0x0231DBF0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - ldrb r1, [sb] - mov sl, r0 - tst r1, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0231DC2C - ldr r1, _0231DD50 ; =0x00000BE7 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231DC2C: - ldr r4, _0231DD54 ; =0x02353538 - ldr r0, [r4] - ldrb r0, [r0, #0x75c] - cmp r0, #0 - bne _0231DC58 - ldr r1, _0231DD58 ; =0x00000BA4 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231DC58: - mov r5, #0 - mov fp, #1 -_0231DC60: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - beq _0231DCEC - ldr r8, [r7, #0xb4] - mov r6, fp - ldrsh r0, [r8, #0xc] - cmp r0, #4 - movge r6, #0 - bge _0231DCAC - bl GetActiveTeamMember - ldrsh r0, [r0, #8] - bl CheckTeamMemberIdx__022F9C34 - cmp r0, #0 - movne r6, #0 -_0231DCAC: - mov r0, r7 - mov r1, #0 - bl ov29_02300818 - cmp r0, #0 - ldrb r0, [r8, #0xbc] - movne r6, #0 - cmp r0, #7 - mov r0, r8 - moveq r6, #0 - bl IsExperienceLocked - cmp r0, #0 - ldrb r0, [r8, #7] - movne r6, #0 - cmp r0, #0 - movne r6, #0 - strb r6, [r8, #0x161] -_0231DCEC: - add r5, r5, #1 - cmp r5, #4 - blt _0231DC60 - mov r0, #0 - mov r1, #1 - mov r2, r0 - mov r3, r1 - bl ov31_023877EC - mov r4, r0 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl ov29_022E5AE4 - ldr r0, _0231DD54 ; =0x02353538 - ldr r2, _0231DD5C ; =0x00000142 - ldr r3, [r0] - mov r0, sl - mov r1, #0 - str r4, [r3, #0xc8] - bl ov29_022EB668 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231DD50: .word 0x00000BE7 -_0231DD54: .word 0x02353538 -_0231DD58: .word 0x00000BA4 -_0231DD5C: .word 0x00000142 - arm_func_end ov29_0231DBF0 - - arm_func_start ov29_0231DD60 -ov29_0231DD60: ; 0x0231DD60 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov sb, r1 - ldrb r1, [sb] - mov sl, r0 - mov r6, #0 - tst r1, #8 - movne r0, #1 - moveq r0, r6 - ldr r4, [sl, #0xb4] - tst r0, #0xff - beq _0231DDA8 - ldr r1, _0231E04C ; =0x00000BE7 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - mov r0, #0 - b _0231E044 -_0231DDA8: - ldr fp, _0231E050 ; =0x02353538 - mov r5, #0 -_0231DDB0: - ldr r0, [fp] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0231CBC8 - cmp r0, #0 - beq _0231DE0C - ldr r8, [r7, #0xb4] - mov r0, r7 - mov r1, #0 - mov r7, #1 - bl ov29_023008DC - cmp r0, #0 - ldrb r0, [r8, #0xbc] - movne r7, #0 - cmp r0, #7 - mov r0, r8 - moveq r7, #0 - bl IsExperienceLocked - cmp r0, #0 - movne r7, #0 - strb r7, [r8, #0x161] -_0231DE0C: - add r5, r5, #1 - cmp r5, #4 - blt _0231DDB0 - mov r0, #0 - mov r2, r0 - mov r3, r0 - mov r1, #1 - bl ov31_023877EC - str r0, [sp, #4] - bl EntityIsValid__0231CBC8 - cmp r0, #0 - moveq r0, #0 - beq _0231E044 - add r2, sp, #8 - add r3, r4, #0x4a - mov r1, #0xa -_0231DE4C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0231DE4C - mov fp, #1 - ldr r5, _0231E054 ; =0x0000016A - add r7, sp, #4 - mov r8, fp -_0231DE6C: - add r0, r4, #0x4a - bl ClearMonsterActionFields - ldrsh r0, [sb, #4] - mov r2, #0 - cmp r0, r5 - beq _0231DE9C - mov r0, r7 - mov r1, r8 - mov r3, r2 - str r8, [sp] - bl ov30_023853BC - b _0231DEB0 -_0231DE9C: - mov r0, r7 - mov r1, fp - mov r3, r2 - str fp, [sp] - bl ov30_023853E0 -_0231DEB0: - cmp r0, #0 - beq _0231DF1C - cmp r6, #0 - beq _0231DFF4 - ldrsh r0, [sb, #4] - ldr r1, _0231E058 ; =0x00000BF5 - cmp r0, r5 - bne _0231DF00 - mov r0, #1 - str r0, [sp] - mov r0, #0 - mov r2, #1 - mov r3, r0 - bl ov29_0234D518 - cmp r0, #1 - bne _0231DF1C - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - b _0231DFF4 -_0231DF00: - mov r0, #0 - mov r2, r0 - mov r3, r0 - str r0, [sp] - bl ov29_0234D518 - cmp r0, #1 - beq _0231DFF4 -_0231DF1C: - ldrh r0, [r4, #0x4a] - cmp r0, #0x1d - bne _0231DF34 - add r0, r4, #0x4a - bl ov30_02385FE0 - b _0231DE6C -_0231DF34: - cmp r0, #0x20 - bne _0231DF60 - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add r0, r4, #0x4a - bl ov31_02386204 - mov r0, #1 - bl ov29_022EB398 - mov r6, #1 - b _0231DE6C -_0231DF60: - cmp r0, #0x21 - bne _0231DF8C - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add r0, r4, #0x4a - mov r1, #0 - bl ov31_02386308 - mov r0, #1 - bl ov29_022EB398 - b _0231DE6C -_0231DF8C: - cmp r0, #0x1e - bne _0231DFB0 - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add r0, r4, #0x4a - mov r1, #0 - bl ov31_023860A4 - b _0231DE6C -_0231DFB0: - cmp r0, #0x33 - bne _0231DFD4 - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add r0, r4, #0x4a - mov r1, #0 - bl ov31_023860A4 - b _0231DE6C -_0231DFD4: - cmp r0, #0x1f - bne _0231DE6C - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add r0, r4, #0x4a - bl ov31_0238619C - b _0231DE6C -_0231DFF4: - cmp r6, #0 - beq _0231E038 - add r3, sp, #8 - add r2, r4, #0x4a - mov r1, #0xa -_0231E008: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0231E008 - mov r0, sl - mov r1, #0 - mov r2, #0x6e - bl ov29_022EB60C - add r0, r4, #0x4a - mov r1, #0x2c - bl SetMonsterActionFields - b _0231E040 -_0231E038: - mov r0, #1 - bl ov29_022EB398 -_0231E040: - mov r0, r6 -_0231E044: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231E04C: .word 0x00000BE7 -_0231E050: .word 0x02353538 -_0231E054: .word 0x0000016A -_0231E058: .word 0x00000BF5 - arm_func_end ov29_0231DD60 - - arm_func_start ov29_0231E05C -ov29_0231E05C: ; 0x0231E05C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r0 - tst r2, #1 - mov r4, #0 - movne r0, #1 - moveq r0, r4 - ldrsh r1, [r1, #4] - tst r2, #2 - and r5, r0, #0xff - movne r0, #1 - moveq r0, #0 - ldr r6, [r7, #0xb4] - and r0, r0, #0xff - cmp r1, #0xa7 - bgt _0231E2D0 - bge _0231E7DC - cmp r1, #0x89 - addls pc, pc, r1, lsl #2 - b _0231E8DC -_0231E0A8: ; jump table - b _0231E8DC ; case 0 - b _0231E2F0 ; case 1 - b _0231E2F0 ; case 2 - b _0231E2F0 ; case 3 - b _0231E2F0 ; case 4 - b _0231E2F0 ; case 5 - b _0231E2F0 ; case 6 - b _0231E2F0 ; case 7 - b _0231E2F0 ; case 8 - b _0231E2F0 ; case 9 - b _0231E2F0 ; case 10 - b _0231E8DC ; case 11 - b _0231E8DC ; case 12 - b _0231E8DC ; case 13 - b _0231E8B0 ; case 14 - b _0231E8B0 ; case 15 - b _0231E8DC ; case 16 - b _0231E8DC ; case 17 - b _0231E8DC ; case 18 - b _0231E8DC ; case 19 - b _0231E34C ; case 20 - b _0231E8DC ; case 21 - b _0231E8DC ; case 22 - b _0231E8DC ; case 23 - b _0231E8DC ; case 24 - b _0231E8DC ; case 25 - b _0231E8DC ; case 26 - b _0231E8DC ; case 27 - b _0231E8DC ; case 28 - b _0231E8DC ; case 29 - b _0231E8DC ; case 30 - b _0231E8DC ; case 31 - b _0231E8DC ; case 32 - b _0231E8DC ; case 33 - b _0231E2FC ; case 34 - b _0231E8DC ; case 35 - b _0231E8DC ; case 36 - b _0231E8DC ; case 37 - b _0231E8DC ; case 38 - b _0231E8DC ; case 39 - b _0231E8DC ; case 40 - b _0231E8DC ; case 41 - b _0231E8DC ; case 42 - b _0231E8DC ; case 43 - b _0231E8DC ; case 44 - b _0231E8DC ; case 45 - b _0231E8DC ; case 46 - b _0231E338 ; case 47 - b _0231E338 ; case 48 - b _0231E8DC ; case 49 - b _0231E8DC ; case 50 - b _0231E8DC ; case 51 - b _0231E8DC ; case 52 - b _0231E8DC ; case 53 - b _0231E8DC ; case 54 - b _0231E8DC ; case 55 - b _0231E8DC ; case 56 - b _0231E8DC ; case 57 - b _0231E8DC ; case 58 - b _0231E8DC ; case 59 - b _0231E8DC ; case 60 - b _0231E8DC ; case 61 - b _0231E8DC ; case 62 - b _0231E8DC ; case 63 - b _0231E8DC ; case 64 - b _0231E8DC ; case 65 - b _0231E8DC ; case 66 - b _0231E8DC ; case 67 - b _0231E8DC ; case 68 - b _0231E448 ; case 69 - b _0231E354 ; case 70 - b _0231E354 ; case 71 - b _0231E4D8 ; case 72 - b _0231E8DC ; case 73 - b _0231E5D0 ; case 74 - b _0231E730 ; case 75 - b _0231E52C ; case 76 - b _0231E4B4 ; case 77 - b _0231E6E4 ; case 78 - b _0231E6FC ; case 79 - b _0231E504 ; case 80 - b _0231E5A4 ; case 81 - b _0231E554 ; case 82 - b _0231E57C ; case 83 - b _0231E670 ; case 84 - b _0231E8DC ; case 85 - b _0231E600 ; case 86 - b _0231E76C ; case 87 - b _0231E6DC ; case 88 - b _0231E6C8 ; case 89 - b _0231E6B0 ; case 90 - b _0231E744 ; case 91 - b _0231E448 ; case 92 - b _0231E8DC ; case 93 - b _0231E804 ; case 94 - b _0231E8DC ; case 95 - b _0231E814 ; case 96 - b _0231E828 ; case 97 - b _0231E8DC ; case 98 - b _0231E3BC ; case 99 - b _0231E464 ; case 100 - b _0231E478 ; case 101 - b _0231E48C ; case 102 - b _0231E8DC ; case 103 - b _0231E8C0 ; case 104 - b _0231E8DC ; case 105 - b _0231E798 ; case 106 - b _0231E8B0 ; case 107 - b _0231E4A0 ; case 108 - b _0231E864 ; case 109 - b _0231E864 ; case 110 - b _0231E898 ; case 111 - b _0231E864 ; case 112 - b _0231E8DC ; case 113 - b _0231E8DC ; case 114 - b _0231E8DC ; case 115 - b _0231E3BC ; case 116 - b _0231E8B0 ; case 117 - b _0231E784 ; case 118 - b _0231E8DC ; case 119 - b _0231E8DC ; case 120 - b _0231E8DC ; case 121 - b _0231E8DC ; case 122 - b _0231E8DC ; case 123 - b _0231E8DC ; case 124 - b _0231E8DC ; case 125 - b _0231E8DC ; case 126 - b _0231E8DC ; case 127 - b _0231E8DC ; case 128 - b _0231E8DC ; case 129 - b _0231E8DC ; case 130 - b _0231E8DC ; case 131 - b _0231E8DC ; case 132 - b _0231E8DC ; case 133 - b _0231E8DC ; case 134 - b _0231E8DC ; case 135 - b _0231E8DC ; case 136 - b _0231E83C ; case 137 -_0231E2D0: - cmp r1, #0xa8 - bgt _0231E2E0 - beq _0231E8B0 - b _0231E8DC -_0231E2E0: - ldr r0, _0231E8E8 ; =0x0000014F - cmp r1, r0 - beq _0231E8A0 - b _0231E8DC -_0231E2F0: - cmp r5, #0 - movne r4, #0x46 - b _0231E8E0 -_0231E2FC: - cmp r5, #0 - beq _0231E330 - add r0, r6, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - movgt r0, #0x32 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231E330: - mov r4, #0 - b _0231E8E0 -_0231E338: - cmp r5, #0 - movne r0, #0x32 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - b _0231E8E0 -_0231E34C: - mov r4, #0x28 - b _0231E8E0 -_0231E354: - ldrsh r1, [r6, #0x12] - ldrsh r0, [r6, #0x16] - ldr r2, _0231E8EC ; =0x000003E7 - add r3, r1, r0 - cmp r3, r2 - ldrsh r1, [r6, #0x10] - movle r2, r3 - cmp r1, r2 - bge _0231E8E0 - ldr r0, _0231E8EC ; =0x000003E7 - cmp r3, r0 - movgt r3, r0 - mov r0, r3, asr #1 - add r0, r3, r0, lsr #30 - cmp r1, r0, asr #2 - bgt _0231E8E0 - cmp r5, #0 - bne _0231E3B4 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x64 - moveq r4, #0x32 - b _0231E8E0 -_0231E3B4: - mov r4, #0x32 - b _0231E8E0 -_0231E3BC: - cmp r1, #0x74 - mov r1, #1 - bne _0231E3D8 - ldrsh r0, [r6, #4] - cmp r0, #0x124 - cmpne r0, #0x37c - movne r1, #0 -_0231E3D8: - cmp r1, #0 - beq _0231E8E0 - mov r4, #0 - add r7, r6, #0x124 - mov r8, r4 - mov r5, r4 - mov r6, #1 -_0231E3F4: - ldrb r0, [r7, r8, lsl #3] - add sb, r7, r8, lsl #3 - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _0231E430 - ldrb r0, [sb, #6] - cmp r0, #0 - mov r0, sb - addeq r4, r4, #0x1e - bl GetMaxPpWrapper - ldrb r1, [sb, #6] - cmp r1, r0 - addne r4, r4, #6 -_0231E430: - add r8, r8, #1 - cmp r8, #4 - blt _0231E3F4 - cmp r4, #0x63 - movge r4, #0x63 - b _0231E8E0 -_0231E448: - mov r0, r7 - mov r1, #1 - bl ov29_02300634 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #0 - b _0231E8E0 -_0231E464: - ldrb r0, [r6, #0x1a] - cmp r0, #0xfa - movhs r4, #0 - movlo r4, #0x64 - b _0231E8E0 -_0231E478: - ldrb r0, [r6, #0x1b] - cmp r0, #0xfa - movhs r4, #0 - movlo r4, #0x64 - b _0231E8E0 -_0231E48C: - ldrb r0, [r6, #0x1c] - cmp r0, #0xfa - movhs r4, #0 - movlo r4, #0x64 - b _0231E8E0 -_0231E4A0: - ldrb r0, [r6, #0x1d] - cmp r0, #0xfa - movhs r4, #0 - movlo r4, #0x64 - b _0231E8E0 -_0231E4B4: - cmp r5, #0 - movne r4, #0 - bne _0231E8E0 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0xa - moveq r4, #0x64 - b _0231E8E0 -_0231E4D8: - mov r0, r7 - bl CanSeeInvisibleMonsters - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E504: - ldr r0, [r6, #0x110] - cmp r0, #3 - movgt r0, #0 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E52C: - ldrb r0, [r6, #0xf1] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E554: - ldrb r0, [r6, #0xbf] - cmp r0, #4 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #0x1e - b _0231E8E0 -_0231E57C: - ldrb r0, [r6, #0xd0] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #0xf - b _0231E8E0 -_0231E5A4: - ldrb r0, [r6, #0xbf] - cmp r0, #2 - cmpne r0, #3 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x64 - moveq r4, #0x32 - b _0231E8E0 -_0231E5D0: - mov r0, r7 - mov r1, #1 - bl IsBlinded - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E600: - cmp r0, #0 - bne _0231E620 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x28 - moveq r4, #5 - b _0231E8E0 -_0231E620: - ldrsh r2, [r6, #0x12] - ldrsh r1, [r6, #0x16] - ldr r0, _0231E8EC ; =0x000003E7 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - ldrsh r0, [r6, #0x10] - cmp r0, r1 - cmplt r0, #0x14 - bge _0231E8E0 - cmp r5, #0 - bne _0231E668 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x64 - moveq r4, #0x32 - b _0231E8E0 -_0231E668: - mov r4, #0x32 - b _0231E8E0 -_0231E670: - ldrb r0, [r6, #0xbd] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, #5 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E6B0: - ldrb r0, [r6, #0xbd] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #5 - b _0231E8E0 -_0231E6C8: - ldrb r0, [r6, #0xa] - cmp r0, #0x63 - movlo r4, #0x50 - movhs r4, #0 - b _0231E8E0 -_0231E6DC: - mov r4, #0x50 - b _0231E8E0 -_0231E6E4: - ldrb r0, [r6, #0xbf] - cmp r0, #1 - moveq r0, #0x32 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - b _0231E8E0 -_0231E6FC: - add r0, r6, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - movgt r0, #0x32 - ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - b _0231E8E0 -_0231E730: - ldrb r0, [r6, #0xa] - cmp r0, #1 - movhi r4, #0x50 - movls r4, #0 - b _0231E8E0 -_0231E744: - ldrb r0, [r6, #0xc4] - cmp r0, #6 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #5 - b _0231E8E0 -_0231E76C: - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #0x1e - b _0231E8E0 -_0231E784: - ldrb r0, [r6, #6] - cmp r0, #0 - movne r4, #0 - moveq r4, #0x64 - b _0231E8E0 -_0231E798: - ldrsh r0, [r6, #2] - bl GetMobilityType - cmp r0, #0 - cmpne r0, #4 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - ldrneb r0, [r6, #0xef] - cmpne r0, #4 - moveq r4, #0 - beq _0231E8E0 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0xa - moveq r4, #0x64 - b _0231E8E0 -_0231E7DC: - ldrb r0, [r6, #0xd5] - cmp r0, #9 - moveq r4, #0 - beq _0231E8E0 - mov r0, r7 - bl ov29_0231E8F0 - cmp r0, #0 - movne r4, #0x50 - moveq r4, #0 - b _0231E8E0 -_0231E804: - cmp r5, #0 - movne r4, #0x46 - moveq r4, #0 - b _0231E8E0 -_0231E814: - ldrsh r0, [r6, #0x26] - cmp r0, #0x14 - movge r4, #0 - movlt r4, #0x50 - b _0231E8E0 -_0231E828: - ldrb r0, [r6, #0xef] - cmp r0, #1 - movne r4, #0x50 - moveq r4, #0 - b _0231E8E0 -_0231E83C: - ldrsh r0, [r6, #4] - bl FemaleToMaleForm - ldrsh r0, [r6, #4] - cmp r0, #0x1e0 - cmpne r0, #0xb9 - bne _0231E8E0 - cmp r5, #0 - movne r4, #0x46 - moveq r4, #0x64 - b _0231E8E0 -_0231E864: - add r0, r6, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0xa - movlt r0, #0x64 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r4, #0 - b _0231E8E0 -_0231E898: - mov r4, #0x1e - b _0231E8E0 -_0231E8A0: - cmp r5, #0 - movne r4, #0 - moveq r4, #0x14 - b _0231E8E0 -_0231E8B0: - cmp r5, #0 - movne r4, #0x50 - moveq r4, #0 - b _0231E8E0 -_0231E8C0: - ldrb r0, [r6, #0xf1] - cmp r0, #4 - beq _0231E8E0 - cmp r5, #0 - movne r4, #0x50 - moveq r4, #0 - b _0231E8E0 -_0231E8DC: - mov r4, #0 -_0231E8E0: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231E8E8: .word 0x0000014F -_0231E8EC: .word 0x000003E7 - arm_func_end ov29_0231E05C - - arm_func_start ov29_0231E8F0 -ov29_0231E8F0: ; 0x0231E8F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r5, #0 - mov sl, #1 - mov r6, r0 - mov sb, r5 - mov r8, r5 - mov r7, sl - ldr r4, _0231E98C ; =0x0235171C - b _0231E97C -_0231E914: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh ip, [r6, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [r6, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _0231E978 - ldr r0, [r1] - cmp r0, #0 - moveq r0, sl - movne r0, sb - cmp r0, #1 - beq _0231E978 - mov r0, r6 - mov r2, r8 - mov r3, r7 - bl ov29_0230175C - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0231E978: - add r5, r5, #1 -_0231E97C: - cmp r5, #8 - blt _0231E914 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0231E98C: .word 0x0235171C - arm_func_end ov29_0231E8F0 - - arm_func_start ov29_0231E990 -ov29_0231E990: ; 0x0231E990 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #0x45 - blt _0231E9A8 - cmp r4, #0x8a - ble _0231E9B0 -_0231E9A8: - mov r0, #0 - ldmia sp!, {r4, pc} -_0231E9B0: - bl IsItemValidVeneer - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _0231E9EC ; =0x022C4B74 - b _0231E9D8 -_0231E9C8: - cmp r4, r1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add r0, r0, #2 -_0231E9D8: - ldrsh r1, [r0] - cmp r1, #0 - bne _0231E9C8 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_0231E9EC: .word 0x022C4B74 - arm_func_end ov29_0231E990 - - arm_func_start GetMaxPpWrapper -GetMaxPpWrapper: ; 0x0231E9F0 - stmdb sp!, {r3, lr} - bl GetMaxPp - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - arm_func_end GetMaxPpWrapper - - arm_func_start ov29_0231EA04 -ov29_0231EA04: ; 0x0231EA04 - ldr ip, _0231EA14 ; =InitMove - mov r0, r1 - mov r1, r2 - bx ip - .align 2, 0 -_0231EA14: .word InitMove - arm_func_end ov29_0231EA04 - - arm_func_start MoveIsNotPhysical -MoveIsNotPhysical: ; 0x0231EA18 - stmdb sp!, {r3, lr} - bl GetMoveCategory - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - arm_func_end MoveIsNotPhysical - - arm_func_start ov29_0231EA30 -ov29_0231EA30: ; 0x0231EA30 - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - bx lr - arm_func_end ov29_0231EA30 - - arm_func_start ov29_0231EA40 -ov29_0231EA40: ; 0x0231EA40 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl ov29_023361D4 - cmp r0, #0 - bne _0231EA80 - ldr r0, _0231EDC8 ; =0x02353538 - ldr r0, [r0] - add r1, r0, #0x4000 - ldrsh r0, [r1, #0xd4] - sub r2, r0, #0x1a - mov r2, r2, lsl #0x10 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - cmp r2, #1 - bhi _0231EA90 -_0231EA80: - ldr r1, _0231EDCC ; =0x00000E01 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231EA90: - ldrb r2, [r1, #0xc4] - cmp r2, #0 - beq _0231EAAC - ldr r1, _0231EDD0 ; =0x00000DFF - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231EAAC: - ldrb r1, [r1, #0xc7] - cmp r1, #0 - beq _0231EAC8 - mov r0, sl - mov r1, #0xe00 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231EAC8: - bl ov29_022E0378 - cmp r0, #0 - movne r7, #3 - moveq r7, #2 - mov r6, #0 - mov sb, #1 -_0231EAE0: - ldr fp, _0231EDC8 ; =0x02353538 - mov r5, #1 - mov r4, #0 -_0231EAEC: - mov r0, sb - mov r1, r5 - mov r8, #0 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #0x400 - strh r1, [r0] - strb r4, [r0, #7] - ldrh r1, [r0] - tst r1, #0x10 - bne _0231EBCC - tst r1, #0x100 - bne _0231EBCC - ldrh r1, [r0, #2] - orr r1, r1, #3 - strh r1, [r0, #2] - ldrh r1, [r0] - bic r1, r1, #8 - strh r1, [r0] - ldrh r1, [r0] - tst r1, #0x40 - ldrh r1, [r0] - movne r6, #1 - and r2, r1, #3 - cmp r2, #2 - cmpne r2, #3 - beq _0231EBCC - cmp sb, #1 - cmpne r5, #1 - cmpne sb, #0x36 - cmpne r5, #0x1e - bne _0231EB84 - ldr r1, [r0, #0x10] - cmp r1, #0 - ldreq r1, [fp] - ldreqb r1, [r1, #0x78f] - cmpeq r1, #0 - moveq r8, #1 -_0231EB84: - cmp r8, #0 - beq _0231EBA8 - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, r7 - strh r1, [r0] - b _0231EBCC -_0231EBA8: - cmp r2, #1 - beq _0231EBCC - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - orr r1, r1, #0x400 - strh r1, [r0] -_0231EBCC: - add r5, r5, #1 - cmp r5, #0x1f - blt _0231EAEC - add sb, sb, #1 - cmp sb, #0x37 - blt _0231EAE0 - ldr r0, _0231EDC8 ; =0x02353538 - mov r2, #1 - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe4] - ldrsh r1, [r1, #0xe6] - bl StairsAlwaysReachable - cmp r0, #0 - beq _0231EC64 - mov r5, #0 - mov r4, r5 -_0231EC10: - mov r8, r4 -_0231EC14: - mov r0, r5 - mov r1, r8 - bl GetTileSafe - ldrh r1, [r0] - tst r1, #0x100 - bne _0231EC4C - tst r1, #0x400 - beq _0231EC4C - tst r1, #0x8000 - bicne r1, r1, #3 - strneh r1, [r0] - ldrneh r1, [r0] - orrne r1, r1, r7 - strneh r1, [r0] -_0231EC4C: - add r8, r8, #1 - cmp r8, #0x20 - blt _0231EC14 - add r5, r5, #1 - cmp r5, #0x38 - blt _0231EC10 -_0231EC64: - cmp r6, #0 - ldrne r0, _0231EDC8 ; =0x02353538 - mov r5, #0 - ldrne r0, [r0] - movne r1, #0 - addne r0, r0, #0x4000 - strneb r1, [r0, #0xc9] - mov r4, r5 -_0231EC84: - mov r7, r4 -_0231EC88: - cmp r6, #0 - beq _0231ECA8 - mov r0, r5 - mov r1, r7 - bl GetTileSafe - ldrh r1, [r0] - orr r1, r1, #0x40 - strh r1, [r0] -_0231ECA8: - mov r0, r5 - mov r1, r7 - bl ov29_02336A84 - add r7, r7, #1 - cmp r7, #0x20 - blt _0231EC88 - add r5, r5, #1 - cmp r5, #0x38 - blt _0231EC84 - ldr r4, _0231EDC8 ; =0x02353538 - mov r5, #0 -_0231ECD4: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__0231EDD8 - cmp r0, #0 - beq _0231ED08 - ldrsh r0, [r6, #4] - ldrsh r1, [r6, #6] - bl GetTile - ldrb r0, [r0, #7] - strb r0, [r6, #0x25] -_0231ED08: - add r5, r5, #1 - cmp r5, #0x14 - blt _0231ECD4 - bl ov29_0233FB1C - bl ov29_0233785C - bl ov29_0233665C - bl ov29_02304B64 - bl ov29_02339CE8 - bl ov29_02336F4C - ldr r1, _0231EDD4 ; =0x00000DFE - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x28 - mov r1, #0x2b - bl ov29_022EA370 - mov r0, sl - mov r1, #1 - bl ov29_02305814 - ldr r4, _0231EDC8 ; =0x02353538 - mov r6, #0 -_0231ED58: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r5, [r0, #0xb78] - mov r0, r5 - bl EntityIsValid__0231EDD8 - cmp r0, #0 - beq _0231ED98 - mov r0, r5 - bl ov29_022F9C74 - mov r0, r5 - bl EntityIsValid__0231EDD8 - cmp r0, #0 - beq _0231ED98 - mov r0, r5 - bl ov29_02321104 -_0231ED98: - add r6, r6, #1 - cmp r6, #0x14 - blt _0231ED58 - ldr r0, _0231EDC8 ; =0x02353538 - mov r3, #1 - ldr r1, [r0] - mov r0, #0x14 - add r2, r1, #0x4000 - mov r1, #0x2b - strb r3, [r2, #0xc4] - bl ov29_022EA370 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231EDC8: .word 0x02353538 -_0231EDCC: .word 0x00000E01 -_0231EDD0: .word 0x00000DFF -_0231EDD4: .word 0x00000DFE - arm_func_end ov29_0231EA40 - - arm_func_start EntityIsValid__0231EDD8 -EntityIsValid__0231EDD8: ; 0x0231EDD8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0231EDD8 - - arm_func_start ov29_0231EDFC -ov29_0231EDFC: ; 0x0231EDFC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xf4 - mov r5, r0 - mov r4, r1 - cmp r5, r4 - beq _0231EE54 - cmp r5, #0 - moveq r0, #0 - beq _0231EE34 - ldr r0, [r5] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_0231EE34: - cmp r0, #0 - beq _0231EE54 - mov r0, r5 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0231EE60 -_0231EE54: - mov r0, r4 - mov r1, #0xe - bl AbilityIsActive2 -_0231EE60: - cmp r0, #0 - beq _0231EE8C - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231F544 ; =0x00000E45 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231F53C -_0231EE8C: - cmp r5, r4 - bne _0231EEB8 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231F548 ; =0x00000E46 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231F53C -_0231EEB8: - ldrh r0, [r4, #4] - mov sl, #0 - mov r8, sl - strh r0, [sp, #0x40] - ldrh r0, [r4, #6] - strh r0, [sp, #0x42] - b _0231F098 -_0231EED4: - mov sl, #0 - ldr fp, _0231F54C ; =0x0235171C - mov r6, sl -_0231EEE0: - ldr r0, _0231F550 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__0231F570 - cmp r0, #0 - cmpne r5, sb - cmpne r4, sb - beq _0231F080 - mov r0, r5 - mov r1, sb - bl ov29_022E274C - cmp r0, #0 - beq _0231F080 - cmp r8, #0 - mov r0, r5 - mov r2, #0 - mov r1, sb - mov r3, #1 - bne _0231EF48 - bl ov29_0230175C - cmp r0, #1 - bne _0231F080 - b _0231EF54 -_0231EF48: - bl ov29_0230175C - cmp r0, #0 - bne _0231F080 -_0231EF54: - cmp r8, #0 - mov r7, #0 - bne _0231EFF8 - b _0231EFBC -_0231EF64: - mov r0, r7, lsl #2 - ldrsh r1, [fp, r0] - ldrsh r3, [sb, #4] - add r0, fp, r7, lsl #2 - ldrsh r2, [r0, #2] - add r0, r3, r1 - strh r0, [sp, #0x34] - ldrsh r3, [sb, #6] - mov r0, r4 - add r1, sp, #0x34 - add r2, r3, r2 - strh r2, [sp, #0x36] - bl ov29_022FF764 - cmp r0, #0 - bne _0231EFB8 - ldrsh r0, [sp, #0x34] - ldrsh r1, [sp, #0x36] - bl GetTile - ldrh r0, [r0] - tst r0, #0x800 - beq _0231EFC4 -_0231EFB8: - add r7, r7, #1 -_0231EFBC: - cmp r7, #8 - blt _0231EF64 -_0231EFC4: - cmp r7, #8 - beq _0231F080 - cmp sl, #0x28 - bge _0231F080 - ldrh r1, [sb, #4] - mov r3, sl, lsl #2 - add r0, sp, #0x54 - add r2, r0, r3 - strh r1, [r0, r3] - ldrh r0, [sb, #6] - add sl, sl, #1 - strh r0, [r2, #2] - b _0231F080 -_0231EFF8: - mov r0, r7, lsl #2 - ldrsh r1, [fp, r0] - ldrsh r3, [sb, #4] - add r0, fp, r7, lsl #2 - ldrsh r2, [r0, #2] - add r0, r3, r1 - strh r0, [sp, #0x30] - ldrsh r3, [sb, #6] - mov r0, r4 - add r1, sp, #0x30 - add r2, r3, r2 - strh r2, [sp, #0x32] - bl ov29_022FF764 - cmp r0, #0 - bne _0231F074 - ldrsh r0, [sp, #0x30] - ldrsh r1, [sp, #0x32] - bl GetTile - ldrh r0, [r0] - tst r0, #0x800 - bne _0231F074 - cmp sl, #0x28 - bge _0231F074 - ldrh r3, [sp, #0x30] - ldrh r2, [sp, #0x32] - mov r0, sl, lsl #2 - add r1, sp, #0x54 - add ip, r1, r0 - strh r3, [r1, r0] - add sl, sl, #1 - strh r2, [ip, #2] -_0231F074: - add r7, r7, #1 - cmp r7, #8 - blt _0231EFF8 -_0231F080: - add r6, r6, #1 - cmp r6, #0x14 - blt _0231EEE0 - cmp sl, #0 - bne _0231F0A0 - add r8, r8, #1 -_0231F098: - cmp r8, #2 - blt _0231EED4 -_0231F0A0: - cmp sl, #0 - beq _0231F0D0 - mov r0, sl - bl DungeonRandInt - add r1, sp, #0x54 - mov r2, r0, lsl #2 - add r0, r1, r0, lsl #2 - ldrh r1, [r1, r2] - ldrh r0, [r0, #2] - strh r1, [sp, #0x40] - strh r0, [sp, #0x42] - b _0231F178 -_0231F0D0: - mov r0, r5 - bl HasDropeyeStatus - mov r2, r0 - add r1, sp, #0x44 - add r0, r5, #4 - bl ov29_022E9298 - mov r7, #0 - add r6, sp, #0x2c - b _0231F154 -_0231F0F4: - ldr r0, [sp, #0x44] - ldr r1, [sp, #0x4c] - bl DungeonRandRange - strh r0, [sp, #0x2c] - ldr r0, [sp, #0x48] - ldr r1, [sp, #0x50] - bl DungeonRandRange - strh r0, [sp, #0x2e] - mov r0, r4 - mov r1, r6 - bl ov29_022FF764 - cmp r0, #0 - bne _0231F150 - ldrsh r0, [sp, #0x2c] - ldrsh r1, [sp, #0x2e] - bl GetTile - ldrh r0, [r0] - tst r0, #0x800 - ldreqh r1, [sp, #0x2c] - ldreqh r0, [sp, #0x2e] - streqh r1, [sp, #0x40] - streqh r0, [sp, #0x42] - beq _0231F15C -_0231F150: - add r7, r7, #1 -_0231F154: - cmp r7, #0x64 - blt _0231F0F4 -_0231F15C: - cmp r7, #0x64 - bne _0231F178 - ldr r2, _0231F554 ; =0x00000E48 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0231F53C -_0231F178: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231F558 ; =0x00000E47 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0231F1B0 - ldr r0, _0231F55C ; =0x00000212 - bl ov29_022EACCC -_0231F1B0: - ldrsh r3, [sp, #0x42] - ldrsh r2, [r4, #6] - ldrsh r1, [sp, #0x40] - ldrsh r0, [r4, #4] - sub r2, r3, r2 - ldr r6, [r4, #0xb4] - sub r0, r1, r0 - cmp r0, r2 - movle r0, r2 - mov sb, r0, lsl #4 - cmp sb, #0x50 - movgt sb, #0x50 - cmp sb, #0xa - add r0, sp, #0x40 - add r1, r4, #4 - ldrb r8, [r6, #0x4c] - mov r7, #0 - movlt sb, #0xa - bl GetDirectionTowardsPosition - mov r6, r0 - ldr r0, _0231F54C ; =0x0235171C - mov r1, r6, lsl #2 - ldrsh r0, [r0, r1] - mov r1, #3 - mov r0, r0, lsl #8 - bl DivideInt - ldrsh sl, [sp, #0x40] - mov r1, #0x18 - ldr r2, _0231F560 ; =0x0235171E - mov r3, r6, lsl #2 - smulbb r1, sl, r1 - add r1, r1, #0xc - add r6, r0, r1, lsl #8 - ldrsh r2, [r2, r3] - mov r1, #3 - mov r0, r2, lsl #8 - bl DivideInt - ldrsh r2, [sp, #0x42] - mov r1, #0x18 - ldr sl, [r4, #0xc] - smulbb r1, r2, r1 - add r1, r1, #0x10 - add fp, r0, r1, lsl #8 - ldr r0, [r4, #0x10] - mov r1, sb - sub r0, fp, r0 - bl DivideInt - str sl, [sp, #0x38] - ldr r1, [r4, #0x10] - str r0, [sp, #0x18] - sub r0, r6, sl - str r1, [sp, #0x3c] - mov r1, sb - mov sl, #0 - bl DivideInt - str r0, [sp, #0x1c] - b _0231F31C -_0231F294: - ldr r2, [sp, #0x38] - ldr r0, [sp, #0x1c] - ldr r1, [sp, #0x3c] - add r0, r2, r0 - str r0, [sp, #0x38] - ldr r0, [sp, #0x18] - add r0, r1, r0 - str r0, [sp, #0x3c] - mov r0, r4 - add r1, sp, #0x38 - bl ov29_022E1A40 - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0231F308 - mov r0, r7 - bl sub_020018D0 - mov r0, r0, lsl #5 - str r0, [r4, #0x1c] - mov r0, #0x3b - bl AdvanceFrame - tst sl, #3 - bne _0231F308 - and r8, r8, #7 - mov r0, r4 - mov r1, #6 - mov r2, r8 - bl ov29_023049A8 - add r8, r8, #1 -_0231F308: - mov r0, #0x800 - mov r1, sb - bl DivideInt - add r7, r7, r0 - add sl, sl, #1 -_0231F31C: - cmp sl, sb - blt _0231F294 - add r1, sp, #0x38 - mov r0, r4 - str r6, [sp, #0x38] - str fp, [sp, #0x3c] - mov r2, #0 - str r2, [r4, #0x1c] - bl ov29_022E1A40 - mov r0, #0x3b - bl AdvanceFrame - ldr r0, [r4, #0xb4] - and r1, r8, #7 - strb r1, [r0, #0x4c] - ldrsh r0, [sp, #0x40] - ldrsh r1, [sp, #0x42] - bl GetTile - ldr r7, [r0, #0xc] - mov r0, r7 - bl EntityIsValid__0231F570 - cmp r0, #0 - bne _0231F394 - ldrsh r1, [sp, #0x40] - ldrsh r2, [sp, #0x42] - mov r0, r4 - mov r3, #1 - bl ov29_022F85F0 - mov r0, r4 - bl ov29_02321238 - b _0231F53C -_0231F394: - mov r8, #0 - ldr r6, _0231F54C ; =0x0235171C - add sb, sp, #0x28 - b _0231F40C -_0231F3A4: - mov r1, r8, lsl #2 - add r0, r6, r8, lsl #2 - ldrsh sl, [sp, #0x40] - ldrsh r3, [r6, r1] - ldrsh r2, [sp, #0x42] - ldrsh r1, [r0, #2] - add r3, sl, r3 - mov r0, r4 - add r2, r2, r1 - mov r1, sb - strh r3, [sp, #0x28] - strh r2, [sp, #0x2a] - bl ov29_022FF764 - cmp r0, #0 - bne _0231F408 - ldrsh r0, [sp, #0x28] - ldrsh r1, [sp, #0x2a] - bl GetTile - ldrh r0, [r0] - tst r0, #0x800 - ldreqh r1, [sp, #0x28] - ldreqh r0, [sp, #0x2a] - streqh r1, [sp, #0x40] - streqh r0, [sp, #0x42] - beq _0231F414 -_0231F408: - add r8, r8, #1 -_0231F40C: - cmp r8, #8 - blt _0231F3A4 -_0231F414: - cmp r8, #8 - bne _0231F434 - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryWarp - b _0231F454 -_0231F434: - add r1, sp, #0x40 - mov r0, r4 - bl ov29_0232033C - ldrsh r1, [sp, #0x40] - ldrsh r2, [sp, #0x42] - mov r0, r4 - mov r3, #1 - bl ov29_022F85F0 -_0231F454: - ldr r0, [r7] - cmp r0, #1 - bne _0231F4D4 - ldr r1, _0231F564 ; =0x00000163 - add r0, sp, #0x20 - bl InitMove - add r1, sp, #0x20 - mov r0, r7 - bl ov29_02324854 - cmp r0, #0 - bne _0231F4B4 - mov r3, #0 - str r3, [sp] - ldr r0, _0231F568 ; =0x022C4458 - ldr r1, _0231F56C ; =0x00000259 - str r3, [sp, #4] - str r1, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r5 - mov r1, r7 - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory -_0231F4B4: - mov r0, r7 - bl EntityIsValid__0231F570 - cmp r0, #0 - beq _0231F4D4 - ldr r1, [r7, #0xb4] - mov r0, r7 - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 -_0231F4D4: - mov r3, #0 - str r3, [sp] - ldr r0, _0231F568 ; =0x022C4458 - str r3, [sp, #4] - mov r1, #0x258 - str r1, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldrsh r2, [r0] - mov r0, r5 - mov r1, r4 - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory - mov r0, r4 - bl EntityIsValid__0231F570 - cmp r0, #0 - beq _0231F528 - ldr r1, [r4, #0xb4] - mov r0, r4 - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 -_0231F528: - mov r0, #0x1e - mov r1, #0x3b - bl ov29_022EA370 - mov r0, r4 - bl ov29_02321238 -_0231F53C: - add sp, sp, #0xf4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231F544: .word 0x00000E45 -_0231F548: .word 0x00000E46 -_0231F54C: .word 0x0235171C -_0231F550: .word 0x02353538 -_0231F554: .word 0x00000E48 -_0231F558: .word 0x00000E47 -_0231F55C: .word 0x00000212 -_0231F560: .word 0x0235171E -_0231F564: .word 0x00000163 -_0231F568: .word 0x022C4458 -_0231F56C: .word 0x00000259 - arm_func_end ov29_0231EDFC - - arm_func_start EntityIsValid__0231F570 -EntityIsValid__0231F570: ; 0x0231F570 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0231F570 - - arm_func_start ov29_0231F594 -ov29_0231F594: ; 0x0231F594 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _0231F6D4 ; =0x02353538 - mov r8, r0 - ldr r0, [r1] - mov r6, #0 - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_0234413C - cmp r0, #0 - bne _0231F5CC - ldr r1, _0231F6D8 ; =0x00000C08 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231F5CC: - bl ov29_02337E94 - cmp r0, #0 - beq _0231F5E8 - ldr r1, _0231F6DC ; =0x00000C09 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0231F5E8: - mov r7, r6 - mov sb, #1 - mov r4, r6 -_0231F5F4: - mov r5, r4 -_0231F5F8: - mov r0, r5 - mov r1, r7 - bl GetTileSafe - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #2 - bne _0231F63C - ldrh r2, [r0] - mov r1, r7 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r5 - bl ov29_02336694 - mov r6, sb -_0231F63C: - add r5, r5, #1 - cmp r5, #0x38 - blt _0231F5F8 - add r7, r7, #1 - cmp r7, #0x20 - blt _0231F5F4 - mov r5, #0 - mov r4, r5 -_0231F65C: - mov r7, r4 -_0231F660: - mov r0, r7 - mov r1, r5 - bl ov29_02336A84 - add r7, r7, #1 - cmp r7, #0x38 - blt _0231F660 - add r5, r5, #1 - cmp r5, #0x20 - blt _0231F65C - cmp r6, #0 - beq _0231F6A8 - mov r0, r8 - mov r1, #0x210 - bl ov29_022E56A0 - ldr r1, _0231F6E0 ; =0x00000C07 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser - b _0231F6B4 -_0231F6A8: - ldr r1, _0231F6D8 ; =0x00000C08 - mov r0, r8 - bl LogMessageByIdWithPopupCheckUser -_0231F6B4: - ldr r0, _0231F6D4 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x78f] - bl ov29_02304B64 - bl ov29_02339CE8 - bl ov29_02336F4C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0231F6D4: .word 0x02353538 -_0231F6D8: .word 0x00000C08 -_0231F6DC: .word 0x00000C09 -_0231F6E0: .word 0x00000C07 - arm_func_end ov29_0231F594 - - arm_func_start ov29_0231F6E4 -ov29_0231F6E4: ; 0x0231F6E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x38 - ldr r1, _0231FBE4 ; =0x02353538 - mov sl, r0 - ldr r0, [r1] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_0234410C - cmp r0, #0 - bne _0231F71C - mov r0, sl - mov r1, #0xbd0 - bl LogMessageByIdWithPopupCheckUser - b _0231FBDC -_0231F71C: - ldr r0, _0231FBE8 ; =0x000013BC - mov r2, #0 - mov r1, #0xf - str r2, [sp, #0xc] - bl MemAlloc - mov r4, r0 - mov r6, #0 - add r0, r4, #0x1f8 - mov r5, r4 - mov r8, r6 - add fp, r0, #0x1000 - b _0231F86C -_0231F74C: - add r0, r1, r8, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xbc8] - mov r0, r7 - bl EntityIsValid__0231FBFC - cmp r0, #0 - beq _0231F868 - cmp r6, #0x19 - bge _0231F884 - ldrsh sb, [r7, #4] - ldrsh r0, [sl, #4] - sub r0, sb, r0 - bl Abs - cmp r0, #2 - bgt _0231F7A0 - ldrsh r1, [r7, #6] - ldrsh r0, [sl, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #2 - ble _0231F868 -_0231F7A0: - mov r0, sb - ldrsh r1, [r7, #6] - bl GetTile - ldrh r0, [r0] - tst r0, #3 - beq _0231F868 - mov r0, #3 - str r0, [r5] - mov r0, #6 - mul sb, r6, r0 - add r0, fp, sb - str r0, [r5, #0xb4] - ldrh r1, [r7, #4] - mov r0, r5 - strh r1, [r5, #4] - ldrh r1, [r7, #6] - strh r1, [r5, #6] - ldrsh r2, [r7, #4] - mov r1, #0x18 - ldrsh r3, [r7, #6] - smulbb r1, r2, r1 - mov r2, #0x18 - smulbb r2, r3, r2 - add r1, r1, #4 - add r2, r2, #4 - mov r1, r1, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r1, #0 - strh r1, [r5, #0x26] - mov r1, #1 - strb r1, [r5, #0x20] - mov r1, #0 - strb r1, [r5, #0x22] - str r1, [r5, #0x1c] - ldr r1, _0231FBE4 ; =0x02353538 - add r0, r4, sb - ldr r2, [r1] - mov r1, #6 - mla r1, r8, r1, r2 - add r1, r1, #0x3e00 - ldrh r2, [r1, #0x40] - add r0, r0, #0x1100 - add r5, r5, #0xb8 - strh r2, [r0, #0xf8] - ldrh r2, [r1, #0x42] - add r6, r6, #1 - strh r2, [r0, #0xfa] - ldrh r1, [r1, #0x44] - strh r1, [r0, #0xfc] -_0231F868: - add r8, r8, #1 -_0231F86C: - ldr r0, _0231FBE4 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0x3f00 - ldrsh r0, [r0, #0xc0] - cmp r8, r0 - blt _0231F74C -_0231F884: - cmp r6, #0 - bne _0231F89C - ldr r1, _0231FBEC ; =0x00000BCF - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _0231FBD4 -_0231F89C: - mov r1, #0 - mov sb, r1 - add r0, sp, #0x18 -_0231F8A8: - strb sb, [r0, r1] - add r1, r1, #1 - cmp r1, #0x1e - blt _0231F8A8 - b _0231F9A8 -_0231F8BC: - ldrsh r1, [sl, #4] - ldrsh r0, [sl, #6] - mov r7, #0 - ldr r5, _0231FBF0 ; =0x02351844 - mov r8, r7 - strh r1, [sp, #0x14] - strh r0, [sp, #0x16] - add fp, sp, #0x18 -_0231F8DC: - cmp r8, #0x1e - bge _0231F978 - mov r2, r8, lsl #2 - ldrsh r0, [r5, r2] - cmp r0, #0x63 - beq _0231F978 - ldrb r1, [fp, r8] - cmp r1, #0 - bne _0231F970 - add r1, r5, r2 - ldrsh r3, [sl, #4] - ldrsh r2, [sl, #6] - ldrsh r1, [r1, #2] - add r0, r3, r0 - strh r0, [sp, #0x14] - add r0, r2, r1 - strh r0, [sp, #0x16] - ldrsh r0, [sp, #0x14] - ldrsh r1, [sp, #0x16] - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _0231F970 - tst r2, #0x200 - ldreq r0, [r0, #0x10] - cmpeq r0, #0 - bne _0231F970 - ldrh r2, [sp, #0x14] - add r0, r4, sb, lsl #2 - add r0, r0, #0x1200 - ldrh r1, [sp, #0x16] - strh r2, [r0, #0x8e] - mov r7, #1 - strh r1, [r0, #0x90] - strb r7, [fp, r8] - b _0231F978 -_0231F970: - add r8, r8, #1 - b _0231F8DC -_0231F978: - cmp r7, #0 - bne _0231F9A4 - mov r0, #0xb8 - mul r2, sb, r0 - add r1, r4, sb, lsl #2 - mov r3, #0 - str r3, [r4, r2] - sub r2, r0, #0xb9 - add r0, r1, #0x1200 - strh r2, [r0, #0x8e] - strh r2, [r0, #0x90] -_0231F9A4: - add sb, sb, #1 -_0231F9A8: - cmp sb, r6 - blt _0231F8BC - mov fp, #0x18 - mov sb, #0 - mov r5, fp - mov r7, #0xb8 - b _0231FA58 -_0231F9C4: - mla r0, sb, r7, r4 - bl EntityIsValid__0231FBFC - cmp r0, #0 - beq _0231FA54 - mov r0, #0xb8 - mla r8, sb, r0, r4 - mov r1, #1 - add r0, r8, #4 - bl ov29_023456BC - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - bl ov29_023391EC - add r0, r4, sb, lsl #2 - add r0, r0, #0x1200 - ldrsh r2, [r0, #0x8e] - ldr r0, [r8, #0xc] - mov r1, #0x3c - smulbb r2, r2, fp - add r2, r2, #4 - rsb r0, r0, r2, lsl #8 - bl DivideInt - add r1, r4, sb, lsl #3 - add r1, r1, #0x1000 - str r0, [r1, #0x2f4] - add r0, r4, sb, lsl #2 - add r0, r0, #0x1200 - ldrsh r0, [r0, #0x90] - ldr r2, [r8, #0x10] - mov r1, #0x3c - smulbb r0, r0, r5 - add r0, r0, #4 - rsb r0, r2, r0, lsl #8 - bl DivideInt - add r1, r4, sb, lsl #3 - add r1, r1, #0x1000 - str r0, [r1, #0x2f8] -_0231FA54: - add sb, sb, #1 -_0231FA58: - cmp sb, r6 - blt _0231F9C4 - ldr r1, _0231FBF4 ; =0x00000222 - mov r0, sl - bl ov29_022E56A0 - ldr r0, _0231FBE4 ; =0x02353538 - mov r7, #0 - ldr r0, [r0] - mov r8, r7 - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x245] - mov r5, r7 - str r0, [sp, #8] -_0231FA8C: - and r0, r7, #0xff - mov sb, #0 - str r0, [sp, #0x10] - b _0231FB0C -_0231FA9C: - mov r0, #0xb8 - mul fp, sb, r0 - add r0, r4, fp - bl EntityIsValid__0231FBFC - cmp r0, #0 - beq _0231FB08 - mov r0, #0xb8 - mla r0, sb, r0, r4 - add r1, r4, sb, lsl #3 - add r2, r1, #0x1000 - ldr r1, [r2, #0x2f4] - ldr r2, [r2, #0x2f8] - str r0, [sp, #4] - bl ov29_022E1A90 - mov r0, r8 - bl sub_020018D0 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, [sp, #4] - ldr r3, [sp, #0x10] - str r1, [r0, #0x1c] - mov r1, #0 - str r1, [sp] - ldr r1, [sp, #8] - add r0, r4, fp - mov r2, #0 - bl ov29_023457C8 -_0231FB08: - add sb, sb, #1 -_0231FB0C: - cmp sb, r6 - blt _0231FA9C - mov r0, #0x13 - bl AdvanceFrame - tst r5, #3 - addeq r7, r7, #1 - add r5, r5, #1 - add r8, r8, #0x22 - cmp r5, #0x3c - and r7, r7, #7 - blt _0231FA8C - add r0, r4, #0x8e - mov fp, #1 - mov sb, #0 - add r8, r0, #0x1200 - mov r7, fp - mov r5, #0xb8 - b _0231FB9C -_0231FB54: - add r0, r4, sb, lsl #2 - add r0, r0, #0x1200 - ldrsh r0, [r0, #0x8e] - cmp r0, #0 - blt _0231FB98 - mla r0, sb, r5, r4 - bl ov29_022E1610 - mov r1, r0 - mov r2, fp - add r0, r8, sb, lsl #2 - bl ov29_02345538 - add r0, r4, sb, lsl #2 - add r1, r0, #0x1200 - ldrsh r0, [r1, #0x8e] - ldrsh r1, [r1, #0x90] - bl ov29_023391EC - str r7, [sp, #0xc] -_0231FB98: - add sb, sb, #1 -_0231FB9C: - cmp sb, r6 - blt _0231FB54 - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _0231FBC0 - ldr r1, _0231FBF8 ; =0x00000BD1 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _0231FBCC -_0231FBC0: - ldr r1, _0231FBEC ; =0x00000BCF - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_0231FBCC: - mov r0, #1 - bl ov29_022F62CC -_0231FBD4: - mov r0, r4 - bl MemFree -_0231FBDC: - add sp, sp, #0x38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231FBE4: .word 0x02353538 -_0231FBE8: .word 0x000013BC -_0231FBEC: .word 0x00000BCF -_0231FBF0: .word 0x02351844 -_0231FBF4: .word 0x00000222 -_0231FBF8: .word 0x00000BD1 - arm_func_end ov29_0231F6E4 - - arm_func_start EntityIsValid__0231FBFC -EntityIsValid__0231FBFC: ; 0x0231FBFC - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0231FBFC - - arm_func_start TryPounce -TryPounce: ; 0x0231FC20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r1 - mov r6, r0 - mov r5, r2 - cmp r6, sl - ldr r4, [sl, #0xb4] - beq _0231FC7C - cmp r6, #0 - moveq r0, #0 - beq _0231FC5C - ldr r0, [r6] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_0231FC5C: - cmp r0, #0 - beq _0231FC7C - mov r0, r6 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0231FC88 -_0231FC7C: - mov r0, sl - mov r1, #0xe - bl AbilityIsActive2 -_0231FC88: - cmp r0, #0 - beq _0231FCB4 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0231FDD0 ; =0x00000E56 - mov r0, r6 - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231FCB4: - ldr r0, _0231FDD4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_023440DC - cmp r0, #0 - bne _0231FCE4 - ldr r2, _0231FDD8 ; =0x00000E55 - mov r0, r6 - mov r1, sl - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0231FCE4: - cmp r5, #8 - ldreqb r5, [r4, #0x4c] - mov r0, sl - mov r1, #6 - mov r2, r5 - bl ov29_023049A8 - ldr r1, _0231FDDC ; =0x0235171C - mov r2, r5, lsl #2 - add r0, r1, r5, lsl #2 - mov r5, #0 - ldrsh r8, [r1, r2] - ldrsh sb, [r0, #2] - mov r4, r5 - mov fp, #0x3a -_0231FD1C: - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - add r0, r0, r8 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r1, r1, sb - mov r0, r1, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r6, #0 - cmpgt r7, #0 - ble _0231FDB4 - cmp r6, #0x37 - cmplt r7, #0x1f - bge _0231FDB4 - mov r0, r6 - mov r1, r7 - bl GetTile - ldr r1, [r0, #0xc] - cmp r1, #0 - bne _0231FDB4 - ldrh r0, [r0] - tst r0, #3 - beq _0231FDB4 - mov r0, sl - mov r1, r6 - mov r2, r7 - mov r3, r5 - bl ov29_022F85F0 - mov r0, sl - mov r1, r4 - bl ov29_022E1A40 - mov r0, sl - bl ov29_022E272C - cmp r0, #0 - beq _0231FD1C - mov r0, fp - bl AdvanceFrame - b _0231FD1C -_0231FDB4: - mov r0, sl - bl ov29_022F9C74 - mov r0, sl - bl ov29_02321104 - mov r0, sl - bl ov29_0232124C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231FDD0: .word 0x00000E56 -_0231FDD4: .word 0x02353538 -_0231FDD8: .word 0x00000E55 -_0231FDDC: .word 0x0235171C - arm_func_end TryPounce - - arm_func_start TryBlowAway -TryBlowAway: ; 0x0231FDE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - ldr r3, _02320154 ; =0x02353538 - mov sl, r0 - ldr r0, [r3] - mov sb, r1 - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - mov r1, #0xa - mov r4, r2 - str r1, [sp, #0x20] - mov fp, #0 - bl ov29_023440DC - cmp r0, #0 - bne _0231FE30 - ldr r2, _02320158 ; =0x00000B97 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _0232014C -_0231FE30: - cmp sl, sb - mov r0, fp - mov r1, sb - bne _0231FE5C - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232015C ; =0x00000B98 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _0232014C -_0231FE5C: - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp sl, sb - beq _0231FEAC - cmp sl, #0 - moveq r0, fp - beq _0231FE8C - ldr r0, [sl] - cmp r0, #1 - moveq r0, #1 - movne r0, fp - and r0, r0, #0xff -_0231FE8C: - cmp r0, #0 - beq _0231FEAC - mov r0, sl - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0231FEB8 -_0231FEAC: - mov r0, sb - mov r1, #0xe - bl AbilityIsActive2 -_0231FEB8: - cmp r0, #0 - beq _0231FED4 - ldr r2, _02320160 ; =0x00000B99 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _0232014C -_0231FED4: - add r0, r4, #4 - and r2, r0, #7 - ldr r3, [sb, #0xb4] - mov r0, sb - mov r1, #6 - strb r2, [r3, #0x4c] - bl ov29_023049A8 - ldr r1, _02320164 ; =0x00000212 - mov r0, sb - bl ov29_022E56A0 - ldr r2, _02320168 ; =0x00000B96 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldr r1, _0232016C ; =0x0235171C - mov r2, r4, lsl #2 - add r0, r1, r4, lsl #2 - ldrsh r8, [r1, r2] - ldrsh r7, [r0, #2] - mov r5, #1 - mov r4, #0 -_0231FF28: - ldrh r0, [sb, #4] - strh r0, [sp, #0x2c] - ldrh r1, [sb, #6] - ldrsh r0, [sp, #0x2c] - strh r1, [sp, #0x2e] - add r0, r0, r8 - strh r0, [sp, #0x2c] - ldrsh r0, [sp, #0x2e] - ldrsh r1, [sp, #0x2c] - add r0, r0, r7 - strh r0, [sp, #0x2e] - cmp r1, #0 - ldrgesh r0, [sp, #0x2e] - cmpge r0, #0 - blt _0232003C - cmp r1, #0x38 - cmplt r0, #0x20 - bge _0232003C - mov r0, r7, lsl #0xa - str r0, [sp, #0x1c] - mov r0, r8, lsl #0xa - str r0, [sp, #0x18] - mov r6, #0 -_0231FF84: - ldr r1, [sp, #0x18] - ldr r2, [sp, #0x1c] - mov r0, sb - bl ov29_022E1A90 - mov r0, sb - bl ov29_022E272C - cmp r0, #0 - beq _0231FFAC - mov r0, #0x19 - bl AdvanceFrame -_0231FFAC: - add r6, r6, #1 - cmp r6, #6 - blt _0231FF84 - ldrsh r0, [sp, #0x2c] - ldrsh r1, [sp, #0x2e] - bl GetTile - mov r6, r0 - ldr r0, [r6, #0xc] - cmp r0, #0 - movne r4, r0 - movne r5, #0 - bne _0232003C - add r1, sp, #0x2c - mov r0, sb - bl ov29_022FFB90 - cmp r0, #0 - beq _02320010 - ldrh r0, [r6] - tst r0, #3 - moveq r5, #0 - beq _0232003C - tst r0, #0x13 - movne fp, #1 - mov r5, #1 - b _0232003C -_02320010: - ldrsh r1, [sp, #0x2c] - ldrsh r2, [sp, #0x2e] - mov r0, sb - mov r3, #1 - bl ov29_022F85F0 - ldr r0, [sp, #0x20] - sub r0, r0, #1 - str r0, [sp, #0x20] - cmp r0, #0 - bgt _0231FF28 - mov r5, #1 -_0232003C: - cmp r5, #0 - bne _02320088 - mov r0, sb - add r1, sb, #4 - bl ov29_0232033C - mov r3, #0 - str r3, [sp] - ldr r0, _02320170 ; =0x022C4570 - str r3, [sp, #4] - mov r1, #0x258 - str r1, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldrsh r2, [r0] - mov r0, sl - mov r1, sb - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory - b _0232009C -_02320088: - cmp fp, #0 - beq _0232009C - mov r0, sb - add r1, sb, #4 - bl ov29_0232033C -_0232009C: - bl IsFloorOver - cmp r0, #0 - bne _0232014C - mov r0, r4 - bl EntityIsValid__0232017C - cmp r0, #0 - beq _02320118 - ldr r1, _02320174 ; =0x00000163 - add r0, sp, #0x24 - bl InitMove - add r1, sp, #0x24 - mov r0, r4 - bl ov29_02324854 - cmp r0, #0 - bne _02320118 - mov r0, sl - mov r1, r4 - bl ov29_02307BDC - mov r3, #0 - str r3, [sp] - ldr r0, _02320170 ; =0x022C4570 - ldr r1, _02320178 ; =0x00000259 - str r3, [sp, #4] - str r1, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - ldrsh r2, [r0] - mov r0, sl - mov r1, r4 - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory -_02320118: - bl IsFloorOver - cmp r0, #0 - bne _0232014C - mov r0, sb - bl EntityIsValid__0232017C - cmp r0, #0 - beq _0232014C - mov r0, sb - bl ov29_022F9C74 - mov r0, sb - bl ov29_02321104 - mov r0, sb - bl ov29_02321238 -_0232014C: - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02320154: .word 0x02353538 -_02320158: .word 0x00000B97 -_0232015C: .word 0x00000B98 -_02320160: .word 0x00000B99 -_02320164: .word 0x00000212 -_02320168: .word 0x00000B96 -_0232016C: .word 0x0235171C -_02320170: .word 0x022C4570 -_02320174: .word 0x00000163 -_02320178: .word 0x00000259 - arm_func_end TryBlowAway - - arm_func_start EntityIsValid__0232017C -EntityIsValid__0232017C: ; 0x0232017C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232017C - - arm_func_start ov29_023201A0 -ov29_023201A0: ; 0x023201A0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__0232017C - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl ov29_022F9C74 - mov r0, r4 - bl ov29_02321104 - mov r0, r4 - bl ov29_02321238 - ldmia sp!, {r4, pc} - arm_func_end ov29_023201A0 - - arm_func_start ov29_023201D0 -ov29_023201D0: ; 0x023201D0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - mov sl, r0 - mov r4, r1 - mov r0, #0 - mov sb, r2 - mov r1, sl - mov r2, r0 - mov r8, r3 - mov r5, #1 - bl SubstitutePlaceholderStringTags - ldrh r0, [sl, #4] - ldr r1, _02320330 ; =0x0235171C - mov r2, r4, lsl #2 - strh r0, [sp] - ldrh r3, [sl, #6] - ldrsh r6, [r1, r2] - ldr r0, _02320334 ; =0x0235171E - ldrsh r1, [sp] - ldrsh r7, [r0, r2] - strh r3, [sp, #2] - add r0, r1, r6 - ldrsh r1, [sp, #2] - strh r0, [sp] - ldrsh r0, [sp] - add r1, r1, r7 - strh r1, [sp, #2] - cmp r0, #0 - ldrgesh r1, [sp, #2] - cmpge r1, #0 - blt _02320258 - cmp r0, #0x38 - cmplt r1, #0x20 - blt _0232025C -_02320258: - mov r5, #0 -_0232025C: - ldrsh r1, [sp, #2] - bl GetTile - mov r4, r0 - ldr r0, [r4, #0xc] - add r1, sp, #0 - cmp r0, #0 - mov r0, sl - movne r5, #0 - bl ov29_022FFB90 - cmp r0, #0 - beq _02320294 - ldrh r0, [r4] - tst r0, #3 - moveq r5, #0 -_02320294: - cmp r5, #0 - beq _02320328 - ldr r1, _02320338 ; =0x00000212 - mov r0, sl - bl ov29_022E56A0 - mov r0, sl - mov r1, r8 - bl LogMessageByIdWithPopupCheckUser - mov r7, r7, lsl #0xa - mov r6, r6, lsl #0xa - mov r5, #0 - mov r4, #0x19 -_023202C4: - mov r0, sl - mov r1, r6 - mov r2, r7 - bl ov29_022E1A90 - mov r0, sl - bl ov29_022E272C - cmp r0, #0 - beq _023202EC - mov r0, r4 - bl AdvanceFrame -_023202EC: - add r5, r5, #1 - cmp r5, #6 - blt _023202C4 - ldrsh r1, [sp] - ldrsh r2, [sp, #2] - mov r0, sl - mov r3, #1 - bl ov29_022F85F0 - bl IsFloorOver - cmp r0, #0 - bne _02320328 - cmp sb, #0 - beq _02320328 - mov r0, sl - bl ov29_023201A0 -_02320328: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02320330: .word 0x0235171C -_02320334: .word 0x0235171E -_02320338: .word 0x00000212 - arm_func_end ov29_023201D0 - - arm_func_start ov29_0232033C -ov29_0232033C: ; 0x0232033C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldrsh r3, [r1] - ldrsh r2, [r1, #2] - mov r1, #0x18 - mov sl, r0 - smulbb r3, r3, r1 - smulbb r0, r2, r1 - add r2, r3, #0xc - ldr r8, [sl, #0xc] - add r1, r0, #0x10 - sub r0, r8, r2, lsl #8 - mov r6, r2, lsl #8 - mov r7, r1, lsl #8 - bl Abs - cmp r0, #0xc - bge _02320394 - ldr r0, [sl, #0x10] - sub r0, r0, r7 - bl Abs - cmp r0, #0xc - blt _0232041C -_02320394: - ldr sb, [sl, #0x10] - sub r0, r6, r8 - mov r1, #0xc - mov r5, #0 - bl DivideInt - str r0, [sp] - sub r0, r7, sb - mov r1, #0xc - bl DivideInt - mov fp, r0 - mov r4, r5 -_023203C0: - ldr r0, [sp] - add sb, sb, fp - add r8, r8, r0 - mov r0, r5 - str r8, [sp, #4] - str sb, [sp, #8] - bl sub_020018D0 - mov r1, #0xc - mul r1, r0, r1 - str r1, [sl, #0x1c] - mov r0, sl - add r1, sp, #4 - bl ov29_022E1A40 - mov r0, sl - bl ov29_022E272C - cmp r0, #0 - beq _0232040C - mov r0, #0x1a - bl AdvanceFrame -_0232040C: - add r4, r4, #1 - cmp r4, #0xc - add r5, r5, #0xaa - blt _023203C0 -_0232041C: - add r1, sp, #4 - mov r0, sl - str r6, [sp, #4] - str r7, [sp, #8] - mov r2, #0 - str r2, [sl, #0x1c] - bl ov29_022E1A40 - mov r0, #0x1a - bl AdvanceFrame - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_0232033C - - arm_func_start ov29_02320448 -ov29_02320448: ; 0x02320448 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov sl, r0 - ldr r0, [sp, #0x38] - mov sb, r1 - str r0, [sp, #0x38] - str r2, [sp, #4] - mov r8, r3 - ldr fp, [sp, #0x3c] - mov r5, #0 - mov r7, #0x15 - ldr r4, _0232074C ; =0x02353538 - b _023204B4 -_0232047C: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__02320764 - cmp r0, #0 - beq _023204B0 - mov r0, r6 - mov r1, r7 - bl AbilityIsActive2 - cmp r0, #0 - bne _023204BC -_023204B0: - add r5, r5, #1 -_023204B4: - cmp r5, #0x14 - blt _0232047C -_023204BC: - cmp r5, #0x14 - beq _023204F4 - mov r0, sl - mov r1, sb - bl ov29_022E55F0 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02320750 ; =0x00000BFC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02320744 -_023204F4: - mov r0, sb - bl GetApparentWeather - cmp r0, #4 - bne _02320518 - ldr r2, _02320750 ; =0x00000BFC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02320744 -_02320518: - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_022E5560 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02320754 ; =0x00000BFB - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, _02320758 ; =0x023529B8 - mov r6, #0 - ldr r4, [r0, r8, lsl #2] - mov r7, r6 - b _023206AC -_0232055C: - ldr r0, [sp, #4] - ldrsh r0, [r0] - add r0, r1, r0 - strh r0, [sp, #0xc] - ldr r0, [sp, #4] - ldrsh r2, [r4, #2] - ldrsh r1, [r0, #2] - ldrsh r0, [sp, #0xc] - add r1, r2, r1 - strh r1, [sp, #0xe] - cmp r0, #0 - ldrgesh r1, [sp, #0xe] - cmpge r1, #0 - blt _023206A8 - cmp r0, #0x38 - cmplt r1, #0x20 - bge _023206A8 - bl GetTileSafe - ldrsh r1, [sp, #0xc] - mov r5, r0 - cmp r1, #1 - ldrgesh r0, [sp, #0xe] - cmpge r0, #1 - blt _02320634 - cmp r1, #0x37 - cmplt r0, #0x1f - bge _02320634 - ldrh r0, [r5] - tst r0, #3 - bne _02320634 - ldrh r0, [r5] - tst r0, #0x10 - bne _02320634 - bic r0, r0, #3 - strh r0, [r5] - ldrh r0, [r5] - mvn r7, #0 - str r7, [sp, #8] - orr r0, r0, #1 - strh r0, [r5] -_023205FC: - ldr r6, [sp, #8] -_02320600: - ldrsh r0, [sp, #0xc] - ldrsh r1, [sp, #0xe] - add r0, r0, r6 - add r1, r1, r7 - bl ov29_02336694 - add r6, r6, #1 - cmp r6, #1 - ble _02320600 - add r7, r7, #1 - cmp r7, #1 - ble _023205FC - mov r6, #1 - mov r7, r6 -_02320634: - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _02320664 - cmp r0, sb - beq _02320660 - ldr r0, [r0] - cmp r0, #3 - bne _02320660 - add r0, sp, #0xc - mov r1, #0 - bl ov29_023456BC -_02320660: - mov r6, #1 -_02320664: - ldr r1, [r5, #0xc] - cmp r1, #0 - cmpne r1, sb - beq _023206A8 - ldr r0, [r1] - cmp r0, #1 - bne _023206A8 - ldr r2, _0232075C ; =0x02353700 - mov r0, sl - ldr r5, [r2, r8, lsl #2] - ldr r2, [sp, #0x38] - mov r3, fp - str r5, [sp] - bl ov29_02320AA4 - bl IsFloorOver - cmp r0, #0 - bne _023206B8 -_023206A8: - add r4, r4, #4 -_023206AC: - ldrsh r1, [r4] - cmp r1, #0x63 - bne _0232055C -_023206B8: - bl IsFloorOver - cmp r0, #0 - bne _02320744 - ldr r0, [sb] - cmp r0, #1 - bne _023206FC - ldr r0, _02320760 ; =0x0000026F - cmp fp, r0 - beq _023206FC - ldr r1, _0232075C ; =0x02353700 - ldr r2, [sp, #0x38] - ldr r4, [r1, r8, lsl #2] - mov r0, sl - mov r1, sb - mov r3, fp - str r4, [sp] - bl ov29_02320AA4 -_023206FC: - cmp r6, #0 - beq _02320744 - cmp r7, #0 - beq _0232073C - mov r6, #0 - mov r4, r6 -_02320714: - mov r5, r4 -_02320718: - mov r0, r5 - mov r1, r6 - bl ov29_02336A84 - add r5, r5, #1 - cmp r5, #0x38 - blt _02320718 - add r6, r6, #1 - cmp r6, #0x20 - blt _02320714 -_0232073C: - bl ov29_02339CE8 - bl ov29_02336F4C -_02320744: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232074C: .word 0x02353538 -_02320750: .word 0x00000BFC -_02320754: .word 0x00000BFB -_02320758: .word 0x023529B8 -_0232075C: .word 0x02353700 -_02320760: .word 0x0000026F - arm_func_end ov29_02320448 - - arm_func_start EntityIsValid__02320764 -EntityIsValid__02320764: ; 0x02320764 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02320764 - - arm_func_start ov29_02320788 -ov29_02320788: ; 0x02320788 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov sl, r0 - ldr r0, [sp, #0x38] - mov sb, r1 - str r0, [sp, #0x38] - str r2, [sp, #4] - mov r8, r3 - ldr fp, [sp, #0x3c] - mov r5, #0 - mov r7, #0x15 - ldr r4, _02320A8C ; =0x02353538 - b _023207F4 -_023207BC: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__02320764 - cmp r0, #0 - beq _023207F0 - mov r0, r6 - mov r1, r7 - bl AbilityIsActive2 - cmp r0, #0 - bne _023207FC -_023207F0: - add r5, r5, #1 -_023207F4: - cmp r5, #0x14 - blt _023207BC -_023207FC: - cmp r5, #0x14 - beq _02320834 - mov r0, sl - mov r1, sb - bl ov29_022E55F0 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02320A90 ; =0x00000BFC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02320A84 -_02320834: - mov r0, sb - bl GetApparentWeather - cmp r0, #4 - bne _02320858 - ldr r2, _02320A90 ; =0x00000BFC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02320A84 -_02320858: - mov r0, sl - mov r1, sb - mov r2, r8 - bl ov29_022E5560 - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02320A94 ; =0x00000BFB - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, _02320A98 ; =0x023529B8 - mov r6, #0 - ldr r4, [r0, r8, lsl #2] - mov r7, r6 - b _023209EC -_0232089C: - ldr r0, [sp, #4] - ldrsh r0, [r0] - add r0, r1, r0 - strh r0, [sp, #0xc] - ldr r0, [sp, #4] - ldrsh r2, [r4, #2] - ldrsh r1, [r0, #2] - ldrsh r0, [sp, #0xc] - add r1, r2, r1 - strh r1, [sp, #0xe] - cmp r0, #0 - ldrgesh r1, [sp, #0xe] - cmpge r1, #0 - blt _023209E8 - cmp r0, #0x38 - cmplt r1, #0x20 - bge _023209E8 - bl GetTileSafe - ldrsh r1, [sp, #0xc] - mov r5, r0 - cmp r1, #1 - ldrgesh r0, [sp, #0xe] - cmpge r0, #1 - blt _02320974 - cmp r1, #0x37 - cmplt r0, #0x1f - bge _02320974 - ldrh r0, [r5] - tst r0, #3 - bne _02320974 - ldrh r0, [r5] - tst r0, #0x10 - bne _02320974 - bic r0, r0, #3 - strh r0, [r5] - ldrh r0, [r5] - mvn r7, #0 - str r7, [sp, #8] - orr r0, r0, #1 - strh r0, [r5] -_0232093C: - ldr r6, [sp, #8] -_02320940: - ldrsh r0, [sp, #0xc] - ldrsh r1, [sp, #0xe] - add r0, r0, r6 - add r1, r1, r7 - bl ov29_02336694 - add r6, r6, #1 - cmp r6, #1 - ble _02320940 - add r7, r7, #1 - cmp r7, #1 - ble _0232093C - mov r6, #1 - mov r7, r6 -_02320974: - ldr r0, [r5, #0x10] - cmp r0, #0 - beq _023209A4 - cmp r0, sb - beq _023209A0 - ldr r0, [r0] - cmp r0, #3 - bne _023209A0 - add r0, sp, #0xc - mov r1, #0 - bl ov29_023456BC -_023209A0: - mov r6, #1 -_023209A4: - ldr r1, [r5, #0xc] - cmp r1, #0 - cmpne r1, sb - beq _023209E8 - ldr r0, [r1] - cmp r0, #1 - bne _023209E8 - ldr r2, _02320A9C ; =0x02353700 - mov r0, sl - ldr r5, [r2, r8, lsl #2] - ldr r2, [sp, #0x38] - mov r3, fp - str r5, [sp] - bl ov29_02320BCC - bl IsFloorOver - cmp r0, #0 - bne _023209F8 -_023209E8: - add r4, r4, #4 -_023209EC: - ldrsh r1, [r4] - cmp r1, #0x63 - bne _0232089C -_023209F8: - bl IsFloorOver - cmp r0, #0 - bne _02320A84 - ldr r0, [sb] - cmp r0, #1 - bne _02320A3C - ldr r0, _02320AA0 ; =0x0000026F - cmp fp, r0 - beq _02320A3C - ldr r1, _02320A9C ; =0x02353700 - ldr r2, [sp, #0x38] - ldr r4, [r1, r8, lsl #2] - mov r0, sl - mov r1, sb - mov r3, fp - str r4, [sp] - bl ov29_02320BCC -_02320A3C: - cmp r6, #0 - beq _02320A84 - cmp r7, #0 - beq _02320A7C - mov r6, #0 - mov r4, r6 -_02320A54: - mov r5, r4 -_02320A58: - mov r0, r5 - mov r1, r6 - bl ov29_02336A84 - add r5, r5, #1 - cmp r5, #0x38 - blt _02320A58 - add r6, r6, #1 - cmp r6, #0x20 - blt _02320A54 -_02320A7C: - bl ov29_02339CE8 - bl ov29_02336F4C -_02320A84: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02320A8C: .word 0x02353538 -_02320A90: .word 0x00000BFC -_02320A94: .word 0x00000BFB -_02320A98: .word 0x023529B8 -_02320A9C: .word 0x02353700 -_02320AA0: .word 0x0000026F - arm_func_end ov29_02320788 - - arm_func_start ov29_02320AA4 -ov29_02320AA4: ; 0x02320AA4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl EntityIsValid__02320764 - cmp r0, #0 - beq _02320BC0 - ldr r1, _02320BC8 ; =0x00000163 - add r0, sp, #0x1a - ldr r4, [r7, #0xb4] - bl InitMove - add r1, sp, #0x1a - mov r0, r7 - bl ov29_02324854 - cmp r0, #0 - bne _02320BC0 - ldrb r0, [r4, #6] - mov r1, #2 - cmp r0, #0 - bne _02320B2C - ldrsh r2, [r4, #0x10] - mov r0, r7 - add r2, r2, r2, lsr #31 - mov r4, r2, asr #1 - bl MonsterIsType - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 - cmp r4, #1 - movlt r4, #1 - b _02320B44 -_02320B2C: - mov r0, r7 - ldr r4, [sp, #0x40] - bl MonsterIsType - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 -_02320B44: - mov ip, #7 - mov r0, r8 - mov r1, r7 - mov r2, #1 - mov r3, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r4, #1 - bne _02320B94 - mov r2, #1 - mov ip, #6 - mov r0, r8 - mov r1, r7 - rsb r3, r2, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 -_02320B94: - add r0, sp, #0x18 - stmia sp, {r0, r6} - mov r3, #0 - str r5, [sp, #8] - str r3, [sp, #0xc] - str r3, [sp, #0x10] - mov r0, r8 - mov r1, r7 - mov r2, r4 - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory -_02320BC0: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02320BC8: .word 0x00000163 - arm_func_end ov29_02320AA4 - - arm_func_start ov29_02320BCC -ov29_02320BCC: ; 0x02320BCC - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x24 - mov r8, r1 - mov sb, r0 - mov r0, r8 - mov r7, r2 - mov r6, r3 - bl EntityIsValid__02320764 - cmp r0, #0 - beq _02320CFC - ldr r1, _02320D04 ; =0x00000163 - add r0, sp, #0x1a - ldr r5, [r8, #0xb4] - bl InitMove - add r1, sp, #0x1a - mov r0, r8 - bl ov29_02324854 - cmp r0, #0 - bne _02320CFC - ldrb r0, [r5, #6] - mov r1, #2 - cmp r0, #0 - bne _02320C54 - ldrsh r2, [r5, #0x10] - mov r0, r8 - add r2, r2, r2, lsr #31 - mov r4, r2, asr #1 - bl MonsterIsType - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 - cmp r4, #1 - movlt r4, #1 - b _02320C6C -_02320C54: - mov r0, r8 - ldr r4, [sp, #0x40] - bl MonsterIsType - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 -_02320C6C: - mov ip, #7 - mov r0, sb - mov r1, r8 - mov r2, #1 - mov r3, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - movne r4, #1 - bne _02320CBC - mov r2, #1 - mov ip, #6 - mov r0, sb - mov r1, r8 - rsb r3, r2, #0xdc0 - str ip, [sp] - bl ov29_02314D40 - cmp r0, #0 - addne r0, r4, r4, lsr #31 - movne r4, r0, asr #1 -_02320CBC: - ldrsh r0, [r5, #0x10] - mov r3, #0 - mov r1, r8 - cmp r4, r0 - subge r4, r0, #1 - add r0, sp, #0x18 - stmia sp, {r0, r7} - str r6, [sp, #8] - cmp r4, #0 - movlt r4, #0 - str r3, [sp, #0xc] - str r3, [sp, #0x10] - mov r0, sb - mov r2, r4 - str r3, [sp, #0x14] - bl CalcDamageFixedNoCategory -_02320CFC: - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02320D04: .word 0x00000163 - arm_func_end ov29_02320BCC - - arm_func_start TryWarp -TryWarp: ; 0x02320D08 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r0, r4 - mov r2, r4 - mov r6, r3 - ldr r5, [r8, #0xb4] - bl SubstitutePlaceholderStringTags - cmp sb, r8 - beq _02320D78 - cmp sb, #0 - moveq r0, r4 - beq _02320D58 - ldr r0, [sb] - cmp r0, #1 - moveq r0, #1 - movne r0, r4 - and r0, r0, #0xff -_02320D58: - cmp r0, #0 - beq _02320D78 - mov r0, sb - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _02320D84 -_02320D78: - mov r0, r8 - mov r1, #0xe - bl AbilityIsActive2 -_02320D84: - cmp r0, #0 - beq _02320DA0 - ldr r2, _023210E8 ; =0x00000E74 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02320DA0: - ldr r0, _023210EC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl ov29_023440DC - cmp r0, #0 - bne _02320DD0 - ldr r2, _023210F0 ; =0x00000E72 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02320DD0: - cmp r7, #1 - bne _02320E20 - ldr r0, _023210EC ; =0x02353538 - ldrsh r1, [r8, #4] - ldr r0, [r0] - add r0, r0, #0xcc00 - ldrsh r2, [r0, #0xe4] - cmp r2, r1 - ldreqsh r1, [r0, #0xe6] - ldreqsh r0, [r8, #6] - cmpeq r1, r0 - bne _02320E20 - ldr r2, _023210F4 ; =0x00000E73 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sb - mov r1, r8 - bl TryInflictPetrifiedStatus - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02320E20: - ldr r2, _023210F8 ; =0x00000E71 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r8 - bl ov29_02307BDC - mov r0, sb - mov r1, r8 - bl ov29_022E5650 - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _02320EA4 - ldrb sl, [r5, #0x4c] - ldr fp, _023210FC ; =0x0237C850 -_02320E60: - ldr r0, [r8, #0x1c] - add r0, r0, #0x800 - str r0, [r8, #0x1c] - cmp r0, #0xa000 - bge _02320EA4 - ldr r0, [fp] - tst r0, #3 - bne _02320E98 - add r0, sl, #1 - and sl, r0, #7 - mov r0, r8 - mov r1, sl - strb sl, [r5, #0x4c] - bl ov29_02304A48 -_02320E98: - mov r0, #0x22 - bl AdvanceFrame - b _02320E60 -_02320EA4: - cmp r7, #5 - addls pc, pc, r7, lsl #2 - b _02320EC8 -_02320EB0: ; jump table - b _02320EC8 ; case 0 - b _02320EF4 ; case 1 - b _02320F30 ; case 2 - b _02320F60 ; case 3 - b _02320F74 ; case 4 - b _02320FB0 ; case 5 -_02320EC8: - add r0, sp, #0 - mov r1, #1 - bl ov29_022E9628 - cmp r0, #0 - bne _02321008 - ldrh r0, [r8, #4] - mov r4, #1 - strh r0, [sp] - ldrh r0, [r8, #6] - strh r0, [sp, #2] - b _02321008 -_02320EF4: - ldr r1, _023210EC ; =0x02353538 - add r0, sp, #0 - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0xe4 - add r1, r1, #0xcc00 - bl ov29_022E99F0 - cmp r0, #0 - bne _02321008 - ldrh r0, [r8, #4] - mov r4, #1 - strh r0, [sp] - ldrh r0, [r8, #6] - strh r0, [sp, #2] - b _02321008 -_02320F30: - add r0, sp, #0 - mov r1, r6 - mov r2, #0 - bl ov29_022E99F0 - cmp r0, #0 - bne _02321008 - ldrh r0, [r8, #4] - mov r4, #1 - strh r0, [sp] - ldrh r0, [r8, #6] - strh r0, [sp, #2] - b _02321008 -_02320F60: - ldrh r0, [r6] - strh r0, [sp] - ldrh r0, [r6, #2] - strh r0, [sp, #2] - b _02321008 -_02320F74: - ldr r1, _023210EC ; =0x02353538 - add r0, sp, #0 - ldr r1, [r1] - mov r2, #1 - add r1, r1, #0xe4 - add r1, r1, #0xcc00 - bl ov29_022E9A28 - cmp r0, #0 - bne _02321008 - ldrh r0, [r8, #4] - mov r4, #1 - strh r0, [sp] - ldrh r0, [r8, #6] - strh r0, [sp, #2] - b _02321008 -_02320FB0: - ldrb r0, [r5, #6] - cmp r0, #0 - ldreqb r0, [r5, #7] - cmpeq r0, #0 - bne _02320FE4 - bl GetLeader - mov r1, r0 - add r0, sp, #0 - add r1, r1, #4 - mov r2, #0 - bl ov29_022E99F0 - cmp r0, #0 - bne _02321008 -_02320FE4: - add r0, sp, #0 - mov r1, #1 - bl ov29_022E9628 - cmp r0, #0 - ldreqh r0, [r8, #4] - moveq r4, #1 - streqh r0, [sp] - ldreqh r0, [r8, #6] - streqh r0, [sp, #2] -_02321008: - ldrsh r1, [sp] - ldrsh r2, [sp, #2] - mov r0, r8 - mov r3, #1 - bl ov29_022F85F0 - mov r0, r8 - mov r1, #0 - bl ov29_022E1A40 - mov r0, r8 - bl sub_01FFB62C - mov r0, #1 - bl ov29_022E2EC4 - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _023210A0 - ldrb sl, [r5, #0x4c] - mov r0, #0xa000 - ldr r6, _023210FC ; =0x0237C850 - str r0, [r8, #0x1c] - mov fp, #0x22 -_0232105C: - ldr r0, [r8, #0x1c] - sub r0, r0, #0x400 - str r0, [r8, #0x1c] - cmp r0, #0 - ble _023210A0 - ldr r0, [r6] - tst r0, #3 - bne _02321094 - add r0, sl, #1 - and sl, r0, #7 - mov r0, r8 - mov r1, sl - strb sl, [r5, #0x4c] - bl ov29_02304A48 -_02321094: - mov r0, fp - bl AdvanceFrame - b _0232105C -_023210A0: - mov r1, #0 - mov r0, #0x22 - str r1, [r8, #0x1c] - bl AdvanceFrame - cmp r4, #0 - beq _023210C8 - ldr r2, _02321100 ; =0x00000E75 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_023210C8: - cmp r7, #1 - bne _023210DC - mov r0, sb - mov r1, r8 - bl TryInflictPetrifiedStatus -_023210DC: - mov r0, r8 - bl ov29_02321238 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023210E8: .word 0x00000E74 -_023210EC: .word 0x02353538 -_023210F0: .word 0x00000E72 -_023210F4: .word 0x00000E73 -_023210F8: .word 0x00000E71 -_023210FC: .word 0x0237C850 -_02321100: .word 0x00000E75 - arm_func_end TryWarp - - arm_func_start ov29_02321104 -ov29_02321104: ; 0x02321104 - stmdb sp!, {r4, lr} - mov r4, r0 - add r1, r4, #4 - bl ov29_022FFC9C - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, r4 - mov r2, #5 - mov r3, #0 - bl TryWarp - ldmia sp!, {r4, pc} - arm_func_end ov29_02321104 - - arm_func_start ov29_02321134 -ov29_02321134: ; 0x02321134 - stmdb sp!, {r4, lr} - mov r4, r0 - add r1, r4, #4 - bl ov29_022FF958 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, r4 - mov r2, #5 - mov r3, #0 - bl TryWarp - ldmia sp!, {r4, pc} - arm_func_end ov29_02321134 - - arm_func_start ov29_02321164 -ov29_02321164: ; 0x02321164 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r0, r4 - add r1, r4, #4 - bl ov29_022FFC9C - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #5 - mov r3, #0 - bl TryWarp - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02321164 - - arm_func_start ov29_0232119C -ov29_0232119C: ; 0x0232119C - stmdb sp!, {r3, r4, r5, lr} - movs r4, r0 - mov r5, r2 - moveq r0, #0 - beq _023211C4 - ldr r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_023211C4: - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r1, #0 - beq _023211E0 - mov r0, r4 - mov r1, #8 - bl ov29_02304A48 -_023211E0: - ldr r0, [r4, #0xb4] - ldrb r0, [r0, #7] - cmp r0, #0 - beq _02321210 - cmp r5, #0 - beq _02321200 - mov r0, r4 - bl ov29_022F42F8 -_02321200: - add r0, r4, #4 - bl ov29_02337A3C - mov r0, #0 - bl ov29_022F62CC -_02321210: - mov r0, r4 - bl ov29_022F9C74 - ldr r1, _02321234 ; =0x02353538 - mov r0, r4 - ldr r1, [r1] - add r1, r1, #0x4000 - ldrb r1, [r1, #0xc4] - bl ov29_02305814 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02321234: .word 0x02353538 - arm_func_end ov29_0232119C - - arm_func_start ov29_02321238 -ov29_02321238: ; 0x02321238 - ldr ip, _02321248 ; =ov29_0232119C - mov r1, #0 - mov r2, #1 - bx ip - .align 2, 0 -_02321248: .word ov29_0232119C - arm_func_end ov29_02321238 - - arm_func_start ov29_0232124C -ov29_0232124C: ; 0x0232124C - ldr ip, _0232125C ; =ov29_0232119C - mov r1, #1 - mov r2, r1 - bx ip - .align 2, 0 -_0232125C: .word ov29_0232119C - arm_func_end ov29_0232124C - - arm_func_start ov29_02321260 -ov29_02321260: ; 0x02321260 - ldr ip, _02321270 ; =ov29_0232119C - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_02321270: .word ov29_0232119C - arm_func_end ov29_02321260 - - arm_func_start ov29_02321274 -ov29_02321274: ; 0x02321274 - ldr ip, _02321284 ; =ov29_0232119C - mov r1, #1 - mov r2, #0 - bx ip - .align 2, 0 -_02321284: .word ov29_0232119C - arm_func_end ov29_02321274 - - arm_func_start ov29_02321288 -ov29_02321288: ; 0x02321288 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x34] - ldr r5, [sl, #0xb4] - bl ov29_022F87C0 - movs r4, r0 - bne _023212E0 - mov r0, sl - mov r1, r6 - bl ov29_022FAA04 - ldrh r2, [r6, #2] - mov r0, sl - mov r1, #1 - orr r2, r2, #8 - strh r2, [r6, #2] - bl UpdateMovePp - mov r0, #0 - b _02321428 -_023212E0: - add r2, sp, #8 - mov r3, r6 - mov r1, #4 -_023212EC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023212EC - mov r0, r4 - bl ov29_023247B4 - strh r0, [sp, #0xc] - ldrh r0, [sp, #0xc] - cmp r0, #0 - bne _02321360 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02321430 ; =0x00000F11 - mov r0, sl - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sl - mov r1, r6 - bl ov29_022FAA04 - ldrh r2, [r6, #2] - mov r0, sl - mov r1, #1 - orr r2, r2, #8 - strh r2, [r6, #2] - bl UpdateMovePp - mov r0, #0 - b _02321428 -_02321360: - mov r0, sl - mov r1, r6 - mov r2, #1 - bl CanMonsterUseMove - cmp r0, #0 - beq _023213E4 - mov r0, r4 - bl ov29_022E4C84 - mov r0, sl - bl ov29_022E4CD4 - mov r0, #1 - strb r0, [r5, #0x221] - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02321434 ; =0x00000F12 - mov r1, r4 - mov r0, sl - bl LogMessageByIdWithPopupCheckUserTarget - ldr r4, [sp, #0x30] - add r0, sp, #8 - str r4, [sp] - str r0, [sp, #4] - mov r1, sb - mov r2, r8 - mov r3, r7 - mov r0, sl - bl ov29_02322374 - mov r4, r0 - mov r0, #0 - strb r0, [r5, #0x221] - b _02321408 -_023213E4: - ldr r1, [sp, #0x30] - mov r0, sl - str r1, [sp] - mov r1, sb - mov r2, r8 - mov r3, r7 - str r6, [sp, #4] - bl ov29_02322374 - mov r4, r0 -_02321408: - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02321424 - mov r0, sl - mov r1, r6 - bl ov29_022FAA04 -_02321424: - mov r0, r4 -_02321428: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02321430: .word 0x00000F11 -_02321434: .word 0x00000F12 - arm_func_end ov29_02321288 - - arm_func_start EntityIsValid__02321438 -EntityIsValid__02321438: ; 0x02321438 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02321438 - - arm_func_start ov29_0232145C -ov29_0232145C: ; 0x0232145C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - mov sb, r1 - mov sl, r0 - cmp sb, #4 - str r2, [sp, #8] - mov r8, r3 - mov r4, sb - ldr r7, [sp, #0x58] - ldr r5, [sl, #0xb4] - movge r0, #0 - bge _02321A40 - bl ov29_022FBAB4 - mov r0, #0 - strb r0, [r5, #0x163] - ldrb r1, [r5, #0xd0] - cmp r1, #1 - bne _023214C4 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02321A48 ; =0x00000E7C - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - b _02321A40 -_023214C4: - cmp r1, #7 - bne _023214EC - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02321A4C ; =0x00000E7D - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - b _02321A40 -_023214EC: - ldrb r1, [r5, #0xbf] - cmp r1, #4 - bne _02321518 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02321A50 ; =0x00000E78 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - b _02321A40 -_02321518: - ldr r1, _02321A54 ; =0x0237CA68 - mov r2, r0 - strb r0, [r1] - str r0, [r1, #0x18] - strb r0, [r1, #4] -_0232152C: - add r1, r5, r0, lsl #1 - add r1, r1, #0x100 - add r0, r0, #1 - strh r2, [r1, #0x94] - cmp r0, #4 - blt _0232152C - mov r1, r2 - b _02321570 -_0232154C: - add r4, r4, #1 - cmp r4, #4 - add r2, r2, #1 - bge _02321578 - add r0, r5, r4, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #2 - beq _02321578 - add r1, r1, #1 -_02321570: - cmp r1, #4 - blt _0232154C -_02321578: - cmp r2, #2 - movge r6, #1 - movlt r6, #0 -_02321584: - add r1, r5, #0x124 - mov r0, sl - add r4, r1, sb, lsl #3 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02321888 - bl IsFloorOver - cmp r0, #0 - bne _02321888 - bl ov29_022ED868 - cmp r0, #0 - bne _023215D8 - ldrh r0, [r4, #4] - bl IsTrappingMove - cmp r0, #0 - beq _023215D8 - ldr r1, _02321A58 ; =0x00000E7E - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - b _02321A40 -_023215D8: - ldrh r0, [r4, #4] - cmp r0, #0x19 - cmpne r0, #0xe3 - mov r0, sl - bne _02321610 - bl ov29_023007A8 - cmp r0, #0 - bne _02321620 - mov r0, sl - mov r1, #1 - bl ov29_02300DCC - cmp r0, #0 - bne _02321888 - b _02321620 -_02321610: - mov r1, #0 - bl ov29_02300DCC - cmp r0, #0 - bne _02321888 -_02321620: - ldr r0, _02321A54 ; =0x0237CA68 - ldrb r0, [r0, #4] - cmp r0, #0 - bne _02321888 - ldrb r0, [r4] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02321848 - mov r2, #1 - str r2, [sp, #0x18] - mov r2, #0 - mov r0, sl - mov r1, r4 - str r2, [sp, #0x14] - bl ov29_023245A4 - ldrb r1, [r4, #6] - mov fp, r0 - cmp r1, #0 - beq _02321684 - cmp fp, #0 - moveq r0, #1 - streq r0, [sp, #0x14] - b _023216AC -_02321684: - cmp fp, #0 - bne _023216AC - ldrh r1, [r4, #4] - mov r0, #0 - bl ov29_0234B084 - ldr r1, _02321A5C ; =0x00000E7F - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - str r0, [sp, #0x18] -_023216AC: - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _02321848 - ldr r1, _02321A54 ; =0x0237CA68 - mov r0, #0 - str r0, [sp, #0x10] - ldr r0, [r1, #0x18] - strb fp, [r5, #0x163] - ldrh r1, [r4, #4] - str r0, [sp, #0xc] - cmp r1, #0xe5 - bne _0232179C - mov r0, sl - mov r1, r4 - mov r2, #1 - bl CanMonsterUseMove - cmp r0, #0 - beq _02321764 - add r2, sp, #0x2c - mov r3, r4 - mov r1, #4 -_02321700: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _02321700 - mov r0, sl - bl ov29_02324698 - strh r0, [sp, #0x30] - bl ov29_0234B034 - mov r1, #0 - add r2, sp, #0x2c - mov r3, r1 - bl FormatMoveStringMore - mov r0, sl - mov r1, #0xe80 - bl LogMessageByIdWithPopupCheckUser - str r6, [sp] - add r1, sp, #0x2c - str r1, [sp, #4] - ldr r1, [sp, #8] - mov r0, sl - mov r2, r8 - mov r3, r7 - bl ov29_02322374 - str r0, [sp, #0x10] - b _0232177C -_02321764: - ldr r1, _02321A60 ; =0x00000E81 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - ldr r1, _02321A64 ; =0x00000E79 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_0232177C: - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - beq _023217E4 - mov r0, sl - mov r1, r4 - bl ov29_022FAA04 - b _023217E4 -_0232179C: - ldr r0, _02321A68 ; =0x000001D1 - str r6, [sp] - cmp r1, r0 - mov r0, sl - bne _023217CC - ldr r1, [sp, #8] - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl ov29_02321288 - str r0, [sp, #0x10] - b _023217E4 -_023217CC: - ldr r1, [sp, #8] - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl ov29_02322374 - str r0, [sp, #0x10] -_023217E4: - ldr r0, [sp, #0x14] - cmp r0, #0 - ldrne r0, [sp, #0x10] - cmpne r0, #0 - beq _02321810 - ldrh r0, [r4, #2] - tst r0, #4 - bicne r0, r0, #4 - strneh r0, [r4, #2] - orreq r0, r0, #8 - streqh r0, [r4, #2] -_02321810: - ldr r0, _02321A54 ; =0x0237CA68 - ldr r1, [r0, #0x18] - ldr r0, [sp, #0xc] - cmp r0, r1 - bne _02321848 - cmp r8, #0 - bne _0232183C - ldr r1, _02321A6C ; =0x00000E76 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - b _02321848 -_0232183C: - ldr r1, _02321A70 ; =0x00000E77 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_02321848: - mov r0, #1 - bl ov29_022E38E0 - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02321888 - bl IsFloorOver - cmp r0, #0 - bne _02321888 - add sb, sb, #1 - cmp sb, #4 - bge _02321888 - add r0, r5, sb, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #2 - bne _02321584 -_02321888: - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - beq _023219A0 - mov sb, #0 -_0232189C: - add r0, r5, sb, lsl #1 - add r0, r0, #0x100 - ldrh r1, [r0, #0x94] - cmp r1, #0 - beq _02321994 - ldrh r1, [r0, #0x94] - add r4, sp, #0x24 - mov r0, r4 - bl GetInfoMoveCheckId - ldrb r0, [sp, #0x24] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0232198C - ldrh r1, [r4, #4] - cmp r1, #0xe5 - bne _0232194C - add r2, sp, #0x1c - mov r1, #4 -_023218EC: - ldrh r0, [r4], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023218EC - mov r0, sl - bl ov29_02324698 - strh r0, [sp, #0x20] - bl ov29_0234B034 - mov r1, #0 - add r2, sp, #0x1c - mov r3, r1 - bl FormatMoveStringMore - mov r0, sl - mov r1, #0xe80 - bl LogMessageByIdWithPopupCheckUser - str r6, [sp] - add r1, sp, #0x1c - str r1, [sp, #4] - mov r0, sl - mov r1, #0 - mov r2, r8 - mov r3, r7 - bl ov29_02322374 - b _0232198C -_0232194C: - ldr r0, _02321A68 ; =0x000001D1 - str r6, [sp] - cmp r1, r0 - mov r0, sl - bne _02321978 - ldr r1, [sp, #8] - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl ov29_02321288 - b _0232198C -_02321978: - mov r2, r8 - mov r3, r7 - mov r1, #0 - str r4, [sp, #4] - bl ov29_02322374 -_0232198C: - mov r0, #1 - bl ov29_022E38E0 -_02321994: - add sb, sb, #1 - cmp sb, #4 - blt _0232189C -_023219A0: - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #1 - beq _02321A40 - mov r0, sl - bl EnemyEvolution - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #1 - beq _02321A40 - ldr r1, _02321A54 ; =0x0237CA68 - ldrb r0, [r1] - cmp r0, #0 - beq _02321A3C - mov r2, #0 - mov r0, sl - strb r2, [r1] - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02321A3C - ldr r1, _02321A74 ; =0x022C4714 - mov r0, sl - ldr r4, [sl, #0xb4] - mov r2, #1 - bl CalcStatusDuration - mov r2, #0 - str r2, [sp] - mov r3, r0 - str r2, [sp, #4] - mov r0, sl - mov r1, sl - mov r2, #1 - bl TryInflictPausedStatus - ldrb r0, [r4, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r4, #0x108] -_02321A3C: - mov r0, #1 -_02321A40: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02321A48: .word 0x00000E7C -_02321A4C: .word 0x00000E7D -_02321A50: .word 0x00000E78 -_02321A54: .word 0x0237CA68 -_02321A58: .word 0x00000E7E -_02321A5C: .word 0x00000E7F -_02321A60: .word 0x00000E81 -_02321A64: .word 0x00000E79 -_02321A68: .word 0x000001D1 -_02321A6C: .word 0x00000E76 -_02321A70: .word 0x00000E77 -_02321A74: .word 0x022C4714 - arm_func_end ov29_0232145C - - arm_func_start ov29_02321A78 -ov29_02321A78: ; 0x02321A78 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl EntityIsValid__02321438 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r4, [r5, #0xb4] - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #1 - beq _02321ABC - ldr r1, _02321CC0 ; =0x00000E82 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321ABC: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #2 - beq _02321AE8 - ldr r1, _02321CC4 ; =0x00000E83 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321AE8: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #4 - beq _02321B14 - ldr r1, _02321CC8 ; =0x00000E84 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321B14: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #8 - beq _02321B44 - ldr r1, _02321CCC ; =0x00000E85 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus -_02321B44: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x10 - beq _02321B74 - ldr r1, _02321CD0 ; =0x00000E86 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus -_02321B74: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x20 - beq _02321BA4 - ldr r1, _02321CD4 ; =0x00000E87 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus -_02321BA4: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x40 - beq _02321BD4 - ldr r1, _02321CD8 ; =0x00000E88 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus -_02321BD4: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x80 - beq _02321C14 - ldr r1, _02321CDC ; =0x00000E89 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _02321CE0 ; =0x022C4720 - mov r0, r5 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r5 - mov r3, #1 - bl TryInflictSleepStatus -_02321C14: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x100 - beq _02321C4C - ldr r1, _02321CE4 ; =0x00000E8A - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r2, #1 - mov ip, #0 - mov r0, r5 - mov r1, r5 - mov r3, r2 - str ip, [sp] - bl TryInflictBurnStatus -_02321C4C: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x200 - beq _02321C7C - ldr r1, _02321CE8 ; =0x00000E8B - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl TryInflictInfatuatedStatus -_02321C7C: - add r0, r4, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #0x400 - beq _02321CB0 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02321CEC ; =0x00000E8C - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - bl ov29_0231B33C -_02321CB0: - add r0, r4, #0x100 - mov r1, #0 - strh r1, [r0, #0x92] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02321CC0: .word 0x00000E82 -_02321CC4: .word 0x00000E83 -_02321CC8: .word 0x00000E84 -_02321CCC: .word 0x00000E85 -_02321CD0: .word 0x00000E86 -_02321CD4: .word 0x00000E87 -_02321CD8: .word 0x00000E88 -_02321CDC: .word 0x00000E89 -_02321CE0: .word 0x022C4720 -_02321CE4: .word 0x00000E8A -_02321CE8: .word 0x00000E8B -_02321CEC: .word 0x00000E8C - arm_func_end ov29_02321A78 - - arm_func_start ov29_02321CF0 -ov29_02321CF0: ; 0x02321CF0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r5, r1 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322244 - ldr r4, [r6, #0xb4] - ldr r0, [r4, #0x18c] - tst r0, #1 - beq _02321D48 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0232224C ; =0x00000E8D - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321D48: - ldr r0, [r4, #0x18c] - tst r0, #2 - beq _02321D80 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322250 ; =0x00000E8E - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321D80: - ldr r0, [r4, #0x18c] - tst r0, #4 - beq _02321DB8 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322254 ; =0x00000E8F - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0 - bl TryInflictShadowHoldStatus -_02321DB8: - ldr r0, [r4, #0x18c] - tst r0, #0x80000 - beq _02321E00 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322258 ; =0x00000EA3 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _0232225C ; =0x022C4724 - mov r0, r5 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r6 - mov r1, r6 - bl TryInflictNightmareStatus -_02321E00: - ldr r0, [r4, #0x18c] - tst r0, #8 - beq _02321E3C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - mov r0, r6 - mov r1, #0xe90 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus -_02321E3C: - ldr r0, [r4, #0x18c] - tst r0, #0x10 - beq _02321E78 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322260 ; =0x00000E91 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus -_02321E78: - ldr r0, [r4, #0x18c] - tst r0, #0x20 - beq _02321EB4 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322264 ; =0x00000E92 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus -_02321EB4: - ldr r0, [r4, #0x18c] - tst r0, #0x40 - beq _02321EF0 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322268 ; =0x00000E93 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus -_02321EF0: - ldr r0, [r4, #0x18c] - tst r0, #0x80 - beq _02321F3C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0232226C ; =0x00000E94 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - ldr r1, _02322270 ; =0x022C4720 - mov r0, r6 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r6 - mov r1, r6 - mov r3, #1 - bl TryInflictSleepStatus -_02321F3C: - ldr r0, [r4, #0x18c] - tst r0, #0x100 - beq _02321F80 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322274 ; =0x00000E95 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r2, #1 - mov r1, #0 - mov r0, r6 - str r1, [sp] - mov r1, r6 - mov r3, r2 - bl TryInflictBurnStatus -_02321F80: - ldr r0, [r4, #0x18c] - tst r0, #0x200 - beq _02321FBC - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322278 ; =0x00000E96 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictInfatuatedStatus -_02321FBC: - ldr r0, [r4, #0x18c] - tst r0, #0x800 - beq _02321FF8 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0232227C ; =0x00000E98 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r2, #0 - mov r0, r6 - mov r1, r6 - mov r3, r2 - bl TryInflictConfusedStatus -_02321FF8: - ldr r0, [r4, #0x18c] - tst r0, #0x100000 - beq _02322030 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322280 ; =0x00000E99 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - bl TryInflictFrozenStatus -_02322030: - ldr r0, [r4, #0x18c] - tst r0, #0x1000 - beq _0232206C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322284 ; =0x00000E9B - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0x22 - mov r3, #1 - bl TryInflictConstrictionStatus -_0232206C: - ldr r0, [r4, #0x18c] - tst r0, #0x2000 - beq _023220A8 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322288 ; =0x00000E9A - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictCringeStatus -_023220A8: - ldr r0, [r4, #0x18c] - tst r0, #0x4000 - beq _023220E4 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0232228C ; =0x00000E9C - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r2, #0 - mov r0, r6 - mov r1, r6 - mov r3, r2 - bl ov29_023176CC -_023220E4: - ldr r0, [r4, #0x18c] - tst r0, #0x8000 - beq _0232211C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322290 ; =0x00000E9D - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0 - bl TrySealMove -_0232211C: - ldr r0, [r4, #0x18c] - tst r0, #0x10000 - beq _02322150 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322294 ; =0x00000E9E - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - bl ov29_0231657C -_02322150: - ldr r0, [r4, #0x18c] - tst r0, #0x20000 - beq _0232218C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _02322298 ; =0x00000E9F - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r5 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage -_0232218C: - ldr r0, [r4, #0x18c] - tst r0, #0x200000 - beq _023221C4 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - mov r0, r6 - mov r1, #0xea0 - bl LogMessageByIdWithPopupCheckUser - mov r0, r6 - mov r1, r6 - mov r2, #0 - bl ov29_0231662C -_023221C4: - ldr r0, [r4, #0x18c] - tst r0, #0x400000 - beq _02322200 - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0232229C ; =0x00000EA1 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r2, #1 - mov r0, r6 - mov r1, r6 - mov r3, r2 - bl LowerSpeed -_02322200: - ldr r0, [r4, #0x18c] - tst r0, #0x40000 - beq _0232223C - add r0, r4, #0x100 - ldrsh r1, [r0, #0x90] - mov r0, #0 - bl ov29_02344B9C - ldr r1, _023222A0 ; =0x00000EA2 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r2, #0 - mov r0, r5 - mov r1, r5 - mov r3, r2 - bl TryWarp -_0232223C: - mov r0, #0 - str r0, [r4, #0x18c] -_02322244: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232224C: .word 0x00000E8D -_02322250: .word 0x00000E8E -_02322254: .word 0x00000E8F -_02322258: .word 0x00000EA3 -_0232225C: .word 0x022C4724 -_02322260: .word 0x00000E91 -_02322264: .word 0x00000E92 -_02322268: .word 0x00000E93 -_0232226C: .word 0x00000E94 -_02322270: .word 0x022C4720 -_02322274: .word 0x00000E95 -_02322278: .word 0x00000E96 -_0232227C: .word 0x00000E98 -_02322280: .word 0x00000E99 -_02322284: .word 0x00000E9B -_02322288: .word 0x00000E9A -_0232228C: .word 0x00000E9C -_02322290: .word 0x00000E9D -_02322294: .word 0x00000E9E -_02322298: .word 0x00000E9F -_0232229C: .word 0x00000EA1 -_023222A0: .word 0x00000EA2 - arm_func_end ov29_02321CF0 - - arm_func_start ov29_023222A4 -ov29_023222A4: ; 0x023222A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r2, #1 - mov r7, r0 - mov r6, r1 - mov r4, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x50 - mov r0, r7 - mov r1, r6 - mov r2, #1 - moveq r4, #0xa - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x80 - beq _02322304 - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x90 - bne _0232236C -_02322304: - mov r0, r7 - mov r1, r6 - mov r2, #1 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x90 - moveq r4, #2 - ldrh r0, [r6, #4] - movne r4, #1 - cmp r0, #0x97 - bne _02322340 - mov r0, r7 - bl GetApparentWeather - cmp r0, #1 - beq _0232236C -_02322340: - cmp r5, #0 - beq _0232236C - ldrh r0, [r6, #4] - bl Is2TurnsMove - cmp r0, #0 - beq _0232236C - mov r0, r7 - mov r1, r6 - bl ov29_023245A4 - cmp r0, #0 - moveq r4, #0 -_0232236C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_023222A4 - - arm_func_start ov29_02322374 -ov29_02322374: ; 0x02322374 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x13c - ldr sl, [sp, #0x164] - mov r6, r0 - mov r7, #0 - mov r0, #1 - str r1, [sp, #0xc] - mov r5, r2 - str r3, [sp, #0x10] - mov r8, sl - str r7, [sp, #0x38] - ldr r4, [sp, #0x160] - bl ov29_022E38E0 - mov r0, r6 - mov r1, sl - bl ov29_023245A4 - cmp r0, #0 - mov r0, r6 - mov r2, #1 - mov r1, sl - beq _023223D0 - bl ov29_02324BE8 - b _023223D4 -_023223D0: - bl CanMonsterUseMove -_023223D4: - mov sb, r0 - cmp sb, #0 - beq _023224C4 - ldrh r1, [sl, #4] - ldr r0, _02322D18 ; =0x0000014A - cmp r1, r0 - bne _02322460 - mov r0, #0xa8 - bl DungeonRandInt - mov r2, r0 - ldr r1, _02322D1C ; =0x0237CA88 - add r0, sp, #0x28 - str r2, [r1] - ldr r1, _02322D20 ; =0x022C5DDC - mov r2, r2, lsl #3 - ldrh r1, [r1, r2] - bl InitMove - ldrb r1, [sl] - ldr r0, _02322D24 ; =0x00000EA4 - strb r1, [sp, #0x28] - ldrh r1, [sl, #2] - strh r1, [sp, #0x2a] - bl StringFromMessageId - mov r2, r0 - str r5, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, r6 - mov r1, sl - add r3, sp, #0x38 - bl ov29_02322DDC - mov r0, #1 - bl ov29_022E38E0 - add r8, sp, #0x28 - b _023224C4 -_02322460: - cmp r1, #0x77 - bne _023224C4 - bl ov29_023280D4 - ldr r1, _02322D28 ; =0x022C4E40 - mov r0, r0, lsl #3 - ldrh r1, [r1, r0] - add r0, sp, #0x30 - bl InitMove - ldrb r1, [sl] - ldr r0, _02322D2C ; =0x00000EA5 - strb r1, [sp, #0x30] - ldrh r1, [sl, #2] - strh r1, [sp, #0x32] - bl StringFromMessageId - mov r2, r0 - str r5, [sp] - mov r0, #1 - str r0, [sp, #4] - mov r0, r6 - mov r1, sl - add r3, sp, #0x38 - bl ov29_02322DDC - mov r0, #1 - bl ov29_022E38E0 - add r8, sp, #0x30 -_023224C4: - mov r0, r6 - mov r1, r8 - mov r2, #1 - bl ov29_023222A4 - and fp, r0, #0xff - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - ldr r2, [r6, #0xb4] - mov r3, r1 - bl ov29_0230040C - bl ov29_0234B034 - mov r1, #0 - mov r2, r8 - mov r3, r1 - bl FormatMoveStringMore - mov r0, r6 - mov r1, r8 - bl ov29_023245A4 - cmp r0, #0 - beq _02322554 - ldr r0, _02322D30 ; =0x00000EA6 - bl StringFromMessageId - cmp sb, #0 - ldr r1, [r6, #0xb4] - mov r2, #0 - str r0, [sp, #0x20] - strb r2, [r1, #0x10b] - cmpne sl, r8 - beq _02322598 - mov r0, r6 - mov r1, r8 - mov r2, #1 - bl ov29_02324BE8 - mov sb, r0 - b _02322598 -_02322554: - cmp r5, #0 - bne _0232256C - ldrh r0, [r8, #4] - bl GetMoveMessageFromId - str r0, [sp, #0x20] - b _02322578 -_0232256C: - ldr r0, _02322D34 ; =0x00000EA7 - bl StringFromMessageId - str r0, [sp, #0x20] -_02322578: - cmp sb, #0 - cmpne sl, r8 - beq _02322598 - mov r0, r6 - mov r1, r8 - mov r2, #1 - bl CanMonsterUseMove - mov sb, r0 -_02322598: - cmp sb, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - beq _023225D4 - ldrh r1, [sl, #4] - ldr r0, _02322D18 ; =0x0000014A - cmp r1, r0 - cmpne r1, #0x77 - mov r0, r6 - bne _023225CC - mov r1, sl - bl ov29_022FAA04 - b _023225D4 -_023225CC: - mov r1, r8 - bl ov29_022FAA04 -_023225D4: - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #0xf3] - cmp r0, #1 - bne _02322630 - ldrh r0, [r8, #4] - bl FailsWhileMuzzled - cmp r0, #0 - beq _02322630 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, [sp, #0x20] - mov r0, r6 - bl LogMessageWithPopupCheckUser - mov r0, #0xa - mov r1, #0x3f - bl ov29_022EA370 - ldr r1, _02322D38 ; =0x00000E7B - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - b _02322D10 -_02322630: - cmp sb, #0 - bne _023226D0 - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - ldr r2, [r6, #0xb4] - mov r3, r1 - bl ov29_0230040C - cmp r5, #0 - bne _02322694 - bl ov29_0234B034 - mov r1, #0 - mov r2, r8 - mov r3, r1 - bl FormatMoveStringMore - ldr r1, [sp, #0x20] - mov r0, r6 - bl LogMessageWithPopupCheckUser - mov r0, #0xa - mov r1, #0x3f - bl ov29_022EA370 - ldr r1, _02322D3C ; =0x00000E79 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - b _023226C8 -_02322694: - mov r0, r5, lsl #0x10 - mov r1, r0, asr #0x10 - mov r0, #0 - bl ov29_0234B084 - ldr r1, [sp, #0x20] - mov r0, r6 - bl LogMessageWithPopupCheckUser - mov r0, #0xa - mov r1, #0x3f - bl ov29_022EA370 - ldr r1, _02322D40 ; =0x00000E7A - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_023226C8: - mov r0, #0 - b _02322D10 -_023226D0: - ldr r0, _02322D44 ; =0x0237CA68 - mov r1, #0 - str r1, [r0, #0x10] - str r1, [r0, #0xc] - str r1, [r0, #0x14] - strb r1, [r0, #3] - strb r1, [r0, #2] - strb r1, [r0, #5] - str r1, [r0, #8] - strb r1, [r0, #1] - cmp r4, #0 - beq _02322714 - ldr r1, [r6, #0xb4] - ldrb r0, [r1, #0x15d] - cmp r0, #4 - addlo r0, r0, #1 - strlob r0, [r1, #0x15d] -_02322714: - ldrh r1, [r8, #4] - ldr r0, _02322D48 ; =0x00000163 - cmp r1, r0 - bne _02322768 - mov r0, r6 - mov r1, #0x2b - bl IqSkillIsEnabled - cmp r0, #0 - movne r7, #1 - bne _02322768 - mov r0, r6 - mov r1, #0x28 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02322768 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02322D4C ; =0x022C4584 - ldrsh r1, [r1] - cmp r0, r1 - movlt r7, #1 -_02322768: - cmp r7, #0 - movne r0, #2 - strne r0, [sp, #0x24] - bne _023227B0 - mov r0, r6 - mov r1, #0x5b - bl AbilityIsActive2 - cmp r0, #0 - mov r0, r8 - beq _023227A8 - bl GetMoveNbStrikes - str r0, [sp, #0x24] - cmp r0, #0 - moveq r0, #5 - streq r0, [sp, #0x24] - b _023227B0 -_023227A8: - bl ov29_02324514 - str r0, [sp, #0x24] -_023227B0: - ldr r0, _02322D50 ; =0x022C45B8 - mov r7, #0 - ldrsh r0, [r0] - str r0, [sp, #0x14] - b _02322C8C -_023227C4: - ldr r0, _02322D44 ; =0x0237CA68 - mov sb, #1 - ldrb r1, [r0, #1] - cmp r1, #0 - ldreqb r0, [r0, #4] - cmpeq r0, #0 - bne _02322C98 - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, sb - beq _02322D10 - bl IsFloorOver - cmp r0, #0 - movne r0, sb - bne _02322D10 - ldr r0, [sp, #0x10] - ldr sl, [r6, #0xb4] - cmp r0, #0 - bne _02322824 - ldrh r0, [r8, #4] - cmp r0, #0x19 - cmpne r0, #0xe3 - bne _0232284C -_02322824: - mov r0, r6 - bl ov29_023007A8 - cmp r0, #0 - bne _02322860 - mov r0, r6 - mov r1, #1 - bl ov29_02300DCC - cmp r0, #0 - bne _02322C98 - b _02322860 -_0232284C: - mov r0, r6 - mov r1, #0 - bl ov29_02300DCC - cmp r0, #0 - bne _02322C98 -_02322860: - mov r0, #0 - strb r0, [sl, #0x154] - bl GravityIsActive - cmp r0, #0 - beq _023228A4 - ldrh r1, [r8, #4] - cmp r1, #0xcc - cmpne r1, #0xcd - cmpne r1, #0xce - cmpne r1, #0x99 - cmpne r1, #0xfe - ldrne r0, _02322D54 ; =0x000001ED - cmpne r1, r0 - bne _023228A4 - mov r0, r6 - bl ov29_023383A8 - b _02322C98 -_023228A4: - ldrh r0, [r8, #4] - cmp r0, #9 - bne _023228CC - ldr sb, [r6, #0xb4] - mov r0, #8 - bl DungeonRandInt - strb r0, [sb, #0x4c] - mov r0, r6 - bl UpdateAiTargetPos - mov sb, #0 -_023228CC: - ldr r0, _02322D58 ; =0x0235370C - mov r1, #0 - str r1, [r0] - str r1, [sp, #0x38] - cmp fp, #1 - bhi _02322918 - add r0, sp, #0x38 - mov r1, r6 - mov r2, r8 - bl ov29_02324030 - add r0, sp, #0x38 - mov r1, r6 - bl ov29_02324C9C - cmp r7, #0 - cmpne sb, #0 - beq _02322918 - ldr r0, [sp, #0x38] - cmp r0, #0 - beq _02322C98 -_02322918: - mov r0, #0 - str r0, [sp, #0x1c] - str r0, [sp, #0x18] - b _02322A54 -_02322928: - ldr r0, [sp, #0x18] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x18] - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322A54 - ldr r0, [sl] - cmp r0, #1 - bne _02322A54 - mov r0, sl - mov r1, #0x24 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02322A54 - mov r0, sl - mov r1, r6 - mov r2, #0x1f - mov r3, #0 - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - bne _02322A54 - mov r0, r6 - mov r1, sl - bl ov29_022FB678 - cmp r0, #0 - beq _02322A54 - mov r0, r6 - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - mov r0, r6 - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf - cmp sb, #0x60 - cmpeq r0, #0 - beq _023229FC - cmp sb, #0 - cmpne sb, #0x10 - cmpne sb, #0x20 - cmpne sb, #0x40 - cmpne sb, #0x50 - cmpne sb, #0x70 - cmpne sb, #0x80 - cmpne sb, #0x90 - bne _02322A54 -_023229FC: - mov r0, #0x64 - bl DungeonRandInt - mov r1, r0, lsl #0x10 - ldr r0, [sp, #0x14] - cmp r0, r1, asr #16 - ble _02322A54 - mov r0, sl - bl ov29_022E5864 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, r6 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _02322D5C ; =0x00000EA9 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser - mov r0, #1 - str r0, [sp, #0x1c] - b _02322A68 -_02322A54: - ldr r0, [sp, #0x18] - add r1, sp, #0x38 - ldr sl, [r1, r0, lsl #2] - cmp sl, #0 - bne _02322928 -_02322A68: - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _02322C98 - cmp r7, #0 - moveq r2, #1 - movne r2, #0 - and r2, r2, #0xff - str r5, [sp] - str r2, [sp, #4] - ldr r2, [sp, #0x20] - add r3, sp, #0x38 - mov r0, r6 - mov r1, r8 - bl ov29_02322DDC - ldr r1, _02322D58 ; =0x0235370C - mov sb, r0 - ldr r0, [r1] - mov r1, #0 - str r1, [sp, #0x20] - cmp r0, #0 - beq _02322AC0 - bl ov29_022F9840 -_02322AC0: - ldr r1, [r6, #0xb4] - ldrb r0, [r1, #0xd0] - cmp r0, #2 - cmpne r0, #4 - addne r0, r1, #0x100 - movne r1, #0 - strneh r1, [r0, #0x7e] - strneh r1, [r0, #0x80] - ldr r0, _02322D44 ; =0x0237CA68 - cmp fp, #0 - ldr r1, [r0, #0x10] - add r1, r1, #1 - str r1, [r0, #0x10] - beq _02322B24 - ldrh r0, [r8, #4] - bl ov10_022BFD6C - mov r3, sb - str r5, [sp] - str r4, [sp, #4] - str r0, [sp, #8] - mov r0, r6 - mov r1, r8 - mov r2, fp - bl ov29_023230FC - b _02322B54 -_02322B24: - ldrh r1, [r8, #4] - ldr r0, _02322D60 ; =0x000001F6 - mov r2, r8 - cmp r1, r0 - ldreq r0, [r6, #0xb4] - moveq r1, #1 - streqb r1, [r0, #0x170] - add r0, sp, #0x38 - mov r1, r6 - mov r3, r5 - str r4, [sp] - bl ExecuteMoveEffect -_02322B54: - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322C98 - mov r0, r6 - bl ov29_02304B14 - mov r0, r6 - bl IsMonster__02322DB8 - cmp r0, #0 - beq _02322BE8 - ldrb r0, [r6, #0x28] - cmp r0, #0 - beq _02322BD8 - mov sb, #0 - mov sl, #0x4a - b _02322BD0 -_02322B94: - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322BD8 - add r0, r6, #0x2c - bl sub_0201D1B0 - cmp r0, #0 - ldrneb r0, [r6, #0x28] - cmpne r0, #0 - beq _02322BD8 - mov r0, sl - bl AdvanceFrame - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_02322BD0: - cmp sb, #0x64 - blt _02322B94 -_02322BD8: - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322C98 -_02322BE8: - mov r0, r6 - mov r1, #0x2c - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r1, [r6, #0xb4] - ldrneb r0, [r1, #0x154] - cmpne r0, #0 - ldrneb r0, [r1, #0xd2] - cmpne r0, #1 - cmpne r0, #0xb - beq _02322C68 - mov r2, #0 - strb r2, [r1, #0xd3] - ldr r1, [r6, #0xb4] - ldr r0, _02322D44 ; =0x0237CA68 - strb r2, [r1, #0x154] - ldr r1, [r6, #0xb4] - sub r7, r7, #1 - strb r2, [r1, #0x10b] - ldr r1, [r0, #0x18] - mov r2, #0 - sub r1, r1, #1 - str r1, [r0, #0x18] - ldrb r0, [r8, #6] - mov r1, r8 - cmp r0, #0 - subne r0, r0, #1 - strneb r0, [r8, #6] - mov r0, r6 - bl ov29_023222A4 - and fp, r0, #0xff - b _02322C88 -_02322C68: - ldr r2, [r6, #0xb4] - ldrb r0, [r2, #0x154] - cmp r0, #0 - bne _02322C88 - mov r1, #0 - mov r0, r6 - strb r1, [r2, #0x154] - bl ov29_02318D58 -_02322C88: - add r7, r7, #1 -_02322C8C: - ldr r0, [sp, #0x24] - cmp r7, r0 - blt _023227C4 -_02322C98: - ldr r0, _02322D44 ; =0x0237CA68 - ldrb r0, [r0, #5] - cmp r0, #0 - beq _02322CC4 - mov r0, r6 - mov r1, r6 - mov r2, #1 - bl EndFrozenClassStatus - mov r0, r6 - mov r1, r6 - bl ov29_023068C4 -_02322CC4: - ldr r0, _02322D44 ; =0x0237CA68 - ldrb r0, [r0, #2] - cmp r0, #0 - beq _02322D0C - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02322D0C - mov r2, #0 - ldr r4, [r6, #0xb4] - mov r0, r6 - mov r1, r6 - mov r3, r2 - bl TryInflictConfusedStatus - ldrb r0, [r4, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r4, #0x108] -_02322D0C: - mov r0, #1 -_02322D10: - add sp, sp, #0x13c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02322D18: .word 0x0000014A -_02322D1C: .word 0x0237CA88 -_02322D20: .word 0x022C5DDC -_02322D24: .word 0x00000EA4 -_02322D28: .word 0x022C4E40 -_02322D2C: .word 0x00000EA5 -_02322D30: .word 0x00000EA6 -_02322D34: .word 0x00000EA7 -_02322D38: .word 0x00000E7B -_02322D3C: .word 0x00000E79 -_02322D40: .word 0x00000E7A -_02322D44: .word 0x0237CA68 -_02322D48: .word 0x00000163 -_02322D4C: .word 0x022C4584 -_02322D50: .word 0x022C45B8 -_02322D54: .word 0x000001ED -_02322D58: .word 0x0235370C -_02322D5C: .word 0x00000EA9 -_02322D60: .word 0x000001F6 - arm_func_end ov29_02322374 - - arm_func_start DefenderAbilityIsActive__02322D64 -DefenderAbilityIsActive__02322D64: ; 0x02322D64 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r7, r6 - beq _02322DA8 - bl IsMonster__02322DB8 - cmp r0, #0 - cmpne r4, #0 - beq _02322DA8 - mov r0, r7 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02322DA8: - mov r0, r6 - mov r1, r5 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end DefenderAbilityIsActive__02322D64 - - arm_func_start IsMonster__02322DB8 -IsMonster__02322DB8: ; 0x02322DB8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__02322DB8 - - arm_func_start ov29_02322DDC -ov29_02322DDC: ; 0x02322DDC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov r8, r2 - mov r5, r4 - mov sl, r0 - mov sb, r1 - mov fp, r3 - ldr r7, [sp, #0x28] - bl ov29_022E272C - cmp r0, #0 - movne r5, #1 - cmp r8, #0 - beq _02322ED0 - mov r6, #0 - b _02322E38 -_02322E18: - ldr r0, [fp, r6, lsl #2] - cmp r0, #0 - beq _02322E40 - bl ov29_022E272C - cmp r0, #0 - movne r5, #1 - bne _02322E40 - add r6, r6, #1 -_02322E38: - cmp r6, #0x41 - blt _02322E18 -_02322E40: - cmp r5, #0 - beq _02322E94 - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - ldr r2, [sl, #0xb4] - mov r3, r1 - bl ov29_0230040C - cmp r7, #0 - bne _02322E80 - bl ov29_0234B034 - mov r1, #0 - mov r2, sb - mov r3, r1 - bl FormatMoveStringMore - b _02322EAC -_02322E80: - mov r0, r7, lsl #0x10 - mov r1, r0, asr #0x10 - mov r0, #0 - bl ov29_0234B084 - b _02322EAC -_02322E94: - cmp r7, #0 - beq _02322EAC - mov r0, r7, lsl #0x10 - mov r1, r0, asr #0x10 - mov r0, #0 - bl ov29_0234B084 -_02322EAC: - ldrh r1, [sb, #4] - ldr r0, _02322F74 ; =0x00000163 - cmp r1, r0 - mov r0, sl - mov r1, r8 - beq _02322ECC - bl LogMessageWithPopup - b _02322ED0 -_02322ECC: - bl LogMessageQuiet -_02322ED0: - cmp r5, #0 - beq _02322F5C - ldrb r0, [sp, #0x2c] - mov r1, sb - cmp r0, #0 - mov r0, sl - beq _02322EF8 - mov r2, #1 - bl ov29_02324E78 - b _02322F00 -_02322EF8: - mov r2, #0 - bl ov29_02324E78 -_02322F00: - mov r4, r0 - ldrh r0, [sb, #4] - cmp r0, #0xfe - bne _02322F24 - mov r0, sl - bl EntityIsValid__02321438 - cmp r0, #0 - movne r0, #0xff - strneb r0, [sl, #0xaf] -_02322F24: - ldrh r0, [sb, #4] - bl ov00_022BFDAC - cmp r0, #0 - beq _02322F4C - ldr r1, [sl, #0xb4] - mov r0, sl - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 - mov r0, #1 - bl ov29_022E38E0 -_02322F4C: - mov r0, sl - mov r1, sb - bl ov29_023250D4 - b _02322F6C -_02322F5C: - ldr r1, [sl, #0xb4] - mov r0, sl - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 -_02322F6C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02322F74: .word 0x00000163 - arm_func_end ov29_02322DDC - - arm_func_start ov29_02322F78 -ov29_02322F78: ; 0x02322F78 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x18 - ldr r4, _023230F4 ; =0x02353538 - mov r7, r0 - ldr r0, [r4] - mov r6, r1 - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - mov r5, r2 - mov r8, r3 - cmp r0, #0 - ldr r4, [r7, #0xb4] - mvnne r0, #0 - bne _023230EC - ldrsh r0, [r4, #4] - bl GetBodySize - cmp r0, #4 - blo _02322FC8 - cmp r8, #1 - beq _023230E8 -_02322FC8: - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r5, #4] - mov r2, #1 - bl GetMoveAnimationId - bl GetMoveAnimation - ldrsh r0, [r0, #6] - ldrsh r3, [r6, #2] - mov r1, #0x18 - ldrsh r2, [r6] - smulbb r3, r3, r1 - smulbb r2, r2, r1 - add r3, r3, #0x10 - add r2, r2, #0xc - mov r6, r3, lsl #8 - mov r2, r2, lsl #8 - mov r3, r2, asr #8 - mov r2, r6, asr #8 - strh r3, [sp] - strh r2, [sp, #2] - cmp r0, #0 - beq _023230E0 - mov r0, #0x5e - bl AdvanceFrame - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r5, #4] - mov r2, #1 - bl GetMoveAnimationId - mov r1, r0 - ldrsh r0, [r4, #4] - bl ov10_022BF01C - mov r2, r0 - mvn r0, #0 - cmp r2, r0 - ldreq r0, _023230F8 ; =0x02352A54 - ldreqh r1, [r0] - streqh r1, [sp, #0xc] - ldreqh r0, [r0, #2] - streqh r0, [sp, #0xe] - beq _02323084 - add r0, sp, #0xc - add r1, r7, #0x2c - and r2, r2, #0xff - bl sub_0201CF90 -_02323084: - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r5, #4] - mov r2, #1 - bl GetMoveAnimationId - strh r0, [sp, #4] - ldrsh r2, [r4, #4] - add r0, sp, #4 - add r1, sp, #0 - strh r2, [sp, #6] - ldr r3, [r7, #0xc] - mov r2, #0 - mov r3, r3, asr #8 - strh r3, [sp, #8] - ldr r3, [r7, #0x10] - mov r3, r3, asr #8 - strh r3, [sp, #0xa] - ldrb r3, [r4, #0x4c] - str r3, [sp, #0x10] - str r2, [sp, #0x14] - bl ov10_022BE9E8 - b _023230EC -_023230E0: - sub r0, r1, #0x19 - b _023230EC -_023230E8: - mvn r0, #0 -_023230EC: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023230F4: .word 0x02353538 -_023230F8: .word 0x02352A54 - arm_func_end ov29_02322F78 - - arm_func_start ov29_023230FC -ov29_023230FC: ; 0x023230FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc0 - ldr r4, _023238F4 ; =0x02352A54 - mov r8, r0 - mov r0, #0 - str r0, [sp, #0x88] - ldr r0, [r4, #4] - mov r7, r1 - ldr r1, [r4, #8] - str r0, [sp, #0xb0] - str r1, [sp, #0xb4] - ldr r1, [sp, #0x88] - ldrh r0, [r7, #4] - mov r6, r2 - mov fp, r3 - str r1, [sp, #0x84] - mov r5, r1 - ldr sb, [r8, #0xb4] - bl GetMoveAnimationSpeed - cmp r0, #1 - moveq sl, #2 - beq _02323160 - cmp r0, #2 - moveq sl, #3 - movne sl, #6 -_02323160: - ldrsh r2, [r8, #4] - ldr r0, _023238F8 ; =0x0235171C - ldr r1, _023238FC ; =0x0235171E - strh r2, [sp, #0xbc] - ldrsh r2, [r8, #6] - mov r4, #0 - strh r2, [sp, #0xbe] - ldrb r2, [sb, #0x4c] - mov r2, r2, lsl #2 - ldrsh r0, [r0, r2] - str r0, [sp, #0x6c] - ldrsh r0, [r1, r2] - str r0, [sp, #0x68] - b _02323214 -_02323198: - ldrsh r2, [sp, #0xbc] - cmp r2, #0 - ldrgesh r1, [sp, #0xbe] - cmpge r1, #0 - blt _0232321C - cmp r2, #0x38 - cmplt r1, #0x20 - bge _0232321C - ldr r0, [sp, #0x6c] - add r0, r2, r0 - strh r0, [sp, #0xbc] - ldr r0, [sp, #0x68] - add r0, r1, r0 - strh r0, [sp, #0xbe] - ldr r0, [sp, #0x84] - ldrsh r1, [sp, #0xbe] - add r0, r0, #1 - str r0, [sp, #0x84] - ldrsh r0, [sp, #0xbc] - bl GetTile - ldrh r1, [r0] - tst r1, #3 - beq _0232321C - ldr r1, [r0, #0xc] - cmp r1, #0 - beq _02323210 - ldr r0, [r1] - cmp r0, #1 - moveq r5, r1 - beq _0232321C -_02323210: - add r4, r4, #1 -_02323214: - cmp r4, r6 - blt _02323198 -_0232321C: - mov r0, r8 - ldrh r1, [r7, #4] - bl ov29_02324D60 - cmp r0, #0 - beq _02323250 - mov r0, r8 - mov r1, r7 - bl ov29_023245A4 - cmp r0, #0 - mvneq r0, #0 - streq r0, [sp, #0xb0] - streq r0, [sp, #0xb4] - beq _023232E4 -_02323250: - mov r0, r8 - add r1, sp, #0xbc - mov r2, r7 - mov r3, r6 - bl ov29_02322F78 - str r0, [sp, #0xb0] - ldrb r0, [sp, #0xf0] - cmp r0, #0 - beq _023232E4 - cmp r5, #0 - mvneq r0, #0 - streq r0, [sp, #0xb4] - beq _023232E4 - ldrsh r2, [r8, #4] - mov r0, r5 - add r1, sp, #0xb8 - strh r2, [sp, #0xb8] - ldrsh r4, [r8, #6] - mov r2, r7 - mov r3, r6 - strh r4, [sp, #0xba] - bl ov29_02322F78 - ldrsh r2, [r5, #4] - str r0, [sp, #0xb4] - ldr r0, _023238F8 ; =0x0235171C - strh r2, [sp, #0xb8] - ldrsh r2, [r5, #6] - ldr r1, _023238FC ; =0x0235171E - strh r2, [sp, #0xba] - ldrb r2, [sb, #0x4c] - add r2, r2, #4 - mov r2, r2, lsl #0x1d - mov r2, r2, lsr #0x1b - ldrsh r0, [r0, r2] - str r0, [sp, #0x64] - ldrsh r0, [r1, r2] - str r0, [sp, #0x60] -_023232E4: - ldrsh r0, [r8, #4] - ldr r5, _02323900 ; =0x0235175C - ldr r3, _023238F8 ; =0x0235171C - strh r0, [sp, #0xbc] - ldrsh r1, [r8, #6] - ldr r2, _023238FC ; =0x0235171E - mov r0, #0x18 - strh r1, [sp, #0xbe] - ldrb r1, [sb, #0x4c] - str r1, [sp, #0x1c] - ldr r4, [sp, #0x1c] - mov r1, sl - ldr r4, [r5, r4, lsl #2] - str r4, [sp, #0x7c] - ldr r4, [sp, #0x1c] - mov r4, r4, lsl #2 - ldrsh r3, [r3, r4] - ldrsh r2, [r2, r4] - str r3, [sp, #0x10] - str r2, [sp, #0xc] - bl DivideInt - ldr r2, [sp, #0x84] - str r0, [sp, #0x18] - mul r1, r2, r0 - cmp r6, #2 - blt _0232335C - add r4, r1, #8 - cmp r4, #0x40 - movge r4, #0x40 - b _02323360 -_0232335C: - mov r4, #0x20 -_02323360: - mov r0, #0x80000 - mov sb, #0 - bl DivideInt - str r0, [sp, #0x80] - mov r0, #1 - bl ov29_0234B4CC - mov r1, sb - str r1, [sp, #0x14] - ldr r1, [sp, #0x10] - mov r0, sl, lsl #8 - mul r2, r1, r0 - ldr r1, [sp, #0xc] - str r2, [sp, #0x2c] - mul r2, r1, r0 - ldr r1, [sp, #0x64] - str r2, [sp, #0x28] - mul r2, r1, r0 - ldr r1, [sp, #0x60] - str r2, [sp, #0x48] - mul r0, r1, r0 - str r0, [sp, #0x44] - ldr r0, [sp, #0x7c] - ldr r1, _02323904 ; =0x00000FFF - add r3, r0, #0xc00 - add r2, r0, #0x1400 - mov r0, r4, asr #1 - str r0, [sp, #0x3c] - and r0, r3, r1 - str r0, [sp, #0x40] - and r0, r2, r1 - str r0, [sp, #0x30] - rsb r0, r4, #0 - str r0, [sp, #0x34] - ldr r1, _02323908 ; =0x02352A6C - ldr r0, [sp, #0x1c] - ldr r5, [sp, #0xb4] - ldr r0, [r1, r0, lsl #2] - str r0, [sp, #0x38] - b _02323824 -_023233FC: - ldrsh r1, [sp, #0xbc] - cmp r1, #0 - ldrgesh r2, [sp, #0xbe] - cmpge r2, #0 - blt _02323830 - cmp r1, #0x38 - cmplt r2, #0x20 - bge _02323830 - ldr r0, [sp, #0x10] - ldrh r3, [sp, #0xbc] - add r1, r1, r0 - ldr r0, [sp, #0xc] - cmp r5, #0 - add r0, r2, r0 - ldrh r2, [sp, #0xbe] - strh r3, [sp, #0xa0] - strh r1, [sp, #0xbc] - strh r2, [sp, #0xa2] - strh r0, [sp, #0xbe] - blt _0232347C - ldrh r0, [sp, #0xba] - ldrh r2, [sp, #0xb8] - ldrsh r1, [sp, #0xb8] - strh r0, [sp, #0xa6] - ldr r0, [sp, #0x64] - strh r2, [sp, #0xa4] - add r0, r1, r0 - strh r0, [sp, #0xb8] - ldrsh r1, [sp, #0xba] - ldr r0, [sp, #0x60] - add r0, r1, r0 - strh r0, [sp, #0xba] -_0232347C: - add r0, sp, #0xbc - bl ov29_022E2CA0 - cmp r0, #0 - beq _02323740 - ldr r0, _0232390C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - bne _02323740 - ldrsh r0, [sp, #0xa0] - mov r1, #0x18 - ldrsh r2, [sp, #0xa2] - smulbb r0, r0, r1 - add r0, r0, #0xc - mov r0, r0, lsl #8 - str r0, [sp, #0x5c] - smulbb r0, r2, r1 - add r0, r0, #0x10 - cmp r5, #0 - mov sl, r0, lsl #8 - blt _0232350C - ldrsh r3, [sp, #0xa4] - ldr r0, [sp, #0x48] - ldrsh r2, [sp, #0xa6] - str r0, [sp, #0x24] - smulbb r0, r3, r1 - add r0, r0, #0xc - mov r0, r0, lsl #8 - smulbb r1, r2, r1 - str r0, [sp, #0x58] - add r0, r1, #0x10 - mov r0, r0, lsl #8 - str r0, [sp, #0x54] - ldr r0, [sp, #0x44] - str r0, [sp, #0x20] -_0232350C: - mov r0, #0 - str r0, [sp, #0x78] - ldr r0, [sp, #0xb0] - str r0, [sp, #0x8c] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x90] - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x94] - b _0232372C -_02323538: - ldr r0, [sp, #0x8c] - cmp r0, #0 - blt _02323600 - cmp fp, #1 - bne _02323564 - mov r0, sb, asr #8 - bl sub_020018D0 - mul r0, r4, r0 - str r0, [sp, #0x50] - mov r2, #0 - b _023235B4 -_02323564: - cmp fp, #2 - movne r0, #0 - strne r0, [sp, #0x50] - movne r2, r0 - bne _023235B4 - mov r0, sb, asr #8 - bl sub_020018D0 - ldr r1, [sp, #0x3c] - mul r0, r1, r0 - mov r0, r0, asr #8 - str r0, [sp, #0x74] - ldr r0, [sp, #0x40] - bl sub_020018D0 - ldr r1, [sp, #0x74] - mul r0, r1, r0 - str r0, [sp, #0x50] - ldr r0, [sp, #0x40] - bl sub_02001980 - ldr r1, [sp, #0x74] - mul r2, r1, r0 -_023235B4: - ldr r0, [sp, #0x5c] - add r1, sp, #0x9c - add r0, r0, r2 - mov r0, r0, asr #8 - strh r0, [sp, #0x9c] - ldr r0, [sp, #0x50] - ldr r2, _0232390C ; =0x02353538 - sub r0, sl, r0 - mov r0, r0, asr #8 - ldr r3, [r2] - strh r0, [sp, #0x9e] - ldr r2, _02323910 ; =0x0001A226 - ldr r0, [sp, #0x90] - ldrsh r2, [r3, r2] - rsb r2, r2, sl, asr #8 - add r3, r2, r2, lsr #31 - ldr r2, [sp, #0x38] - add r2, r2, r3, asr #1 - bl ov10_022BEB2C -_02323600: - cmp r5, #0 - blt _023236D0 - cmp fp, #1 - bne _0232362C - mov r0, sb, asr #8 - bl sub_020018D0 - ldr r1, [sp, #0x34] - mov r2, #0 - mul r0, r1, r0 - str r0, [sp, #0x4c] - b _0232367C -_0232362C: - cmp fp, #2 - movne r2, #0 - movne r0, r2 - strne r0, [sp, #0x4c] - bne _0232367C - mov r0, sb, asr #8 - bl sub_020018D0 - ldr r1, [sp, #0x3c] - mul r0, r1, r0 - mov r0, r0, asr #8 - str r0, [sp, #0x70] - ldr r0, [sp, #0x30] - bl sub_020018D0 - ldr r1, [sp, #0x70] - mul r0, r1, r0 - str r0, [sp, #0x4c] - ldr r0, [sp, #0x30] - bl sub_02001980 - ldr r1, [sp, #0x70] - mul r2, r1, r0 -_0232367C: - ldr r0, [sp, #0x58] - ldr r1, [sp, #0x54] - add r0, r0, r2 - mov r0, r0, asr #8 - strh r0, [sp, #0x98] - ldr r0, [sp, #0x4c] - ldr r2, _0232390C ; =0x02353538 - sub r0, r1, r0 - mov r0, r0, asr #8 - ldr r3, [r2] - strh r0, [sp, #0x9a] - ldr r2, _02323910 ; =0x0001A226 - ldr r0, [sp, #0x94] - ldrsh r3, [r3, r2] - ldr r2, [sp, #0x54] - add r1, sp, #0x98 - rsb r2, r3, r2, asr #8 - add r3, r2, r2, lsr #31 - ldr r2, [sp, #0x38] - add r2, r2, r3, asr #1 - bl ov10_022BEB2C -_023236D0: - mov r0, #0x30 - bl AdvanceFrame - ldr r1, [sp, #0x5c] - ldr r0, [sp, #0x2c] - cmp r5, #0 - add r0, r1, r0 - str r0, [sp, #0x5c] - ldr r0, [sp, #0x28] - add sl, sl, r0 - blt _02323718 - ldr r1, [sp, #0x58] - ldr r0, [sp, #0x24] - add r0, r1, r0 - str r0, [sp, #0x58] - ldr r1, [sp, #0x54] - ldr r0, [sp, #0x20] - add r0, r1, r0 - str r0, [sp, #0x54] -_02323718: - ldr r0, [sp, #0x80] - add sb, sb, r0 - ldr r0, [sp, #0x78] - add r0, r0, #1 - str r0, [sp, #0x78] -_0232372C: - ldr r1, [sp, #0x78] - ldr r0, [sp, #0x18] - cmp r1, r0 - blt _02323538 - b _0232374C -_02323740: - ldr r1, [sp, #0x80] - ldr r0, [sp, #0x18] - mla sb, r1, r0, sb -_0232374C: - ldrsh r0, [sp, #0xbc] - ldrsh r1, [sp, #0xbe] - bl GetTile - mov sl, r0 - ldrh r0, [sl] - tst r0, #3 - beq _02323830 - ldr r0, [sl, #0xc] - cmp r0, #0 - beq _02323818 - ldr r0, [r0] - cmp r0, #1 - bne _02323818 - mov r0, r8 - mov r1, #0x2e - bl IqSkillIsEnabled - cmp r0, #0 - bne _023237A8 - mov r0, r8 - mov r1, #0x60 - bl ExclusiveItemEffectIsActive__02323918 - cmp r0, #0 - beq _023237BC -_023237A8: - mov r0, r8 - ldr r1, [sl, #0xc] - bl ov29_022FAFD4 - cmp r0, #0 - bne _02323818 -_023237BC: - ldr r0, [sl, #0xc] - mov r1, r7 - bl ov29_02324854 - cmp r0, #0 - bne _02323818 - mov r0, r8 - mov r1, #1 - bl ov29_023024E0 - mov r4, r0 - mov r0, r8 - mov r1, r7 - mov r2, #0 - bl GetEntityMoveTargetAndRange - ldr r1, [sl, #0xc] - mov r2, r0 - stmia sp, {r1, r7} - add r1, sp, #0xa8 - mov r0, #0 - mov r3, r8 - str r4, [sp, #8] - bl ov29_023243B4 - str r0, [sp, #0x88] - b _02323830 -_02323818: - ldr r0, [sp, #0x14] - add r0, r0, #1 - str r0, [sp, #0x14] -_02323824: - ldr r0, [sp, #0x14] - cmp r0, r6 - blt _023233FC -_02323830: - ldr r0, [sp, #0xb0] - cmp r0, #0 - blt _02323848 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BDE50 -_02323848: - cmp r5, #0 - blt _0232385C - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BDE50 -_0232385C: - mov r0, #0 - bl ov29_0234B4CC - ldrh r1, [r7, #4] - ldr r0, _02323914 ; =0x000001E5 - cmp r1, r0 - bne _0232387C - mov r0, #1 - bl ov29_022E38E0 -_0232387C: - ldr r0, [sp, #0x88] - cmp r0, #0 - ble _023238B4 - ldr r1, [sp, #0x88] - add r0, sp, #0xa8 - mov r2, #0 - str r2, [r0, r1, lsl #2] - ldr r4, [sp, #0xec] - ldr r3, [sp, #0xe8] - mov r1, r8 - mov r2, r7 - str r4, [sp] - bl ExecuteMoveEffect - b _023238EC -_023238B4: - cmp r6, #1 - bne _023238EC - add r0, sp, #0xbc - bl ov29_022E2CA0 - cmp r0, #0 - beq _023238EC - mov r0, #1 - mov r1, #0x4a - bl ov29_022EA370 - add r3, sp, #0xbc - mov r0, r8 - mov r2, r7 - mov r1, #0 - bl ov29_023256B4 -_023238EC: - add sp, sp, #0xc0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023238F4: .word 0x02352A54 -_023238F8: .word 0x0235171C -_023238FC: .word 0x0235171E -_02323900: .word 0x0235175C -_02323904: .word 0x00000FFF -_02323908: .word 0x02352A6C -_0232390C: .word 0x02353538 -_02323910: .word 0x0001A226 -_02323914: .word 0x000001E5 - arm_func_end ov29_023230FC - - arm_func_start ExclusiveItemEffectIsActive__02323918 -ExclusiveItemEffectIsActive__02323918: ; 0x02323918 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__02323918 - - arm_func_start ov29_0232393C -ov29_0232393C: ; 0x0232393C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x38 - ldr r0, [r0, #0xb4] - mov sb, r2 - str r0, [sp, #0x18] - mov sl, r1 - ldrh r0, [sb, #4] - ldr r1, [sp, #0x60] - str r3, [sp] - str r1, [sp, #0x60] - ldr r7, [sl, #0xb4] - bl GetMoveAnimationSpeed - cmp r0, #1 - moveq r6, #2 - beq _02323984 - cmp r0, #2 - moveq r6, #3 - movne r6, #6 -_02323984: - ldr r0, [sp, #0x18] - ldr r4, _02323C30 ; =0x0235171C - ldrb r1, [r0, #0x4c] - ldrsh r0, [sl, #4] - ldr r5, _02323C34 ; =0x0235171E - add r1, r1, #4 - strh r0, [sp, #0x34] - and r0, r1, #7 - mov r8, r0, lsl #2 - ldrsh r4, [r4, r8] - ldrsh r3, [sl, #6] - add r1, sp, #0x34 - str r4, [sp, #0x24] - ldrsh r4, [r5, r8] - strh r3, [sp, #0x36] - ldr r3, [sp] - mov r0, sl - mov r2, sb - str r4, [sp, #0x20] - bl ov29_02322F78 - mov r4, r0 - mov r1, r6 - mov r0, #0x18 - bl DivideInt - str r0, [sp, #4] - ldr r0, [sp] - cmp r0, #2 - mov r2, r0 - ldr r0, [sp, #4] - mul r1, r2, r0 - blt _02323A18 - add r0, r1, #8 - str r0, [sp, #0x14] - cmp r0, #0x40 - movge r0, #0x40 - strge r0, [sp, #0x14] - b _02323A20 -_02323A18: - mov r0, #0x20 - str r0, [sp, #0x14] -_02323A20: - mov r0, #0x80000 - mov r5, #0 - bl DivideInt - str r0, [sp, #0x1c] - ldrb r2, [r7, #0x4c] - ldr r1, _02323C38 ; =0x02352A8C - mov r0, #1 - ldr r1, [r1, r2, lsl #2] - str r1, [sp, #0x10] - bl ov29_0234B4CC - ldr r0, [sp, #0x24] - mov r2, r6, lsl #8 - mul r1, r0, r2 - ldr r0, [sp, #0x20] - str r1, [sp, #0xc] - mul r1, r0, r2 - mov fp, r5 - str r1, [sp, #8] - b _02323BC0 -_02323A6C: - ldrsh r2, [sp, #0x34] - cmp r2, #0 - ldrgesh r1, [sp, #0x36] - cmpge r1, #0 - blt _02323BCC - cmp r2, #0x38 - cmplt r1, #0x20 - bge _02323BCC - ldr r0, [sp, #0x24] - ldrh r6, [sp, #0x34] - add r2, r2, r0 - ldr r0, [sp, #0x20] - ldrh r3, [sp, #0x36] - add r1, r1, r0 - add r0, sp, #0x34 - strh r6, [sp, #0x30] - strh r3, [sp, #0x32] - strh r2, [sp, #0x34] - strh r1, [sp, #0x36] - bl ov29_022E2CA0 - cmp r0, #0 - beq _02323BB0 - ldr r0, _02323C3C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - bne _02323BB0 - ldrsh r2, [sp, #0x30] - ldrsh r1, [sp, #0x32] - mov r0, #0x18 - smulbb r2, r2, r0 - smulbb r0, r1, r0 - add r0, r0, #0x10 - mov r8, r0, lsl #8 - mov r0, r4, lsl #0x10 - add r1, r2, #0xc - mov r0, r0, asr #0x10 - mov r7, r1, lsl #8 - mov r6, #0 - str r0, [sp, #0x28] - b _02323BA0 -_02323B14: - cmp r4, #0 - blt _02323B7C - ldr r0, [sp, #0x60] - cmp r0, #1 - movne r0, #0 - bne _02323B3C - mov r0, r5, asr #8 - bl sub_020018D0 - ldr r1, [sp, #0x14] - mul r0, r1, r0 -_02323B3C: - sub r0, r8, r0 - ldr r2, _02323C3C ; =0x02353538 - mov r0, r0, asr #8 - strh r0, [sp, #0x2e] - mov r0, r7, asr #8 - ldr r3, [r2] - strh r0, [sp, #0x2c] - ldr r2, _02323C40 ; =0x0001A226 - ldr r0, [sp, #0x28] - ldrsh r2, [r3, r2] - add r1, sp, #0x2c - rsb r2, r2, r8, asr #8 - add r3, r2, r2, lsr #31 - ldr r2, [sp, #0x10] - add r2, r2, r3, asr #1 - bl ov10_022BEB2C -_02323B7C: - mov r0, #0x30 - bl AdvanceFrame - ldr r0, [sp, #0xc] - add r6, r6, #1 - add r7, r7, r0 - ldr r0, [sp, #8] - add r8, r8, r0 - ldr r0, [sp, #0x1c] - add r5, r5, r0 -_02323BA0: - ldr r0, [sp, #4] - cmp r6, r0 - blt _02323B14 - b _02323BBC -_02323BB0: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #4] - mla r5, r1, r0, r5 -_02323BBC: - add fp, fp, #1 -_02323BC0: - ldr r0, [sp] - cmp fp, r0 - blt _02323A6C -_02323BCC: - cmp r4, #0 - blt _02323BE0 - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BDE50 -_02323BE0: - mov r0, #1 - bl ov29_022E38E0 - mov r0, #0 - bl ov29_0234B4CC - mov r0, #1 - mov r1, #0x4a - bl ov29_022EA370 - ldrh r1, [sb, #4] - ldr r0, _02323C44 ; =0x00000232 - add r3, sp, #0x34 - cmp r1, r0 - ldreq r0, [sp, #0x18] - moveq r1, #0 - streqb r1, [r0, #0x170] - mov r0, sl - mov r2, sb - mov r1, #0 - bl ov29_023256B4 - add sp, sp, #0x38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02323C30: .word 0x0235171C -_02323C34: .word 0x0235171E -_02323C38: .word 0x02352A8C -_02323C3C: .word 0x02353538 -_02323C40: .word 0x0001A226 -_02323C44: .word 0x00000232 - arm_func_end ov29_0232393C - - arm_func_start MoveHitCheck -MoveHitCheck: ; 0x02323C48 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov fp, r2 - mov r7, r0 - mov r6, r1 - mov r0, fp - mov r1, r3 - bl GetMoveAccuracyOrAiChance - mov r8, r0 - mov r0, #0x64 - bl DungeonRandInt - mov r1, #0 - str r1, [sp, #4] - ldr sb, [r7, #0xb4] - str r0, [sp, #8] - ldrsh r0, [sb, #2] - mov r1, r1 - str r1, [sp] - ldr r5, [r6, #0xb4] - bl GetMonsterGenderVeneer - cmp r0, #2 - moveq r0, #1 - streq r0, [sp, #4] - ldrsh r0, [r5, #2] - bl GetMonsterGenderVeneer - cmp r0, #2 - moveq r0, #1 - streq r0, [sp] - ldrb r0, [sp, #0x30] - mov sl, #0 - mov r4, sl - cmp r0, #0 - beq _02323CD8 - cmp r7, r6 - moveq r0, #1 - beq _02324008 -_02323CD8: - ldrh r1, [fp, #4] - ldr r0, _02324010 ; =0x00000163 - cmp r1, r0 - bne _02323D00 - mov r0, r7 - mov r1, #4 - bl IqSkillIsEnabled - cmp r0, #0 - movne r0, #1 - bne _02324008 -_02323D00: - ldrb r0, [sb, #0xec] - cmp r0, #1 - moveq r0, #1 - beq _02324008 - cmp r0, #2 - moveq r0, #0 - beq _02324008 - cmp r8, #0x64 - movgt r0, #1 - bgt _02324008 - mov r0, r6 - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _02323D4C - mov r0, r6 - mov r1, #0x2a - bl HasHeldItem -_02323D4C: - cmp r0, #0 - ldrne r0, _02324014 ; =0x022C47A8 - mov r1, #5 - ldrne r0, [r0] - subne r8, r8, r0 - mov r0, r6 - bl IqSkillIsEnabled - cmp r0, #0 - ldrne r0, _02324018 ; =0x022C4808 - mov r1, #0x33 - ldrne r0, [r0] - ldrsh sb, [sb, #0x2c] - subne r8, r8, r0 - mov r0, r7 - bl AbilityIsActive2 - cmp r0, #0 - ldrh r0, [fp, #4] - addne sl, sl, #2 - cmp r0, #0x40 - bne _02323DB8 - mov r0, r7 - bl GetApparentWeather - cmp r0, #4 - moveq r0, #1 - beq _02324008 - cmp r0, #1 - subeq sl, sl, #2 -_02323DB8: - ldrh r1, [fp, #4] - ldr r0, _0232401C ; =0x0000010E - cmp r1, r0 - bne _02323DDC - mov r0, r7 - bl GetApparentWeather - cmp r0, #5 - moveq r0, #1 - beq _02324008 -_02323DDC: - mov r0, r7 - mov r1, #0x30 - bl IqSkillIsEnabled - cmp r0, #0 - addne sl, sl, #1 - ldrb r0, [r5, #0xfe] - add sb, sb, sl - ldrsh sl, [r5, #0x2e] - cmp r0, #0 - mov r0, r6 - movne sl, #0xa - bl GetApparentWeather - cmp r0, #2 - bne _02323E30 - mov r0, r7 - mov r1, r6 - mov r2, #0x1d - mov r3, #1 - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - addne r4, r4, #2 -_02323E30: - mov r0, r7 - mov r1, #0x30 - bl AbilityIsActive2 - cmp r0, #0 - beq _02323E54 - ldrh r0, [fp, #4] - bl MoveIsNotPhysical - cmp r0, #0 - addeq r4, r4, #2 -_02323E54: - mov r0, r6 - mov r1, #0x3f - bl IqSkillIsEnabled - cmp r0, #0 - beq _02323E94 - ldrsh r2, [r5, #0x12] - ldrsh r1, [r5, #0x16] - ldr r0, _02324020 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r0 - movgt r2, r0 - mov r0, r2, asr #1 - ldrsh r1, [r5, #0x10] - add r0, r2, r0, lsr #30 - cmp r1, r0, asr #2 - addle r4, r4, #2 -_02323E94: - mov r0, r6 - mov r1, #0x30 - bl IqSkillIsEnabled - cmp r0, #0 - mov r0, r7 - mov r1, r6 - mov r2, #0x62 - mov r3, #1 - subne r4, r4, #1 - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - beq _02323ED8 - ldrb r0, [r5, #0xd0] - cmp r0, #2 - ldrneb r0, [r5, #0xf1] - cmpne r0, #2 - addeq r4, r4, #3 -_02323ED8: - mov r0, r7 - mov r1, r6 - mov r2, #0x77 - mov r3, #1 - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - beq _02323F18 - mov r0, r6 - bl GetApparentWeather - cmp r0, #5 - beq _02323F14 - mov r0, r6 - bl GetApparentWeather - cmp r0, #7 - bne _02323F18 -_02323F14: - add r4, r4, #2 -_02323F18: - mov r0, r6 - bl GetApparentWeather - ldr r2, _02324024 ; =0x02353710 - ldrb r1, [r2, r0] - cmp r1, #0 - beq _02323F44 - ldrb r1, [r2, r0] - mov r0, r6 - bl ExclusiveItemEffectIsActive__02323918 - cmp r0, #0 - addne r4, r4, #1 -_02323F44: - mov r0, r7 - mov r1, #0x6a - add sl, sl, r4 - bl AbilityIsActive2 - cmp r0, #0 - movne sb, #0xa - mov r0, r7 - mov r1, r6 - mov r2, #0x6a - mov r3, #1 - movne sl, sb - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - movne sb, #0xa - movne sl, sb - cmp sb, #0 - movlt sb, #0 - blt _02323F94 - cmp sb, #0x14 - movgt sb, #0x14 -_02323F94: - ldr r2, _02324028 ; =0x022C540C - ldr r0, [sp, #4] - mov r1, #0xa8 - mla r1, r0, r1, r2 - ldr r3, [r1, sb, lsl #2] - cmp sl, #0 - movlt sl, #0 - cmp sl, #0x14 - movgt sl, #0x14 - cmp r3, #0 - movlt r3, #0 - cmp r3, #0x6400 - ldr r2, _0232402C ; =0x022C5460 - ldr r0, [sp] - mov r1, #0xa8 - mla r1, r0, r1, r2 - movgt r3, #0x6400 - mul r0, r8, r3 - ldr r1, [r1, sl, lsl #2] - mov r8, r0, asr #8 - cmp r1, #0 - movlt r1, #0 - cmp r1, #0x6400 - movgt r1, #0x6400 - mul r1, r8, r1 - ldr r0, [sp, #8] - cmp r0, r1, asr #8 - movlt r0, #1 - movge r0, #0 -_02324008: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02324010: .word 0x00000163 -_02324014: .word 0x022C47A8 -_02324018: .word 0x022C4808 -_0232401C: .word 0x0000010E -_02324020: .word 0x000003E7 -_02324024: .word 0x02353710 -_02324028: .word 0x022C540C -_0232402C: .word 0x022C5460 - arm_func_end MoveHitCheck - - arm_func_start ov29_02324030 -ov29_02324030: ; 0x02324030 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r1, #1 - mov r4, #0 - mov r8, r2 - bl ov29_023024E0 - mov r6, r0 - mov r0, sb - mov r1, r4 - bl ov29_023024E0 - str r0, [sp, #0x10] - mov r0, sb - mov r1, r8 - mov r2, r4 - bl GetEntityMoveTargetAndRange - mov r5, r0 - and r0, r5, #0xf - cmp r0, #4 - bne _023240C0 - mov r0, sb - mov r1, r8 - bl ov29_023245A4 - ldrh r1, [r8, #4] - mov r5, r0 - cmp r1, #0x97 - bne _023240B4 - mov r0, sb - bl GetApparentWeather - cmp r0, #1 - moveq r5, #1 -_023240B4: - cmp r5, #0 - movne r5, #0 - moveq r5, #0x73 -_023240C0: - ands r0, r5, #0xf0 - bne _023240FC - mov r0, sb - bl ov29_022F87C0 - cmp r0, #0 - beq _0232439C - stmia sp, {r0, r8} - mov r1, sl - mov r2, r5 - mov r3, sb - mov r0, #0 - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 - b _0232439C -_023240FC: - cmp r0, #0x10 - cmpne r0, #0x20 - bne _023241AC - cmp r0, #0x20 - ldr r0, [sb, #0xb4] - mov fp, #0 - ldreqb r7, [r0, #0x4c] - moveq r0, #8 - ldrneb r1, [r0, #0x4c] - streq r0, [sp, #0xc] - movne r0, #3 - strne r0, [sp, #0xc] - subne r7, r1, #1 - b _0232419C -_02324134: - and r7, r7, #7 - ldr r1, _023243AC ; =0x0235171C - mov r2, r7, lsl #2 - ldrsh r2, [r1, r2] - ldrsh r0, [sb, #4] - add r1, r1, r7, lsl #2 - ldrsh r1, [r1, #2] - add r0, r0, r2 - strh r0, [sp, #0x14] - ldrsh r2, [sb, #6] - add r0, sp, #0x14 - add r1, r2, r1 - strh r1, [sp, #0x16] - bl ov29_02337B68 - cmp r0, #0 - beq _02324194 - stmia sp, {r0, r8} - mov r0, r4 - mov r1, sl - mov r2, r5 - mov r3, sb - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 -_02324194: - add fp, fp, #1 - add r7, r7, #1 -_0232419C: - ldr r0, [sp, #0xc] - cmp fp, r0 - blt _02324134 - b _0232439C -_023241AC: - cmp r0, #0x30 - bne _02324248 - mov fp, #0 -_023241B8: - ldr r0, _023243B0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, fp, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02324238 - mov r0, sb - mov r1, r7 - bl ov29_022E28D4 - cmp r0, #0 - beq _02324238 - cmp r7, sb - stmia sp, {r7, r8} - mov r0, r4 - bne _02324220 - ldr r4, [sp, #0x10] - mov r1, sl - mov r2, r5 - mov r3, sb - str r4, [sp, #8] - bl ov29_023243B4 - mov r4, r0 - b _02324238 -_02324220: - mov r1, sl - mov r2, r5 - mov r3, sb - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 -_02324238: - add fp, fp, #1 - cmp fp, #0x14 - blt _023241B8 - b _0232439C -_02324248: - cmp r0, #0x40 - bne _023242C4 - mov r0, sb - mov r7, #0 - bl ov29_022F8830 - cmp r0, #0 - beq _02324288 - stmia sp, {r0, r8} - mov r1, sl - mov r2, r5 - mov r3, sb - mov r0, r7 - str r6, [sp, #8] - bl ov29_023243B4 - movs r4, r0 - movne r7, #1 -_02324288: - cmp r7, #0 - bne _0232439C - mov r0, sb - bl ov29_022F88C0 - cmp r0, #0 - beq _0232439C - stmia sp, {r0, r8} - mov r0, r4 - mov r1, sl - mov r2, r5 - mov r3, sb - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 - b _0232439C -_023242C4: - cmp r0, #0x50 - beq _0232439C - cmp r0, #0x80 - cmpne r0, #0x90 - bne _0232430C - mov r0, sb - bl ov29_022F8830 - cmp r0, #0 - beq _0232439C - stmia sp, {r0, r8} - mov r1, sl - mov r2, r5 - mov r3, sb - mov r0, #0 - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 - b _0232439C -_0232430C: - cmp r0, #0x60 - bne _02324370 - mov r7, #0 -_02324318: - ldr r0, _023243B0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr fp, [r0, #0xb78] - mov r0, fp - bl EntityIsValid__02321438 - cmp r0, #0 - beq _02324360 - str fp, [sp] - str r8, [sp, #4] - mov r0, r4 - mov r1, sl - mov r2, r5 - mov r3, sb - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 -_02324360: - add r7, r7, #1 - cmp r7, #0x14 - blt _02324318 - b _0232439C -_02324370: - cmp r0, #0x70 - bne _0232439C - str sb, [sp] - str r8, [sp, #4] - mov r1, sl - mov r2, r5 - mov r3, sb - mov r0, #0 - str r6, [sp, #8] - bl ov29_023243B4 - mov r4, r0 -_0232439C: - mov r0, #0 - str r0, [sl, r4, lsl #2] - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023243AC: .word 0x0235171C -_023243B0: .word 0x02353538 - arm_func_end ov29_02324030 - - arm_func_start ov29_023243B4 -ov29_023243B4: ; 0x023243B4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, [sp, #0x1c] - ldr r5, [sp, #0x18] - ldrh r4, [r4, #4] - mov r7, r1 - mov r8, r0 - cmp r4, #0xfc - mov r6, r3 - mov r4, #0 - ldr r1, [r5, #0xb4] - cmpeq r6, r5 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #9] - cmp r0, #1 - moveq r0, r8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r1, #0xbc] - cmp r0, #7 - moveq r0, r8 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [sp, #0x20] - cmp r0, #0 - movne r4, #1 - bne _023244C0 - ands r0, r2, #0xf - cmpne r0, #4 - bne _02324440 - mov r0, r6 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #1 - moveq r4, #1 - b _023244C0 -_02324440: - cmp r0, #1 - bne _02324468 - mov r0, r6 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #0 - moveq r4, #1 - b _023244C0 -_02324468: - cmp r0, #2 - moveq r4, #1 - beq _023244C0 - cmp r0, #5 - bne _02324488 - cmp r6, r5 - movne r4, #1 - b _023244C0 -_02324488: - cmp r0, #6 - bne _023244B8 - mov r0, r6 - mov r1, r5 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #0 - bne _023244C0 - cmp r6, r5 - movne r4, #1 - b _023244C0 -_023244B8: - cmp r0, #3 - moveq r4, #1 -_023244C0: - ldr r1, [sp, #0x1c] - mov r0, r5 - bl ov29_02324854 - cmp r0, #0 - movne r4, #0 - cmp r4, #0 - beq _02324508 - cmp r8, #0x40 - bge _02324508 - str r5, [r7, r8, lsl #2] - ldr r0, [r5, #0xb4] - add r8, r8, #1 - ldrb r0, [r0, #6] - cmp r0, #0 - ldreq r0, _02324510 ; =0x0235370C - ldreq r1, [r0] - cmpeq r1, #0 - streq r5, [r0] -_02324508: - mov r0, r8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02324510: .word 0x0235370C - arm_func_end ov29_023243B4 - - arm_func_start ov29_02324514 -ov29_02324514: ; 0x02324514 - stmdb sp!, {r3, lr} - bl GetMoveNbStrikes - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #2 - mov r1, #6 - bl DungeonRandRange - ldmia sp!, {r3, pc} - arm_func_end ov29_02324514 - - arm_func_start ov29_02324534 -ov29_02324534: ; 0x02324534 - ldrh r2, [r0, #4] - cmp r2, #0xee - moveq r0, #1 - bxeq lr - cmp r2, #0xef - moveq r0, #1 - bxeq lr - cmp r2, #0xf2 - moveq r0, #1 - bxeq lr - cmp r2, #0x110 - moveq r0, #1 - bxeq lr - ldr r1, _023245A0 ; =0x000001C5 - cmp r2, r1 - moveq r0, #1 - bxeq lr - add r0, r1, #2 - cmp r2, r0 - moveq r0, #1 - bxeq lr - add r0, r1, #0x29 - cmp r2, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_023245A0: .word 0x000001C5 - arm_func_end ov29_02324534 - - arm_func_start ov29_023245A4 -ov29_023245A4: ; 0x023245A4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr ip, [r5, #0xb4] - mov lr, #0 - ldr r2, _02324618 ; =0x02352AAC - b _02324608 -_023245D0: - mov r3, lr, lsl #2 - ldrh r1, [r2, r3] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrh r0, [r4, #4] - cmp r0, r1 - addeq r0, r2, r3 - ldreqb r1, [ip, #0xd2] - ldreqb r0, [r0, #2] - cmpeq r1, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - add lr, lr, #1 -_02324608: - cmp lr, #0x64 - blt _023245D0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02324618: .word 0x02352AAC - arm_func_end ov29_023245A4 - - arm_func_start ov29_0232461C -ov29_0232461C: ; 0x0232461C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr ip, [r5, #0xb4] - mov r3, #0 - ldr r2, _02324694 ; =0x02352A60 - b _0232466C -_02324648: - ldrb r1, [r2, r3] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [ip, #0xd2] - cmp r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - add r3, r3, #1 -_0232466C: - cmp r3, #0x64 - blt _02324648 - cmp r4, #0 - beq _0232468C - ldrb r0, [ip, #0xd2] - cmp r0, #0xb - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_0232468C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02324694: .word 0x02352A60 - arm_func_end ov29_0232461C - - arm_func_start ov29_02324698 -ov29_02324698: ; 0x02324698 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x140 - mov r6, #0 - ldr fp, _02324740 ; =0x02353538 - mov r7, r6 - add r4, sp, #0 -_023246B0: - ldr r0, [fp] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb78] - mov r0, sb - bl EntityIsValid__02321438 - cmp r0, #0 - beq _0232470C - ldr r0, [sb, #0xb4] - mov r8, #0 - add r5, r0, #0x124 -_023246DC: - add sl, r5, r8, lsl #3 - mov r0, sb - mov r1, sl - bl ov29_02324748 - cmp r0, #0 - beq _02324700 - cmp r6, #0x50 - strlt sl, [r4, r6, lsl #2] - addlt r6, r6, #1 -_02324700: - add r8, r8, #1 - cmp r8, #4 - blt _023246DC -_0232470C: - add r7, r7, #1 - cmp r7, #0x14 - blt _023246B0 - cmp r6, #0 - ldreq r0, _02324744 ; =0x00000163 - beq _02324738 - mov r0, r6 - bl DungeonRandInt - add r1, sp, #0 - ldr r0, [r1, r0, lsl #2] - ldrh r0, [r0, #4] -_02324738: - add sp, sp, #0x140 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02324740: .word 0x02353538 -_02324744: .word 0x00000163 - arm_func_end ov29_02324698 - - arm_func_start ov29_02324748 -ov29_02324748: ; 0x02324748 - stmdb sp!, {r4, lr} - mov r4, r1 - ldrb r1, [r4] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _02324788 - ldrh r1, [r4, #4] - bl ov29_02324D60 - cmp r0, #0 - bne _02324788 - ldrh r0, [r4, #4] - bl IsCopyingMove - cmp r0, #0 - beq _02324790 -_02324788: - mov r0, #0 - ldmia sp!, {r4, pc} -_02324790: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov29_02324748 - - arm_func_start ov29_02324798 -ov29_02324798: ; 0x02324798 - stmdb sp!, {r3, lr} - bl GetMoveMaxGinsengBoost - cmp r0, #0x63 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02324798 - - arm_func_start ov29_023247B4 -ov29_023247B4: ; 0x023247B4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r8, r0 - ldr r0, [r8, #0xb4] - mov r7, #0 - mov r6, r7 - add r5, r0, #0x124 - add r4, sp, #0 -_023247D4: - add sb, r5, r6, lsl #3 - mov r0, r8 - mov r1, sb - bl ov29_02324748 - cmp r0, #0 - beq _02324814 - mov r0, sb - bl ov29_02324798 - cmp r0, #0 - beq _02324814 - ldrh r2, [sb, #4] - add r0, r7, #1 - mov r1, r7, lsl #1 - mov r0, r0, lsl #0x10 - strh r2, [r4, r1] - mov r7, r0, asr #0x10 -_02324814: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #4 - blt _023247D4 - cmp r7, #0 - movle r0, #0 - ble _0232484C - mov r0, r7 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - add r1, sp, #0 - mov r0, r0, asr #0xf - ldrh r0, [r1, r0] -_0232484C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_023247B4 - - arm_func_start ov29_02324854 -ov29_02324854: ; 0x02324854 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #0x10b] - cmp r0, #1 - bne _023248A4 - ldrh r0, [r1, #4] - cmp r0, #0x88 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0xa2 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0x39 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0x40 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} -_023248A4: - cmp r0, #2 - bne _02324928 - ldrb r0, [r2, #0xd2] - cmp r0, #9 - bne _023248D8 - ldrh r0, [r1, #4] - cmp r0, #0x20 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0xdb - bne _02324920 - mov r0, #0 - ldmia sp!, {r3, pc} -_023248D8: - cmp r0, #0xa - bne _02324920 - ldrh r0, [r1, #4] - cmp r0, #0x76 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0x128 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - cmp r0, #0x77 - bne _02324920 - bl ov29_023280D4 - ldr r1, _02324930 ; =0x022C4E40 - mov r0, r0, lsl #3 - ldrh r0, [r1, r0] - cmp r0, #0x76 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_02324920: - mov r0, #1 - ldmia sp!, {r3, pc} -_02324928: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02324930: .word 0x022C4E40 - arm_func_end ov29_02324854 - - arm_func_start DungeonRandOutcomeUserTargetInteraction -DungeonRandOutcomeUserTargetInteraction: ; 0x02324934 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl IsFloorOver - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0x162] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsh r0, [r1, #0x10] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r4, #0 - beq _023249DC - mov r0, r6 - mov r1, #0x26 - bl AbilityIsActive2 - cmp r0, #0 - beq _023249CC - mov r0, r4, lsl #1 - bl DungeonRandOutcome__022EAB50 - mov r4, r0 - b _023249E0 -_023249CC: - mov r0, r4 - bl DungeonRandOutcome__022EAB50 - mov r4, r0 - b _023249E0 -_023249DC: - mov r4, #1 -_023249E0: - cmp r4, #0 - cmpne r6, r5 - beq _02324A18 - mov r0, r6 - mov r1, r5 - mov r2, #0x4c - mov r3, #1 - bl DefenderAbilityIsActive__02322D64 - cmp r0, #0 - beq _02324A18 - mov r0, r5 - bl ov29_022E65A8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02324A18: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DungeonRandOutcomeUserTargetInteraction - - arm_func_start DungeonRandOutcomeUserAction -DungeonRandOutcomeUserAction: ; 0x02324A20 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02321438 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, #0x26 - bl AbilityIsActive2 - cmp r0, #0 - beq _02324A68 - mov r0, r4, lsl #1 - bl DungeonRandOutcome__022EAB50 - ldmia sp!, {r3, r4, r5, pc} -_02324A68: - mov r0, r4 - bl DungeonRandOutcome__022EAB50 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DungeonRandOutcomeUserAction - - arm_func_start CanAiUseMove -CanAiUseMove: ; 0x02324A74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldr r3, [r6, #0xb4] - mov r5, r2 - add r0, r3, #0x124 - ldrb r2, [r0, r1, lsl #3] - add r4, r0, r1, lsl #3 - tst r2, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - tst r2, #2 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - tst r2, #0x20 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrh r0, [r4, #2] - tst r0, #1 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r8, #0 - add r7, r3, #0x144 - b _02324B14 -_02324ADC: - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl CanMonsterUseMove - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r4, r4, #8 - cmp r4, r7 - bhs _02324B1C - ldrb r0, [r4] - tst r0, #2 - beq _02324B1C - add r8, r8, #1 -_02324B14: - cmp r8, #4 - blt _02324ADC -_02324B1C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end CanAiUseMove - - arm_func_start CanMonsterUseMove -CanMonsterUseMove: ; 0x02324B24 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - ldrh r3, [r5, #4] - ldr r1, _02324BE4 ; =0x00000163 - ldr r4, [r0, #0xb4] - cmp r3, r1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r5] - tst r0, #0x20 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [r5, #2] - tst r0, #1 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r5, #6] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #5 - bne _02324BA0 - mov r0, r5 - bl IsAffectedByTaunt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_02324BA0: - ldrb r0, [r4, #0xd0] - cmp r0, #6 - bne _02324BDC - ldrh r0, [r5, #4] - cmp r0, #0x160 - bne _02324BCC - ldrb r0, [r4, #0x144] - tst r0, #0x10 - bne _02324BDC - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02324BCC: - ldrb r0, [r5] - tst r0, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_02324BDC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02324BE4: .word 0x00000163 - arm_func_end CanMonsterUseMove - - arm_func_start ov29_02324BE8 -ov29_02324BE8: ; 0x02324BE8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - ldrh r3, [r5, #4] - ldr r1, _02324C98 ; =0x00000163 - ldr r4, [r0, #0xb4] - cmp r3, r1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r5] - tst r0, #0x20 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldrh r0, [r5, #2] - tst r0, #1 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - cmp r2, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0xd0] - cmp r0, #5 - bne _02324C54 - mov r0, r5 - bl IsAffectedByTaunt - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_02324C54: - ldrb r0, [r4, #0xd0] - cmp r0, #6 - bne _02324C90 - ldrh r0, [r5, #4] - cmp r0, #0x160 - bne _02324C80 - ldrb r0, [r4, #0x144] - tst r0, #0x10 - bne _02324C90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02324C80: - ldrb r0, [r5] - tst r0, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_02324C90: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02324C98: .word 0x00000163 - arm_func_end ov29_02324BE8 - - arm_func_start ov29_02324C9C -ov29_02324C9C: ; 0x02324C9C - stmdb sp!, {lr} - sub sp, sp, #0x104 - mov ip, #0 - mov lr, ip - add r2, sp, #0 - b _02324CDC -_02324CB4: - ldr r3, [r0, lr, lsl #2] - cmp r3, #0 - beq _02324CE4 - cmp r3, r1 - beq _02324CD8 - cmp ip, #0x40 - bge _02324CE4 - str r3, [r2, ip, lsl #2] - add ip, ip, #1 -_02324CD8: - add lr, lr, #1 -_02324CDC: - cmp lr, #0x41 - blt _02324CB4 -_02324CE4: - mov lr, #0 - add r2, sp, #0 - b _02324D18 -_02324CF0: - ldr r3, [r0, lr, lsl #2] - cmp r3, #0 - beq _02324D20 - cmp r3, r1 - bne _02324D14 - cmp ip, #0x40 - bge _02324D20 - str r3, [r2, ip, lsl #2] - add ip, ip, #1 -_02324D14: - add lr, lr, #1 -_02324D18: - cmp lr, #0x41 - blt _02324CF0 -_02324D20: - mov r2, #0 - add r1, sp, #0 - b _02324D34 -_02324D2C: - str r2, [r1, ip, lsl #2] - add ip, ip, #1 -_02324D34: - cmp ip, #0x41 - blt _02324D2C - mov r3, #0 - add r2, sp, #0 -_02324D44: - ldr r1, [r2, r3, lsl #2] - str r1, [r0, r3, lsl #2] - add r3, r3, #1 - cmp r3, #0x41 - blt _02324D44 - add sp, sp, #0x104 - ldmia sp!, {pc} - arm_func_end ov29_02324C9C - - arm_func_start ov29_02324D60 -ov29_02324D60: ; 0x02324D60 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r4, #0x97 - bne _02324D80 - bl GetApparentWeather - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_02324D80: - mov r0, r4 - bl Is2TurnsMove - ldmia sp!, {r4, pc} - arm_func_end ov29_02324D60 - - arm_func_start UpdateMovePp -UpdateMovePp: ; 0x02324D8C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02321438 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0xb4] - mov r1, #0 -_02324DAC: - add r2, r0, #0x124 - ldrb r3, [r2, r1, lsl #3] - add r2, r2, r1, lsl #3 - tst r3, #1 - movne r3, #1 - moveq r3, #0 - tst r3, #0xff - beq _02324E34 - ldrh r3, [r2, #2] - mov lr, #1 - tst r3, #0x10 - bicne r3, r3, #0x10 - strneh r3, [r2, #2] - ldrh r3, [r2, #2] - movne lr, #2 - tst r3, #0x40 - bicne r3, r3, #0x40 - strneh r3, [r2, #2] - ldrh r3, [r2, #2] - movne lr, #4 - tst r3, #8 - bicne r3, r3, #8 - strneh r3, [r2, #2] - cmpne r4, #0 - beq _02324E34 - mov ip, #0 - b _02324E2C -_02324E18: - ldrb r3, [r2, #6] - add ip, ip, #1 - cmp r3, #0 - subne r3, r3, #1 - strneb r3, [r2, #6] -_02324E2C: - cmp ip, lr - blt _02324E18 -_02324E34: - add r1, r1, #1 - cmp r1, #4 - blt _02324DAC - ldmia sp!, {r3, r4, r5, pc} - arm_func_end UpdateMovePp - - arm_func_start ov29_02324E44 -ov29_02324E44: ; 0x02324E44 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl LowerSshort - mov r1, r0 - ldrh r0, [r4, #4] - bl GetDamageSource - ldmia sp!, {r4, pc} - arm_func_end ov29_02324E44 - - arm_func_start LowerSshort -LowerSshort: ; 0x02324E64 - cmp r0, #0 - moveq r0, #0 - movne r0, r0, lsl #0x10 - movne r0, r0, asr #0x10 - bx lr - arm_func_end LowerSshort - - arm_func_start ov29_02324E78 -ov29_02324E78: ; 0x02324E78 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r7, r0 - mov r6, r1 - mov r8, r2 - bl ShouldMovePlayAlternativeAnimation - mov r4, r0 - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r6, #4] - mov r2, r4 - bl GetMoveAnimationId - bl ov10_022BFD58 - mov sl, r0 - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r6, #4] - mov r2, r4 - bl GetMoveAnimationId - bl GetMoveAnimation - ldrsh r5, [r0] - mov r0, r7 - bl ov29_022E5ED0 - cmp r0, #0 - moveq r0, sl - beq _023250C8 - mov r0, r7 - mov r1, r6 - bl ov29_02325D20 - cmp r0, #0 - movne r0, sl - bne _023250C8 - cmp r8, #0 - moveq r0, sl - beq _023250C8 - cmp r5, #0 - beq _023250C4 - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r6, #4] - mov r2, r4 - bl GetMoveAnimationId - mov r4, r0 - ldrh r0, [r6, #4] - ldr r5, [r7, #0xb4] - bl ov10_022BFD8C - mov sb, r0 - mov r0, r7 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r6, #4] - mov r2, #1 - bl GetMoveAnimationId - mov r1, r0 - ldrsh r0, [r5, #4] - bl ov10_022BF01C - mov r2, r0 - mvn r0, #0 - cmp r2, r0 - ldreq r0, _023250D0 ; =0x02352AD8 - ldreqh r1, [r0, #8] - streqh r1, [sp, #8] - ldreqh r0, [r0, #0xa] - streqh r0, [sp, #0xa] - beq _02324F98 - add r0, sp, #8 - add r1, r7, #0x2c - and r2, r2, #0xff - bl sub_0201CF90 -_02324F98: - strh r4, [sp] - ldrsh r1, [r5, #4] - add r0, sp, #0 - mov r2, #0 - strh r1, [sp, #2] - ldr r3, [r7, #0xc] - mov r1, #1 - mov r3, r3, asr #8 - strh r3, [sp, #4] - ldr r3, [r7, #0x10] - mov r3, r3, asr #8 - strh r3, [sp, #6] - ldrb r3, [r5, #0x4c] - str r3, [sp, #0xc] - str r2, [sp, #0x10] - bl ov29_02325D7C - mov r0, #0x58 - bl AdvanceFrame - add r0, sp, #0 - bl ov10_022BFAA8 - mov r1, r7 - mov r2, #5 - mov r8, r0 - bl ov29_022E6D68 - mov r0, #1 - bl ov29_022DE5F0 - mov r7, r0 - cmp sb, #0 - bne _0232506C - ldrh r0, [r6, #4] - bl ov00_022BFDEC - cmp r0, #0 - beq _0232506C - mov r6, #0 - bl ov29_022ED0C4 - mov r5, r0 - mov r0, #1 - bl ov29_022E3560 - mov r4, #0xff - mov fp, #1 - b _02325064 -_0232503C: - add r0, r5, #0x20 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #0xff - movgt r5, r4 - mov r0, r5 - movgt r6, fp - bl ov29_022ED0D4 - mov r0, #0x26 - bl AdvanceFrame -_02325064: - cmp r6, #0 - beq _0232503C -_0232506C: - mov r0, r8, lsl #0x10 - mov r4, r0, asr #0x10 - mov r8, #0 - mov r6, #1 - mov r5, #0x26 - b _023250B0 -_02325084: - beq _023250A8 - cmp r7, #0x20 - subgt r7, r7, #0x20 - movle r7, r8 - mov r0, r7, lsl #0x10 - mov r1, r6 - mov r0, r0, asr #0x10 - movle sb, r8 - bl ov29_022DE5D8 -_023250A8: - mov r0, r5 - bl AdvanceFrame -_023250B0: - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - cmpne sb, #0 - bne _02325084 -_023250C4: - mov r0, sl -_023250C8: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023250D0: .word 0x02352AD8 - arm_func_end ov29_02324E78 - - arm_func_start ov29_023250D4 -ov29_023250D4: ; 0x023250D4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r0 - mov sb, r1 - bl ShouldMovePlayAlternativeAnimation - mov r8, r0 - ldr r7, [sl, #0xb4] - mov r1, #0 - mov r0, sl - str r1, [sp] - bl GetApparentWeather - mov r1, r0 - ldrh r0, [sb, #4] - mov r2, r8 - bl GetMoveAnimationId - mov r1, r0 - ldrsh r0, [r7, #4] - bl ov10_022BFA3C - mov r4, r0 - mov r0, sl - ldr r6, [sl, #0xb4] - bl GetApparentWeather - mov r1, r0 - ldrh r0, [sb, #4] - mov r2, r8 - bl GetMoveAnimationId - mov r5, r0 - bl GetMoveAnimation - ldrsh r0, [r0, #2] - cmp r0, #0 - beq _023251E0 - mov r0, sl - bl GetApparentWeather - mov r1, r0 - ldrh r0, [sb, #4] - mov r2, r8 - bl GetMoveAnimationId - mov r1, r0 - ldrsh r0, [r6, #4] - bl ov10_022BF01C - mov r2, r0 - mvn r0, #0 - cmp r2, r0 - ldreq r0, _02325608 ; =0x02352AD8 - ldreqh r1, [r0, #4] - streqh r1, [sp, #0xc] - ldreqh r0, [r0, #6] - streqh r0, [sp, #0xe] - beq _023251A8 - add r0, sp, #0xc - add r1, sl, #0x2c - and r2, r2, #0xff - bl sub_0201CF90 -_023251A8: - strh r5, [sp, #4] - ldrsh r1, [r6, #4] - mov r0, #0 - strh r1, [sp, #6] - ldr r1, [sl, #0xc] - mov r1, r1, asr #8 - strh r1, [sp, #8] - ldr r1, [sl, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0xa] - ldrb r1, [r6, #0x4c] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - b _023251E8 -_023251E0: - mov r0, #0 - strh r0, [sp, #4] -_023251E8: - add r0, sp, #4 - mov r1, #1 - bl ov10_022BF1FC - cmp r0, #0 - ldrne r0, _0232560C ; =0x02353538 - ldrne r0, [r0] - addne r0, r0, #0x1a000 - ldrne r5, [r0, #0x22c] - bne _02325228 - ldrh r0, [sb, #4] - cmp r0, #0x52 - ldreq r0, _0232560C ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x1a000 - ldreq r5, [r0, #0x22c] - movne r5, sl -_02325228: - mov r0, r5 - bl EntityIsValid__02325620 - cmp r0, #0 - moveq r5, sl - ldr r1, [r5, #0xc] - mov r0, r5 - mov r1, r1, asr #8 - strh r1, [sp, #8] - ldr r1, [r5, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0xa] - bl ov29_022E5ED0 - cmp r0, #0 - beq _02325600 - mov r0, sl - mov r1, sb - bl ov29_02325D20 - cmp r0, #0 - bne _02325600 - ldrh r0, [sb, #4] - cmp r0, #0x128 - bne _023252E4 - mov r0, #7 - bl DungeonRandInt - ldr r1, _0232560C ; =0x02353538 - ldr r6, _02325610 ; =0x02352B1C - ldr r3, [r1] - ldr r2, _02325614 ; =0x0237CA84 - ldr r6, [r6, r0, lsl #2] - str r0, [r2] - add r0, r3, #0x1a000 - str r6, [r0, #0x234] - ldr r1, [r1] - mov r0, #0 - add r1, r1, #0x1a000 - ldr r3, [r1, #0x234] - str r3, [r1, #0x238] - ldr r1, [r2] - add r1, r1, #4 - bl ov29_0234B09C - ldr r1, _02325618 ; =0x00000EAA - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, #0x214 - bl ov29_022E56A0 - b _0232531C -_023252E4: - cmp r0, #0x76 - bne _0232531C - ldr r2, _0232560C ; =0x02353538 - mov r3, #0xc - ldr r1, [r2] - mov r0, r5 - add r1, r1, #0x1a000 - str r3, [r1, #0x234] - ldr r2, [r2] - mov r1, #0x214 - add r2, r2, #0x1a000 - ldr r3, [r2, #0x234] - str r3, [r2, #0x238] - bl ov29_022E56A0 -_0232531C: - mov r0, sl - bl GetApparentWeather - mov r1, r0 - ldrh r0, [sb, #4] - mov r2, r8 - bl GetMoveAnimationId - mov r1, r0 - ldrsh r0, [r7, #4] - bl ov10_022BF0F4 - cmp r0, #0x3f00 - beq _02325354 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov29_022EACCC -_02325354: - cmp r4, #0x63 - bne _023253C8 - mov r0, r5 - bl ov29_022E5ED0 - cmp r0, #0 - beq _02325600 - mov r3, r8 - add r0, sp, #4 - mov r1, sl - mov r2, sb - ldrb r8, [r7, #0x4c] - bl ov29_02325644 - mov r7, #0 - mov r6, r7 - mov r5, #2 - mov r4, #0x15 -_02325394: - sub r0, r8, #1 - and r8, r0, #7 - mov r0, sl - mov r1, r6 - mov r2, r8 - bl ov29_023049A8 - mov r0, r5 - mov r1, r4 - bl ov29_022EA370 - add r7, r7, #1 - cmp r7, #8 - blt _02325394 - b _02325600 -_023253C8: - cmp r4, #0x62 - bne _0232543C - mov r0, r5 - bl ov29_022E5ED0 - cmp r0, #0 - beq _02325600 - add r0, sp, #4 - mov r1, sl - mov r2, sb - mov r3, r8 - ldrb r7, [r7, #0x4c] - bl ov29_02325644 - mov r8, #0 - mov r6, r8 - mov r5, #2 - mov r4, #0x15 -_02325408: - and r7, r7, #7 - mov r0, sl - mov r1, r6 - mov r2, r7 - bl ov29_023049A8 - mov r0, r5 - mov r1, r4 - bl ov29_022EA370 - add r8, r8, #1 - cmp r8, #8 - add r7, r7, #1 - ble _02325408 - b _02325600 -_0232543C: - ldrb r0, [r7, #0xd8] - mov fp, #0 - cmp r0, #2 - moveq fp, #1 - beq _02325470 - ldr r0, _0232560C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x1a000 - ldr r1, [r0, #0x22c] - cmp r1, sl - ldrneb r0, [r0, #0x245] - cmpne r0, #0 - movne fp, #1 -_02325470: - ldrb r0, [sl, #0x28] - cmp r0, #0 - bne _02325524 - mov r5, #0 -_02325480: - ldr r0, _0232560C ; =0x02353538 - ldr r0, [r0] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__02325620 - cmp r0, #0 - cmpne r6, sl - ldrneb r0, [r6, #0x28] - cmpne r0, #0 - beq _023254C8 - ldr r1, [r6, #0xb4] - mov r0, r6 - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 - mov r0, #0 - strb r0, [r6, #0x28] -_023254C8: - add r5, r5, #1 - cmp r5, #0x14 - blt _02325480 - mov r0, #0x59 - bl AdvanceFrame - cmp fp, #0 - beq _02325500 - ldr r0, _0232561C ; =0x00000229 - bl GetSpriteIndex__02052708 - mov r1, r0 - mov r0, #1 - bl ov29_022F6F68 - mov r5, r0 - b _02325530 -_02325500: - ldrsh r0, [r7, #4] - bl GetSpriteIndex__02052708 - mov r1, r0 - mov r0, #1 - bl ov29_022F6F68 - mov r1, #0xff - mov r5, r0 - strb r1, [sl, #0xaf] - b _02325530 -_02325524: - mov r0, #0x59 - bl AdvanceFrame - ldrsh r5, [sl, #0xa8] -_02325530: - ldrb r2, [r7, #0x4c] - mov r0, sl - mov r1, r4 - bl ov29_023049A8 - ldrb r1, [sl, #0xae] - mov r0, r5 - bl sub_0201DA80 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - strb r0, [sl, #0x28] - mov r7, #0 - strb r7, [sl, #0x21] - mov r5, #0x59 - add fp, sp, #4 - b _023255D8 -_02325570: - mov r0, r5 - bl AdvanceFrame - add r0, sl, #0x2c - bl sub_0201D1D4 - cmp r4, #0 - cmpne r4, #7 - mov r6, r0 - cmpne r4, #9 - orreq r6, r6, #2 - tst r6, #2 - beq _023255C4 - ldr r0, [sp] - cmp r0, #0 - bne _023255C4 - mov r0, fp - mov r1, sl - mov r2, sb - mov r3, r8 - bl ov29_02325644 - mov r0, #1 - str r0, [sp] -_023255C4: - tst r6, #1 - ldreqb r0, [sl, #0x21] - cmpeq r0, #0 - bne _023255E0 - add r7, r7, #1 -_023255D8: - cmp r7, #0x78 - blt _02325570 -_023255E0: - mov r0, #0 - strb r0, [sl, #0x21] - ldrh r0, [sb, #4] - bl ov10_022BFDCC - cmp r0, #0 - beq _02325600 - mov r0, #1 - bl ov29_022E38E0 -_02325600: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02325608: .word 0x02352AD8 -_0232560C: .word 0x02353538 -_02325610: .word 0x02352B1C -_02325614: .word 0x0237CA84 -_02325618: .word 0x00000EAA -_0232561C: .word 0x00000229 - arm_func_end ov29_023250D4 - - arm_func_start EntityIsValid__02325620 -EntityIsValid__02325620: ; 0x02325620 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02325620 - - arm_func_start ov29_02325644 -ov29_02325644: ; 0x02325644 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r5, r2 - mov r0, r6 - mov r4, r3 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r5, #4] - mov r2, r4 - bl GetMoveAnimationId - bl GetMoveAnimation - ldrh r1, [r7] - ldrsh r0, [r0, #2] - cmp r1, #0 - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, #1 - bl ov29_02325D7C - mov r0, #0x5a - bl AdvanceFrame - mov r0, r7 - bl ov10_022BED90 - mov r1, r6 - mov r2, #1 - bl ov29_022E6D68 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02325644 - - arm_func_start ov29_023256B4 -ov29_023256B4: ; 0x023256B4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x18 - mov r8, r2 - mov sb, r1 - mov r1, r8 - mov sl, r0 - mov r7, r3 - bl ShouldMovePlayAlternativeAnimation - cmp r0, #0 - movne r4, #1 - mov r0, sl - moveq r4, #0 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [r8, #4] - mov r2, r4 - bl GetMoveAnimationId - mov r4, r0 - bl GetMoveAnimation - ldrsh r5, [r0, #4] - mov r0, sb - mov r6, #0 - bl EntityIsValid__02325620 - cmp r0, #0 - beq _02325730 - mov r0, sb - ldr r6, [sb, #0xb4] - bl ov29_022E5ED0 - cmp r0, #0 - bne _02325740 - b _023258E0 -_02325730: - mov r0, r7 - bl ov29_022E2CA0 - cmp r0, #0 - beq _023258E0 -_02325740: - cmp r6, #0 - cmpeq r4, #0x1f4 - beq _023258E0 - mov r0, sl - mov r1, r8 - bl ov29_02325D20 - cmp r0, #0 - bne _023258E0 - cmp r5, #0 - beq _023258E0 - ldr r1, _023258E8 ; =0x02352AD8 - mov r0, r5 - ldrh r2, [r1] - ldrh r1, [r1, #2] - strh r2, [sp] - strh r1, [sp, #2] - bl GetEffectAnimation - ldrsb r5, [r0, #0x19] - mvn r0, #0 - cmp r5, r0 - beq _023257C8 - mov r0, sb - bl EntityIsValid__02325620 - cmp r0, #0 - ldreqh r1, [sp] - ldreqh r0, [sp, #2] - streqh r1, [sp, #0xc] - streqh r0, [sp, #0xe] - beq _023257D8 - add r0, sp, #0xc - add r1, sb, #0x2c - and r2, r5, #0xff - bl sub_0201CF90 - b _023257D8 -_023257C8: - ldrh r1, [sp] - ldrh r0, [sp, #2] - strh r1, [sp, #0xc] - strh r0, [sp, #0xe] -_023257D8: - strh r4, [sp, #4] - cmp r6, #0 - beq _02325828 - ldrsh r1, [r6, #4] - cmp r4, #0x1f4 - mov r0, #0 - strh r1, [sp, #6] - ldr r1, [sb, #0xc] - cmpne r4, #0x50 - mov r1, r1, asr #8 - strh r1, [sp, #8] - ldr r1, [sb, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0xa] - str r0, [sp, #0x10] - ldreq r0, [sl, #0xb4] - ldreqb r0, [r0, #0x4c] - andeq r0, r0, #7 - streq r0, [sp, #0x10] - b _0232586C -_02325828: - mov r0, #1 - strh r0, [sp, #6] - ldrsh r2, [r7] - mov r0, #0x18 - mov r1, #0 - smulbb r2, r2, r0 - add r2, r2, #0xc - mov r2, r2, lsl #8 - mov r2, r2, asr #8 - strh r2, [sp, #8] - ldrsh r2, [r7, #2] - smulbb r0, r2, r0 - add r0, r0, #0x10 - mov r0, r0, lsl #8 - mov r0, r0, asr #8 - strh r0, [sp, #0xa] - str r1, [sp, #0x10] -_0232586C: - mov r1, #0 - add r0, sp, #4 - str r1, [sp, #0x14] - bl ov10_022BF160 - cmp r0, #0 - beq _02325894 - mov r0, #0x5d - bl ov29_0234BA54 - mov r0, #0x5d - bl AdvanceFrame -_02325894: - add r0, sp, #4 - bl ov10_022BFC5C - mov r4, r0 - mov r0, #0x5b - bl AdvanceFrame - mov r0, r4 - mov r1, sb - mov r2, #6 - bl ov29_022E6D68 - mov r0, r4, lsl #0x10 - mov r4, r0, asr #0x10 - mov r5, #0x28 - b _023258D0 -_023258C8: - mov r0, r5 - bl AdvanceFrame -_023258D0: - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - bne _023258C8 -_023258E0: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023258E8: .word 0x02352AD8 - arm_func_end ov29_023256B4 - - arm_func_start ov29_023258EC -ov29_023258EC: ; 0x023258EC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x2c - mov sl, r2 - mov r4, r1 - mov r1, sl - mov r5, r0 - bl ShouldMovePlayAlternativeAnimation - cmp r0, #0 - movne r6, #1 - mov r0, r5 - moveq r6, #0 - bl GetApparentWeather - mov r1, r0 - ldrh r0, [sl, #4] - mov r2, r6 - bl GetMoveAnimationId - mov r6, r0 - bl GetMoveAnimation - ldrsh r7, [r0, #4] - mov r0, r4 - bl EntityIsValid__02325620 - cmp r0, #0 - bne _02325958 - mov r0, r5 - bl EntityIsValid__02325620 - cmp r0, #0 - beq _02325B04 -_02325958: - mov r0, r5 - ldr r8, [r5, #0xb4] - ldr sb, [r4, #0xb4] - bl ov29_022E5ED0 - cmp r0, #0 - beq _02325B04 - mov r0, r4 - bl ov29_022E5ED0 - cmp r0, #0 - beq _02325B04 - mov r0, r5 - mov r1, sl - bl ov29_02325D20 - cmp r0, #0 - bne _02325B04 - cmp r8, #0 - cmpne sb, #0 - beq _02325B04 - cmp r7, #0 - beq _02325B04 - ldr r1, _02325B0C ; =0x02352AD8 - mov r0, r7 - ldrh r2, [r1, #0xc] - ldrh r1, [r1, #0xe] - strh r2, [sp] - strh r1, [sp, #2] - bl GetEffectAnimation - ldrsb ip, [r0, #0x19] - mov r0, #0 - add r7, sp, #0x18 - strh r6, [sp, #0x18] - sub r6, r0, #1 - str r0, [sp, #0x24] - str r0, [sp, #0x28] - ldmia r7!, {r0, r1, r2, r3} - cmp ip, r6 - ldr r6, [r7] - add r7, sp, #4 - stmia r7!, {r0, r1, r2, r3} - str r6, [r7] - beq _02325A24 - and r6, ip, #0xff - add r0, sp, #0x20 - mov r2, r6 - add r1, r4, #0x2c - bl sub_0201CF90 - add r0, sp, #0xc - mov r2, r6 - add r1, r5, #0x2c - bl sub_0201CF90 - b _02325A3C -_02325A24: - ldrh r1, [sp] - ldrh r0, [sp, #2] - strh r1, [sp, #0x20] - strh r0, [sp, #0x22] - strh r1, [sp, #0xc] - strh r0, [sp, #0xe] -_02325A3C: - ldrsh r1, [sb, #4] - add r0, sp, #0x18 - strh r1, [sp, #0x1a] - ldr r1, [r4, #0xc] - mov r1, r1, asr #8 - strh r1, [sp, #0x1c] - ldr r1, [r4, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0x1e] - ldrsh r1, [r8, #4] - strh r1, [sp, #6] - ldr r1, [r5, #0xc] - mov r1, r1, asr #8 - strh r1, [sp, #8] - ldr r1, [r5, #0x10] - mov r1, r1, asr #8 - strh r1, [sp, #0xa] - bl ov10_022BF160 - cmp r0, #0 - beq _02325A9C - mov r0, #0x5d - bl ov29_0234BA54 - mov r0, #0x5d - bl AdvanceFrame -_02325A9C: - add r0, sp, #0x18 - bl ov10_022BFC5C - mov r7, r0 - add r0, sp, #4 - bl ov10_022BFC5C - mov r6, r0 - mov r0, #0x5b - bl AdvanceFrame - mov r0, r7 - mov r1, r4 - mov r2, #6 - bl ov29_022E6D68 - mov r0, r6 - mov r1, r5 - mov r2, #6 - bl ov29_022E6D68 - mov r0, r7, lsl #0x10 - mov r4, r0, asr #0x10 - mov r5, #0x28 - b _02325AF4 -_02325AEC: - mov r0, r5 - bl AdvanceFrame -_02325AF4: - mov r0, r4 - bl AnimationHasMoreFrames - cmp r0, #0 - bne _02325AEC -_02325B04: - add sp, sp, #0x2c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02325B0C: .word 0x02352AD8 - arm_func_end ov29_023258EC - - arm_func_start GetMoveAnimationId -GetMoveAnimationId: ; 0x02325B10 - cmp r0, #0x1f - bne _02325B68 - cmp r1, #7 - addls pc, pc, r1, lsl #2 - b _02325B64 -_02325B24: ; jump table - b _02325B44 ; case 0 - b _02325B48 ; case 1 - b _02325B50 ; case 2 - b _02325B44 ; case 3 - b _02325B58 ; case 4 - b _02325B60 ; case 5 - b _02325B44 ; case 6 - b _02325B60 ; case 7 -_02325B44: - bx lr -_02325B48: - ldr r0, _02325C44 ; =0x0000021F - bx lr -_02325B50: - ldr r0, _02325C48 ; =0x00000222 - bx lr -_02325B58: - ldr r0, _02325C4C ; =0x00000221 - bx lr -_02325B60: - mov r0, #0x220 -_02325B64: - bx lr -_02325B68: - cmp r2, #0 - bxeq lr - cmp r0, #0x9c - bgt _02325BDC - cmp r0, #0x97 - blt _02325B98 - beq _02325C2C - cmp r0, #0x99 - beq _02325C34 - cmp r0, #0x9c - ldreq r0, _02325C50 ; =0x00000229 - bx lr -_02325B98: - cmp r0, #0x3c - bgt _02325BC0 - bge _02325C24 - cmp r0, #8 - bgt _02325BB4 - ldreq r0, _02325C54 ; =0x00000223 - bx lr -_02325BB4: - cmp r0, #0x19 - ldreq r0, _02325C58 ; =0x0000022D - bx lr -_02325BC0: - cmp r0, #0x4b - bgt _02325BD0 - ldreq r0, _02325C5C ; =0x00000225 - bx lr -_02325BD0: - cmp r0, #0x64 - ldreq r0, _02325C60 ; =0x00000226 - bx lr -_02325BDC: - cmp r0, #0xed - bgt _02325C04 - bge _02325C3C - cmp r0, #0xcd - bgt _02325BF8 - ldreq r0, _02325C64 ; =0x0000022A - bx lr -_02325BF8: - cmp r0, #0xe3 - ldreq r0, _02325C68 ; =0x0000022E - bx lr -_02325C04: - cmp r0, #0x15c - bgt _02325C14 - ldreq r0, _02325C6C ; =0x0000022B - bx lr -_02325C14: - ldr r1, _02325C70 ; =0x000001DD - cmp r0, r1 - moveq r0, #0x230 - bx lr -_02325C24: - mov r0, #0x224 - bx lr -_02325C2C: - ldr r0, _02325C74 ; =0x00000227 - bx lr -_02325C34: - mov r0, #0x228 - bx lr -_02325C3C: - mov r0, #0x22c - bx lr - .align 2, 0 -_02325C44: .word 0x0000021F -_02325C48: .word 0x00000222 -_02325C4C: .word 0x00000221 -_02325C50: .word 0x00000229 -_02325C54: .word 0x00000223 -_02325C58: .word 0x0000022D -_02325C5C: .word 0x00000225 -_02325C60: .word 0x00000226 -_02325C64: .word 0x0000022A -_02325C68: .word 0x0000022E -_02325C6C: .word 0x0000022B -_02325C70: .word 0x000001DD -_02325C74: .word 0x00000227 - arm_func_end GetMoveAnimationId - - arm_func_start ShouldMovePlayAlternativeAnimation -ShouldMovePlayAlternativeAnimation: ; 0x02325C78 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrh r1, [r4, #4] - mov r5, r0 - cmp r1, #0xed - bne _02325CC8 - bl EntityIsValid__02325620 - cmp r0, #0 - beq _02325D04 - ldr r0, [r5] - cmp r0, #1 - bne _02325D04 - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0x5e] - cmp r0, #0xe - ldrneb r0, [r1, #0x5f] - cmpne r0, #0xe - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02325CC8: - cmp r1, #0x19 - cmpne r1, #0xe3 - bne _02325CEC - mov r0, r5 - bl ov29_023007A8 - cmp r0, #0 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_02325CEC: - cmp r1, #0x97 - bne _02325D04 - bl GetApparentWeather - cmp r0, #1 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_02325D04: - mov r0, r5 - mov r1, r4 - bl ov29_023245A4 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ShouldMovePlayAlternativeAnimation - - arm_func_start ov29_02325D20 -ov29_02325D20: ; 0x02325D20 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldrh r1, [r4, #4] - mov r5, r0 - cmp r1, #0x9c - bne _02325D4C - bl GetTileAtEntity - bl ov29_02337E2C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02325D4C: - ldrh r0, [r4, #4] - cmp r0, #8 - bne _02325D74 - mov r0, r5 - bl GetTileAtEntity - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02325D74: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02325D20 - - arm_func_start ov29_02325D7C -ov29_02325D7C: ; 0x02325D7C - stmdb sp!, {r4, lr} - mov r4, r1 - bl ov10_022BF160 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0x5d - bl ov29_0234BA54 - mov r0, #0x5d - bl AdvanceFrame - cmp r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #5 - mov r1, #0 - bl ov29_022EA428 - mov r0, #0x5c - bl AdvanceFrame - ldmia sp!, {r4, pc} - arm_func_end ov29_02325D7C - - arm_func_start ov29_02325DC0 -ov29_02325DC0: ; 0x02325DC0 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02325DC0 - - arm_func_start ov29_02325DE4 -ov29_02325DE4: ; 0x02325DE4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02325E50 - ldr r1, _02325E5C ; =0x022C4440 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02325E50 - ldr r0, _02325E60 ; =0x02352AEC - mov r3, r4 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat -_02325E50: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02325E5C: .word 0x022C4440 -_02325E60: .word 0x02352AEC - arm_func_end ov29_02325DE4 - - arm_func_start ov29_02325E64 -ov29_02325E64: ; 0x02325E64 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr ip, _02325EB8 ; =0x0237CA70 - str r3, [sp] - ldr ip, [ip] - ldr r3, _02325EBC ; =0x02352AF0 - mov r4, #0 - ldr r3, [r3, ip, lsl #2] - bl DealDamage - cmp r0, #0 - ldreq r0, _02325EC0 ; =0x0237CA69 - moveq r1, #1 - streqb r1, [r0] - ldr r1, _02325EB8 ; =0x0237CA70 - movne r4, #1 - ldr r2, [r1] - mov r0, r4 - add r2, r2, #1 - str r2, [r1] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02325EB8: .word 0x0237CA70 -_02325EBC: .word 0x02352AF0 -_02325EC0: .word 0x0237CA69 - arm_func_end ov29_02325E64 - - arm_func_start ov29_02325EC4 -ov29_02325EC4: ; 0x02325EC4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _02325EFC ; =0x022C4860 - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - add r2, r2, #1 - bl TryInflictYawningStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02325EFC: .word 0x022C4860 - arm_func_end ov29_02325EC4 - - arm_func_start ov29_02325F00 -ov29_02325F00: ; 0x02325F00 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _02325F38 ; =0x022C4720 - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - mov r3, #1 - bl TryInflictSleepStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02325F38: .word 0x022C4720 - arm_func_end ov29_02325F00 - - arm_func_start ov29_02325F3C -ov29_02325F3C: ; 0x02325F3C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _02325F70 ; =0x022C4724 - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl TryInflictNightmareStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02325F70: .word 0x022C4724 - arm_func_end ov29_02325F3C - - arm_func_start ov29_02325F74 -ov29_02325F74: ; 0x02325F74 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetApparentWeather - mov ip, #1 - ldr r1, _02325FB0 ; =0x022C4984 - mov r0, r0, lsl #1 - ldrsh r2, [r1, r0] - mov r0, r5 - mov r1, r4 - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02325FB0: .word 0x022C4984 - arm_func_end ov29_02325F74 - - arm_func_start ov29_02325FB4 -ov29_02325FB4: ; 0x02325FB4 - stmdb sp!, {r3, lr} - bl ov29_02319584 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02325FB4 - - arm_func_start ov29_02325FC4 -ov29_02325FC4: ; 0x02325FC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl GetTileAtEntity - mov sb, r0 - bl ov29_02337E2C - cmp r0, #0 - beq _02326000 - ldrh r0, [sb] - and r0, r0, #3 - cmp r0, #1 - beq _02326014 -_02326000: - ldr r2, _0232607C ; =0x00000EC4 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02326074 -_02326014: - mov r0, r8 - mov r1, r6 - bl ov29_023245A4 - cmp r0, #0 - beq _02326050 - ldr r1, _02326080 ; =0x022C47E4 - mov r0, r8 - ldr r3, [r1] - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - mov r0, r8 - bl ov29_02318D58 - b _02326070 -_02326050: - ldr r0, _02326084 ; =0x00000CD6 - bl StringFromMessageId - str r0, [sp] - mov r0, r8 - mov r1, r8 - mov r3, r6 - mov r2, #0xa - bl ov29_02318BBC -_02326070: - mov r4, #1 -_02326074: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0232607C: .word 0x00000EC4 -_02326080: .word 0x022C47E4 -_02326084: .word 0x00000CD6 - arm_func_end ov29_02325FC4 - - arm_func_start ov29_02326088 -ov29_02326088: ; 0x02326088 - stmdb sp!, {r3, lr} - ldr r2, _023260A4 ; =0x02352AE8 - mov r3, #1 - ldr r2, [r2] - bl LowerHitChanceStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023260A4: .word 0x02352AE8 - arm_func_end ov29_02326088 - - arm_func_start ov29_023260A8 -ov29_023260A8: ; 0x023260A8 - stmdb sp!, {r3, lr} - ldr r2, _023260CC ; =0x02352AEC - mov ip, #1 - ldr r2, [r2] - mov r3, #0x80 - str ip, [sp] - bl ApplyOffensiveStatMultiplier - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023260CC: .word 0x02352AEC - arm_func_end ov29_023260A8 - - arm_func_start ov29_023260D0 -ov29_023260D0: ; 0x023260D0 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _02326120 ; =0x022C4654 - ldr r2, _02326124 ; =0x02353538 - ldrsh r3, [r3] - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - add r2, r2, #0xcd00 - mov r0, #1 - mov r1, #0 - strh r3, [r2, #0x42] - bl ov29_023354C4 - cmp r0, #0 - bne _02326118 - ldr r2, _02326128 ; =0x00000EC5 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02326118: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02326120: .word 0x022C4654 -_02326124: .word 0x02353538 -_02326128: .word 0x00000EC5 - arm_func_end ov29_023260D0 - - arm_func_start ov29_0232612C -ov29_0232612C: ; 0x0232612C - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _0232617C ; =0x022C4654 - ldr r2, _02326180 ; =0x02353538 - ldrsh r3, [r3] - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - add r2, r2, #0xcd00 - mov r0, #1 - mov r1, #0 - strh r3, [r2, #0x44] - bl ov29_023354C4 - cmp r0, #0 - bne _02326174 - ldr r2, _02326184 ; =0x00000EC8 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02326174: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232617C: .word 0x022C4654 -_02326180: .word 0x02353538 -_02326184: .word 0x00000EC8 - arm_func_end ov29_0232612C - - arm_func_start ov29_02326188 -ov29_02326188: ; 0x02326188 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_02305C28 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02326188 - - arm_func_start ov29_023261A0 -ov29_023261A0: ; 0x023261A0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023261FC - ldr r1, _02326208 ; =0x022C462C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023261FC - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl LowerSpeed -_023261FC: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326208: .word 0x022C462C - arm_func_end ov29_023261A0 - - arm_func_start ov29_0232620C -ov29_0232620C: ; 0x0232620C - stmdb sp!, {r3, lr} - mov r2, #0 - bl ov29_02316720 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232620C - - arm_func_start ov29_02326220 -ov29_02326220: ; 0x02326220 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, _02326260 ; =0x00000CCF - mov r5, r1 - mov r4, r2 - bl StringFromMessageId - str r0, [sp] - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #0xc - bl ov29_02318BBC - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326260: .word 0x00000CCF - arm_func_end ov29_02326220 - - arm_func_start ov29_02326264 -ov29_02326264: ; 0x02326264 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov r7, r1 - ldr r5, [r7, #0xb4] - mov r4, #0 - ldrsh r5, [r5, #0x10] - mov r8, r0 - mov r6, r2 - add r2, r5, r5, lsr #31 - mov r5, r3 - strb r4, [sp, #0x1c] - movs sl, r2, asr #1 - beq _02326304 - mov r0, r6 - bl GetMoveType - mov r4, r0 - ldrh r0, [r6, #4] - bl GetMoveCategory - mov sb, r0 - mov r1, r5 - mov r0, r6 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r4, sb} - str r0, [sp, #0xc] - mov r5, #0 - str r5, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r7 - mov r2, sl - mov r0, r8 - str r5, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r5 - strb r0, [sp, #0x1c] - b _0232630C -_02326304: - ldr r2, _02326318 ; =0x00000EC9 - bl LogMessageByIdWithPopupCheckUserTarget -_0232630C: - ldrb r0, [sp, #0x1c] - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02326318: .word 0x00000EC9 - arm_func_end ov29_02326264 - - arm_func_start ov29_0232631C -ov29_0232631C: ; 0x0232631C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - ldr r4, [r6, #0xb4] - ldr r0, [r5, #0xb4] - ldrsh r3, [r4, #0x10] - ldrsh r2, [r0, #0x10] - ldr r1, _02326400 ; =0x000003E7 - add r2, r3, r2 - add r2, r2, r2, lsr #31 - mov r2, r2, lsl #0xf - mov r2, r2, asr #0x10 - strh r2, [r4, #0x10] - strh r2, [r0, #0x10] - ldrsh r3, [r4, #0x12] - ldrsh r2, [r4, #0x16] - add r3, r3, r2 - cmp r3, r1 - ldrsh r2, [r4, #0x10] - movle r1, r3 - cmp r2, r1 - ble _02326384 - ldr r1, _02326400 ; =0x000003E7 - cmp r3, r1 - movgt r3, r1 - strh r3, [r4, #0x10] -_02326384: - ldrsh r2, [r0, #0x12] - ldrsh r1, [r0, #0x16] - ldr r3, _02326400 ; =0x000003E7 - add r2, r2, r1 - cmp r2, r3 - ldrsh r1, [r0, #0x10] - movle r3, r2 - cmp r1, r3 - ble _023263B8 - ldr r1, _02326400 ; =0x000003E7 - cmp r2, r1 - movgt r2, r1 - strh r2, [r0, #0x10] -_023263B8: - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldrb r0, [r4, #0x108] - ldr r2, _02326404 ; =0x00000ECA - mov r1, r5 - cmp r0, #1 - movlo r0, #1 - strlob r0, [r4, #0x108] - mov r0, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02326400: .word 0x000003E7 -_02326404: .word 0x00000ECA - arm_func_end ov29_0232631C - - arm_func_start ov29_02326408 -ov29_02326408: ; 0x02326408 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - ldr r8, [sb, #0xb4] - mov r7, #0 - mov sl, r0 - mov r6, r7 - add r5, r8, #0x124 - mov fp, #1 -_0232642C: - ldrb r0, [r5, r6, lsl #3] - mov r4, r6, lsl #3 - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _023264A0 - ldrb r0, [r5, r4] - tst r0, #0x20 - bne _02326494 - tst r0, #0x10 - beq _023264A0 - bl ov29_0234B034 - mov r1, #0 - add r2, r5, r4 - mov r3, r1 - bl FormatMoveStringMore - ldr r2, _02326548 ; =0x00000ECB - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r0, [r5, r4] - mov r7, #1 - orr r0, r0, #0x20 - strb r0, [r5, r4] - b _023264A0 -_02326494: - tst r0, #0x10 - biceq r0, r0, #0x20 - streqb r0, [r5, r4] -_023264A0: - add r6, r6, #1 - cmp r6, #4 - blt _0232642C - ldrb r0, [r8, #0x144] - tst r0, #0x20 - bne _02326504 - tst r0, #0x10 - beq _02326510 - add r0, sp, #0 - mov r1, #0x160 - bl InitMove - ldrb r0, [r8, #0x144] - mov r7, #1 - orr r0, r0, #0x20 - strb r0, [r8, #0x144] - bl ov29_0234B034 - mov r1, #0 - add r2, sp, #0 - mov r3, r1 - bl FormatMoveStringMore - ldr r2, _02326548 ; =0x00000ECB - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _02326510 -_02326504: - tst r0, #0x10 - biceq r0, r0, #0x20 - streqb r0, [r8, #0x144] -_02326510: - cmp r7, #0 - beq _0232652C - ldrb r0, [r8, #0xd2] - cmp r0, #1 - moveq r0, #0 - streqb r0, [r8, #0xd2] - b _0232653C -_0232652C: - ldr r2, _0232654C ; =0x00000ECC - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232653C: - mov r0, r7 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02326548: .word 0x00000ECB -_0232654C: .word 0x00000ECC - arm_func_end ov29_02326408 - - arm_func_start ov29_02326550 -ov29_02326550: ; 0x02326550 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, r2 - bl LowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02326550 - - arm_func_start ov29_02326568 -ov29_02326568: ; 0x02326568 - stmdb sp!, {r3, r4, r5, lr} - mov r2, #1 - mov r3, #0 - mov r5, r0 - mov r4, r1 - bl TryInflictConfusedStatus - ldr r1, _023265A0 ; =0x02352AEC - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023265A0: .word 0x02352AEC - arm_func_end ov29_02326568 - - arm_func_start ov29_023265A4 -ov29_023265A4: ; 0x023265A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_023007A8 - cmp r0, #0 - beq _02326624 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02326634 - ldr r1, _02326640 ; =0x022C4600 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02326634 - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryInflictCringeStatus - b _02326634 -_02326624: - ldr r2, _02326644 ; =0x00000ECD - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02326634: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02326640: .word 0x022C4600 -_02326644: .word 0x00000ECD - arm_func_end ov29_023265A4 - - arm_func_start ov29_02326648 -ov29_02326648: ; 0x02326648 - stmdb sp!, {r3, lr} - ldr r2, _0232666C ; =0x02352AEC - mov ip, #1 - ldr r2, [r2] - mov r3, #0x40 - str ip, [sp] - bl ApplyDefensiveStatMultiplier - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232666C: .word 0x02352AEC - arm_func_end ov29_02326648 - - arm_func_start ov29_02326670 -ov29_02326670: ; 0x02326670 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023266CC - ldr r1, _023266D8 ; =0x022C444C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023266CC - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_023266CC: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023266D8: .word 0x022C444C - arm_func_end ov29_02326670 - - arm_func_start ov29_023266DC -ov29_023266DC: ; 0x023266DC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl GetApparentWeather - mov r4, r0 - mov r0, r8 - mov r1, r7 - bl ov29_02307C78 - ldr ip, _02326748 ; =0x022C4B54 - ldr r2, _0232674C ; =0x022C48DC - ldr ip, [ip, r4, lsl #2] - ldrb r2, [r2, r4] - str ip, [sp] - mov r0, r8 - mov r1, r7 - mov r3, r6 - str r5, [sp, #4] - bl ov29_02332CDC - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02326748: .word 0x022C4B54 -_0232674C: .word 0x022C48DC - arm_func_end ov29_023266DC - - arm_func_start ov29_02326750 -ov29_02326750: ; 0x02326750 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - ldr r1, [r5, #0xb4] - mov r6, r0 - ldrb r0, [r1, #0xd2] - mov r1, r5 - mov r4, #0 - cmp r0, #9 - moveq ip, #0x200 - movne ip, #0x100 - str r3, [sp] - mov r0, r6 - mov r3, ip - bl DealDamage - cmp r0, #0 - beq _023267C8 - ldr r1, _023267D4 ; =0x022C44A4 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023267C8 - mov r0, r6 - mov r1, r5 - mov r2, #0x3b - mov r3, #0 - bl TryInflictConstrictionStatus -_023267C8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023267D4: .word 0x022C44A4 - arm_func_end ov29_02326750 - - arm_func_start ov29_023267D8 -ov29_023267D8: ; 0x023267D8 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _02326808 ; =0x02352AE8 - mov ip, #1 - ldr r2, [r2] - str ip, [sp] - mov r3, #2 - str ip, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02326808: .word 0x02352AE8 - arm_func_end ov29_023267D8 - - arm_func_start ov29_0232680C -ov29_0232680C: ; 0x0232680C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r1 - ldr r1, [r5, #0xb4] - mov r4, #0 - add lr, r1, #0x124 - mov ip, #1 - mov r6, r0 - mov r7, r4 - mov r3, r4 - mov r1, r4 - mov r0, ip -_02326838: - ldrb r2, [lr, r7, lsl #3] - add r8, lr, r7, lsl #3 - tst r2, #1 - movne r2, ip - moveq r2, r3 - tst r2, #0xff - beq _02326864 - ldrb r2, [r8] - tst r2, #0x10 - movne r4, r0 - strneb r1, [r8, #6] -_02326864: - add r7, r7, #1 - cmp r7, #4 - blt _02326838 - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - cmp r4, #0 - beq _0232689C - ldr r2, _023268B4 ; =0x00000ECE - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _023268AC -_0232689C: - ldr r2, _023268B8 ; =0x00000ECF - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_023268AC: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023268B4: .word 0x00000ECE -_023268B8: .word 0x00000ECF - arm_func_end ov29_0232680C - - arm_func_start ov29_023268BC -ov29_023268BC: ; 0x023268BC - stmdb sp!, {r3, lr} - bl ov29_02315D84 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_023268BC - - arm_func_start ov29_023268CC -ov29_023268CC: ; 0x023268CC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _02326904 ; =0x022C47C4 - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - mov r3, #0 - bl ov29_02315C00 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02326904: .word 0x022C47C4 - arm_func_end ov29_023268CC - - arm_func_start ov29_02326908 -ov29_02326908: ; 0x02326908 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ov29_02307C78 - mov r0, r5 - mov r1, r4 - bl ov29_02319418 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02326908 - - arm_func_start ov29_0232692C -ov29_0232692C: ; 0x0232692C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - ldr r5, [sb, #0xb4] - mov r6, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, sb - mov r1, r8 - mov r2, r7 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - beq _02326988 - mov r1, r4 - mov r0, sb - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - movne r0, r4 - strneb r0, [r5, #0x15f] -_02326988: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_0232692C - - arm_func_start ov29_02326990 -ov29_02326990: ; 0x02326990 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023269F8 - ldr r1, _02326A04 ; =0x022C4428 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023269F8 - ldr r0, _02326A08 ; =0x02352AEC - mov ip, #0 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - mov r3, #0x80 - str ip, [sp] - bl ApplyOffensiveStatMultiplier -_023269F8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326A04: .word 0x022C4428 -_02326A08: .word 0x02352AEC - arm_func_end ov29_02326990 - - arm_func_start ov29_02326A0C -ov29_02326A0C: ; 0x02326A0C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r2, _02326A6C ; =0x02352AEC - ldr r4, [r6, #0xb4] - mov ip, #1 - strh ip, [r4, #0x10] - ldr r2, [r2] - mov r3, #0x40 - mov r5, r1 - str ip, [sp] - bl ApplyOffensiveStatMultiplier - ldr r0, _02326A70 ; =0x02352AE8 - mov ip, #1 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - mov r3, #0x40 - str ip, [sp] - bl ApplyOffensiveStatMultiplier - mov r0, #1 - strb r0, [r4, #0x15e] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326A6C: .word 0x02352AEC -_02326A70: .word 0x02352AE8 - arm_func_end ov29_02326A0C - - arm_func_start ov29_02326A74 -ov29_02326A74: ; 0x02326A74 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02326AD4 - ldr r1, _02326AE0 ; =0x022C4500 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02326AD4 - ldr r1, _02326AE4 ; =0x02352AEC - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat -_02326AD4: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326AE0: .word 0x022C4500 -_02326AE4: .word 0x02352AEC - arm_func_end ov29_02326A74 - - arm_func_start ov29_02326AE8 -ov29_02326AE8: ; 0x02326AE8 - stmdb sp!, {r3, r4, r5, lr} - mov r2, #1 - mov r3, #0 - mov r5, r0 - mov r4, r1 - bl TryInflictConfusedStatus - ldr r1, _02326B20 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #1 - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02326B20: .word 0x02352AE8 - arm_func_end ov29_02326AE8 - - arm_func_start ov29_02326B24 -ov29_02326B24: ; 0x02326B24 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r5, r1 - bl ov29_02313C74 - movs r4, r0 - beq _02326B94 - ldr r3, [r5, #0xb4] - ldrb r0, [r3, #0x15c] - cmp r0, #0 - bne _02326BAC - mov r0, #1 - mov r1, r5 - mov r2, #0 - strb r0, [r3, #0x15c] - bl SubstitutePlaceholderStringTags - cmp r4, #1 - bne _02326B80 - ldr r2, _02326BB8 ; =0x00000CDD - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02326BAC -_02326B80: - ldr r2, _02326BBC ; =0x00000CDC - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02326BAC -_02326B94: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, #1 - str r2, [sp] - bl TryInflictBurnStatus -_02326BAC: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326BB8: .word 0x00000CDD -_02326BBC: .word 0x00000CDC - arm_func_end ov29_02326B24 - - arm_func_start ov29_02326BC0 -ov29_02326BC0: ; 0x02326BC0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov sb, r0 - mov r4, r3 - mov r8, r1 - mov r7, r2 - ldr lr, [sb, #0xb4] - mov r6, #1 - mov ip, #0 - ldr r3, _02326C98 ; =0x022C4C0C - ldr r0, _02326C9C ; =0x000003E7 - b _02326C18 -_02326BF0: - mov r5, ip, lsl #2 - ldrsh r2, [r3, r5] - cmp r2, #0 - blt _02326C20 - ldrsh r1, [lr, #0xe] - cmp r1, r2 - ldrlt r0, _02326CA0 ; =0x022C4C0E - ldrltsh r6, [r0, r5] - blt _02326C20 - add ip, ip, #1 -_02326C18: - cmp ip, r0 - blt _02326BF0 -_02326C20: - mov r0, r7 - bl GetMoveType - mov r5, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r4 - mov r4, r0 - mov r0, r7 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r5} - str r4, [sp, #8] - mov r2, r6 - str r0, [sp, #0xc] - mov r6, #0 - str r6, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r8 - mov r0, sb - str r6, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r6 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02326C98: .word 0x022C4C0C -_02326C9C: .word 0x000003E7 -_02326CA0: .word 0x022C4C0E - arm_func_end ov29_02326BC0 - - arm_func_start ov29_02326CA4 -ov29_02326CA4: ; 0x02326CA4 - ldr ip, _02326CB0 ; =ov29_02314EB8 - mov r2, #1 - bx ip - .align 2, 0 -_02326CB0: .word ov29_02314EB8 - arm_func_end ov29_02326CA4 - - arm_func_start ov29_02326CB4 -ov29_02326CB4: ; 0x02326CB4 - stmdb sp!, {r3, lr} - mov r2, #4 - bl ov29_02318D98 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02326CB4 - - arm_func_start ov29_02326CC8 -ov29_02326CC8: ; 0x02326CC8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02326D40 - ldr r1, _02326D4C ; =0x022C4688 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02326D40 - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_02326D40: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02326D4C: .word 0x022C4688 - arm_func_end ov29_02326CC8 - - arm_func_start ov29_02326D50 -ov29_02326D50: ; 0x02326D50 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02326DC8 - ldr r1, _02326DD4 ; =0x022C4544 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02326DC8 - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_02326DC8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02326DD4: .word 0x022C4544 - arm_func_end ov29_02326D50 - - arm_func_start ov29_02326DD8 -ov29_02326DD8: ; 0x02326DD8 - stmdb sp!, {r3, lr} - ldrh r3, [r2, #4] - ldr r2, _02326E00 ; =0x0000013B - cmp r3, r2 - moveq r2, #0x7a - movne r2, #0x51 - mov r3, #0 - bl ov29_023174C8 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02326E00: .word 0x0000013B - arm_func_end ov29_02326DD8 - - arm_func_start ov29_02326E04 -ov29_02326E04: ; 0x02326E04 - stmdb sp!, {r3, lr} - ldr r2, _02326E1C ; =0x02352AE8 - ldr r2, [r2] - bl BoostHitChanceStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02326E1C: .word 0x02352AE8 - arm_func_end ov29_02326E04 - - arm_func_start ov29_02326E20 -ov29_02326E20: ; 0x02326E20 - stmdb sp!, {r3, lr} - ldr ip, [r1, #0xb4] - mov lr, #1 - ldrb ip, [ip, #0xd2] - add ip, ip, #0xf9 - and ip, ip, #0xff - cmp ip, #1 - movls lr, #2 - str r3, [sp] - mov r3, lr, lsl #8 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02326E20 - - arm_func_start ov29_02326E60 -ov29_02326E60: ; 0x02326E60 - stmdb sp!, {r3, lr} - ldr r2, _02326E7C ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02326E7C: .word 0x02352AEC - arm_func_end ov29_02326E60 - - arm_func_start ov29_02326E80 -ov29_02326E80: ; 0x02326E80 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02326E80 - - arm_func_start ov29_02326E98 -ov29_02326E98: ; 0x02326E98 - stmdb sp!, {r3, lr} - ldr r2, _02326EB4 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02326EB4: .word 0x02352AEC - arm_func_end ov29_02326E98 - - arm_func_start ov29_02326EB8 -ov29_02326EB8: ; 0x02326EB8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl ov29_023245A4 - cmp r0, #0 - beq _02326F14 - ldr r1, _02326F40 ; =0x022C48B0 - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r7 - and r4, r1, #0xff - bl ov29_02318D58 - b _02326F38 -_02326F14: - ldr r0, _02326F44 ; =0x00000CCD - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r7 - mov r3, r5 - mov r2, #4 - bl ov29_02318BBC - mov r4, #1 -_02326F38: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02326F40: .word 0x022C48B0 -_02326F44: .word 0x00000CCD - arm_func_end ov29_02326EB8 - - arm_func_start ov29_02326F48 -ov29_02326F48: ; 0x02326F48 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, _02326F88 ; =0x00000CCE - mov r5, r1 - mov r4, r2 - bl StringFromMessageId - str r0, [sp] - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #1 - bl ov29_02318BBC - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02326F88: .word 0x00000CCE - arm_func_end ov29_02326F48 - - arm_func_start ov29_02326F8C -ov29_02326F8C: ; 0x02326F8C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r3, #0 - mov r6, r0 - strb r3, [sp, #0x1c] - ldr r3, [r6, #0xb4] - ldr r0, _0232702C ; =0x000003E7 - ldr r3, [r3, #0xb8] - mov r8, r2 - mov r4, r3, lsl #1 - cmp r0, r3, lsl #1 - movlt r4, r0 - mov r0, r8 - mov r5, r1 - bl GetMoveType - mov r7, r0 - ldrh r0, [r8, #4] - bl GetMoveCategory - add r2, sp, #0x1c - stmia sp, {r2, r7} - str r0, [sp, #8] - ldr r1, _02327030 ; =0x0000023E - mov ip, #0 - str r1, [sp, #0xc] - str ip, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r0, r6 - mov r1, r5 - mov r2, r4 - str ip, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232702C: .word 0x000003E7 -_02327030: .word 0x0000023E - arm_func_end ov29_02326F8C - - arm_func_start ov29_02327034 -ov29_02327034: ; 0x02327034 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023270A0 - ldr r1, _023270AC ; =0x022C4450 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023270A0 - ldr r0, _023270B0 ; =0x02352AEC - mov r3, r4 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat -_023270A0: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023270AC: .word 0x022C4450 -_023270B0: .word 0x02352AEC - arm_func_end ov29_02327034 - - arm_func_start ov29_023270B4 -ov29_023270B4: ; 0x023270B4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327110 - ldr r1, _0232711C ; =0x022C4534 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327110 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_02327110: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232711C: .word 0x022C4534 - arm_func_end ov29_023270B4 - - arm_func_start ov29_02327120 -ov29_02327120: ; 0x02327120 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232717C - ldr r1, _02327188 ; =0x022C4658 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232717C - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_0232717C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327188: .word 0x022C4658 - arm_func_end ov29_02327120 - - arm_func_start ov29_0232718C -ov29_0232718C: ; 0x0232718C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r4, #0 - mov sb, r0 - strb r4, [sp, #0x1c] - mov r8, r1 - ldr r1, [r8, #0xb4] - ldr r0, [sb, #0xb4] - ldrsh r1, [r1, #0x10] - ldrsh r0, [r0, #0x10] - mov r7, r2 - mov r6, r3 - subs r5, r1, r0 - mov r0, r8 - movmi r5, r4 - bl ov29_02319748 - cmp r0, #0 - mov r0, r7 - movne r8, sb - bl GetMoveType - mov r4, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r6 - mov r6, r0 - mov r0, r7 - bl ov29_02324E44 - mov r2, r5 - add r5, sp, #0x1c - str r5, [sp] - stmib sp, {r4, r6} - str r0, [sp, #0xc] - mov r3, #0 - str r3, [sp, #0x10] - mov r4, #1 - str r4, [sp, #0x14] - mov r1, r8 - mov r0, sb - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, r4 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_0232718C - - arm_func_start ov29_0232724C -ov29_0232724C: ; 0x0232724C - stmdb sp!, {r3, lr} - ldr ip, [r0, #0xb4] - mov lr, #0x100 - ldrb ip, [ip, #0xbf] - cmp ip, #0 - ldrne ip, _02327288 ; =0x022C4718 - str r3, [sp] - ldrne lr, [ip] - mov r3, lr - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02327288: .word 0x022C4718 - arm_func_end ov29_0232724C - - arm_func_start ov29_0232728C -ov29_0232728C: ; 0x0232728C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023272E8 - ldr r1, _023272F4 ; =0x022C4514 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023272E8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl LowerSpeed -_023272E8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023272F4: .word 0x022C4514 - arm_func_end ov29_0232728C - - arm_func_start ov29_023272F8 -ov29_023272F8: ; 0x023272F8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - ldr r5, [r6, #0xb4] - mov r7, r0 - str r3, [sp] - mov r3, #0x100 - mov r4, #0 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, r4 - orr r0, r4, r0 - ands r4, r0, #0xff - beq _0232735C - ldrb r0, [r5, #0xd5] - cmp r0, #1 - cmpne r0, #3 - bne _0232735C - ldr r2, _02327364 ; =0x00000ED2 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r7 - mov r1, r6 - bl ov29_023064F4 -_0232735C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02327364: .word 0x00000ED2 - arm_func_end ov29_023272F8 - - arm_func_start ov29_02327368 -ov29_02327368: ; 0x02327368 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023273C0 - mov r2, r4 - mov r0, r6 - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023273C0 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl LowerSpeed -_023273C0: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_02327368 - - arm_func_start ov29_023273CC -ov29_023273CC: ; 0x023273CC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl ov29_023245A4 - cmp r0, #0 - beq _02327428 - ldr r1, _02327454 ; =0x022C48B4 - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r7 - and r4, r1, #0xff - bl ov29_02318D58 - b _0232744C -_02327428: - mov r0, #0xcd0 - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r7 - mov r3, r5 - mov r2, #5 - bl ov29_02318BBC - mov r4, #1 -_0232744C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02327454: .word 0x022C48B4 - arm_func_end ov29_023273CC - - arm_func_start ov29_02327458 -ov29_02327458: ; 0x02327458 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r8, r1 - mov r7, r2 - mov r5, r3 - cmp sb, r8 - mov r4, #0 - beq _023274B8 - cmp sb, #0 - moveq r0, r4 - beq _02327498 - ldr r0, [sb] - cmp r0, #1 - moveq r0, #1 - movne r0, r4 - and r0, r0, #0xff -_02327498: - cmp r0, #0 - beq _023274B8 - mov r0, sb - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r6, #0 - bne _023274C8 -_023274B8: - mov r0, r8 - mov r1, #0x3a - bl AbilityIsActive2 - mov r6, r0 -_023274C8: - mov r0, sb - mov r1, r8 - mov r2, r7 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - movs r5, r0 - movne r4, #1 - cmp r4, #0 - beq _02327590 - mov r0, sb - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _02327590 - ldr r1, [sb, #0xb4] - add r0, r5, r5, lsr #31 - mov r5, r0, asr #1 - ldrb r0, [r1, #0x108] - mov r4, #1 - cmp r5, #1 - movlt r5, r4 - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x108] - cmp r6, #0 - beq _0232754C - mov r2, #0xd - mov r0, sb - mov r1, r5 - add r3, r2, #0x22c - bl ov29_0230D11C - b _02327590 -_0232754C: - ldr r1, [sb, #0xb4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _0232756C - add r0, r1, #0x228 - mov r1, #0x57 - bl ExclusiveItemEffectFlagTest -_0232756C: - cmp r0, #0 - movne r5, r5, lsl #1 - mov r6, #1 - mov r0, sb - mov r1, sb - mov r2, r5 - mov r3, #0 - str r6, [sp] - bl TryIncreaseHp -_02327590: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02327458 - - arm_func_start ov29_02327598 -ov29_02327598: ; 0x02327598 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [r0, #0xb4] - ldr r6, _02327644 ; =0x000003E7 - ldrsh r5, [ip, #0x12] - ldrsh r4, [ip, #0x16] - ldrsh ip, [ip, #0x10] - add lr, r5, r4 - cmp lr, r6 - movle r6, lr - mov r4, r6, asr #1 - add r4, r6, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #0 - ble _0232761C - ldr r4, _02327644 ; =0x000003E7 - cmp lr, r4 - movle r4, lr - mov r5, r4, lsl #1 - mov r4, r5, asr #1 - add r4, r5, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #1 - ble _0232761C - ldr r4, _02327644 ; =0x000003E7 - cmp lr, r4 - movgt lr, r4 - add r4, lr, lr, lsl #1 - mov lr, r4, asr #1 - add lr, r4, lr, lsr #30 - cmp ip, lr, asr #2 - movle r5, #2 - movgt r5, #3 -_0232761C: - ldr r4, _02327648 ; =0x022C4994 - str r3, [sp] - ldr r3, [r4, r5, lsl #2] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327644: .word 0x000003E7 -_02327648: .word 0x022C4994 - arm_func_end ov29_02327598 - - arm_func_start ov29_0232764C -ov29_0232764C: ; 0x0232764C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr ip, [r4, #0xb4] - mov r5, r0 - ldrb ip, [ip, #0xbf] - cmp ip, #4 - str r3, [sp] - bne _02327694 - mov r3, #0x200 - bl DealDamage - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r1, r4 - mov r0, r5 - and r4, r2, #0xff - bl ov29_023061A8 - b _023276AC -_02327694: - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r4, r0, #0xff -_023276AC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0232764C - - arm_func_start ov29_023276B4 -ov29_023276B4: ; 0x023276B4 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _023276E4 ; =0x02352AE8 - mov ip, #1 - ldr r2, [r2] - str ip, [sp] - mov r3, #3 - str ip, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_023276E4: .word 0x02352AE8 - arm_func_end ov29_023276B4 - - arm_func_start ov29_023276E8 -ov29_023276E8: ; 0x023276E8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r2, _02327740 ; =0x02352AE8 - mov r3, #1 - ldr r2, [r2, #4] - str r3, [sp] - mov r5, r0 - mov r4, r1 - str r2, [sp, #8] - str r3, [sp, #4] - bl LowerOffensiveStat - add r0, sp, #8 - mov r3, #1 - ldr r2, [r0] - str r3, [sp] - mov r0, r5 - mov r1, r4 - str r3, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02327740: .word 0x02352AE8 - arm_func_end ov29_023276E8 - - arm_func_start ov29_02327744 -ov29_02327744: ; 0x02327744 - stmdb sp!, {r3, lr} - mov r2, #0 - bl TryInflictShadowHoldStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327744 - - arm_func_start ov29_02327758 -ov29_02327758: ; 0x02327758 - stmdb sp!, {r3, lr} - mov r2, #1 - bl ov29_02319624 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327758 - - arm_func_start ov29_0232776C -ov29_0232776C: ; 0x0232776C - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023277AC - mov r1, r4 - mov r0, r5 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - ldrne r0, _023277B4 ; =0x0237CA6A - movne r1, r4 - strneb r1, [r0] -_023277AC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023277B4: .word 0x0237CA6A - arm_func_end ov29_0232776C - - arm_func_start ov29_023277B8 -ov29_023277B8: ; 0x023277B8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - ldr r1, [r6, #0xb4] - mov r7, r0 - ldrsh r0, [r1, #4] - mov r5, r2 - mov r4, r3 - bl GetLowKickMultiplier - mov r3, r0 - mov r0, r7 - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_023277B8 - - arm_func_start ov29_02327804 -ov29_02327804: ; 0x02327804 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023278D4 - ldr r1, _023278E0 ; =0x022C4488 - mov r0, r6 - ldrsh r1, [r1] - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _023278D4 - mov r0, r6 - mov r1, r6 - mov r2, #0 - mov r3, r4 - ldr r5, [r6, #0xb4] - bl BoostSpeedOneStage - ldr r1, _023278E4 ; =0x02352AE8 - mov r0, r6 - ldr r2, [r1, #4] - mov r1, r6 - mov r3, r4 - str r2, [sp, #8] - bl BoostOffensiveStat - ldr r1, _023278E4 ; =0x02352AE8 - mov r0, r6 - ldr r2, [r1] - mov r1, r6 - mov r3, r4 - str r2, [sp, #4] - bl BoostOffensiveStat - add r2, sp, #8 - ldr r2, [r2] - mov r0, r6 - mov r1, r6 - mov r3, r4 - bl BoostDefensiveStat - add r2, sp, #4 - ldr r2, [r2] - mov r0, r6 - mov r1, r6 - mov r3, r4 - bl BoostDefensiveStat - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, r4 - strlob r0, [r5, #0x108] -_023278D4: - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023278E0: .word 0x022C4488 -_023278E4: .word 0x02352AE8 - arm_func_end ov29_02327804 - - arm_func_start ov29_023278E8 -ov29_023278E8: ; 0x023278E8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetApparentWeather - mov ip, #1 - ldr r1, _02327924 ; =0x022C4954 - mov r0, r0, lsl #1 - ldrsh r2, [r1, r0] - mov r0, r5 - mov r1, r4 - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02327924: .word 0x022C4954 - arm_func_end ov29_023278E8 - - arm_func_start ov29_02327928 -ov29_02327928: ; 0x02327928 - stmdb sp!, {r3, lr} - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327928 - - arm_func_start ov29_02327940 -ov29_02327940: ; 0x02327940 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023279A0 - mov r1, r4 - mov r0, r5 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _023279A0 - ldr r0, [r5, #0xb4] - add r0, r0, #0x100 - ldrh r0, [r0, #0x92] - tst r0, #2 - ldrne r0, _023279A8 ; =0x0237CA6D - movne r1, #0 - strneb r1, [r0] - ldreq r0, _023279A8 ; =0x0237CA6D - moveq r1, r4 - streqb r1, [r0] -_023279A0: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023279A8: .word 0x0237CA6D - arm_func_end ov29_02327940 - - arm_func_start ov29_023279AC -ov29_023279AC: ; 0x023279AC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _023279E0 ; =0x022C4798 - mov r0, r4 - mov r2, #0 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl ov29_02315B70 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023279E0: .word 0x022C4798 - arm_func_end ov29_023279AC - - arm_func_start ov29_023279E4 -ov29_023279E4: ; 0x023279E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02327A20 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - bl BoostDefensiveStat - ldr r1, _02327A24 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02327A20: .word 0x02352AEC -_02327A24: .word 0x02352AE8 - arm_func_end ov29_023279E4 - - arm_func_start ov29_02327A28 -ov29_02327A28: ; 0x02327A28 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r6, r2 - mov r7, r1 - mov r1, r6 - mov r8, r0 - mov r5, r3 - mov r4, #0 - bl ov29_023245A4 - cmp r0, #0 - beq _02327AB8 - ldr r1, _02327AE8 ; =0x022C48A8 - mov r0, r8 - ldr r3, [r1] - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02327AAC - ldr r1, _02327AEC ; =0x022C4538 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327AAC - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryInflictCringeStatus -_02327AAC: - mov r0, r8 - bl ov29_02318D58 - b _02327ADC -_02327AB8: - ldr r0, _02327AF0 ; =0x00000CD1 - bl StringFromMessageId - str r0, [sp] - mov r0, r8 - mov r1, r8 - mov r3, r6 - mov r2, #3 - bl ov29_02318BBC - mov r4, #1 -_02327ADC: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02327AE8: .word 0x022C48A8 -_02327AEC: .word 0x022C4538 -_02327AF0: .word 0x00000CD1 - arm_func_end ov29_02327A28 - - arm_func_start ov29_02327AF4 -ov29_02327AF4: ; 0x02327AF4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327B4C - ldr r1, _02327B58 ; =0x022C4634 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327B4C - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl TryInflictFrozenStatus -_02327B4C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327B58: .word 0x022C4634 - arm_func_end ov29_02327AF4 - - arm_func_start ov29_02327B5C -ov29_02327B5C: ; 0x02327B5C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327BCC - ldr r1, _02327BD8 ; =0x022C4604 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r6 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327BCC - ldr r0, _02327BDC ; =0x02352AEC - ldr r5, [r6, #0xb4] - ldr r2, [r0] - mov r0, r6 - mov r1, r6 - mov r3, r4 - bl BoostOffensiveStat - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, r4 - strlob r0, [r5, #0x108] -_02327BCC: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327BD8: .word 0x022C4604 -_02327BDC: .word 0x02352AEC - arm_func_end ov29_02327B5C - - arm_func_start ov29_02327BE0 -ov29_02327BE0: ; 0x02327BE0 - stmdb sp!, {r3, lr} - bl ov29_02319378 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327BE0 - - arm_func_start ov29_02327BF0 -ov29_02327BF0: ; 0x02327BF0 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, r2 - bl LowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327BF0 - - arm_func_start ov29_02327C08 -ov29_02327C08: ; 0x02327C08 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327C64 - ldr r1, _02327C70 ; =0x022C4690 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327C64 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictConfusedStatus -_02327C64: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327C70: .word 0x022C4690 - arm_func_end ov29_02327C08 - - arm_func_start ov29_02327C74 -ov29_02327C74: ; 0x02327C74 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #0x80 - mov r1, #0x180 - mov r5, r2 - mov r4, r3 - bl DungeonRandRange - ldr r1, [r7, #0xb4] - mov r2, r5 - ldrb r1, [r1, #0xa] - mul r1, r0, r1 - movs r3, r1, asr #8 - movmi r3, #1 - cmp r3, #0xc7 - movgt r3, #0xc7 - mov r0, r7 - mov r1, r6 - str r4, [sp] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02327C74 - - arm_func_start ov29_02327CD8 -ov29_02327CD8: ; 0x02327CD8 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr ip, [sp, #0x30] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - str ip, [sp] - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327D4C - ldrsh r2, [sp, #0x2c] - mov r0, r6 - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02327D4C - add r0, sp, #0x24 - mov ip, r4 - ldr r2, [r0] - str ip, [sp] - mov ip, #0 - ldrsh r3, [sp, #0x28] - mov r0, r6 - mov r1, r5 - str ip, [sp, #4] - bl LowerDefensiveStat -_02327D4C: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov29_02327CD8 - - arm_func_start ov29_02327D60 -ov29_02327D60: ; 0x02327D60 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327DC0 - mov r1, r4 - mov r0, r5 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _02327DC0 - ldr r0, _02327DCC ; =0x02352AE8 - mov ip, #0 - ldr r2, [r0] - str ip, [sp] - mov r0, r5 - mov r1, r5 - mov r3, #2 - str ip, [sp, #4] - bl LowerOffensiveStat -_02327DC0: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02327DCC: .word 0x02352AE8 - arm_func_end ov29_02327D60 - - arm_func_start ov29_02327DD0 -ov29_02327DD0: ; 0x02327DD0 - stmdb sp!, {r3, lr} - bl TryInflictSleeplessStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02327DD0 - - arm_func_start ov29_02327DE0 -ov29_02327DE0: ; 0x02327DE0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [r0, #0xb4] - ldr r6, _02327E8C ; =0x000003E7 - ldrsh r5, [ip, #0x12] - ldrsh r4, [ip, #0x16] - ldrsh ip, [ip, #0x10] - add lr, r5, r4 - cmp lr, r6 - movle r6, lr - mov r4, r6, asr #1 - add r4, r6, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #0 - ble _02327E64 - ldr r4, _02327E8C ; =0x000003E7 - cmp lr, r4 - movle r4, lr - mov r5, r4, lsl #1 - mov r4, r5, asr #1 - add r4, r5, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #1 - ble _02327E64 - ldr r4, _02327E8C ; =0x000003E7 - cmp lr, r4 - movgt lr, r4 - add r4, lr, lr, lsl #1 - mov lr, r4, asr #1 - add lr, r4, lr, lsr #30 - cmp ip, lr, asr #2 - movle r5, #2 - movgt r5, #3 -_02327E64: - ldr r4, _02327E90 ; =0x022C49A4 - str r3, [sp] - ldr r3, [r4, r5, lsl #2] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02327E8C: .word 0x000003E7 -_02327E90: .word 0x022C49A4 - arm_func_end ov29_02327DE0 - - arm_func_start ov29_02327E94 -ov29_02327E94: ; 0x02327E94 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - ldr r5, [r7, #0xb4] - ldr r4, [r6, #0xb4] - bl ov29_022E5474 - mov r0, #0 -_02327EB4: - add lr, r4, r0, lsl #1 - ldrsh r1, [lr, #0x24] - add ip, r5, r0, lsl #1 - add r3, r4, r0, lsl #2 - strh r1, [ip, #0x24] - ldrsh r1, [lr, #0x28] - add r2, r5, r0, lsl #2 - add r0, r0, #1 - strh r1, [ip, #0x28] - ldrsh r1, [lr, #0x2c] - cmp r0, #2 - strh r1, [ip, #0x2c] - ldr r1, [r3, #0x34] - str r1, [r2, #0x34] - ldr r1, [r3, #0x3c] - str r1, [r2, #0x3c] - blt _02327EB4 - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _02327F30 ; =0x00000D62 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r5, #0x108] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02327F30: .word 0x00000D62 - arm_func_end ov29_02327E94 - - arm_func_start DealDamageWithRecoil -DealDamageWithRecoil: ; 0x02327F34 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - str r3, [sp] - mov r3, #0x100 - mov r7, r0 - mov r6, r2 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02327FFC - mov r0, r7 - bl EntityIsValid__0232800C - cmp r0, #0 - beq _02327FFC - ldr r1, [r7, #0xb4] - ldr r0, _02328008 ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - mov r4, #1 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - movs r5, r0, asr #3 - mov r0, r7 - mov r1, #7 - moveq r5, #1 - bl AbilityIsActive2 - cmp r0, #0 - bne _02327FFC - mov r0, r7 - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _02327FFC - ldrh r1, [r6, #4] - mov r2, #0 - mov r0, #0x23c - stmia sp, {r1, r2} - str r0, [sp, #8] - mov r0, #0x14 - str r0, [sp, #0xc] - mov r0, r4 - str r0, [sp, #0x10] - mov r0, r7 - mov r1, r5 - mov r3, r2 - str r2, [sp, #0x14] - bl CalcRecoilDamageFixed -_02327FFC: - mov r0, r4 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02328008: .word 0x000003E7 - arm_func_end DealDamageWithRecoil - - arm_func_start EntityIsValid__0232800C -EntityIsValid__0232800C: ; 0x0232800C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232800C - - arm_func_start ov29_02328030 -ov29_02328030: ; 0x02328030 - stmdb sp!, {r3, lr} - ldr r3, [r1, #0xb4] - ldr r2, _02328070 ; =0x000003E7 - ldrsh ip, [r3, #0x12] - ldrsh r3, [r3, #0x16] - add r3, ip, r3 - cmp r3, r2 - movgt r3, r2 - add r2, r3, r3, lsr #31 - mov ip, #1 - mov r2, r2, asr #1 - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02328070: .word 0x000003E7 - arm_func_end ov29_02328030 - - arm_func_start ov29_02328074 -ov29_02328074: ; 0x02328074 - stmdb sp!, {r3, r4, r5, lr} - ldr lr, _023280D0 ; =0x02353538 - ldr r5, [r1, #0xb4] - ldr ip, [lr] - mov r4, #0xc - add ip, ip, #0x1a000 - str r4, [ip, #0x234] - ldr ip, [lr] - mov lr, #0 - add ip, ip, #0x1a000 - str lr, [ip, #0x238] - ldrb ip, [r5, #0xd2] - mov r4, #1 - cmp ip, #0xa - moveq r4, #2 - str r3, [sp] - mov r3, r4, lsl #8 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023280D0: .word 0x02353538 - arm_func_end ov29_02328074 - - arm_func_start ov29_023280D4 -ov29_023280D4: ; 0x023280D4 - ldr r0, _02328108 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r2, [r0, #0xd4] - mov r0, #0xc - cmp r2, #0 - movlt r2, #0 - cmp r2, #0xc7 - movge r2, #0xc6 - mul r1, r2, r0 - ldr r0, _0232810C ; =0x022C6324 - ldrsh r0, [r0, r1] - bx lr - .align 2, 0 -_02328108: .word 0x02353538 -_0232810C: .word 0x022C6324 - arm_func_end ov29_023280D4 - - arm_func_start ov29_02328110 -ov29_02328110: ; 0x02328110 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, r1 - mov r5, r3 - bl ov29_023280D4 - mov r4, r0 - ldr r0, _02328164 ; =0x022C4E40 - mov r1, r4, lsl #3 - ldrh r1, [r0, r1] - add r0, sp, #0 - bl InitMove - ldr ip, _02328168 ; =0x022C4E44 - mov r0, r7 - ldr ip, [ip, r4, lsl #3] - mov r1, r6 - mov r3, r5 - add r2, sp, #0 - blx ip - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02328164: .word 0x022C4E40 -_02328168: .word 0x022C4E44 - arm_func_end ov29_02328110 - - arm_func_start ov29_0232816C -ov29_0232816C: ; 0x0232816C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023281C8 - ldr r1, _023281D4 ; =0x022C4528 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023281C8 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_023281C8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023281D4: .word 0x022C4528 - arm_func_end ov29_0232816C - - arm_func_start ov29_023281D8 -ov29_023281D8: ; 0x023281D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r6, r2 - mov r8, r0 - mov r5, r3 - mov r0, r6 - mov r7, r1 - bl GetMoveType - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl ov29_02324E44 - str r4, [sp] - str r0, [sp, #4] - mov r0, r8 - mov r1, r7 - add r2, r7, #4 - mov r3, #1 - bl ov29_02320448 - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_023281D8 - - arm_func_start ov29_02328230 -ov29_02328230: ; 0x02328230 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02328230 - - arm_func_start ov29_02328248 -ov29_02328248: ; 0x02328248 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023282B4 - ldr r1, _023282C0 ; =0x022C461C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023282B4 - ldr r0, _023282C4 ; =0x02352AE8 - mov r3, r4 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat -_023282B4: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023282C0: .word 0x022C461C -_023282C4: .word 0x02352AE8 - arm_func_end ov29_02328248 - - arm_func_start ov29_023282C8 -ov29_023282C8: ; 0x023282C8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, _02328320 ; =0x00000CD9 - mov r5, r1 - mov r4, r2 - bl StringFromMessageId - str r0, [sp] - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #0xb - bl ov29_02318BBC - ldr r2, _02328324 ; =0x02352AE8 - mov r0, r6 - mov r1, r5 - ldr r2, [r2] - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02328320: .word 0x00000CD9 -_02328324: .word 0x02352AE8 - arm_func_end ov29_023282C8 - - arm_func_start ov29_02328328 -ov29_02328328: ; 0x02328328 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02328384 - ldr r1, _02328390 ; =0x022C465C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328384 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_02328384: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02328390: .word 0x022C465C - arm_func_end ov29_02328328 - - arm_func_start ov29_02328394 -ov29_02328394: ; 0x02328394 - stmdb sp!, {r3, lr} - bl ov29_02318F10 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02328394 - - arm_func_start ov29_023283A4 -ov29_023283A4: ; 0x023283A4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r7, r2 - mov sb, r0 - mov r2, #0 - mov r0, r7 - mov r8, r1 - mov r6, r3 - strb r2, [sp, #0x1c] - mov r5, #1 - bl GetMoveType - mov r4, r0 - mov r0, sb - mov r1, #0x57 - bl AbilityIsActive2 - mov r3, r0 - mov r2, r4 - mov r0, sb - mov r1, r8 - bl ov29_0230D4A4 - cmp r0, #0 - mov r0, sb - mov r1, #0x53 - moveq r5, #0 - bl AbilityIsActive2 - cmp r0, #0 - bne _02328420 - mov r0, r8 - bl LevitateIsActive - cmp r0, #0 - movne r5, #0 -_02328420: - cmp r5, #0 - bne _0232843C - ldr r2, _023284B4 ; =0x00000ED3 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _023284A8 -_0232843C: - mov r0, r7 - bl GetMoveType - mov r5, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r5} - str r4, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - ldr r2, _023284B8 ; =0x0000270F - mov r1, r8 - mov r0, sb - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] -_023284A8: - ldrb r0, [sp, #0x1c] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023284B4: .word 0x00000ED3 -_023284B8: .word 0x0000270F - arm_func_end ov29_023283A4 - - arm_func_start ov29_023284BC -ov29_023284BC: ; 0x023284BC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02328518 - ldr r1, _02328524 ; =0x022C4448 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328518 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_02328518: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02328524: .word 0x022C4448 - arm_func_end ov29_023284BC - - arm_func_start ov29_02328528 -ov29_02328528: ; 0x02328528 - stmdb sp!, {r3, lr} - bl ov29_02318E70 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02328528 - - arm_func_start ov29_02328538 -ov29_02328538: ; 0x02328538 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r2 - mov r6, r3 - mov r7, r0 - mov sb, r1 - mov r2, #0x3a - mov r3, #1 - mov r4, #0 - bl DefenderAbilityIsActive__02328634 - mov r5, r0 - mov r0, r7 - mov r1, sb - mov r2, r8 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - beq _0232862C - add r0, r0, r0, lsr #31 - mov r6, r0, asr #1 - cmp r6, #1 - mov r0, r7 - movlt r6, #1 - bl EntityIsValid__0232800C - cmp r0, #0 - beq _0232862C - ldr r1, [r7, #0xb4] - mov r4, #1 - ldrb r0, [r1, #0x108] - cmp r0, #1 - strlob r4, [r1, #0x108] - mov r0, r7 - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232862C - ldr r1, [r7, #0xb4] - ldrb r0, [r1, #6] - cmp r0, #0 - movne r0, #0 - bne _023285E8 - add r0, r1, #0x228 - mov r1, #0x57 - bl ExclusiveItemEffectFlagTest -_023285E8: - cmp r0, #0 - movne r6, r6, lsl #1 - cmp r5, #0 - beq _02328610 - mov r2, #0xd - mov r0, r7 - mov r1, r6 - add r3, r2, #0x22c - bl ov29_0230D11C - b _0232862C -_02328610: - mov r5, #1 - mov r0, r7 - mov r1, r7 - mov r2, r6 - mov r3, #0 - str r5, [sp] - bl TryIncreaseHp -_0232862C: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02328538 - - arm_func_start DefenderAbilityIsActive__02328634 -DefenderAbilityIsActive__02328634: ; 0x02328634 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _02328688 - cmp r0, #0 - moveq r1, #0 - beq _02328668 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_02328668: - cmp r1, #0 - cmpne r3, #0 - beq _02328688 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_02328688: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__02328634 - - arm_func_start ov29_02328698 -ov29_02328698: ; 0x02328698 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r1 - mov r7, r0 - mov r1, #0x35 - ldr r4, [r7, #0xb4] - ldr r5, [r6, #0xb4] - bl AbilityIsActive2 - cmp r0, #0 - bne _023286D0 - mov r0, r6 - mov r1, #0x35 - bl AbilityIsActive2 - cmp r0, #0 - beq _023286E8 -_023286D0: - ldr r2, _02328784 ; =0x00000ED5 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023286E8: - mov r0, r7 - mov r1, #0x74 - bl AbilityIsActive2 - cmp r0, #0 - beq _02328714 - ldr r2, _02328788 ; =0x00000ED6 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02328714: - ldrb r8, [r5, #0x60] - ldrb lr, [r5, #0x61] - ldrb r0, [r4, #0x60] - ldr r1, _0232878C ; =0x02353538 - mov ip, #1 - strb r0, [r5, #0x60] - ldrb r3, [r4, #0x61] - ldr r2, _02328790 ; =0x00000ED4 - mov r0, r7 - strb r3, [r5, #0x61] - strb r8, [r4, #0x60] - strb lr, [r4, #0x61] - ldr r3, [r1] - mov r1, r6 - strb ip, [r3, #0xe] - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r0, [r4, #0x108] - mov r1, r7 - cmp r0, #1 - movlo r0, #1 - strlob r0, [r4, #0x108] - mov r0, r7 - bl ov29_022FA7DC - mov r0, r7 - mov r1, r6 - bl ov29_022FA7DC - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02328784: .word 0x00000ED5 -_02328788: .word 0x00000ED6 -_0232878C: .word 0x02353538 -_02328790: .word 0x00000ED4 - arm_func_end ov29_02328698 - - arm_func_start ov29_02328794 -ov29_02328794: ; 0x02328794 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r4, #0 - mov sb, r1 - str r4, [sp] - ldr r6, [sb, #0xb4] - mov sl, r0 - add r0, r6, #0x124 - mov r8, r2 - mov fp, r4 - mov r7, r4 - ldr r5, [sl, #0xb4] - str r0, [sp, #4] - b _02328820 -_023287CC: - add r0, r6, r7, lsl #3 - ldrb r0, [r0, #0x124] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0232881C - ldr r1, [sp, #4] - add r0, r5, #0x124 - add r1, r1, r7, lsl #3 - bl IsSameMove - cmp r0, #0 - bne _0232881C - add r1, r6, r7, lsl #3 - ldrb r0, [r1, #0x124] - tst r0, #0x10 - addne r0, r1, #0x100 - ldrneh fp, [r0, #0x28] - movne r4, #1 - bne _02328828 -_0232881C: - add r7, r7, #1 -_02328820: - cmp r7, #4 - blt _023287CC -_02328828: - cmp r4, #0 - bne _02328848 - ldr r2, _023288BC ; =0x00000DB8 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _023288B4 -_02328848: - cmp fp, #0 - bne _02328864 - ldr r2, _023288BC ; =0x00000DB8 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _023288B0 -_02328864: - mov r0, r8 - mov r1, fp - bl InitMove - ldrh r1, [r8, #4] - mov r0, #0 - bl ov29_0234B084 - ldrh r1, [r8, #2] - ldr r2, _023288C0 ; =0x00000DB7 - mov r0, sl - orr r3, r1, #0x24 - mov r1, sb - strh r3, [r8, #2] - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r5, #0x108] - mov r0, #1 - str r0, [sp] -_023288B0: - ldr r0, [sp] -_023288B4: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023288BC: .word 0x00000DB8 -_023288C0: .word 0x00000DB7 - arm_func_end ov29_02328794 - - arm_func_start ov29_023288C4 -ov29_023288C4: ; 0x023288C4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02328920 - ldr r1, _0232892C ; =0x022C4498 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328920 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_02328920: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232892C: .word 0x022C4498 - arm_func_end ov29_023288C4 - - arm_func_start ov29_02328930 -ov29_02328930: ; 0x02328930 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r2 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023289E8 - mov r0, r6 - mov r1, #7 - mov r4, #1 - bl AbilityIsActive2 - cmp r0, #0 - bne _023289E8 - mov r0, r6 - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _023289E8 - ldr r1, [r6, #0xb4] - ldr r0, _023289F4 ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - ldrh r3, [r5, #4] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - movs r1, r0, asr #3 - mov r2, #0 - str r3, [sp] - mov r0, #0x23c - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0x14 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - moveq r1, #1 - mov r0, r6 - mov r3, r2 - str r2, [sp, #0x14] - bl CalcRecoilDamageFixed -_023289E8: - mov r0, r4 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023289F4: .word 0x000003E7 - arm_func_end ov29_02328930 - - arm_func_start ov29_023289F8 -ov29_023289F8: ; 0x023289F8 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _02328A48 ; =0x022C4654 - ldr r2, _02328A4C ; =0x02353538 - ldrsh r3, [r3] - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - add r2, r2, #0xcd00 - mov r0, #1 - mov r1, #0 - strh r3, [r2, #0x3e] - bl ov29_023354C4 - cmp r0, #0 - bne _02328A40 - ldr r2, _02328A50 ; =0x00000EC6 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_02328A40: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02328A48: .word 0x022C4654 -_02328A4C: .word 0x02353538 -_02328A50: .word 0x00000EC6 - arm_func_end ov29_023289F8 - - arm_func_start ov29_02328A54 -ov29_02328A54: ; 0x02328A54 - stmdb sp!, {r3, lr} - ldr r2, _02328A70 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - bl LowerHitChanceStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02328A70: .word 0x02352AEC - arm_func_end ov29_02328A54 - - arm_func_start ov29_02328A74 -ov29_02328A74: ; 0x02328A74 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02328AD0 - ldr r1, _02328ADC ; =0x022C451C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328AD0 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictPoisonedStatus -_02328AD0: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02328ADC: .word 0x022C451C - arm_func_end ov29_02328A74 - - arm_func_start ov29_02328AE0 -ov29_02328AE0: ; 0x02328AE0 - stmdb sp!, {r3, lr} - ldr r2, _02328AFC ; =0x02352AE8 - mov r3, #1 - ldr r2, [r2] - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02328AFC: .word 0x02352AE8 - arm_func_end ov29_02328AE0 - - arm_func_start ov29_02328B00 -ov29_02328B00: ; 0x02328B00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02328B78 - ldr r1, _02328B84 ; =0x022C44A0 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328B78 - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_02328B78: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02328B84: .word 0x022C44A0 - arm_func_end ov29_02328B00 - - arm_func_start ov29_02328B88 -ov29_02328B88: ; 0x02328B88 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r7, r2 - mov sb, r0 - mov r2, #0 - mov r0, r7 - mov r8, r1 - mov r6, r3 - strb r2, [sp, #0x1c] - bl GetMoveType - mov r4, r0 - mov r0, sb - mov r1, #0x57 - bl AbilityIsActive2 - mov r2, r4 - mov r3, r0 - mov r0, sb - mov r1, r8 - bl ov29_0230D4A4 - cmp r0, #0 - bne _02328BF4 - ldr r2, _02328C6C ; =0x00000ED7 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _02328C64 -_02328BF4: - mov r0, r7 - bl GetMoveType - mov r5, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r5} - str r4, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _02328C70 ; =0x0000270F - mov r1, r8 - mov r0, sb - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff -_02328C64: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02328C6C: .word 0x00000ED7 -_02328C70: .word 0x0000270F - arm_func_end ov29_02328B88 - - arm_func_start ov29_02328C74 -ov29_02328C74: ; 0x02328C74 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl GetApparentWeather - mov r8, r0 - cmp r8, #1 - moveq r0, #1 - beq _02328CAC - mov r0, r7 - mov r1, r5 - bl ov29_023245A4 -_02328CAC: - cmp r0, #0 - beq _02328D0C - ldr r0, _02328D3C ; =0x022C48A4 - cmp r8, #2 - ldr r3, [r0] - beq _02328CD4 - add r0, r8, #0xfc - and r0, r0, #0xff - cmp r0, #1 - bhi _02328CDC -_02328CD4: - add r0, r3, r3, lsr #31 - mov r3, r0, asr #1 -_02328CDC: - mov r0, r7 - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r7 - and r4, r1, #0xff - bl ov29_02318D58 - b _02328D30 -_02328D0C: - ldr r0, _02328D40 ; =0x00000CD2 - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r7 - mov r3, r5 - mov r2, #2 - bl ov29_02318BBC - mov r4, #1 -_02328D30: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02328D3C: .word 0x022C48A4 -_02328D40: .word 0x00000CD2 - arm_func_end ov29_02328C74 - - arm_func_start ov29_02328D44 -ov29_02328D44: ; 0x02328D44 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _02328DE0 ; =0x022C4568 - mov r1, r8 - ldrsh r2, [r2] - mov r0, r4 - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02328DE0: .word 0x022C4568 - arm_func_end ov29_02328D44 - - arm_func_start ov29_02328DE4 -ov29_02328DE4: ; 0x02328DE4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl ov29_023245A4 - cmp r0, #0 - beq _02328E40 - ldr r1, _02328E6C ; =0x022C48C0 - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r7 - and r4, r1, #0xff - bl ov29_02318D58 - b _02328E64 -_02328E40: - ldr r0, _02328E70 ; =0x00000CD3 - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r7 - mov r3, r5 - mov r2, #7 - bl ov29_02318BBC - mov r4, #1 -_02328E64: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02328E6C: .word 0x022C48C0 -_02328E70: .word 0x00000CD3 - arm_func_end ov29_02328DE4 - - arm_func_start ov29_02328E74 -ov29_02328E74: ; 0x02328E74 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r6, r2 - mov r8, r0 - mov r5, r3 - mov r0, r6 - mov r7, r1 - bl GetMoveType - mov r4, r0 - mov r0, r6 - mov r1, r5 - bl ov29_02324E44 - str r4, [sp] - str r0, [sp, #4] - mov r0, r8 - mov r1, r7 - add r2, r7, #4 - mov r3, #2 - bl ov29_02320448 - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_02328E74 - - arm_func_start ov29_02328ECC -ov29_02328ECC: ; 0x02328ECC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl GetTileAtEntity - bl ov29_02337E2C - cmp r0, #0 - beq _02328F0C - ldr r2, _02328F88 ; =0x00000ED8 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - b _02328F7C -_02328F0C: - mov r0, r8 - mov r1, r6 - bl ov29_023245A4 - cmp r0, #0 - beq _02328F58 - ldr r1, _02328F8C ; =0x022C47E8 - mov r0, r8 - ldr r3, [r1] - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, r4 - mov r0, r8 - and r4, r1, #0xff - bl ov29_02318D58 - b _02328F7C -_02328F58: - ldr r0, _02328F90 ; =0x00000CD5 - bl StringFromMessageId - str r0, [sp] - mov r0, r8 - mov r1, r8 - mov r3, r6 - mov r2, #9 - bl ov29_02318BBC - mov r4, #1 -_02328F7C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02328F88: .word 0x00000ED8 -_02328F8C: .word 0x022C47E8 -_02328F90: .word 0x00000CD5 - arm_func_end ov29_02328ECC - - arm_func_start ov29_02328F94 -ov29_02328F94: ; 0x02328F94 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02328FF0 - ldr r1, _02328FFC ; =0x022C4424 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02328FF0 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_02328FF0: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02328FFC: .word 0x022C4424 - arm_func_end ov29_02328F94 - - arm_func_start ov29_02329000 -ov29_02329000: ; 0x02329000 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02329060 - ldr r1, _0232906C ; =0x022C4484 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02329060 - ldr r1, _02329070 ; =0x02352AEC - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat -_02329060: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232906C: .word 0x022C4484 -_02329070: .word 0x02352AEC - arm_func_end ov29_02329000 - - arm_func_start ov29_02329074 -ov29_02329074: ; 0x02329074 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ov29_023164D8 - cmp r0, #0 - beq _023290BC - ldr r1, _023290C4 ; =0x02352AEC - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - ldr r1, _023290C8 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat -_023290BC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023290C4: .word 0x02352AEC -_023290C8: .word 0x02352AE8 - arm_func_end ov29_02329074 - - arm_func_start ov29_023290CC -ov29_023290CC: ; 0x023290CC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r1 - ldr r1, [r4, #0xb4] - mov r5, r0 - ldrb r0, [r1, #0xd2] - mov ip, #1 - mov r1, r4 - add r0, r0, #0xf9 - and r0, r0, #0xff - cmp r0, #1 - movls ip, #2 - str r3, [sp] - mov r0, r5 - mov r3, ip, lsl #8 - mov r6, #0 - bl DealDamage - cmp r0, #0 - beq _0232914C - ldr r1, _02329158 ; =0x022C4668 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - mov r6, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232914C - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictCringeStatus -_0232914C: - mov r0, r6 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02329158: .word 0x022C4668 - arm_func_end ov29_023290CC - - arm_func_start ov29_0232915C -ov29_0232915C: ; 0x0232915C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - ldrne r0, _023291E8 ; =0x0237CA6B - movne r4, #1 - strneb r4, [r0] - ldr r0, _023291E8 ; =0x0237CA6B - ldrb r0, [r0] - cmp r0, #0 - beq _023291DC - ldr r0, _023291EC ; =0x0237CA78 - ldr r0, [r0] - cmp r0, #2 - bne _023291DC - ldr r1, _023291F0 ; =0x022C4444 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023291DC - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictPoisonedStatus -_023291DC: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023291E8: .word 0x0237CA6B -_023291EC: .word 0x0237CA78 -_023291F0: .word 0x022C4444 - arm_func_end ov29_0232915C - - arm_func_start ov29_023291F4 -ov29_023291F4: ; 0x023291F4 - stmdb sp!, {r3, lr} - ldr r3, [r1, #0xb4] - ldr r2, _02329238 ; =0x000003E7 - ldrsh ip, [r3, #0x12] - ldrsh r3, [r3, #0x16] - add r3, ip, r3 - cmp r3, r2 - movgt r3, r2 - mov r2, r3, asr #1 - add r2, r3, r2, lsr #30 - mov ip, #1 - mov r2, r2, asr #2 - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02329238: .word 0x000003E7 - arm_func_end ov29_023291F4 - - arm_func_start ov29_0232923C -ov29_0232923C: ; 0x0232923C - stmdb sp!, {r3, lr} - ldr r2, _02329254 ; =0x02352AE8 - ldr r2, [r2] - bl BoostHitChanceStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02329254: .word 0x02352AE8 - arm_func_end ov29_0232923C - - arm_func_start ov29_02329258 -ov29_02329258: ; 0x02329258 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov r4, #0 - mov r6, r0 - strb r4, [sp, #0x1c] - mov r5, r1 - ldr r1, [r6, #0xb4] - mov r0, r5 - mov r4, r2 - mov sl, r3 - ldr r7, [r5, #0xb4] - ldrb sb, [r1, #0xa] - bl ov29_022E5ED0 - cmp r0, #0 - beq _02329350 - ldrb r2, [r7, #0x4c] - mov r0, r5 - mov r1, #0xc - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #29 - add r2, r3, r2, ror #29 - bl ov29_023049A8 - mov r0, r5 - mov r1, #1 - bl ov29_02318A90 - ldr r1, _023293C8 ; =0x00000221 - mov r0, r5 - bl ov29_022E56A0 - mov r0, r5 - bl ov29_02318AD4 - mov r0, #0x10 - mov r1, #0x67 - bl ov29_022EA370 - mov r0, r5 - mov r1, #0 - bl ov29_02318A90 - ldrb r2, [r7, #0x4c] - mov r0, r5 - mov r1, #0xc - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #29 - add r2, r3, r2, ror #29 - bl ov29_023049A8 - mov r0, r5 - bl ov29_02318B48 - mov r0, r5 - mov r1, #0x210 - bl ov29_022E56A0 - mov r0, #5 - mov r1, #0x2000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 - mov r0, #4 - mov r1, #0x400 - mov r2, #0 - bl ov29_0234C668 - mov r0, #1 - bl ov29_022ECAFC - mov r0, #0 - bl ov29_0234C738 -_02329350: - mov r0, r4 - bl GetMoveType - mov r8, r0 - ldrh r0, [r4, #4] - bl GetMoveCategory - mov r7, r0 - mov r1, sl - mov r0, r4 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r8} - str r7, [sp, #8] - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r5 - mov r2, sb - mov r0, r6 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023293C8: .word 0x00000221 - arm_func_end ov29_02329258 - - arm_func_start ov29_023293CC -ov29_023293CC: ; 0x023293CC - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictConfusedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_023293CC - - arm_func_start ov29_023293E4 -ov29_023293E4: ; 0x023293E4 - stmdb sp!, {r3, lr} - mov r2, #0 - bl ov29_023163A8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_023293E4 - - arm_func_start ov29_023293F8 -ov29_023293F8: ; 0x023293F8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl GetApparentWeather - mov ip, #1 - ldr r1, _02329434 ; =0x022C4974 - mov r0, r0, lsl #1 - ldrsh r2, [r1, r0] - mov r0, r5 - mov r1, r4 - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02329434: .word 0x022C4974 - arm_func_end ov29_023293F8 - - arm_func_start ov29_02329438 -ov29_02329438: ; 0x02329438 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r7, r2 - mov sb, r0 - mov r2, #0 - mov r0, r7 - mov r8, r1 - mov r6, r3 - strb r2, [sp, #0x1c] - bl GetMoveType - mov r4, r0 - mov r0, sb - mov r1, #0x57 - bl AbilityIsActive2 - mov r2, r4 - mov r3, r0 - mov r0, sb - mov r1, r8 - bl ov29_0230D4A4 - cmp r0, #0 - bne _023294A4 - ldr r2, _0232952C ; =0x00000ED9 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _02329524 -_023294A4: - mov r0, r7 - bl GetMoveType - mov r5, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl ov29_02324E44 - add r2, sp, #0x1c - stmia sp, {r2, r5} - str r4, [sp, #8] - str r0, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - str r1, [sp, #0x14] - str r1, [sp, #0x18] - ldr r2, _02329530 ; =0x0000270F - mov r0, sb - mov r1, r8 - mov r3, #1 - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - mov r1, r8 - cmp r0, #0 - moveq r3, #1 - movne r3, #0 - mov r0, #0 - mov r2, r0 - strb r3, [sp, #0x1c] - bl SubstitutePlaceholderStringTags - ldrb r0, [sp, #0x1c] -_02329524: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0232952C: .word 0x00000ED9 -_02329530: .word 0x0000270F - arm_func_end ov29_02329438 - - arm_func_start ov29_02329534 -ov29_02329534: ; 0x02329534 - stmdb sp!, {r3, lr} - ldr r2, _02329550 ; =0x02352AEC - mov r3, #2 - ldr r2, [r2] - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02329550: .word 0x02352AEC - arm_func_end ov29_02329534 - - arm_func_start ov29_02329554 -ov29_02329554: ; 0x02329554 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r1, #0x25 - ldr r7, [sb, #0xb4] - mov r8, #0 - bl AbilityIsActive2 - cmp r0, #0 - beq _02329598 - ldr r2, _02329658 ; =0x00000DC3 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - b _02329650 -_02329598: - mov r5, r8 - add r4, r7, #0x124 - add fp, sp, #0 -_023295A4: - ldrb r0, [r4, r5, lsl #3] - add r6, r4, r5, lsl #3 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _023295D8 - mov r0, sb - mov r1, r6 - bl GetMoveTypeForMonster - cmp r0, #0 - strne r6, [fp, r8, lsl #2] - addne r8, r8, #1 -_023295D8: - add r5, r5, #1 - cmp r5, #4 - blt _023295A4 - cmp r8, #0 - bne _02329604 - ldr r2, _0232965C ; =0x00000DB6 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _02329650 -_02329604: - mov r0, r8 - bl DungeonRandInt - add r1, sp, #0 - ldr r4, [r1, r0, lsl #2] - mov r0, sb - mov r1, r4 - bl GetMoveTypeForMonster - strb r0, [r7, #0x5e] - mov r0, #0 - strb r0, [r7, #0x5f] - mov r1, #1 - strb r1, [r7, #0xff] - ldrh r1, [r4, #4] - bl ov29_0234B084 - ldr r2, _02329660 ; =0x00000DB5 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 -_02329650: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02329658: .word 0x00000DC3 -_0232965C: .word 0x00000DB6 -_02329660: .word 0x00000DB5 - arm_func_end ov29_02329554 - - arm_func_start ov29_02329664 -ov29_02329664: ; 0x02329664 - stmdb sp!, {r3, lr} - bl ov29_023194B8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02329664 - - arm_func_start ov29_02329674 -ov29_02329674: ; 0x02329674 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - cmp r6, r5 - mov r4, #0 - bne _02329698 - ldr r2, _023296CC ; =0x00000EDA - bl LogMessageByIdWithPopupCheckUserTarget - b _023296C4 -_02329698: - ldr r2, _023296D0 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - bl BoostOffensiveStat - ldr r1, _023296D4 ; =0x02352AE8 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #1 - bl BoostOffensiveStat - mov r4, #1 -_023296C4: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023296CC: .word 0x00000EDA -_023296D0: .word 0x02352AEC -_023296D4: .word 0x02352AE8 - arm_func_end ov29_02329674 - - arm_func_start ov29_023296D8 -ov29_023296D8: ; 0x023296D8 - stmdb sp!, {r3, lr} - ldr r2, _023296F4 ; =0x02352AEC - mov r3, #2 - ldr r2, [r2] - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023296F4: .word 0x02352AEC - arm_func_end ov29_023296D8 - - arm_func_start ov29_023296F8 -ov29_023296F8: ; 0x023296F8 - stmdb sp!, {r3, lr} - mov r2, #0 - mov r3, r2 - bl TryWarp - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_023296F8 - - arm_func_start ov29_02329710 -ov29_02329710: ; 0x02329710 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232976C - ldr r1, _02329778 ; =0x022C4490 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232976C - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_0232976C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02329778: .word 0x022C4490 - arm_func_end ov29_02329710 - - arm_func_start ov29_0232977C -ov29_0232977C: ; 0x0232977C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - bl GetMoveTypeForMonster - mov r4, r0 - mov r0, r5 - bl GetMoveType - cmp r4, r0 - bne _023297D4 - mov r0, r7 - mov r1, r6 - mov r2, #0x66 - mov r3, #1 - bl DefenderAbilityIsActive__02328634 - cmp r0, #0 - beq _023297D4 - mov r0, r6 - bl ov29_0231B060 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023297D4: - mov r0, r7 - mov r1, r6 - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0232977C - - arm_func_start ov29_023297F0 -ov29_023297F0: ; 0x023297F0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02329848 - mov r2, r4 - mov r0, r6 - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02329848 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_02329848: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_023297F0 - - arm_func_start ov29_02329854 -ov29_02329854: ; 0x02329854 - stmdb sp!, {r3, lr} - mov r2, #0 - bl TryInflictShadowHoldStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02329854 - - arm_func_start ov29_02329868 -ov29_02329868: ; 0x02329868 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictPoisonedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02329868 - - arm_func_start ov29_02329880 -ov29_02329880: ; 0x02329880 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictBadlyPoisonedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02329880 - - arm_func_start ov29_02329898 -ov29_02329898: ; 0x02329898 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _023298F4 - ldr r1, _02329900 ; =0x022C4644 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _023298F4 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictBadlyPoisonedStatus -_023298F4: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02329900: .word 0x022C4644 - arm_func_end ov29_02329898 - - arm_func_start ov29_02329904 -ov29_02329904: ; 0x02329904 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02329960 - ldr r1, _0232996C ; =0x022C463C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02329960 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictPoisonedStatus -_02329960: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232996C: .word 0x022C463C - arm_func_end ov29_02329904 - - arm_func_start ov29_02329970 -ov29_02329970: ; 0x02329970 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x30 - ldrb r4, [sp, #0x50] - mov r7, r0 - mov r6, r1 - mov r5, r2 - cmp r4, #0 - mov r4, #0 - bne _023299A8 - str r3, [sp] - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r4, #1 -_023299A8: - cmp r4, #0 - bne _02329A88 - mov r0, r7 - mov r1, r5 - bl GetMoveTypeForMonster - mov sb, r0 - mov r0, r7 - mov r1, r5 - bl GetMovePower - mov r8, r0 - mov r0, r5 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0x1c - str r1, [sp, #4] - mov r0, #0x100 - str r0, [sp, #8] - ldrh ip, [r5, #4] - mov r1, #0 - mov r2, sb - str ip, [sp, #0xc] - str r1, [sp, #0x10] - mov r3, r8 - mov r0, r7 - mov r1, r6 - bl CalcDamage - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - ldr r2, [r7, #0xb4] - mov r3, r1 - bl ov29_0230040C - ldr r2, _02329A94 ; =0x00000EDB - mov r1, r6 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, [sp, #0x1c] - mov r2, #0 - add r0, r0, r0, lsr #31 - movs r0, r0, asr #1 - str r0, [sp, #0x1c] - addeq r0, r0, #1 - streq r0, [sp, #0x1c] - ldrh r1, [r5, #4] - ldr r0, _02329A98 ; =0x00000236 - add r3, sp, #0x18 - stmia sp, {r1, r2} - str r0, [sp, #8] - mov r0, #0x13 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x1c] - mov r0, r7 - bl CalcRecoilDamageFixed -_02329A88: - mov r0, r4 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02329A94: .word 0x00000EDB -_02329A98: .word 0x00000236 - arm_func_end ov29_02329970 - - arm_func_start ov29_02329A9C -ov29_02329A9C: ; 0x02329A9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r6, r2 - mov r7, r1 - mov r1, r6 - mov r8, r0 - mov r5, r3 - mov r4, #0 - bl ov29_023245A4 - cmp r0, #0 - beq _02329B2C - ldr r1, _02329B5C ; =0x022C47EC - mov r0, r8 - ldr r3, [r1] - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _02329B20 - ldr r1, _02329B60 ; =0x022C4494 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02329B20 - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - bl TryInflictParalysisStatus -_02329B20: - mov r0, r8 - bl ov29_02318D58 - b _02329B50 -_02329B2C: - ldr r0, _02329B64 ; =0x00000CD4 - bl StringFromMessageId - str r0, [sp] - mov r0, r8 - mov r1, r8 - mov r3, r6 - mov r2, #8 - bl ov29_02318BBC - mov r4, #1 -_02329B50: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02329B5C: .word 0x022C47EC -_02329B60: .word 0x022C4494 -_02329B64: .word 0x00000CD4 - arm_func_end ov29_02329A9C - - arm_func_start ov29_02329B68 -ov29_02329B68: ; 0x02329B68 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x30 - ldrb r4, [sp, #0x50] - mov r7, r0 - mov r6, r1 - mov r5, r2 - cmp r4, #0 - mov r4, #0 - bne _02329BA0 - str r3, [sp] - mov r3, #0x200 - bl DealDamage - cmp r0, #0 - movne r4, #1 -_02329BA0: - cmp r4, #0 - bne _02329C80 - mov r0, r7 - mov r1, r5 - bl GetMoveTypeForMonster - mov sb, r0 - mov r0, r7 - mov r1, r5 - bl GetMovePower - mov r8, r0 - mov r0, r5 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0x1c - str r1, [sp, #4] - mov r0, #0x200 - str r0, [sp, #8] - ldrh ip, [r5, #4] - mov r1, #0 - mov r2, sb - str ip, [sp, #0xc] - str r1, [sp, #0x10] - mov r3, r8 - mov r0, r7 - mov r1, r6 - bl CalcDamage - bl ov29_0234B034 - mov r1, #0 - str r1, [sp] - ldr r2, [r7, #0xb4] - mov r3, r1 - bl ov29_0230040C - ldr r2, _02329C8C ; =0x00000EDB - mov r1, r6 - mov r0, r7 - bl LogMessageByIdWithPopupCheckUserTarget - ldr r0, [sp, #0x1c] - mov r2, #0 - add r0, r0, r0, lsr #31 - movs r0, r0, asr #1 - str r0, [sp, #0x1c] - addeq r0, r0, #1 - streq r0, [sp, #0x1c] - ldrh r1, [r5, #4] - ldr r0, _02329C90 ; =0x00000237 - add r3, sp, #0x18 - stmia sp, {r1, r2} - str r0, [sp, #8] - mov r0, #0x13 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - str r2, [sp, #0x14] - ldr r1, [sp, #0x1c] - mov r0, r7 - bl CalcRecoilDamageFixed -_02329C80: - mov r0, r4 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02329C8C: .word 0x00000EDB -_02329C90: .word 0x00000237 - arm_func_end ov29_02329B68 - - arm_func_start ov29_02329C94 -ov29_02329C94: ; 0x02329C94 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _02329D40 - ldr r1, _02329D4C ; =0x022C4694 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _02329D40 - mov r0, #3 - bl DungeonRandInt - cmp r0, #0 - beq _02329CFC - cmp r0, #1 - beq _02329D14 - cmp r0, #2 - beq _02329D30 -_02329CFC: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus - b _02329D40 -_02329D14: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus - b _02329D40 -_02329D30: - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl TryInflictFrozenStatus -_02329D40: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02329D4C: .word 0x022C4694 - arm_func_end ov29_02329C94 - - arm_func_start ov29_02329D50 -ov29_02329D50: ; 0x02329D50 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r7, r0 - mov r8, #0 - mov r6, r1 - mov r0, r8 - mov r1, r7 - mov r2, r8 - ldr r4, [r7, #0xb4] - ldr r5, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r6 - mov r0, #1 - mov r2, r8 - bl SubstitutePlaceholderStringTags - mov r0, r7 - mov r1, r6 - mov r2, #0x2c - mov r3, #1 - bl DefenderAbilityIsActive__02329F14 - cmp r0, #0 - beq _02329DC0 - ldr r2, _02329F08 ; =0x00000EDE - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - b _02329F00 -_02329DC0: - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, r8 - tst r0, #0xff - ldrb r0, [r5, #0x62] - moveq r8, #1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r8, #1 - cmp r8, #0 - beq _02329E10 - ldr r2, _02329F0C ; =0x00000EDD - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _02329F00 -_02329E10: - ldrh r3, [r4, #0x62] - ldrh r2, [r4, #0x64] - ldrh r1, [r4, #0x66] - ldrb r0, [r4, #6] - strh r3, [sp] - strh r2, [sp, #2] - strh r1, [sp, #4] - cmp r0, #0 - bne _02329E3C - add r0, r4, #0x62 - bl RemoveEquivItemNoHole -_02329E3C: - ldrh r0, [r5, #0x62] - strh r0, [r4, #0x62] - ldrh r0, [r5, #0x64] - strh r0, [r4, #0x64] - ldrh r0, [r5, #0x66] - strh r0, [r4, #0x66] - ldrb r0, [r4, #6] - cmp r0, #0 - bne _02329E68 - mov r0, r4 - bl ov29_02346F14 -_02329E68: - ldrb r0, [r5, #6] - cmp r0, #0 - bne _02329E7C - add r0, r5, #0x62 - bl RemoveEquivItemNoHole -_02329E7C: - ldrh r2, [sp] - ldrh r1, [sp, #2] - ldrh r0, [sp, #4] - strh r2, [r5, #0x62] - strh r1, [r5, #0x64] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - bne _02329EA8 - mov r0, r5 - bl ov29_02346F14 -_02329EA8: - bl ov29_02347030 - ldrb r0, [r4, #6] - cmp r0, #0 - movne r0, #0 - strneb r0, [r4, #0x63] - ldrb r0, [r5, #6] - cmp r0, #0 - movne r0, #0 - strneb r0, [r5, #0x63] - mov r0, r7 - bl ov29_022F9EA0 - mov r0, r6 - bl ov29_022F9EA0 - ldrb r0, [r4, #0x108] - ldr r2, _02329F10 ; =0x00000EDC - mov r1, r6 - cmp r0, #1 - movlo r0, #1 - strlob r0, [r4, #0x108] - mov r0, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 -_02329F00: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02329F08: .word 0x00000EDE -_02329F0C: .word 0x00000EDD -_02329F10: .word 0x00000EDC - arm_func_end ov29_02329D50 - - arm_func_start DefenderAbilityIsActive__02329F14 -DefenderAbilityIsActive__02329F14: ; 0x02329F14 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _02329F68 - cmp r0, #0 - moveq r1, #0 - beq _02329F48 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_02329F48: - cmp r1, #0 - cmpne r3, #0 - beq _02329F68 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_02329F68: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__02329F14 - - arm_func_start ov29_02329F78 -ov29_02329F78: ; 0x02329F78 - stmdb sp!, {r3, lr} - ldr ip, _02329FB0 ; =0x0237CA7C - ldr lr, [ip] - add lr, lr, #1 - str lr, [ip] - str r3, [sp] - ldr r3, [ip] - mov r3, r3, lsl #8 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02329FB0: .word 0x0237CA7C - arm_func_end ov29_02329F78 - - arm_func_start ov29_02329FB4 -ov29_02329FB4: ; 0x02329FB4 - stmdb sp!, {r3, lr} - ldrh r0, [r2, #4] - cmp r0, #0xd4 - bne _02329FD0 - mov r0, #0 - bl ov29_0233544C - b _02329FD8 -_02329FD0: - mov r0, #1 - bl ov29_0233544C -_02329FD8: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_02329FB4 - - arm_func_start ov29_02329FE0 -ov29_02329FE0: ; 0x02329FE0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232A03C - mov r2, r4 - mov r0, r6 - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232A03C - ldr r1, _0232A048 ; =0x02352AEC - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat -_0232A03C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232A048: .word 0x02352AEC - arm_func_end ov29_02329FE0 - - arm_func_start ov29_0232A04C -ov29_0232A04C: ; 0x0232A04C - ldr ip, _0232A054 ; =ov29_0232C310 - bx ip - .align 2, 0 -_0232A054: .word ov29_0232C310 - arm_func_end ov29_0232A04C - - arm_func_start ov29_0232A058 -ov29_0232A058: ; 0x0232A058 - stmdb sp!, {r3, lr} - ldr r2, _0232A074 ; =0x02352AE8 - mov r3, #2 - ldr r2, [r2] - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232A074: .word 0x02352AE8 - arm_func_end ov29_0232A058 - - arm_func_start ov01_0232A078 -ov01_0232A078: ; 0x0232A078 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r4, #0 - strb r4, [sp, #0x1c] - mov r6, r0 - mov r4, r2 - ldr r2, [r6, #0xb4] - mov r0, r4 - mov r5, r1 - mov r7, r3 - ldrb sb, [r2, #0xa] - bl GetMoveType - mov r8, r0 - ldrh r0, [r4, #4] - bl GetMoveCategory - mov r1, r7 - mov r7, r0 - mov r0, r4 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r8} - str r7, [sp, #8] - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r5 - mov r2, sb - mov r0, r6 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov01_0232A078 - - arm_func_start ov29_0232A118 -ov29_0232A118: ; 0x0232A118 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0232A144 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - str r3, [sp] - str r3, [sp, #4] - bl LowerOffensiveStat - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232A144: .word 0x02352AEC - arm_func_end ov29_0232A118 - - arm_func_start ov29_0232A148 -ov29_0232A148: ; 0x0232A148 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr ip, [r1, #0xb4] - mov r4, #0 - ldrb ip, [ip, #0xd2] - cmp ip, #9 - moveq ip, #0x200 - movne ip, #0x100 - str r3, [sp] - mov r3, ip - bl DealDamage - cmp r0, #0 - movne r4, #1 - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_0232A148 - - arm_func_start ov29_0232A188 -ov29_0232A188: ; 0x0232A188 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r2, #0x35 - mov r3, #1 - ldr r4, [r6, #0xb4] - ldr r7, [r5, #0xb4] - bl DefenderAbilityIsActive__02329F14 - cmp r0, #0 - beq _0232A1C8 - ldr r2, _0232A218 ; =0x00000EE1 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0232A1C8: - ldrb r2, [r7, #0x60] - ldr r0, _0232A21C ; =0x02353538 - mov r1, #1 - strb r2, [r4, #0x60] - ldrb r2, [r7, #0x61] - strb r2, [r4, #0x61] - ldr r0, [r0] - mov r2, #0xee0 - strb r1, [r0, #0xe] - ldrb r0, [r4, #0x108] - cmp r0, #1 - strlob r1, [r4, #0x108] - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r6 - bl ov29_022FA7DC - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232A218: .word 0x00000EE1 -_0232A21C: .word 0x02353538 - arm_func_end ov29_0232A188 - - arm_func_start ov29_0232A220 -ov29_0232A220: ; 0x0232A220 - stmdb sp!, {r3, r4, r5, lr} - ldr r3, _0232A270 ; =0x022C4654 - ldr r2, _0232A274 ; =0x02353538 - ldrsh r3, [r3] - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - add r2, r2, #0xcd00 - mov r0, #1 - mov r1, #0 - strh r3, [r2, #0x3c] - bl ov29_023354C4 - cmp r0, #0 - bne _0232A268 - ldr r2, _0232A278 ; =0x00000EC7 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_0232A268: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232A270: .word 0x022C4654 -_0232A274: .word 0x02353538 -_0232A278: .word 0x00000EC7 - arm_func_end ov29_0232A220 - - arm_func_start ov29_0232A27C -ov29_0232A27C: ; 0x0232A27C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0232A2A8 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - str r3, [sp] - str r3, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232A2A8: .word 0x02352AEC - arm_func_end ov29_0232A27C - - arm_func_start ov29_0232A2AC -ov29_0232A2AC: ; 0x0232A2AC - stmdb sp!, {r3, lr} - bl ov29_02318FAC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232A2AC - - arm_func_start ov29_0232A2BC -ov29_0232A2BC: ; 0x0232A2BC - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232A318 - ldr r1, _0232A324 ; =0x022C4670 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232A318 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus -_0232A318: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232A324: .word 0x022C4670 - arm_func_end ov29_0232A2BC - - arm_func_start ov29_0232A328 -ov29_0232A328: ; 0x0232A328 - stmdb sp!, {r3, lr} - ldr r2, _0232A33C ; =0x00000EE2 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232A33C: .word 0x00000EE2 - arm_func_end ov29_0232A328 - - arm_func_start ov29_0232A340 -ov29_0232A340: ; 0x0232A340 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232A3C8 - mov r1, r4 - mov r0, r6 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232A3C8 - mov r0, r5 - bl EntityIsValid__0232A3D8 - cmp r0, #0 - bne _0232A3C8 - ldr r3, _0232A3D4 ; =0x02352B18 - add r0, sp, #8 - ldrh ip, [r3] - mov r1, #0xb7 - mov r2, #2 - strh ip, [sp, #4] - ldrh r3, [r3, #2] - strh r3, [sp, #6] - bl ov29_02344BD0 - add r2, sp, #8 - add r3, sp, #4 - mov r0, r6 - mov r1, r5 - bl ov29_0232A834 -_0232A3C8: - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232A3D4: .word 0x02352B18 - arm_func_end ov29_0232A340 - - arm_func_start EntityIsValid__0232A3D8 -EntityIsValid__0232A3D8: ; 0x0232A3D8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232A3D8 - - arm_func_start ov29_0232A3FC -ov29_0232A3FC: ; 0x0232A3FC - stmdb sp!, {r3, lr} - ldr r2, _0232A410 ; =0x00000EE3 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232A410: .word 0x00000EE3 - arm_func_end ov29_0232A3FC - - arm_func_start ov29_0232A414 -ov29_0232A414: ; 0x0232A414 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - ldr r1, [r4, #0xb4] - mov r5, r0 - ldrb r0, [r1, #6] - cmp r0, #0 - beq _0232A454 - mov r0, #0x32 - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - movne r2, #1 - moveq r2, #2 - mov r0, r5 - mov r1, r4 - bl TryInflictNappingStatus - b _0232A474 -_0232A454: - ldr r1, _0232A47C ; =0x022C4748 - mov r0, r4 - mov r2, #0 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - bl TryInflictNappingStatus -_0232A474: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232A47C: .word 0x022C4748 - arm_func_end ov29_0232A414 - - arm_func_start ov29_0232A480 -ov29_0232A480: ; 0x0232A480 - stmdb sp!, {r3, lr} - bl TryInflictIngrainStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232A480 - - arm_func_start ov29_0232A490 -ov29_0232A490: ; 0x0232A490 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, [r1, #0xb4] - ldrb r3, [r4, #0x11e] - cmp r3, #0 - beq _0232A4CC - ldr r2, _0232A4E0 ; =0x022C49D4 - mov ip, #1 - ldr r2, [r2, r3, lsl #2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #0 - strb r0, [r4, #0x11e] - b _0232A4D4 -_0232A4CC: - ldr r2, _0232A4E4 ; =0x00000EE4 - bl LogMessageByIdWithPopupCheckUserTarget -_0232A4D4: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0232A4E0: .word 0x022C49D4 -_0232A4E4: .word 0x00000EE4 - arm_func_end ov29_0232A490 - - arm_func_start ov29_0232A4E8 -ov29_0232A4E8: ; 0x0232A4E8 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_023160DC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232A4E8 - - arm_func_start ov29_0232A500 -ov29_0232A500: ; 0x0232A500 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_0232A500 - - arm_func_start ov29_0232A524 -ov29_0232A524: ; 0x0232A524 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - str r3, [sp] - mov r3, #0x100 - mov r4, #0 - mov r5, r0 - bl DealDamage - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - beq _0232A59C - ldr r0, _0232A5A8 ; =0x02352AEC - mov ip, #0 - ldr r2, [r0] - str ip, [sp] - mov r0, r5 - mov r1, r5 - mov r3, #1 - str r2, [sp, #8] - str ip, [sp, #4] - bl LowerOffensiveStat - add r0, sp, #8 - mov ip, #0 - ldr r2, [r0] - str ip, [sp] - mov r0, r5 - mov r1, r5 - mov r3, #1 - str ip, [sp, #4] - bl LowerDefensiveStat -_0232A59C: - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0232A5A8: .word 0x02352AEC - arm_func_end ov29_0232A524 - - arm_func_start ov29_0232A5AC -ov29_0232A5AC: ; 0x0232A5AC - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [sp, #0x28] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - str ip, [sp] - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232A628 - ldr r1, _0232A63C ; =0x022C44C4 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232A628 - add r0, sp, #0x24 - ldr r2, [r0] - ldr r5, [r6, #0xb4] - mov r0, r6 - mov r1, r6 - mov r3, r4 - bl BoostDefensiveStat - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, r4 - strlob r0, [r5, #0x108] -_0232A628: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_0232A63C: .word 0x022C44C4 - arm_func_end ov29_0232A5AC - - arm_func_start ov29_0232A640 -ov29_0232A640: ; 0x0232A640 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r4, [r0, #0xb4] - ldrb ip, [r4, #0x11e] - cmp ip, #0 - beq _0232A670 - str r3, [sp] - mov r3, ip, lsl #8 - bl DealDamage - mov r0, #0 - strb r0, [r4, #0x11e] - b _0232A678 -_0232A670: - ldr r2, _0232A684 ; =0x00000EE5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232A678: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0232A684: .word 0x00000EE5 - arm_func_end ov29_0232A640 - - arm_func_start ov29_0232A688 -ov29_0232A688: ; 0x0232A688 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232A6E0 - mov r2, r4 - mov r0, r6 - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232A6E0 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictConfusedStatus -_0232A6E0: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0232A688 - - arm_func_start ov29_0232A6EC -ov29_0232A6EC: ; 0x0232A6EC - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - mov r6, r1 - mov r0, #0 - mov r1, r7 - mov r2, r0 - ldr r4, [r7, #0xb4] - ldr r5, [r6, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r6 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r7 - mov r1, r6 - mov r2, #0x2c - mov r3, #1 - bl DefenderAbilityIsActive__02329F14 - cmp r0, #0 - beq _0232A758 - ldr r2, _0232A820 ; =0x00000EE6 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _0232A818 -_0232A758: - ldrh r0, [r5, #0x62] - strh r0, [sp, #4] - ldrh r1, [r5, #0x64] - ldrb r0, [sp, #4] - strh r1, [sp, #6] - ldrh r1, [r5, #0x66] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - strh r1, [sp, #8] - tst r0, #0xff - bne _0232A7A0 - ldr r2, _0232A824 ; =0x00000EE8 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _0232A818 -_0232A7A0: - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0232A7B4 - add r0, r5, #0x62 - bl RemoveEquivItem -_0232A7B4: - add r0, r5, #0x62 - bl ItemZInit - ldr r2, _0232A828 ; =0x00000EE7 - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - ldrb r1, [r4, #0x4c] - ldr r0, _0232A82C ; =0x0235171C - ldr r5, _0232A830 ; =0x0235171E - mov r1, r1, lsl #2 - ldrsh r1, [r0, r1] - add r2, sp, #4 - mov r0, r7 - strh r1, [sp] - ldrb r4, [r4, #0x4c] - mov r1, r6 - add r3, sp, #0 - mov r4, r4, lsl #2 - ldrsh r4, [r5, r4] - strh r4, [sp, #2] - bl ov29_0232A834 - mov r0, r7 - mov r1, r6 - bl ov29_02321164 - mov r0, #1 -_0232A818: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0232A820: .word 0x00000EE6 -_0232A824: .word 0x00000EE8 -_0232A828: .word 0x00000EE7 -_0232A82C: .word 0x0235171C -_0232A830: .word 0x0235171E - arm_func_end ov29_0232A6EC - - arm_func_start ov29_0232A834 -ov29_0232A834: ; 0x0232A834 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0xc0 - mov r5, #0 - mov r4, r2 - mov ip, #3 - mov r2, #1 - strb r2, [sp, #0x28] - str ip, [sp, #8] - strb r5, [sp, #0x2c] - strb r5, [sp, #0x2a] - str r4, [sp, #0xbc] - ldrsh lr, [r1, #4] - ldrsh ip, [r3] - mov r5, r0 - mov r2, #0x18 - add r0, lr, ip - strh r0, [sp, #0xc] - ldrsh ip, [r1, #6] - ldrsh r3, [r3, #2] - add r0, sp, #8 - add r3, ip, r3 - strh r3, [sp, #0xe] - ldrsh r3, [r1, #4] - ldrsh r1, [r1, #6] - smulbb r3, r3, r2 - smulbb r1, r1, r2 - add r2, r1, #4 - add r3, r3, #4 - mov r1, r3, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r0, #0 - add r1, sp, #8 - mov r2, r0 - strh r0, [sp, #0x2e] - bl SubstitutePlaceholderStringTags - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - mov r0, r5 - mov r2, r4 - add r1, sp, #8 - mov r3, #1 - bl ov29_02345AD8 - add sp, sp, #0xc0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0232A834 - - arm_func_start ov29_0232A8EC -ov29_0232A8EC: ; 0x0232A8EC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov sb, r1 - ldrh r1, [sb, #4] - mov sl, r0 - mov r8, r2 - strh r1, [sp, #0x24] - ldrh r4, [sb, #6] - mov r0, sb - mov r1, #0xa - mov r2, #8 - mov r7, r3 - strh r4, [sp, #0x26] - bl ov29_023049A8 - mov r4, #3 - mov r5, #0 - mov fp, r4 - b _0232A990 -_0232A934: - mov r0, r4 - bl DungeonRandInt - mov r6, r0 - mov r0, fp - bl DungeonRandInt - subs r1, r6, #1 - bne _0232A958 - subs r1, r0, #1 - beq _0232A98C -_0232A958: - ldrsh r3, [sb, #4] - sub r1, r6, #1 - sub r2, r0, #1 - add r0, r3, r1 - strh r0, [sp, #0x24] - ldrsh r3, [sb, #6] - mov r0, sb - add r1, sp, #0x24 - add r2, r3, r2 - strh r2, [sp, #0x26] - bl ov29_022FFB90 - cmp r0, #0 - beq _0232A998 -_0232A98C: - add r5, r5, #1 -_0232A990: - cmp r5, #0x28 - blt _0232A934 -_0232A998: - cmp r5, #0x28 - bne _0232A9B8 - ldr r2, _0232AC38 ; =0x00000EEA - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _0232AC30 -_0232A9B8: - ldrsh r2, [sp, #0x24] - mov r0, #0x18 - ldr r1, [sb, #0xc] - smulbb r0, r2, r0 - add r0, r0, #0xc - rsb r0, r1, r0, lsl #8 - mov r1, #0xc - bl DivideInt - ldrsh r3, [sp, #0x26] - mov r1, #0x18 - ldr r2, [sb, #0x10] - smulbb r1, r3, r1 - add r1, r1, #0x10 - mov r5, r0 - rsb r0, r2, r1, lsl #8 - mov r1, #0xc - bl DivideInt - mov r4, r0 - add r0, sb, #4 - bl ov29_022E2CA0 - cmp r0, #0 - bne _0232AA20 - add r0, sp, #0x24 - bl ov29_022E2CA0 - cmp r0, #0 - beq _0232AA4C -_0232AA20: - mov r6, #0 - mov fp, #0x2c -_0232AA28: - mov r0, sb - mov r1, r5 - mov r2, r4 - bl ov29_022E1A90 - mov r0, fp - bl AdvanceFrame - add r6, r6, #1 - cmp r6, #0xc - blt _0232AA28 -_0232AA4C: - ldrsh r0, [sp, #0x24] - ldrsh r1, [sp, #0x26] - bl GetTileSafe - ldr r6, [r0, #0xc] - cmp r6, #0 - beq _0232ABC8 - ldr r0, [r6] - cmp r0, #1 - bne _0232AB5C - ldr r1, _0232AC3C ; =0x00000163 - add r0, sp, #0x1c - bl InitMove - add r1, sp, #0x1c - mov r0, r6 - bl ov29_02324854 - cmp r0, #0 - bne _0232AAD8 - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - mov r3, #0 - str r3, [sp] - ldr r1, _0232AC40 ; =0x022C44B4 - str r3, [sp, #4] - mov r2, #3 - str r2, [sp, #8] - str r0, [sp, #0xc] - ldrsh r2, [r1] - str r3, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0x14] - mov r0, sl - mov r1, r6 - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper -_0232AAD8: - bl IsFloorOver - cmp r0, #0 - movne r0, #1 - bne _0232AC30 - mov r0, sl - bl EntityIsValid__0232A3D8 - cmp r0, #0 - moveq r0, #1 - beq _0232AC30 - mov r3, #0 - str r3, [sp] - ldr r0, _0232AC40 ; =0x022C44B4 - mov r1, #3 - str r3, [sp, #4] - str r1, [sp, #8] - rsb r1, r1, #0x240 - str r1, [sp, #0xc] - ldrsh r2, [r0] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - mov r0, sl - mov r1, sl - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper - bl IsFloorOver - cmp r0, #0 - movne r0, #1 - bne _0232AC30 - mov r0, sl - bl EntityIsValid__0232A3D8 - cmp r0, #0 - moveq r0, #1 - beq _0232AC30 -_0232AB5C: - mov r0, sb - bl EntityIsValid__0232A3D8 - cmp r0, #0 - moveq r0, #1 - beq _0232AC30 - add r0, sb, #4 - bl ov29_022E2CA0 - cmp r0, #0 - bne _0232AB90 - add r0, sp, #0x24 - bl ov29_022E2CA0 - cmp r0, #0 - beq _0232ABDC -_0232AB90: - rsb r6, r4, #0 - rsb r5, r5, #0 - mov r7, #0 - mov r4, #0x2c -_0232ABA0: - mov r0, sb - mov r1, r5 - mov r2, r6 - bl ov29_022E1A90 - mov r0, r4 - bl AdvanceFrame - add r7, r7, #1 - cmp r7, #0xc - blt _0232ABA0 - b _0232ABDC -_0232ABC8: - ldrsh r1, [sp, #0x24] - ldrsh r2, [sp, #0x26] - mov r0, sb - mov r3, #0 - bl ov29_022F85F0 -_0232ABDC: - mov r0, sb - bl EntityIsValid__0232A3D8 - cmp r0, #0 - moveq r0, #1 - beq _0232AC30 - mov r0, sb - mov r1, #0 - bl ov29_022E1A40 - mov r0, sb - mov r1, #0xe - bl AbilityIsActive2 - cmp r0, #0 - bne _0232AC24 - mov r0, sb - bl ov29_02321260 - mov r0, sl - mov r1, sb - bl ov29_02321164 -_0232AC24: - mov r0, sb - bl ov29_02321260 - mov r0, #1 -_0232AC30: - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232AC38: .word 0x00000EEA -_0232AC3C: .word 0x00000163 -_0232AC40: .word 0x022C44B4 - arm_func_end ov29_0232A8EC - - arm_func_start ov29_0232AC44 -ov29_0232AC44: ; 0x0232AC44 - stmdb sp!, {r3, lr} - bl ov29_02315CE8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232AC44 - - arm_func_start ov29_0232AC54 -ov29_0232AC54: ; 0x0232AC54 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r5, [r7, #0xb4] - sub r3, sp, #4 - add r0, r5, #0x100 - ldrh r2, [r0, #0x46] - mov r6, r1 - mov r4, #0 - strh r2, [r3] - ldrh r0, [r0, #0x48] - strh r0, [r3, #2] - ldr r0, [r3] - bl CeilFixedPoint - cmp r0, #1 - ble _0232ACD8 - ldr r1, _0232AD00 ; =0x02352AEC - mov r0, r7 - ldr r2, [r1] - mov r1, r6 - mov r3, #0x63 - bl BoostOffensiveStat - mov r0, #1 - bl sub_02050FF8 - strh r0, [sp] - mov r0, r0, lsr #0x10 - strh r0, [sp, #2] - ldrh r2, [sp] - add r0, r5, #0x100 - ldrh r1, [sp, #2] - strh r2, [r0, #0x46] - mov r4, #1 - strh r1, [r0, #0x48] - b _0232ACF8 -_0232ACD8: - mov r0, r4 - mov r1, r7 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232AD04 ; =0x00000EEB - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232ACF8: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232AD00: .word 0x02352AEC -_0232AD04: .word 0x00000EEB - arm_func_end ov29_0232AC54 - - arm_func_start ov29_0232AD08 -ov29_0232AD08: ; 0x0232AD08 - stmdb sp!, {r3, lr} - bl ov29_023190EC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232AD08 - - arm_func_start ov29_0232AD18 -ov29_0232AD18: ; 0x0232AD18 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232AED0 - ldr r1, _0232AEDC ; =0x022C454C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232AED0 - ldr r0, _0232AEE0 ; =0x02353538 - mov r1, #0xc - ldr r0, [r0] - ldr r2, _0232AEE4 ; =0x022C6321 - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - smulbb r0, r0, r1 - ldrb r0, [r2, r0] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0232AEBC -_0232AD8C: ; jump table - b _0232ADB4 ; case 0 - b _0232ADCC ; case 1 - b _0232ADF4 ; case 2 - b _0232AE0C ; case 3 - b _0232AE34 ; case 4 - b _0232AE5C ; case 5 - b _0232AE78 ; case 6 - b _0232AE90 ; case 7 - b _0232AEA8 ; case 8 - b _0232AEBC ; case 9 -_0232ADB4: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictPoisonedStatus - b _0232AED0 -_0232ADCC: - ldr r1, _0232AEE8 ; =0x022C4720 - mov r0, r5 - mov r2, r4 - bl CalcStatusDuration - mov r2, r0 - mov r0, r6 - mov r1, r5 - mov r3, #0 - bl TryInflictSleepStatus - b _0232AED0 -_0232ADF4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl LowerSpeed - b _0232AED0 -_0232AE0C: - ldr r0, _0232AEEC ; =0x02352AEC - mov r3, r4 - ldr r2, [r0] - mov r1, r5 - mov r0, r6 - str r3, [sp] - mov r5, #0 - str r5, [sp, #4] - bl LowerOffensiveStat - b _0232AED0 -_0232AE34: - ldr r0, _0232AEEC ; =0x02352AEC - mov r3, r4 - ldr r2, [r0] - mov r1, r5 - mov r0, r6 - str r3, [sp] - mov r5, #0 - str r5, [sp, #4] - bl LowerDefensiveStat - b _0232AED0 -_0232AE5C: - ldr r1, _0232AEEC ; =0x02352AEC - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat - b _0232AED0 -_0232AE78: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictConfusedStatus - b _0232AED0 -_0232AE90: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictCringeStatus - b _0232AED0 -_0232AEA8: - mov r0, r6 - mov r1, r5 - mov r2, #0 - bl TryInflictFrozenStatus - b _0232AED0 -_0232AEBC: - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictParalysisStatus -_0232AED0: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232AEDC: .word 0x022C454C -_0232AEE0: .word 0x02353538 -_0232AEE4: .word 0x022C6321 -_0232AEE8: .word 0x022C4720 -_0232AEEC: .word 0x02352AEC - arm_func_end ov29_0232AD18 - - arm_func_start ov29_0232AEF0 -ov29_0232AEF0: ; 0x0232AEF0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232AF4C - ldr r1, _0232AF58 ; =0x022C4548 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232AF4C - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictConfusedStatus -_0232AF4C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232AF58: .word 0x022C4548 - arm_func_end ov29_0232AEF0 - - arm_func_start ov29_0232AF5C -ov29_0232AF5C: ; 0x0232AF5C - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232AF9C ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - str r2, [sp] - bl BoostOffensiveStat - add r1, sp, #0 - ldr r2, [r1] - mov r0, r5 - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232AF9C: .word 0x02352AEC - arm_func_end ov29_0232AF5C - - arm_func_start ov29_0232AFA0 -ov29_0232AFA0: ; 0x0232AFA0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r1 - mov r5, r0 - ldr r1, _0232AFEC ; =0x022C471C - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, #1 - mov r3, r0 - mov r0, r5 - mov r1, r4 - str r2, [sp] - mov ip, #0 - str ip, [sp, #4] - bl TryInflictPausedStatus - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232AFEC: .word 0x022C471C - arm_func_end ov29_0232AFA0 - - arm_func_start ov29_0232AFF0 -ov29_0232AFF0: ; 0x0232AFF0 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _0232B020 ; =0x02352AEC - mov ip, #1 - ldr r2, [r2] - str ip, [sp] - mov r3, #2 - str ip, [sp, #4] - bl LowerOffensiveStat - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232B020: .word 0x02352AEC - arm_func_end ov29_0232AFF0 - - arm_func_start ov29_0232B024 -ov29_0232B024: ; 0x0232B024 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r8, [sl, #0xb4] - mov fp, r1 - ldrb r0, [r8, #6] - mov r4, #0 - mov r5, #0 - cmp r0, #0 - ldrne r0, _0232B110 ; =0x02353538 - movne r6, #0x10 - ldrne r0, [r0] - moveq r6, #4 - addne r0, r0, #0x338 - ldreq r0, _0232B110 ; =0x02353538 - ldreq r0, [r0] - addeq r0, r0, #0x328 - add r7, r0, #0x12800 - b _0232B0E8 -_0232B06C: - ldr sb, [r7, r5, lsl #2] - mov r0, sb - bl EntityIsValid__0232A3D8 - cmp r0, #0 - cmpne sl, sb - beq _0232B0E4 - mov r2, #0 - mov r0, sl - mov r1, sb - mov r3, r2 - bl ov29_0230175C - cmp r0, #0 - bne _0232B0E4 - ldr r0, [sb, #0xb4] - ldrb r1, [r0, #0xbc] - cmp r1, #7 - beq _0232B0E4 - bl IsExperienceLocked - cmp r0, #0 - bne _0232B0E4 - mov r0, sl - mov r1, sb - mov r2, #2 - add r3, fp, #4 - bl TryWarp - ldrb r0, [r8, #0x108] - mov r4, #1 - cmp r0, #1 - movlo r0, r4 - strlob r0, [r8, #0x108] -_0232B0E4: - add r5, r5, #1 -_0232B0E8: - cmp r5, r6 - blt _0232B06C - cmp r4, #0 - bne _0232B108 - ldr r2, _0232B114 ; =0x00000EEC - mov r0, sl - mov r1, fp - bl LogMessageByIdWithPopupCheckUserTarget -_0232B108: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232B110: .word 0x02353538 -_0232B114: .word 0x00000EEC - arm_func_end ov29_0232B024 - - arm_func_start ov29_0232B118 -ov29_0232B118: ; 0x0232B118 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x200 - str r5, [sp] - bl DealDamage - cmp r0, #0 - movne r4, #1 - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov29_0232B118 - - arm_func_start ov29_0232B164 -ov29_0232B164: ; 0x0232B164 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232B1D0 - ldr r1, _0232B1DC ; =0x022C4608 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B1D0 - ldr r0, _0232B1E0 ; =0x02352AEC - mov r3, r4 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat -_0232B1D0: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232B1DC: .word 0x022C4608 -_0232B1E0: .word 0x02352AEC - arm_func_end ov29_0232B164 - - arm_func_start ov29_0232B1E4 -ov29_0232B1E4: ; 0x0232B1E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_02307C78 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - cmp r0, #0 - beq _0232B25C - ldr r1, _0232B268 ; =0x022C4540 - mov r0, r8 - ldrsh r2, [r1] - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B25C - mov r2, #0 - mov r0, r8 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_0232B25C: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232B268: .word 0x022C4540 - arm_func_end ov29_0232B1E4 - - arm_func_start ov29_0232B26C -ov29_0232B26C: ; 0x0232B26C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r0, #0x64 - mov r4, r1 - mov r7, r2 - mov r6, r3 - bl DungeonRandInt - cmp r0, #0xa - bge _0232B2BC - mov r0, r5 - mov r1, r4 - mov r2, r7 - mov r3, #0x4b - str r6, [sp] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0232B2BC: - cmp r0, #0x1e - bge _0232B30C - ldr r1, [r4, #0xb4] - ldr r0, _0232B364 ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - mov ip, #1 - mov r3, #0 - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #1 - add r2, r1, r0, lsr #30 - mov r0, r5 - mov r1, r4 - mov r2, r2, asr #2 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0232B30C: - cmp r0, #0x3c - mov r0, r5 - mov r1, r4 - bge _0232B340 - mov r2, r7 - mov r3, #0x32 - str r6, [sp] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0232B340: - mov r2, r7 - mov r3, #0x19 - str r6, [sp] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232B364: .word 0x000003E7 - arm_func_end ov29_0232B26C - - arm_func_start ov29_0232B368 -ov29_0232B368: ; 0x0232B368 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov29_02307C78 - ldr r2, [r7, #0xb4] - ldr r3, _0232B42C ; =0x000003E7 - ldrsh r1, [r2, #0x12] - ldrsh r0, [r2, #0x16] - add r1, r1, r0 - cmp r1, r3 - movle r3, r1 - ldrsh r0, [r2, #0x10] - mov r2, r3, asr #1 - add r2, r3, r2, lsr #30 - cmp r0, r2, asr #2 - movle r2, #0 - ble _0232B3FC - ldr r2, _0232B42C ; =0x000003E7 - cmp r1, r2 - movle r2, r1 - mov r3, r2, lsl #1 - mov r2, r3, asr #1 - add r2, r3, r2, lsr #30 - cmp r0, r2, asr #2 - movle r2, #1 - ble _0232B3FC - ldr r2, _0232B42C ; =0x000003E7 - cmp r1, r2 - movgt r1, r2 - add r2, r1, r1, lsl #1 - mov r1, r2, asr #1 - add r1, r2, r1, lsr #30 - cmp r0, r1, asr #2 - movle r2, #2 - movgt r2, #3 -_0232B3FC: - ldr r1, _0232B430 ; =0x022C49C4 - mov r0, r7 - ldr r3, [r1, r2, lsl #2] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232B42C: .word 0x000003E7 -_0232B430: .word 0x022C49C4 - arm_func_end ov29_0232B368 - - arm_func_start ov29_0232B434 -ov29_0232B434: ; 0x0232B434 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictParalysisStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B434 - - arm_func_start ov29_0232B44C -ov29_0232B44C: ; 0x0232B44C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ov29_023361D4 - cmp r0, #0 - beq _0232B47C - ldr r2, _0232B490 ; =0x00000EED - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0232B47C: - mov r0, r5 - mov r1, r4 - bl ov29_0231721C - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232B490: .word 0x00000EED - arm_func_end ov29_0232B44C - - arm_func_start ov29_0232B494 -ov29_0232B494: ; 0x0232B494 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232B4F0 - ldr r1, _0232B4FC ; =0x022C448C - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B4F0 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl TryInflictPoisonedStatus -_0232B4F0: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232B4FC: .word 0x022C448C - arm_func_end ov29_0232B494 - - arm_func_start ov29_0232B500 -ov29_0232B500: ; 0x0232B500 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r2, [r2, #0x4c] - bl TryBlowAway - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B500 - - arm_func_start ov29_0232B518 -ov29_0232B518: ; 0x0232B518 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r4, r1 - bl sub_02025888 - ldr r0, _0232B5B8 ; =0x02353538 - mov r2, #0xc - ldr r0, [r0] - ldr r3, _0232B5BC ; =0x022C6322 - add r0, r0, #0x4000 - ldrsh ip, [r0, #0xd4] - mov r0, r4 - mov r1, #0x25 - smulbb r2, ip, r2 - ldr r7, [r4, #0xb4] - ldrb r6, [r3, r2] - bl AbilityIsActive2 - cmp r0, #0 - beq _0232B578 - ldr r2, _0232B5C0 ; =0x00000DC3 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0232B578: - strb r6, [r7, #0x5e] - mov r2, #0 - mov r1, r4 - strb r2, [r7, #0x5f] - mov r0, #1 - strb r0, [r7, #0xff] - bl SubstitutePlaceholderStringTags - mov r1, r6 - mov r0, #0 - bl ov29_0234B084 - ldr r2, _0232B5C4 ; =0x00000EEE - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232B5B8: .word 0x02353538 -_0232B5BC: .word 0x022C6322 -_0232B5C0: .word 0x00000DC3 -_0232B5C4: .word 0x00000EEE - arm_func_end ov29_0232B518 - - arm_func_start ov29_0232B5C8 -ov29_0232B5C8: ; 0x0232B5C8 - stmdb sp!, {r3, lr} - ldr r2, _0232B5E4 ; =0x02352AE8 - mov r3, #2 - ldr r2, [r2] - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232B5E4: .word 0x02352AE8 - arm_func_end ov29_0232B5C8 - - arm_func_start ov29_0232B5E8 -ov29_0232B5E8: ; 0x0232B5E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r5, r2 - ldrh ip, [r5, #4] - ldr r2, _0232B69C ; =0x00000123 - mov r7, r0 - cmp ip, r2 - mov r6, r1 - mov r4, r3 - mov r8, #0 - cmpne ip, #0x20c - bne _0232B628 - mov r0, r7 - mov r1, r6 - bl ov29_02307C78 - mov sb, #0x13c - b _0232B640 -_0232B628: - cmp ip, #0x45 - moveq sb, #0x75 - beq _0232B640 - cmp ip, #0x7d - moveq sb, #0x7e - movne sb, #0xf1 -_0232B640: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0x100 - str r4, [sp] - bl DealDamage - cmp r0, #0 - beq _0232B694 - ldr r1, _0232B6A0 ; =0x022C44A4 - mov r0, r7 - ldrsh r2, [r1] - mov r1, r6 - mov r8, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B694 - mov r0, r7 - mov r1, r6 - mov r2, sb - mov r3, #0 - bl TryInflictConstrictionStatus -_0232B694: - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0232B69C: .word 0x00000123 -_0232B6A0: .word 0x022C44A4 - arm_func_end ov29_0232B5E8 - - arm_func_start ov29_0232B6A4 -ov29_0232B6A4: ; 0x0232B6A4 - stmdb sp!, {r3, lr} - mov r2, #0 - bl ov29_0231662C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B6A4 - - arm_func_start ov29_0232B6B8 -ov29_0232B6B8: ; 0x0232B6B8 - stmdb sp!, {r3, lr} - bl TryInflictWrappedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B6B8 - - arm_func_start ov29_0232B6C8 -ov29_0232B6C8: ; 0x0232B6C8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl ov29_022ED868 - cmp r0, #0 - beq _0232B718 - mov r2, r5 - add r0, r7, #4 - mov r1, #0x13 - mov r3, #1 - bl ov29_022EDCBC - cmp r0, #0 - movne r4, #1 - bne _0232B728 -_0232B718: - ldr r2, _0232B734 ; =0x00000EEF - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232B728: - bl ov29_02336F4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232B734: .word 0x00000EEF - arm_func_end ov29_0232B6C8 - - arm_func_start ov29_0232B738 -ov29_0232B738: ; 0x0232B738 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r4, _0232B7B0 ; =0x0237CA84 - ldr r5, _0232B7B4 ; =0x02353538 - ldr ip, [r4] - ldr r6, _0232B7B8 ; =0x02352B1C - ldr r4, [r5] - ldr r6, [r6, ip, lsl #2] - ldr lr, [r1, #0xb4] - add r4, r4, #0x1a000 - str r6, [r4, #0x234] - ldr r4, [r5] - mov r5, #0 - add r4, r4, #0x1a000 - str r5, [r4, #0x238] - ldrb r4, [lr, #0xd2] - ldr r5, _0232B7BC ; =0x022C4924 - mov ip, ip, lsl #1 - cmp r4, #0xa - ldrsh r4, [r5, ip] - str r3, [sp] - moveq r4, r4, lsl #1 - mov r3, r4 - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232B7B0: .word 0x0237CA84 -_0232B7B4: .word 0x02353538 -_0232B7B8: .word 0x02352B1C -_0232B7BC: .word 0x022C4924 - arm_func_end ov29_0232B738 - - arm_func_start ov29_0232B7C0 -ov29_0232B7C0: ; 0x0232B7C0 - stmdb sp!, {r3, lr} - bl ov29_0231904C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B7C0 - - arm_func_start ov29_0232B7D0 -ov29_0232B7D0: ; 0x0232B7D0 - stmdb sp!, {r3, lr} - bl ov29_0231922C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B7D0 - - arm_func_start ov29_0232B7E0 -ov29_0232B7E0: ; 0x0232B7E0 - stmdb sp!, {r3, lr} - ldr r2, _0232B7FC ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232B7FC: .word 0x02352AEC - arm_func_end ov29_0232B7E0 - - arm_func_start ov29_0232B800 -ov29_0232B800: ; 0x0232B800 - stmdb sp!, {r3, lr} - mov r2, #1 - mov ip, #0 - mov r3, r2 - str ip, [sp] - bl ov29_02315E24 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B800 - - arm_func_start ov29_0232B820 -ov29_0232B820: ; 0x0232B820 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r6, r0 - mov r5, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232B88C - ldr r1, _0232B898 ; =0x022C44E0 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r5 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B88C - ldr r0, _0232B89C ; =0x02352AE8 - mov r3, r4 - ldr r2, [r0] - mov r0, r6 - mov r1, r5 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerOffensiveStat -_0232B88C: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232B898: .word 0x022C44E0 -_0232B89C: .word 0x02352AE8 - arm_func_end ov29_0232B820 - - arm_func_start ov29_0232B8A0 -ov29_0232B8A0: ; 0x0232B8A0 - stmdb sp!, {r3, lr} - bl TryInflictDestinyBond - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B8A0 - - arm_func_start ov29_0232B8B0 -ov29_0232B8B0: ; 0x0232B8B0 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B8B0 - - arm_func_start ov29_0232B8D4 -ov29_0232B8D4: ; 0x0232B8D4 - stmdb sp!, {r3, lr} - bl ov29_023192DC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B8D4 - - arm_func_start ov29_0232B8E4 -ov29_0232B8E4: ; 0x0232B8E4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232B924 ; =0x02352AE8 - mov r3, #1 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - str r2, [sp] - bl BoostOffensiveStat - add r1, sp, #0 - ldr r2, [r1] - mov r0, r5 - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232B924: .word 0x02352AE8 - arm_func_end ov29_0232B8E4 - - arm_func_start ov29_0232B928 -ov29_0232B928: ; 0x0232B928 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232B928 - - arm_func_start ov29_0232B940 -ov29_0232B940: ; 0x0232B940 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [sp, #0x28] - mov r3, #0x100 - mov r6, r0 - str ip, [sp] - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232B9B8 - ldr r1, _0232B9CC ; =0x022C4554 - mov r0, r6 - ldrsh r2, [r1] - mov r1, r6 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232B9B8 - add r0, sp, #0x24 - ldr r2, [r0] - ldr r5, [r6, #0xb4] - mov r0, r6 - mov r1, r6 - mov r3, r4 - bl BoostOffensiveStat - ldrb r0, [r5, #0x108] - cmp r0, #1 - movlo r0, r4 - strlob r0, [r5, #0x108] -_0232B9B8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - .align 2, 0 -_0232B9CC: .word 0x022C4554 - arm_func_end ov29_0232B940 - - arm_func_start ov29_0232B9D0 -ov29_0232B9D0: ; 0x0232B9D0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - ldr r0, [r6, #0xb4] - ldr r1, [r5, #0xb4] - ldrsh r0, [r0, #2] - ldrsh r1, [r1, #2] - mov r4, #0 - bl sub_02054EC8 - cmp r0, #0 - beq _0232BA14 - mov r4, #1 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl TryInflictInfatuatedStatus -_0232BA14: - cmp r4, #0 - bne _0232BA3C - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - mov r1, r5 - mov r2, #0xf10 - bl LogMessageByIdWithPopupCheckUserTarget -_0232BA3C: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0232B9D0 - - arm_func_start ov29_0232BA44 -ov29_0232BA44: ; 0x0232BA44 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r0, r1 - ldr r0, [r0, #0xb4] - mov r7, #0 - add r4, r0, #0x124 - ldr r0, _0232BB44 ; =0x0000020D - ldr sb, [sl, #0xb4] - str r1, [sp] - mov r6, r7 - mov r5, r7 - sub fp, r0, #0xc6 -_0232BA74: - ldrb r0, [r4, r5, lsl #3] - add r8, r4, r5, lsl #3 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0232BAE0 - ldrh r1, [r8, #4] - mov r0, sl - bl ov29_02324D60 - cmp r0, #0 - bne _0232BAE0 - ldrh r1, [r8, #4] - cmp r1, fp - cmpne r1, #0xe5 - cmpne r1, #0x8a - cmpne r1, #0x28 - cmpne r1, #0x11 - ldrne r0, _0232BB44 ; =0x0000020D - cmpne r1, r0 - beq _0232BAE0 - ldrb r0, [r8] - tst r0, #0x10 - addne r0, sb, r6, lsl #1 - addne r0, r0, #0x100 - strneh r1, [r0, #0x94] - addne r6, r6, #1 -_0232BAE0: - add r5, r5, #1 - cmp r5, #4 - blt _0232BA74 - mov r0, #0 - mov r1, sl - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _0232BB2C - ldrb r0, [sb, #0x108] - ldr r1, [sp] - mov r2, #0xef0 - cmp r0, #1 - movlo r0, #1 - strlob r0, [sb, #0x108] - mov r0, sl - bl LogMessageByIdWithPopupCheckUserTarget - mov r7, #1 - b _0232BB3C -_0232BB2C: - ldr r2, _0232BB48 ; =0x00000EF1 - ldr r1, [sp] - mov r0, sl - bl LogMessageByIdWithPopupCheckUserTarget -_0232BB3C: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232BB44: .word 0x0000020D -_0232BB48: .word 0x00000EF1 - arm_func_end ov29_0232BA44 - - arm_func_start ov29_0232BB4C -ov29_0232BB4C: ; 0x0232BB4C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov r7, #0 - mov r6, r0 - strb r7, [sp, #0x1c] - mov sl, r3 - mov r5, r1 - mov r4, r2 - ldr ip, [r6, #0xb4] - mov sb, #1 - ldr r3, _0232BC28 ; =0x022C4C3C - ldr r0, _0232BC2C ; =0x000003E7 - b _0232BBA8 -_0232BB80: - mov r8, r7, lsl #2 - ldrsh r2, [r3, r8] - cmp r2, #0 - blt _0232BBB0 - ldrsh r1, [ip, #0xe] - cmp r1, r2 - ldrlt r0, _0232BC30 ; =0x022C4C3E - ldrltsh sb, [r0, r8] - blt _0232BBB0 - add r7, r7, #1 -_0232BBA8: - cmp r7, r0 - blt _0232BB80 -_0232BBB0: - mov r0, r4 - bl GetMoveType - mov r8, r0 - ldrh r0, [r4, #4] - bl GetMoveCategory - mov r7, r0 - mov r1, sl - mov r0, r4 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r8} - str r7, [sp, #8] - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r1, r5 - mov r2, sb - mov r0, r6 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0232BC28: .word 0x022C4C3C -_0232BC2C: .word 0x000003E7 -_0232BC30: .word 0x022C4C3E - arm_func_end ov29_0232BB4C - - arm_func_start ov29_0232BC34 -ov29_0232BC34: ; 0x0232BC34 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r2, #1 - mov r3, #0 - bl TryInflictLeechSeedStatus - ldr r1, [r4, #0xb4] - ldrb r0, [r1, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x108] - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov29_0232BC34 - - arm_func_start ov29_0232BC64 -ov29_0232BC64: ; 0x0232BC64 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - ldr r2, _0232BCB8 ; =0x0237CA88 - mov r5, r0 - ldr r6, [r2] - ldr r0, _0232BCBC ; =0x022C5DDC - mov r2, r6, lsl #3 - mov r4, r1 - ldrh r1, [r0, r2] - add r0, sp, #0 - mov r7, r3 - bl InitMove - ldr r0, _0232BCC0 ; =0x022C5DE0 - add r2, sp, #0 - ldr ip, [r0, r6, lsl #3] - mov r0, r5 - mov r1, r4 - mov r3, r7 - blx ip - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232BCB8: .word 0x0237CA88 -_0232BCBC: .word 0x022C5DDC -_0232BCC0: .word 0x022C5DE0 - arm_func_end ov29_0232BC64 - - arm_func_start ov29_0232BCC4 -ov29_0232BCC4: ; 0x0232BCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r2 - mov r6, r3 - mov sb, r1 - mov r2, #0x3a - mov r3, #1 - mov r7, r0 - mov r4, #0 - bl DefenderAbilityIsActive__0232BDD0 - mov r5, r0 - mov r0, sb - bl ov29_023007A8 - cmp r0, #0 - beq _0232BDB4 - mov r0, #1 - bl ov29_022E38E0 - mov r0, r7 - mov r1, sb - mov r2, r8 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - beq _0232BDC4 - add r0, r0, r0, lsr #31 - mov r6, r0, asr #1 - mov r4, #1 - cmp r6, #1 - mov r0, r7 - mov r1, #0 - movlt r6, r4 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232BDC4 - ldr r1, [r7, #0xb4] - ldrb r0, [r1, #0x108] - cmp r0, #1 - movlo r0, #1 - strlob r0, [r1, #0x108] - mov r0, r7 - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232BDC4 - cmp r5, #0 - beq _0232BD94 - mov r2, #0xd - mov r0, r7 - mov r1, r6 - add r3, r2, #0x22c - bl ov29_0230D11C - b _0232BDC4 -_0232BD94: - mov r5, #1 - mov r0, r7 - mov r1, r7 - mov r2, r6 - mov r3, #0 - str r5, [sp] - bl TryIncreaseHp - b _0232BDC4 -_0232BDB4: - ldr r2, _0232BDCC ; =0x00000EF2 - mov r0, r7 - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232BDC4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0232BDCC: .word 0x00000EF2 - arm_func_end ov29_0232BCC4 - - arm_func_start DefenderAbilityIsActive__0232BDD0 -DefenderAbilityIsActive__0232BDD0: ; 0x0232BDD0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _0232BE24 - cmp r0, #0 - moveq r1, #0 - beq _0232BE04 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_0232BE04: - cmp r1, #0 - cmpne r3, #0 - beq _0232BE24 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0232BE24: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__0232BDD0 - - arm_func_start ov29_0232BE34 -ov29_0232BE34: ; 0x0232BE34 - stmdb sp!, {r3, lr} - bl ov29_02316280 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232BE34 - - arm_func_start ov29_0232BE44 -ov29_0232BE44: ; 0x0232BE44 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, r1 - ldr r1, [r5, #0xb4] - mov r6, r0 - ldrb r0, [r1, #6] - mov sb, #0 - cmp r0, #0 - bne _0232BF34 - ldr r7, _0232BF68 ; =0x02353538 - ldr r8, _0232BF6C ; =0x020AF6B8 - mov sl, sb - mov fp, #6 -_0232BE74: - mul r4, sl, fp - ldr r0, [r8] - ldr r0, [r0, #0x384] - ldrb r1, [r0, r4] - add r2, r0, r4 - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _0232BF28 - ldrb r1, [r2] - tst r1, #2 - ldreqsh r1, [r2, #4] - cmpeq r1, #0xbb - bne _0232BF28 - ldrh r1, [r2, #2] - add r1, r1, #0xbc - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - cmp r1, #0xfe - beq _0232BF28 - add r0, r0, r4 - mov r2, #0 - ldrb sb, [r0, #1] - bl InitStandardItem - ldr r0, [r8] - cmp sb, #0 - ldr r0, [r0, #0x384] - add r0, r0, r4 - strb sb, [r0, #1] - beq _0232BF24 - ldr r1, [r8] - ldr r2, [r7] - add r0, sb, sb, lsl #3 - add r0, r2, r0, lsl #6 - ldr r2, [r1, #0x384] - add r0, r0, #0x600 - ldrh r1, [r2, r4] - add r2, r2, r4 - strh r1, [r0, #0x16] - ldrh r1, [r2, #2] - strh r1, [r0, #0x18] - ldrh r1, [r2, #4] - strh r1, [r0, #0x1a] -_0232BF24: - mov sb, #1 -_0232BF28: - add sl, sl, #1 - cmp sl, #0x32 - blt _0232BE74 -_0232BF34: - cmp sb, #0 - beq _0232BF50 - ldr r2, _0232BF70 ; =0x00000EF3 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232BF60 -_0232BF50: - ldr r2, _0232BF74 ; =0x00000EF4 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232BF60: - mov r0, sb - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232BF68: .word 0x02353538 -_0232BF6C: .word 0x020AF6B8 -_0232BF70: .word 0x00000EF3 -_0232BF74: .word 0x00000EF4 - arm_func_end ov29_0232BE44 - - arm_func_start ov29_0232BF78 -ov29_0232BF78: ; 0x0232BF78 - stmdb sp!, {r3, lr} - bl ov29_0231918C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232BF78 - - arm_func_start ov29_0232BF88 -ov29_0232BF88: ; 0x0232BF88 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _0232C024 ; =0x022C46D4 - mov r1, r8 - ldrsh r2, [r2] - mov r0, r4 - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232C024: .word 0x022C46D4 - arm_func_end ov29_0232BF88 - - arm_func_start ov29_0232C028 -ov29_0232C028: ; 0x0232C028 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232C060 ; =0x02352AEC - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - mov r3, #1 - bl BoostOffensiveStat - mov r0, r5 - mov r1, r4 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232C060: .word 0x02352AEC - arm_func_end ov29_0232C028 - - arm_func_start ov29_0232C064 -ov29_0232C064: ; 0x0232C064 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl ov29_023245A4 - cmp r0, #0 - beq _0232C0C0 - ldr r1, _0232C0EC ; =0x022C48BC - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r7 - and r4, r1, #0xff - bl ov29_02318D58 - b _0232C0E4 -_0232C0C0: - ldr r0, _0232C0F0 ; =0x00000CEB - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r6 - mov r3, r5 - mov r2, #6 - bl ov29_02318BBC - mov r4, #1 -_0232C0E4: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232C0EC: .word 0x022C48BC -_0232C0F0: .word 0x00000CEB - arm_func_end ov29_0232C064 - - arm_func_start ov29_0232C0F4 -ov29_0232C0F4: ; 0x0232C0F4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #8 - mov r8, r2 - ldrh ip, [r8, #4] - ldr r2, _0232C198 ; =0x0000014F - mov r5, r0 - mov r4, r1 - mov r7, r3 - cmp ip, r2 - mov r6, #0 - bne _0232C128 - mov r0, #1 - bl ov29_022E38E0 -_0232C128: - mov r0, r5 - mov r1, r4 - mov r2, r8 - mov r3, #0x100 - str r7, [sp] - bl DealDamage - cmp r0, #0 - beq _0232C18C - ldr r1, _0232C19C ; =0x022C450C - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - mov r6, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232C18C - ldr r0, _0232C1A0 ; =0x02352AE8 - mov r3, r6 - ldr r2, [r0] - mov r1, r4 - mov r0, r5 - str r3, [sp] - mov r4, #0 - str r4, [sp, #4] - bl LowerDefensiveStat -_0232C18C: - mov r0, r6 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232C198: .word 0x0000014F -_0232C19C: .word 0x022C450C -_0232C1A0: .word 0x02352AE8 - arm_func_end ov29_0232C0F4 - - arm_func_start ov29_0232C1A4 -ov29_0232C1A4: ; 0x0232C1A4 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x1c - str r3, [sp] - mov r3, #0x100 - mov r7, r0 - mov r6, r2 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232C26C - mov r1, r4 - mov r0, r7 - mov r4, #1 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - beq _0232C26C - ldr r1, [r7, #0xb4] - ldr r0, _0232C278 ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - mov r5, r0, asr #2 - ldr r0, [r7, #0xb4] - cmp r5, #1 - ldrsh r0, [r0, #0x10] - movlt r5, #1 - cmp r0, #0 - moveq r0, #1 - beq _0232C270 - ldrh r0, [r6, #4] - bl GetMoveCategory - mov r3, #0 - str r3, [sp] - str r3, [sp, #4] - str r0, [sp, #8] - mov r0, #0x23c - str r0, [sp, #0xc] - mov r0, #4 - str r0, [sp, #0x10] - mov r0, #1 - str r0, [sp, #0x14] - mov r0, r7 - mov r1, r7 - mov r2, r5 - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper -_0232C26C: - mov r0, r4 -_0232C270: - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0232C278: .word 0x000003E7 - arm_func_end ov29_0232C1A4 - - arm_func_start ov29_0232C27C -ov29_0232C27C: ; 0x0232C27C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - add r0, sp, #0 - mov r5, r1 - mov r4, #0 - bl ov29_022F8FF8 - cmp r0, #0 - beq _0232C2B4 - ldr r2, _0232C2F4 ; =0x00000EF5 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C2E8 -_0232C2B4: - add r0, sp, #0 - bl ov29_02337B9C - movs r4, r0 - beq _0232C2D8 - ldr r2, _0232C2F8 ; =0x00000EF6 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C2E8 -_0232C2D8: - ldr r2, _0232C2FC ; =0x00000EF7 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232C2E8: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232C2F4: .word 0x00000EF5 -_0232C2F8: .word 0x00000EF6 -_0232C2FC: .word 0x00000EF7 - arm_func_end ov29_0232C27C - - arm_func_start ov29_0232C300 -ov29_0232C300: ; 0x0232C300 - stmdb sp!, {r3, lr} - bl ov29_022EF5D8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C300 - - arm_func_start ov29_0232C310 -ov29_0232C310: ; 0x0232C310 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r8, r0 - mov r7, r1 - mov r4, #0 - bl DealDamage - cmp r0, #0 - beq _0232C4DC - mov r2, r4 - mov r0, r8 - mov r1, r7 - mov r4, #1 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232C4BC - mov r0, #0 - mov r1, r8 - mov r2, r0 - ldr r5, [r8, #0xb4] - ldr r6, [r7, #0xb4] - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r8 - mov r1, r7 - mov r2, #0x2c - mov r3, r4 - bl DefenderAbilityIsActive__0232BDD0 - cmp r0, #0 - beq _0232C3B0 - ldr r2, _0232C4E8 ; =0x00000EFE - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r4 - b _0232C4E0 -_0232C3B0: - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, r4 - moveq r0, #0 - tst r0, #0xff - beq _0232C3E0 - ldr r2, _0232C4EC ; =0x00000EFA - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C3E0: - ldrb r0, [r6, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0232C410 - ldr r2, _0232C4F0 ; =0x00000EFB - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C410: - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0232C440 - bl IsBagFull - cmp r0, #0 - beq _0232C440 - ldr r2, _0232C4F4 ; =0x00000EFC - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - b _0232C4E0 -_0232C440: - ldrh r0, [r6, #0x62] - strh r0, [r5, #0x62] - ldrh r0, [r6, #0x64] - strh r0, [r5, #0x64] - ldrh r0, [r6, #0x66] - strh r0, [r5, #0x66] - ldrb r0, [r5, #6] - cmp r0, #0 - bne _0232C46C - mov r0, r5 - bl ov29_02346F14 -_0232C46C: - ldrb r0, [r6, #6] - cmp r0, #0 - bne _0232C480 - add r0, r6, #0x62 - bl RemoveEquivItem -_0232C480: - add r0, r6, #0x62 - bl ItemZInit - mov r0, r8 - bl ov29_022F9EA0 - mov r0, r7 - bl ov29_022F9EA0 - ldrb r0, [r5, #0x108] - ldr r2, _0232C4F8 ; =0x00000EF9 - mov r1, r7 - cmp r0, #1 - movlo r0, #1 - strlob r0, [r5, #0x108] - mov r0, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C4DC -_0232C4BC: - mov r0, r7 - bl EntityIsValid__0232C500 - cmp r0, #0 - beq _0232C4DC - ldr r2, _0232C4FC ; =0x00000EFD - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0232C4DC: - mov r0, r4 -_0232C4E0: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232C4E8: .word 0x00000EFE -_0232C4EC: .word 0x00000EFA -_0232C4F0: .word 0x00000EFB -_0232C4F4: .word 0x00000EFC -_0232C4F8: .word 0x00000EF9 -_0232C4FC: .word 0x00000EFD - arm_func_end ov29_0232C310 - - arm_func_start EntityIsValid__0232C500 -EntityIsValid__0232C500: ; 0x0232C500 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232C500 - - arm_func_start ov29_0232C524 -ov29_0232C524: ; 0x0232C524 - stmdb sp!, {r3, lr} - mov r2, #0xa - bl ov29_02318D98 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C524 - - arm_func_start ov29_0232C538 -ov29_0232C538: ; 0x0232C538 - stmdb sp!, {r3, lr} - ldr r3, [r0, #0xb4] - ldrb r2, [r3, #0x108] - cmp r2, #1 - movlo r2, #1 - strlob r2, [r3, #0x108] - mov r2, #1 - bl TrySwitchPlace - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C538 - - arm_func_start ov29_0232C560 -ov29_0232C560: ; 0x0232C560 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryWarp - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C560 - - arm_func_start ov29_0232C578 -ov29_0232C578: ; 0x0232C578 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r1 - ldr r1, [sb, #0xb4] - mov sl, r0 - ldrb r0, [r1, #6] - mov r6, #0 - cmp r0, #0 - bne _0232C66C - mov fp, #1 - ldr r4, _0232C6A8 ; =0x020AF6B8 - mov r2, r6 - mov r8, r6 - mov r5, fp - mov r3, #6 -_0232C5B0: - mul r0, r2, r3 - ldr r1, [r4] - ldr r1, [r1, #0x384] - ldrb r7, [r1, r0] - tst r7, #1 - movne r7, fp - moveq r7, r8 - tst r7, #0xff - beq _0232C5E8 - ldrb r7, [r1, r0] - tst r7, #8 - bicne r7, r7, #8 - movne r6, r5 - strneb r7, [r1, r0] -_0232C5E8: - add r2, r2, #1 - cmp r2, #0x32 - blt _0232C5B0 - mov r8, #0 - ldr r4, _0232C6AC ; =0x02353538 - mov fp, r8 - mov r5, #1 -_0232C604: - ldr r0, [r4] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0232C500 - cmp r0, #0 - beq _0232C660 - ldr r1, [r7, #0xb4] - ldrb r0, [r1, #0x62] - tst r0, #1 - movne r2, r5 - moveq r2, fp - tst r2, #0xff - beq _0232C660 - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrneb r0, [r1, #0x62] - movne r6, #1 - bicne r0, r0, #8 - strneb r0, [r1, #0x62] -_0232C660: - add r8, r8, #1 - cmp r8, #4 - blt _0232C604 -_0232C66C: - cmp r6, #0 - beq _0232C688 - ldr r2, _0232C6B0 ; =0x00000EFF - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - b _0232C698 -_0232C688: - mov r0, sl - mov r1, sb - mov r2, #0xf00 - bl LogMessageByIdWithPopupCheckUserTarget -_0232C698: - bl ov29_022E8104 - bl ov29_022E81F8 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232C6A8: .word 0x020AF6B8 -_0232C6AC: .word 0x02353538 -_0232C6B0: .word 0x00000EFF - arm_func_end ov29_0232C578 - - arm_func_start ov29_0232C6B4 -ov29_0232C6B4: ; 0x0232C6B4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - ldr r1, _0232C6EC ; =0x022C4720 - mov r0, r4 - mov r2, #1 - bl CalcStatusDuration - mov r2, r0 - mov r0, r5 - mov r1, r4 - mov r3, #1 - bl TryInflictSleepStatus - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232C6EC: .word 0x022C4720 - arm_func_end ov29_0232C6B4 - - arm_func_start ov29_0232C6F0 -ov29_0232C6F0: ; 0x0232C6F0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x20 - mov r4, #0 - mov sb, r1 - strb r4, [sp, #0x1d] - strb r4, [sp, #0x1c] - mov sl, r0 - ldr r1, [sb, #0xb4] - mov r8, r2 - ldrsh r0, [r1, #0x10] - mov r7, r3 - ldr r6, [sl, #0xb4] - subs r5, r0, #1 - ldrh r0, [r8, #4] - movmi r5, r4 - bl GetMoveCategory - mov r4, r0 - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - mov r2, r5 - add r5, sp, #0x1d - mov r3, #0 - str r5, [sp] - stmib sp, {r3, r4} - str r0, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - mov r1, sb - str r3, [sp, #0x18] - mov r0, sl - bl CalcDamageFixedWrapper - ldrsh r0, [r6, #0x10] - add r0, r0, r0, lsr #31 - movs r5, r0, asr #1 - ldrh r0, [r8, #4] - movmi r5, #0 - bl GetMoveCategory - mov r4, r0 - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - add r1, sp, #0x1c - mov r3, #0 - stmia sp, {r1, r3, r4} - str r0, [sp, #0xc] - str r3, [sp, #0x10] - str r3, [sp, #0x14] - mov r0, sl - mov r1, sl - mov r2, r5 - str r3, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1d] - cmp r0, #0 - moveq r1, #1 - movne r1, #0 - ldrb r0, [sp, #0x1c] - strb r1, [sp, #0x1d] - cmp r0, #0 - moveq r1, #1 - movne r1, #0 - ldrb r0, [sp, #0x1d] - strb r1, [sp, #0x1c] - cmp r0, #0 - bne _0232C800 - tst r1, #0xff - beq _0232C808 -_0232C800: - mov r0, #1 - b _0232C80C -_0232C808: - mov r0, #0 -_0232C80C: - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_0232C6F0 - - arm_func_start ov29_0232C818 -ov29_0232C818: ; 0x0232C818 - stmdb sp!, {r3, lr} - mov r2, #0 - bl ov29_02317124 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C818 - - arm_func_start ov29_0232C82C -ov29_0232C82C: ; 0x0232C82C - stmdb sp!, {r3, lr} - bl ov29_02315610 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C82C - - arm_func_start ov29_0232C83C -ov29_0232C83C: ; 0x0232C83C - stmdb sp!, {r3, lr} - bl ov29_0231575C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232C83C - - arm_func_start ov29_0232C84C -ov29_0232C84C: ; 0x0232C84C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, r0 - mov r8, r1 - mov fp, #0 - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0232C890 - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C890: - ldr r7, [r8, #0xb4] - ldrb r0, [r7, #6] - cmp r0, #0 - beq _0232C9E4 - ldrsh r4, [r7, #2] - mov r0, fp - mov r1, r8 - mov r2, r0 - mov r5, r4 - bl SubstitutePlaceholderStringTags - ldrb r0, [r7, #0xbc] - cmp r0, #6 - bls _0232C8DC - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0232C8DC: - mov r6, fp - b _0232C970 -_0232C8E4: - mov r0, #0 - bl GetMonsterIdToSpawn - mov r1, #0 - mov r4, r0 - bl MewSpawnCheck - cmp r0, #0 - beq _0232C96C - mov r0, r7 - bl ov29_022FBDE0 - cmp r0, #0 - bne _0232C96C - ldrb r0, [r7, #6] - cmp r0, #0 - cmpne r5, r4 - beq _0232C96C - mov r0, r4 - bl GetBodySize - mov sl, r0 - mov r0, r5 - bl GetBodySize - cmp sl, r0 - bne _0232C96C - ldrb r1, [r8, #0xaa] - mov r0, r4 - bl ov29_022E1AAC - str r0, [sp] - mov r0, r8 - bl ov29_022E1AD4 - mov sl, r0 - bl ov29_022E1EF8 - add r1, sl, r0 - ldr r0, [sp] - cmp r1, r0 - bge _0232C978 -_0232C96C: - add r6, r6, #1 -_0232C970: - cmp r6, #0x1e - blt _0232C8E4 -_0232C978: - cmp r6, #0x1e - ldrnesh r0, [r7, #2] - cmpne r0, r4 - bne _0232C99C - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CA04 -_0232C99C: - mov r0, #1 - bl sub_02024FB8 - mov r5, r0 - mov r1, r4 - mov r2, #0x4e - bl GetNameWithGender - mov r1, r5 - mov r0, #1 - bl ov29_0234B0B4 - ldr r2, _0232CA10 ; =0x00000F01 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r8 - mov r1, r4 - bl ov29_022FD7A0 - mov fp, #1 - b _0232CA04 -_0232C9E4: - mov r0, fp - mov r1, r8 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232CA0C ; =0x00000F02 - mov r0, sb - mov r1, r8 - bl LogMessageByIdWithPopupCheckUserTarget -_0232CA04: - mov r0, fp - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232CA0C: .word 0x00000F02 -_0232CA10: .word 0x00000F01 - arm_func_end ov29_0232C84C - - arm_func_start ov29_0232CA14 -ov29_0232CA14: ; 0x0232CA14 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, r2 - bl LowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CA14 - - arm_func_start ov29_0232CA2C -ov29_0232CA2C: ; 0x0232CA2C - stmdb sp!, {r3, lr} - bl ov29_022E3430 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CA2C - - arm_func_start ov29_0232CA3C -ov29_0232CA3C: ; 0x0232CA3C - stmdb sp!, {r3, lr} - bl TryInflictPetrifiedStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CA3C - - arm_func_start ov29_0232CA4C -ov29_0232CA4C: ; 0x0232CA4C - stmdb sp!, {r3, lr} - mov r2, #8 - bl TryPounce - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CA4C - - arm_func_start ov29_0232CA60 -ov29_0232CA60: ; 0x0232CA60 - stmdb sp!, {r3, lr} - bl ov29_0231F6E4 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CA60 - - arm_func_start ov29_0232CA70 -ov29_0232CA70: ; 0x0232CA70 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0 - mov r4, r1 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, _0232CAFC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - beq _0232CAB4 - ldr r2, _0232CB00 ; =0x00000F04 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232CAF4 -_0232CAB4: - mov r0, r5 - bl ov29_022FBDF0 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _0232CAE8 - ldr r2, _0232CB04 ; =0x00000F03 - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0xa - bl ov29_0234BA54 -_0232CAE8: - mov r0, #1 - mov r1, r0 - bl ov29_022E09E8 -_0232CAF4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232CAFC: .word 0x02353538 -_0232CB00: .word 0x00000F04 -_0232CB04: .word 0x00000F03 - arm_func_end ov29_0232CA70 - - arm_func_start ov29_0232CB08 -ov29_0232CB08: ; 0x0232CB08 - stmdb sp!, {r3, lr} - bl ov29_0231F594 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CB08 - - arm_func_start ov29_0232CB18 -ov29_0232CB18: ; 0x0232CB18 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sb, r1 - mov sl, r0 - mov r0, sb - mov r7, #0 - bl GetTileAtEntity - mov r4, r0 - bl ov29_023361D4 - cmp r0, #0 - beq _0232CB58 - ldr r1, _0232CCB0 ; =0x00000F07 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, r7 - b _0232CCA8 -_0232CB58: - ldrb r0, [r4, #7] - cmp r0, #0xff - beq _0232CB74 - mov r0, sb - bl HasDropeyeStatus - cmp r0, #0 - beq _0232CB94 -_0232CB74: - bl ov29_022E333C - ldrsh r2, [sb, #4] - ldrsh r1, [sb, #6] - sub r8, r2, r0 - sub fp, r1, r0 - add r4, r2, r0 - add r5, r1, r0 - b _0232CBD0 -_0232CB94: - ldr r0, _0232CCB4 ; =0x02353538 - ldrb r2, [r4, #7] - ldr r0, [r0] - mov r1, #0x1c - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - mla r0, r2, r1, r0 - ldrsh r3, [r0, #2] - ldrsh r2, [r0, #4] - ldrsh r1, [r0, #6] - ldrsh r0, [r0, #8] - sub r8, r3, #1 - sub fp, r2, #1 - add r4, r1, #1 - add r5, r0, #1 -_0232CBD0: - ldr r0, _0232CCB8 ; =0x02352B38 - ldrh r1, [r0] - ldrh r0, [r0, #2] - strh r1, [sp, #4] - strh r0, [sp, #6] - b _0232CC68 -_0232CBE8: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - mov r6, fp - str r0, [sp] - b _0232CC5C -_0232CBFC: - mov r0, r8 - mov r1, r6 - bl GetTileSafe - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _0232CC58 - ldr r1, [r0] - cmp r1, #2 - bne _0232CC58 - bl ov29_022E1608 - ldrb r1, [r0, #2] - tst r1, #1 - bne _0232CC58 - ldrb r0, [r0] - cmp r0, #0x11 - beq _0232CC58 - ldr r2, [sp] - add r0, sp, #8 - mov r1, #0 - strh r2, [sp, #8] - strh r6, [sp, #0xa] - bl ov29_022EDE7C - mov r7, #1 -_0232CC58: - add r6, r6, #1 -_0232CC5C: - cmp r6, r5 - ble _0232CBFC - add r8, r8, #1 -_0232CC68: - cmp r8, r4 - ble _0232CBE8 - cmp r7, #0 - beq _0232CC94 - ldr r2, _0232CCBC ; =0x00000F05 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget - bl ov29_02339CE8 - bl ov29_02336F4C - b _0232CCA4 -_0232CC94: - ldr r2, _0232CCC0 ; =0x00000F06 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CCA4: - mov r0, r7 -_0232CCA8: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232CCB0: .word 0x00000F07 -_0232CCB4: .word 0x02353538 -_0232CCB8: .word 0x02352B38 -_0232CCBC: .word 0x00000F05 -_0232CCC0: .word 0x00000F06 - arm_func_end ov29_0232CB18 - - arm_func_start ov29_0232CCC4 -ov29_0232CCC4: ; 0x0232CCC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldr r0, [sl, #0xb4] - mov sb, r1 - ldrb r0, [r0, #6] - mov r6, #0 - mov r4, #0 - cmp r0, #0 - ldrne r0, _0232CD88 ; =0x02353538 - movne r5, #0x10 - ldrne r0, [r0] - moveq r5, #4 - addne r0, r0, #0x338 - ldreq r0, _0232CD88 ; =0x02353538 - mov fp, #1 - ldreq r0, [r0] - addeq r0, r0, #0x328 - add r7, r0, #0x12800 - b _0232CD60 -_0232CD10: - ldr r8, [r7, r4, lsl #2] - mov r0, r8 - bl EntityIsValid__0232C500 - cmp r0, #0 - cmpne sl, r8 - beq _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, fp - mov r3, #0 - bl ov29_0230175C - cmp r0, #0 - bne _0232CD5C - mov r0, sl - mov r1, r8 - mov r2, #2 - add r3, sl, #4 - bl TryWarp - mov r6, #1 -_0232CD5C: - add r4, r4, #1 -_0232CD60: - cmp r4, r5 - blt _0232CD10 - cmp r6, #0 - bne _0232CD80 - ldr r2, _0232CD8C ; =0x00000F08 - mov r0, sl - mov r1, sb - bl LogMessageByIdWithPopupCheckUserTarget -_0232CD80: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0232CD88: .word 0x02353538 -_0232CD8C: .word 0x00000F08 - arm_func_end ov29_0232CCC4 - - arm_func_start ov29_0232CD90 -ov29_0232CD90: ; 0x0232CD90 - stmdb sp!, {r3, lr} - mov r1, r0 - bl ov29_0231657C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CD90 - - arm_func_start ov29_0232CDA4 -ov29_0232CDA4: ; 0x0232CDA4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r7, r2 - mov r4, r0 - mov r0, r7 - mov r8, r1 - mov r5, r3 - bl GetMoveType - mov r6, r0 - ldrh r0, [r7, #4] - bl GetMoveCategory - mov r1, r5 - mov r5, r0 - mov r0, r7 - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r6} - str r5, [sp, #8] - str r0, [sp, #0xc] - mov r2, #0 - str r2, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - str r2, [sp, #0x18] - ldr r2, _0232CE3C ; =0x0000270F - mov r1, r8 - mov r0, r4 - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232CE3C: .word 0x0000270F - arm_func_end ov29_0232CDA4 - - arm_func_start ov29_0232CE40 -ov29_0232CE40: ; 0x0232CE40 - stmdb sp!, {r3, lr} - bl ov29_02317648 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CE40 - - arm_func_start ov29_0232CE50 -ov29_0232CE50: ; 0x0232CE50 - stmdb sp!, {r3, lr} - ldr ip, _0232CE78 ; =0x022C456C - str r3, [sp] - ldrsh r3, [ip] - bl ov29_02332F18 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_0232CE78: .word 0x022C456C - arm_func_end ov29_0232CE50 - - arm_func_start ov29_0232CE7C -ov29_0232CE7C: ; 0x0232CE7C - stmdb sp!, {r3, lr} - ldr r2, _0232CE90 ; =0x00000F09 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232CE90: .word 0x00000F09 - arm_func_end ov29_0232CE7C - - arm_func_start ov29_0232CE94 -ov29_0232CE94: ; 0x0232CE94 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl TryInflictCoweringStatus - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CE94 - - arm_func_start ov29_0232CEAC -ov29_0232CEAC: ; 0x0232CEAC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x20 - mov r5, #0 - strb r5, [sp, #0x1c] - mov r4, r1 - ldr r1, [r4, #0xb4] - mov r5, r0 - ldrsh r0, [r1, #4] - mov sb, r2 - mov r6, r3 - bl GetSize - mov r8, r0 - mov r0, sb - bl GetMoveType - mov r7, r0 - ldrh r0, [sb, #4] - bl GetMoveCategory - mov r1, r6 - mov r6, r0 - mov r0, sb - bl ov29_02324E44 - add r3, sp, #0x1c - stmia sp, {r3, r7} - str r6, [sp, #8] - mov r1, r4 - str r0, [sp, #0xc] - mov r4, #0 - str r4, [sp, #0x10] - mov r3, #1 - str r3, [sp, #0x14] - mov r2, r8 - mov r0, r5 - str r4, [sp, #0x18] - bl CalcDamageFixedWrapper - ldrb r0, [sp, #0x1c] - cmp r0, #0 - moveq r0, #1 - movne r0, r4 - strb r0, [sp, #0x1c] - and r0, r0, #0xff - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_0232CEAC - - arm_func_start ov29_0232CF54 -ov29_0232CF54: ; 0x0232CF54 - stmdb sp!, {r3, lr} - ldr r2, _0232CF70 ; =0x022C45BC - mov r3, #0 - ldrsh r2, [r2] - bl ov29_023168D8 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232CF70: .word 0x022C45BC - arm_func_end ov29_0232CF54 - - arm_func_start ov29_0232CF74 -ov29_0232CF74: ; 0x0232CF74 - stmdb sp!, {r3, lr} - bl ov29_0231EA40 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232CF74 - - arm_func_start ov29_0232CF84 -ov29_0232CF84: ; 0x0232CF84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r1 - mov r7, r0 - ldr r5, [r6, #0xb4] - mov r4, #0 - bl ov29_022E0880 - cmp r0, #0 - beq _0232CFB8 - ldr r1, _0232D0E0 ; =0x00000F0B - mov r0, r7 - bl LogMessageByIdWithPopupCheckUser - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0232CFB8: - ldrb r1, [r5, #0x4c] - ldr r0, _0232D0E4 ; =0x0235171C - ldrsh r3, [r6, #4] - mov r1, r1, lsl #2 - ldrsh r2, [r0, r1] - ldr r1, _0232D0E8 ; =0x0235171E - add r0, sp, #0 - add r2, r3, r2 - strh r2, [sp] - ldrb r2, [r5, #0x4c] - ldrsh r3, [r6, #6] - mov r2, r2, lsl #2 - ldrsh r1, [r1, r2] - add r1, r3, r1 - strh r1, [sp, #2] - bl ov29_022E6770 - ldrsh r0, [sp] - ldrsh r1, [sp, #2] - bl GetTileSafe - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #2 - bne _0232D06C - ldrh r1, [r0] - mvn r4, #0 - mov r5, r4 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0232D034: - mov r8, r5 -_0232D038: - ldrsh r0, [sp] - ldrsh r1, [sp, #2] - add r0, r0, r8 - add r1, r1, r4 - bl ov29_02336694 - add r8, r8, #1 - cmp r8, #1 - ble _0232D038 - add r4, r4, #1 - cmp r4, #1 - ble _0232D034 - mov r4, #1 - bl ov29_02304B64 -_0232D06C: - mov r8, #0 - mov r5, r8 -_0232D074: - mov sb, r5 -_0232D078: - mov r0, sb - mov r1, r8 - bl ov29_02336A84 - add sb, sb, #1 - cmp sb, #0x38 - blt _0232D078 - add r8, r8, #1 - cmp r8, #0x20 - blt _0232D074 - cmp r4, #0 - beq _0232D0C0 - add r0, sp, #0 - bl ov29_022E6784 - ldr r2, _0232D0EC ; =0x00000F0A - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232D0D0 -_0232D0C0: - ldr r2, _0232D0E0 ; =0x00000F0B - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232D0D0: - bl ov29_02339CE8 - bl ov29_02336F4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0232D0E0: .word 0x00000F0B -_0232D0E4: .word 0x0235171C -_0232D0E8: .word 0x0235171E -_0232D0EC: .word 0x00000F0A - arm_func_end ov29_0232CF84 - - arm_func_start ov29_0232D0F0 -ov29_0232D0F0: ; 0x0232D0F0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl ov29_022ED868 - cmp r0, #0 - bne _0232D11C - ldr r1, _0232D144 ; =0x00000E7E - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0232D11C: - ldr r0, [r4, #0xb4] - mov r1, #0x19 - ldrb r0, [r0, #6] - cmp r0, #0 - movne r2, #2 - moveq r2, #1 - add r0, r4, #4 - bl ov29_022EDBD4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D144: .word 0x00000E7E - arm_func_end ov29_0232D0F0 - - arm_func_start ov29_0232D148 -ov29_0232D148: ; 0x0232D148 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r4, r1 - ldrh r2, [r4, #4] - mov r5, r0 - strh r2, [sp, #6] - ldrh r2, [r4, #6] - strh r2, [sp, #8] - ldr r2, [r4, #0xb4] - ldrb r2, [r2, #0xbc] - cmp r2, #6 - bls _0232D188 - ldr r2, _0232D1D4 ; =0x00000F0C - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #0 - b _0232D1CC -_0232D188: - mov r0, #0 - strb r0, [r4, #0x20] - bl ov29_022E7AC4 - mov r1, r0 - add r0, sp, #0 - mov r2, #0 - bl ov29_02344BD0 - add r1, sp, #6 - add r2, sp, #0 - mov r0, r5 - mov r3, #0 - bl ov29_02345A3C - ldr r1, _0232D1D8 ; =0x00000257 - mov r0, r4 - mov r2, r5 - bl HandleFaint - mov r0, #1 -_0232D1CC: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0232D1D4: .word 0x00000F0C -_0232D1D8: .word 0x00000257 - arm_func_end ov29_0232D148 - - arm_func_start ov29_0232D1DC -ov29_0232D1DC: ; 0x0232D1DC - stmdb sp!, {r3, lr} - bl ov29_0231EDFC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D1DC - - arm_func_start ov29_0232D1EC -ov29_0232D1EC: ; 0x0232D1EC - stmdb sp!, {r3, lr} - bl ov29_0231740C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D1EC - - arm_func_start ov29_0232D1FC -ov29_0232D1FC: ; 0x0232D1FC - stmdb sp!, {r3, lr} - bl ov29_023156A0 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D1FC - - arm_func_start ov29_0232D20C -ov29_0232D20C: ; 0x0232D20C - stmdb sp!, {r3, lr} - bl ov29_023181A0 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D20C - - arm_func_start ov29_0232D21C -ov29_0232D21C: ; 0x0232D21C - stmdb sp!, {r3, lr} - bl ov29_02318210 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D21C - - arm_func_start ov29_0232D22C -ov29_0232D22C: ; 0x0232D22C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232D268 - mov r2, #1 - mov r0, r4 - mov r1, r4 - mov r3, r2 - bl LowerSpeed - mov r0, #1 -_0232D268: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_0232D22C - - arm_func_start ov29_0232D270 -ov29_0232D270: ; 0x0232D270 - stmdb sp!, {r3, lr} - bl ov29_0231845C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D270 - - arm_func_start ov29_0232D280 -ov29_0232D280: ; 0x0232D280 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_0231827C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D280 - - arm_func_start ov29_0232D298 -ov29_0232D298: ; 0x0232D298 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, r4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _0232D2E4 ; =0x022C46F4 - mov ip, #1 - ldrsh r2, [r2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r2, #1 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl ov29_02305C28 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D2E4: .word 0x022C46F4 - arm_func_end ov29_0232D298 - - arm_func_start ov29_0232D2E8 -ov29_0232D2E8: ; 0x0232D2E8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232D358 - ldr r0, _0232D360 ; =0x02352AEC - mov r3, #1 - ldr r2, [r0] - mov r0, r4 - mov r1, r4 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat - ldr r0, _0232D364 ; =0x02352AE8 - mov r3, #1 - ldr r2, [r0] - mov r0, r4 - mov r1, r4 - str r3, [sp] - mov ip, #0 - str ip, [sp, #4] - bl LowerDefensiveStat - mov r0, #1 -_0232D358: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0232D360: .word 0x02352AEC -_0232D364: .word 0x02352AE8 - arm_func_end ov29_0232D2E8 - - arm_func_start ov29_0232D368 -ov29_0232D368: ; 0x0232D368 - stmdb sp!, {r3, lr} - bl ov29_02318508 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D368 - - arm_func_start ov29_0232D378 -ov29_0232D378: ; 0x0232D378 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl ov29_0230D874 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230D8E8 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232D3D4 ; =0x00000F2E - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D3D4: .word 0x00000F2E - arm_func_end ov29_0232D378 - - arm_func_start ov29_0232D3D8 -ov29_0232D3D8: ; 0x0232D3D8 - stmdb sp!, {r3, lr} - ldr r2, _0232D3FC ; =0x022C44B8 - mov ip, #1 - ldrsh r2, [r2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232D3FC: .word 0x022C44B8 - arm_func_end ov29_0232D3D8 - - arm_func_start ov29_0232D400 -ov29_0232D400: ; 0x0232D400 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_023185A8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D400 - - arm_func_start ov29_0232D418 -ov29_0232D418: ; 0x0232D418 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D4A4 ; =0x022C452C - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D46C - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictParalysisStatus -_0232D46C: - ldr r1, _0232D4A8 ; =0x022C4678 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D49C - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictCringeStatus -_0232D49C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D4A4: .word 0x022C452C -_0232D4A8: .word 0x022C4678 - arm_func_end ov29_0232D418 - - arm_func_start ov29_0232D4AC -ov29_0232D4AC: ; 0x0232D4AC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r1 - mov r6, r0 - mov r0, r5 - ldr r4, [r5, #0xb4] - bl ov29_023197CC - cmp r0, #0 - bne _0232D4E0 - ldrb r0, [r4, #0xd5] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #2 - bhi _0232D4FC -_0232D4E0: - ldr r2, _0232D550 ; =0x00000ED2 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, r6 - mov r1, r5 - bl ov29_023064F4 -_0232D4FC: - ldr r1, _0232D554 ; =0x02352AE8 - mov r0, r6 - ldr r2, [r1] - mov r1, r5 - mov r3, #0 - bl LowerHitChanceStat - mov r0, r6 - bl GetApparentWeather - cmp r0, #6 - bne _0232D548 - ldr r1, _0232D558 ; =0x022C4654 - ldr r0, _0232D55C ; =0x02353538 - ldrsh r3, [r1] - ldr r1, [r0] - mov r0, #1 - add r2, r1, #0xcd00 - mov r1, #0 - strh r3, [r2, #0x3a] - bl ov29_023354C4 -_0232D548: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232D550: .word 0x00000ED2 -_0232D554: .word 0x02352AE8 -_0232D558: .word 0x022C4654 -_0232D55C: .word 0x02353538 - arm_func_end ov29_0232D4AC - - arm_func_start ov29_0232D560 -ov29_0232D560: ; 0x0232D560 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r6, r2 - ldrb r4, [r6, #6] - mov r8, r0 - mov r0, r6 - mov r7, r1 - mov r5, r3 - bl GetMaxPp - movs r1, r0 - mov r0, #0x64 - mul r0, r4, r0 - moveq r1, #1 - bl DivideInt - cmp r0, #0x19 - bgt _0232D5BC - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x140 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D5BC: - cmp r0, #0x32 - bgt _0232D5E0 - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, #0x100 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D5E0: - cmp r0, #0x4b - mov r0, r8 - mov r1, r7 - bgt _0232D604 - mov r2, r6 - mov r3, #0xc0 - str r5, [sp] - bl DealDamage - b _0232D614 -_0232D604: - mov r2, r6 - mov r3, #0x80 - str r5, [sp] - bl DealDamage -_0232D614: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov29_0232D560 - - arm_func_start ov29_0232D620 -ov29_0232D620: ; 0x0232D620 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D6A8 ; =0x022C4518 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D670 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl TryInflictFrozenStatus -_0232D670: - ldr r1, _0232D6AC ; =0x022C453C - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D6A0 - mov r2, #0 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl TryInflictCringeStatus -_0232D6A0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D6A8: .word 0x022C4518 -_0232D6AC: .word 0x022C453C - arm_func_end ov29_0232D620 - - arm_func_start ov29_0232D6B0 -ov29_0232D6B0: ; 0x0232D6B0 - stmdb sp!, {r3, lr} - cmp r0, r1 - beq _0232D6C8 - mov r2, #0 - mov r3, r2 - bl ov29_02305C3C -_0232D6C8: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D6B0 - - arm_func_start ov29_0232D6D0 -ov29_0232D6D0: ; 0x0232D6D0 - stmdb sp!, {r3, lr} - mov r2, #1 - mov r3, #0 - bl ov29_0231872C - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D6D0 - - arm_func_start ov29_0232D6E8 -ov29_0232D6E8: ; 0x0232D6E8 - stmdb sp!, {r3, r4, r5, lr} - ldr r5, [r1, #0xb4] - ldr ip, _0232D734 ; =0x000003E7 - ldrsh r4, [r5, #0x12] - ldrsh lr, [r5, #0x16] - add r4, r4, lr - cmp r4, ip - movgt r4, ip - ldrsh ip, [r5, #0x10] - cmp r4, ip, lsl #1 - movge r4, #2 - movlt r4, #1 - str r3, [sp] - mov r3, r4, lsl #8 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D734: .word 0x000003E7 - arm_func_end ov29_0232D6E8 - - arm_func_start ov29_0232D738 -ov29_0232D738: ; 0x0232D738 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x14 - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrsh r0, [r0, #0x66] - mov r5, r2 - mov r4, r3 - cmp r0, #0 - beq _0232D7C8 - add r2, sp, #0xc - mov r3, r5 - mov r1, #4 -_0232D76C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0232D76C - mov r0, r7 - bl ov29_0231AE90 - cmp r0, #0 - beq _0232D7C8 - str r4, [sp] - ldrb r3, [r0, #2] - add r2, sp, #0xc - mov r1, r6 - str r3, [sp, #4] - ldrsh r4, [r0, #4] - mov r0, r7 - mov r3, #0x100 - str r4, [sp, #8] - bl ov29_02332BB8 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - b _0232D7F0 -_0232D7C8: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0x100 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0232D7F0: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end ov29_0232D738 - - arm_func_start ov29_0232D7F8 -ov29_0232D7F8: ; 0x0232D7F8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr ip, [r8, #0xb4] - mov r7, r1 - ldr ip, [ip, #0x110] - mov r6, r2 - cmp ip, #0 - mov r5, r3 - movne r4, #1 - bne _0232D830 - ldr r2, _0232D85C ; =0x00000F0D - mov r4, #2 - bl LogMessageByIdWithPopupCheckUserTarget -_0232D830: - mov r0, r8 - mov r1, r7 - mov r2, r6 - mov r3, r4, lsl #8 - str r5, [sp] - bl DealDamage - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232D85C: .word 0x00000F0D - arm_func_end ov29_0232D7F8 - - arm_func_start ov29_0232D860 -ov29_0232D860: ; 0x0232D860 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl ov29_023245A4 - cmp r0, #0 - beq _0232D8CC - ldr r1, _0232D8F4 ; =0x022C47DC - mov r0, r7 - ldr r3, [r1] - mov r1, r6 - mov r2, r5 - str r4, [sp] - bl DealDamage - cmp r0, #0 - movne r4, #1 - moveq r4, #0 - mov r0, r7 - bl ov29_02318D58 - tst r4, #0xff - beq _0232D8EC - mov r0, r7 - mov r1, r6 - bl ov29_02307D18 - b _0232D8EC -_0232D8CC: - ldr r0, _0232D8F8 ; =0x00000CD7 - bl StringFromMessageId - str r0, [sp] - mov r0, r7 - mov r1, r6 - mov r3, r5 - mov r2, #0xd - bl ov29_02318BBC -_0232D8EC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232D8F4: .word 0x022C47DC -_0232D8F8: .word 0x00000CD7 - arm_func_end ov29_0232D860 - - arm_func_start ov29_0232D8FC -ov29_0232D8FC: ; 0x0232D8FC - stmdb sp!, {r3, lr} - bl ov29_023383BC - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232D8FC - - arm_func_start ov29_0232D90C -ov29_0232D90C: ; 0x0232D90C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl ov29_022ED868 - cmp r0, #0 - beq _0232D95C - mov r2, r5 - add r0, r7, #4 - mov r1, #0x14 - mov r3, #0 - bl ov29_022EDCBC - cmp r0, #0 - movne r4, #1 - bne _0232D96C -_0232D95C: - ldr r2, _0232D978 ; =0x00000EEF - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232D96C: - bl ov29_02336F4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232D978: .word 0x00000EEF - arm_func_end ov29_0232D90C - - arm_func_start ov29_0232D97C -ov29_0232D97C: ; 0x0232D97C - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _0232D9DC ; =0x022C44F0 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r4 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232D9D4 - ldr r1, _0232D9E0 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r5 - mov r3, #1 - bl BoostOffensiveStat -_0232D9D4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232D9DC: .word 0x022C44F0 -_0232D9E0: .word 0x02352AE8 - arm_func_end ov29_0232D97C - - arm_func_start ov29_0232D9E4 -ov29_0232D9E4: ; 0x0232D9E4 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0232DACC ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _0232DAC4 - cmp r5, #0 - moveq r0, #0 - beq _0232DA3C - ldr r0, [r5] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0232DA3C: - cmp r0, #0 - beq _0232DAC4 - cmp r5, r4 - beq _0232DA8C - cmp r5, #0 - moveq r0, #0 - beq _0232DA6C - ldr r0, [r5] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_0232DA6C: - cmp r0, #0 - beq _0232DA8C - mov r0, r5 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0232DA98 -_0232DA8C: - mov r0, r4 - mov r1, #0x2c - bl AbilityIsActive2 -_0232DA98: - cmp r0, #0 - bne _0232DAC4 - ldr r1, [r5, #0xb4] - ldrb r0, [r1, #0xd8] - cmp r0, #6 - ldrneb r0, [r1, #0xf3] - cmpne r0, #1 - beq _0232DAC4 - mov r0, r5 - mov r1, r4 - bl ov29_022FB214 -_0232DAC4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232DACC: .word 0x02353538 - arm_func_end ov29_0232D9E4 - - arm_func_start ov29_0232DAD0 -ov29_0232DAD0: ; 0x0232DAD0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r4, r1 - ldr ip, [r4, #0xb4] - ldr r1, _0232DC44 ; =0x02352B3C - mov r5, r0 - add lr, sp, #0 - ldmia r1, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - ldrsh r1, [ip, #0x24] - mov r0, #0 - cmp r1, #0x14 - strlt r0, [sp] - ldrsh r1, [ip, #0x26] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #1 - strlt r2, [r1, r0, lsl #2] - ldrsh r1, [ip, #0x28] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #2 - strlt r2, [r1, r0, lsl #2] - ldrsh r1, [ip, #0x2a] - addlt r0, r0, #1 - cmp r1, #0x14 - addlt r1, sp, #0 - movlt r2, #3 - strlt r2, [r1, r0, lsl #2] - addlt r0, r0, #1 - cmp r0, #0 - bne _0232DB7C - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232DC48 ; =0x00000F0E - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232DC38 -_0232DB7C: - bl DungeonRandInt - add r1, sp, #0 - ldr r0, [r1, r0, lsl #2] - cmp r0, #0 - bne _0232DBAC - ldr r1, _0232DC4C ; =0x02352AEC - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostOffensiveStat - b _0232DC38 -_0232DBAC: - cmp r0, #2 - bne _0232DBD0 - ldr r1, _0232DC4C ; =0x02352AEC - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostDefensiveStat - b _0232DC38 -_0232DBD0: - cmp r0, #1 - bne _0232DBF4 - ldr r1, _0232DC50 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostOffensiveStat - b _0232DC38 -_0232DBF4: - cmp r0, #3 - bne _0232DC18 - ldr r1, _0232DC50 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #2 - bl BoostDefensiveStat - b _0232DC38 -_0232DC18: - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232DC48 ; =0x00000F0E - mov r0, r5 - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DC38: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232DC44: .word 0x02352B3C -_0232DC48: .word 0x00000F0E -_0232DC4C: .word 0x02352AEC -_0232DC50: .word 0x02352AE8 - arm_func_end ov29_0232DAD0 - - arm_func_start ov29_0232DC54 -ov29_0232DC54: ; 0x0232DC54 - stmdb sp!, {r3, lr} - bl ov29_02318984 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232DC54 - - arm_func_start ov29_0232DC64 -ov29_0232DC64: ; 0x0232DC64 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, r1 - ldrb r0, [r0, #6] - mov r4, #0 - cmp r0, #0 - movne r5, #2 - moveq r5, #1 - bl ov29_022ED868 - cmp r0, #0 - beq _0232DCB4 - mov r2, r5 - add r0, r7, #4 - mov r1, #0x15 - mov r3, #1 - bl ov29_022EDCBC - cmp r0, #0 - movne r4, #1 - bne _0232DCC4 -_0232DCB4: - ldr r2, _0232DCD0 ; =0x00000EEF - mov r0, r7 - mov r1, r6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DCC4: - bl ov29_02336F4C - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232DCD0: .word 0x00000EEF - arm_func_end ov29_0232DC64 - - arm_func_start ov29_0232DCD4 -ov29_0232DCD4: ; 0x0232DCD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - mov r4, #0 - bl ov29_022FB0A8 - cmp r0, #0 - ble _0232DD10 - ldrb r1, [r6, #6] - cmp r1, #0 - subeq r0, r0, #1 - moveq r0, r0, lsl #0x10 - moveq r0, r0, asr #0x10 -_0232DD10: - cmp r0, #0 - ble _0232DD44 - ldr r1, _0232DD70 ; =0x022C4944 - sub r0, r0, #1 - ldr r3, [r1, r0, lsl #2] - mov r0, r8 - mov r1, r7 - mov r2, r6 - str r5, [sp] - bl DealDamage - cmp r0, #0 - movgt r4, #1 - b _0232DD64 -_0232DD44: - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232DD74 ; =0x00000EBC - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DD64: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0232DD70: .word 0x022C4944 -_0232DD74: .word 0x00000EBC - arm_func_end ov29_0232DCD4 - - arm_func_start ov29_0232DD78 -ov29_0232DD78: ; 0x0232DD78 - stmdb sp!, {r3, lr} - bl BoostOrLowerSpeed - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232DD78 - - arm_func_start ov29_0232DD88 -ov29_0232DD88: ; 0x0232DD88 - stmdb sp!, {r3, lr} - str r3, [sp] - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_0232DD88 - - arm_func_start ov29_0232DDAC -ov29_0232DDAC: ; 0x0232DDAC - stmdb sp!, {r4, r5, r6, lr} - mov r4, #1 - mov r3, r4 - mov r2, #0x2a - mov r6, r0 - mov r5, r1 - bl DefenderAbilityIsActive__0232DE20 - cmp r0, #0 - beq _0232DE00 - mov r4, #0 - mov r0, r4 - mov r1, r5 - mov r2, r4 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, #0x2a - bl ov29_0234B084 - ldr r2, _0232DE1C ; =0x00000F13 - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232DE00: - cmp r4, #0 - beq _0232DE14 - mov r0, r6 - mov r1, r5 - bl TryInflictSleeplessStatus -_0232DE14: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232DE1C: .word 0x00000F13 - arm_func_end ov29_0232DDAC - - arm_func_start DefenderAbilityIsActive__0232DE20 -DefenderAbilityIsActive__0232DE20: ; 0x0232DE20 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _0232DE74 - cmp r0, #0 - moveq r1, #0 - beq _0232DE54 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_0232DE54: - cmp r1, #0 - cmpne r3, #0 - beq _0232DE74 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0232DE74: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__0232DE20 - - arm_func_start ov29_0232DE84 -ov29_0232DE84: ; 0x0232DE84 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr ip, [r1, #0xb4] - ldr r6, _0232DF30 ; =0x000003E7 - ldrsh r5, [ip, #0x12] - ldrsh r4, [ip, #0x16] - ldrsh ip, [ip, #0x10] - add lr, r5, r4 - cmp lr, r6 - movle r6, lr - mov r4, r6, asr #1 - add r4, r6, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #0 - ble _0232DF08 - ldr r4, _0232DF30 ; =0x000003E7 - cmp lr, r4 - movle r4, lr - mov r5, r4, lsl #1 - mov r4, r5, asr #1 - add r4, r5, r4, lsr #30 - cmp ip, r4, asr #2 - movle r5, #1 - ble _0232DF08 - ldr r4, _0232DF30 ; =0x000003E7 - cmp lr, r4 - movgt lr, r4 - add r4, lr, lr, lsl #1 - mov lr, r4, asr #1 - add lr, r4, lr, lsr #30 - cmp ip, lr, asr #2 - movle r5, #2 - movgt r5, #3 -_0232DF08: - ldr r4, _0232DF34 ; =0x022C49B4 - str r3, [sp] - ldr r3, [r4, r5, lsl #2] - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232DF30: .word 0x000003E7 -_0232DF34: .word 0x022C49B4 - arm_func_end ov29_0232DE84 - - arm_func_start ov29_0232DF38 -ov29_0232DF38: ; 0x0232DF38 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl ov29_0230D95C - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230D9D0 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230D874 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230D8E8 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230DA44 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232DFC4 ; =0x00000F2F - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232DFC4: .word 0x00000F2F - arm_func_end ov29_0232DF38 - - arm_func_start ov29_0232DFC8 -ov29_0232DFC8: ; 0x0232DFC8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - mov r6, r1 - ldr r4, [r5, #0xb4] - bl GetApparentWeather - mov r3, #1 - str r3, [sp] - ldr r1, _0232E07C ; =0x022C4964 - mov r0, r0, lsl #1 - ldrsh r2, [r1, r0] - mov r0, r5 - mov r1, r6 - mov r3, #0 - bl TryIncreaseHp - ldrb r0, [r4, #0x5e] - mov ip, #0 - mov r1, ip - strb r0, [r4, #0xaa] - ldrb r0, [r4, #0x5f] - strb r0, [r4, #0xab] - mov r0, #1 -_0232E020: - add r3, r4, ip - ldrb r2, [r3, #0x5e] - add ip, ip, #1 - cmp r2, #0xa - streqb r1, [r3, #0x5e] - streqb r0, [r4, #0xa9] - cmp ip, #2 - blt _0232E020 - ldrb r0, [r4, #0xa9] - cmp r0, #0 - mov r0, #0 - streqb r0, [r4, #0xaa] - streqb r0, [r4, #0xab] - beq _0232E070 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _0232E080 ; =0x00000CC9 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser -_0232E070: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0232E07C: .word 0x022C4964 -_0232E080: .word 0x00000CC9 - arm_func_end ov29_0232DFC8 - - arm_func_start ov29_0232E084 -ov29_0232E084: ; 0x0232E084 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r2, #0 - bl ov29_0230D95C - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0230D9D0 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r5 - mov r1, r4 - ldr r2, _0232E0E0 ; =0x00000F2B - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232E0E0: .word 0x00000F2B - arm_func_end ov29_0232E084 - - arm_func_start ov29_0232E0E4 -ov29_0232E0E4: ; 0x0232E0E4 - stmdb sp!, {r3, lr} - mov r2, #1 - bl ov29_0230DAB8 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232E0E4 - - arm_func_start ov29_0232E0F8 -ov29_0232E0F8: ; 0x0232E0F8 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r1 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ov29_02307D18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0232E0F8 - - arm_func_start ov29_0232E130 -ov29_0232E130: ; 0x0232E130 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r5, r0 - mov r7, r1 - mov r4, r2 - mov r6, r3 - bl ov29_02307C78 - mov r0, r5 - mov r1, r7 - mov r2, r4 - mov r3, #0x100 - str r6, [sp] - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232E240 - mov r0, r5 - bl EntityIsValid__0232E250 - cmp r0, #0 - beq _0232E1B4 - ldr r1, _0232E248 ; =0x022C4684 - mov r0, r5 - ldrsh r2, [r1] - mov r1, r7 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232E1B4 - mov r2, #0 - mov r0, r5 - mov r1, r7 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_0232E1B4: - mov r0, r5 - bl EntityIsValid__0232E250 - cmp r0, #0 - beq _0232E23C - mov r0, r5 - mov r1, #7 - bl AbilityIsActive2 - cmp r0, #0 - bne _0232E23C - ldr r1, [r5, #0xb4] - ldr r0, _0232E24C ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - ldrh r3, [r4, #4] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - movs r1, r0, asr #3 - mov r2, #0 - str r3, [sp] - mov r0, #0x23c - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0x14 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - moveq r1, #1 - mov r0, r5 - mov r3, r2 - str r2, [sp, #0x14] - bl CalcRecoilDamageFixed -_0232E23C: - mov r0, #1 -_0232E240: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232E248: .word 0x022C4684 -_0232E24C: .word 0x000003E7 - arm_func_end ov29_0232E130 - - arm_func_start EntityIsValid__0232E250 -EntityIsValid__0232E250: ; 0x0232E250 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232E250 - - arm_func_start ov29_0232E274 -ov29_0232E274: ; 0x0232E274 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0232E2B0 ; =0x02352AEC - mov r3, #1 - ldr r2, [r2] - mov r5, r0 - mov r4, r1 - bl BoostDefensiveStat - ldr r1, _0232E2B4 ; =0x02352AE8 - mov r0, r5 - ldr r2, [r1] - mov r1, r4 - mov r3, #1 - bl BoostDefensiveStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232E2B0: .word 0x02352AEC -_0232E2B4: .word 0x02352AE8 - arm_func_end ov29_0232E274 - - arm_func_start ov29_0232E2B8 -ov29_0232E2B8: ; 0x0232E2B8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov29_02307C78 - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, #0x100 - str r4, [sp] - bl DealDamage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, _0232E360 ; =0x022C4684 - mov r0, r7 - ldrsh r2, [r1] - mov r1, r6 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232E328 - mov r2, #0 - mov r0, r7 - mov r1, r6 - mov r3, r2 - str r2, [sp] - bl TryInflictBurnStatus -_0232E328: - ldr r1, _0232E364 ; =0x022C449C - mov r0, r7 - ldrsh r2, [r1] - mov r1, r6 - bl DungeonRandOutcomeUserTargetInteraction - cmp r0, #0 - beq _0232E358 - mov r2, #0 - mov r0, r7 - mov r1, r6 - mov r3, r2 - bl TryInflictCringeStatus -_0232E358: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0232E360: .word 0x022C4684 -_0232E364: .word 0x022C449C - arm_func_end ov29_0232E2B8 - - arm_func_start ov29_0232E368 -ov29_0232E368: ; 0x0232E368 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, r4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _0232E3C8 ; =0x022C46F4 - mov ip, #1 - ldrsh r2, [r2] - mov r3, #0 - str ip, [sp] - bl TryIncreaseHp - ldr r2, _0232E3CC ; =0x000003E7 - mov r0, r5 - mov r1, r4 - mov r3, #0 - bl RestoreMovePP - mov r2, #1 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl ov29_02305C28 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232E3C8: .word 0x022C46F4 -_0232E3CC: .word 0x000003E7 - arm_func_end ov29_0232E368 - - arm_func_start ov29_0232E3D0 -ov29_0232E3D0: ; 0x0232E3D0 - stmdb sp!, {r3, r4, r5, lr} - mov r2, #0 - mov r5, r0 - mov r4, r1 - bl ov29_02318850 - mov r2, #1 - mov r0, r5 - mov r1, r4 - mov r3, r2 - bl ResetHitChanceStat - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0232E3D0 - - arm_func_start ov29_0232E400 -ov29_0232E400: ; 0x0232E400 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r1 - ldr ip, [r5, #0xb4] - mov r6, r0 - ldrb ip, [ip, #0xbd] - cmp ip, #1 - cmpne ip, #3 - cmpne ip, #5 - str r3, [sp] - bne _0232E468 - mov r0, r6 - mov r1, r5 - mov r3, #0x200 - bl DealDamage - cmp r0, #0 - movne r4, #1 - moveq r4, #0 - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, #1 - str r2, [sp] - and r4, r4, #0xff - bl ov29_02305FDC - b _0232E480 -_0232E468: - mov r3, #0x100 - bl DealDamage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r4, r0, #0xff -_0232E480: - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0232E400 - - arm_func_start ov29_0232E48C -ov29_0232E48C: ; 0x0232E48C - stmdb sp!, {r3, lr} - mov r2, #0xf - bl ov29_02318D98 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232E48C - - arm_func_start ov29_0232E4A0 -ov29_0232E4A0: ; 0x0232E4A0 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x18 - str r3, [sp] - mov r3, #0x100 - mov r5, r0 - mov r4, r2 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232E554 - mov r0, r5 - bl EntityIsValid__0232E250 - cmp r0, #0 - beq _0232E550 - mov r0, r5 - mov r1, #7 - bl AbilityIsActive2 - cmp r0, #0 - bne _0232E550 - ldr r1, [r5, #0xb4] - ldr r0, _0232E55C ; =0x000003E7 - ldrsh r2, [r1, #0x12] - ldrsh r1, [r1, #0x16] - ldrh r3, [r4, #4] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - movs r1, r0, asr #2 - mov r2, #0 - str r3, [sp] - mov r0, #0x23c - str r2, [sp, #4] - str r0, [sp, #8] - mov r0, #0x14 - str r0, [sp, #0xc] - mov r0, #1 - str r0, [sp, #0x10] - moveq r1, #1 - mov r0, r5 - mov r3, r2 - str r2, [sp, #0x14] - bl CalcRecoilDamageFixed -_0232E550: - mov r0, #1 -_0232E554: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232E55C: .word 0x000003E7 - arm_func_end ov29_0232E4A0 - - arm_func_start ov29_0232E560 -ov29_0232E560: ; 0x0232E560 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - ldr r0, [r6, #0xb4] - ldr r1, [r5, #0xb4] - ldrsh r0, [r0, #2] - ldrsh r1, [r1, #2] - mov r4, #0 - bl sub_02054EC8 - cmp r0, #0 - beq _0232E5D4 - mov r0, r6 - mov r1, r5 - mov r2, #0x29 - mov r3, #1 - bl DefenderAbilityIsActive__0232DE20 - cmp r0, #0 - bne _0232E5D4 - ldr r0, _0232E61C ; =0x02352AE8 - mov ip, #1 - ldr r2, [r0] - str ip, [sp] - mov r0, r6 - mov r1, r5 - mov r3, #2 - str ip, [sp, #4] - bl LowerOffensiveStat - mov r4, #1 -_0232E5D4: - cmp r4, #0 - bne _0232E610 - mov r0, r5 - bl EntityIsValid__0232E250 - cmp r0, #0 - moveq r0, r4 - beq _0232E614 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r2, _0232E620 ; =0x00000F0F - mov r0, r6 - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_0232E610: - mov r0, r4 -_0232E614: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0232E61C: .word 0x02352AE8 -_0232E620: .word 0x00000F0F - arm_func_end ov29_0232E560 - - arm_func_start ov29_0232E624 -ov29_0232E624: ; 0x0232E624 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232E670 - ldr r0, _0232E678 ; =0x02352AE8 - mov ip, #0 - ldr r2, [r0] - str ip, [sp] - mov r0, r4 - mov r1, r4 - mov r3, #2 - str ip, [sp, #4] - bl LowerOffensiveStat - mov r0, #1 -_0232E670: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0232E678: .word 0x02352AE8 - arm_func_end ov29_0232E624 - - arm_func_start ov29_0232E67C -ov29_0232E67C: ; 0x0232E67C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - str r3, [sp] - mov r3, #0x100 - mov r4, r0 - bl DealDamage - cmp r0, #0 - moveq r0, #0 - beq _0232E6D4 - ldrsh r0, [sp, #0x10] - cmp r0, #0 - bne _0232E6D0 - ldr r0, _0232E6DC ; =0x02352AE8 - mov ip, #0 - ldr r2, [r0] - str ip, [sp] - mov r0, r4 - mov r1, r4 - mov r3, #2 - str ip, [sp, #4] - bl LowerOffensiveStat -_0232E6D0: - mov r0, #1 -_0232E6D4: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0232E6DC: .word 0x02352AE8 - arm_func_end ov29_0232E67C - - arm_func_start ov29_0232E6E0 -ov29_0232E6E0: ; 0x0232E6E0 - stmdb sp!, {r3, r4, r5, lr} - mov r2, #0 - mov r5, r0 - mov r4, r1 - mov r3, r2 - bl BoostSpeedOneStage - mov r0, r5 - mov r1, r4 - mov r2, #0 - mov r3, #1 - bl BoostSpeedOneStage - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0232E6E0 - - arm_func_start ov29_0232E714 -ov29_0232E714: ; 0x0232E714 - stmdb sp!, {r3, lr} - ldr r2, _0232E730 ; =0x02352AE8 - mov r3, #2 - ldr r2, [r2] - bl BoostOffensiveStat - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232E730: .word 0x02352AE8 - arm_func_end ov29_0232E714 - - arm_func_start ov29_0232E734 -ov29_0232E734: ; 0x0232E734 - stmdb sp!, {r3, lr} - bl ov29_02314E60 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end ov29_0232E734 - - arm_func_start ov29_0232E744 -ov29_0232E744: ; 0x0232E744 - ldr ip, _0232E74C ; =ov29_0232CA70 - bx ip - .align 2, 0 -_0232E74C: .word ov29_0232CA70 - arm_func_end ov29_0232E744 - - arm_func_start ov29_0232E750 -ov29_0232E750: ; 0x0232E750 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - mov r0, #1 - bl ov29_0234AFFC - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov29_0232C578 - mov r4, r0 - mov r0, #0 - bl ov29_0234AFFC - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0232E750 - - arm_func_start ov29_0232E794 -ov29_0232E794: ; 0x0232E794 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #1 - bl ov29_0234AFFC - mov r0, r5 - mov r1, r4 - mov r2, #1 - mov r3, #0 - bl ov29_02305C28 - ldr r2, _0232E808 ; =0x000003E7 - mov r0, r5 - mov r1, r4 - bl ov29_0231526C - mov r0, r5 - mov r1, r4 - ldr r2, _0232E808 ; =0x000003E7 - mov r3, #1 - bl RestoreMovePP - ldr r1, [r4, #0xb4] - mov r0, #0 - add r1, r1, #0x100 - ldrh r2, [r1, #0x4a] - strh r2, [r1, #0x46] - ldrh r2, [r1, #0x4c] - strh r2, [r1, #0x48] - bl ov29_0234AFFC - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0232E808: .word 0x000003E7 - arm_func_end ov29_0232E794 - - arm_func_start ov29_0232E80C -ov29_0232E80C: ; 0x0232E80C - stmdb sp!, {r3, lr} - ldr r0, _0232E83C ; =0x02353718 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrne r0, _0232E83C ; =0x02353718 - ldrne r0, [r0] - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0232E83C: .word 0x02353718 - arm_func_end ov29_0232E80C - - arm_func_start EntityIsValid__0232E840 -EntityIsValid__0232E840: ; 0x0232E840 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0232E840 - - arm_func_start ExecuteMoveEffect -ExecuteMoveEffect: ; 0x0232E864 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xf0 - ldr fp, _0232F7AC ; =0x022C45F8 - str r0, [sp, #0x14] - ldrsh r0, [fp] - ldr r5, _0232F7B0 ; =0x02352AE8 - ldr sl, _0232F7B4 ; =0x022C483C - ldr r7, [r5] - str r0, [sp, #0x34] - ldr r0, [sl] - ldr r4, _0232F7B8 ; =0x02352AEC - mov r8, r2 - ldr r6, [r4] - mov r2, #0 - str r2, [sp, #0x78] - str r6, [sp, #0xa0] - ldr r5, _0232F7BC ; =0x022C4468 - str r0, [sp, #0x30] - ldrsh r0, [r5] - ldr r4, _0232F7C0 ; =0x022C460C - ldrh r6, [r8, #4] - str r0, [sp, #0x2c] - ldrsh r0, [r4] - ldr r2, _0232F7C4 ; =0x022C4480 - ldr ip, _0232F7C8 ; =0x022C4614 - str r0, [sp, #0x28] - ldrsh r0, [r2] - ldr lr, _0232F7CC ; =0x022C4508 - mov sb, r1 - str r0, [sp, #0x24] - ldrsh r0, [ip] - str r7, [sp, #0x9c] - ldr r1, _0232F7D0 ; =0x02353718 - str r0, [sp, #0x20] - ldrsh r0, [lr] - mov r7, r3 - str r0, [sp, #0x1c] - ldr r0, _0232F7D4 ; =0x022C4504 - ldrsh r0, [r0] - str r0, [sp, #0x18] - mov r0, #1 - str r0, [sp, #0x80] - ldr r0, [sp, #0x78] - str r0, [sp, #0x74] - ldr r0, [sp, #0x78] - str r0, [sp, #0x70] - ldr r0, [sp, #0x78] - str r0, [sp, #0x7c] - str r0, [r1] - b _02332824 -_0232E92C: - mov r0, #0 - str r0, [sp, #0x6c] - ldr r1, [sp, #0x14] - ldr r0, [sp, #0x7c] - mov fp, #1 - ldr r4, [r1, r0, lsl #2] - ldr r0, [sp, #0x6c] - cmp r4, #0 - str r0, [sp, #0x68] - str r0, [sp, #0x64] - str r0, [sp, #0x60] - str r0, [sp, #0x5c] - str r0, [sp, #0x58] - beq _02332830 - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _02332830 - mov r0, r4 - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _02332818 - mov r0, #0 - str r0, [sp, #0x80] - ldr sl, [r4, #0xb4] - cmp sb, r4 - str r0, [sp, #0x38] - strb r0, [sl, #0x164] - bne _0232E9B0 - mov r0, r6 - bl IsHealingWishOrLunarDance - cmp r0, #0 - bne _02332818 -_0232E9B0: - mov r0, #0 - mov r1, sb - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r0, r6 - bl CanBeSnatched - cmp r0, #0 - ldrne r0, _0232F7D8 ; =0x02353538 - ldrne r0, [r0] - addne r0, r0, #0x19000 - ldrne r5, [r0, #0x904] - cmpne r5, #0 - beq _0232EA2C - ldr r1, [r5] - cmp r1, #1 - bne _0232EE54 - cmp r5, sb - beq _0232EE54 - ldr r1, [r0, #0x90c] - ldr r0, [r5, #0xb4] - ldr r0, [r0, #0xb0] - cmp r1, r0 - ldreqb r0, [sl, #0x10b] - cmpeq r0, #0 - bne _0232EE54 - mov r0, sb - mov r1, r4 - ldr r2, _0232F7DC ; =0x00000EAB - bl LogMessageByIdWithPopupCheckUserTarget - mov r4, r5 - b _0232EE54 -_0232EA2C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, #0 - bl LightningRodStormDrainCheck - movs r5, r0 - beq _0232EA6C - bl ov29_022E6338 - ldr r2, _0232F7E0 ; =0x00000EAC - mov r0, sb - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - mov r4, r5 - str r0, [sp, #0x68] - b _0232EE54 -_0232EA6C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, #1 - bl LightningRodStormDrainCheck - movs r5, r0 - beq _0232EAAC - bl ov29_022E6388 - ldr r2, _0232F7E4 ; =0x00000EAD - mov r0, sb - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, #1 - mov r4, r5 - str r0, [sp, #0x64] - b _0232EE54 -_0232EAAC: - mov r0, r4 - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _0232EAD0 - mov r0, r4 - mov r1, #0x33 - bl HasHeldItem -_0232EAD0: - cmp r0, #0 - bne _0232EAEC - mov r0, r4 - mov r1, #0x2a - bl IqSkillIsEnabled - cmp r0, #0 - beq _0232ED9C -_0232EAEC: - mov r0, r4 - mov r1, #0 - bl ov29_02300DCC - cmp r0, #0 - bne _0232ED9C - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - tst r0, #0xf0 - bne _0232ED9C - add r0, sl, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - ldr r1, [sp, #0x34] - cmp r0, r1 - blt _0232ED9C - ldrb r0, [sl, #0x10b] - cmp r0, #0 - bne _0232EE54 - ldrb r5, [sl, #0x4c] - str r5, [sp, #0x50] - bl ov29_022E0880 - cmp r0, #0 - beq _0232EB78 - mov r0, sb - mov r1, r4 - mov r2, #0xeb0 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232EE54 -_0232EB78: - mov r0, #0 - str r0, [sp, #0x54] - b _0232ED54 -_0232EB84: - ldr r0, [sp, #0x50] - ldrsh r1, [r4, #4] - add r0, r0, #1 - and r0, r0, #7 - str r0, [sp, #0x50] - mov r2, r0, lsl #2 - ldr r0, _0232F7E8 ; =0x0235171C - ldr r3, _0232F7E8 ; =0x0235171C - ldrsh r0, [r0, r2] - ldr r2, [sp, #0x50] - ldrsh ip, [r4, #6] - add r2, r3, r2, lsl #2 - add r0, r1, r0 - ldrsh r1, [r2, #2] - add r1, ip, r1 - bl GetTile - ldr r0, [r0, #0xc] - str r0, [sp, #0x4c] - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _0232ED48 - ldr r0, [sp, #0x4c] - ldr r0, [r0] - cmp r0, #1 - bne _0232ED48 - ldrb r0, [sl, #6] - cmp r0, #0 - bne _0232EC0C - bne _0232ED48 - ldr r0, [sp, #0x4c] - ldr r0, [r0, #0xb4] - ldrb r0, [r0, #9] - cmp r0, #1 - beq _0232ED48 -_0232EC0C: - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0232ECA0 - mov r0, #0 - str r0, [sp, #0x48] -_0232EC24: - mov r0, r4 - mov r1, r5 - bl ov29_02304A48 - mov r0, #2 - mov r1, #0x43 - bl ov29_022EA370 - add r0, r5, #1 - and r5, r0, #7 - ldr r0, [sp, #0x48] - add r0, r0, #1 - str r0, [sp, #0x48] - cmp r0, #0x18 - blt _0232EC24 - b _0232EC7C -_0232EC5C: - mov r0, r4 - mov r1, r5 - bl ov29_02304A48 - mov r0, #2 - mov r1, #0x43 - bl ov29_022EA370 - add r0, r5, #1 - and r5, r0, #7 -_0232EC7C: - ldr r0, [sp, #0x50] - cmp r5, r0 - bne _0232EC5C - mov r1, r5 - mov r0, r4 - bl ov29_02304A48 - mov r0, #2 - mov r1, #0x43 - bl ov29_022EA370 -_0232ECA0: - ldr r0, [sp, #0x34] - bl sub_02050FF8 - strh r0, [sp, #0x98] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x9a] - add r0, sl, #0x100 - ldrh r5, [r0, #0x46] - sub r1, sp, #4 - ldrh r3, [sp, #0x98] - strh r5, [r1] - ldrh r0, [r0, #0x48] - ldrh r2, [sp, #0x9a] - strh r0, [r1, #2] - ldr r0, [r1] - strh r3, [r1] - strh r2, [r1, #2] - ldr r1, [r1] - bl SubFixedPoint - strh r0, [sp, #0x94] - mov r0, r0, lsr #0x10 - strh r0, [sp, #0x96] - ldrh r3, [sp, #0x94] - add r1, sl, #0x100 - ldrh r2, [sp, #0x96] - strh r3, [r1, #0x46] - ldr r0, _0232F7EC ; =0x00000163 - strh r2, [r1, #0x48] - ldrh r1, [r8, #4] - cmp r1, r0 - mov r0, sb - mov r1, r4 - bne _0232ED2C - ldr r2, _0232F7F0 ; =0x00000EB1 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232ED34 -_0232ED2C: - ldr r2, _0232F7F4 ; =0x00000EAE - bl LogMessageByIdWithPopupCheckUserTarget -_0232ED34: - str r4, [sp, #0x6c] - ldr r0, [sp, #0x6c] - ldr r4, [sp, #0x4c] - str r0, [sp, #0x38] - b _0232ED60 -_0232ED48: - ldr r0, [sp, #0x54] - add r0, r0, #1 - str r0, [sp, #0x54] -_0232ED54: - ldr r0, [sp, #0x54] - cmp r0, #8 - blt _0232EB84 -_0232ED60: - ldr r0, [sp, #0x54] - cmp r0, #8 - bne _0232EE54 - ldrh r1, [r8, #4] - ldr r0, _0232F7EC ; =0x00000163 - cmp r1, r0 - mov r0, sb - mov r1, r4 - bne _0232ED90 - ldr r2, _0232F7F8 ; =0x00000EB2 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232EE54 -_0232ED90: - ldr r2, _0232F7FC ; =0x00000EAF - bl LogMessageByIdWithPopupCheckUserTarget - b _0232EE54 -_0232ED9C: - ldr r0, [sp, #0x7c] - cmp r0, #0 - bne _0232EE54 - mov r0, r4 - bl HasLowHealth - cmp r0, #0 - beq _0232EE54 - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - ands r0, r0, #0xf0 - cmpne r0, #0x40 - cmpne r0, #0x50 - cmpne r0, #0x80 - cmpne r0, #0x90 - bne _0232EE54 - mov r0, r4 - mov r1, #0x20 - mov r2, #1 - bl ov29_023381C0 - movs r5, r0 - beq _0232EE54 - bl ov29_02300DC0 - cmp r0, #0 - ldreq r0, [r5, #0xb4] - ldreqb r0, [r0, #0x10b] - cmpeq r0, #0 - bne _0232EE54 - mov sl, r4 - mov r4, r5 - mov r0, r5 - mov r1, #3 - bl ov29_02304C3C - mov r1, sl - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, #2 - mov r1, r5 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r1, r5 - mov r0, sb - mov r2, #0xec0 - bl LogMessageByIdWithPopupCheckUserTarget -_0232EE54: - ldr r1, _0232F800 ; =0x0237CA80 - ldr r0, _0232F804 ; =0x0237CA74 - ldr r3, [r1] - ldr r2, [r0] - add r3, r3, #1 - str r3, [r1] - add r1, r2, #1 - str r1, [r0] - ldr r5, [r4, #0xb4] - mov r0, #0 - strb r0, [r5, #0x164] - ldrb r0, [r5, #6] - cmp r0, #0 - ldrneh r1, [sb, #4] - addne r0, r5, #0x100 - strneh r1, [r0, #0x7e] - ldrneh r1, [sb, #6] - strneh r1, [r0, #0x80] - mov r0, r4 - bl ov29_022F9840 - mov r0, sb - mov r1, r4 - bl ov29_02307BDC - ldr r0, [sp, #0x7c] - cmp r0, #0 - ldreq r0, _0232F7EC ; =0x00000163 - cmpeq r6, r0 - bne _0232EF48 - mov r0, sb - mov r1, #0x56 - bl AbilityIsActive2 - cmp r0, #0 - beq _0232EF28 - mov r0, sb - mov r1, r4 - mov r2, #1 - bl ov29_022FB10C - cmp r0, #0 - bne _0232EF00 - mov r0, r4 - bl ov29_022FB1A8 - cmp r0, #0 - beq _0232EF28 -_0232EF00: - mov r0, sb - bl ov29_022E4110 - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, sb - mov r1, r4 - ldr r2, _0232F808 ; =0x00000EB3 - bl LogMessageByIdWithPopupCheckUserTarget -_0232EF28: - mov r0, sb - mov r1, #0x52 - bl AbilityIsActive2 - cmp r0, #0 - beq _0232EF48 - mov r0, sb - mov r1, r4 - bl ov29_0231B0A4 -_0232EF48: - mov r0, sb - mov r1, r8 - bl ov29_023245A4 - cmp r0, #0 - bne _0232EF74 - ldrh r1, [r8, #4] - mov r0, sb - bl ov29_02324D60 - cmp r0, #0 - movne r0, #1 - bne _0232EF78 -_0232EF74: - mov r0, #0 -_0232EF78: - and sl, r0, #0xff - ldr r0, [sp, #0x68] - cmp r0, #0 - ldreq r0, [sp, #0x64] - cmpeq r0, #0 - bne _0232F188 - mov r0, #0 - str r0, [sp, #0x44] - str r0, [sp, #0x40] - ldrb r0, [r5, #0xd5] - cmp r0, #5 - moveq r0, #1 - streq r0, [sp, #0x44] - beq _0232EFDC - mov r0, r4 - mov r1, #0x21 - bl ExclusiveItemEffectIsActive__023329E8 - cmp r0, #0 - beq _0232EFDC - ldr r0, [sp, #0x30] - bl DungeonRandOutcome__022EAB20 - str r0, [sp, #0x40] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x44] -_0232EFDC: - ldr r0, [sp, #0x44] - cmp r0, #0 - beq _0232F090 - mov r0, r6 - bl IsReflectedByMagicCoat - cmp r0, #0 - beq _0232F188 - mov r0, sb - mov r1, r4 - bl ov29_02332FC8 - cmp r0, #0 - beq _0232F188 - ldr r0, [sp, #0x40] - cmp r0, #0 - beq _0232F050 - mov r0, r4 - mov r1, #0x21 - add r2, sp, #0xac - bl ov29_0230F654 - cmp r0, #0 - beq _0232F060 - mov r0, #0 - add r1, sp, #0xac - bl ov29_02344B44 - ldr r2, _0232F80C ; =0x00000EB5 - mov r0, sb - mov r1, r4 - bl LogMessageByIdWithPopupCheckUserTarget - b _0232F060 -_0232F050: - mov r0, sb - mov r1, r4 - ldr r2, _0232F810 ; =0x00000EB4 - bl LogMessageByIdWithPopupCheckUserTarget -_0232F060: - mov r0, r4 - bl ov29_022E3FCC - mov r0, r4 - mov r1, sb - bl ov29_02333044 - ldr r5, [sb, #0xb4] - mov r0, #0 - strb r0, [r5, #0x164] - mov r0, #1 - mov r4, sb - str r0, [sp, #0x60] - b _0232F188 -_0232F090: - mov r0, r4 - bl ov29_02319748 - str r0, [sp, #0x3c] - cmp r0, #0 - beq _0232F188 - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - str r0, [sp, #0x84] - ldr r0, _0232F7EC ; =0x00000163 - cmp r6, r0 - addne r0, r0, #0x32 - cmpne r6, r0 - beq _0232F188 - cmp sl, #0 - bne _0232F188 - mov r0, r4 - mov r1, #1 - bl ov29_0232461C - cmp r0, #0 - bne _0232F188 - ldr r0, [sp, #0x84] - ands r0, r0, #0xf - cmpne r0, #4 - cmpne r0, #5 - cmpne r0, #2 - bne _0232F188 - mov r0, sb - mov r1, r4 - bl ov29_02332FC8 - cmp r0, #0 - beq _0232F188 - mov r0, r4 - bl ov29_02300D50 - cmp r0, #0 - bne _0232F188 - ldr r0, [sp, #0x3c] - str r4, [sp, #0x38] - cmp r0, #2 - mov r0, sb - mov r1, r4 - bne _0232F14C - ldr r2, _0232F814 ; =0x00000EB7 - mov r3, #0x25 - bl ov29_02314DC4 - b _0232F154 -_0232F14C: - ldr r2, _0232F818 ; =0x00000EB6 - bl LogMessageByIdWithPopupCheckUserTarget -_0232F154: - mov r0, r4 - bl ov29_022E4110 - mov r0, r4 - mov r1, sb - bl ov29_02333044 - ldr r5, [sb, #0xb4] - mov r0, #0 - strb r0, [r5, #0x164] - mov r0, #1 - mov r4, sb - cmp r6, #0x42 - ldreq r4, [sp, #0x38] - str r0, [sp, #0x60] -_0232F188: - ldr r0, [sp, #0x68] - cmp r0, #0 - ldreq r0, [sp, #0x64] - cmpeq r0, #0 - ldreqb r0, [r5, #0xd5] - cmpeq r0, #7 - bne _0232F204 - cmp r6, #0x204 - ldrne r0, _0232F81C ; =0x000001DD - cmpne r6, r0 - beq _0232F204 - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - ands r0, r0, #0xf - cmpne r0, #4 - cmpne r0, #5 - cmpne r0, #2 - bne _0232F204 - cmp sl, #0 - bne _0232F204 - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, sb - mov r1, r4 - ldr r2, _0232F820 ; =0x00000EB8 - bl LogMessageByIdWithPopupCheckUserTarget - mov fp, #0 -_0232F204: - mov r0, r4 - mov r1, r8 - bl ov29_02324854 - cmp r0, #0 - movne fp, #0 - cmp fp, #0 - beq _0232F270 - mov r0, sb - mov r1, r4 - mov r2, #0x3c - mov r3, #1 - bl DefenderAbilityIsActive__02332A0C - cmp r0, #0 - beq _0232F270 - mov r0, r8 - bl IsSoundMove - cmp r0, #0 - beq _0232F270 - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, sb - mov r1, r4 - ldr r2, _0232F824 ; =0x00000EB9 - bl LogMessageByIdWithPopupCheckUserTarget - mov fp, #0 -_0232F270: - cmp fp, #0 - beq _0232F350 - ldr r0, [sp, #0x60] - ldrh r1, [r8, #4] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and sl, r0, #0xff - cmp r1, #0x68 - ldrne r0, _0232F828 ; =0x00000131 - mov r2, #0x79 - cmpne r1, r0 - subne r0, r0, #4 - cmpne r1, r0 - mov r0, sb - mov r1, r4 - mov r3, #1 - moveq sl, #0 - bl DefenderAbilityIsActive__02332A0C - cmp r0, #0 - beq _0232F2F0 - mov r0, sb - mov r1, r8 - bl ov29_0231AD38 - cmp r0, #0 - bne _0232F2F0 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, [sp, #0x2c] - cmp r0, r1 - movlt r0, #1 - strlt r0, [sp, #0x5c] -_0232F2F0: - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _0232F330 - mov r0, #1 - mov r1, r4 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, #0x79 - str r0, [sp] - mov r0, sb - mov r1, r4 - ldr r2, _0232F82C ; =0x00000EBA - mov r3, #2 - bl ov29_0234B250 - mov fp, #0 - b _0232F350 -_0232F330: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, #0 - str sl, [sp] - bl MoveHitCheck - cmp r0, #0 - moveq fp, #0 -_0232F350: - cmp fp, #0 - beq _0232F370 - ldr r0, [sp, #0x68] - cmp r0, #0 - ldr r0, [sp, #0x64] - movne fp, #0 - cmp r0, #0 - movne fp, #0 -_0232F370: - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0232F40C - mov r0, #4 - mov r1, #0x4a - bl ov29_022EA370 - ldrh r0, [r8, #4] - bl ov10_022BFD6C - cmp r0, #0 - beq _0232F3B0 - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_023258EC - b _0232F40C -_0232F3B0: - ldrh r0, [r8, #4] - cmp r0, #0xad - bne _0232F3C4 - mov r0, #1 - bl ov29_022E38E0 -_0232F3C4: - ldr r0, [sp, #0x38] - cmp r0, #0 - beq _0232F3F8 - ldrh r0, [r8, #4] - cmp r0, #0x1f4 - cmpne r0, #0x50 - bne _0232F3F8 - ldr r1, [sp, #0x38] - mov r0, sb - mov r2, r8 - mov r3, #0 - bl ov29_023256B4 - b _0232F40C -_0232F3F8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, #0 - bl ov29_023256B4 -_0232F40C: - ldr r0, _0232F830 ; =0x000001F6 - cmp r6, r0 - bne _0232F498 - mov r3, r8 - add r2, sp, #0xa4 - mov r1, #4 -_0232F424: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0232F424 - ldr r0, [sp, #0x60] - mov sl, #1 - cmp r0, #0 - ldr r0, _0232F834 ; =0x00000232 - strh r0, [sp, #0xa8] - beq _0232F468 - mov r3, #0 - mov r0, sb - mov r1, r4 - add r2, sp, #0xa4 - str r3, [sp] - bl ov29_0232393C - b _0232F498 -_0232F468: - mov r0, sb - mov r1, r4 - bl ov29_022FB678 - cmp r0, #0 - moveq sl, #2 - mov r0, #0 - str r0, [sp] - mov r3, sl - mov r0, sb - mov r1, r4 - add r2, sp, #0xa4 - bl ov29_0232393C -_0232F498: - cmp fp, #0 - bne _0232F62C - ldrh r0, [r8, #4] - ldr r2, [sb, #0xb4] - cmp r0, #2 - cmpne r0, #0x69 - ldreq r0, _0232F838 ; =0x0237CA69 - moveq r1, #1 - streqb r1, [r0] - ldrh r1, [r8, #4] - ldr r0, _0232F7EC ; =0x00000163 - cmp r1, r0 - movne r0, #1 - strneb r0, [r2, #0x166] - ldrb r0, [r2, #7] - cmp r0, #0 - mov r0, sb - beq _0232F4EC - ldr r1, _0232F83C ; =0x00001307 - bl ov29_022E56A0 - b _0232F4F4 -_0232F4EC: - ldr r1, _0232F840 ; =0x00001306 - bl ov29_022E56A0 -_0232F4F4: - bl ov29_0234B034 - mov r3, #0 - str r3, [sp] - ldr r2, [r4, #0xb4] - mov r1, #1 - bl ov29_0230040C - cmp sb, r4 - mov r0, sb - mov r1, r4 - bne _0232F528 - ldr r2, _0232F844 ; =0x00000EBC - bl LogMessageByIdWithPopupCheckUserTarget - b _0232F598 -_0232F528: - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #0 - bne _0232F550 - mov r0, sb - mov r1, r4 - ldr r2, _0232F848 ; =0x00000EBD - bl LogMessageByIdWithPopupCheckUserTarget - b _0232F598 -_0232F550: - ldr r0, [sp, #0x68] - cmp r0, #0 - beq _0232F570 - mov r0, sb - mov r1, r4 - ldr r2, _0232F84C ; =0x00000EBE - bl LogMessageByIdWithPopupCheckUserTarget - b _0232F598 -_0232F570: - ldr r0, [sp, #0x64] - mov r1, r4 - cmp r0, #0 - mov r0, sb - beq _0232F590 - ldr r2, _0232F850 ; =0x00000EBF - bl LogMessageByIdWithPopupCheckUserTarget - b _0232F598 -_0232F590: - ldr r2, _0232F854 ; =0x00000EBB - bl LogMessageByIdWithPopupCheckUserTarget -_0232F598: - mov r0, r4 - bl ov29_022E272C - cmp r0, #0 - beq _0232F5BC - ldr r0, _0232F858 ; =0x0000270F - mov r1, r4 - mov r2, #1 - sub r3, r2, #2 - bl ov29_022EA718 -_0232F5BC: - cmp r6, #0xcc - beq _0232F5EC - cmp r6, #0xce - bne _0232F608 - mov r1, r4 - mov r0, #1 - str r0, [sp] - mov r0, sb - mov r2, r8 - mov r3, r7 - bl ov29_02329B68 - b _0232F608 -_0232F5EC: - mov r1, r4 - mov r0, #1 - str r0, [sp] - mov r0, sb - mov r2, r8 - mov r3, r7 - bl ov29_02329970 -_0232F608: - ldr r0, [sp, #0x70] - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x70] - bl IsFloorOver - cmp r0, #0 - bne _02332830 - b _02332818 -_0232F62C: - mov sl, #1 - ldrb fp, [r5, #0x108] - ldrb r0, [r5, #6] - cmp r0, #0 - beq _0232F670 - ldrh r1, [r8, #4] - rsb r0, sl, #0x164 - cmp r1, r0 - beq _0232F660 - cmp r7, #0 - bne _0232F660 - cmp fp, #1 - strlob sl, [r5, #0x108] -_0232F660: - ldr r0, [sp, #0x118] - cmp r0, #1 - moveq r0, #2 - streqb r0, [r5, #0x108] -_0232F670: - ldrb r0, [r5, #0x177] - cmp r0, #0xff - bne _0232F6A0 - mov r0, r4 - mov r1, #0xe3 - bl ov29_02301C2C - cmp r0, #0 - beq _0232F6A0 - add r0, r4, #4 - add r1, sb, #4 - bl GetDirectionTowardsPosition - strb r0, [r5, #0x177] -_0232F6A0: - ldrb r0, [r5, #0x178] - cmp r0, #0xff - bne _0232F6D0 - mov r0, r4 - mov r1, #0x19 - bl ov29_02301C2C - cmp r0, #0 - beq _0232F6D0 - add r0, r4, #4 - add r1, sb, #4 - bl GetDirectionTowardsPosition - strb r0, [r5, #0x178] -_0232F6D0: - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf - cmp r0, #4 - ldrne r2, [sb, #0xb4] - ldrneh r1, [r8, #4] - ldrneh r0, [r2, #0xac] - cmpne r1, r0 - beq _0232F708 - ldrb r0, [r2, #0x23f] - cmp r0, #0 - beq _0232F70C -_0232F708: - mov sl, #0 -_0232F70C: - cmp sl, #0 - beq _0232F87C - mov r0, sb - mov r1, r4 - mov r2, #0x39 - mov r3, #1 - bl DefenderAbilityIsActive__02332A0C - cmp r0, #0 - beq _0232F87C - mov r0, sb - mov r1, r4 - mov r2, #1 - mov r3, #0 - bl ov29_0230175C - cmp r0, #1 - bne _0232F87C - ldrh r1, [r8, #4] - ldr r0, _0232F7EC ; =0x00000163 - cmp r1, r0 - cmpne r1, #0x160 - beq _0232F87C - cmp r7, #0 - bne _0232F87C - ldrb r0, [r8, #6] - cmp r0, #0 - beq _0232F87C - mov r0, r4 - mov r1, #0x58 - bl ExclusiveItemEffectIsActive__023329E8 - cmp r0, #0 - ldrh r0, [r8, #2] - beq _0232F860 - tst r0, #0x40 - bne _0232F79C - mov r0, sb - bl ov29_022E6424 -_0232F79C: - ldrh r0, [r8, #2] - orr r0, r0, #0x40 - strh r0, [r8, #2] - b _0232F87C - .align 2, 0 -_0232F7AC: .word 0x022C45F8 -_0232F7B0: .word 0x02352AE8 -_0232F7B4: .word 0x022C483C -_0232F7B8: .word 0x02352AEC -_0232F7BC: .word 0x022C4468 -_0232F7C0: .word 0x022C460C -_0232F7C4: .word 0x022C4480 -_0232F7C8: .word 0x022C4614 -_0232F7CC: .word 0x022C4508 -_0232F7D0: .word 0x02353718 -_0232F7D4: .word 0x022C4504 -_0232F7D8: .word 0x02353538 -_0232F7DC: .word 0x00000EAB -_0232F7E0: .word 0x00000EAC -_0232F7E4: .word 0x00000EAD -_0232F7E8: .word 0x0235171C -_0232F7EC: .word 0x00000163 -_0232F7F0: .word 0x00000EB1 -_0232F7F4: .word 0x00000EAE -_0232F7F8: .word 0x00000EB2 -_0232F7FC: .word 0x00000EAF -_0232F800: .word 0x0237CA80 -_0232F804: .word 0x0237CA74 -_0232F808: .word 0x00000EB3 -_0232F80C: .word 0x00000EB5 -_0232F810: .word 0x00000EB4 -_0232F814: .word 0x00000EB7 -_0232F818: .word 0x00000EB6 -_0232F81C: .word 0x000001DD -_0232F820: .word 0x00000EB8 -_0232F824: .word 0x00000EB9 -_0232F828: .word 0x00000131 -_0232F82C: .word 0x00000EBA -_0232F830: .word 0x000001F6 -_0232F834: .word 0x00000232 -_0232F838: .word 0x0237CA69 -_0232F83C: .word 0x00001307 -_0232F840: .word 0x00001306 -_0232F844: .word 0x00000EBC -_0232F848: .word 0x00000EBD -_0232F84C: .word 0x00000EBE -_0232F850: .word 0x00000EBF -_0232F854: .word 0x00000EBB -_0232F858: .word 0x0000270F -_0232F85C: .word 0x0000021E -_0232F860: - tst r0, #0x10 - bne _0232F870 - mov r0, sb - bl ov29_022E6424 -_0232F870: - ldrh r0, [r8, #2] - orr r0, r0, #0x10 - strh r0, [r8, #2] -_0232F87C: - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - tst r0, #0xf - bne _0232F8A0 - mov r0, sb - mov r1, r4 - bl ov29_0230D440 -_0232F8A0: - ldr r0, _0232F85C ; =0x0000021E - mov r1, #1 - strb r1, [r5, #0x162] - cmp r6, r0 - addls pc, pc, r6, lsl #2 - b _023326C8 -_0232F8B8: ; jump table - b _023301E8 ; case 0 - b _02331300 ; case 1 - b _02330FE8 ; case 2 - b _02330990 ; case 3 - b _02330974 ; case 4 - b _02331290 ; case 5 - b _023312AC ; case 6 - b _023316F0 ; case 7 - b _02331760 ; case 8 - b _02330134 ; case 9 - b _0233177C ; case 10 - b _02331C70 ; case 11 - b _02331AB0 ; case 12 - b _02330A00 ; case 13 - b _02331CFC ; case 14 - b _023313C4 ; case 15 - b _02331C8C ; case 16 - b _02331B74 ; case 17 - b _02330134 ; case 18 - b _02330BC0 ; case 19 - b _02331568 ; case 20 - b _02330B18 ; case 21 - b _0233154C ; case 22 - b _02331CA8 ; case 23 - b _02330E28 ; case 24 - b _02331FDC ; case 25 - b _023313C4 ; case 26 - b _02330D64 ; case 27 - b _02330134 ; case 28 - b _02331CC4 ; case 29 - b _023307EC ; case 30 - b _02331B90 ; case 31 - b _02330484 ; case 32 - b _02330AE0 ; case 33 - b _02330974 ; case 34 - b _02331ACC ; case 35 - b _0233037C ; case 36 - b _02331A24 ; case 37 - b _02331138 ; case 38 - b _02330134 ; case 39 - b _02331EC4 ; case 40 - b _023314F8 ; case 41 - b _02330CD8 ; case 42 - b _02331004 ; case 43 - b _02330CBC ; case 44 - b _023314A4 ; case 45 - b _023307EC ; case 46 - b _02331338 ; case 47 - b _02331F50 ; case 48 - b _02331824 ; case 49 - b _023320D8 ; case 50 - b _02331138 ; case 51 - b _023302F0 ; case 52 - b _0233030C ; case 53 - b _02331D34 ; case 54 - b _02330BA4 ; case 55 - b _02331798 ; case 56 - b _023302B8 ; case 57 - b _023316B8 ; case 58 - b _023308CC ; case 59 - b _0233123C ; case 60 - b _02331154 ; case 61 - b _02330808 ; case 62 - b _023307B4 ; case 63 - b _02330958 ; case 64 - b _02330958 ; case 65 - b _023315BC ; case 66 - b ov29_023319B4 ; case 67 - b _0233037C ; case 68 - b ov29_02330468 ; case 69 - b _023316B8 ; case 70 - b ov29_02330680 ; case 71 - b ov29_0233169C ; case 72 - b ov29_02330AA8 ; case 73 - b ov29_02330360 ; case 74 - b ov29_02331258 ; case 75 - b ov29_02330DB8 ; case 76 - b ov29_02331944 ; case 77 - b ov29_02331434 ; case 78 - b _02330974 ; case 79 - b ov29_02330DB8 ; case 80 - b _0233037C ; case 81 - b ov29_0233069C ; case 82 - b ov29_02331530 ; case 83 - b _02330974 ; case 84 - b ov29_02331928 ; case 85 - b ov29_023304BC ; case 86 - b _0233037C ; case 87 - b ov29_023313E0 ; case 88 - b ov29_023304BC ; case 89 - b _0233037C ; case 90 - b ov29_02330ED0 ; case 91 - b ov29_023319D0 ; case 92 - b ov29_0233069C ; case 93 - b ov01_0233103C ; case 94 - b ov29_0233111C ; case 95 - b ov29_02331B3C ; case 96 - b ov29_02330AA8 ; case 97 - b ov29_023316D4 ; case 98 - b ov29_02330C84 ; case 99 - b ov29_02330E98 ; case 100 - b ov29_02330328 ; case 101 - b ov29_023318B0 ; case 102 - b ov29_02330878 ; case 103 - b ov29_02331C00 ; case 104 - b _02330FE8 ; case 105 - b ov29_02330D10 ; case 106 - b ov29_023306B8 ; case 107 - b ov29_02331370 ; case 108 - b ov29_023304F4 ; case 109 - b ov29_02330CF4 ; case 110 - b _02330974 ; case 111 - b ov29_02330F08 ; case 112 - b ov29_023319EC ; case 113 - b ov29_023306B8 ; case 114 - b ov29_02331FC0 ; case 115 - b ov29_02330DF0 ; case 116 - b ov29_02331090 ; case 117 - b ov29_0233029C ; case 118 - b ov29_02331E68 ; case 119 - b ov29_0233077C ; case 120 - b ov29_02331944 ; case 121 - b ov29_0233131C ; case 122 - b ov29_02331960 ; case 123 - b ov29_0233093C ; case 124 - b ov29_02330468 ; case 125 - b _02330134 ; case 126 - b ov29_02330824 ; case 127 - b ov29_02331998 ; case 128 - b ov29_023309AC ; case 129 - b ov29_02330FB0 ; case 130 - b ov29_02330414 ; case 131 - b _02330134 ; case 132 - b ov29_02330798 ; case 133 - b ov29_02330F94 ; case 134 - b ov29_02330E0C ; case 135 - b _02330134 ; case 136 - b ov29_02331EFC ; case 137 - b ov29_02331EA0 ; case 138 - b ov29_023307D0 ; case 139 - b ov29_02330DD4 ; case 140 - b ov29_02330F78 ; case 141 - b ov29_023314DC ; case 142 - b ov29_02330468 ; case 143 - b ov29_0233077C ; case 144 - b _02330134 ; case 145 - b ov29_023314DC ; case 146 - b ov29_02330728 ; case 147 - b ov29_02330C14 ; case 148 - b ov29_02330744 ; case 149 - b ov29_02330430 ; case 150 - b ov29_02330E7C ; case 151 - b ov29_02330904 ; case 152 - b ov29_0233170C ; case 153 - b _02330134 ; case 154 - b ov29_0233197C ; case 155 - b ov29_02331744 ; case 156 - b _0233030C ; case 157 - b ov29_02330280 ; case 158 - b ov29_02330CA0 ; case 159 - b ov29_02331A5C ; case 160 - b _02330134 ; case 161 - b ov29_02330664 ; case 162 - b _02330134 ; case 163 - b ov29_02330E60 ; case 164 - b ov29_02331020 ; case 165 - b _02330134 ; case 166 - b _02330134 ; case 167 - b _02330134 ; case 168 - b ov29_02330B50 ; case 169 - b ov29_02330D80 ; case 170 - b _02330A00 ; case 171 - b ov29_0233190C ; case 172 - b ov29_02331058 ; case 173 - b _02330134 ; case 174 - b _02330134 ; case 175 - b _02330134 ; case 176 - b ov29_023309E4 ; case 177 - b _02330134 ; case 178 - b _02330134 ; case 179 - b _02330134 ; case 180 - b ov29_02330BDC ; case 181 - b _02330134 ; case 182 - b ov29_02331F18 ; case 183 - b ov29_02332068 ; case 184 - b ov29_02331C1C ; case 185 - b ov29_02330C68 ; case 186 - b ov29_02331648 ; case 187 - b ov29_02330760 ; case 188 - b _02330134 ; case 189 - b _02330134 ; case 190 - b _02330A00 ; case 191 - b ov29_02330A38 ; case 192 - b ov29_02330A70 ; case 193 - b ov29_023309C8 ; case 194 - b _02330BA4 ; case 195 - b ov29_02330A1C ; case 196 - b ov29_02331514 ; case 197 - b ov29_02330F24 ; case 198 - b ov29_02330A1C ; case 199 - b ov29_023304D8 ; case 200 - b _02330134 ; case 201 - b ov29_02330C68 ; case 202 - b ov29_02330DF0 ; case 203 - b ov29_023318CC ; case 204 - b ov29_02331728 ; case 205 - b ov29_023311E0 ; case 206 - b ov29_0233085C ; case 207 - b _02330134 ; case 208 - b ov29_023310C8 ; case 209 - b ov29_02330E44 ; case 210 - b _02330134 ; case 211 - b ov29_023312E4 ; case 212 - b ov29_023314C0 ; case 213 - b ov29_02331100 ; case 214 - b ov29_02330C30 ; case 215 - b ov29_02330D9C ; case 216 - b ov29_02330D2C ; case 217 - b ov29_02331090 ; case 218 - b ov29_023304A0 ; case 219 - b ov29_02331EE0 ; case 220 - b _023307B4 ; case 221 - b _02330134 ; case 222 - b ov29_02331BAC ; case 223 - b ov29_0233131C ; case 224 - b ov29_02331488 ; case 225 - b ov29_023308E8 ; case 226 - b ov29_023311A8 ; case 227 - b ov29_02331BC8 ; case 228 - b ov29_0233185C ; case 229 - b _0233030C ; case 230 - b _02330974 ; case 231 - b ov29_02331074 ; case 232 - b ov29_02331354 ; case 233 - b ov29_023306B8 ; case 234 - b ov29_0233077C ; case 235 - b ov29_02331A94 ; case 236 - b ov29_023311C4 ; case 237 - b ov29_02330344 ; case 238 - b ov29_02330344 ; case 239 - b _02330134 ; case 240 - b _02330134 ; case 241 - b ov29_02330344 ; case 242 - b ov29_02330A8C ; case 243 - b ov29_02330624 ; case 244 - b ov29_02331A78 ; case 245 - b ov29_02330AC4 ; case 246 - b ov29_02330430 ; case 247 - b _02330134 ; case 248 - b ov29_023317B4 ; case 249 - b _02330134 ; case 250 - b _0233037C ; case 251 - b ov29_023315D8 ; case 252 - b ov29_02330ED0 ; case 253 - b ov29_02331D50 ; case 254 - b ov29_02330680 ; case 255 - b ov29_02331878 ; case 256 - b ov29_02331C38 ; case 257 - b ov29_02330C68 ; case 258 - b ov29_02330FCC ; case 259 - b _02330134 ; case 260 - b ov29_02330798 ; case 261 - b _0233030C ; case 262 - b ov29_02331E4C ; case 263 - b ov29_02330840 ; case 264 - b ov29_02330B88 ; case 265 - b ov29_02331DDC ; case 266 - b ov29_02330D48 ; case 267 - b ov29_02330AFC ; case 268 - b ov29_02331DA4 ; case 269 - b ov29_02330328 ; case 270 - b _023307B4 ; case 271 - b ov29_02331204 ; case 272 - b ov29_023314DC ; case 273 - b _02330A00 ; case 274 - b ov29_0233070C ; case 275 - b ov29_02330894 ; case 276 - b ov29_02330F40 ; case 277 - b ov29_02331A08 ; case 278 - b ov29_023304D8 ; case 279 - b ov29_023304D8 ; case 280 - b ov29_02330A54 ; case 281 - b ov29_02331CE0 ; case 282 - b ov29_02330648 ; case 283 - b ov29_02330AFC ; case 284 - b _02330134 ; case 285 - b ov29_02331F88 ; case 286 - b ov29_02331100 ; case 287 - b ov29_02330B34 ; case 288 - b ov29_02330798 ; case 289 - b _02330134 ; case 290 - b ov29_02330468 ; case 291 - b _0233030C ; case 292 - b ov29_02331B20 ; case 293 - b ov29_02330EEC ; case 294 - b ov29_023313A8 ; case 295 - b ov29_02331450 ; case 296 - b _02330134 ; case 297 - b ov29_02331274 ; case 298 - b ov29_02330AA8 ; case 299 - b _02330134 ; case 300 - b ov29_023318F0 ; case 301 - b ov29_02330C4C ; case 302 - b _023307B4 ; case 303 - b ov29_023318B0 ; case 304 - b ov29_023318F0 ; case 305 - b _02330134 ; case 306 - b ov29_023312E4 ; case 307 - b _02330134 ; case 308 - b ov29_023306D4 ; case 309 - b ov29_02330840 ; case 310 - b _02330134 ; case 311 - b _02330134 ; case 312 - b ov29_02331B58 ; case 313 - b ov29_02331584 ; case 314 - b _02331D34 ; case 315 - b ov29_02331B04 ; case 316 - b ov29_02331878 ; case 317 - b ov29_02331020 ; case 318 - b ov29_02330BF8 ; case 319 - b ov29_02330DB8 ; case 320 - b _02330134 ; case 321 - b _02330134 ; case 322 - b _02330134 ; case 323 - b ov29_02331220 ; case 324 - b ov29_02330600 ; case 325 - b ov29_023308B0 ; case 326 - b ov29_023320BC ; case 327 - b ov29_02331FA4 ; case 328 - b ov29_0233138C ; case 329 - b ov29_02332030 ; case 330 - b ov01_023315F4 ; case 331 - b ov29_023305A4 ; case 332 - b _02330BA4 ; case 333 - b ov29_02331F6C ; case 334 - b ov29_023306F0 ; case 335 - b _0233037C ; case 336 - b ov29_02331FF8 ; case 337 - b ov29_02330F5C ; case 338 - b _023313C4 ; case 339 - b _02331154 ; case 340 - b ov29_02330920 ; case 341 - b ov29_0233077C ; case 342 - b ov29_02330B6C ; case 343 - b ov29_02330328 ; case 344 - b ov29_02330328 ; case 345 - b _02330134 ; case 346 - b _02330134 ; case 347 - b ov29_0233146C ; case 348 - b ov29_023316D4 ; case 349 - b _02330134 ; case 350 - b ov29_02330D10 ; case 351 - b ov29_023302D4 ; case 352 - b _02330134 ; case 353 - b ov29_02330DF0 ; case 354 - b ov29_02330150 ; case 355 - b _023326C8 ; case 356 - b ov29_02331170 ; case 357 - b ov29_02331170 ; case 358 - b ov29_02331170 ; case 359 - b _02330134 ; case 360 - b _02331CC4 ; case 361 - b _02330134 ; case 362 - b ov29_02331A40 ; case 363 - b ov01_023310E4 ; case 364 - b ov29_02331DC0 ; case 365 - b _02330134 ; case 366 - b ov29_023315D8 ; case 367 - b ov29_02330AFC ; case 368 - b ov29_02331648 ; case 369 - b ov29_02331D6C ; case 370 - b ov29_02330EB4 ; case 371 - b ov29_0233111C ; case 372 - b ov29_02331610 ; case 373 - b ov29_02331840 ; case 374 - b ov29_02331D88 ; case 375 - b ov29_02332084 ; case 376 - b ov29_023320A0 ; case 377 - b ov29_02331F34 ; case 378 - b ov29_02331DDC ; case 379 - b ov29_023318B0 ; case 380 - b ov29_02331418 ; case 381 - b _02330A00 ; case 382 - b ov29_023315A0 ; case 383 - b ov29_02332014 ; case 384 - b ov29_02331E30 ; case 385 - b ov29_023310AC ; case 386 - b ov29_023313FC ; case 387 - b ov29_02331664 ; case 388 - b ov29_023317D0 ; case 389 - b ov29_02331DF8 ; case 390 - b ov29_02331AE8 ; case 391 - b ov29_0233044C ; case 392 - b ov29_0233204C ; case 393 - b ov29_023312C8 ; case 394 - b ov29_02331E14 ; case 395 - b ov29_02331894 ; case 396 - b ov29_023320F4 ; case 397 - b ov29_02331C54 ; case 398 - b ov29_02331BE4 ; case 399 - b ov29_0233162C ; case 400 - b ov29_0233118C ; case 401 - b _023326C8 ; case 402 - b ov29_02331E84 ; case 403 - b _023326C8 ; case 404 - b _023326C8 ; case 405 - b _023320D8 ; case 406 - b ov29_02331D18 ; case 407 - b _023326C8 ; case 408 - b ov29_02331680 ; case 409 - b ov29_023317EC ; case 410 - b _023326C8 ; case 411 - b ov29_02331808 ; case 412 - b _023326C8 ; case 413 - b _023326C8 ; case 414 - b _023326C8 ; case 415 - b _023326C8 ; case 416 - b _023326C8 ; case 417 - b _023326C8 ; case 418 - b _023326C8 ; case 419 - b _023326C8 ; case 420 - b ov29_02332674 ; case 421 - b ov29_02332690 ; case 422 - b ov29_023326AC ; case 423 - b ov29_02331648 ; case 424 - b ov29_02331840 ; case 425 - b ov29_0233111C ; case 426 - b ov29_02332658 ; case 427 - b ov29_02330360 ; case 428 - b ov29_02331DDC ; case 429 - b ov29_02332110 ; case 430 - b _023307EC ; case 431 - b _02330134 ; case 432 - b _02330134 ; case 433 - b ov29_0233212C ; case 434 - b _02330134 ; case 435 - b _023307EC ; case 436 - b ov29_0233069C ; case 437 - b ov29_02332148 ; case 438 - b ov29_02332164 ; case 439 - b ov29_02332180 ; case 440 - b ov29_02330DF0 ; case 441 - b _023307EC ; case 442 - b ov29_023306F0 ; case 443 - b ov29_0233111C ; case 444 - b _02330134 ; case 445 - b ov29_023306B8 ; case 446 - b ov29_0233219C ; case 447 - b ov29_023321B8 ; case 448 - b ov29_023321D4 ; case 449 - b ov29_023321F0 ; case 450 - b _02330134 ; case 451 - b ov29_0233220C ; case 452 - b ov29_02330344 ; case 453 - b ov29_023306F0 ; case 454 - b ov29_02330344 ; case 455 - b ov29_02332228 ; case 456 - b ov29_02332244 ; case 457 - b ov29_023319D0 ; case 458 - b ov29_02330728 ; case 459 - b _02330134 ; case 460 - b ov29_02332260 ; case 461 - b _02330134 ; case 462 - b _02330134 ; case 463 - b ov29_0233227C ; case 464 - b _023326C8 ; case 465 - b ov29_02332298 ; case 466 - b _02330134 ; case 467 - b ov29_023305D0 ; case 468 - b ov29_023322D0 ; case 469 - b _02330134 ; case 470 - b ov29_023322EC ; case 471 - b _02331138 ; case 472 - b _023307EC ; case 473 - b ov29_02332458 ; case 474 - b ov29_02332308 ; case 475 - b _02330134 ; case 476 - b ov29_02332324 ; case 477 - b ov29_02332340 ; case 478 - b _02330134 ; case 479 - b ov29_0233235C ; case 480 - b _02330134 ; case 481 - b ov29_023310C8 ; case 482 - b _02330974 ; case 483 - b ov29_02330520 ; case 484 - b ov29_02330728 ; case 485 - b _02330134 ; case 486 - b _02330134 ; case 487 - b ov29_023322D0 ; case 488 - b ov29_02332378 ; case 489 - b ov29_02332394 ; case 490 - b _02330134 ; case 491 - b ov29_023323B0 ; case 492 - b ov29_023323CC ; case 493 - b ov29_02330344 ; case 494 - b ov29_02330728 ; case 495 - b ov29_023323E8 ; case 496 - b ov29_02332420 ; case 497 - b _023307EC ; case 498 - b ov29_02332404 ; case 499 - b ov29_02330DB8 ; case 500 - b ov29_02330CA0 ; case 501 - b _02330134 ; case 502 - b _023320D8 ; case 503 - b ov29_0233243C ; case 504 - b ov29_02332458 ; case 505 - b ov29_02332474 ; case 506 - b _02330958 ; case 507 - b _02330134 ; case 508 - b ov29_02332490 ; case 509 - b _02330134 ; case 510 - b _02330134 ; case 511 - b _02330134 ; case 512 - b ov29_023324AC ; case 513 - b ov29_023324C8 ; case 514 - b _02330134 ; case 515 - b ov29_023324E4 ; case 516 - b ov29_02332500 ; case 517 - b ov29_02330DF0 ; case 518 - b _023302F0 ; case 519 - b ov29_0233251C ; case 520 - b _02330958 ; case 521 - b ov29_023322B4 ; case 522 - b _02330134 ; case 523 - b ov29_02330468 ; case 524 - b ov29_023320BC ; case 525 - b ov29_02332538 ; case 526 - b ov29_02330CA0 ; case 527 - b ov29_02332554 ; case 528 - b ov29_02332394 ; case 529 - b ov29_0233054C ; case 530 - b ov29_02332570 ; case 531 - b ov29_0233258C ; case 532 - b ov29_023325A8 ; case 533 - b ov29_023325C4 ; case 534 - b _02331154 ; case 535 - b ov29_02330578 ; case 536 - b ov29_023325E0 ; case 537 - b ov29_023325FC ; case 538 - b _02330134 ; case 539 - b ov29_02332620 ; case 540 - b ov29_023306B8 ; case 541 - b ov29_0233263C ; case 542 -_02330134: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325DC0 - mov sl, r0 - b _023326CC - arm_func_end ExecuteMoveEffect - - arm_func_start ov29_02330150 -ov29_02330150: ; 0x02330150 - mov r0, sb - mov r1, r8 - bl GetMoveTypeForMonster - mov sl, r0 - mov r0, sb - mov r1, r8 - bl GetMovePower - str r0, [sp, #0x88] - mov r0, r8 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0xdc - str r1, [sp, #4] - mov r0, #0x80 - str r0, [sp, #8] - mov r2, sl - ldrh sl, [r8, #4] - ldr r3, [sp, #0x88] - mov r1, #1 - str sl, [sp, #0xc] - str r1, [sp, #0x10] - mov r0, sb - mov r1, r4 - bl CalcDamage - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - str r0, [sp] - mov r0, sb - mov r1, r4 - mov r2, r8 - add r3, sp, #0xdc - bl CalcDamageFinal - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and sl, r0, #0xff - b _023326CC -_023301E8: - mov r0, sb - mov r1, r8 - bl GetMoveTypeForMonster - mov sl, r0 - mov r0, sb - mov r1, r8 - bl GetMovePower - str r0, [sp, #0x8c] - mov r0, r8 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0xc8 - str r1, [sp, #4] - mov r0, #0 - str r0, [sp, #8] - mov r2, sl - ldrh sl, [r8, #4] - ldr r3, [sp, #0x8c] - mov r1, #1 - str sl, [sp, #0xc] - str r1, [sp, #0x10] - mov r0, sb - mov r1, r4 - bl CalcDamage - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - str r0, [sp] - mov r0, sb - mov r1, r4 - mov r2, r8 - add r3, sp, #0xc8 - bl CalcDamageFinal - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and sl, r0, #0xff - b _023326CC - arm_func_end ov29_02330150 - - arm_func_start ov29_02330280 -ov29_02330280: ; 0x02330280 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328F94 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330280 - - arm_func_start ov29_0233029C -ov29_0233029C: ; 0x0233029C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328074 - mov sl, r0 - b _023326CC -_023302B8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326E20 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233029C - - arm_func_start ov29_023302D4 -ov29_023302D4: ; 0x023302D4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C1A4 - mov sl, r0 - b _023326CC -_023302F0: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326CC8 - mov sl, r0 - b _023326CC -_0233030C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326D50 - mov sl, r0 - b _023326CC - arm_func_end ov29_023302D4 - - arm_func_start ov29_02330328 -ov29_02330328: ; 0x02330328 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327AF4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330328 - - arm_func_start ov29_02330344 -ov29_02330344: ; 0x02330344 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A500 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330344 - - arm_func_start ov29_02330360 -ov29_02330360: ; 0x02330360 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023268BC - mov sl, r0 - b _023326CC -_0233037C: - mov r0, sb - mov r1, r8 - bl GetMoveTypeForMonster - mov sl, r0 - mov r0, sb - mov r1, r8 - bl GetMovePower - str r0, [sp, #0x90] - mov r0, r8 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0xb4 - str r1, [sp, #4] - mov r0, #0x100 - str r0, [sp, #8] - mov r2, sl - ldrh sl, [r8, #4] - ldr r3, [sp, #0x90] - mov r1, #1 - str sl, [sp, #0xc] - str r1, [sp, #0x10] - mov r0, sb - mov r1, r4 - bl CalcDamage - mov r0, r8 - mov r1, r7 - bl ov29_02324E44 - str r0, [sp] - mov r0, sb - mov r1, r4 - mov r2, r8 - add r3, sp, #0xb4 - bl CalcDamageFinal - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and sl, r0, #0xff - b _023326CC - arm_func_end ov29_02330360 - - arm_func_start ov29_02330414 -ov29_02330414: ; 0x02330414 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023283A4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330414 - - arm_func_start ov29_02330430 -ov29_02330430: ; 0x02330430 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328B88 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330430 - - arm_func_start ov29_0233044C -ov29_0233044C: ; 0x0233044C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CDA4 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233044C - - arm_func_start ov29_02330468 -ov29_02330468: ; 0x02330468 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B5E8 - mov sl, r0 - b _023326CC -_02330484: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326750 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330468 - - arm_func_start ov29_023304A0 -ov29_023304A0: ; 0x023304A0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A148 - mov sl, r0 - b _023326CC - arm_func_end ov29_023304A0 - - arm_func_start ov29_023304BC -ov29_023304BC: ; 0x023304BC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327744 - mov sl, r0 - b _023326CC - arm_func_end ov29_023304BC - - arm_func_start ov29_023304D8 -ov29_023304D8: ; 0x023304D8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329904 - mov sl, r0 - b _023326CC - arm_func_end ov29_023304D8 - - arm_func_start ov29_023304F4 -ov29_023304F4: ; 0x023304F4 - str r1, [sp] - ldr r0, [sp, #0x28] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023304F4 - - arm_func_start ov29_02330520 -ov29_02330520: ; 0x02330520 - str r1, [sp] - ldr r0, [sp, #0x24] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330520 - - arm_func_start ov29_0233054C -ov29_0233054C: ; 0x0233054C - str r1, [sp] - ldr r0, [sp, #0x20] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233054C - - arm_func_start ov29_02330578 -ov29_02330578: ; 0x02330578 - str r1, [sp] - ldr r0, [sp, #0x1c] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330578 - - arm_func_start ov29_023305A4 -ov29_023305A4: ; 0x023305A4 - str r1, [sp] - ldr r0, [sp, #0x28] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023305A4 - - arm_func_start ov29_023305D0 -ov29_023305D0: ; 0x023305D0 - mov r0, #2 - str r0, [sp] - ldr r0, [sp, #0x18] - add r3, sp, #0x9c - stmib sp, {r0, r7} - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_02327CD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023305D0 - - arm_func_start ov29_02330600 -ov29_02330600: ; 0x02330600 - add r3, sp, #0xa0 - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - str r7, [sp] - bl ov29_0232B940 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330600 - - arm_func_start ov29_02330624 -ov29_02330624: ; 0x02330624 - add r3, sp, #0xa0 - ldr r3, [r3] - mov r0, sb - mov r1, r4 - mov r2, r8 - str r7, [sp] - bl ov29_0232A5AC - mov sl, r0 - b _023326CC - arm_func_end ov29_02330624 - - arm_func_start ov29_02330648 -ov29_02330648: ; 0x02330648 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B494 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330648 - - arm_func_start ov29_02330664 -ov29_02330664: ; 0x02330664 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023290CC - mov sl, r0 - b _023326CC - arm_func_end ov29_02330664 - - arm_func_start ov29_02330680 -ov29_02330680: ; 0x02330680 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232728C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330680 - - arm_func_start ov29_0233069C -ov29_0233069C: ; 0x0233069C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327804 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233069C - - arm_func_start ov29_023306B8 -ov29_023306B8: ; 0x023306B8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327C08 - mov sl, r0 - b _023326CC - arm_func_end ov29_023306B8 - - arm_func_start ov29_023306D4 -ov29_023306D4: ; 0x023306D4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B820 - mov sl, r0 - b _023326CC - arm_func_end ov29_023306D4 - - arm_func_start ov29_023306F0 -ov29_023306F0: ; 0x023306F0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C0F4 - mov sl, r0 - b _023326CC - arm_func_end ov29_023306F0 - - arm_func_start ov29_0233070C -ov29_0233070C: ; 0x0233070C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B164 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233070C - - arm_func_start ov29_02330728 -ov29_02330728: ; 0x02330728 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328A74 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330728 - - arm_func_start ov29_02330744 -ov29_02330744: ; 0x02330744 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328B00 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330744 - - arm_func_start ov29_02330760 -ov29_02330760: ; 0x02330760 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329710 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330760 - - arm_func_start ov29_0233077C -ov29_0233077C: ; 0x0233077C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232816C - mov sl, r0 - b _023326CC - arm_func_end ov29_0233077C - - arm_func_start ov29_02330798 -ov29_02330798: ; 0x02330798 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023284BC - mov sl, r0 - b _023326CC -_023307B4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023270B4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330798 - - arm_func_start ov29_023307D0 -ov29_023307D0: ; 0x023307D0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023288C4 - mov sl, r0 - b _023326CC -_023307EC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326670 - mov sl, r0 - b _023326CC -_02330808: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327034 - mov sl, r0 - b _023326CC - arm_func_end ov29_023307D0 - - arm_func_start ov29_02330824 -ov29_02330824: ; 0x02330824 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328248 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330824 - - arm_func_start ov29_02330840 -ov29_02330840: ; 0x02330840 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AEF0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330840 - - arm_func_start ov29_0233085C -ov29_0233085C: ; 0x0233085C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329C94 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233085C - - arm_func_start ov29_02330878 -ov29_02330878: ; 0x02330878 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327B5C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330878 - - arm_func_start ov29_02330894 -ov29_02330894: ; 0x02330894 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B1E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330894 - - arm_func_start ov29_023308B0 -ov29_023308B0: ; 0x023308B0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B9D0 - mov sl, r0 - b _023326CC -_023308CC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326E80 - mov sl, r0 - b _023326CC - arm_func_end ov29_023308B0 - - arm_func_start ov29_023308E8 -ov29_023308E8: ; 0x023308E8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A2BC - mov sl, r0 - b _023326CC - arm_func_end ov29_023308E8 - - arm_func_start ov29_02330904 -ov29_02330904: ; 0x02330904 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328D44 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330904 - - arm_func_start ov29_02330920 -ov29_02330920: ; 0x02330920 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BF88 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330920 - - arm_func_start ov29_0233093C -ov29_0233093C: ; 0x0233093C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328230 - mov sl, r0 - b _023326CC -_02330958: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327120 - mov sl, r0 - b _023326CC -_02330974: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325F00 - mov sl, r0 - b _023326CC -_02330990: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325EC4 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233093C - - arm_func_start ov29_023309AC -ov29_023309AC: ; 0x023309AC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328328 - mov sl, r0 - b _023326CC - arm_func_end ov29_023309AC - - arm_func_start ov29_023309C8 -ov29_023309C8: ; 0x023309C8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329854 - mov sl, r0 - b _023326CC - arm_func_end ov29_023309C8 - - arm_func_start ov29_023309E4 -ov29_023309E4: ; 0x023309E4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329438 - mov sl, r0 - b _023326CC -_02330A00: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023293CC - mov sl, r0 - b _023326CC - arm_func_end ov29_023309E4 - - arm_func_start ov29_02330A1C -ov29_02330A1C: ; 0x02330A1C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329868 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330A1C - - arm_func_start ov29_02330A38 -ov29_02330A38: ; 0x02330A38 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232977C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330A38 - - arm_func_start ov29_02330A54 -ov29_02330A54: ; 0x02330A54 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B434 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330A54 - - arm_func_start ov29_02330A70 -ov29_02330A70: ; 0x02330A70 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023297F0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330A70 - - arm_func_start ov29_02330A8C -ov29_02330A8C: ; 0x02330A8C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A524 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330A8C - - arm_func_start ov29_02330AA8 -ov29_02330AA8: ; 0x02330AA8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327368 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330AA8 - - arm_func_start ov29_02330AC4 -ov29_02330AC4: ; 0x02330AC4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A688 - mov sl, r0 - b _023326CC -_02330AE0: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023267D8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330AC4 - - arm_func_start ov29_02330AFC -ov29_02330AFC: ; 0x02330AFC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B500 - mov sl, r0 - b _023326CC -_02330B18: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232631C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330AFC - - arm_func_start ov29_02330B34 -ov29_02330B34: ; 0x02330B34 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B5C8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330B34 - - arm_func_start ov29_02330B50 -ov29_02330B50: ; 0x02330B50 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232923C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330B50 - - arm_func_start ov29_02330B6C -ov29_02330B6C: ; 0x02330B6C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C028 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330B6C - - arm_func_start ov29_02330B88 -ov29_02330B88: ; 0x02330B88 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AF5C - mov sl, r0 - b _023326CC -_02330BA4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326E98 - mov sl, r0 - b _023326CC -_02330BC0: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326220 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330B88 - - arm_func_start ov29_02330BDC -ov29_02330BDC: ; 0x02330BDC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329534 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330BDC - - arm_func_start ov29_02330BF8 -ov29_02330BF8: ; 0x02330BF8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B8E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330BF8 - - arm_func_start ov29_02330C14 -ov29_02330C14: ; 0x02330C14 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328AE0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330C14 - - arm_func_start ov29_02330C30 -ov29_02330C30: ; 0x02330C30 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A058 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330C30 - - arm_func_start ov29_02330C4C -ov29_02330C4C: ; 0x02330C4C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B7E0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330C4C - - arm_func_start ov29_02330C68 -ov29_02330C68: ; 0x02330C68 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023296D8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330C68 - - arm_func_start ov29_02330C84 -ov29_02330C84: ; 0x02330C84 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023279E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330C84 - - arm_func_start ov29_02330CA0 -ov29_02330CA0: ; 0x02330CA0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329000 - mov sl, r0 - b _023326CC -_02330CBC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326A74 - mov sl, r0 - b _023326CC -_02330CD8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326990 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330CA0 - - arm_func_start ov29_02330CF4 -ov29_02330CF4: ; 0x02330CF4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327D60 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330CF4 - - arm_func_start ov29_02330D10 -ov29_02330D10: ; 0x02330D10 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327BF0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330D10 - - arm_func_start ov29_02330D2C -ov29_02330D2C: ; 0x02330D2C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A118 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330D2C - - arm_func_start ov29_02330D48 -ov29_02330D48: ; 0x02330D48 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AFF0 - mov sl, r0 - b _023326CC -_02330D64: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326648 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330D48 - - arm_func_start ov29_02330D80 -ov29_02330D80: ; 0x02330D80 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329258 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330D80 - - arm_func_start ov29_02330D9C -ov29_02330D9C: ; 0x02330D9C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov01_0232A078 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330D9C - - arm_func_start ov29_02330DB8 -ov29_02330DB8: ; 0x02330DB8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327458 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330DB8 - - arm_func_start ov29_02330DD4 -ov29_02330DD4: ; 0x02330DD4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328930 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330DD4 - - arm_func_start ov29_02330DF0 -ov29_02330DF0: ; 0x02330DF0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl DealDamageWithRecoil - mov sl, r0 - b _023326CC - arm_func_end ov29_02330DF0 - - arm_func_start ov29_02330E0C -ov29_02330E0C: ; 0x02330E0C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328538 - mov sl, r0 - b _023326CC -_02330E28: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326568 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330E0C - - arm_func_start ov29_02330E44 -ov29_02330E44: ; 0x02330E44 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329F78 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330E44 - - arm_func_start ov29_02330E60 -ov29_02330E60: ; 0x02330E60 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232915C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330E60 - - arm_func_start ov29_02330E7C -ov29_02330E7C: ; 0x02330E7C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328C74 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330E7C - - arm_func_start ov29_02330E98 -ov29_02330E98: ; 0x02330E98 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327A28 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330E98 - - arm_func_start ov29_02330EB4 -ov29_02330EB4: ; 0x02330EB4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA14 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330EB4 - - arm_func_start ov29_02330ED0 -ov29_02330ED0: ; 0x02330ED0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232776C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330ED0 - - arm_func_start ov29_02330EEC -ov29_02330EEC: ; 0x02330EEC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B6B8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330EEC - - arm_func_start ov29_02330F08 -ov29_02330F08: ; 0x02330F08 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327DD0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F08 - - arm_func_start ov29_02330F24 -ov29_02330F24: ; 0x02330F24 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329898 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F24 - - arm_func_start ov29_02330F40 -ov29_02330F40: ; 0x02330F40 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B26C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F40 - - arm_func_start ov29_02330F5C -ov29_02330F5C: ; 0x02330F5C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BF78 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F5C - - arm_func_start ov29_02330F78 -ov29_02330F78: ; 0x02330F78 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023289F8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F78 - - arm_func_start ov29_02330F94 -ov29_02330F94: ; 0x02330F94 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328528 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330F94 - - arm_func_start ov29_02330FB0 -ov29_02330FB0: ; 0x02330FB0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328394 - mov sl, r0 - b _023326CC - arm_func_end ov29_02330FB0 - - arm_func_start ov29_02330FCC -ov29_02330FCC: ; 0x02330FCC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AD08 - mov sl, r0 - b _023326CC -_02330FE8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325E64 - mov sl, r0 - b _023326CC -_02331004: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326A0C - mov sl, r0 - b _023326CC - arm_func_end ov29_02330FCC - - arm_func_start ov29_02331020 -ov29_02331020: ; 0x02331020 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023291F4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331020 - - arm_func_start ov29_0233103C -ov29_0233103C: ; 0x0233103C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023278E8 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233103C - - arm_func_start ov29_02331058 -ov29_02331058: ; 0x02331058 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023293F8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331058 - - arm_func_start ov29_02331074 -ov29_02331074: ; 0x02331074 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A414 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331074 - - arm_func_start ov29_02331090 -ov29_02331090: ; 0x02331090 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328030 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331090 - - arm_func_start ov29_023310AC -ov29_023310AC: ; 0x023310AC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C82C - mov sl, r0 - b _023326CC - arm_func_end ov29_023310AC - - arm_func_start ov29_023310C8 -ov29_023310C8: ; 0x023310C8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329D50 - mov sl, r0 - b _023326CC - arm_func_end ov29_023310C8 - - arm_func_start ov29_023310E4 -ov29_023310E4: ; 0x023310E4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C310 - mov sl, r0 - b _023326CC - arm_func_end ov29_023310E4 - - arm_func_start ov29_02331100 -ov29_02331100: ; 0x02331100 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A04C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331100 - - arm_func_start ov29_0233111C -ov29_0233111C: ; 0x0233111C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327928 - mov sl, r0 - b _023326CC -_02331138: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326CB4 - mov sl, r0 - b _023326CC -_02331154: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326F48 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233111C - - arm_func_start ov29_02331170 -ov29_02331170: ; 0x02331170 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326F8C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331170 - - arm_func_start ov29_0233118C -ov29_0233118C: ; 0x0233118C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D0F0 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233118C - - arm_func_start ov29_023311A8 -ov29_023311A8: ; 0x023311A8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A328 - mov sl, r0 - b _023326CC - arm_func_end ov29_023311A8 - - arm_func_start ov29_023311C4 -ov29_023311C4: ; 0x023311C4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A4E8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023311C4 - - arm_func_start ov29_023311E0 -ov29_023311E0: ; 0x023311E0 - mov r0, #0 - str r0, [sp] - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329B68 - mov sl, r0 - b _023326CC - arm_func_end ov29_023311E0 - - arm_func_start ov29_02331204 -ov29_02331204: ; 0x02331204 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B118 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331204 - - arm_func_start ov29_02331220 -ov29_02331220: ; 0x02331220 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B928 - mov sl, r0 - b _023326CC -_0233123C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326EB8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331220 - - arm_func_start ov29_02331258 -ov29_02331258: ; 0x02331258 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023273CC - mov sl, r0 - b _023326CC - arm_func_end ov29_02331258 - - arm_func_start ov29_02331274 -ov29_02331274: ; 0x02331274 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B7C0 - mov sl, r0 - b _023326CC -_02331290: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325F3C - mov sl, r0 - b _023326CC -_023312AC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325F74 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331274 - - arm_func_start ov29_023312C8 -ov29_023312C8: ; 0x023312C8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CE50 - mov sl, r0 - b _023326CC - arm_func_end ov29_023312C8 - - arm_func_start ov29_023312E4 -ov29_023312E4: ; 0x023312E4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329FB4 - mov sl, r0 - b _023326CC -_02331300: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325DE4 - mov sl, r0 - b _023326CC - arm_func_end ov29_023312E4 - - arm_func_start ov29_0233131C -ov29_0233131C: ; 0x0233131C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A27C - mov sl, r0 - b _023326CC -_02331338: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326B24 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233131C - - arm_func_start ov29_02331354 -ov29_02331354: ; 0x02331354 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A480 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331354 - - arm_func_start ov29_02331370 -ov29_02331370: ; 0x02331370 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327C74 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331370 - - arm_func_start ov29_0233138C -ov29_0233138C: ; 0x0233138C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BC34 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233138C - - arm_func_start ov29_023313A8 -ov29_023313A8: ; 0x023313A8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B6C8 - mov sl, r0 - b _023326CC -_023313C4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326188 - mov sl, r0 - b _023326CC - arm_func_end ov29_023313A8 - - arm_func_start ov29_023313E0 -ov29_023313E0: ; 0x023313E0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327758 - mov sl, r0 - b _023326CC - arm_func_end ov29_023313E0 - - arm_func_start ov29_023313FC -ov29_023313FC: ; 0x023313FC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C83C - mov sl, r0 - b _023326CC - arm_func_end ov29_023313FC - - arm_func_start ov29_02331418 -ov29_02331418: ; 0x02331418 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C6B4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331418 - - arm_func_start ov29_02331434 -ov29_02331434: ; 0x02331434 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232764C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331434 - - arm_func_start ov29_02331450 -ov29_02331450: ; 0x02331450 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B738 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331450 - - arm_func_start ov29_0233146C -ov29_0233146C: ; 0x0233146C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C064 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233146C - - arm_func_start ov29_02331488 -ov29_02331488: ; 0x02331488 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A2AC - mov sl, r0 - b _023326CC -_023314A4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326AE8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331488 - - arm_func_start ov29_023314C0 -ov29_023314C0: ; 0x023314C0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329FE0 - mov sl, r0 - b _023326CC - arm_func_end ov29_023314C0 - - arm_func_start ov29_023314DC -ov29_023314DC: ; 0x023314DC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328A54 - mov sl, r0 - b _023326CC -_023314F8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232692C - mov sl, r0 - b _023326CC - arm_func_end ov29_023314DC - - arm_func_start ov29_02331514 -ov29_02331514: ; 0x02331514 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329880 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331514 - - arm_func_start ov29_02331530 -ov29_02331530: ; 0x02331530 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023276B4 - mov sl, r0 - b _023326CC -_0233154C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326408 - mov sl, r0 - b _023326CC -_02331568: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326264 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331530 - - arm_func_start ov29_02331584 -ov29_02331584: ; 0x02331584 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B8B0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331584 - - arm_func_start ov29_023315A0 -ov29_023315A0: ; 0x023315A0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C6F0 - mov sl, r0 - b _023326CC -_023315BC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232718C - mov sl, r0 - b _023326CC - arm_func_end ov29_023315A0 - - arm_func_start ov29_023315D8 -ov29_023315D8: ; 0x023315D8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C538 - mov sl, r0 - b _023326CC - arm_func_end ov29_023315D8 - - arm_func_start ov29_023315F4 -ov29_023315F4: ; 0x023315F4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BCC4 - mov sl, r0 - b _023326CC - arm_func_end ov29_023315F4 - - arm_func_start ov29_02331610 -ov29_02331610: ; 0x02331610 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA2C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331610 - - arm_func_start ov29_0233162C -ov29_0233162C: ; 0x0233162C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CF84 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233162C - - arm_func_start ov29_02331648 -ov29_02331648: ; 0x02331648 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023296F8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331648 - - arm_func_start ov29_02331664 -ov29_02331664: ; 0x02331664 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CB08 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331664 - - arm_func_start ov29_02331680 -ov29_02331680: ; 0x02331680 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D1FC - mov sl, r0 - b _023326CC - arm_func_end ov29_02331680 - - arm_func_start ov29_0233169C -ov29_0233169C: ; 0x0233169C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023272F8 - mov sl, r0 - b _023326CC -_023316B8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326E60 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233169C - - arm_func_start ov29_023316D4 -ov29_023316D4: ; 0x023316D4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023279AC - mov sl, r0 - b _023326CC -_023316F0: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325FB4 - mov sl, r0 - b _023326CC - arm_func_end ov29_023316D4 - - arm_func_start ov29_0233170C -ov29_0233170C: ; 0x0233170C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328DE4 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233170C - - arm_func_start ov29_02331728 -ov29_02331728: ; 0x02331728 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329A9C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331728 - - arm_func_start ov29_02331744 -ov29_02331744: ; 0x02331744 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328ECC - mov sl, r0 - b _023326CC -_02331760: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02325FC4 - mov sl, r0 - b _023326CC -_0233177C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326088 - mov sl, r0 - b _023326CC -_02331798: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326E04 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331744 - - arm_func_start ov29_023317B4 -ov29_023317B4: ; 0x023317B4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A6EC - mov sl, r0 - b _023326CC - arm_func_end ov29_023317B4 - - arm_func_start ov29_023317D0 -ov29_023317D0: ; 0x023317D0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CB18 - mov sl, r0 - b _023326CC - arm_func_end ov29_023317D0 - - arm_func_start ov29_023317EC -ov29_023317EC: ; 0x023317EC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D20C - mov sl, r0 - b _023326CC - arm_func_end ov29_023317EC - - arm_func_start ov29_02331808 -ov29_02331808: ; 0x02331808 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D21C - mov sl, r0 - b _023326CC -_02331824: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326CA4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331808 - - arm_func_start ov29_02331840 -ov29_02331840: ; 0x02331840 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA3C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331840 - - arm_func_start ov29_0233185C -ov29_0233185C: ; 0x0233185C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A3FC - mov sl, r0 - b _023326CC - arm_func_end ov29_0233185C - - arm_func_start ov29_02331878 -ov29_02331878: ; 0x02331878 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AC44 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331878 - - arm_func_start ov29_02331894 -ov29_02331894: ; 0x02331894 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CE94 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331894 - - arm_func_start ov29_023318B0 -ov29_023318B0: ; 0x023318B0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B800 - mov sl, r0 - b _023326CC - arm_func_end ov29_023318B0 - - arm_func_start ov29_023318CC -ov29_023318CC: ; 0x023318CC - mov r0, #0 - str r0, [sp] - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329970 - mov sl, r0 - b _023326CC - arm_func_end ov29_023318CC - - arm_func_start ov29_023318F0 -ov29_023318F0: ; 0x023318F0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B7D0 - mov sl, r0 - b _023326CC - arm_func_end ov29_023318F0 - - arm_func_start ov29_0233190C -ov29_0233190C: ; 0x0233190C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023293E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233190C - - arm_func_start ov29_02331928 -ov29_02331928: ; 0x02331928 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023276E8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331928 - - arm_func_start ov29_02331944 -ov29_02331944: ; 0x02331944 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327598 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331944 - - arm_func_start ov29_02331960 -ov29_02331960: ; 0x02331960 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023281D8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331960 - - arm_func_start ov29_0233197C -ov29_0233197C: ; 0x0233197C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328E74 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233197C - - arm_func_start ov29_02331998 -ov29_02331998: ; 0x02331998 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023282C8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331998 - - arm_func_start ov29_023319B4 -ov29_023319B4: ; 0x023319B4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232724C - mov sl, r0 - b _023326CC - arm_func_end ov29_023319B4 - - arm_func_start ov29_023319D0 -ov29_023319D0: ; 0x023319D0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023277B8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023319D0 - - arm_func_start ov29_023319EC -ov29_023319EC: ; 0x023319EC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327DE0 - mov sl, r0 - b _023326CC - arm_func_end ov29_023319EC - - arm_func_start ov29_02331A08 -ov29_02331A08: ; 0x02331A08 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B368 - mov sl, r0 - b _023326CC -_02331A24: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023268CC - mov sl, r0 - b _023326CC - arm_func_end ov29_02331A08 - - arm_func_start ov29_02331A40 -ov29_02331A40: ; 0x02331A40 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C300 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331A40 - - arm_func_start ov29_02331A5C -ov29_02331A5C: ; 0x02331A5C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329074 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331A5C - - arm_func_start ov29_02331A78 -ov29_02331A78: ; 0x02331A78 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A640 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331A78 - - arm_func_start ov29_02331A94 -ov29_02331A94: ; 0x02331A94 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A490 - mov sl, r0 - b _023326CC -_02331AB0: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023260D0 - mov sl, r0 - b _023326CC -_02331ACC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232680C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331A94 - - arm_func_start ov29_02331AE8 -ov29_02331AE8: ; 0x02331AE8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CD90 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331AE8 - - arm_func_start ov29_02331B04 -ov29_02331B04: ; 0x02331B04 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B8D4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331B04 - - arm_func_start ov29_02331B20 -ov29_02331B20: ; 0x02331B20 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B6A4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331B20 - - arm_func_start ov29_02331B3C -ov29_02331B3C: ; 0x02331B3C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327940 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331B3C - - arm_func_start ov29_02331B58 -ov29_02331B58: ; 0x02331B58 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B8A0 - mov sl, r0 - b _023326CC -_02331B74: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232620C - mov sl, r0 - b _023326CC -_02331B90: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023266DC - mov sl, r0 - b _023326CC - arm_func_end ov29_02331B58 - - arm_func_start ov29_02331BAC -ov29_02331BAC: ; 0x02331BAC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A220 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331BAC - - arm_func_start ov29_02331BC8 -ov29_02331BC8: ; 0x02331BC8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A340 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331BC8 - - arm_func_start ov29_02331BE4 -ov29_02331BE4: ; 0x02331BE4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CF74 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331BE4 - - arm_func_start ov29_02331C00 -ov29_02331C00: ; 0x02331C00 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327BE0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331C00 - - arm_func_start ov29_02331C1C -ov29_02331C1C: ; 0x02331C1C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329674 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331C1C - - arm_func_start ov29_02331C38 -ov29_02331C38: ; 0x02331C38 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AC54 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331C38 - - arm_func_start ov29_02331C54 -ov29_02331C54: ; 0x02331C54 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CF54 - mov sl, r0 - b _023326CC -_02331C70: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023260A8 - mov sl, r0 - b _023326CC -_02331C8C: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023261A0 - mov sl, r0 - b _023326CC -_02331CA8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326550 - mov sl, r0 - b _023326CC -_02331CC4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C27C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331C54 - - arm_func_start ov29_02331CE0 -ov29_02331CE0: ; 0x02331CE0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B44C - mov sl, r0 - b _023326CC -_02331CFC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232612C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331CE0 - - arm_func_start ov29_02331D18 -ov29_02331D18: ; 0x02331D18 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D1EC - mov sl, r0 - b _023326CC -_02331D34: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326DD8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331D18 - - arm_func_start ov29_02331D50 -ov29_02331D50: ; 0x02331D50 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A8EC - mov sl, r0 - b _023326CC - arm_func_end ov29_02331D50 - - arm_func_start ov29_02331D6C -ov29_02331D6C: ; 0x02331D6C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C84C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331D6C - - arm_func_start ov29_02331D88 -ov29_02331D88: ; 0x02331D88 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C560 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331D88 - - arm_func_start ov29_02331DA4 -ov29_02331DA4: ; 0x02331DA4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B024 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331DA4 - - arm_func_start ov29_02331DC0 -ov29_02331DC0: ; 0x02331DC0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C524 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331DC0 - - arm_func_start ov29_02331DDC -ov29_02331DDC: ; 0x02331DDC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AFA0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331DDC - - arm_func_start ov29_02331DF8 -ov29_02331DF8: ; 0x02331DF8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CCC4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331DF8 - - arm_func_start ov29_02331E14 -ov29_02331E14: ; 0x02331E14 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CE7C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331E14 - - arm_func_start ov29_02331E30 -ov29_02331E30: ; 0x02331E30 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA70 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331E30 - - arm_func_start ov29_02331E4C -ov29_02331E4C: ; 0x02331E4C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232AD18 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331E4C - - arm_func_start ov29_02331E68 -ov29_02331E68: ; 0x02331E68 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328110 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331E68 - - arm_func_start ov29_02331E84 -ov29_02331E84: ; 0x02331E84 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D148 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331E84 - - arm_func_start ov29_02331EA0 -ov29_02331EA0: ; 0x02331EA0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328794 - movs sl, r0 - movne r0, #1 - strne r0, [sp, #0x58] - b _023326CC -_02331EC4: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326908 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331EA0 - - arm_func_start ov29_02331EE0 -ov29_02331EE0: ; 0x02331EE0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232A188 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331EE0 - - arm_func_start ov29_02331EFC -ov29_02331EFC: ; 0x02331EFC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02328698 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331EFC - - arm_func_start ov29_02331F18 -ov29_02331F18: ; 0x02331F18 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329554 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331F18 - - arm_func_start ov29_02331F34 -ov29_02331F34: ; 0x02331F34 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C578 - mov sl, r0 - b _023326CC -_02331F50: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02326BC0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331F34 - - arm_func_start ov29_02331F6C -ov29_02331F6C: ; 0x02331F6C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BE34 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331F6C - - arm_func_start ov29_02331F88 -ov29_02331F88: ; 0x02331F88 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232B518 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331F88 - - arm_func_start ov29_02331FA4 -ov29_02331FA4: ; 0x02331FA4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BB4C - mov sl, r0 - b _023326CC - arm_func_end ov29_02331FA4 - - arm_func_start ov29_02331FC0 -ov29_02331FC0: ; 0x02331FC0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02327E94 - mov sl, r0 - b _023326CC -_02331FDC: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_023265A4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331FC0 - - arm_func_start ov29_02331FF8 -ov29_02331FF8: ; 0x02331FF8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BE44 - mov sl, r0 - b _023326CC - arm_func_end ov29_02331FF8 - - arm_func_start ov29_02332014 -ov29_02332014: ; 0x02332014 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232C818 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332014 - - arm_func_start ov29_02332030 -ov29_02332030: ; 0x02332030 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BC64 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332030 - - arm_func_start ov29_0233204C -ov29_0233204C: ; 0x0233204C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CE40 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233204C - - arm_func_start ov29_02332068 -ov29_02332068: ; 0x02332068 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_02329664 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332068 - - arm_func_start ov29_02332084 -ov29_02332084: ; 0x02332084 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA4C - mov sl, r0 - b _023326CC - arm_func_end ov29_02332084 - - arm_func_start ov29_023320A0 -ov29_023320A0: ; 0x023320A0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CA60 - mov sl, r0 - b _023326CC - arm_func_end ov29_023320A0 - - arm_func_start ov29_023320BC -ov29_023320BC: ; 0x023320BC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232BA44 - mov sl, r0 - b _023326CC -_023320D8: - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D1DC - mov sl, r0 - b _023326CC - arm_func_end ov29_023320BC - - arm_func_start ov29_023320F4 -ov29_023320F4: ; 0x023320F4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232CEAC - mov sl, r0 - b _023326CC - arm_func_end ov29_023320F4 - - arm_func_start ov29_02332110 -ov29_02332110: ; 0x02332110 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D22C - mov sl, r0 - b _023326CC - arm_func_end ov29_02332110 - - arm_func_start ov29_0233212C -ov29_0233212C: ; 0x0233212C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D270 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233212C - - arm_func_start ov29_02332148 -ov29_02332148: ; 0x02332148 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D280 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332148 - - arm_func_start ov29_02332164 -ov29_02332164: ; 0x02332164 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D298 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332164 - - arm_func_start ov29_02332180 -ov29_02332180: ; 0x02332180 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D2E8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332180 - - arm_func_start ov29_0233219C -ov29_0233219C: ; 0x0233219C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D368 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233219C - - arm_func_start ov29_023321B8 -ov29_023321B8: ; 0x023321B8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D378 - mov sl, r0 - b _023326CC - arm_func_end ov29_023321B8 - - arm_func_start ov29_023321D4 -ov29_023321D4: ; 0x023321D4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D3D8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023321D4 - - arm_func_start ov29_023321F0 -ov29_023321F0: ; 0x023321F0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D400 - mov sl, r0 - b _023326CC - arm_func_end ov29_023321F0 - - arm_func_start ov29_0233220C -ov29_0233220C: ; 0x0233220C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D418 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233220C - - arm_func_start ov29_02332228 -ov29_02332228: ; 0x02332228 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D4AC - mov sl, r0 - b _023326CC - arm_func_end ov29_02332228 - - arm_func_start ov29_02332244 -ov29_02332244: ; 0x02332244 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D560 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332244 - - arm_func_start ov29_02332260 -ov29_02332260: ; 0x02332260 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D620 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332260 - - arm_func_start ov29_0233227C -ov29_0233227C: ; 0x0233227C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D6B0 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233227C - - arm_func_start ov29_02332298 -ov29_02332298: ; 0x02332298 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D6D0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332298 - - arm_func_start ov29_023322B4 -ov29_023322B4: ; 0x023322B4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E2B8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023322B4 - - arm_func_start ov29_023322D0 -ov29_023322D0: ; 0x023322D0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D6E8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023322D0 - - arm_func_start ov29_023322EC -ov29_023322EC: ; 0x023322EC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D738 - mov sl, r0 - b _023326CC - arm_func_end ov29_023322EC - - arm_func_start ov29_02332308 -ov29_02332308: ; 0x02332308 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D7F8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332308 - - arm_func_start ov29_02332324 -ov29_02332324: ; 0x02332324 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D860 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332324 - - arm_func_start ov29_02332340 -ov29_02332340: ; 0x02332340 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D8FC - mov sl, r0 - b _023326CC - arm_func_end ov29_02332340 - - arm_func_start ov29_0233235C -ov29_0233235C: ; 0x0233235C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D90C - mov sl, r0 - b _023326CC - arm_func_end ov29_0233235C - - arm_func_start ov29_02332378 -ov29_02332378: ; 0x02332378 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D97C - mov sl, r0 - b _023326CC - arm_func_end ov29_02332378 - - arm_func_start ov29_02332394 -ov29_02332394: ; 0x02332394 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232D9E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332394 - - arm_func_start ov29_023323B0 -ov29_023323B0: ; 0x023323B0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DAD0 - mov sl, r0 - b _023326CC - arm_func_end ov29_023323B0 - - arm_func_start ov29_023323CC -ov29_023323CC: ; 0x023323CC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DC54 - mov sl, r0 - b _023326CC - arm_func_end ov29_023323CC - - arm_func_start ov29_023323E8 -ov29_023323E8: ; 0x023323E8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DC64 - mov sl, r0 - b _023326CC - arm_func_end ov29_023323E8 - - arm_func_start ov29_02332404 -ov29_02332404: ; 0x02332404 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DD78 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332404 - - arm_func_start ov29_02332420 -ov29_02332420: ; 0x02332420 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DCD4 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332420 - - arm_func_start ov29_0233243C -ov29_0233243C: ; 0x0233243C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DDAC - mov sl, r0 - b _023326CC - arm_func_end ov29_0233243C - - arm_func_start ov29_02332458 -ov29_02332458: ; 0x02332458 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DE84 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332458 - - arm_func_start ov29_02332474 -ov29_02332474: ; 0x02332474 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DF38 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332474 - - arm_func_start ov29_02332490 -ov29_02332490: ; 0x02332490 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232DFC8 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332490 - - arm_func_start ov29_023324AC -ov29_023324AC: ; 0x023324AC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E084 - mov sl, r0 - b _023326CC - arm_func_end ov29_023324AC - - arm_func_start ov29_023324C8 -ov29_023324C8: ; 0x023324C8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E0E4 - mov sl, r0 - b _023326CC - arm_func_end ov29_023324C8 - - arm_func_start ov29_023324E4 -ov29_023324E4: ; 0x023324E4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E0F8 - mov sl, r0 - b _023326CC - arm_func_end ov29_023324E4 - - arm_func_start ov29_02332500 -ov29_02332500: ; 0x02332500 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E130 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332500 - - arm_func_start ov29_0233251C -ov29_0233251C: ; 0x0233251C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E274 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233251C - - arm_func_start ov29_02332538 -ov29_02332538: ; 0x02332538 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E368 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332538 - - arm_func_start ov29_02332554 -ov29_02332554: ; 0x02332554 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E3D0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332554 - - arm_func_start ov29_02332570 -ov29_02332570: ; 0x02332570 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E400 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332570 - - arm_func_start ov29_0233258C -ov29_0233258C: ; 0x0233258C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E48C - mov sl, r0 - b _023326CC - arm_func_end ov29_0233258C - - arm_func_start ov29_023325A8 -ov29_023325A8: ; 0x023325A8 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E4A0 - mov sl, r0 - b _023326CC - arm_func_end ov29_023325A8 - - arm_func_start ov29_023325C4 -ov29_023325C4: ; 0x023325C4 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E560 - mov sl, r0 - b _023326CC - arm_func_end ov29_023325C4 - - arm_func_start ov29_023325E0 -ov29_023325E0: ; 0x023325E0 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E624 - mov sl, r0 - b _023326CC - arm_func_end ov29_023325E0 - - arm_func_start ov29_023325FC -ov29_023325FC: ; 0x023325FC - ldr r0, [sp, #0x78] - mov r1, r4 - str r0, [sp] - mov r0, sb - mov r2, r8 - mov r3, r7 - bl ov29_0232E67C - mov sl, r0 - b _023326CC - arm_func_end ov29_023325FC - - arm_func_start ov29_02332620 -ov29_02332620: ; 0x02332620 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E6E0 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332620 - - arm_func_start ov29_0233263C -ov29_0233263C: ; 0x0233263C - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E714 - mov sl, r0 - b _023326CC - arm_func_end ov29_0233263C - - arm_func_start ov29_02332658 -ov29_02332658: ; 0x02332658 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E734 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332658 - - arm_func_start ov29_02332674 -ov29_02332674: ; 0x02332674 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E744 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332674 - - arm_func_start ov29_02332690 -ov29_02332690: ; 0x02332690 - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E750 - mov sl, r0 - b _023326CC - arm_func_end ov29_02332690 - - arm_func_start ov29_023326AC -ov29_023326AC: ; 0x023326AC - mov r0, sb - mov r1, r4 - mov r2, r8 - mov r3, r7 - bl ov29_0232E794 - mov sl, r0 - b _023326CC -_023326C8: - mov sl, #0 -_023326CC: - cmp sl, #0 - ldreq r0, [sp, #0x74] - addeq r0, r0, #1 - moveq r0, r0, lsl #0x10 - moveq r0, r0, asr #0x10 - streq r0, [sp, #0x74] - beq _02332704 - ldr r0, [sp, #0x78] - ldr r1, _023329D4 ; =0x02353718 - add r0, r0, #1 - mov r0, r0, lsl #0x10 - str r4, [r1] - mov r0, r0, asr #0x10 - str r0, [sp, #0x78] -_02332704: - bl IsFloorOver - cmp r0, #0 - bne _02332830 - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _02332738 - ldr r0, _023329D8 ; =0x000001F6 - cmp r6, r0 - bne _02332738 - bl IsFloorOver - cmp r0, #0 - bne _02332830 -_02332738: - ldr r0, [sp, #0x6c] - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _0233275C - ldr r0, [sp, #0x6c] - mov r1, r0 - ldr r1, [r1, #0xb4] - ldrb r1, [r1, #0x4c] - bl ov29_02304A48 -_0233275C: - cmp sl, #0 - bne _02332790 - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _023327C8 - mov r0, r4 - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrneb r0, [r5, #6] - cmpne r0, #0 - strneb fp, [r5, #0x108] - b _023327C8 -_02332790: - mov r0, r8 - bl ov29_02324534 - cmp r0, #0 - beq _023327C8 - ldr r0, [sp, #0x58] - cmp r0, #0 - bne _023327C8 - mov r0, sb - mov r1, #0 - bl DungeonRandOutcomeUserAction - cmp r0, #0 - ldrne r0, _023329DC ; =0x0237CA68 - movne r1, #1 - strneb r1, [r0] -_023327C8: - mov r0, r4 - bl EntityIsValid__0232E840 - cmp r0, #0 - movne r0, #1 - strneb r0, [r5, #0x162] - cmp r6, #0x89 - beq _02332818 - mov r0, sb - bl ov29_02321A78 - mov r0, sb - mov r1, r4 - bl ov29_02321CF0 - mov r0, sb - mov r1, r4 - mov r2, r8 - bl ov29_022F94F0 - mov r1, r4 - mov r0, sb - mov r2, r8 - bl ov29_022F9744 -_02332818: - ldr r0, [sp, #0x7c] - add r0, r0, #1 - str r0, [sp, #0x7c] -_02332824: - ldr r0, [sp, #0x7c] - cmp r0, #0x40 - blt _0232E92C -_02332830: - ldr r0, [sp, #0x80] - cmp r0, #0 - beq _02332858 - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrne r1, [sb, #0xb4] - movne r0, #0 - strneb r0, [r1, #0x166] - strneb r0, [r1, #0x167] -_02332858: - mov r0, r6 - bl IsHealingWishOrLunarDance - cmp r0, #0 - beq _0233289C - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _0233289C - ldr r0, [sb, #0xb4] - ldr r3, _023329E0 ; =0x0000023A - ldrsh r1, [r0, #0x10] - mov r0, sb - mov r2, #0x17 - sub r1, r1, #1 - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ov29_0230D11C -_0233289C: - ldr r0, [sp, #0x70] - cmp r0, #0 - ldrle r0, [sp, #0x74] - cmple r0, #0 - ble _02332930 - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _02332930 - cmp r7, #0 - bne _02332930 - ldr r0, [sb, #0xb4] - ldrb r0, [r0, #0xbd] - cmp r0, #1 - cmpne r6, #0xe3 - beq _02332930 - mov r0, sb - mov r1, #0x2d - bl IqSkillIsEnabled - cmp r0, #0 - beq _02332930 - mov r0, sb - mov r1, r8 - mov r2, #0 - bl GetEntityMoveTargetAndRange - and r0, r0, #0xf0 - cmp r0, #0x50 - beq _02332930 - ldrb r1, [sb, #0xb0] - ldr r3, _023329E4 ; =0x00000EC2 - mov r0, sb - add r1, r1, #4 - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #29 - add r1, r2, r1, ror #29 - mov r2, #1 - bl ov29_023201D0 -_02332930: - bl IsFloorOver - cmp r0, #0 - bne _023329CC - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrne r4, [sb, #0xb4] - ldrneb r0, [r4, #0x15e] - cmpne r0, #0 - beq _02332970 - mov r2, #0 - mov r0, sb - mov r1, sb - mov r3, r2 - strb r2, [r4, #0x15e] - bl TryWarp -_02332970: - mov r0, sb - bl EntityIsValid__0232E840 - cmp r0, #0 - beq _023329CC - ldr r4, [sb, #0xb4] - ldrb r0, [r4, #0x15f] - cmp r0, #0 - beq _023329B8 - add r0, sp, #0x9c - mov r5, #0 - strb r5, [r4, #0x15f] - ldr r2, [r0] - str r5, [sp] - mov r0, sb - mov r1, sb - mov r3, #2 - str r5, [sp, #4] - bl LowerOffensiveStat -_023329B8: - ldrh r1, [r8, #4] - ldr r0, _023329D8 ; =0x000001F6 - cmp r1, r0 - moveq r0, #0 - streqb r0, [r4, #0x170] -_023329CC: - add sp, sp, #0xf0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023329D4: .word 0x02353718 -_023329D8: .word 0x000001F6 -_023329DC: .word 0x0237CA68 -_023329E0: .word 0x0000023A -_023329E4: .word 0x00000EC2 - arm_func_end ov29_023326AC - - arm_func_start ExclusiveItemEffectIsActive__023329E8 -ExclusiveItemEffectIsActive__023329E8: ; 0x023329E8 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__023329E8 - - arm_func_start DefenderAbilityIsActive__02332A0C -DefenderAbilityIsActive__02332A0C: ; 0x02332A0C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - mov r4, r2 - cmp r0, r5 - beq _02332A60 - cmp r0, #0 - moveq r1, #0 - beq _02332A40 - ldr r1, [r0] - cmp r1, #1 - moveq r1, #1 - movne r1, #0 - and r1, r1, #0xff -_02332A40: - cmp r1, #0 - cmpne r3, #0 - beq _02332A60 - mov r1, #0x53 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_02332A60: - mov r0, r5 - mov r1, r4 - bl AbilityIsActive2 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DefenderAbilityIsActive__02332A0C - - arm_func_start ov29_02332A70 -ov29_02332A70: ; 0x02332A70 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x28 - mov r5, r2 - mov r6, r1 - mov r7, r0 - mov r1, r5 - mov r4, r3 - bl GetMoveTypeForMonster - mov sb, r0 - mov r0, r7 - mov r1, r5 - bl GetMovePower - mov r8, r0 - mov r0, r5 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0x14 - str r1, [sp, #4] - mov r0, #0x100 - str r0, [sp, #8] - ldrh ip, [r5, #4] - mov r1, #1 - mov r2, sb - str ip, [sp, #0xc] - str r1, [sp, #0x10] - mov r3, r8 - mov r0, r7 - mov r1, r6 - bl CalcDamage - mov r1, r4 - mov r0, r5 - bl ov29_02324E44 - str r0, [sp] - mov r1, r6 - mov r2, r5 - mov r0, r7 - add r3, sp, #0x14 - bl CalcDamageFinal - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02332A70 - - arm_func_start DealDamage -DealDamage: ; 0x02332B20 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x28 - mov r5, r2 - mov r6, r1 - mov r7, r0 - mov r1, r5 - mov r4, r3 - bl GetMoveTypeForMonster - mov sb, r0 - mov r0, r7 - mov r1, r5 - bl GetMovePower - mov r8, r0 - mov r0, r5 - bl GetMoveCritChance - str r0, [sp] - add r0, sp, #0x14 - stmib sp, {r0, r4} - ldrh r4, [r5, #4] - mov r2, sb - mov r3, r8 - mov ip, #1 - str r4, [sp, #0xc] - mov r0, r7 - mov r1, r6 - str ip, [sp, #0x10] - bl CalcDamage - ldr r1, [sp, #0x48] - mov r0, r5 - bl ov29_02324E44 - str r0, [sp] - mov r1, r6 - mov r2, r5 - mov r0, r7 - add r3, sp, #0x14 - bl CalcDamageFinal - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end DealDamage - - arm_func_start ov29_02332BB8 -ov29_02332BB8: ; 0x02332BB8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - mov r5, r2 - mov r6, r1 - mov r1, r5 - mov r7, r0 - mov r4, r3 - bl GetMovePower - ldrsh r1, [sp, #0x48] - add r0, r1, r0 - mov r1, r0, lsl #0x10 - mov r0, r5 - mov r8, r1, asr #0x10 - bl GetMoveCritChance - str r0, [sp] - add r0, sp, #0x14 - stmib sp, {r0, r4} - ldrh r4, [r5, #4] - mov r2, #1 - mov r3, r8 - str r4, [sp, #0xc] - str r2, [sp, #0x10] - ldrb r2, [sp, #0x44] - mov r0, r7 - mov r1, r6 - bl CalcDamage - ldr r1, [sp, #0x40] - mov r0, r5 - bl ov29_02324E44 - str r0, [sp] - mov r1, r6 - mov r2, r5 - mov r0, r7 - add r3, sp, #0x14 - bl CalcDamageFinal - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_02332BB8 - - arm_func_start CalcDamageProjectile -CalcDamageProjectile: ; 0x02332C4C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - mov r4, r2 - mov r5, r1 - mov r1, r4 - mov r6, r0 - mov r8, r3 - bl GetMoveTypeForMonster - mov r7, r0 - mov r0, r4 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0x14 - str r1, [sp, #4] - ldr r0, [sp, #0x40] - mov r1, #1 - str r0, [sp, #8] - ldrh ip, [r4, #4] - mov r2, r7 - mov r3, r8 - str ip, [sp, #0xc] - str r1, [sp, #0x10] - mov r0, r6 - mov r1, r5 - bl CalcDamage - ldr r1, [sp, #0x44] - mov r0, r4 - bl ov29_02324E44 - str r0, [sp] - mov r1, r5 - mov r2, r4 - mov r0, r6 - add r3, sp, #0x14 - bl CalcDamageFinal - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end CalcDamageProjectile - - arm_func_start ov29_02332CDC -ov29_02332CDC: ; 0x02332CDC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x28 - mov r4, r3 - mov r5, r1 - mov r1, r4 - mov r6, r0 - mov r8, r2 - bl GetMovePower - mov r7, r0 - mov r0, r4 - bl GetMoveCritChance - str r0, [sp] - add r1, sp, #0x14 - str r1, [sp, #4] - ldr r0, [sp, #0x40] - mov r1, #1 - str r0, [sp, #8] - ldrh ip, [r4, #4] - mov r2, r8 - mov r3, r7 - str ip, [sp, #0xc] - str r1, [sp, #0x10] - mov r0, r6 - mov r1, r5 - bl CalcDamage - ldr r1, [sp, #0x44] - mov r0, r4 - bl ov29_02324E44 - str r0, [sp] - mov r1, r5 - mov r2, r4 - mov r0, r6 - add r3, sp, #0x14 - bl CalcDamageFinal - add sp, sp, #0x28 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_02332CDC - - arm_func_start CalcDamageFinal -CalcDamageFinal: ; 0x02332D6C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - ldr r4, [r8, #0xb4] - mov r6, r3 - mov r3, #1 - mov r7, r1 - mov r5, r2 - str r3, [sp] - bl MoveHitCheck - cmp r0, #0 - beq _02332E3C - ldrh r1, [r5, #4] - ldr r0, _02332F04 ; =0x0000013A - mov r2, #0x2e - cmp r1, r0 - moveq r5, #1 - mov r0, r8 - mov r1, r7 - mov r3, #1 - movne r5, #0 - bl DefenderAbilityIsActive__02332A0C - cmp r0, #0 - beq _02332DFC - ldr r1, _02332F08 ; =0x02353538 - ldr r2, _02332F0C ; =0x000003E7 - ldr r0, [r1] - add r0, r0, #0x700 - strh r2, [r0, #0x82] - ldr r0, [r1] - add r0, r0, #0x19000 - str r7, [r0, #0x908] - ldr r0, [r1] - ldrh r1, [r7, #0x26] - add r0, r0, #0x19000 - str r1, [r0, #0x910] -_02332DFC: - ldrsh r0, [sp, #0x28] - mov ip, #1 - str ip, [sp] - str r0, [sp, #4] - mov r3, r5 - mov r0, r8 - mov r1, r7 - mov r2, r6 - str ip, [sp, #8] - mov r5, #0 - str r5, [sp, #0xc] - bl ov29_0230863C - mov r0, r5 - strb r0, [r4, #0x166] - strb r0, [r4, #0x167] - b _02332ED0 -_02332E3C: - bl ov29_0234B034 - mov r3, #0 - str r3, [sp] - ldr r2, [r7, #0xb4] - mov r1, #1 - bl ov29_0230040C - mov r0, r8 - bl ov29_022E272C - cmp r0, #0 - beq _02332EA8 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - beq _02332EA8 - mov r2, #1 - ldr r0, _02332F10 ; =0x0000270F - mov r1, r7 - sub r3, r2, #2 - bl ov29_022EA718 - ldr r2, _02332F14 ; =0x00000EC3 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdQuietCheckUserTarget - mov r0, r8 - mov r1, r7 - bl ov29_022E576C - b _02332EB8 -_02332EA8: - ldr r2, _02332F14 ; =0x00000EC3 - mov r0, r8 - mov r1, r7 - bl LogMessageByIdWithPopupCheckUserTarget -_02332EB8: - mov r2, #1 - strb r2, [r6, #0x10] - ldrh r1, [r5, #4] - rsb r0, r2, #0x164 - cmp r1, r0 - strneb r2, [r4, #0x166] -_02332ED0: - ldrb r0, [r6, #0x10] - cmp r0, #0 - movne r0, #0 - bne _02332EFC - mov r0, r7 - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrne r0, [r7, #0xb4] - movne r1, #1 - strneb r1, [r0, #0x164] - ldr r0, [r6] -_02332EFC: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02332F04: .word 0x0000013A -_02332F08: .word 0x02353538 -_02332F0C: .word 0x000003E7 -_02332F10: .word 0x0000270F -_02332F14: .word 0x00000EC3 - arm_func_end CalcDamageFinal - - arm_func_start ov29_02332F18 -ov29_02332F18: ; 0x02332F18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x24 - mov r6, r2 - mov r7, r1 - mov r1, r6 - mov r8, r0 - mov r5, r3 - bl GetMoveTypeForMonster - mov r4, r0 - ldrh r0, [r6, #4] - bl GetMoveCategory - mov r3, r0 - str r5, [sp] - add r1, sp, #0x10 - str r1, [sp, #4] - mov r2, r4 - mov r0, r8 - mov r1, r7 - bl ov29_0230D088 - ldr r1, [sp, #0x40] - mov r0, r6 - bl ov29_02324E44 - mov r1, #1 - str r1, [sp] - stmib sp, {r0, r1} - mov r3, #0 - mov r0, r8 - str r3, [sp, #0xc] - mov r1, r7 - add r2, sp, #0x10 - bl ov29_0230863C - ldrb r0, [sp, #0x20] - cmp r0, #0 - movne r0, #0 - bne _02332FC0 - mov r0, r7 - bl EntityIsValid__0232E840 - cmp r0, #0 - ldrne r0, [r7, #0xb4] - movne r1, #1 - strneb r1, [r0, #0x164] - ldr r0, [sp, #0x10] -_02332FC0: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ov29_02332F18 - - arm_func_start ov29_02332FC8 -ov29_02332FC8: ; 0x02332FC8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, r4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsh r1, [r5, #4] - ldrsh r0, [r4, #4] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - bgt _02333010 - ldrsh r1, [r5, #6] - ldrsh r0, [r4, #6] - sub r0, r1, r0 - bl Abs - cmp r0, #1 - ble _02333018 -_02333010: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02333018: - add r0, r4, #4 - add r1, r5, #4 - bl GetDirectionTowardsPosition - mov r1, r0 - mov r0, r4 - bl CanAttackInDirection - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02332FC8 - - arm_func_start ov29_02333044 -ov29_02333044: ; 0x02333044 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - add r0, r5, #4 - add r1, r1, #4 - ldr r4, [r5, #0xb4] - bl GetDirectionTowardsPosition - mov r1, r0 - and r2, r1, #7 - mov r0, r5 - strb r2, [r4, #0x4c] - bl ov29_02304A48 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02333044 - - arm_func_start StatusCheckerCheck -StatusCheckerCheck: ; 0x02333074 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldrh r2, [r1, #4] - ldr r1, _02333F98 ; =0x00000109 - mov r4, r0 - cmp r2, r1 - ldr r3, [r4, #0xb4] - bgt _02333314 - cmp r2, r1 - bge _02333834 - cmp r2, #0x9c - bgt _023331F4 - bge _023339D8 - cmp r2, #0x4a - bgt _02333170 - bge _0233397C - cmp r2, #0x2b - bgt _02333114 - bge _02333BCC - cmp r2, #0x13 - bgt _023330F8 - bge _02333620 - sub r1, r2, #7 - cmp r1, #7 - addls pc, pc, r1, lsl #2 - b _02333F90 -_023330D8: ; jump table - b _02333BCC ; case 0 - b _023339F0 ; case 1 - b _02333F90 ; case 2 - b _02333F90 ; case 3 - b _02333F90 ; case 4 - b _02333918 ; case 5 - b _02333F90 ; case 6 - b _0233360C ; case 7 -_023330F8: - cmp r2, #0x26 - bgt _02333108 - beq _02333634 - b _02333F90 -_02333108: - cmp r2, #0x28 - beq _02333648 - b _02333F90 -_02333114: - cmp r2, #0x37 - bgt _0233313C - bge _02333660 - cmp r2, #0x31 - bgt _02333130 - beq _02333A84 - b _02333F90 -_02333130: - cmp r2, #0x33 - beq _02333634 - b _02333F90 -_0233313C: - cmp r2, #0x3d - bgt _02333164 - cmp r2, #0x38 - blt _02333F90 - beq _02333B00 - cmp r2, #0x3a - beq _023336B0 - cmp r2, #0x3d - beq _023336D8 - b _02333F90 -_02333164: - cmp r2, #0x46 - beq _023336B0 - b _02333F90 -_02333170: - cmp r2, #0x68 - bgt _023331B0 - bge _02333730 - cmp r2, #0x62 - bgt _02333194 - bge _02333700 - cmp r2, #0x5f - beq _023336EC - b _02333F90 -_02333194: - cmp r2, #0x63 - bgt _023331A4 - beq _02333714 - b _02333F90 -_023331A4: - cmp r2, #0x66 - beq _02333A98 - b _02333F90 -_023331B0: - cmp r2, #0x86 - bgt _023331D8 - bge _02333954 - cmp r2, #0x80 - bgt _023331CC - beq _02333744 - b _02333F90 -_023331CC: - cmp r2, #0x82 - beq _02333758 - b _02333F90 -_023331D8: - cmp r2, #0x8d - bgt _023331E8 - beq _0233392C - b _02333F90 -_023331E8: - cmp r2, #0x94 - beq _02333B14 - b _02333F90 -_023331F4: - cmp r2, #0xd7 - bgt _02333284 - bge _023336C4 - cmp r2, #0xb9 - bgt _02333240 - bge _02333BF4 - cmp r2, #0xa9 - bgt _02333224 - bge _02333780 - cmp r2, #0xa0 - beq _02333AB8 - b _02333F90 -_02333224: - cmp r2, #0xb5 - bgt _02333234 - beq _02333B28 - b _02333F90 -_02333234: - cmp r2, #0xb8 - beq _02333BE0 - b _02333F90 -_02333240: - cmp r2, #0xc3 - bgt _02333268 - bge _02333660 - cmp r2, #0xba - bgt _0233325C - beq _023336B0 - b _02333F90 -_0233325C: - cmp r2, #0xbb - beq _02333BCC - b _02333F90 -_02333268: - cmp r2, #0xca - bgt _02333278 - beq _023336B0 - b _02333F90 -_02333278: - cmp r2, #0xd4 - beq _02333A44 - b _02333F90 -_02333284: - cmp r2, #0xec - bgt _023332C4 - bge _023337D4 - cmp r2, #0xe1 - bgt _023332A8 - bge _02333B3C - cmp r2, #0xdf - beq _02333940 - b _02333F90 -_023332A8: - cmp r2, #0xe8 - bgt _023332B8 - beq _023339B0 - b _02333F90 -_023332B8: - cmp r2, #0xe9 - beq _02333794 - b _02333F90 -_023332C4: - sub r0, r1, #8 - cmp r2, r0 - bgt _023332F0 - bge _02333674 - cmp r2, #0xf5 - bgt _023332E4 - beq _0233380C - b _02333F90 -_023332E4: - cmp r2, #0x100 - beq _02333820 - b _02333F90 -_023332F0: - sub r0, r1, #7 - cmp r2, r0 - bgt _02333304 - beq _023336B0 - b _02333F90 -_02333304: - sub r0, r1, #6 - cmp r2, r0 - beq _0233376C - b _02333F90 -_02333314: - add r5, r1, #0x68 - cmp r2, r5 - bgt _023334B4 - bge _02333BCC - add r5, r1, #0x34 - cmp r2, r5 - bgt _02333414 - bge _02333820 - cmp r2, #0x120 - bgt _02333398 - bge _02333884 - add r4, r1, #0x11 - cmp r2, r4 - bgt _02333378 - mov r0, r4 - cmp r2, r0 - bge _02333B60 - add r0, r1, #4 - cmp r2, r0 - bgt _02333F90 - cmp r2, #0x10c - blt _02333F90 - cmpne r2, r0 - beq _02333BCC - b _02333F90 -_02333378: - cmp r2, #0x11c - bgt _02333388 - beq _02333BCC - b _02333F90 -_02333388: - add r1, r1, #0x15 - cmp r2, r1 - beq _02333850 - b _02333F90 -_02333398: - add r0, r1, #0x2a - cmp r2, r0 - bgt _023333F4 - add r0, r1, #0x24 - subs r0, r2, r0 - addpl pc, pc, r0, lsl #2 - b _023333D0 -_023333B4: ; jump table - b _02333904 ; case 0 - b _023336B0 ; case 1 - b _02333F90 ; case 2 - b _02333A98 ; case 3 - b _02333904 ; case 4 - b _02333F90 ; case 5 - b _02333A64 ; case 6 -_023333D0: - ldr r0, _02333F9C ; =0x00000127 - cmp r2, r0 - bgt _023333E4 - beq _02333B84 - b _02333F90 -_023333E4: - add r0, r0, #3 - cmp r2, r0 - beq _023338F0 - b _02333F90 -_023333F4: - add r0, r1, #0x30 - cmp r2, r0 - bgt _02333408 - beq _02333898 - b _02333F90 -_02333408: - cmp r2, #0x13c - beq _023338AC - b _02333F90 -_02333414: - cmp r2, #0x154 - bgt _02333464 - bge _023336D8 - add r0, r1, #0x44 - cmp r2, r0 - bgt _02333440 - bge _02333660 - add r0, r1, #0x36 - cmp r2, r0 - beq _02333B9C - b _02333F90 -_02333440: - add r0, r1, #0x45 - cmp r2, r0 - bgt _02333454 - beq _02333BB8 - b _02333F90 -_02333454: - add r0, r1, #0x49 - cmp r2, r0 - beq _023338C0 - b _02333F90 -_02333464: - cmp r2, #0x16c - bgt _02333494 - bge _02333990 - add r0, r1, #0x4e - cmp r2, r0 - bgt _02333484 - beq _023338D4 - b _02333F90 -_02333484: - add r0, r1, #0x54 - cmp r2, r0 - beq _02333700 - b _02333F90 -_02333494: - add r0, r1, #0x66 - cmp r2, r0 - bgt _023334A8 - beq _02333BCC - b _02333F90 -_023334A8: - cmp r2, #0x170 - beq _02333BCC - b _02333F90 -_023334B4: - cmp r2, #0x1d8 - bgt _02333578 - bge _02333634 - add r5, r1, #0x7e - cmp r2, r5 - bgt _02333520 - mov r4, r5 - cmp r2, r4 - bge _02333968 - add r4, r1, #0x71 - cmp r2, r4 - bgt _02333500 - mov r0, r4 - cmp r2, r0 - bge _02333ACC - add r0, r1, #0x6e - cmp r2, r0 - beq _02333BCC - b _02333F90 -_02333500: - cmp r2, #0x17c - bgt _02333510 - beq _02333A98 - b _02333F90 -_02333510: - add r1, r1, #0x7c - cmp r2, r1 - beq _02333A1C - b _02333F90 -_02333520: - cmp r2, #0x1bc - bgt _02333550 - bge _023336EC - add r0, r1, #0x8d - cmp r2, r0 - bgt _02333540 - beq _02333BCC - b _02333F90 -_02333540: - add r0, r1, #0xa9 - cmp r2, r0 - beq _02333CEC - b _02333F90 -_02333550: - add r5, r1, #0xb6 - cmp r2, r5 - bgt _0233356C - mov r0, r5 - cmp r2, r0 - beq _02333D00 - b _02333F90 -_0233356C: - cmp r2, #0x1d0 - beq _02333DE0 - b _02333F90 -_02333578: - add r0, r1, #0xea - cmp r2, r0 - bgt _023335C0 - bge _02333F24 - cmp r2, #0x1ec - bgt _023335A0 - bge _02333DF8 - cmp r2, #0x1e0 - beq _02333B84 - b _02333F90 -_023335A0: - add r0, r1, #0xe4 - cmp r2, r0 - bgt _023335B4 - beq _02333F10 - b _02333F90 -_023335B4: - cmp r2, #0x1f0 - beq _02333B84 - b _02333F90 -_023335C0: - rsb r0, r1, #0x320 - cmp r2, r0 - bgt _023335EC - bge _023336D8 - cmp r2, #0x208 - bgt _023335E0 - beq _02333F38 - b _02333F90 -_023335E0: - cmp r2, #0x214 - beq _02333F6C - b _02333F90 -_023335EC: - cmp r2, #0x21c - bgt _023335FC - beq _023336EC - b _02333F90 -_023335FC: - ldr r0, _02333FA0 ; =0x0000021E - cmp r2, r0 - beq _02333F80 - b _02333F90 -_0233360C: - bl GetApparentWeather - cmp r0, #5 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333620: - ldrb r0, [r3, #0xd2] - cmp r0, #0xc - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333634: - ldrb r0, [r3, #0xd5] - cmp r0, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333648: - mov r0, r4 - bl ov29_02319748 - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333660: - ldrsh r0, [r3, #0x24] - cmp r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333674: - ldrsh r0, [r3, #0x24] - cmp r0, #0x13 - bgt _023336A8 - add r0, r3, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #1 - bge _02333F90 -_023336A8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023336B0: - ldrsh r0, [r3, #0x28] - cmp r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023336C4: - ldrsh r0, [r3, #0x2a] - cmp r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023336D8: - ldrb r0, [r3, #0xd2] - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023336EC: - ldr r0, [r3, #0x110] - cmp r0, #3 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333700: - ldrb r0, [r3, #0xec] - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333714: - ldrsh r0, [r3, #0x28] - cmp r0, #0x13 - ldrgtsh r0, [r3, #0x2a] - cmpgt r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333730: - ldrb r0, [r3, #0xd5] - cmp r0, #9 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333744: - ldrb r0, [r3, #0xd2] - cmp r0, #0xb - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333758: - bl ov29_023197CC - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0233376C: - ldrb r0, [r3, #0xd5] - cmp r0, #3 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333780: - ldrsh r0, [r3, #0x2e] - cmp r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333794: - ldrb r0, [r3, #0xc4] - cmp r0, #5 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrsh r4, [r3, #0x12] - ldrsh r2, [r3, #0x16] - rsb r0, r1, #0x4f0 - ldrsh r1, [r3, #0x10] - add r2, r4, r2 - cmp r2, r0 - movgt r2, r0 - add r0, r2, r2, lsr #31 - cmp r1, r0, asr #1 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023337D4: - ldrsh r4, [r3, #0x12] - ldrsh r2, [r3, #0x16] - rsb r0, r1, #0x4f0 - add r2, r4, r2 - cmp r2, r0 - movgt r2, r0 - ldrsh r0, [r3, #0x10] - cmp r2, r0 - ble _02333804 - ldrb r0, [r3, #0x11e] - cmp r0, #0 - bne _02333F90 -_02333804: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0233380C: - ldrb r0, [r3, #0x11e] - cmp r0, #0 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333820: - ldrb r0, [r3, #0xec] - cmp r0, #3 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333834: - ldrsh r0, [r3, #0x24] - cmp r0, #0x13 - ldrgtsh r0, [r3, #0x28] - cmpgt r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333850: - ldr r1, _02333FA4 ; =0x02353538 - mov r2, #0xc - ldr r1, [r1] - ldr r3, _02333FA8 ; =0x022C6322 - add r1, r1, #0x4000 - ldrsh r1, [r1, #0xd4] - smulbb r1, r1, r2 - ldrb r1, [r3, r1] - bl MonsterIsType - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333884: - ldrsh r0, [r3, #0x26] - cmp r0, #0x13 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333898: - ldrb r0, [r3, #0xe0] - cmp r0, #2 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023338AC: - ldrb r0, [r3, #0xd5] - cmp r0, #8 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023338C0: - ldrb r0, [r3, #0xd5] - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023338D4: - ldrsh r0, [r3, #0x24] - cmp r0, #0x13 - ldrgt r0, [r3, #0x110] - cmpgt r0, #3 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023338F0: - ldrb r0, [r3, #0xd5] - cmp r0, #5 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333904: - ldrb r0, [r3, #0xd5] - cmp r0, #7 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333918: - bl GetApparentWeather - cmp r0, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0233392C: - bl GetApparentWeather - cmp r0, #2 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333940: - bl GetApparentWeather - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333954: - ldrb r0, [r3, #0xd5] - cmp r0, #2 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333968: - ldrb r0, [r3, #0xef] - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0233397C: - ldrb r0, [r3, #0xec] - cmp r0, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333990: - ldrb r0, [r3, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023339B0: - bl ov29_023007DC - cmp r0, #0 - bne _02333F90 - mov r0, r4 - mov r1, #0 - bl ov29_02300634 - cmp r0, #0 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023339D8: - bl GetTileAtEntity - bl ov29_02337E2C - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_023339F0: - bl GetTileAtEntity - mov r4, r0 - bl ov29_02337E2C - cmp r0, #0 - beq _02333A14 - ldrh r0, [r4] - and r0, r0, #3 - cmp r0, #1 - beq _02333F90 -_02333A14: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333A1C: - bl GetTileAtEntity - ldr r0, [r0, #0x10] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r0] - cmp r0, #2 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333A44: - ldr r0, _02333FA4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5b] - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333A64: - ldr r0, _02333FA4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5c] - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333A84: - ldrb r0, [r3, #0xfd] - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333A98: - ldr r0, _02333FA4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3000 - ldrb r0, [r0, #0xe38] - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333AB8: - ldrb r0, [r3, #0x11e] - cmp r0, #3 - blo _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333ACC: - ldrb r0, [r3, #0x62] - tst r0, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _02333F90 - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B00: - ldrsh r0, [r3, #0x2e] - cmp r0, #0x14 - blt _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B14: - ldrsh r0, [r3, #0x26] - cmp r0, #0x14 - blt _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B28: - ldrsh r0, [r3, #0x24] - cmp r0, #0x14 - blt _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B3C: - ldrb r0, [r3, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r3, #0xd5] - cmp r0, #6 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B60: - ldrb r0, [r3, #0xef] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl ov29_022E0880 - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B84: - add r0, r4, #4 - bl ov29_022EDC30 - cmp r0, #0 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333B9C: - ldrsh r0, [r3, #0x26] - cmp r0, #0x14 - ldrgesh r0, [r3, #0x2a] - cmpge r0, #0x14 - blt _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333BB8: - ldrb r0, [r3, #0xd8] - cmp r0, #3 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333BCC: - bl ov29_022E0880 - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333BE0: - bl Conversion2IsActive - cmp r0, #0 - beq _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333BF4: - ldrb r0, [r3, #6] - mov r5, #0 - cmp r0, #0 - beq _02333C78 - ldr r6, _02333FA4 ; =0x02353538 - b _02333C60 -_02333C0C: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333C5C - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - beq _02333C5C - ldr r1, [r7, #0xb4] - ldrsh r0, [r1, #0x24] - cmp r0, #0x14 - ldrltsh r0, [r1, #0x26] - cmplt r0, #0x14 - blt _02333C68 -_02333C5C: - add r5, r5, #1 -_02333C60: - cmp r5, #0x10 - blt _02333C0C -_02333C68: - cmp r5, #0x10 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333C78: - ldr r6, _02333FA4 ; =0x02353538 - b _02333CD4 -_02333C80: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333CD0 - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - beq _02333CD0 - ldr r1, [r7, #0xb4] - ldrsh r0, [r1, #0x24] - cmp r0, #0x14 - ldrltsh r0, [r1, #0x26] - cmplt r0, #0x14 - blt _02333CDC -_02333CD0: - add r5, r5, #1 -_02333CD4: - cmp r5, #4 - blt _02333C80 -_02333CDC: - cmp r5, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333CEC: - ldrb r0, [r3, #0xd5] - cmp r0, #0x10 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333D00: - ldrb r0, [r3, #6] - mov r5, #0 - cmp r0, #0 - beq _02333D78 - ldr r6, _02333FA4 ; =0x02353538 - b _02333D60 -_02333D18: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333D5C - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - ldrne r0, [r7, #0xb4] - ldrneb r0, [r0, #0xd5] - cmpne r0, #0x11 - bne _02333D68 -_02333D5C: - add r5, r5, #1 -_02333D60: - cmp r5, #0x10 - blt _02333D18 -_02333D68: - cmp r5, #0x10 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333D78: - ldr r6, _02333FA4 ; =0x02353538 - b _02333DC8 -_02333D80: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333DC4 - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - ldrne r0, [r7, #0xb4] - ldrneb r0, [r0, #0xd5] - cmpne r0, #0x11 - bne _02333DD0 -_02333DC4: - add r5, r5, #1 -_02333DC8: - cmp r5, #4 - blt _02333D80 -_02333DD0: - cmp r5, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333DE0: - mov r1, #0 - bl ov29_02300634 - cmp r0, #0 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333DF8: - ldrb r0, [r3, #6] - mov r5, #0 - cmp r0, #0 - beq _02333E8C - ldr r6, _02333FA4 ; =0x02353538 - b _02333E74 -_02333E10: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb38] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333E70 - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - beq _02333E70 - ldr r1, [r7, #0xb4] - ldrsh r0, [r1, #0x24] - cmp r0, #0x14 - ldrgesh r0, [r1, #0x28] - cmpge r0, #0x14 - ldrgesh r0, [r1, #0x26] - cmpge r0, #0x14 - ldrgesh r0, [r1, #0x2a] - cmpge r0, #0x14 - blt _02333E7C -_02333E70: - add r5, r5, #1 -_02333E74: - cmp r5, #0x10 - blt _02333E10 -_02333E7C: - cmp r5, #0x10 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333E8C: - ldr r6, _02333FA4 ; =0x02353538 - b _02333EF8 -_02333E94: - ldr r0, [r6] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__02333FAC - cmp r0, #0 - cmpne r7, r4 - beq _02333EF4 - mov r0, r4 - mov r1, r7 - bl ov29_022E274C - cmp r0, #0 - beq _02333EF4 - ldr r1, [r7, #0xb4] - ldrsh r0, [r1, #0x24] - cmp r0, #0x14 - ldrgesh r0, [r1, #0x28] - cmpge r0, #0x14 - ldrgesh r0, [r1, #0x26] - cmpge r0, #0x14 - ldrgesh r0, [r1, #0x2a] - cmpge r0, #0x14 - blt _02333F00 -_02333EF4: - add r5, r5, #1 -_02333EF8: - cmp r5, #4 - blt _02333E94 -_02333F00: - cmp r5, #4 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333F10: - ldrb r0, [r3, #0xf7] - cmp r0, #1 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333F24: - ldr r0, [r3, #0x110] - cmp r0, #1 - ble _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333F38: - mov r1, #0 - b _02333F54 -_02333F40: - add r0, r3, r1, lsl #1 - ldrsh r0, [r0, #0x28] - cmp r0, #0x14 - blt _02333F5C - add r1, r1, #1 -_02333F54: - cmp r1, #2 - blt _02333F40 -_02333F5C: - cmp r1, #2 - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333F6C: - ldrb r0, [r3, #0xd5] - cmp r0, #0xf - bne _02333F90 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02333F80: - ldrsh r0, [r3, #0x26] - cmp r0, #0x14 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_02333F90: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02333F98: .word 0x00000109 -_02333F9C: .word 0x00000127 -_02333FA0: .word 0x0000021E -_02333FA4: .word 0x02353538 -_02333FA8: .word 0x022C6322 - arm_func_end StatusCheckerCheck - - arm_func_start EntityIsValid__02333FAC -EntityIsValid__02333FAC: ; 0x02333FAC - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02333FAC - - arm_func_start ov29_02333FD0 -ov29_02333FD0: ; 0x02333FD0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r1 - ldr r5, [r6, #0xb4] - mov r7, r0 - ldrb r0, [r5, #0xc4] - mov r8, r2 - ldr r4, [r7, #0xb4] - cmp r0, #1 - bne _02334008 - mov r0, r8 - bl IsThawingMove - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_02334008: - ldrh r1, [r8, #4] - ldr r0, _02334CA4 ; =0x0000010A - cmp r1, r0 - bgt _0233429C - bge _023349A4 - cmp r1, #0x8a - bgt _023341C8 - bge _023349F4 - cmp r1, #0x56 - bgt _02334164 - bge _023347B0 - cmp r1, #0x4f - bgt _02334140 - bge _023344D0 - cmp r1, #0x3b - bgt _02334134 - bge _0233473C - cmp r1, #0x36 - addls pc, pc, r1, lsl #2 - b _02334C9C -_02334058: ; jump table - b _02334C9C ; case 0 - b _02334C9C ; case 1 - b _02334C9C ; case 2 - b _023344E8 ; case 3 - b _023344D0 ; case 4 - b _02334510 ; case 5 - b _02334C9C ; case 6 - b _02334C9C ; case 7 - b _02334C9C ; case 8 - b _02334C9C ; case 9 - b _02334524 ; case 10 - b _02334538 ; case 11 - b _02334C9C ; case 12 - b _02334A74 ; case 13 - b _02334C9C ; case 14 - b _02334C9C ; case 15 - b _02334C9C ; case 16 - b _0233454C ; case 17 - b _02334C9C ; case 18 - b _02334C9C ; case 19 - b _02334574 ; case 20 - b _02334588 ; case 21 - b _023345A0 ; case 22 - b _02334618 ; case 23 - b _02334A74 ; case 24 - b _02334C9C ; case 25 - b _02334C9C ; case 26 - b _02334630 ; case 27 - b _02334C9C ; case 28 - b _02334C9C ; case 29 - b _02334C9C ; case 30 - b _02334C9C ; case 31 - b _02334C9C ; case 32 - b _02334644 ; case 33 - b _023344D0 ; case 34 - b _02334658 ; case 35 - b _02334C9C ; case 36 - b _023346C0 ; case 37 - b _02334C9C ; case 38 - b _02334C9C ; case 39 - b _02334C9C ; case 40 - b _02334C9C ; case 41 - b _02334C9C ; case 42 - b _023346D4 ; case 43 - b _02334C9C ; case 44 - b _02334A74 ; case 45 - b _02334C9C ; case 46 - b _023346F0 ; case 47 - b _02334C9C ; case 48 - b _02334C9C ; case 49 - b _02334C9C ; case 50 - b _02334C9C ; case 51 - b _02334C9C ; case 52 - b _02334C9C ; case 53 - b _02334704 ; case 54 -_02334134: - cmp r1, #0x42 - beq _02334750 - b _02334C9C -_02334140: - cmp r1, #0x54 - bgt _02334158 - bge _023344D0 - cmp r1, #0x53 - beq _02334780 - b _02334C9C -_02334158: - cmp r1, #0x55 - beq _02334794 - b _02334C9C -_02334164: - cmp r1, #0x6f - bgt _02334194 - bge _023344D0 - cmp r1, #0x59 - bgt _02334188 - bge _023347B0 - cmp r1, #0x58 - beq _023347C4 - b _02334C9C -_02334188: - cmp r1, #0x6a - beq _02334618 - b _02334C9C -_02334194: - cmp r1, #0x73 - bgt _023341AC - bge _02334830 - cmp r1, #0x70 - beq _0233481C - b _02334C9C -_023341AC: - cmp r1, #0x7a - bgt _023341BC - beq _0233476C - b _02334C9C -_023341BC: - cmp r1, #0x7c - beq _0233473C - b _02334C9C -_023341C8: - cmp r1, #0xc5 - bgt _02334238 - bge _02334A40 - cmp r1, #0xac - bgt _02334204 - bge _023348B8 - cmp r1, #0x92 - bgt _023341F8 - bge _023348A4 - cmp r1, #0x8e - beq _023348A4 - b _02334C9C -_023341F8: - cmp r1, #0xab - beq _02334A74 - b _02334C9C -_02334204: - cmp r1, #0xc0 - bgt _0233421C - bge _0233473C - cmp r1, #0xbf - beq _02334A74 - b _02334C9C -_0233421C: - cmp r1, #0xc2 - bgt _0233422C - beq _023347B0 - b _02334C9C -_0233422C: - cmp r1, #0xc4 - beq _02334A54 - b _02334C9C -_02334238: - cmp r1, #0xdc - bgt _02334268 - bge _0233493C - cmp r1, #0xd1 - bgt _0233425C - bge _023348CC - cmp r1, #0xc7 - beq _02334A54 - b _02334C9C -_0233425C: - cmp r1, #0xd9 - beq _02334928 - b _02334C9C -_02334268: - cmp r1, #0xe7 - bgt _02334280 - bge _023344D0 - cmp r1, #0xe0 - beq _0233476C - b _02334C9C -_02334280: - cmp r1, #0xed - bgt _02334290 - beq _02334960 - b _02334C9C -_02334290: - cmp r1, #0xf9 - beq _02334908 - b _02334C9C -_0233429C: - add r2, r0, #0xb5 - cmp r1, r2 - bgt _023343B8 - bge _02334AB0 - add r2, r0, #0x31 - cmp r1, r2 - bgt _0233432C - bge _02334704 - add r2, r0, #0xf - cmp r1, r2 - bgt _023342FC - bge _0233473C - add r2, r0, #7 - cmp r1, r2 - bgt _023342EC - bge _023348A4 - add r0, r0, #1 - cmp r1, r0 - beq _02334928 - b _02334C9C -_023342EC: - add r0, r0, #8 - cmp r1, r0 - beq _02334A74 - b _02334C9C -_023342FC: - add r2, r0, #0x1c - cmp r1, r2 - bgt _0233431C - bge _02334A20 - add r0, r0, #0x1b - cmp r1, r0 - beq _023349E0 - b _02334C9C -_0233431C: - add r0, r0, #0x30 - cmp r1, r0 - beq _023349B8 - b _02334C9C -_0233432C: - add r2, r0, #0x55 - cmp r1, r2 - bgt _0233436C - bge _02334618 - add r2, r0, #0x3d - cmp r1, r2 - bgt _0233435C - bge _023349F4 - add r0, r0, #0x3c - cmp r1, r0 - beq _02334A0C - b _02334C9C -_0233435C: - add r0, r0, #0x3f - cmp r1, r0 - beq _023349CC - b _02334C9C -_0233436C: - add r2, r0, #0x74 - cmp r1, r2 - bgt _0233438C - bge _02334A74 - add r0, r0, #0x71 - cmp r1, r0 - beq _023349A4 - b _02334C9C -_0233438C: - add r2, r0, #0xac - cmp r1, r2 - bgt _023343A8 - add r0, r0, #0xac - cmp r1, r0 - beq _02334A88 - b _02334C9C -_023343A8: - add r0, r0, #0xad - cmp r1, r0 - beq _02334A9C - b _02334C9C -_023343B8: - add r2, r0, #0xe3 - cmp r1, r2 - bgt _02334450 - bge _02334B64 - add r2, r0, #0xc8 - cmp r1, r2 - bgt _02334408 - bge _02334B00 - add r2, r0, #0xb8 - cmp r1, r2 - bgt _023343FC - add r0, r0, #0xb8 - cmp r1, r0 - bge _02334AEC - cmp r1, #0x1c0 - beq _02334AC4 - b _02334C9C -_023343FC: - cmp r1, #0x1c8 - beq _02334524 - b _02334C9C -_02334408: - add r2, r0, #0xd8 - cmp r1, r2 - bgt _02334428 - bge _023348CC - add r0, r0, #0xd4 - cmp r1, r0 - beq _02334B14 - b _02334C9C -_02334428: - add r2, r0, #0xd9 - cmp r1, r2 - bgt _02334444 - add r0, r0, #0xd9 - cmp r1, r0 - beq _023344D0 - b _02334C9C -_02334444: - cmp r1, #0x1ec - beq _02334B28 - b _02334C9C -_02334450: - add r2, r0, #0xf8 - cmp r1, r2 - bgt _02334494 - bge _02334C00 - add r2, r0, #0xf0 - cmp r1, r2 - bgt _02334484 - add r0, r0, #0xf0 - cmp r1, r0 - bge _02334B78 - cmp r1, #0x1f8 - beq _0233481C - b _02334C9C -_02334484: - add r0, r0, #0xf7 - cmp r1, r0 - beq _02334BD8 - b _02334C9C -_02334494: - cmp r1, #0x210 - bgt _023344B0 - bge _02334C18 - ldr r0, _02334CA8 ; =0x0000020D - cmp r1, r0 - beq _023349F4 - b _02334C9C -_023344B0: - cmp r1, #0x214 - bgt _023344C0 - beq _02334C60 - b _02334C9C -_023344C0: - add r0, r0, #0x10c - cmp r1, r0 - beq _02334C74 - b _02334C9C -_023344D0: - mov r0, r6 - bl ov29_023007A8 - cmp r0, #0 - beq _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023344E8: - ldrb r0, [r5, #0xbd] - cmp r0, #4 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r6 - bl ov29_023007A8 - cmp r0, #0 - beq _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334510: - ldrb r0, [r5, #0xbd] - cmp r0, #3 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334524: - ldrsh r0, [r5, #0x2e] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334538: - ldr r0, [r5, #0x34] - cmp r0, #0x3f - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0233454C: - ldrb r0, [r5, #0xd0] - cmp r0, #6 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r5, #0x124 - bl ov29_02334CAC - cmp r0, #0 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334574: - ldrsh r0, [r5, #0x10] - cmp r0, #2 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334588: - ldrsh r1, [r5, #0x10] - ldrsh r0, [r4, #0x10] - cmp r1, r0 - bgt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023345A0: - mov r3, #0 - mov r0, r3 - mov r1, #1 - b _023345DC -_023345B0: - add r2, r5, r3, lsl #3 - ldrb r2, [r2, #0x124] - tst r2, #1 - movne r4, r1 - moveq r4, r0 - tst r4, #0xff - beq _023345D8 - tst r2, #0x20 - movne r0, #1 - bne _023345F4 -_023345D8: - add r3, r3, #1 -_023345DC: - cmp r3, #4 - blt _023345B0 - ldrb r0, [r5, #0x144] - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 -_023345F4: - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - add r0, r5, #0x124 - bl ov29_02334CAC - cmp r0, #0 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334618: - ldr r0, [r6, #0xb4] - ldr r0, [r0, #0x110] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334630: - ldr r0, [r5, #0x3c] - cmp r0, #0x3f - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334644: - ldrsh r0, [r5, #0x2a] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334658: - mov r4, #0 - add r3, r5, #0x124 - mov r1, r4 - mov r2, #1 - b _023346A4 -_0233466C: - ldrb r5, [r3, r4, lsl #3] - add r0, r3, r4, lsl #3 - tst r5, #1 - movne r6, r2 - moveq r6, r1 - tst r6, #0xff - beq _023346A0 - tst r5, #0x10 - beq _023346A0 - ldrb r0, [r0, #6] - cmp r0, #0 - moveq r0, #1 - beq _023346B0 -_023346A0: - add r4, r4, #1 -_023346A4: - cmp r4, #4 - blt _0233466C - mov r0, #0 -_023346B0: - cmp r0, #0 - beq _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023346C0: - ldrb r0, [r5, #0xec] - cmp r0, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023346D4: - ldr r0, [r5, #0x34] - cmp r0, #0x3f - ldrlt r0, [r5, #0x38] - cmplt r0, #0x3f - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023346F0: - ldrb r0, [r5, #0xbf] - cmp r0, #1 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334704: - ldrb r0, [r5, #0x5e] - cmp r0, #0xe - ldrneb r0, [r5, #0x5f] - cmpne r0, #0xe - bne _02334728 - ldrb r0, [r5, #0xfe] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_02334728: - ldrsh r0, [r5, #0x2e] - cmp r0, #0xa - bgt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0233473C: - ldrb r0, [r5, #0xbf] - cmp r0, #4 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334750: - ldrsh r1, [r5, #0x10] - ldrsh r0, [r4, #0x10] - sub r0, r1, r0 - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0233476C: - ldrsh r0, [r5, #0x28] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334780: - ldrsh r0, [r5, #0x2a] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334794: - ldrsh r0, [r5, #0x24] - cmp r0, #1 - ldrltsh r0, [r5, #0x28] - cmplt r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023347B0: - ldrb r0, [r5, #0xc4] - cmp r0, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023347C4: - mov r2, #0 - b _02334804 -_023347CC: - add r1, r5, r2, lsl #1 - ldrsh r0, [r1, #0x24] - cmp r0, #0xa - ldrgesh r0, [r1, #0x28] - cmpge r0, #0xa - ldrgesh r0, [r1, #0x2c] - cmpge r0, #0xa - addge r1, r5, r2, lsl #2 - ldrge r0, [r1, #0x34] - cmpge r0, #0x100 - ldrge r0, [r1, #0x3c] - cmpge r0, #0x100 - blt _0233480C - add r2, r2, #1 -_02334804: - cmp r2, #2 - blt _023347CC -_0233480C: - cmp r2, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0233481C: - ldrb r0, [r5, #0xbd] - cmp r0, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334830: - mov r0, #0 - b _0233488C -_02334838: - add r6, r4, r0, lsl #1 - add r3, r5, r0, lsl #1 - ldrsh r2, [r6, #0x24] - ldrsh r1, [r3, #0x24] - cmp r2, r1 - ldrgesh r2, [r6, #0x28] - ldrgesh r1, [r3, #0x28] - cmpge r2, r1 - ldrgesh r2, [r6, #0x2c] - ldrgesh r1, [r3, #0x2c] - cmpge r2, r1 - addge r6, r4, r0, lsl #2 - addge r3, r5, r0, lsl #2 - ldrge r2, [r6, #0x34] - ldrge r1, [r3, #0x34] - cmpge r2, r1 - ldrge r2, [r6, #0x3c] - ldrge r1, [r3, #0x3c] - cmpge r2, r1 - blt _02334894 - add r0, r0, #1 -_0233488C: - cmp r0, #2 - blt _02334838 -_02334894: - cmp r0, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023348A4: - ldrsh r0, [r5, #0x2c] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023348B8: - ldrb r0, [r5, #0xd0] - cmp r0, #5 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023348CC: - ldrb r0, [r4, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334908: - ldrb r0, [r5, #0x62] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334928: - ldrsh r0, [r5, #0x24] - cmp r0, #1 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_0233493C: - ldrb r1, [r4, #0x60] - ldrb r0, [r5, #0x60] - cmp r1, r0 - ldreqb r1, [r4, #0x61] - ldreqb r0, [r5, #0x61] - cmpeq r1, r0 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334960: - mov r0, r7 - mov r1, #0xe - bl MonsterIsType - cmp r0, #0 - beq _02334988 - ldrb r0, [r5, #0xd8] - cmp r0, #1 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334988: - ldrsh r0, [r4, #0x24] - cmp r0, #0x13 - ldrgtsh r0, [r4, #0x28] - cmpgt r0, #0x13 - ble _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023349A4: - ldrb r0, [r5, #0xd0] - cmp r0, #3 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023349B8: - ldrsh r0, [r5, #0x10] - cmp r0, #2 - bge _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023349CC: - ldrb r0, [r5, #0xe0] - cmp r0, #1 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023349E0: - ldrb r0, [r5, #0x106] - cmp r0, #0 - beq _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_023349F4: - add r0, r5, #0x124 - bl ov29_02334CAC - cmp r0, #0 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A0C: - ldrb r0, [r5, #0xd0] - cmp r0, #7 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A20: - ldrb r0, [r5, #0xc4] - cmp r0, #3 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #4 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A40: - ldrb r0, [r5, #0xbf] - cmp r0, #3 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A54: - ldrb r0, [r5, #0xbf] - cmp r0, #2 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #3 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A74: - ldrb r0, [r5, #0xd0] - cmp r0, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A88: - ldrb r0, [r5, #0xd8] - cmp r0, #4 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334A9C: - ldrb r0, [r5, #0xd8] - cmp r0, #4 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334AB0: - ldrb r0, [r5, #0xd5] - cmp r0, #0x11 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334AC4: - ldrsh r3, [r4, #0x28] - ldrsh r2, [r4, #0x2a] - ldrsh r1, [r5, #0x28] - ldrsh r0, [r5, #0x2a] - add r2, r3, r2 - add r0, r1, r0 - cmp r2, r0 - blt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334AEC: - ldrb r0, [r5, #0xd8] - cmp r0, #5 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334B00: - ldrb r0, [r5, #0xd8] - cmp r0, #6 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334B14: - bl GravityIsActive - cmp r0, #0 - beq _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334B28: - mov r2, #0 - b _02334B4C -_02334B30: - add r1, r5, r2, lsl #1 - ldrsh r0, [r1, #0x24] - cmp r0, #0x14 - ldrgesh r0, [r1, #0x28] - cmpge r0, #0x14 - blt _02334B54 - add r2, r2, #1 -_02334B4C: - cmp r2, #2 - blt _02334B30 -_02334B54: - cmp r2, #2 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334B64: - ldrb r0, [r5, #0xf7] - cmp r0, #1 - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334B78: - ldrsh r3, [r4, #0x28] - ldrsh r1, [r4, #0x2a] - ldrsh r2, [r5, #0x28] - ldrsh r0, [r5, #0x2a] - add r1, r3, r1 - mov r1, r1, lsl #0x10 - add r0, r2, r0 - mov r2, r0, lsl #0x10 - ldrsh r6, [r4, #0x24] - ldrsh r0, [r4, #0x26] - ldrsh r4, [r5, #0x24] - ldrsh r3, [r5, #0x26] - add r0, r6, r0 - mov r0, r0, lsl #0x10 - add r3, r4, r3 - mov r4, r1, asr #0x10 - mov r1, r3, lsl #0x10 - mov r2, r2, asr #0x10 - add r3, r4, r0, asr #16 - add r0, r2, r1, asr #16 - cmp r3, r0 - blt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334BD8: - ldrsh r3, [r4, #0x24] - ldrsh r2, [r4, #0x26] - ldrsh r1, [r5, #0x24] - ldrsh r0, [r5, #0x26] - add r2, r3, r2 - add r0, r1, r0 - cmp r2, r0 - blt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334C00: - ldrsh r1, [r4, #0x24] - ldrsh r0, [r4, #0x28] - cmp r1, r0 - blt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334C18: - ldrb r0, [r5, #0x5e] - cmp r0, #0x10 - ldrneb r0, [r5, #0x5f] - cmpne r0, #0x10 - bne _02334C4C - ldrb r0, [r5, #0xf5] - cmp r0, #1 - bne _02334C9C - ldrsh r0, [r5, #0x2e] - cmp r0, #0xa - bgt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334C4C: - ldrsh r0, [r5, #0x2e] - cmp r0, #0xa - bgt _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334C60: - ldrb r0, [r5, #0xd5] - cmp r0, #0xf - bne _02334C9C - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02334C74: - ldrsh r0, [r5, #0x26] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldrsh r0, [r4, #2] - ldrsh r1, [r5, #2] - bl GendersEqualNotGenderless - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} -_02334C9C: - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02334CA4: .word 0x0000010A -_02334CA8: .word 0x0000020D - arm_func_end ov29_02333FD0 - - arm_func_start ov29_02334CAC -ov29_02334CAC: ; 0x02334CAC - stmdb sp!, {r3, lr} - mov r3, #0 - mov r1, r3 - mov r2, #1 - b _02334CE8 -_02334CC0: - ldrb ip, [r0, r3, lsl #3] - tst ip, #1 - movne lr, r2 - moveq lr, r1 - tst lr, #0xff - beq _02334CE4 - tst ip, #0x10 - movne r0, #1 - ldmneia sp!, {r3, pc} -_02334CE4: - add r3, r3, #1 -_02334CE8: - cmp r3, #4 - blt _02334CC0 - ldrb r0, [r0, #0x20] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02334CAC - - arm_func_start GetApparentWeather -GetApparentWeather: ; 0x02334D08 - stmdb sp!, {r4, lr} - movs r4, r0 - beq _02334D40 - mov r1, #0x6f - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - bne _02334D34 - mov r0, r4 - mov r1, #0x34 - bl HasHeldItem -_02334D34: - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} -_02334D40: - ldr r0, _02334D54 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd38] - ldmia sp!, {r4, pc} - .align 2, 0 -_02334D54: .word 0x02353538 - arm_func_end GetApparentWeather - - arm_func_start ov29_02334D58 -ov29_02334D58: ; 0x02334D58 - stmdb sp!, {r3, lr} - bl IsSecretFloor - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02334DA4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x28000 - ldrb r0, [r0, #0x6b6] - cmp r0, #8 - bne _02334D8C - mov r0, #8 - bl DungeonRandInt - and r0, r0, #0xff -_02334D8C: - bl ov29_02334DA8 - bl TryActivateArtificialWeatherAbilities - mov r0, #0 - mov r1, #1 - bl ov29_023354C4 - ldmia sp!, {r3, pc} - .align 2, 0 -_02334DA4: .word 0x02353538 - arm_func_end ov29_02334D58 - - arm_func_start ov29_02334DA8 -ov29_02334DA8: ; 0x02334DA8 - ldr r3, _02334E6C ; =0x02353538 - mov r1, #0 - ldr r2, [r3] - add r2, r2, #0xc000 - strb r0, [r2, #0xd39] - ldr r0, [r3] - add r0, r0, #0xc000 - ldrb r2, [r0, #0xd39] - strb r2, [r0, #0xd38] - ldr r0, [r3] - add r0, r0, #0xc000 - strb r1, [r0, #0xd5d] - mov r0, r1 -_02334DDC: - ldr r2, [r3] - add r2, r2, r1, lsl #1 - add r2, r2, #0xcd00 - strh r0, [r2, #0x3a] - ldr r2, [r3] - add r2, r2, r1, lsl #1 - add r2, r2, #0xcd00 - add r1, r1, #1 - strh r0, [r2, #0x4a] - cmp r1, #8 - blt _02334DDC - ldr r2, _02334E6C ; =0x02353538 - mov r3, #9 - ldr r1, [r2] - add r1, r1, #0xc000 - strb r3, [r1, #0xd5a] - ldr r1, [r2] - add r1, r1, #0xc000 - strb r0, [r1, #0xd5b] - ldr r1, [r2] - add r1, r1, #0xc000 - strb r0, [r1, #0xd5c] -_02334E34: - ldr r1, [r2] - and r3, r0, #0xff - add r1, r1, r0, lsl #2 - strb r3, [r1, #0x1e0] - ldr r1, [r2] - add r1, r1, r0, lsl #2 - strb r3, [r1, #0x1e1] - ldr r1, [r2] - add r1, r1, r0, lsl #2 - add r0, r0, #1 - strb r3, [r1, #0x1e2] - cmp r0, #0x100 - blt _02334E34 - bx lr - .align 2, 0 -_02334E6C: .word 0x02353538 - arm_func_end ov29_02334DA8 - - arm_func_start ov29_02334E70 -ov29_02334E70: ; 0x02334E70 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - str r0, [sp] - mov r0, #0 - bl GetApparentWeather - bl ov29_022DE620 - mov r5, r0 - mov r0, #0 - bl GetApparentWeather - ldr r1, [sp] - bl ov29_022E5FE8 - mov r0, #0x25 - bl AdvanceFrame - mov r0, #1 - bl ov29_022E38E0 - ldr r0, _0233503C ; =0x02353562 - mov r1, #1 - ldrb fp, [r0] - mov r4, #0 - strb r1, [r0] - b _0233500C -_02334EC0: - mov r0, #0x25 - mov r6, #0 - bl AdvanceFrame - mov r8, r6 -_02334ED0: - ldr r0, _02335040 ; =0x02353538 - ldrb r7, [r5, r8, lsl #2] - ldr sl, [r0] - add r0, sl, r8, lsl #2 - ldrb sb, [r0, #0x1e0] - sub r0, sb, r7 - bl Abs - cmp r0, #0xa - addlt r0, sl, r8, lsl #2 - strltb r7, [r0, #0x1e0] - blt _02334F28 - cmp sb, r7 - addlo r1, sl, r8, lsl #2 - ldrlob r0, [r1, #0x1e0] - mov r6, #1 - addlo r0, r0, #0xa - strlob r0, [r1, #0x1e0] - blo _02334F28 - addhi r1, sl, r8, lsl #2 - ldrhib r0, [r1, #0x1e0] - subhi r0, r0, #0xa - strhib r0, [r1, #0x1e0] -_02334F28: - ldr r0, _02335040 ; =0x02353538 - add r1, r5, r8, lsl #2 - ldr sl, [r0] - ldrb r7, [r1, #1] - add r0, sl, r8, lsl #2 - ldrb sb, [r0, #0x1e1] - sub r0, sb, r7 - bl Abs - cmp r0, #0xa - addlt r0, sl, r8, lsl #2 - strltb r7, [r0, #0x1e1] - blt _02334F84 - cmp sb, r7 - addlo r1, sl, r8, lsl #2 - ldrlob r0, [r1, #0x1e1] - mov r6, #1 - addlo r0, r0, #0xa - strlob r0, [r1, #0x1e1] - blo _02334F84 - addhi r1, sl, r8, lsl #2 - ldrhib r0, [r1, #0x1e1] - subhi r0, r0, #0xa - strhib r0, [r1, #0x1e1] -_02334F84: - ldr r0, _02335040 ; =0x02353538 - add r1, r5, r8, lsl #2 - ldr sl, [r0] - ldrb r7, [r1, #2] - add r0, sl, r8, lsl #2 - ldrb sb, [r0, #0x1e2] - sub r0, sb, r7 - bl Abs - cmp r0, #0xa - addlt r0, sl, r8, lsl #2 - strltb r7, [r0, #0x1e2] - blt _02334FE0 - cmp sb, r7 - addlo r1, sl, r8, lsl #2 - ldrlob r0, [r1, #0x1e2] - mov r6, #1 - addlo r0, r0, #0xa - strlob r0, [r1, #0x1e2] - blo _02334FE0 - addhi r1, sl, r8, lsl #2 - ldrhib r0, [r1, #0x1e2] - subhi r0, r0, #0xa - strhib r0, [r1, #0x1e2] -_02334FE0: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x100 - blt _02334ED0 - bl ov29_022DE608 - cmp r6, #0 - beq _02335014 - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_0233500C: - cmp r4, #0x40 - blt _02334EC0 -_02335014: - ldr r0, _02335040 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd38] - bl ov29_02338A4C - ldr r1, _0233503C ; =0x02353562 - ldr r0, [sp] - strb fp, [r1] - bl ov29_02335044 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233503C: .word 0x02353562 -_02335040: .word 0x02353538 - arm_func_end ov29_02334E70 - - arm_func_start ov29_02335044 -ov29_02335044: ; 0x02335044 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _023350D4 ; =0x02353538 - mov r5, r0 - ldr r0, [r1] - add r0, r0, #0x1a000 - ldr r4, [r0, #0x22c] - cmp r4, #0 - bne _0233506C - bl GetLeader - mov r4, r0 -_0233506C: - cmp r5, #0 - beq _02335094 - mov r0, #0 - bl GetApparentWeather - add r0, r0, #0x45 - add r0, r0, #0xa00 - mov r1, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, lsr #0x10 - bl LogMessageByIdWithPopupCheckUser -_02335094: - ldr r4, _023350D4 ; =0x02353538 - mov r5, #0 -_0233509C: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__023350D8 - cmp r0, #0 - beq _023350C4 - mov r0, r6 - bl TryWeatherFormChange -_023350C4: - add r5, r5, #1 - cmp r5, #0x14 - blt _0233509C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023350D4: .word 0x02353538 - arm_func_end ov29_02335044 - - arm_func_start EntityIsValid__023350D8 -EntityIsValid__023350D8: ; 0x023350D8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__023350D8 - - arm_func_start ov29_023350FC -ov29_023350FC: ; 0x023350FC - stmdb sp!, {r3, lr} - mov r0, #0 - bl GetApparentWeather - bl ov29_022DE620 - ldr r2, _0233516C ; =0x02353538 - mov r1, #0 -_02335114: - ldr r3, [r2] - ldrb ip, [r0, r1, lsl #2] - add r3, r3, r1, lsl #2 - add lr, r0, r1, lsl #2 - strb ip, [r3, #0x1e0] - ldr r3, [r2] - ldrb ip, [lr, #1] - add r3, r3, r1, lsl #2 - strb ip, [r3, #0x1e1] - ldr r3, [r2] - ldrb ip, [lr, #2] - add r3, r3, r1, lsl #2 - strb ip, [r3, #0x1e2] - ldr r3, [r2] - ldrb ip, [lr, #3] - add r3, r3, r1, lsl #2 - add r1, r1, #1 - strb ip, [r3, #0x1e3] - cmp r1, #0x100 - blt _02335114 - bl ov29_022DE608 - ldmia sp!, {r3, pc} - .align 2, 0 -_0233516C: .word 0x02353538 - arm_func_end ov29_023350FC - - arm_func_start TryWeatherFormChange -TryWeatherFormChange: ; 0x02335170 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r5, #0 - mov sl, r0 - mov r6, r5 - bl EntityIsValid__023350D8 - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r7, [sl, #0xb4] - mov r0, sl - ldrsh r4, [r7, #4] - ldrb r8, [r7, #0x5e] - ldrb sb, [r7, #0x5f] - bl CalcSpeedStageWrapper - mov r0, sl - mov r1, #0x25 - bl AbilityIsActive2 - cmp r0, #0 - mov r0, sl - beq _023351E0 - bl GetApparentWeather - mov r1, #6 - mul r2, r0, r1 - ldr r1, _02335434 ; =0x022C4C6C - mov r0, r5 - ldrb r1, [r1, r2] - strb r1, [r7, #0x5e] - strb r0, [r7, #0x5f] - b _02335220 -_023351E0: - bl Conversion2IsActive - cmp r0, #0 - ldreqb r0, [r7, #0xff] - cmpeq r0, #0 - ldreqb r0, [r7, #0xa9] - cmpeq r0, #0 - bne _02335220 - ldrsh r0, [r7, #2] - mov r1, r5 - bl GetType - strb r0, [r7, #0x5e] - ldrsh r0, [r7, #2] - mov r1, #1 - bl GetType - strb r0, [r7, #0x5f] - mov r6, #1 -_02335220: - ldrb r0, [r7, #0x5e] - cmp r8, r0 - ldreqb r0, [r7, #0x5f] - cmpeq sb, r0 - beq _0233523C - cmp r6, #0 - moveq r5, #1 -_0233523C: - ldrsh r1, [r7, #2] - ldr r0, _02335438 ; =0x0000017B - cmp r1, r0 - blt _02335258 - add r0, r0, #3 - cmp r1, r0 - ble _02335270 -_02335258: - ldr r0, _0233543C ; =0x000003D3 - cmp r1, r0 - blt _023352FC - add r0, r0, #3 - cmp r1, r0 - bgt _023352FC -_02335270: - mov r0, sl - mov r1, #0x25 - bl AbilityIsActive2 - cmp r0, #0 - beq _02335298 - ldrsh r1, [r7, #2] - mov r0, sl - bl ov29_022F9408 - strh r0, [r7, #4] - b _023352C0 -_02335298: - ldrsh r2, [r7, #2] - ldr r1, _02335438 ; =0x0000017B - cmp r2, r1 - blt _023352B8 - add r0, r1, #3 - cmp r2, r0 - strleh r1, [r7, #4] - ble _023352C0 -_023352B8: - ldr r0, _0233543C ; =0x000003D3 - strh r0, [r7, #4] -_023352C0: - ldrsh r0, [r7, #4] - cmp r0, r4 - beq _02335420 - ldrsh r0, [r7, #4] - bl GetSpriteIndex__022F7388 - strh r0, [sl, #0xa8] - mov r0, sl - bl GetSleepAnimationId - mov r1, r0 - mov r0, sl - bl ov29_02304830 - mov r0, sl - bl ov29_02304BAC - mov r5, #1 - b _02335420 -_023352FC: - cmp r1, #0x1cc - blt _02335310 - ldr r0, _02335440 ; =0x000001CD - cmp r1, r0 - ble _02335328 -_02335310: - ldr r0, _02335444 ; =0x00000424 - cmp r1, r0 - blt _02335420 - add r0, r0, #1 - cmp r1, r0 - bgt _02335420 -_02335328: - mov r0, sl - bl GetApparentWeather - cmp r0, #1 - ldrsh r1, [r7, #2] - bne _02335394 - cmp r1, #0x1cc - ldreq r0, _02335440 ; =0x000001CD - streqh r0, [r7, #4] - beq _0233535C - ldr r0, _02335444 ; =0x00000424 - cmp r1, r0 - addeq r0, r0, #1 - streqh r0, [r7, #4] -_0233535C: - ldrsh r2, [r7, #2] - ldr r0, _02335440 ; =0x000001CD - cmp r2, r0 - ldreqsh r1, [r7, #4] - cmpeq r1, #0x1cc - streqh r0, [r7, #4] - beq _023353F0 - ldr r1, _02335448 ; =0x00000425 - cmp r2, r1 - ldreqsh r2, [r7, #4] - subeq r0, r1, #1 - cmpeq r2, r0 - streqh r1, [r7, #4] - b _023353F0 -_02335394: - ldr r0, _02335440 ; =0x000001CD - cmp r1, r0 - moveq r0, #0x1cc - streqh r0, [r7, #4] - beq _023353B8 - add r0, r0, #0x258 - cmp r1, r0 - ldreq r0, _02335444 ; =0x00000424 - streqh r0, [r7, #4] -_023353B8: - ldrsh r2, [r7, #2] - cmp r2, #0x1cc - ldreqsh r1, [r7, #4] - ldreq r0, _02335440 ; =0x000001CD - cmpeq r1, r0 - moveq r0, #0x1cc - streqh r0, [r7, #4] - beq _023353F0 - ldr r1, _02335444 ; =0x00000424 - cmp r2, r1 - ldreqsh r2, [r7, #4] - addeq r0, r1, #1 - cmpeq r2, r0 - streqh r1, [r7, #4] -_023353F0: - ldrsh r0, [r7, #4] - cmp r0, r4 - beq _02335420 - ldrsh r0, [r7, #4] - bl GetSpriteIndex__022F7388 - strh r0, [sl, #0xa8] - mov r0, sl - bl GetSleepAnimationId - mov r1, r0 - mov r0, sl - bl ov29_02304830 - mov r5, #1 -_02335420: - cmp r5, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, sl - bl ov29_022E65F4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02335434: .word 0x022C4C6C -_02335438: .word 0x0000017B -_0233543C: .word 0x000003D3 -_02335440: .word 0x000001CD -_02335444: .word 0x00000424 -_02335448: .word 0x00000425 - arm_func_end TryWeatherFormChange - - arm_func_start ov29_0233544C -ov29_0233544C: ; 0x0233544C - stmdb sp!, {r3, lr} - cmp r0, #0 - mov r0, #0 - bne _02335488 - ldr r1, _023354B4 ; =0x022C478C - mov r2, r0 - bl CalcStatusDuration - ldr r1, _023354B8 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0xc000 - strb r0, [r1, #0xd5b] - bl GetLeader - ldr r1, _023354BC ; =0x00000CDA - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, pc} -_02335488: - ldr r1, _023354B4 ; =0x022C478C - mov r2, r0 - bl CalcStatusDuration - ldr r1, _023354B8 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0xc000 - strb r0, [r1, #0xd5c] - bl GetLeader - ldr r1, _023354C0 ; =0x00000CDB - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, pc} - .align 2, 0 -_023354B4: .word 0x022C478C -_023354B8: .word 0x02353538 -_023354BC: .word 0x00000CDA -_023354C0: .word 0x00000CDB - arm_func_end ov29_0233544C - - arm_func_start ov29_023354C4 -ov29_023354C4: ; 0x023354C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov sl, r0 - mov r0, r4 - mov sb, r1 - mov r6, r4 - sub r5, r4, #1 - bl GetApparentWeather - ldr fp, _02335664 ; =0x02353538 - mov r7, r0 - mov r8, r4 -_023354F0: - ldr r3, [fp] - add r0, r3, r8, lsl #1 - add r0, r0, #0xcd00 - ldrh r2, [r0, #0x4a] - ldrh r1, [r0, #0x3a] - cmp r1, r2 - strloh r2, [r0, #0x3a] - blo _02335524 - bls _02335524 - add r0, r3, #0x3a - add r0, r0, #0xcd00 - add r0, r0, r8, lsl #1 - bl ov29_022E9A6C -_02335524: - ldr r1, [fp] - add r0, r1, r8, lsl #1 - add r0, r0, #0xcd00 - ldrh r0, [r0, #0x3a] - cmp r4, r0 - movlt r5, r8 - add r8, r8, #1 - movlt r4, r0 - cmp r8, #8 - blt _023354F0 - cmp r5, #0 - addge r0, r1, #0xc000 - strgeb r5, [r0, #0xd38] - bge _02335570 - ldr r0, _02335664 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r1, [r0, #0xd39] - strb r1, [r0, #0xd38] -_02335570: - ldr r0, _02335664 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r1, [r0, #0xd5d] - cmp r1, #0 - movne r1, #0 - strneb r1, [r0, #0xd38] - mov r0, #0 - bl GetApparentWeather - cmp r7, r0 - cmpeq sb, #0 - beq _023355AC - mov r0, sl - mov r6, #1 - bl ov29_02334E70 -_023355AC: - ldr r0, _02335664 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r1, [r0, #0xd5a] - cmp r1, #0 - subne r1, r1, #1 - moveq r1, #9 - strb r1, [r0, #0xd5a] - ldr r0, _02335664 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5b] - cmp r0, #0 - beq _02335614 - add r0, r1, #0x5b - add r0, r0, #0xcd00 - bl TickStatusTurnCounter - ldr r0, _02335664 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5b] - cmp r0, #0 - bne _02335614 - bl GetLeader - ldr r1, _02335668 ; =0x00000C93 - bl LogMessageByIdWithPopupCheckUser -_02335614: - ldr r0, _02335664 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0xc000 - ldrb r0, [r0, #0xd5c] - cmp r0, #0 - beq _0233565C - add r0, r1, #0x15c - add r0, r0, #0xcc00 - bl TickStatusTurnCounter - ldr r0, _02335664 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldrb r0, [r0, #0xd5c] - cmp r0, #0 - bne _0233565C - bl GetLeader - ldr r1, _0233566C ; =0x00000C92 - bl LogMessageByIdWithPopupCheckUser -_0233565C: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02335664: .word 0x02353538 -_02335668: .word 0x00000C93 -_0233566C: .word 0x00000C92 - arm_func_end ov29_023354C4 - - arm_func_start ov29_02335670 -ov29_02335670: ; 0x02335670 - stmdb sp!, {r3, r4, r5, lr} - cmp r0, #0 - rsblt r0, r0, #0 - movlt r0, r0, lsl #0x10 - movlt r0, r0, asr #0x10 - cmp r0, #0 - mov r5, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0xa - b _023356B0 -_0233569C: - mov r1, r4 - bl DivideInt - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - add r5, r5, #1 -_023356B0: - cmp r0, #0 - bne _0233569C - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02335670 - - arm_func_start ov29_023356C0 -ov29_023356C0: ; 0x023356C0 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _02335750 ; =0x02352B4C - ldr r1, [r0, #4] - ldr r0, [r0] - str r1, [sp, #4] - str r0, [sp] - bl GetLanguage - ldr r1, _02335754 ; =0x0235371C - mov r0, r0, lsl #1 - ldrh r2, [r1, r0] - add r0, sp, #0 - mov r1, #4 - mov r3, #0x300 - bl LoadWteFromFileDirectory - ldr r0, [sp, #4] - mov r1, #0x1000 - mov r2, #2 - mov r3, #0 - bl ProcessWte - bl GetLanguage - mov r3, r0, lsl #1 - ldr r1, _02335758 ; =0x02353720 - mov r0, #4 - ldrh r1, [r1, r3] - mov r2, #0 - bl LoadWtuFromBin - ldr r1, _0233575C ; =0x0237CA8C - ldr r2, [sp, #4] - str r0, [r1, #4] - ldrh r2, [r2, #0xc] - ldr r0, [sp] - strh r2, [r1] - bl sub_0201E080 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02335750: .word 0x02352B4C -_02335754: .word 0x0235371C -_02335758: .word 0x02353720 -_0233575C: .word 0x0237CA8C - arm_func_end ov29_023356C0 - - arm_func_start ov29_02335760 -ov29_02335760: ; 0x02335760 - ldr ip, _0233576C ; =sub_0201E020 - ldr r0, _02335770 ; =0x0237CA90 - bx ip - .align 2, 0 -_0233576C: .word sub_0201E020 -_02335770: .word 0x0237CA90 - arm_func_end ov29_02335760 - - arm_func_start ov29_02335774 -ov29_02335774: ; 0x02335774 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _023357F4 ; =0x02352B4C - ldr r2, _023357F8 ; =0x000003EF - ldr r3, [r1, #0xc] - ldr ip, [r1, #8] - str r3, [sp, #4] - add r0, sp, #0 - mov r1, #4 - mov r3, #0x300 - str ip, [sp] - bl LoadWteFromFileDirectory - mov r1, #0 - ldr r0, [sp, #4] - mov r2, r1 - mov r3, r1 - bl ProcessWte - ldr ip, [sp, #4] - ldr r2, _023357FC ; =0x0237CA96 - add r3, ip, #0x10 - mov r1, #4 -_023357C8: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _023357C8 - ldrh r2, [ip, #0xc] - ldr r1, _02335800 ; =0x0237CA8C - ldr r0, [sp] - strh r2, [r1, #8] - bl sub_0201E080 - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_023357F4: .word 0x02352B4C -_023357F8: .word 0x000003EF -_023357FC: .word 0x0237CA96 -_02335800: .word 0x0237CA8C - arm_func_end ov29_02335774 - - arm_func_start ov29_02335804 -ov29_02335804: ; 0x02335804 - bx lr - arm_func_end ov29_02335804 - - arm_func_start ov29_02335808 -ov29_02335808: ; 0x02335808 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl sub_0201E730 - mov r1, #0 - mov r0, r5, lsl #0x10 - strb r1, [r4, #0x3c] - mov r2, #0x28 - strh r2, [r4, #0x2a] - ldr r2, _02335860 ; =0x0237CA8C - strb r1, [r4, #0x3e] - ldrh r3, [r2] - mov r0, r0, asr #0x10 - mov r2, #0x1000 - strh r3, [r4, #0x14] - str r2, [r4, #0x20] - bl ov29_02335864 - ldr r1, _02335860 ; =0x0237CA8C - str r0, [r4, #0x24] - mov r0, #0 - strb r0, [r1, #0x12] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02335860: .word 0x0237CA8C - arm_func_end ov29_02335808 - - arm_func_start ov29_02335864 -ov29_02335864: ; 0x02335864 - ldr r2, _0233587C ; =0x020AFC70 - add r0, r1, r0, lsl #8 - ldr r1, [r2] - ldr r1, [r1, #0xe0] - add r0, r1, r0, lsl #1 - bx lr - .align 2, 0 -_0233587C: .word 0x020AFC70 - arm_func_end ov29_02335864 - - arm_func_start ov29_02335880 -ov29_02335880: ; 0x02335880 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - ldr r4, _02335984 ; =0x0237CA8C - mov r5, r0 - ldr r4, [r4, #4] - mov fp, r1 - add r0, sp, #0 - mov sl, r2 - mov r1, #2 - ldr r4, [r4, #4] - mov r6, r3 - bl ov29_02335808 - mov r0, sl - bl ov29_02335670 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r6, #0 - movne sb, #0xa - ldrsh r0, [r4, #4] - sub r1, r8, #1 - moveq sb, #0 - mul r1, r0, r1 - mov r1, r1, lsl #0x10 - add r6, r5, r1, asr #16 - mov r5, #0 - b _02335968 -_023358E8: - smulbb r0, r0, r5 - sub r2, r6, r0 - mov r0, sl - mov r1, #0xa - strh r2, [sp] - strh fp, [sp, #2] - bl DivideInt - add r0, sb, r1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - mov r0, r7, lsl #3 - ldrsh r1, [r4, r0] - add r2, r4, r7, lsl #3 - add r0, sp, #0 - strh r1, [sp, #0x16] - ldrsh r1, [r2, #2] - strh r1, [sp, #0x18] - ldrsh r1, [r2, #4] - strh r1, [sp, #0x1a] - ldrsh r1, [r2, #6] - strh r1, [sp, #0x1c] - bl sub_0201F2A0 - mov r0, sl - mov r1, #0xa - bl DivideInt - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 - add r0, r4, r7, lsl #3 - add r1, r5, #1 - mov r1, r1, lsl #0x10 - ldrsh r0, [r0, #4] - mov r5, r1, asr #0x10 -_02335968: - cmp r5, r8 - blt _023358E8 - mul r1, r0, r8 - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02335984: .word 0x0237CA8C - arm_func_end ov29_02335880 - - arm_func_start ov29_02335988 -ov29_02335988: ; 0x02335988 - stmdb sp!, {r4, r5, r6, lr} - ldr r4, _023359F4 ; =0x0237CA8C - mov r6, r0 - ldr r0, [r4, #4] - mov r5, r3 - ldr r4, [r0, #4] - mov r0, #2 - strh r1, [r6] - ldrsh r1, [sp, #0x10] - strh r2, [r6, #2] - bl ov29_02335864 - str r0, [r6, #0x24] - mov r0, r5, lsl #3 - ldrsh r1, [r4, r0] - add r2, r4, r5, lsl #3 - mov r0, r6 - strh r1, [r6, #0x16] - ldrsh r1, [r2, #2] - strh r1, [r6, #0x18] - ldrsh r1, [r2, #4] - strh r1, [r6, #0x1a] - ldrsh r1, [r2, #6] - strh r1, [r6, #0x1c] - bl sub_0201F2A0 - add r0, r4, r5, lsl #3 - ldrsh r0, [r0, #4] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023359F4: .word 0x0237CA8C - arm_func_end ov29_02335988 - - arm_func_start ov29_023359F8 -ov29_023359F8: ; 0x023359F8 - ldr r1, _02335A08 ; =0x0237CA8C - ldr ip, _02335A0C ; =SetBothScreensWindowColorToDefault - strb r0, [r1, #0x12] - bx ip - .align 2, 0 -_02335A08: .word 0x0237CA8C -_02335A0C: .word SetBothScreensWindowColorToDefault - arm_func_end ov29_023359F8 - - arm_func_start ov29_02335A10 -ov29_02335A10: ; 0x02335A10 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - ldr r0, _02335F2C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x21c - add r5, r0, #0x1a000 - ldr r0, [r5, #0x10] - cmp r0, #0 - moveq r1, #0 - beq _02335A4C - ldr r1, [r0] - cmp r1, #0 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff -_02335A4C: - cmp r1, #0 - beq _02335F24 - ldr r1, _02335F30 ; =0x0237CA8C - ldrb r1, [r1, #0x12] - cmp r1, #0 - bne _02335F24 - ldr sl, [r0, #0xb4] - mov r6, #0 - ldrsh r3, [sl, #0x12] - ldrsh r2, [sl, #0x16] - ldr r1, _02335F34 ; =0x000003E7 - mov fp, r6 - add r4, r3, r2 - cmp r4, r1 - movgt r4, r1 - ldr r1, _02335F2C ; =0x02353538 - ldrsh r8, [sl, #0x10] - ldr r1, [r1] - ldrb sb, [sl, #0xa] - ldrb r2, [r1, #0x749] - ldrsh r1, [r1, #0x1e] - add r7, r2, r1 - bl HasLowHealth - cmp r0, #0 - add r0, sl, #0x100 - ldrh r1, [r0, #0x46] - sub r2, sp, #4 - movne r6, #1 - strh r1, [r2] - ldrh r0, [r0, #0x48] - strh r0, [r2, #2] - ldr r0, [r2] - bl CeilFixedPoint - cmp r0, #0 - moveq fp, #1 - cmp r6, #0 - beq _02335B18 - ldr r0, _02335F38 ; =0x0237C850 - ldr r0, [r0] - tst r0, #0x10 - beq _02335B04 - mov r0, #0 - mov r1, r0 - mov sl, #0x20 - bl SetScreenWindowsColor - b _02335B20 -_02335B04: - mov r0, #1 - mov r1, #0 - mov sl, #0x10 - bl SetScreenWindowsColor - b _02335B20 -_02335B18: - mov sl, #0x10 - bl SetBothScreensWindowColorToDefault -_02335B20: - cmp fp, #0 - beq _02335B5C - ldr r0, _02335F38 ; =0x0237C850 - ldr r0, [r0] - ands r0, r0, #0x10 - movne sl, #0x30 - cmp r6, #0 - bne _02335B5C - cmp r0, #0 - beq _02335B58 - mov r0, #3 - mov r1, #0 - bl SetScreenWindowsColor - b _02335B5C -_02335B58: - bl SetBothScreensWindowColorToDefault -_02335B5C: - add r0, sp, #4 - mov r1, #2 - bl ov29_02335808 - mov r6, #0 - bl ov29_022E0880 - cmp r0, #0 - addne r0, r6, #0x18 - movne r0, r0, lsl #0x10 - movne r6, r0, asr #0x10 - bne _02335C48 - ldr r0, _02335F2C ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl DungeonGoesUp - cmp r0, #0 - bne _02335BC0 - mov r1, r6 - add r0, sp, #4 - mov r2, r1 - mov r3, #0x18 - str sl, [sp] - bl ov29_02335988 - add r0, r6, r0 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_02335BC0: - cmp r7, #0xa - ldrb r0, [r5, #0x2f] - bge _02335BF4 - cmp r0, #0 - moveq r3, #1 - movne r3, #0 - mov r1, r7, lsl #0x10 - mov r2, r1, asr #0x10 - mov r0, r6 - and r3, r3, #0xff - mov r1, #0 - bl ov29_02335880 - b _02335C18 -_02335BF4: - cmp r0, #0 - moveq r3, #1 - movne r3, #0 - mov r1, r7, lsl #0x10 - mov r2, r1, asr #0x10 - mov r0, r6 - and r3, r3, #0xff - mov r1, #0 - bl ov29_02335880 -_02335C18: - add r0, r6, r0 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r0, sp, #4 - mov r1, r6 - mov r2, #0 - mov r3, #0x14 - str sl, [sp] - bl ov29_02335988 - add r0, r6, r0 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 -_02335C48: - add r0, sp, #4 - mov r1, r6 - str sl, [sp] - mov r2, #0 - mov r3, #0x15 - bl ov29_02335988 - ldrb r1, [r5, #0x2f] - add r0, r6, r0 - mov r0, r0, lsl #0x10 - cmp r1, #0 - moveq r3, #1 - mov r6, r0, asr #0x10 - movne r3, #0 - mov r1, sb, lsl #0x10 - mov r2, r1, asr #0x10 - mov r0, r6 - and r3, r3, #0xff - mov r1, #0 - bl ov29_02335880 - mov r6, #0x48 - add r0, sp, #4 - mov r1, r6 - str sl, [sp] - mov r2, #0 - mov r3, #0x16 - bl ov29_02335988 - ldrb r1, [r5, #0x2f] - add r0, r0, #0x48 - mov r0, r0, lsl #0x10 - cmp r1, #0 - moveq r3, #1 - mov r6, r0, asr #0x10 - movne r3, #0 - mov r1, r8, lsl #0x10 - mov r2, r1, asr #0x10 - mov r0, r6 - and r3, r3, #0xff - mov r1, #0 - bl ov29_02335880 - add r0, r6, r0 - mov r7, r0, lsl #0x10 - mov r6, r7, asr #0x10 - add r0, sp, #4 - mov r1, r6 - str sl, [sp] - mov r2, #0 - mov r3, #0x17 - bl ov29_02335988 - ldrb r1, [r5, #0x2f] - add r0, r0, r7, asr #16 - mov r0, r0, lsl #0x10 - cmp r1, #0 - moveq r3, #1 - mov r6, r0, asr #0x10 - movne r3, #0 - mov r1, r4, lsl #0x10 - mov r2, r1, asr #0x10 - mov r0, r6 - and r3, r3, #0xff - mov r1, #0 - bl ov29_02335880 - ldr r0, _02335F30 ; =0x0237CA8C - cmp r4, #0 - ldr r0, [r0, #4] - mov r5, #0x90 - ldr sb, [r0, #4] - mov r6, #0x10 - blt _02335F24 - add r0, sp, #4 - bl sub_0201E730 - ldr r0, _02335F30 ; =0x0237CA8C - mov fp, #5 - ldrh r3, [r0] - mov r0, r8, lsl #0x10 - mov sl, #0x28 - mov r2, #0x1000 - mov r7, r0, asr #0x10 - ldr r1, _02335F3C ; =0x020AFC70 - str r2, [sp, #0x24] - ldr r0, [r1] - cmp r7, #0x70 - strb fp, [sp, #0x40] - strb sl, [sp, #0x42] - strh r3, [sp, #0x18] - ldr r0, [r0, #0xe0] - mov r1, #0 - mov r2, #0x90 - add r0, r0, #0x400 - str r0, [sp, #0x28] - mov r0, r4, lsl #0x10 - mov r4, r0, asr #0x10 - movgt r7, #0x70 - cmp r4, #0x70 - movgt r4, #0x70 - add r0, r4, #0x90 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - strh r1, [sp, #6] - strh r3, [sp, #8] - strh r1, [sp, #0xa] - add r0, r6, #1 - mov r1, r0, lsl #0x10 - strh r2, [sp, #4] - strh r2, [sp, #0xc] - ldrsh r2, [sb, #0xce] - mov r6, r1, asr #0x10 - add r0, sp, #4 - strh r2, [sp, #0xe] - strh r3, [sp, #0x10] - ldrsh r3, [sb, #0xce] - mov r2, #0x10 - strh r3, [sp, #0x12] - ldrsh r3, [sb, #0xc8] - strh r3, [sp, #0x1a] - ldrsh r1, [sb, #0xca] - strh r1, [sp, #0x1c] - ldrsh r1, [sb, #0xcc] - strh r1, [sp, #0x1e] - ldrsh r1, [sb, #0xce] - strh r1, [sp, #0x20] - strh r2, [sp, #0x2e] - bl sub_0201F2A0 - cmp r8, #0 - ble _02335EA0 - add r0, r7, #0x90 - mov r0, r0, lsl #0x10 - mov r3, #0x90 - mov r2, r0, asr #0x10 - mov r1, #0 - strh r3, [sp, #4] - strh r2, [sp, #8] - strh r3, [sp, #0xc] - strh r1, [sp, #6] - strh r1, [sp, #0xa] - ldrsh r1, [sb, #0xe6] - add r0, sp, #4 - strh r2, [sp, #0x10] - strh r1, [sp, #0xe] - ldrsh r1, [sb, #0xe6] - strh r1, [sp, #0x12] - ldrsh r1, [sb, #0xe0] - strh r1, [sp, #0x1a] - ldrsh r1, [sb, #0xe2] - strh r1, [sp, #0x1c] - ldrsh r1, [sb, #0xe4] - strh r1, [sp, #0x1e] - ldrsh r1, [sb, #0xe6] - strh r1, [sp, #0x20] - strh r6, [sp, #0x2e] - bl sub_0201F2A0 -_02335EA0: - sub r0, r4, r7 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - cmp r1, #0 - ble _02335F24 - add r0, r5, r7 - mov r0, r0, lsl #0x10 - add r1, r1, r0, asr #16 - mov r1, r1, lsl #0x10 - mov r3, r0, asr #0x10 - mov r0, #0 - mov r2, r1, asr #0x10 - strh r3, [sp, #4] - strh r0, [sp, #6] - strh r0, [sp, #0xa] - strh r2, [sp, #8] - strh r3, [sp, #0xc] - ldrsh r1, [sb, #0xde] - add r0, sp, #4 - strh r2, [sp, #0x10] - strh r1, [sp, #0xe] - ldrsh r1, [sb, #0xde] - strh r1, [sp, #0x12] - ldrsh r1, [sb, #0xd8] - strh r1, [sp, #0x1a] - ldrsh r1, [sb, #0xda] - strh r1, [sp, #0x1c] - ldrsh r1, [sb, #0xdc] - strh r1, [sp, #0x1e] - ldrsh r1, [sb, #0xde] - strh r1, [sp, #0x20] - strh r6, [sp, #0x2e] - bl sub_0201F2A0 -_02335F24: - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02335F2C: .word 0x02353538 -_02335F30: .word 0x0237CA8C -_02335F34: .word 0x000003E7 -_02335F38: .word 0x0237C850 -_02335F3C: .word 0x020AFC70 - arm_func_end ov29_02335A10 - - arm_func_start ov29_02335F40 -ov29_02335F40: ; 0x02335F40 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x40 - mov r5, r0 - add r0, sp, #0 - mov sl, r1 - mov r4, r3 - ldr sb, [sp, #0x6c] - bl sub_0201E730 - mov r0, #0 - ldrh r1, [sp, #0x68] - mov r2, #0x21 - strb r2, [sp, #0x3e] - mov r1, r1, lsl #0x14 - mov r1, r1, asr #0x10 - strb r0, [sp, #0x3c] - str r0, [sp, #0x20] - bl ov29_02335864 - mov r3, #0x31 - ldr r2, _023360F8 ; =0x0237CA8C - rsb r1, r3, #0x2740 - ldrh r2, [r2, #8] - str r0, [sp, #0x24] - strb r4, [sp, #0x2f] - strh r2, [sp, #0x14] - strh r3, [sp, #0x2a] - cmp sb, r1 - bne _02335FF0 - mov r7, #0x10 - mov r6, #4 - mov r4, #0x60 - mov r3, #0 - mov r2, #0x20 - mov r1, #8 - add r0, sp, #0 - strh r5, [sp] - strh sl, [sp, #2] - strh r7, [sp, #8] - strh r6, [sp, #0xa] - strh r4, [sp, #0x16] - strh r3, [sp, #0x18] - strh r2, [sp, #0x1a] - strh r1, [sp, #0x1c] - bl sub_0201F2A0 - b _023360F0 -_02335FF0: - mov r0, sb - mov r4, #0 - bl ov29_02335670 - mov r7, r0 - mov r0, r7, lsl #3 - add r0, r0, r0, lsr #31 - mov r0, r0, lsl #0xf - ldrb r1, [sp, #0x70] - sub r0, r5, r0, asr #16 - mov r0, r0, lsl #0x10 - cmp r1, #0 - mov r5, r0, asr #0x10 - beq _02336064 - cmp sb, #0 - mov r1, #8 - movlt r2, #0x58 - movge r2, #0x50 - mov r3, r4 - add r0, sp, #0 - strh r5, [sp] - strh sl, [sp, #2] - strh r2, [sp, #0x16] - strh r3, [sp, #0x18] - strh r1, [sp, #0x1a] - strh r1, [sp, #0x1c] - bl sub_0201F2A0 - add r0, r4, #8 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_02336064: - cmp sb, #0 - rsblt r0, sb, #0 - movlt r0, r0, lsl #0x10 - movlt sb, r0, asr #0x10 - add r1, r5, r4 - mov r6, #0 - sub r0, r7, #1 - add r8, r1, r0, lsl #3 - mov r5, r6 - mov r4, r6 - mov fp, #8 - b _023360E8 -_02336094: - sub r2, r8, r6, lsl #3 - mov r0, sb - mov r1, #0xa - strh r2, [sp] - strh sl, [sp, #2] - strh r5, [sp, #8] - strh r5, [sp, #0xa] - bl DivideInt - mov r0, r1, lsl #3 - strh r0, [sp, #0x16] - add r0, sp, #0 - strh r4, [sp, #0x18] - strh fp, [sp, #0x1a] - strh fp, [sp, #0x1c] - bl sub_0201F2A0 - mov r0, sb - mov r1, #0xa - bl DivideInt - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - add r6, r6, #1 -_023360E8: - cmp r6, r7 - blt _02336094 -_023360F0: - add sp, sp, #0x40 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023360F8: .word 0x0237CA8C - arm_func_end ov29_02335F40 - - arm_func_start GetTile -GetTile: ; 0x023360FC - cmp r0, #0 - ldrlt r0, _0233615C ; =0x02353724 - ldrlt r0, [r0] - bxlt lr - cmp r1, #0 - ldrlt r0, _0233615C ; =0x02353724 - ldrlt r0, [r0] - bxlt lr - cmp r0, #0x38 - ldrge r0, _0233615C ; =0x02353724 - ldrge r0, [r0] - bxge lr - cmp r1, #0x20 - ldrge r0, _0233615C ; =0x02353724 - ldrge r0, [r0] - bxge lr - ldr r3, _02336160 ; =0x02353538 - mov r2, #0xe0 - ldr r3, [r3] - mla r2, r1, r2, r3 - add r0, r2, r0, lsl #2 - add r0, r0, #0xd000 - ldr r0, [r0, #0x2e4] - bx lr - .align 2, 0 -_0233615C: .word 0x02353724 -_02336160: .word 0x02353538 - arm_func_end GetTile - - arm_func_start GetTileSafe -GetTileSafe: ; 0x02336164 - stmdb sp!, {r4, lr} - cmp r0, #0 - cmpge r1, #0 - blt _02336180 - cmp r0, #0x38 - cmplt r1, #0x20 - blt _023361A8 -_02336180: - ldr r0, _023361C8 ; =0x02353724 - ldr lr, _023361CC ; =0x0237CAB8 - ldr r4, [r0] - mov ip, lr - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - ldr r1, [r4] - mov r0, ip - str r1, [lr] - ldmia sp!, {r4, pc} -_023361A8: - ldr r3, _023361D0 ; =0x02353538 - mov r2, #0xe0 - ldr r3, [r3] - mla r2, r1, r2, r3 - add r0, r2, r0, lsl #2 - add r0, r0, #0xd000 - ldr r0, [r0, #0x2e4] - ldmia sp!, {r4, pc} - .align 2, 0 -_023361C8: .word 0x02353724 -_023361CC: .word 0x0237CAB8 -_023361D0: .word 0x02353538 - arm_func_end GetTileSafe - - arm_func_start ov29_023361D4 -ov29_023361D4: ; 0x023361D4 - ldr r0, _02336200 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0 - beq _023361F8 - cmp r0, #0xa5 - movlo r0, #1 - bxlo lr -_023361F8: - mov r0, #0 - bx lr - .align 2, 0 -_02336200: .word 0x02353538 - arm_func_end ov29_023361D4 - - arm_func_start ov29_02336204 -ov29_02336204: ; 0x02336204 - ldr r0, _0233621C ; =0x02353538 - ldr ip, _02336220 ; =ov10_022C2574 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - bx ip - .align 2, 0 -_0233621C: .word 0x02353538 -_02336220: .word ov10_022C2574 - arm_func_end ov29_02336204 - - arm_func_start ov29_02336224 -ov29_02336224: ; 0x02336224 - stmdb sp!, {r3, lr} - bl IsGoldenChamber - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _0233625C ; =0x02353538 - mov r3, #0x3c - ldr r0, [r1] - mov r2, #0x6f - add r0, r0, #0x4000 - strh r3, [r0, #0xd4] - ldr r0, [r1] - add r0, r0, #0x4000 - strb r2, [r0, #0xda] - ldmia sp!, {r3, pc} - .align 2, 0 -_0233625C: .word 0x02353538 - arm_func_end ov29_02336224 - - arm_func_start ov29_02336260 -ov29_02336260: ; 0x02336260 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, #0 - strh r6, [sp, #2] - add r4, sp, #0 - mov r5, r6 - b _023362C0 -_0233627C: - strh r5, [sp] - b _023362A8 -_02336284: - mov r0, r4 - bl ov29_02337B2C - cmp r0, #0 - addne r0, r6, #1 - movne r0, r0, lsl #0x10 - movne r6, r0, asr #0x10 - ldrsh r0, [sp] - add r0, r0, #1 - strh r0, [sp] -_023362A8: - ldrsh r0, [sp] - cmp r0, #0x38 - blt _02336284 - ldrsh r0, [sp, #2] - add r0, r0, #1 - strh r0, [sp, #2] -_023362C0: - ldrsh r0, [sp, #2] - cmp r0, #0x20 - blt _0233627C - ldr r1, _023362E4 ; =0x02353538 - ldr r0, _023362E8 ; =0x00012AF8 - ldr r1, [r1] - strh r6, [r1, r0] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_023362E4: .word 0x02353538 -_023362E8: .word 0x00012AF8 - arm_func_end ov29_02336260 - - arm_func_start ov29_023362EC -ov29_023362EC: ; 0x023362EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov ip, #0 - ldr r8, _023363BC ; =0x02353538 - mov r2, ip - mov r5, #0x14 - mov r6, #0x460 - mov r7, #0xe0 -_02336308: - mul lr, ip, r6 - mul r4, ip, r7 - mov r3, r2 -_02336314: - ldr r1, [r8] - add r0, r1, #0xe0 - add r0, r0, #0x4000 - add r0, r0, lr - mla r0, r3, r5, r0 - add r1, r4, r1 - add r1, r1, r3, lsl #2 - add r1, r1, #0xd000 - add r3, r3, #1 - str r0, [r1, #0x2e4] - cmp r3, #0x38 - blt _02336314 - add ip, ip, #1 - cmp ip, #0x20 - blt _02336308 - ldr r1, _023363BC ; =0x02353538 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x4000 - strh r2, [r0, #0xd4] - ldr r0, [r1] - add r0, r0, #0x4000 - strh r2, [r0, #0xd6] - ldr r0, [r1] - add r0, r0, #0x12000 - strb r2, [r0, #0xaa8] - bl ov29_023369F8 - ldr r1, _023363BC ; =0x02353538 - mov r2, #0 - ldr r0, [r1] - add r0, r0, #0x4000 - str r2, [r0, #0xd0] - ldr r0, [r1] - add r0, r0, #0x4000 - strb r2, [r0, #0xc8] - ldr r0, [r1] - add r0, r0, #0x12000 - strb r2, [r0, #0xb24] - ldr r0, [r1] - add r0, r0, #0x12000 - strb r2, [r0, #0xb25] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023363BC: .word 0x02353538 - arm_func_end ov29_023362EC - - arm_func_start ov29_023363C0 -ov29_023363C0: ; 0x023363C0 - ldr r3, _023363E8 ; =0x02353538 - ldr r2, [r3] - add r2, r2, #0xcc00 - ldrsh r2, [r2, #0xe4] - strh r2, [r0] - ldr r0, [r3] - add r0, r0, #0xcc00 - ldrsh r0, [r0, #0xe6] - strh r0, [r1] - bx lr - .align 2, 0 -_023363E8: .word 0x02353538 - arm_func_end ov29_023363C0 - - arm_func_start ov29_023363EC -ov29_023363EC: ; 0x023363EC - ldr r2, _02336424 ; =0x02353538 - mov ip, #0 - ldr r2, [r2] - add r2, r2, #0xcc00 - ldrsh r3, [r2, #0xe4] - cmp r3, r0 - ldreqsh r0, [r2, #0xe6] - cmpeq r0, r1 - moveq ip, #1 - cmp ip, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02336424: .word 0x02353538 - arm_func_end ov29_023363EC - - arm_func_start GetStairsRoom -GetStairsRoom: ; 0x02336428 - stmdb sp!, {r3, lr} - ldr r0, _0233644C ; =0x02353538 - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe4] - ldrsh r1, [r1, #0xe6] - bl GetTile - ldrb r0, [r0, #7] - ldmia sp!, {r3, pc} - .align 2, 0 -_0233644C: .word 0x02353538 - arm_func_end GetStairsRoom - - arm_func_start ov29_02336450 -ov29_02336450: ; 0x02336450 - ldr r0, _0233645C ; =0x02353724 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_0233645C: .word 0x02353724 - arm_func_end ov29_02336450 - - arm_func_start ov29_02336460 -ov29_02336460: ; 0x02336460 - stmdb sp!, {r4, lr} - ldr r1, _02336598 ; =0x02353538 - ldr r0, _0233659C ; =0x0237CAAC - ldr r1, [r1] - mov r2, #0 - add r1, r1, #0x4000 - ldrsh r4, [r1, #0xd4] - mov r1, r4 - bl ov10_022C25EC - ldr r1, _023365A0 ; =0x0237CAA0 - mov r0, #0 - ldr ip, [r1, #0x14] - ldr r3, _023365A4 ; =0x02353724 - mov r2, r0 - mov r1, #1 - str ip, [r3, #4] - bl GetBgRegionArea - mov r1, r4 - mov r2, #0 - bl ov10_022C2588 - ldr r0, _02336598 ; =0x02353538 - mov r1, r4 - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x2a8 - add r0, r0, #0x10000 - bl ov10_022C26BC - ldr r1, _02336598 ; =0x02353538 - ldr r0, _023365A8 ; =0x00012162 - ldr r2, [r1] - mov r1, r4 - add r0, r2, r0 - mov r2, #0 - bl ov10_022C2720 - mov r0, #0 - mov r1, r0 - bl ov29_022E9F80 - ldr r0, _023365AC ; =0x0237CAA0 - mov r1, r4 - mov r2, #0 - bl ov10_022C2654 - ldr r0, _023365A0 ; =0x0237CAA0 - mov r1, #0x20 - ldr r0, [r0, #8] - bl ov29_022DE0EC - ldr r1, _023365B0 ; =0x0237C9B8 - mov r4, #0 - mov r3, #1 - strb r4, [r1] - strb r3, [r1, #1] - mov r0, #2 - strb r0, [r1, #2] - mov r0, #3 - strb r0, [r1, #3] - ldr r0, _02336598 ; =0x02353538 - ldr r2, _023365B4 ; =0x020A1AE8 - ldr ip, [r0] - add r0, ip, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r2, r0] - cmp r0, #1 - streqb r3, [r1, #4] - streqb r4, [r1, #5] - strneb r4, [r1, #4] - strneb r3, [r1, #5] - add r0, ip, #0x4000 - ldrsh r0, [r0, #0xd4] - sub r0, r0, #0x1a - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - ldrls r0, _023365B0 ; =0x0237C9B8 - movls r1, #0 - strlsb r1, [r0, #4] - strlsb r1, [r0, #5] - ldmia sp!, {r4, pc} - .align 2, 0 -_02336598: .word 0x02353538 -_0233659C: .word 0x0237CAAC -_023365A0: .word 0x0237CAA0 -_023365A4: .word 0x02353724 -_023365A8: .word 0x00012162 -_023365AC: .word 0x0237CAA0 -_023365B0: .word 0x0237C9B8 -_023365B4: .word 0x020A1AE8 - arm_func_end ov29_02336460 - - arm_func_start ov29_023365B8 -ov29_023365B8: ; 0x023365B8 - stmdb sp!, {r3, lr} - ldr r0, _023365DC ; =0x0237CAAC - bl ov10_022C2638 - ldr r0, _023365E0 ; =0x0237CAA0 - bl ov10_022C26A0 - ldr r0, _023365E4 ; =0x02353724 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_023365DC: .word 0x0237CAAC -_023365E0: .word 0x0237CAA0 -_023365E4: .word 0x02353724 - arm_func_end ov29_023365B8 - - arm_func_start ov29_023365E8 -ov29_023365E8: ; 0x023365E8 - stmdb sp!, {r3, lr} - ldr r0, _02336648 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - sub r1, r0, #0x1a - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - ldrls r1, _0233664C ; =0x02352B60 - ldrls r0, _02336650 ; =0x02353724 - strls r1, [r0] - ldmlsia sp!, {r3, pc} - bl ov29_022E0378 - cmp r0, #0 - ldrne r1, _02336654 ; =0x02352B88 - ldrne r0, _02336650 ; =0x02353724 - strne r1, [r0] - ldreq r1, _02336658 ; =0x02352B74 - ldreq r0, _02336650 ; =0x02353724 - streq r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02336648: .word 0x02353538 -_0233664C: .word 0x02352B60 -_02336650: .word 0x02353724 -_02336654: .word 0x02352B88 -_02336658: .word 0x02352B74 - arm_func_end ov29_023365E8 - - arm_func_start ov29_0233665C -ov29_0233665C: ; 0x0233665C - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_02336668: - mov r5, r4 -_0233666C: - mov r0, r5 - mov r1, r6 - bl ov29_02336694 - add r5, r5, #1 - cmp r5, #0x38 - blt _0233666C - add r6, r6, #1 - cmp r6, #0x20 - blt _02336668 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0233665C - - arm_func_start ov29_02336694 -ov29_02336694: ; 0x02336694 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - movs sb, r0 - mov r8, r1 - bmi _023369E8 - cmp r8, #0 - blt _023369E8 - cmp sb, #0x38 - cmplt r8, #0x20 - bge _023369E8 - bl GetTile - ldr r1, _023369F0 ; =0x02353538 - ldrh r2, [r0] - ldr r4, [r1] - add r0, r4, #0x4000 - ldrsh r1, [r0, #0xd4] - and r0, r2, #3 - str r0, [sp, #4] - cmp r1, #0xaa - blt _02336728 - cmp sb, #0x20 - cmplt r8, #0x20 - mov r0, sb - bge _02336714 - mov r1, r8 - bl GetTileSafe - add r2, r4, r8, lsl #6 - ldr r1, _023369F4 ; =0x00012162 - add r2, r2, sb, lsl #1 - ldrh r1, [r2, r1] - strh r1, [r0, #4] - b _023369E8 -_02336714: - mov r1, r8 - bl GetTileSafe - mov r1, #0 - strh r1, [r0, #4] - b _023369E8 -_02336728: - mov r0, sb - add r1, r8, #1 - bl GetTile - ldrh r2, [r0] - add r0, sb, #1 - add r1, r8, #1 - and sl, r2, #3 - bl GetTile - ldrh r2, [r0] - mov r1, r8 - add r0, sb, #1 - and r2, r2, #3 - str r2, [sp] - bl GetTile - ldrh r2, [r0] - add r0, sb, #1 - sub r1, r8, #1 - and fp, r2, #3 - bl GetTile - ldrh r2, [r0] - mov r0, sb - sub r1, r8, #1 - and r4, r2, #3 - bl GetTile - ldrh r2, [r0] - sub r0, sb, #1 - sub r1, r8, #1 - and r5, r2, #3 - bl GetTile - ldrh r2, [r0] - sub r0, sb, #1 - mov r1, r8 - and r6, r2, #3 - bl GetTile - ldrh r2, [r0] - sub r0, sb, #1 - add r1, r8, #1 - and r7, r2, #3 - bl GetTile - ldrh r1, [r0] - ldr r0, [sp, #4] - cmp r0, #1 - and r0, r1, #3 - bne _02336828 - cmp sl, #0 - mov sl, #0xff - ldr r1, [sp] - biceq sl, sl, #1 - cmp r1, #0 - biceq sl, sl, #2 - cmp fp, #0 - biceq sl, sl, #4 - cmp r4, #0 - biceq sl, sl, #8 - cmp r5, #0 - biceq sl, sl, #0x10 - cmp r6, #0 - biceq sl, sl, #0x20 - cmp r7, #0 - biceq sl, sl, #0x40 - cmp r0, #0 - biceq sl, sl, #0x80 - orr sl, sl, #0x200 - b _0233699C -_02336828: - ldr r1, [sp, #4] - cmp r1, #2 - bne _02336884 - cmp sl, #2 - mov sl, #0xff - ldr r1, [sp] - bicne sl, sl, #1 - cmp r1, #2 - bicne sl, sl, #2 - cmp fp, #2 - bicne sl, sl, #4 - cmp r4, #2 - bicne sl, sl, #8 - cmp r5, #2 - bicne sl, sl, #0x10 - cmp r6, #2 - bicne sl, sl, #0x20 - cmp r7, #2 - bicne sl, sl, #0x40 - cmp r0, #2 - bicne sl, sl, #0x80 - orr sl, sl, #0x100 - b _0233699C -_02336884: - cmp r1, #3 - bne _02336954 - ldr r1, _023369F0 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x4000 - ldrsh r1, [r1, #0xd4] - sub r1, r1, #0x1a - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - cmp r1, #1 - bhi _02336904 - cmp sl, #3 - mov sl, #0 - ldr r1, [sp] - orreq sl, sl, #1 - cmp r1, #3 - orreq sl, sl, #2 - cmp fp, #3 - orreq sl, sl, #4 - cmp r4, #3 - orreq sl, sl, #8 - cmp r5, #3 - orreq sl, sl, #0x10 - cmp r6, #3 - orreq sl, sl, #0x20 - cmp r7, #3 - orreq sl, sl, #0x40 - cmp r0, #3 - orreq sl, sl, #0x80 - b _0233699C -_02336904: - cmp sl, #3 - mov sl, #0xff - ldr r1, [sp] - bicne sl, sl, #1 - cmp r1, #3 - bicne sl, sl, #2 - cmp fp, #3 - bicne sl, sl, #4 - cmp r4, #3 - bicne sl, sl, #8 - cmp r5, #3 - bicne sl, sl, #0x10 - cmp r6, #3 - bicne sl, sl, #0x20 - cmp r7, #3 - bicne sl, sl, #0x40 - cmp r0, #3 - bicne sl, sl, #0x80 - orr sl, sl, #0x100 - b _0233699C -_02336954: - cmp sl, #0 - mov sl, #0 - ldr r1, [sp] - orreq sl, sl, #1 - cmp r1, #0 - orreq sl, sl, #2 - cmp fp, #0 - orreq sl, sl, #4 - cmp r4, #0 - orreq sl, sl, #8 - cmp r5, #0 - orreq sl, sl, #0x10 - cmp r6, #0 - orreq sl, sl, #0x20 - cmp r7, #0 - orreq sl, sl, #0x40 - cmp r0, #0 - orreq sl, sl, #0x80 -_0233699C: - mov r0, #4 - bl RandIntSafe - mov r4, r0 - cmp r4, #3 - moveq r4, #0 - bl ov29_022E0880 - cmp r0, #0 - mov r0, sb - mov r1, r8 - movne r4, #0 - bl GetTileSafe - ldr r1, _023369F0 ; =0x02353538 - add r2, sl, sl, lsl #1 - ldr r1, [r1] - add r1, r1, r2 - add r1, r1, r4 - add r1, r1, #0x12000 - ldrb r1, [r1, #0x162] - strh r1, [r0, #4] -_023369E8: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023369F0: .word 0x02353538 -_023369F4: .word 0x00012162 - arm_func_end ov29_02336694 - - arm_func_start ov29_023369F8 -ov29_023369F8: ; 0x023369F8 - ldr r1, _02336A48 ; =0x02353538 - mov ip, #0 - mvn r3, #0 - mov r2, #0xff -_02336A08: - ldr r0, [r1] - add r0, r0, ip, lsl #2 - add r0, r0, #0xcc00 - strh r3, [r0, #0xec] - ldr r0, [r1] - add r0, r0, ip, lsl #2 - add r0, r0, #0xcc00 - strh r3, [r0, #0xee] - ldr r0, [r1] - add r0, r0, ip - add r0, r0, #0xc000 - add ip, ip, #1 - strb r2, [r0, #0xd0c] - cmp ip, #8 - blt _02336A08 - bx lr - .align 2, 0 -_02336A48: .word 0x02353538 - arm_func_end ov29_023369F8 - - arm_func_start ov29_02336A4C -ov29_02336A4C: ; 0x02336A4C - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_02336A58: - mov r5, r4 -_02336A5C: - mov r0, r5 - mov r1, r6 - bl ov29_02336A84 - add r5, r5, #1 - cmp r5, #0x38 - blt _02336A5C - add r6, r6, #1 - cmp r6, #0x20 - blt _02336A58 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_02336A4C - - arm_func_start ov29_02336A84 -ov29_02336A84: ; 0x02336A84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x28 - mov r4, r1 - mov r6, #0 - add r1, r4, #1 - mov r5, r0 - mov r7, r6 - mov r8, r6 - bl GetTile - ldrh r2, [r0] - add r0, r5, #1 - add r1, r4, #1 - and r2, r2, #3 - str r2, [sp, #8] - bl GetTile - ldrh r2, [r0] - mov r1, r4 - add r0, r5, #1 - and r2, r2, #3 - str r2, [sp, #0xc] - bl GetTile - ldrh r1, [r0] - sub sb, r4, #1 - add r0, r5, #1 - and r1, r1, #3 - str r1, [sp, #0x10] - mov r1, sb - bl GetTile - ldrh r2, [r0] - mov r0, r5 - mov r1, sb - and r2, r2, #3 - str r2, [sp, #0x14] - bl GetTile - ldrh r2, [r0] - mov r1, sb - sub sb, r5, #1 - and r2, r2, #3 - mov r0, sb - str r2, [sp, #0x18] - bl GetTile - ldrh r2, [r0] - mov r0, sb - mov r1, r4 - and r2, r2, #3 - str r2, [sp, #0x1c] - bl GetTile - ldrh r2, [r0] - mov r0, sb - add r1, r4, #1 - and r2, r2, #3 - str r2, [sp, #0x20] - bl GetTile - ldrh r1, [r0] - ldr r0, [sp, #8] - ldr r2, [sp, #0x10] - cmp r0, #1 - and r0, r1, #3 - orreq r6, r6, #1 - str r0, [sp, #0x24] - cmp r2, #1 - ldr r3, [sp, #0x18] - orreq r6, r6, #4 - cmp r3, #1 - ldr ip, [sp, #0x20] - orreq r6, r6, #0x10 - cmp ip, #1 - ldr r0, [sp, #8] - orreq r6, r6, #0x40 - cmp r0, #0 - beq _02336BB4 - ldr r0, [sp, #0xc] - cmp r0, #1 - bne _02336BB4 - cmp r2, #0 - orrne r6, r6, #2 -_02336BB4: - cmp r2, #0 - beq _02336BD0 - ldr r0, [sp, #0x14] - cmp r0, #1 - bne _02336BD0 - cmp r3, #0 - orrne r6, r6, #8 -_02336BD0: - cmp r3, #0 - beq _02336BEC - ldr r0, [sp, #0x1c] - cmp r0, #1 - bne _02336BEC - cmp ip, #0 - orrne r6, r6, #0x20 -_02336BEC: - cmp ip, #0 - beq _02336C0C - ldr r0, [sp, #0x24] - cmp r0, #1 - bne _02336C0C - ldr r0, [sp, #8] - cmp r0, #0 - orrne r6, r6, #0x80 -_02336C0C: - mov r1, #0 - mov fp, r1 - add lr, sp, #0 - mov sb, #1 - add r0, sp, #8 -_02336C20: - ldr sl, [r0, r1, lsl #2] - sub sl, sl, #1 - cmp sl, #1 - strlsb sb, [lr, r1] - strhib fp, [lr, r1] - add r1, r1, #1 - cmp r1, #8 - blt _02336C20 - ldrb r0, [sp] - mov sb, #0xff - mov r1, r4 - cmp r0, #0 - ldrb r0, [sp, #2] - orrne r7, r7, #1 - cmp r0, #0 - ldrb r0, [sp, #4] - orrne r7, r7, #4 - cmp r0, #0 - ldrb r0, [sp, #6] - orrne r7, r7, #0x10 - cmp r0, #0 - ldr r0, [sp, #8] - orrne r7, r7, #0x40 - cmp r0, #0 - ldrneb r0, [sp, #1] - cmpne r0, #0 - cmpne r2, #0 - orrne r7, r7, #2 - cmp r2, #0 - ldrneb r0, [sp, #3] - cmpne r0, #0 - cmpne r3, #0 - orrne r7, r7, #8 - cmp r3, #0 - ldrneb r0, [sp, #5] - cmpne r0, #0 - cmpne ip, #0 - orrne r7, r7, #0x20 - cmp ip, #0 - ldrneb r0, [sp, #7] - cmpne r0, #0 - ldrne r0, [sp, #8] - cmpne r0, #0 - ldr r0, [sp, #8] - orrne r7, r7, #0x80 - cmp r0, #0 - orrne r8, r8, #1 - cmp r2, #0 - orrne r8, r8, #4 - cmp r3, #0 - orrne r8, r8, #0x10 - cmp ip, #0 - ldr r0, [sp, #8] - orrne r8, r8, #0x40 - cmp r0, #0 - ldrne r0, [sp, #0xc] - cmpne r0, #0 - cmpne r2, #0 - orrne r8, r8, #2 - cmp r2, #0 - ldrne r0, [sp, #0x14] - cmpne r0, #0 - cmpne r3, #0 - orrne r8, r8, #8 - cmp r3, #0 - ldrne r0, [sp, #0x1c] - cmpne r0, #0 - cmpne ip, #0 - orrne r8, r8, #0x20 - cmp ip, #0 - ldrne r0, [sp, #0x24] - cmpne r0, #0 - ldrne r0, [sp, #8] - cmpne r0, #0 - orrne r8, r8, #0x80 - cmp r5, #1 - bicle sb, sb, #0xe0 - cmp r4, #1 - bicle sb, sb, #0x38 - cmp r5, #0x36 - bicge sb, sb, #0xe - cmp r4, #0x1e - mov r0, r5 - bicge sb, sb, #0x83 - bl GetTileSafe - strb r6, [r0, #8] - mov r0, r5 - mov r1, r4 - bl GetTileSafe - strb r7, [r0, #9] - mov r0, r5 - mov r1, r4 - bl GetTileSafe - strb r8, [r0, #0xa] - mov r0, r5 - mov r1, r4 - bl GetTileSafe - strb sb, [r0, #0xb] - add sp, sp, #0x28 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02336A84 - - arm_func_start ov29_02336DB0 -ov29_02336DB0: ; 0x02336DB0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, r1 - mov r1, r2 - mov r5, r3 - bl GetTile - mov r4, r0 - ldrh r0, [r4] - tst r0, #0x200 - beq _02336DE0 - ldr r0, _02336F48 ; =0x02352F14 - bl DebugPrint0__0200C1FC -_02336DE0: - ldrh r1, [r4] - tst r1, #0x1000 - bne _02336DF4 - tst r1, #0x2000 - beq _02336E04 -_02336DF4: - add r0, r6, #0x32 - add r0, r0, #0xe000 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336E04: - tst r1, #0x20 - addne r0, r6, #0x20 - addne r0, r0, #0xe000 - addne r0, r0, r5, lsl #1 - ldmneia sp!, {r4, r5, r6, pc} - ldrb r0, [sp, #0x14] - cmp r0, #0 - beq _02336E40 - ldrh r1, [r4, #4] - add r0, r6, #0x1e4 - add r2, r0, #0xc000 - mov r0, #0x12 - mla r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336E40: - ldrh r0, [r4, #2] - tst r0, #4 - addne r0, r6, #0x44 - addne r0, r0, #0xe000 - addne r0, r0, r5, lsl #1 - ldmneia sp!, {r4, r5, r6, pc} - ldr r2, [r4, #0x10] - cmp r2, #0 - beq _02336EFC - ldrb r0, [r2, #0x20] - cmp r0, #0 - ldreqb r0, [sp, #0x10] - cmpeq r0, #0 - movne r0, #1 - moveq r0, #0 - ands r1, r0, #0xff - beq _02336EB0 - ldr r0, [r2] - cmp r0, #2 - bne _02336EB0 - ldr r1, [r2, #0xb4] - add r0, r6, #0x204 - ldrb r1, [r1] - add r2, r0, #0xdc00 - mov r0, #0x12 - mla r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336EB0: - cmp r1, #0 - beq _02336EE0 - ldr r0, [r2] - cmp r0, #5 - bne _02336EE0 - ldrsh r1, [r6, #0x14] - add r0, r6, #0x204 - add r2, r0, #0xdc00 - mov r0, #0x12 - smlabb r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336EE0: - ldrh r1, [r4, #4] - add r0, r6, #0x1e4 - add r2, r0, #0xc000 - mov r0, #0x12 - mla r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336EFC: - ldrb r0, [sp, #0x18] - cmp r0, #0 - bne _02336F2C - tst r1, #0x200 - beq _02336F2C - ldrsh r1, [r6, #0x14] - add r0, r6, #0x204 - add r2, r0, #0xdc00 - mov r0, #0x12 - smlabb r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} -_02336F2C: - ldrh r1, [r4, #4] - add r0, r6, #0x1e4 - add r2, r0, #0xc000 - mov r0, #0x12 - mla r0, r1, r0, r2 - add r0, r0, r5, lsl #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02336F48: .word 0x02352F14 - arm_func_end ov29_02336DB0 - - arm_func_start ov29_02336F4C -ov29_02336F4C: ; 0x02336F4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - ldr r0, _02337108 ; =0x02353538 - ldr sl, [r0] - add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] - str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] - bl IsSecretBazaar__023385C4 - ldr r1, _0233710C ; =0x0001A224 - ldr r2, _02337110 ; =0x02352B9C - ldrsh r3, [sl, r1] - ldr r1, _02337114 ; =0x02352D58 - mov sb, r3, asr #3 - str r0, [sp, #0x14] - add r0, sb, #0x1e - mov r0, r0, lsl #1 - ldrsh r7, [r2, r0] - ldrsh r5, [r1, r0] - mov r0, #0 - str r0, [sp, #0x10] -_02336FA0: - ldr r0, _02337118 ; =0x0001A226 - add r1, sl, #0xc4 - ldrsh r3, [sl, r0] - ldr r0, _02337110 ; =0x02352B9C - mov r2, r5, lsl #0x10 - mov r3, r3, asr #3 - sub r4, r3, #1 - add r3, r0, r4, lsl #1 - ldr r0, _02337114 ; =0x02352D58 - ldrsh r8, [r3, #0x3c] - add r0, r0, r4, lsl #1 - ldrsh r6, [r0, #0x3c] - add r0, r1, #0x4000 - add r3, r8, r8, lsl #1 - mov r1, r2, asr #0x10 - add r2, r7, r3 - mov r2, r2, lsl #0x10 - str fp, [sp] - mov r3, r2, asr #0x10 - ldr r2, [sp, #0x18] - and sb, sb, #0x3f - str r2, [sp, #4] - ldr r2, [sp, #0x14] - str r2, [sp, #8] - mov r2, r6, lsl #0x10 - mov r2, r2, asr #0x10 - bl ov29_02336DB0 - str r0, [sp, #0x1c] - mov r0, #0 - str r0, [sp, #0xc] - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x24] - add r0, sl, #0xc4 - str r0, [sp, #0x2c] - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x28] - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x20] -_02337044: - mov r0, #0 - str r0, [sp] - ldr r3, [sp, #0x1c] - and r4, r4, #0x1f - ldrh r2, [r3], #6 - str r3, [sp, #0x1c] - ldr r0, [sp, #0x20] - mov r1, r4 - mov r3, #1 - bl sub_02051D8C - add r8, r8, #1 - add r4, r4, #1 - cmp r8, #3 - bne _023370B8 - str fp, [sp] - ldr r0, [sp, #0x18] - add r6, r6, #1 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - mov r2, r6, lsl #0x10 - str r0, [sp, #8] - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x24] - ldr r3, [sp, #0x28] - add r0, r0, #0x4000 - mov r2, r2, asr #0x10 - mov r8, #0 - bl ov29_02336DB0 - str r0, [sp, #0x1c] -_023370B8: - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #0x1b - blt _02337044 - ldr r0, [sp, #0x10] - add r7, r7, #1 - add r0, r0, #1 - cmp r7, #3 - add sb, sb, #1 - addeq r5, r5, #1 - moveq r7, #0 - str r0, [sp, #0x10] - cmp r0, #0x21 - blt _02336FA0 - mov r0, #1 - mov r1, #0 - bl sub_02051E60 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337108: .word 0x02353538 -_0233710C: .word 0x0001A224 -_02337110: .word 0x02352B9C -_02337114: .word 0x02352D58 -_02337118: .word 0x0001A226 - arm_func_end ov29_02336F4C - - arm_func_start ov29_0233711C -ov29_0233711C: ; 0x0233711C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldr r2, _02337294 ; =0x02353538 - mov r4, r1 - ldr sl, [r2] - mov r5, r0 - add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] - str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] - bl IsSecretBazaar__023385C4 - ldr r2, _02337298 ; =0x0001A224 - ldr r1, _0233729C ; =0x02352B9C - add r3, r2, #2 - ldrsh r6, [sl, r2] - ldrsh r2, [sl, r3] - add r3, r6, r5 - str r0, [sp, #0x14] - add r0, r2, r4 - mov r0, r0, asr #3 - sub sb, r0, #1 - add r0, sb, #0x1e - mov r2, r0, lsl #1 - str fp, [sp] - ldr r0, [sp, #0x18] - mov r8, r3, asr #3 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - ldrsh r7, [r1, r2] - str r0, [sp, #8] - add r0, r8, #0x1e - mov r3, r0, lsl #1 - ldrsh r6, [r1, r3] - ldr r1, _023372A0 ; =0x02352D58 - add r0, sl, #0xc4 - ldrsh r4, [r1, r3] - ldrsh r5, [r1, r2] - add r3, r7, r7, lsl #1 - add r3, r6, r3 - mov r1, r4, lsl #0x10 - mov r2, r5, lsl #0x10 - mov r3, r3, lsl #0x10 - add r0, r0, #0x4000 - mov r1, r1, asr #0x10 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - bl ov29_02336DB0 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0xc] - mov r0, r4, lsl #0x10 - mov r1, r6, lsl #0x10 - add r4, sl, #0xc4 - mov r6, r0, asr #0x10 - mov sl, r1, asr #0x10 -_023371F8: - mov r0, #0 - ldr r3, [sp, #0x10] - str r0, [sp] - ldrh r2, [r3], #6 - and r8, r8, #0x3f - and sb, sb, #0x1f - str r3, [sp, #0x10] - mov r0, r8 - mov r1, sb - mov r3, #1 - bl sub_02051D8C - add r7, r7, #1 - add sb, sb, #1 - cmp r7, #3 - bne _0233726C - str fp, [sp] - ldr r0, [sp, #0x18] - add r5, r5, #1 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - mov r2, r5, lsl #0x10 - str r0, [sp, #8] - add r0, r4, #0x4000 - mov r1, r6 - mov r2, r2, asr #0x10 - mov r3, sl - mov r7, #0 - bl ov29_02336DB0 - str r0, [sp, #0x10] -_0233726C: - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #0x1b - blt _023371F8 - mov r0, #1 - mov r1, #0 - bl sub_02051E60 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337294: .word 0x02353538 -_02337298: .word 0x0001A224 -_0233729C: .word 0x02352B9C -_023372A0: .word 0x02352D58 - arm_func_end ov29_0233711C - - arm_func_start ov29_023372A4 -ov29_023372A4: ; 0x023372A4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - ldr r2, _02337418 ; =0x02353538 - mov r4, r1 - ldr sl, [r2] - mov r5, r0 - add r1, sl, #0x1a000 - ldrb r0, [r1, #0x245] - str r0, [sp, #0x18] - ldrb fp, [r1, #0x244] - bl IsSecretBazaar__023385C4 - ldr r2, _0233741C ; =0x0001A224 - ldr r1, _02337420 ; =0x02352B9C - add r3, r2, #2 - ldrsh r6, [sl, r2] - ldrsh r2, [sl, r3] - add r3, r6, r5 - str r0, [sp, #0x14] - add r0, r2, r4 - mov r8, r0, asr #3 - add r0, r8, #0x1e - mov r7, r3, asr #3 - str fp, [sp] - mov r2, r0, lsl #1 - ldr r0, [sp, #0x18] - ldr r3, _02337424 ; =0x02352D58 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - ldrsh r5, [r3, r2] - str r0, [sp, #8] - add r0, r7, #0x1e - mov r4, r0, lsl #1 - ldrsh r6, [r1, r4] - ldrsh r1, [r1, r2] - add r0, sl, #0xc4 - mov r2, r5, lsl #0x10 - ldrsh r4, [r3, r4] - add sb, r1, r1, lsl #1 - add r3, r6, sb - mov r1, r4, lsl #0x10 - mov r3, r3, lsl #0x10 - add r0, r0, #0x4000 - mov r1, r1, asr #0x10 - mov r2, r2, asr #0x10 - mov r3, r3, asr #0x10 - bl ov29_02336DB0 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #0xc] - mov r0, r5, lsl #0x10 - mov r1, sb, lsl #0x10 - add r5, sl, #0xc4 - mov sb, r0, asr #0x10 - mov sl, r1, asr #0x10 -_0233737C: - mov r0, #0 - ldr r3, [sp, #0x10] - str r0, [sp] - ldrh r2, [r3], #2 - and r7, r7, #0x3f - and r8, r8, #0x1f - str r3, [sp, #0x10] - mov r0, r7 - mov r1, r8 - mov r3, #1 - bl sub_02051D8C - add r6, r6, #1 - add r7, r7, #1 - cmp r6, #3 - bne _023373F0 - str fp, [sp] - ldr r0, [sp, #0x18] - add r4, r4, #1 - str r0, [sp, #4] - ldr r0, [sp, #0x14] - mov r1, r4, lsl #0x10 - str r0, [sp, #8] - add r0, r5, #0x4000 - mov r1, r1, asr #0x10 - mov r2, sb - mov r3, sl - mov r6, #0 - bl ov29_02336DB0 - str r0, [sp, #0x10] -_023373F0: - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #0x21 - blt _0233737C - mov r0, #1 - mov r1, #0 - bl sub_02051E60 - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337418: .word 0x02353538 -_0233741C: .word 0x0001A224 -_02337420: .word 0x02352B9C -_02337424: .word 0x02352D58 - arm_func_end ov29_023372A4 - - arm_func_start ov29_02337428 -ov29_02337428: ; 0x02337428 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - ldr r5, _02337780 ; =0x02353538 - str r2, [sp, #4] - mov r4, r0 - mov r7, r1 - mov r6, r3 - ldr r5, [r5] - bl GetLeader - ldr r1, _02337784 ; =0x0001A224 - ldr r2, _02337780 ; =0x02353538 - ldrsh r8, [r5, r1] - ldr r1, [r2] - ldr r2, _02337788 ; =0x0235171C - add r1, r1, #0x1a000 - strb r6, [r1, #0x251] - mov r3, r7, lsl #2 - add r1, r2, r7, lsl #2 - ldrsh r3, [r2, r3] - ldrsh sl, [r1, #2] - ldrsh r6, [r4] - ldrsh r7, [r4, #2] - str r0, [sp, #0x20] - mov sb, r8, asr #3 - mov r2, #0 - add r1, sp, #0x2c -_02337490: - mov r0, r2, lsl #2 - strh r6, [r1, r0] - add r0, r1, r2, lsl #2 - add r2, r2, #1 - strh r7, [r0, #2] - cmp r2, #6 - add r6, r6, r3 - add r7, r7, sl - blt _02337490 - add r0, sb, #0x1e - mov r2, r0, lsl #1 - ldr r1, _0233778C ; =0x02352B9C - ldr r0, _02337790 ; =0x02352D58 - ldrsh r8, [r1, r2] - ldrsh r6, [r0, r2] - mov r0, #0 - str r0, [sp, #0xc] -_023374D4: - ldr r0, _02337794 ; =0x0001A226 - ldr r2, _0233778C ; =0x02352B9C - ldrsh r3, [r5, r0] - ldr r0, [sp, #4] - ldr r1, _02337790 ; =0x02352D58 - mov fp, r3, asr #3 - cmp r0, #0 - add r0, r2, fp, lsl #1 - add r1, r1, fp, lsl #1 - ldrsh r0, [r0, #0x3c] - ldrsh r7, [r1, #0x3c] - strh r6, [sp, #0x28] - str r0, [sp, #0x1c] - add r0, r0, r0, lsl #1 - strh r7, [sp, #0x2a] - add sl, r8, r0 - beq _02337544 - ldrsh r0, [r4] - cmp r6, r0 - ldreqsh r0, [r4, #2] - cmpeq r7, r0 - addeq r0, r5, #0x150 - addeq r0, r0, #0x12000 - addeq sl, r0, sl, lsl #1 - addne r0, r5, #0x12c - addne r0, r0, #0x12000 - addne sl, r0, sl, lsl #1 - b _023375E8 -_02337544: - ldr r0, [sp, #0x20] - add r1, sp, #0x28 - bl ov29_022FF958 - cmp r0, #0 - bne _023375DC - ldr r0, [sp, #0x20] - add r1, sp, #0x28 - bl ov29_022E2930 - cmp r0, #0 - beq _023375DC - mov r0, #0 - add r2, sp, #0x2c - b _02337598 -_02337578: - mov r3, r0, lsl #2 - ldrsh r1, [r2, r3] - cmp r6, r1 - addeq r1, r2, r3 - ldreqsh r1, [r1, #2] - cmpeq r7, r1 - beq _023375A0 - add r0, r0, #1 -_02337598: - cmp r0, #6 - blt _02337578 -_023375A0: - cmp r0, #6 - bne _023375CC - bl sub_0204AED0 - cmp r0, #0 - ldrne r0, _02337798 ; =0x0001213E - addne r0, r5, r0 - addne sl, r0, sl, lsl #1 - addeq r0, r5, #0x12c - addeq r0, r0, #0x12000 - addeq sl, r0, sl, lsl #1 - b _023375E8 -_023375CC: - add r0, r5, #0x150 - add r0, r0, #0x12000 - add sl, r0, sl, lsl #1 - b _023375E8 -_023375DC: - add r0, r5, #0x12c - add r0, r0, #0x12000 - add sl, r0, sl, lsl #1 -_023375E8: - add r0, r5, #0x150 - add r0, r0, #0x12000 - add r0, r0, r8, lsl #1 - ldr r1, _02337798 ; =0x0001213E - str r0, [sp, #0x18] - add r0, r5, r1 - add r0, r0, r8, lsl #1 - str r0, [sp, #0x10] - mov r0, #0 - str r0, [sp, #8] - add r0, r5, #0x12c - add r0, r0, #0x12000 - add r0, r0, r8, lsl #1 - str r0, [sp, #0x14] - mov r0, r6, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x24] -_0233762C: - mov r0, #0 - str r0, [sp] - ldrh r2, [sl], #6 - and sb, sb, #0x3f - and fp, fp, #0x1f - mov r0, sb - mov r1, fp - mov r3, #0 - bl sub_02051D8C - ldr r0, [sp, #0x1c] - add fp, fp, #1 - add r0, r0, #1 - str r0, [sp, #0x1c] - cmp r0, #3 - bne _02337730 - ldr r0, [sp, #0x24] - add r7, r7, #1 - strh r0, [sp, #0x28] - ldr r0, [sp, #4] - cmp r0, #0 - mov r0, #0 - str r0, [sp, #0x1c] - strh r7, [sp, #0x2a] - beq _023376A8 - ldrsh r0, [r4] - cmp r6, r0 - ldreqsh r0, [r4, #2] - cmpeq r7, r0 - ldreq sl, [sp, #0x18] - ldrne sl, [sp, #0x14] - b _02337730 -_023376A8: - ldr r0, [sp, #0x20] - add r1, sp, #0x28 - bl ov29_022FF958 - cmp r0, #0 - bne _0233772C - ldr r0, [sp, #0x20] - add r1, sp, #0x28 - bl ov29_022E2930 - cmp r0, #0 - beq _0233772C - mov r0, #0 - b _02337700 -_023376D8: - mov r2, r0, lsl #2 - add r1, sp, #0x2c - ldrsh r1, [r1, r2] - cmp r6, r1 - addeq r1, sp, #0x2c - addeq r1, r1, r2 - ldreqsh r1, [r1, #2] - cmpeq r7, r1 - beq _02337708 - add r0, r0, #1 -_02337700: - cmp r0, #6 - blt _023376D8 -_02337708: - cmp r0, #6 - bne _02337724 - bl sub_0204AED0 - cmp r0, #0 - ldrne sl, [sp, #0x10] - ldreq sl, [sp, #0x14] - b _02337730 -_02337724: - ldr sl, [sp, #0x18] - b _02337730 -_0233772C: - ldr sl, [sp, #0x14] -_02337730: - ldr r0, [sp, #8] - add r0, r0, #1 - str r0, [sp, #8] - cmp r0, #0x19 - blt _0233762C - ldr r0, [sp, #0xc] - add r8, r8, #1 - add r0, r0, #1 - cmp r8, #3 - add sb, sb, #1 - addeq r6, r6, #1 - moveq r8, #0 - str r0, [sp, #0xc] - cmp r0, #0x21 - blt _023374D4 - mov r0, #0 - mov r1, r0 - bl sub_02051E60 - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337780: .word 0x02353538 -_02337784: .word 0x0001A224 -_02337788: .word 0x0235171C -_0233778C: .word 0x02352B9C -_02337790: .word 0x02352D58 -_02337794: .word 0x0001A226 -_02337798: .word 0x0001213E - arm_func_end ov29_02337428 - - arm_func_start ov29_0233779C -ov29_0233779C: ; 0x0233779C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, #0 - mov r5, r8 - mov r6, r8 -_023377B0: - mov r0, r8, lsl #0x10 - mov r7, r6 - mov r4, r0, asr #0x10 -_023377BC: - mov r0, r7, lsl #0x10 - mov r1, r4 - mov r2, r5 - mov r3, r5 - mov r0, r0, asr #0x10 - str r5, [sp] - bl sub_02051D8C - add r7, r7, #1 - cmp r7, #0x20 - blt _023377BC - add r8, r8, #1 - cmp r8, #0x20 - blt _023377B0 - mov r0, #0 - mov r1, r0 - bl sub_02051E60 - ldr r0, _02337818 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x1a000 - strb r1, [r0, #0x251] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02337818: .word 0x02353538 - arm_func_end ov29_0233779C - - arm_func_start ov29_0233781C -ov29_0233781C: ; 0x0233781C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - mov r4, r7 - mov r5, r7 -_0233782C: - mov r6, r5 -_02337830: - mov r0, r6 - mov r1, r7 - bl GetTileSafe - add r6, r6, #1 - strh r4, [r0, #2] - cmp r6, #0x38 - blt _02337830 - add r7, r7, #1 - cmp r7, #0x20 - blt _0233782C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0233781C - - arm_func_start ov29_0233785C -ov29_0233785C: ; 0x0233785C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _02337A34 ; =0x0000270F - mov r3, #0 - ldr r6, _02337A38 ; =0x02353538 - mov sb, r3 - rsb r0, r1, #0 - mov r4, #0x1c -_02337878: - mul r2, r3, r4 - ldr r5, [r6] - add r3, r3, #1 - add r5, r5, r2 - add r5, r5, #0xe000 - strb sb, [r5, #0xee8] - ldr r5, [r6] - cmp r3, #0x20 - add r5, r5, r2 - add r5, r5, #0xe000 - strb sb, [r5, #0xee9] - ldr r5, [r6] - add r5, r5, r2 - add r5, r5, #0xee00 - strh r1, [r5, #0xea] - ldr r5, [r6] - add r5, r5, r2 - add r5, r5, #0xee00 - strh r1, [r5, #0xec] - ldr r5, [r6] - add r5, r5, r2 - add r5, r5, #0xee00 - strh r0, [r5, #0xee] - ldr r5, [r6] - add r2, r5, r2 - add r2, r2, #0xee00 - strh r0, [r2, #0xf0] - blt _02337878 - mov sl, sb -_023378EC: - add r5, sl, #1 - mov r0, sl, lsl #0x10 - mov r1, r5, lsl #0x10 - ldr fp, _02337A38 ; =0x02353538 - mov r8, #0 - mov r6, r0, asr #0x10 - mov r4, r1, asr #0x10 - mov r7, #1 -_0233790C: - mov r0, r8 - mov r1, sl - bl GetTile - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0233797C - mov r0, #0x1c - mul r2, r1, r0 - ldr r0, [fp] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - strb r7, [r0, r2] - add r0, r0, r2 - ldrsh r2, [r0, #2] - cmp r2, r8 - strgth r8, [r0, #2] - ldrsh r2, [r0, #4] - cmp r2, sl - strgth r6, [r0, #4] - ldrsh r3, [r0, #6] - add r2, r8, #1 - cmp r3, r2 - strlth r2, [r0, #6] - ldrsh r2, [r0, #8] - cmp r2, r5 - strlth r4, [r0, #8] - cmp sb, r1 - andlt sb, r1, #0xff -_0233797C: - add r8, r8, #1 - cmp r8, #0x38 - blt _0233790C - add sl, sl, #1 - cmp sl, #0x20 - blt _023378EC - mov r2, #0x18 - ldr r7, _02337A38 ; =0x02353538 - mov r1, #0 - mov r3, r2 - mov r4, r2 - mov r5, r2 - mov r6, #0x1c -_023379B0: - mul sl, r1, r6 - ldr r0, [r7] - add r0, r0, #0x2e8 - add r0, r0, #0xec00 - ldrb r8, [r0, sl] - add r0, r0, sl - cmp r8, #0 - beq _02337A10 - ldrsh r8, [r0, #2] - sub r8, r8, #1 - mul sl, r8, r2 - str sl, [r0, #0xc] - ldrsh r8, [r0, #4] - sub r8, r8, #1 - mul sl, r8, r3 - str sl, [r0, #0x10] - ldrsh r8, [r0, #6] - add r8, r8, #1 - mul sl, r8, r4 - str sl, [r0, #0x14] - ldrsh r8, [r0, #8] - add r8, r8, #1 - mul sl, r8, r5 - str sl, [r0, #0x18] -_02337A10: - add r1, r1, #1 - cmp r1, #0x20 - blt _023379B0 - ldr r0, _02337A38 ; =0x02353538 - add r1, sb, #1 - ldr r0, [r0] - add r0, r0, #0xe000 - strb r1, [r0, #0xee4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337A34: .word 0x0000270F -_02337A38: .word 0x02353538 - arm_func_end ov29_0233785C - - arm_func_start ov29_02337A3C -ov29_02337A3C: ; 0x02337A3C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r5, r0 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl GetTile - ldrb r4, [r0, #7] - bl ov29_022E333C - ldr r1, _02337B28 ; =0x02353538 - ldr r3, [r1] - add r1, r3, #0x1a000 - ldrb r2, [r1, #0x23e] - cmp r2, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r1, [r1, #0x250] - cmp r1, #0 - bne _02337A84 - cmp r4, #0xff - bne _02337AA0 -_02337A84: - ldrsh r2, [r5] - ldrsh r1, [r5, #2] - sub r4, r2, r0 - sub r7, r1, r0 - add r5, r2, r0 - add r6, r1, r0 - b _02337B1C -_02337AA0: - add r0, r3, #0x2e8 - add r1, r0, #0xec00 - mov r0, #0x1c - mla r2, r4, r0, r1 - ldrb r0, [r2, #1] - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, #1 - strb r0, [r2, #1] - ldrsh r1, [r2, #2] - ldrsh r0, [r2, #4] - ldrsh r5, [r2, #6] - ldrsh r6, [r2, #8] - sub r4, r1, #1 - sub r7, r0, #1 - b _02337B1C -_02337AE0: - mov r8, r4 - b _02337B10 -_02337AE8: - mov r0, r8 - mov r1, r7 - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, r7 - orr r2, r2, #3 - strh r2, [r0, #2] - mov r0, r8 - bl ov29_023391EC - add r8, r8, #1 -_02337B10: - cmp r8, r5 - ble _02337AE8 - add r7, r7, #1 -_02337B1C: - cmp r7, r6 - ble _02337AE0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02337B28: .word 0x02353538 - arm_func_end ov29_02337A3C - - arm_func_start ov29_02337B2C -ov29_02337B2C: ; 0x02337B2C - stmdb sp!, {r3, lr} - mov r1, r0 - ldrsh r0, [r1] - ldrsh r1, [r1, #2] - arm_func_end ov29_02337B2C - - arm_func_start ov29_02337B3C -ov29_02337B3C: ; 0x02337B3C - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0] - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02337B3C - - arm_func_start ov29_02337B68 -ov29_02337B68: ; 0x02337B68 - stmdb sp!, {r3, lr} - mov r1, r0 - ldrsh r0, [r1] - ldrsh r1, [r1, #2] - bl GetTile - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02337B94 - ldr r1, [r0] - cmp r1, #1 - ldmeqia sp!, {r3, pc} -_02337B94: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_02337B68 - - arm_func_start ov29_02337B9C -ov29_02337B9C: ; 0x02337B9C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - arm_func_end ov29_02337B9C - - arm_func_start ov29_02337BA0 -ov29_02337BA0: ; 0x02337BA0 - mov r8, r0 - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - mov r5, #0 - bl GetTileSafe - ldrh r1, [r0] - tst r1, #3 - bne _02337C4C - ldrh r1, [r0] - tst r1, #0x100 - bne _02337C4C - tst r1, #0x10 - bne _02337C4C - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - mov r5, #1 - sub r7, r5, #2 - orr r1, r1, #1 - strh r1, [r0] - mov r4, r7 -_02337BF4: - mov r6, r4 -_02337BF8: - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - add r0, r6, r0 - add r1, r7, r1 - bl ov29_02336694 - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - add r0, r6, r0 - add r1, r7, r1 - bl ov29_02336A84 - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - add r0, r6, r0 - add r1, r7, r1 - bl ov29_023391EC - add r6, r6, #1 - cmp r6, #1 - ble _02337BF8 - add r7, r7, #1 - cmp r7, #1 - ble _02337BF4 -_02337C4C: - cmp r5, #0 - beq _02337C9C - arm_func_end ov29_02337BA0 - - arm_func_start ov29_02337C54 -ov29_02337C54: ; 0x02337C54 - ldr r4, _02337CA4 ; =0x02353538 - mov r6, #0 -_02337C5C: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb78] - mov r0, r7 - bl EntityIsValid__02337CA8 - cmp r0, #0 - beq _02337C84 - mov r0, r7 - bl ov29_02304BAC -_02337C84: - add r6, r6, #1 - cmp r6, #0x14 - blt _02337C5C - bl ov29_02336F4C - mov r0, r8 - bl ov29_022E66C4 -_02337C9C: - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02337CA4: .word 0x02353538 - arm_func_end ov29_02337C54 - - arm_func_start EntityIsValid__02337CA8 -EntityIsValid__02337CA8: ; 0x02337CA8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02337CA8 - - arm_func_start ov29_02337CCC -ov29_02337CCC: ; 0x02337CCC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - ldrsh r0, [r6] - ldrsh r1, [r6, #2] - mov r4, #0 - bl GetTileSafe - ldrh r1, [r0] - tst r1, #3 - bne _02337D60 - ldrh r1, [r0] - tst r1, #0x100 - bne _02337D60 - tst r1, #0x10 - bne _02337D60 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - mov r4, #1 - sub r5, r4, #2 - orr r1, r1, #1 - strh r1, [r0] - ldrh r1, [r0, #2] - mov r7, r5 - orr r1, r1, #0x10 - strh r1, [r0, #2] -_02337D30: - mov r8, r7 -_02337D34: - ldrsh r0, [r6] - ldrsh r1, [r6, #2] - add r0, r8, r0 - add r1, r5, r1 - bl ov29_02336A84 - add r8, r8, #1 - cmp r8, #1 - ble _02337D34 - add r5, r5, #1 - cmp r5, #1 - ble _02337D30 -_02337D60: - mov r0, r4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov29_02337CCC - - arm_func_start ov29_02337D68 -ov29_02337D68: ; 0x02337D68 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - bl GetTileSafe - ldrh r1, [r0, #2] - tst r1, #0x10 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bic r1, r1, #0x10 - mvn r6, #0 - strh r1, [r0, #2] - mov r4, r6 -_02337D98: - mov r5, r4 -_02337D9C: - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - add r0, r5, r0 - add r1, r6, r1 - bl ov29_02336694 - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - add r0, r5, r0 - add r1, r6, r1 - bl ov29_023391EC - add r5, r5, #1 - cmp r5, #1 - ble _02337D9C - add r6, r6, #1 - cmp r6, #1 - ble _02337D98 - ldr r4, _02337E28 ; =0x02353538 - mov r5, #0 -_02337DE4: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb78] - mov r0, r6 - bl EntityIsValid__02337CA8 - cmp r0, #0 - beq _02337E0C - mov r0, r6 - bl ov29_02304BAC - arm_func_end ov29_02337D68 -_02337E0C: - add r5, r5, #1 - cmp r5, #0x14 - blt _02337DE4 - bl ov29_02336F4C - mov r0, r7 - bl ov29_022E66C4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02337E28: .word 0x02353538 - - arm_func_start ov29_02337E2C -ov29_02337E2C: ; 0x02337E2C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl ov29_02337E94 - cmp r0, #0 - ldrh r0, [r5] - beq _02337E54 - tst r0, #3 - moveq r4, #1 - b _02337E84 -_02337E54: - and r0, r0, #3 - cmp r0, #2 - bne _02337E80 - ldr r0, _02337E8C ; =0x02353538 - ldr r1, _02337E90 ; =0x020A1AE8 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - ldrb r0, [r1, r0] - cmp r0, #1 - bne _02337E84 -_02337E80: - mov r4, #1 -_02337E84: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02337E8C: .word 0x02353538 -_02337E90: .word 0x020A1AE8 - arm_func_end ov29_02337E2C - - arm_func_start ov29_02337E94 -ov29_02337E94: ; 0x02337E94 - ldr r0, _02337EB8 ; =0x02353538 - mov r1, #0xc - ldr r0, [r0] - ldr r2, _02337EBC ; =0x022C6327 - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - smulbb r0, r0, r1 - ldrb r0, [r2, r0] - bx lr - .align 2, 0 -_02337EB8: .word 0x02353538 -_02337EBC: .word 0x022C6327 - arm_func_end ov29_02337E94 - - arm_func_start ov29_02337EC0 -ov29_02337EC0: ; 0x02337EC0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - mov r1, r2 - bl GetTileSafe - ldr r1, [r0, #0xc] - cmp r1, r4 - moveq r1, #0 - streq r1, [r0, #0xc] - ldmia sp!, {r4, pc} - arm_func_end ov29_02337EC0 - - arm_func_start ov29_02337EE8 -ov29_02337EE8: ; 0x02337EE8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r0, _02337F8C ; =0x02353538 - ldr r4, _02337F90 ; =0x0000022A - ldr r0, [r0] - ldr r6, _02337F94 ; =0x000003D7 - add r0, r0, #0x6b0 - add r0, r0, #0x28000 - mov sl, #0 - add r0, r0, #0x2b4 - mov sb, sl - add r8, r0, #0x4000 - sub r5, r4, #1 - sub r7, r6, #0x258 - add fp, sp, #0 - b _02337F68 -_02337F28: - add r0, r8, sb, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r0, #0 - beq _02337F70 - cmp r0, r7 - cmpne r0, r6 - cmpne r0, r5 - cmpne r0, r4 - movne r2, sl, lsl #1 - addne r1, sl, #1 - strneh r0, [fp, r2] - add r0, sb, #1 - movne r1, r1, lsl #0x10 - mov r0, r0, lsl #0x10 - movne sl, r1, asr #0x10 - mov sb, r0, asr #0x10 -_02337F68: - cmp sb, #0x10 - blt _02337F28 -_02337F70: - mov r0, sl - bl RandInt - add r1, sp, #0 - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02337F8C: .word 0x02353538 -_02337F90: .word 0x0000022A -_02337F94: .word 0x000003D7 - arm_func_end ov29_02337EE8 - - arm_func_start ov29_02337F98 -ov29_02337F98: ; 0x02337F98 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r0, _02338040 ; =0x02353538 - ldr r4, _02338044 ; =0x0000022A - ldr r0, [r0] - ldr r6, _02338048 ; =0x000003D7 - add r0, r0, #0x6b0 - add r0, r0, #0x28000 - mov sl, #0 - add r0, r0, #0x2b4 - mov sb, sl - add r8, r0, #0x4000 - sub r5, r4, #1 - sub r7, r6, #0x258 - add fp, sp, #0 - b _0233801C -_02337FD8: - add r0, r8, sb, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r0, #0 - beq _02338024 - cmp r0, r7 - cmpne r0, r6 - cmpne r0, r5 - cmpne r0, r4 - cmpne r0, #0x84 - movne r2, sl, lsl #1 - addne r1, sl, #1 - strneh r0, [fp, r2] - add r0, sb, #1 - movne r1, r1, lsl #0x10 - mov r0, r0, lsl #0x10 - movne sl, r1, asr #0x10 - mov sb, r0, asr #0x10 -_0233801C: - cmp sb, #0x10 - blt _02337FD8 -_02338024: - mov r0, sl - bl DungeonRandInt - add r1, sp, #0 - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02338040: .word 0x02353538 -_02338044: .word 0x0000022A -_02338048: .word 0x000003D7 - arm_func_end ov29_02337F98 - - arm_func_start ov29_0233804C -ov29_0233804C: ; 0x0233804C - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0x2d8 - mov r1, #0x10 - bl MemAlloc - mov r4, r0 - mov r0, #1 - mov r1, #0x16c - bl DungeonRandRange - mov r1, r0, lsl #0x10 - mov r0, #0 - mov r3, r1, asr #0x10 - ldr r5, _023380F4 ; =0x02353538 - ldr lr, _023380F8 ; =0x000286F2 - mov r2, r0 - mov r1, r0 -_02338088: - ldr ip, [r5] - cmp r3, #0x16c - movge r3, r1 - add ip, ip, r3, lsl #1 - ldrsh ip, [ip, lr] - add r2, r2, #1 - mov r2, r2, lsl #0x10 - cmp ip, #0 - addne ip, r0, #1 - movne r0, r0, lsl #1 - strneh r3, [r4, r0] - add r3, r3, #1 - movne ip, ip, lsl #0x10 - mov r3, r3, lsl #0x10 - mov r2, r2, asr #0x10 - movne r0, ip, asr #0x10 - cmp r2, #0x16c - mov r3, r3, asr #0x10 - blt _02338088 - bl DungeonRandInt - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0xf - mov r0, r4 - ldrsh r4, [r4, r1] - bl MemFree - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023380F4: .word 0x02353538 -_023380F8: .word 0x000286F2 - arm_func_end ov29_0233804C - - arm_func_start ov29_023380FC -ov29_023380FC: ; 0x023380FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, [sb, #0xb4] - mov r6, #0 - ldrb r0, [r0, #6] - ldr r4, _023381BC ; =0x0235171C - mov r8, r1 - mov r7, r6 - cmp r0, #0 - movne r6, #1 - mov r5, #0 -_02338128: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh ip, [sb, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [sb, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _023381A0 - ldr r1, [r0] - cmp r1, #1 - bne _023381A0 - ldr r1, [r0, #0xb4] - cmp r6, #0 - ldrb r1, [r1, #6] - beq _0233818C - cmp r1, #0 - addeq r1, r7, #1 - moveq r1, r1, lsl #0x10 - streq r0, [r8, r7, lsl #2] - moveq r7, r1, asr #0x10 - b _023381A0 -_0233818C: - cmp r1, #0 - addne r1, r7, #1 - movne r1, r1, lsl #0x10 - strne r0, [r8, r7, lsl #2] - movne r7, r1, asr #0x10 -_023381A0: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #8 - blt _02338128 - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023381BC: .word 0x0235171C - arm_func_end ov29_023380FC - - arm_func_start ov29_023381C0 -ov29_023381C0: ; 0x023381C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, #0 - ldr r4, _02338284 ; =0x0235171C - b _02338274 -_023381DC: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh ip, [r8, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [r8, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr sb, [r0, #0xc] - cmp sb, #0 - beq _02338268 - ldr r0, [sb] - cmp r0, #1 - bne _02338268 - mov r0, sb - mov r1, r7 - bl IqSkillIsEnabled - cmp r0, #0 - beq _02338268 - cmp r6, #0 - beq _02338250 - mov r0, sb - mov r1, r8 - bl ov29_022FAFD4 - cmp r0, #0 - beq _02338268 - mov r0, sb - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02338250: - mov r0, r8 - mov r1, sb - bl ov29_022FAFD4 - cmp r0, #0 - movne r0, sb - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02338268: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_02338274: - cmp r5, #8 - blt _023381DC - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02338284: .word 0x0235171C - arm_func_end ov29_023381C0 - - arm_func_start ov29_02338288 -ov29_02338288: ; 0x02338288 - stmdb sp!, {r3, lr} - mov r2, #0 - bl ov29_023381C0 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02338288 - - arm_func_start ov29_023382A8 -ov29_023382A8: ; 0x023382A8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0xb4] - mov r6, #0 - ldrb r0, [r0, #6] - mov r5, #0 - ldr r4, _0233834C ; =0x0235171C - cmp r0, #0 - movne r6, #1 - b _0233833C -_023382D0: - mov r1, r5, lsl #2 - add r0, r4, r5, lsl #2 - ldrsh ip, [r7, #4] - ldrsh r3, [r4, r1] - ldrsh r2, [r7, #6] - ldrsh r1, [r0, #2] - add r0, ip, r3 - add r1, r2, r1 - bl GetTile - ldr r0, [r0, #0xc] - cmp r0, #0 - beq _02338330 - ldr r1, [r0] - cmp r1, #1 - bne _02338330 - ldr r1, [r0, #0xb4] - cmp r6, #0 - ldrb r1, [r1, #6] - beq _02338328 - cmp r1, #0 - bne _02338330 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02338328: - cmp r1, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02338330: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_0233833C: - cmp r5, #8 - blt _023382D0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233834C: .word 0x0235171C - arm_func_end ov29_023382A8 - - arm_func_start ov29_02338350 -ov29_02338350: ; 0x02338350 - stmdb sp!, {r3, lr} - bl ov29_023382A8 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_02338350 - - arm_func_start ov29_0233836C -ov29_0233836C: ; 0x0233836C - ldr r0, _02338388 ; =0x02353538 - ldr ip, _0233838C ; =MemZero - ldr r0, [r0] - mov r1, #2 - add r0, r0, #0x2fc - add r0, r0, #0x12800 - bx ip - .align 2, 0 -_02338388: .word 0x02353538 -_0233838C: .word MemZero - arm_func_end ov29_0233836C - - arm_func_start GravityIsActive -GravityIsActive: ; 0x02338390 - ldr r0, _023383A4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x12000 - ldrb r0, [r0, #0xafc] - bx lr - .align 2, 0 -_023383A4: .word 0x02353538 - arm_func_end GravityIsActive - - arm_func_start ov29_023383A8 -ov29_023383A8: ; 0x023383A8 - ldr ip, _023383B4 ; =LogMessageByIdWithPopupCheckUser - ldr r1, _023383B8 ; =0x00000D8D - bx ip - .align 2, 0 -_023383B4: .word LogMessageByIdWithPopupCheckUser -_023383B8: .word 0x00000D8D - arm_func_end ov29_023383A8 - - arm_func_start ov29_023383BC -ov29_023383BC: ; 0x023383BC - stmdb sp!, {r4, lr} - mov r4, r0 - bl EntityIsValid__02337CA8 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _02338424 ; =0x02353538 - ldr r0, [r0] - add r2, r0, #0x12000 - ldrb r0, [r2, #0xafc] - cmp r0, #0 - beq _02338400 - ldr r1, _02338428 ; =0x00000C06 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, #0 - ldmia sp!, {r4, pc} -_02338400: - ldr r1, _0233842C ; =0x00000C05 - mov r3, #1 - mov r0, r4 - strb r3, [r2, #0xafc] - bl LogMessageByIdWithPopupCheckUser - mov r0, r4 - bl ov29_02306D54 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_02338424: .word 0x02353538 -_02338428: .word 0x00000C06 -_0233842C: .word 0x00000C05 - arm_func_end ov29_023383BC - - arm_func_start ov29_02338430 -ov29_02338430: ; 0x02338430 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, #1 - bl ov29_022EDEDC - mov r0, r4 - bl ov29_02338708 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, #1 - bl ov29_02338794 - ldmia sp!, {r4, pc} - arm_func_end ov29_02338430 - - arm_func_start ov29_0233845C -ov29_0233845C: ; 0x0233845C - ldr r1, _02338474 ; =0x02353538 - ldr r0, _02338478 ; =0x00012AFE - ldr r1, [r1] - mov r2, #0 - strh r2, [r1, r0] - bx lr - .align 2, 0 -_02338474: .word 0x02353538 -_02338478: .word 0x00012AFE - arm_func_end ov29_0233845C - - arm_func_start ov29_0233847C -ov29_0233847C: ; 0x0233847C - stmdb sp!, {r4, lr} - ldr r1, _023384B8 ; =0x02353538 - ldr r0, _023384BC ; =0x00012AFE - ldr r3, [r1] - ldrsh r2, [r3, r0] - add r2, r2, #1 - strh r2, [r3, r0] - ldr r1, [r1] - ldrsh r4, [r1, r0] - bl GetVictoriesOnOneFloor - cmp r4, r0 - ldmleia sp!, {r4, pc} - mov r0, r4 - bl SetVictoriesOnOneFloor - ldmia sp!, {r4, pc} - .align 2, 0 -_023384B8: .word 0x02353538 -_023384BC: .word 0x00012AFE - arm_func_end ov29_0233847C - - arm_func_start ov29_023384C0 -ov29_023384C0: ; 0x023384C0 - ldr r0, _023384D4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x12000 - ldrb r0, [r0, #0xb24] - bx lr - .align 2, 0 -_023384D4: .word 0x02353538 - arm_func_end ov29_023384C0 - - arm_func_start ov29_023384D8 -ov29_023384D8: ; 0x023384D8 - ldr r1, _023384EC ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x12000 - strb r0, [r1, #0xb24] - bx lr - .align 2, 0 -_023384EC: .word 0x02353538 - arm_func_end ov29_023384D8 - - arm_func_start ov29_023384F0 -ov29_023384F0: ; 0x023384F0 - stmdb sp!, {r3, lr} - ldr r0, _0233852C ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - mov r0, #0x5e - add r1, r1, #0x12000 - strb r2, [r1, #0xb24] - bl ov29_0230F840 - cmp r0, #0 - ldrne r0, _0233852C ; =0x02353538 - movne r1, #1 - ldrne r0, [r0] - addne r0, r0, #0x12000 - strneb r1, [r0, #0xb24] - ldmia sp!, {r3, pc} - .align 2, 0 -_0233852C: .word 0x02353538 - arm_func_end ov29_023384F0 - - arm_func_start ov29_02338530 -ov29_02338530: ; 0x02338530 - ldr r0, _02338544 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xc8] - bx lr - .align 2, 0 -_02338544: .word 0x02353538 - arm_func_end ov29_02338530 - - arm_func_start ov29_02338548 -ov29_02338548: ; 0x02338548 - ldr r1, _0233855C ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x4000 - strb r0, [r1, #0xc8] - bx lr - .align 2, 0 -_0233855C: .word 0x02353538 - arm_func_end ov29_02338548 - - arm_func_start ov29_02338560 -ov29_02338560: ; 0x02338560 - stmdb sp!, {r3, lr} - ldr r0, _023385BC ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xc8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov29_023361D4 - cmp r0, #0 - bne _023385A4 - ldr r1, _023385C0 ; =0x02352B5C - add r0, sp, #0 - ldrh r2, [r1] - strh r2, [sp] - ldrh r1, [r1, #2] - strh r1, [sp, #2] - bl ov29_02344E88 -_023385A4: - ldr r0, _023385BC ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x4000 - strb r1, [r0, #0xc8] - ldmia sp!, {r3, pc} - .align 2, 0 -_023385BC: .word 0x02353538 -_023385C0: .word 0x02352B5C - arm_func_end ov29_02338560 - - arm_func_start IsSecretBazaar__023385C4 -IsSecretBazaar__023385C4: ; 0x023385C4 - ldr r0, _023385E8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0x70 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_023385E8: .word 0x02353538 - arm_func_end IsSecretBazaar__023385C4 - - arm_func_start ov29_023385EC -ov29_023385EC: ; 0x023385EC - ldr r0, _02338600 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x12000 - ldrb r0, [r0, #0xb25] - bx lr - .align 2, 0 -_02338600: .word 0x02353538 - arm_func_end ov29_023385EC - - arm_func_start ov29_02338604 -ov29_02338604: ; 0x02338604 - ldr r1, _02338618 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x12000 - strb r0, [r1, #0xb25] - bx lr - .align 2, 0 -_02338618: .word 0x02353538 - arm_func_end ov29_02338604 - - arm_func_start ov29_0233861C -ov29_0233861C: ; 0x0233861C - stmdb sp!, {r3, lr} - ldr r0, _02338658 ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - mov r0, #0x5f - add r1, r1, #0x12000 - strb r2, [r1, #0xb25] - bl ov29_0230F840 - cmp r0, #0 - ldrne r0, _02338658 ; =0x02353538 - movne r1, #1 - ldrne r0, [r0] - addne r0, r0, #0x12000 - strneb r1, [r0, #0xb25] - ldmia sp!, {r3, pc} - .align 2, 0 -_02338658: .word 0x02353538 - arm_func_end ov29_0233861C - - arm_func_start IsSecretRoom -IsSecretRoom: ; 0x0233865C - ldr r0, _02338680 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0x71 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02338680: .word 0x02353538 - arm_func_end IsSecretRoom - - arm_func_start IsSecretFloor -IsSecretFloor: ; 0x02338684 - stmdb sp!, {r3, lr} - bl IsSecretBazaar__023385C4 - cmp r0, #0 - bne _023386A0 - bl IsSecretRoom - cmp r0, #0 - beq _023386A8 -_023386A0: - mov r0, #1 - ldmia sp!, {r3, pc} -_023386A8: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsSecretFloor - - arm_func_start ov29_023386B0 -ov29_023386B0: ; 0x023386B0 - stmdb sp!, {r3, lr} - bl IsSecretBazaar__023385C4 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - bl IsSecretRoom - cmp r0, #0 - movne r0, #2 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov29_023386B0 - - arm_func_start ov29_023386D8 -ov29_023386D8: ; 0x023386D8 - ldr r0, _02338704 ; =0x02353538 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0xcc00 - ldrsh r2, [r0, #0xe8] - cmp r2, r1 - ldrnesh r0, [r0, #0xea] - cmpne r0, r1 - moveq r0, #0 - movne r0, #1 - bx lr - .align 2, 0 -_02338704: .word 0x02353538 - arm_func_end ov29_023386D8 - - arm_func_start ov29_02338708 -ov29_02338708: ; 0x02338708 - ldr r1, _02338738 ; =0x02353538 - ldrsh r2, [r0] - ldr r1, [r1] - add r1, r1, #0xcc00 - ldrsh r3, [r1, #0xe8] - cmp r3, r2 - ldreqsh r1, [r1, #0xea] - ldreqsh r0, [r0, #2] - cmpeq r1, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_02338738: .word 0x02353538 - arm_func_end ov29_02338708 - - arm_func_start ov29_0233873C -ov29_0233873C: ; 0x0233873C - stmdb sp!, {r3, lr} - bl ov29_023386D8 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, _02338764 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xe8 - add r0, r0, #0xcc00 - bl ov29_02338768 - ldmia sp!, {r3, pc} - .align 2, 0 -_02338764: .word 0x02353538 - arm_func_end ov29_0233873C - - arm_func_start ov29_02338768 -ov29_02338768: ; 0x02338768 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov29_022E2418 - mov r4, r0 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl GetTileSafe - str r4, [r0, #0x10] - mov r0, #0 - strb r0, [r4, #0x20] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02338768 - - arm_func_start ov29_02338794 -ov29_02338794: ; 0x02338794 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov29_023386D8 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _02338848 ; =0x02353538 - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe8] - ldrsh r1, [r1, #0xea] - bl GetTileSafe - mov r4, r0 - ldr r0, [r4, #0x10] - ldrb r0, [r0, #0x20] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _02338848 ; =0x02353538 - ldr r2, [r0] - add r0, r2, #0x1a000 - ldrb r1, [r0, #0x246] - cmp r1, #0 - ldreqb r0, [r0, #0x244] - cmpeq r0, #0 - bne _0233881C - cmp r5, #0 - beq _0233881C - add r0, r2, #0xe8 - add r0, r0, #0xcc00 - mov r1, #0x41 - mov r2, #1 - bl ov29_022E37DC - bl GetLeader - ldr r1, _0233884C ; =0x00000F31 - bl LogMessageByIdWithPopupCheckUser -_0233881C: - ldr r1, [r4, #0x10] - mov r2, #1 - ldr r0, _02338848 ; =0x02353538 - strb r2, [r1, #0x20] - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe8] - ldrsh r1, [r1, #0xea] - bl ov29_023391EC - bl ov29_02336F4C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02338848: .word 0x02353538 -_0233884C: .word 0x00000F31 - arm_func_end ov29_02338794 - - arm_func_start ov29_02338850 -ov29_02338850: ; 0x02338850 - ldr r0, _02338864 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldr r0, [r0, #0xcc] - bx lr - .align 2, 0 -_02338864: .word 0x02353538 - arm_func_end ov29_02338850 - - arm_func_start ov29_02338868 -ov29_02338868: ; 0x02338868 - ldr r1, _0233887C ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x4000 - str r0, [r1, #0xcc] - bx lr - .align 2, 0 -_0233887C: .word 0x02353538 - arm_func_end ov29_02338868 - - arm_func_start GetDungeonGenInfoUnk0C -GetDungeonGenInfoUnk0C: ; 0x02338880 - ldr r0, _02338894 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldr r0, [r0, #0xd0] - bx lr - .align 2, 0 -_02338894: .word 0x02353538 - arm_func_end GetDungeonGenInfoUnk0C - - arm_func_start ov29_02338898 -ov29_02338898: ; 0x02338898 - ldr r1, _023388AC ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x4000 - str r0, [r1, #0xd0] - bx lr - .align 2, 0 -_023388AC: .word 0x02353538 - arm_func_end ov29_02338898 - - arm_func_start ov29_023388B0 -ov29_023388B0: ; 0x023388B0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - ldr r0, _02338974 ; =0x02352F1C - mov sl, #0 - ldr r1, [r0, #4] - ldr r0, [r0] - ldr r7, _02338978 ; =0x02352F40 - add r8, sp, #0 - str r1, [sp, #4] - str r0, [sp] - mov r6, #4 - mov r5, #0x300 - mov fp, sl - mov r4, #0x14 -_023388E8: - mul sb, sl, r4 - ldrh r2, [r7, sb] - mov r0, r8 - mov r1, r6 - mov r3, r5 - add sb, r7, sb - bl LoadWteFromFileDirectory - ldrsh r2, [sb, #8] - ldr r0, [sp, #4] - ldr r1, [sb, #4] - mov r3, fp - bl ProcessWte - mov r0, r8 - bl sub_0201E13C - add sl, sl, #1 - cmp sl, #3 - blt _023388E8 - ldr r0, _0233897C ; =0x0237CACC - mov r1, #0 - bl ov29_02338D94 - ldr r0, _02338980 ; =0x0237CD40 - mov r1, #1 - bl ov29_02338D94 - ldr r0, _02338984 ; =0x02352F7C - ldr r2, _0233897C ; =0x0237CACC - mov r1, #0 - ldr r4, [r0] - strb r1, [r2, #0x240] - ldr r3, [r0, #4] - str r4, [r2, #0x254] - ldr r0, _02338980 ; =0x0237CD40 - str r3, [r2, #0x258] - bl ov29_02338D34 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02338974: .word 0x02352F1C -_02338978: .word 0x02352F40 -_0233897C: .word 0x0237CACC -_02338980: .word 0x0237CD40 -_02338984: .word 0x02352F7C - arm_func_end ov29_023388B0 - - arm_func_start ov29_02338988 -ov29_02338988: ; 0x02338988 - stmdb sp!, {r3, lr} - ldr r0, _023389BC ; =0x0237CACC - bl ov29_02338D58 - cmp r0, #0 - bne _023389AC - ldr r0, _023389C0 ; =0x0237CD40 - bl ov29_02338D58 - cmp r0, #0 - beq _023389B4 -_023389AC: - mov r0, #1 - ldmia sp!, {r3, pc} -_023389B4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023389BC: .word 0x0237CACC -_023389C0: .word 0x0237CD40 - arm_func_end ov29_02338988 - - arm_func_start ov29_023389C4 -ov29_023389C4: ; 0x023389C4 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - mov r0, #0xc - mul r2, r4, r0 - ldr r1, _02338A3C ; =0x022C6326 - ldr r0, _02338A40 ; =0x0237CACC - ldrb r1, [r1, r2] - bl ov29_02338D34 - cmp r4, #0xc3 - bne _02338A34 - ldr r1, _02338A44 ; =0x02352F1C - ldr r2, _02338A48 ; =0x000003EB - ldr r3, [r1, #0xc] - ldr ip, [r1, #8] - str r3, [sp, #4] - add r0, sp, #0 - mov r1, #4 - mov r3, #0 - str ip, [sp] - bl LoadWteFromFileDirectory - ldr r0, [sp, #4] - mov r1, #0xb000 - mov r2, #0x14 - mov r3, #0 - bl ProcessWte - add r0, sp, #0 - bl sub_0201E13C -_02338A34: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02338A3C: .word 0x022C6326 -_02338A40: .word 0x0237CACC -_02338A44: .word 0x02352F1C -_02338A48: .word 0x000003EB - arm_func_end ov29_023389C4 - - arm_func_start ov29_02338A4C -ov29_02338A4C: ; 0x02338A4C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _02338AB4 ; =0x02353730 - mov r4, r0 - ldrb r1, [r1, r4, lsl #3] - ldr r0, _02338AB8 ; =0x0237CD40 - bl ov29_02338D34 - ldr r1, _02338ABC ; =0x0235372C - mov sb, #0 - ldr r7, [r1, r4, lsl #3] - ldr r0, _02338AC0 ; =0x0237CACC - ldr r5, _02338AB8 ; =0x0237CD40 - str r7, [r0, #0x4e4] - mov r6, sb - mov r4, #0xc0 -_02338A84: - mla sl, sb, r4, r5 - mov r8, r6 -_02338A8C: - mov r1, r7 - add r0, sl, r8, lsl #6 - bl ov29_02338E50 - add r8, r8, #1 - cmp r8, #3 - blt _02338A8C - add sb, sb, #1 - cmp sb, #3 - blt _02338A84 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02338AB4: .word 0x02353730 -_02338AB8: .word 0x0237CD40 -_02338ABC: .word 0x0235372C -_02338AC0: .word 0x0237CACC - arm_func_end ov29_02338A4C - - arm_func_start ov29_02338AC4 -ov29_02338AC4: ; 0x02338AC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r5, #0 -_02338ACC: - ldr r1, _02338D28 ; =0x0237CACC - mov r0, #0x274 - mla r6, r5, r0, r1 - ldrb r0, [r6, #0x240] - cmp r0, #0 - beq _02338D18 - bl ov29_022E3580 - cmp r0, #0 - movne r0, #0 - strneb r0, [r6, #0x26d] - bne _02338B04 - mov r0, r6 - mov r1, #1 - bl ov29_02338D6C -_02338B04: - mov r0, r6 - bl ov29_02338D58 - cmp r0, #0 - beq _02338D18 - ldr r4, [r6, #0x24c] - ldr fp, [r6, #0x250] - mov r7, #0 -_02338B20: - mov r0, #0xc0 - mla sl, r7, r0, r6 - mov r0, r7, lsl #7 - add sb, r0, fp, asr #8 - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - mov r8, #0 - str r0, [sp] -_02338B40: - cmp sb, #0xc0 - bge _02338B74 - mov r0, r8, lsl #7 - ldr r1, [r6, #0x244] - add r2, r0, r4, asr #8 - mov r0, r8, lsl #6 - strh r2, [sl, r0] - ldr r2, [sp] - add r0, sl, r8, lsl #6 - strh r2, [r0, #2] - mov r1, r1, asr #8 - strb r1, [r0, #0x2f] - bl sub_0201F2A0 -_02338B74: - add r8, r8, #1 - cmp r8, #3 - blt _02338B40 - add r7, r7, #1 - cmp r7, #3 - blt _02338B20 - ldrb r0, [r6, #0x240] - cmp r0, #9 - beq _02338BBC - ldr r1, [r6, #0x24c] - ldr r0, [r6, #0x254] - add r0, r1, r0 - str r0, [r6, #0x24c] - ldr r1, [r6, #0x250] - ldr r0, [r6, #0x258] - add r0, r1, r0 - str r0, [r6, #0x250] - b _02338C48 -_02338BBC: - ldr r0, [r6, #0x25c] - bl sub_020018D0 - ldr r3, [r6, #0x254] - mov r2, #0xa - mov r1, r0 - mul r0, r3, r2 - bl MultiplyByFixedPoint - ldr r1, [r6, #0x24c] - add r0, r1, r0 - str r0, [r6, #0x24c] - ldr r0, [r6, #0x260] - bl sub_020018D0 - ldr r3, [r6, #0x258] - mov r2, #0xa - mov r1, r0 - mul r0, r3, r2 - bl MultiplyByFixedPoint - ldr r2, [r6, #0x250] - ldr r1, _02338D2C ; =0x00000FFF - add r0, r2, r0 - str r0, [r6, #0x250] - ldr r2, [r6, #0x25c] - ldr r0, [r6, #0x264] - add r0, r2, r0 - str r0, [r6, #0x25c] - ldr r2, [r6, #0x260] - ldr r0, [r6, #0x268] - add r0, r2, r0 - str r0, [r6, #0x260] - ldr r0, [r6, #0x25c] - and r0, r0, r1 - str r0, [r6, #0x25c] - ldr r0, [r6, #0x260] - and r0, r0, r1 - str r0, [r6, #0x260] -_02338C48: - ldr r1, [r6, #0x24c] - cmp r1, #0 - subgt r0, r1, #0x8000 - strgt r0, [r6, #0x24c] - bgt _02338C70 - mov r0, #0x8000 - rsb r0, r0, #0 - cmp r1, r0 - addlt r0, r1, #0x8000 - strlt r0, [r6, #0x24c] -_02338C70: - ldr r1, [r6, #0x250] - cmp r1, #0 - subgt r0, r1, #0x8000 - strgt r0, [r6, #0x250] - bgt _02338C98 - mov r0, #0x8000 - rsb r0, r0, #0 - cmp r1, r0 - addlt r0, r1, #0x8000 - strlt r0, [r6, #0x250] -_02338C98: - ldrb r0, [r6, #0x26e] - cmp r0, #0 - beq _02338CC8 - ldr r0, [r6, #0x244] - add r0, r0, #0x400 - str r0, [r6, #0x244] - cmp r0, #0x4000 - movge r0, #1 - strgeb r0, [r6, #0x26c] - movge r0, #0 - strgeb r0, [r6, #0x26e] - b _02338D18 -_02338CC8: - ldrb r0, [r6, #0x26c] - ldr r1, [r6, #0x244] - cmp r0, #0 - ldr r0, [r6, #0x248] - bne _02338CFC - sub r0, r1, r0 - str r0, [r6, #0x244] - cmp r0, #0x4000 - movlt r0, #1 - strltb r0, [r6, #0x26c] - movlt r0, #0x4000 - strlt r0, [r6, #0x244] - b _02338D18 -_02338CFC: - add r0, r1, r0 - str r0, [r6, #0x244] - cmp r0, #0xc000 - movgt r0, #0 - strgtb r0, [r6, #0x26c] - movgt r0, #0xc000 - strgt r0, [r6, #0x244] -_02338D18: - add r5, r5, #1 - cmp r5, #2 - blt _02338ACC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02338D28: .word 0x0237CACC -_02338D2C: .word 0x00000FFF - arm_func_end ov29_02338AC4 - - arm_func_start ov29_02338D30 -ov29_02338D30: ; 0x02338D30 - bx lr - arm_func_end ov29_02338D30 - - arm_func_start ov29_02338D34 -ov29_02338D34: ; 0x02338D34 - ldr r3, _02338D54 ; =0x02352F7C - strb r1, [r0, #0x240] - add r2, r3, r1, lsl #3 - ldr r3, [r3, r1, lsl #3] - ldr r1, [r2, #4] - str r3, [r0, #0x254] - str r1, [r0, #0x258] - bx lr - .align 2, 0 -_02338D54: .word 0x02352F7C - arm_func_end ov29_02338D34 - - arm_func_start ov29_02338D58 -ov29_02338D58: ; 0x02338D58 - ldrb r1, [r0, #0x240] - cmp r1, #0 - moveq r0, #0 - ldrneb r0, [r0, #0x26d] - bx lr - arm_func_end ov29_02338D58 - - arm_func_start ov29_02338D6C -ov29_02338D6C: ; 0x02338D6C - cmp r1, #0 - beq _02338D8C - ldrb r2, [r0, #0x26d] - cmp r2, #0 - moveq r2, #1 - streqb r2, [r0, #0x26e] - moveq r2, #0 - streq r2, [r0, #0x244] -_02338D8C: - strb r1, [r0, #0x26d] - bx lr - arm_func_end ov29_02338D6C - - arm_func_start ov29_02338D94 -ov29_02338D94: ; 0x02338D94 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov r0, #0x4000 - str r0, [sl, #0x244] - mov r0, #0 - str r0, [sl, #0x248] - strb r0, [sl, #0x26c] - str r0, [sl, #0x24c] - str r0, [sl, #0x250] - mov r0, #0x400 - mov sb, r1 - bl DungeonRandInt - str r0, [sl, #0x25c] - mov r0, #0x400 - bl DungeonRandInt - str r0, [sl, #0x260] - mov r0, #4 - str r0, [sl, #0x264] - mov r0, #1 - str r0, [sl, #0x268] - mov r5, #0 - strb r0, [sl, #0x26d] - strb r5, [sl, #0x26e] - str sb, [sl, #0x270] - mov fp, r5 -_02338DF8: - mov r0, #0xc0 - mla r8, r5, r0, sl - mov r6, #0 -_02338E04: - add r7, r8, r6, lsl #6 - mov r0, r7 - mov r4, r6, lsl #6 - bl sub_0201E730 - strb fp, [r7, #0x3c] - strh fp, [r8, r4] - strh fp, [r7, #2] - ldr r2, [sl, #0x244] - mov r0, r7 - mov r1, sb - strb r2, [r7, #0x2f] - bl ov29_02338E50 - add r6, r6, #1 - cmp r6, #3 - blt _02338E04 - add r5, r5, #1 - cmp r5, #3 - blt _02338DF8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02338D94 - - arm_func_start ov29_02338E50 -ov29_02338E50: ; 0x02338E50 - ldr r3, _02338F08 ; =0x02352F40 - mov r2, #0x14 - mla r2, r1, r2, r3 - ldr r3, [r2, #4] - mov r1, #0 - str r3, [r0, #0x20] - strh r1, [r0, #0x16] - strh r1, [r0, #0x18] - mov r1, #0x80 - strh r1, [r0, #0x1a] - strh r1, [r0, #0x1c] - ldrh r3, [r0, #0x14] - ldr r1, _02338F0C ; =0x020AFC70 - bic r3, r3, #7 - orr r3, r3, #4 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - bic r3, r3, #0x38 - orr r3, r3, #0x20 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - bic r3, r3, #0xc0 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - bic r3, r3, #0x700 - orr r3, r3, #0x300 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - bic r3, r3, #0x1800 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - bic r3, r3, #0x6000 - strh r3, [r0, #0x14] - ldrh r3, [r0, #0x14] - orr r3, r3, #0x8000 - strh r3, [r0, #0x14] - ldr r3, [r1] - ldrsh r1, [r2, #8] - ldr r3, [r3, #0xe0] - add r1, r3, r1, lsl #9 - str r1, [r0, #0x24] - ldr r1, [r2, #0xc] - strh r1, [r0, #0x2a] - ldr r1, [r2, #0x10] - strb r1, [r0, #0x3e] - bx lr - .align 2, 0 -_02338F08: .word 0x02352F40 -_02338F0C: .word 0x020AFC70 - arm_func_end ov29_02338E50 - - arm_func_start ov29_02338F10 -ov29_02338F10: ; 0x02338F10 - ldr r0, _02338F20 ; =0x0235376C - mov r1, #0x64 - strh r1, [r0, #2] - bx lr - .align 2, 0 -_02338F20: .word 0x0235376C - arm_func_end ov29_02338F10 - - arm_func_start ov29_02338F24 -ov29_02338F24: ; 0x02338F24 - ldr r2, _02338F34 ; =0x0235376C - strh r0, [r2, #2] - strh r1, [r2, #4] - bx lr - .align 2, 0 -_02338F34: .word 0x0235376C - arm_func_end ov29_02338F24 - - arm_func_start ov29_02338F38 -ov29_02338F38: ; 0x02338F38 - ldr r1, _02338F44 ; =0x0237CFB8 - strb r0, [r1, #2] - bx lr - .align 2, 0 -_02338F44: .word 0x0237CFB8 - arm_func_end ov29_02338F38 - - arm_func_start ov29_02338F48 -ov29_02338F48: ; 0x02338F48 - ldr r1, _02338F54 ; =0x0237CFB8 - strb r0, [r1] - bx lr - .align 2, 0 -_02338F54: .word 0x0237CFB8 - arm_func_end ov29_02338F48 - - arm_func_start ov29_02338F58 -ov29_02338F58: ; 0x02338F58 - ldr r1, _02338F64 ; =0x0235376C - strb r0, [r1, #1] - bx lr - .align 2, 0 -_02338F64: .word 0x0235376C - arm_func_end ov29_02338F58 - - arm_func_start ov29_02338F68 -ov29_02338F68: ; 0x02338F68 - stmdb sp!, {r3, lr} - ldr r1, _02338FBC ; =0x0000040B - ldr r2, _02338FC0 ; =0x02353784 - mov r0, #4 - mov r3, #0 - bl AllocAndLoadFileInPack - ldr r1, _02338FC4 ; =0x0235376C - add r0, sp, #0 - ldr r1, [r1, #0x18] - bl HandleSir0Translation - ldr r1, [sp] - ldr r0, _02338FC4 ; =0x0235376C - str r1, [r0, #8] - bl GetMinimapData - add r0, r0, #0xe000 - mov r2, #0 - ldr r1, _02338FC4 ; =0x0235376C - strb r2, [r0, #0x447] - str r2, [r1, #0xc] - strb r2, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_02338FBC: .word 0x0000040B -_02338FC0: .word 0x02353784 -_02338FC4: .word 0x0235376C - arm_func_end ov29_02338F68 - - arm_func_start ov29_02338FC8 -ov29_02338FC8: ; 0x02338FC8 - stmdb sp!, {r3, lr} - ldr r0, _02339000 ; =0x0235376C - ldr r0, [r0, #8] - cmp r0, #0 - beq _02338FF0 - ldr r0, _02339004 ; =0x02353784 - bl UnloadFile - ldr r0, _02339000 ; =0x0235376C - mov r1, #0 - str r1, [r0, #8] -_02338FF0: - ldr r0, _02339008 ; =0x0237CFB8 - mov r1, #0 - strb r1, [r0, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_02339000: .word 0x0235376C -_02339004: .word 0x02353784 -_02339008: .word 0x0237CFB8 - arm_func_end ov29_02338FC8 - - arm_func_start ov29_0233900C -ov29_0233900C: ; 0x0233900C - stmdb sp!, {r3, lr} - ldr r0, _02339044 ; =0x0235352C - ldr r0, [r0] - add r0, r0, #0x20 - bl ov29_022DE288 - ldr r1, _02339044 ; =0x0235352C - ldr r2, _02339048 ; =0x0235376C - ldr r1, [r1] - str r0, [r2, #0x10] - add r0, r1, #0x2c - bl ov29_022DE288 - ldr r1, _02339048 ; =0x0235376C - str r0, [r1, #0x14] - ldmia sp!, {r3, pc} - .align 2, 0 -_02339044: .word 0x0235352C -_02339048: .word 0x0235376C - arm_func_end ov29_0233900C - - arm_func_start ov29_0233904C -ov29_0233904C: ; 0x0233904C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov fp, r0 - bl GetMinimapData - mov r7, r0 - mov r6, #0 - add r4, r7, #0x7000 -_02339064: - mov r0, #0x700 - mul r1, r6, r0 - mov r0, #0x1c - mla sl, r6, r0, r7 - mov r5, #0 - add r8, r7, r1 - add sb, r4, r1 -_02339080: - add r0, r8, r5, lsl #6 - mov r1, #0x20 - bl MemZero - add r0, sb, r5, lsl #6 - mov r1, #0x20 - bl MemZero - add r0, sl, r5 - add r1, r0, #0xe000 - mov r0, #0 - add r5, r5, #1 - strb r0, [r1] - cmp r5, #0x1c - blt _02339080 - add r6, r6, #1 - cmp r6, #0x10 - blt _02339064 - cmp fp, #0 - ldreq r0, _02339110 ; =0x0235376C - moveq r1, #0x64 - streqh r1, [r0, #2] - streqh r1, [r0, #4] - add r0, r7, #0xe000 - mov r3, #0 - str r3, [r0, #0x440] - mov r2, #1 - strb r2, [r0, #0x444] - ldr r1, _02339114 ; =0x0237CFB8 - strb r3, [r0, #0x446] - strb r2, [r1, #3] - bl ov29_0233900C - bl ov29_022E7F7C - ldr r0, _02339114 ; =0x0237CFB8 - mov r1, #1 - strb r1, [r0, #2] - bl ov29_02339148 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02339110: .word 0x0235376C -_02339114: .word 0x0237CFB8 - arm_func_end ov29_0233904C - - arm_func_start GetMinimapData -GetMinimapData: ; 0x02339118 - ldr r0, _02339134 ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - addne r0, r0, #0x264 - addne r0, r0, #0x1a000 - moveq r0, #0 - bx lr - .align 2, 0 -_02339134: .word 0x02353538 - arm_func_end GetMinimapData - - arm_func_start ov29_02339138 -ov29_02339138: ; 0x02339138 - stmdb sp!, {r3, lr} - bl ov29_0233900C - bl ov29_022E7F7C - ldmia sp!, {r3, pc} - arm_func_end ov29_02339138 - - arm_func_start ov29_02339148 -ov29_02339148: ; 0x02339148 - stmdb sp!, {r4, lr} - ldr r0, _02339188 ; =0x02353538 - mov r2, #0xc - ldr r0, [r0] - ldr r3, _0233918C ; =0x022C631C - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - mov r1, #0 - smulbb r0, r0, r2 - ldr r4, [r3, r0] - mov r0, r4 - bl ov29_0233A548 - mov r0, r4 - mov r1, #1 - bl ov29_0233A548 - ldmia sp!, {r4, pc} - .align 2, 0 -_02339188: .word 0x02353538 -_0233918C: .word 0x022C631C - arm_func_end ov29_02339148 - - arm_func_start ov29_02339190 -ov29_02339190: ; 0x02339190 - stmdb sp!, {r3, lr} - ldr r2, _023391B8 ; =0x0235376C - ldr r2, [r2, #8] - cmp r2, #0 - ldrne r2, _023391BC ; =0x0237CFB8 - ldrneb r2, [r2, #2] - cmpne r2, #0 - ldmeqia sp!, {r3, pc} - bl ov29_0233A548 - ldmia sp!, {r3, pc} - .align 2, 0 -_023391B8: .word 0x0235376C -_023391BC: .word 0x0237CFB8 - arm_func_end ov29_02339190 - - arm_func_start ov29_023391C0 -ov29_023391C0: ; 0x023391C0 - ldr r0, _023391E4 ; =0x02353538 - mov r1, #0xc - ldr r0, [r0] - ldr r2, _023391E8 ; =0x022C631C - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - smulbb r0, r0, r1 - ldr r0, [r2, r0] - bx lr - .align 2, 0 -_023391E4: .word 0x02353538 -_023391E8: .word 0x022C631C - arm_func_end ov29_023391C0 - - arm_func_start ov29_023391EC -ov29_023391EC: ; 0x023391EC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - mov sl, r0 - mov sb, r1 - bl GetMinimapData - ldr r2, _023398C4 ; =0x02352FCC - ldr r3, _023398C8 ; =0x02353538 - ldrh r4, [r2] - ldr r5, [r3] - ldrh r3, [r2, #2] - ldr r1, _023398CC ; =0x0235376C - mov r7, #1 - ldr r2, [r1, #8] - mov fp, r0 - cmp r2, #0 - ldrne r0, _023398D0 ; =0x0237CFB8 - str r7, [sp, #0x14] - ldrneb r0, [r0, #2] - add r1, r5, #0x21c - strh r4, [sp, #0x2c] - strh r3, [sp, #0x2e] - add r4, r1, #0x1a000 - cmpne r0, #0 - beq _023398BC - cmp sl, #0 - cmpge sb, #2 - blt _023398BC - cmp sl, #0x38 - cmplt sb, #0x20 - bge _023398BC - mov r0, sl - mov r1, sb - bl GetTile - mov r6, r0 - ldrb r1, [r4, #0x32] - ldrh r2, [r6] - ldrb r0, [r4, #0x29] - cmp r1, #0 - moveq r1, r7 - str r0, [sp, #0x24] - and r0, r2, #3 - str r0, [sp, #0x28] - ldrb r0, [r4, #0x22] - movne r1, #0 - and r1, r1, #0xff - str r0, [sp, #0x20] - ldrb r0, [r4, #0x28] - str r0, [sp, #0x18] - ldrb r0, [r4, #0x27] - str r0, [sp, #0x1c] - ldrb r0, [r4, #0x23] - ldrb r5, [r4, #0x25] - str r1, [sp, #0xc] - ldrb r1, [r4, #0x33] - cmp r1, #0 - movne r1, #0 - ldreq r1, _023398D0 ; =0x0237CFB8 - ldreqb r1, [r1, #3] - and r1, r1, #0xff - str r1, [sp, #8] - ldr r1, [sp, #0x20] - cmp r1, #0 - ldrneh r1, [r6, #2] - movne r0, #0 - strne r0, [sp, #0x10] - andne r8, r1, #1 - bne _02339344 - ldrb r1, [r4, #0x34] - cmp r1, #0 - bne _02339310 - cmp r0, #0 - movne r8, #1 - bne _02339318 -_02339310: - ldrh r0, [r6, #2] - and r8, r0, #1 -_02339318: - bl GetFloorType - cmp r0, #0 - ldreqb r0, [r4, #0x2a] - streq r0, [sp, #0x10] - movne r0, #0 - strne r0, [sp, #0x10] - cmp r5, #0 - beq _02339344 - cmp r8, #0 - streq r8, [sp, #0x14] - moveq r8, #1 -_02339344: - bl sub_0204AF30 - cmp r0, #0 - ldreq r0, _023398CC ; =0x0235376C - ldreqb r1, [r0, #1] - cmpeq r1, #0 - beq _02339788 - ldr r0, [sp, #0x20] - mov r5, #0 - cmp r0, #0 - bne _0233946C - ldr r0, [r6, #0xc] - str r0, [sp, #4] - cmp r0, #0 - ldrne r0, _023398D0 ; =0x0237CFB8 - ldrneb r0, [r0, #3] - cmpne r0, #0 - beq _0233946C - ldr r0, [sp, #4] - ldr r0, [r0] - cmp r0, #1 - bne _0233946C - ldr r0, [sp, #4] - bl ov29_022E2498 - cmp r0, #0 - beq _0233946C - ldr r0, [sp, #4] - mov r7, r5 - ldr r0, [r0, #0xb4] - str r0, [sp] - bl IsExperienceLocked - cmp r0, #0 - bne _023393D4 - ldr r0, [sp] - ldrb r0, [r0, #0xbc] - cmp r0, #7 - bne _023393DC -_023393D4: - mov r5, #0xa - b _0233946C -_023393DC: - ldr r0, [sp] - ldrb r0, [r0, #6] - cmp r0, #0 - beq _0233943C - ldr r0, [sp, #8] - cmp r0, #0 - beq _02339434 - ldr r0, [sp] - ldrb r0, [r0, #0xbc] - cmp r0, #2 - moveq r0, r5 - beq _02339410 - bl ov29_022EFAE8 -_02339410: - cmp r0, #0 - movne r5, #0xc - bne _0233946C - ldr r0, [sp] - ldrb r0, [r0, #8] - cmp r0, #0 - movne r5, #0xa - moveq r5, #2 - b _0233946C -_02339434: - mov r7, #1 - b _0233946C -_0233943C: - ldr r0, [sp] - ldrb r0, [r0, #7] - cmp r0, #0 - beq _02339468 - ldr r0, _023398CC ; =0x0235376C - strh sl, [r0, #2] - strh sb, [r0, #4] - ldrb r0, [r4, #0x2d] - cmp r0, #0 - movne r5, #8 - b _0233946C -_02339468: - mov r5, #0xa -_0233946C: - cmp r7, #0 - beq _0233963C - ldr r0, [sp, #0x20] - cmp r0, #0 - bne _0233963C - ldr r0, [r6, #0x10] - cmp r0, #0 - beq _023395D0 - cmp r8, #0 - ldr r1, [r0] - bne _023394F4 - ldr r0, [sp, #0xc] - mov r5, #0 - cmp r0, #0 - beq _023394D8 - cmp r1, #3 - bne _023394D8 - ldr r0, [sp, #0x1c] - cmp r0, #0 - bne _023394C8 - ldrh r0, [r6, #2] - tst r0, #2 - beq _023394EC -_023394C8: - ldr r0, [sp, #0x28] - cmp r0, #0 - movne r5, #3 - b _023394EC -_023394D8: - cmp r1, #5 - bne _023394EC - ldr r0, [sp, #0x10] - cmp r0, #0 - movne r5, #0xd -_023394EC: - mov r7, #0 - b _0233963C -_023394F4: - cmp r7, #0 - beq _0233963C - cmp r1, #2 - bne _0233953C - ldr r2, [sp, #0x14] - cmp r2, #0 - beq _0233953C - ldrb r2, [r0, #0x20] - cmp r2, #0 - ldreq r2, [sp, #0x18] - cmpeq r2, #0 - beq _0233953C - bl ov29_022E1608 - ldrb r1, [r0] - ldr r0, _023398D4 ; =0x02352FF4 - mov r7, #0 - ldrb r5, [r0, r1] - b _0233963C -_0233953C: - ldr r2, [sp, #0xc] - cmp r2, #0 - beq _0233957C - cmp r1, #3 - bne _0233957C - ldr r2, [sp, #0x1c] - cmp r2, #0 - bne _02339568 - ldrh r2, [r6, #2] - tst r2, #2 - beq _0233957C -_02339568: - ldr r2, [sp, #0x28] - cmp r2, #0 - movne r5, #3 - movne r7, #0 - bne _0233963C -_0233957C: - cmp r1, #5 - bne _023395BC - ldr r1, [sp, #0x10] - cmp r1, #0 - bne _023395B0 - ldr r1, [sp, #0x14] - cmp r1, #0 - beq _0233963C - ldr r1, [sp, #0x18] - cmp r1, #0 - ldreqb r0, [r0, #0x20] - cmpeq r0, #0 - beq _0233963C -_023395B0: - mov r5, #0xd - mov r7, #0 - b _0233963C -_023395BC: - ldr r0, [sp, #0x28] - cmp r0, #1 - movne r5, #0 - movne r7, r5 - b _0233963C -_023395D0: - cmp r8, #0 - bne _02339608 - ldr r0, [sp, #0x10] - cmp r0, #0 - beq _0233963C - ldrh r0, [r6] - tst r0, #0x200 - beq _0233963C - bl GetFloorType - cmp r0, #0 - moveq r5, #6 - movne r5, #5 - mov r7, #0 - b _0233963C -_02339608: - ldrh r0, [r6] - tst r0, #0x200 - beq _0233963C - ldr r0, [sp, #0x10] - cmp r0, #0 - ldreq r0, [sp, #0x14] - cmpeq r0, #0 - beq _0233963C - bl GetFloorType - cmp r0, #0 - moveq r5, #6 - movne r5, #5 - mov r7, #0 -_0233963C: - cmp r7, #0 - bne _02339654 - ldr r0, [sp, #0x24] - cmp r0, #0 - cmpne r5, #0 - movne r5, #0xb -_02339654: - cmp r5, #0 - bne _02339734 - cmp r8, #0 - moveq r5, #1 - beq _02339734 - ldr r0, [sp, #0x28] - cmp r0, #1 - movne r5, #1 - bne _02339734 - cmp sb, #0x1f - mov r4, #0xf - bge _023396A0 - mov r0, sl - add r1, sb, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - biceq r4, r4, #1 -_023396A0: - cmp sb, #1 - blt _023396C4 - mov r0, sl - sub r1, sb, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - biceq r4, r4, #4 -_023396C4: - cmp sl, #0x37 - bge _023396E8 - mov r1, sb - add r0, sl, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - biceq r4, r4, #2 -_023396E8: - cmp sl, #1 - blt _0233970C - mov r1, sb - sub r0, sl, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - biceq r4, r4, #8 -_0233970C: - ldrh r1, [r6, #2] - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - tst r1, #2 - addne r0, r0, #0x10 - movne r0, r0, lsl #0x10 - movne r5, r0, asr #0x10 - addeq r0, r0, #0x20 - moveq r0, r0, lsl #0x10 - moveq r5, r0, asr #0x10 -_02339734: - bl sub_0204AEA0 - cmp r0, #3 - addeq r0, r5, #0x80 - streqh r0, [sp, #0x2e] - bl sub_0204AEC0 - cmp r0, #0 - bne _02339770 - ldr r0, _023398CC ; =0x0235376C - ldrb r0, [r0, #1] - cmp r0, #0 - addne r0, r5, #0x40 - strneh r0, [sp, #0x2c] - moveq r0, #1 - streqh r0, [sp, #0x2c] - b _0233979C -_02339770: - bl sub_0204AEC0 - cmp r0, #1 - addeq r0, r5, #0x40 - streqh r0, [sp, #0x2c] - strneh r5, [sp, #0x2c] - b _0233979C -_02339788: - mov r2, #1 - mov r1, #0x64 - strh r2, [sp, #0x2c] - strh r2, [sp, #0x2e] - strh r1, [r0, #2] -_0233979C: - sub r3, sb, #2 - add r0, r3, r3, lsr #31 - mov r5, r0, asr #1 - mov r0, #0x700 - mul r7, r5, r0 - ldr r0, _023398CC ; =0x0235376C - mov r2, sl, lsr #0x1f - mov r4, r3, lsr #0x1f - rsb r1, r2, sl, lsl #31 - rsb r3, r4, r3, lsl #31 - ldr sb, [r0, #8] - add r0, sl, sl, lsr #31 - ldrsh r6, [sp, #0x2c] - add r2, r2, r1, ror #31 - add r1, r4, r3, ror #31 - add r8, r2, r1, lsl #1 - ldr r2, [sb] - add r1, r8, r6, lsl #2 - mov r4, r0, asr #1 - add r0, fp, r7 - add r6, r0, r4, lsl #6 - ldr r1, [r2, r1, lsl #2] - mov r0, r6 - bl ov29_0233A2F0 - ldr r0, _023398CC ; =0x0235376C - ldrsh r1, [sp, #0x2e] - ldr r0, [r0, #8] - add r2, fp, #0x7000 - add r2, r2, r7 - add r7, r2, r4, lsl #6 - ldr r2, [r0] - add r0, r8, r1, lsl #2 - ldr r1, [r2, r0, lsl #2] - mov r0, r7 - bl ov29_0233A2F0 - add r0, fp, #0xe000 - ldrb r1, [r0, #0x445] - cmp r1, #0 - bne _023398BC - mov r1, #0x1c - mul r8, r5, r1 - add r1, r0, r8 - ldrb r2, [r1, r4] - add r1, r1, r4 - cmp r2, #0 - bne _023398BC - mov r3, #1 - strb r3, [r1] - ldr r2, [r0, #0x440] - cmp r2, #0x28 - strgeb r3, [r0, #0x445] - bge _023398BC - add r3, r4, r8 - add r2, fp, r2, lsl #4 - mov r3, r3, lsl #6 - add r2, r2, #0xe000 - str r3, [r2, #0x1c0] - ldr r2, [r0, #0x440] - add r2, fp, r2, lsl #4 - add r2, r2, #0xe000 - str r6, [r2, #0x1c4] - ldr r2, [r0, #0x440] - add r2, fp, r2, lsl #4 - add r2, r2, #0xe000 - str r7, [r2, #0x1c8] - ldr r2, [r0, #0x440] - add r2, fp, r2, lsl #4 - add r2, r2, #0xe000 - str r1, [r2, #0x1cc] - ldr r1, [r0, #0x440] - add r1, r1, #1 - str r1, [r0, #0x440] -_023398BC: - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023398C4: .word 0x02352FCC -_023398C8: .word 0x02353538 -_023398CC: .word 0x0235376C -_023398D0: .word 0x0237CFB8 -_023398D4: .word 0x02352FF4 - arm_func_end ov29_023391EC - - arm_func_start ov29_023398D8 -ov29_023398D8: ; 0x023398D8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r2, #0x7000 - mla r6, r1, r2, r0 - add r0, r0, #0xe000 - mov r5, #0 - ldr r2, _02339928 ; =0x0235377C - strb r5, [r0, #0x445] - ldr r7, [r2, r1, lsl #2] - mov r4, #0x200 - b _0233991C -_02339900: - mov r0, r7 - mov r1, r6 - mov r2, r4 - bl Memcpy32 - add r7, r7, #0x200 - add r6, r6, #0x200 - add r5, r5, #8 -_0233991C: - cmp r5, #0x1c0 - blo _02339900 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02339928: .word 0x0235377C - arm_func_end ov29_023398D8 - - arm_func_start ov29_0233992C -ov29_0233992C: ; 0x0233992C - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02339A1C ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r4, #0 - mov r5, r4 - bl ov29_022EA408 - ldr r1, _02339A20 ; =0x0237CFB8 - ldrb r1, [r1] - cmp r1, #0 - beq _0233996C - cmp r0, #0 - cmpne r0, #3 - cmpne r0, #0xc - moveq r4, #1 -_0233996C: - bl sub_0204AEA0 - cmp r0, #3 - moveq r5, #1 - bl GetMinimapData - mov r6, r0 - add r0, r6, #0xe000 - ldrb r0, [r0, #0x444] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl ov10_022BFD20 - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - add r0, r6, #0xe000 - ldrb r0, [r0, #0x445] - cmp r0, #0 - bne _023399D8 - cmp r4, #0 - beq _023399C0 - mov r0, r6 - mov r1, #0 - bl ov29_0233A470 -_023399C0: - cmp r5, #0 - beq _02339A0C - mov r0, r6 - mov r1, #1 - bl ov29_0233A470 - b _02339A0C -_023399D8: - cmp r4, #0 - beq _023399EC - mov r0, r6 - mov r1, #0 - bl ov29_023398D8 -_023399EC: - cmp r5, #0 - beq _02339A00 - mov r0, r6 - mov r1, #1 - bl ov29_023398D8 -_02339A00: - add r0, r6, #0xe000 - mov r1, #1 - strb r1, [r0, #0x446] -_02339A0C: - add r0, r6, #0xe000 - mov r1, #0 - str r1, [r0, #0x440] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02339A1C: .word 0x02353538 -_02339A20: .word 0x0237CFB8 - arm_func_end ov29_0233992C - - arm_func_start ov29_02339A24 -ov29_02339A24: ; 0x02339A24 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r1, _02339CB8 ; =0x02353538 - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x249] - cmp r0, #0 - bne _02339CB0 - ldr r0, _02339CBC ; =0x0235376C - ldrsh r0, [r0, #2] - cmp r0, #0x64 - bge _02339CB0 - ldr r0, _02339CC0 ; =0x0237CFB8 - ldrb r1, [r0, #1] - add r2, r1, #1 - and r1, r2, #0xff - strb r2, [r0, #1] - tst r1, #8 - bne _02339CB0 - add r0, sp, #0 - mov r1, #8 - bl MemZero - ldrh r2, [sp] - ldrh r0, [sp, #6] - ldrh r1, [sp, #2] - bic r2, r2, #0x100 - strh r2, [sp] - ldrh r2, [sp] - bic r0, r0, #1 - strh r0, [sp, #6] - bic r2, r2, #0x200 - strh r2, [sp] - ldrh r2, [sp] - bic r1, r1, #0x3e00 - strh r1, [sp, #2] - bic r0, r2, #0xc00 - strh r0, [sp] - ldrh r0, [sp] - ldrh r2, [sp, #2] - ldrh r1, [sp, #4] - bic r0, r0, #0x1000 - strh r0, [sp] - ldrh r3, [sp] - ldrh r0, [sp, #6] - bic r2, r2, #0xc000 - bic r3, r3, #0xc000 - bic r1, r1, #0xc00 - bic r0, r0, #2 - strh r3, [sp] - strh r2, [sp, #2] - strh r1, [sp, #4] - strh r0, [sp, #6] - bl GetMinimapData - add r0, r0, #0xe000 - ldrb r0, [r0, #0x448] - cmp r0, #0 - beq _02339BC0 - bl sub_0204AEA0 - cmp r0, #3 - bne _02339BC0 - ldrh r0, [sp, #4] - mov r2, #0x400 - rsb r2, r2, #0 - and r0, r0, r2 - strh r0, [sp, #4] - ldrh r0, [sp, #4] - ldr ip, _02339CBC ; =0x0235376C - ldrh r3, [sp, #2] - orr r5, r0, #0x70 - add r0, r2, #0x200 - and r0, r3, r0 - strh r0, [sp, #2] - ldrsh r1, [ip, #2] - bic r5, r5, #0xf000 - strh r5, [sp, #4] - mov r0, r1, lsl #2 - ldrh r1, [sp] - add r5, r0, #0x10 - and r2, r5, r2, lsr #23 - ldrh r6, [sp, #2] - ldrh r3, [sp, #4] - bic r1, r1, #0x2000 - orr r6, r6, r2 - orr r0, r3, #0xc000 - ldr r3, _02339CC4 ; =0x020AFC4C - ldrh r5, [sp, #6] - ldr r2, _02339CC8 ; =0xFFFF000F - strh r1, [sp] - and r1, r5, r2 - strh r1, [sp, #6] - strh r6, [sp, #2] - strh r0, [sp, #4] - ldrsh r0, [ip, #4] - ldrh r2, [sp, #6] - ldr r3, [r3] - mov r0, r0, lsl #0x16 - orr r5, r2, r0, lsr #16 - ldr r2, _02339CCC ; =0x0000013F - add r1, sp, #0 - add r0, r3, #0x70 - strh r5, [sp, #6] - bl sub_0201B9F8 -_02339BC0: - cmp r4, #0 - bne _02339CB0 - ldr r0, _02339CC0 ; =0x0237CFB8 - ldrb r0, [r0] - cmp r0, #0 - beq _02339CB0 - bl GetMinimapData - add r0, r0, #0xe000 - ldrb r0, [r0, #0x447] - cmp r0, #0 - beq _02339CB0 - bl sub_0204AEC0 - cmp r0, #0 - beq _02339CB0 - ldrh r0, [sp, #4] - mov r2, #0x400 - rsb r2, r2, #0 - and r0, r0, r2 - strh r0, [sp, #4] - ldrh r0, [sp, #4] - ldrh r4, [sp] - ldrh r6, [sp, #2] - add r2, r2, #0x200 - orr r1, r0, #0xdd - ldr ip, _02339CBC ; =0x0235376C - and r2, r6, r2 - strh r2, [sp, #2] - ldrsh r0, [ip, #2] - orr r1, r1, #0x100 - bic r4, r4, #0x2000 - strh r4, [sp] - strh r1, [sp, #4] - mov r5, r0, lsl #2 - ldrh r0, [sp, #4] - ldrh r1, [sp] - ldrh lr, [sp, #6] - ldr r2, _02339CC8 ; =0xFFFF000F - bic r0, r0, #0xf000 - and r2, lr, r2 - orr r1, r1, #0x2000 - ldr r3, _02339CD0 ; =0x000001DD - strh r2, [sp, #6] - ldrh r6, [sp, #2] - add r5, r5, #8 - add r2, r3, #0x22 - and r2, r5, r2 - orr r2, r6, r2 - strh r2, [sp, #2] - strh r0, [sp, #4] - strh r1, [sp] - ldrsh r1, [ip, #4] - ldr r4, _02339CC4 ; =0x020AFC4C - ldrh r2, [sp, #6] - ldr r0, [r4] - mov r1, r1, lsl #0x16 - orr r4, r2, r1, lsr #16 - add r1, sp, #0 - sub r2, r3, #0x9e - strh r4, [sp, #6] - bl sub_0201B9F8 -_02339CB0: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02339CB8: .word 0x02353538 -_02339CBC: .word 0x0235376C -_02339CC0: .word 0x0237CFB8 -_02339CC4: .word 0x020AFC4C -_02339CC8: .word 0xFFFF000F -_02339CCC: .word 0x0000013F -_02339CD0: .word 0x000001DD - arm_func_end ov29_02339A24 - - arm_func_start ov29_02339CD4 -ov29_02339CD4: ; 0x02339CD4 - ldr r0, _02339CE4 ; =0x0237CFB8 - mov r1, #0 - strb r1, [r0, #1] - bx lr - .align 2, 0 -_02339CE4: .word 0x0237CFB8 - arm_func_end ov29_02339CD4 - - arm_func_start ov29_02339CE8 -ov29_02339CE8: ; 0x02339CE8 - stmdb sp!, {r4, r5, r6, lr} - bl GetMinimapData - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r6, #0 - add r0, r0, #0xe000 - mov r1, #1 - strb r1, [r0, #0x445] - mov r4, r6 -_02339D0C: - mov r5, r4 -_02339D10: - mov r0, r5 - mov r1, r6 - bl ov29_023391EC - add r5, r5, #1 - cmp r5, #0x38 - blt _02339D10 - add r6, r6, #1 - cmp r6, #0x20 - blt _02339D0C - bl sub_0204AEC0 - cmp r0, #0 - beq _02339D54 - bl GetMinimapData - add r0, r0, #0xe000 - mov r1, #1 - strb r1, [r0, #0x447] - ldmia sp!, {r4, r5, r6, pc} -_02339D54: - ldr r0, _02339D78 ; =0x0235376C - ldrb r0, [r0, #1] - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - bl GetMinimapData - add r0, r0, #0xe000 - mov r1, #1 - strb r1, [r0, #0x447] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02339D78: .word 0x0235376C - arm_func_end ov29_02339CE8 - - arm_func_start ov29_02339D7C -ov29_02339D7C: ; 0x02339D7C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - cmp r0, #1 - mov r5, #0x10 - moveq r6, #0 - beq _02339D9C - cmp r1, #0 - movne r6, #0 - moveq r6, #5 -_02339D9C: - cmp r0, #1 - mov sl, #0x1140 - mov r8, #1 - bne _02339E6C - mov sb, #0 - mov fp, sb - b _02339E00 -_02339DB8: - mov r0, r8, lsl #0x10 - mov r7, fp - mov r4, r0, asr #0x10 -_02339DC4: - add r0, r7, #2 - add r1, sl, #1 - mov ip, r0, lsl #0x10 - mov r0, r1, lsl #0x10 - mov r2, sl - mov sl, r0, lsr #0x10 - mov r1, r4 - mov r3, #1 - mov r0, ip, asr #0x10 - bl ov29_02339F2C - add r7, r7, #1 - cmp r7, #0x1c - blt _02339DC4 - add r8, r8, #1 - add sb, sb, #1 -_02339E00: - cmp sb, r5 - blt _02339DB8 - mov sb, #0 - mov r4, #0x1000 - mov fp, #1 - mov r7, sb - b _02339E58 -_02339E1C: - mov r0, r8, lsl #0x10 - mov sl, r7 - mov r5, r0, asr #0x10 -_02339E28: - add r0, sl, #2 - mov r0, r0, lsl #0x10 - mov r1, r5 - mov r2, r4 - mov r3, fp - mov r0, r0, asr #0x10 - bl ov29_02339F2C - add sl, sl, #1 - cmp sl, #0x1c - blt _02339E28 - add r8, r8, #1 - add sb, sb, #1 -_02339E58: - cmp sb, r6 - blt _02339E1C - mov r0, #1 - bl ov29_02339F64 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02339E6C: - mov r7, #0 - mov fp, r7 - b _02339EC0 -_02339E78: - mov r0, r8, lsl #0x10 - mov sb, fp - mov r4, r0, asr #0x10 -_02339E84: - add r0, sb, #1 - add r1, sl, #1 - mov ip, r0, lsl #0x10 - mov r0, r1, lsl #0x10 - mov r2, sl - mov sl, r0, lsr #0x10 - mov r1, r4 - mov r3, #0 - mov r0, ip, asr #0x10 - bl ov29_02339F2C - add sb, sb, #1 - cmp sb, #0x1c - blt _02339E84 - add r8, r8, #1 - add r7, r7, #1 -_02339EC0: - cmp r7, r5 - blt _02339E78 - mov sb, #0 - mov r4, #0x1000 - mov fp, sb - mov r7, sb - b _02339F18 -_02339EDC: - mov r0, r8, lsl #0x10 - mov sl, r7 - mov r5, r0, asr #0x10 -_02339EE8: - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r1, r5 - mov r2, r4 - mov r3, fp - mov r0, r0, asr #0x10 - bl ov29_02339F2C - add sl, sl, #1 - cmp sl, #0x1c - blt _02339EE8 - add r8, r8, #1 - add sb, sb, #1 -_02339F18: - cmp sb, r6 - blt _02339EDC - mov r0, #0 - bl ov29_02339F64 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02339D7C - - arm_func_start ov29_02339F2C -ov29_02339F2C: ; 0x02339F2C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr ip, _02339F60 ; =0x0235352C - str r1, [sp, #4] - ldr ip, [ip] - mov r1, #0xc - mla r1, r3, r1, ip - str r0, [sp] - ldr r0, [r1, #0x24] - add r1, sp, #0 - bl sub_0200B3FC - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02339F60: .word 0x0235352C - arm_func_end ov29_02339F2C - - arm_func_start ov29_02339F64 -ov29_02339F64: ; 0x02339F64 - ldr r2, _02339F80 ; =0x0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _02339F84 ; =sub_0200B330 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_02339F80: .word 0x0235352C -_02339F84: .word sub_0200B330 - arm_func_end ov29_02339F64 - - arm_func_start ov29_02339F88 -ov29_02339F88: ; 0x02339F88 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0204AEC0 - cmp r0, #0 - beq _02339FAC - mov r1, r4 - mov r0, #0 - bl ov29_02339D7C - ldmia sp!, {r4, pc} -_02339FAC: - ldr r0, _02339FCC ; =0x0235376C - ldrb r0, [r0, #1] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r1, r4 - mov r0, #0 - bl ov29_02339D7C - ldmia sp!, {r4, pc} - .align 2, 0 -_02339FCC: .word 0x0235376C - arm_func_end ov29_02339F88 - - arm_func_start ov29_02339FD0 -ov29_02339FD0: ; 0x02339FD0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0204AEA0 - cmp r0, #3 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #1 - bl ov29_02339D7C - ldmia sp!, {r4, pc} - arm_func_end ov29_02339FD0 - - arm_func_start ov29_02339FF4 -ov29_02339FF4: ; 0x02339FF4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_02339F88 - bl sub_0204AEA0 - cmp r0, #3 - ldmneia sp!, {r4, pc} - mov r1, r4 - mov r0, #1 - bl ov29_02339D7C - ldmia sp!, {r4, pc} - arm_func_end ov29_02339FF4 - - arm_func_start ov29_0233A01C -ov29_0233A01C: ; 0x0233A01C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - cmp r0, #0 - movne r6, #0 - mov sb, #0 - mov sl, r1 - mov r5, #0x10 - moveq r6, #5 - mov r8, #1 - mov fp, sb - b _0233A080 -_0233A044: - mov r0, r8, lsl #0x10 - mov r7, fp - mov r4, r0, asr #0x10 -_0233A050: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r1, r4 - mov r2, #0x1000 - mov r3, sl - mov r0, r0, asr #0x10 - bl ov29_02339F2C - add r7, r7, #1 - cmp r7, #0x1c - blt _0233A050 - add r8, r8, #1 - add sb, sb, #1 -_0233A080: - cmp sb, r5 - blt _0233A044 - mov r7, #0 - mov fp, #0x1000 - mov r5, r7 - b _0233A0D4 -_0233A098: - mov r0, r8, lsl #0x10 - mov sb, r5 - mov r4, r0, asr #0x10 -_0233A0A4: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov r1, r4 - mov r2, fp - mov r3, sl - mov r0, r0, asr #0x10 - bl ov29_02339F2C - add sb, sb, #1 - cmp sb, #0x1c - blt _0233A0A4 - add r8, r8, #1 - add r7, r7, #1 -_0233A0D4: - cmp r7, r6 - blt _0233A098 - mov r0, sl - bl ov29_02339F64 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_0233A01C - - arm_func_start ov29_0233A0E8 -ov29_0233A0E8: ; 0x0233A0E8 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #1 - bne _0233A114 - bl sub_0204AEA0 - cmp r0, #3 - ldmneia sp!, {r4, pc} - mov r0, r4 - mov r1, #1 - bl ov29_0233A01C - ldmia sp!, {r4, pc} -_0233A114: - cmp r1, #0 - ldmneia sp!, {r4, pc} - bl sub_0204AEC0 - cmp r0, #0 - beq _0233A138 - mov r0, r4 - mov r1, #0 - bl ov29_0233A01C - ldmia sp!, {r4, pc} -_0233A138: - ldr r0, _0233A158 ; =0x0235376C - ldrb r0, [r0, #1] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0 - bl ov29_0233A01C - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A158: .word 0x0235376C - arm_func_end ov29_0233A0E8 - - arm_func_start ov29_0233A15C -ov29_0233A15C: ; 0x0233A15C - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0204AEA0 - cmp r0, #3 - bne _0233A17C - mov r0, r4 - mov r1, #1 - bl ov29_0233A01C -_0233A17C: - bl sub_0204AEC0 - cmp r0, #0 - beq _0233A198 - mov r0, r4 - mov r1, #0 - bl ov29_0233A01C - ldmia sp!, {r4, pc} -_0233A198: - ldr r0, _0233A1B8 ; =0x0235376C - ldrb r0, [r0, #1] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0 - bl ov29_0233A01C - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A1B8: .word 0x0235376C - arm_func_end ov29_0233A15C - - arm_func_start ov29_0233A1BC -ov29_0233A1BC: ; 0x0233A1BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, #0 - mov r7, r0 - mov r8, #0x1000 - mov r4, r6 -_0233A1D0: - mov r0, r6, lsl #0x10 - mov r5, r4 - mov sb, r0, asr #0x10 -_0233A1DC: - mov r0, r5, lsl #0x10 - mov r1, sb - mov r2, r8 - mov r3, r7 - mov r0, r0, asr #0x10 - bl ov29_02339F2C - add r5, r5, #1 - cmp r5, #0x1c - blt _0233A1DC - add r6, r6, #1 - cmp r6, #0x20 - blt _0233A1D0 - mov r0, r7 - bl ov29_02339F64 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_0233A1BC - - arm_func_start SetMinimapDataE447 -SetMinimapDataE447: ; 0x0233A218 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetMinimapData - add r0, r0, #0xe000 - strb r4, [r0, #0x447] - ldmia sp!, {r4, pc} - arm_func_end SetMinimapDataE447 - - arm_func_start SetMinimapDataE448 -SetMinimapDataE448: ; 0x0233A230 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetMinimapData - add r0, r0, #0xe000 - strb r4, [r0, #0x448] - ldmia sp!, {r4, pc} - arm_func_end SetMinimapDataE448 - - arm_func_start ov29_0233A248 -ov29_0233A248: ; 0x0233A248 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #0 - bl ov29_0233A0E8 - cmp r4, #0 - bne _0233A274 - bl GetMinimapData - add r0, r0, #0xe000 - mov r1, #0 - strb r1, [r0, #0x447] -_0233A274: - cmp r4, #1 - ldmneia sp!, {r4, pc} - bl GetMinimapData - add r0, r0, #0xe000 - mov r1, #0 - strb r1, [r0, #0x448] - ldmia sp!, {r4, pc} - arm_func_end ov29_0233A248 - - arm_func_start ov29_0233A290 -ov29_0233A290: ; 0x0233A290 - stmdb sp!, {r3, r4, r5, lr} - bl GetMinimapData - add r1, r0, #0xe000 - ldrb r1, [r1, #0x446] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0 - mov r3, r4 - mov ip, r4 - mov r2, #0x1c -_0233A2B8: - mla r5, r4, r2, r0 - mov lr, ip -_0233A2C0: - add r1, r5, lr - add r1, r1, #0xe000 - add lr, lr, #1 - strb r3, [r1] - cmp lr, #0x38 - blt _0233A2C0 - add r4, r4, #1 - cmp r4, #0x20 - blt _0233A2B8 - add r0, r0, #0xe000 - strb r3, [r0, #0x446] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0233A290 - - arm_func_start ov29_0233A2F0 -ov29_0233A2F0: ; 0x0233A2F0 - ldr r3, [r0] - ldmia r1, {r2, ip} - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0] - ldr r3, [r0, #4] - ldr r2, [r1, #8] - ldr ip, [r1, #0xc] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #4] - ldr r3, [r0, #8] - ldr r2, [r1, #0x10] - ldr ip, [r1, #0x14] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #8] - ldr r3, [r0, #0xc] - ldr r2, [r1, #0x18] - ldr ip, [r1, #0x1c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0xc] - ldr r3, [r0, #0x10] - ldr r2, [r1, #0x20] - ldr ip, [r1, #0x24] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x10] - ldr r3, [r0, #0x14] - ldr r2, [r1, #0x28] - ldr ip, [r1, #0x2c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x14] - ldr r3, [r0, #0x18] - ldr r2, [r1, #0x30] - ldr ip, [r1, #0x34] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x18] - ldr r3, [r0, #0x1c] - ldr r2, [r1, #0x38] - ldr ip, [r1, #0x3c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x1c] - ldr r3, [r0, #0x20] - ldr r2, [r1, #0x40] - ldr ip, [r1, #0x44] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x20] - ldr r3, [r0, #0x24] - ldr r2, [r1, #0x48] - ldr ip, [r1, #0x4c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x24] - ldr r3, [r0, #0x28] - ldr r2, [r1, #0x50] - ldr ip, [r1, #0x54] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x28] - ldr r3, [r0, #0x2c] - ldr r2, [r1, #0x58] - ldr ip, [r1, #0x5c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x2c] - ldr r3, [r0, #0x30] - ldr r2, [r1, #0x60] - ldr ip, [r1, #0x64] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x30] - ldr r3, [r0, #0x34] - ldr r2, [r1, #0x68] - ldr ip, [r1, #0x6c] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x34] - ldr r3, [r0, #0x38] - ldr r2, [r1, #0x70] - ldr ip, [r1, #0x74] - and r2, r3, r2 - orr r2, ip, r2 - str r2, [r0, #0x38] - ldr r3, [r0, #0x3c] - ldr r2, [r1, #0x78] - ldr ip, [r1, #0x7c] - and r1, r3, r2 - orr r1, ip, r1 - str r1, [r0, #0x3c] - bx lr - arm_func_end ov29_0233A2F0 - - arm_func_start ov29_0233A470 -ov29_0233A470: ; 0x0233A470 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r4, #0 - add r2, r0, #0x21c0 - add r5, r0, #0xe000 - add ip, r2, #0xc000 - ldr r0, _0233A544 ; =0x0235377C - mov r6, r4 - b _0233A534 -_0233A490: - add lr, ip, r4, lsl #4 - add r2, lr, r1, lsl #2 - ldr r3, [r2, #4] - ldr sb, [ip, r4, lsl #4] - ldr r8, [r0, r1, lsl #2] - ldr r7, [r3] - add r2, sb, r8 - str r7, [sb, r8] - ldr r7, [r3, #4] - add r4, r4, #1 - str r7, [r2, #4] - ldr r7, [r3, #8] - str r7, [r2, #8] - ldr r7, [r3, #0xc] - str r7, [r2, #0xc] - ldr r7, [r3, #0x10] - str r7, [r2, #0x10] - ldr r7, [r3, #0x14] - str r7, [r2, #0x14] - ldr r7, [r3, #0x18] - str r7, [r2, #0x18] - ldr r7, [r3, #0x1c] - str r7, [r2, #0x1c] - ldr r7, [r3, #0x20] - str r7, [r2, #0x20] - ldr r7, [r3, #0x24] - str r7, [r2, #0x24] - ldr r7, [r3, #0x28] - str r7, [r2, #0x28] - ldr r7, [r3, #0x2c] - str r7, [r2, #0x2c] - ldr r7, [r3, #0x30] - str r7, [r2, #0x30] - ldr r7, [r3, #0x34] - str r7, [r2, #0x34] - ldr r7, [r3, #0x38] - str r7, [r2, #0x38] - ldr r3, [r3, #0x3c] - str r3, [r2, #0x3c] - ldr r2, [lr, #0xc] - strb r6, [r2] -_0233A534: - ldr r2, [r5, #0x440] - cmp r4, r2 - blt _0233A490 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0233A544: .word 0x0235377C - arm_func_end ov29_0233A470 - - arm_func_start ov29_0233A548 -ov29_0233A548: ; 0x0233A548 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _0233A5E0 ; =0x02352FD0 - ldr r7, _0233A5E4 ; =0x0235376C - mov r6, r1 - add r5, r2, r0, lsl #2 - mov r4, #0 -_0233A560: - cmp r4, #7 - bne _0233A5B0 - cmp r6, #0 - bne _0233A58C - add r0, r4, #0x100 - mov r1, r0, lsl #0x10 - mov r0, r5 - mov r2, r6 - mov r1, r1, asr #0x10 - bl ov29_0233A5E8 - b _0233A5D0 -_0233A58C: - ldr r1, [r7, #8] - add r0, r4, #0x100 - ldr r3, [r1, #4] - mov r1, r0, lsl #0x10 - mov r2, r6 - add r0, r3, r4, lsl #2 - mov r1, r1, asr #0x10 - bl ov29_0233A5E8 - b _0233A5D0 -_0233A5B0: - ldr r1, [r7, #8] - add r0, r4, #0x100 - ldr r3, [r1, #4] - mov r1, r0, lsl #0x10 - mov r2, r6 - add r0, r3, r4, lsl #2 - mov r1, r1, asr #0x10 - bl ov29_0233A5E8 -_0233A5D0: - add r4, r4, #1 - cmp r4, #0x10 - blt _0233A560 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233A5E0: .word 0x02352FD0 -_0233A5E4: .word 0x0235376C - arm_func_end ov29_0233A548 - - arm_func_start ov29_0233A5E8 -ov29_0233A5E8: ; 0x0233A5E8 - stmdb sp!, {r4, lr} - ldr ip, _0233A620 ; =0x0235352C - mov r3, #0xc - ldr ip, [ip] - mov lr, r0 - add r0, ip, #0x20 - mla r4, r2, r3, r0 - ldr r0, [r4, #8] - mov r2, r1 - mov r1, lr - bl sub_0200C008 - ldr r0, [r4, #8] - bl sub_0200A174 - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A620: .word 0x0235352C - arm_func_end ov29_0233A5E8 - - arm_func_start LoadFixedRoomDataVeneer -LoadFixedRoomDataVeneer: ; 0x0233A624 - ldr ip, _0233A62C ; =LoadFixedRoomData - bx ip - .align 2, 0 -_0233A62C: .word LoadFixedRoomData - arm_func_end LoadFixedRoomDataVeneer - - arm_func_start ov29_0233A630 -ov29_0233A630: ; 0x0233A630 - stmdb sp!, {r3, lr} - bl ov29_02343DD8 - ldr r0, _0233A650 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x12000 - str r1, [r0, #0xaa4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0233A650: .word 0x02353538 - arm_func_end ov29_0233A630 - - arm_func_start IsNormalFloor -IsNormalFloor: ; 0x0233A654 - stmdb sp!, {r3, lr} - bl IsHiddenStairsFloor - cmp r0, #0 - bne _0233A6C4 - bl IsGoldenChamber - cmp r0, #0 - bne _0233A6C4 - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - bne _0233A6C4 - mov r0, #0xa - mov r1, #6 - bl IsCurrentMissionTypeExact - cmp r0, #0 - bne _0233A6C4 - mov r0, #0xc - bl IsCurrentMissionType - cmp r0, #0 - bne _0233A6C4 - ldr r0, _0233A6D4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0 - beq _0233A6CC - cmp r0, #0xa5 - bhs _0233A6CC -_0233A6C4: - mov r0, #0 - ldmia sp!, {r3, pc} -_0233A6CC: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0233A6D4: .word 0x02353538 - arm_func_end IsNormalFloor - - arm_func_start GenerateFloor -GenerateFloor: ; 0x0233A6D8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - ldr r2, _0233AE64 ; =0x02353538 - mov r8, #0 - ldr r3, [r2] - ldr r0, _0233AE68 ; =0x000286B2 - add r1, r3, #0x12000 - str r8, [r1, #0xaa4] - ldr r1, [r2] - add sb, r3, r0 - add r0, r1, #0x3f00 - strh r8, [r0, #0xc2] - bl LoadFixedRoomDataVeneer - bl ov29_02343DC4 - ldr r1, _0233AE64 ; =0x02353538 - ldr r2, _0233AE6C ; =0x0237CFBC - ldr r1, [r1] - mov r3, r8 - add r1, r1, #0x12000 - str r0, [r1, #0xaa4] - strb r3, [r2, #3] - strb r3, [r2, #1] - strb r3, [r2, #7] - bl ov29_02342F08 - bl IsOutlawMonsterHouseFloor - ldr r1, _0233AE64 ; =0x02353538 - ldr r3, _0233AE6C ; =0x0237CFBC - ldr r2, [r1] - mov r1, sb - add r2, r2, #0xc4 - strb r0, [r3, #8] - add r0, r2, #0x4000 - bl ov29_02342D9C - ldr r1, _0233AE64 ; =0x02353538 - ldr r2, _0233AE6C ; =0x0237CFBC - ldr r1, [r1] - str r0, [r2, #0x2c] - add r0, r1, #0x4000 - ldrsh r1, [r0, #0xd4] - ldr r0, _0233AE70 ; =0x020A1AE8 - ldrb r0, [r0, r1] - mov r1, #0xff - cmp r0, #2 - moveq r2, #1 - ldr r0, _0233AE6C ; =0x0237CFBC - movne r2, r8 - strb r2, [r0, #4] - strb r1, [r0, #2] - mov r1, #0 - strb r1, [r0, #6] - ldrb r0, [sb, #7] - bl ov29_02342EBC - ldr r1, _0233AE6C ; =0x0237CFBC - strh r0, [r1, #0xc] - ldrb r0, [sb, #8] - strh r0, [r1, #0x10] - ldrb r0, [r1, #8] - cmp r0, #0 - movne r0, #0x64 - strneh r0, [r1, #0x10] - ldr r0, _0233AE6C ; =0x0237CFBC - mov r1, #1 - strb r1, [r0] - sub r1, r1, #2 - str r1, [r0, #0x30] - str r1, [r0, #0x38] - str r1, [r0, #0x34] - str r1, [r0, #0x3c] - bl ResetFloor - bl IsNormalFloor - cmp r0, #0 - bne _0233A810 - ldr r0, _0233AE64 ; =0x02353538 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x700 - strh r1, [r0, #0x86] - b _0233A828 -_0233A810: - ldrb r0, [sb, #6] - bl Abs - ldr r1, _0233AE64 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x700 - strh r0, [r1, #0x86] -_0233A828: - ldr r3, _0233AE64 ; =0x02353538 - mov r7, #0 - ldr r0, [r3] - ldr r1, _0233AE74 ; =0x00012AFA - add r0, r0, #0x4000 - strb r7, [r0, #0xc5] - ldr r0, [r3] - ldr r2, _0233AE6C ; =0x0237CFBC - add r0, r0, #0x4000 - strb r7, [r0, #0xc6] - ldr r0, [r3] - strh r7, [r0, r1] - ldr r0, [r3] - add r0, r0, #0x4000 - str r7, [r0, #0xcc] - ldrb r0, [sb, #0xc] - str r0, [r2, #0x18] - b _0233AD3C -_0233A870: - ldr r1, _0233AE64 ; =0x02353538 - mov r0, #0 - str r0, [sp] - ldr r0, [r1] - add r0, r0, #0xc4 - add r0, r0, #0x4000 - bl ov29_02342C68 - mov r6, #0 - mvn r5, #0 - ldr r4, _0233AE64 ; =0x02353538 - b _0233AC50 -_0233A89C: - ldr r0, [sp] - cmp r0, #0 - beq _0233A8C8 - ldr r0, [r4] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - bl IsNotFullFloorFixedRoom - cmp r0, #0 - beq _0233AC58 - mov r0, #0 - str r0, [sp] -_0233A8C8: - ldr r0, [r4] - cmp r6, #1 - add r0, r0, #0x4000 - strh r6, [r0, #0xde] - ldrge r0, _0233AE6C ; =0x0237CFBC - movge r1, #0 - strge r1, [r0, #0x18] - ldr r0, _0233AE6C ; =0x0237CFBC - mov r1, #0 - strb r1, [r0, #5] - strh r5, [r0, #0x20] - strh r5, [r0, #0x22] - bl ResetFloor - ldr r0, [r4] - add r0, r0, #0xcc00 - strh r5, [r0, #0xe0] - ldr r0, [r4] - add r0, r0, #0xcc00 - strh r5, [r0, #0xe2] - ldr r0, [r4] - add r1, r0, #0x4000 - mov r0, #0 - strb r0, [r1, #0xc4] - ldr r0, [r4] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xda] - cmp r0, #0 - beq _0233A954 - mov r1, sb - bl GenerateFixedRoom - cmp r0, #0 - bne _0233AC58 - mov r0, #1 - str r0, [sp] - b _0233AB78 -_0233A954: - mov r0, #2 - ldrb sl, [sb] - mov fp, #0x20 - str r0, [sp, #4] - str r0, [sp, #8] - b _0233A9DC -_0233A96C: - cmp sl, #8 - mov r0, #2 - beq _0233A998 - mov r1, #9 - bl DungeonRandRange - str r0, [sp, #8] - mov r0, #2 - mov r1, #8 - bl DungeonRandRange - str r0, [sp, #4] - b _0233A9B4 -_0233A998: - mov r1, #5 - bl DungeonRandRange - str r0, [sp, #8] - mov r0, #2 - mov r1, #4 - bl DungeonRandRange - str r0, [sp, #4] -_0233A9B4: - ldr r0, [sp, #8] - cmp r0, #6 - ldrle r0, [sp, #4] - cmple r0, #4 - ble _0233A9E4 - subs fp, fp, #1 - moveq r0, #4 - streq r0, [sp, #8] - streq r0, [sp, #4] - beq _0233A9E4 -_0233A9DC: - cmp fp, #0 - bne _0233A96C -_0233A9E4: - ldr r1, [sp, #8] - mov r0, #0x38 - bl DivideInt - cmp r0, #7 - movle r0, #1 - strle r0, [sp, #8] - ldr r1, [sp, #4] - mov r0, #0x20 - bl DivideInt - ldr r1, [r4] - cmp r0, #7 - add r2, r1, #0x4000 - mov r1, #0 - strb r1, [r2, #0xc4] - ldr r1, [r4] - movle r0, #1 - add r2, r1, #0x4000 - mov r1, #0xff - strb r1, [r2, #0xc9] - ldr r1, _0233AE6C ; =0x0237CFBC - strle r0, [sp, #4] - and r0, sl, #0xf - cmp r0, #0xb - str sl, [r1, #0x28] - addls pc, pc, r0, lsl #2 - b _0233AAD4 -_0233AA4C: ; jump table - b _0233AAD4 ; case 0 - b _0233AA7C ; case 1 - b _0233AAEC ; case 2 - b _0233AB04 ; case 3 - b _0233AB14 ; case 4 - b _0233AB24 ; case 5 - b _0233AB3C ; case 6 - b _0233AB4C ; case 7 - b _0233AAD4 ; case 8 - b _0233AB58 ; case 9 - b _0233AB64 ; case 10 - b _0233AAA8 ; case 11 -_0233AA7C: - mov r0, #2 - bl DungeonRandInt - ldr r1, _0233AE6C ; =0x0237CFBC - mov r2, #1 - strb r2, [r1, #6] - add r1, r0, #2 - mov r0, #4 - mov r2, sb - bl GenerateStandardFloor - mov r8, #1 - b _0233AB78 -_0233AAA8: - mov r0, #2 - bl DungeonRandInt - ldr r1, _0233AE6C ; =0x0237CFBC - mov r2, #2 - strb r2, [r1, #6] - add r1, r0, #2 - mov r0, #4 - mov r2, sb - bl GenerateStandardFloor - mov r8, #1 - b _0233AB78 -_0233AAD4: - ldr r0, [sp, #8] - ldr r1, [sp, #4] - mov r2, sb - bl GenerateStandardFloor - mov r8, #1 - b _0233AB78 -_0233AAEC: - bl GenerateOneRoomMonsterHouseFloor - ldr r0, [r4] - add r1, r0, #0x4000 - mov r0, #1 - strb r0, [r1, #0xc4] - b _0233AB78 -_0233AB04: - mov r0, sb - bl GenerateOuterRingFloor - mov r8, #1 - b _0233AB78 -_0233AB14: - mov r0, sb - bl GenerateCrossroadsFloor - mov r8, #1 - b _0233AB78 -_0233AB24: - bl GenerateTwoRoomsWithMonsterHouseFloor - ldr r0, [r4] - add r1, r0, #0x4000 - mov r0, #1 - strb r0, [r1, #0xc4] - b _0233AB78 -_0233AB3C: - mov r0, sb - bl GenerateLineFloor - mov r8, #1 - b _0233AB78 -_0233AB4C: - mov r0, sb - bl GenerateCrossFloor - b _0233AB78 -_0233AB58: - mov r0, sb - bl GenerateBeetleFloor - b _0233AB78 -_0233AB64: - ldr r0, [sp, #8] - ldr r1, [sp, #4] - mov r2, sb - bl GenerateOuterRoomsFloor - mov r8, #1 -_0233AB78: - bl ResetInnerBoundaryTileRows - bl EnsureImpassableTilesAreWalls - ldr r0, _0233AE6C ; =0x0237CFBC - ldrb r0, [r0, #5] - cmp r0, #0 - bne _0233AC4C - mov sl, #0 - mov r2, sl -_0233AB98: - mov r1, #0 - add r0, sp, #0x14 - strb r1, [r0, r2] - add r2, r2, #1 - cmp r2, #0x40 - blt _0233AB98 - mov r0, r1 - str r0, [sp, #0xc] -_0233ABB8: - mov fp, #0 -_0233ABBC: - ldr r0, [sp, #0xc] - mov r1, fp - bl GetTile - str r0, [sp, #0x10] - bl GetTileTerrain - cmp r0, #1 - bne _0233ABFC - ldr r0, [sp, #0x10] - ldrb r2, [r0, #7] - cmp r2, #0xf0 - bhi _0233ABFC - cmp r2, #0x40 - movlo r1, #1 - addlo r0, sp, #0x14 - add sl, sl, #1 - strlob r1, [r0, r2] -_0233ABFC: - add fp, fp, #1 - cmp fp, #0x20 - blt _0233ABBC - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - cmp r0, #0x38 - blt _0233ABB8 - mov r1, #0 - mov r2, r1 -_0233AC24: - add r0, sp, #0x14 - ldrb r0, [r0, r2] - add r2, r2, #1 - cmp r0, #0 - addne r1, r1, #1 - cmp r2, #0x40 - blt _0233AC24 - cmp sl, #0x1e - cmpge r1, #2 - bge _0233AC58 -_0233AC4C: - add r6, r6, #1 -_0233AC50: - cmp r6, #0xa - blt _0233A89C -_0233AC58: - cmp r6, #0xa - bne _0233AC88 - ldr r0, _0233AE6C ; =0x0237CFBC - mvn r1, #0 - strh r1, [r0, #0x20] - strh r1, [r0, #0x22] - bl GenerateOneRoomMonsterHouseFloor - ldr r0, _0233AE64 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x4000 - strb r1, [r0, #0xc4] -_0233AC88: - bl FinalizeJunctions - cmp r8, #0 - beq _0233ACA0 - mov r1, sb - mov r0, #1 - bl GenerateSecondaryTerrainFormations -_0233ACA0: - bl DungeonRand100 - ldrb r1, [sb, #0x19] - cmp r0, r1 - movlt r0, #1 - movge r0, #0 - and r4, r0, #0xff - mov r0, sb - mov r1, r4 - bl SpawnNonEnemies - mov r0, sb - mov r1, r4 - bl SpawnEnemies - bl ResolveInvalidSpawns - ldr r0, _0233AE64 ; =0x02353538 - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0xcc00 - ldrsh r2, [r0, #0xe0] - cmp r2, r1 - ldrnesh r0, [r0, #0xe2] - cmpne r0, r1 - beq _0233AD38 - bl GetFloorType - cmp r0, #1 - beq _0233AD44 - ldr r0, _0233AE64 ; =0x02353538 - mvn r2, #0 - ldr r0, [r0] - add r1, r0, #0xcc00 - ldrsh r0, [r1, #0xe4] - cmp r0, r2 - ldrnesh r1, [r1, #0xe6] - cmpne r1, r2 - beq _0233AD38 - mov r2, #0 - bl StairsAlwaysReachable - cmp r0, #0 - bne _0233AD44 -_0233AD38: - add r7, r7, #1 -_0233AD3C: - cmp r7, #0xa - blt _0233A870 -_0233AD44: - cmp r7, #0xa - bne _0233AD98 - ldr r0, _0233AE6C ; =0x0237CFBC - mvn r1, #0 - strh r1, [r0, #0x20] - strh r1, [r0, #0x22] - bl ResetFloor - bl GenerateOneRoomMonsterHouseFloor - ldr r0, _0233AE64 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x4000 - strb r1, [r0, #0xc4] - bl FinalizeJunctions - mov r0, sb - mov r1, #0 - bl SpawnNonEnemies - mov r0, sb - mov r1, #0 - bl SpawnEnemies - bl ResolveInvalidSpawns -_0233AD98: - ldr r0, _0233AE6C ; =0x0237CFBC - ldrsh r1, [r0, #0x20] - cmp r1, #0 - ldrgesh r0, [r0, #0x22] - cmpge r0, #0 - blt _0233ADCC - bl GetKecleonIdToSpawnByFloor - ldr r1, _0233AE6C ; =0x0237CFBC - mov r2, r0 - ldrsh r0, [r1, #0x20] - ldrsh r1, [r1, #0x22] - mov r3, #0 - bl ov29_022FE198 -_0233ADCC: - ldr r0, _0233AE6C ; =0x0237CFBC - ldr r0, [r0, #0x30] - cmp r0, #0 - ldrlt r0, _0233AE64 ; =0x02353538 - movlt r1, #0 - blt _0233ADF4 - mov r0, sb - bl ov29_023427E4 - ldr r0, _0233AE64 ; =0x02353538 - mov r1, #1 -_0233ADF4: - ldr r0, [r0] - mov r2, #0x38 - add r0, r0, #0x4000 - strb r1, [r0, #0xc6] - mov r0, #0 - mov r1, r0 - mov r3, #0x20 - bl FlagHallwayJunctions - ldr r0, _0233AE6C ; =0x0237CFBC - ldrb r0, [r0, #4] - cmp r0, #0 - beq _0233AE28 - bl ConvertSecondaryTerrainToChasms -_0233AE28: - ldr r0, _0233AE64 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - sub r0, r0, #0x1a - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _0233AE58 - bl ConvertWallsToChasms -_0233AE58: - bl ov29_0233A630 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233AE64: .word 0x02353538 -_0233AE68: .word 0x000286B2 -_0233AE6C: .word 0x0237CFBC -_0233AE70: .word 0x020A1AE8 -_0233AE74: .word 0x00012AFA - arm_func_end GenerateFloor - - arm_func_start GetTileTerrain -GetTileTerrain: ; 0x0233AE78 - ldrh r0, [r0] - and r0, r0, #3 - bx lr - arm_func_end GetTileTerrain - - arm_func_start DungeonRand100 -DungeonRand100: ; 0x0233AE84 - ldr ip, _0233AE90 ; =DungeonRandInt - mov r0, #0x64 - bx ip - .align 2, 0 -_0233AE90: .word DungeonRandInt - arm_func_end DungeonRand100 - - arm_func_start ov29_0233AE94 -ov29_0233AE94: ; 0x0233AE94 - stmdb sp!, {r3, lr} - ldr r0, _0233AF04 ; =0x0235378C - ldrb r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _0233AF08 ; =0x0237CFBC - mvn r2, #0 - ldrsh r0, [r1, #0x1c] - cmp r0, r2 - ldrnesh r1, [r1, #0x1e] - cmpne r1, r2 - beq _0233AEFC - bl GetTileSafe - mov r2, #0 - strh r2, [r0] - ldr r1, _0233AF08 ; =0x0237CFBC - strh r2, [r0, #2] - ldrsh r0, [r1, #0x1c] - ldrsh r1, [r1, #0x1e] - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0233AEFC: - bl ov29_02342F08 - ldmia sp!, {r3, pc} - .align 2, 0 -_0233AF04: .word 0x0235378C -_0233AF08: .word 0x0237CFBC - arm_func_end ov29_0233AE94 - - arm_func_start FlagHallwayJunctions -FlagHallwayJunctions: ; 0x0233AF0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov fp, r1 - mov sb, r2 - mov r8, r3 - b _0233B01C -_0233AF24: - mov r7, fp - sub r6, sl, #1 - b _0233B010 -_0233AF30: - mov r0, sl - mov r1, r7 - mov r4, #0 - bl GetTileSafe - mov r5, r0 - ldrh r0, [r5] - bic r0, r0, #4 - strh r0, [r5] - ldrb r0, [r5, #7] - cmp r0, #0xff - ldreqh r0, [r5] - andeq r0, r0, #3 - cmpeq r0, #1 - bne _0233B00C - cmp sl, #0 - ble _0233AF90 - mov r0, r6 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - moveq r0, r4 - addeq r4, r0, #1 -_0233AF90: - cmp r7, #0 - ble _0233AFB4 - mov r0, sl - sub r1, r7, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - addeq r4, r4, #1 -_0233AFB4: - cmp sl, #0x36 - bge _0233AFD8 - mov r1, r7 - add r0, sl, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - addeq r4, r4, #1 -_0233AFD8: - cmp sl, #0x1e - bge _0233AFFC - mov r0, sl - add r1, r7, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - addeq r4, r4, #1 -_0233AFFC: - cmp r4, #3 - ldrgeh r0, [r5] - orrge r0, r0, #8 - strgeh r0, [r5] -_0233B00C: - add r7, r7, #1 -_0233B010: - cmp r7, r8 - blt _0233AF30 - add sl, sl, #1 -_0233B01C: - cmp sl, sb - blt _0233AF24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end FlagHallwayJunctions - - arm_func_start GenerateStandardFloor -GenerateStandardFloor: ; 0x0233B028 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xae0 - sub sp, sp, #0x1000 - mov r5, r1 - mov r6, r0 - mov r4, r2 - add r0, sp, #0x44 - add r1, sp, #8 - mov r2, r6 - mov r3, r5 - bl GetGridPositions - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl InitDungeonGrid - ldrsb r3, [r4, #1] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl AssignRooms - add r1, sp, #8 - str r1, [sp] - ldrb r3, [r4, #0xd] - add r0, sp, #0x80 - mov r1, r6 - str r3, [sp, #4] - mov r2, r5 - add r3, sp, #0x44 - bl CreateRoomsAndAnchors - mov r0, r6 - bl DungeonRandInt - mov r7, r0 - mov r0, r5 - bl DungeonRandInt - stmia sp, {r0, r4} - mov r3, r7 - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl AssignGridCellConnections - add r1, sp, #8 - str r1, [sp] - mov r0, #0 - str r0, [sp, #4] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - add r3, sp, #0x44 - bl CreateGridCellConnections - add r1, sp, #8 - str r1, [sp] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - add r3, sp, #0x44 - bl EnsureConnectedGrid - ldrb r3, [r4, #9] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateMazeRoom - ldr r3, _0233B18C ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r3, #0xc] - mov r1, r6 - mov r2, r5 - bl GenerateKecleonShop - ldr r3, _0233B18C ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r3, #0x10] - mov r1, r6 - mov r2, r5 - bl GenerateMonsterHouse - ldrb r3, [r4, #0x13] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateExtraHallways - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateRoomImperfections - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateSecondaryStructures - add sp, sp, #0xae0 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233B18C: .word 0x0237CFBC - arm_func_end GenerateStandardFloor - - arm_func_start GenerateOuterRingFloor -GenerateOuterRingFloor: ; 0x0233B190 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2f4 - sub sp, sp, #0x1800 - mov r1, #5 - mov r2, #0x1c - add r3, r2, #0x33 - add r3, r3, r3, lsr #31 - mov r8, r3, asr #1 - mov fp, #0x33 - mov sl, #0x38 - mov r7, #2 - mov r6, #7 - mov r5, #0x10 - mov r3, #0x1e - str r2, [sp, #0x64] - add r4, r1, #0x1c - str r0, [sp, #8] - add r0, r4, r4, lsr #31 - mov sb, r0, asr #1 - mov r0, #0 - mov r4, #0x19 - str r0, [sp, #0x58] - str r1, [sp, #0x5c] - add r0, sp, #0x94 - mov r1, #6 - mov r2, #4 - str fp, [sp, #0x6c] - str sl, [sp, #0x70] - str sb, [sp, #0x60] - str r8, [sp, #0x68] - str r7, [sp, #0x1c] - str r6, [sp, #0x20] - str r5, [sp, #0x24] - str r4, [sp, #0x28] - str r3, [sp, #0x2c] - bl InitDungeonGrid - mov r3, #0 - ldr r0, _0233B614 ; =0x000001C2 - add r1, sp, #0x94 - mov r4, r3 -_0233B230: - mla r2, r3, r0, r1 - strb r4, [r2, #0xa] - add r3, r3, #1 - strb r4, [r2, #0x64] - cmp r3, #6 - blt _0233B230 - add r2, sp, #0x94 - mov r1, #0 - mov r0, #0x1e -_0233B254: - mla r3, r4, r0, r2 - strb r1, [r3, #0xa] - add r4, r4, #1 - strb r1, [r3, #0x8d4] - cmp r4, #4 - blt _0233B254 - mov r7, #1 - ldr r1, _0233B614 ; =0x000001C2 - mov r3, r7 - mov r5, r7 - add r4, sp, #0x94 - mov r0, #0x1e -_0233B284: - mla r6, r7, r1, r4 - mov r8, r5 -_0233B28C: - mla r2, r8, r0, r6 - add r8, r8, #1 - strb r3, [r2, #0xa] - cmp r8, #3 - blt _0233B28C - add r7, r7, #1 - cmp r7, #5 - blt _0233B284 - mov sl, #0 - str sl, [sp, #0xc] -_0233B2B4: - add r1, sp, #0x94 - mov r0, #0x1e - mla r7, sl, r0, r1 - add r0, sp, #0x1c - add r0, r0, sl, lsl #2 - mov sb, #0 - str r0, [sp, #0x10] -_0233B2D0: - ldr r0, _0233B614 ; =0x000001C2 - mla r0, sb, r0, r7 - ldrb r0, [r0, #0xa] - cmp r0, #0 - add r0, sp, #0x58 - add r1, r0, sb, lsl #2 - beq _0233B3F8 - ldr r8, [r0, sb, lsl #2] - add r0, sp, #0x1c - ldr r1, [r1, #4] - ldr r4, [r0, sl, lsl #2] - sub r0, r1, r8 - sub r5, r0, #3 - ldr r0, [sp, #0x10] - ldr r1, [r0, #4] - mov r0, #5 - sub r1, r1, r4 - sub r6, r1, #3 - mov r1, r5 - bl DungeonRandRange - mov fp, r0 - mov r0, #4 - mov r1, r6 - bl DungeonRandRange - str r0, [sp, #0x14] - sub r0, r5, fp - bl DungeonRandInt - add r1, r8, #2 - add r8, r1, r0 - ldr r0, [sp, #0x14] - sub r0, r6, r0 - bl DungeonRandInt - add r1, r4, #2 - add r4, r1, r0 - ldr r0, [sp, #0x14] - add fp, r8, fp - add r5, r4, r0 - ldr r0, _0233B614 ; =0x000001C2 - mul r0, sb, r0 - strh r8, [r7, r0] - add r0, r7, r0 - strh fp, [r0, #4] - strh r4, [r0, #2] - strh r5, [r0, #6] - ldr r0, [sp, #0xc] - and r0, r0, #0xff - str r0, [sp, #0x18] - b _0233B3E0 -_0233B390: - mov r6, r4 - b _0233B3D4 -_0233B398: - mov r0, r8 - mov r1, r6 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r6 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r8 - bl GetTileSafe - ldr r1, [sp, #0x18] - add r6, r6, #1 - strb r1, [r0, #7] -_0233B3D4: - cmp r6, r5 - blt _0233B398 - add r8, r8, #1 -_0233B3E0: - cmp r8, fp - blt _0233B390 - ldr r0, [sp, #0xc] - add r0, r0, #1 - str r0, [sp, #0xc] - b _0233B4A0 -_0233B3F8: - ldr r2, [r0, sb, lsl #2] - ldr r1, [r1, #4] - add r0, r2, #1 - sub r1, r1, r2 - add r2, sp, #0x1c - ldr r3, [r2, sl, lsl #2] - ldr r2, [sp, #0x10] - sub r1, r1, #3 - ldr r2, [r2, #4] - add r1, r0, r1 - sub r2, r2, r3 - add r4, r3, #1 - sub r5, r2, #3 - bl DungeonRandRange - add r1, r4, r5 - mov r5, r0 - mov r0, r4 - bl DungeonRandRange - mov r4, r0 - ldr r0, _0233B614 ; =0x000001C2 - mul r0, sb, r0 - strh r5, [r7, r0] - add r1, r7, r0 - add r0, r5, #1 - strh r0, [r1, #4] - strh r4, [r1, #2] - add r0, r4, #1 - strh r0, [r1, #6] - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r4 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r5 - bl GetTileSafe - mov r1, #0xff - strb r1, [r0, #7] -_0233B4A0: - add sb, sb, #1 - cmp sb, #6 - blt _0233B2D0 - add sl, sl, #1 - cmp sl, #4 - blt _0233B2B4 - mov r1, #1 - mov r0, #6 - strb r1, [sp, #0xaa] - strb r1, [sp, #0x26b] - strb r1, [sp, #0x26c] - strb r1, [sp, #0x42d] - strb r1, [sp, #0x42e] - strb r1, [sp, #0x5ef] - strb r1, [sp, #0x5f0] - strb r1, [sp, #0x7b1] - strb r1, [sp, #0x7b2] - strb r1, [sp, #0x973] - strb r1, [sp, #0xa8] - strb r1, [sp, #0xc5] - strb r1, [sp, #0xc6] - strb r1, [sp, #0xe3] - strb r1, [sp, #0xe4] - strb r1, [sp, #0x101] - strb r1, [sp, #0x104] - strb r1, [sp, #0x2c5] - strb r1, [sp, #0x2c6] - strb r1, [sp, #0x487] - strb r1, [sp, #0x488] - strb r1, [sp, #0x649] - strb r1, [sp, #0x64a] - strb r1, [sp, #0x80b] - strb r1, [sp, #0x80c] - strb r1, [sp, #0x9cd] - strb r1, [sp, #0x972] - strb r1, [sp, #0x98f] - strb r1, [sp, #0x990] - strb r1, [sp, #0x9ad] - strb r1, [sp, #0x9ae] - strb r1, [sp, #0x9cb] - bl DungeonRandInt - mov r4, r0 - mov r0, #4 - bl DungeonRandInt - mov r3, r4 - str r0, [sp] - ldr r4, [sp, #8] - add r0, sp, #0x94 - mov r1, #6 - mov r2, #4 - str r4, [sp, #4] - bl AssignGridCellConnections - add r1, sp, #0x1c - str r1, [sp] - mov r0, #0 - str r0, [sp, #4] - add r0, sp, #0x94 - mov r1, #6 - mov r2, #4 - add r3, sp, #0x58 - bl CreateGridCellConnections - add r1, sp, #0x1c - str r1, [sp] - add r0, sp, #0x94 - mov r1, #6 - mov r2, #4 - add r3, sp, #0x58 - bl EnsureConnectedGrid - ldr r1, _0233B618 ; =0x0237CFBC - add r0, sp, #0x94 - ldrsh r3, [r1, #0xc] - mov r1, #6 - mov r2, #4 - bl GenerateKecleonShop - ldr r1, _0233B618 ; =0x0237CFBC - add r0, sp, #0x94 - ldrsh r3, [r1, #0x10] - mov r1, #6 - mov r2, #4 - bl GenerateMonsterHouse - ldr r0, [sp, #8] - mov r1, #6 - ldrb r3, [r0, #0x13] - add r0, sp, #0x94 - mov r2, #4 - bl GenerateExtraHallways - add r0, sp, #0x94 - mov r1, #6 - mov r2, #4 - bl GenerateRoomImperfections - add sp, sp, #0x2f4 - add sp, sp, #0x1800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233B614: .word 0x000001C2 -_0233B618: .word 0x0237CFBC - arm_func_end GenerateOuterRingFloor - - arm_func_start GenerateCrossroadsFloor -GenerateCrossroadsFloor: ; 0x0233B61C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2f8 - sub sp, sp, #0x1800 - mov r1, #0 - mov r2, #0xb - str r0, [sp, #8] - mov fp, #0x16 - mov sl, #0x21 - mov sb, #0x2c - mov r8, #0x38 - mov r7, #1 - mov r6, #9 - mov r5, #0x10 - mov r4, #0x17 - mov r3, #0x1f - str r1, [sp, #0x5c] - str r2, [sp, #0x60] - add r0, sp, #0x98 - mov r1, #5 - mov r2, #4 - str fp, [sp, #0x64] - str sl, [sp, #0x68] - str sb, [sp, #0x6c] - str r8, [sp, #0x70] - str r7, [sp, #0x20] - str r6, [sp, #0x24] - str r5, [sp, #0x28] - str r4, [sp, #0x2c] - str r3, [sp, #0x30] - bl InitDungeonGrid - ldr r0, _0233BA74 ; =0x000001C2 - mov r4, #0 - add r2, sp, #0x98 - mov r1, r7 -_0233B6A4: - mla r3, r4, r0, r2 - strb r1, [r3, #0xa] - add r4, r4, #1 - strb r1, [r3, #0x64] - cmp r4, #5 - blt _0233B6A4 - mov r3, #0 - add r1, sp, #0x98 - mov r7, #1 - mov r0, #0x1e -_0233B6CC: - mla r2, r3, r0, r1 - strb r7, [r2, #0xa] - add r3, r3, #1 - strb r7, [r2, #0x712] - cmp r3, #4 - blt _0233B6CC - ldr r1, _0233BA74 ; =0x000001C2 - mov r4, #0 - mov r5, #1 - add r3, sp, #0x98 - mov r0, #0x1e -_0233B6F8: - mla r6, r7, r1, r3 - mov r8, r5 -_0233B700: - mla r2, r8, r0, r6 - add r8, r8, #1 - strb r4, [r2, #0xa] - cmp r8, #3 - blt _0233B700 - add r7, r7, #1 - cmp r7, #4 - blt _0233B6F8 - mov r0, #1 - mov sl, r4 - strb r0, [sp, #0xa0] - strb r0, [sp, #0x7a8] - strb r0, [sp, #0xfa] - strb r0, [sp, #0x802] -_0233B738: - add r1, sp, #0x98 - mov r0, #0x1e - mla r7, sl, r0, r1 - add r0, sp, #0x20 - add r0, r0, sl, lsl #2 - mov sb, #0 - str r0, [sp, #0x10] -_0233B754: - ldr r0, _0233BA74 ; =0x000001C2 - mla r1, sb, r0, r7 - ldrb r0, [r1, #8] - cmp r0, #0 - bne _0233B938 - ldrb r0, [r1, #0xa] - cmp r0, #0 - add r0, sp, #0x5c - add r1, r0, sb, lsl #2 - beq _0233B890 - ldr r8, [r0, sb, lsl #2] - add r0, sp, #0x20 - ldr r1, [r1, #4] - ldr r5, [r0, sl, lsl #2] - sub r0, r1, r8 - sub r6, r0, #3 - ldr r0, [sp, #0x10] - ldr r1, [r0, #4] - mov r0, #5 - sub r1, r1, r5 - sub fp, r1, #3 - mov r1, r6 - bl DungeonRandRange - str r0, [sp, #0x14] - mov r0, #4 - mov r1, fp - bl DungeonRandRange - str r0, [sp, #0x18] - ldr r0, [sp, #0x14] - sub r0, r6, r0 - bl DungeonRandInt - add r1, r8, #2 - add r8, r1, r0 - ldr r0, [sp, #0x18] - sub r0, fp, r0 - bl DungeonRandInt - add r1, r5, #2 - add r5, r1, r0 - ldr r0, [sp, #0x14] - add r0, r8, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #0x18] - add fp, r5, r0 - ldr r0, _0233BA74 ; =0x000001C2 - mul r0, sb, r0 - strh r8, [r7, r0] - add r1, r7, r0 - ldr r0, [sp, #0xc] - strh r0, [r1, #4] - strh r5, [r1, #2] - and r0, r4, #0xff - strh fp, [r1, #6] - str r0, [sp, #0x1c] - b _0233B87C -_0233B82C: - mov r6, r5 - b _0233B870 -_0233B834: - mov r0, r8 - mov r1, r6 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r6 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r8 - bl GetTileSafe - ldr r1, [sp, #0x1c] - add r6, r6, #1 - strb r1, [r0, #7] -_0233B870: - cmp r6, fp - blt _0233B834 - add r8, r8, #1 -_0233B87C: - ldr r0, [sp, #0xc] - cmp r8, r0 - blt _0233B82C - add r4, r4, #1 - b _0233B938 -_0233B890: - ldr r2, [r0, sb, lsl #2] - ldr r1, [r1, #4] - add r0, r2, #1 - sub r1, r1, r2 - add r2, sp, #0x20 - ldr r3, [r2, sl, lsl #2] - ldr r2, [sp, #0x10] - sub r1, r1, #3 - ldr r2, [r2, #4] - add r1, r0, r1 - sub r2, r2, r3 - add r5, r3, #1 - sub r6, r2, #3 - bl DungeonRandRange - add r1, r5, r6 - mov r6, r0 - mov r0, r5 - bl DungeonRandRange - mov r5, r0 - ldr r0, _0233BA74 ; =0x000001C2 - mul r0, sb, r0 - strh r6, [r7, r0] - add r1, r7, r0 - add r0, r6, #1 - strh r0, [r1, #4] - strh r5, [r1, #2] - add r0, r5, #1 - strh r0, [r1, #6] - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r5 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r6 - bl GetTileSafe - mov r1, #0xff - strb r1, [r0, #7] -_0233B938: - add sb, sb, #1 - cmp sb, #5 - blt _0233B754 - add sl, sl, #1 - cmp sl, #4 - blt _0233B738 - mov r7, #1 - ldr r2, _0233BA74 ; =0x000001C2 - mov r0, r7 - mov r5, #0 - add r4, sp, #0x98 - mov r1, #0x1e -_0233B968: - mla r6, r7, r2, r4 - mov r8, r5 -_0233B970: - mla r3, r8, r1, r6 - strb r0, [r3, #0x14] - add r8, r8, #1 - strb r0, [r3, #0x31] - cmp r8, #3 - blt _0233B970 - add r7, r7, #1 - cmp r7, #4 - blt _0233B968 - ldr r1, _0233BA74 ; =0x000001C2 - mov r4, #1 - mov r6, #0 - add r5, sp, #0x98 - mov r2, #0x1e -_0233B9A8: - mla r7, r0, r2, r5 - mov r8, r6 -_0233B9B0: - mla r3, r8, r1, r7 - strb r4, [r3, #0x16] - add r8, r8, #1 - strb r4, [r3, #0x1d7] - cmp r8, #4 - blt _0233B9B0 - add r0, r0, #1 - cmp r0, #3 - blt _0233B9A8 - add r1, sp, #0x20 - str r1, [sp] - add r0, sp, #0x98 - add r3, sp, #0x5c - mov r1, #5 - mov r2, #4 - str r4, [sp, #4] - bl CreateGridCellConnections - add r4, sp, #0x20 - add r0, sp, #0x98 - add r3, sp, #0x5c - mov r1, #5 - mov r2, #4 - str r4, [sp] - bl EnsureConnectedGrid - ldr r1, _0233BA78 ; =0x0237CFBC - add r0, sp, #0x98 - ldrsh r3, [r1, #0xc] - mov r1, #5 - mov r2, #4 - bl GenerateKecleonShop - ldr r1, _0233BA78 ; =0x0237CFBC - add r0, sp, #0x98 - ldrsh r3, [r1, #0x10] - mov r1, #5 - mov r2, #4 - bl GenerateMonsterHouse - ldr r0, [sp, #8] - mov r1, #5 - ldrb r3, [r0, #0x13] - add r0, sp, #0x98 - mov r2, #4 - bl GenerateExtraHallways - add r0, sp, #0x98 - mov r1, #5 - mov r2, #4 - bl GenerateRoomImperfections - add sp, sp, #0x2f8 - add sp, sp, #0x1800 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233BA74: .word 0x000001C2 -_0233BA78: .word 0x0237CFBC - arm_func_end GenerateCrossroadsFloor - - arm_func_start GenerateLineFloor -GenerateLineFloor: ; 0x0233BA7C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xae0 - sub sp, sp, #0x1000 - mov r7, #0 - mov r6, #0xb - mov lr, #0x16 - mov ip, #0x21 - mov r5, #0x2c - mov r3, #0x38 - mov r2, #4 - mov r1, #0xf - mov r4, r0 - str r2, [sp, #8] - str r1, [sp, #0xc] - add r0, sp, #0x80 - str r7, [sp, #0x44] - str r6, [sp, #0x48] - str lr, [sp, #0x4c] - str ip, [sp, #0x50] - str r5, [sp, #0x54] - str r3, [sp, #0x58] - mov r1, #5 - mov r2, #1 - bl InitDungeonGrid - ldrsb r3, [r4, #1] - add r0, sp, #0x80 - mov r1, #5 - mov r2, #1 - bl AssignRooms - add r1, sp, #8 - str r1, [sp] - ldrb r2, [r4, #0xd] - add r0, sp, #0x80 - add r3, sp, #0x44 - str r2, [sp, #4] - mov r1, #5 - mov r2, #1 - bl CreateRoomsAndAnchors - mov r0, #5 - bl DungeonRandInt - mov r5, r0 - mov r0, #1 - bl DungeonRandInt - stmia sp, {r0, r4} - mov r3, r5 - add r0, sp, #0x80 - mov r1, #5 - mov r2, #1 - bl AssignGridCellConnections - add r0, sp, #8 - mov r2, #1 - stmia sp, {r0, r2} - add r0, sp, #0x80 - mov r1, #5 - add r3, sp, #0x44 - bl CreateGridCellConnections - add r1, sp, #8 - str r1, [sp] - add r0, sp, #0x80 - mov r1, #5 - mov r2, #1 - add r3, sp, #0x44 - bl EnsureConnectedGrid - ldr r3, _0233BBD8 ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r3, #0xc] - mov r1, #5 - mov r2, #1 - bl GenerateKecleonShop - ldr r1, _0233BBD8 ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r1, #0x10] - mov r1, #5 - mov r2, #1 - bl GenerateMonsterHouse - ldrb r3, [r4, #0x13] - add r0, sp, #0x80 - mov r1, #5 - mov r2, #1 - bl GenerateExtraHallways - add r0, sp, #0x80 - mov r1, #5 - mov r2, #1 - bl GenerateRoomImperfections - add sp, sp, #0xae0 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233BBD8: .word 0x0237CFBC - arm_func_end GenerateLineFloor - - arm_func_start GenerateCrossFloor -GenerateCrossFloor: ; 0x0233BBDC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xae0 - sub sp, sp, #0x1000 - mov r1, #3 - mov r8, #0xb - mov r4, r0 - mov r7, #0x16 - mov r6, #0x21 - mov r5, #0x2c - mov lr, #2 - mov ip, #0x14 - mov r3, #0x1e - add r0, sp, #0x80 - mov r2, r1 - str r8, [sp, #0x44] - str r7, [sp, #0x48] - str r6, [sp, #0x4c] - str r5, [sp, #0x50] - str lr, [sp, #8] - str r8, [sp, #0xc] - str ip, [sp, #0x10] - str r3, [sp, #0x14] - bl InitDungeonGrid - mov r5, #0 - ldr r1, _0233BD6C ; =0x000001C2 - mov r3, #1 - mov lr, r5 - add ip, sp, #0x80 - mov r0, #0x1e -_0233BC50: - mla r7, r5, r1, ip - mov r6, lr -_0233BC58: - mla r2, r6, r0, r7 - add r6, r6, #1 - strb r3, [r2, #0xa] - cmp r6, #3 - blt _0233BC58 - add r5, r5, #1 - cmp r5, #3 - blt _0233BC50 - add r0, sp, #8 - strb r3, [sp, #0x88] - strb r3, [sp, #0x40c] - mov r1, #3 - strb r3, [sp, #0xc4] - strb r3, [sp, #0x448] - str r0, [sp] - ldrb ip, [r4, #0xd] - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r2, r1 - str ip, [sp, #4] - bl CreateRoomsAndAnchors - mov ip, #1 - mov r1, #3 - add r0, sp, #8 - strb ip, [sp, #0xb4] - strb ip, [sp, #0x275] - strb ip, [sp, #0x276] - strb ip, [sp, #0x437] - strb ip, [sp, #0x256] - strb ip, [sp, #0x273] - strb ip, [sp, #0x274] - strb ip, [sp, #0x291] - str r0, [sp] - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r2, r1 - str ip, [sp, #4] - bl CreateGridCellConnections - mov r1, #3 - add ip, sp, #8 - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r2, r1 - str ip, [sp] - bl EnsureConnectedGrid - ldr r1, _0233BD70 ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r1, #0xc] - mov r1, #3 - mov r2, r1 - bl GenerateKecleonShop - ldr r3, _0233BD70 ; =0x0237CFBC - mov r1, #3 - ldrsh r3, [r3, #0x10] - add r0, sp, #0x80 - mov r2, r1 - bl GenerateMonsterHouse - mov r1, #3 - ldrb r3, [r4, #0x13] - add r0, sp, #0x80 - mov r2, r1 - bl GenerateExtraHallways - mov r1, #3 - add r0, sp, #0x80 - mov r2, r1 - bl GenerateRoomImperfections - add sp, sp, #0xae0 - add sp, sp, #0x1000 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0233BD6C: .word 0x000001C2 -_0233BD70: .word 0x0237CFBC - arm_func_end GenerateCrossFloor - - arm_func_start GenerateBeetleFloor -GenerateBeetleFloor: ; 0x0233BD74 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xae0 - sub sp, sp, #0x1000 - mov r1, #3 - mov r4, r0 - mov sb, #5 - mov r8, #0xf - mov r7, #0x23 - mov r6, #0x32 - mov r5, #2 - mov lr, #0xb - mov ip, #0x14 - mov r3, #0x1e - add r0, sp, #0x80 - mov r2, r1 - str sb, [sp, #0x44] - str r8, [sp, #0x48] - str r7, [sp, #0x4c] - str r6, [sp, #0x50] - str r5, [sp, #8] - str lr, [sp, #0xc] - str ip, [sp, #0x10] - str r3, [sp, #0x14] - bl InitDungeonGrid - mov r5, #0 - ldr r1, _0233BF28 ; =0x000001C2 - mov r3, #1 - mov lr, r5 - add ip, sp, #0x80 - mov r0, #0x1e -_0233BDEC: - mla r7, r5, r1, ip - mov r6, lr -_0233BDF4: - mla r2, r6, r0, r7 - add r6, r6, #1 - strb r3, [r2, #0xa] - cmp r6, #3 - blt _0233BDF4 - add r5, r5, #1 - cmp r5, #3 - blt _0233BDEC - add r0, sp, #8 - str r0, [sp] - ldrb ip, [r4, #0xd] - mov r1, #3 - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r2, r1 - str ip, [sp, #4] - bl CreateRoomsAndAnchors - mov r3, #0 - add r0, sp, #0x80 - mov ip, #1 - mov r1, #0x1e -_0233BE48: - mla r2, r3, r1, r0 - strb ip, [r2, #0x16] - strb ip, [r2, #0x1d7] - strb ip, [r2, #0x1d8] - add r3, r3, #1 - strb ip, [r2, #0x399] - cmp r3, #3 - blt _0233BE48 - add r2, sp, #8 - str r2, [sp] - mov r1, #3 - add r3, sp, #0x44 - mov r2, r1 - str ip, [sp, #4] - bl CreateGridCellConnections - mov r0, #1 - add r3, sp, #0x80 - mov r2, r0 - mov r1, #0 - bl MergeRoomsVertically - add r3, sp, #0x80 - mov r0, #1 - mov r1, #0 - mov r2, #2 - bl MergeRoomsVertically - add r1, sp, #8 - str r1, [sp] - mov r1, #3 - add r0, sp, #0x80 - mov r2, r1 - add r3, sp, #0x44 - bl EnsureConnectedGrid - ldr r3, _0233BF2C ; =0x0237CFBC - mov r1, #3 - ldrsh r3, [r3, #0xc] - add r0, sp, #0x80 - mov r2, r1 - bl GenerateKecleonShop - ldr r3, _0233BF2C ; =0x0237CFBC - mov r1, #3 - ldrsh r3, [r3, #0x10] - add r0, sp, #0x80 - mov r2, r1 - bl GenerateMonsterHouse - mov r1, #3 - ldrb r3, [r4, #0x13] - add r0, sp, #0x80 - mov r2, r1 - bl GenerateExtraHallways - mov r1, #3 - add r0, sp, #0x80 - mov r2, r1 - bl GenerateRoomImperfections - add sp, sp, #0xae0 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0233BF28: .word 0x000001C2 -_0233BF2C: .word 0x0237CFBC - arm_func_end GenerateBeetleFloor - - arm_func_start MergeRoomsVertically -MergeRoomsVertically: ; 0x0233BF30 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1c - mov r5, #0x1e - add r4, r5, #0x1a4 - add r2, r1, r2 - mul r7, r0, r4 - mov sl, r3 - mul r8, r2, r5 - add fp, sl, r7 - ldrsh r0, [fp, r8] - mul r6, r1, r5 - str r0, [sp] - ldrsh r0, [fp, r6] - ldr r1, [sp] - cmp r0, r1 - add r1, sl, #4 - add r1, r1, r7 - strlt r0, [sp] - str r1, [sp, #0x14] - ldrsh r2, [r1, r8] - ldrsh sb, [r1, r6] - add r1, sl, #2 - add r1, r1, r7 - str r1, [sp, #0x10] - ldrsh r1, [r1, r6] - cmp sb, r2 - movle sb, r2 - str r1, [sp, #8] - add r1, sl, #6 - add r1, r1, r7 - str r1, [sp, #4] - ldr r2, [sp, #4] - ldr r1, [sp, #8] - ldrsh r2, [r2, r8] - str r2, [sp, #0xc] - bl GetTile - ldrb r0, [r0, #7] - ldr r5, [sp] - and r0, r0, #0xff - str r0, [sp, #0x18] - b _0233C01C -_0233BFD4: - ldr r4, [sp, #8] - b _0233C00C -_0233BFDC: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - ldr r1, [sp, #0x18] - strb r1, [r0, #7] -_0233C00C: - ldr r0, [sp, #0xc] - cmp r4, r0 - blt _0233BFDC - add r5, r5, #1 -_0233C01C: - cmp r5, sb - blt _0233BFD4 - ldr r0, [sp] - add r3, sl, #0x12 - strh r0, [fp, r6] - ldr r0, [sp, #0x14] - add r2, sl, r7 - strh sb, [r0, r6] - ldr r1, [sp, #8] - ldr r0, [sp, #0x10] - strh r1, [r0, r6] - ldr r1, [sp, #0xc] - ldr r0, [sp, #4] - strh r1, [r0, r6] - add r0, r3, r7 - mov r3, #1 - strb r3, [r0, r8] - strb r3, [r0, r6] - add r0, r2, r8 - mov r1, #0 - strb r1, [r0, #0xb] - strb r3, [r0, #0x11] - add sp, sp, #0x1c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end MergeRoomsVertically - - arm_func_start GenerateOuterRoomsFloor -GenerateOuterRoomsFloor: ; 0x0233C07C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xae0 - sub sp, sp, #0x1000 - mov r5, r1 - mov r6, r0 - mov r4, r2 - add r0, sp, #0x44 - add r1, sp, #8 - mov r2, r6 - mov r3, r5 - bl GetGridPositions - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl InitDungeonGrid - mov sb, #0 - mov r3, #1 - mov r8, sb - add r7, sp, #0x80 - mov r0, #0x1e - ldr r1, _0233C308 ; =0x000001C2 - b _0233C0F8 -_0233C0D4: - mla fp, sb, r1, r7 - mov sl, r8 - b _0233C0EC -_0233C0E0: - mla r2, sl, r0, fp - strb r3, [r2, #0xa] - add sl, sl, #1 -_0233C0EC: - cmp sl, r5 - blt _0233C0E0 - add sb, sb, #1 -_0233C0F8: - cmp sb, r6 - blt _0233C0D4 - mov fp, #1 - sub r3, r5, #1 - sub r2, r6, #1 - mov r8, fp - mov lr, fp - add sb, sp, #0x80 - mov r0, #0x1e - ldr r1, _0233C308 ; =0x000001C2 - b _0233C148 -_0233C124: - mla sl, fp, r1, sb - mov ip, lr - b _0233C13C -_0233C130: - mla r7, ip, r0, sl - strb r8, [r7, #8] - add ip, ip, #1 -_0233C13C: - cmp ip, r3 - blt _0233C130 - add fp, fp, #1 -_0233C148: - cmp fp, r2 - blt _0233C124 - add r1, sp, #8 - str r1, [sp] - ldrb r7, [r4, #0xd] - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r1, r6 - mov r2, r5 - str r7, [sp, #4] - bl CreateRoomsAndAnchors - mov r2, #1 - add r3, sp, #0x80 - sub r1, r5, #1 - mov r0, #0x1e - mla r7, r1, r0, r3 - mov r8, #0 - sub r1, r6, #2 - sub r0, r6, #1 - mov fp, r2 - ldr sb, _0233C308 ; =0x000001C2 - b _0233C1D4 -_0233C1A0: - cmp r8, #0 - mulne ip, r8, sb - addne sl, r3, ip - strneb r2, [sl, #0x16] - addne sl, r7, ip - strneb r2, [sl, #0x16] - cmp r8, r1 - mullt ip, r8, sb - addlt sl, r3, ip - strltb fp, [sl, #0x1d7] - addlt sl, r7, ip - strltb fp, [sl, #0x1d7] - add r8, r8, #1 -_0233C1D4: - cmp r8, r0 - blt _0233C1A0 - ldr r2, _0233C308 ; =0x000001C2 - add r1, sp, #0x80 - mla r2, r0, r2, r1 - mov r0, #1 - mov ip, #0x1e - mov r3, #0 - sub sl, r5, #2 - sub lr, r5, #1 - mov r8, r0 - mov fp, ip - b _0233C23C -_0233C208: - cmp r3, #0 - mulne sb, r3, ip - addne r7, r1, sb - strneb r0, [r7, #0x13] - addne r7, r2, sb - strneb r0, [r7, #0x13] - cmp r3, sl - mullt sb, r3, fp - addlt r7, r1, sb - strltb r8, [r7, #0x14] - addlt r7, r2, sb - strltb r8, [r7, #0x14] - add r3, r3, #1 -_0233C23C: - cmp r3, lr - blt _0233C208 - add r7, sp, #8 - str r7, [sp] - mov r7, #0 - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r1, r6 - mov r2, r5 - str r7, [sp, #4] - bl CreateGridCellConnections - add r7, sp, #8 - add r0, sp, #0x80 - add r3, sp, #0x44 - mov r1, r6 - mov r2, r5 - str r7, [sp] - bl EnsureConnectedGrid - ldrb r3, [r4, #9] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateMazeRoom - ldr r3, _0233C30C ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r3, #0xc] - mov r1, r6 - mov r2, r5 - bl GenerateKecleonShop - ldr r3, _0233C30C ; =0x0237CFBC - add r0, sp, #0x80 - ldrsh r3, [r3, #0x10] - mov r1, r6 - mov r2, r5 - bl GenerateMonsterHouse - ldrb r3, [r4, #0x13] - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateExtraHallways - add r0, sp, #0x80 - mov r1, r6 - mov r2, r5 - bl GenerateRoomImperfections - mov r1, r6 - mov r2, r5 - add r0, sp, #0x80 - bl GenerateSecondaryStructures - add sp, sp, #0xae0 - add sp, sp, #0x1000 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233C308: .word 0x000001C2 -_0233C30C: .word 0x0237CFBC - arm_func_end GenerateOuterRoomsFloor - - arm_func_start IsNotFullFloorFixedRoom -IsNotFullFloorFixedRoom: ; 0x0233C310 - cmp r0, #0 - ble _0233C324 - cmp r0, #0xa5 - movlt r0, #0 - bxlt lr -_0233C324: - mov r0, #1 - bx lr - arm_func_end IsNotFullFloorFixedRoom - - arm_func_start GenerateFixedRoom -GenerateFixedRoom: ; 0x0233C32C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2f8 - sub sp, sp, #0x1800 - ldr r2, _0233C764 ; =0x02353538 - str r1, [sp, #0x10] - ldr r2, [r2] - mov sl, r0 - add r1, r2, #0x12000 - ldr r1, [r1, #0xaa4] - ldr r1, [r1, sl, lsl #2] - ldrh r4, [r1] - ldrh r5, [r1, #2] - cmp r4, #0 - cmpne r5, #0 - bne _0233C374 - bl GenerateOneRoomMonsterHouseFloor - mov r0, #0 - b _0233C758 -_0233C374: - bl IsNotFullFloorFixedRoom - cmp r0, #0 - bne _0233C590 - ldr r0, _0233C764 ; =0x02353538 - ldr r4, _0233C768 ; =0x0235378C - ldr r0, [r0] - ldr r3, _0233C76C ; =0x0237CFBC - add r2, r0, #0x12000 - ldr r5, [r2, #0xaa4] - add r1, r0, #0xcd00 - ldr r6, [r5, sl, lsl #2] - add r0, r0, #0xcc00 - ldrh r7, [r6] - ldrh r6, [r6, #2] - mov r5, #0 - mov sb, #5 - strh r7, [r1, #0x34] - strh r6, [r1, #0x36] - ldr r1, [r2, #0xaa4] - add fp, r6, #5 - ldr r1, [r1, sl, lsl #2] - str r0, [sp, #0x1c] - add r1, r1, #6 - str r1, [r4, #4] - strh r5, [r3, #0xa] - add r4, r7, #5 - b _0233C450 -_0233C3E0: - mov r0, sb, lsl #0x10 - mov r8, #5 - mov r5, r0, asr #0x10 - b _0233C444 -_0233C3F0: - bl ov29_023424D0 - str r0, [sp, #0x18] - mov r0, r8 - mov r1, sb - bl GetTileSafe - ldrh ip, [r0] - ldr r1, [sp, #0x18] - mov r2, r8 - orr ip, ip, #0x100 - strh ip, [r0] - mov ip, #0 - strb ip, [r0, #6] - mov ip, #1 - mov r3, sb - str ip, [sp] - bl ov29_02342F30 - cmp r0, #0 - ldrne r0, [sp, #0x1c] - strneh r8, [r0, #0xe4] - strneh r5, [r0, #0xe6] - add r8, r8, #1 -_0233C444: - cmp r8, r4 - blt _0233C3F0 - add sb, sb, #1 -_0233C450: - cmp sb, fp - blt _0233C3E0 - mov r8, #0 - add r4, r6, #5 - ldr sb, _0233C76C ; =0x0237CFBC - add r5, r7, #5 - mov r6, r8 -_0233C46C: - mov r7, r6 -_0233C470: - cmp r7, #5 - blt _0233C490 - cmp r7, r5 - bge _0233C490 - cmp r8, #5 - blt _0233C490 - cmp r8, r4 - blt _0233C4D4 -_0233C490: - mov r0, r7 - mov r1, r8 - bl GetTileSafe - ldrh r1, [r0] - orr r1, r1, #0x10 - strh r1, [r0] - ldrb r1, [sb, #4] - cmp r1, #0 - ldrh r1, [r0] - biceq r1, r1, #3 - streqh r1, [r0] - beq _0233C4D4 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #3 - strh r1, [r0] -_0233C4D4: - add r7, r7, #1 - cmp r7, #0x38 - blt _0233C470 - add r8, r8, #1 - cmp r8, #0x20 - blt _0233C46C - cmp sl, #4 - bne _0233C534 - mov r5, #5 - mov r4, #2 -_0233C4FC: - mov r6, r4 -_0233C500: - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - add r6, r6, #1 - cmp r6, #5 - orr r1, r1, #0x10 - bic r1, r1, #3 - strh r1, [r0] - blt _0233C500 - add r5, r5, #1 - cmp r5, #0x10 - ble _0233C4FC -_0233C534: - bl ov29_02336204 - cmp r0, #0 - beq _0233C584 - mov r6, #0 - mov r4, r6 -_0233C548: - mov r5, r4 -_0233C54C: - mov r0, r5 - mov r1, r6 - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - tst r1, #3 - ldreqh r1, [r0] - orreq r1, r1, #0x10 - streqh r1, [r0] - cmp r5, #0x38 - blt _0233C54C - add r6, r6, #1 - cmp r6, #0x20 - blt _0233C548 -_0233C584: - bl FinalizeJunctions - mov r0, #1 - b _0233C758 -_0233C590: - add r1, r4, #4 - mov r0, #0x38 - bl DivideInt - mov r6, r0 - cmp r6, #2 - add r1, r5, #4 - mov r0, #0x20 - movlt r6, #1 - bl DivideInt - mov r7, r0 - cmp r7, #2 - movlt r7, #1 - mov r1, #0 - str r1, [sp, #0x14] - add r0, sp, #0x20 - add r1, sp, #0x5c - mov r2, r6 - mov r3, r7 - ldr r8, [sp, #0x14] - bl GetGridPositions - add r0, sp, #0x98 - mov r1, r6 - mov r2, r7 - bl InitDungeonGrid - ldr r3, [sp, #0x10] - add r0, sp, #0x98 - ldrsb r3, [r3, #1] - mov r1, r6 - mov r2, r7 - bl AssignRooms - mov sb, #0 - mov r3, #1 - mov lr, sb - add fp, sp, #0x98 - mov r0, #0x1e - ldr r1, _0233C770 ; =0x000001C2 - b _0233C648 -_0233C624: - mla ip, sb, r1, fp - mov r8, lr - b _0233C63C -_0233C630: - mla r2, r8, r0, ip - strb r3, [r2, #0x1b] - add r8, r8, #1 -_0233C63C: - cmp r8, r7 - blt _0233C630 - add sb, sb, #1 -_0233C648: - cmp sb, r6 - blt _0233C624 - mov fp, #0 - b _0233C69C -_0233C658: - mov r0, r6 - bl DungeonRandInt - mov sb, r0 - mov r0, r7 - bl DungeonRandInt - mov r8, r0 - ldr r1, _0233C770 ; =0x000001C2 - add r0, sp, #0x98 - mla r1, sb, r1, r0 - mov r0, #0x1e - mla r0, r8, r0, r1 - ldrb r1, [r0, #0xa] - mla r0, r6, r8, sb - str r0, [sp, #0x14] - cmp r1, #0 - bne _0233C6A4 - add fp, fp, #1 -_0233C69C: - cmp fp, #0x40 - blt _0233C658 -_0233C6A4: - add r1, sp, #0x5c - str r1, [sp] - ldr r1, [sp, #0x14] - add r0, sp, #0x98 - stmib sp, {r1, r4} - add r3, sp, #0x20 - mov r1, r6 - mov r2, r7 - str r5, [sp, #0xc] - bl ov29_0234217C - cmp r6, #1 - cmpeq r7, #1 - beq _0233C738 - ldr r4, [sp, #0x10] - str r8, [sp] - add r0, sp, #0x98 - mov r1, r6 - mov r2, r7 - mov r3, sb - str r4, [sp, #4] - bl AssignGridCellConnections - add r4, sp, #0x5c - str r4, [sp] - mov r4, #1 - add r0, sp, #0x98 - add r3, sp, #0x20 - mov r1, r6 - mov r2, r7 - str r4, [sp, #4] - bl CreateGridCellConnections - add r0, sp, #0x5c - str r0, [sp] - mov r1, r6 - add r0, sp, #0x98 - mov r2, r7 - add r3, sp, #0x20 - bl EnsureConnectedGrid -_0233C738: - ldr r0, _0233C770 ; =0x000001C2 - add r2, sp, #0x98 - mla r0, sb, r0, r2 - mov r1, #0x1e - mla r0, r8, r1, r0 - mov r1, sl - bl ov29_02342594 - mov r0, #0 -_0233C758: - add sp, sp, #0x2f8 - add sp, sp, #0x1800 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233C764: .word 0x02353538 -_0233C768: .word 0x0235378C -_0233C76C: .word 0x0237CFBC -_0233C770: .word 0x000001C2 - arm_func_end GenerateFixedRoom - - arm_func_start GenerateOneRoomMonsterHouseFloor -GenerateOneRoomMonsterHouseFloor: ; 0x0233C774 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0xa60 - sub sp, sp, #0x1000 - mov r1, #1 - add r0, sp, #0 - mov r2, r1 - bl InitDungeonGrid - mov r5, #2 - mov r1, #1 - mov r0, #0 - mov r3, #0x36 - mov r2, #0x1e - strh r5, [sp] - strh r3, [sp, #4] - strh r5, [sp, #2] - strh r2, [sp, #6] - strb r1, [sp, #0xa] - strb r1, [sp, #0xb] - strb r0, [sp, #8] - mov r6, r0 - b _0233C818 -_0233C7C8: - ldrsh r4, [sp, #2] - b _0233C808 -_0233C7D0: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r4 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r5 - bl GetTileSafe - strb r6, [r0, #7] - add r4, r4, #1 -_0233C808: - ldrsh r0, [sp, #6] - cmp r4, r0 - blt _0233C7D0 - add r5, r5, #1 -_0233C818: - ldrsh r0, [sp, #4] - cmp r5, r0 - blt _0233C7C8 - mov r1, #1 - add r0, sp, #0 - mov r2, r1 - rsb r3, r1, #0x3e8 - bl GenerateMonsterHouse - add sp, sp, #0xa60 - add sp, sp, #0x1000 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end GenerateOneRoomMonsterHouseFloor - - arm_func_start GenerateTwoRoomsWithMonsterHouseFloor -GenerateTwoRoomsWithMonsterHouseFloor: ; 0x0233C844 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2e4 - sub sp, sp, #0x1800 - mov r1, #2 - mov r5, #0x1c - mov r4, #0x36 - mov r3, #0x1e - str r5, [sp, #0x4c] - add r0, sp, #0x84 - mov r2, #1 - str r1, [sp, #0x48] - str r4, [sp, #0x50] - str r1, [sp, #0xc] - str r3, [sp, #0x10] - mov r5, #0 - bl InitDungeonGrid - mov r6, r5 -_0233C888: - add r1, sp, #0x48 - add r0, r1, r6, lsl #2 - ldr sb, [r1, r6, lsl #2] - ldr r1, [r0, #4] - ldr sl, [sp, #0xc] - ldr r0, [sp, #0x10] - sub r1, r1, sb - sub r7, r1, #3 - sub r0, r0, sl - sub r8, r0, #3 - mov r1, r7 - mov r0, #0xa - bl DungeonRandRange - mov r4, r0 - mov r1, r8 - mov r0, #0x10 - bl DungeonRandRange - mov fp, r0 - sub r0, r7, r4 - bl DungeonRandInt - add r1, sb, #1 - add r7, r1, r0 - sub r0, r8, fp - bl DungeonRandInt - ldr r1, _0233C9E4 ; =0x000001C2 - add r2, sl, #1 - add r8, r2, r0 - mul r1, r6, r1 - add r0, sp, #0x84 - add r2, r0, r1 - mov r0, #1 - strb r0, [r2, #0xa] - add r0, sp, #0x84 - strh r7, [r0, r1] - add r0, r7, r4 - strh r0, [r2, #4] - strh r8, [r2, #2] - add sb, r8, fp - str r0, [sp, #8] - strh sb, [r2, #6] - and r4, r5, #0xff - b _0233C97C -_0233C930: - mov sl, r8 - b _0233C970 -_0233C938: - mov r0, r7 - mov r1, sl - bl GetTileSafe - ldrh r2, [r0] - mov r1, sl - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r7 - bl GetTileSafe - strb r4, [r0, #7] - add sl, sl, #1 -_0233C970: - cmp sl, sb - blt _0233C938 - add r7, r7, #1 -_0233C97C: - ldr r0, [sp, #8] - cmp r7, r0 - blt _0233C930 - add r6, r6, #1 - cmp r6, #2 - add r5, r5, #1 - blt _0233C888 - mov r2, #1 - add r1, sp, #0xc - strb r2, [sp, #0x9a] - strb r2, [sp, #0x25b] - str r1, [sp] - mov r4, #0 - add r0, sp, #0x84 - add r3, sp, #0x48 - mov r1, #2 - str r4, [sp, #4] - bl CreateGridCellConnections - mov r2, #1 - add r0, sp, #0x84 - rsb r3, r2, #0x3e8 - mov r1, #2 - bl GenerateMonsterHouse - add sp, sp, #0x2e4 - add sp, sp, #0x1800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233C9E4: .word 0x000001C2 - arm_func_end GenerateTwoRoomsWithMonsterHouseFloor - - arm_func_start GenerateExtraHallways -GenerateExtraHallways: ; 0x0233C9E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - movs sl, r3 - str r0, [sp] - str r1, [sp, #4] - str r2, [sp, #8] - beq _0233CF70 - mov r5, #0 - b _0233CF68 -_0233CA0C: - ldr r0, [sp, #4] - bl DungeonRandInt - mov r4, r0 - ldr r0, [sp, #8] - bl DungeonRandInt - mov sb, r0 - ldr r1, _0233CF78 ; =0x000001C2 - ldr r0, [sp] - mla r1, r4, r1, r0 - mov r0, #0x1e - mla r6, sb, r0, r1 - ldrb r0, [r6, #0xa] - cmp r0, #0 - ldrneb r0, [r6, #0xb] - cmpne r0, #0 - beq _0233CF64 - ldrb r0, [r6, #8] - cmp r0, #0 - ldreqb r0, [r6, #0x10] - cmpeq r0, #0 - bne _0233CF64 - ldrsh r0, [r6] - ldrsh r1, [r6, #4] - bl DungeonRandRange - mov r8, r0 - ldrsh r0, [r6, #2] - ldrsh r1, [r6, #6] - bl DungeonRandRange - mov r7, r0 - mov r0, #4 - bl DungeonRandInt - mov r6, r0, lsl #1 - ldr r0, [sp, #8] - mov ip, #0 - sub fp, r0, #1 - ldr r0, [sp, #4] - mov r3, #2 - sub r2, r0, #1 - mov r1, #4 - arm_func_end GenerateExtraHallways - - arm_func_start ov29_0233CAA8 -ov29_0233CAA8: ; 0x0233CAA8 - mov r0, #6 - mov lr, ip -_0233CAB0: - cmp r6, #0 - bne _0233CAC0 - cmp sb, fp - movge r6, r3 -_0233CAC0: - cmp r6, #2 - bne _0233CAD0 - cmp r4, r2 - movge r6, r1 -_0233CAD0: - cmp r6, #4 - bne _0233CAE0 - arm_func_end ov29_0233CAA8 - - arm_func_start ov29_0233CAD8 -ov29_0233CAD8: ; 0x0233CAD8 - cmp sb, #0 - movle r6, r0 -_0233CAE0: - cmp r6, #6 - bne _0233CAF0 - cmp r4, #0 - movle r6, lr -_0233CAF0: - add ip, ip, #1 - cmp ip, #3 - blt _0233CAB0 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrb sb, [r0, #7] - ldr r0, _0233CF7C ; =0x0235171C - arm_func_end ov29_0233CAD8 - - arm_func_start ov29_0233CB10 -ov29_0233CB10: ; 0x0233CB10 - mov r4, r6, lsl #2 - add fp, r0, r6, lsl #2 -_0233CB18: - mov r0, r8 - mov r1, r7 - bl GetTile - ldrb r0, [r0, #7] - cmp sb, r0 - ldreq r0, _0233CF7C ; =0x0235171C - ldreqsh r1, [r0, r4] - ldreqsh r0, [fp, #2] - addeq r8, r8, r1 - arm_func_end ov29_0233CB10 - - arm_func_start ov29_0233CB3C -ov29_0233CB3C: ; 0x0233CB3C - addeq r7, r7, r0 - beq _0233CB18 - ldr fp, _0233CF7C ; =0x0235171C - mov sb, r6, lsl #2 - add r4, fp, r6, lsl #2 -_0233CB50: - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - ldreqsh r1, [fp, sb] - ldreqsh r0, [r4, #2] - addeq r8, r8, r1 - addeq r7, r7, r0 - beq _0233CB50 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _0233CF64 - sub sb, r8, #2 - mov r4, #0 - add r1, r7, #2 - sub r3, r7, #2 - add r0, r8, #2 - mov r2, #1 - b _0233CBFC -_0233CBB4: - mov fp, r3 - b _0233CBE8 -_0233CBBC: - cmp sb, #0 - blt _0233CBDC - cmp sb, #0x38 - bge _0233CBDC - cmp fp, #0 - blt _0233CBDC - cmp fp, #0x20 - blt _0233CBE4 -_0233CBDC: - mov r4, r2 - b _0233CBF0 -_0233CBE4: - add fp, fp, #1 -_0233CBE8: - cmp fp, r1 - ble _0233CBBC -_0233CBF0: - cmp r4, #0 - bne _0233CC04 - add sb, sb, #1 -_0233CBFC: - cmp sb, r0 - ble _0233CBB4 -_0233CC04: - cmp r4, #0 - bne _0233CF64 - add r0, r6, #2 - and r0, r0, #6 - ldr r1, _0233CF7C ; =0x0235171C - mov r2, r0, lsl #2 - add r0, r1, r0, lsl #2 - ldrsh r2, [r1, r2] - ldrsh r1, [r0, #2] - add r0, r8, r2 - add r1, r7, r1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233CF64 - sub r0, r6, #2 - and r0, r0, #6 - ldr r1, _0233CF7C ; =0x0235171C - mov r2, r0, lsl #2 - add r0, r1, r0, lsl #2 - ldrsh r2, [r1, r2] - ldrsh r1, [r0, #2] - add r0, r8, r2 - add r1, r7, r1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233CF64 - mov r0, #3 - bl DungeonRandInt - ldr r4, _0233CF7C ; =0x0235171C - add sb, r0, #3 -_0233CC8C: - cmp r8, #1 - cmpgt r7, #1 - ble _0233CF64 - cmp r8, #0x37 - cmplt r7, #0x1f - bge _0233CF64 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233CF64 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - tst r0, #0x10 - bne _0233CF64 - mov r0, #1 - str r0, [sp, #0xc] - add r0, r8, #1 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CD38 - add r0, r8, #1 - add r1, r7, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CD38 - mov r0, r8 - add r1, r7, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0xc] -_0233CD38: - add r0, r8, #1 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CD94 - sub fp, r7, #1 - add r0, r8, #1 - mov r1, fp - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CD94 - mov r1, fp - mov r0, r8 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0xc] -_0233CD94: - sub fp, r8, #1 - mov r0, fp - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CDF0 - mov r0, fp - add r1, r7, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - arm_func_end ov29_0233CB3C - - arm_func_start ov29_0233CDC8 -ov29_0233CDC8: ; 0x0233CDC8 - cmp r0, #1 - bne _0233CDF0 - mov r0, r8 - add r1, r7, #1 - arm_func_end ov29_0233CDC8 - - arm_func_start ov29_0233CDD8 -ov29_0233CDD8: ; 0x0233CDD8 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - arm_func_end ov29_0233CDD8 - - arm_func_start ov29_0233CDE4 -ov29_0233CDE4: ; 0x0233CDE4 - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0xc] -_0233CDF0: - mov r0, fp - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CE4C - mov r0, fp - sub fp, r7, #1 - mov r1, fp - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233CE4C - mov r1, fp - mov r0, r8 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - moveq r0, #0 - streq r0, [sp, #0xc] -_0233CE4C: - ldr r0, [sp, #0xc] - cmp r0, #0 - beq _0233CE7C - mov r0, r8 - mov r1, r7 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0233CE7C: - add r0, r6, #2 - and r1, r0, #6 - mov r0, r1, lsl #2 - ldrsh r2, [r4, r0] - add r0, r4, r1, lsl #2 - ldrsh r1, [r0, #2] - add r0, r8, r2 - add r1, r7, r1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233CF64 - sub r0, r6, #2 - and r1, r0, #6 - mov r0, r1, lsl #2 - ldrsh r2, [r4, r0] - add r0, r4, r1, lsl #2 - ldrsh r1, [r0, #2] - add r0, r8, r2 - add r1, r7, r1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233CF64 - subs sb, sb, #1 - bne _0233CF48 - mov r0, #3 - bl DungeonRandInt - add sb, r0, #3 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - addlt r6, r6, #2 - subge r6, r6, #2 - cmp r8, #0x20 - and r6, r6, #6 - blt _0233CF2C - ldr r0, _0233CF80 ; =0x0237CFBC - ldrb r0, [r0, #6] - cmp r0, #1 - cmpeq r6, #2 - beq _0233CF64 -_0233CF2C: - cmp r8, #0x30 - blt _0233CF48 - ldr r0, _0233CF80 ; =0x0237CFBC - ldrb r0, [r0, #6] - cmp r0, #2 - cmpeq r6, #2 - beq _0233CF64 -_0233CF48: - mov r0, r6, lsl #2 - ldrsh r1, [r4, r0] - add r0, r4, r6, lsl #2 - ldrsh r0, [r0, #2] - add r8, r8, r1 - add r7, r7, r0 - b _0233CC8C -_0233CF64: - add r5, r5, #1 -_0233CF68: - cmp r5, sl - blt _0233CA0C -_0233CF70: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233CF78: .word 0x000001C2 -_0233CF7C: .word 0x0235171C -_0233CF80: .word 0x0237CFBC - arm_func_end ov29_0233CDE4 - - arm_func_start GetGridPositions -GetGridPositions: ; 0x0233CF84 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r4, #0 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - mov r6, r4 - mov r5, #0x38 - b _0233CFC0 -_0233CFA8: - mov r0, r5 - mov r1, r8 - str r4, [sl, r6, lsl #2] - bl DivideInt - add r4, r4, r0 - add r6, r6, #1 -_0233CFC0: - cmp r6, r8 - blt _0233CFA8 - mov r6, #0 - str r4, [sl, r8, lsl #2] - mov r5, r6 - mov r4, #0x20 - b _0233CFF4 -_0233CFDC: - mov r0, r4 - mov r1, r7 - str r6, [sb, r5, lsl #2] - bl DivideInt - add r6, r6, r0 - add r5, r5, #1 -_0233CFF4: - cmp r5, r7 - blt _0233CFDC - str r6, [sb, r7, lsl #2] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end GetGridPositions - - arm_func_start InitDungeonGrid -InitDungeonGrid: ; 0x0233D004 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add r5, r1, r1, lsl #1 - mov r4, r5, asr #1 - add r3, r1, r1, lsr #31 - add ip, r5, r4, lsr #30 - mov r7, #0 - b _0233D0F0 -_0233D020: - ldr r4, _0233D0FC ; =0x000001C2 - mov r8, #0 - mla sb, r7, r4, r0 - mov r5, #1 - mov r4, r8 - mov r6, r5 - mov lr, r8 - b _0233D0E4 -_0233D040: - ldr sl, _0233D100 ; =0x0237CFBC - ldrb sl, [sl, #6] - cmp sl, #1 - bne _0233D064 - cmp r7, r3, asr #1 - movge sl, #0x1e - mlage sl, r8, sl, sb - strgeb r6, [sl, #8] - bge _0233D08C -_0233D064: - cmp sl, #2 - bne _0233D080 - cmp r7, ip, asr #2 - movge sl, #0x1e - mlage sl, r8, sl, sb - strgeb r5, [sl, #8] - bge _0233D08C -_0233D080: - mov sl, #0x1e - mla sl, r8, sl, sb - strb r4, [sl, #8] -_0233D08C: - mov fp, #1 - strb fp, [sl, #0xa] - strb lr, [sl, #0xb] - strb lr, [sl, #0xf] - and fp, lr, #0xff - strb fp, [sl, #0xe] - strb fp, [sl, #0xc] - strb lr, [sl, #0x16] - strb fp, [sl, #0x15] - strb fp, [sl, #0x14] - strb fp, [sl, #0x13] - strb lr, [sl, #0x1a] - strb fp, [sl, #0x19] - strb fp, [sl, #0x18] - strb fp, [sl, #0x17] - strb lr, [sl, #9] - strb lr, [sl, #0x11] - strb lr, [sl, #0x10] - strb lr, [sl, #0x12] - strb lr, [sl, #0x1c] - strb lr, [sl, #0x1d] - add r8, r8, #1 -_0233D0E4: - cmp r8, r2 - blt _0233D040 - add r7, r7, #1 -_0233D0F0: - cmp r7, r1 - blt _0233D020 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233D0FC: .word 0x000001C2 -_0233D100: .word 0x0237CFBC - arm_func_end InitDungeonGrid - - arm_func_start AssignRooms -AssignRooms: ; 0x0233D104 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x104 - mov sl, r0 - mov r4, r3 - mov r0, #3 - mov sb, r1 - mov r8, r2 - bl DungeonRandInt - cmp r4, #0 - rsblt r4, r4, #0 - addge r4, r4, r0 - mov r2, #0 - mov r1, #1 - add r0, sp, #4 - b _0233D148 -_0233D140: - strb r1, [r0, r2] - add r2, r2, #1 -_0233D148: - cmp r2, r4 - blt _0233D140 - mov r1, #0 - add r0, sp, #4 - b _0233D164 -_0233D15C: - strb r1, [r0, r2] - add r2, r2, #1 -_0233D164: - cmp r2, #0x100 - blt _0233D15C - mul r7, sb, r8 - mov r6, #0 - add r4, sp, #4 -_0233D178: - mov r0, r7 - bl DungeonRandInt - mov r5, r0 - mov r0, r7 - bl DungeonRandInt - add r6, r6, #1 - ldrb r2, [r4, r5] - ldrb r1, [r4, r0] - cmp r6, #0x40 - strb r1, [r4, r5] - strb r2, [r4, r0] - blt _0233D178 - ldr r0, _0233D310 ; =0x0237CFBC - mov fp, #0 - sub r1, sb, #1 - str fp, [r0, #0x14] - mov r3, fp - and r5, sb, #1 - add r0, r1, r1, lsr #31 - mov r2, fp - add lr, sp, #4 - b _0233D25C -_0233D1D0: - ldr r1, _0233D314 ; =0x000001C2 - mov r4, #0 - mla r6, r3, r1, sl - ldr r1, _0233D310 ; =0x0237CFBC - b _0233D250 -_0233D1E4: - mov r7, #0x1e - mla r7, r4, r7, r6 - ldrb ip, [r7, #8] - cmp ip, #0 - bne _0233D24C - ldr ip, [r1, #0x14] - cmp ip, #0x20 - strgeb r2, [r7, #0xa] - ldrb ip, [lr, fp] - cmp ip, #0 - beq _0233D240 - mov ip, #1 - strb ip, [r7, #0xa] - ldr ip, [r1, #0x14] - cmp r5, #0 - add ip, ip, #1 - str ip, [r1, #0x14] - beq _0233D248 - cmp r3, r0, asr #1 - cmpeq r4, #1 - moveq ip, #0 - streqb ip, [r7, #0xa] - b _0233D248 -_0233D240: - mov ip, #0 - strb ip, [r7, #0xa] -_0233D248: - add fp, fp, #1 -_0233D24C: - add r4, r4, #1 -_0233D250: - cmp r4, r8 - blt _0233D1E4 - add r3, r3, #1 -_0233D25C: - cmp r3, sb - blt _0233D1D0 - ldr r0, _0233D310 ; =0x0237CFBC - ldr r0, [r0, #0x14] - cmp r0, #2 - bge _0233D308 - mov r4, #0 - b _0233D2F4 -_0233D27C: - mov r0, #0 - str r0, [sp] - mov r6, r0 - b _0233D2DC -_0233D28C: - ldr r0, _0233D314 ; =0x000001C2 - mov r7, #0 - mla fp, r6, r0, sl - b _0233D2D0 -_0233D29C: - mov r0, #0x1e - mla r5, r7, r0, fp - ldrb r0, [r5, #8] - cmp r0, #0 - bne _0233D2CC - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x3c - movlt r0, #1 - strlt r0, [sp] - strltb r0, [r5, #0xa] - blt _0233D2E4 -_0233D2CC: - add r7, r7, #1 -_0233D2D0: - cmp r7, r8 - blt _0233D29C - add r6, r6, #1 -_0233D2DC: - cmp r6, sb - blt _0233D28C -_0233D2E4: - ldr r0, [sp] - cmp r0, #0 - bne _0233D2FC - add r4, r4, #1 -_0233D2F4: - cmp r4, #0xc8 - blt _0233D27C -_0233D2FC: - ldr r0, _0233D310 ; =0x0237CFBC - mov r1, #0 - strb r1, [r0] -_0233D308: - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233D310: .word 0x0237CFBC -_0233D314: .word 0x000001C2 - arm_func_end AssignRooms - - arm_func_start CreateRoomsAndAnchors -CreateRoomsAndAnchors: ; 0x0233D318 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - ldr r5, [sp, #0x5c] - str r0, [sp] - and r0, r5, #4 - str r0, [sp, #0x14] - ldr r0, [sp, #0x58] - mov r4, #0 - str r4, [sp, #0x1c] - str r1, [sp, #4] - str r2, [sp, #8] - str r3, [sp, #0xc] - str r0, [sp, #0x58] - b _0233D658 -_0233D350: - ldr r0, [sp] - mov r1, #0x1e - mla sb, r4, r1, r0 - ldr r0, [sp, #4] - mov sl, #0 - sub r0, r0, #1 - str r0, [sp, #0x28] - ldr r0, [sp, #8] - sub r0, r0, #1 - str r0, [sp, #0x2c] - ldr r0, [sp, #0x58] - add r0, r0, r4, lsl #2 - str r0, [sp, #0x20] - b _0233D648 -_0233D388: - ldr r0, [sp, #0xc] - ldr r3, [r0, sl, lsl #2] - ldr r0, [sp, #0x58] - add fp, r3, #2 - ldr r2, [r0, r4, lsl #2] - add r0, r2, #2 - str r0, [sp, #0x18] - ldr r0, [sp, #0xc] - add r0, r0, sl, lsl #2 - ldr r1, [r0, #4] - ldr r0, [sp, #0x20] - sub r1, r1, r3 - ldr r0, [r0, #4] - sub r5, r1, #4 - sub r0, r0, r2 - sub r6, r0, #3 - ldr r0, _0233D66C ; =0x000001C2 - mla r0, sl, r0, sb - str r0, [sp, #0x10] - ldrb r0, [r0, #8] - cmp r0, #0 - bne _0233D644 - ldr r0, [sp, #0x10] - ldrb r0, [r0, #0xa] - cmp r0, #0 - beq _0233D580 - mov r0, #5 - mov r1, r5 - bl DungeonRandRange - mov r7, r0 - mov r0, #4 - mov r1, r6 - bl DungeonRandRange - mov r8, r0 - orr r0, r7, #1 - cmp r0, r5 - movlt r7, r0 - orr r0, r8, #1 - cmp r0, r6 - movlt r8, r0 - add r0, r8, r8, lsl #1 - add r0, r0, r0, lsr #31 - cmp r7, r0, asr #1 - mov r0, r0, asr #1 - movgt r7, r0 - add r0, r7, r7, lsl #1 - add r0, r0, r0, lsr #31 - cmp r8, r0, asr #1 - mov r0, r0, asr #1 - movgt r8, r0 - sub r0, r5, r7 - bl DungeonRandInt - add r5, fp, r0 - sub r0, r6, r8 - bl DungeonRandInt - ldr r1, [sp, #0x18] - add fp, r5, r7 - add r6, r1, r0 - ldr r0, _0233D66C ; =0x000001C2 - add r7, r6, r8 - mul r0, sl, r0 - strh r5, [sb, r0] - add r0, sb, r0 - strh fp, [r0, #4] - strh r6, [r0, #2] - strh r7, [r0, #6] - ldr r0, [sp, #0x1c] - and r0, r0, #0xff - str r0, [sp, #0x24] - b _0233D4F0 -_0233D4A0: - mov r8, r6 - b _0233D4E4 -_0233D4A8: - mov r0, r5 - mov r1, r8 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r8 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r5 - bl GetTileSafe - ldr r1, [sp, #0x24] - add r8, r8, #1 - strb r1, [r0, #7] -_0233D4E4: - cmp r8, r7 - blt _0233D4A8 - add r5, r5, #1 -_0233D4F0: - cmp r5, fp - blt _0233D4A0 - mov r5, #1 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x50 - movlt r0, r5 - movge r0, #0 - and r6, r0, #0xff - ldr r0, _0233D670 ; =0x0237CFBC - ldr r0, [r0, #0x18] - cmp r0, #0 - ldr r0, [sp, #0x14] - moveq r6, #0 - cmp r0, #0 - moveq r5, #0 - cmp r5, #0 - cmpne r6, #0 - beq _0233D550 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - movlt r5, #0 - movge r6, #0 -_0233D550: - cmp r5, #0 - ldrne r0, [sp, #0x10] - movne r1, #1 - strneb r1, [r0, #0x1c] - cmp r6, #0 - ldrne r0, [sp, #0x10] - movne r1, #1 - strneb r1, [r0, #0x1d] - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] - b _0233D644 -_0233D580: - mov r2, #2 - ldr r0, [sp, #0x28] - mov r8, r2 - cmp sl, #0 - moveq r2, #1 - cmp r4, #0 - moveq r8, #1 - cmp sl, r0 - mov r1, #4 - mov r7, r1 - ldr r0, [sp, #0x2c] - moveq r1, #2 - cmp r4, r0 - add r0, fp, r2 - add r2, fp, r5 - sub r1, r2, r1 - moveq r7, #2 - bl DungeonRandRange - ldr r1, [sp, #0x18] - add r1, r1, r6 - mov r6, r0 - ldr r0, [sp, #0x18] - sub r1, r1, r7 - add r0, r0, r8 - bl DungeonRandRange - mov r5, r0 - ldr r0, _0233D66C ; =0x000001C2 - mul r0, sl, r0 - strh r6, [sb, r0] - add r1, sb, r0 - add r0, r6, #1 - strh r0, [r1, #4] - strh r5, [r1, #2] - add r0, r5, #1 - strh r0, [r1, #6] - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r5 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r6 - bl GetTileSafe - mov r1, #0xfe - strb r1, [r0, #7] -_0233D644: - add sl, sl, #1 -_0233D648: - ldr r0, [sp, #4] - cmp sl, r0 - blt _0233D388 - add r4, r4, #1 -_0233D658: - ldr r0, [sp, #8] - cmp r4, r0 - blt _0233D350 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233D66C: .word 0x000001C2 -_0233D670: .word 0x0237CFBC - arm_func_end CreateRoomsAndAnchors - - arm_func_start GenerateSecondaryStructures -GenerateSecondaryStructures: ; 0x0233D674 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - mov sl, r0 - mov r0, #0 - str r1, [sp] - str r2, [sp, #4] - str r0, [sp, #0x20] - b _0233E03C -_0233D694: - ldr r0, [sp, #0x20] - mov r1, #0x1e - mul r7, r0, r1 - mov r0, #0 - add r6, sl, r7 - str r0, [sp, #0x24] - b _0233E020 -_0233D6B0: - ldr r1, [sp, #0x24] - ldr r0, _0233E054 ; =0x000001C2 - mul sb, r1, r0 - add r8, r6, sb - ldrb r0, [r8, #8] - cmp r0, #0 - ldreqb r0, [r8, #0xe] - cmpeq r0, #0 - ldreqb r0, [r8, #0x12] - cmpeq r0, #0 - bne _0233E014 - ldrb r0, [r8, #0xa] - cmp r0, #0 - beq _0233E014 - ldrb r0, [r8, #0x1c] - cmp r0, #0 - bne _0233E014 - ldrb r0, [r8, #0x1d] - cmp r0, #0 - beq _0233E014 - mov r0, #6 - bl DungeonRandInt - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0233E014 -_0233D714: ; jump table - b _0233E014 ; case 0 - b _0233DE94 ; case 1 - b _0233DDC8 ; case 2 - b _0233DC9C ; case 3 - b _0233D938 ; case 4 - b _0233D72C ; case 5 -_0233D72C: - ldr r0, _0233E058 ; =0x0237CFBC - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _0233E014 - sub r1, r0, #1 - ldr r0, _0233E058 ; =0x0237CFBC - str r1, [r0, #0x18] - add r0, sl, sb - add r0, r0, r7 - bl SetSpawnFlag5 - mov r0, #2 - bl DungeonRandInt - cmp r0, #0 - mov r0, #0 - beq _0233D850 - str r0, [sp, #0x10] - mov r4, r8 - ldrsh r1, [r6, sb] - ldrsh r0, [r4, #4] - ldrsh r5, [r4, #2] - add r0, r1, r0 - add r0, r0, r0, lsr #31 - mov fp, r0, asr #1 - b _0233D7AC -_0233D78C: - mov r0, fp - mov r1, r5 - bl IsNextToHallway - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x10] - bne _0233D7B8 - add r5, r5, #1 -_0233D7AC: - ldrsh r0, [r4, #6] - cmp r5, r0 - blt _0233D78C -_0233D7B8: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _0233E014 - ldrsh r5, [r4, #2] - b _0233D7F4 -_0233D7CC: - mov r0, fp - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] -_0233D7F4: - ldrsh r0, [r4, #6] - cmp r5, r0 - blt _0233D7CC - ldrsh sb, [r4] - b _0233D83C -_0233D808: - ldrsh r5, [r4, #2] - b _0233D82C -_0233D810: - mov r0, sb - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - orr r1, r1, #0x80 - strh r1, [r0] -_0233D82C: - ldrsh r0, [r4, #6] - cmp r5, r0 - blt _0233D810 - add sb, sb, #1 -_0233D83C: - cmp sb, fp - blt _0233D808 - mov r0, #1 - strb r0, [r8, #9] - b _0233E014 -_0233D850: - str r0, [sp, #0x14] - mov r4, r8 - ldrsh r1, [r4, #2] - ldrsh r0, [r4, #6] - ldrsh r5, [r6, sb] - add r0, r1, r0 - add r0, r0, r0, lsr #31 - mov fp, r0, asr #1 - b _0233D894 -_0233D874: - mov r0, r5 - mov r1, fp - bl IsNextToHallway - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - bne _0233D8A0 - add r5, r5, #1 -_0233D894: - ldrsh r0, [r4, #4] - cmp r5, r0 - blt _0233D874 -_0233D8A0: - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _0233E014 - ldrsh r5, [r4] - b _0233D8DC -_0233D8B4: - mov r0, r5 - mov r1, fp - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] -_0233D8DC: - ldrsh r0, [r4, #4] - cmp r5, r0 - blt _0233D8B4 - ldrsh sb, [r4, #2] - b _0233D924 -_0233D8F0: - ldrsh r5, [r4] - b _0233D914 -_0233D8F8: - mov r0, r5 - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - orr r1, r1, #0x80 - strh r1, [r0] -_0233D914: - ldrsh r0, [r4, #4] - cmp r5, r0 - blt _0233D8F8 - add sb, sb, #1 -_0233D924: - cmp sb, fp - blt _0233D8F0 - mov r0, #1 - strb r0, [r8, #9] - b _0233E014 -_0233D938: - mov r1, r8 - ldrsh r4, [r6, sb] - ldrsh r3, [r1, #4] - sub r0, r3, r4 - cmp r0, #6 - ldrgesh r2, [r1, #2] - ldrgesh r1, [r1, #6] - subge r0, r1, r2 - cmpge r0, #6 - blt _0233E014 - add r0, r4, r3 - add r0, r0, r0, lsr #31 - mov r5, r0, asr #1 - ldr r0, _0233E058 ; =0x0237CFBC - add r1, r2, r1 - ldr r0, [r0, #0x18] - add r1, r1, r1, lsr #31 - mov r4, r1, asr #1 - cmp r0, #0 - beq _0233E014 - sub r1, r0, #1 - ldr r0, _0233E058 ; =0x0237CFBC - str r1, [r0, #0x18] - add r0, sl, sb - add r0, r0, r7 - bl SetSpawnFlag5 - sub r0, r4, #2 - str r0, [sp, #0xc] - sub r0, r5, #2 - ldr r1, [sp, #0xc] - str r0, [sp, #8] - bl GetTileSafe - ldrh r2, [r0] - sub fp, r5, #1 - ldr r1, [sp, #0xc] - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0] - ldr r1, [sp, #0xc] - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - mov r0, r5 - bl GetTileSafe - ldrh r2, [r0] - ldr r1, [sp, #0xc] - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - add r0, r5, #1 - bl GetTileSafe - ldrh r1, [r0] - sub sb, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #6 - strh r1, [r0] - ldr r0, [sp, #8] - mov r1, sb - bl GetTileSafe - ldrh r2, [r0] - mov r1, r4 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - ldr r0, [sp, #8] - bl GetTileSafe - ldrh r2, [r0] - add r1, r4, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - ldr r0, [sp, #8] - bl GetTileSafe - ldrh r2, [r0] - add r1, r4, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - ldr r0, [sp, #8] - bl GetTileSafe - ldrh r2, [r0] - add r1, r4, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - mov r0, fp - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] - ldrh r2, [r0] - add r1, r4, #1 - orr r2, r2, #4 - strh r2, [r0] - mov r0, r5 - bl GetTileSafe - ldrh r2, [r0] - ldr r1, [sp, #0xc] - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - add r0, r5, #1 - bl GetTileSafe - ldrh r2, [r0] - mov r1, sb - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - add r0, r5, #1 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r4 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - add r0, r5, #1 - bl GetTileSafe - ldrh r2, [r0] - add r1, r4, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #6 - strh r2, [r0] - add r0, r5, #1 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r2, [r0] - mov r1, sb - orr r2, r2, #6 - strh r2, [r0] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, sb - orr r2, r2, #4 - strh r2, [r0, #2] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, sb - orr r2, r2, #0x40 - strh r2, [r0, #2] - mov r0, r5 - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, r4 - orr r2, r2, #2 - strh r2, [r0, #2] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, r4 - orr r2, r2, #2 - strh r2, [r0, #2] - mov r0, r5 - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, sb - orr r2, r2, #2 - strh r2, [r0, #2] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, sb - orr r2, r2, #0x10 - strh r2, [r0, #2] - mov r0, r5 - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, r4 - orr r2, r2, #0x10 - strh r2, [r0, #2] - mov r0, fp - bl GetTileSafe - ldrh r2, [r0, #2] - mov r1, r4 - orr r2, r2, #0x10 - strh r2, [r0, #2] - mov r0, r5 - bl GetTileSafe - ldrh r1, [r0, #2] - orr r1, r1, #0x10 - strh r1, [r0, #2] - mov r0, #1 - strb r0, [r8, #9] - b _0233E014 -_0233DC9C: - mov r4, r8 - ldrsh r3, [r6, sb] - ldrsh r2, [r4, #4] - sub r0, r2, r3 - cmp r0, #5 - ldrgesh r1, [r4, #6] - ldrgesh r0, [r4, #2] - subge r0, r1, r0 - cmpge r0, #5 - blt _0233E014 - add r0, r3, #2 - sub r1, r2, #3 - bl DungeonRandRange - ldrsh r1, [r4, #6] - str r0, [sp, #0x28] - mov r5, r0 - ldrsh r0, [r4, #2] - sub r1, r1, #3 - add r0, r0, #2 - bl DungeonRandRange - str r0, [sp, #0x18] - ldrsh r0, [r4] - ldrsh r1, [r4, #4] - add r0, r0, #2 - sub r1, r1, #3 - bl DungeonRandRange - str r0, [sp, #0x1c] - ldrsh r0, [r4, #2] - ldrsh r1, [r4, #6] - add r0, r0, #2 - sub r1, r1, #3 - bl DungeonRandRange - mov fp, r0 - ldr r0, _0233E058 ; =0x0237CFBC - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _0233E014 - sub r1, r0, #1 - ldr r0, _0233E058 ; =0x0237CFBC - str r1, [r0, #0x18] - add r0, sl, sb - add r0, r0, r7 - bl SetSpawnFlag5 - ldr r1, [sp, #0x28] - ldr r0, [sp, #0x1c] - cmp r1, r0 - movgt r5, r0 - movgt r0, r1 - strgt r0, [sp, #0x1c] - ldr r0, [sp, #0x18] - cmp r0, fp - strgt fp, [sp, #0x18] - movgt fp, r0 - b _0233DDB0 -_0233DD74: - ldr r4, [sp, #0x18] - b _0233DDA4 -_0233DD7C: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] -_0233DDA4: - cmp r4, fp - ble _0233DD7C - add r5, r5, #1 -_0233DDB0: - ldr r0, [sp, #0x1c] - cmp r5, r0 - ble _0233DD74 - mov r0, #1 - strb r0, [r8, #9] - b _0233E014 -_0233DDC8: - mov r2, r8 - ldrsh r1, [r2, #4] - ldrsh r0, [r6, sb] - sub r0, r1, r0 - tst r0, #1 - beq _0233E014 - ldrsh r1, [r2, #6] - ldrsh r0, [r2, #2] - sub r0, r1, r0 - tst r0, #1 - ldrne r0, _0233E058 ; =0x0237CFBC - ldrne r0, [r0, #0x18] - cmpne r0, #0 - beq _0233E014 - sub r1, r0, #1 - ldr r0, _0233E058 ; =0x0237CFBC - str r1, [r0, #0x18] - add r0, sl, sb - add r0, r0, r7 - bl SetSpawnFlag5 - mov r5, #0 -_0233DE1C: - ldrsh r1, [r8, #4] - ldrsh r0, [r8] - sub r0, r1, r0 - bl DungeonRandInt - mov r4, r0 - ldrsh r1, [r8, #6] - ldrsh r0, [r8, #2] - sub r0, r1, r0 - bl DungeonRandInt - mov r2, r0 - add r0, r4, r2 - tst r0, #1 - beq _0233DE7C - ldrsh r0, [r8] - ldrsh r1, [r8, #2] - add r0, r0, r4 - add r1, r1, r2 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] -_0233DE7C: - add r5, r5, #1 - cmp r5, #0x40 - blt _0233DE1C - mov r0, #1 - strb r0, [r8, #9] - b _0233E014 -_0233DE94: - ldr r0, _0233E058 ; =0x0237CFBC - ldr r0, [r0, #0x18] - cmp r0, #0 - beq _0233E014 - sub r1, r0, #1 - ldr r0, _0233E058 ; =0x0237CFBC - str r1, [r0, #0x18] - mov r0, r8 - ldrsh r2, [r0, #4] - ldrsh r1, [r6, sb] - sub r3, r2, r1 - tst r3, #1 - beq _0233DEDC - ldrsh r2, [r0, #6] - ldrsh r1, [r0, #2] - sub r1, r2, r1 - tst r1, #1 - bne _0233DFF4 -_0233DEDC: - cmp r3, #5 - ldrsh r4, [r0] - ldrsh r3, [r0, #4] - ldrsh r2, [r0, #6] - ldrsh r1, [r0, #2] - add r0, r4, r3 - add r0, r0, r0, lsr #31 - mov r4, r0, asr #1 - add r0, r1, r2 - add r0, r0, r0, lsr #31 - mov r5, r0, asr #1 - subge r0, r2, r1 - cmpge r0, #5 - blt _0233DFCC - add r0, r4, #1 - mov r1, r5 - bl GetTileSafe - ldrh r2, [r0] - add r1, r5, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #2 - strh r2, [r0] - mov r0, r4 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r5 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #2 - strh r2, [r0] - sub r0, r4, #1 - bl GetTileSafe - ldrh r2, [r0] - sub r1, r5, #1 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #2 - strh r2, [r0] - mov r0, r4 - bl GetTileSafe - mov r1, r5 - ldrh r2, [r0] - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #2 - strh r2, [r0] - mov r0, r4 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] - b _0233E00C -_0233DFCC: - mov r0, r4 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] - b _0233E00C -_0233DFF4: - add r4, sl, sb - add r0, r4, r7 - bl SetSpawnFlag5 - add r0, r4, r7 - mov r1, #1 - bl GenerateMaze -_0233E00C: - mov r0, #1 - strb r0, [r8, #9] -_0233E014: - ldr r0, [sp, #0x24] - add r0, r0, #1 - str r0, [sp, #0x24] -_0233E020: - ldr r1, [sp, #0x24] - ldr r0, [sp] - cmp r1, r0 - blt _0233D6B0 - ldr r0, [sp, #0x20] - add r0, r0, #1 - str r0, [sp, #0x20] -_0233E03C: - ldr r1, [sp, #0x20] - ldr r0, [sp, #4] - cmp r1, r0 - blt _0233D694 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233E054: .word 0x000001C2 -_0233E058: .word 0x0237CFBC - arm_func_end GenerateSecondaryStructures - - arm_func_start AssignGridCellConnections -AssignGridCellConnections: ; 0x0233E05C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r4, [sp, #0x3c] - mov r8, r1 - mov r1, r4 - ldrb r1, [r1, #5] - mov sb, r0 - mov r0, #4 - str r4, [sp, #0x3c] - mov fp, r2 - mov r7, r3 - ldr r5, [sp, #0x38] - str r1, [sp, #4] - bl DungeonRandInt - mov r6, r0 - mov sl, #0 - b _0233E208 -_0233E0A0: - mov r0, #8 - bl DungeonRandInt - mov r4, r0 - mov r0, #4 - bl DungeonRandInt - mov lr, #1 - cmp r4, #4 - movlt r6, r0 - sub r1, r8, #1 - sub r0, fp, #1 - mov ip, lr - mov r3, #0 -_0233E0D0: - and r2, r6, #3 - mov r4, r3 - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _0233E130 -_0233E0E4: ; jump table - b _0233E0F4 ; case 0 - b _0233E104 ; case 1 - b _0233E114 ; case 2 - b _0233E124 ; case 3 -_0233E0F4: - cmp r7, r1 - movlt r4, ip - addge r6, r6, #1 - b _0233E130 -_0233E104: - cmp r5, #0 - movgt r4, lr - addle r6, r6, #1 - b _0233E130 -_0233E114: - cmp r7, #0 - movgt r4, #1 - addle r6, r6, #1 - b _0233E130 -_0233E124: - cmp r5, r0 - movlt r4, #1 - addge r6, r6, #1 -_0233E130: - cmp r4, #0 - beq _0233E0D0 - and r0, r6, #3 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0233E204 -_0233E148: ; jump table - b _0233E158 ; case 0 - b _0233E184 ; case 1 - b _0233E1B0 ; case 2 - b _0233E1DC ; case 3 -_0233E158: - ldr r0, _0233E438 ; =0x000001C2 - mov r1, #0x1e - mla r0, r7, r0, sb - mla r1, r5, r1, r0 - ldrb r0, [r1, #0x1ca] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r1, #0x16] - streqb r0, [r1, #0x1d7] - addeq r7, r7, #1 - b _0233E204 -_0233E184: - ldr r0, _0233E438 ; =0x000001C2 - mov r1, #0x1e - mla r0, r7, r0, sb - mla r1, r5, r1, r0 - ldrb r0, [r1, #-0x16] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r1, #0x13] - streqb r0, [r1, #-0xa] - subeq r5, r5, #1 - b _0233E204 -_0233E1B0: - ldr r0, _0233E438 ; =0x000001C2 - mov r1, #0x1e - mla r0, r7, r0, sb - mla r1, r5, r1, r0 - ldrb r0, [r1, #-0x1ba] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r1, #0x15] - streqb r0, [r1, #-0x1ac] - subeq r7, r7, #1 - b _0233E204 -_0233E1DC: - ldr r0, _0233E438 ; =0x000001C2 - mov r1, #0x1e - mla r0, r7, r0, sb - mla r1, r5, r1, r0 - ldrb r0, [r1, #0x26] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r1, #0x14] - streqb r0, [r1, #0x31] - addeq r5, r5, #1 -_0233E204: - add sl, sl, #1 -_0233E208: - ldr r0, [sp, #4] - cmp sl, r0 - blt _0233E0A0 - ldr r0, [sp, #0x3c] - ldrb r0, [r0, #0xb] - cmp r0, #0 - bne _0233E430 -_0233E224: - sub r0, r8, #1 - mov r6, #0 - str r0, [sp, #8] - sub r0, fp, #1 - str r6, [sp] - str r0, [sp, #0xc] - b _0233E41C -_0233E240: - ldr r0, _0233E438 ; =0x000001C2 - mov r7, #0 - mla sl, r6, r0, sb - b _0233E410 -_0233E250: - mov r1, #0x1e - mla r5, r7, r1, sl - ldrb r1, [r5, #8] - mov r0, #0 - cmp r1, #0 - ldreqb r1, [r5, #0xa] - cmpeq r1, #0 - bne _0233E40C - ldrb r1, [r5, #0x13] - cmp r1, #0 - ldrb r1, [r5, #0x14] - addne r0, r0, #1 - cmp r1, #0 - ldrb r1, [r5, #0x15] - addne r0, r0, #1 - cmp r1, #0 - ldrb r1, [r5, #0x16] - addne r0, r0, #1 - cmp r1, #0 - addne r0, r0, #1 - cmp r0, #1 - bne _0233E40C - mov r4, #0 - mov r0, #4 - bl DungeonRandInt - mov r1, r4 - b _0233E370 -_0233E2BC: - and r2, r0, #3 - mov r4, #0 - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _0233E364 -_0233E2D0: ; jump table - b _0233E2E0 ; case 0 - b _0233E304 ; case 1 - b _0233E324 ; case 2 - b _0233E344 ; case 3 -_0233E2E0: - ldr r2, [sp, #8] - cmp r6, r2 - bge _0233E2FC - ldrb r2, [r5, #0x16] - cmp r2, #0 - moveq r4, #1 - beq _0233E364 -_0233E2FC: - add r0, r0, #1 - b _0233E364 -_0233E304: - cmp r7, #0 - ble _0233E31C - ldrb r2, [r5, #0x13] - cmp r2, #0 - moveq r4, #1 - beq _0233E364 -_0233E31C: - add r0, r0, #1 - b _0233E364 -_0233E324: - cmp r6, #0 - ble _0233E33C - ldrb r2, [r5, #0x15] - cmp r2, #0 - moveq r4, #1 - beq _0233E364 -_0233E33C: - add r0, r0, #1 - b _0233E364 -_0233E344: - ldr r2, [sp, #0xc] - cmp r7, r2 - bge _0233E360 - ldrb r2, [r5, #0x14] - cmp r2, #0 - moveq r4, #1 - beq _0233E364 -_0233E360: - add r0, r0, #1 -_0233E364: - cmp r4, #0 - bne _0233E378 - add r1, r1, #1 -_0233E370: - cmp r1, #8 - blt _0233E2BC -_0233E378: - cmp r4, #0 - beq _0233E40C - and r0, r0, #3 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0233E40C -_0233E390: ; jump table - b _0233E3A0 ; case 0 - b _0233E3BC ; case 1 - b _0233E3D8 ; case 2 - b _0233E3F4 ; case 3 -_0233E3A0: - ldrb r0, [r5, #0x1ca] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r5, #0x16] - streqb r0, [r5, #0x1d7] - streq r0, [sp] - b _0233E40C -_0233E3BC: - ldrb r0, [r5, #0x1ca] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r5, #0x13] - streqb r0, [r5, #-0xa] - streq r0, [sp] - b _0233E40C -_0233E3D8: - ldrb r0, [r5, #0x1ca] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r5, #0x15] - streqb r0, [r5, #-0x1ac] - streq r0, [sp] - b _0233E40C -_0233E3F4: - ldrb r0, [r5, #0x1ca] - cmp r0, #0 - moveq r0, #1 - streqb r0, [r5, #0x14] - streqb r0, [r5, #0x31] - streq r0, [sp] -_0233E40C: - add r7, r7, #1 -_0233E410: - cmp r7, fp - blt _0233E250 - add r6, r6, #1 -_0233E41C: - cmp r6, r8 - blt _0233E240 - ldr r0, [sp] - cmp r0, #0 - bne _0233E224 -_0233E430: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233E438: .word 0x000001C2 - arm_func_end AssignGridCellConnections - - arm_func_start CreateGridCellConnections -CreateGridCellConnections: ; 0x0233E43C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x48 - str r0, [sp, #0xc] - str r1, [sp, #0x10] - str r2, [sp, #0x14] - mov sb, r3 - ldr r8, [sp, #0x70] - mov r5, #0 - b _0233E510 -_0233E460: - ldr r1, _0233ED30 ; =0x000001C2 - ldr r0, [sp, #0xc] - mov r6, #0 - mla r7, r5, r1, r0 - ldr r0, [sp, #0x10] - mov r3, r6 - sub r1, r0, #1 - ldr r0, [sp, #0x14] - mov r2, r6 - sub r0, r0, #1 - mov ip, r6 - mov lr, r6 - mov r4, r6 - b _0233E500 -_0233E498: - mov sl, #0x1e - mla sl, r6, sl, r7 - ldrb fp, [sl, #8] - cmp fp, #0 - strneb r4, [sl, #0x17] - strneb r4, [sl, #0x18] - strneb r4, [sl, #0x19] - strneb r4, [sl, #0x1a] - bne _0233E4FC - cmp r5, #0 - strleb r3, [sl, #0x15] - cmp r6, #0 - strleb r2, [sl, #0x13] - cmp r5, r1 - strgeb ip, [sl, #0x16] - cmp r6, r0 - strgeb lr, [sl, #0x14] - ldrb fp, [sl, #0x13] - strb fp, [sl, #0x17] - ldrb fp, [sl, #0x14] - strb fp, [sl, #0x18] - ldrb fp, [sl, #0x15] - strb fp, [sl, #0x19] - ldrb fp, [sl, #0x16] - strb fp, [sl, #0x1a] -_0233E4FC: - add r6, r6, #1 -_0233E500: - ldr sl, [sp, #0x14] - cmp r6, sl - blt _0233E498 - add r5, r5, #1 -_0233E510: - ldr r0, [sp, #0x10] - cmp r5, r0 - blt _0233E460 - mov r6, #0 - b _0233E800 -_0233E524: - ldr r1, _0233ED30 ; =0x000001C2 - ldr r0, [sp, #0xc] - mov r7, #0 - mla r4, r6, r1, r0 - add r0, sb, r6, lsl #2 - str r0, [sp, #0x2c] - b _0233E7F0 -_0233E540: - mov r0, #0x1e - mla r5, r7, r0, r4 - ldrb r0, [r5, #8] - cmp r0, #0 - bne _0233E7EC - ldrb r0, [r5, #0xa] - cmp r0, #0 - ldreqsh fp, [r5] - ldreqsh sl, [r5, #2] - beq _0233E598 - ldrsh r0, [r5] - ldrsh r1, [r5, #4] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - mov fp, r0 - ldrsh r0, [r5, #2] - ldrsh r1, [r5, #6] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - mov sl, r0 -_0233E598: - ldrb r0, [r5, #0x17] - cmp r0, #0 - beq _0233E624 - ldrb r0, [r5, #-0x16] - cmp r0, #0 - bne _0233E60C - ldrb r0, [r5, #-0x14] - cmp r0, #0 - ldreqsh r2, [r5, #-0x1e] - beq _0233E5D8 - ldrsh r0, [r5, #-0x1e] - ldrsh r1, [r5, #-0x1a] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - mov r2, r0 -_0233E5D8: - mov r0, #1 - str r0, [sp] - mov r0, #0x1e - mla r3, r7, r0, r4 - ldr r1, [sb, r6, lsl #2] - mov r0, fp - str r1, [sp, #4] - ldr r1, [r8, r7, lsl #2] - str r1, [sp, #8] - ldrsh r1, [r3, #2] - ldrsh r3, [r3, #-0x18] - sub r3, r3, #1 - bl CreateHallway -_0233E60C: - mov r0, #0 - strb r0, [r5, #0x17] - strb r0, [r5, #-6] - mov r0, #1 - strb r0, [r5, #0xb] - strb r0, [r5, #-0x13] -_0233E624: - ldrb r0, [r5, #0x18] - cmp r0, #0 - beq _0233E6B8 - ldrb r0, [r5, #0x26] - cmp r0, #0 - bne _0233E6A0 - ldrb r0, [r5, #0x28] - cmp r0, #0 - ldreqsh r2, [r5, #0x1e] - beq _0233E664 - ldrsh r0, [r5, #0x1e] - ldrsh r1, [r5, #0x22] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - mov r2, r0 -_0233E664: - mov r1, #1 - str r1, [sp] - mov r0, fp - mov r1, #0x1e - ldr fp, [sb, r6, lsl #2] - mla r1, r7, r1, r4 - add r3, r8, r7, lsl #2 - str fp, [sp, #4] - ldr r3, [r3, #4] - sub r3, r3, #1 - str r3, [sp, #8] - ldrsh fp, [r1, #6] - ldrsh r3, [r1, #0x20] - sub r1, fp, #1 - bl CreateHallway -_0233E6A0: - mov r0, #0 - strb r0, [r5, #0x18] - strb r0, [r5, #0x35] - mov r0, #1 - strb r0, [r5, #0xb] - strb r0, [r5, #0x29] -_0233E6B8: - ldrb r0, [r5, #0x19] - cmp r0, #0 - beq _0233E750 - ldrb r0, [r5, #-0x1ba] - cmp r0, #0 - bne _0233E738 - ldrb r0, [r5, #-0x1b8] - cmp r0, #0 - sub r0, r5, #0x100 - ldreqsh r3, [r0, #-0xc0] - beq _0233E6FC - ldrsh r1, [r0, #-0xbc] - ldrsh r2, [r0, #-0xc0] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - mov r3, r0 -_0233E6FC: - mov r0, #0 - str r0, [sp] - mov r0, #0x1e - mul r0, r7, r0 - ldr fp, [sb, r6, lsl #2] - add r1, r4, r0 - str fp, [sp, #4] - ldr fp, [r8, r7, lsl #2] - sub r2, r1, #0x100 - str fp, [sp, #8] - ldrsh r2, [r2, #-0xc2] - ldrsh r0, [r4, r0] - mov r1, sl - sub r2, r2, #1 - bl CreateHallway -_0233E738: - mov r0, #0 - strb r0, [r5, #0x19] - strb r0, [r5, #-0x1a8] - mov r0, #1 - strb r0, [r5, #0xb] - strb r0, [r5, #-0x1b7] -_0233E750: - ldrb r0, [r5, #0x1a] - cmp r0, #0 - beq _0233E7EC - ldrb r0, [r5, #0x1ca] - cmp r0, #0 - bne _0233E7D4 - ldrb r0, [r5, #0x1cc] - cmp r0, #0 - add r0, r5, #0x100 - ldreqsh r3, [r0, #0xc4] - beq _0233E794 - ldrsh r1, [r0, #0xc8] - ldrsh r2, [r0, #0xc4] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - mov r3, r0 -_0233E794: - mov r0, #0 - str r0, [sp] - mov r0, #0x1e - ldr r2, [sp, #0x2c] - mov r1, sl - ldr sl, [r2, #4] - mla r0, r7, r0, r4 - sub sl, sl, #1 - str sl, [sp, #4] - ldr sl, [r8, r7, lsl #2] - add r2, r0, #0x100 - str sl, [sp, #8] - ldrsh r0, [r0, #4] - ldrsh r2, [r2, #0xc2] - sub r0, r0, #1 - bl CreateHallway -_0233E7D4: - mov r0, #0 - strb r0, [r5, #0x1a] - strb r0, [r5, #0x1db] - mov r0, #1 - strb r0, [r5, #0xb] - strb r0, [r5, #0x1cd] -_0233E7EC: - add r7, r7, #1 -_0233E7F0: - ldr r0, [sp, #0x14] - cmp r7, r0 - blt _0233E540 - add r6, r6, #1 -_0233E800: - ldr r0, [sp, #0x10] - cmp r6, r0 - blt _0233E524 - ldrb r0, [sp, #0x74] - cmp r0, #0 - bne _0233ED28 - mov r7, #0 - b _0233ED1C -_0233E820: - ldr r1, _0233ED30 ; =0x000001C2 - ldr r0, [sp, #0xc] - mov r8, #0 - mla r0, r7, r1, r0 - str r0, [sp, #0x20] - ldr r0, [sp, #0x14] - sub r0, r0, #2 - str r0, [sp, #0x40] - ldr r0, [sp, #0x10] - sub r0, r0, #2 - str r0, [sp, #0x38] - b _0233ED0C -_0233E850: - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #5 - bge _0233ED08 - ldr r0, [sp, #0x20] - mov r1, #0x1e - mla r6, r8, r1, r0 - ldrb r0, [r6, #8] - cmp r0, #0 - bne _0233ED08 - ldrb r0, [r6, #0xb] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #0x12] - cmp r0, #0 - ldreqb r0, [r6, #9] - cmpeq r0, #0 - bne _0233ED08 - ldrb r0, [r6, #0xa] - cmp r0, #0 - beq _0233ED08 - mov r0, #4 - bl DungeonRandInt - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0233ED08 -_0233E8B8: ; jump table - b _0233E8C8 ; case 0 - b _0233E9DC ; case 1 - b _0233EAE4 ; case 2 - b _0233EBFC ; case 3 -_0233E8C8: - cmp r7, #1 - blt _0233ED08 - ldrb r0, [r6, #-0x1b7] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #-0x1ba] - cmp r0, #0 - bne _0233ED08 - ldrb r0, [r6, #-0x1b8] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #-0x1b9] - cmp r0, #0 - ldreqb r0, [r6, #-0x1b0] - cmpeq r0, #0 - bne _0233ED08 - sub r1, r6, #0x100 - ldrsh r0, [r1, #-0xc2] - ldrsh fp, [r1, #-0xc0] - ldrsh r1, [r6, #2] - str r0, [sp, #0x28] - sub r0, r6, #0x100 - ldrsh sb, [r0, #-0xbc] - ldrsh r2, [r6, #6] - cmp fp, r1 - movge fp, r1 - cmp sb, r2 - ldrsh r0, [r6] - ldrsh sl, [r6, #4] - movle sb, r2 - bl GetTile - ldrb r0, [r0, #7] - ldr r5, [sp, #0x28] - and r0, r0, #0xff - str r0, [sp, #0x30] - b _0233E99C -_0233E958: - mov r4, fp - b _0233E990 -_0233E960: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - ldr r1, [sp, #0x30] - strb r1, [r0, #7] -_0233E990: - cmp r4, sb - blt _0233E960 - add r5, r5, #1 -_0233E99C: - cmp r5, sl - blt _0233E958 - ldr r0, [sp, #0x28] - sub r1, r6, #0x100 - strh r0, [r1, #-0xc2] - strh sl, [r1, #-0xbe] - strh fp, [r1, #-0xc0] - strh sb, [r1, #-0xbc] - mov r0, #1 - strb r0, [r6, #0x12] - strb r0, [r6, #-0x1b0] - mov r0, #0 - strb r0, [r6, #0xb] - mov r0, #1 - strb r0, [r6, #0x11] - b _0233ED08 -_0233E9DC: - cmp r8, #1 - blt _0233ED08 - ldrb r0, [r6, #-0x13] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #-0x16] - cmp r0, #0 - bne _0233ED08 - ldrb r0, [r6, #-0x14] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #-0x15] - cmp r0, #0 - ldreqb r0, [r6, #-0xc] - cmpeq r0, #0 - bne _0233ED08 - ldrsh r1, [r6, #-0x1c] - ldrsh r0, [r6] - ldrsh fp, [r6, #-0x1e] - str r1, [sp, #0x24] - ldrsh r1, [r6, #4] - ldrsh sb, [r6, #-0x1a] - cmp fp, r0 - movge fp, r0 - cmp sb, r1 - movle sb, r1 - ldrsh r1, [r6, #2] - ldrsh sl, [r6, #6] - bl GetTile - ldrb r0, [r0, #7] - mov r5, fp - and r0, r0, #0xff - str r0, [sp, #0x34] - b _0233EAA8 -_0233EA64: - ldr r4, [sp, #0x24] - b _0233EA9C -_0233EA6C: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - ldr r1, [sp, #0x34] - strb r1, [r0, #7] -_0233EA9C: - cmp r4, sl - blt _0233EA6C - add r5, r5, #1 -_0233EAA8: - cmp r5, sb - blt _0233EA64 - strh fp, [r6, #-0x1e] - ldr r0, [sp, #0x24] - strh sb, [r6, #-0x1a] - strh r0, [r6, #-0x1c] - strh sl, [r6, #-0x18] - mov r0, #1 - strb r0, [r6, #0x12] - strb r0, [r6, #-0xc] - mov r0, #0 - strb r0, [r6, #0xb] - mov r0, #1 - strb r0, [r6, #0x11] - b _0233ED08 -_0233EAE4: - ldr r0, [sp, #0x38] - cmp r7, r0 - bgt _0233ED08 - ldrb r0, [r6, #0x1cd] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #0x1ca] - cmp r0, #0 - bne _0233ED08 - ldrb r0, [r6, #0x1cc] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #0x1cb] - cmp r0, #0 - ldreqb r0, [r6, #0x1d4] - cmpeq r0, #0 - bne _0233ED08 - add r0, r6, #0x100 - ldrsh sl, [r6] - ldrsh r0, [r0, #0xc4] - str r0, [sp, #0x1c] - ldrsh r1, [r6, #2] - mov r0, r0 - cmp r1, r0 - strlt r1, [sp, #0x1c] - add r0, r6, #0x100 - ldrsh fp, [r0, #0xc6] - ldrsh r0, [r0, #0xc8] - ldrsh sb, [r6, #6] - cmp sb, r0 - movle sb, r0 - mov r0, sl - bl GetTile - ldrb r0, [r0, #7] - mov r5, sl - and r0, r0, #0xff - str r0, [sp, #0x3c] - b _0233EBC0 -_0233EB7C: - ldr r4, [sp, #0x1c] - b _0233EBB4 -_0233EB84: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - ldr r1, [sp, #0x3c] - strb r1, [r0, #7] -_0233EBB4: - cmp r4, sb - blt _0233EB84 - add r5, r5, #1 -_0233EBC0: - cmp r5, fp - blt _0233EB7C - strh sl, [r6] - strh fp, [r6, #4] - ldr r0, [sp, #0x1c] - strh r0, [r6, #2] - strh sb, [r6, #6] - mov r0, #1 - strb r0, [r6, #0x1d4] - strb r0, [r6, #0x12] - mov r0, #0 - strb r0, [r6, #0x1cd] - mov r0, #1 - strb r0, [r6, #0x1d3] - b _0233ED08 -_0233EBFC: - ldr r0, [sp, #0x40] - cmp r8, r0 - bgt _0233ED08 - ldrb r0, [r6, #0x29] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #0x26] - cmp r0, #0 - bne _0233ED08 - ldrb r0, [r6, #0x28] - cmp r0, #0 - beq _0233ED08 - ldrb r0, [r6, #0x27] - cmp r0, #0 - ldreqb r0, [r6, #0x30] - cmpeq r0, #0 - bne _0233ED08 - ldrsh r0, [r6, #0x1e] - str r0, [sp, #0x18] - ldrsh r0, [r6] - ldr r1, [sp, #0x18] - cmp r0, r1 - strlt r0, [sp, #0x18] - ldrsh sl, [r6, #2] - ldrsh r1, [r6, #0x22] - ldrsh sb, [r6, #4] - ldrsh fp, [r6, #0x24] - cmp sb, r1 - movle sb, r1 - mov r1, sl - bl GetTile - ldrb r0, [r0, #7] - ldr r5, [sp, #0x18] - and r0, r0, #0xff - str r0, [sp, #0x44] - b _0233ECD0 -_0233EC8C: - mov r4, sl - b _0233ECC4 -_0233EC94: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - ldr r1, [sp, #0x44] - strb r1, [r0, #7] -_0233ECC4: - cmp r4, fp - blt _0233EC94 - add r5, r5, #1 -_0233ECD0: - cmp r5, sb - blt _0233EC8C - ldr r0, [sp, #0x18] - strh r0, [r6] - strh sb, [r6, #4] - strh sl, [r6, #2] - strh fp, [r6, #6] - mov r0, #1 - strb r0, [r6, #0x30] - strb r0, [r6, #0x12] - mov r0, #0 - strb r0, [r6, #0x29] - mov r0, #1 - strb r0, [r6, #0x2f] -_0233ED08: - add r8, r8, #1 -_0233ED0C: - ldr r0, [sp, #0x14] - cmp r8, r0 - blt _0233E850 - add r7, r7, #1 -_0233ED1C: - ldr r0, [sp, #0x10] - cmp r7, r0 - blt _0233E820 -_0233ED28: - add sp, sp, #0x48 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233ED30: .word 0x000001C2 - arm_func_end CreateGridCellConnections - - arm_func_start GenerateRoomImperfections -GenerateRoomImperfections: ; 0x0233ED34 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - str r0, [sp] - str r1, [sp, #4] - str r2, [sp, #8] - mov fp, #0 - b _0233F100 -_0233ED50: - ldr r1, _0233F114 ; =0x000001C2 - ldr r0, [sp] - mov sl, #0 - mla r0, fp, r1, r0 - str r0, [sp, #0xc] - mvn r0, #0 - str r0, [sp, #0x30] - b _0233F0F0 -_0233ED70: - ldr r0, [sp, #0xc] - mov r1, #0x1e - mla sb, sl, r1, r0 - ldrb r0, [sb, #8] - cmp r0, #0 - ldreqb r0, [sb, #0x11] - cmpeq r0, #0 - ldreqb r0, [sb, #0x12] - cmpeq r0, #0 - bne _0233F0EC - ldrb r0, [sb, #0xb] - cmp r0, #0 - ldrneb r0, [sb, #0xa] - cmpne r0, #0 - beq _0233F0EC - ldrb r0, [sb, #9] - cmp r0, #0 - ldreqb r0, [sb, #0x10] - cmpeq r0, #0 - bne _0233F0EC - ldrb r0, [sb, #0x1c] - cmp r0, #0 - beq _0233F0EC - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x3c - blt _0233F0EC - ldrsh r3, [sb, #4] - ldrsh r2, [sb] - ldrsh r1, [sb, #6] - ldrsh r0, [sb, #2] - sub r2, r3, r2 - sub r0, r1, r0 - add r1, r2, r0 - mov r0, r1, asr #1 - add r0, r1, r0, lsr #30 - movs r0, r0, asr #2 - str r0, [sp, #0x24] - moveq r0, #1 - streq r0, [sp, #0x24] - mov r0, #0 - str r0, [sp, #0x2c] - b _0233F0DC -_0233EE1C: - mov r4, #0 -_0233EE20: - mov r0, #4 - bl DungeonRandInt - str r0, [sp, #0x20] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0233EE48 -_0233EE38: ; jump table - b _0233EE48 ; case 0 - b _0233EE70 ; case 1 - b _0233EE9C ; case 2 - b _0233EECC ; case 3 -_0233EE48: - cmp r4, #0 - movne r0, #1 - strne r0, [sp, #0x28] - movne r5, #0 - moveq r0, #0 - ldrsh r8, [sb] - ldrsh r7, [sb, #2] - streq r0, [sp, #0x28] - moveq r5, #1 - b _0233EEF4 -_0233EE70: - ldrsh r0, [sb, #4] - cmp r4, #0 - movne r5, #1 - sub r8, r0, #1 - movne r0, #0 - strne r0, [sp, #0x28] - ldreq r0, [sp, #0x30] - ldrsh r7, [sb, #2] - streq r0, [sp, #0x28] - moveq r5, #0 - b _0233EEF4 -_0233EE9C: - ldrsh r0, [sb, #6] - cmp r4, #0 - ldrsh r1, [sb, #4] - sub r7, r0, #1 - ldrne r0, [sp, #0x30] - movne r5, #0 - strne r0, [sp, #0x28] - moveq r0, #0 - sub r8, r1, #1 - streq r0, [sp, #0x28] - ldreq r5, [sp, #0x30] - b _0233EEF4 -_0233EECC: - ldrsh r0, [sb, #6] - cmp r4, #0 - ldrne r5, [sp, #0x30] - sub r7, r0, #1 - movne r0, #0 - strne r0, [sp, #0x28] - moveq r0, #1 - ldrsh r8, [sb] - streq r0, [sp, #0x28] - moveq r5, #0 -_0233EEF4: - mov r6, #0 - b _0233F0BC -_0233EEFC: - ldrsh r0, [sb] - cmp r8, r0 - blt _0233F0C4 - ldrsh r0, [sb, #4] - cmp r8, r0 - bge _0233F0C4 - ldrsh r0, [sb, #2] - cmp r7, r0 - blt _0233F0C4 - ldrsh r0, [sb, #6] - cmp r7, r0 - bge _0233F0C4 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233F0AC - mov r5, #0 - b _0233F014 -_0233EF50: - ldr r0, _0233F118 ; =0x0235171C - mov r1, r5, lsl #2 - ldrsh r2, [r0, r1] - add r0, r0, r5, lsl #2 - ldrsh r1, [r0, #2] - add r0, r8, r2 - str r0, [sp, #0x1c] - mov r0, #0 - str r0, [sp, #0x10] - add r0, r7, r1 - str r0, [sp, #0x18] - ldr r6, [sp, #0x30] - b _0233EFFC -_0233EF84: - ldr r0, [sp, #0x30] - str r0, [sp, #0x14] - b _0233EFE0 -_0233EF90: - ldr r1, [sp, #0x1c] - ldr r0, [sp, #0x14] - add r0, r1, r0 - ldr r1, [sp, #0x18] - add r1, r1, r6 - bl GetTile - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #1 - bne _0233EFD4 - ldrb r0, [r0, #7] - cmp r0, #0xff - moveq r0, #1 - streq r0, [sp, #0x10] - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _0233EFEC -_0233EFD4: - ldr r0, [sp, #0x14] - add r0, r0, #1 - str r0, [sp, #0x14] -_0233EFE0: - ldr r0, [sp, #0x14] - cmp r0, #1 - ble _0233EF90 -_0233EFEC: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _0233F004 - add r6, r6, #1 -_0233EFFC: - cmp r6, #1 - ble _0233EF84 -_0233F004: - ldr r0, [sp, #0x10] - cmp r0, #0 - bne _0233F01C - add r5, r5, #1 -_0233F014: - cmp r5, #8 - blt _0233EF50 -_0233F01C: - cmp r5, #8 - bne _0233F0C4 - ldr r1, _0233F11C ; =0x02353010 - ldr r0, [sp, #0x20] - mov r5, #0 - add r6, r1, r0, lsl #3 - b _0233F080 -_0233F038: - ldr r0, _0233F118 ; =0x0235171C - mov r1, r5, lsl #2 - ldrsh r2, [r0, r1] - add r0, r0, r5, lsl #2 - ldrsh r1, [r0, #2] - add r0, r8, r2 - add r1, r7, r1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r1, r0, #0xff - ldrb r0, [r5, r6] - cmp r1, r0 - bne _0233F088 - add r5, r5, #2 -_0233F080: - cmp r5, #8 - blt _0233F038 -_0233F088: - cmp r5, #8 - bne _0233F0C4 - mov r0, r8 - mov r1, r7 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - b _0233F0C4 -_0233F0AC: - ldr r0, [sp, #0x28] - add r7, r7, r5 - add r8, r8, r0 - add r6, r6, #1 -_0233F0BC: - cmp r6, #0xa - blt _0233EEFC -_0233F0C4: - add r4, r4, #1 - cmp r4, #2 - blt _0233EE20 - ldr r0, [sp, #0x2c] - add r0, r0, #1 - str r0, [sp, #0x2c] -_0233F0DC: - ldr r1, [sp, #0x2c] - ldr r0, [sp, #0x24] - cmp r1, r0 - blt _0233EE1C -_0233F0EC: - add sl, sl, #1 -_0233F0F0: - ldr r0, [sp, #8] - cmp sl, r0 - blt _0233ED70 - add fp, fp, #1 -_0233F100: - ldr r0, [sp, #4] - cmp fp, r0 - blt _0233ED50 - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233F114: .word 0x000001C2 -_0233F118: .word 0x0235171C -_0233F11C: .word 0x02353010 - arm_func_end GenerateRoomImperfections - - arm_func_start CreateHallway -CreateHallway: ; 0x0233F120 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldrb r6, [sp, #0x28] - mov sl, r0 - ldr r0, [sp, #0x30] - mov sb, r1 - cmp r6, #0 - mov r8, r2 - mov r7, r3 - mov r4, sl - mov r5, sb - ldr fp, [sp, #0x2c] - str r0, [sp, #0x30] - mov r6, #0 - beq _0233F328 - b _0233F1C4 -_0233F15C: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F1AC - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F1B4 -_0233F1AC: - cmp sb, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F1B4: - ldr r0, [sp, #0x30] - cmp sb, r0 - addlt sb, sb, #1 - subge sb, sb, #1 -_0233F1C4: - ldr r0, [sp, #0x30] - cmp sb, r0 - bne _0233F15C - mov r6, #0 - b _0233F240 -_0233F1D8: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F228 - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F234 -_0233F228: - cmp sl, r4 - cmpeq sb, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F234: - cmp sl, r8 - addlt sl, sl, #1 - subge sl, sl, #1 -_0233F240: - cmp sl, r8 - bne _0233F1D8 - mov r6, #0 - b _0233F2B8 -_0233F250: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F2A0 - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F2AC -_0233F2A0: - cmp sl, r4 - cmpeq sb, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F2AC: - cmp sb, r7 - addlt sb, sb, #1 - subge sb, sb, #1 -_0233F2B8: - cmp sb, r7 - bne _0233F250 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F2C4: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F314 - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F31C -_0233F314: - cmp sl, r4 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F31C: - cmp sl, fp - addlt sl, sl, #1 - subge sl, sl, #1 -_0233F328: - cmp sl, fp - bne _0233F2C4 - mov r6, #0 - b _0233F3A0 -_0233F338: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F388 - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F394 -_0233F388: - cmp sl, r4 - cmpeq sb, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F394: - cmp sb, r7 - addlt sb, sb, #1 - subge sb, sb, #1 -_0233F3A0: - cmp sb, r7 - bne _0233F338 - mov r6, #0 - b _0233F418 -_0233F3B0: - cmp r6, #0x38 - add r6, r6, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _0233F400 - mov r0, sl - mov r1, sb - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233F40C -_0233F400: - cmp sl, r4 - cmpeq sb, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0233F40C: - cmp sl, r8 - addlt sl, sl, #1 - subge sl, sl, #1 -_0233F418: - cmp sl, r8 - bne _0233F3B0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end CreateHallway - - arm_func_start EnsureConnectedGrid -EnsureConnectedGrid: ; 0x0233F424 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x2c - str r0, [sp, #0xc] - mov r7, r1 - mov fp, r2 - mov r6, r3 - ldr r5, [sp, #0x50] - mov r8, #0 - b _0233F818 -_0233F448: - ldr r1, _0233F8FC ; =0x000001C2 - ldr r0, [sp, #0xc] - mov r4, #0 - mla sb, r8, r1, r0 - sub r0, fp, #1 - str r0, [sp, #0x20] - add r0, r6, r8, lsl #2 - str r0, [sp, #0x28] - sub r0, r7, #1 - str r0, [sp, #0x24] - b _0233F80C -_0233F474: - mov r0, #0x1e - mla sl, r4, r0, sb - ldrb r0, [sl, #8] - cmp r0, #0 - ldreqb r0, [sl, #0x11] - cmpeq r0, #0 - ldreqb r0, [sl, #0xb] - cmpeq r0, #0 - bne _0233F808 - ldrb r0, [sl, #0xa] - cmp r0, #0 - beq _0233F7CC - ldrb r0, [sl, #9] - cmp r0, #0 - bne _0233F7CC - ldrsh r0, [sl] - ldrsh r1, [sl, #4] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - str r0, [sp, #0x1c] - ldrsh r0, [sl, #2] - ldrsh r1, [sl, #6] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - str r0, [sp, #0x18] - cmp r4, #0 - ble _0233F590 - ldrb r0, [sl, #-0x16] - cmp r0, #0 - ldreqb r0, [sl, #-0xc] - cmpeq r0, #0 - bne _0233F590 - ldrb r0, [sl, #-0x13] - cmp r0, #0 - beq _0233F590 - ldrb r0, [sl, #-0x14] - cmp r0, #0 - ldrsh r0, [sl, #-0x1e] - streq r0, [sp, #0x14] - beq _0233F544 - ldrsh r1, [sl, #-0x1a] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - str r0, [sp, #0x14] - ldrsh r0, [sl, #-0x1c] - ldrsh r1, [sl, #-0x18] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange -_0233F544: - mov r1, #1 - str r1, [sp] - mov r1, #0x1e - mla sl, r4, r1, sb - ldr r1, [r6, r8, lsl #2] - ldr r0, [sp, #0x1c] - str r1, [sp, #4] - ldr r1, [r5, r4, lsl #2] - ldr r2, [sp, #0x14] - str r1, [sp, #8] - ldrsh r3, [sl, #-0x18] - ldrsh r1, [sl, #2] - sub r3, r3, #1 - bl CreateHallway - mov r0, #1 - strb r0, [sl, #0xb] - strb r0, [sl, #0x13] - strb r0, [sl, #-0xa] - b _0233F808 -_0233F590: - ldr r0, [sp, #0x20] - cmp r4, r0 - bge _0233F64C - ldrb r0, [sl, #0x26] - cmp r0, #0 - ldreqb r0, [sl, #0x30] - cmpeq r0, #0 - bne _0233F64C - ldrb r0, [sl, #0x29] - cmp r0, #0 - beq _0233F64C - ldrb r0, [sl, #0x28] - cmp r0, #0 - ldrsh r0, [sl, #0x1e] - streq r0, [sp, #0x10] - beq _0233F5F8 - ldrsh r1, [sl, #0x22] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange - str r0, [sp, #0x10] - ldrsh r0, [sl, #0x20] - ldrsh r1, [sl, #0x24] - add r0, r0, #1 - sub r1, r1, #1 - bl DungeonRandRange -_0233F5F8: - mov r1, #1 - str r1, [sp] - mov r1, #0x1e - mla sl, r4, r1, sb - ldr r3, [r6, r8, lsl #2] - add r1, r5, r4, lsl #2 - str r3, [sp, #4] - ldr r1, [r1, #4] - ldr r0, [sp, #0x1c] - sub r1, r1, #1 - str r1, [sp, #8] - ldrsh r1, [sl, #6] - ldrsh r3, [sl, #0x20] - ldr r2, [sp, #0x10] - sub r1, r1, #1 - bl CreateHallway - mov r0, #1 - strb r0, [sl, #0xb] - strb r0, [sl, #0x14] - strb r0, [sl, #0x31] - b _0233F808 -_0233F64C: - cmp r8, #0 - ble _0233F708 - ldrb r0, [sl, #-0x1ba] - cmp r0, #0 - ldreqb r0, [sl, #-0x1b0] - cmpeq r0, #0 - bne _0233F708 - ldrb r0, [sl, #-0x1b7] - cmp r0, #0 - beq _0233F708 - ldrb r0, [sl, #-0x1b8] - cmp r0, #0 - sub r0, sl, #0x100 - ldreqsh r3, [r0, #-0xc0] - beq _0233F6B8 - ldrsh r1, [r0, #-0xbe] - ldrsh r2, [r0, #-0xc2] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - sub r0, sl, #0x100 - ldrsh r1, [r0, #-0xbc] - ldrsh r2, [r0, #-0xc0] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - mov r3, r0 -_0233F6B8: - mov r0, #0 - str r0, [sp] - mov r0, #0x1e - mul r0, r4, r0 - ldr ip, [r6, r8, lsl #2] - add sl, sb, r0 - str ip, [sp, #4] - ldr ip, [r5, r4, lsl #2] - sub r2, sl, #0x100 - str ip, [sp, #8] - ldrsh r2, [r2, #-0xc2] - ldrsh r0, [sb, r0] - ldr r1, [sp, #0x18] - sub r2, r2, #1 - bl CreateHallway - mov r0, #1 - strb r0, [sl, #0xb] - strb r0, [sl, #0x15] - strb r0, [sl, #-0x1ac] - b _0233F808 -_0233F708: - ldr r0, [sp, #0x24] - cmp r8, r0 - bge _0233F808 - ldrb r0, [sl, #0x1ca] - cmp r0, #0 - ldreqb r0, [sl, #0x1d4] - cmpeq r0, #0 - bne _0233F808 - ldrb r0, [sl, #0x1cd] - cmp r0, #0 - beq _0233F808 - ldrb r0, [sl, #0x1cc] - cmp r0, #0 - add r0, sl, #0x100 - ldreqsh r3, [r0, #0xc4] - beq _0233F778 - ldrsh r1, [r0, #0xc6] - ldrsh r2, [r0, #0xc2] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - add r0, sl, #0x100 - ldrsh r1, [r0, #0xc8] - ldrsh r2, [r0, #0xc4] - sub r1, r1, #1 - add r0, r2, #1 - bl DungeonRandRange - mov r3, r0 -_0233F778: - mov r0, #0 - str r0, [sp] - mov r0, #0x1e - mla sl, r4, r0, sb - ldr r0, [sp, #0x28] - ldr r1, [sp, #0x18] - ldr r2, [r0, #4] - add r0, sl, #0x100 - sub r2, r2, #1 - str r2, [sp, #4] - ldr r2, [r5, r4, lsl #2] - str r2, [sp, #8] - ldrsh r2, [r0, #0xc2] - ldrsh r0, [sl, #4] - sub r0, r0, #1 - bl CreateHallway - mov r0, #1 - strb r0, [sl, #0xb] - strb r0, [sl, #0x16] - strb r0, [sl, #0x1d7] - b _0233F808 -_0233F7CC: - ldrsh r0, [sl] - ldrsh r1, [sl, #2] - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0, #2] - bic r1, r1, #1 - strh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #2 - strh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #4 - strh r1, [r0, #2] -_0233F808: - add r4, r4, #1 -_0233F80C: - cmp r4, fp - blt _0233F474 - add r8, r8, #1 -_0233F818: - cmp r8, r7 - blt _0233F448 - mov r8, #0 - b _0233F8EC -_0233F828: - ldr r1, _0233F8FC ; =0x000001C2 - ldr r0, [sp, #0xc] - mov sb, #0 - mla sl, r8, r1, r0 - b _0233F8E0 -_0233F83C: - mov r0, #0x1e - mla r5, sb, r0, sl - ldrb r0, [r5, #8] - cmp r0, #0 - ldreqb r0, [r5, #0x11] - cmpeq r0, #0 - ldreqb r0, [r5, #0xb] - cmpeq r0, #0 - ldreqb r0, [r5, #0xf] - cmpeq r0, #0 - bne _0233F8DC - ldrsh r6, [r5] - b _0233F8D0 -_0233F870: - ldrsh r4, [r5, #2] - b _0233F8C0 -_0233F878: - mov r0, r6 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0, #2] - bic r1, r1, #2 - strh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #1 - strh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #4 - strh r1, [r0, #2] - mov r1, #0xff - strb r1, [r0, #7] -_0233F8C0: - ldrsh r0, [r5, #6] - cmp r4, r0 - blt _0233F878 - add r6, r6, #1 -_0233F8D0: - ldrsh r0, [r5, #4] - cmp r6, r0 - blt _0233F870 -_0233F8DC: - add sb, sb, #1 -_0233F8E0: - cmp sb, fp - blt _0233F83C - add r8, r8, #1 -_0233F8EC: - cmp r8, r7 - blt _0233F828 - add sp, sp, #0x2c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233F8FC: .word 0x000001C2 - arm_func_end EnsureConnectedGrid - - arm_func_start SetTerrainObstacleChecked -SetTerrainObstacleChecked: ; 0x0233F900 - ldrh r3, [r0] - cmp r1, #0 - bic r1, r3, #3 - strh r1, [r0] - bxeq lr - ldrb r1, [r0, #7] - cmp r1, r2 - bxne lr - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] - bx lr - arm_func_end SetTerrainObstacleChecked - - arm_func_start FinalizeJunctions -FinalizeJunctions: ; 0x0233F93C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 -_0233F944: - sub r5, r4, #1 - mov r6, #0 - mov r7, #0xff -_0233F950: - mov r0, r4 - mov r1, r6 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _0233FAFC - mov r0, r4 - mov r1, r6 - bl GetTile - ldrb r0, [r0, #7] - cmp r0, #0xff - bne _0233FAD4 - cmp r4, #0 - ble _0233F9D4 - mov r0, r5 - mov r1, r6 - bl GetTileSafe - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0233F9D4 - ldrh r1, [r0] - orr r2, r1, #8 - and r1, r2, #3 - strh r2, [r0] - cmp r1, #2 - bne _0233F9D4 - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0233F9D4: - cmp r6, #0 - ble _0233FA28 - mov r0, r4 - sub r1, r6, #1 - bl GetTileSafe - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0233FA28 - ldrh r1, [r0] - orr r1, r1, #8 - orr r2, r1, #8 - and r1, r2, #3 - strh r2, [r0] - cmp r1, #2 - bne _0233FA28 - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0233FA28: - cmp r6, #0x1f - bge _0233FA7C - mov r0, r4 - add r1, r6, #1 - bl GetTileSafe - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0233FA7C - ldrh r1, [r0] - orr r1, r1, #8 - orr r2, r1, #8 - and r1, r2, #3 - strh r2, [r0] - cmp r1, #2 - bne _0233FA7C - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] -_0233FA7C: - cmp r4, #0x37 - bge _0233FAFC - mov r1, r6 - add r0, r4, #1 - bl GetTileSafe - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0233FAFC - ldrh r1, [r0] - orr r1, r1, #8 - orr r2, r1, #8 - and r1, r2, #3 - strh r2, [r0] - cmp r1, #2 - bne _0233FAFC - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _0233FAFC -_0233FAD4: - mov r0, r4 - mov r1, r6 - bl GetTile - ldrb r0, [r0, #7] - cmp r0, #0xfe - bne _0233FAFC - mov r0, r4 - mov r1, r6 - bl GetTileSafe - strb r7, [r0, #7] -_0233FAFC: - add r6, r6, #1 - cmp r6, #0x20 - blt _0233F950 - add r4, r4, #1 - cmp r4, #0x38 - blt _0233F944 - bl ov29_0233FB1C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end FinalizeJunctions - - arm_func_start ov29_0233FB1C -ov29_0233FB1C: ; 0x0233FB1C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _0233FBE4 ; =0x02353538 - mov r1, #0 - ldr r6, [r0] - mov r7, r1 -_0233FB30: - add r0, r6, r1, lsl #1 - add r0, r0, #0xf200 - add r1, r1, #1 - strh r7, [r0, #0x68] - cmp r1, #0x20 - blt _0233FB30 -_0233FB48: - mov r0, r7, lsl #0x10 - mov r5, #0 - mov r4, r0, asr #0x10 -_0233FB54: - mov r0, r7 - mov r1, r5 - bl GetTile - ldrh r0, [r0] - tst r0, #8 - beq _0233FBC8 - mov r0, r7 - mov r1, r5 - bl GetTile - ldrb r2, [r0, #7] - cmp r2, #0 - blt _0233FBC8 - cmp r2, #0x20 - addlt r0, r6, r2, lsl #1 - addlt r1, r0, #0xf200 - ldrltsh r0, [r1, #0x68] - cmplt r0, #0x20 - bge _0233FBC8 - add r2, r6, r2, lsl #7 - add r0, r2, r0, lsl #2 - add r0, r0, #0xf200 - strh r4, [r0, #0xa8] - ldrsh r0, [r1, #0x68] - add r0, r2, r0, lsl #2 - add r0, r0, #0xf200 - strh r5, [r0, #0xaa] - ldrsh r0, [r1, #0x68] - add r0, r0, #1 - strh r0, [r1, #0x68] -_0233FBC8: - add r5, r5, #1 - cmp r5, #0x20 - blt _0233FB54 - add r7, r7, #1 - cmp r7, #0x38 - blt _0233FB48 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233FBE4: .word 0x02353538 - arm_func_end ov29_0233FB1C - - arm_func_start GenerateKecleonShop -GenerateKecleonShop: ; 0x0233FBE8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - ldr r5, _0233FF8C ; =0x02353538 - ldr r4, _0233FF90 ; =0x0237CFBC - mvn r7, #0 - ldr r6, [r5] - strh r7, [r4, #0x20] - strh r7, [r4, #0x22] - ldrb r4, [r4, #1] - mov sl, r0 - str r1, [sp] - str r2, [sp, #4] - mov r5, r3 - cmp r4, #0 - bne _0233FF84 - bl GetFloorType - cmp r0, #2 - cmpne r5, #0 - beq _0233FF84 - mov r0, #0x64 - bl DungeonRandInt - cmp r5, r0 - ble _0233FF84 - mov r4, #0 - add r2, sp, #0x26 - add r1, sp, #8 -_0233FC50: - mov r0, r4, lsl #0x10 - mov r3, r4, lsl #1 - mov r0, r0, asr #0x10 - add r4, r4, #1 - strh r0, [r2, r3] - strh r0, [r1, r3] - cmp r4, #0xf - blt _0233FC50 - mov r7, #0xf - mov r8, #0 - mov r5, r7 - add r4, sp, #0x26 -_0233FC80: - mov r0, r7 - bl DungeonRandInt - mov sb, r0 - mov r0, r5 - bl DungeonRandInt - mov r3, sb, lsl #1 - mov r1, r0, lsl #1 - add r8, r8, #1 - ldrsh r2, [r4, r3] - ldrsh r0, [r4, r1] - cmp r8, #0xc8 - strh r0, [r4, r3] - strh r2, [r4, r1] - blt _0233FC80 - mov r7, #0xf - mov r8, #0 - mov r5, r7 - add r4, sp, #8 -_0233FCC8: - mov r0, r7 - bl DungeonRandInt - mov sb, r0 - mov r0, r5 - bl DungeonRandInt - mov r3, sb, lsl #1 - mov r1, r0, lsl #1 - add r8, r8, #1 - ldrsh r2, [r4, r3] - ldrsh r0, [r4, r1] - cmp r8, #0xc8 - strh r0, [r4, r3] - strh r2, [r4, r1] - blt _0233FCC8 - mov r4, #0 - b _0233FF7C -_0233FD08: - add r0, sp, #0x26 - mov r1, r4, lsl #1 - ldrsh r1, [r0, r1] - ldr r0, [sp] - cmp r1, r0 - bge _0233FF78 - ldr r0, _0233FF94 ; =0x000001C2 - mov r5, #0 - mul fp, r1, r0 - add sb, sl, fp - b _0233FF70 -_0233FD34: - mov r1, r5, lsl #1 - add r0, sp, #8 - ldrsh r1, [r0, r1] - ldr r0, [sp, #4] - cmp r1, r0 - bge _0233FF6C - mov r0, #0x1e - mul r7, r1, r0 - add r8, sb, r7 - ldrb r0, [r8, #8] - cmp r0, #0 - ldreqb r0, [r8, #0x11] - cmpeq r0, #0 - ldreqb r0, [r8, #0x12] - cmpeq r0, #0 - bne _0233FF6C - ldrb r0, [r8, #0xb] - cmp r0, #0 - ldrneb r0, [r8, #0xa] - cmpne r0, #0 - beq _0233FF6C - ldrb r0, [r8, #9] - cmp r0, #0 - ldreqb r0, [r8, #0x10] - cmpeq r0, #0 - ldreqb r0, [r8, #0x1d] - cmpeq r0, #0 - bne _0233FF6C - ldrsh r1, [r8, #4] - ldrsh r0, [r8] - sub r0, r1, r0 - bl Abs - cmp r0, #5 - blt _0233FF6C - ldrsh r1, [r8, #6] - ldrsh r0, [r8, #2] - sub r0, r1, r0 - bl Abs - cmp r0, #4 - blt _0233FF6C - ldr r0, _0233FF90 ; =0x0237CFBC - add r1, sl, fp - mov r3, #1 - strb r3, [r0, #3] - add r2, r1, r7 - strb r3, [r2, #0xc] - ldrsh r1, [sb, r7] - add r1, r1, #1 - str r1, [r0, #0x30] - ldrsh r1, [r2, #4] - sub r1, r1, #1 - str r1, [r0, #0x38] - ldrsh r1, [r2, #2] - add r3, r1, #1 - str r3, [r0, #0x34] - ldrsh r1, [r2, #6] - sub r2, r1, #1 - sub r1, r2, r3 - cmp r1, #3 - str r2, [r0, #0x3c] - addlt r1, r2, #1 - strlt r1, [r0, #0x3c] - ldr r1, _0233FF98 ; =0x0000270F - add r0, r6, #0xc000 - str r1, [r0, #0xd14] - str r1, [r0, #0xd18] - rsb r2, r1, #0 - str r2, [r0, #0xd1c] - ldr r1, _0233FF90 ; =0x0237CFBC - str r2, [r0, #0xd20] - ldr r4, [r1, #0x30] - b _0233FED8 -_0233FE54: - ldr sl, _0233FF90 ; =0x0237CFBC - add r8, r6, #0xc000 - ldr r5, [sl, #0x34] - b _0233FEC8 -_0233FE64: - mov r0, r4 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - orr r1, r1, #0x20 - strh r1, [r0] - ldrh r1, [r0, #2] - bic r1, r1, #8 - strh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #1 - strh r1, [r0, #2] - ldr r0, [r8, #0xd14] - cmp r0, r4 - strgt r4, [r8, #0xd14] - ldr r0, [r8, #0xd18] - cmp r0, r5 - strgt r5, [r8, #0xd18] - ldr r0, [r8, #0xd1c] - cmp r0, r4 - strlt r4, [r8, #0xd1c] - ldr r0, [r8, #0xd20] - cmp r0, r5 - strlt r5, [r8, #0xd20] - add r5, r5, #1 -_0233FEC8: - ldr r0, [sl, #0x3c] - cmp r5, r0 - blt _0233FE64 - add r4, r4, #1 -_0233FED8: - ldr r0, _0233FF90 ; =0x0237CFBC - ldr r0, [r0, #0x38] - cmp r4, r0 - blt _0233FE54 - add r4, sb, r7 - ldrsh r5, [sb, r7] - b _0233FF28 -_0233FEF4: - ldrsh r6, [r4, #2] - b _0233FF18 -_0233FEFC: - mov r0, r5 - mov r1, r6 - bl GetTileSafe - ldrh r1, [r0, #2] - add r6, r6, #1 - orr r1, r1, #0x10 - strh r1, [r0, #2] -_0233FF18: - ldrsh r0, [r4, #6] - cmp r6, r0 - blt _0233FEFC - add r5, r5, #1 -_0233FF28: - ldrsh r0, [r4, #4] - cmp r5, r0 - blt _0233FEF4 - ldr r1, _0233FF90 ; =0x0237CFBC - ldr r2, [r1, #0x30] - ldr r0, [r1, #0x38] - add r0, r2, r0 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - strh r0, [r1, #0x20] - ldr r2, [r1, #0x34] - ldr r0, [r1, #0x3c] - add r0, r2, r0 - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - strh r0, [r1, #0x22] - b _0233FF84 -_0233FF6C: - add r5, r5, #1 -_0233FF70: - cmp r5, #0xf - blt _0233FD34 -_0233FF78: - add r4, r4, #1 -_0233FF7C: - cmp r4, #0xf - blt _0233FD08 -_0233FF84: - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0233FF8C: .word 0x02353538 -_0233FF90: .word 0x0237CFBC -_0233FF94: .word 0x000001C2 -_0233FF98: .word 0x0000270F - arm_func_end GenerateKecleonShop - - arm_func_start GenerateMonsterHouse -GenerateMonsterHouse: ; 0x0233FF9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x100 - ldr r4, _02340218 ; =0x02353538 - movs r5, r3 - mov sl, r0 - mov sb, r1 - mov r8, r2 - ldr r6, [r4] - beq _02340210 - mov r0, #0x64 - bl DungeonRandInt - cmp r5, r0 - ble _02340210 - ldr r0, _0234021C ; =0x0237CFBC - ldrb r0, [r0, #3] - cmp r0, #0 - bne _02340210 - bl IsOutlawMonsterHouseFloor - cmp r0, #0 - bne _0233FFF8 - bl IsDestinationFloorWithMonster - cmp r0, #0 - bne _02340210 -_0233FFF8: - bl GetFloorType - cmp r0, #0 - bne _02340210 - mov r5, #0 - mov r2, r5 - mov r1, r5 - b _02340088 -_02340014: - ldr r0, _02340220 ; =0x000001C2 - mov r3, r1 - mla r4, r2, r0, sl - mov r7, #0x1e - b _0234007C -_02340028: - mla r0, r3, r7, r4 - ldrb fp, [r0, #8] - cmp fp, #0 - ldreqb fp, [r0, #0x11] - cmpeq fp, #0 - bne _02340078 - ldrb fp, [r0, #0xb] - cmp fp, #0 - ldrneb fp, [r0, #0xa] - cmpne fp, #0 - beq _02340078 - ldrb fp, [r0, #0xc] - cmp fp, #0 - ldreqb fp, [r0, #0xf] - cmpeq fp, #0 - ldreqb fp, [r0, #0x10] - cmpeq fp, #0 - ldreqb r0, [r0, #9] - cmpeq r0, #0 - addeq r5, r5, #1 -_02340078: - add r3, r3, #1 -_0234007C: - cmp r3, r8 - blt _02340028 - add r2, r2, #1 -_02340088: - cmp r2, sb - blt _02340014 - cmp r5, #0 - beq _02340210 - mov r1, #0 - mov r7, r1 - add r0, sp, #0 -_023400A4: - strb r7, [r0, r1] - add r1, r1, #1 - cmp r1, #0x100 - blt _023400A4 - mov r0, #1 - strb r0, [sp] - add fp, sp, #0 -_023400C0: - mov r0, r5 - bl DungeonRandInt - mov r4, r0 - mov r0, r5 - bl DungeonRandInt - add r7, r7, #1 - ldrb r2, [fp, r4] - ldrb r1, [fp, r0] - cmp r7, #0x40 - strb r1, [fp, r4] - strb r2, [fp, r0] - blt _023400C0 - mov r7, #0 - mov r4, r7 - add fp, sp, #0 - b _02340208 -_02340100: - ldr r0, _02340220 ; =0x000001C2 - mov r5, #0 - mul r3, r4, r0 - add r2, sl, r3 - mov lr, #0x1e - b _023401FC -_02340118: - mul r1, r5, lr - add r0, r2, r1 - ldrb ip, [r0, #8] - cmp ip, #0 - ldreqb ip, [r0, #0x11] - cmpeq ip, #0 - bne _023401F8 - ldrb ip, [r0, #0xb] - cmp ip, #0 - ldrneb ip, [r0, #0xa] - cmpne ip, #0 - beq _023401F8 - ldrb ip, [r0, #0xc] - cmp ip, #0 - ldreqb ip, [r0, #0xf] - cmpeq ip, #0 - ldreqb ip, [r0, #0x10] - cmpeq ip, #0 - ldreqb r0, [r0, #9] - cmpeq r0, #0 - bne _023401F8 - ldrb r0, [fp, r7] - cmp r0, #0 - beq _023401F4 - ldr r0, _0234021C ; =0x0237CFBC - add r2, sl, r3 - mov r3, #1 - strb r3, [r0, #1] - add r7, r2, r1 - strb r3, [r7, #0xe] - ldrsh r5, [r2, r1] - add r6, r6, #0x4000 - b _023401E4 -_0234019C: - ldrsh r4, [r7, #2] - b _023401D4 -_023401A4: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r4 - orr r2, r2, #0x40 - strh r2, [r0] - mov r0, r5 - bl GetTile - ldrb r0, [r0, #7] - add r4, r4, #1 - strb r0, [r6, #0xc9] -_023401D4: - ldrsh r0, [r7, #6] - cmp r4, r0 - blt _023401A4 - add r5, r5, #1 -_023401E4: - ldrsh r0, [r7, #4] - cmp r5, r0 - blt _0234019C - b _02340210 -_023401F4: - add r7, r7, #1 -_023401F8: - add r5, r5, #1 -_023401FC: - cmp r5, r8 - blt _02340118 - add r4, r4, #1 -_02340208: - cmp r4, sb - blt _02340100 -_02340210: - add sp, sp, #0x100 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02340218: .word 0x02353538 -_0234021C: .word 0x0237CFBC -_02340220: .word 0x000001C2 - arm_func_end GenerateMonsterHouse - - arm_func_start GenerateMazeRoom -GenerateMazeRoom: ; 0x02340224 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x100 - ldr r7, _02340450 ; =0x02353538 - movs r8, r3 - mov r6, r0 - mov r5, r1 - mov r4, r2 - ldr r7, [r7] - beq _02340448 - mov r0, #0x64 - bl DungeonRandInt - cmp r8, r0 - ble _02340448 - add r0, r7, #0x4000 - ldrsh r0, [r0, #0xde] - cmp r0, #0 - bge _02340448 - mov sb, #0 - mov r1, sb - b _02340310 -_02340274: - ldr r0, _02340454 ; =0x000001C2 - mov r2, #0 - mla r3, r1, r0, r6 - mov r7, #0x1e - b _02340304 -_02340288: - mla r0, r2, r7, r3 - ldrb r8, [r0, #8] - cmp r8, #0 - ldreqb r8, [r0, #0x11] - cmpeq r8, #0 - bne _02340300 - ldrb r8, [r0, #0xb] - cmp r8, #0 - ldrneb r8, [r0, #0xa] - cmpne r8, #0 - beq _02340300 - ldrb r8, [r0, #0xc] - cmp r8, #0 - ldreqb r8, [r0, #0xf] - cmpeq r8, #0 - ldreqb r8, [r0, #0xe] - cmpeq r8, #0 - ldreqb r8, [r0, #9] - cmpeq r8, #0 - bne _02340300 - ldrsh sl, [r0, #4] - ldrsh r8, [r0] - sub r8, sl, r8 - tst r8, #1 - beq _02340300 - ldrsh r8, [r0, #6] - ldrsh r0, [r0, #2] - sub r0, r8, r0 - tst r0, #1 - addne sb, sb, #1 -_02340300: - add r2, r2, #1 -_02340304: - cmp r2, r4 - blt _02340288 - add r1, r1, #1 -_02340310: - cmp r1, r5 - blt _02340274 - cmp sb, #0 - beq _02340448 - mov r1, #0 - mov sl, r1 - add r0, sp, #0 -_0234032C: - strb sl, [r0, r1] - add r1, r1, #1 - cmp r1, #0x100 - blt _0234032C - mov r0, #1 - strb r0, [sp] - add r7, sp, #0 -_02340348: - mov r0, sb - bl DungeonRandInt - mov r8, r0 - mov r0, sb - bl DungeonRandInt - add sl, sl, #1 - ldrb r2, [r7, r8] - ldrb r1, [r7, r0] - cmp sl, #0x40 - strb r1, [r7, r8] - strb r2, [r7, r0] - blt _02340348 - mov r7, #0 - mov r2, r7 - b _02340440 -_02340384: - ldr r0, _02340454 ; =0x000001C2 - mov r3, #0 - mla r1, r2, r0, r6 - add sl, sp, #0 - mov r8, #0x1e - b _02340434 -_0234039C: - mla r0, r3, r8, r1 - ldrb sb, [r0, #8] - cmp sb, #0 - ldreqb sb, [r0, #0x11] - cmpeq sb, #0 - bne _02340430 - ldrb sb, [r0, #0xb] - cmp sb, #0 - ldrneb sb, [r0, #0xa] - cmpne sb, #0 - beq _02340430 - ldrb sb, [r0, #0xc] - cmp sb, #0 - ldreqb sb, [r0, #0xf] - cmpeq sb, #0 - ldreqb sb, [r0, #0xe] - cmpeq sb, #0 - ldreqb sb, [r0, #9] - cmpeq sb, #0 - bne _02340430 - ldrsh ip, [r0, #4] - ldrsh sb, [r0] - sub sb, ip, sb - tst sb, #1 - beq _02340430 - ldrsh ip, [r0, #6] - ldrsh sb, [r0, #2] - sub sb, ip, sb - tst sb, #1 - beq _02340430 - ldrb sb, [sl, r7] - cmp sb, #0 - beq _0234042C - mov r1, #0 - bl GenerateMaze - b _02340448 -_0234042C: - add r7, r7, #1 -_02340430: - add r3, r3, #1 -_02340434: - cmp r3, r4 - blt _0234039C - add r2, r2, #1 -_02340440: - cmp r2, r5 - blt _02340384 -_02340448: - add sp, sp, #0x100 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02340450: .word 0x02353538 -_02340454: .word 0x000001C2 - arm_func_end GenerateMazeRoom - - arm_func_start GenerateMaze -GenerateMaze: ; 0x02340458 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - ldr r2, _023406D0 ; =0x0237CFBC - mov r3, #1 - mov r5, r0 - strb r3, [r2, #7] - strb r3, [r5, #0x10] - mov r4, r1 - ldrsh r0, [r5] - ldrsh r1, [r5, #2] - bl GetTile - ldrsh r1, [r5] - ldrb r7, [r0, #7] - add r6, r1, #1 - b _023404DC -_02340494: - ldrsh r1, [r5, #2] - mov r0, r6 - sub r1, r1, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _023404D8 - ldrsh r3, [r5, #2] - ldrsh r2, [r5, #4] - mov r0, r6 - sub r1, r3, #1 - str r2, [sp] - ldrsh r2, [r5, #6] - stmib sp, {r2, r4, r7} - ldrsh r2, [r5] - bl GenerateMazeLine -_023404D8: - add r6, r6, #2 -_023404DC: - ldrsh r0, [r5, #4] - sub r0, r0, #1 - cmp r6, r0 - blt _02340494 - ldrsh r0, [r5, #2] - add r6, r0, #1 - b _02340538 -_023404F8: - ldrsh r0, [r5, #4] - mov r1, r6 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _02340534 - ldrsh r0, [r5, #4] - mov r1, r6 - str r0, [sp] - ldrsh r2, [r5, #6] - stmib sp, {r2, r4, r7} - ldrsh r2, [r5] - ldrsh r3, [r5, #2] - bl GenerateMazeLine -_02340534: - add r6, r6, #2 -_02340538: - ldrsh r0, [r5, #6] - sub r0, r0, #1 - cmp r6, r0 - blt _023404F8 - ldrsh r0, [r5] - add r6, r0, #1 - b _02340594 -_02340554: - ldrsh r1, [r5, #6] - mov r0, r6 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _02340590 - ldrsh r1, [r5, #6] - ldrsh r2, [r5, #4] - mov r0, r6 - str r2, [sp] - stmib sp, {r1, r4, r7} - ldrsh r2, [r5] - ldrsh r3, [r5, #2] - bl GenerateMazeLine -_02340590: - add r6, r6, #2 -_02340594: - ldrsh r0, [r5, #4] - sub r0, r0, #1 - cmp r6, r0 - blt _02340554 - ldrsh r0, [r5, #2] - add r6, r0, #1 - b _023405F8 -_023405B0: - ldrsh r0, [r5] - mov r1, r6 - sub r0, r0, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _023405F4 - ldrsh r2, [r5] - ldrsh r3, [r5, #4] - mov r1, r6 - sub r0, r2, #1 - str r3, [sp] - ldrsh r3, [r5, #6] - stmib sp, {r3, r4, r7} - ldrsh r3, [r5, #2] - bl GenerateMazeLine -_023405F4: - add r6, r6, #2 -_023405F8: - ldrsh r0, [r5, #6] - sub r0, r0, #1 - cmp r6, r0 - blt _023405B0 - ldrsh r0, [r5] - add r8, r0, #3 - b _023406B8 -_02340614: - ldrsh r0, [r5, #2] - sub r6, r8, #1 - add sb, r0, #3 - b _023406A4 -_02340624: - mov r0, r8 - mov r1, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _023406A0 - cmp r4, #0 - mov r0, r6 - mov r1, sb - beq _0234066C - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - b _02340678 -_0234066C: - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 -_02340678: - strh r1, [r0] - ldrsh r2, [r5, #4] - mov r0, r8 - mov r1, sb - str r2, [sp] - ldrsh r2, [r5, #6] - stmib sp, {r2, r4, r7} - ldrsh r2, [r5] - ldrsh r3, [r5, #2] - bl GenerateMazeLine -_023406A0: - add sb, sb, #2 -_023406A4: - ldrsh r0, [r5, #6] - sub r0, r0, #3 - cmp sb, r0 - blt _02340624 - add r8, r8, #2 -_023406B8: - ldrsh r0, [r5, #4] - sub r0, r0, #3 - cmp r8, r0 - blt _02340614 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023406D0: .word 0x0237CFBC - arm_func_end GenerateMaze - - arm_func_start GenerateMazeLine -GenerateMazeLine: ; 0x023406D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - ldr r4, [sp, #0x34] - ldr fp, [sp, #0x30] - ldr r7, [sp, #0x38] - ldr r6, [sp, #0x3c] - str r4, [sp, #0x34] - mov sb, r0 - mov r8, r1 - str r2, [sp] - str r3, [sp, #4] -_02340700: - mov r0, #4 - bl DungeonRandInt - mov r4, r0 - mov r0, sb - mov r1, r8 - mov sl, #0 - bl GetTileSafe - mov r1, r7 - and r2, r6, #0xff - bl SetTerrainObstacleChecked - mvn r0, #1 - str r0, [sp, #8] -_02340730: - and r5, r4, #3 - cmp r5, #3 - addls pc, pc, r5, lsl #2 - b _02340774 -_02340740: ; jump table - b _02340750 ; case 0 - b _0234075C ; case 1 - b _02340768 ; case 2 - b _02340774 ; case 3 -_02340750: - mov r0, #2 - mov r2, #0 - b _0234077C -_0234075C: - mov r0, #0 - ldr r2, [sp, #8] - b _0234077C -_02340768: - ldr r0, [sp, #8] - mov r2, #0 - b _0234077C -_02340774: - mov r0, #0 - mov r2, #2 -_0234077C: - ldr r1, [sp] - add r0, sb, r0 - cmp r1, r0 - bgt _023407C4 - cmp fp, r0 - ble _023407C4 - add r1, r8, r2 - ldr r2, [sp, #4] - cmp r2, r1 - bgt _023407C4 - ldr r2, [sp, #0x34] - cmp r2, r1 - ble _023407C4 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - beq _023407D8 -_023407C4: - add r4, r4, #1 - add sl, sl, #1 - cmp sl, #4 - blt _02340730 - b _02340874 -_023407D8: - cmp r5, #3 - addls pc, pc, r5, lsl #2 - b _02340700 -_023407E4: ; jump table - b _023407F4 ; case 0 - b _02340814 ; case 1 - b _02340834 ; case 2 - b _02340854 ; case 3 -_023407F4: - mov r1, r8 - add r0, sb, #1 - bl GetTileSafe - mov r1, r7 - and r2, r6, #0xff - bl SetTerrainObstacleChecked - add sb, sb, #2 - b _02340700 -_02340814: - mov r0, sb - sub r1, r8, #1 - bl GetTileSafe - mov r1, r7 - and r2, r6, #0xff - bl SetTerrainObstacleChecked - sub r8, r8, #2 - b _02340700 -_02340834: - mov r1, r8 - sub r0, sb, #1 - bl GetTileSafe - mov r1, r7 - and r2, r6, #0xff - bl SetTerrainObstacleChecked - sub sb, sb, #2 - b _02340700 -_02340854: - mov r0, sb - add r1, r8, #1 - bl GetTileSafe - mov r1, r7 - and r2, r6, #0xff - bl SetTerrainObstacleChecked - add r8, r8, #2 - b _02340700 -_02340874: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end GenerateMazeLine - - arm_func_start SetSpawnFlag5 -SetSpawnFlag5: ; 0x0234087C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrsh r5, [r6] - b _023408C0 -_0234088C: - ldrsh r4, [r6, #2] - b _023408B0 -_02340894: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0, #2] - add r4, r4, #1 - orr r1, r1, #0x20 - strh r1, [r0, #2] -_023408B0: - ldrsh r0, [r6, #6] - cmp r4, r0 - blt _02340894 - add r5, r5, #1 -_023408C0: - ldrsh r0, [r6, #4] - cmp r5, r0 - blt _0234088C - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SetSpawnFlag5 - - arm_func_start IsNextToHallway -IsNextToHallway: ; 0x023408D0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mvn r5, #0 - mov sl, r0 - mov sb, r1 - mov r4, r5 - b _02340964 -_023408E8: - adds r8, sl, r5 - bmi _02340960 - cmp r8, #0x38 - bge _0234096C - mov r6, r4 - b _02340958 -_02340900: - adds r7, sb, r6 - bmi _02340954 - cmp r7, #0x20 - bge _02340960 - cmp r5, #0 - cmpne r6, #0 - bne _02340954 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #1 - bne _02340954 - mov r0, r8 - mov r1, r7 - bl GetTile - ldrb r0, [r0, #7] - cmp r0, #0xff - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02340954: - add r6, r6, #1 -_02340958: - cmp r6, #1 - ble _02340900 -_02340960: - add r5, r5, #1 -_02340964: - cmp r5, #1 - ble _023408E8 -_0234096C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end IsNextToHallway - - arm_func_start ResolveInvalidSpawns -ResolveInvalidSpawns: ; 0x02340974 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 -_0234097C: - mov r4, #0 -_02340980: - mov r0, r5 - mov r1, r4 - bl GetTileSafe - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #1 - beq _023409BC - ldrh r1, [r0] - tst r1, #0x110 - ldrneh r1, [r0, #2] - bicne r1, r1, #2 - strneh r1, [r0, #2] - ldrh r1, [r0, #2] - bic r1, r1, #4 - strh r1, [r0, #2] -_023409BC: - ldrh r1, [r0, #2] - tst r1, #1 - beq _023409E0 - ldrh r1, [r0] - orr r1, r1, #0x200 - strh r1, [r0] - ldrh r1, [r0, #2] - bic r1, r1, #4 - strh r1, [r0, #2] -_023409E0: - ldrh r1, [r0, #2] - add r4, r4, #1 - tst r1, #2 - bicne r1, r1, #4 - strneh r1, [r0, #2] - cmp r4, #0x20 - blt _02340980 - add r5, r5, #1 - cmp r5, #0x38 - blt _0234097C - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ResolveInvalidSpawns - - arm_func_start ConvertSecondaryTerrainToChasms -ConvertSecondaryTerrainToChasms: ; 0x02340A0C - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_02340A18: - mov r5, r4 -_02340A1C: - mov r0, r6 - mov r1, r5 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - bne _02340A5C - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #3 - strh r1, [r0] -_02340A5C: - add r5, r5, #1 - cmp r5, #0x20 - blt _02340A1C - add r6, r6, #1 - cmp r6, #0x38 - blt _02340A18 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ConvertSecondaryTerrainToChasms - - arm_func_start EnsureImpassableTilesAreWalls -EnsureImpassableTilesAreWalls: ; 0x02340A78 - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_02340A84: - mov r5, r4 -_02340A88: - mov r0, r6 - mov r1, r5 - bl GetTile - ldrh r0, [r0] - tst r0, #0x10 - beq _02340AB8 - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] -_02340AB8: - add r5, r5, #1 - cmp r5, #0x20 - blt _02340A88 - add r6, r6, #1 - cmp r6, #0x38 - blt _02340A84 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end EnsureImpassableTilesAreWalls - - arm_func_start InitializeTile -InitializeTile: ; 0x02340AD4 - mov r2, #0 - strh r2, [r0] - strh r2, [r0, #2] - mov r1, #0xff - strb r1, [r0, #7] - strh r2, [r0, #4] - strb r2, [r0, #8] - strb r2, [r0, #9] - strb r2, [r0, #0xa] - strb r2, [r0, #0xb] - strb r2, [r0, #6] - str r2, [r0, #0xc] - str r2, [r0, #0x10] - bx lr - arm_func_end InitializeTile - - arm_func_start ResetFloor -ResetFloor: ; 0x02340B0C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r6, #0 - mov r4, r6 -_02340B18: - mov r5, r4 - sub r7, r6, #1 -_02340B20: - mov r0, r6 - mov r1, r5 - bl GetTileSafe - bl InitializeTile - sub r8, r5, #1 - mov r0, r6 - mov r1, r8 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r1, r8 - add r0, r6, #1 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r1, r8 - add r0, r6, #1 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - add r0, r6, #1 - add r1, r5, #1 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r0, r6 - add r1, r5, #1 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r0, r7 - add r1, r5, #1 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r0, r7 - mov r1, r5 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02340BD4 - mov r0, r7 - mov r1, r8 - bl PosIsOutOfBounds - cmp r0, #0 - beq _02340BEC -_02340BD4: - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - orr r1, r1, #0x10 - strh r1, [r0] -_02340BEC: - add r5, r5, #1 - cmp r5, #0x20 - blt _02340B20 - add r6, r6, #1 - cmp r6, #0x38 - blt _02340B18 - ldr r6, _02340CA8 ; =0x02353538 - mov sb, #0 - ldr r0, [r6] - mvn r1, #0 - add r0, r0, #0xcc00 - strh r1, [r0, #0xe4] - ldr r0, [r6] - mov r7, sb - add r0, r0, #0xcc00 - strh r1, [r0, #0xe6] - mov r4, #0x14 - mov r5, #0xa0 -_02340C34: - mul r8, sb, r5 - mov sl, r7 -_02340C3C: - ldr r0, [r6] - add r0, r0, #0xd60 - add r0, r0, #0xc000 - add r0, r0, r8 - mla r0, sl, r4, r0 - bl InitializeTile - add sl, sl, #1 - cmp sl, #8 - blt _02340C3C - add sb, sb, #1 - cmp sb, #8 - blt _02340C34 - ldr r1, _02340CA8 ; =0x02353538 - mov r3, #0 - ldr r0, [r1] - mov r2, r3 - add r0, r0, #0x3f00 - strh r3, [r0, #0xc0] -_02340C84: - ldr r0, [r1] - add r0, r0, r3, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xcc8] - add r3, r3, #1 - str r2, [r0] - cmp r3, #0x40 - blt _02340C84 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02340CA8: .word 0x02353538 - arm_func_end ResetFloor - - arm_func_start PosIsOutOfBounds -PosIsOutOfBounds: ; 0x02340CAC - cmp r0, #0 - movlt r0, #1 - bxlt lr - cmp r1, #0 - movlt r0, #1 - bxlt lr - cmp r0, #0x38 - movge r0, #1 - bxge lr - cmp r1, #0x20 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end PosIsOutOfBounds - - arm_func_start ShuffleSpawnPositions -ShuffleSpawnPositions: ; 0x02340CE4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, #0 - b _02340D40 -_02340CF8: - mov r0, r6 - bl DungeonRandInt - mov r4, r0 - mov r0, r6 - bl DungeonRandInt - add lr, r7, r4, lsl #1 - ldrb ip, [r7, r4, lsl #1] - ldrb r3, [lr, #1] - ldrb r1, [r7, r0, lsl #1] - add r2, r7, r0, lsl #1 - strb ip, [sp] - strb r1, [r7, r4, lsl #1] - ldrb r1, [r2, #1] - strb r3, [sp, #1] - add r5, r5, #1 - strb r1, [lr, #1] - strb ip, [r7, r0, lsl #1] - strb r3, [r2, #1] -_02340D40: - cmp r5, r6, lsl #1 - blt _02340CF8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ShuffleSpawnPositions - - arm_func_start SpawnNonEnemies -SpawnNonEnemies: ; 0x02340D4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xe00 - ldr r3, _02341458 ; =0x02353538 - mov sl, r0 - ldr r5, [r3] - mvn r2, #0 - add r0, r5, #0xcc00 - ldrsh r3, [r0, #0xe4] - mov sb, r1 - cmp r3, r2 - ldrnesh r0, [r0, #0xe6] - cmpne r0, r2 - bne _02340EC8 - mov r6, #0 - mov r8, r6 - add fp, sp, #0 -_02340D8C: - mov r7, #0 - and r4, r8, #0xff -_02340D94: - mov r0, r8 - mov r1, r7 - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _02340DF4 - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _02340DF4 - tst r2, #0x20 - bne _02340DF4 - ldrh r0, [r0, #2] - tst r0, #8 - bne _02340DF4 - tst r0, #0x10 - bne _02340DF4 - tst r2, #8 - bne _02340DF4 - tst r2, #0x100 - streqb r4, [fp, r6, lsl #1] - addeq r0, fp, r6, lsl #1 - streqb r7, [r0, #1] - addeq r6, r6, #1 -_02340DF4: - add r7, r7, #1 - cmp r7, #0x20 - blt _02340D94 - add r8, r8, #1 - cmp r8, #0x38 - blt _02340D8C - cmp r6, #0 - beq _02340EC8 - mov r0, r6 - bl DungeonRandInt - add r1, r5, #0xc4 - add r2, sp, #0 - mov r4, r0 - add r0, r2, r4, lsl #1 - add r1, r1, #0x4000 - mov r2, #0 - bl SpawnStairs - ldr r0, _0234145C ; =0x0237CFBC - ldr r0, [r0, #0x2c] - cmp r0, #0 - beq _02340EC8 - sub r0, r6, #1 - add r3, sp, #0 - b _02340E6C -_02340E54: - add r2, r3, r4, lsl #1 - ldrb r1, [r2, #2] - strb r1, [r3, r4, lsl #1] - ldrb r1, [r2, #3] - add r4, r4, #1 - strb r1, [r2, #1] -_02340E6C: - cmp r4, r0 - blt _02340E54 - ldr r0, _02341458 ; =0x02353538 - ldr r1, _0234145C ; =0x0237CFBC - ldr r2, [r0] - ldr r4, [r1, #0x2c] - add r0, r2, #0x2c000 - ldrb r1, [r2, #0x749] - ldrb r0, [r0, #0xaf4] - add r1, r1, #1 - cmp r1, r0 - bge _02340EC8 - mov r0, #3 - bl DungeonRngSetSecondary - sub r0, r6, #1 - bl DungeonRandInt - add r3, sp, #0 - add r1, r5, #0xc4 - mov r2, r4 - add r0, r3, r0, lsl #1 - add r1, r1, #0x4000 - bl SpawnStairs - bl DungeonRngSetPrimary -_02340EC8: - mov r6, #0 - mov r7, r6 - add fp, sp, #0 -_02340ED4: - mov r8, #0 - and r4, r7, #0xff -_02340EDC: - mov r0, r7 - mov r1, r8 - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _02340F30 - ldrb r0, [r0, #7] - cmp r0, #0xff - beq _02340F30 - tst r2, #0x20 - bne _02340F30 - tst r2, #0x40 - bne _02340F30 - tst r2, #8 - bne _02340F30 - tst r2, #0x100 - streqb r4, [fp, r6, lsl #1] - addeq r0, fp, r6, lsl #1 - streqb r8, [r0, #1] - addeq r6, r6, #1 -_02340F30: - add r8, r8, #1 - cmp r8, #0x20 - blt _02340EDC - add r7, r7, #1 - cmp r7, #0x38 - blt _02340ED4 - cmp r6, #0 - beq _02340FFC - ldrb r4, [sl, #0xf] - cmp r4, #0 - beq _02340F74 - sub r0, r4, #2 - add r1, r4, #2 - bl DungeonRandRange - mov r4, r0 - cmp r4, #1 - movlt r4, #1 -_02340F74: - ldr r1, _02341458 ; =0x02353538 - ldr r0, _02341460 ; =0x0002C9E8 - ldr r2, [r1] - ldrsh r0, [r2, r0] - cmp r0, #0 - addne r4, r4, #1 - add r1, r4, #1 - ldr r0, _02341464 ; =0x00012AFA - cmp r1, #0 - strh r1, [r2, r0] - ble _02340FFC - add r0, sp, #0 - mov r1, r6 - bl ShuffleSpawnPositions - mov r0, r6 - bl DungeonRandInt - mov r8, r0 - mov r7, #0 - add r4, r4, #1 - add fp, sp, #0 - b _02340FF4 -_02340FC8: - add r1, fp, r8, lsl #1 - ldrb r0, [fp, r8, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - ldrh r1, [r0, #2] - add r8, r8, #1 - cmp r8, r6 - orr r1, r1, #2 - strh r1, [r0, #2] - moveq r8, #0 - add r7, r7, #1 -_02340FF4: - cmp r7, r4 - blt _02340FC8 -_02340FFC: - mov r6, #0 - mov r7, r6 - add fp, sp, #0 -_02341008: - mov r8, #0 - and r4, r7, #0xff -_02341010: - mov r0, r7 - mov r1, r8 - bl GetTile - ldrh r0, [r0] - tst r0, #3 - streqb r4, [fp, r6, lsl #1] - addeq r0, fp, r6, lsl #1 - streqb r8, [r0, #1] - add r8, r8, #1 - addeq r6, r6, #1 - cmp r8, #0x20 - blt _02341010 - add r7, r7, #1 - cmp r7, #0x38 - blt _02341008 - cmp r6, #0 - beq _023410D0 - ldrb r7, [sl, #0x14] - cmp r7, #0 - beq _02341070 - sub r0, r7, #2 - add r1, r7, #2 - bl DungeonRandRange - mov r7, r0 -_02341070: - cmp r7, #0 - ble _023410D0 - add r0, sp, #0 - mov r1, r6 - bl ShuffleSpawnPositions - mov r0, r6 - bl DungeonRandInt - mov r4, r0 - mov r8, #0 - add fp, sp, #0 - b _023410C8 -_0234109C: - add r1, fp, r4, lsl #1 - ldrb r0, [fp, r4, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - ldrh r1, [r0, #2] - add r4, r4, #1 - cmp r4, r6 - orr r1, r1, #2 - strh r1, [r0, #2] - moveq r4, #0 - add r8, r8, #1 -_023410C8: - cmp r8, r7 - blt _0234109C -_023410D0: - cmp sb, #0 - mov r6, #0 - bne _0234113C - mov r8, r6 - add r4, sp, #0 - mov fp, r6 -_023410E8: - mov sb, fp - and r7, r8, #0xff -_023410F0: - mov r0, r8 - mov r1, sb - bl GetTile - ldrh r0, [r0] - tst r0, #0x20 - bne _02341124 - tst r0, #0x40 - beq _02341124 - tst r0, #8 - streqb r7, [r4, r6, lsl #1] - addeq r0, r4, r6, lsl #1 - streqb sb, [r0, #1] - addeq r6, r6, #1 -_02341124: - add sb, sb, #1 - cmp sb, #0x20 - blt _023410F0 - add r8, r8, #1 - cmp r8, #0x38 - blt _023410E8 -_0234113C: - cmp r6, #0 - beq _02341228 - add r0, r6, r6, lsl #2 - mov r1, #0xa - bl DivideInt - mov r4, r0 - mov r0, r6, lsl #3 - mov r1, #0xa - bl DivideInt - mov r1, r0 - mov r0, r4 - bl DungeonRandRange - mov r8, r0 - ldr r0, _02341468 ; =0x022C44AC - cmp r8, #6 - ldrsh r0, [r0] - movlt r8, #6 - mov r1, r6 - cmp r8, r0 - movge r8, r0 - add r0, sp, #0 - bl ShuffleSpawnPositions - mov r0, r6 - bl DungeonRandInt - ldr r1, _0234146C ; =0x022C440C - mov r7, r0 - ldrb fp, [r1] - mov sb, #0 - b _02341220 -_023411B0: - add r0, sp, #0 - add r1, r0, r7, lsl #1 - ldrb r0, [r0, r7, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - mov r4, r0 - mov r0, #2 - bl DungeonRandInt - cmp r0, #0 - ldrneh r0, [r4, #2] - orrne r0, r0, #2 - strneh r0, [r4, #2] - bne _02341210 - ldr r0, _02341458 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x75c] - cmp r0, #0 - bne _02341204 - ldrb r0, [r1, #0x748] - cmp r0, fp - blo _02341210 -_02341204: - ldrh r0, [r4, #2] - orr r0, r0, #4 - strh r0, [r4, #2] -_02341210: - add r7, r7, #1 - cmp r7, r6 - moveq r7, #0 - add sb, sb, #1 -_02341220: - cmp sb, r8 - blt _023411B0 -_02341228: - mov r7, #0 - mov r8, r7 - add r4, sp, #0 - mov fp, r7 -_02341238: - mov sb, fp - and r6, r8, #0xff -_02341240: - mov r0, r8 - mov r1, sb - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _02341298 - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _02341298 - tst r2, #0x20 - bne _02341298 - ldrh r0, [r0, #2] - tst r0, #2 - bne _02341298 - tst r2, #8 - bne _02341298 - tst r2, #0x100 - streqb r6, [r4, r7, lsl #1] - addeq r0, r4, r7, lsl #1 - streqb sb, [r0, #1] - addeq r7, r7, #1 -_02341298: - add sb, sb, #1 - cmp sb, #0x20 - blt _02341240 - add r8, r8, #1 - cmp r8, #0x38 - blt _02341238 - cmp r7, #0 - beq _02341334 - ldrb r1, [sl, #0x10] - mov r0, r1, lsr #1 - bl DungeonRandRange - mov r8, r0 - cmp r8, #0 - ble _02341334 - add r0, sp, #0 - cmp r8, #0x38 - mov r1, r7 - movge r8, #0x38 - bl ShuffleSpawnPositions - mov r0, r7 - bl DungeonRandInt - mov sb, #0 - mov r6, r0 - mov sl, sb - add r4, sp, #0 - b _0234132C -_02341300: - add r1, r4, r6, lsl #1 - ldrb r0, [r4, r6, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - ldrh r1, [r0, #2] - add r6, r6, #1 - cmp r6, r7 - orr r1, r1, #4 - strh r1, [r0, #2] - moveq r6, sl - add sb, sb, #1 -_0234132C: - cmp sb, r8 - blt _02341300 -_02341334: - bl GetFloorType - cmp r0, #2 - add r0, r5, #0xcc00 - moveq r3, #1 - movne r3, #0 - ldrsh r2, [r0, #0xe0] - mvn r1, #0 - and r7, r3, #0xff - cmp r2, r1 - ldrnesh r0, [r0, #0xe2] - cmpne r0, r1 - bne _02341450 - mov r8, #0 - mov sb, r8 -_0234136C: - mov sl, #0 - and r6, sb, #0xff - add r4, r5, #0x4000 - add fp, sp, #0 -_0234137C: - mov r0, sb - mov r1, sl - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _0234140C - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0234140C - tst r2, #0x20 - bne _0234140C - tst r2, #8 - bne _0234140C - tst r2, #0x100 - bne _0234140C - ldrh r0, [r0, #2] - tst r0, #2 - bne _0234140C - tst r0, #8 - bne _0234140C - tst r0, #4 - bne _0234140C - cmp r7, #0 - beq _023413E8 - tst r0, #1 - bne _0234140C -_023413E8: - ldr r0, _0234145C ; =0x0237CFBC - ldrb r0, [r0, #8] - cmp r0, #0 - ldrneb r0, [r4, #0xc9] - cmpne r0, r1 - streqb r6, [fp, r8, lsl #1] - addeq r0, fp, r8, lsl #1 - streqb sl, [r0, #1] - addeq r8, r8, #1 -_0234140C: - add sl, sl, #1 - cmp sl, #0x20 - blt _0234137C - add sb, sb, #1 - cmp sb, #0x38 - blt _0234136C - cmp r8, #0 - beq _02341450 - mov r0, r8 - bl DungeonRandInt - add r2, sp, #0 - ldrb r3, [r2, r0, lsl #1] - add r1, r5, #0xcc00 - add r2, sp, #1 - strh r3, [r1, #0xe0] - ldrb r0, [r2, r0, lsl #1] - strh r0, [r1, #0xe2] -_02341450: - add sp, sp, #0xe00 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02341458: .word 0x02353538 -_0234145C: .word 0x0237CFBC -_02341460: .word 0x0002C9E8 -_02341464: .word 0x00012AFA -_02341468: .word 0x022C44AC -_0234146C: .word 0x022C440C - arm_func_end SpawnNonEnemies - - arm_func_start SpawnEnemies -SpawnEnemies: ; 0x02341470 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x204 - sub sp, sp, #0xc00 - str r1, [sp] - ldrb r1, [r0, #6] - ldr r0, _02341760 ; =0x02353538 - cmp r1, #1 - ldr sb, [r0] - blt _023414B0 - add r0, r1, r1, lsr #31 - mov r0, r0, asr #1 - bl DungeonRandRange - mov r8, r0 - cmp r8, #1 - movlt r8, #1 - b _023414BC -_023414B0: - mov r0, r1 - bl Abs - mov r8, r0 -_023414BC: - mov r6, #0 - mov sl, r6 -_023414C4: - mov r7, #0 - and r5, sl, #0xff - add r4, sb, #0xcc00 - add fp, sb, #0x4000 -_023414D4: - mov r0, sl - mov r1, r7 - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _0234156C - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _0234156C - tst r2, #0x20 - bne _0234156C - ldrh r0, [r0, #2] - tst r0, #2 - bne _0234156C - tst r0, #1 - bne _0234156C - tst r2, #8 - bne _0234156C - tst r2, #0x100 - bne _0234156C - ldrsh r0, [r4, #0xe0] - cmp sl, r0 - ldreqsh r0, [r4, #0xe2] - cmpeq r7, r0 - beq _0234156C - ldr r0, _02341764 ; =0x0237CFBC - ldrb r0, [r0, #8] - cmp r0, #0 - beq _02341558 - ldrb r0, [fp, #0xc9] - cmp r0, r1 - beq _0234156C -_02341558: - add r0, sp, #4 - strb r5, [r0, r6, lsl #1] - add r0, r0, r6, lsl #1 - strb r7, [r0, #1] - add r6, r6, #1 -_0234156C: - add r7, r7, #1 - cmp r7, #0x20 - blt _023414D4 - add sl, sl, #1 - cmp sl, #0x38 - blt _023414C4 - cmp r6, #0 - beq _023415F4 - adds r0, r8, #1 - beq _023415F4 - add r0, sp, #4 - mov r1, r6 - bl ShuffleSpawnPositions - mov r0, r6 - bl DungeonRandInt - mov r5, #0 - mov r7, r0 - add r8, r8, #1 - mov sl, r5 - add r4, sp, #4 - b _023415EC -_023415C0: - add r1, r4, r7, lsl #1 - ldrb r0, [r4, r7, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - ldrh r1, [r0, #2] - add r7, r7, #1 - cmp r7, r6 - orr r1, r1, #8 - strh r1, [r0, #2] - moveq r7, sl - add r5, r5, #1 -_023415EC: - cmp r5, r8 - blt _023415C0 -_023415F4: - add r0, sb, #0x4000 - ldrb r2, [r0, #0xc4] - cmp r2, #0 - beq _02341754 - ldr r1, _02341768 ; =0x022C4660 - ldr r0, [sp] - ldrsh r6, [r1] - cmp r0, #0 - mov r7, #0 - movne r6, #3 - cmp r2, #0 - addne r0, r6, r6, lsl #1 - addne r0, r0, r0, lsr #31 - movne r6, r0, asr #1 - mov r8, #0 - add fp, sp, #4 -_02341634: - mov sl, #0 - and r5, r8, #0xff - add r4, sb, #0xcc00 -_02341640: - mov r0, r8 - mov r1, sl - bl GetTile - ldrh r2, [r0] - and r1, r2, #3 - cmp r1, #1 - bne _023416A0 - ldrb r0, [r0, #7] - cmp r0, #0xff - beq _023416A0 - tst r2, #0x20 - bne _023416A0 - tst r2, #0x100 - bne _023416A0 - tst r2, #0x40 - beq _023416A0 - ldrsh r0, [r4, #0xe0] - cmp r8, r0 - ldreqsh r0, [r4, #0xe2] - cmpeq sl, r0 - strneb r5, [fp, r7, lsl #1] - addne r0, fp, r7, lsl #1 - strneb sl, [r0, #1] - addne r7, r7, #1 -_023416A0: - add sl, sl, #1 - cmp sl, #0x20 - blt _02341640 - add r8, r8, #1 - cmp r8, #0x38 - blt _02341634 - cmp r7, #0 - beq _02341754 - rsb r0, r7, r7, lsl #3 - mov r1, #0xa - bl DivideInt - mov r4, r0 - mov r0, r7, lsl #3 - mov r1, #0xa - bl DivideInt - mov r1, r0 - mov r0, r4 - bl DungeonRandRange - movs r5, r0 - moveq r5, #1 - cmp r5, r6 - add r0, sp, #4 - mov r1, r7 - movge r5, r6 - bl ShuffleSpawnPositions - mov r0, r7 - bl DungeonRandInt - mov r8, #0 - mov r6, r0 - mov sb, r8 - add r4, sp, #4 - b _0234174C -_02341720: - add r1, r4, r6, lsl #1 - ldrb r0, [r4, r6, lsl #1] - ldrb r1, [r1, #1] - bl GetTileSafe - ldrh r1, [r0, #2] - add r6, r6, #1 - cmp r6, r7 - orr r1, r1, #8 - strh r1, [r0, #2] - moveq r6, sb - add r8, r8, #1 -_0234174C: - cmp r8, r5 - blt _02341720 -_02341754: - add sp, sp, #0x204 - add sp, sp, #0xc00 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02341760: .word 0x02353538 -_02341764: .word 0x0237CFBC -_02341768: .word 0x022C4660 - arm_func_end SpawnEnemies - - arm_func_start SetSecondaryTerrainOnWall -SetSecondaryTerrainOnWall: ; 0x0234176C - ldrh r1, [r0] - mov r2, #1 - tst r1, #3 - ldrh r1, [r0] - movne r2, #0 - tst r1, #0x10 - movne r2, #0 - cmp r2, #0 - bxeq lr - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #2 - strh r1, [r0] - bx lr - arm_func_end SetSecondaryTerrainOnWall - - arm_func_start GenerateSecondaryTerrainFormations -GenerateSecondaryTerrainFormations: ; 0x023417AC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x90 - str r1, [sp] - ldrb r1, [r1, #0xd] - tst r1, r0 - beq _02341E60 - mov r0, #8 - bl DungeonRandInt - ldr r1, _02341E68 ; =0x02353030 - ldr r0, [r1, r0, lsl #2] - str r0, [sp, #0x28] - b _02341C20 -_023417DC: - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - movge r6, #0 - movge r0, #1 - strge r6, [sp, #0x18] - strge r0, [sp, #0x1c] - bge _02341810 - mov r6, #0x1f - sub r0, r6, #0x20 - str r0, [sp, #0x1c] - mov r0, #1 - str r0, [sp, #0x18] -_02341810: - mov r0, #0x32 - bl DungeonRandInt - add r0, r0, #0xa - str r0, [sp, #0x14] - mov r0, #2 - mov r1, #0x36 - bl DungeonRandRange - mov r5, r0 - mov r0, #0 - str r0, [sp, #0x20] - mvn r4, #2 -_0234183C: - mov r0, #6 - bl DungeonRandInt - add r0, r0, #2 - str r0, [sp, #0x24] - b _02341BA4 -_02341850: - cmp r5, #0 - blt _023418A0 - cmp r5, #0x38 - bge _023418A0 - mov r0, r5 - mov r1, r6 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341C14 - mov r0, r5 - mov r1, r6 - bl PosIsOutOfBounds - cmp r0, #0 - bne _023418A0 - mov r0, r5 - mov r1, r6 - bl GetTileSafe - bl SetSecondaryTerrainOnWall -_023418A0: - ldr r0, [sp, #0x24] - sub r0, r0, #1 - str r0, [sp, #0x24] - ldr r0, [sp, #0x20] - add r5, r5, r0 - ldr r0, [sp, #0x1c] - adds r6, r6, r0 - bmi _02341BB0 - cmp r6, #0x20 - bge _02341BB0 - ldr r0, [sp, #0x14] - subs r0, r0, #1 - str r0, [sp, #0x14] - bne _02341BA4 - mov fp, #0 -_023418DC: - mov r0, #7 - bl DungeonRandInt - sub r7, r0, #3 - mov r0, #7 - bl DungeonRandInt - add sb, r7, r5 - sub r8, r0, #3 - cmp sb, #2 - blt _02341A2C - cmp sb, #0x36 - bge _02341A2C - add sl, r8, r6 - cmp sl, #2 - blt _02341A2C - cmp sl, #0x1e - bge _02341A2C - add r0, sb, #1 - add r1, sl, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - add r0, sb, #1 - mov r1, sl - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - sub r0, sl, #1 - str r0, [sp, #0xc] - ldr r1, [sp, #0xc] - add r0, sb, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - mov r0, sb - add r1, sl, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - ldr r1, [sp, #0xc] - mov r0, sb - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - sub r0, sb, #1 - add r1, sl, #1 - str r0, [sp, #8] - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - ldr r0, [sp, #8] - mov r1, sl - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - beq _02341A08 - ldr r0, [sp, #8] - ldr r1, [sp, #0xc] - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - bne _02341A2C -_02341A08: - add r0, r5, r7 - add r1, r6, r8 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02341A2C - mov r0, sb - mov r1, sl - bl GetTileSafe - bl SetSecondaryTerrainOnWall -_02341A2C: - add fp, fp, #1 - cmp fp, #0x40 - blt _023418DC - mov fp, r4 -_02341A3C: - add sb, fp, r5 - sub r0, sb, #1 - mov r7, r4 - str r0, [sp, #0x10] -_02341A4C: - cmp sb, #2 - mov r8, #0 - blt _02341B8C - cmp sb, #0x36 - bge _02341B8C - add sl, r7, r6 - cmp sl, #2 - blt _02341B8C - cmp sl, #0x1e - bge _02341B8C - add r0, sb, #1 - add r1, sl, #1 - bl GetTile - ldrh r0, [r0] - mov r1, sl - and r0, r0, #3 - cmp r0, #2 - moveq r0, r8 - addeq r8, r0, #1 - add r0, sb, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - sub r0, sl, #1 - str r0, [sp, #4] - ldr r1, [sp, #4] - add r0, sb, #1 - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - add r1, sl, #1 - and r0, r0, #3 - cmp r0, #2 - mov r0, sb - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - ldr r1, [sp, #4] - and r0, r0, #3 - cmp r0, #2 - mov r0, sb - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - add r1, sl, #1 - and r0, r0, #3 - cmp r0, #2 - ldr r0, [sp, #0x10] - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - mov r1, sl - and r0, r0, #3 - cmp r0, #2 - ldr r0, [sp, #0x10] - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - ldr r1, [sp, #4] - and r0, r0, #3 - cmp r0, #2 - ldr r0, [sp, #0x10] - addeq r8, r8, #1 - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #2 - addeq r8, r8, #1 - cmp r8, #4 - blt _02341B8C - mov r0, sb - add r1, r6, r7 - bl PosIsOutOfBounds - cmp r0, #0 - bne _02341B8C - mov r1, sl - mov r0, sb - bl GetTileSafe - bl SetSecondaryTerrainOnWall -_02341B8C: - add r7, r7, #1 - cmp r7, #3 - ble _02341A4C - add fp, fp, #1 - cmp fp, #3 - ble _02341A3C -_02341BA4: - ldr r0, [sp, #0x24] - cmp r0, #0 - bne _02341850 -_02341BB0: - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _02341BE0 - ldr r0, [sp, #0x18] - cmp r0, #0 - addne r0, r4, #2 - strne r0, [sp, #0x1c] - moveq r0, #1 - streq r0, [sp, #0x1c] - mov r0, #0 - str r0, [sp, #0x20] - b _02341C04 -_02341BE0: - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - addlt r0, r4, #2 - strlt r0, [sp, #0x20] - movge r0, #1 - strge r0, [sp, #0x20] - mov r0, #0 - str r0, [sp, #0x1c] -_02341C04: - cmp r6, #0 - blt _02341C14 - cmp r6, #0x20 - blt _0234183C -_02341C14: - ldr r0, [sp, #0x28] - sub r0, r0, #1 - str r0, [sp, #0x28] -_02341C20: - ldr r0, [sp, #0x28] - cmp r0, #0 - bne _023417DC - mov r4, #0 - b _02341DB0 -_02341C34: - mov r6, #0 - mov r5, r6 - mov sl, r6 - mov sb, r6 - mov r8, #0x38 - mov r7, r6 - mov fp, #0x20 - b _02341C98 -_02341C54: - mov r0, sb - mov r1, r8 - bl DungeonRandRange - mov r5, r0 - mov r0, r7 - mov r1, fp - bl DungeonRandRange - mov r6, r0 - cmp r5, #1 - blt _02341C94 - cmp r5, #0x37 - bge _02341C94 - cmp r6, #1 - blt _02341C94 - cmp r6, #0x1f - blt _02341CA0 -_02341C94: - add sl, sl, #1 -_02341C98: - cmp sl, #0xc8 - blt _02341C54 -_02341CA0: - cmp sl, #0xc8 - beq _02341DAC - mov r8, #0 - mov r1, r8 - mov r2, #1 - mov r7, r8 - add r3, sp, #0x2c - mov r0, #0xa -_02341CC0: - mla sl, r8, r0, r3 - mov sb, r7 -_02341CC8: - cmp r8, #0 - cmpne r8, #9 - cmpne sb, #0 - cmpne sb, #9 - streqb r2, [sl, sb] - strneb r1, [sl, sb] - add sb, sb, #1 - cmp sb, #0xa - blt _02341CC8 - add r8, r8, #1 - cmp r8, #0xa - blt _02341CC0 - mov sb, #0 - mov r7, #1 - add r8, sp, #0x2c - mov fp, #0xa -_02341D08: - mov r0, #8 - bl DungeonRandInt - add sl, r0, #1 - mov r0, #8 - bl DungeonRandInt - mla r1, sl, fp, r8 - add r0, r0, #1 - add r1, r1, r0 - ldrb r0, [r1, #-0xa] - add sb, sb, #1 - cmp r0, #0 - ldreqb r0, [r1, #0xa] - cmpeq r0, #0 - ldreqb r0, [r1, #-1] - cmpeq r0, #0 - ldreqb r0, [r1, #1] - cmpeq r0, #0 - strneb r7, [r1] - cmp sb, #0x50 - blt _02341D08 - mov sb, #0 - add fp, sp, #0x2c -_02341D60: - mov r0, #0xa - mla r7, sb, r0, fp - add r0, sb, r5 - mov sl, #0 - sub r8, r0, #5 -_02341D74: - ldrb r0, [r7, sl] - cmp r0, #0 - bne _02341D94 - add r1, sl, r6 - mov r0, r8 - sub r1, r1, #5 - bl GetTileSafe - bl SetSecondaryTerrainOnWall -_02341D94: - add sl, sl, #1 - cmp sl, #0xa - blt _02341D74 - add sb, sb, #1 - cmp sb, #0xa - blt _02341D60 -_02341DAC: - add r4, r4, #1 -_02341DB0: - ldr r0, [sp] - ldrb r0, [r0, #0x15] - cmp r4, r0 - blt _02341C34 - mov r6, #0 - mov r4, r6 -_02341DC8: - mov r5, r4 -_02341DCC: - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - and r1, r1, #3 - cmp r1, #2 - bne _02341E48 - ldrh r1, [r0] - tst r1, #0x160 - bne _02341E00 - ldrh r1, [r0, #2] - tst r1, #1 - beq _02341E1C -_02341E00: - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] - ldrh r1, [r0] - orr r1, r1, #1 - strh r1, [r0] - b _02341E48 -_02341E1C: - cmp r6, #1 - ble _02341E3C - cmp r6, #0x37 - bge _02341E3C - cmp r5, #1 - ble _02341E3C - cmp r5, #0x1f - blt _02341E48 -_02341E3C: - ldrh r1, [r0] - bic r1, r1, #3 - strh r1, [r0] -_02341E48: - add r5, r5, #1 - cmp r5, #0x20 - blt _02341DCC - add r6, r6, #1 - cmp r6, #0x38 - blt _02341DC8 -_02341E60: - add sp, sp, #0x90 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02341E68: .word 0x02353030 - arm_func_end GenerateSecondaryTerrainFormations - - arm_func_start StairsAlwaysReachable -StairsAlwaysReachable: ; 0x02341E6C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x700 - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, #0 -_02341E84: - mov sl, #0 - add r0, sp, #0 - mov r8, sl - add sb, r0, r4, lsl #5 -_02341E94: - mov r0, r4 - mov r1, sl - bl GetTileSafe - ldrh r1, [r0] - cmp r5, #0 - strb r8, [sb, sl] - ldrneh r2, [r0] - and r1, r1, #3 - bicne r2, r2, #0x8000 - strneh r2, [r0] - cmp r1, #1 - beq _02341ED8 - ldrh r2, [r0] - tst r2, #4 - ldreqb r2, [sb, sl] - orreq r2, r2, #1 - streqb r2, [sb, sl] -_02341ED8: - cmp r1, #2 - bne _02341EF4 - ldrh r0, [r0] - tst r0, #4 - ldreqb r0, [sb, sl] - orreq r0, r0, #2 - streqb r0, [sb, sl] -_02341EF4: - add sl, sl, #1 - cmp sl, #0x20 - blt _02341E94 - add r4, r4, #1 - cmp r4, #0x38 - blt _02341E84 - add r1, sp, #0 - ldr r0, _02342174 ; =0x02353538 - add r2, r1, r7, lsl #5 - ldrb r1, [r2, r6] - ldr r0, [r0] - orr r1, r1, #0x50 - add r0, r0, #0xcc00 - strb r1, [r2, r6] - ldrsh r1, [r0, #0xe4] - cmp r1, r7 - ldreqsh r0, [r0, #0xe6] - cmpeq r0, r6 - movne r0, #0 - bne _0234216C - ldr r0, _02342178 ; =0x0237CFBC - mov r4, #0 - str r4, [r0, #0x24] -_02341F50: - mov r3, #0 - mov r7, r3 - add r4, r4, #1 - add r0, sp, #0 - mov r2, r3 -_02341F64: - mov r8, r2 - add r1, r0, r7, lsl #5 -_02341F6C: - ldrb sb, [r1, r8] - add r6, r1, r8 - tst sb, #0x80 - bne _023420D0 - tst sb, #0x40 - beq _023420D0 - bic sl, sb, #0x40 - and sb, sl, #0xff - orr sb, sb, #0x80 - strb sb, [r6] - cmp r7, #0 - add r3, r3, #1 - ble _02341FB0 - ldrb sb, [r6, #-0x20] - tst sb, #0x83 - orreq sb, sb, #0x40 - streqb sb, [r6, #-0x20] -_02341FB0: - cmp r8, #0 - ble _02341FC8 - ldrb sb, [r6, #-1] - tst sb, #0x83 - orreq sb, sb, #0x40 - streqb sb, [r6, #-1] -_02341FC8: - cmp r7, #0x37 - bge _02341FE0 - ldrb sb, [r6, #0x20] - tst sb, #0x83 - orreq sb, sb, #0x40 - streqb sb, [r6, #0x20] -_02341FE0: - cmp r8, #0x1f - bge _02341FF8 - ldrb sb, [r6, #1] - tst sb, #0x83 - orreq sb, sb, #0x40 - streqb sb, [r6, #1] -_02341FF8: - cmp r7, #0 - cmpgt r8, #0 - ble _0234202C - ldrb sl, [r6, #-0x21] - tst sl, #0x87 - bne _0234202C - ldrb sb, [r6, #-0x20] - tst sb, #1 - bne _0234202C - ldrb sb, [r6, #-1] - tst sb, #1 - orreq sb, sl, #0x40 - streqb sb, [r6, #-0x21] -_0234202C: - cmp r7, #0x37 - bge _02342064 - cmp r8, #0 - ble _02342064 - ldrb sl, [r6, #0x1f] - tst sl, #0x87 - bne _02342064 - ldrb sb, [r6, #0x20] - tst sb, #1 - bne _02342064 - ldrb sb, [r6, #-1] - tst sb, #1 - orreq sb, sl, #0x40 - streqb sb, [r6, #0x1f] -_02342064: - cmp r7, #0 - ble _0234209C - cmp r8, #0x1f - bge _0234209C - ldrb sl, [r6, #-0x1f] - tst sl, #0x87 - bne _0234209C - ldrb sb, [r6, #-0x20] - tst sb, #1 - bne _0234209C - ldrb sb, [r6, #1] - tst sb, #1 - orreq sb, sl, #0x40 - streqb sb, [r6, #-0x1f] -_0234209C: - cmp r7, #0x37 - cmplt r8, #0x1f - bge _023420D0 - ldrb sl, [r6, #0x21] - tst sl, #0x87 - bne _023420D0 - ldrb sb, [r6, #0x20] - tst sb, #1 - bne _023420D0 - ldrb sb, [r6, #1] - tst sb, #1 - orreq sb, sl, #0x40 - streqb sb, [r6, #0x21] -_023420D0: - add r8, r8, #1 - cmp r8, #0x20 - blt _02341F6C - add r7, r7, #1 - cmp r7, #0x38 - blt _02341F64 - cmp r3, #0 - bne _02341F50 - ldr r0, _02342178 ; =0x0237CFBC - mov r8, #0 - str r4, [r0, #0x24] - add r6, sp, #0 - mov r7, r8 - b _02342160 -_02342108: - mov sb, r7 - add r4, r6, r8, lsl #5 - b _02342154 -_02342114: - mov r0, r8 - mov r1, sb - bl GetTileSafe - ldrb r1, [sb, r4] - tst r1, #0x87 - bne _02342150 - cmp r5, #0 - ldrneh r1, [r0] - orrne r1, r1, #0x8000 - strneh r1, [r0] - bne _02342150 - ldrh r0, [r0] - tst r0, #0x100 - moveq r0, #0 - beq _0234216C -_02342150: - add sb, sb, #1 -_02342154: - cmp sb, #0x20 - blt _02342114 - add r8, r8, #1 -_02342160: - cmp r8, #0x38 - blt _02342108 - mov r0, #1 -_0234216C: - add sp, sp, #0x700 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02342174: .word 0x02353538 -_02342178: .word 0x0237CFBC - arm_func_end StairsAlwaysReachable - - arm_func_start ov29_0234217C -ov29_0234217C: ; 0x0234217C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x30 - mov r4, #0 - str r0, [sp] - mov r0, r4 - str r0, [sp, #0x18] - ldr r0, [sp, #0x58] - str r4, [sp, #0x1c] - str r0, [sp, #0x58] - ldr r0, [sp, #0x5c] - str r1, [sp, #4] - str r0, [sp, #0x5c] - ldr r0, [sp, #0x60] - str r2, [sp, #8] - str r0, [sp, #0x60] - ldr r0, [sp, #0x64] - str r3, [sp, #0xc] - str r0, [sp, #0x64] - b _023424B8 -_023421C8: - ldr r0, [sp] - mov r1, #0x1e - mla r8, r4, r1, r0 - ldr r0, [sp, #0x58] - mov sl, #0 - add r0, r0, r4, lsl #2 - str r0, [sp, #0x20] - ldr r0, [sp, #4] - sub r0, r0, #1 - str r0, [sp, #0x28] - ldr r0, [sp, #8] - sub r0, r0, #1 - str r0, [sp, #0x2c] - b _023424A8 -_02342200: - ldr r0, [sp, #4] - cmp r0, #2 - ldr r0, [sp, #0xc] - ldr r2, [r0, sl, lsl #2] - ldr r0, [sp, #0x58] - add sb, r2, #2 - ldr r3, [r0, r4, lsl #2] - ldr r0, [sp, #0xc] - add r5, r3, #2 - add r0, r0, sl, lsl #2 - ldr r1, [r0, #4] - ldr r0, [sp, #0x20] - sub r2, r1, r2 - ldr r0, [r0, #4] - sub r1, r0, r3 - sub r0, r2, #4 - str r0, [sp, #0x14] - sub fp, r1, #4 - movle r1, #0xe - strle r1, [sp, #0x14] - mov r0, #5 - mov r7, r0 - ldr r1, [sp, #8] - movle r0, #0xa - cmp r1, #1 - ldr r1, _023424CC ; =0x000001C2 - moveq r7, #0x10 - mla r1, sl, r1, r8 - str r1, [sp, #0x10] - ldrb r1, [r1, #0xa] - moveq fp, #0x18 - cmp r1, #0 - beq _023423D8 - ldr r2, [sp, #0x18] - ldr r1, [sp, #0x5c] - cmp r2, r1 - beq _0234231C - ldr r1, [sp, #0x14] - bl DungeonRandRange - mov r6, r0 - mov r0, r7 - mov r1, fp - bl DungeonRandRange - mov r7, r0 - ldr r0, [sp, #0x14] - orr r1, r6, #1 - cmp r1, r0 - orr r0, r7, #1 - movlt r6, r1 - cmp r0, fp - movlt r7, r0 - add r0, r7, r7, lsl #1 - add r0, r0, r0, lsr #31 - cmp r6, r0, asr #1 - mov r0, r0, asr #1 - movgt r6, r0 - add r0, r6, r6, lsl #1 - add r0, r0, r0, lsr #31 - cmp r7, r0, asr #1 - mov r0, r0, asr #1 - movgt r7, r0 - ldr r0, [sp, #0x14] - sub r0, r0, r6 - bl DungeonRandInt - add sb, sb, r0 - sub r0, fp, r7 - bl DungeonRandInt - add r5, r5, r0 - add fp, sb, r6 - add r6, r5, r7 - b _0234232C -_0234231C: - ldr r0, [sp, #0x60] - add fp, sb, r0 - ldr r0, [sp, #0x64] - add r6, r5, r0 -_0234232C: - ldr r0, _023424CC ; =0x000001C2 - mul r0, sl, r0 - strh sb, [r8, r0] - add r0, r8, r0 - strh fp, [r0, #4] - strh r5, [r0, #2] - strh r6, [r0, #6] - ldr r0, [sp, #0x1c] - and r0, r0, #0xff - str r0, [sp, #0x24] - b _023423A8 -_02342358: - mov r7, r5 - b _0234239C -_02342360: - mov r0, sb - mov r1, r7 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r7 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, sb - bl GetTileSafe - ldr r1, [sp, #0x24] - add r7, r7, #1 - strb r1, [r0, #7] -_0234239C: - cmp r7, r6 - blt _02342360 - add sb, sb, #1 -_023423A8: - cmp sb, fp - blt _02342358 - ldr r1, [sp, #0x18] - ldr r0, [sp, #0x5c] - cmp r1, r0 - ldrne r0, [sp, #0x10] - movne r1, #1 - strneb r1, [r0, #0x1d] - ldr r0, [sp, #0x1c] - add r0, r0, #1 - str r0, [sp, #0x1c] - b _02342498 -_023423D8: - mov r2, #2 - ldr r0, [sp, #0x28] - mov r7, r2 - cmp sl, #0 - moveq r2, #1 - cmp r4, #0 - moveq r7, #1 - cmp sl, r0 - mov r1, #4 - mov r6, r1 - ldr r0, [sp, #0x2c] - moveq r1, #2 - cmp r4, r0 - add r0, sb, r2 - ldr r2, [sp, #0x14] - moveq r6, #2 - add r2, sb, r2 - sub r1, r2, r1 - bl DungeonRandRange - add r1, r5, fp - sub r1, r1, r6 - mov r6, r0 - add r0, r5, r7 - bl DungeonRandRange - mov r5, r0 - ldr r0, _023424CC ; =0x000001C2 - mul r0, sl, r0 - strh r6, [r8, r0] - add r1, r8, r0 - add r0, r6, #1 - strh r0, [r1, #4] - strh r5, [r1, #2] - add r0, r5, #1 - strh r0, [r1, #6] - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r2, [r0] - mov r1, r5 - bic r2, r2, #3 - strh r2, [r0] - ldrh r2, [r0] - orr r2, r2, #1 - strh r2, [r0] - mov r0, r6 - bl GetTileSafe - mov r1, #0xff - strb r1, [r0, #7] -_02342498: - ldr r0, [sp, #0x18] - add sl, sl, #1 - add r0, r0, #1 - str r0, [sp, #0x18] -_023424A8: - ldr r0, [sp, #4] - cmp sl, r0 - blt _02342200 - add r4, r4, #1 -_023424B8: - ldr r0, [sp, #8] - cmp r4, r0 - blt _023421C8 - add sp, sp, #0x30 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023424CC: .word 0x000001C2 - arm_func_end ov29_0234217C - - arm_func_start ov29_023424D0 -ov29_023424D0: ; 0x023424D0 - ldr r1, _02342510 ; =0x0237CFBC - ldrh r0, [r1, #0xa] - cmp r0, #0 - subne r0, r0, #1 - bne _02342504 - ldr r0, _02342514 ; =0x0235378C - ldr ip, [r0, #4] - ldrh r3, [ip] - add r2, ip, #2 - add r2, r2, #2 - strh r3, [r1, #0xe] - str r2, [r0, #4] - ldrh r0, [ip, #2] -_02342504: - strh r0, [r1, #0xa] - ldrh r0, [r1, #0xe] - bx lr - .align 2, 0 -_02342510: .word 0x0237CFBC -_02342514: .word 0x0235378C - arm_func_end ov29_023424D0 - - arm_func_start ov29_02342518 -ov29_02342518: ; 0x02342518 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldrh r4, [r0] - ldrb ip, [sp, #0x10] - mov lr, #0 - orr r4, r4, #0x100 - strh r4, [r0] - strb lr, [r0, #6] - str ip, [sp] - bl ov29_02342F30 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ov29_02342518 - - arm_func_start ConvertWallsToChasms -ConvertWallsToChasms: ; 0x02342548 - stmdb sp!, {r4, r5, r6, lr} - mov r6, #0 - mov r4, r6 -_02342554: - mov r5, r4 -_02342558: - mov r0, r5 - mov r1, r6 - bl GetTileSafe - ldrh r1, [r0] - add r5, r5, #1 - tst r1, #3 - ldreqh r1, [r0] - orreq r1, r1, #3 - streqh r1, [r0] - cmp r5, #0x38 - blt _02342558 - add r6, r6, #1 - cmp r6, #0x20 - blt _02342554 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ConvertWallsToChasms - - arm_func_start ov29_02342594 -ov29_02342594: ; 0x02342594 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - ldr r2, _023427D8 ; =0x02353538 - ldr r4, _023427DC ; =0x0235378C - ldr sb, [r2] - ldr r3, _023427E0 ; =0x0237CFBC - add r2, sb, #0x12000 - ldr r5, [r2, #0xaa4] - mov r6, #0 - ldr r5, [r5, r1, lsl #2] - mov sl, r0 - add r0, r5, #6 - str r0, [r4, #4] - strh r6, [r3, #0xa] - ldr r0, [r2, #0xaa4] - ldr r0, [r0, r1, lsl #2] - ldrh r0, [r0, #4] - tst r0, #1 - beq _0234274C - ldrsh r1, [sl] - add r0, sb, #0xc000 - str r1, [r0, #0xd24] - ldrsh r1, [sl, #2] - str r1, [r0, #0xd28] - ldrsh r1, [sl, #4] - str r1, [r0, #0xd2c] - ldrsh r1, [sl, #6] - str r1, [r0, #0xd30] - ldrsh r8, [sl, #2] - b _0234273C -_0234260C: - mov r0, #0x14 - mul r0, r6, r0 - str r0, [sp, #4] - add r0, sb, r0 - str r0, [sp, #8] - add r0, sb, r6, lsl #1 - add r1, sb, #0xd60 - str r0, [sp, #0xc] - add r0, r1, #0xc000 - str r0, [sp, #0x10] - add r0, sb, #0xd000 - ldrsh r4, [sl] - mov r5, #0 - str r0, [sp, #0x14] - b _02342728 -_02342648: - bl ov29_023424D0 - mov fp, r0 - mov r0, r4 - mov r1, r8 - bl GetTileSafe - mov r7, r0 - ldr r0, [sp, #0xc] - mov r1, fp - add r0, r0, r5, lsl #4 - add r0, r0, #0xd200 - strh fp, [r0, #0x60] - mov r0, #0 - str r0, [sp] - mov r0, #0xa0 - mul fp, r5, r0 - ldr r0, [sp, #0x10] - mov r3, r8 - add r2, r0, fp - ldr r0, [sp, #4] - add r0, r2, r0 - mov r2, r4 - bl ov29_02342518 - ldr r0, [sp, #8] - ldrb ip, [r7, #7] - add r0, r0, fp - add r0, r0, #0xd60 - add fp, r0, #0xc000 - ldmia fp!, {r0, r1, r2, r3} - mov lr, r7 - stmia lr!, {r0, r1, r2, r3} - ldr r0, [fp] - str r0, [lr] - ldrsh r0, [sl] - add r0, r0, #2 - cmp r4, r0 - blt _02342714 - ldrsh r0, [sl, #4] - sub r0, r0, #2 - cmp r4, r0 - bge _02342714 - ldrsh r0, [sl, #2] - add r0, r0, #2 - cmp r8, r0 - blt _02342714 - ldrsh r0, [sl, #6] - sub r0, r0, #2 - cmp r8, r0 - movlt r0, #0x110 - strlth r0, [r7] - movlt r0, #0xe - strltb r0, [r7, #6] -_02342714: - ldr r0, [sp, #0x14] - strb ip, [r7, #7] - strb ip, [r0, #0x2e0] - add r5, r5, #1 - add r4, r4, #1 -_02342728: - ldrsh r0, [sl, #4] - cmp r4, r0 - blt _02342648 - add r6, r6, #1 - add r8, r8, #1 -_0234273C: - ldrsh r0, [sl, #6] - cmp r8, r0 - blt _0234260C - b _023427D0 -_0234274C: - ldrsh r8, [sl, #2] - add r4, sb, #0xd000 - mov r5, r6 - mov fp, #1 - b _023427C4 -_02342760: - ldrsh sb, [sl] - b _023427B4 -_02342768: - bl ov29_023424D0 - mov r6, r0 - mov r0, sb - mov r1, r8 - bl GetTileSafe - mov r1, r6 - mov r6, r0 - ldrb r7, [r6, #7] - ldrh ip, [r6] - mov r2, sb - mov r3, r8 - orr ip, ip, #0x100 - strh ip, [r6] - strb r5, [r6, #6] - str fp, [sp] - bl ov29_02342F30 - strb r7, [r6, #7] - strb r7, [r4, #0x2e0] - add sb, sb, #1 -_023427B4: - ldrsh r0, [sl, #4] - cmp sb, r0 - blt _02342768 - add r8, r8, #1 -_023427C4: - ldrsh r0, [sl, #6] - cmp r8, r0 - blt _02342760 -_023427D0: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023427D8: .word 0x02353538 -_023427DC: .word 0x0235378C -_023427E0: .word 0x0237CFBC - arm_func_end ov29_02342594 - - arm_func_start ov29_023427E4 -ov29_023427E4: ; 0x023427E4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r6, #3 - str r0, [sp] - mov r7, r6 - mov r5, #0 - mov sb, r6 - mov r4, r6 - ldr r8, _02342B74 ; =0x0237CFBC - b _0234283C -_0234280C: - ldr r2, [r8, #0x38] - ldr r1, [r8, #0x30] - mov r0, r4 - sub r1, r2, r1 - sub r1, r1, #2 - bl DungeonRandRange - mov r6, r0 - cmp r6, #3 - movlt r6, sb - cmp r6, #3 - bge _02342844 - add r5, r5, #1 -_0234283C: - cmp r5, #0x14 - blt _0234280C -_02342844: - mov sb, #3 - mov r5, #0 - mov r4, sb - ldr r8, _02342B74 ; =0x0237CFBC - b _02342888 -_02342858: - ldr r2, [r8, #0x3c] - ldr r1, [r8, #0x34] - mov r0, r4 - sub r1, r2, r1 - sub r1, r1, #2 - bl DungeonRandRange - mov r7, r0 - cmp r7, #3 - movlt r7, sb - cmp r7, #3 - bge _02342890 - add r5, r5, #1 -_02342888: - cmp r5, #0x14 - blt _02342858 -_02342890: - mov r0, #2 - mov r1, #4 - bl DungeonRandRange - mov r5, r0 - mov r4, #0 - b _0234295C -_023428A8: - ldr r0, _02342B74 ; =0x0237CFBC - ldr r1, [r0, #0x38] - ldr r0, [r0, #0x30] - sub r0, r1, r0 - cmp r0, r6 - ble _02342964 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - bge _02342918 - ldr sb, _02342B74 ; =0x0237CFBC - ldr r8, [sb, #0x34] - b _023428F8 -_023428DC: - ldr r0, [sb, #0x30] - mov r1, r8 - bl GetTileSafe - ldrh r1, [r0] - add r8, r8, #1 - bic r1, r1, #0x20 - strh r1, [r0] -_023428F8: - ldr r0, [sb, #0x3c] - cmp r8, r0 - blt _023428DC - ldr r0, _02342B74 ; =0x0237CFBC - ldr r1, [r0, #0x30] - add r1, r1, #1 - str r1, [r0, #0x30] - b _02342958 -_02342918: - ldr sb, _02342B74 ; =0x0237CFBC - ldr r0, [sb, #0x38] - sub r0, r0, #1 - str r0, [sb, #0x38] - ldr r8, [sb, #0x34] - b _0234294C -_02342930: - ldr r0, [sb, #0x38] - mov r1, r8 - bl GetTileSafe - ldrh r1, [r0] - add r8, r8, #1 - bic r1, r1, #0x20 - strh r1, [r0] -_0234294C: - ldr r0, [sb, #0x3c] - cmp r8, r0 - blt _02342930 -_02342958: - add r4, r4, #1 -_0234295C: - cmp r4, r5 - blt _023428A8 -_02342964: - mov r6, #0 - b _02342A20 -_0234296C: - ldr r0, _02342B74 ; =0x0237CFBC - ldr r1, [r0, #0x3c] - ldr r0, [r0, #0x34] - sub r0, r1, r0 - cmp r0, r7 - ble _02342A28 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - bge _023429DC - ldr r8, _02342B74 ; =0x0237CFBC - ldr r4, [r8, #0x30] - b _023429BC -_023429A0: - ldr r1, [r8, #0x34] - mov r0, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #0x20 - strh r1, [r0] -_023429BC: - ldr r0, [r8, #0x38] - cmp r4, r0 - blt _023429A0 - ldr r0, _02342B74 ; =0x0237CFBC - ldr r1, [r0, #0x34] - add r1, r1, #1 - str r1, [r0, #0x34] - b _02342A1C -_023429DC: - ldr r8, _02342B74 ; =0x0237CFBC - ldr r0, [r8, #0x3c] - sub r0, r0, #1 - str r0, [r8, #0x3c] - ldr r4, [r8, #0x30] - b _02342A10 -_023429F4: - ldr r1, [r8, #0x3c] - mov r0, r4 - bl GetTileSafe - ldrh r1, [r0] - add r4, r4, #1 - bic r1, r1, #0x20 - strh r1, [r0] -_02342A10: - ldr r0, [r8, #0x38] - cmp r4, r0 - blt _023429F4 -_02342A1C: - add r6, r6, #1 -_02342A20: - cmp r6, r5 - blt _0234296C -_02342A28: - ldr r4, _02342B74 ; =0x0237CFBC - ldr r6, [r4, #0x30] - b _02342A74 -_02342A34: - ldr r5, [r4, #0x34] - b _02342A64 -_02342A3C: - mov r0, r6 - mov r1, r5 - bl GetTileSafe - ldrh r1, [r0] - tst r1, #0x20 - beq _02342A60 - tst r1, #8 - bicne r1, r1, #0x20 - strneh r1, [r0] -_02342A60: - add r5, r5, #1 -_02342A64: - ldr r0, [r4, #0x3c] - cmp r5, r0 - blt _02342A3C - add r6, r6, #1 -_02342A74: - ldr r3, [r4, #0x38] - cmp r6, r3 - blt _02342A34 - ldr r0, _02342B74 ; =0x0237CFBC - mov r7, #0 - ldr r1, [r0, #0x30] - ldr r2, [r0, #0x34] - add r3, r1, r3 - ldr r1, [r0, #0x3c] - add r0, r3, r3, lsr #31 - mov r0, r0, asr #1 - sub r6, r0, #1 - add r0, r2, r1 - add r0, r0, r0, lsr #31 - mov r1, r0, asr #1 - add r0, r6, #3 - cmp r6, r0 - sub r0, r1, #1 - mov sb, r6 - str r0, [sp, #4] - bge _02342B6C -_02342AC8: - ldr r0, [sp, #4] - mov r8, #0 - add r5, r0, #3 - mov sl, r0 - cmp r0, r5 - bge _02342B58 - ldr r0, _02342B78 ; =0x022C52EC - add fp, r0, r7, lsl #1 -_02342AE8: - mov r0, sb - mov r1, sl - bl GetTileSafe - mov r4, r0 - ldrh r0, [r4] - tst r0, #0x20 - beq _02342B48 - tst r0, #0x40 - bne _02342B48 - tst r0, #8 - bne _02342B48 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, [sp] - mov r2, #6 - mul r3, r8, r2 - ldrb r1, [r1, #0x18] - mov r2, #0x12 - mla r2, r1, r2, fp - ldrsh r1, [r3, r2] - cmp r1, r0 - ldrgth r0, [r4, #2] - orrgt r0, r0, #2 - strgth r0, [r4, #2] -_02342B48: - add sl, sl, #1 - cmp sl, r5 - add r8, r8, #1 - blt _02342AE8 -_02342B58: - add sb, sb, #1 - add r0, r6, #3 - cmp sb, r0 - add r7, r7, #1 - blt _02342AC8 -_02342B6C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02342B74: .word 0x0237CFBC -_02342B78: .word 0x022C52EC - arm_func_end ov29_023427E4 - - arm_func_start ResetInnerBoundaryTileRows -ResetInnerBoundaryTileRows: ; 0x02342B7C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 - mov r5, #0x1e - mov r6, #1 -_02342B8C: - mov r0, r4 - mov r1, r6 - bl GetTileSafe - mov r7, r0 - bl InitializeTile - cmp r4, #0 - cmpne r4, #0x37 - ldreqh r0, [r7] - mov r1, r5 - orreq r0, r0, #0x10 - streqh r0, [r7] - mov r0, r4 - bl GetTileSafe - mov r7, r0 - bl InitializeTile - cmp r4, #0 - cmpne r4, #0x37 - ldreqh r0, [r7] - add r4, r4, #1 - orreq r0, r0, #0x10 - streqh r0, [r7] - cmp r4, #0x38 - blt _02342B8C - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ResetInnerBoundaryTileRows - - arm_func_start ov29_02342BEC -ov29_02342BEC: ; 0x02342BEC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldrh r5, [r0] - ldrh r6, [r0, #2] - add r4, r0, #6 - mov r0, r5, lsl #1 - mul r0, r6, r0 - ldr r3, _02342C60 ; =0x0235378C - ldr r2, _02342C64 ; =0x0237CFBC - mov r1, #0 - str r4, [r3, #4] - strh r1, [r2, #0xa] - bl MemAlloc - mov r7, r0 - mov r8, #0 - mov sl, r7 - mov r4, r8 - b _02342C50 -_02342C30: - mov sb, r4 - b _02342C44 -_02342C38: - bl ov29_023424D0 - strh r0, [sl], #2 - add sb, sb, #1 -_02342C44: - cmp sb, r5 - blt _02342C38 - add r8, r8, #1 -_02342C50: - cmp r8, r6 - blt _02342C30 - mov r0, r7 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02342C60: .word 0x0235378C -_02342C64: .word 0x0237CFBC - arm_func_end ov29_02342BEC - - arm_func_start ov29_02342C68 -ov29_02342C68: ; 0x02342C68 - add r0, r0, #0x8c00 - mvn r1, #0 - strh r1, [r0, #0x1c] - strh r1, [r0, #0x1e] - strh r1, [r0, #0x20] - strh r1, [r0, #0x22] - strh r1, [r0, #0x24] - strh r1, [r0, #0x26] - bx lr - arm_func_end ov29_02342C68 - - arm_func_start SpawnStairs -SpawnStairs: ; 0x02342C8C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - mov r8, r1 - ldrb r0, [r6] - ldrb r1, [r6, #1] - mov r5, r2 - bl GetTileSafe - mov r4, r0 - ldrh r0, [r4, #2] - cmp r5, #0 - orr r0, r0, #1 - bic r0, r0, #2 - strh r0, [r4, #2] - beq _02342D00 - ldr r0, _02342D94 ; =0x0235378C - ldrb r1, [r6] - ldrb r0, [r0] - cmp r0, #0 - ldrne r0, _02342D98 ; =0x0237CFBC - strneh r1, [r0, #0x1c] - ldrneb r1, [r6, #1] - strneh r1, [r0, #0x1e] - bne _02342D20 - add r0, r8, #0x8c00 - strh r1, [r0, #0x24] - ldrb r1, [r6, #1] - strh r1, [r0, #0x26] - str r5, [r8, #8] - b _02342D20 -_02342D00: - ldrb r2, [r6] - add r0, r8, #0x8c00 - ldr r1, _02342D98 ; =0x0237CFBC - strh r2, [r0, #0x20] - ldrb r2, [r6, #1] - strh r2, [r0, #0x22] - ldrb r0, [r4, #7] - strb r0, [r1, #2] -_02342D20: - cmp r5, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - bl GetFloorType - cmp r0, #2 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrb r5, [r4, #7] - mov r7, #0 - mov r4, r7 -_02342D40: - mov r6, r4 -_02342D44: - mov r0, r7 - mov r1, r6 - bl GetTileSafe - ldrh r1, [r0] - add r6, r6, #1 - and r1, r1, #3 - cmp r1, #1 - ldreqb r1, [r0, #7] - cmpeq r1, r5 - ldreqh r1, [r0] - orreq r1, r1, #0x40 - streqh r1, [r0] - ldreqb r0, [r0, #7] - streqb r0, [r8, #5] - cmp r6, #0x20 - blt _02342D44 - add r7, r7, #1 - cmp r7, #0x38 - blt _02342D40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02342D94: .word 0x0235378C -_02342D98: .word 0x0237CFBC - arm_func_end SpawnStairs - - arm_func_start ov29_02342D9C -ov29_02342D9C: ; 0x02342D9C - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02342EB0 ; =0x02353538 - mov r5, r0 - ldr r0, [r2] - mov r6, r1 - ldr r0, [r0, #0x7cc] - mov r4, #0 - cmp r0, #1 - cmpne r0, #2 - beq _02342EA8 - mov r0, #4 - bl DungeonRngSetSecondary - ldrb r0, [r5, #0x16] - cmp r0, #0 - bne _02342EA4 - ldrb r0, [r6, #0x1a] - cmp r0, #0xff - bne _02342DFC - bl DungeonRand16Bit - and r0, r0, #8 - tst r0, #8 - movne r4, #1 - moveq r4, #2 - b _02342E00 -_02342DFC: - add r4, r0, #1 -_02342E00: - ldr r0, _02342EB0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r0, [r0, #0x98] - cmp r0, #2 - beq _02342E24 - bl ov29_02349208 - cmp r0, #0 - beq _02342E2C -_02342E24: - mov r0, #1 - b _02342E30 -_02342E2C: - mov r0, #0 -_02342E30: - tst r0, #0xff - ldrne r0, _02342EB4 ; =0x0235378C - movne r1, #1 - strneb r1, [r0] - bne _02342EA4 - cmp r4, #0 - beq _02342EA4 - bl DungeonRand16Bit - mov r1, #0x64 - bl DivideInt - mov r5, r1 - ldrb r6, [r6, #0x1b] - bl ov29_023385EC - cmp r0, #0 - beq _02342E94 - ldr r1, _02342EB8 ; =0x022C4850 - mov r0, r6, lsl #8 - ldr r1, [r1] - bl MultiplyByFixedPoint - mov r6, r0 - mov r0, #0 - bl ov29_02338604 - mov r0, r6, asr #7 - add r0, r6, r0, lsr #24 - mov r6, r0, asr #8 -_02342E94: - cmp r5, r6 - ldrhs r0, _02342EB4 ; =0x0235378C - movhs r1, #1 - strhsb r1, [r0] -_02342EA4: - bl DungeonRngSetPrimary -_02342EA8: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02342EB0: .word 0x02353538 -_02342EB4: .word 0x0235378C -_02342EB8: .word 0x022C4850 - arm_func_end ov29_02342D9C - - arm_func_start ov29_02342EBC -ov29_02342EBC: ; 0x02342EBC - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_023384C0 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, pc} - ldr r1, _02342F04 ; =0x022C484C - mov r0, r4, lsl #8 - ldr r1, [r1] - bl MultiplyByFixedPoint - mov r4, r0 - mov r0, #0 - bl ov29_023384D8 - mov r0, r4, asr #7 - add r0, r4, r0, lsr #24 - mov r0, r0, lsl #8 - mov r0, r0, asr #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_02342F04: .word 0x022C484C - arm_func_end ov29_02342EBC - - arm_func_start ov29_02342F08 -ov29_02342F08: ; 0x02342F08 - ldr r1, _02342F28 ; =0x0237CFBC - mvn r2, #0 - strh r2, [r1, #0x1c] - ldr r0, _02342F2C ; =0x0235378C - strh r2, [r1, #0x1e] - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_02342F28: .word 0x0237CFBC -_02342F2C: .word 0x0235378C - arm_func_end ov29_02342F08 - - arm_func_start ov29_02342F30 -ov29_02342F30: ; 0x02342F30 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - ldr r4, _02343928 ; =0x00000FFF - mov sb, r1 - and r1, sb, r4 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r6, r0 - mov r5, r2 - mov r4, r3 - cmp r1, #0x10 - blo _02342F78 - ldrh r0, [r6] - bic r0, r0, #3 - strh r0, [r6] - ldrh r0, [r6] - orr r0, r0, #1 - strh r0, [r6] -_02342F78: - cmp r1, #0x62 - bgt _02342FE8 - bge _0234334C - cmp r1, #0x60 - bgt _02342FDC - bge _0234334C - cmp r1, #0xf - addls pc, pc, r1, lsl #2 - b _023433B8 -_02342F9C: ; jump table - b _0234304C ; case 0 - b _02343070 ; case 1 - b _02343094 ; case 2 - b _0234391C ; case 3 - b _023430B8 ; case 4 - b _0234313C ; case 5 - b _02343160 ; case 6 - b _02343184 ; case 7 - b _023431B8 ; case 8 - b _02343244 ; case 9 - b _02343194 ; case 10 - b _02343268 ; case 11 - b _02343290 ; case 12 - b _023432DC ; case 13 - b _02343328 ; case 14 - b _0234391C ; case 15 -_02342FDC: - cmp r1, #0x61 - beq _0234334C - b _023433B8 -_02342FE8: - cmp r1, #0x6b - bgt _02343000 - bge _023431B8 - cmp r1, #0x63 - beq _0234334C - b _023433B8 -_02343000: - cmp r1, #0x6c - bgt _02343010 - beq _02343208 - b _023433B8 -_02343010: - cmp r1, #0x6d - bne _023433B8 - ldr r3, _0234392C ; =0x02353538 - mov r1, r5 - ldr r0, [r3] - mov r2, r4 - add r0, r0, #0x700 - strh r5, [r0, #0xa4] - ldr r0, [r3] - mov r3, #0 - add r0, r0, #0x700 - strh r4, [r0, #0xa6] - mov r0, #0xb - str r3, [sp] - bl ov29_022ED970 -_0234304C: - ldrh r1, [r6] - mov r0, #0 - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #1 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343070: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - bic r1, r1, #0x100 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343094: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x10 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_023430B8: - ldrh r2, [r6] - mov r0, r5, lsl #0x10 - mov r1, r4, lsl #0x10 - bic r2, r2, #3 - strh r2, [r6] - ldrh r4, [r6] - mov r3, sb, asr #0xc - ldr r2, _0234392C ; =0x02353538 - orr r4, r4, #1 - strh r4, [r6] - ldr r4, [r2] - mov r5, r0, asr #0x10 - add r0, r4, #0xcc00 - strh r5, [r0, #0xe0] - ldr r0, [r2] - mov r4, r1, asr #0x10 - add r0, r0, #0xcc00 - strh r4, [r0, #0xe2] - ldr r1, [r2] - and r0, r3, #0xff - add r1, r1, #0xcc00 - strh r5, [r1, #0xec] - ldr r1, [r2] - add r1, r1, #0xcc00 - strh r4, [r1, #0xee] - bl ov29_0234396C - ldr r1, _0234392C ; =0x02353538 - mov r2, #0 - ldr r1, [r1] - add r1, r1, #0xc000 - strb r0, [r1, #0xd0c] - strb r2, [r6, #7] - b _0234391C -_0234313C: - ldrh r1, [r6] - mov r0, #0 - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #2 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343160: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #3 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343184: - ldr r0, _02343930 ; =0x0237CFC0 - mov r1, #1 - strb r1, [r0] - bl ov29_023365E8 -_02343194: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x13 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_023431B8: - ldrh r2, [r6] - ldr r1, _0234392C ; =0x02353538 - mov r0, #0 - bic r2, r2, #3 - strh r2, [r6] - ldrh r2, [r6] - orr r2, r2, #1 - strh r2, [r6] - ldrh r2, [r6, #2] - orr r2, r2, #1 - bic r2, r2, #2 - strh r2, [r6, #2] - strb r0, [r6, #7] - ldr r0, [r1] - add r0, r0, #0xcc00 - strh r5, [r0, #0xe4] - ldr r0, [r1] - add r0, r0, #0xcc00 - strh r4, [r0, #0xe6] - b _0234391C -_02343208: - ldrh r1, [r6] - mov r0, #0 - orr r1, r1, #0x800 - strh r1, [r6] - ldrh r1, [r6] - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #1 - strh r1, [r6] - ldrh r1, [r6, #2] - bic r1, r1, #2 - strh r1, [r6, #2] - strb r0, [r6, #7] - b _0234391C -_02343244: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #1 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343268: - ldrh r1, [r6] - mov r0, #0 - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #1 - orr r1, r1, #0x800 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343290: - bl ov29_023361D4 - ldrh r1, [r6] - cmp r0, #0 - moveq r2, #1 - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - movne r2, #0 - mov r0, #0 - orr r1, r1, r2 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x1000 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x810 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_023432DC: - bl ov29_023361D4 - ldrh r1, [r6] - cmp r0, #0 - moveq r2, #1 - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - movne r2, #0 - mov r0, #0 - orr r1, r1, r2 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x810 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x2000 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_02343328: - ldrh r1, [r6] - mov r0, #0xff - bic r1, r1, #3 - strh r1, [r6] - ldrh r1, [r6] - orr r1, r1, #0x10 - strh r1, [r6] - strb r0, [r6, #7] - b _0234391C -_0234334C: - ldr r2, _0234392C ; =0x02353538 - mov r3, sb, asr #0xc - ldr r0, [r2] - sub r7, r1, #0x5f - add r0, r0, r7, lsl #2 - add r0, r0, #0xcc00 - strh r5, [r0, #0xec] - ldr r1, [r2] - and r0, r3, #0xff - add r1, r1, r7, lsl #2 - add r1, r1, #0xcc00 - strh r4, [r1, #0xee] - bl ov29_0234396C - ldr r1, _0234392C ; =0x02353538 - mov r2, #0 - ldr r1, [r1] - add r1, r1, r7 - add r1, r1, #0xc000 - strb r0, [r1, #0xd0c] - ldrh r0, [r6] - bic r0, r0, #3 - strh r0, [r6] - ldrh r0, [r6] - orr r0, r0, #1 - strh r0, [r6] - strb r2, [r6, #7] - b _0234391C -_023433B8: - cmp r1, #0x10 - blo _0234391C - ldr r0, _02343934 ; =0x000001FF - cmp r1, r0 - bhi _0234391C - sub r1, r1, #0x10 - mov r0, #0xc - smulbb r2, r1, r0 - ldr r0, _02343938 ; =0x023502F4 - ldr r1, _0234393C ; =0x023502EC - ldr r8, [r0, r2] - ldr sl, [r1, r2] - ldrb r0, [r8, #2] - ldr r1, _02343940 ; =0x023502F0 - strb r0, [r6, #7] - ldrsh r0, [sl] - ldr r7, [r1, r2] - cmp r0, #0 - ldrneb r1, [sp, #0x58] - cmpne r1, #0 - beq _02343678 - cmp r0, #0xb2 - bne _02343468 - ldr r0, _0234392C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r0, [r0, #0x98] - cmp r0, #2 - cmpne r0, #3 - beq _02343678 - mov r0, #0x17 - bl GetPerformanceFlagWithChecks - cmp r0, #0 - bne _02343678 - ldr r1, [sl, #4] - mov r0, #0 - str r1, [sp] - str r0, [sp, #4] - ldrsh r0, [sl] - ldrsh r3, [sl, #2] - mov r1, r5 - mov r2, r4 - bl ov29_02344430 - b _02343678 -_02343468: - bl IsTreasureBox - cmp r0, #0 - ldrsh r0, [sl] - beq _02343548 - str r0, [sp, #0x14] - mov r0, r0 - ldr sl, [sl, #4] - bl IsTreasureBox - cmp r0, #0 - bne _023434B0 - mov r1, r5 - mov r2, r4 - str sl, [sp] - mov r3, #0 - mov r0, #0x49 - str r3, [sp, #4] - bl ov29_02344430 - b _02343678 -_023434B0: - ldr r0, _0234392C ; =0x02353538 - ldr r0, [r0] - ldrb fp, [r0, #0x748] - bl IsGoldenChamber - cmp r0, #0 - beq _023434D8 - ldr r0, _02343944 ; =0x022C4B34 - bl ov29_023442B8 - mov r3, r0 - b _02343528 -_023434D8: - bl IsSecretRoom - cmp r0, #0 - beq _023434F0 - bl ov29_022E7BD0 - mov r3, r0 - b _02343528 -_023434F0: - ldr r0, _02343948 ; =0x02353050 - b _02343504 -_023434F8: - cmp fp, r1 - beq _02343510 - add r0, r0, #8 -_02343504: - ldrb r1, [r0] - cmp r1, #0 - bne _023434F8 -_02343510: - cmp r1, #0 - moveq r3, #0x49 - beq _02343528 - ldr r0, [r0, #4] - bl ov29_023442B8 - mov r3, r0 -_02343528: - ldr r0, [sp, #0x14] - mov r1, r5 - str sl, [sp] - mov sl, #0 - mov r2, r4 - str sl, [sp, #4] - bl ov29_02344430 - b _02343678 -_02343548: - ldr r2, _0234394C ; =0x00000578 - cmp r0, r2 - bne _02343580 - bl GetSpecialTargetItem - ldr r2, [sl, #4] - mov r1, #0 - orr r2, r2, #0x80 - str r2, [sp] - str r1, [sp, #4] - ldrsh r3, [sl, #2] - mov r1, r5 - mov r2, r4 - bl ov29_02344430 - b _02343678 -_02343580: - add r1, r2, #1 - cmp r0, r1 - bne _023435BC - bl GetSpecialTargetItem - ldr r1, [sl, #4] - mov r3, r0 - orr r2, r1, #0x80 - ldr r0, _02343950 ; =0x00000181 - mov r1, r5 - str r2, [sp] - mov r2, #0 - str r2, [sp, #4] - mov r2, r4 - bl ov29_02344430 - b _02343678 -_023435BC: - add r1, r2, #0xa - cmp r0, r1 - blt _02343658 - add r1, r2, #0x13 - cmp r0, r1 - bgt _02343658 - mov r0, #0xc - bl DungeonRandInt - mov r0, r0, lsl #0x10 - ldrsh r2, [sl] - ldr r1, _02343954 ; =0xFFFFFA7E - str r0, [sp, #0x20] - add r0, r2, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - str r0, [sp, #0x18] - mov r0, #4 - bl DungeonRandInt - mov fp, r0, lsl #0x10 - ldr r0, [sp, #0x18] - mov r1, #0xa - bl DivideInt - ldr r3, [sl, #4] - ldr r0, [sp, #0x20] - str r3, [sp] - mov r2, r0, asr #0xf - mov sl, fp, asr #0xf - mov r0, #1 - mov r3, r1 - str r0, [sp, #4] - ldr fp, _02343958 ; =0x023534F0 - ldr r0, _0234395C ; =0x0234FDFC - ldr r3, [fp, r3, lsl #2] - ldrsh r0, [r0, r2] - ldrsh r3, [r3, sl] - mov r1, r5 - mov r2, r4 - bl ov29_02344430 - b _02343678 -_02343658: - ldr r2, [sl, #4] - mov r1, #1 - str r2, [sp] - str r1, [sp, #4] - ldrsh r3, [sl, #2] - mov r1, r5 - mov r2, r4 - bl ov29_02344430 -_02343678: - ldrsh r0, [r7] - bl ov29_02344190 - movs fp, r0 - beq _023438BC - mov r0, sb, asr #0xc - and r0, r0, #0xff - bl ov29_0234396C - mov r1, #0 - str r1, [sp, #8] - ldrb r1, [r7, #2] - str r1, [sp, #0x10] - str r0, [sp, #0xc] - ldrb sb, [r7, #3] - ldr r0, [sp, #0x10] - mov r1, #0xc - smulbb r0, r0, r1 - ldr sl, [sp, #8] - str r0, [sp, #0x1c] - ldrsh r7, [r7] - b _023436FC -_023436C8: - mov r0, sl - bl GetExplorerMazeMonster - ldrb r0, [r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #1 - strne r0, [sp, #8] - bne _02343704 - add r0, sl, #1 - mov r0, r0, lsl #0x10 - mov sl, r0, asr #0x10 -_023436FC: - cmp sl, #4 - blt _023436C8 -_02343704: - ldr r0, _02343960 ; =0x00000229 - cmp fp, r0 - bne _023437C8 - ldr r0, [sp, #8] - cmp r0, #0 - beq _02343790 - mov r0, #0 - cmp sb, #0xb - cmp sb, #0xc - moveq r0, #1 - cmp sb, #0xd - moveq r0, #2 - cmp sb, #0xe - moveq r0, #3 - bl GetExplorerMazeMonster - ldrb r1, [r0] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _023438BC - ldrsh r3, [r0, #4] - mov r2, #0 - mov r1, #1 - strh r3, [sp, #0x24] - ldrb r3, [r0, #1] - add r0, sp, #0x24 - strh r3, [sp, #0x2c] - strb sb, [sp, #0x26] - str r2, [sp, #0x28] - strb r2, [sp, #0x32] - strh r5, [sp, #0x2e] - strh r4, [sp, #0x30] - bl SpawnMonster - b _023438BC -_02343790: - mov r0, #0x3c - strh r0, [sp, #0x24] - bl GetMonsterLevelToSpawn - mov r2, #0 - strh r0, [sp, #0x2c] - add r0, sp, #0x24 - mov r1, #1 - strb sb, [sp, #0x26] - str r2, [sp, #0x28] - strb r2, [sp, #0x32] - strh r5, [sp, #0x2e] - strh r4, [sp, #0x30] - bl SpawnMonster - b _023438BC -_023437C8: - cmp fp, #0 - beq _023438BC - mov r1, #0 - cmp sb, #6 - cmpne sb, #0xa - str r1, [sp, #0x28] - strb r1, [sp, #0x32] - ldreq r1, _02343964 ; =0x022C5938 - ldreq r0, [sp, #0x1c] - strh fp, [sp, #0x24] - ldreqsh r0, [r1, r0] - strb sb, [sp, #0x26] - strh r5, [sp, #0x2e] - strh r4, [sp, #0x30] - streqh r0, [sp, #0x2c] - beq _02343898 - cmp sb, #1 - bne _0234382C - ldr r0, _0234392C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawLevel - strh r0, [sp, #0x2c] - b _02343898 -_0234382C: - cmp sb, #4 - bne _02343850 - ldr r0, _0234392C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawLeaderLevel - strh r0, [sp, #0x2c] - b _02343898 -_02343850: - cmp sb, #5 - bne _02343874 - ldr r0, _0234392C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawMinionLevel - strh r0, [sp, #0x2c] - b _02343898 -_02343874: - add r0, r0, #0x25c - cmp r7, r0 - strneh r1, [sp, #0x2c] - bne _02343898 - ldr r1, _0234392C ; =0x02353538 - ldr r0, _02343968 ; =0x0002C9E6 - ldr r1, [r1] - ldrsh r0, [r1, r0] - strh r0, [sp, #0x2c] -_02343898: - add r0, sp, #0x24 - mov r1, #1 - bl SpawnMonster - cmp sb, #6 - cmpne sb, #0xa - bne _023438BC - ldr r1, [sp, #0x10] - ldr r2, [sp, #0xc] - bl ov29_022FBE58 -_023438BC: - ldrb r0, [r8] - cmp r0, #0x19 - ldrneb r1, [sp, #0x58] - cmpne r1, #0 - beq _023438F8 - ldrb r1, [r8, #3] - mov r2, r4 - tst r1, #1 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff - str r1, [sp] - ldrb r3, [r8, #1] - mov r1, r5 - bl ov29_022ED970 -_023438F8: - ldrb r0, [r8, #3] - tst r0, #8 - beq _0234391C - ldrh r0, [r6] - bic r0, r0, #3 - strh r0, [r6] - ldrh r0, [r6] - orr r0, r0, #2 - strh r0, [r6] -_0234391C: - mov r0, #0 - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02343928: .word 0x00000FFF -_0234392C: .word 0x02353538 -_02343930: .word 0x0237CFC0 -_02343934: .word 0x000001FF -_02343938: .word 0x023502F4 -_0234393C: .word 0x023502EC -_02343940: .word 0x023502F0 -_02343944: .word 0x022C4B34 -_02343948: .word 0x02353050 -_0234394C: .word 0x00000578 -_02343950: .word 0x00000181 -_02343954: .word 0xFFFFFA7E -_02343958: .word 0x023534F0 -_0234395C: .word 0x0234FDFC -_02343960: .word 0x00000229 -_02343964: .word 0x022C5938 -_02343968: .word 0x0002C9E6 - arm_func_end ov29_02342F30 - - arm_func_start ov29_0234396C -ov29_0234396C: ; 0x0234396C - cmp r0, #0 - moveq r0, #0xff - subne r0, r0, #1 - andne r0, r0, #0xff - bx lr - arm_func_end ov29_0234396C - - arm_func_start ov29_02343980 -ov29_02343980: ; 0x02343980 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - mov r4, r7 - mov r5, r7 -_02343990: - mov r6, r5 -_02343994: - mov r0, r6 - mov r1, r7 - bl GetTileSafe - ldrb r1, [r0, #6] - cmp r1, #0x10 - blo _023439BC - mov r2, r6 - mov r3, r7 - str r4, [sp] - bl ov29_02342F30 -_023439BC: - add r6, r6, #1 - cmp r6, #0x38 - blt _02343994 - add r7, r7, #1 - cmp r7, #0x20 - blt _02343990 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_02343980 - - arm_func_start ov29_023439D8 -ov29_023439D8: ; 0x023439D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r4, _02343CD0 ; =0x02353538 - mov sb, r1 - ldr r4, [r4] - mov sl, r0 - add r1, r4, #0x4000 - ldrb r1, [r1, #0xc5] - str r2, [sp, #4] - cmp r1, #0 - bne _02343CC0 - bl ov29_023361D4 - ldrsh r1, [sl, #4] - cmp r0, #0 - str r0, [sp, #8] - strh r1, [sp, #0xc] - ldrsh r0, [sl, #6] - sub r0, r0, #1 - strh r0, [sp, #0xe] - ldrb fp, [sl, #0x25] - bne _02343C24 - ldrsh r0, [sl, #6] - sub r8, r0, #0x15 - b _02343B68 -_02343A38: - ldrsh r0, [sl, #4] - sub r4, r0, #0x14 - b _02343B54 -_02343A44: - ldr r0, _02343CD0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0xc000 - ldr r1, [r0, #0xd24] - ldr r2, [r0, #0xd28] - subs r5, r4, r1 - sub r6, r8, r2 - bmi _02343B50 - cmp r6, #0 - blt _02343B50 - cmp r5, #8 - cmplt r6, #8 - bge _02343B50 - add r1, r1, #1 - cmp r4, r1 - addge r1, r2, #1 - cmpge r8, r1 - blt _02343B50 - ldr r1, [r0, #0xd2c] - sub r1, r1, #1 - cmp r4, r1 - ldrlt r0, [r0, #0xd30] - sublt r0, r0, #1 - cmplt r8, r0 - bge _02343B50 - mov r0, r4 - mov r1, r8 - bl GetTileSafe - mov r7, r0 - ldrh r0, [r7] - tst r0, #0x100 - beq _02343B0C - mov r0, #0xa0 - mul r1, r5, r0 - mov r0, #0x14 - ldr r2, _02343CD0 ; =0x02353538 - mul r0, r6, r0 - ldr r2, [r2] - add r2, r2, r1 - add r2, r0, r2 - add r2, r2, #0xcd00 - ldrh r2, [r2, #0x60] - strh r2, [r7] - ldr r2, _02343CD0 ; =0x02353538 - ldr r2, [r2] - add r1, r2, r1 - add r0, r0, r1 - add r0, r0, #0xcd00 - ldrh r0, [r0, #0x62] - strh r0, [r7, #2] -_02343B0C: - mov r0, #1 - str r0, [sp] - ldr r1, _02343CD0 ; =0x02353538 - mov r0, r7 - ldr r1, [r1] - mov r2, r4 - add r1, r1, r5, lsl #4 - add r1, r1, r6, lsl #1 - add r1, r1, #0xd200 - ldrh r1, [r1, #0x60] - mov r3, r8 - bl ov29_02342F30 - ldrh r0, [r7, #2] - cmp fp, #0xff - orr r0, r0, #3 - strh r0, [r7, #2] - strneb fp, [r7, #7] -_02343B50: - add r4, r4, #1 -_02343B54: - ldrsh r0, [sl, #4] - add r0, r0, #0x14 - cmp r4, r0 - ble _02343A44 - add r8, r8, #1 -_02343B68: - ldrsh r1, [sl, #6] - add r0, r1, #0x13 - cmp r8, r0 - ble _02343A38 - sub r4, r1, #0x15 - b _02343C14 -_02343B80: - ldrsh r0, [sl, #4] - ldr r6, _02343CD0 ; =0x02353538 - sub r5, r0, #0x14 - b _02343C00 -_02343B90: - ldr r0, [r6] - add r0, r0, #0xc000 - ldr r7, [r0, #0xd24] - ldr r2, [r0, #0xd28] - subs r3, r5, r7 - sub r1, r4, r2 - bmi _02343BFC - cmp r1, #0 - blt _02343BFC - cmp r3, #8 - cmplt r1, #8 - bge _02343BFC - add r1, r7, #1 - cmp r5, r1 - addge r1, r2, #1 - cmpge r4, r1 - blt _02343BFC - ldr r1, [r0, #0xd2c] - sub r1, r1, #1 - cmp r5, r1 - ldrlt r0, [r0, #0xd30] - sublt r0, r0, #1 - cmplt r4, r0 - bge _02343BFC - mov r0, r5 - mov r1, r4 - bl ov29_02336694 -_02343BFC: - add r5, r5, #1 -_02343C00: - ldrsh r0, [sl, #4] - add r0, r0, #0x14 - cmp r5, r0 - ble _02343B90 - add r4, r4, #1 -_02343C14: - ldrsh r0, [sl, #6] - add r0, r0, #0x13 - cmp r4, r0 - ble _02343B80 -_02343C24: - ldr r0, _02343CD0 ; =0x02353538 - mov r2, #1 - ldr r0, [r0] - ldr r1, _02343CD4 ; =0xFFFFCFEF - add r0, r0, #0x4000 - strb r2, [r0, #0xc5] - ldr r0, [sp, #8] - ldrh r2, [sb] - cmp r0, #0 - and r0, r2, r1 - strh r0, [sb] - beq _02343C6C - ldrh r0, [sb] - bic r0, r0, #3 - strh r0, [sb] - ldrh r0, [sb] - orr r0, r0, #1 - strh r0, [sb] -_02343C6C: - ldrsh r1, [sl, #6] - ldrsh r0, [sl, #4] - sub r1, r1, #1 - bl ov29_02336694 - bl ov29_02336A4C - bl ov29_02336F4C - mov r0, #0xc - bl IsCurrentMissionType - cmp r0, #0 - moveq r1, #1 - movne r1, #0 - add r0, sp, #0xc - and r1, r1, #0xff - bl ov29_022E6694 - ldr r1, [sp, #4] - mov r0, sl - bl LogMessageByIdWithPopupCheckUser - mov r0, #0x14 - mov r1, #0x3c - bl ov29_022EA370 - b _02343CC8 -_02343CC0: - mov r1, r3 - bl LogMessageByIdWithPopupCheckUser -_02343CC8: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02343CD0: .word 0x02353538 -_02343CD4: .word 0xFFFFCFEF - arm_func_end ov29_023439D8 - - arm_func_start ov29_02343CD8 -ov29_02343CD8: ; 0x02343CD8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r1, [r4, #6] - ldrsh r0, [r4, #4] - sub r1, r1, #1 - bl GetTileSafe - mov r1, r0 - ldrh r0, [r1] - tst r0, #0x1000 - bne _02343D10 - ldr r1, _02343D28 ; =0x00000B94 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r4, pc} -_02343D10: - ldr r2, _02343D2C ; =0x00000B93 - mov r0, r4 - add r3, r2, #1 - bl ov29_023439D8 - bl ov29_02339CE8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02343D28: .word 0x00000B94 -_02343D2C: .word 0x00000B93 - arm_func_end ov29_02343CD8 - - arm_func_start ov29_02343D30 -ov29_02343D30: ; 0x02343D30 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrsh r1, [r5, #6] - ldrsh r0, [r5, #4] - sub r1, r1, #1 - bl GetTileSafe - mov r4, r0 - ldrh r0, [r4] - tst r0, #0x2000 - bne _02343D68 - ldr r1, _02343D88 ; =0x00000B95 - mov r0, r5 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, r4, r5, pc} -_02343D68: - bl ov29_02348BE8 - ldr r2, _02343D8C ; =0x00000B93 - mov r0, r5 - mov r1, r4 - add r3, r2, #2 - bl ov29_023439D8 - bl ov29_02339CE8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02343D88: .word 0x00000B95 -_02343D8C: .word 0x00000B93 - arm_func_end ov29_02343D30 - - arm_func_start LoadFixedRoomData -LoadFixedRoomData: ; 0x02343D90 - stmdb sp!, {r3, lr} - ldr r0, _02343DBC ; =0x02353794 - ldr r1, _02343DC0 ; =0x02353110 - ldr r0, [r0] - mov r2, #0 - bl LoadFileFromRom__02008C3C - ldr r0, _02343DBC ; =0x02353794 - ldr r0, [r0] - ldr r1, [r0], #8 - bl HandleSir0Translation - ldmia sp!, {r3, pc} - .align 2, 0 -_02343DBC: .word 0x02353794 -_02343DC0: .word 0x02353110 - arm_func_end LoadFixedRoomData - - arm_func_start ov29_02343DC4 -ov29_02343DC4: ; 0x02343DC4 - ldr r0, _02343DD4 ; =0x02353794 - ldr r0, [r0] - ldr r0, [r0, #8] - bx lr - .align 2, 0 -_02343DD4: .word 0x02353794 - arm_func_end ov29_02343DC4 - - arm_func_start ov29_02343DD8 -ov29_02343DD8: ; 0x02343DD8 - stmdb sp!, {r3, lr} - ldr r0, _02343E1C ; =0x02353794 - ldr r0, [r0] - bl PointsToZero - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02343E1C ; =0x02353794 - ldr r0, [r0] - bl UnloadFile - ldr r0, _02343E1C ; =0x02353794 - ldr r0, [r0] - bl ZInit8 - ldr r0, _02343E1C ; =0x02353794 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02343E1C: .word 0x02353794 - arm_func_end ov29_02343DD8 - - arm_func_start ov29_02343E20 -ov29_02343E20: ; 0x02343E20 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - movs r4, r2 - mov sl, r0 - str r1, [sp] - str r3, [sp, #4] - moveq r0, #0 - beq _0234402C - bl LoadFixedRoomData - ldr r0, _02344034 ; =0x02353794 - ldr r0, [r0] - ldr r0, [r0, #8] - ldr r0, [r0, r4, lsl #2] - ldrh r4, [r0] - ldrh r5, [r0, #2] - bl ov29_02342BEC - mul fp, r4, r5 - mov sb, #0 - str r0, [sp, #8] - mov r4, r0 - mov r5, sb - b _02344014 -_02343E78: - ldrh r2, [r4] - ldr r1, _02344038 ; =0x00000FFF - ldr r0, [sp] - and r2, r2, r1 - cmp sb, r0 - bge _0234401C - cmp r2, #0x10 - blt _0234400C - sub r0, r1, #0xe00 - cmp r2, r0 - bgt _0234400C - ldr r1, _0234403C ; =0x023502EC - sub r2, r2, #0x10 - mov r0, #0xc - smlabb r0, r2, r0, r1 - ldr r6, [r0, #4] - ldrsh r0, [r6] - cmp r0, #0 - ldrne r1, _02344040 ; =0x00000229 - cmpne r0, r1 - ldrne r1, _02344044 ; =0x00000483 - cmpne r0, r1 - beq _0234400C - bl ov29_02344190 - movs r8, r0 - beq _0234400C - mov r7, #0 - b _02343EFC -_02343EE8: - add r0, sl, r7, lsl #3 - bl GetMonsterIdFromSpawnEntry - cmp r8, r0 - beq _02343F04 - add r7, r7, #1 -_02343EFC: - cmp r7, sb - blt _02343EE8 -_02343F04: - cmp r7, sb - bne _0234400C - ldrb r0, [r6, #3] - cmp r0, #1 - bne _02343F40 - ldr r0, _02344048 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawLevel - mov r1, r0 - add r0, sp, #0xc - mov r2, r8 - bl SetMonsterLevelAndId - b _02343FE8 -_02343F40: - cmp r0, #4 - bne _02343F70 - ldr r0, _02344048 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawLeaderLevel - mov r1, r0 - add r0, sp, #0xc - mov r2, r8 - bl SetMonsterLevelAndId - b _02343FE8 -_02343F70: - cmp r0, #5 - bne _02343FA0 - ldr r0, _02344048 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r0, r0, #0x400 - bl GetOutlawMinionLevel - mov r1, r0 - add r0, sp, #0xc - mov r2, r8 - bl SetMonsterLevelAndId - b _02343FE8 -_02343FA0: - ldrb r3, [r6, #2] - cmp r3, #0 - ldrnesh r1, [r6] - ldrne r0, _0234404C ; =0x00000485 - cmpne r1, r0 - bne _02343FCC - ldr r1, [sp, #4] - add r0, sp, #0xc - mov r2, r8 - bl SetMonsterLevelAndId - b _02343FE8 -_02343FCC: - mov r0, #0xc - mul r2, r3, r0 - ldr r1, _02344050 ; =0x022C5938 - add r0, sp, #0xc - ldrsh r1, [r1, r2] - mov r2, r8 - bl SetMonsterLevelAndId -_02343FE8: - mov r0, sb, lsl #3 - add r3, sp, #0xc - add sb, sb, #1 - add r2, sl, r0 - mov r1, #4 -_02343FFC: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _02343FFC -_0234400C: - add r5, r5, #1 - add r4, r4, #2 -_02344014: - cmp r5, fp - blt _02343E78 -_0234401C: - ldr r0, [sp, #8] - bl MemFree - bl ov29_02343DD8 - mov r0, sb -_0234402C: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02344034: .word 0x02353794 -_02344038: .word 0x00000FFF -_0234403C: .word 0x023502EC -_02344040: .word 0x00000229 -_02344044: .word 0x00000483 -_02344048: .word 0x02353538 -_0234404C: .word 0x00000485 -_02344050: .word 0x022C5938 - arm_func_end ov29_02343E20 - - arm_func_start ov29_02344054 -ov29_02344054: ; 0x02344054 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #0 - bl MemAlloc - ldr r2, _02344084 ; =0x02353794 - mov r1, #0xc - str r0, [r2] - bl MemZero - ldr r0, _02344084 ; =0x02353794 - ldr r0, [r0] - bl ZInit8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02344084: .word 0x02353794 - arm_func_end ov29_02344054 - - arm_func_start ov29_02344088 -ov29_02344088: ; 0x02344088 - stmdb sp!, {r3, lr} - ldr r0, _023440A8 ; =0x02353794 - ldr r0, [r0] - bl MemFree - ldr r0, _023440A8 ; =0x02353794 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_023440A8: .word 0x02353794 - arm_func_end ov29_02344088 - - arm_func_start ov29_023440AC -ov29_023440AC: ; 0x023440AC - cmp r0, #0 - beq _023440BC - cmp r0, #0xa5 - blo _023440C4 -_023440BC: - mov r0, #1 - bx lr -_023440C4: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _023440D8 ; =0x022C6C77 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_023440D8: .word 0x022C6C77 - arm_func_end ov29_023440AC - - arm_func_start ov29_023440DC -ov29_023440DC: ; 0x023440DC - cmp r0, #0 - beq _023440EC - cmp r0, #0xa5 - blo _023440F4 -_023440EC: - mov r0, #1 - bx lr -_023440F4: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02344108 ; =0x022C6C78 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02344108: .word 0x022C6C78 - arm_func_end ov29_023440DC - - arm_func_start ov29_0234410C -ov29_0234410C: ; 0x0234410C - cmp r0, #0 - beq _0234411C - cmp r0, #0xa5 - blo _02344124 -_0234411C: - mov r0, #1 - bx lr -_02344124: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02344138 ; =0x022C6C79 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02344138: .word 0x022C6C79 - arm_func_end ov29_0234410C - - arm_func_start ov29_0234413C -ov29_0234413C: ; 0x0234413C - ldr ip, _02344144 ; =ov29_023440AC - bx ip - .align 2, 0 -_02344144: .word ov29_023440AC - arm_func_end ov29_0234413C - - arm_func_start ov29_02344148 -ov29_02344148: ; 0x02344148 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0234415C ; =0x022C6C75 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_0234415C: .word 0x022C6C75 - arm_func_end ov29_02344148 - - arm_func_start ov29_02344160 -ov29_02344160: ; 0x02344160 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02344174 ; =0x022C6C76 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02344174: .word 0x022C6C76 - arm_func_end ov29_02344160 - - arm_func_start ov29_02344178 -ov29_02344178: ; 0x02344178 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0234418C ; =0x022C6C74 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_0234418C: .word 0x022C6C74 - arm_func_end ov29_02344178 - - arm_func_start ov29_02344190 -ov29_02344190: ; 0x02344190 - stmdb sp!, {r4, lr} - cmp r0, #0 - ldrne r2, _023442A4 ; =0x00000483 - mov r4, #0 - cmpne r0, r2 - beq _0234429C - add r1, r2, #1 - cmp r0, r1 - bne _023441C0 - bl GetMissionTargetEnemy - mov r4, r0 - b _0234429C -_023441C0: - add r1, r2, #2 - cmp r0, r1 - bne _023441DC - mov r0, r4 - bl GetMissionEnemyMinionGroup - mov r4, r0 - b _0234429C -_023441DC: - add r1, r2, #3 - cmp r0, r1 - bne _023441F4 - bl GetMissionTargetEnemy - mov r4, r0 - b _0234429C -_023441F4: - add r1, r2, #4 - cmp r0, r1 - bne _02344210 - mov r0, r4 - bl GetMissionEnemyMinionGroup - mov r4, r0 - b _0234429C -_02344210: - add r1, r2, #5 - cmp r0, r1 - bne _0234422C - mov r0, #1 - bl GetMissionEnemyMinionGroup - mov r4, r0 - b _0234429C -_0234422C: - sub r1, r2, #0x274 - cmp r0, r1 - bne _02344254 - mov r0, r4 - mov r1, #0x5d - bl LoadScriptVariableValue - tst r0, #0xff - ldrne r4, _023442A8 ; =0x00000467 - ldreq r4, _023442AC ; =0x0000020F - b _0234429C -_02344254: - rsb r1, r2, #0x690 - cmp r0, r1 - bne _02344298 - ldr r0, _023442B0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r1, [r0, #0x98] - cmp r1, #0 - bne _02344288 - ldrsh r0, [r0, #0x4c] - bl GetDungeonMode - cmp r0, #1 - moveq r4, #1 -_02344288: - cmp r4, #0 - movne r4, #0x228 - ldreq r4, _023442B4 ; =0x0000020D - b _0234429C -_02344298: - mov r4, r0 -_0234429C: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_023442A4: .word 0x00000483 -_023442A8: .word 0x00000467 -_023442AC: .word 0x0000020F -_023442B0: .word 0x02353538 -_023442B4: .word 0x0000020D - arm_func_end ov29_02344190 - - arm_func_start ov29_023442B8 -ov29_023442B8: ; 0x023442B8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r2, r4 - mov r0, #0 - b _023442DC -_023442CC: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - add r2, r2, #2 - mov r0, r0, asr #0x10 -_023442DC: - ldrsh r1, [r2] - cmp r1, #0 - bne _023442CC - bl DungeonRandInt - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mov r0, r5, lsl #1 - ldrsh r0, [r4, r0] - cmp r0, #0 - moveq r0, #0x49 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _023443B0 ; =0x00000579 - cmp r0, r1 - ldmltia sp!, {r3, r4, r5, pc} - add r1, r1, #3 - cmp r0, r1 - ldmgtia sp!, {r3, r4, r5, pc} - bl sub_02056880 - bl GetActiveTeamMember - mov r1, r5, lsl #1 - ldrsh r3, [r4, r1] - ldr r2, _023443B0 ; =0x00000579 - mov r4, r0 - cmp r3, r2 - mov r1, #0 - bne _02344354 - ldrsh r0, [r4, #0xc] - bl GetExclusiveItem - mov r1, r0 - b _02344390 -_02344354: - add r0, r2, #1 - cmp r3, r0 - bne _02344374 - ldrsh r0, [r4, #0xc] - mov r1, #1 - bl GetExclusiveItem - mov r1, r0 - b _02344390 -_02344374: - add r0, r2, #2 - cmp r3, r0 - bne _02344390 - ldrsh r0, [r4, #0xc] - mov r1, #2 - bl GetExclusiveItem - mov r1, r0 -_02344390: - cmp r1, #0 - bne _023443A8 - ldrsh r0, [r4, #0xc] - mov r1, #3 - bl GetExclusiveItem - mov r1, r0 -_023443A8: - mov r0, r1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023443B0: .word 0x00000579 - arm_func_end ov29_023442B8 - - arm_func_start ov29_023443B4 -ov29_023443B4: ; 0x023443B4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r7, r0 - mov r0, r6 - mov r5, r2 - mov r4, r3 - bl GetItemCategoryVeneer - cmp r0, #6 - bne _02344400 - cmp r5, #0 - mov r0, r7 - mov r1, r6 - ble _023443F8 - mov r2, #0 - bl InitStandardItem - strh r5, [r7, #2] - b _02344420 -_023443F8: - bl ov29_02344BE4 - b _02344420 -_02344400: - mov r0, r7 - mov r1, r6 - mov r2, #0 - bl InitStandardItem - cmp r5, #0 - strgth r5, [r7, #2] - movle r0, #0 - strleh r0, [r7, #2] -_02344420: - ldrb r0, [r7] - orr r0, r0, r4 - strb r0, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_023443B4 - - arm_func_start ov29_02344430 -ov29_02344430: ; 0x02344430 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldrb ip, [sp, #0x1c] - mov r5, r0 - mov r4, r3 - strh r1, [sp] - strh r2, [sp, #2] - cmp ip, #0 - beq _0234448C - bl IsItemInBag - cmp r0, #0 - add r0, sp, #4 - beq _02344478 - ldr r3, [sp, #0x18] - mov r2, r4 - mov r1, #0x49 - bl ov29_023443B4 - b _023444A0 -_02344478: - ldr r3, [sp, #0x18] - mov r1, r5 - mov r2, r4 - bl ov29_023443B4 - b _023444A0 -_0234448C: - ldr r3, [sp, #0x18] - add r0, sp, #4 - mov r1, r5 - mov r2, r4 - bl ov29_023443B4 -_023444A0: - add r0, sp, #0 - add r1, sp, #4 - mov r2, #1 - bl ov29_02345538 - ldr r0, _023444D0 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3f00 - ldrsh r1, [r0, #0xc2] - add r1, r1, #1 - strh r1, [r0, #0xc2] - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_023444D0: .word 0x02353538 - arm_func_end ov29_02344430 - - arm_func_start ov29_023444D4 -ov29_023444D4: ; 0x023444D4 - stmdb sp!, {r3, lr} - ldr r0, _02344508 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x7e - add r0, r0, #0x700 - bl MemZero - bl IsSecretBazaar__023385C4 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl ov29_022F07D8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02344508: .word 0x02353538 - arm_func_end ov29_023444D4 - - arm_func_start IsHiddenStairsFloor -IsHiddenStairsFloor: ; 0x0234450C - stmdb sp!, {r3, lr} - bl IsSecretBazaar__023385C4 - cmp r0, #0 - bne _02344528 - bl IsSecretRoom - cmp r0, #0 - beq _02344530 -_02344528: - mov r0, #1 - ldmia sp!, {r3, pc} -_02344530: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsHiddenStairsFloor - - arm_func_start IsSecretBazaar__02344538 -IsSecretBazaar__02344538: ; 0x02344538 - ldr ip, _02344540 ; =IsSecretBazaar__023385C4 - bx ip - .align 2, 0 -_02344540: .word IsSecretBazaar__023385C4 - arm_func_end IsSecretBazaar__02344538 - - arm_func_start ov29_02344544 -ov29_02344544: ; 0x02344544 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r1 - bl EntityIsValid__02344AF8 - cmp r0, #0 - beq _02344A58 - mov r0, r4 - bl EntityIsValid__02344AF8 - cmp r0, #0 - beq _02344A58 - ldr r6, [r4, #0xb4] - mov r0, #1 - bl ov29_022EFB20 - mov r0, r5 - mov r1, r4 - mov r2, #1 - bl ov29_022F05B4 - ldrb r0, [r6, #0xbc] - sub r0, r0, #0x10 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _02344A34 -_023445A0: ; jump table - b _023445B4 ; case 0 - b _023445E0 ; case 1 - b _0234471C ; case 2 - b _0234485C ; case 3 - b _02344950 ; case 4 -_023445B4: - ldr r2, _02344A60 ; =0x0237CFFC - mov r3, #0 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl ov29_022F0654 - ldr r0, _02344A64 ; =0x00000F32 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023445E0: - ldr r2, _02344A60 ; =0x0237CFFC - mov r3, #1 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl ov29_022F0654 - ldr r0, _02344A68 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x77e] - cmp r0, #0 - beq _02344620 - ldr r0, _02344A6C ; =0x00000F4C - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344620: - mov r0, #0 - mov r1, #0x64 - bl ov29_0234B09C - ldr r0, _02344A70 ; =0x00000F4A - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - ldr r1, _02344A74 ; =0x02353798 - ldr r0, _02344A78 ; =0x00000F4B - ldr r3, [r1, #4] - mov r1, r4 - mov r2, #0 - bl ov29_022F062C - cmp r0, #0 - bne _02344670 - ldr r0, _02344A7C ; =0x00000F4D - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344670: - bl GetGold - cmp r0, #0x64 - bge _02344690 - ldr r0, _02344A80 ; =0x00000F4E - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344690: - mov r0, #0x64 - bl ov29_022F07BC - ldr r0, _02344A84 ; =0x00000F4F - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - bl ov29_022F05E4 - mov r0, #4 - mov r1, #0x4000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 - mov r0, #4 - mov r1, #0x4000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 - mov r0, r4 - mov r1, #0 - ldr r2, _02344A88 ; =0x000001A7 - bl ov29_022F067C - bl ov29_022F05E4 - ldr r0, _02344A8C ; =0x00000F51 - bl ov29_022F0780 - mov r3, #1 - ldr r1, _02344A68 ; =0x02353538 - mov r0, #0xf50 - ldr r2, [r1] - mov r1, r4 - strb r3, [r2, #0x77e] - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_0234471C: - ldr r2, _02344A60 ; =0x0237CFFC - mov r3, #2 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl ov29_022F0654 - mov r0, #0 - mov r1, #0x64 - bl ov29_0234B09C - ldr r0, _02344A90 ; =0x00000F33 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - ldr r0, _02344A94 ; =0x00000F34 - mov r1, r4 - mov r2, #0 - ldr r3, _02344A74 ; =0x02353798 - ldr r3, [r3, #8] - bl ov29_022F062C - cmp r0, #0 - bne _02344784 - ldr r0, _02344A98 ; =0x00000F35 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344784: - bl IsBagFull - cmp r0, #0 - beq _023447A4 - ldr r0, _02344A9C ; =0x00000F37 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023447A4: - bl GetGold - cmp r0, #0x64 - bge _023447C4 - ldr r0, _02344AA0 ; =0x00000F36 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023447C4: - mov r0, #0x64 - bl ov29_022F07BC - ldr r0, _02344AA4 ; =0x00000F38 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - bl ov29_022F05E4 - mov r0, #0x64 - bl DungeonRandInt - cmp r0, #0x32 - movlt r6, #0x46 - blt _023447FC - bl ov29_022E7BB8 - mov r6, r0 -_023447FC: - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r1, r6 - mov r0, #0 - bl ov29_02344B9C - add r0, sp, #0 - mov r1, r6 - mov r2, #2 - bl ov29_02344BD0 - add r0, sp, #0 - bl ov29_02345004 - ldr r0, _02344AA8 ; =0x00000F3A - bl ov29_022F0780 - ldr r0, _02344AAC ; =0x00000F3B - bl ov29_022F0780 - ldr r0, _02344AB0 ; =0x00000F3C - bl ov29_022F0780 - ldr r0, _02344AB4 ; =0x00000F39 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_0234485C: - ldr r2, _02344A60 ; =0x0237CFFC - mov r3, #3 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl ov29_022F0654 - mov r0, #0 - mov r1, #0x64 - bl ov29_0234B09C - ldr r0, _02344AB8 ; =0x00000F54 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - ldr r0, _02344ABC ; =0x00000F55 - mov r1, r4 - mov r2, #0 - ldr r3, _02344A74 ; =0x02353798 - ldr r3, [r3, #0xc] - bl ov29_022F062C - cmp r0, #0 - bne _023448C4 - ldr r0, _02344AC0 ; =0x00000F56 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023448C4: - bl sub_0200F940 - cmp r0, #0 - bne _023448E4 - ldr r0, _02344AC4 ; =0x00000F58 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023448E4: - bl GetGold - cmp r0, #0x64 - bge _02344904 - ldr r0, _02344AC8 ; =0x00000F57 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344904: - mov r0, #0x64 - bl ov29_022F07BC - ldr r0, _02344ACC ; =0x00000F59 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - bl ov29_022F05E4 - ldr r2, _02344AD0 ; =0x000001A6 - mov r0, r4 - mov r1, r5 - bl ov29_022F067C - bl ov29_022F05E4 - ldr r0, _02344AD4 ; =0x00000F5D - bl ov29_022F0780 - ldr r0, _02344AD8 ; =0x00000F5A - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344950: - ldr r2, _02344A60 ; =0x0237CFFC - mov r3, #4 - mov r0, r4 - mov r1, r5 - str r3, [r2] - bl ov29_022F0654 - mov r0, #0 - mov r1, #0x64 - bl ov29_0234B09C - ldr r0, _02344ADC ; =0x00000F3F - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - mov r0, #0xf40 - mov r1, r4 - mov r2, #0 - ldr r3, _02344A74 ; =0x02353798 - ldr r3, [r3, #0x10] - bl ov29_022F062C - cmp r0, #0 - bne _023449B8 - ldr r0, _02344AE0 ; =0x00000F41 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_023449B8: - bl GetGold - cmp r0, #0x64 - mov r2, #0 - bge _023449D8 - ldr r0, _02344AE4 ; =0x00000F42 - mov r1, r4 - bl ov29_022F0604 - b _02344A34 -_023449D8: - ldr r1, _02344A74 ; =0x02353798 - ldr r0, _02344AE8 ; =0x00000F43 - ldr r3, [r1, #0x14] - mov r1, r4 - bl ov29_022F0618 - cmp r0, #0 - bne _02344A08 - ldr r0, _02344AEC ; =0x00000F44 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - b _02344A34 -_02344A08: - mov r0, #0x64 - bl ov29_022F07BC - ldr r0, _02344AF0 ; =0x00000F45 - mov r1, r4 - mov r2, #0 - bl ov29_022F0604 - bl ov29_022F05E4 - ldr r2, _02344AF4 ; =0x000001A5 - mov r0, r4 - mov r1, r5 - bl ov29_022F067C -_02344A34: - mov r0, #1 - bl ov29_0234B1A4 - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_022F05B4 - mov r0, #0 - bl ov29_022EFB84 - bl ov29_022F0848 -_02344A58: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02344A60: .word 0x0237CFFC -_02344A64: .word 0x00000F32 -_02344A68: .word 0x02353538 -_02344A6C: .word 0x00000F4C -_02344A70: .word 0x00000F4A -_02344A74: .word 0x02353798 -_02344A78: .word 0x00000F4B -_02344A7C: .word 0x00000F4D -_02344A80: .word 0x00000F4E -_02344A84: .word 0x00000F4F -_02344A88: .word 0x000001A7 -_02344A8C: .word 0x00000F51 -_02344A90: .word 0x00000F33 -_02344A94: .word 0x00000F34 -_02344A98: .word 0x00000F35 -_02344A9C: .word 0x00000F37 -_02344AA0: .word 0x00000F36 -_02344AA4: .word 0x00000F38 -_02344AA8: .word 0x00000F3A -_02344AAC: .word 0x00000F3B -_02344AB0: .word 0x00000F3C -_02344AB4: .word 0x00000F39 -_02344AB8: .word 0x00000F54 -_02344ABC: .word 0x00000F55 -_02344AC0: .word 0x00000F56 -_02344AC4: .word 0x00000F58 -_02344AC8: .word 0x00000F57 -_02344ACC: .word 0x00000F59 -_02344AD0: .word 0x000001A6 -_02344AD4: .word 0x00000F5D -_02344AD8: .word 0x00000F5A -_02344ADC: .word 0x00000F3F -_02344AE0: .word 0x00000F41 -_02344AE4: .word 0x00000F42 -_02344AE8: .word 0x00000F43 -_02344AEC: .word 0x00000F44 -_02344AF0: .word 0x00000F45 -_02344AF4: .word 0x000001A5 - arm_func_end ov29_02344544 - - arm_func_start EntityIsValid__02344AF8 -EntityIsValid__02344AF8: ; 0x02344AF8 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02344AF8 - - arm_func_start ov29_02344B1C -ov29_02344B1C: ; 0x02344B1C - ldr r0, _02344B2C ; =0x023537B0 - mov r1, #1 - strb r1, [r0] - bx lr - .align 2, 0 -_02344B2C: .word 0x023537B0 - arm_func_end ov29_02344B1C - - arm_func_start ov29_02344B30 -ov29_02344B30: ; 0x02344B30 - ldr r0, _02344B40 ; =0x023537B0 - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_02344B40: .word 0x023537B0 - arm_func_end ov29_02344B30 - - arm_func_start ov29_02344B44 -ov29_02344B44: ; 0x02344B44 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - orr r1, r5, #0x40000 - bl ov29_0234B084 - ldr r2, _02344B6C ; =0x023531BC - mov r0, r5 - mov r1, r4 - bl sub_02024FE8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02344B6C: .word 0x023531BC - arm_func_end ov29_02344B44 - - arm_func_start ov29_02344B70 -ov29_02344B70: ; 0x02344B70 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - orr r1, r5, #0x40000 - bl ov29_0234B084 - ldr r2, _02344B98 ; =0x023531A4 - mov r0, r5 - mov r1, r4 - bl sub_02024FE8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02344B98: .word 0x023531A4 - arm_func_end ov29_02344B70 - - arm_func_start ov29_02344B9C -ov29_02344B9C: ; 0x02344B9C - ldr ip, _02344BA4 ; =ov29_0234B084 - bx ip - .align 2, 0 -_02344BA4: .word ov29_0234B084 - arm_func_end ov29_02344B9C - - arm_func_start ov29_02344BA8 -ov29_02344BA8: ; 0x02344BA8 - stmdb sp!, {r3, lr} - add r3, r0, r1, lsl #2 - orr ip, r1, #0x40000 - mov r0, r1 - mov r1, r2 - ldr r2, _02344BCC ; =0x023531BC - str ip, [r3, #0x10] - bl sub_02024FE8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02344BCC: .word 0x023531BC - arm_func_end ov29_02344BA8 - - arm_func_start ov29_02344BD0 -ov29_02344BD0: ; 0x02344BD0 - ldr ip, _02344BE0 ; =ov29_023472C4 - mov r3, r2 - mov r2, #0 - bx ip - .align 2, 0 -_02344BE0: .word ov29_023472C4 - arm_func_end ov29_02344BD0 - - arm_func_start ov29_02344BE4 -ov29_02344BE4: ; 0x02344BE4 - ldr ip, _02344BF4 ; =ov29_023472C4 - mov r2, #0 - mov r3, #2 - bx ip - .align 2, 0 -_02344BF4: .word ov29_023472C4 - arm_func_end ov29_02344BE4 - - arm_func_start ov29_02344BF8 -ov29_02344BF8: ; 0x02344BF8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x48 - ldr r3, _02344C48 ; =0x023531CC - add r2, sp, #0 - mov r4, r0 - mov r1, #0x24 -_02344C10: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _02344C10 - bl DungeonRand16Bit - mov r1, #0xc - bl DivideInt - add r2, sp, #0 - mov r0, #6 - smlabb r0, r1, r0, r2 - mov r1, r4, lsl #1 - ldrsh r0, [r1, r0] - add sp, sp, #0x48 - ldmia sp!, {r4, pc} - .align 2, 0 -_02344C48: .word 0x023531CC - arm_func_end ov29_02344BF8 - - arm_func_start ov29_02344C4C -ov29_02344C4C: ; 0x02344C4C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - mov sb, #0 - str sb, [sp, #8] - mov r8, sb - bl IsDestinationFloorWithItem - cmp r0, #0 - ldr r1, _02344E7C ; =0x02353538 - ldr r0, _02344E80 ; =0x0002C9E8 - ldr r1, [r1] - movne sb, #1 - ldrsh r0, [r1, r0] - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #8] - mov r0, #0x38 - bl DungeonRandInt - mov r6, r0 - mov r0, #0x20 - bl DungeonRandInt - ldr r1, _02344E7C ; =0x02353538 - mov r5, #0 - ldr r1, [r1] - ldr r2, _02344E84 ; =0x023531A0 - add r1, r1, #0x3f00 - strh r5, [r1, #0xc0] - ldrh r3, [r2] - ldrh r1, [r2, #2] - mov r7, r0 - strh r3, [sp, #0x10] - strh r1, [sp, #0x12] -_02344CC8: - add r7, r7, #1 - cmp r7, #0x20 - moveq r7, #0 - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - mov r4, #0 - str r0, [sp, #0xc] -_02344CE4: - add r6, r6, #1 - cmp r6, #0x38 - mov r0, #0 - moveq r6, #0 - str r0, [sp, #4] - mov r0, r6 - mov r1, r7 - bl GetTile - ldrh r1, [r0] - tst r1, #0x200 - bne _02344E40 - ldrh r1, [r0, #2] - tst r1, #2 - beq _02344E40 - ldr r1, [sp, #0xc] - strh r6, [sp, #0x1a] - strh r1, [sp, #0x1c] - ldrh r0, [r0] - tst r0, #0x20 - movne r0, #1 - strne r0, [sp] - movne sl, r0 - bne _02344D80 - tst r0, #3 - moveq r0, #0 - streq r0, [sp] - moveq sl, #3 - beq _02344D80 - tst r0, #0x40 - mov r0, #0 - strne r0, [sp] - movne sl, #2 - bne _02344D80 - cmp sb, #0 - cmpeq r8, #0 - str r0, [sp] - mov sl, r0 - addeq r8, r8, #1 - beq _02344E40 -_02344D80: - cmp sl, #0 - bne _02344DB0 - cmp sb, #0 - beq _02344DB0 - cmp r8, #0 - bne _02344DB0 - bl GetItemToRetrieve - mov fp, r0 - mov r0, #2 - mov sb, #0 - str r0, [sp, #4] - b _02344DEC -_02344DB0: - cmp sl, #0 - bne _02344DE0 - ldr r0, [sp, #8] - cmp r0, #0 - beq _02344DE0 - ldr r0, _02344E7C ; =0x02353538 - ldr r1, [r0] - mov r0, #0 - str r0, [sp, #8] - ldr r0, _02344E80 ; =0x0002C9E8 - ldrsh fp, [r1, r0] - b _02344DEC -_02344DE0: - mov r0, sl - bl ov29_022E7AC4 - mov fp, r0 -_02344DEC: - mov r0, fp - bl sub_0200CCE0 - cmp r0, #0 - moveq r0, #0 - streq r0, [sp] - ldr r3, [sp, #4] - mov r1, fp - add r0, sp, #0x14 - mov r2, #0 - bl ov29_023472C4 - ldr r0, [sp] - add r1, sp, #0x14 - cmp r0, #0 - ldrneb r0, [sp, #0x14] - mov r2, #1 - orrne r0, r0, #2 - strneb r0, [sp, #0x14] - add r0, sp, #0x1a - bl ov29_02345538 - cmp sl, #0 - addeq r8, r8, #1 -_02344E40: - add r4, r4, #1 - cmp r4, #0x38 - blt _02344CE4 - add r5, r5, #1 - cmp r5, #0x20 - blt _02344CC8 - ldr r0, _02344E7C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3f00 - ldrsh r2, [r0, #0xc0] - ldrsh r1, [r0, #0xc2] - add r1, r2, r1 - strh r1, [r0, #0xc0] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02344E7C: .word 0x02353538 -_02344E80: .word 0x0002C9E8 -_02344E84: .word 0x023531A0 - arm_func_end ov29_02344C4C - - arm_func_start ov29_02344E88 -ov29_02344E88: ; 0x02344E88 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r4, r0 - mov r0, #2 - bl DungeonRngSetSecondary - ldrsh r0, [r4] - ldrsh r1, [r4, #2] - bl DungeonRandRange - mov r8, r0 - cmp r8, #0 - ble _02344FF8 - mov r4, #0 - mov r1, r4 - mov r0, #0x1c00 - bl MemAlloc - mov sl, r0 - mov sb, r4 - mov r6, r4 -_02344ED0: - mov r0, sb, lsl #0x10 - mov r7, r6 - mov r5, r0, asr #0x10 -_02344EDC: - mov r0, r7 - mov r1, sb - bl GetTile - ldrb r1, [r0, #7] - cmp r1, #0xff - beq _02344F2C - ldrh r1, [r0] - tst r1, #0x200 - bne _02344F2C - tst r1, #1 - beq _02344F2C - ldr r1, [r0, #0xc] - cmp r1, #0 - ldreq r0, [r0, #0x10] - cmpeq r0, #0 - moveq r1, r4, lsl #2 - addeq r0, sl, r4, lsl #2 - streqh r7, [sl, r1] - streqh r5, [r0, #2] - addeq r4, r4, #1 -_02344F2C: - add r7, r7, #1 - cmp r7, #0x38 - blt _02344EDC - add sb, sb, #1 - cmp sb, #0x20 - blt _02344ED0 - sub r6, r4, #1 - mov r5, #0 - b _02344F9C -_02344F50: - mov r0, r4 - bl DungeonRandInt - mov fp, r5, lsl #2 - add r1, sl, r5, lsl #2 - mov sb, r0, lsl #2 - ldrh r7, [sl, fp] - ldrh r3, [r1, #2] - ldrh r2, [sl, sb] - strh r7, [sp] - strh r3, [sp, #2] - strh r2, [sl, fp] - add r7, sl, r0, lsl #2 - ldrh r3, [r7, #2] - ldrh r2, [sp] - ldrh r0, [sp, #2] - strh r3, [r1, #2] - strh r2, [sl, sb] - strh r0, [r7, #2] - add r5, r5, #1 -_02344F9C: - cmp r5, r6 - blt _02344F50 - mov sb, #0 - add r7, sp, #4 - mov r6, #0xb7 - mov r5, sb - mov r4, #2 - mov fp, #1 - b _02344FE8 -_02344FC0: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov29_023472C4 - mov r1, r7 - mov r2, fp - add r0, sl, sb, lsl #2 - bl ov29_02345538 - add sb, sb, #1 -_02344FE8: - cmp sb, r8 - blt _02344FC0 - mov r0, sl - bl MemFree -_02344FF8: - bl DungeonRngSetPrimary - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov29_02344E88 - - arm_func_start ov29_02345004 -ov29_02345004: ; 0x02345004 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5] - mov r4, #0 - tst r0, #0x80 - bicne r0, r0, #0x80 - strneb r0, [r5] - mov r0, r5 - movne r4, #1 - bl AddItemToBagNoHeld - cmp r0, #0 - beq _02345050 - cmp r4, #0 - ldrneb r0, [r5] - orrne r0, r0, #0x80 - strneb r0, [r5] - bl ov29_022FB920 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02345050: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02345004 - - arm_func_start ov29_02345058 -ov29_02345058: ; 0x02345058 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x198 - mov sl, r0 - mov sb, r1 - bl GetLeader - mov r4, r0 - ldrsh r0, [sl] - ldrsh r1, [sl, #2] - ldr r7, [r4, #0xb4] - bl GetTile - ldr r0, [r0, #0x10] - cmp r0, #0 - beq _02345508 - ldr r1, [r0] - cmp r1, #3 - bne _02345508 - bl ov29_022E1610 - ldrb r1, [r7, #0x4e] - mov r5, r0 - mov r0, r4 - cmp r1, #0 - bne _02345108 - mov r1, r5 - mov r2, sb - bl ov29_02348DD8 - cmp r0, #0 - bne _02345508 - cmp sb, #0 - beq _02345508 - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02345514 ; =0x00000BD2 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _02345508 -_02345108: - mov r1, #1 - bl ShouldMonsterRunAwayVariation - cmp r0, #0 - beq _0234515C - cmp sb, #0 - beq _02345508 - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02345518 ; =0x00000BD3 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _02345508 -_0234515C: - ldrsh r0, [r5, #4] - bl GetItemCategoryVeneer - cmp r0, #6 - bne _023451EC - mov r0, r4 - mov r1, #0x1b - bl IqSkillIsEnabled - cmp r0, #0 - ldrneb r0, [r5] - orrne r0, r0, #0x20 - strneb r0, [r5] - mov r0, r5 - bl sub_0200D8AC - mov r6, r0 - ldr r0, _0234551C ; =0x00001308 - bl ov29_022EACCC - mov r0, #0x62 - bl AdvanceFrame - mov r0, r6 - bl AddMoneyCarried - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r0, #0 - mov r1, r5 - bl sub_02024FE8 - mov r0, sl - mov r1, #1 - bl ov29_023456BC - ldr r1, _02345520 ; =0x00000BD6 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - ldrsh r0, [r5, #4] - bl ov29_0234CCB4 - b _02345508 -_023451EC: - ldr r0, _02345524 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x75b] - cmp r0, #0 - beq _02345238 - mov r8, #0 - add r6, sp, #0 - add fp, sp, #0xcc -_0234520C: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - str r0, [r6, r8, lsl #2] - str r8, [fp, r8, lsl #2] - add r8, r8, #1 - cmp r8, #0x32 - blt _0234520C - bl GetCurrentBagCapacity - mov r6, r0 - b _0234524C -_02345238: - add r1, r7, #0x62 - mvn r0, #0 - str r1, [sp] - str r0, [sp, #0xcc] - mov r6, #1 -_0234524C: - ldrsh ip, [r5, #4] - cmp ip, #0xb - bge _02345378 - ldrb r0, [r5] - tst r0, #2 - bne _02345378 - mvn r8, #0 - mov fp, r8 - mov lr, #0 - and r0, r0, #8 - b _023452D8 -_02345278: - add r1, sp, #0 - ldr r1, [r1, lr, lsl #2] - ldrb r1, [r1] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - beq _023452D4 - add r1, sp, #0 - ldr r3, [r1, lr, lsl #2] - ldrb r2, [r3] - tst r2, #2 - ldreqsh r1, [r3, #4] - cmpeq ip, r1 - andeq r1, r2, #8 - cmpeq r0, r1 - bne _023452D4 - ldrh r1, [r3, #2] - cmp r1, #0x63 - beq _023452D4 - cmp fp, r1 - movlt fp, r1 - movlt r8, lr -_023452D4: - add lr, lr, #1 -_023452D8: - cmp lr, r6 - blt _02345278 - mvn r0, #0 - cmp r8, r0 - beq _02345378 - add r1, sp, #0 - ldr r2, [r1, r8, lsl #2] - ldrh r0, [r5, #2] - ldrh r1, [r2, #2] - add r0, r1, r0 - cmp r0, #0x63 - movge r0, #0x63 - strh r0, [r2, #2] - bl ov29_02347040 - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, sl - mov r1, #1 - bl ov29_023456BC - ldr r0, _02345528 ; =0x00001304 - bl ov29_022EACCC - add r0, sp, #0xcc - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bge _02345360 - ldr r1, _0234552C ; =0x00000BD4 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _0234536C -_02345360: - ldr r1, _02345530 ; =0x00000BD5 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser -_0234536C: - ldrsh r0, [r5, #4] - bl ov29_0234CCB4 - b _02345508 -_02345378: - mov r8, #0 - add r3, sp, #0 - mov r0, r8 - mov r1, #1 - b _023453AC -_0234538C: - ldr r2, [r3, r8, lsl #2] - ldrb r2, [r2] - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - beq _023453B4 - add r8, r8, #1 -_023453AC: - cmp r8, r6 - blt _0234538C -_023453B4: - mov r0, r4 - mov r1, r5 - mov r2, sb - bl ov29_02348DD8 - cmp r0, #0 - bne _02345508 - cmp r8, r6 - bne _02345418 - cmp sb, #0 - beq _02345508 - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, #0 - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02345514 ; =0x00000BD2 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _02345508 -_02345418: - ldr r0, _02345528 ; =0x00001304 - bl ov29_022EACCC - add r0, sp, #0xcc - ldr r0, [r0, r8, lsl #2] - cmp r0, #0 - bge _02345480 - ldrh r2, [r5] - mov r0, #0 - mov r1, #0x40000 - strh r2, [r7, #0x62] - ldrh r2, [r5, #2] - strh r2, [r7, #0x64] - ldrh r2, [r5, #4] - strh r2, [r7, #0x66] - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, sl - mov r1, #1 - bl ov29_023456BC - ldr r1, _0234552C ; =0x00000BD4 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _02345500 -_02345480: - mov r0, r5 - bl ov29_02348D3C - mov r6, r0 - mov r0, r5 - bl ov29_02345004 - cmp r0, #0 - mov r0, #0 - beq _023454BC - mov r1, r4 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, _02345534 ; =0x00000BD7 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - b _02345500 -_023454BC: - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345510 ; =0x023531BC - mov r1, r5 - mov r0, #0 - bl sub_02024FE8 - mov r0, sl - mov r1, #1 - bl ov29_023456BC - ldr r1, _02345530 ; =0x00000BD5 - mov r0, r4 - bl LogMessageByIdWithPopupCheckUser - mov r0, r5 - mov r1, r6 - bl ov29_02348ECC - cmp r0, #0 - bne _02345508 -_02345500: - ldrsh r0, [r5, #4] - bl ov29_0234CCB4 -_02345508: - add sp, sp, #0x198 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02345510: .word 0x023531BC -_02345514: .word 0x00000BD2 -_02345518: .word 0x00000BD3 -_0234551C: .word 0x00001308 -_02345520: .word 0x00000BD6 -_02345524: .word 0x02353538 -_02345528: .word 0x00001304 -_0234552C: .word 0x00000BD4 -_02345530: .word 0x00000BD5 -_02345534: .word 0x00000BD7 - arm_func_end ov29_02345058 - - arm_func_start ov29_02345538 -ov29_02345538: ; 0x02345538 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl ov29_022E2314 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r6] - ldr r1, [r4, #0xb4] - strh r0, [r1] - ldrh r0, [r6, #2] - strh r0, [r1, #2] - ldrh r0, [r6, #4] - strh r0, [r1, #4] - ldr r1, [r4, #0xb4] - ldrb r0, [r1] - bic r0, r0, #0x10 - strb r0, [r1] - ldr r1, [r4, #0xb4] - ldrb r0, [r1] - bic r0, r0, #0x20 - strb r0, [r1] - ldrb r0, [r6, #1] - cmp r0, #0 - beq _023455A8 - mov r0, r6 - bl RemoveEquivItemNoHole -_023455A8: - mov r0, #1 - strb r0, [r4, #0x20] - ldrsh r0, [r7] - ldrsh r1, [r7, #2] - bl GetTileSafe - ldr r1, _02345690 ; =0x023537B0 - str r4, [r0, #0x10] - ldrb r1, [r1] - cmp r1, #0 - bne _0234563C - ldrh r0, [r0] - tst r0, #0x20 - beq _0234563C - ldrsh r0, [r6, #4] - bl sub_0200CCE0 - cmp r0, #0 - beq _0234563C - ldrb r0, [r6] - tst r0, #2 - beq _02345620 - cmp r5, #0 - beq _0234563C - mov r0, r6 - bl GetActualBuyPrice - ldr r1, _02345694 ; =0x02353538 - ldr r2, [r1] - ldr r1, [r2, #0x7bc] - add r0, r1, r0 - str r0, [r2, #0x7bc] - b _0234563C -_02345620: - mov r0, r6 - bl GetActualSellPrice - ldr r1, _02345694 ; =0x02353538 - ldr r2, [r1] - ldr r1, [r2, #0x7c0] - add r0, r1, r0 - str r0, [r2, #0x7c0] -_0234563C: - mov r4, #0 - ldr r5, _02345694 ; =0x02353538 - mov r6, r4 -_02345648: - ldr r0, [r5] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xbc8] - bl EntityIsValid__02345698 - cmp r0, #0 - addne r4, r6, #1 - add r6, r6, #1 - cmp r6, #0x40 - blt _02345648 - ldr r0, _02345694 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x3f00 - strh r4, [r0, #0xc0] - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02345690: .word 0x023537B0 -_02345694: .word 0x02353538 - arm_func_end ov29_02345538 - - arm_func_start EntityIsValid__02345698 -EntityIsValid__02345698: ; 0x02345698 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02345698 - - arm_func_start ov29_023456BC -ov29_023456BC: ; 0x023456BC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r2, r0 - mov r7, r1 - ldrsh r0, [r2] - ldrsh r1, [r2, #2] - bl GetTileSafe - mov r5, r0 - ldr r6, [r5, #0x10] - cmp r6, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r6] - cmp r0, #3 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r6 - bl ov29_022E1610 - ldrh r1, [r5] - mov r4, r0 - tst r1, #0x20 - beq _02345770 - ldrsh r0, [r4, #4] - bl sub_0200CCE0 - cmp r0, #0 - beq _02345770 - ldrb r0, [r4] - tst r0, #2 - beq _02345754 - cmp r7, #0 - beq _02345770 - mov r0, r4 - bl GetActualBuyPrice - ldr r1, _023457C4 ; =0x02353538 - ldr r2, [r1] - ldr r1, [r2, #0x7bc] - sub r0, r1, r0 - str r0, [r2, #0x7bc] - b _02345770 -_02345754: - mov r0, r4 - bl GetActualSellPrice - ldr r1, _023457C4 ; =0x02353538 - ldr r2, [r1] - ldr r1, [r2, #0x7c0] - sub r0, r1, r0 - str r0, [r2, #0x7c0] -_02345770: - mov r4, #0 - str r4, [r5, #0x10] - ldr r5, _023457C4 ; =0x02353538 - mov r7, r4 - str r4, [r6] -_02345784: - ldr r0, [r5] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xbc8] - bl EntityIsValid__02345698 - cmp r0, #0 - addne r4, r7, #1 - add r7, r7, #1 - cmp r7, #0x40 - blt _02345784 - ldr r1, _023457C4 ; =0x02353538 - mov r0, #1 - ldr r1, [r1] - add r1, r1, #0x3f00 - strh r4, [r1, #0xc0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023457C4: .word 0x02353538 - arm_func_end ov29_023456BC - - arm_func_start ov29_023457C8 -ov29_023457C8: ; 0x023457C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r7, r0 - mov r6, r1 - mov r8, r2 - mov r5, r3 - mov r4, #0 - bl EntityIsValid__02345698 - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r8, #0 - beq _02345830 - ldrsh r0, [r7, #4] - ldrsh r1, [r7, #6] - bl GetTile - ldrh r0, [r0] - ands r0, r0, #3 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r0, #2 - moveq r4, #1 - mov r0, r7 - bl ov29_022E272C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02345830: - ldr r0, _02345A20 ; =0x02353538 - ldr r3, _02345A24 ; =0x0001A224 - ldr r2, [r0] - add r0, r3, #2 - ldrsh r1, [r2, r0] - add r0, r2, #0x1a000 - ldr sl, [r7, #0x10] - ldr sb, [r7, #0x1c] - ldr r0, [r0, #0x230] - rsb r8, r1, sl, asr #8 - add r8, r0, r8 - sub sb, sl, sb - ldrsh r3, [r2, r3] - rsb sb, r1, sb, asr #8 - add r8, r8, #8 - add r1, r8, r8, lsr #31 - ldr r8, [r7, #0xc] - mvn r2, #0x1f - rsb r8, r3, r8, asr #8 - add sb, r0, sb - cmp r8, r2 - mov sl, r1, asr #1 - cmpge sb, r2 - blt _02345A18 - rsb r0, r2, #0xff - cmp r8, r0 - cmple sb, #0xe0 - bgt _02345A18 - ldr r0, _02345A28 ; =0x0237C864 - cmp r6, #0 - ldrh r1, [r0, #2] - bic r1, r1, #0x3e00 - strh r1, [r0, #2] - beq _023458D8 - ldrh r1, [r0, #4] - mov r6, #0x17 - bic r1, r1, #0xf000 - strh r1, [r0, #4] - ldrh r1, [r0, #4] - orr r1, r1, #0xa000 - strh r1, [r0, #4] - b _02345958 -_023458D8: - ldr r0, [r7, #0xb4] - ldrsh r0, [r0, #4] - bl GetItemSpriteId - mov r6, r0 - cmp r5, #0xff - beq _0234592C - cmp r6, #0 - cmpne r6, #0x3b - bne _0234592C - ldr r0, _02345A28 ; =0x0237C864 - ldr r1, _02345A2C ; =0x023537BC - ldrh r2, [r0, #2] - ldrb r1, [r1, r5] - ldr r3, _02345A30 ; =0x023537B4 - bic r2, r2, #0x3e00 - strh r2, [r0, #2] - ldrh r2, [r0, #2] - mov r1, r1, lsl #0x1e - ldrb r6, [r3, r5] - orr r1, r2, r1, lsr #18 - strh r1, [r0, #2] -_0234592C: - ldr r0, [r7, #0xb4] - ldrsh r0, [r0, #4] - bl sub_0200D1FC - ldr r1, _02345A28 ; =0x0237C864 - mov r0, r0, lsl #0x1c - ldrh r2, [r1, #4] - bic r2, r2, #0xf000 - strh r2, [r1, #4] - ldrh r2, [r1, #4] - orr r0, r2, r0, lsr #16 - strh r0, [r1, #4] -_02345958: - ldr r1, _02345A28 ; =0x0237C864 - mov r2, r6, lsl #1 - ldrh r5, [r1, #6] - ldr r0, _02345A34 ; =0xFFFF000F - add r3, r2, #0x110 - and r2, r5, r0 - strh r2, [r1, #6] - ldrh r6, [r1, #6] - mov r5, sb, lsl #0x14 - ldrb r2, [sp, #0x20] - orr r5, r6, r5, lsr #16 - strh r5, [r1, #6] - ldrh r6, [r1, #2] - cmp r2, #0 - and r5, r8, r0, lsr #23 - and r6, r6, r0, asr #7 - strh r6, [r1, #2] - ldrh r6, [r1, #2] - mov r4, r4, lsl #0x1e - and r3, r3, r0, lsr #22 - orr r2, r6, r5 - strh r2, [r1, #2] - ldrh r2, [r1] - moveq sl, #1 - bic r2, r2, #0xc00 - strh r2, [r1] - ldrh r2, [r1] - orr r2, r2, r4, lsr #20 - strh r2, [r1] - ldrh r2, [r1, #4] - bic r2, r2, #0xc00 - strh r2, [r1, #4] - ldrh r2, [r1, #4] - orr r2, r2, #0xc00 - strh r2, [r1, #4] - ldrh r2, [r1, #4] - and r0, r2, r0, asr #6 - strh r0, [r1, #4] - ldrh r0, [r1, #4] - mov r2, sl - orr r0, r0, r3 - strh r0, [r1, #4] - ldr r0, _02345A38 ; =0x020AFC4C - ldr r1, _02345A28 ; =0x0237C864 - ldr r0, [r0] - bl sub_0201B9F8 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_02345A18: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02345A20: .word 0x02353538 -_02345A24: .word 0x0001A224 -_02345A28: .word 0x0237C864 -_02345A2C: .word 0x023537BC -_02345A30: .word 0x023537B4 -_02345A34: .word 0xFFFF000F -_02345A38: .word 0x020AFC4C - arm_func_end ov29_023457C8 - - arm_func_start ov29_02345A3C -ov29_02345A3C: ; 0x02345A3C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0xc0 - mov r5, r2 - mov r4, #0 - mov r6, #3 - mov r2, #1 - str r6, [sp, #8] - strb r2, [sp, #0x28] - str r5, [sp, #0xbc] - strb r4, [sp, #0x2c] - strb r4, [sp, #0x2a] - ldrh r4, [r1] - mov r6, r0 - mov r2, #0x18 - strh r4, [sp, #0xc] - ldrh ip, [r1, #2] - mov r4, r3 - add r0, sp, #8 - strh ip, [sp, #0xe] - ldrsh r3, [r1] - ldrsh r1, [r1, #2] - smulbb r3, r3, r2 - smulbb r1, r1, r2 - add r2, r1, #4 - add r3, r3, #4 - mov r1, r3, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r0, #0 - strh r0, [sp, #0x2e] - str r0, [sp] - add r1, sp, #8 - mov r0, r6 - mov r2, r5 - mov r3, #1 - str r4, [sp, #4] - bl ov29_02345AD8 - add sp, sp, #0xc0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_02345A3C - - arm_func_start ov29_02345AD8 -ov29_02345AD8: ; 0x02345AD8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r8, r1 - mov sb, r0 - ldrsh r0, [r8, #4] - ldrsh r1, [r8, #6] - mov r7, r2 - mov r4, r3 - ldr r6, [sp, #0x38] - bl GetTile - ldr r0, [r0, #0x10] - mov r5, #0 - cmp r0, #0 - beq _02345B5C - ldr r0, [r0] - cmp r0, #2 - bne _02345B5C - ldrb r2, [sp, #0x3c] - mov r0, r8 - add r1, r8, #4 - bl ov29_02347378 - add r0, r8, #4 - bl ov29_02338430 - ldr r1, _02345D64 ; =0x00000BD8 - mov r0, sb - bl LogMessageByIdWithPopupCheckUser - ldrb r0, [r7] - tst r0, #1 - movne r0, #1 - moveq r0, r5 - tst r0, #0xff - moveq r0, #0 - beq _02345D5C -_02345B5C: - ldrsh r0, [r8, #4] - cmp r4, #0 - movne r4, #0 - strh r0, [sp, #0xc] - ldrsh r0, [r8, #6] - ldrh r1, [sp, #0xc] - ldr fp, _02345D68 ; =0x02351844 - strh r0, [sp, #0xe] - ldrh r0, [sp, #0xe] - strh r1, [sp, #8] - moveq r4, #1 - strh r0, [sp, #0xa] -_02345B8C: - mov r0, r4, lsl #2 - ldrsh r3, [fp, r0] - cmp r3, #0x63 - moveq r5, #0 - beq _02345C44 - ldrsh r2, [r8, #4] - add r0, fp, r0 - ldrsh r1, [r0, #2] - add r0, r2, r3 - strh r0, [sp, #0xc] - ldrsh r2, [r8, #6] - ldrsh r0, [sp, #0xc] - add r1, r2, r1 - strh r1, [sp, #0xe] - ldrsh r1, [sp, #0xe] - bl GetTile - mov sl, r0 - ldrh r0, [sl] - tst r0, #3 - beq _02345C3C - tst r0, #0x200 - ldreq r0, [sl, #0x10] - cmpeq r0, #0 - bne _02345C3C - ldrb r2, [sp, #0x3c] - add r1, sp, #0xc - mov r0, r8 - bl ov29_02347378 - ldrh r0, [sl] - ldrh r2, [sp, #0xc] - ldrh r1, [sp, #0xe] - and r0, r0, #3 - cmp r0, #3 - strh r2, [sp, #8] - strh r1, [sp, #0xa] - moveq r5, #1 - beq _02345C44 - add r0, sp, #0xc - mov r1, r7 - mov r2, #1 - bl ov29_02345538 - cmp r0, #0 - movne r5, #1 - b _02345C44 -_02345C3C: - add r4, r4, #1 - b _02345B8C -_02345C44: - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02345D6C ; =0x023531BC - mov r1, r7 - mov r0, #0 - bl sub_02024FE8 - cmp r5, #0 - beq _02345CF4 - ldrsh r0, [sp, #0xc] - ldrsh r1, [sp, #0xe] - bl ov29_023391EC - ldrsh r0, [sp, #0xc] - ldrsh r1, [sp, #0xe] - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02345D58 -_02345C94: ; jump table - b _02345CCC ; case 0 - b _02345CA4 ; case 1 - b _02345CB8 ; case 2 - b _02345CE0 ; case 3 -_02345CA4: - ldr r2, _02345D70 ; =0x00000BD9 - add r1, sp, #0xc - mov r0, sb - bl LogMessageByIdWithPopupCheckUserUnknown - b _02345D58 -_02345CB8: - ldr r2, _02345D74 ; =0x00000BDA - add r1, sp, #0xc - mov r0, sb - bl LogMessageByIdWithPopupCheckUserUnknown - b _02345D58 -_02345CCC: - ldr r2, _02345D78 ; =0x00000BDB - add r1, sp, #0xc - mov r0, sb - bl LogMessageByIdWithPopupCheckUserUnknown - b _02345D58 -_02345CE0: - ldr r2, _02345D7C ; =0x00000BDF - add r1, sp, #0xc - mov r0, sb - bl LogMessageByIdWithPopupCheckUserUnknown - b _02345D58 -_02345CF4: - ldrsh r2, [sp, #8] - ldrsh r1, [sp, #0xa] - mov r0, #0x18 - smulbb r2, r2, r0 - smulbb r0, r1, r0 - add r1, r2, #0xc - add r0, r0, #0xc - mov r2, r1, lsl #8 - mov r1, r0, lsl #8 - str r2, [sp] - str r1, [sp, #4] - cmp r6, #0 - beq _02345D40 - ldrsh r0, [r6] - add r0, r2, r0, lsl #8 - str r0, [sp] - ldrsh r0, [r6, #2] - add r0, r1, r0, lsl #8 - str r0, [sp, #4] -_02345D40: - add r0, sp, #0 - bl ov29_022E563C - ldr r2, _02345D80 ; =0x00000BDC - add r1, sp, #0xc - mov r0, sb - bl LogMessageByIdWithPopupCheckUserUnknown -_02345D58: - mov r0, r5 -_02345D5C: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02345D64: .word 0x00000BD8 -_02345D68: .word 0x02351844 -_02345D6C: .word 0x023531BC -_02345D70: .word 0x00000BD9 -_02345D74: .word 0x00000BDA -_02345D78: .word 0x00000BDB -_02345D7C: .word 0x00000BDF -_02345D80: .word 0x00000BDC - arm_func_end ov29_02345AD8 - - arm_func_start ov29_02345D84 -ov29_02345D84: ; 0x02345D84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r1 - ldrsh r0, [sl, #4] - ldrsh r1, [sl, #6] - str r2, [sp, #4] - mov sb, r3 - bl GetTile - ldr r0, _02346048 ; =0x02353538 - mov r4, #0 - ldr r0, [r0] - ldr r1, _0234604C ; =0x020A1AE8 - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd4] - mov r7, r4 - mov r8, r4 - ldrb r0, [r1, r0] - mov r6, #1 - mov fp, #0 - cmp r0, #1 - ldrsh r0, [sl, #4] - moveq r7, #1 - ldr r5, _02346050 ; =0x023518AC - strh r0, [sp, #0x14] - ldrsh r0, [sl, #6] - ldrh r1, [sp, #0x14] - strh r0, [sp, #0x16] - ldrh r0, [sp, #0x16] - strh r1, [sp, #0x10] - strh r0, [sp, #0x12] - b _02345F74 -_02345E00: - mov r0, r6, lsl #2 - ldrsh r0, [r5, r0] - ldrsh r3, [sl, #4] - cmp r0, #0x63 - moveq r6, fp - mov r0, r6, lsl #2 - ldrsh r2, [r5, r0] - add r0, r5, r6, lsl #2 - ldrsh r1, [r0, #2] - add r0, r3, r2 - strh r0, [sp, #0x14] - ldrsh r2, [sl, #6] - ldrsh r0, [sp, #0x14] - moveq r8, #1 - add r1, r2, r1 - strh r1, [sp, #0x16] - ldrsh r1, [sp, #0x16] - bl GetTile - ldrh r1, [r0] - ands r2, r1, #3 - beq _02345F70 - tst r1, #0x200 - bne _02345F70 - ldr r0, [r0, #0x10] - cmp r0, #0 - bne _02345F64 - ldrh r1, [sp, #0x14] - ldrh r0, [sp, #0x16] - cmp r2, #3 - strh r1, [sp, #0x10] - strh r0, [sp, #0x12] - beq _02345F70 - cmp r7, #0 - beq _02345E90 - cmp r2, #2 - beq _02345F70 -_02345E90: - ldr r0, _02346048 ; =0x02353538 - ldrsh r2, [sp, #0x14] - ldr r3, [r0] - mov r0, #0x18 - ldrsh r1, [sp, #0x16] - smulbb r2, r2, r0 - smulbb r1, r1, r0 - add r0, r3, #0x1a000 - add r2, r2, #4 - add r1, r1, #4 - ldrb fp, [r0, #0x245] - mov r5, #0x10000 - mov r7, r2, lsl #8 - mov r8, r1, lsl #8 - mov r0, sl - mov r1, r7 - mov r2, r8 - str r5, [sl, #0x1c] - bl ov29_022E1A84 - mov r6, #0 -_02345EE0: - sub r5, r5, #0x800 - mov r2, #0 - str r5, [sl, #0x1c] - mov r0, sl - mov r1, fp - mov r3, r2 - str r2, [sp] - bl ov29_023457C8 - mov r0, #0x13 - bl AdvanceFrame - add r6, r6, #1 - cmp r6, #0x20 - blt _02345EE0 - mov r0, sl - mov r1, r7 - mov r2, r8 - bl ov29_022E1A84 - mov r2, #0 - str r2, [sl, #0x1c] - mov r0, sl - mov r1, fp - mov r3, r2 - str r2, [sp] - bl ov29_023457C8 - mov r0, #0x13 - bl AdvanceFrame - ldr r1, [sp, #4] - add r0, sp, #0x14 - mov r2, #1 - bl ov29_02345538 - cmp r0, #0 - movne r4, #1 - b _02345F7C -_02345F64: - cmp r8, #0 - movne r4, #0 - bne _02345F7C -_02345F70: - add r6, r6, #1 -_02345F74: - cmp r8, #0 - beq _02345E00 -_02345F7C: - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _02346054 ; =0x023531BC - ldr r1, [sp, #4] - mov r0, #0 - bl sub_02024FE8 - cmp r4, #0 - beq _02345FC4 - bl ov29_022EACBC - ldr r1, _02346058 ; =0x00000B74 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldr r1, _02346058 ; =0x00000B74 - mov r0, #0 - bl LogMessageByIdQuiet - b _0234603C -_02345FC4: - ldrsh r2, [sp, #0x10] - ldrsh r1, [sp, #0x12] - mov r0, #0x18 - smulbb r2, r2, r0 - smulbb r0, r1, r0 - add r1, r2, #0xc - add r0, r0, #0xc - mov r2, r1, lsl #8 - mov r1, r0, lsl #8 - str r2, [sp, #8] - str r1, [sp, #0xc] - cmp sb, #0 - beq _02346010 - ldrsh r0, [sb] - add r0, r2, r0, lsl #8 - str r0, [sp, #8] - ldrsh r0, [sb, #2] - add r0, r1, r0, lsl #8 - str r0, [sp, #0xc] -_02346010: - add r0, sp, #8 - bl ov29_022E563C - ldr r1, _0234605C ; =0x00000B75 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldr r1, _0234605C ; =0x00000B75 - mov r0, #0 - bl LogMessageByIdQuiet - mov r0, #0 - b _02346040 -_0234603C: - mov r0, #1 -_02346040: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02346048: .word 0x02353538 -_0234604C: .word 0x020A1AE8 -_02346050: .word 0x023518AC -_02346054: .word 0x023531BC -_02346058: .word 0x00000B74 -_0234605C: .word 0x00000B75 - arm_func_end ov29_02345D84 - - arm_func_start ov29_02346060 -ov29_02346060: ; 0x02346060 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl ov29_022E08A0 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl IsUnown - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _023460D8 ; =0x022C4474 - ldrsh r0, [r0] - bl DungeonRandOutcome__022EAB20 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - sub r0, r5, #0xc9 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - add r0, r0, #0x190 - mov r1, r0, lsl #0x10 - mov r0, r4 - mov r1, r1, asr #0x10 - mov r2, #0 - mov r3, #2 - bl ov29_023472C4 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023460D8: .word 0x022C4474 - arm_func_end ov29_02346060 - - arm_func_start ov29_023460DC -ov29_023460DC: ; 0x023460DC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x18 - mov r7, r0 - mov r4, r1 - mov r6, r2 - mov r5, r3 - bl ov29_022FB51C - cmp r0, #0 - beq _02346134 - bl ov29_022E0880 - cmp r0, #0 - bne _02346134 - bl ov29_022E08A0 - cmp r0, #0 - bne _02346134 - mov r0, r4 - bl EntityIsValid__02345698 - cmp r0, #0 - beq _02346134 - ldr r0, [r4] - cmp r0, #1 - beq _0234613C -_02346134: - mov r0, #0 - b _02346330 -_0234613C: - ldr r4, [r4, #0xb4] - add r1, sp, #0 - ldrsh r0, [r4, #2] - bl GetTreasureBoxChances - cmp r5, #0 - ble _02346184 - ldr r1, _02346338 ; =0x022C48EC - mov lr, #0 - add r3, sp, #0 -_02346160: - mov ip, lr, lsl #1 - ldrsh r2, [r3, ip] - add lr, lr, #1 - cmp r2, #0 - ldrnesh r0, [r1, ip] - mlane r0, r5, r0, r2 - strneh r0, [r3, ip] - cmp lr, #4 - blt _02346160 -_02346184: - mov r2, #0 - mov r1, r2 - add r0, sp, #8 -_02346190: - str r1, [r0, r2, lsl #2] - add r2, r2, #1 - cmp r2, #4 - blt _02346190 - ldrsh r0, [sp] - mov ip, #1 - add r5, sp, #0 - str r0, [sp, #8] - add r2, sp, #8 -_023461B4: - mov r3, ip, lsl #1 - add r1, r2, ip, lsl #2 - ldrsh r3, [r5, r3] - ldr r1, [r1, #-4] - add r1, r1, r3 - str r1, [r2, ip, lsl #2] - add ip, ip, #1 - cmp ip, #4 - add r0, r0, r3 - blt _023461B4 - bl DungeonRandInt - ldr r1, [sp, #8] - cmp r1, #0 - beq _023461F4 - cmp r0, r1 - bge _023461FC -_023461F4: - mov r0, #0 - b _02346330 -_023461FC: - ldr r1, [sp, #0xc] - cmp r0, r1 - bge _0234626C - mov r5, #0 - mov r4, r5 - cmp r6, #0 - beq _02346230 - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _0234633C ; =0x022C44C8 - ldrsh r1, [r1] - cmp r1, r0 - movlt r5, #1 -_02346230: - cmp r5, #0 - movne r5, #0x67 - bne _02346310 - ldr r0, _02346340 ; =0x02353538 - ldr r0, [r0] - add r5, r0, #0x348 - add r0, r5, #0x400 - bl sub_0204F7A8 - mov r1, r0 - cmp r1, #0xf - movgt r1, #0xf - add r0, r5, #0x400 - bl RetrieveFromItemList1 - mov r5, r0 - b _02346310 -_0234626C: - ldr r1, [sp, #0x10] - cmp r0, r1 - ldrsh r0, [r4, #2] - bge _023462C8 - mov r1, #0 - bl GetExclusiveItem - movs r5, r0 - mov r4, #1 - bne _02346310 - ldr r0, _02346340 ; =0x02353538 - ldr r0, [r0] - ldr r0, [r0, #0x7cc] - cmp r0, #0 - moveq r0, #0x6e - movne r0, #0x6a - bl DungeonRandInt - mov r0, r0, lsl #0x12 - mov r0, r0, asr #0x10 - add r0, r0, #0x3e - add r0, r0, #0x200 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - b _02346310 -_023462C8: - mov r1, #1 - bl GetExclusiveItem - movs r5, r0 - mov r4, #2 - bne _02346310 - ldr r0, _02346340 ; =0x02353538 - ldr r0, [r0] - ldr r0, [r0, #0x7cc] - cmp r0, #0 - moveq r0, #0x6e - movne r0, #0x6a - bl DungeonRandInt - mov r0, r0, lsl #0x12 - mov r0, r0, asr #0x10 - add r0, r0, #0x3f - add r0, r0, #0x200 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_02346310: - mov r0, r4 - bl ov29_02344BF8 - mov r1, r0 - mov r0, r7 - mov r2, r5 - mov r3, #2 - bl ov29_023472C4 - mov r0, #1 -_02346330: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02346338: .word 0x022C48EC -_0234633C: .word 0x022C44C8 -_02346340: .word 0x02353538 - arm_func_end ov29_023460DC - - arm_func_start ov29_02346344 -ov29_02346344: ; 0x02346344 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x3ec - sub sp, sp, #0x400 - mov r4, #0 - str r0, [sp, #4] - str r1, [sp, #8] - ldr sb, [sp, #0x810] - ldr r8, [sp, #0x814] - ldr r7, [sp, #0x818] - mov fp, r2 - mov sl, r3 - mov r1, r4 - mov r6, r4 - add r0, sp, #0x24 -_0234637C: - strb r6, [r0, r1] - add r1, r1, #1 - cmp r1, #0x1e - blt _0234637C - b _0234647C -_02346390: - ldrsh r1, [fp] - ldrsh r0, [fp, #2] - mov r5, #0 - strh r1, [sp, #0x20] - str r5, [sp, #0x14] - strh r0, [sp, #0x22] -_023463A8: - cmp r5, #0x1e - bge _02346454 - mov r2, r5, lsl #2 - ldrsh r0, [r8, r2] - cmp r0, #0x63 - beq _02346454 - add r1, sp, #0x24 - ldrb r1, [r1, r5] - cmp r1, #0 - bne _0234644C - add r1, r8, r2 - ldrsh r1, [r1, #2] - ldrsh r3, [fp] - ldrsh r2, [fp, #2] - add r3, r3, r0 - add r0, r2, r1 - strh r3, [sp, #0x20] - strh r0, [sp, #0x22] - ldrsh r0, [sp, #0x20] - ldrsh r1, [sp, #0x22] - bl GetTile - ldrh r1, [r0] - tst r1, #3 - beq _0234644C - tst r1, #0x200 - ldreq r0, [r0, #0x10] - cmpeq r0, #0 - bne _0234644C - ldrh r1, [sp, #0x20] - add r0, sp, #0x42 - mov r2, r6, lsl #2 - strh r1, [r0, r2] - mov r1, #1 - ldrh r3, [sp, #0x22] - str r1, [sp, #0x14] - mov r2, r1 - add r1, sp, #0x24 - add r0, r0, r6, lsl #2 - strb r2, [r1, r5] - strh r3, [r0, #2] - b _02346454 -_0234644C: - add r5, r5, #1 - b _023463A8 -_02346454: - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _02346478 - add r0, sp, #0x42 - mov r1, r6, lsl #2 - mvn r2, #0 - strh r2, [r0, r1] - add r0, r0, r6, lsl #2 - strh r2, [r0, #2] -_02346478: - add r6, r6, #1 -_0234647C: - cmp r6, sb - blt _02346390 - mov r1, #0 - mov r5, r1 - mov r8, r1 - add fp, sp, #0x42 - b _023465B4 -_02346498: - mov r0, r8, lsl #2 - ldrsh r2, [fp, r0] - cmp r2, #0 - bge _023464C4 - mov r0, #0xb8 - mul r3, r8, r0 - mov r2, #0 - add r0, sp, #0xbc - str r2, [r0, r3] - mov r5, #1 - b _023465B0 -_023464C4: - mov r1, #0xb8 - mul r3, r8, r1 - add r1, sp, #0xbc - mov r2, #3 - str r2, [r1, r3] - add r6, r1, r3 - mov r1, #0 - strb r1, [r6, #0x24] - mov r1, #1 - strb r1, [r6, #0x20] - mov r1, #0 - strb r1, [r6, #0x22] - mov r1, #6 - mla r1, r8, r1, sl - str r1, [r6, #0xb4] - add r1, fp, r0 - ldrh r2, [fp, r0] - ldrh r1, [r1, #2] - mov r0, r6 - strh r2, [r6, #4] - strh r1, [r6, #6] - ldr r1, [sp, #8] - ldrsh r2, [r1] - ldrsh r3, [r1, #2] - mov r1, #0x18 - smulbb r1, r2, r1 - mov r2, #0x18 - smulbb r2, r3, r2 - add r1, r1, #4 - add r2, r2, #4 - mov r1, r1, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r0, #0 - strh r0, [r6, #0x26] - mov r0, r8, lsl #2 - ldrsh r3, [fp, r0] - mov r1, #0x18 - mov r0, r1 - smulbb r0, r3, r0 - ldr r2, [r6, #0xc] - add r0, r0, #4 - rsb r0, r2, r0, lsl #8 - bl DivideInt - add r1, sp, #0x6c - str r0, [r1, r8, lsl #3] - add r0, fp, r8, lsl #2 - ldrsh r3, [r0, #2] - mov r1, #0x18 - mov r0, r1 - smulbb r0, r3, r0 - ldr r2, [r6, #0x10] - add r0, r0, #4 - rsb r0, r2, r0, lsl #8 - bl DivideInt - add r1, sp, #0x6c - add r1, r1, r8, lsl #3 - str r0, [r1, #4] - mov r1, #1 -_023465B0: - add r8, r8, #1 -_023465B4: - cmp r8, sb - blt _02346498 - cmp r1, #0 - bne _02346614 - cmp r7, #0 - beq _0234660C - cmp sb, #2 - blt _023465E4 - ldr r1, _023467D0 ; =0x00000BDD - ldr r0, [sp, #4] - bl LogMessageByIdWithPopupCheckUser - b _0234660C -_023465E4: - mov r0, #0 - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _023467D4 ; =0x023531BC - mov r1, sl - mov r0, #0 - bl sub_02024FE8 - ldr r1, _023467D8 ; =0x00000BDC - ldr r0, [sp, #4] - bl LogMessageByIdWithPopupCheckUser -_0234660C: - mov r0, #0 - b _023467C4 -_02346614: - cmp r5, #0 - cmpne r7, #0 - beq _0234662C - ldr r1, _023467DC ; =0x00000BDE - ldr r0, [sp, #4] - bl LogMessageByIdWithPopupCheckUser -_0234662C: - ldr r0, _023467E0 ; =0x02353538 - mov r6, #0 - ldr r0, [r0] - mov fp, r6 - add r0, r0, #0x1a000 - ldrb r0, [r0, #0x245] - mov r5, r6 - str r0, [sp, #0x10] -_0234664C: - and r0, r6, #0xff - mov r8, #0 - str r0, [sp, #0x1c] - b _023466E4 -_0234665C: - mov r0, #0xb8 - mul r0, r8, r0 - add r1, sp, #0xbc - str r0, [sp, #0x18] - add r0, r1, r0 - bl EntityIsValid__02345698 - cmp r0, #0 - beq _023466E0 - mov r1, #0xb8 - add r0, sp, #0xbc - mla r0, r8, r1, r0 - add r2, sp, #0x6c - add r1, sp, #0x6c - add r2, r2, r8, lsl #3 - ldr r1, [r1, r8, lsl #3] - ldr r2, [r2, #4] - str r0, [sp, #0xc] - bl ov29_022E1A90 - mov r0, fp - bl sub_020018D0 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, [sp, #0xc] - ldr r3, [sp, #0x1c] - str r1, [r0, #0x1c] - ldr r0, [sp, #0x18] - add r1, sp, #0xbc - add r0, r1, r0 - mov r1, #0 - str r1, [sp] - ldr r1, [sp, #0x10] - mov r2, #1 - bl ov29_023457C8 -_023466E0: - add r8, r8, #1 -_023466E4: - cmp r8, sb - blt _0234665C - mov r0, #0x13 - bl AdvanceFrame - tst r5, #3 - addeq r6, r6, #1 - add r5, r5, #1 - add fp, fp, #0x55 - and r6, r6, #7 - cmp r5, #0x18 - blt _0234664C - mov r8, #0 - add r6, sp, #0x42 - mov fp, r8 - mov r5, #6 - b _023467B8 -_02346724: - mov r1, r8, lsl #2 - ldrsh r0, [r6, r1] - cmp r0, #0 - blt _023467B4 - add r1, r6, r1 - ldrsh r1, [r1, #2] - bl GetTile - ldrh r0, [r0] - and r0, r0, #3 - cmp r0, #3 - bne _02346784 - cmp r7, #0 - beq _023467B4 - mov r0, fp - mov r1, #0x40000 - bl ov29_0234B084 - ldr r2, _023467D4 ; =0x023531BC - mov r0, #0 - mov r1, sl - bl sub_02024FE8 - ldr r0, [sp, #4] - ldr r1, _023467D8 ; =0x00000BDC - bl LogMessageByIdWithPopupCheckUser - b _023467B4 -_02346784: - mla r1, r8, r5, sl - add r0, r6, r8, lsl #2 - mov r2, #1 - bl ov29_02345538 - mov r0, r8, lsl #2 - add r1, r6, r8, lsl #2 - ldrsh r0, [r6, r0] - ldrsh r1, [r1, #2] - bl ov29_023391EC - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 -_023467B4: - add r8, r8, #1 -_023467B8: - cmp r8, sb - blt _02346724 - mov r0, r4 -_023467C4: - add sp, sp, #0x3ec - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023467D0: .word 0x00000BDD -_023467D4: .word 0x023531BC -_023467D8: .word 0x00000BDC -_023467DC: .word 0x00000BDE -_023467E0: .word 0x02353538 - arm_func_end ov29_02346344 - - arm_func_start HasHeldItem -HasHeldItem: ; 0x023467E4 - ldr r0, [r0, #0xb4] - ldrb r2, [r0, #0x62] - tst r2, #1 - movne r3, #1 - moveq r3, #0 - tst r3, #0xff - moveq r0, #0 - bxeq lr - tst r2, #8 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - movne r0, #0 - bxne lr - ldrsh r0, [r0, #0x66] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end HasHeldItem - - arm_func_start ov29_02346834 -ov29_02346834: ; 0x02346834 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #0x64 - mov r4, r1 - bl DungeonRandInt - mov r3, #0 - ldr r2, _02346884 ; =0x020A1F20 - b _02346870 -_02346854: - ldr r1, [r2, r0, lsl #2] - cmp r1, r4 - strleh r0, [r5, #2] - ldmleia sp!, {r3, r4, r5, pc} - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - add r3, r3, #1 -_02346870: - cmp r3, #0xc8 - blt _02346854 - mov r0, #1 - strh r0, [r5, #2] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02346884: .word 0x020A1F20 - arm_func_end ov29_02346834 - - arm_func_start ov29_02346888 -ov29_02346888: ; 0x02346888 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _023468F8 ; =0x02353538 - mov r0, #7 - ldr r1, [r1] - ldrb r4, [r1, #0xc] - bl IsCurrentMissionType - ldr r1, _023468F8 ; =0x02353538 - mov r0, #0 - ldr r2, [r1] - strb r0, [r2, #0xc] - ldr r1, [r1] - ldrb r1, [r1, #0xc] - cmp r1, #1 - cmpeq r4, #0 - bne _023468F0 - mov r2, r0 - mov r3, r0 - mov r1, #0xbe0 - str r0, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _023468F0 - mov r0, #2 - mov r1, #1 - bl ov29_022E09E8 -_023468F0: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_023468F8: .word 0x02353538 - arm_func_end ov29_02346888 - - arm_func_start ov29_023468FC -ov29_023468FC: ; 0x023468FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - ldrsh r0, [r4, #4] - bl GetItemCategoryVeneer - cmp r0, #5 - bne _023469D4 - ldrsh r0, [r4, #4] - bl GetItemMoveId16 - mov r8, r0 - ldrsh r0, [r4, #4] - bl IsHM - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r7, #0 - mov r6, r7 - mov r5, r7 - mov fp, r7 - ldr r4, _023469DC ; =0x02353538 - b _023469C4 -_0234694C: - ldr r0, [r4] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr sl, [r0, #0xb28] - mov r0, sl - bl EntityIsValid__02345698 - cmp r0, #0 - beq _023469C0 - ldr r1, [sl, #0xb4] - mov r0, r8 - ldrsh r1, [r1, #2] - bl sub_02053D1C - mov sb, r0 - mov r0, sl - bl ov29_023009A0 - cmp r0, #0 - movne sb, r6 - mov r0, sl - mov r1, r8 - bl ov29_022FBA54 - cmp r0, #0 - movne sb, r5 - mov r0, sl - bl ov29_022FBA70 - cmp r0, #0 - movne sb, fp - cmp sb, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023469C0: - add r7, r7, #1 -_023469C4: - cmp r7, #4 - blt _0234694C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023469D4: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023469DC: .word 0x02353538 - arm_func_end ov29_023468FC - - arm_func_start ov29_023469E0 -ov29_023469E0: ; 0x023469E0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 - ldr r5, _02346A60 ; =0x020AF6B8 - mov sl, r0 - mov r6, r8 - mov r7, #1 - mov fp, r8 - mov r4, #6 -_02346A00: - mul r1, r8, r4 - ldr r0, [r5] - ldr r2, [r0, #0x384] - ldrb r0, [r2, r1] - add sb, r2, r1 - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _02346A48 - ldrb r0, [sb] - tst r0, sl - beq _02346A48 - ldrb r0, [sb, #1] - mov r1, fp - bl ClearItem - mov r0, sb - bl ItemZInit -_02346A48: - add r8, r8, #1 - cmp r8, #0x32 - blt _02346A00 - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02346A60: .word 0x020AF6B8 - arm_func_end ov29_023469E0 - - arm_func_start ov29_02346A64 -ov29_02346A64: ; 0x02346A64 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - ldr r5, _02346BD0 ; =0x02353538 - mov r7, #0x55 - mov r6, r4 -_02346A78: - ldr r0, [r5] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr r8, [r0, #0xb28] - mov r0, r8 - bl EntityIsValid__02345698 - cmp r0, #0 - beq _02346AC4 - ldr sb, [r8, #0xb4] - add r0, sb, #0x62 - bl sub_0200CC38 - cmp r0, #0 - beq _02346AC4 - mov r1, r7 - mov r2, r6 - add r0, sb, #0x62 - ldrb r8, [sb, #0x63] - bl InitStandardItem - strb r8, [sb, #0x63] -_02346AC4: - add r4, r4, #1 - cmp r4, #4 - blt _02346A78 - mov sb, #0 - mov r7, #1 - mov r6, sb - mov r4, sb - mov r5, r7 - mov fp, #0x55 -_02346AE8: - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetActiveTeamMember - mov r8, r0 - ldrb r0, [r8] - tst r0, #1 - movne r1, r7 - moveq r1, r6 - tst r1, #0xff - beq _02346B5C - tst r0, #2 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _02346B5C - ldrsh r0, [r8, #8] - bl IsMonsterIdInNormalRange__02056294 - cmp r0, #0 - beq _02346B5C - add r0, r8, #0x3e - bl sub_0200CC38 - cmp r0, #0 - beq _02346B5C - mov r1, fp - mov r2, #0 - add r0, r8, #0x3e - ldrb sl, [r8, #0x3f] - bl InitStandardItem - strb sl, [r8, #0x3f] -_02346B5C: - add sb, sb, #1 - cmp sb, #4 - blt _02346AE8 - mov r4, #0 - ldr r6, _02346BD4 ; =0x020AF6B8 - mov r8, #0x55 - mov r7, r4 - mov r5, #6 -_02346B7C: - ldr r0, [r6] - ldr r0, [r0, #0x384] - mla sb, r4, r5, r0 - mov r0, sb - bl sub_0200CC38 - cmp r0, #0 - beq _02346BB8 - mov r0, sb - mov r1, r8 - mov r2, r7 - ldrb sl, [sb, #1] - bl InitStandardItem - mov r0, sb - bl SetItemAcquired - strb sl, [sb, #1] -_02346BB8: - add r4, r4, #1 - cmp r4, #0x32 - blt _02346B7C - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02346BD0: .word 0x02353538 -_02346BD4: .word 0x020AF6B8 - arm_func_end ov29_02346A64 - - arm_func_start ov29_02346BD8 -ov29_02346BD8: ; 0x02346BD8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _02346CB4 ; =0x020AF6B8 - mov r7, #0 - mov r5, r0 - ldr r8, [r1] - mov r2, r7 - mov r3, #1 - mov r0, #6 - b _02346C30 -_02346BFC: - mul r4, r7, r0 - ldr r6, [r8, #0x384] - ldrb r1, [r6, r4] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _02346C2C - ldrb r1, [r6, r4] - tst r1, r5 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02346C2C: - add r7, r7, #1 -_02346C30: - cmp r7, #0x32 - blt _02346BFC - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - mov r4, #0 - mov r7, r4 - mov r8, #1 - ldr r6, _02346CB8 ; =0x02353538 - b _02346CA4 -_02346C54: - ldr r0, [r6] - add r0, r0, r4, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] - mov r0, sb - bl EntityIsValid__02345698 - cmp r0, #0 - beq _02346CA0 - ldr r1, [sb, #0xb4] - ldrb r0, [r1, #0x62] - tst r0, #1 - movne r0, r8 - moveq r0, r7 - tst r0, #0xff - beq _02346CA0 - ldrb r0, [r1, #0x62] - tst r0, r5 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02346CA0: - add r4, r4, #1 -_02346CA4: - cmp r4, #4 - blt _02346C54 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02346CB4: .word 0x020AF6B8 -_02346CB8: .word 0x02353538 - arm_func_end ov29_02346BD8 - - arm_func_start ov29_02346CBC -ov29_02346CBC: ; 0x02346CBC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sb, #0 - mov r8, #1 - ldr r5, _02346DA0 ; =0x020AF6B8 - mov r7, sb - mov fp, sb - mov r6, r8 - mov r4, #6 -_02346CDC: - mul r1, sb, r4 - ldr r0, [r5] - ldr r2, [r0, #0x384] - ldrb r0, [r2, r1] - add sl, r2, r1 - tst r0, #1 - movne r0, r8 - moveq r0, r7 - tst r0, #0xff - beq _02346D8C - ldrb r0, [sl] - bic r0, r0, #8 - strb r0, [sl] - ldrsh r0, [sl, #4] - cmp r0, #0xb7 - bne _02346D78 - mov r0, sl - bl sub_0200D8AC - bl AddMoneyCarried - ldrb r0, [sl, #1] - cmp r0, #0 - beq _02346D70 - sub r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetActiveTeamMember - ldrb r1, [r0, #0x3e] - tst r1, #1 - movne r1, r6 - moveq r1, fp - tst r1, #0xff - beq _02346D70 - ldrsh r1, [r0, #0x42] - cmp r1, #0xb7 - bne _02346D70 - add r0, r0, #0x3e - bl ItemZInit -_02346D70: - mov r0, sl - bl ItemZInit -_02346D78: - ldrb r0, [sl] - tst r0, #2 - beq _02346D8C - mov r0, sl - bl ItemZInit -_02346D8C: - add sb, sb, #1 - cmp sb, #0x32 - blt _02346CDC - bl RemoveEmptyItemsInBag - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02346DA0: .word 0x020AF6B8 - arm_func_end ov29_02346CBC - - arm_func_start ov29_02346DA4 -ov29_02346DA4: ; 0x02346DA4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - bl ov29_02346CBC - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - mov r8, #0 - mov r7, #1 - mov r6, r8 - mov r4, r8 - mov r5, r7 -_02346DC8: - mov r0, r8 - bl GetActiveTeamMember - mov sb, r0 - ldrb r0, [sb] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _02346E30 - ldrb r0, [sb, #0x3e] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _02346E30 - ldrb r0, [sb, #0x3e] - bic r0, r0, #8 - strb r0, [sb, #0x3e] - ldrsh r0, [sb, #0x42] - cmp r0, #0xb7 - bne _02346E30 - add r0, sb, #0x3e - bl sub_0200D8AC - bl AddMoneyCarried - add r0, sb, #0x3e - bl ItemZInit -_02346E30: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _02346DC8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end ov29_02346DA4 - - arm_func_start ov29_02346E48 -ov29_02346E48: ; 0x02346E48 - stmdb sp!, {r3, lr} - bl ov29_02346CBC - bl sub_02057CE8 - bl sub_0200F910 - ldmia sp!, {r3, pc} - arm_func_end ov29_02346E48 - - arm_func_start ov29_02346E5C -ov29_02346E5C: ; 0x02346E5C - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - ldr r1, _02346EB8 ; =0x020AF6B8 - mov r3, r5 - mov ip, #1 - mov r0, #6 -_02346E74: - mul lr, r5, r0 - ldr r2, [r1] - ldr r4, [r2, #0x384] - ldrb r2, [r4, lr] - tst r2, #1 - movne r2, ip - moveq r2, r3 - tst r2, #0xff - beq _02346EA8 - ldrb r2, [r4, lr] - tst r2, #4 - bicne r2, r2, #4 - strneb r2, [r4, lr] -_02346EA8: - add r5, r5, #1 - cmp r5, #0x32 - blt _02346E74 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02346EB8: .word 0x020AF6B8 - arm_func_end ov29_02346E5C - - arm_func_start ov29_02346EBC -ov29_02346EBC: ; 0x02346EBC - ldrb r1, [r0, #6] - cmp r1, #0 - bne _02346F04 - ldr r1, _02346F0C ; =0x02353538 - mov r3, #0 - ldr r1, [r1] - add r1, r1, #0x3f4 - add r2, r1, #0x400 - b _02346EFC -_02346EE0: - add r1, r3, r3, lsl #3 - add r1, r2, r1, lsl #6 - cmp r1, r0 - ldreq r0, _02346F10 ; =0x023531C8 - ldreqb r0, [r0, r3] - bxeq lr - add r3, r3, #1 -_02346EFC: - cmp r3, #4 - blt _02346EE0 -_02346F04: - mov r0, #0 - bx lr - .align 2, 0 -_02346F0C: .word 0x02353538 -_02346F10: .word 0x023531C8 - arm_func_end ov29_02346EBC - - arm_func_start ov29_02346F14 -ov29_02346F14: ; 0x02346F14 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - bl GetCurrentBagCapacity - ldr r1, _02346FB4 ; =0x020AF6B8 - mov lr, #0 - ldr r6, [r1] - mov r2, lr - mov r3, #1 - mov r1, #6 - b _02346FA4 -_02346F3C: - mul r4, lr, r1 - ldr ip, [r6, #0x384] - ldrb ip, [ip, r4] - tst ip, #1 - movne ip, r3 - moveq ip, r2 - tst ip, #0xff - bne _02346FA0 - mov r0, r5 - bl ov29_02346EBC - strb r0, [r5, #0x63] - ldr r0, _02346FB4 ; =0x020AF6B8 - ldrh r1, [r5, #0x62] - ldr r2, [r0] - add r0, r5, #0x62 - ldr r2, [r2, #0x384] - strh r1, [r2, r4] - ldrh r1, [r5, #0x64] - add r2, r2, r4 - strh r1, [r2, #2] - ldrh r1, [r5, #0x66] - strh r1, [r2, #4] - bl SetItemAcquired - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02346FA0: - add lr, lr, #1 -_02346FA4: - cmp lr, r0 - blt _02346F3C - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02346FB4: .word 0x020AF6B8 - arm_func_end ov29_02346F14 - - arm_func_start ov29_02346FB8 -ov29_02346FB8: ; 0x02346FB8 - ldr r1, _02346FFC ; =0x02353538 - mov r3, #0 - ldr r1, [r1] - add r1, r1, #0x56 - add r2, r1, #0x800 - b _02346FE4 -_02346FD0: - add r1, r3, r3, lsl #3 - add r1, r2, r1, lsl #6 - cmp r1, r0 - beq _02346FEC - add r3, r3, #1 -_02346FE4: - cmp r3, #4 - blt _02346FD0 -_02346FEC: - cmp r3, #4 - mvneq r0, #0 - movne r0, r3 - bx lr - .align 2, 0 -_02346FFC: .word 0x02353538 - arm_func_end ov29_02346FB8 - - arm_func_start ov29_02347000 -ov29_02347000: ; 0x02347000 - ldr r1, _0234702C ; =0x022C4CD8 - b _02347018 -_02347008: - cmp r0, r2 - moveq r0, #1 - bxeq lr - add r1, r1, #2 -_02347018: - ldrsh r2, [r1] - cmp r2, #0 - bne _02347008 - mov r0, #0 - bx lr - .align 2, 0 -_0234702C: .word 0x022C4CD8 - arm_func_end ov29_02347000 - - arm_func_start ov29_02347030 -ov29_02347030: ; 0x02347030 - stmdb sp!, {r3, lr} - bl RemoveEmptyItemsInBag - bl ov29_022FB920 - ldmia sp!, {r3, pc} - arm_func_end ov29_02347030 - - arm_func_start ov29_02347040 -ov29_02347040: ; 0x02347040 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, #0 - ldr r5, _023470F8 ; =0x02353538 - ldr r6, _023470FC ; =0x020AF6B8 - mov fp, r8 - mov r7, #1 - mov r4, #6 -_0234705C: - mul sl, r8, r4 - ldr r0, [r6] - ldr r1, [r0, #0x384] - ldrb r0, [r1, sl] - add r1, r1, sl - tst r0, #1 - movne r0, r7 - moveq r0, fp - tst r0, #0xff - ldrneb r1, [r1, #1] - cmpne r1, #0 - beq _023470E8 - ldr r0, [r5] - add r0, r0, r1, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb24] - mov r0, sb - bl EntityIsValid__02345698 - cmp r0, #0 - bne _023470C0 - ldr r0, [r6] - ldr r0, [r0, #0x384] - add r0, r0, sl - bl sub_0200D894 - b _023470E8 -_023470C0: - ldr r1, [r6] - ldr r0, [sb, #0xb4] - ldr r2, [r1, #0x384] - ldrh r1, [r2, sl] - add r2, r2, sl - strh r1, [r0, #0x62] - ldrh r1, [r2, #2] - strh r1, [r0, #0x64] - ldrh r1, [r2, #4] - strh r1, [r0, #0x66] -_023470E8: - add r8, r8, #1 - cmp r8, #0x32 - blt _0234705C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023470F8: .word 0x02353538 -_023470FC: .word 0x020AF6B8 - arm_func_end ov29_02347040 - - arm_func_start ov29_02347100 -ov29_02347100: ; 0x02347100 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetLeader - mov r4, r0 - bl ov29_022EBB8C - mov r1, r0 - mov r0, r4 - mov r2, #0xa - bl ov29_022EB44C - mov r4, r0 - bl ov29_022EBB98 - cmp r0, #0x90 - bhs _0234717C - mov r0, r4 - bl ov29_022EB5D8 - cmp r0, #0 - beq _0234717C - ldrb r0, [r4] - tst r0, #8 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl ov29_023468FC - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl ov29_023186CC - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} -_0234717C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02347100 - - arm_func_start ov29_02347184 -ov29_02347184: ; 0x02347184 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc8 - mov sb, #0 - mov r7, #1 - mov sl, r0 - mov r8, sb - mov r6, sb - mov fp, sb - mov r5, r7 - add r4, sp, #0 -_023471AC: - mov r0, r8 - bl GetItemAtIdx - cmp sl, #0 - beq _023471F4 - mov r2, sl - b _023471E0 -_023471C4: - ldrsh r1, [r0, #4] - cmp r3, r1 - bne _023471DC - ldrb r1, [r0, #1] - cmp r1, #0 - bne _023471EC -_023471DC: - add r2, r2, #2 -_023471E0: - ldrsh r3, [r2] - cmp r3, #0 - bne _023471C4 -_023471EC: - cmp r3, #0 - bne _02347224 -_023471F4: - ldrb r1, [r0] - tst r1, #1 - movne r2, r7 - moveq r2, r6 - tst r2, #0xff - beq _02347224 - tst r1, #8 - movne r1, r5 - moveq r1, fp - tst r1, #0xff - streq r0, [r4, sb, lsl #2] - addeq sb, sb, #1 -_02347224: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x32 - blt _023471AC - cmp sb, #0 - moveq r0, #0 - beq _023472B8 - bl DungeonRand16Bit - mov r1, sb - bl DivideInt - mov r0, r1, lsl #0x10 - add r1, sp, #0 - mov r0, r0, asr #0x10 - ldr r3, [r1, r0, lsl #2] - ldrb r0, [r3] - orr r0, r0, #8 - strb r0, [r3] - ldrb r1, [r3, #1] - cmp r1, #0 - beq _023472B4 - ldr r0, _023472C0 ; =0x02353538 - sub r1, r1, #1 - ldr r0, [r0] - add r1, r1, r1, lsl #3 - add r0, r0, #0x56 - add r2, r0, #0x800 - ldrb r0, [r2, r1, lsl #6] - mov r1, r1, lsl #6 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrneb r0, [r2, r1] - orrne r0, r0, #8 - strneb r0, [r2, r1] -_023472B4: - ldrsh r0, [r3, #4] -_023472B8: - add sp, sp, #0xc8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023472C0: .word 0x02353538 - arm_func_end ov29_02347184 - - arm_func_start ov29_023472C4 -ov29_023472C4: ; 0x023472C4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r3 - mov r4, r1 - mov r3, #0 - mov r5, r0 - bl sub_0200CF6C - mov r0, r4 - mov r6, #0 - bl IsNotMoney - cmp r0, #0 - beq _02347324 - cmp r7, #0 - bne _0234731C - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _02347374 ; =0x02353538 - ldr r1, [r1] - add r1, r1, #0x28000 - ldrb r1, [r1, #0x6bc] - cmp r0, r1 - movlt r6, #1 - b _02347324 -_0234731C: - cmp r7, #1 - moveq r6, #1 -_02347324: - cmp r6, #0 - ldrneb r0, [r5] - orrne r0, r0, #8 - strneb r0, [r5] - mov r0, r4 - bl GetItemCategoryVeneer - cmp r0, #6 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _02347374 ; =0x02353538 - ldr r1, [r0] - ldr r0, [r1, #0x7cc] - cmp r0, #0 - add r0, r1, #0x28000 - ldrb r2, [r0, #0x6c9] - moveq r3, #5 - movne r3, #0x28 - mul r1, r2, r3 - mov r0, r5 - bl ov29_02346834 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02347374: .word 0x02353538 - arm_func_end ov29_023472C4 - - arm_func_start ov29_02347378 -ov29_02347378: ; 0x02347378 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r3, _02347514 ; =0x02353538 - mov sl, r0 - ldr r0, [r3] - cmp r2, #0 - add r0, r0, #0x1a000 - ldrb fp, [r0, #0x245] - beq _023473B0 - cmp r2, #0 - beq _023473B8 - ldrb r0, [r0, #0x23e] - cmp r0, #0 - bne _023473B8 -_023473B0: - mov r3, #1 - b _023473BC -_023473B8: - mov r3, #0 -_023473BC: - ldrsh r2, [r1] - ldrsh r1, [r1, #2] - mov r0, #0x18 - smulbb r2, r2, r0 - smulbb r0, r1, r0 - add r1, r2, #4 - add r0, r0, #4 - ands r4, r3, #0xff - mov r8, r1, lsl #8 - mov sb, r0, lsl #8 - beq _023474CC - ldr r5, [sl, #0xc] - sub r0, r5, r8 - bl Abs - cmp r0, #0xc - bge _02347410 - ldr r0, [sl, #0x10] - sub r0, r0, sb - bl Abs - cmp r0, #0xc - blt _023474CC -_02347410: - str r5, [sp, #0xc] - ldr r0, [sl, #0x10] - mov r6, #0 - str r0, [sp, #0x10] - sub r0, r8, r5 - mov r1, #0x18 - mov r7, r6 - bl DivideInt - ldr r1, [sp, #0x10] - str r0, [sp, #8] - sub r0, sb, r1 - mov r1, #0x18 - bl DivideInt - str r0, [sp, #4] - mov r5, r6 -_0234744C: - ldr r2, [sp, #0xc] - ldr r0, [sp, #8] - ldr r1, [sp, #0x10] - add r0, r2, r0 - str r0, [sp, #0xc] - ldr r0, [sp, #4] - add r0, r1, r0 - str r0, [sp, #0x10] - mov r0, r7 - bl sub_020018D0 - mov r1, #0xc - mul r1, r0, r1 - str r1, [sl, #0x1c] - mov r0, sl - add r1, sp, #0xc - bl ov29_022E1A40 - mov r0, #0 - str r0, [sp] - mov r0, sl - mov r1, fp - mov r2, #0 - and r3, r6, #0xff - bl ov29_023457C8 - mov r0, #0x13 - bl AdvanceFrame - tst r5, #3 - addeq r6, r6, #1 - add r5, r5, #1 - add r7, r7, #0x55 - and r6, r6, #7 - cmp r5, #0x18 - blt _0234744C -_023474CC: - mov r0, sl - mov r1, r8 - mov r2, sb - bl ov29_022E1A84 - mov r5, #0 - str r5, [sl, #0x1c] - cmp r4, #0 - beq _02347504 - mov r0, sl - mov r1, fp - mov r2, #1 - mov r3, #0xff - str r5, [sp] - bl ov29_023457C8 -_02347504: - mov r0, #0x13 - bl AdvanceFrame - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02347514: .word 0x02353538 - arm_func_end ov29_02347378 - - arm_func_start ov29_02347518 -ov29_02347518: ; 0x02347518 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x248 - ldr r4, _02347B3C ; =0x02353538 - mov sl, r0 - ldr r4, [r4] - mov r6, #3 - add r0, r4, #0x1a000 - ldrb r0, [r0, #0x245] - mov r5, #0 - mov sb, r3 - str r0, [sp, #0x20] - str r6, [r4, #0xcc] - mov r0, #1 - strb r5, [r4, #0xf0] - strb r0, [r4, #0xec] - strb r5, [r4, #0xee] - mov r0, r1 - str r0, [r4, #0x180] - str r5, [r4, #0xe8] - ldrh r6, [r2] - str r1, [sp, #8] - mov r1, #0x18 - strh r6, [r4, #0xd0] - ldrh r6, [r2, #2] - add r0, r4, #0xcc - ldr r8, [sp, #0x270] - strh r6, [r4, #0xd2] - ldrsh r3, [r2] - ldrsh r2, [r2, #2] - smulbb r3, r3, r1 - smulbb r2, r2, r1 - add r1, r3, #4 - mov r1, r1, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r0, r5 - str r0, [sp, #0x1c] - strh r0, [r4, #0xf2] - ldr r0, [sl] - cmp r0, #1 - bne _023475D4 - mov r0, sl - mov r1, #0x31 - bl ItemIsActive__02347B50 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x1c] -_023475D4: - ldrsh r1, [r8, #2] - mov r0, #1 - mov r6, #0 - str r1, [sp, #0x24] - bl ov29_0234B4CC -_023475E8: - ldrh r2, [r4, #0xd0] - ldrh r1, [r4, #0xd2] - ldrb r0, [r8, #1] - strh r2, [sp, #0x44] - strh r1, [sp, #0x46] - cmp r0, #0 - beq _023476BC - ldrb r0, [r8] - cmp r0, #0 - bne _023476BC - ldr r1, _02347B40 ; =0x0235171C - mov r2, sb, lsl #2 - add r0, r1, sb, lsl #2 - ldrsh r7, [r4, #0xd0] - ldrsh r3, [r1, r2] - ldrsh r2, [r4, #0xd2] - ldrsh r1, [r0, #2] - add r0, r7, r3 - add r1, r2, r1 - bl GetTile - ldrh r0, [r0] - tst r0, #3 - bne _023476BC - ldrsh r0, [sp, #0x46] - mov r7, #0 - str r0, [sp, #0x10] - ldrsh r0, [sp, #0x44] - str r0, [sp, #0xc] - ldr r0, _02347B44 ; =0x023516FC - add r0, r0, sb, lsl #2 - str r0, [sp, #0x28] - b _023476B4 -_02347668: - ldr r0, [sp, #0x28] - ldrb fp, [r7, r0] - cmp fp, #8 - bge _023476B0 - ldr r0, _02347B40 ; =0x0235171C - mov r1, fp, lsl #2 - ldrsh r1, [r0, r1] - add r0, r0, fp, lsl #2 - ldrsh r2, [r0, #2] - ldr r0, [sp, #0xc] - add r0, r0, r1 - ldr r1, [sp, #0x10] - add r1, r1, r2 - bl GetTile - ldrh r0, [r0] - tst r0, #3 - movne sb, fp - bne _023476BC -_023476B0: - add r7, r7, #1 -_023476B4: - cmp r7, #4 - blt _02347668 -_023476BC: - mov r0, sb, lsl #0x10 - mov r1, r0, lsr #0x10 - ldr r0, _02347B40 ; =0x0235171C - mov r2, r1, lsl #2 - ldrh r2, [r0, r2] - add r1, r0, r1, lsl #2 - ldrsh r3, [r4, #0xd0] - strh r2, [sp, #0x3c] - ldrsh r2, [sp, #0x3c] - ldrh r1, [r1, #2] - add r2, r3, r2 - strh r1, [sp, #0x3e] - strh r2, [r4, #0xd0] - ldrsh r1, [sp, #0x3e] - ldrsh r2, [r4, #0xd2] - add r1, r2, r1 - strh r1, [r4, #0xd2] - ldrsh r2, [r4, #0xd0] - cmp r2, #0 - ldrgesh r1, [r4, #0xd2] - cmpge r1, #0 - blt _02347720 - cmp r2, #0x38 - cmplt r1, #0x20 - blt _02347728 -_02347720: - mov r7, #2 - b _02347978 -_02347728: - mov r2, sb, lsl #2 - add r1, r0, sb, lsl #2 - ldrsh r0, [r0, r2] - ldrsh r1, [r1, #2] - mov r7, #0 - mov r0, r0, lsl #0xa - str r0, [sp, #0x14] - and r0, sb, #0xff - mov fp, r1, lsl #0xa - str r0, [sp, #0x2c] -_02347750: - mov r0, #0 - str r0, [sp, #0x18] - ldr r1, [sp, #0x14] - add r0, r4, #0xcc - mov r2, fp - bl ov29_022E1A90 - bl ov29_02337E94 - cmp r0, #0 - ldr r0, [r4, #0xd8] - ldr r1, [r4, #0xdc] - movne r2, #3 - mov r0, r0, asr #8 - mov r1, r1, asr #8 - moveq r2, #0 - add r0, r0, #8 - add r1, r1, #0x10 - bl ov29_022E9488 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x18] - mov r0, #1 - str r0, [sp] - ldr r1, [sp, #0x20] - ldr r3, [sp, #0x2c] - add r0, r4, #0xcc - mov r2, #0 - bl ov29_023457C8 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x18] - ldr r0, [sp, #0x18] - cmp r0, #0 - beq _023477DC - mov r0, #0x12 - bl AdvanceFrame -_023477DC: - add r7, r7, #1 - cmp r7, #6 - blt _02347750 - ldrsh r0, [r4, #0xd0] - ldrsh r1, [r4, #0xd2] - bl GetTile - mov r7, r0 - ldrh r0, [r7] - tst r0, #3 - ldreqb r0, [r8] - cmpeq r0, #0 - bne _02347824 - ldrh r1, [sp, #0x44] - ldrh r0, [sp, #0x46] - mov r7, #1 - strh r1, [r4, #0xd0] - strh r0, [r4, #0xd2] - b _02347978 -_02347824: - ldr r0, [r7, #0xc] - cmp r0, #0 - beq _02347960 - ldrb r1, [r8] - mov fp, #0 - cmp r1, #0 - ldreq r1, [r0] - cmpeq r1, #1 - bne _02347870 - mov r1, #0x2d - bl ItemIsActive__02347B50 - cmp r0, #0 - bne _0234786C - ldr r0, [r7, #0xc] - mov r1, #0x54 - bl ExclusiveItemEffectIsActive__02347B80 - cmp r0, #0 - beq _02347870 -_0234786C: - mov fp, #1 -_02347870: - cmp fp, #0 - beq _02347894 - add r5, r5, #1 - cmp r5, #2 - movge r7, #1 - bge _02347978 - add r0, sb, #4 - and sb, r0, #7 - b _02347960 -_02347894: - ldr r0, [r7, #0xc] - mov fp, #1 - ldr r0, [r0] - cmp r0, #1 - bne _0234791C - add r0, sp, #0x34 - add r1, fp, #0x194 - bl InitMove - ldr r0, [r7, #0xc] - add r1, sp, #0x34 - bl ov29_02324854 - cmp r0, #0 - ldr r0, [sp, #8] - mov r1, #1 - ldrsh r0, [r0, #4] - movne fp, #0 - bl TestItemAiFlag - cmp r0, #0 - bne _0234791C - mov r0, sl - mov r1, #0x2e - bl IqSkillIsEnabled - cmp r0, #0 - bne _02347908 - mov r0, sl - mov r1, #0x60 - bl ExclusiveItemEffectIsActive__02347B80 - cmp r0, #0 - beq _0234791C -_02347908: - ldr r1, [r7, #0xc] - mov r0, sl - bl ov29_022FAFD4 - cmp r0, #0 - movne fp, #0 -_0234791C: - cmp fp, #0 - beq _02347960 - cmp r6, #0x40 - bge _02347950 - ldr r1, [r7, #0xc] - add r2, sp, #0x48 - mov r0, sl - str r1, [r2, r6, lsl #3] - bl ov29_02348020 - add r1, sp, #0x48 - add r1, r1, r6, lsl #3 - strb r0, [r1, #4] - add r6, r6, #1 -_02347950: - ldrb r0, [r8] - cmp r0, #0 - moveq r7, #0 - beq _02347978 -_02347960: - ldr r0, [sp, #0x24] - sub r0, r0, #1 - str r0, [sp, #0x24] - cmp r0, #0 - bgt _023475E8 - mov r7, #1 -_02347978: - mov r0, #0 - bl ov29_0234B4CC - mov r5, #0 - b _02347A94 -_02347988: - mov r0, sl - bl EntityIsValid__02347BA4 - cmp r0, #0 - beq _02347A9C - add r0, sp, #0x48 - ldr fp, [r0, r5, lsl #3] - mov r0, fp - bl EntityIsValid__02347BA4 - cmp r0, #0 - beq _02347A90 - add r0, sp, #0x48 - add r0, r0, r5, lsl #3 - ldrb r0, [r0, #4] - cmp r0, #0 - beq _02347A38 - mov r0, #0 - mov r1, fp - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r1, [sp, #8] - mov r0, #0 - bl ov29_02344B70 - ldr r2, _02347B48 ; =0x00000BE1 - mov r0, sl - mov r1, fp - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sl - mov r1, fp - bl ov29_02307BDC - mov r2, r0 - ldr r0, [sp, #0x1c] - mov r3, sl - cmp r0, #0 - ldreqb r0, [r8] - cmpeq r0, #0 - movne r0, #1 - moveq r0, #0 - and r1, r0, #0xff - ldr r0, [sp, #8] - str fp, [sp] - str r0, [sp, #4] - mov r0, #1 - bl ApplyItemEffect - b _02347A90 -_02347A38: - ldrb r0, [r8] - mov r1, fp - cmp r0, #0 - mov r0, #0 - cmpeq r6, #1 - mov r2, r0 - moveq r7, #1 - bl SubstitutePlaceholderStringTags - ldr r1, [sp, #8] - mov r0, #0 - bl ov29_02344B44 - ldrb r0, [r8] - mov r1, fp - ldr r2, _02347B48 ; =0x00000BE1 - cmp r0, #0 - mov r0, sl - beq _02347A88 - add r2, r2, #1 - bl LogMessageByIdWithPopupCheckUserTarget - b _02347A90 -_02347A88: - add r2, r2, #2 - bl LogMessageByIdWithPopupCheckUserTarget -_02347A90: - add r5, r5, #1 -_02347A94: - cmp r5, r6 - blt _02347988 -_02347A9C: - mov r0, sb, lsl #0x10 - mov r0, r0, lsr #0x10 - ldr r1, _02347B40 ; =0x0235171C - mov r2, r0, lsl #2 - add r0, r1, r0, lsl #2 - ldrh r1, [r1, r2] - ldrh r0, [r0, #2] - cmp r7, #0 - strh r1, [sp, #0x30] - strh r0, [sp, #0x32] - ldrsh r1, [sp, #0x30] - ldrsh r0, [sp, #0x32] - mov r1, r1, lsl #3 - mov r0, r0, lsl #3 - strh r1, [sp, #0x40] - strh r0, [sp, #0x42] - beq _02347B34 - cmp r7, #1 - beq _02347AF4 - cmp r7, #2 - beq _02347B1C - b _02347B34 -_02347AF4: - add r1, sp, #0x40 - str r1, [sp] - mov r5, #0 - ldr r2, [sp, #8] - mov r0, sl - add r1, r4, #0xcc - mov r3, #1 - str r5, [sp, #4] - bl ov29_02345AD8 - b _02347B34 -_02347B1C: - ldr r1, [sp, #8] - mov r0, #0 - bl ov29_02344B70 - ldr r1, _02347B4C ; =0x00000BE5 - mov r0, sl - bl LogMessageByIdWithPopupCheckUser -_02347B34: - add sp, sp, #0x248 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02347B3C: .word 0x02353538 -_02347B40: .word 0x0235171C -_02347B44: .word 0x023516FC -_02347B48: .word 0x00000BE1 -_02347B4C: .word 0x00000BE5 - arm_func_end ov29_02347518 - - arm_func_start ItemIsActive__02347B50 -ItemIsActive__02347B50: ; 0x02347B50 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r1, #0x6f - mov r5, r0 - bl AbilityIsActive2 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl HasHeldItem - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ItemIsActive__02347B50 - - arm_func_start ExclusiveItemEffectIsActive__02347B80 -ExclusiveItemEffectIsActive__02347B80: ; 0x02347B80 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__02347B80 - - arm_func_start EntityIsValid__02347BA4 -EntityIsValid__02347BA4: ; 0x02347BA4 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__02347BA4 - - arm_func_start ov29_02347BC8 -ov29_02347BC8: ; 0x02347BC8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - ldr r4, _0234800C ; =0x02353538 - mov sl, r0 - ldr r4, [r4] - mov r6, #3 - add r0, r4, #0x1a000 - ldrb r0, [r0, #0x245] - mov r5, #0 - mov sb, r3 - str r0, [sp, #0x30] - str r6, [r4, #0xcc] - mov r0, #1 - strb r5, [r4, #0xf0] - strb r0, [r4, #0xec] - strb r5, [r4, #0xee] - mov r0, r1 - str r0, [r4, #0x180] - mov r6, r2 - str r5, [r4, #0xe8] - ldrh r2, [r6] - str r1, [sp, #8] - mov r1, #0x18 - strh r2, [r4, #0xd0] - ldrh r2, [r6, #2] - add r0, r4, #0xcc - strh r2, [r4, #0xd2] - ldrsh r3, [r6] - ldrsh r2, [r6, #2] - smulbb r3, r3, r1 - smulbb r1, r2, r1 - add r2, r1, #4 - add r3, r3, #4 - mov r1, r3, lsl #8 - mov r2, r2, lsl #8 - bl ov29_022E1A84 - mov r0, r5 - str r0, [sp, #0x2c] - strh r0, [r4, #0xf2] - ldr r0, [sl] - mov r5, #1 - cmp r0, #1 - bne _02347C8C - mov r0, sl - mov r1, #0x31 - bl ItemIsActive__02347B50 - cmp r0, #0 - movne r0, r5 - strne r0, [sp, #0x2c] -_02347C8C: - mov r0, r6 - mov r7, #0 - bl ov29_022E2CA0 - cmp r0, #0 - movne r7, #1 - mov r0, sb - bl ov29_022E2CA0 - cmp r0, #0 - movne r7, #1 - mov r0, #1 - bl ov29_0234B4CC - cmp r7, #0 - beq _02347E58 - ldrsh r0, [sb] - ldrsh r1, [r4, #0xd0] - str r0, [sp, #0x10] - ldrsh r0, [sb, #2] - str r0, [sp, #0xc] - ldr r0, [sp, #0x10] - sub r0, r1, r0 - bl Abs - mov r7, r0 - ldrsh r1, [r4, #0xd2] - ldr r0, [sp, #0xc] - sub r0, r1, r0 - bl Abs - add r1, r7, r0 - mov r0, #0xc - mul fp, r1, r0 - add r0, fp, #0xc - str r0, [sp, #0x24] - cmp r0, #0x40 - movge r0, #0x40 - strge r0, [sp, #0x24] - mov r1, fp - mov r0, #0x80000 - mov r8, #0 - bl DivideInt - str r0, [sp, #0x18] - ldrsh r0, [r6, #2] - mov r1, #0x1800 - ldrsh r2, [r6] - smulbb r7, r0, r1 - ldr r0, [sp, #0x10] - smulbb r6, r2, r1 - mul r1, r0, r1 - sub r0, r1, r6 - mov r1, fp - bl DivideInt - str r0, [sp, #0x20] - ldr r0, [sp, #0xc] - mov r1, #0x1800 - mul r1, r0, r1 - sub r0, r1, r7 - mov r1, fp - bl DivideInt - str r0, [sp, #0x1c] - mov r0, r8 - str r0, [sp, #0x28] - sub r0, fp, #3 - str r0, [sp, #0x38] - b _02347E48 -_02347D84: - mov r0, #0 - str r0, [sp, #0x14] - mov r0, r8, asr #8 - bl sub_020018D0 - ldr r1, [sp, #0x24] - add r2, r7, #0x400 - mul r0, r1, r0 - str r0, [r4, #0xe8] - mov r0, r7, asr #8 - str r0, [sp, #0x34] - ldr r0, [sp, #0x18] - add r1, r6, #0x400 - add r8, r8, r0 - add r0, r4, #0xcc - mov fp, r6, asr #8 - bl ov29_022E1A84 - bl ov29_02337E94 - cmp r0, #0 - ldr r1, [sp, #0x34] - movne r2, #3 - moveq r2, #0 - add r0, fp, #8 - add r1, r1, #0x10 - bl ov29_022E9488 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - mov r0, #1 - str r0, [sp] - ldr r1, [sp, #0x30] - add r0, r4, #0xcc - mov r2, #0 - mov r3, #0xff - bl ov29_023457C8 - cmp r0, #0 - movne r0, #1 - strne r0, [sp, #0x14] - ldr r0, [sp, #0x14] - cmp r0, #0 - beq _02347E2C - mov r0, #0x17 - bl AdvanceFrame -_02347E2C: - ldr r0, [sp, #0x20] - add r6, r6, r0 - ldr r0, [sp, #0x1c] - add r7, r7, r0 - ldr r0, [sp, #0x28] - add r0, r0, #1 - str r0, [sp, #0x28] -_02347E48: - ldr r1, [sp, #0x28] - ldr r0, [sp, #0x38] - cmp r1, r0 - blt _02347D84 -_02347E58: - ldrh r1, [sb] - mov r0, #0 - strh r1, [r4, #0xd0] - ldrh r1, [sb, #2] - strh r1, [r4, #0xd2] - bl ov29_0234B4CC - ldrsh r0, [sb] - ldrsh r1, [sb, #2] - bl GetTile - mov r6, r0 - ldr r0, [r6, #0xc] - cmp r0, #0 - beq _02347FD0 - ldr r1, [r0] - mov r7, #1 - cmp r1, #1 - mov r8, #0 - bne _02347EE8 - mov r1, #0x2d - bl ItemIsActive__02347B50 - cmp r0, #0 - bne _02347EC4 - ldr r0, [r6, #0xc] - mov r1, #0x54 - bl ExclusiveItemEffectIsActive__02347B80 - cmp r0, #0 - beq _02347EC8 -_02347EC4: - mov r8, #1 -_02347EC8: - ldr r1, _02348010 ; =0x00000195 - add r0, sp, #0x3c - bl InitMove - ldr r0, [r6, #0xc] - add r1, sp, #0x3c - bl ov29_02324854 - cmp r0, #0 - movne r7, #0 -_02347EE8: - cmp r7, #0 - beq _02347FD0 - cmp r8, #0 - ldr r5, [r6, #0xc] - movne r6, #0 - bne _02347F10 - mov r0, sl - mov r1, r5 - bl ov29_02348020 - mov r6, r0 -_02347F10: - ldr r1, [sp, #8] - mov r0, #0 - bl ov29_02344B70 - mov r0, #0 - mov r1, r5 - mov r2, r0 - bl SubstitutePlaceholderStringTags - cmp r6, #0 - beq _02347FA0 - mov r0, r5 - mov r1, #8 - bl ov29_02304A84 - ldr r2, _02348014 ; =0x00000BE1 - mov r0, sl - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - mov r0, sl - mov r1, r5 - bl ov29_02307BDC - mov r2, r0 - ldr r0, [sp, #0x2c] - mov r3, sl - cmp r0, #0 - ldreq r0, [sp, #0x68] - ldreqb r0, [r0] - cmpeq r0, #0 - movne r0, #1 - moveq r0, #0 - str r5, [sp] - ldr r5, [sp, #8] - and r1, r0, #0xff - mov r0, #1 - str r5, [sp, #4] - bl ApplyItemEffect - mov r5, #0 - b _02347FD0 -_02347FA0: - cmp r8, #0 - beq _02347FBC - ldr r2, _02348018 ; =0x00000BE4 - mov r0, sl - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget - b _02347FCC -_02347FBC: - ldr r2, _0234801C ; =0x00000BE3 - mov r0, sl - mov r1, r5 - bl LogMessageByIdWithPopupCheckUserTarget -_02347FCC: - mov r5, #1 -_02347FD0: - cmp r5, #0 - beq _02348004 - cmp r5, #1 - beq _02347FE8 - cmp r5, #2 - b _02348004 -_02347FE8: - mov r3, #0 - str r3, [sp] - ldr r2, [sp, #8] - mov r0, sl - add r1, r4, #0xcc - str r3, [sp, #4] - bl ov29_02345AD8 -_02348004: - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234800C: .word 0x02353538 -_02348010: .word 0x00000195 -_02348014: .word 0x00000BE1 -_02348018: .word 0x00000BE4 -_0234801C: .word 0x00000BE3 - arm_func_end ov29_02347BC8 - - arm_func_start ov29_02348020 -ov29_02348020: ; 0x02348020 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r1 - ldr r1, [r4, #0xb4] - mov r5, r0 - ldrb r0, [r1, #9] - cmp r0, #1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r0, [r1, #0xbc] - cmp r0, #7 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, #0x64 - bl DungeonRandInt - ldr r1, _023480F8 ; =0x022C46B0 - ldrsh r1, [r1] - cmp r0, r1 - movlt r1, #1 - movge r1, #0 - ldr r0, [r5] - and r6, r1, #0xff - cmp r0, #1 - bne _023480A8 - mov r0, r5 - mov r1, #0x2f - bl ItemIsActive__02347B50 - cmp r0, #0 - movne r6, #0 - bne _023480A8 - mov r0, r5 - mov r1, #0x31 - bl ItemIsActive__02347B50 - cmp r0, #0 - movne r6, #1 -_023480A8: - ldr r0, [r4] - cmp r0, #1 - bne _023480F0 - mov r0, r4 - bl ov29_022FB9BC - cmp r0, #0 - bne _023480EC - mov r0, r4 - mov r1, #0x2c - bl ItemIsActive__02347B50 - cmp r0, #0 - bne _023480EC - mov r0, r4 - mov r1, #0x53 - bl ExclusiveItemEffectIsActive__02347B80 - cmp r0, #0 - beq _023480F0 -_023480EC: - mov r6, #0 -_023480F0: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023480F8: .word 0x022C46B0 - arm_func_end ov29_02348020 - - arm_func_start ov29_023480FC -ov29_023480FC: ; 0x023480FC - bx lr - arm_func_end ov29_023480FC - - arm_func_start ov29_02348100 -ov29_02348100: ; 0x02348100 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - movs r4, r0 - moveq r0, #0 - beq _02348124 - ldr r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_02348124: - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - ldr r7, [r4, #0xb4] - ldrb r0, [r7, #6] - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldrsh r1, [r7, #4] - ldrb r2, [r7, #0x5e] - ldrb r3, [r7, #0x5f] - add r0, r7, #0x224 - bl sub_02011220 - mov r0, r4 - mov r1, #0x4c - bl ExclusiveItemEffectIsActive__023482B0 - cmp r0, #0 - ldrne r0, _023482AC ; =0x020A1878 - ldrnesh r1, [r7, #0x16] - ldrnesh r0, [r0] - addne r0, r1, r0 - strneh r0, [r7, #0x16] - mov r0, r4 - mov r1, #0x4d - bl ExclusiveItemEffectIsActive__023482B0 - cmp r0, #0 - ldrne r0, _023482AC ; =0x020A1878 - ldrnesh r1, [r7, #0x16] - ldrnesh r0, [r0] - addne r0, r1, r0, lsl #1 - strneh r0, [r7, #0x16] - mov r0, r4 - mov r1, #0x4e - bl ExclusiveItemEffectIsActive__023482B0 - cmp r0, #0 - beq _023481C4 - ldr r0, _023482AC ; =0x020A1878 - ldrsh r1, [r7, #0x16] - ldrsh r0, [r0] - add r0, r0, r0, lsl #1 - add r0, r1, r0 - strh r0, [r7, #0x16] -_023481C4: - mov r5, #0 - mov r0, r4 - mov r1, #0x4a - mov r6, r5 - bl ExclusiveItemEffectIsActive__023482B0 - cmp r0, #0 - mov r0, r4 - mov r1, #0x4b - movne r5, #1 - bl ExclusiveItemEffectIsActive__023482B0 - cmp r0, #0 - movne r6, #1 - mov r8, #0 - add r4, r7, #0x124 -_023481FC: - add r0, r7, r8, lsl #3 - cmp r5, #0 - addne r0, r0, #0x100 - ldrneh r1, [r0, #0x26] - orrne r1, r1, #0x200 - strneh r1, [r0, #0x26] - bne _02348248 - add r1, r0, #0x100 - ldrh r2, [r1, #0x26] - add r0, r4, r8, lsl #3 - bic r2, r2, #0x200 - strh r2, [r1, #0x26] - bl GetMaxPp - add r2, r7, r8, lsl #3 - mov r0, r0, lsl #0x10 - ldrb r1, [r2, #0x12a] - mov r3, r0, asr #0x10 - cmp r1, r0, asr #16 - strgtb r3, [r2, #0x12a] -_02348248: - add r0, r7, r8, lsl #3 - cmp r6, #0 - addne r0, r0, #0x100 - ldrneh r1, [r0, #0x26] - orrne r1, r1, #0x400 - strneh r1, [r0, #0x26] - bne _02348294 - add r1, r0, #0x100 - ldrh r2, [r1, #0x26] - add r0, r4, r8, lsl #3 - bic r2, r2, #0x400 - strh r2, [r1, #0x26] - bl GetMaxPp - add r2, r7, r8, lsl #3 - mov r0, r0, lsl #0x10 - ldrb r1, [r2, #0x12a] - mov r3, r0, asr #0x10 - cmp r1, r0, asr #16 - strgtb r3, [r2, #0x12a] -_02348294: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _023481FC - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023482AC: .word 0x020A1878 - arm_func_end ov29_02348100 - - arm_func_start ExclusiveItemEffectIsActive__023482B0 -ExclusiveItemEffectIsActive__023482B0: ; 0x023482B0 - stmdb sp!, {r3, lr} - ldr r2, [r0, #0xb4] - ldrb r0, [r2, #6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r2, #0x228 - bl ExclusiveItemEffectFlagTest - ldmia sp!, {r3, pc} - arm_func_end ExclusiveItemEffectIsActive__023482B0 - - arm_func_start ov29_023482D4 -ov29_023482D4: ; 0x023482D4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02348308 ; =0x02353538 - mov r5, r0 - ldr r4, [r1] - bl ov29_023386B0 - mov r3, r0 - ldrb ip, [r4, #0x749] - ldrsh r1, [r4, #0x1e] - ldrb r0, [r4, #0x748] - mov r2, r5 - add r1, ip, r1 - bl ov29_0234830C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02348308: .word 0x02353538 - arm_func_end ov29_023482D4 - - arm_func_start ov29_0234830C -ov29_0234830C: ; 0x0234830C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov r7, r0 - mov r6, r1 - mov r0, #4 - mov r1, #0 - mov r5, r2 - mov r4, r3 - bl MemAlloc - ldr r2, _02348498 ; =0x023537C4 - mov r1, #4 - str r0, [r2] - bl MemZero - mov r0, #1 - mov r1, #0 - bl ov29_022E0DD8 - mov r0, #3 - mov r1, #0 - bl ov29_022E0DD8 - mov r0, #4 - mov r1, #0 - bl ov29_022E0DD8 - bl ov29_022E0DFC - mov r0, #1 - mov r1, #0x1000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl sub_02051EB8 - mov sb, r0 - mov r0, #0 - mov r1, r0 - bl sub_02051DFC - mov r8, r0 - mov r0, #0 - mov r1, r0 - mov r2, r0 - bl GetBgRegionArea - mov r1, r8 - mov r2, sb - mov r3, #0 - str r3, [sp] - mov ip, #0xe - str ip, [sp, #4] - str r3, [sp, #8] - bl sub_02015328 - bl sub_02015588 - cmp r4, #1 - bne _023483D8 - bl sub_02017A00 - b _023483F8 -_023483D8: - cmp r4, #2 - bne _023483E8 - bl sub_02017A20 - b _023483F8 -_023483E8: - mov r1, r6, lsl #0x10 - mov r0, r7 - mov r1, r1, asr #0x10 - bl sub_020178A8 -_023483F8: - mov r0, #0 - bl ov29_0234C738 - mov r6, #2 - ldr r4, _0234849C ; =0x0237C694 - b _02348424 -_0234840C: - mov r0, r6 - bl AdvanceFrame - ldrh r0, [r4, #2] - tst r0, #1 - bne _0234842C - sub r5, r5, #1 -_02348424: - cmp r5, #0 - bgt _0234840C -_0234842C: - mov r0, #2 - mov r1, #0x1000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 - mov r0, #1 - mov r1, #0 - bl ov29_022E0DE4 - mov r0, #3 - mov r1, #0 - bl ov29_022E0DE4 - mov r0, #4 - mov r1, #0 - bl ov29_022E0DE4 - bl ov29_022E0E44 - bl sub_0201551C - ldr r0, _02348498 ; =0x023537C4 - ldr r0, [r0] - cmp r0, #0 - beq _02348490 - bl MemFree - ldr r0, _02348498 ; =0x023537C4 - mov r1, #0 - str r1, [r0] -_02348490: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02348498: .word 0x023537C4 -_0234849C: .word 0x0237C694 - arm_func_end ov29_0234830C - - arm_func_start ov29_023484A0 -ov29_023484A0: ; 0x023484A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _02348804 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x348 - add r7, r0, #0x400 - add r0, r7, #0x18 - bl ov29_023496EC - ldr r0, _02348804 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsb r0, [r0, #0x98] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r8, #0 - mov fp, #0x6f - mov sl, #0xa5 - mov r5, #3 - mov r6, #1 - ldr r4, _02348804 ; =0x02353538 - b _02348798 -_023484FC: - mov r0, r7 - mov r1, r8 - bl ov29_02349790 - movs sb, r0 - moveq r0, #0 - beq _02348784 - strb r6, [r7, #0x18] - ldrb r0, [sb, #1] - strb r0, [r7, #0x19] - ldrb r0, [sb, #2] - strb r0, [r7, #0x1a] - ldrsh r0, [sb, #0xe] - strh r0, [r7, #0x22] - ldr r0, [r4] - strb r6, [r0] - ldrb r0, [r7, #0x19] - cmp r0, #0xe - addls pc, pc, r0, lsl #2 - b _0234877C -_02348548: ; jump table - b _02348584 ; case 0 - b _02348590 ; case 1 - b _0234859C ; case 2 - b _023485AC ; case 3 - b _02348608 ; case 4 - b _02348618 ; case 5 - b _02348628 ; case 6 - b _02348648 ; case 7 - b _0234865C ; case 8 - b _02348668 ; case 9 - b _0234869C ; case 10 - b _02348718 ; case 11 - b _0234876C ; case 12 - b _0234877C ; case 13 - b _0234877C ; case 14 -_02348584: - ldrsh r0, [sb, #0x10] - strh r0, [r7, #0x24] - b _0234877C -_02348590: - ldrsh r0, [sb, #0x10] - strh r0, [r7, #0x24] - b _0234877C -_0234859C: - ldrsh r0, [sb, #0x10] - strh r0, [r7, #0x24] - strb r6, [r7, #0x30] - b _0234877C -_023485AC: - ldrb r0, [sb, #2] - cmp r0, #0 - ldreq r0, [r4] - streqb r5, [r0] - beq _0234877C - cmp r0, #1 - ldreqsh r0, [sb, #0x14] - streqh r0, [r7, #0x20] - streqb sl, [r7, #0x2e] - beq _0234877C - cmp r0, #2 - bne _0234877C - mov r0, #4 - bl DungeonRandInt - mov r1, r0, lsl #1 - ldr r0, _02348808 ; =0x022C48E4 - strb fp, [r7, #0x2e] - ldrsh r0, [r0, r1] - strh r0, [r7, #0x1c] - ldr r1, [r4] - mov r0, #2 - strb r0, [r1] - b _0234877C -_02348608: - ldrsh r0, [sb, #0x14] - strh r0, [r7, #0x1c] - strb r6, [r7, #0x2f] - b _0234877C -_02348618: - ldr r1, [r4] - mov r0, #3 - strb r0, [r1] - b _0234877C -_02348628: - ldrb r0, [sb, #2] - cmp r0, #4 - moveq r0, #0 - streqh r0, [r7, #0x1c] - ldrnesh r0, [sb, #0x14] - strneh r0, [r7, #0x1c] - strneb r6, [r7, #0x2f] - b _0234877C -_02348648: - ldrsh r0, [sb, #0x14] - strh r0, [r7, #0x1e] - ldrsh r0, [sb, #0x10] - strh r0, [r7, #0x24] - b _0234877C -_0234865C: - ldrsh r0, [sb, #0x10] - strh r0, [r7, #0x24] - b _0234877C -_02348668: - ldrb r0, [sb, #2] - cmp r0, #1 - beq _02348680 - cmp r0, #2 - moveq r0, #0x64 - streqb r0, [r7, #0x34] -_02348680: - add r0, r7, #0x18 - add r1, sb, #0x10 - mov r2, #1 - bl ov29_023497C8 - ldrsh r0, [sb, #0x14] - strh r0, [r7, #0x1c] - b _0234877C -_0234869C: - ldrb r0, [sb, #2] - cmp r0, #4 - bne _023486BC - add r1, sb, #0x10 - add r0, r7, #0x18 - mov r2, r6 - bl ov29_023497C8 - b _0234877C -_023486BC: - cmp r0, #5 - bne _023486E0 - add r1, sb, #0x10 - add r0, r7, #0x18 - mov r2, r6 - bl ov29_023497C8 - mov r0, #0x64 - strb r0, [r7, #0x34] - b _0234877C -_023486E0: - cmp r0, #6 - bne _02348704 - add r0, r7, #0x18 - add r1, sb, #0x10 - mov r2, #2 - bl ov29_023497C8 - ldrb r0, [sb, #0xc] - strb r0, [r7, #0x2e] - b _0234877C -_02348704: - add r1, sb, #0x10 - add r0, r7, #0x18 - mov r2, r6 - bl ov29_023497C8 - b _0234877C -_02348718: - ldrb r0, [sb, #0xc] - strb r0, [r7, #0x2e] - ldrb r0, [r7, #0x1a] - cmp r0, #0 - bne _02348744 - ldrsh r1, [sb, #0xe] - add r0, r7, #0x18 - add r2, sb, #0x10 - mov r3, #3 - bl ov29_02349818 - b _0234877C -_02348744: - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #4 - bhi _0234877C - ldrsh r1, [sb, #0xe] - add r0, r7, #0x18 - mov r2, #0 - mov r3, #3 - bl ov29_02349818 - b _0234877C -_0234876C: - ldrb r0, [sb, #0xc] - strb r0, [r7, #0x2e] - ldrsh r0, [sb, #0x14] - strh r0, [r7, #0x20] -_0234877C: - strb r8, [r7, #0x1b] - mov r0, #1 -_02348784: - cmp r0, #0 - bne _023487A0 - add r0, r8, #1 - mov r0, r0, lsl #0x18 - mov r8, r0, asr #0x18 -_02348798: - cmp r8, #8 - blt _023484FC -_023487A0: - ldr r0, _02348804 ; =0x02353538 - ldr r4, [r0] - ldrb r0, [r4, #0x760] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsDestinationFloorWithFixedRoom - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl IsGoldenChamber - cmp r0, #0 - beq _023487D4 - bl ov29_02336224 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023487D4: - ldr r1, _02348804 ; =0x02353538 - ldrb r2, [r4, #0x776] - ldr r0, [r1] - add r0, r0, #0x4000 - strb r2, [r0, #0xda] - ldr r0, [r1] - add r0, r0, #0x4000 - ldrb r1, [r0, #0xda] - cmp r1, #0x95 - moveq r1, #0xc6 - streqh r1, [r0, #0xd4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02348804: .word 0x02353538 -_02348808: .word 0x022C48E4 - arm_func_end ov29_023484A0 - - arm_func_start ov29_0234880C -ov29_0234880C: ; 0x0234880C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - b _02348840 -_0234881C: - mov r0, r5 - mov r1, r4 - bl ov29_02349790 - cmp r0, #0 - movne r0, r4 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r4, #1 - mov r0, r0, lsl #0x18 - mov r4, r0, asr #0x18 -_02348840: - cmp r4, #8 - blt _0234881C - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234880C - - arm_func_start ov29_02348850 -ov29_02348850: ; 0x02348850 - stmdb sp!, {r3, lr} - ldr r0, _02348884 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x760] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x348 - add r0, r0, #0x400 - bl ov29_0234880C - ldr r1, _02348884 ; =0x02353538 - ldr r1, [r1] - strb r0, [r1, #0x763] - ldmia sp!, {r3, pc} - .align 2, 0 -_02348884: .word 0x02353538 - arm_func_end ov29_02348850 - - arm_func_start ov29_02348888 -ov29_02348888: ; 0x02348888 - ldr ip, _02348890 ; =ov29_02349AD4 - bx ip - .align 2, 0 -_02348890: .word ov29_02349AD4 - arm_func_end ov29_02348888 - - arm_func_start ov29_02348894 -ov29_02348894: ; 0x02348894 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - mov r4, #8 -_023488A0: - mov r0, r5, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r1, [r0] - add r5, r5, #1 - cmp r1, #7 - streqb r4, [r0] - cmp r5, #8 - blt _023488A0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02348894 - - arm_func_start ov29_023488C8 -ov29_023488C8: ; 0x023488C8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, #0 - mov r5, #5 -_023488D4: - mov r0, r4, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r1, [r0] - cmp r1, #7 - ldreqb r1, [r0, #1] - cmpeq r1, #0xb - bne _02348908 - ldrb r1, [r0, #2] - add r1, r1, #0xff - and r1, r1, #0xff - cmp r1, #4 - strlsb r5, [r0] -_02348908: - add r4, r4, #1 - cmp r4, #8 - blt _023488D4 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_023488C8 - - arm_func_start ov29_02348918 -ov29_02348918: ; 0x02348918 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02348990 ; =0x02353538 - ldr r0, [r0] - add r5, r0, #0x348 - bl GetForcedLossReason - cmp r0, #4 - ldmeqia sp!, {r4, r5, r6, pc} - mov r4, #0 - mov r6, #7 -_0234893C: - mov r0, r4, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r1, [r0] - cmp r1, #5 - ldreqb r2, [r5, #0x400] - ldreqb r1, [r0, #4] - cmpeq r2, r1 - ldreqb r1, [r0, #1] - cmpeq r1, #3 - ldreqb r1, [r0, #2] - cmpeq r1, #3 - streqb r6, [r0] - ldreqb r1, [r0, #0x16] - cmpeq r1, #5 - bne _02348980 - bl ov29_023498A0 -_02348980: - add r4, r4, #1 - cmp r4, #8 - blt _0234893C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02348990: .word 0x02353538 - arm_func_end ov29_02348918 - - arm_func_start ov29_02348994 -ov29_02348994: ; 0x02348994 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02348A14 ; =0x02353538 - mov r4, #0 - ldr r0, [r0] - add r6, r0, #0x348 -_023489A8: - mov r0, r4, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r5, r0 - ldrb r0, [r5] - cmp r0, #5 - ldreqb r1, [r6, #0x400] - ldreqb r0, [r5, #4] - cmpeq r1, r0 - bne _02348A04 - ldrb r0, [r5, #1] - cmp r0, #6 - cmpne r0, #4 - bne _02348A04 - ldrsh r0, [r5, #0x14] - bl IsItemInBag - cmp r0, #0 - beq _02348A04 - ldrb r0, [r5, #0x16] - cmp r0, #5 - bne _02348A04 - mov r0, r5 - bl ov29_023498A0 -_02348A04: - add r4, r4, #1 - cmp r4, #8 - blt _023489A8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02348A14: .word 0x02353538 - arm_func_end ov29_02348994 - - arm_func_start ov29_02348A18 -ov29_02348A18: ; 0x02348A18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r7, #0 - mov r5, #1 - ldr r6, _02348AB8 ; =0x00000E24 - mov sl, r0 - mov r4, r7 - mov fp, r5 - mov sb, r7 - mov r8, r5 -_02348A3C: - mov r0, sb - mov r1, sl - mov r2, sb - mov r3, r8 - str sb, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _02348A90 - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r5 - str r7, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _02348A3C - mov r0, #2 - mov r1, #1 - bl ov29_022E09E8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02348A90: - mov r0, r4 - mov r2, fp - mov r3, fp - add r1, r6, #1 - str r4, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _02348A3C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02348AB8: .word 0x00000E24 - arm_func_end ov29_02348A18 - - arm_func_start ov29_02348ABC -ov29_02348ABC: ; 0x02348ABC - stmdb sp!, {r3, lr} - bl GetItemToRetrieve - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GetItemToRetrieve - mov r1, r0 - mov r0, #1 - bl ov29_02344B9C - ldr r1, _02348B20 ; =0x02353538 - ldr r0, _02348B24 ; =0x00000E22 - ldr r1, [r1] - mov r2, #0 - strb r2, [r1, #0x777] - bl ov29_02348A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl GetItemToRetrieve - mov r1, r0 - mov r0, #0 - bl ov29_02349AD4 - ldr r0, _02348B20 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x77a] - ldmia sp!, {r3, pc} - .align 2, 0 -_02348B20: .word 0x02353538 -_02348B24: .word 0x00000E22 - arm_func_end ov29_02348ABC - - arm_func_start ov29_02348B28 -ov29_02348B28: ; 0x02348B28 - stmdb sp!, {r4, lr} - ldr r1, _02348B94 ; =0x02353538 - mov r4, r0 - ldr r1, [r1] - mov r0, #0 - add r1, r1, #0x700 - ldrsh r1, [r1, #0x6a] - bl ov29_0234B06C - mov r1, r4 - mov r0, #1 - bl ov29_02344B44 - ldr r1, _02348B98 ; =0x00000E17 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - ldr r0, _02348B9C ; =0x00000E44 - bl ov29_02348A18 - mov r1, #1 - ldr r0, _02348B94 ; =0x02353538 - ldr r0, [r0] - strb r1, [r0, #0x77a] - ldmia sp!, {r4, pc} - .align 2, 0 -_02348B94: .word 0x02353538 -_02348B98: .word 0x00000E17 -_02348B9C: .word 0x00000E44 - arm_func_end ov29_02348B28 - - arm_func_start ov29_02348BA0 -ov29_02348BA0: ; 0x02348BA0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov29_02349A70 - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl ov29_023009CC - cmp r0, #0 - beq _02348BD8 - mov r0, r5 - mov r1, r4 - bl ov29_022E274C - cmp r0, #0 - bne _02348BE0 -_02348BD8: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02348BE0: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_02348BA0 - - arm_func_start ov29_02348BE8 -ov29_02348BE8: ; 0x02348BE8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - bl ov29_02349A70 - movs r4, r0 - beq _02348C50 - ldr r1, [r4, #0xb4] - add r0, sp, #0 - ldrsh r1, [r1, #4] - mov r2, #0 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _02348C58 ; =0x00000E3B - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _02348C5C ; =0x00000E3C - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _02348C60 ; =0x00000E3D - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage2 -_02348C50: - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_02348C58: .word 0x00000E3B -_02348C5C: .word 0x00000E3C -_02348C60: .word 0x00000E3D - arm_func_end ov29_02348BE8 - - arm_func_start ov29_02348C64 -ov29_02348C64: ; 0x02348C64 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x40 - ldr r1, _02348CFC ; =0x02353538 - mov r5, r0 - ldr r0, [r1] - mov r4, #0 - add r6, r0, #0x348 - b _02348CEC -_02348C84: - mov r0, r4, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - ldrb r1, [r0] - cmp r1, #5 - ldreqb r2, [r6, #0x400] - ldreqb r1, [r0, #4] - cmpeq r2, r1 - ldreqb r1, [r0, #1] - cmpeq r1, #2 - bne _02348CE8 - ldrsh r1, [r0, #0x10] - add r0, sp, #0 - mov r2, #0x4e - bl GetName - mov r0, r5 - bl sub_02024FB8 - add r1, sp, #0 - bl Strcpy - mov r0, r5 - bl sub_02024FB8 - mov r1, r0 - mov r0, r5 - bl ov29_0234B0B4 - b _02348CF4 -_02348CE8: - add r4, r4, #1 -_02348CEC: - cmp r4, #8 - blt _02348C84 -_02348CF4: - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02348CFC: .word 0x02353538 - arm_func_end ov29_02348C64 - - arm_func_start ov29_02348D00 -ov29_02348D00: ; 0x02348D00 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrsh r0, [r4, #4] - cmp r0, #0 - beq _02348D34 - bl GetSpecialTargetItem - ldrsh r1, [r4, #4] - cmp r1, r0 - bne _02348D34 - ldrb r0, [r4] - tst r0, #0x80 - movne r0, #1 - ldmneia sp!, {r4, pc} -_02348D34: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_02348D00 - - arm_func_start ov29_02348D3C -ov29_02348D3C: ; 0x02348D3C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, #9 - mov r4, #0 - bl IsCurrentMissionType - cmp r0, #0 - beq _02348D78 - bl GetItemToRetrieve - ldrsh r1, [r5, #4] - cmp r1, r0 - bne _02348DCC - ldrb r0, [r5] - tst r0, #0x80 - movne r4, #1 - b _02348DCC -_02348D78: - mov r0, #0xc - bl IsCurrentMissionType - cmp r0, #0 - beq _02348DA8 - bl GetSpecialTargetItem - ldrh r1, [r5, #2] - cmp r1, r0 - bne _02348DCC - ldrb r0, [r5] - tst r0, #0x80 - movne r4, #3 - b _02348DCC -_02348DA8: - ldr r0, _02348DD4 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x777] - cmp r0, #0 - beq _02348DCC - bl GetItemToRetrieve - ldrsh r1, [r5, #4] - cmp r1, r0 - moveq r4, #2 -_02348DCC: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02348DD4: .word 0x02353538 - arm_func_end ov29_02348D3C - - arm_func_start ov29_02348DD8 -ov29_02348DD8: ; 0x02348DD8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GetSpecialTargetItem - cmp r0, #0 - beq _02348E04 - mov r0, r6 - bl EntityIsValid__0234987C - cmp r0, #0 - bne _02348E0C -_02348E04: - mov r0, #0 - b _02348E64 -_02348E0C: - ldr r0, [r6, #0xb4] - ldrb r0, [r0, #6] - cmp r0, #0 - movne r0, #0 - bne _02348E64 - ldrsh r0, [r5, #4] - cmp r0, #0 - beq _02348E60 - bl GetSpecialTargetItem - ldrsh r1, [r5, #4] - cmp r1, r0 - bne _02348E60 - ldrb r0, [r5] - tst r0, #0x80 - beq _02348E60 - mov r0, r6 - bl ov29_02348BA0 - cmp r0, #0 - moveq r0, #1 - movne r0, #2 - b _02348E64 -_02348E60: - mov r0, #0 -_02348E64: - cmp r0, #1 - bne _02348EAC - cmp r4, #0 - beq _02348E9C - mov r0, #0 - mov r1, r6 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r5 - mov r0, #0 - bl ov29_02344B44 - ldr r1, _02348EC8 ; =0x00000BD2 - mov r0, r6 - bl LogMessageByIdWithPopupCheckUser -_02348E9C: - mov r0, r6 - bl ov29_0234A244 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02348EAC: - cmp r0, #2 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} - mov r0, r6 - bl ov29_0234AA98 - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02348EC8: .word 0x00000BD2 - arm_func_end ov29_02348DD8 - - arm_func_start ov29_02348ECC -ov29_02348ECC: ; 0x02348ECC - stmdb sp!, {r3, lr} - cmp r1, #1 - mov r2, #0 - bne _02348EF4 - ldrb r1, [r0] - tst r1, #2 - bne _02348F18 - bl ov29_02348B28 - mov r2, #1 - b _02348F18 -_02348EF4: - cmp r1, #2 - bne _02348F08 - bl ov29_02348ABC - mov r2, #1 - b _02348F18 -_02348F08: - cmp r1, #3 - bne _02348F18 - bl ov29_0234AC8C - mov r2, #1 -_02348F18: - mov r0, r2 - ldmia sp!, {r3, pc} - arm_func_end ov29_02348ECC - - arm_func_start ov29_02348F20 -ov29_02348F20: ; 0x02348F20 - stmdb sp!, {r3, lr} - bl MissionTargetEnemyIsDefeated - cmp r0, #0 - ldrne r0, _02348FD4 ; =0x02353538 - ldrne r0, [r0] - ldrneb r0, [r0, #1] - cmpne r0, #0 - beq _02348FCC - mov r0, #0xa - bl IsCurrentMissionType - cmp r0, #0 - beq _02348F68 - ldr r0, _02348FD4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x6e] - bl ov29_0234A790 - b _02348FB4 -_02348F68: - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _02348F90 - ldr r0, _02348FD4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x6e] - bl ov29_0234A8BC - b _02348FB4 -_02348F90: - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - beq _02348FB4 - ldr r0, _02348FD4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x6e] - bl ov29_0234ABB0 -_02348FB4: - ldr r0, _02348FD4 ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - mov r0, #1 - strb r2, [r1, #1] - ldmia sp!, {r3, pc} -_02348FCC: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02348FD4: .word 0x02353538 - arm_func_end ov29_02348F20 - - arm_func_start ov29_02348FD8 -ov29_02348FD8: ; 0x02348FD8 - stmdb sp!, {r4, lr} - mov r4, #0 - bl IsDestinationFloorWithItem - cmp r0, #0 - beq _02349014 - ldr r0, _02349088 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x77a] - cmp r0, #0 - bne _02349014 - bl GetItemToRetrieve - bl IsItemInBag - cmp r0, #0 - movne r4, #1 - b _02349058 -_02349014: - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _02349050 - ldr r0, _02349088 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x77a] - cmp r0, #0 - bne _02349050 - bl GetItemToRetrieve - mov r1, #0x40 - bl IsItemWithFlagsInBag - cmp r0, #0 - movne r4, #1 - b _02349058 -_02349050: - mov r0, #0 - ldmia sp!, {r4, pc} -_02349058: - cmp r4, #0 - beq _02349080 - bl GetItemToRetrieve - mov r1, r0 - mov r0, #0 - bl ov29_02349AD4 - ldr r0, _02349088 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x77a] -_02349080: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02349088: .word 0x02353538 - arm_func_end ov29_02348FD8 - - arm_func_start ov29_0234908C -ov29_0234908C: ; 0x0234908C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl IsDestinationFloorWithItem - cmp r0, #0 - beq _023490CC - ldr r0, _02349148 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x77a] - cmp r0, #0 - bne _023490CC - bl GetItemToRetrieve - ldrsh r1, [r5, #4] - cmp r1, r0 - moveq r4, #1 - b _02349118 -_023490CC: - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _02349110 - ldr r0, _02349148 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x77a] - cmp r0, #0 - bne _02349110 - bl GetItemToRetrieve - ldrsh r1, [r5, #4] - cmp r1, r0 - bne _02349118 - ldrb r0, [r5] - tst r0, #0x40 - movne r4, #1 - b _02349118 -_02349110: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_02349118: - cmp r4, #0 - beq _02349140 - bl GetItemToRetrieve - mov r1, r0 - mov r0, #0 - bl ov29_02349AD4 - ldr r0, _02349148 ; =0x02353538 - mov r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x77a] -_02349140: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02349148: .word 0x02353538 - arm_func_end ov29_0234908C - - arm_func_start ov29_0234914C -ov29_0234914C: ; 0x0234914C - stmdb sp!, {r3, lr} - ldr r0, _02349184 ; =0x02353538 - mov r1, #5 - ldr r0, [r0] - strb r1, [sp] - ldrb r2, [r0, #0x748] - add r1, sp, #0 - mov r0, #0xb - bl CheckAcceptedMissionByTypeAndDungeon - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02349184: .word 0x02353538 - arm_func_end ov29_0234914C - - arm_func_start ov29_02349188 -ov29_02349188: ; 0x02349188 - ldr r0, _0234919C ; =0x02353538 - ldr ip, _023491A0 ; =ov29_023496EC - ldr r0, [r0] - add r0, r0, #0x760 - bx ip - .align 2, 0 -_0234919C: .word 0x02353538 -_023491A0: .word ov29_023496EC - arm_func_end ov29_02349188 - - arm_func_start ov29_023491A4 -ov29_023491A4: ; 0x023491A4 - ldr r0, _023491B4 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x760 - bx lr - .align 2, 0 -_023491B4: .word 0x02353538 - arm_func_end ov29_023491A4 - - arm_func_start ov29_023491B8 -ov29_023491B8: ; 0x023491B8 - ldr ip, _023491C0 ; =ov29_02349A70 - bx ip - .align 2, 0 -_023491C0: .word ov29_02349A70 - arm_func_end ov29_023491B8 - - arm_func_start IsOutlawOrChallengeRequestFloor -IsOutlawOrChallengeRequestFloor: ; 0x023491C4 - stmdb sp!, {r3, lr} - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - bne _023491F8 - mov r0, #0xa - bl IsCurrentMissionType - cmp r0, #0 - bne _023491F8 - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - beq _02349200 -_023491F8: - mov r0, #1 - ldmia sp!, {r3, pc} -_02349200: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsOutlawOrChallengeRequestFloor - - arm_func_start ov29_02349208 -ov29_02349208: ; 0x02349208 - ldr r0, _02349218 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x760] - bx lr - .align 2, 0 -_02349218: .word 0x02353538 - arm_func_end ov29_02349208 - - arm_func_start IsCurrentMissionType -IsCurrentMissionType: ; 0x0234921C - ldr r1, _0234924C ; =0x02353538 - ldr r2, [r1] - ldrb r1, [r2, #0x760] - cmp r1, #0 - beq _0234923C - ldrb r1, [r2, #0x761] - cmp r1, r0 - beq _02349244 -_0234923C: - mov r0, #0 - bx lr -_02349244: - mov r0, #1 - bx lr - .align 2, 0 -_0234924C: .word 0x02353538 - arm_func_end IsCurrentMissionType - - arm_func_start IsCurrentMissionTypeExact -IsCurrentMissionTypeExact: ; 0x02349250 - ldr r2, _02349288 ; =0x02353538 - ldr r3, [r2] - ldrb r2, [r3, #0x760] - cmp r2, #0 - beq _02349278 - ldrb r2, [r3, #0x761] - cmp r2, r0 - ldreqb r0, [r3, #0x762] - cmpeq r0, r1 - beq _02349280 -_02349278: - mov r0, #0 - bx lr -_02349280: - mov r0, #1 - bx lr - .align 2, 0 -_02349288: .word 0x02353538 - arm_func_end IsCurrentMissionTypeExact - - arm_func_start IsOutlawMonsterHouseFloor -IsOutlawMonsterHouseFloor: ; 0x0234928C - stmdb sp!, {r3, lr} - mov r0, #0xa - mov r1, #7 - bl IsCurrentMissionTypeExact - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsOutlawMonsterHouseFloor - - arm_func_start IsGoldenChamber -IsGoldenChamber: ; 0x023492B0 - stmdb sp!, {r3, lr} - mov r0, #3 - mov r1, #2 - bl IsCurrentMissionTypeExact - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsGoldenChamber - - arm_func_start IsLegendaryChallengeFloor -IsLegendaryChallengeFloor: ; 0x023492D4 - stmdb sp!, {r3, lr} - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - beq _02349308 - ldr r0, _02349310 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x762] - add r0, r0, #0xff - and r0, r0, #0xff - cmp r0, #4 - movls r0, #1 - ldmlsia sp!, {r3, pc} -_02349308: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02349310: .word 0x02353538 - arm_func_end IsLegendaryChallengeFloor - - arm_func_start IsJirachiChallengeFloor -IsJirachiChallengeFloor: ; 0x02349314 - stmdb sp!, {r3, lr} - mov r0, #0xb - bl IsCurrentMissionType - cmp r0, #0 - beq _02349340 - ldr r0, _02349348 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x762] - cmp r0, #5 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_02349340: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02349348: .word 0x02353538 - arm_func_end IsJirachiChallengeFloor - - arm_func_start IsDestinationFloorWithMonster -IsDestinationFloorWithMonster: ; 0x0234934C - stmdb sp!, {r3, lr} - ldr r0, _02349374 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x760 - bl FloorHasMissionMonster - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02349374: .word 0x02353538 - arm_func_end IsDestinationFloorWithMonster - - arm_func_start ov29_02349378 -ov29_02349378: ; 0x02349378 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _023493F4 ; =0x02353538 - ldr r0, [r0] - add r6, r0, #0x760 - mov r0, r6 - bl FloorHasMissionMonster - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsh r0, [r6, #0xc] - mov r4, #0 - mov r5, r4 - cmp r0, #0 - beq _023493E0 - bl GetSpriteFileSize - add r4, r4, r0 - b _023493E0 -_023493BC: - add r0, r6, r5, lsl #1 - ldrsh r0, [r0, #0xe] - cmp r0, #0 - beq _023493D4 - bl GetSpriteFileSize - add r4, r4, r0 -_023493D4: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_023493E0: - ldrsh r0, [r6, #0x14] - cmp r5, r0 - blt _023493BC - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023493F4: .word 0x02353538 - arm_func_end ov29_02349378 - - arm_func_start LoadMissionMonsterSprites -LoadMissionMonsterSprites: ; 0x023493F8 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _0234946C ; =0x02353538 - ldr r0, [r0] - add r6, r0, #0x760 - mov r0, r6 - bl FloorHasMissionMonster - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsh r0, [r6, #0xc] - cmp r0, #0 - beq _0234942C - mov r1, #1 - bl LoadMonsterSprite -_0234942C: - mov r5, #0 - mov r4, #1 - b _0234945C -_02349438: - add r0, r6, r5, lsl #1 - ldrsh r0, [r0, #0xe] - cmp r0, #0 - beq _02349450 - mov r1, r4 - bl LoadMonsterSprite -_02349450: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_0234945C: - ldrsh r0, [r6, #0x14] - cmp r5, r0 - blt _02349438 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0234946C: .word 0x02353538 - arm_func_end LoadMissionMonsterSprites - - arm_func_start MissionTargetEnemyIsDefeated -MissionTargetEnemyIsDefeated: ; 0x02349470 - ldr r0, _0234948C ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x760] - cmp r0, #0 - ldrneb r0, [r1, #0x77b] - moveq r0, #0 - bx lr - .align 2, 0 -_0234948C: .word 0x02353538 - arm_func_end MissionTargetEnemyIsDefeated - - arm_func_start SetMissionTargetEnemyDefeated -SetMissionTargetEnemyDefeated: ; 0x02349490 - ldr r1, _023494A0 ; =0x02353538 - ldr r1, [r1] - strb r0, [r1, #0x77b] - bx lr - .align 2, 0 -_023494A0: .word 0x02353538 - arm_func_end SetMissionTargetEnemyDefeated - - arm_func_start IsDestinationFloorWithFixedRoom -IsDestinationFloorWithFixedRoom: ; 0x023494A4 - ldr r0, _023494C8 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x760] - cmp r0, #0 - ldrneb r0, [r1, #0x776] - cmpne r0, #0 - moveq r0, #0 - movne r0, #1 - bx lr - .align 2, 0 -_023494C8: .word 0x02353538 - arm_func_end IsDestinationFloorWithFixedRoom - - arm_func_start GetItemToRetrieve -GetItemToRetrieve: ; 0x023494CC - ldr r0, _023494EC ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x760] - add r1, r1, #0x760 - cmp r0, #0 - ldrnesh r0, [r1, #4] - moveq r0, #0 - bx lr - .align 2, 0 -_023494EC: .word 0x02353538 - arm_func_end GetItemToRetrieve - - arm_func_start GetItemToDeliver -GetItemToDeliver: ; 0x023494F0 - stmdb sp!, {r4, lr} - ldr r1, _02349518 ; =0x02353538 - mov r0, #7 - ldr r1, [r1] - add r4, r1, #0x760 - bl IsCurrentMissionType - cmp r0, #0 - ldrnesh r0, [r4, #6] - moveq r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02349518: .word 0x02353538 - arm_func_end GetItemToDeliver - - arm_func_start GetSpecialTargetItem -GetSpecialTargetItem: ; 0x0234951C - stmdb sp!, {r4, lr} - ldr r1, _02349560 ; =0x02353538 - mov r0, #3 - ldr r2, [r1] - mov r1, #1 - add r4, r2, #0x760 - bl IsCurrentMissionTypeExact - cmp r0, #0 - bne _02349550 - mov r0, #0xc - bl IsCurrentMissionType - cmp r0, #0 - beq _02349558 -_02349550: - ldrsh r0, [r4, #8] - ldmia sp!, {r4, pc} -_02349558: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02349560: .word 0x02353538 - arm_func_end GetSpecialTargetItem - - arm_func_start IsDestinationFloorWithItem -IsDestinationFloorWithItem: ; 0x02349564 - stmdb sp!, {r4, lr} - ldr r0, _023495C0 ; =0x02353538 - ldr r1, [r0] - ldrb r0, [r1, #0x760] - add r4, r1, #0x760 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, #9 - bl IsCurrentMissionType - cmp r0, #0 - bne _023495B0 - mov r0, #7 - bl IsCurrentMissionType - cmp r0, #0 - bne _023495B0 - ldrsh r0, [r4, #4] - cmp r0, #0 - bne _023495B8 -_023495B0: - mov r0, #0 - ldmia sp!, {r4, pc} -_023495B8: - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_023495C0: .word 0x02353538 - arm_func_end IsDestinationFloorWithItem - - arm_func_start IsDestinationFloorWithHiddenOutlaw -IsDestinationFloorWithHiddenOutlaw: ; 0x023495C4 - stmdb sp!, {r3, lr} - mov r0, #9 - mov r1, #1 - bl IsCurrentMissionTypeExact - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsDestinationFloorWithHiddenOutlaw - - arm_func_start IsDestinationFloorWithFleeingOutlaw -IsDestinationFloorWithFleeingOutlaw: ; 0x023495E8 - stmdb sp!, {r3, lr} - mov r0, #0xa - mov r1, #5 - bl IsCurrentMissionTypeExact - cmp r0, #0 - bne _02349618 - mov r0, #9 - mov r1, #2 - bl IsCurrentMissionTypeExact - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_02349618: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end IsDestinationFloorWithFleeingOutlaw - - arm_func_start GetMissionTargetEnemy -GetMissionTargetEnemy: ; 0x02349620 - ldr r0, _02349634 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x6e] - bx lr - .align 2, 0 -_02349634: .word 0x02353538 - arm_func_end GetMissionTargetEnemy - - arm_func_start GetMissionEnemyMinionGroup -GetMissionEnemyMinionGroup: ; 0x02349638 - ldr r1, _02349654 ; =0x02353538 - add r0, r0, #1 - ldr r1, [r1] - add r0, r1, r0, lsl #1 - add r0, r0, #0x700 - ldrsh r0, [r0, #0x6e] - bx lr - .align 2, 0 -_02349654: .word 0x02353538 - arm_func_end GetMissionEnemyMinionGroup - - arm_func_start ov29_02349658 -ov29_02349658: ; 0x02349658 - ldr r0, _02349684 ; =0x02353538 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1] - ldr r1, [r0] - strb r2, [r1, #1] - ldr r1, [r0] - strb r2, [r1, #2] - ldr r0, [r0] - strb r2, [r0, #3] - bx lr - .align 2, 0 -_02349684: .word 0x02353538 - arm_func_end ov29_02349658 - - arm_func_start ov29_02349688 -ov29_02349688: ; 0x02349688 - ldr r1, _02349698 ; =0x02353538 - ldr r1, [r1] - strb r0, [r1, #1] - bx lr - .align 2, 0 -_02349698: .word 0x02353538 - arm_func_end ov29_02349688 - - arm_func_start ov29_0234969C -ov29_0234969C: ; 0x0234969C - ldr r1, _023496AC ; =0x02353538 - ldr r1, [r1] - strb r0, [r1, #2] - bx lr - .align 2, 0 -_023496AC: .word 0x02353538 - arm_func_end ov29_0234969C - - arm_func_start ov29_023496B0 -ov29_023496B0: ; 0x023496B0 - ldr r0, _023496C0 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #2] - bx lr - .align 2, 0 -_023496C0: .word 0x02353538 - arm_func_end ov29_023496B0 - - arm_func_start SetTargetMonsterNotFoundFlag -SetTargetMonsterNotFoundFlag: ; 0x023496C4 - ldr r1, _023496D4 ; =0x02353538 - ldr r1, [r1] - strb r0, [r1, #3] - bx lr - .align 2, 0 -_023496D4: .word 0x02353538 - arm_func_end SetTargetMonsterNotFoundFlag - - arm_func_start GetTargetMonsterNotFoundFlag -GetTargetMonsterNotFoundFlag: ; 0x023496D8 - ldr r0, _023496E8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #3] - bx lr - .align 2, 0 -_023496E8: .word 0x02353538 - arm_func_end GetTargetMonsterNotFoundFlag - - arm_func_start ov29_023496EC -ov29_023496EC: ; 0x023496EC - mov ip, #0 - strb ip, [r0] - strb ip, [r0, #0x18] - strb ip, [r0, #0x17] - strb ip, [r0, #0x1a] - strh ip, [r0, #4] - strh ip, [r0, #6] - strh ip, [r0, #8] - strb ip, [r0, #0x16] - strh ip, [r0, #0xa] - strb ip, [r0, #0x1b] - strb ip, [r0, #0x1c] - strh ip, [r0, #0xc] - mov r3, ip -_02349724: - add r1, ip, #1 - mov r1, r1, lsl #0x10 - add r2, r0, ip, lsl #1 - mov ip, r1, asr #0x10 - strh r3, [r2, #0xe] - cmp ip, #3 - blt _02349724 - strh r3, [r0, #0x14] - bx lr - arm_func_end ov29_023496EC - - arm_func_start FloorHasMissionMonster -FloorHasMissionMonster: ; 0x02349748 - ldrb r1, [r0] - cmp r1, #0 - moveq r0, #0 - bxeq lr - ldrb r0, [r0, #1] - cmp r0, #7 - cmpne r0, #0 - cmpne r0, #2 - cmpne r0, #1 - beq _02349780 - add r0, r0, #0xf8 - and r0, r0, #0xff - cmp r0, #3 - bhi _02349788 -_02349780: - mov r0, #1 - bx lr -_02349788: - mov r0, #0 - bx lr - arm_func_end FloorHasMissionMonster - - arm_func_start ov29_02349790 -ov29_02349790: ; 0x02349790 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl GetAcceptedMission - ldrb r1, [r0] - cmp r1, #5 - ldreqb r2, [r4] - ldreqb r1, [r0, #4] - cmpeq r2, r1 - ldreqb r2, [r4, #1] - ldreqb r1, [r0, #5] - cmpeq r2, r1 - movne r0, #0 - ldmia sp!, {r4, pc} - arm_func_end ov29_02349790 - - arm_func_start ov29_023497C8 -ov29_023497C8: ; 0x023497C8 - stmdb sp!, {r4, lr} - mov ip, #0 - mov r4, ip - b _02349804 -_023497D8: - mov r3, r4, lsl #1 - ldrsh lr, [r1, r3] - cmp lr, #0 - addne r3, ip, #1 - addne ip, r0, ip, lsl #1 - movne r3, r3, lsl #0x10 - strneh lr, [ip, #0xe] - movne ip, r3, asr #0x10 - add r3, r4, #1 - mov r3, r3, lsl #0x10 - mov r4, r3, asr #0x10 -_02349804: - cmp r4, #2 - cmplt ip, r2 - blt _023497D8 - strh ip, [r0, #0x14] - ldmia sp!, {r4, pc} - arm_func_end ov29_023497C8 - - arm_func_start ov29_02349818 -ov29_02349818: ; 0x02349818 - stmdb sp!, {r4, lr} - mov r4, #0 - add ip, r4, #1 - mov ip, ip, lsl #0x10 - strh r1, [r0, #0xe] - cmp r2, #0 - mov ip, ip, asr #0x10 - beq _02349874 - b _02349868 -_0234983C: - mov r1, r4, lsl #1 - ldrsh lr, [r2, r1] - cmp lr, #0 - addne r1, ip, #1 - addne ip, r0, ip, lsl #1 - movne r1, r1, lsl #0x10 - strneh lr, [ip, #0xe] - movne ip, r1, asr #0x10 - add r1, r4, #1 - mov r1, r1, lsl #0x10 - mov r4, r1, asr #0x10 -_02349868: - cmp r4, #2 - cmplt ip, r3 - blt _0234983C -_02349874: - strh ip, [r0, #0x14] - ldmia sp!, {r4, pc} - arm_func_end ov29_02349818 - - arm_func_start EntityIsValid__0234987C -EntityIsValid__0234987C: ; 0x0234987C - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0234987C - - arm_func_start ov29_023498A0 -ov29_023498A0: ; 0x023498A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - str r0, [sp] - ldrb r0, [r0, #0x16] - cmp r0, #5 - bne _02349A54 - bl ov29_02337F98 - mov sb, r0 - bl IsCastform - cmp r0, #0 - mov r0, sb - beq _023498E4 - bl GetMonsterGenderVeneer - cmp r0, #1 - ldreq sb, _02349A5C ; =0x0000017B - ldrne sb, _02349A60 ; =0x000003D3 - b _02349904 -_023498E4: - bl IsCherrim - cmp r0, #0 - beq _02349904 - mov r0, sb - bl GetMonsterGenderVeneer - cmp r0, #1 - moveq sb, #0x1cc - ldrne sb, _02349A64 ; =0x00000424 -_02349904: - ldr r0, _02349A68 ; =0x000001C1 - sub r0, r0, #2 - str r0, [sp, #8] - ldr r0, _02349A6C ; =0x00000418 - sub r0, r0, #1 - str r0, [sp, #4] - ldr r0, _02349A68 ; =0x000001C1 - add r7, r0, #0x10 - ldr r0, _02349A6C ; =0x00000418 - add r6, r0, #0x10 - add r5, r0, #0x11 - ldr r0, _02349A68 ; =0x000001C1 - add r4, r0, #1 - add fp, r0, #2 - add r0, r0, #4 - str r0, [sp, #0xc] - ldr r0, _02349A68 ; =0x000001C1 - add r8, r0, #6 -_0234994C: - cmp sb, r8 - ldreq r0, _02349A6C ; =0x00000418 - addeq sl, r0, #6 - beq _02349A44 - cmp sb, #0x1d0 - ldreq r0, _02349A68 ; =0x000001C1 - addeq sl, r0, #0xd - beq _02349A44 - cmp sb, r7 - ldreq r0, _02349A68 ; =0x000001C1 - addeq sl, r0, #0xe - beq _02349A44 - cmp sb, r6 - ldreq r0, _02349A6C ; =0x00000418 - addeq sl, r0, #0xe - beq _02349A44 - cmp sb, r5 - ldreq r0, _02349A6C ; =0x00000418 - addeq sl, r0, #0xf - beq _02349A44 - cmp sb, r4 - ldreq sl, [sp, #4] - beq _02349A44 - cmp sb, fp - ldreq sl, _02349A6C ; =0x00000418 - beq _02349A44 - cmp sb, #0x1c4 - ldreq r0, _02349A68 ; =0x000001C1 - addeq sl, r0, #0x258 - beq _02349A44 - ldr r0, [sp, #0xc] - cmp sb, r0 - bne _023499F4 - mov r0, #3 - bl DungeonRandInt - cmp r0, #0 - ldreq sl, [sp, #8] - beq _02349A44 - cmp r0, #1 - moveq sl, #0x1c0 - ldrne sl, _02349A68 ; =0x000001C1 - b _02349A44 -_023499F4: - mov r0, sb - bl GetMonsterPreEvolution - mov sl, r0 - add r0, sp, #0x10 - mov r1, sb - bl GetEvoParameters - ldrh r0, [sp, #0x16] - cmp r0, #0xa - bne _02349A28 - mov r0, sl - bl FemaleToMaleForm - mov sl, r0 - b _02349A3C -_02349A28: - cmp r0, #0xb - bne _02349A3C - mov r0, sl - bl GetSecondFormIfValid - mov sl, r0 -_02349A3C: - cmp sl, #0 - beq _02349A4C -_02349A44: - mov sb, sl - b _0234994C -_02349A4C: - ldr r0, [sp] - strh sb, [r0, #0x18] -_02349A54: - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02349A5C: .word 0x0000017B -_02349A60: .word 0x000003D3 -_02349A64: .word 0x00000424 -_02349A68: .word 0x000001C1 -_02349A6C: .word 0x00000418 - arm_func_end ov29_023498A0 - - arm_func_start ov29_02349A70 -ov29_02349A70: ; 0x02349A70 - stmdb sp!, {r4, r5, r6, lr} - mov r5, #0 - ldr r4, _02349AD0 ; =0x02353538 - b _02349AC0 -_02349A80: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r6, [r0, #0xb28] - mov r0, r6 - bl EntityIsValid__0234987C - cmp r0, #0 - beq _02349AB4 - ldr r0, [r6, #0xb4] - bl IsExperienceLocked - cmp r0, #0 - movne r0, r6 - ldmneia sp!, {r4, r5, r6, pc} -_02349AB4: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_02349AC0: - cmp r5, #4 - blt _02349A80 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02349AD0: .word 0x02353538 - arm_func_end ov29_02349A70 - - arm_func_start ov29_02349AD4 -ov29_02349AD4: ; 0x02349AD4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02349C80 ; =0x02353538 - mov r5, r0 - ldr r2, [r2] - mov r4, r1 - ldrb r0, [r2, #0x760] - add r1, r2, #0x760 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r0, [r1, #3] - bl GetAcceptedMission - ldrb r1, [r0] - cmp r1, #5 - bne _02349C78 - ldrb r1, [r0, #1] - cmp r1, #0 - cmpne r1, #7 - cmpne r1, #2 - cmpne r1, #1 - cmpne r1, #8 - bne _02349B3C - ldrsh r1, [r0, #0x10] - cmp r5, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349B3C: - cmp r1, #6 - cmpne r1, #4 - bne _02349B5C - ldrsh r1, [r0, #0x14] - cmp r4, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349B5C: - cmp r1, #9 - bne _02349B90 - ldrsh r1, [r0, #0x10] - cmp r5, r1 - moveq r1, #7 - streqb r1, [r0] - beq _02349C60 - cmp r5, #0 - ldreqsh r1, [r0, #0x14] - cmpeq r4, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349B90: - cmp r1, #3 - bne _02349BE8 - ldrb r1, [r0, #2] - cmp r1, #0 - moveq r1, #7 - streqb r1, [r0] - beq _02349C60 - cmp r1, #1 - bne _02349BC8 - ldrsh r1, [r0, #0x14] - cmp r4, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349BC8: - cmp r1, #2 - moveq r1, #7 - streqb r1, [r0] - beq _02349C60 - cmp r1, #3 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349BE8: - cmp r1, #4 - bne _02349C04 - ldrsh r1, [r0, #0x14] - cmp r4, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349C04: - cmp r1, #5 - moveq r1, #7 - streqb r1, [r0] - beq _02349C60 - cmp r1, #0xa - bne _02349C30 - ldrsh r1, [r0, #0x10] - cmp r5, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349C30: - cmp r1, #0xb - bne _02349C4C - ldrsh r1, [r0, #0xe] - cmp r5, r1 - moveq r1, #7 - streqb r1, [r0] - b _02349C60 -_02349C4C: - cmp r1, #0xc - ldreqsh r1, [r0, #0x14] - cmpeq r4, r1 - moveq r1, #7 - streqb r1, [r0] -_02349C60: - ldrb r1, [r0] - cmp r1, #7 - ldreqb r1, [r0, #0x16] - cmpeq r1, #5 - bne _02349C78 - bl ov29_023498A0 -_02349C78: - bl ov29_022E8244 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02349C80: .word 0x02353538 - arm_func_end ov29_02349AD4 - - arm_func_start ov29_02349C84 -ov29_02349C84: ; 0x02349C84 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0xa0 - bl ov29_02349208 - cmp r0, #0 - moveq r0, #0 - beq _0234A1F8 - bl ov29_023491A4 - ldr r1, _0234A200 ; =0x023537C8 - mov r2, #0 - mov r4, r0 - str r2, [r1] - bl GetTargetMonsterNotFoundFlag - cmp r0, #0 - beq _02349CD4 - bl ov29_022EAC8C - ldr r1, _0234A204 ; =0x00000E11 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_02349CD4: - ldrb r0, [r4, #1] - cmp r0, #0xe - addls pc, pc, r0, lsl #2 - b _0234A1D4 -_02349CE4: ; jump table - b _02349D20 ; case 0 - b _02349D20 ; case 1 - b _02349D20 ; case 2 - b _02349D38 ; case 3 - b _02349D20 ; case 4 - b _02349E6C ; case 5 - b _02349D20 ; case 6 - b _02349D20 ; case 7 - b _02349D20 ; case 8 - b _0234A1A4 ; case 9 - b _0234A134 ; case 10 - b _02349F1C ; case 11 - b _0234A120 ; case 12 - b _0234A1D4 ; case 13 - b _0234A1D4 ; case 14 -_02349D20: - bl ov29_022EAC8C - ldr r1, _0234A208 ; =0x00000E04 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_02349D38: - ldrb r0, [r4, #2] - cmp r0, #3 - beq _0234A1D4 - bl ov29_022EAC8C - ldr r1, _0234A208 ; =0x00000E04 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldrb r0, [r4, #2] - cmp r0, #2 - bne _02349DC8 - bl ov29_023491B8 - mov r1, r0 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _0234A20C ; =0x00000E34 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldrsh r5, [r4, #0xa] - add r0, sp, #0x10 - mov r2, #0 - mov r1, r5 - bl ov29_0234BAC0 - mov r1, r5 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A210 ; =0x00000E35 - add r0, sp, #0x10 - mov r2, #1 - bl DisplayMessage - ldrsh r0, [r4, #0xa] - mov r1, #0 - bl ov29_02348888 - b _0234A1D4 -_02349DC8: - cmp r0, #0 - bne _0234A1D4 - bl ov29_023491B8 - mov r5, r0 - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, #0 - mov r1, #0xe30 - mov r2, #1 - bl DisplayMessage - ldrsh r4, [r4, #0xa] - add r0, sp, #0 - mov r2, #0 - mov r1, r4 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A214 ; =0x00000E31 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A218 ; =0x00000E32 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r0, [r5, #0xb4] - mov r1, #0 - ldrsh r0, [r0, #2] - bl ov29_02348888 - ldr r2, _0234A21C ; =0x02353538 - ldr r3, _0234A220 ; =0x00000E33 - ldr r2, [r2] - mov r0, r5 - add r2, r2, #0x348 - mov r1, #0 - add r2, r2, #0x400 - bl ov29_0234AF34 - b _0234A1D4 -_02349E6C: - bl ov29_022EAC8C - ldr r1, _0234A208 ; =0x00000E04 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - bl ov29_023491B8 - mov r5, r0 - mov r0, #1 - mov r1, r5 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, #0 - mov r1, #0xe30 - mov r2, #1 - bl DisplayMessage - ldrsh r4, [r4, #0xa] - add r0, sp, #0x20 - mov r2, #0 - mov r1, r4 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A214 ; =0x00000E31 - add r0, sp, #0x20 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A218 ; =0x00000E32 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r0, [r5, #0xb4] - mov r1, #0 - ldrsh r0, [r0, #2] - bl ov29_02348888 - ldr r2, _0234A21C ; =0x02353538 - ldr r3, _0234A220 ; =0x00000E33 - ldr r2, [r2] - mov r0, r5 - add r2, r2, #0x348 - mov r1, #0 - add r2, r2, #0x400 - bl ov29_0234AF34 - b _0234A1D4 -_02349F1C: - mov r0, #4 - bl ov29_022FBBEC - add r0, r0, #4 - bl ov29_022FA3D4 - mov r0, #1 - bl ov29_022EAF34 - bl GetMissionTargetEnemy - mov r1, r0 - mov r0, #1 - bl ov29_0234B0CC - mov r0, #0 - ldr r1, _0234A224 ; =0x00000E0A - mov r2, #1 - bl DisplayMessage - ldrb r0, [r4, #2] - cmp r0, #0 - bne _02349FA4 - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x80 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x80 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A228 ; =0x00000E0B - add r0, sp, #0x80 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_02349FA4: - cmp r0, #1 - bne _02349FF0 - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x70 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x70 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A22C ; =0x00000E0C - add r0, sp, #0x70 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_02349FF0: - cmp r0, #2 - bne _0234A03C - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x60 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x60 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A230 ; =0x00000E0D - add r0, sp, #0x60 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_0234A03C: - cmp r0, #3 - bne _0234A088 - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x50 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x50 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A234 ; =0x00000E0E - add r0, sp, #0x50 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_0234A088: - cmp r0, #4 - bne _0234A0D4 - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x40 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x40 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A238 ; =0x00000E0F - add r0, sp, #0x40 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_0234A0D4: - cmp r0, #5 - bne _0234A1D4 - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x30 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - add r0, sp, #0x30 - mov r1, #0x12 - bl SetPortraitUnknownAttr - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - add r0, sp, #0x30 - mov r1, #0xe10 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_0234A120: - ldr r1, _0234A23C ; =0x00000E09 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - b _0234A1D4 -_0234A134: - ldrb r0, [r4, #2] - cmp r0, #5 - bne _0234A148 - bl ov29_0234AE40 - b _0234A1D4 -_0234A148: - cmp r0, #7 - bne _0234A198 - mov r0, #1 - bl ov29_0234ADCC - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0x90 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A240 ; =0x00000E07 - add r0, sp, #0x90 - mov r2, #1 - bl DisplayMessage - mov r0, #2 - bl ov29_022EAF34 - b _0234A1D4 -_0234A198: - mov r0, #0 - bl ov29_0234ADCC - b _0234A1D4 -_0234A1A4: - ldrb r0, [r4, #2] - cmp r0, #2 - bne _0234A1B8 - bl ov29_0234AE40 - b _0234A1D4 -_0234A1B8: - cmp r0, #1 - bne _0234A1CC - mov r0, #3 - bl ov29_0234ADCC - b _0234A1D4 -_0234A1CC: - mov r0, #0 - bl ov29_0234ADCC -_0234A1D4: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - ldr r0, _0234A200 ; =0x023537C8 - ldr r0, [r0] - cmp r0, #0 - beq _0234A1F4 - blx r0 -_0234A1F4: - mov r0, #1 -_0234A1F8: - add sp, sp, #0xa0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234A200: .word 0x023537C8 -_0234A204: .word 0x00000E11 -_0234A208: .word 0x00000E04 -_0234A20C: .word 0x00000E34 -_0234A210: .word 0x00000E35 -_0234A214: .word 0x00000E31 -_0234A218: .word 0x00000E32 -_0234A21C: .word 0x02353538 -_0234A220: .word 0x00000E33 -_0234A224: .word 0x00000E0A -_0234A228: .word 0x00000E0B -_0234A22C: .word 0x00000E0C -_0234A230: .word 0x00000E0D -_0234A234: .word 0x00000E0E -_0234A238: .word 0x00000E0F -_0234A23C: .word 0x00000E09 -_0234A240: .word 0x00000E07 - arm_func_end ov29_02349C84 - - arm_func_start ov29_0234A244 -ov29_0234A244: ; 0x0234A244 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl ov29_023491B8 - movs r4, r0 - bne _0234A26C - ldr r1, _0234A2C8 ; =0x00000E2D - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldmia sp!, {r3, r4, r5, pc} -_0234A26C: - mov r1, r4 - mov r0, #2 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r4 - bl ov29_023009CC - cmp r0, #0 - bne _0234A2A0 - ldr r1, _0234A2CC ; =0x00000E2F - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldmia sp!, {r3, r4, r5, pc} -_0234A2A0: - mov r0, r5 - mov r1, r4 - bl ov29_022E274C - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _0234A2D0 ; =0x00000E2C - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234A2C8: .word 0x00000E2D -_0234A2CC: .word 0x00000E2F -_0234A2D0: .word 0x00000E2C - arm_func_end ov29_0234A244 - - arm_func_start ov29_0234A2D4 -ov29_0234A2D4: ; 0x0234A2D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov sl, r0 - ldr sb, [sl, #0xb4] - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, sl - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, sl - bl ov29_023009CC - cmp r0, #0 - bne _0234A32C - ldr r1, _0234A5B0 ; =0x00000E27 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234A5A8 -_0234A32C: - mov r0, #7 - bl IsCurrentMissionType - cmp r0, #0 - mov r0, #0 - mov r3, #1 - beq _0234A504 - ldr r1, _0234A5B4 ; =0x00000E21 - mov r2, r0 - str r0, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _0234A5A8 - mov r7, #0 - mov fp, r7 - mov r6, #1 - ldr r5, _0234A5B8 ; =0x020AF6B8 - mov r4, #6 - b _0234A3D8 -_0234A374: - mul r0, r7, r4 - ldr r1, [r5] - ldr r1, [r1, #0x384] - ldrb r2, [r1, r0] - add r8, r1, r0 - tst r2, #1 - movne r0, r6 - moveq r0, fp - tst r0, #0xff - beq _0234A3D4 - ldrb r0, [r8] - tst r0, #2 - bne _0234A3D4 - tst r0, #0x10 - beq _0234A3C4 - tst r2, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0234A3D4 -_0234A3C4: - bl GetItemToDeliver - ldrsh r1, [r8, #4] - cmp r1, r0 - beq _0234A3E0 -_0234A3D4: - add r7, r7, #1 -_0234A3D8: - cmp r7, #0x32 - blt _0234A374 -_0234A3E0: - cmp r7, #0x32 - bne _0234A40C - bl GetItemToDeliver - mov r1, r0 - mov r0, #0 - bl ov29_02344B9C - ldr r1, _0234A5BC ; =0x00000E26 - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234A5A8 -_0234A40C: - mov r0, #6 - ldr r1, _0234A5B8 ; =0x020AF6B8 - mul r4, r7, r0 - ldr r0, [r1] - ldr r0, [r0, #0x384] - add r0, r0, r4 - ldrb r1, [r0, #1] - cmp r1, #0 - beq _0234A47C - ldr r0, _0234A5C0 ; =0x02353538 - sub r1, r1, #1 - ldr r0, [r0] - add r0, r0, r1, lsl #2 - add r0, r0, #0x12000 - ldr r1, [r0, #0xb28] - cmp r1, #0 - moveq r0, #0 - beq _0234A468 - ldr r0, [r1] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0234A468: - cmp r0, #0 - beq _0234A47C - ldr r0, [r1, #0xb4] - add r0, r0, #0x62 - bl ItemZInit -_0234A47C: - ldr r0, _0234A5B8 ; =0x020AF6B8 - ldr r0, [r0] - ldr r0, [r0, #0x384] - add r0, r0, r4 - bl ItemZInit - bl ov29_02347030 - ldr r1, _0234A5C4 ; =0x00000E1D - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A5B8 ; =0x020AF6B8 - mov r0, #0 - ldr r1, [r1] - ldr r1, [r1, #0x384] - add r1, r1, r4 - bl ov29_02344B44 - ldrsh r4, [sb, #4] - add r0, sp, #0x14 - mov r2, #0 - mov r1, r4 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A5C8 ; =0x00000E1E - add r0, sp, #0x14 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A5CC ; =0x00000E1F - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r4, _0234A5D0 ; =0x00000E44 - b _0234A570 -_0234A504: - mov r2, r0 - mov r1, #0xe20 - str r0, [sp] - bl ov29_0234D518 - cmp r0, #1 - bne _0234A5A8 - ldr r1, _0234A5D4 ; =0x00000E1A - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldrsh r4, [sb, #4] - add r0, sp, #4 - mov r2, #0 - mov r1, r4 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A5D8 ; =0x00000E1B - add r0, sp, #4 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A5DC ; =0x00000E1C - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r4, _0234A5E0 ; =0x00000E23 -_0234A570: - ldrsh r0, [sb, #2] - mov r1, #0 - bl ov29_02348888 - ldr r1, _0234A5C0 ; =0x02353538 - mov r0, sl - ldr r1, [r1] - mov r3, r4 - add r1, r1, #0x348 - add r2, r1, #0x400 - mov r1, #0 - bl ov29_0234AF34 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234A5A8: - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234A5B0: .word 0x00000E27 -_0234A5B4: .word 0x00000E21 -_0234A5B8: .word 0x020AF6B8 -_0234A5BC: .word 0x00000E26 -_0234A5C0: .word 0x02353538 -_0234A5C4: .word 0x00000E1D -_0234A5C8: .word 0x00000E1E -_0234A5CC: .word 0x00000E1F -_0234A5D0: .word 0x00000E44 -_0234A5D4: .word 0x00000E1A -_0234A5D8: .word 0x00000E1B -_0234A5DC: .word 0x00000E1C -_0234A5E0: .word 0x00000E23 - arm_func_end ov29_0234A2D4 - - arm_func_start ov29_0234A5E4 -ov29_0234A5E4: ; 0x0234A5E4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - ldr r6, [r7, #0xb4] - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r7 - bl ov29_023009CC - cmp r0, #0 - bne _0234A63C - ldr r1, _0234A740 ; =0x00000E2E - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234A738 -_0234A63C: - bl ov29_023491B8 - movs r4, r0 - bne _0234A65C - ldr r1, _0234A744 ; =0x00000E2D - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234A738 -_0234A65C: - mov r1, r4 - mov r0, #2 - mov r2, #0 - bl SubstitutePlaceholderStringTags - mov r0, r4 - bl ov29_023009CC - cmp r0, #0 - bne _0234A690 - ldr r1, _0234A748 ; =0x00000E2F - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234A738 -_0234A690: - mov r0, r7 - mov r1, r4 - bl ov29_022E274C - cmp r0, #0 - mov r0, #0 - mov r2, #1 - bne _0234A6B8 - ldr r1, _0234A74C ; =0x00000E2C - bl DisplayMessage2 - b _0234A738 -_0234A6B8: - ldr r1, _0234A750 ; =0x00000E28 - bl DisplayMessage - ldrsh r5, [r6, #4] - add r0, sp, #0 - mov r2, #0 - mov r1, r5 - bl ov29_0234BAC0 - mov r1, r5 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A754 ; =0x00000E29 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234A758 ; =0x00000E2A - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldrsh r0, [r6, #2] - mov r1, #0 - bl ov29_02348888 - ldr r2, _0234A75C ; =0x02353538 - ldr r3, _0234A760 ; =0x00000E2B - ldr r2, [r2] - mov r0, r4 - add r2, r2, #0x348 - mov r1, r7 - add r2, r2, #0x400 - bl ov29_0234AF34 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234A738: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234A740: .word 0x00000E2E -_0234A744: .word 0x00000E2D -_0234A748: .word 0x00000E2F -_0234A74C: .word 0x00000E2C -_0234A750: .word 0x00000E28 -_0234A754: .word 0x00000E29 -_0234A758: .word 0x00000E2A -_0234A75C: .word 0x02353538 -_0234A760: .word 0x00000E2B - arm_func_end ov29_0234A5E4 - - arm_func_start ov29_0234A764 -ov29_0234A764: ; 0x0234A764 - stmdb sp!, {r3, lr} - bl GetLeader - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl GetForcedLossReason - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov29_0234A764 - - arm_func_start ov29_0234A790 -ov29_0234A790: ; 0x0234A790 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - bl ov29_0234A764 - cmp r0, #0 - bne _0234A8A4 - mov r0, #0xa - mov r1, #4 - bl IsCurrentMissionTypeExact - movs r4, r0 - mov r5, #0 - beq _0234A7CC - bl ov29_023491B8 - movs r5, r0 - beq _0234A8A4 -_0234A7CC: - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r7 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A8AC ; =0x00000E14 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - bl ov29_0234AEE8 - cmp r4, #0 - beq _0234A84C - ldr r1, [r5, #0xb4] - mov r0, #1 - ldrsh r1, [r1, #2] - bl ov29_0234B0CC - ldr r1, [r5, #0xb4] - add r0, sp, #0 - ldrsh r6, [r1, #2] - mov r2, #0 - mov r1, r6 - bl ov29_0234BAC0 - mov r1, r6 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A8B0 ; =0x00000E18 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage -_0234A84C: - mov r1, r7 - mov r0, #1 - bl ov29_0234B0CC - mov r0, r7 - mov r1, #0 - bl ov29_02348888 - cmp r4, #0 - beq _0234A890 - ldr r0, _0234A8B4 ; =0x02353538 - ldr r3, _0234A8B8 ; =0x00000E44 - ldr r1, [r0] - mov r0, r5 - add r1, r1, #0x348 - add r2, r1, #0x400 - mov r1, #0 - bl ov29_0234AF34 - b _0234A898 -_0234A890: - ldr r0, _0234A8B8 ; =0x00000E44 - bl ov29_02348A18 -_0234A898: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234A8A4: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234A8AC: .word 0x00000E14 -_0234A8B0: .word 0x00000E18 -_0234A8B4: .word 0x02353538 -_0234A8B8: .word 0x00000E44 - arm_func_end ov29_0234A790 - - arm_func_start ov29_0234A8BC -ov29_0234A8BC: ; 0x0234A8BC - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_0234A764 - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl IsDestinationFloorWithHiddenOutlaw - cmp r0, #0 - beq _0234A928 - bl ov29_023496B0 - cmp r0, #0 - beq _0234A918 - bl GetItemToRetrieve - mov r1, r0 - mov r0, #0 - bl ov29_02344B9C - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A978 ; =0x00000E16 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - b _0234A958 -_0234A918: - mov r0, r4 - mov r1, #0 - bl ov29_02348888 - ldmia sp!, {r4, pc} -_0234A928: - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234A97C ; =0x00000E15 - mov r0, #0 - mov r2, #1 - bl DisplayMessage -_0234A958: - bl ov29_0234AEE8 - mov r0, r4 - mov r1, #0 - bl ov29_02348888 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - ldmia sp!, {r4, pc} - .align 2, 0 -_0234A978: .word 0x00000E16 -_0234A97C: .word 0x00000E15 - arm_func_end ov29_0234A8BC - - arm_func_start ov29_0234A980 -ov29_0234A980: ; 0x0234A980 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - bl ov29_023491B8 - movs r5, r0 - beq _0234AA78 - bl ov29_023009CC - cmp r0, #0 - bne _0234A9DC - mov r0, r5 - bl ov29_022E550C - mov r0, r5 - mov r1, r5 - mov r2, #0 - mov r3, #1 - bl ov29_02305C28 - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _0234AA80 ; =0x00000E39 - mov r0, #0 - mov r2, #1 - bl DisplayMessage -_0234A9DC: - mov r1, r5 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - ldr r1, _0234AA84 ; =0x00000E36 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, [r5, #0xb4] - add r0, sp, #0 - ldrsh r4, [r1, #4] - mov r2, #0 - mov r1, r4 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234AA88 ; =0x00000E37 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234AA8C ; =0x00000E38 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - mov r0, #0 - mov r1, r0 - bl ov29_02348888 - ldr r2, _0234AA90 ; =0x02353538 - ldr r3, _0234AA94 ; =0x00000E3A - ldr r2, [r2] - mov r0, r5 - add r2, r2, #0x348 - mov r1, #0 - add r2, r2, #0x400 - bl ov29_0234AF34 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234AA78: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234AA80: .word 0x00000E39 -_0234AA84: .word 0x00000E36 -_0234AA88: .word 0x00000E37 -_0234AA8C: .word 0x00000E38 -_0234AA90: .word 0x02353538 -_0234AA94: .word 0x00000E3A - arm_func_end ov29_0234A980 - - arm_func_start ov29_0234AA98 -ov29_0234AA98: ; 0x0234AA98 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r0 - bl ov29_023491B8 - movs r4, r0 - bne _0234AAC4 - ldr r1, _0234AB9C ; =0x00000E2D - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - b _0234AB94 -_0234AAC4: - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl SubstitutePlaceholderStringTags - bl GetSpecialTargetItem - mov r1, r0 - mov r0, #1 - bl ov29_0234B084 - ldr r1, _0234ABA0 ; =0x00000E3F - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, [r4, #0xb4] - add r0, sp, #0 - ldrsh r5, [r1, #4] - mov r2, #0 - mov r1, r5 - bl ov29_0234BAC0 - mov r1, r5 - mov r0, #1 - bl ov29_0234B0CC - add r0, sp, #0 - mov r1, #0xe40 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234ABA4 ; =0x00000E41 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - add r0, r6, #4 - mov r1, #1 - bl ov29_023456BC - bl GetSpecialTargetItem - mov r1, r0 - mov r0, #0 - bl ov29_02348888 - ldr r2, _0234ABA8 ; =0x02353538 - ldr r3, _0234ABAC ; =0x00000E42 - ldr r2, [r2] - mov r0, r4 - add r2, r2, #0x348 - mov r1, #0 - add r2, r2, #0x400 - bl ov29_0234AF34 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234AB94: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0234AB9C: .word 0x00000E2D -_0234ABA0: .word 0x00000E3F -_0234ABA4: .word 0x00000E41 -_0234ABA8: .word 0x02353538 -_0234ABAC: .word 0x00000E42 - arm_func_end ov29_0234AA98 - - arm_func_start ov29_0234ABB0 -ov29_0234ABB0: ; 0x0234ABB0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_0234A764 - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl GetLeader - mov r1, r0 - mov r0, #0 - mov r2, r0 - bl SubstitutePlaceholderStringTags - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234AC80 ; =0x00000E13 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - bl IsJirachiChallengeFloor - cmp r0, #0 - bne _0234AC40 - ldr r0, _0234AC84 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - bne _0234AC38 - bl ov29_022EAEFC - cmp r0, #0 - beq _0234AC38 - ldr r0, _0234AC84 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd6] - bl ov29_022EAD00 - bl ov29_022EAE14 -_0234AC38: - mov r0, #0 - bl ov29_022EAF34 -_0234AC40: - mov r0, r4 - mov r1, #0 - bl ov29_02348888 - bl IsJirachiChallengeFloor - cmp r0, #0 - beq _0234AC68 - mov r0, #2 - mov r1, #1 - bl ov29_022E09E8 - b _0234AC70 -_0234AC68: - ldr r0, _0234AC88 ; =0x00000E43 - bl ov29_02348A18 -_0234AC70: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - ldmia sp!, {r4, pc} - .align 2, 0 -_0234AC80: .word 0x00000E13 -_0234AC84: .word 0x02353538 -_0234AC88: .word 0x00000E43 - arm_func_end ov29_0234ABB0 - - arm_func_start ov29_0234AC8C -ov29_0234AC8C: ; 0x0234AC8C - stmdb sp!, {r3, r4, r5, lr} - bl GetSpecialTargetItem - mov r1, r0 - mov r0, #0 - bl ov29_02348888 - bl ov29_0234D630 - bl ov29_0234B034 - mov r1, r0 - mov r0, #1 - str r0, [sp] - mov r2, #0 - ldr r0, _0234AD08 ; =0x00000E12 - mov r3, r2 - bl ov29_0234D70C - mov r0, #9 - bl ov29_022EACE4 - mov r5, #0x62 - mov r4, #9 - b _0234ACE0 -_0234ACD8: - mov r0, r5 - bl AdvanceFrame -_0234ACE0: - mov r0, r4 - bl sub_02017C10 - cmp r0, #0 - bne _0234ACD8 - bl ov29_0234D838 - mov r0, #0 - bl ov29_0234D8A0 - ldr r0, _0234AD0C ; =0x00000E43 - bl ov29_02348A18 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234AD08: .word 0x00000E12 -_0234AD0C: .word 0x00000E43 - arm_func_end ov29_0234AC8C - - arm_func_start ov29_0234AD10 -ov29_0234AD10: ; 0x0234AD10 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl IsDestinationFloorWithFleeingOutlaw - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r4, #0 - moveq r0, #0 - beq _0234AD44 - ldr r0, [r4] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff -_0234AD44: - cmp r0, #0 - ldrne r1, [r4, #0xb4] - ldrneb r0, [r1, #6] - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r1, #0xbc] - cmp r0, #3 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl ov29_02300B04 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsh r0, [r4, #4] - ldrsh r1, [r4, #6] - bl ov29_023363EC - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r4, #0xb4] - ldr r1, _0234ADC4 ; =0x0000025B - ldrsh r5, [r0, #2] - mov r0, r4 - mov r2, #0 - bl HandleFaint - mov r1, r5 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234ADC8 ; =0x00000E19 - mov r0, #0 - mov r2, #1 - bl LogMessageById - bl ov29_0234AEE8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234ADC4: .word 0x0000025B -_0234ADC8: .word 0x00000E19 - arm_func_end ov29_0234AD10 - - arm_func_start ov29_0234ADCC -ov29_0234ADCC: ; 0x0234ADCC - stmdb sp!, {r3, lr} - cmp r0, #3 - bne _0234ADF0 - bl ov29_022EAC8C - ldr r1, _0234AE38 ; =0x00000E04 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldmia sp!, {r3, pc} -_0234ADF0: - cmp r0, #2 - bne _0234AE0C - mov r0, #3 - bl ov29_022FBBEC - add r0, r0, #4 - bl ov29_022FA3D4 - b _0234AE1C -_0234AE0C: - mov r0, #1 - bl ov29_022FBBEC - add r0, r0, #4 - bl ov29_022FA3D4 -_0234AE1C: - mov r0, #1 - bl ov29_022EAF34 - ldr r1, _0234AE3C ; =0x00000E05 - mov r0, #0 - mov r2, #1 - bl DisplayMessage - ldmia sp!, {r3, pc} - .align 2, 0 -_0234AE38: .word 0x00000E04 -_0234AE3C: .word 0x00000E05 - arm_func_end ov29_0234ADCC - - arm_func_start ov29_0234AE40 -ov29_0234AE40: ; 0x0234AE40 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r0, #2 - bl ov29_0234ADCC - bl GetMissionTargetEnemy - mov r4, r0 - add r0, sp, #0 - mov r1, r4 - mov r2, #0 - bl ov29_0234BAC0 - mov r1, r4 - mov r0, #1 - bl ov29_0234B0CC - ldr r1, _0234AE98 ; =0x00000E06 - add r0, sp, #0 - mov r2, #1 - bl DisplayMessage - ldr r1, _0234AE9C ; =ov29_0234AEA4 - ldr r0, _0234AEA0 ; =0x023537C8 - str r1, [r0] - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_0234AE98: .word 0x00000E06 -_0234AE9C: .word ov29_0234AEA4 -_0234AEA0: .word 0x023537C8 - arm_func_end ov29_0234AE40 - - arm_func_start ov29_0234AEA4 -ov29_0234AEA4: ; 0x0234AEA4 - stmdb sp!, {r4, lr} - mov r0, #3 - bl ov29_022FBBEC - mov r4, r0 - bl ShouldMonsterHeadToStairs - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, r4 - mov r1, #0xbb - bl ov29_022FBA54 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #0xbb - mov r2, #0 - bl ov29_0231AF24 - ldmia sp!, {r4, pc} - arm_func_end ov29_0234AEA4 - - arm_func_start ov29_0234AEE8 -ov29_0234AEE8: ; 0x0234AEE8 - stmdb sp!, {r3, lr} - ldr r0, _0234AF30 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x790] - cmp r0, #0 - bne _0234AF24 - bl ov29_022EAEFC - cmp r0, #0 - beq _0234AF24 - ldr r0, _0234AF30 ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x4000 - ldrsh r0, [r0, #0xd6] - bl ov29_022EAD00 - bl ov29_022EAE14 -_0234AF24: - mov r0, #0 - bl ov29_022EAF34 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234AF30: .word 0x02353538 - arm_func_end ov29_0234AEE8 - - arm_func_start ov29_0234AF34 -ov29_0234AF34: ; 0x0234AF34 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldrb ip, [r2] - ldr r2, [r6, #0xb4] - mov r5, r1 - mov r4, r3 - strb ip, [r2, #0x48] - bl ov29_022E68F0 - cmp r5, #0 - beq _0234AF64 - mov r0, r5 - bl ov29_022E68F0 -_0234AF64: - ldr r1, _0234AFA0 ; =0x0000025B - mov r0, r6 - mov r2, #0 - bl HandleFaint - cmp r5, #0 - beq _0234AF8C - ldr r1, _0234AFA0 ; =0x0000025B - mov r0, r5 - mov r2, #0 - bl HandleFaint -_0234AF8C: - mov r0, #1 - bl ov29_022E38E0 - mov r0, r4 - bl ov29_02348A18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0234AFA0: .word 0x0000025B - arm_func_end ov29_0234AF34 - - arm_func_start ov29_0234AFA4 -ov29_0234AFA4: ; 0x0234AFA4 - stmdb sp!, {r3, lr} - mov r0, #0xcf0 - mov r1, #0 - bl MemAlloc - ldr r2, _0234AFCC ; =0x023537CC - mov r1, #0xcf0 - str r0, [r2, #4] - bl MemZero - bl ov29_0234B130 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234AFCC: .word 0x023537CC - arm_func_end ov29_0234AFA4 - - arm_func_start ov29_0234AFD0 -ov29_0234AFD0: ; 0x0234AFD0 - stmdb sp!, {r3, lr} - ldr r0, _0234AFF8 ; =0x023537CC - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0234AFF8 ; =0x023537CC - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234AFF8: .word 0x023537CC - arm_func_end ov29_0234AFD0 - - arm_func_start ov29_0234AFFC -ov29_0234AFFC: ; 0x0234AFFC - ldr r1, _0234B00C ; =0x023537CC - ldr r1, [r1, #4] - strb r0, [r1, #0xced] - bx lr - .align 2, 0 -_0234B00C: .word 0x023537CC - arm_func_end ov29_0234AFFC - - arm_func_start ov29_0234B010 -ov29_0234B010: ; 0x0234B010 - ldr r1, _0234B020 ; =0x023537CC - ldr r1, [r1, #4] - strb r0, [r1, #0xcee] - bx lr - .align 2, 0 -_0234B020: .word 0x023537CC - arm_func_end ov29_0234B010 - - arm_func_start ov29_0234B024 -ov29_0234B024: ; 0x0234B024 - ldr r1, _0234B030 ; =0x023537CC - strb r0, [r1] - bx lr - .align 2, 0 -_0234B030: .word 0x023537CC - arm_func_end ov29_0234B024 - - arm_func_start ov29_0234B034 -ov29_0234B034: ; 0x0234B034 - ldr r0, _0234B048 ; =0x023537CC - ldr r0, [r0, #4] - add r0, r0, #0x9c - add r0, r0, #0xc00 - bx lr - .align 2, 0 -_0234B048: .word 0x023537CC - arm_func_end ov29_0234B034 - - arm_func_start ov29_0234B04C -ov29_0234B04C: ; 0x0234B04C - ldr r0, _0234B064 ; =0x023537CC - ldr ip, _0234B068 ; =InitPreprocessorArgs - ldr r0, [r0, #4] - add r0, r0, #0x9c - add r0, r0, #0xc00 - bx ip - .align 2, 0 -_0234B064: .word 0x023537CC -_0234B068: .word InitPreprocessorArgs - arm_func_end ov29_0234B04C - - arm_func_start ov29_0234B06C -ov29_0234B06C: ; 0x0234B06C - ldr r2, _0234B080 ; =0x023537CC - ldr r2, [r2, #4] - add r0, r2, r0, lsl #2 - str r1, [r0, #0xc9c] - bx lr - .align 2, 0 -_0234B080: .word 0x023537CC - arm_func_end ov29_0234B06C - - arm_func_start ov29_0234B084 -ov29_0234B084: ; 0x0234B084 - ldr r2, _0234B098 ; =0x023537CC - ldr r2, [r2, #4] - add r0, r2, r0, lsl #2 - str r1, [r0, #0xcac] - bx lr - .align 2, 0 -_0234B098: .word 0x023537CC - arm_func_end ov29_0234B084 - - arm_func_start ov29_0234B09C -ov29_0234B09C: ; 0x0234B09C - ldr r2, _0234B0B0 ; =0x023537CC - ldr r2, [r2, #4] - add r0, r2, r0, lsl #2 - str r1, [r0, #0xcc0] - bx lr - .align 2, 0 -_0234B0B0: .word 0x023537CC - arm_func_end ov29_0234B09C - - arm_func_start ov29_0234B0B4 -ov29_0234B0B4: ; 0x0234B0B4 - ldr r2, _0234B0C8 ; =0x023537CC - ldr r2, [r2, #4] - add r0, r2, r0, lsl #2 - str r1, [r0, #0xcd4] - bx lr - .align 2, 0 -_0234B0C8: .word 0x023537CC - arm_func_end ov29_0234B0B4 - - arm_func_start ov29_0234B0CC -ov29_0234B0CC: ; 0x0234B0CC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - bl sub_02024FB8 - mov r1, r4 - mov r2, #0x4e - mov r4, r0 - bl GetName - ldr r0, _0234B100 ; =0x023537CC - ldr r0, [r0, #4] - add r0, r0, r5, lsl #2 - str r4, [r0, #0xcd4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234B100: .word 0x023537CC - arm_func_end ov29_0234B0CC - - arm_func_start ov29_0234B104 -ov29_0234B104: ; 0x0234B104 - ldr r1, _0234B114 ; =0x023537CC - ldr r1, [r1, #4] - str r0, [r1, #0xce8] - bx lr - .align 2, 0 -_0234B114: .word 0x023537CC - arm_func_end ov29_0234B104 - - arm_func_start ov29_0234B118 -ov29_0234B118: ; 0x0234B118 - ldr r1, _0234B12C ; =0x023537CC - orr r2, r0, #0x30000 - ldr r0, [r1, #4] - str r2, [r0, #0xce8] - bx lr - .align 2, 0 -_0234B12C: .word 0x023537CC - arm_func_end ov29_0234B118 - - arm_func_start ov29_0234B130 -ov29_0234B130: ; 0x0234B130 - stmdb sp!, {r3, lr} - mov r3, #0 - ldr r1, _0234B1A0 ; =0x023537CC - mov r0, r3 -_0234B140: - ldr r2, [r1, #4] - add r2, r2, r3 - add r3, r3, #1 - strb r0, [r2, #0xc80] - cmp r3, #0xa - blt _0234B140 - ldr r1, _0234B1A0 ; =0x023537CC - mvn ip, #1 - ldr r3, [r1, #4] - mov r2, #1 - strb ip, [r3, #0xcec] - ldr r3, [r1, #4] - strb r0, [r3, #0xcee] - ldr r3, [r1, #4] - strb r0, [r3, #0xced] - str r0, [r1, #8] - strb r2, [r1] - bl ov29_0234B1A4 - ldr r0, _0234B1A0 ; =0x023537CC - ldr r0, [r0, #4] - add r0, r0, #0x9c - add r0, r0, #0xc00 - bl InitPreprocessorArgs - ldmia sp!, {r3, pc} - .align 2, 0 -_0234B1A0: .word 0x023537CC - arm_func_end ov29_0234B130 - - arm_func_start ov29_0234B1A4 -ov29_0234B1A4: ; 0x0234B1A4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_022E9FC0 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov ip, #0 - ldr r2, _0234B24C ; =0x023537CC - mov r0, ip -_0234B1C4: - ldr r3, [r2, #4] - add r1, ip, ip, lsl #2 - add ip, ip, #1 - strb r0, [r3, r1, lsl #6] - cmp ip, #0xa - blt _0234B1C4 - ldr r2, _0234B24C ; =0x023537CC - mov r3, #4 - ldr r1, [r2, #4] - strb r0, [r1, #0xc8b] - ldr r1, [r2, #4] - add r1, r1, #0xc00 - strh r0, [r1, #0x8c] - ldr r1, [r2, #4] - add r1, r1, #0xc00 - strh r0, [r1, #0x8e] - ldr r1, [r2, #4] - add r1, r1, #0xc00 - strh r0, [r1, #0x90] - ldr r1, [r2, #4] - add r1, r1, #0xc00 - strh r3, [r1, #0x92] - ldr r1, [r2, #4] - str r0, [r1, #0xc98] - bl ov29_0234B768 - cmp r0, #0 - cmpne r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - mov r0, #0xb - bl AdvanceFrame - ldmia sp!, {r4, pc} - .align 2, 0 -_0234B24C: .word 0x023537CC - arm_func_end ov29_0234B1A4 - - arm_func_start ov29_0234B250 -ov29_0234B250: ; 0x0234B250 - stmdb sp!, {r3, lr} - ldr ip, _0234B290 ; =0x023537CC - cmp r1, #0 - ldr ip, [ip, #4] - ldrsh lr, [sp, #8] - add r3, ip, r3, lsl #2 - cmpne r0, #0 - str lr, [r3, #0xcac] - beq _0234B27C - bl LogMessageByIdWithPopupCheckUserTarget - ldmia sp!, {r3, pc} -_0234B27C: - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r1, r2 - bl LogMessageByIdWithPopupCheckUser - ldmia sp!, {r3, pc} - .align 2, 0 -_0234B290: .word 0x023537CC - arm_func_end ov29_0234B250 - - arm_func_start ov29_0234B294 -ov29_0234B294: ; 0x0234B294 - ldr ip, _0234B2A0 ; =ov29_0234BA18 - mov r0, #0x50 - bx ip - .align 2, 0 -_0234B2A0: .word ov29_0234BA18 - arm_func_end ov29_0234B294 - - arm_func_start LogMessageByIdWithPopupCheckUser -LogMessageByIdWithPopupCheckUser: ; 0x0234B2A4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, #0 - mov r6, r0 - mov r5, r1 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl StringFromMessageId - mov r1, r0 - mov r0, r6 - mov r2, #1 - bl LogMessage - ldmia sp!, {r4, r5, r6, pc} - arm_func_end LogMessageByIdWithPopupCheckUser - - arm_func_start LogMessageWithPopupCheckUser -LogMessageWithPopupCheckUser: ; 0x0234B2E4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, #0 - mov r6, r0 - mov r5, r1 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r5 - mov r2, #1 - bl LogMessage - ldmia sp!, {r4, r5, r6, pc} - arm_func_end LogMessageWithPopupCheckUser - - arm_func_start LogMessageByIdQuiet -LogMessageByIdQuiet: ; 0x0234B31C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - mov r2, #0 - bl LogMessage - ldmia sp!, {r4, pc} - arm_func_end LogMessageByIdQuiet - - arm_func_start LogMessageQuiet -LogMessageQuiet: ; 0x0234B340 - ldr ip, _0234B34C ; =LogMessage - mov r2, #0 - bx ip - .align 2, 0 -_0234B34C: .word LogMessage - arm_func_end LogMessageQuiet - - arm_func_start LogMessageByIdWithPopupCheckUserTarget -LogMessageByIdWithPopupCheckUserTarget: ; 0x0234B350 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r4, #0 - mov r7, r0 - mov r5, r2 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - mov r0, r6 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl StringFromMessageId - mov r1, r0 - mov r0, r7 - mov r2, #1 - bl LogMessage - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LogMessageByIdWithPopupCheckUserTarget - - arm_func_start LogMessageWithPopupCheckUserTarget -LogMessageWithPopupCheckUserTarget: ; 0x0234B3A4 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r4, #0 - mov r7, r0 - mov r5, r2 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - mov r0, r6 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r7 - mov r1, r5 - mov r2, #1 - bl LogMessage - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LogMessageWithPopupCheckUserTarget - - arm_func_start LogMessageByIdQuietCheckUserTarget -LogMessageByIdQuietCheckUserTarget: ; 0x0234B3F0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r4, #0 - mov r7, r0 - mov r5, r2 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - mov r0, r6 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl StringFromMessageId - mov r1, r0 - mov r0, r7 - mov r2, #0 - bl LogMessage - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LogMessageByIdQuietCheckUserTarget - - arm_func_start LogMessageByIdWithPopupCheckUserUnknown -LogMessageByIdWithPopupCheckUserUnknown: ; 0x0234B444 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - mov r4, #0 - mov r7, r0 - mov r5, r2 - bl ov29_022E272C - cmp r0, #0 - movne r4, #1 - mov r0, r6 - bl ov29_022E2CA0 - cmp r0, #0 - movne r4, #1 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl StringFromMessageId - mov r1, r0 - mov r0, r7 - mov r2, #1 - bl LogMessage - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end LogMessageByIdWithPopupCheckUserUnknown - - arm_func_start LogMessageByIdWithPopup -LogMessageByIdWithPopup: ; 0x0234B498 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl StringFromMessageId - mov r1, r0 - mov r0, r4 - mov r2, #1 - bl LogMessage - ldmia sp!, {r4, pc} - arm_func_end LogMessageByIdWithPopup - - arm_func_start LogMessageWithPopup -LogMessageWithPopup: ; 0x0234B4BC - ldr ip, _0234B4C8 ; =LogMessage - mov r2, #1 - bx ip - .align 2, 0 -_0234B4C8: .word LogMessage - arm_func_end LogMessageWithPopup - - arm_func_start ov29_0234B4CC -ov29_0234B4CC: ; 0x0234B4CC - ldr r1, _0234B4DC ; =0x023537CC - ldr r1, [r1, #4] - strb r0, [r1, #0xc8a] - bx lr - .align 2, 0 -_0234B4DC: .word 0x023537CC - arm_func_end ov29_0234B4CC - - arm_func_start ov29_0234B4E0 -ov29_0234B4E0: ; 0x0234B4E0 - ldr r0, _0234B4F0 ; =0x023537CC - ldr r0, [r0, #4] - ldrb r0, [r0, #0xc8b] - bx lr - .align 2, 0 -_0234B4F0: .word 0x023537CC - arm_func_end ov29_0234B4E0 - - arm_func_start ov29_0234B4F4 -ov29_0234B4F4: ; 0x0234B4F4 - ldr r0, _0234B504 ; =0x023537CC - ldr r0, [r0, #4] - ldr r0, [r0, #0xc98] - bx lr - .align 2, 0 -_0234B504: .word 0x023537CC - arm_func_end ov29_0234B4F4 - - arm_func_start LogMessage -LogMessage: ; 0x0234B508 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x284 - ldr r4, _0234B708 ; =0x023537CC - mov fp, r2 - ldr r3, [r4, #4] - ldrb r2, [r3, #0xced] - cmp r2, #0 - ldreqb r2, [r3, #0xcee] - cmpeq r2, #0 - bne _0234B700 - ldr r3, _0234B70C ; =0x02353538 - mov r7, #0 - ldr r2, [r3] - mvn r5, #0 - add r2, r2, #0x100 - strh r5, [r2, #0xd8] - ldr r2, [r3] - mov r3, #0x400 - add r2, r2, #0x100 - strh r5, [r2, #0xda] - ldr r2, [r4, #8] - mov r8, r7 - cmp r2, r0 - movne sl, #1 - ldreqb sl, [r4] - ldr r2, _0234B708 ; =0x023537CC - mov r6, #1 - str r0, [r2, #8] - strb r7, [r2] - ldr r2, [r2, #4] - add r0, sp, #0x144 - add r2, r2, #0x9c - add r4, r2, #0xc00 - mov r2, r1 - mov r1, #0x140 - str r4, [sp] - bl PreprocessString - ldr r4, _0234B708 ; =0x023537CC - add r5, sp, #0x144 -_0234B5A4: - ldr r0, [r4, #4] - add r1, r0, #0xc00 - ldrsh sb, [r1, #0x8c] - add r1, r0, #0xc00 - ldrsh r2, [r1, #0x8e] - add r3, sb, #1 - cmp r3, #0xa - moveq r3, #0 - cmp r3, r2 - bne _0234B5D8 - mov r0, #0 - bl AdvanceFrame - b _0234B5A4 -_0234B5D8: - ldrb r2, [r5, r8] - cmp r2, #0 - beq _0234B6D4 - add r0, r0, sb - strb sl, [r0, #0xc80] - ldr r1, [r4, #4] - add r0, sp, #4 - add r1, r1, #0x9c - add r1, r1, #0xc00 - str r1, [sp] - mov r1, #0x140 - add r2, r5, r8 - mov r3, #0x440 - bl PreprocessString - add r8, r8, r0 - ldrb sb, [r5, r8] - mov r2, #0 - add r1, sp, #4 - strb r2, [r1, r0] - cmp sb, #0 - beq _0234B660 - ldr r1, _0234B710 ; =0x02353214 - add r0, r5, r8 - mov r2, #3 - bl Strncmp - cmp r0, #0 - bne _0234B654 - ldr r0, _0234B710 ; =0x02353214 - bl Strlen - add r8, r8, r0 - b _0234B660 -_0234B654: - cmp sb, #0xd - cmpne sb, #0xa - addeq r8, r8, #1 -_0234B660: - add r0, sp, #4 - mov r1, sl - mov r2, r6 - bl ov29_0234BB44 - mov sl, #0 - cmp fp, #0 - mov r6, sl - beq _0234B5A4 - ldr sb, [r4, #4] - mov r2, #0x140 - add r0, sb, #0xc00 - ldrsh r3, [r0, #0x8c] - mov r0, r2 - add r1, sp, #4 - smlabb r0, r3, r0, sb - mov r7, #1 - bl Strncpy - ldr r0, [r4, #4] - add r0, r0, #0xc00 - ldrsh r1, [r0, #0x8c] - add r1, r1, #1 - strh r1, [r0, #0x8c] - ldr r0, [r4, #4] - add r1, r0, #0xc00 - ldrsh r0, [r1, #0x8c] - cmp r0, #0xa - moveq r0, sl - streqh r0, [r1, #0x8c] - b _0234B5A4 -_0234B6D4: - cmp r7, #0 - beq _0234B700 - ldr r0, _0234B708 ; =0x023537CC - mov r2, #0xf0 - strh r2, [r1, #0x90] - ldr r1, [r0, #4] - ldr r0, [r1, #0xc98] - cmp r0, #0 - moveq r0, #1 - streq r0, [r1, #0xc98] - bl ov29_022F2FE4 -_0234B700: - add sp, sp, #0x284 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234B708: .word 0x023537CC -_0234B70C: .word 0x02353538 -_0234B710: .word 0x02353214 - arm_func_end LogMessage - - arm_func_start LogMessageById -LogMessageById: ; 0x0234B714 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - mov r0, r1 - bl StringFromMessageId - mov r1, r0 - mov r0, r5 - mov r2, r4 - bl LogMessage - ldmia sp!, {r3, r4, r5, pc} - arm_func_end LogMessageById - - arm_func_start ov29_0234B73C -ov29_0234B73C: ; 0x0234B73C - ldr r0, _0234B764 ; =0x023537CC - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0234B764: .word 0x023537CC - arm_func_end ov29_0234B73C - - arm_func_start ov29_0234B768 -ov29_0234B768: ; 0x0234B768 - stmdb sp!, {r3, lr} - ldr r0, _0234B7E8 ; =0x023537CC - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - cmp r0, r1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_0202836C - ldr r0, _0234B7E8 ; =0x023537CC - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - bl sub_02030214 - ldr r0, _0234B7E8 ; =0x023537CC - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - bl sub_02030044 - ldr r0, _0234B7E8 ; =0x023537CC - mvn r3, #1 - ldr r1, [r0, #4] - mov r2, #0 - strb r3, [r1, #0xcec] - ldr r1, [r0, #4] - mov r0, #1 - str r2, [r1, #0xc98] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234B7E8: .word 0x023537CC - arm_func_end ov29_0234B768 - - arm_func_start ov29_0234B7EC -ov29_0234B7EC: ; 0x0234B7EC - stmdb sp!, {r3, lr} - ldr r0, _0234B850 ; =0x023537CC - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - cmp r0, r1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r1, _0234B850 ; =0x023537CC - ldr r1, [r1, #4] - add r1, r1, #0xc00 - ldrsh r2, [r1, #0x8c] - ldrsh r1, [r1, #0x8e] - cmp r2, r1 - bne _0234B848 - bl sub_020301F4 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_0234B848: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234B850: .word 0x023537CC - arm_func_end ov29_0234B7EC - - arm_func_start ov29_0234B854 -ov29_0234B854: ; 0x0234B854 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0234BA14 ; =0x023537CC - ldr r1, [r0, #4] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r1, #0xced] - cmp r0, #0 - movne r0, #0 - strne r0, [r1, #0xc98] - ldr r0, _0234BA14 ; =0x023537CC - ldr r4, [r0, #4] - ldr r0, [r4, #0xc98] - cmp r0, #0 - beq _0234B9C8 - cmp r0, #1 - beq _0234B8A0 - cmp r0, #2 - beq _0234B908 - b _0234B9C8 -_0234B8A0: - bl ov10_022BFD20 - cmp r0, #0 - bne _0234B9C8 - bl sub_02001808 - cmp r0, #0x3000 - blt _0234B9C8 - ldr r0, _0234BA14 ; =0x023537CC - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0xec] - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _0234B900 - mov r0, #0 - bl sub_0202FFB0 - ldr r1, _0234BA14 ; =0x023537CC - mov r2, #0 - ldr r3, [r1, #4] - strb r0, [r3, #0xcec] - ldr r0, [r1, #4] - str r2, [r0, #0xce8] -_0234B900: - mov r0, #2 - str r0, [r4, #0xc98] -_0234B908: - ldr r0, _0234BA14 ; =0x023537CC - mvn r2, #1 - ldr r1, [r0, #4] - add r0, r1, #0xc00 - ldrsb r0, [r0, #0xec] - cmp r0, r2 - movne r2, #1 - moveq r2, #0 - tst r2, #0xff - moveq r0, #1 - beq _0234B9BC - ldr r3, _0234BA14 ; =0x023537CC - mov r2, #0x140 - ldr r5, [r3, #4] - add r3, r5, #0xc00 - ldrsh ip, [r3, #0x8e] - ldrsh r3, [r3, #0x8c] - smulbb lr, ip, r2 - cmp r3, ip - bne _0234B96C - bl ov29_0234B7EC - cmp r0, #0 - bne _0234B9B8 - mov r0, #1 - b _0234B9BC -_0234B96C: - add r2, r5, ip - ldrb ip, [r2, #0xc80] - add r1, r1, #0x9c - add r3, r1, #0xc00 - add r2, r5, lr - mov r1, #0x400 - str ip, [sp] - bl sub_0203010C - cmp r0, #0 - moveq r0, #0 - beq _0234B9BC - add r0, r5, #0xc00 - ldrsh r1, [r0, #0x8e] - add r1, r1, #1 - strh r1, [r0, #0x8e] - ldrsh r1, [r0, #0x8e] - cmp r1, #0xa - moveq r1, #0 - streqh r1, [r0, #0x8e] -_0234B9B8: - mov r0, #0 -_0234B9BC: - cmp r0, #0 - movne r0, #0 - strne r0, [r4, #0xc98] -_0234B9C8: - ldrb r0, [r4, #0xc8a] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - add r0, r4, #0xc00 - ldrsh r1, [r0, #0x90] - cmp r1, #0 - ldmeqia sp!, {r3, r4, r5, pc} - sub r1, r1, #1 - strh r1, [r0, #0x90] - ldrsh r0, [r0, #0x90] - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0 - str r0, [r4, #0xc98] - bl ov29_0234B768 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234BA14: .word 0x023537CC - arm_func_end ov29_0234B854 - - arm_func_start ov29_0234BA18 -ov29_0234BA18: ; 0x0234BA18 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0234BA50 ; =0x023537CC - mov r5, r0 - ldr r4, [r1, #4] -_0234BA28: - ldr r0, [r4, #0xc98] - cmp r0, #0 - bne _0234BA40 - bl ov29_0234B7EC - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -_0234BA40: - mov r0, r5 - bl AdvanceFrame - b _0234BA28 -_0234BA4C: - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234BA50: .word 0x023537CC - arm_func_end ov29_0234BA18 - - arm_func_start ov29_0234BA54 -ov29_0234BA54: ; 0x0234BA54 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0234BAB8 ; =0x023537CC - mov r5, r0 - ldr r6, [r1, #4] - bl ov29_0234BA18 - mov r4, #0 - add r6, r6, #0xc00 - ldr r7, _0234BABC ; =0x0237C694 - b _0234BAAC -_0234BA78: - ldrsh r0, [r6, #0x90] - cmp r0, #0xb4 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r7] - and r0, r0, #3 - cmp r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r7, #2] - tst r0, #0xf0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl AdvanceFrame - add r4, r4, #1 -_0234BAAC: - cmp r4, #0xf0 - blt _0234BA78 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234BAB8: .word 0x023537CC -_0234BABC: .word 0x0237C694 - arm_func_end ov29_0234BA54 - - arm_func_start ov29_0234BAC0 -ov29_0234BAC0: ; 0x0234BAC0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl InitPortraitBox - strh r5, [r6] - strb r4, [r6, #2] - mov r2, #0 - strb r2, [r6, #3] - mov r0, #2 - str r0, [r6, #4] - mov r0, #9 - str r0, [r6, #8] - strb r2, [r6, #0xc] - strb r2, [r6, #0xd] - mov r0, r6 - mov r1, #1 - strb r2, [r6, #0xe] - bl sub_0204D894 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0234BAC0 - - arm_func_start ov29_0234BB10 -ov29_0234BB10: ; 0x0234BB10 - ldr ip, _0234BB1C ; =sub_02047FFC - mov r0, #0 - bx ip - .align 2, 0 -_0234BB1C: .word sub_02047FFC - arm_func_end ov29_0234BB10 - - arm_func_start ov29_0234BB20 -ov29_0234BB20: ; 0x0234BB20 - ldr ip, _0234BB28 ; =sub_0204804C - bx ip - .align 2, 0 -_0234BB28: .word sub_0204804C - arm_func_end ov29_0234BB20 - - arm_func_start ov29_0234BB2C -ov29_0234BB2C: ; 0x0234BB2C - ldr ip, _0234BB34 ; =sub_020480CC - bx ip - .align 2, 0 -_0234BB34: .word sub_020480CC - arm_func_end ov29_0234BB2C - - arm_func_start ov29_0234BB38 -ov29_0234BB38: ; 0x0234BB38 - ldr ip, _0234BB40 ; =sub_02048134 - bx ip - .align 2, 0 -_0234BB40: .word sub_02048134 - arm_func_end ov29_0234BB38 - - arm_func_start ov29_0234BB44 -ov29_0234BB44: ; 0x0234BB44 - ldr ip, _0234BB4C ; =sub_02048150 - bx ip - .align 2, 0 -_0234BB4C: .word sub_02048150 - arm_func_end ov29_0234BB44 - - arm_func_start ov29_0234BB50 -ov29_0234BB50: ; 0x0234BB50 - ldr ip, _0234BB58 ; =sub_02048240 - bx ip - .align 2, 0 -_0234BB58: .word sub_02048240 - arm_func_end ov29_0234BB50 - - arm_func_start OpenMessageLog -OpenMessageLog: ; 0x0234BB5C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - mov r0, #6 - mov r1, #0 - bl ov29_022EA428 - cmp r4, #0 - bne _0234BB84 - mov r0, #0 - bl ov29_0233A248 -_0234BB84: - mov r0, #0x62 - bl AdvanceFrame - mov r0, #0x62 - bl AdvanceFrame - bl sub_0204833C - mov r4, #0x62 -_0234BB9C: - mov r0, r4 - bl AdvanceFrame - bl sub_02048360 - movs r5, r0 - beq _0234BB9C - mov r0, #0x62 - bl AdvanceFrame - cmp r6, #0 - beq _0234BBCC - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234BBCC: - cmp r5, #1 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end OpenMessageLog - - arm_func_start ov29_0234BBDC -ov29_0234BBDC: ; 0x0234BBDC - ldr ip, _0234BBE4 ; =ov29_022E0B60 - bx ip - .align 2, 0 -_0234BBE4: .word ov29_022E0B60 - arm_func_end ov29_0234BBDC - - arm_func_start ov29_0234BBE8 -ov29_0234BBE8: ; 0x0234BBE8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _0234BED4 ; =0x023537D8 - mov sl, #0 - ldr r6, [r0, #4] - bl ov29_022DC61C - ldrb r0, [r6, #0x14] - cmp r0, #0 - beq _0234BC8C - bl ov29_022DEBA4 - bl ov29_0234CB00 - bl ov29_0234CA68 - mov r5, r0 - bl ov29_0234CA7C - mov r4, r0 - bl sub_0204AFF8 - mov r2, r0 - mov r1, r4 - mov r0, r5 - bl ov30_02382820 - b _0234BC3C -_0234BC38: - bl ov29_022DDEF8 -_0234BC3C: - bl ov30_02382874 - cmp r0, #0 - bne _0234BC38 - bl ov30_0238298C - mov r4, r0 - bl ov30_023829A0 - cmp r4, #0 - beq _0234BC68 - ldr r0, _0234BED8 ; =0x000F1208 - bl sub_02048DC4 - b _0234BC70 -_0234BC68: - ldr r0, _0234BEDC ; =0x000F1209 - bl sub_02048DC4 -_0234BC70: - bl ov29_022DEBB0 - cmp r4, #0 - bne _0234BC8C - mov r0, #5 - str r0, [r6, #0xc0] - mov sl, #1 - bl ov29_022DDEF8 -_0234BC8C: - mov sb, #1 - mov r8, #0 - mov r7, r8 - mov r6, sb - mov r5, sb - mov fp, r8 - ldr r4, _0234BED4 ; =0x023537D8 - b _0234BD70 -_0234BCAC: - bl ov29_022DDEF8 - ldrb r0, [r4] - cmp r0, #0 - bne _0234BD70 - ldr r0, [r4, #4] - ldr r0, [r0, #8] - cmp r0, #1 - beq _0234BCD8 - cmp r0, #2 - moveq sl, #1 - b _0234BD70 -_0234BCD8: - mov r0, #0 - mov r1, r0 - bl sub_02051DD0 - mov r0, sb - mov r1, r8 - bl sub_02051DD0 - mov r0, r7 - mov r1, r6 - bl sub_02051DD0 - mov r0, #1 - mov r1, r0 - bl sub_02051DD0 - mov r0, #0 - mov r1, r0 - bl sub_02051E60 - mov r0, r5 - mov r1, fp - bl sub_02051E60 - mov r0, #0 - mov r1, #1 - bl sub_02051E60 - mov r0, #1 - mov r1, r0 - bl sub_02051E60 - mov r0, #0 - bl ov29_0234BEE0 - mov r0, #1 - bl ov29_0234BEE0 - mov r0, #0 - bl ov29_0234BF04 - mov r0, #1 - bl ov29_0234BF04 - bl GetDungeonPtrMaster - mov r1, r0 - ldr r0, [r4, #4] - add r0, r0, #0x10 - bl RunDungeon - mov sl, #1 -_0234BD70: - cmp sl, #0 - beq _0234BCAC - ldr r0, _0234BED4 ; =0x023537D8 - ldr r0, [r0, #4] - adds r4, r0, #0x10 - beq _0234BEB8 - ldr r1, [r4, #0xb0] - mvn r0, #1 - cmp r1, r0 - bne _0234BDA0 - add r0, r4, #0xb8 - bl sub_0205BAB0 -_0234BDA0: - ldr r1, [r4, #0xb0] - cmp r1, #3 - mvnne r0, #1 - cmpne r1, r0 - bne _0234BEB8 - ldr r0, _0234BED4 ; =0x023537D8 - ldr r4, [r0, #4] - bl ov29_022DE418 - mov r0, #0 - mov r1, r0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0 - bl sub_020091B0 - mov r0, #2 - mov r1, #0 - bl sub_02009194 - mov r0, #3 - mov r1, #0 - bl sub_02009194 - mov r0, #4 - mov r1, #0 - bl sub_020091B0 - mov r0, #1 - mov r1, #0x4000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 - add r0, r4, #0xc4 - bl SetAdventureLogDungeonFloor - bl sub_02017B70 - ldr r1, [r4, #0xc0] - mvn r0, #1 - cmp r1, r0 - beq _0234BE40 - bl sub_0204AFF8 - cmp r0, #0 - movne r5, #1 - bne _0234BE44 -_0234BE40: - mov r5, #0 -_0234BE44: - bl ov29_0234CA68 - mov r4, r0 - bl ov29_0234CA7C - mov r1, r0 - mov r0, r4 - mov r2, r5 - bl ov30_023829CC - mov r0, #0x10 - bl ov29_022DDE00 - ldr r4, _0234BED4 ; =0x023537D8 - mov r1, #1 - ldr r0, [r4, #4] - strb r1, [r0, #0x1bc] - b _0234BE80 -_0234BE7C: - bl ov29_022DDEF8 -_0234BE80: - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bc] - cmp r0, #0 - bne _0234BE7C - bl ov30_02382C30 - bl ov29_0234CACC - mov r0, #2 - bl ov29_022DDE00 - mov r0, #2 - mov r1, #0x4000 - mov r2, #0 - bl ov29_0234C668 - mov r0, #0 - bl ov29_0234C738 -_0234BEB8: - bl ov29_022DC65C - ldr r0, _0234BED4 ; =0x023537D8 - mov r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #0x1bd] -_0234BECC: - bl ov29_022DDEF8 - b _0234BECC - .align 2, 0 -_0234BED4: .word 0x023537D8 -_0234BED8: .word 0x000F1208 -_0234BEDC: .word 0x000F1209 - arm_func_end ov29_0234BBE8 - - arm_func_start ov29_0234BEE0 -ov29_0234BEE0: ; 0x0234BEE0 - ldr r2, _0234BEFC ; =0x0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _0234BF00 ; =sub_0200B3D4 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_0234BEFC: .word 0x0235352C -_0234BF00: .word sub_0200B3D4 - arm_func_end ov29_0234BEE0 - - arm_func_start ov29_0234BF04 -ov29_0234BF04: ; 0x0234BF04 - ldr r2, _0234BF20 ; =0x0235352C - mov r1, #0xc - ldr r2, [r2] - ldr ip, _0234BF24 ; =sub_0200B330 - mla r1, r0, r1, r2 - ldr r0, [r1, #0x24] - bx ip - .align 2, 0 -_0234BF20: .word 0x0235352C -_0234BF24: .word sub_0200B330 - arm_func_end ov29_0234BF04 - - arm_func_start RunDungeonMode -RunDungeonMode: ; 0x0234BF28 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r4, r1 - bl sub_02017BEC - bl sub_02028E2C - mov r0, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - bl sub_020091F8 - mov r0, #0 - mov r1, r0 - mov r2, r0 - mov r3, #1 - bl sub_020091F8 - bl ov29_022E0E8C - bl sub_02027148 - mov r0, #0xf000 - mov r1, #0 - bl sub_0201D7E0 - mov r0, #0x1c0 - mov r1, #0 - bl MemAlloc - ldr r2, _0234C1C8 ; =0x023537D8 - mov r1, #0x1c0 - str r0, [r2, #4] - bl MemZero - ldr r0, _0234C1C8 ; =0x023537D8 - mov r2, #0 - ldr r1, [r0, #4] - strb r2, [r1, #0x1bc] - ldr r1, [r0, #4] - str r4, [r1, #8] - ldr r0, [r0, #4] - str r4, [r0, #0xc] - bl DungeonAlloc - ldr r1, _0234C1C8 ; =0x023537D8 - ldr r1, [r1, #4] - str r0, [r1, #4] - bl DungeonZInit - bl ov29_022DDFF0 - bl ov29_022DDFFC - bl ov29_022DE300 - ldr r0, _0234C1C8 ; =0x023537D8 - mov ip, r5 - ldr r0, [r0, #4] - mov r4, #0x1a - add r6, r0, #0x10 -_0234BFE8: - ldmia ip!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0234BFE8 - ldmia ip, {r0, r1, r2} - stmia r6, {r0, r1, r2} - bl ov29_0234C9FC - ldr r0, _0234C1CC ; =0x0234BBDC - bl sub_02006EC4 - bl sub_02017A68 - bl ov29_022E0CFC - bl ov29_0234C4F8 - cmp r5, #0 - beq _0234C04C - ldrsb r0, [r5, #0xe] - cmp r0, #1 - mov r0, #0 - bne _0234C040 - bl ov29_0234C5EC - mov r0, #1 - bl ov29_0234C584 - b _0234C04C -_0234C040: - bl ov29_0234C584 - mov r0, #1 - bl ov29_0234C584 -_0234C04C: - bl ov29_022DDC00 - ldr r1, _0234C1C8 ; =0x023537D8 - mov r2, #1 - ldr r0, _0234C1D0 ; =ov29_0234C1D8 - strb r2, [r1] - bl sub_0200383C - mov r1, #0 - ldr r0, _0234C1D4 ; =ov29_0234BBE8 - mov r2, r1 - bl ov29_022DDD50 - ldr r4, _0234C1C8 ; =0x023537D8 - mov r6, #0 -_0234C07C: - bl sub_020038E8 - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bd] - cmp r0, #0 - bne _0234C0C0 - bl sub_020039E4 - ldr r0, [r4, #4] - ldrb r0, [r0, #0x1bc] - cmp r0, #0 - beq _0234C07C -_0234C0A4: - bl ov30_02382A34 - cmp r0, #2 - cmpne r0, #3 - bne _0234C0A4 - ldr r0, [r4, #4] - strb r6, [r0, #0x1bc] - b _0234C07C -_0234C0C0: - ldr r0, _0234C1D4 ; =ov29_0234BBE8 - bl ov29_022DDDA4 - mov r0, #0 - bl sub_0200383C - bl sub_02034710 - bl ov29_0234CA2C - cmp r5, #0 - beq _0234C108 - ldr r0, _0234C1C8 ; =0x023537D8 - mov r4, #0x1a - ldr r0, [r0, #4] - add ip, r0, #0x10 -_0234C0F0: - ldmia ip!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs r4, r4, #1 - bne _0234C0F0 - ldmia ip, {r0, r1, r2} - stmia r5, {r0, r1, r2} -_0234C108: - bl ov29_022DE498 - bl ov29_022DE0A0 - bl ov29_0234C544 - mov r0, #0 - bl sub_02006EC4 - ldr r0, _0234C1C8 ; =0x023537D8 - ldr r0, [r0, #4] - cmp r0, #0 - beq _0234C154 - bl DungeonFree - ldr r0, _0234C1C8 ; =0x023537D8 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #4] - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0234C1C8 ; =0x023537D8 - mov r1, #0 - str r1, [r0, #4] -_0234C154: - bl sub_0201D804 - bl sub_0202715C - bl ov29_022DDCA0 - bl sub_02017B70 - bl sub_02017BEC - mov r0, #0 - sub r1, r0, #0x100 - bl sub_02008F3C - mov r0, #1 - mvn r1, #0xff - bl sub_02008F3C - mov r0, #0 - bl sub_02009120 - mov r0, #1 - bl sub_02009120 - mov r0, #0 - bl sub_02009514 - mov r0, #1 - bl sub_02009514 - mov r0, #0 - bl sub_020091CC - mov r0, #1 - bl sub_020091CC - mov r0, #0 - bl sub_020093BC - mov r0, #1 - bl sub_020093BC - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0234C1C8: .word 0x023537D8 -_0234C1CC: .word 0x0234BBDC -_0234C1D0: .word ov29_0234C1D8 -_0234C1D4: .word ov29_0234BBE8 - arm_func_end RunDungeonMode - - arm_func_start ov29_0234C1D8 -ov29_0234C1D8: ; 0x0234C1D8 - stmdb sp!, {r4, lr} - bl sub_0201BF64 - bl sub_02028E40 - bl sub_020038D8 - cmp r0, #0 - beq _0234C1F4 - bl sub_02003990 -_0234C1F4: - bl ov29_022E0A64 - bl ov29_022DDE24 - bl ov29_022E9F9C - bl ov29_0234C9E4 - bl sub_02034A80 - bl ov29_022EA008 - ldr r0, _0234C2EC ; =0x02353538 - ldr r0, [r0] - cmp r0, #0 - beq _0234C230 - add r0, r0, #0x224 - add r0, r0, #0x1a000 - bl ov10_022BF764 - bl ov29_022E6DD0 - b _0234C238 -_0234C230: - mov r0, #0 - bl ov10_022BF764 -_0234C238: - bl sub_02028848 - bl ov29_022DE868 - ldr r0, _0234C2F0 ; =0x023537D8 - ldr r0, [r0, #4] - ldr r0, [r0] - cmp r0, #0 - beq _0234C258 - blx r0 -_0234C258: - bl ov29_022DC670 - bl sub_0201F464 - ldr r0, _0234C2F0 ; =0x023537D8 - ldrb r0, [r0] - cmp r0, #0 - bne _0234C274 - bl sub_0201DDFC -_0234C274: - bl sub_02008F84 - bl ov29_022EAFB0 - bl sub_02017A80 - mov r0, #1 - bl sub_02028A64 - bl sub_0201BE28 - bl sub_0201BE5C - bl sub_0201BE84 - bl sub_0204F9CC - bl sub_02003A40 - ldr r1, _0234C2F0 ; =0x023537D8 - mov r4, r0 - ldrb r0, [r1] - cmp r0, #0 - beq _0234C2B8 - mov r0, #0 - bl sub_02008ED0 -_0234C2B8: - bl sub_020778D0 - bl sub_02008F88 - bl sub_0201DE10 - bl ov10_022BF7D4 - bl ov29_0233992C - bl sub_02028E88 - bl ov29_022DE0CC - bl sub_0201BF4C - ldr r1, _0234C2F0 ; =0x023537D8 - mov r2, #0 - mov r0, r4 - strb r2, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0234C2EC: .word 0x02353538 -_0234C2F0: .word 0x023537D8 - arm_func_end ov29_0234C1D8 - - arm_func_start ov29_0234C2F4 -ov29_0234C2F4: ; 0x0234C2F4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r1 - mov r5, r0 - mov r1, #0x9c - bl MemZero - add r0, r5, #0x48 - strb r4, [r5, #0x88] - bl sub_0201E730 - mov r0, #0x100 - strh r0, [r5, #0x4c] - mov r0, #0xc0 - strh r0, [r5, #0x4e] - mov r0, #1 - strh r0, [r5, #0x72] - strb r0, [r5, #0x86] - mov r0, #2 - strb r0, [r5, #0x84] - mov r0, #0 - strb r0, [r5, #0x77] - strb r0, [r5, #0x74] - strb r0, [r5, #0x75] - strb r0, [r5, #0x76] - strb r0, [r5, #0x99] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234C2F4 - - arm_func_start ov29_0234C354 -ov29_0234C354: ; 0x0234C354 - stmdb sp!, {r3, lr} - mov r3, #0 - str r3, [r0, #0x90] - str r3, [r0, #0x8c] - str r3, [r0, #0x94] - strb r3, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C384 - ldr r0, [r0, #0x90] - bl ov29_022E0F14 - ldmia sp!, {r3, pc} -_0234C384: - ldrb r2, [r0, #0x99] - cmp r2, #0 - strneb r3, [r0, #0x77] - ldmneia sp!, {r3, pc} - ldr r0, [r0, #0x90] - bl ov29_022E0F14 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234C354 - - arm_func_start ov29_0234C3A0 -ov29_0234C3A0: ; 0x0234C3A0 - stmdb sp!, {r4, lr} - mov r4, r0 - ldrb r1, [r4, #0x88] - cmp r1, #1 - bne _0234C3C8 - ldr r0, [r4, #0x90] - mov r0, r0, asr #0xc - bl ov29_022E0F14 - ldr r0, [r4, #0x90] - ldmia sp!, {r4, pc} -_0234C3C8: - ldrb r0, [r4, #0x99] - cmp r0, #0 - ldr r0, [r4, #0x90] - beq _0234C3F8 - cmp r0, #0 - rsblt r0, r0, #0 - mov r0, r0, asr #0xc - mov r0, r0, lsl #4 - cmp r0, #0x100 - moveq r0, #0xff - strb r0, [r4, #0x77] - ldmia sp!, {r4, pc} -_0234C3F8: - mov r0, r0, asr #0xc - bl ov29_022E0F14 - ldr r0, [r4, #0x90] - ldmia sp!, {r4, pc} - arm_func_end ov29_0234C3A0 - - arm_func_start ov29_0234C408 -ov29_0234C408: ; 0x0234C408 - stmdb sp!, {r3, lr} - str r2, [r0, #0x8c] - str r1, [r0, #0x94] - mov r1, #1 - strb r1, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C464 - cmp r2, #5 - cmpne r2, #3 - moveq r1, #0 - streq r1, [r0, #0x90] - beq _0234C45C - cmp r2, #4 - moveq r1, #0x10000 - streq r1, [r0, #0x90] - beq _0234C45C - cmp r2, #2 - moveq r1, #0x10000 - rsbeq r1, r1, #0 - streq r1, [r0, #0x90] -_0234C45C: - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C464: - cmp r2, #5 - bne _0234C488 - mov r1, #0 - str r1, [r0, #0x90] - mov r1, #0xff - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C488: - cmp r2, #3 - bne _0234C4A8 - mov r1, #0 - str r1, [r0, #0x90] - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C4A8: - cmp r2, #4 - bne _0234C4CC - mov r1, #0x10000 - str r1, [r0, #0x90] - mov r1, #0xff - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] - b _0234C4F0 -_0234C4CC: - cmp r2, #2 - bne _0234C4F0 - mov r1, #0x10000 - rsb r1, r1, #0 - str r1, [r0, #0x90] - mov r1, #0 - strb r1, [r0, #0x74] - strb r1, [r0, #0x75] - strb r1, [r0, #0x76] -_0234C4F0: - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234C408 - - arm_func_start ov29_0234C4F8 -ov29_0234C4F8: ; 0x0234C4F8 - stmdb sp!, {r3, lr} - mov r0, #0x144 - mov r1, #0 - bl MemAlloc - ldr r2, _0234C540 ; =0x023537E0 - mov r1, #0x144 - str r0, [r2] - bl MemZero - ldr r0, _0234C540 ; =0x023537E0 - mov r1, #0 - ldr r0, [r0] - bl ov29_0234C2F4 - ldr r0, _0234C540 ; =0x023537E0 - mov r1, #1 - ldr r0, [r0] - add r0, r0, #0x9c - bl ov29_0234C2F4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C540: .word 0x023537E0 - arm_func_end ov29_0234C4F8 - - arm_func_start ov29_0234C544 -ov29_0234C544: ; 0x0234C544 - stmdb sp!, {r3, lr} - ldr r0, _0234C580 ; =0x023537E0 - ldr r0, [r0] - bl ov29_0234C354 - ldr r0, _0234C580 ; =0x023537E0 - ldr r0, [r0] - add r0, r0, #0x9c - bl ov29_0234C354 - ldr r0, _0234C580 ; =0x023537E0 - ldr r0, [r0] - bl MemFree - ldr r0, _0234C580 ; =0x023537E0 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C580: .word 0x023537E0 - arm_func_end ov29_0234C544 - - arm_func_start ov29_0234C584 -ov29_0234C584: ; 0x0234C584 - stmdb sp!, {r3, lr} - ldr r1, _0234C5E8 ; =0x023537E0 - mov r2, #0x10000 - ldr r3, [r1] - mov r1, #0x9c - mla r0, r1, r0, r3 - rsb r2, r2, #0 - str r2, [r0, #0x90] - mov r1, #1 - str r1, [r0, #0x8c] - mov r2, #0 - str r2, [r0, #0x94] - strb r1, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C5CC - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C5CC: - ldrb r1, [r0, #0x99] - cmp r1, #0 - strneb r2, [r0, #0x74] - strneb r2, [r0, #0x75] - strneb r2, [r0, #0x76] - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C5E8: .word 0x023537E0 - arm_func_end ov29_0234C584 - - arm_func_start ov29_0234C5EC -ov29_0234C5EC: ; 0x0234C5EC - stmdb sp!, {r3, lr} - ldr r2, _0234C650 ; =0x023537E0 - mov r1, #0x9c - ldr r3, [r2] - mov r2, #0x10000 - mla r0, r1, r0, r3 - str r2, [r0, #0x90] - mov r2, #1 - str r2, [r0, #0x8c] - mov r1, #0 - str r1, [r0, #0x94] - strb r2, [r0, #0x98] - ldrb r1, [r0, #0x88] - cmp r1, #1 - bne _0234C630 - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} -_0234C630: - ldrb r1, [r0, #0x99] - cmp r1, #0 - movne r1, #0xff - strneb r1, [r0, #0x74] - strneb r1, [r0, #0x75] - strneb r1, [r0, #0x76] - bl ov29_0234C3A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C650: .word 0x023537E0 - arm_func_end ov29_0234C5EC - - arm_func_start ov29_0234C654 -ov29_0234C654: ; 0x0234C654 - ldr r1, _0234C664 ; =0x023537E0 - ldr r1, [r1] - strh r0, [r1, #0x72] - bx lr - .align 2, 0 -_0234C664: .word 0x023537E0 - arm_func_end ov29_0234C654 - - arm_func_start ov29_0234C668 -ov29_0234C668: ; 0x0234C668 - stmdb sp!, {r3, lr} - ldr r3, _0234C708 ; =0x023537E0 - mov ip, #0 - ldr lr, [r3] - add lr, lr, r2, lsl #2 - str r0, [lr, #0x138] - ldr r0, [r3] - add r0, r0, r2 - strb ip, [r0, #0x140] - ldr ip, [r3] - add r0, ip, r2, lsl #2 - ldr r0, [r0, #0x138] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0234C6E0 -_0234C6A4: ; jump table - b _0234C6E0 ; case 0 - b _0234C6C0 ; case 1 - b _0234C6C8 ; case 2 - b _0234C6C8 ; case 3 - b _0234C6D0 ; case 4 - b _0234C6D8 ; case 5 - b _0234C6D8 ; case 6 -_0234C6C0: - mov r3, #2 - b _0234C6E4 -_0234C6C8: - mov r3, #3 - b _0234C6E4 -_0234C6D0: - mov r3, #4 - b _0234C6E4 -_0234C6D8: - mov r3, #5 - b _0234C6E4 -_0234C6E0: - mov r3, #0 -_0234C6E4: - mov r0, #0x9c - mla r0, r2, r0, ip - cmp r3, #0 - bne _0234C6FC - bl ov29_0234C354 - ldmia sp!, {r3, pc} -_0234C6FC: - mov r2, r3 - bl ov29_0234C408 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234C708: .word 0x023537E0 - arm_func_end ov29_0234C668 - - arm_func_start ov29_0234C70C -ov29_0234C70C: ; 0x0234C70C - ldr r2, _0234C734 ; =0x023537E0 - mov r1, #0x9c - ldr r2, [r2] - mla r1, r0, r1, r2 - ldr r0, [r1, #0x8c] - cmp r0, #1 - cmpne r0, #0 - moveq r0, #0 - movne r0, #1 - bx lr - .align 2, 0 -_0234C734: .word 0x023537E0 - arm_func_end ov29_0234C70C - - arm_func_start ov29_0234C738 -ov29_0234C738: ; 0x0234C738 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r0 - mov r0, #0x9c - mul r4, r5, r0 - ldr r6, _0234C7D0 ; =0x023537E0 - mov r7, #5 -_0234C750: - ldr r1, [r6] - add r0, r1, r5, lsl #2 - ldr r0, [r0, #0x138] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0234C7C0 -_0234C768: ; jump table - b _0234C7C0 ; case 0 - b _0234C784 ; case 1 - b _0234C784 ; case 2 - b _0234C79C ; case 3 - b _0234C784 ; case 4 - b _0234C784 ; case 5 - b _0234C79C ; case 6 -_0234C784: - add r0, r4, r1 - ldr r0, [r0, #0x8c] - cmp r0, #1 - cmpne r0, #0 - bne _0234C7C0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0234C79C: - add r0, r5, r1 - ldrb r0, [r0, #0x140] - cmp r0, #1 - bne _0234C7C0 - add r0, r4, r1 - ldr r0, [r0, #0x8c] - cmp r0, #1 - cmpne r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0234C7C0: - mov r0, r7 - bl AdvanceFrame - b _0234C750 -_0234C7CC: - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234C7D0: .word 0x023537E0 - arm_func_end ov29_0234C738 - - arm_func_start ov29_0234C7D4 -ov29_0234C7D4: ; 0x0234C7D4 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0234C9E0 ; =0x023537E0 - mov r5, r0 - ldr r4, [r1] - add r0, r4, r5, lsl #2 - ldr r2, [r0, #0x138] - cmp r2, #6 - addls pc, pc, r2, lsl #2 - b _0234C8B8 -_0234C7F8: ; jump table - b _0234C8B8 ; case 0 - b _0234C814 ; case 1 - b _0234C8B8 ; case 2 - b _0234C830 ; case 3 - b _0234C814 ; case 4 - b _0234C8B8 ; case 5 - b _0234C830 ; case 6 -_0234C814: - mov r0, #0x9c - mla r0, r5, r0, r4 - ldr r1, [r0, #0x8c] - cmp r1, #1 - bne _0234C8B8 - bl ov29_0234C354 - ldmia sp!, {r3, r4, r5, pc} -_0234C830: - adds r0, r4, #0x140 - mov r0, #0x9c - bne _0234C888 - mla r0, r5, r0, r4 - ldr r1, [r0, #0x8c] - cmp r1, #1 - bne _0234C8B8 - cmp r2, #3 - ldr r1, [r0, #0x94] - bne _0234C864 - mov r2, #2 - bl ov29_0234C408 - b _0234C86C -_0234C864: - mov r2, #4 - bl ov29_0234C408 -_0234C86C: - ldr r0, _0234C9E0 ; =0x023537E0 - ldr r0, [r0] - add r1, r0, #0x140 - ldrb r0, [r1, r5] - add r0, r0, #1 - strb r0, [r1, r5] - b _0234C8B8 -_0234C888: - mul r3, r5, r0 - add r0, r4, r3 - ldr r0, [r0, #0x8c] - cmp r0, #1 - bne _0234C8B8 - add r0, r4, r5 - mov r2, #0 - strb r2, [r0, #0x140] - ldr r0, [r1] - add r0, r0, r3 - bl ov29_0234C354 - ldmia sp!, {r3, r4, r5, pc} -_0234C8B8: - ldr r1, _0234C9E0 ; =0x023537E0 - mov r0, #0x9c - ldr r1, [r1] - mla r4, r5, r0, r1 - ldrb r0, [r4, #0x98] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x88] - cmp r0, #1 - bne _0234C8EC - mov r0, r4 - bl ov29_0234C3A0 - b _0234C918 -_0234C8EC: - ldrb r0, [r4, #0x99] - cmp r0, #0 - mov r0, r4 - beq _0234C914 - bl ov29_0234C3A0 - cmp r0, #0 - beq _0234C918 - add r0, r4, #0x48 - bl sub_0201F2A0 - b _0234C918 -_0234C914: - bl ov29_0234C3A0 -_0234C918: - ldr r0, [r4, #0x8c] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, r4, r5, pc} -_0234C928: ; jump table - ldmia sp!, {r3, r4, r5, pc} ; case 0 - ldmia sp!, {r3, r4, r5, pc} ; case 1 - b _0234C9BC ; case 2 - b _0234C968 ; case 3 - b _0234C994 ; case 4 - b _0234C940 ; case 5 -_0234C940: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - add r0, r1, r0 - str r0, [r4, #0x90] - cmp r0, #0x10000 - movge r0, #0x10000 - strge r0, [r4, #0x90] - movge r0, #1 - strge r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C968: - ldr r2, [r4, #0x90] - ldr r1, [r4, #0x94] - mov r0, #0x10000 - sub r1, r2, r1 - rsb r0, r0, #0 - str r1, [r4, #0x90] - cmp r1, r0 - strle r0, [r4, #0x90] - movle r0, #1 - strle r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C994: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - sub r0, r1, r0 - str r0, [r4, #0x90] - cmp r0, #0 - movle r0, #0 - strle r0, [r4, #0x90] - movle r0, #1 - strle r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} -_0234C9BC: - ldr r1, [r4, #0x90] - ldr r0, [r4, #0x94] - adds r0, r1, r0 - str r0, [r4, #0x90] - movpl r0, #0 - strpl r0, [r4, #0x90] - movpl r0, #1 - strpl r0, [r4, #0x8c] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234C9E0: .word 0x023537E0 - arm_func_end ov29_0234C7D4 - - arm_func_start ov29_0234C9E4 -ov29_0234C9E4: ; 0x0234C9E4 - stmdb sp!, {r3, lr} - mov r0, #0 - bl ov29_0234C7D4 - mov r0, #1 - bl ov29_0234C7D4 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234C9E4 - - arm_func_start ov29_0234C9FC -ov29_0234C9FC: ; 0x0234C9FC - stmdb sp!, {r3, lr} - mov r0, #8 - mov r1, #0 - bl MemAlloc - ldr r1, _0234CA28 ; =0x023537E4 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - ldr r0, [r1] - str r2, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CA28: .word 0x023537E4 - arm_func_end ov29_0234C9FC - - arm_func_start ov29_0234CA2C -ov29_0234CA2C: ; 0x0234CA2C - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CA48 - mov r0, #0x21 - bl UnloadOverlay -_0234CA48: - ldr r0, _0234CA64 ; =0x023537E4 - ldr r0, [r0] - bl MemFree - ldr r0, _0234CA64 ; =0x023537E4 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CA64: .word 0x023537E4 - arm_func_end ov29_0234CA2C - - arm_func_start ov29_0234CA68 -ov29_0234CA68: ; 0x0234CA68 - ldr r0, _0234CA78 ; =0x023537E4 - ldr r0, [r0] - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_0234CA78: .word 0x023537E4 - arm_func_end ov29_0234CA68 - - arm_func_start ov29_0234CA7C -ov29_0234CA7C: ; 0x0234CA7C - mov r0, #0x5800 - bx lr - arm_func_end ov29_0234CA7C - - arm_func_start ov29_0234CA84 -ov29_0234CA84: ; 0x0234CA84 - stmdb sp!, {r3, lr} - ldr r0, _0234CAC4 ; =0x023537E4 - mov r3, #1 - ldr r1, [r0] - ldr r2, _0234CAC8 ; =0x0237D000 - str r3, [r1] - ldr r1, [r0] - mov r0, #0x21 - str r2, [r1, #4] - bl LoadOverlay - ldr r0, _0234CAC4 ; =0x023537E4 - mov r1, #0x5800 - ldr r0, [r0] - ldr r0, [r0, #4] - bl ov30_02382C68 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAC4: .word 0x023537E4 -_0234CAC8: .word 0x0237D000 - arm_func_end ov29_0234CA84 - - arm_func_start ov29_0234CACC -ov29_0234CACC: ; 0x0234CACC - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CAE8 - mov r0, #0x21 - bl UnloadOverlay -_0234CAE8: - ldr r0, _0234CAFC ; =0x023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CAFC: .word 0x023537E4 - arm_func_end ov29_0234CACC - - arm_func_start ov29_0234CB00 -ov29_0234CB00: ; 0x0234CB00 - ldr r0, _0234CB28 ; =0x023537E4 - mov r3, #2 - ldr r1, [r0] - ldr r2, _0234CB2C ; =0x0237D000 - str r3, [r1] - ldr r1, [r0] - ldr ip, _0234CB30 ; =LoadOverlay - mov r0, #0x21 - str r2, [r1, #4] - bx ip - .align 2, 0 -_0234CB28: .word 0x023537E4 -_0234CB2C: .word 0x0237D000 -_0234CB30: .word LoadOverlay - arm_func_end ov29_0234CB00 - - arm_func_start ov29_0234CB34 -ov29_0234CB34: ; 0x0234CB34 - ldr r0, _0234CB4C ; =0x023537E4 - ldr ip, _0234CB50 ; =ov30_023842F4 - ldr r0, [r0] - mov r1, #0x5800 - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0234CB4C: .word 0x023537E4 -_0234CB50: .word ov30_023842F4 - arm_func_end ov29_0234CB34 - - arm_func_start ov29_0234CB54 -ov29_0234CB54: ; 0x0234CB54 - stmdb sp!, {r3, lr} - mov r0, #0x21 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234CB70 - mov r0, #0x21 - bl UnloadOverlay -_0234CB70: - ldr r0, _0234CB84 ; =0x023537E4 - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CB84: .word 0x023537E4 - arm_func_end ov29_0234CB54 - - arm_func_start ov29_0234CB88 -ov29_0234CB88: ; 0x0234CB88 - stmdb sp!, {r3, lr} - bl GetLeader - ldr r2, _0234CC88 ; =0x02353538 - mvn r3, #0 - ldr r1, [r2] - ldr r0, _0234CC8C ; =0x023532C0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r2, [r2] - mov r1, #1 - add r2, r2, #0x100 - strh r3, [r2, #0xda] - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC90 ; =0x023532B8 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC94 ; =0x023532B0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC98 ; =0x02353240 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldreq r0, _0234CC88 ; =0x02353538 - ldreq r0, [r0] - ldreqb r0, [r0, #0x748] - cmpeq r0, #3 - ldmneia sp!, {r3, pc} - ldr r0, _0234CC9C ; =0x023532A0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA0 ; =0x02353298 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA4 ; =0x02353290 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCA8 ; =0x02353278 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCAC ; =0x02353238 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0234CCB0 ; =0x023532E0 - mov r1, #1 - bl DisplayDungeonTip - cmp r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CC88: .word 0x02353538 -_0234CC8C: .word 0x023532C0 -_0234CC90: .word 0x023532B8 -_0234CC94: .word 0x023532B0 -_0234CC98: .word 0x02353240 -_0234CC9C: .word 0x023532A0 -_0234CCA0: .word 0x02353298 -_0234CCA4: .word 0x02353290 -_0234CCA8: .word 0x02353278 -_0234CCAC: .word 0x02353238 -_0234CCB0: .word 0x023532E0 - arm_func_end ov29_0234CB88 - - arm_func_start ov29_0234CCB4 -ov29_0234CCB4: ; 0x0234CCB4 - stmdb sp!, {r4, lr} - ldr r2, _0234CEA4 ; =0x02353538 - mvn r3, #0 - ldr r1, [r2] - mov r4, r0 - add r1, r1, #0x100 - strh r3, [r1, #0xd8] - ldr r1, [r2] - add r1, r1, #0x100 - strh r3, [r1, #0xda] - bl GetItemCategoryVeneer - cmp r0, #3 - bne _0234CCF8 - ldr r0, _0234CEA8 ; =0x023532F0 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CCF8: - cmp r4, #0x46 - bne _0234CD10 - ldr r0, _0234CEAC ; =0x023532F8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD10: - cmp r4, #0x52 - bne _0234CD28 - ldr r0, _0234CEB0 ; =0x023532D8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD28: - cmp r4, #0x57 - bne _0234CD40 - ldr r0, _0234CEB4 ; =0x023532C8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD40: - cmp r4, #8 - bne _0234CD58 - ldr r0, _0234CEB8 ; =0x02353250 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD58: - cmp r4, #0x51 - bne _0234CD70 - ldr r0, _0234CEBC ; =0x02353248 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD70: - cmp r4, #0x54 - bne _0234CD88 - ldr r0, _0234CEC0 ; =0x02353270 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CD88: - cmp r4, #0xb7 - bne _0234CDA0 - ldr r0, _0234CEC4 ; =0x02353280 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDA0: - cmp r4, #0x63 - bne _0234CDB8 - ldr r0, _0234CEC8 ; =0x023532A8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDB8: - cmp r4, #0x45 - bne _0234CDD0 - ldr r0, _0234CECC ; =0x02353300 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDD0: - cmp r4, #0x5b - bne _0234CDE8 - ldr r0, _0234CED0 ; =0x02353258 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CDE8: - cmp r4, #0x56 - bne _0234CE00 - ldr r0, _0234CED4 ; =0x02353268 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE00: - cmp r4, #0x5e - bne _0234CE18 - ldr r0, _0234CED8 ; =0x02353288 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE18: - cmp r4, #0x4c - bne _0234CE30 - ldr r0, _0234CEDC ; =0x023532E8 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE30: - cmp r4, #0x60 - bne _0234CE48 - ldr r0, _0234CEE0 ; =0x02353260 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE48: - cmp r4, #0x75 - bne _0234CE60 - ldr r0, _0234CEE4 ; =0x02353308 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} -_0234CE60: - ldr r0, _0234CEA4 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - cmp r0, #0x7b - ldmneia sp!, {r4, pc} - ldr r0, _0234CEE8 ; =0xFFFFFED2 - add r0, r4, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - ldmhiia sp!, {r4, pc} - ldr r0, _0234CEEC ; =0x02353310 - mov r1, #0 - bl DisplayDungeonTip - ldmia sp!, {r4, pc} - .align 2, 0 -_0234CEA4: .word 0x02353538 -_0234CEA8: .word 0x023532F0 -_0234CEAC: .word 0x023532F8 -_0234CEB0: .word 0x023532D8 -_0234CEB4: .word 0x023532C8 -_0234CEB8: .word 0x02353250 -_0234CEBC: .word 0x02353248 -_0234CEC0: .word 0x02353270 -_0234CEC4: .word 0x02353280 -_0234CEC8: .word 0x023532A8 -_0234CECC: .word 0x02353300 -_0234CED0: .word 0x02353258 -_0234CED4: .word 0x02353268 -_0234CED8: .word 0x02353288 -_0234CEDC: .word 0x023532E8 -_0234CEE0: .word 0x02353260 -_0234CEE4: .word 0x02353308 -_0234CEE8: .word 0xFFFFFED2 -_0234CEEC: .word 0x02353310 - arm_func_end ov29_0234CCB4 - - arm_func_start DisplayDungeonTip -DisplayDungeonTip: ; 0x0234CEF0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - mov r4, r1 - bl GetDungeonTipShown - cmp r0, #0 - bne _0234CF58 - ldrh r0, [r5, #4] - bl StringFromMessageId - ldrb r0, [r0] - cmp r0, #0 - beq _0234CF58 - ldr r0, [r5] - bl SetDungeonTipShown - bl ov29_022EACBC - ldrh r1, [r5, #4] - mov r0, #0 - mov r2, #1 - bl DisplayMessage2 - cmp r4, #0 - beq _0234CF50 - bl GetLeader - ldrh r1, [r5, #4] - bl LogMessageByIdQuiet -_0234CF50: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0234CF58: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DisplayDungeonTip - - arm_func_start SetBothScreensWindowColorToDefault -SetBothScreensWindowColorToDefault: ; 0x0234CF60 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - bne _0234CF7C - mov r0, #2 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF7C: - bl ov29_022F42D8 - cmp r0, #1 - bne _0234CF94 - mov r0, #0 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} -_0234CF94: - mov r0, #1 - bl SetBothScreensWindowsColor - ldmia sp!, {r3, pc} - arm_func_end SetBothScreensWindowColorToDefault - - arm_func_start ov29_0234CFA0 -ov29_0234CFA0: ; 0x0234CFA0 - stmdb sp!, {r3, lr} - bl ov29_023361D4 - cmp r0, #0 - movne r0, #2 - ldmneia sp!, {r3, pc} - ldr r0, _0234CFE8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #0x748] - bl IsFutureDungeon - cmp r0, #0 - bne _0234CFD8 - bl IsSecretFloor - cmp r0, #0 - beq _0234CFE0 -_0234CFD8: - mov r0, #1 - ldmia sp!, {r3, pc} -_0234CFE0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234CFE8: .word 0x02353538 - arm_func_end ov29_0234CFA0 - - arm_func_start ov29_0234CFEC -ov29_0234CFEC: ; 0x0234CFEC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldrb r0, [r5, #0x48] - cmp r0, #0xd8 - cmpne r0, #0xf9 - cmpne r0, #0xf7 - cmpne r0, #0xf8 - beq _0234D1D4 - cmp r0, #0xd6 - blo _0234D1D4 - cmp r0, #0xd7 - bne _0234D04C - mov r0, #0 - mov r1, #0x43 - bl LoadScriptVariableValue - cmp r0, #1 - moveq r4, #0x4b0 - beq _0234D1E0 - cmp r0, #2 - ldreq r4, _0234D1E8 ; =0x000004B1 - beq _0234D1E0 - cmp r0, #3 - ldreq r4, _0234D1EC ; =0x000004B2 - b _0234D1E0 -_0234D04C: - cmp r0, #0xd6 - bne _0234D0A0 - ldrsh r2, [r5, #2] - ldr r1, _0234D1F0 ; =0x000001B2 - cmp r2, r1 - ldreq r4, _0234D1F4 ; =0x000004CD - beq _0234D1E0 - cmp r2, #0xae - addeq r4, r1, #0x31c - beq _0234D1E0 - add r0, r1, #0x27c - cmp r2, r0 - ldreq r4, _0234D1F8 ; =0x000004CF - beq _0234D1E0 - sub r0, r1, #0x99 - cmp r2, r0 - moveq r4, #0x4d0 - beq _0234D1E0 - cmp r2, #0x318 - ldreq r4, _0234D1FC ; =0x000004D1 - b _0234D1E0 -_0234D0A0: - cmp r0, #0xda - ldreq r4, _0234D200 ; =0x000004B3 - beq _0234D1E0 - cmp r0, #0xed - bne _0234D148 - ldr r0, _0234D204 ; =0x02353538 - ldr r0, [r0] - ldrb r1, [r0, #0x748] - add r0, r1, #0x7b - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D208 ; =0x000004C4 - bls _0234D1E0 - cmp r1, #0x88 - ldreq r4, _0234D20C ; =0x000004C6 - beq _0234D1E0 - add r0, r1, #0x77 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D210 ; =0x000004C7 - bls _0234D1E0 - add r0, r1, #0x75 - and r0, r0, #0xff - cmp r0, #1 - ldrls r4, _0234D214 ; =0x000004C8 - bls _0234D1E0 - cmp r1, #0x8d - ldreq r4, _0234D218 ; =0x000004C9 - beq _0234D1E0 - add r0, r1, #0x72 - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D21C ; =0x000004CA - bls _0234D1E0 - cmp r1, #0x91 - ldreq r4, _0234D220 ; =0x000004CB - beq _0234D1E0 - add r0, r1, #0x6e - and r0, r0, #0xff - cmp r0, #2 - ldrls r4, _0234D224 ; =0x000004CC - b _0234D1E0 -_0234D148: - cmp r0, #0xe2 - bne _0234D170 - mov r0, #0x1a - bl GetPerformanceFlagWithChecks - cmp r0, #0 - beq _0234D170 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D170: - ldr r1, _0234D228 ; =0x023537E8 - b _0234D1C4 -_0234D178: - ldrb r0, [r5, #0x48] - cmp r0, r2 - bne _0234D1C0 - ldrsh r4, [r1, #2] - ldr r0, _0234D22C ; =0x000004B8 - cmp r4, r0 - bne _0234D1A8 - ldrsh r0, [r5, #2] - cmp r0, #0x1f8 - cmpne r0, #0x51 - ldreq r4, _0234D230 ; =0x000004D3 - beq _0234D1E0 -_0234D1A8: - cmp r4, #0 - bne _0234D1E0 - ldrsh r0, [r5, #2] - bl sub_02025784 - mov r4, r0 - b _0234D1E0 -_0234D1C0: - add r1, r1, #4 -_0234D1C4: - ldrb r2, [r1] - cmp r2, #0xff - bne _0234D178 - b _0234D1E0 -_0234D1D4: - ldrsh r0, [r5, #4] - bl sub_02025784 - mov r4, r0 -_0234D1E0: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234D1E8: .word 0x000004B1 -_0234D1EC: .word 0x000004B2 -_0234D1F0: .word 0x000001B2 -_0234D1F4: .word 0x000004CD -_0234D1F8: .word 0x000004CF -_0234D1FC: .word 0x000004D1 -_0234D200: .word 0x000004B3 -_0234D204: .word 0x02353538 -_0234D208: .word 0x000004C4 -_0234D20C: .word 0x000004C6 -_0234D210: .word 0x000004C7 -_0234D214: .word 0x000004C8 -_0234D218: .word 0x000004C9 -_0234D21C: .word 0x000004CA -_0234D220: .word 0x000004CB -_0234D224: .word 0x000004CC -_0234D228: .word 0x023537E8 -_0234D22C: .word 0x000004B8 -_0234D230: .word 0x000004D3 - arm_func_end ov29_0234CFEC - - arm_func_start ov29_0234D234 -ov29_0234D234: ; 0x0234D234 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr lr, [sp, #0x10] - ldrb ip, [sp, #0x14] - str lr, [sp] - str ip, [sp, #4] - bl ov29_0234D5D0 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234D234 - - arm_func_start DisplayMessage -DisplayMessage: ; 0x0234D258 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #0 - str r3, [sp, #4] - bl DisplayMessageInternal - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage - - arm_func_start DisplayMessage2 -DisplayMessage2: ; 0x0234D2AC - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r0 - mov r5, r1 - mov r4, r2 - mov r0, #0xa - bl ov29_0234BA54 - bl ov29_0234D558 - bl ov29_0234B034 - mov r1, r4 - mov r2, r6 - str r0, [sp] - mov r0, r5 - mov r3, #1 - str r3, [sp, #4] - mov r3, #0 - bl DisplayMessageInternal - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessage2 - - arm_func_start ov29_0234D304 -ov29_0234D304: ; 0x0234D304 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x58 - ldr r4, _0234D454 ; =0x02353563 - mov r8, r0 - ldrb r0, [r4] - mov r7, r1 - mov r6, r2 - mov r5, r3 - cmp r0, #0 - beq _0234D334 - mov r0, #0xa - bl ov29_0234BA54 -_0234D334: - bl ov29_0234D558 - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D41C - mov r0, r8 - bl IsMonster__0234D460 - cmp r0, #0 - beq _0234D3F8 - ldr r4, [r8, #0xb4] - bl FixedRoomIsSubstituteRoom - cmp r0, #0 - beq _0234D3BC - bl ov29_022F99EC - cmp r0, #0 - moveq r1, #0 - beq _0234D38C - ldr r1, [r0] - cmp r1, #0 - movne r1, #1 - moveq r1, #0 - and r1, r1, #0xff -_0234D38C: - cmp r1, #0 - moveq r0, #0 - streq r0, [sp, #8] - beq _0234D3D0 - ldr r1, [r0, #0xb4] - ldr r0, _0234D458 ; =0x02353368 - ldrb r1, [r1, #0xbc] - sub r1, r1, #0xb - orr r1, r1, #0x90000 - str r1, [sp, #8] - bl DebugPrint0__0200C1FC - b _0234D3D0 -_0234D3BC: - bl ov29_02337EE8 - mov r1, r0 - ldr r0, _0234D45C ; =0x02353380 - str r1, [sp, #8] - bl DebugPrint0__0200C1FC -_0234D3D0: - ldrsh r0, [r4, #4] - str r0, [sp, #0xc] - bl ov29_0233804C - str r0, [sp, #0x18] - mov r0, r8 - bl ov29_0231ADA8 - str r0, [sp, #0x1c] - ldrsh r0, [r4, #0xc] - orr r0, r0, #0x30000 - str r0, [sp, #0x54] -_0234D3F8: - add r3, sp, #8 - str r3, [sp] - mov r3, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - str r3, [sp, #4] - bl ov29_0234D5D0 - b _0234D440 -_0234D41C: - bl ov29_0234B034 - str r0, [sp] - mov r4, #1 - mov r0, r6 - mov r1, r5 - mov r2, r7 - mov r3, #0 - str r4, [sp, #4] - bl ov29_0234D5D0 -_0234D440: - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0234D454: .word 0x02353563 -_0234D458: .word 0x02353368 -_0234D45C: .word 0x02353380 - arm_func_end ov29_0234D304 - - arm_func_start IsMonster__0234D460 -IsMonster__0234D460: ; 0x0234D460 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsMonster__0234D460 - - arm_func_start ov29_0234D484 -ov29_0234D484: ; 0x0234D484 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r0, r1 - bl StringFromMessageId - mov r4, r0 - mov r0, #0 - mov r1, r0 - mov r2, r4 - mov r3, #1 - bl ov29_0234D304 - mov r0, r5 - mov r1, r4 - bl LogMessageQuiet - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234D484 - - arm_func_start ov29_0234D4BC -ov29_0234D4BC: ; 0x0234D4BC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov29_0234D558 - bl ov29_0234D630 - bl ov29_0234B034 - mov r1, r0 - mov r2, r7 - mov r3, r5 - mov r0, r6 - str r4, [sp] - bl ov29_0234D750 - mov r4, r0 - ldrb r0, [sp, #0x18] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bl ov29_0234D8A0 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234D4BC - - arm_func_start ov29_0234D518 -ov29_0234D518: ; 0x0234D518 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r0, r1 - mov r5, r2 - mov r4, r3 - bl StringFromMessageId - ldrb ip, [sp, #0x18] - mov r1, r0 - mov r0, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl ov29_0234D4BC - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0234D518 - - arm_func_start ov29_0234D558 -ov29_0234D558: ; 0x0234D558 - stmdb sp!, {r4, lr} - bl ov29_0234B73C - mov r4, r0 - mov r0, #2 - mov r1, #0 - bl ov29_022EA428 - cmp r4, #0 - ldmeqia sp!, {r4, pc} - mov r0, #0 - bl ov29_0234B1A4 - mov r0, #0xa - mov r1, r0 - bl ov29_022EA370 - ldmia sp!, {r4, pc} - arm_func_end ov29_0234D558 - - arm_func_start DisplayMessageInternal -DisplayMessageInternal: ; 0x0234D590 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl StringFromMessageId - ldr r1, [sp, #0x18] - ldrb ip, [sp, #0x1c] - str r1, [sp] - mov r1, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp, #4] - bl ov29_0234D5D0 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DisplayMessageInternal - - arm_func_start ov29_0234D5D0 -ov29_0234D5D0: ; 0x0234D5D0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r0, #2 - mov r1, #0 - mov r5, r2 - mov r4, r3 - bl ov29_022EA428 - mov r0, #1 - bl ov29_0234B4CC - bl ov29_0234DB58 - mov r0, r5 - bl ov29_0234DBE0 - mov r0, r7 - mov r3, r4 - str r6, [sp] - ldr r1, [sp, #0x18] - mov r2, #0 - bl ov29_0234DC3C - bl ov29_0234D9C0 - mov r0, r6 - ldrb r1, [sp, #0x1c] - bl ov29_0234D8B4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234D5D0 - - arm_func_start ov29_0234D630 -ov29_0234D630: ; 0x0234D630 - stmdb sp!, {r3, lr} - mov r0, #2 - mov r1, #0 - bl ov29_022EA428 - mov r0, #1 - bl ov29_0234B4CC - bl ov29_0234DB58 - ldmia sp!, {r3, pc} - arm_func_end ov29_0234D630 - - arm_func_start ov29_0234D650 -ov29_0234D650: ; 0x0234D650 - ldr ip, _0234D658 ; =ov29_0234D9C0 - bx ip - .align 2, 0 -_0234D658: .word ov29_0234D9C0 - arm_func_end ov29_0234D650 - - arm_func_start ov29_0234D65C -ov29_0234D65C: ; 0x0234D65C - ldr ip, _0234D664 ; =ov29_0234DBE0 - bx ip - .align 2, 0 -_0234D664: .word ov29_0234DBE0 - arm_func_end ov29_0234D65C - - arm_func_start ov29_0234D668 -ov29_0234D668: ; 0x0234D668 - stmdb sp!, {r3, lr} - ldr r0, _0234D68C ; =0x02382800 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x12] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl HidePortraitBox - ldmia sp!, {r3, pc} - .align 2, 0 -_0234D68C: .word 0x02382800 - arm_func_end ov29_0234D668 - - arm_func_start ov29_0234D690 -ov29_0234D690: ; 0x0234D690 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl StringFromMessageId - ldrb ip, [sp, #0x18] - mov r1, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl ov29_0234DC3C - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0234D690 - - arm_func_start ov29_0234D6C8 -ov29_0234D6C8: ; 0x0234D6C8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r0, r2 - mov r5, r1 - mov r4, r3 - bl ov29_0234DBE0 - ldrb ip, [sp, #0x18] - mov r0, r6 - mov r1, r5 - mov r3, r4 - mov r2, #0 - str ip, [sp] - bl ov29_0234DC3C - bl ov29_0234D9C0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ov29_0234D6C8 - - arm_func_start ov29_0234D70C -ov29_0234D70C: ; 0x0234D70C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r2 - mov r7, r1 - mov r5, r3 - bl StringFromMessageId - mov r4, r0 - mov r0, r6 - bl ov29_0234DBE0 - mov r0, r4 - mov r1, r7 - mov r3, r5 - ldrb ip, [sp, #0x18] - mov r2, #0 - str ip, [sp] - bl ov29_0234DC3C - bl ov29_0234D9C0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234D70C - - arm_func_start ov29_0234D750 -ov29_0234D750: ; 0x0234D750 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldrb ip, [sp, #0x20] - mov r4, r2 - mov r6, r0 - mov r5, r1 - mov r2, #0 - mov r1, r3 - add r0, sp, #4 - mov r3, r2 - str ip, [sp] - bl ov29_0234D860 - mov r0, r4 - bl ov29_0234DBE0 - mov r2, #1 - str r2, [sp] - mov r0, r6 - mov r1, r5 - add r2, sp, #4 - mov r3, #0 - bl ov29_0234DC3C - bl ov29_0234D9C0 - ldr r0, _0234D7BC ; =0x02382800 - ldr r0, [r0] - ldr r0, [r0, #0x46c] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0234D7BC: .word 0x02382800 - arm_func_end ov29_0234D750 - - arm_func_start ov29_0234D7C0 -ov29_0234D7C0: ; 0x0234D7C0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl StringFromMessageId - ldrb r1, [sp, #0x20] - mov r2, #0 - mov r4, r0 - str r1, [sp] - add r0, sp, #4 - mov r1, r5 - mov r3, r2 - bl ov29_0234D860 - mov r0, r6 - bl ov29_0234DBE0 - mov r2, #1 - str r2, [sp] - mov r0, r4 - mov r1, r7 - add r2, sp, #4 - mov r3, #0 - bl ov29_0234DC3C - bl ov29_0234D9C0 - ldr r0, _0234D834 ; =0x02382800 - ldr r0, [r0] - ldr r0, [r0, #0x46c] - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0234D834: .word 0x02382800 - arm_func_end ov29_0234D7C0 - - arm_func_start ov29_0234D838 -ov29_0234D838: ; 0x0234D838 - stmdb sp!, {r3, lr} - ldr r0, _0234D85C ; =0x02382800 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x10] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202F334 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234D85C: .word 0x02382800 - arm_func_end ov29_0234D838 - - arm_func_start ov29_0234D860 -ov29_0234D860: ; 0x0234D860 - ldrb ip, [sp] - strb r3, [r0] - strb ip, [r0, #1] - strh r1, [r0, #2] - str r2, [r0, #4] - bx lr - arm_func_end ov29_0234D860 - - arm_func_start ov29_0234D878 -ov29_0234D878: ; 0x0234D878 - ldr r1, _0234D888 ; =0x02382800 - ldr r1, [r1] - str r0, [r1, #0x474] - bx lr - .align 2, 0 -_0234D888: .word 0x02382800 - arm_func_end ov29_0234D878 - - arm_func_start ov29_0234D88C -ov29_0234D88C: ; 0x0234D88C - ldr r0, _0234D89C ; =0x02382800 - ldr r0, [r0] - ldr r0, [r0, #0x46c] - bx lr - .align 2, 0 -_0234D89C: .word 0x02382800 - arm_func_end ov29_0234D88C - - arm_func_start ov29_0234D8A0 -ov29_0234D8A0: ; 0x0234D8A0 - ldr ip, _0234D8B0 ; =ov29_0234D8B4 - mov r1, r0 - mov r0, #0 - bx ip - .align 2, 0 -_0234D8B0: .word ov29_0234D8B4 - arm_func_end ov29_0234D8A0 - - arm_func_start ov29_0234D8B4 -ov29_0234D8B4: ; 0x0234D8B4 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0234D9BC ; =0x02382800 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - beq _0234D970 - ldrsb r0, [r0, #0x12] - mvn r1, #1 - cmp r0, r1 - beq _0234D8E4 - bl HidePortraitBox -_0234D8E4: - ldr r0, _0234D9BC ; =0x02382800 - ldr r0, [r0] - ldrsb r0, [r0, #0x10] - bl sub_0202F334 - mov r0, #8 - mov r1, #0x62 - bl ov29_022EA370 - ldr r0, _0234D9BC ; =0x02382800 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x11] - cmp r0, r1 - beq _0234D91C - bl sub_0202AABC -_0234D91C: - ldr r0, _0234D9BC ; =0x02382800 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x12] - cmp r0, r1 - beq _0234D948 - bl FreePortraitBox - ldr r0, _0234D9BC ; =0x02382800 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x12] -_0234D948: - ldr r0, _0234D9BC ; =0x02382800 - ldr r0, [r0] - ldrsb r0, [r0, #0x10] - bl FreeDBox - ldr r0, _0234D9BC ; =0x02382800 - ldr r0, [r0] - bl MemFree - ldr r0, _0234D9BC ; =0x02382800 - mov r1, #0 - str r1, [r0] -_0234D970: - mov r0, #0x62 - bl AdvanceFrame - cmp r5, #0 - beq _0234D994 - bl ov29_022F2FE4 - bl ov29_02339148 - mov r0, #8 - mov r1, #9 - bl ov29_022EA370 -_0234D994: - cmp r4, #0 - beq _0234D9A8 - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234D9A8: - bl sub_02006B70 - bl ov29_022E0B44 - mov r0, #0 - bl ov29_0234B4CC - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234D9BC: .word 0x02382800 - arm_func_end ov29_0234D8B4 - - arm_func_start ov29_0234D9C0 -ov29_0234D9C0: ; 0x0234D9C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mvn r8, #1 - mov r7, #0 - ldr r6, _0234DB50 ; =0x02382800 - sub r5, r8, #3 - sub r4, r8, #2 - mov sb, #1 - mov fp, r7 -_0234D9E0: - mov r0, #0x62 - bl AdvanceFrame - ldr r1, [r6] - ldrb r0, [r1, #0x466] - cmp r0, #0 - beq _0234DB2C - add r0, r1, #0x400 - ldrsh r0, [r0, #0x6a] - mov sl, #0 - cmp r0, #0 - bne _0234DA90 - ldrsb r0, [r1, #0x10] - bl IsDBoxActive - cmp r0, #0 - bne _0234DB44 - ldr r0, [r6] - add r0, r0, #0x400 - strh sb, [r0, #0x6a] - ldr r0, [r6] - ldr r3, [r0, #0x470] - ldrb r0, [r0, #0x467] - cmp r3, #0 - ldreq r3, _0234DB54 ; =0x02353398 - cmp r0, #0 - movne r1, #0x11 - mov r0, #0 - moveq r1, #0x13 - mov r2, r0 - bl sub_0202A5CC - ldr r1, [r6] - strb r0, [r1, #0x11] - ldr r1, [r6] - ldrsb r0, [r1, #0x11] - add r1, r1, #0x400 - ldrsh r1, [r1, #0x68] - bl sub_0202AB94 - ldr r0, [r6] - ldr r0, [r0, #0x474] - cmp r0, #0 - beq _0234DB44 - blx r0 - ldr r0, [r6] - str fp, [r0, #0x474] - b _0234DB44 -_0234DA90: - ldrsb r0, [r1, #0x11] - bl sub_020282F4 - ldr r2, [r6] - ldrb r1, [r2, #0x467] - cmp r1, #0 - cmpeq r0, r5 - moveq r0, #2 - streq r0, [r2, #0x46c] - moveq sl, #1 - beq _0234DAD4 - cmp r0, r4 - bne _0234DAD4 - ldrsb r0, [r2, #0x11] - bl sub_0202ABB0 - ldr r1, [r6] - mov sl, #1 - str r0, [r1, #0x46c] -_0234DAD4: - cmp sl, #0 - beq _0234DB44 - ldr r0, [r6] - ldrsb r0, [r0, #0x11] - cmp r0, r8 - beq _0234DAF8 - bl sub_0202AABC - ldr r0, [r6] - strb r8, [r0, #0x11] -_0234DAF8: - ldr r0, [r6] - add r0, r0, #0x400 - strh r7, [r0, #0x6a] - ldr r0, [r6] - strb r7, [r0, #0x466] - ldr r0, [r6] - strb r7, [r0, #0x467] - ldr r0, [r6] - add r0, r0, #0x400 - strh r7, [r0, #0x68] - ldr r0, [r6] - str r7, [r0, #0x470] - b _0234DB44 -_0234DB2C: - ldrsb r0, [r1, #0x10] - bl IsDBoxActive - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and sl, r0, #0xff -_0234DB44: - cmp sl, #0 - beq _0234D9E0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234DB50: .word 0x02382800 -_0234DB54: .word 0x02353398 - arm_func_end ov29_0234D9C0 - - arm_func_start ov29_0234DB58 -ov29_0234DB58: ; 0x0234DB58 - stmdb sp!, {r3, lr} - ldr r0, _0234DBD8 ; =0x00000478 - mov r1, #8 - bl MemAlloc - ldr r2, _0234DBDC ; =0x02382800 - ldr r1, _0234DBD8 ; =0x00000478 - str r0, [r2] - bl MemZero - ldr r0, _0234DBDC ; =0x02382800 - mvn r2, #0 - ldr r1, [r0] - str r2, [r1, #0x46c] - ldr r0, [r0] - add r0, r0, #0x14 - bl InitPreprocessorArgs - ldr r1, _0234DBDC ; =0x02382800 - mov r3, #0 - ldr r0, [r1] - sub r2, r3, #2 - strb r3, [r0, #0x466] - ldr r0, [r1] - add r0, r0, #0x400 - strh r3, [r0, #0x6a] - ldr r0, [r1] - strb r2, [r0, #0x12] - ldr r0, [r1] - strb r2, [r0, #0x11] - ldr r0, [r1] - strb r2, [r0, #0x10] - ldr r0, [r1] - str r3, [r0, #0x474] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234DBD8: .word 0x00000478 -_0234DBDC: .word 0x02382800 - arm_func_end ov29_0234DB58 - - arm_func_start ov29_0234DBE0 -ov29_0234DBE0: ; 0x0234DBE0 - stmdb sp!, {r4, lr} - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r1, _0234DC38 ; =0x02382800 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x12] - cmp r1, r0 - bne _0234DC20 - mov r0, #0 - mov r1, #3 - mov r2, #1 - bl CreatePortraitBox - ldr r1, _0234DC38 ; =0x02382800 - ldr r1, [r1] - strb r0, [r1, #0x12] -_0234DC20: - ldr r0, _0234DC38 ; =0x02382800 - mov r1, r4 - ldr r0, [r0] - ldrsb r0, [r0, #0x12] - bl ShowPortraitBox - ldmia sp!, {r4, pc} - .align 2, 0 -_0234DC38: .word 0x02382800 - arm_func_end ov29_0234DBE0 - - arm_func_start ov29_0234DC3C -ov29_0234DC3C: ; 0x0234DC3C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0234DD88 ; =0x02382800 - mvn ip, #1 - ldr r4, [r4] - mov r7, r0 - ldrsb r0, [r4, #0x10] - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmp r0, ip - bne _0234DC8C - mov r0, #0 - bl CreateDBox - ldr r2, _0234DD88 ; =0x02382800 - mov r1, #0 - ldr r3, [r2] - strb r0, [r3, #0x10] - ldr r0, [r2] - ldrsb r0, [r0, #0x10] - bl sub_0202F474 -_0234DC8C: - ldr r0, _0234DD88 ; =0x02382800 - mov r8, r6 - ldr sb, [r0] - mov ip, #5 - add lr, sb, #0x14 -_0234DCA0: - ldmia r8!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0234DCA0 - ldr r1, _0234DD8C ; =0x00001004 - add r0, sb, #0x400 - strh r1, [r0, #0x64] - cmp r4, #0 - beq _0234DCDC - ldr r0, _0234DD88 ; =0x02382800 - ldr r0, [r0] - add r0, r0, #0x400 - ldrh r1, [r0, #0x64] - orr r1, r1, #0x2000 - strh r1, [r0, #0x64] -_0234DCDC: - ldrb r0, [sp, #0x20] - cmp r0, #0 - beq _0234DD24 - cmp r5, #0 - beq _0234DD0C - ldr r0, _0234DD88 ; =0x02382800 - ldr r0, [r0] - add r0, r0, #0x400 - ldrh r1, [r0, #0x64] - orr r1, r1, #8 - strh r1, [r0, #0x64] - b _0234DD24 -_0234DD0C: - ldr r0, _0234DD88 ; =0x02382800 - ldr r0, [r0] - add r0, r0, #0x400 - ldrh r1, [r0, #0x64] - orr r1, r1, #0x18 - strh r1, [r0, #0x64] -_0234DD24: - cmp r5, #0 - beq _0234DD64 - ldr r1, _0234DD88 ; =0x02382800 - mov r2, #1 - ldr r0, [r1] - strb r2, [r0, #0x466] - ldrb r2, [r5, #1] - ldr r0, [r1] - strb r2, [r0, #0x467] - ldr r0, [r1] - ldrsh r2, [r5, #2] - add r0, r0, #0x400 - strh r2, [r0, #0x68] - ldr r2, [r5, #4] - ldr r0, [r1] - str r2, [r0, #0x470] -_0234DD64: - ldr r0, _0234DD88 ; =0x02382800 - mov r2, r7 - ldr r0, [r0] - mov r3, r6 - add r1, r0, #0x400 - ldrsb r0, [r0, #0x10] - ldrh r1, [r1, #0x64] - bl sub_0202F23C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0234DD88: .word 0x02382800 -_0234DD8C: .word 0x00001004 - arm_func_end ov29_0234DC3C - - arm_func_start ov29_0234DD90 -ov29_0234DD90: ; 0x0234DD90 - ldr ip, _0234DD9C ; =LoadOverlay - mov r0, #0x22 - bx ip - .align 2, 0 -_0234DD9C: .word LoadOverlay - arm_func_end ov29_0234DD90 - - arm_func_start ov29_0234DDA0 -ov29_0234DDA0: ; 0x0234DDA0 - ldr ip, _0234DDAC ; =OverlayIsLoaded - mov r0, #0x22 - bx ip - .align 2, 0 -_0234DDAC: .word OverlayIsLoaded - arm_func_end ov29_0234DDA0 - - arm_func_start ov29_0234DDB0 -ov29_0234DDB0: ; 0x0234DDB0 - stmdb sp!, {r3, lr} - mov r0, #0x22 - bl OverlayIsLoaded - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x22 - bl UnloadOverlay - ldmia sp!, {r3, pc} - arm_func_end ov29_0234DDB0 - - arm_func_start EntityIsValid__0234DDD0 -EntityIsValid__0234DDD0: ; 0x0234DDD0 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0234DDD0 - - arm_func_start ov29_0234DDF4 -ov29_0234DDF4: ; 0x0234DDF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x38 - mov r0, #0x22 - mov sl, r2 - bl LoadOverlay - ldr r0, _0234E8E8 ; =0x02353538 - mov r6, #0 - ldr r1, [r0] - mov r4, #0xa - ldr r5, [r1, #0x614] - sub r0, r4, #0xb - cmp r5, #4 - moveq r2, #1 - movne r2, r6 - cmp r5, #0 - movge r4, r5 - str r0, [r1, #0x614] - and fp, r2, #0xff - cmp sl, #0 - beq _0234DE74 - mov r5, #1 - mov r0, r5 - mov r4, r5 - bl ov29_0234B1A4 - mov r0, #0x1d - bl AdvanceFrame - mov r0, #2 - mov r1, #0 - bl ov29_022EA428 - mov r0, #2 - mov r1, #0x1d - bl ov29_022EA370 -_0234DE74: - bl ov29_022FB920 -_0234DE78: - mvn r0, #0 - cmp r5, r0 - bne _0234DEE8 - mov r0, #0 - bl ov29_0234B1A4 - mov r0, #2 - mov r1, #0 - bl ov29_022EA428 - mov r0, #1 - bl ov29_022EB398 - ldr r0, _0234E8EC ; =0x02382804 - mvn r1, #0 - str r1, [r0, #4] - bl GetLeader - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - cmp sl, #0 - mvnne r4, #0 - bne _0234DEE8 - bl ov30_02382820 - mov r5, #0x1d -_0234DED0: - mov r0, r5 - bl AdvanceFrame - bl ov30_02382E08 - mov r4, r0 - cmp r4, #0xa - beq _0234DED0 -_0234DEE8: - mov r5, r4 - mvn r7, #0 - mov r8, #0 - mov sb, #1 -_0234DEF8: - cmp r4, #1 - bne _0234E150 - mov r0, #1 - bl ov29_022EB398 - strb r8, [sp, #0x14] - strb sb, [sp, #0x15] - strb r8, [sp, #0x16] - strb r8, [sp, #0x17] - str r8, [sp, #0x18] - bl GetLeader - add r1, sp, #0x14 - bl ov30_023838E4 - cmp r0, #0 - add r0, sp, #0x14 - movne r5, r7 - bl ov29_0234E934 - cmp r0, #0 - beq _0234DF5C - bl GetLeader - add r1, sp, #0x14 - bl ov30_023838E4 - cmp r0, #0 - beq _0234DF5C - mov r0, #1 - bl ov29_022EB398 -_0234DF5C: - bl ov29_022F0B9C - cmp r0, #0xc - bne _0234DF9C - bl GetLeader - mov r1, #0 - mov r2, #0xc - bl ov29_022EB54C - ldrb r1, [r0] - orr r1, r1, #4 - strb r1, [r0] - bl ov29_022F0B8C - bl ov30_0238367C - mov r0, #1 - bl ov29_022EB398 - mov r4, #1 - b _0234DEF8 -_0234DF9C: - cmp r0, #0x35 - bne _0234DFD8 - bl GetLeader - mov r1, #0 - mov r2, #0xd - bl ov29_022EB54C - mov r7, r0 - bl GetLeader - mov r1, r7 - bl ov29_0231DBF0 - cmp r0, #0 - bne _0234E140 - mov r0, #1 - bl ov29_022EB398 - b _0234E140 -_0234DFD8: - cmp r0, #0x10 - bne _0234E014 - bl GetLeader - mov r1, #0 - mov r2, #0xe - bl ov29_022EB54C - mov r7, r0 - bl GetLeader - mov r1, r7 - bl ov29_0231DA80 - cmp r0, #0 - bne _0234E140 - mov r0, #1 - bl ov29_022EB398 - b _0234E140 -_0234E014: - cmp r0, #0x2c - bne _0234E050 - bl GetLeader - mov r1, #0 - mov r2, #0xf - bl ov29_022EB54C - mov r7, r0 - bl GetLeader - mov r1, r7 - bl ov29_0231DD60 - cmp r0, #0 - bne _0234E140 - mov r0, #1 - bl ov29_022EB398 - b _0234E140 -_0234E050: - cmp r0, #0x3c - bne _0234E084 - bl GetLeader - mov r1, #1 - bl ov29_022F4370 - mov r0, #1 - bl ov29_022EB398 - mov r0, #0x78 - mov r1, #0x4d - bl ov29_022EA370 - mov r0, #0 - bl ov29_0234B1A4 - b _0234E890 -_0234E084: - cmp r0, #0x3d - bne _0234E0B8 - bl GetLeader - mov r1, #1 - bl ov29_022F44F0 - mov r0, #1 - bl ov29_022EB398 - mov r0, #0x78 - mov r1, #0x4d - bl ov29_022EA370 - mov r0, #0 - bl ov29_0234B1A4 - b _0234E890 -_0234E0B8: - cmp r0, #0xb - cmpne r0, #0x27 - cmpne r0, #0x41 - bne _0234E0EC - bl sub_0204AF20 - cmp r0, #0 - beq _0234E140 - bl ov29_022F0B8C - bl GetLeader - bl ov29_022F0C1C - cmp r0, #0 - beq _0234DE78 - b _0234E140 -_0234E0EC: - cmp r0, #0x31 - bne _0234E140 - bl sub_0204AF20 - cmp r0, #0 - beq _0234E140 - bl ov29_022F0B8C - bl GetLeader - mov r1, #0 - mov r2, #0x15 - mov r7, r0 - bl ov29_022EB54C - ldrsh r0, [r0, #4] - bl GetItemMoveId16 - mov r1, r0 - add r0, sp, #0x1c - bl InitMove - mov r0, r7 - add r1, sp, #0x1c - bl ov29_022F0C3C - cmp r0, #0 - beq _0234DE78 -_0234E140: - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - b _0234E86C -_0234E150: - cmp r4, #2 - bne _0234E2C4 - mvn r0, #0 - mov sb, #1 - str r0, [sp, #0x10] - b _0234E2AC -_0234E168: - mov r0, #1 - bl ov29_022EB398 - bl GetLeader - bl ov31_0238704C - cmp r0, #0 - ldrne r5, [sp, #0x10] - bl ov29_022F0B9C - cmp r0, #0x30 - bgt _0234E1B0 - bge _0234E1F0 - sub r1, r0, #0x19 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _0234E288 -_0234E1A0: ; jump table - b _0234E200 ; case 0 - b _0234E1E4 ; case 1 - b _0234E1BC ; case 2 - b _0234E1CC ; case 3 -_0234E1B0: - cmp r0, #0x34 - beq _0234E1D8 - b _0234E288 -_0234E1BC: - bl ov29_022F0B8C - mov r1, #0 - bl ov31_02387688 - b _0234E28C -_0234E1CC: - bl ov29_022F0B8C - bl ov29_022F5A0C - b _0234E28C -_0234E1D8: - bl ov29_022F0B8C - bl ov29_022F5DC0 - b _0234E28C -_0234E1E4: - bl ov29_022F0B8C - bl ov31_02387660 - b _0234E28C -_0234E1F0: - bl ov29_022F0B8C - mov r1, #1 - bl ov31_02387688 - b _0234E28C -_0234E200: - bl ov29_022F0B8C - bl ov30_023851C0 - mov r7, #0 - mov r8, r7 - b _0234E27C -_0234E214: - ldr r0, _0234E8E8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r8, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - str r0, [sp, #4] - bl EntityIsValid__0234DDD0 - cmp r0, #0 - beq _0234E278 - bl ov29_022F0B8C - ldrb r0, [r0, #4] - cmp r8, r0 - bne _0234E274 - ldr r0, _0234E8EC ; =0x02382804 - str r7, [r0, #4] - bl ov29_022F0B9C - cmp r0, #0 - beq _0234E28C - ldr r0, [sp, #4] - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - mov sb, #0 - b _0234E28C -_0234E274: - add r7, r7, #1 -_0234E278: - add r8, r8, #1 -_0234E27C: - cmp r8, #4 - blt _0234E214 - b _0234E28C -_0234E288: - mov sb, #0 -_0234E28C: - ldr r0, _0234E8F0 ; =0x0235352C - ldr r0, [r0] - ldr r0, [r0, #0x24] - bl sub_0200B3D4 - ldr r0, _0234E8F0 ; =0x0235352C - ldr r0, [r0] - ldr r0, [r0, #0x24] - bl sub_0200B330 -_0234E2AC: - cmp sb, #0 - bne _0234E168 - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - b _0234E86C -_0234E2C4: - cmp r4, #0 - bne _0234E4F0 - mov r0, #1 - mov r8, #0 - bl ov29_022EB398 - mov r7, r8 - b _0234E318 -_0234E2E0: - ldr r0, _0234E8E8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, r7, lsl #2 - add r0, r0, #0x12000 - ldr sb, [r0, #0xb28] - mov r0, sb - bl EntityIsValid__0234DDD0 - cmp r0, #0 - ldrne r0, [sb, #0xb4] - ldrneb r0, [r0, #7] - cmpne r0, #0 - movne r8, r7 - bne _0234E320 - add r7, r7, #1 -_0234E318: - cmp r7, #4 - blt _0234E2E0 -_0234E320: - mov r7, #0 - mov r0, r7 - str r7, [sp, #8] - mov sb, r7 - str r0, [sp, #0x24] -_0234E334: - ldr r0, _0234E8E8 ; =0x02353538 - ldr r0, [r0] - add r0, r0, sb, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - str r0, [sp, #0xc] - bl ov29_02302388 - cmp r0, #0 - beq _0234E36C - cmp sb, r8 - ldreq r0, [sp, #0xc] - streq r7, [sp, #8] - streq r0, [sp, #0x24] - add r7, r7, #1 -_0234E36C: - add sb, sb, #1 - cmp sb, #4 - blt _0234E334 - ldr r0, [sp, #0x24] - cmp r0, #0 - bne _0234E38C - bl GetLeader - str r0, [sp, #0x24] -_0234E38C: - ldr r0, [sp, #0x24] - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - ldr r0, [sp, #0x24] - mov r2, #1 - add r0, r0, #4 - mov r1, #0 - mov r3, r2 - bl ov29_02337428 - bl ov29_022E9618 - strb r8, [r0, #0x4e] - mov r0, #0 - bl ov29_022EB398 - ldr sb, _0234E8E8 ; =0x02353538 - mvn r8, #0 -_0234E3CC: - mov r0, #0 - bl ov29_022EB398 - ldr r3, [sp, #8] - add r0, sp, #0x24 - mov r1, #0 - mov r2, #1 - str r7, [sp] - bl ov30_023853BC - cmp r0, #0 - movne r5, r8 - bl ov29_022F0B9C - cmp r0, #0x1d - bne _0234E40C - bl ov29_022F0B8C - bl ov30_02385FE0 - b _0234E3CC -_0234E40C: - bl ov29_022F0B9C - cmp r0, #0x1e - bne _0234E428 - bl ov29_022F0B8C - mov r1, #0 - bl ov31_023860A4 - b _0234E3CC -_0234E428: - bl ov29_022F0B9C - cmp r0, #0x33 - bne _0234E444 - bl ov29_022F0B8C - mov r1, #0 - bl ov31_023860A4 - b _0234E3CC -_0234E444: - bl ov29_022F0B9C - cmp r0, #0x1f - bne _0234E45C - bl ov29_022F0B8C - bl ov31_0238619C - b _0234E3CC -_0234E45C: - bl ov29_022F0B9C - cmp r0, #0x20 - beq _0234E3CC - bl ov29_022F0B9C - cmp r0, #0x21 - beq _0234E3CC - bl ov29_022F0B9C - cmp r0, #0x14 - beq _0234E48C - bl ov29_022F0B9C - cmp r0, #0x15 - bne _0234E4CC -_0234E48C: - bl sub_0204AF20 - cmp r0, #0 - beq _0234E4CC - bl ov29_022F0B8C - ldrb r2, [r0, #4] - ldr r3, [sb] - ldrb r1, [r0, #0xa] - add r0, r3, r2, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - ldr r2, [r0, #0xb4] - add r2, r2, #0x124 - add r1, r2, r1, lsl #3 - bl ov29_022F0C3C - cmp r0, #0 - beq _0234E3CC -_0234E4CC: - bl GetLeader - mov r1, #0 - mov r2, #1 - bl ov29_022F98B4 - bl ov29_0233779C - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - b _0234E86C -_0234E4F0: - cmp r4, #4 - bne _0234E800 - bl GetLeader - mov r1, r0 - ldrsh r0, [r1, #4] - ldrsh r1, [r1, #6] - bl GetTile - ldr r1, [r0, #0x10] - cmp r1, #0 - beq _0234E78C - ldr r0, [r1] - cmp r0, #3 - bne _0234E734 - mov r0, #1 - bl ov29_0234B1A4 - mov r0, #0x1d - bl AdvanceFrame - mov r0, #0x1d - bl AdvanceFrame - mov r0, #1 - bl ov29_022EB398 - mov r0, #0 - strb r0, [sp, #0x28] - mov r0, #1 - strb r0, [sp, #0x29] - strb r0, [sp, #0x2a] - strb r0, [sp, #0x2b] - mov r0, #0 - str r0, [sp, #0x2c] - bl GetLeader - add r1, sp, #0x28 - bl ov30_023838E4 - cmp r0, #0 - add r0, sp, #0x28 - movne r5, r7 - bl ov29_0234E934 - cmp r0, #0 - beq _0234E5A4 - bl GetLeader - add r1, sp, #0x28 - bl ov30_023838E4 - cmp r0, #0 - beq _0234E5A4 - mov r0, #1 - bl ov29_022EB398 -_0234E5A4: - bl ov29_022F0B9C - cmp r0, #0xc - bne _0234E5E4 - bl GetLeader - mov r1, #0 - mov r2, #0x10 - bl ov29_022EB54C - ldrb r1, [r0] - orr r1, r1, #4 - strb r1, [r0] - bl ov29_022F0B8C - bl ov30_0238367C - mov r0, #1 - bl ov29_022EB398 - mov r4, #4 - b _0234DEF8 -_0234E5E4: - cmp r0, #0x35 - bne _0234E620 - bl GetLeader - mov r1, #0 - mov r2, #0x11 - bl ov29_022EB54C - mov r5, r0 - bl GetLeader - mov r1, r5 - bl ov29_0231DBF0 - cmp r0, #0 - bne _0234E720 - mov r0, #1 - bl ov29_022EB398 - b _0234E720 -_0234E620: - cmp r0, #0x10 - bne _0234E65C - bl GetLeader - mov r1, #0 - mov r2, #0x12 - bl ov29_022EB54C - mov r5, r0 - bl GetLeader - mov r1, r5 - bl ov29_0231DA80 - cmp r0, #0 - bne _0234E720 - mov r0, #1 - bl ov29_022EB398 - b _0234E720 -_0234E65C: - cmp r0, #0x2c - bne _0234E698 - bl GetLeader - mov r1, #0 - mov r2, #0x13 - bl ov29_022EB54C - mov r5, r0 - bl GetLeader - mov r1, r5 - bl ov29_0231DD60 - cmp r0, #0 - bne _0234E720 - mov r0, #1 - bl ov29_022EB398 - b _0234E720 -_0234E698: - cmp r0, #0xb - cmpne r0, #0x27 - cmpne r0, #0x41 - bne _0234E6CC - bl sub_0204AF20 - cmp r0, #0 - beq _0234E720 - bl ov29_022F0B8C - bl GetLeader - bl ov29_022F0C1C - cmp r0, #0 - beq _0234DE78 - b _0234E720 -_0234E6CC: - cmp r0, #0x31 - bne _0234E720 - bl sub_0204AF20 - cmp r0, #0 - beq _0234E720 - bl ov29_022F0B8C - bl GetLeader - mov r1, #0 - mov r2, #0x15 - mov r7, r0 - bl ov29_022EB54C - ldrsh r0, [r0, #4] - bl GetItemMoveId16 - mov r1, r0 - add r0, sp, #0x30 - bl InitMove - mov r0, r7 - add r1, sp, #0x30 - bl ov29_022F0C3C - cmp r0, #0 - beq _0234DE78 -_0234E720: - bl ov29_022FB920 - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - b _0234E7F8 -_0234E734: - cmp r0, #2 - bne _0234E75C - mov r0, #1 - bl ov29_022EB398 - bl GetLeader - bl ov31_02386C6C - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - b _0234E7F8 -_0234E75C: - cmp r0, #5 - bne _0234E7F8 - mov r0, #1 - bl ov29_022EB398 - bl GetLeader - mov r1, #1 - bl ov30_02382E18 - bl ov29_022F0B9C - cmp r0, #0 - beq _0234E7F8 - mov r6, #1 - b _0234E890 -_0234E78C: - ldrh r0, [r0] - tst r0, #0x200 - beq _0234E7C0 - mov r0, #1 - bl ov29_022EB398 - bl GetLeader - mov r1, #1 - bl ov30_02382E18 - bl ov29_022F0B9C - cmp r0, #0 - beq _0234E7F8 - mov r6, #1 - b _0234E890 -_0234E7C0: - bl GetLeader - mov r7, r0 - bl sub_02025888 - mov r5, r0 - bl ov29_0234B034 - mov r1, r7 - str r5, [r0, #0x38] - mov r0, r5 - mov r2, #0 - bl ov29_022E2A78 - mov r0, #0 - ldr r1, _0234E8F4 ; =0x00000B6A - mov r2, #1 - bl DisplayMessage -_0234E7F8: - mvn r5, #0 - b _0234E86C -_0234E800: - cmp r4, #3 - bne _0234E834 - mov r0, #2 - mov r1, #0 - bl ov29_022EA428 - bl ov29_0234FA24 - cmp r0, #0 - bne _0234E890 - bl ov29_022F0B9C - cmp r0, #0 - bne _0234E890 - mvn r5, #0 - b _0234E86C -_0234E834: - cmp r4, #5 - bne _0234E86C - bl ov31_0238878C - ldr r0, _0234E8E8 ; =0x02353538 - ldr r0, [r0] - ldrb r0, [r0, #8] - cmp r0, #0 - movne r6, #1 - bne _0234E890 - bl ov29_022F0B9C - cmp r0, #0 - movne r6, #1 - bne _0234E890 - mvn r5, #0 -_0234E86C: - cmp sl, #0 - mvnne r0, #0 - cmpne r4, r0 - bne _0234DE78 - cmp fp, #0 - bne _0234E890 - mvn r0, #0 - cmp r4, r0 - bne _0234DE78 -_0234E890: - cmp r6, #0 - mov r0, #0x64 - beq _0234E8B0 - bl AdvanceFrame - mov r0, #0xb - mov r1, #0 - bl ov29_022EA428 - b _0234E8C0 -_0234E8B0: - bl AdvanceFrame - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234E8C0: - bl ov29_022FB920 - bl ov29_022E0B44 - mov r0, #0x22 - bl OverlayIsLoaded - cmp r0, #0 - beq _0234E8E0 - mov r0, #0x22 - bl UnloadOverlay -_0234E8E0: - add sp, sp, #0x38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234E8E8: .word 0x02353538 -_0234E8EC: .word 0x02382804 -_0234E8F0: .word 0x0235352C -_0234E8F4: .word 0x00000B6A - arm_func_end ov29_0234DDF4 - - arm_func_start ov29_0234E8F8 -ov29_0234E8F8: ; 0x0234E8F8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #0x22 - bl LoadOverlay - mov r0, r5 - mov r1, r4 - bl ov30_02382E18 - mov r0, #0x22 - bl OverlayIsLoaded - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0x22 - bl UnloadOverlay - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234E8F8 - - arm_func_start ov29_0234E934 -ov29_0234E934: ; 0x0234E934 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ov29_022F0B9C - mov r2, #0 - strb r2, [r4] - strb r2, [r4, #1] - strb r2, [r4, #2] - cmp r0, #0xa - strb r2, [r4, #3] - moveq r1, #1 - streqb r1, [r4] - streqb r2, [r4, #1] - streqb r1, [r4, #3] - cmp r0, #0x3e - moveq r1, #1 - streqb r1, [r4] - moveq r0, #0 - streqb r0, [r4, #1] - streqb r1, [r4, #3] - ldrb r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end ov29_0234E934 - - arm_func_start ov29_0234E988 -ov29_0234E988: ; 0x0234E988 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldrsb r0, [r7] - mvn r1, #1 - cmp r0, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_0202AAE8 - cmp r0, #0 - beq _0234E9D4 - mvn r4, #3 - sub r5, r4, #1 - mov r6, #0x62 -_0234E9B8: - mov r0, r6 - bl AdvanceFrame - ldrsb r0, [r7] - bl sub_020282F4 - cmp r0, r5 - cmpne r0, r4 - bne _0234E9B8 -_0234E9D4: - ldrsb r0, [r7] - bl sub_0202AABC - mvn r0, #1 - strb r0, [r7] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234E988 - - arm_func_start ov29_0234E9E8 -ov29_0234E9E8: ; 0x0234E9E8 - str r1, [r0] - mov ip, #0 - str ip, [r0, #0x88] - mov r3, ip - mov r1, #0x44 -_0234E9FC: - add r2, r0, ip, lsl #5 - strb r3, [r2, #0x14] - add ip, ip, #1 - strb r1, [r2, #0x1e] - cmp ip, #4 - blt _0234E9FC - bx lr - arm_func_end ov29_0234E9E8 - - arm_func_start ov29_0234EA18 -ov29_0234EA18: ; 0x0234EA18 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sb, r1 - mov sl, r0 - mov r8, r2 - mov r7, r3 - ldr r6, [sp, #0x30] - bl ov29_0234E9E8 - cmp sb, #1 - moveq r5, #4 - beq _0234EA50 - cmp sb, #0 - moveq r5, #4 - bne _0234EB1C -_0234EA50: - mov r4, #0 - ldr fp, _0234EB24 ; =0x02353538 - b _0234EAE4 -_0234EA5C: - cmp sb, #1 - bne _0234EA98 - str r7, [sp] - str r6, [sp, #4] - ldr r1, [fp] - mov r0, sl - add r1, r1, r4, lsl #2 - add r1, r1, #0x12000 - ldr r1, [r1, #0xb28] - mov r2, r4 - mov r3, r8 - bl ov29_0234EC38 - cmp r0, #0 - beq _0234EAE0 - b _0234EACC -_0234EA98: - cmp sb, #0 - bne _0234EACC - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetActiveTeamMember - mov r1, r0 - mov r0, sl - str r6, [sp] - mov r2, r4 - mov r3, r7 - bl ov29_0234ED30 - cmp r0, #0 - beq _0234EAE0 -_0234EACC: - ldr r0, [sl, #0x88] - add r0, r0, #1 - str r0, [sl, #0x88] - cmp r0, #4 - bge _0234EAEC -_0234EAE0: - add r4, r4, #1 -_0234EAE4: - cmp r4, r5 - blt _0234EA5C -_0234EAEC: - ldr r4, [sl, #0x88] - mvn r3, #0 - mov r1, #0 - b _0234EB14 -_0234EAFC: - add r2, sl, r4, lsl #5 - str r3, [r2, #4] - add r0, sl, r4 - str r1, [r2, #0x20] - strb r1, [r0, #0x84] - add r4, r4, #1 -_0234EB14: - cmp r4, #4 - blt _0234EAFC -_0234EB1C: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234EB24: .word 0x02353538 - arm_func_end ov29_0234EA18 - - arm_func_start ov29_0234EB28 -ov29_0234EB28: ; 0x0234EB28 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - ldr ip, [r4, #0x88] - cmp ip, #4 - mvnge r0, #0 - bge _0234EBA4 - ldr ip, [r4] - cmp ip, #1 - bne _0234EB74 - ldrb lr, [sp, #0x10] - ldrb ip, [sp, #0x14] - str lr, [sp] - str ip, [sp, #4] - bl ov29_0234EC38 - cmp r0, #0 - bne _0234EB98 - mvn r0, #0 - b _0234EBA4 -_0234EB74: - cmp ip, #0 - bne _0234EB98 - ldrb ip, [sp, #0x14] - ldrb r3, [sp, #0x10] - str ip, [sp] - bl ov29_0234ED30 - cmp r0, #0 - mvneq r0, #0 - beq _0234EBA4 -_0234EB98: - ldr r0, [r4, #0x88] - add r1, r0, #1 - str r1, [r4, #0x88] -_0234EBA4: - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ov29_0234EB28 - - arm_func_start ov29_0234EBAC -ov29_0234EBAC: ; 0x0234EBAC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - add r0, r5, #0x10 - mov r2, #0xa - bl StrncpySimple - strb r4, [r5, #0x1a] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_0234EBAC - - arm_func_start ov29_0234EBCC -ov29_0234EBCC: ; 0x0234EBCC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _0234EC10 ; =0x02353538 - mov r6, #0 - mov r5, #1 -_0234EBDC: - ldr r0, [r4] - add r0, r0, r6, lsl #2 - add r0, r0, #0x12000 - ldr r7, [r0, #0xb28] - mov r0, r7 - bl EntityIsValid__0234EC14 - cmp r0, #0 - ldrne r0, [r7, #0xb4] - add r6, r6, #1 - strneb r5, [r0, #0x161] - cmp r6, #4 - blt _0234EBDC - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234EC10: .word 0x02353538 - arm_func_end ov29_0234EBCC - - arm_func_start EntityIsValid__0234EC14 -EntityIsValid__0234EC14: ; 0x0234EC14 - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end EntityIsValid__0234EC14 - - arm_func_start ov29_0234EC38 -ov29_0234EC38: ; 0x0234EC38 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - mov r7, r1 - mov r8, r0 - mov r0, r7 - mov r6, r2 - mov r5, r3 - bl EntityIsValid__0234EC14 - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r0, [sp, #0x20] - ldr r4, [r7, #0xb4] - cmp r0, #0 - ldrneb r0, [r4, #7] - cmpne r0, #0 - bne _0234EC9C - bl StoryRestrictionsEnabled - cmp r0, #0 - ldrneb r0, [sp, #0x20] - cmpne r0, #0 - beq _0234ECA4 - ldrb r0, [r4, #0x48] - bl JoinedAtRangeCheck2Veneer - cmp r0, #0 - beq _0234ECA4 -_0234EC9C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0234ECA4: - ldrb r0, [sp, #0x24] - cmp r0, #0 - beq _0234ECCC - ldrsh r0, [r4, #0xc] - bl GetActiveTeamMember - ldrsh r0, [r0, #8] - bl sub_02056264 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0234ECCC: - cmp r5, #0 - beq _0234ECE4 - mov r0, r7 - ldr r5, [r7, #0xb4] - bl ov29_02347100 - strb r0, [r5, #0x161] -_0234ECE4: - ldrsh r0, [r4, #0xc] - ldr r5, [r8, #0x88] - add sb, r8, #4 - add sl, sb, r5, lsl #5 - bl GetActiveTeamMember - ldrsh r0, [r0, #8] - bl CheckTeamMemberIdx__022F9C34 - strb r0, [sl, #4] - str r7, [sl, #0x1c] - str r6, [sb, r5, lsl #5] - ldrb r0, [r4, #0x161] - ldr r1, [r8, #0x88] - cmp r0, #0 - movne r2, #0 - moveq r2, #3 - add r1, r8, r1 - mov r0, #1 - strb r2, [r1, #0x84] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov29_0234EC38 - - arm_func_start ov29_0234ED30 -ov29_0234ED30: ; 0x0234ED30 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r1 - ldrb r1, [r6] - mov r7, r0 - mov r5, r2 - tst r1, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - mov r4, r3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r4, #0 - beq _0234ED84 - ldrb r0, [r6, #1] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0234ED84: - ldrb r0, [sp, #0x18] - cmp r0, #0 - beq _0234EDA4 - ldrsh r0, [r6, #8] - bl sub_02056264 - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_0234EDA4: - bl StoryRestrictionsEnabled - cmp r0, #0 - cmpne r4, #0 - beq _0234EDE4 - ldrb r0, [r6, #3] - bl JoinedAtRangeCheck2 - cmp r0, #0 - bne _0234EDDC - ldrb r0, [r6, #3] - cmp r0, #0xd6 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _0234EDE4 -_0234EDDC: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0234EDE4: - ldr r0, [r7, #0x88] - add r1, r7, #4 - add r2, r1, r0, lsl #5 - str r6, [r2, #0x1c] - str r5, [r1, r0, lsl #5] - ldr r0, [r7, #0x88] - mov r1, #0 - add r0, r7, r0 - strb r1, [r0, #0x84] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234ED30 - - arm_func_start ov29_0234EE10 -ov29_0234EE10: ; 0x0234EE10 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x98 - mov r7, r0 - mov r6, r1 - mov r4, #0 - bl ov29_0234DD90 - mov r3, #1 - ldr r1, [r7, #0xb4] - rsb r0, r3, #0x3e8 - strb r3, [r1, #0x161] - ldr ip, [r7, #0xb4] - ldrsh r2, [ip, #0x12] - ldrsh r1, [ip, #0x16] - add r1, r2, r1 - cmp r1, r0 - movgt r1, r0 - strh r1, [ip, #0x10] - bl ov29_0234EBCC - mov r1, #1 - add r0, sp, #0xc - mov r3, r1 - mov r2, #0 - str r1, [sp] - bl ov29_0234EA18 - mov r2, #1 - str r2, [sp] - str r2, [sp, #4] - add r0, sp, #0xc - mov r1, r7 - rsb r2, r2, #0x3e8 - mov r3, #0 - bl ov29_0234EB28 - cmp r0, #0 - blt _0234EEAC - add r2, sp, #0x10 - add r0, r2, r0, lsl #5 - mov r1, r6 - mov r2, #0x4e - bl ov29_0234EBAC -_0234EEAC: - mov r2, #0 - add r0, sp, #0xc - mov r3, r2 - mov r1, #2 - bl ov31_02388114 - ldr r1, _0234EF20 ; =0x023533B0 - str r0, [sp, #8] - bl ov31_02388444 - ldr r0, [sp, #8] - bl ov31_02388534 - ldr r0, [sp, #8] - bl ov31_023886D4 - cmp r0, #1 - moveq r4, #1 - beq _0234EEFC - cmp r0, #3 - bne _0234EEFC - ldr r0, [sp, #8] - bl ov31_023886DC - mov r5, r0 -_0234EEFC: - add r0, sp, #8 - bl ov31_02388714 - bl ov29_0234DDB0 - cmp r4, #0 - movne r0, #0 - addeq r0, sp, #0x2c - ldreq r0, [r0, r5, lsl #5] - add sp, sp, #0x98 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234EF20: .word 0x023533B0 - arm_func_end ov29_0234EE10 - - arm_func_start ov29_0234EF24 -ov29_0234EF24: ; 0x0234EF24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x98 - mov r6, #0 - mov sl, r0 - mov sb, r1 - bl ov29_0234DD90 - add r0, sp, #0xc - mov r1, r6 - bl ov29_0234E9E8 - mov r7, r6 - mov r5, #1 - mov r4, r6 - add fp, sp, #0xc - b _0234EF7C -_0234EF5C: - str r5, [sp] - str r4, [sp, #4] - ldr r1, [sl, r7, lsl #2] - mov r0, fp - mov r2, r7 - mov r3, r4 - bl ov29_0234EB28 - add r7, r7, #1 -_0234EF7C: - cmp r7, sb - blt _0234EF5C - mov r2, #0 - add r0, sp, #0xc - mov r3, r2 - mov r1, #2 - bl ov31_02388114 - ldr r1, _0234F004 ; =0x023533B0 - str r0, [sp, #8] - bl ov31_02388444 - ldr r0, [sp, #8] - bl ov31_02388534 - ldr r0, [sp, #8] - bl ov31_023886D4 - cmp r0, #1 - moveq r6, #1 - beq _0234EFD4 - cmp r0, #3 - bne _0234EFD4 - ldr r0, [sp, #8] - bl ov31_023886DC - mov r8, r0 -_0234EFD4: - add r0, sp, #8 - bl ov31_02388714 - bl ov29_0234DDB0 - mov r0, #0xa - mov r1, #0x62 - bl ov29_022EA370 - cmp r6, #0 - movne r0, #0 - addeq r0, sp, #0x2c - ldreq r0, [r0, r8, lsl #5] - add sp, sp, #0x98 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234F004: .word 0x023533B0 - arm_func_end ov29_0234EF24 - - arm_func_start ov29_0234F008 -ov29_0234F008: ; 0x0234F008 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - mov r4, #0 - mov r7, r0 - mov r6, r1 - mov r1, r4 - mov r0, #8 - mov r5, r2 - bl ov29_022EA428 - ldr r0, _0234F1D8 ; =0x0235352C - ldr r0, [r0] - ldr r0, [r0, #0x24] - bl sub_0200B3D4 - mov r0, #0xe - bl AdvanceFrame - b _0234F1A0 -_0234F048: - mov r0, #1 - bl ov29_022E8834 - bl ov29_022E8768 - mov r8, #0xe - b _0234F064 -_0234F05C: - mov r0, r8 - bl AdvanceFrame -_0234F064: - bl ov29_022E8848 - cmp r0, #0 - beq _0234F05C - mov r1, r7 - mov r3, r6 - mov r0, #2 - mov r2, #0 - bl ShowKeyboard - mov r0, #0 - bl ov29_022E8834 - mov r8, #0xe -_0234F090: - bl GetKeyboardStatus - cmp r0, #3 - bne _0234F0C0 - mov r0, r7 - mov r1, #0xa - bl MemZero - bl GetKeyboardStringResult - mov r1, r0 - mov r0, r7 - mov r2, #0xa - bl StrncpySimple - b _0234F0CC -_0234F0C0: - mov r0, r8 - bl AdvanceFrame - b _0234F090 -_0234F0CC: - mov r0, #1 - bl ov29_022E87FC - bl ov29_022E8708 - mov r8, #0xe - b _0234F0E8 -_0234F0E0: - mov r0, r8 - bl AdvanceFrame -_0234F0E8: - bl ov29_022E8810 - cmp r0, #0 - beq _0234F0E0 - mov r8, #0xe -_0234F0F8: - bl sub_02037468 - cmp r0, #0 - bne _0234F110 - mov r0, r8 - bl AdvanceFrame - b _0234F0F8 -_0234F110: - mov r0, #0xe - bl AdvanceFrame - mov r0, #0xe - bl AdvanceFrame - mov r0, #0 - bl ov29_022E87FC - mov r8, #0xe -_0234F12C: - bl ov29_022E87DC - cmp r0, #0 - bne _0234F144 - mov r0, r8 - bl AdvanceFrame - b _0234F12C -_0234F144: - add r0, sp, #0 - mov r1, #0x40 - bl MemZero - add r0, sp, #0 - mov r1, r7 - mov r2, #0xa - bl StrncpySimpleNoPadSafe - add r0, sp, #0 - bl sub_0203909C - mov r8, #0xe -_0234F16C: - mov r0, r8 - bl AdvanceFrame - bl sub_0203931C - cmp r0, #0 - moveq r4, #1 - beq _0234F18C - cmp r0, #1 - bne _0234F16C -_0234F18C: - bl sub_02039218 - cmp r0, #0 - beq _0234F18C - mov r0, #0xe - bl AdvanceFrame -_0234F1A0: - cmp r4, #0 - beq _0234F048 - mov r0, #0xe - bl AdvanceFrame - mov r0, #0xe - bl AdvanceFrame - cmp r5, #0 - beq _0234F1CC - mov r0, #0 - mov r1, r0 - bl ov29_022EA428 -_0234F1CC: - mov r0, #1 - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0234F1D8: .word 0x0235352C - arm_func_end ov29_0234F008 - - arm_func_start ov29_0234F1DC -ov29_0234F1DC: ; 0x0234F1DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _0234F214 ; =0x023533D0 - mov r4, r1 - bl sub_020348E4 - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - mov r2, #0 - bl ov29_0234F2CC - ldr r1, _0234F218 ; =0x02353834 - str r0, [r1] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234F214: .word 0x023533D0 -_0234F218: .word 0x02353834 - arm_func_end ov29_0234F1DC - - arm_func_start ov29_0234F21C -ov29_0234F21C: ; 0x0234F21C - stmdb sp!, {r3, lr} - ldr r0, _0234F244 ; =0x02353834 - ldr r0, [r0] - bl ov29_0234F304 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl ov29_0234F77C - mov r0, #4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234F244: .word 0x02353834 - arm_func_end ov29_0234F21C - - arm_func_start ov29_0234F248 -ov29_0234F248: ; 0x0234F248 - ldr ip, _0234F254 ; =ov29_0234F3F4 - ldr r0, _0234F258 ; =0x02353834 - bx ip - .align 2, 0 -_0234F254: .word ov29_0234F3F4 -_0234F258: .word 0x02353834 - arm_func_end ov29_0234F248 - - arm_func_start ov29_0234F25C -ov29_0234F25C: ; 0x0234F25C - stmdb sp!, {r3, lr} - mov r2, #1 - bl ov29_0234F2CC - ldr r1, _0234F274 ; =0x02353834 - str r0, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234F274: .word 0x02353834 - arm_func_end ov29_0234F25C - - arm_func_start ov29_0234F278 -ov29_0234F278: ; 0x0234F278 - ldr r0, _0234F288 ; =0x02353834 - ldr ip, _0234F28C ; =ov29_0234F304 - ldr r0, [r0, #4] - bx ip - .align 2, 0 -_0234F288: .word 0x02353834 -_0234F28C: .word ov29_0234F304 - arm_func_end ov29_0234F278 - - arm_func_start ov29_0234F290 -ov29_0234F290: ; 0x0234F290 - stmdb sp!, {r3, lr} - ldr r0, _0234F2B4 ; =0x02353834 - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0203083C - ldmia sp!, {r3, pc} - .align 2, 0 -_0234F2B4: .word 0x02353834 - arm_func_end ov29_0234F290 - - arm_func_start ov29_0234F2B8 -ov29_0234F2B8: ; 0x0234F2B8 - ldr ip, _0234F2C4 ; =ov29_0234F3F4 - ldr r0, _0234F2C8 ; =0x02353838 - bx ip - .align 2, 0 -_0234F2C4: .word ov29_0234F3F4 -_0234F2C8: .word 0x02353838 - arm_func_end ov29_0234F2B8 - - arm_func_start ov29_0234F2CC -ov29_0234F2CC: ; 0x0234F2CC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r0, #0xc - mov r1, #8 - mov r4, r2 - bl MemAlloc - strb r6, [r0] - strb r5, [r0, #1] - mvn r1, #1 - strb r1, [r0, #2] - mov r1, #0 - stmib r0, {r1, r4} - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov29_0234F2CC - - arm_func_start ov29_0234F304 -ov29_0234F304: ; 0x0234F304 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xa4 - mov r4, r0 - ldr r0, [r4, #4] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0234F3D4 -_0234F320: ; jump table - b _0234F334 ; case 0 - b _0234F398 ; case 1 - b _0234F3CC ; case 2 - b _0234F3D4 ; case 3 - b _0234F3D4 ; case 4 -_0234F334: - ldr r0, _0234F3E0 ; =0x000008DD - mov r1, #0x10 - str r1, [sp, #0x18] - strh r0, [sp, #0x14] - ldr r0, [r4, #8] - cmp r0, #0 - movne r1, #4 - strne r1, [r4, #4] - ldrne r0, _0234F3E4 ; =0x023533E0 - movne r1, #0x800 - bne _0234F374 - ldr r0, [r4, #4] - ldr r1, _0234F3E8 ; =0x00001813 - add r0, r0, #1 - str r0, [r4, #4] - ldr r0, _0234F3EC ; =0x023533C0 -_0234F374: - str r4, [sp] - mov ip, #0 - str ip, [sp, #4] - ldr r3, _0234F3F0 ; =ov29_0234F430 - add r2, sp, #0xc - str ip, [sp, #8] - bl sub_020305E4 - strb r0, [r4, #2] - b _0234F3D4 -_0234F398: - ldrsb r0, [r4, #2] - bl sub_020282F4 - add r0, r0, #5 - cmp r0, #1 - bhi _0234F3D4 - ldrsb r0, [r4, #2] - bl sub_020308A0 - mvn r0, #1 - strb r0, [r4, #2] - ldr r0, [r4, #4] - add r0, r0, #1 - str r0, [r4, #4] - b _0234F3D4 -_0234F3CC: - mov r0, #1 - b _0234F3D8 -_0234F3D4: - mov r0, #0 -_0234F3D8: - add sp, sp, #0xa4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0234F3E0: .word 0x000008DD -_0234F3E4: .word 0x023533E0 -_0234F3E8: .word 0x00001813 -_0234F3EC: .word 0x023533C0 -_0234F3F0: .word ov29_0234F430 - arm_func_end ov29_0234F304 - - arm_func_start ov29_0234F3F4 -ov29_0234F3F4: ; 0x0234F3F4 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldrsb r0, [r0, #2] - mvn r1, #1 - cmp r0, r1 - beq _0234F41C - bl sub_020308A0 -_0234F41C: - ldr r0, [r4] - bl MemFree - mov r0, #0 - str r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end ov29_0234F3F4 - - arm_func_start ov29_0234F430 -ov29_0234F430: ; 0x0234F430 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xbc - mov r4, r1 - ldrb r1, [r4] - mov r5, r0 - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _0234F718 -_0234F450: ; jump table - b _0234F718 ; case 0 - b _0234F508 ; case 1 - b _0234F460 ; case 2 - b _0234F6F8 ; case 3 -_0234F460: - add r0, sp, #4 - bl sub_0204F1B4 - ldrsb r0, [sp, #4] - bl sub_0205B77C - mov r6, r0 - ldr r3, _0234F764 ; =0x023533F0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - ldrb r0, [r4, #1] - bl DungeonGoesUp - cmp r0, #0 - movne r2, #1 - ldrb r1, [r6, #5] - mvneq r2, #0 - add r4, sp, #8 - mul r2, r1, r2 - str r2, [sp, #0x2c] - ldr r2, _0234F768 ; =0x023533F8 - add r0, sp, #0x58 - mov r1, #0x64 - mov r3, #0 - str r4, [sp] - bl PreprocessString - add r3, sp, #0x58 - mov r0, r5 - mov r1, #0x15 - mov r2, #0x13 - bl sub_02026214 - mov r2, #0 - add r0, sp, #0x58 - mov r3, r2 - mov r1, #0x64 - str r2, [sp] - bl sub_02061DC8 - add r3, sp, #0x58 - mov r0, r5 - mov r1, #0x3c - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F508: - ldrb r0, [r4, #1] - bl DungeonRequestsDoneWrapper - cmp r0, #0 - bne _0234F598 - ldrb r0, [r4, #1] - cmp r0, #0x49 - blo _0234F578 - cmp r0, #0x56 - bhi _0234F578 - ldr r0, _0234F76C ; =0x02353538 - ldr r0, [r0] - add r0, r0, #0x700 - ldrsh r0, [r0, #0x4c] - bl GetDungeonMode - cmp r0, #1 - beq _0234F578 - ldrb r0, [r4, #1] - add r0, r0, #0x278 - add r0, r0, #0x800 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromMessageId - mov r3, r0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F578: - ldr r0, _0234F770 ; =0x000008DE - bl StringFromMessageId - mov r3, r0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F598: - mov sb, #0 - mov r8, sb - mov r7, #0x13 - mvn r6, #0 - add fp, sp, #8 -_0234F5AC: - mov r0, r8, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov sl, r0 - ldrb r1, [sl, #4] - ldrb r0, [r4, #1] - cmp r1, r0 - bne _0234F6BC - ldrb r1, [sl] - cmp r1, #0 - cmpne r1, #4 - cmpne r1, #6 - beq _0234F6BC - ldrb r0, [sl, #1] - cmp r0, #0xc - moveq sb, #1 - beq _0234F6BC - cmp r1, #7 - mov r0, r5 - mov r1, #0xa - mov r2, r7 - bne _0234F610 - ldr r3, _0234F774 ; =0x02353404 - bl sub_02026214 - b _0234F618 -_0234F610: - ldr r3, _0234F764 ; =0x023533F0 - bl sub_02026214 -_0234F618: - ldrb r1, [sl, #1] - cmp r1, #3 - ldreqb r0, [sl, #2] - cmpeq r0, #3 - beq _0234F694 - cmp r1, #6 - ldreqb r0, [sl, #2] - cmpeq r0, #4 - beq _0234F694 - cmp r1, #8 - cmpne r1, #5 - beq _0234F694 - ldrb r0, [r4, #1] - bl DungeonGoesUp - cmp r0, #0 - movne r3, #1 - ldrb r2, [sl, #5] - moveq r3, r6 - add r0, sp, #0x58 - mul r3, r2, r3 - str r3, [sp, #0x2c] - ldr r2, _0234F768 ; =0x023533F8 - mov r1, #0x64 - mov r3, #0 - str fp, [sp] - bl PreprocessString - mov r0, r5 - mov r1, #0x15 - mov r2, r7 - add r3, sp, #0x58 - bl sub_02026214 -_0234F694: - mov r2, sl - add r0, sp, #0x58 - mov r1, #0x64 - bl sub_02061F44 - mov r0, r5 - mov r1, #0x3c - mov r2, r7 - add r3, sp, #0x58 - bl sub_02026214 - add r7, r7, #0xe -_0234F6BC: - add r8, r8, #1 - cmp r8, #8 - blt _0234F5AC - cmp sb, #0 - beq _0234F75C - cmp r7, #0x13 - bne _0234F75C - ldr r0, _0234F770 ; =0x000008DE - bl StringFromMessageId - mov r3, r0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F6F8: - ldr r0, _0234F770 ; =0x000008DE - bl StringFromMessageId - mov r3, r0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F718: - add r0, sp, #6 - bl sub_0204F10C - cmp r0, #0 - beq _0234F748 - ldrsh r0, [sp, #6] - bl sub_0204E114 - mov r3, r0 - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 - b _0234F75C -_0234F748: - ldr r3, _0234F778 ; =0x0235340C - mov r0, r5 - mov r1, #0xa - mov r2, #0x13 - bl sub_02026214 -_0234F75C: - add sp, sp, #0xbc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234F764: .word 0x023533F0 -_0234F768: .word 0x023533F8 -_0234F76C: .word 0x02353538 -_0234F770: .word 0x000008DE -_0234F774: .word 0x02353404 -_0234F778: .word 0x0235340C - arm_func_end ov29_0234F430 - - arm_func_start ov29_0234F77C -ov29_0234F77C: ; 0x0234F77C - stmdb sp!, {r3, lr} - ldr r0, _0234F7B8 ; =0x0235342C - bl sub_020348E4 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x10 - mov r1, #8 - bl MemAlloc - ldr r1, _0234F7BC ; =0x0235383C - mov r2, #0 - str r0, [r1, #4] - str r2, [r0, #0xc] - mov r0, #9 - str r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234F7B8: .word 0x0235342C -_0234F7BC: .word 0x0235383C - arm_func_end ov29_0234F77C - - arm_func_start ov29_0234F7C0 -ov29_0234F7C0: ; 0x0234F7C0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x98 - ldr r0, _0234F9C8 ; =0x0235383C - ldr r2, [r0, #4] - ldr r1, [r2, #0xc] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _0234F9BC -_0234F7E0: ; jump table - b _0234F7F0 ; case 0 - b _0234F8A0 ; case 1 - b _0234F8E8 ; case 2 - b _0234F9BC ; case 3 -_0234F7F0: - mov r3, #0 - mov r2, r3 -_0234F7F8: - ldr r1, [r0, #4] - add r1, r1, r3 - add r3, r3, #1 - strb r2, [r1, #1] - cmp r3, #8 - blt _0234F7F8 - mov r0, #0x1d - bl GetPerformanceFlagWithChecks - cmp r0, #0 - ldreq r4, _0234F9CC ; =0x0235343C - beq _0234F840 - ldr r4, _0234F9D0 ; =0x02353474 - bl ov29_023361D4 - cmp r0, #0 - ldrne r0, _0234F9C8 ; =0x0235383C - movne r1, #3 - ldrne r0, [r0, #4] - strneb r1, [r0, #6] -_0234F840: - ldr r1, _0234F9C8 ; =0x0235383C - mov r0, #1 - ldr r1, [r1, #4] - add r1, r1, #1 - str r1, [sp, #0x60] - bl Arm9LoadUnkFieldNa0x2029EC8 - str r0, [sp] - ldr lr, _0234F9D4 ; =0x000008B9 - mov ip, #0x10 - ldr r0, _0234F9D8 ; =0x0235341C - ldr r1, _0234F9DC ; =0x00001A33 - add r2, sp, #0 - mov r3, r4 - strh lr, [sp, #8] - str ip, [sp, #0xc] - bl sub_0202A5CC - ldr r1, _0234F9C8 ; =0x0235383C - ldr r2, [r1, #4] - strb r0, [r2] - ldr r1, [r1, #4] - ldr r0, [r1, #0xc] - add r0, r0, #1 - str r0, [r1, #0xc] - b _0234F9BC -_0234F8A0: - ldrsb r0, [r2] - bl sub_0202AB40 - cmp r0, #0 - beq _0234F8D0 - ldr r0, _0234F9C8 ; =0x0235383C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl sub_0202AB80 - and r1, r0, #0xff - mov r0, #1 - bl Arm9StoreUnkFieldNa0x2029ED8 - b _0234F9BC -_0234F8D0: - ldr r0, _0234F9C8 ; =0x0235383C - ldr r1, [r0, #4] - ldr r0, [r1, #0xc] - add r0, r0, #1 - str r0, [r1, #0xc] - b _0234F9BC -_0234F8E8: - add r1, r1, #1 - str r1, [r2, #0xc] - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl sub_0202ABB0 - ldr r1, _0234F9C8 ; =0x0235383C - cmp r0, #8 - str r0, [r1, #8] - addls pc, pc, r0, lsl #2 - b _0234F9B4 -_0234F910: ; jump table - b _0234F934 ; case 0 - b _0234F940 ; case 1 - b _0234F94C ; case 2 - b _0234F95C ; case 3 - b _0234F96C ; case 4 - b _0234F988 ; case 5 - b _0234F990 ; case 6 - b _0234F998 ; case 7 - b _0234F9A4 ; case 8 -_0234F934: - ldr r0, _0234F9E0 ; =ov29_0234F77C - bl ov30_023833D8 - b _0234F9B4 -_0234F940: - ldr r0, _0234F9E0 ; =ov29_0234F77C - bl ov30_02383434 - b _0234F9B4 -_0234F94C: - mov r0, #2 - str r0, [r1] - mov r0, #4 - b _0234F9C0 -_0234F95C: - mov r0, #3 - str r0, [r1] - mov r0, #4 - b _0234F9C0 -_0234F96C: - ldr r0, _0234F9E4 ; =0x02353538 - ldr r1, [r0] - add r0, r1, #0x700 - ldrsb r0, [r0, #0x98] - ldrb r1, [r1, #0x748] - bl ov29_0234F1DC - b _0234F9B4 -_0234F988: - bl ov31_02388E88 - b _0234F9B4 -_0234F990: - bl ov31_0238941C - b _0234F9B4 -_0234F998: - mov r0, #7 - str r0, [r1] - b _0234F9B4 -_0234F9A4: - bl ov30_02382820 - ldr r0, _0234F9C8 ; =0x0235383C - mov r1, #8 - str r1, [r0] -_0234F9B4: - mov r0, #3 - b _0234F9C0 -_0234F9BC: - mov r0, #1 -_0234F9C0: - add sp, sp, #0x98 - ldmia sp!, {r4, pc} - .align 2, 0 -_0234F9C8: .word 0x0235383C -_0234F9CC: .word 0x0235343C -_0234F9D0: .word 0x02353474 -_0234F9D4: .word 0x000008B9 -_0234F9D8: .word 0x0235341C -_0234F9DC: .word 0x00001A33 -_0234F9E0: .word ov29_0234F77C -_0234F9E4: .word 0x02353538 - arm_func_end ov29_0234F7C0 - - arm_func_start ov29_0234F9E8 -ov29_0234F9E8: ; 0x0234F9E8 - stmdb sp!, {r3, lr} - ldr r0, _0234FA20 ; =0x0235383C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl sub_0202AABC - ldr r0, _0234FA20 ; =0x0235383C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0234FA20 ; =0x0235383C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0234FA20: .word 0x0235383C - arm_func_end ov29_0234F9E8 - - arm_func_start ov29_0234FA24 -ov29_0234FA24: ; 0x0234FA24 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _0234FAE4 ; =0x0235383C - mov r1, #9 - str r1, [r0] - bl ov29_0234F77C - mov r0, #0 - ldr r5, _0234FAE8 ; =0x0238280C - mov r7, #9 - ldr r4, _0234FAE4 ; =0x0235383C - strh r0, [r5] - mov sb, r0 - mov fp, #1 - mov r8, r0 - mov r6, r7 - mov sl, #0x62 -_0234FA60: - mov r0, sl - bl AdvanceFrame - ldrh r0, [r5] - cmp r0, #0 - beq _0234FA8C - ldrh r1, [r5] - mov r0, sb - mov r2, fp - bl DisplayMessage - strh r8, [r5] - bl ov29_0234F77C -_0234FA8C: - ldr r0, [r4] - cmp r0, #8 - beq _0234FADC - cmp r0, #3 - bne _0234FAB8 - mov r0, #0 - mov r1, r0 - bl OpenMessageLog - bl ov29_0234F77C - str r7, [r4] - b _0234FA60 -_0234FAB8: - cmp r0, #2 - bne _0234FA60 - mov r0, #1 - bl ov29_022F0C98 - mov r0, #0x62 - bl AdvanceFrame - bl ov29_0234F77C - str r6, [r4] - b _0234FA60 -_0234FADC: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0234FAE4: .word 0x0235383C -_0234FAE8: .word 0x0238280C - arm_func_end ov29_0234FA24 - - arm_func_start ov29_0234FAEC -ov29_0234FAEC: ; 0x0234FAEC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov29_0234DDA0 - cmp r0, #0 - bne _0234FB30 - bl ov29_0234DD90 - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov31_0238647C - mov r4, r0 - bl ov29_0234DDB0 - b _0234FB48 -_0234FB30: - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl ov31_0238647C - mov r4, r0 -_0234FB48: - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov29_0234FAEC - - arm_func_start ov29_0234FB50 -ov29_0234FB50: ; 0x0234FB50 - ldr ip, _0234FB5C ; =ov29_02300818 - mov r1, #1 - bx ip - .align 2, 0 -_0234FB5C: .word ov29_02300818 - arm_func_end ov29_0234FB50 - - arm_func_start ov29_0234FB60 -ov29_0234FB60: ; 0x0234FB60 - stmdb sp!, {r4, lr} - movs r4, r0 - moveq r0, #0 - beq _0234FB84 - ldr r0, [r4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff -_0234FB84: - cmp r0, #0 - beq _0234FBC4 - ldr r0, [r4, #0xb4] - ldrb r1, [r0, #7] - cmp r1, #0 - ldreqb r1, [r0, #6] - cmpeq r1, #0 - bne _0234FBC4 - bl IsExperienceLocked - cmp r0, #0 - bne _0234FBC4 - mov r0, r4 - mov r1, #1 - bl ov29_02300818 - cmp r0, #0 - beq _0234FBCC -_0234FBC4: - mov r0, #0 - ldmia sp!, {r4, pc} -_0234FBCC: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov29_0234FB60 - - arm_func_start ov29_0234FBD4 -ov29_0234FBD4: ; 0x0234FBD4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - ldr r4, _0234FC18 ; =0x02353538 - b _0234FC08 -_0234FBE4: - ldr r0, [r4] - add r0, r0, r5, lsl #2 - add r0, r0, #0x12000 - ldr r0, [r0, #0xb28] - bl ov29_0234FB60 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - add r5, r5, #1 -_0234FC08: - cmp r5, #4 - blt _0234FBE4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0234FC18: .word 0x02353538 - arm_func_end ov29_0234FBD4 - - arm_func_start ov29_0234FC1C -ov29_0234FC1C: ; 0x0234FC1C - stmdb sp!, {r4, lr} - ldr r1, _0234FC4C ; =0x02353848 - mov r4, r0 - ldr r0, [r1] - ldrh r0, [r0, #2] - bl StringFromMessageId - mov r3, r0 - mov r0, r4 - mov r1, #4 - mov r2, #0 - bl sub_02026214 - ldmia sp!, {r4, pc} - .align 2, 0 -_0234FC4C: .word 0x02353848 - arm_func_end ov29_0234FC1C - - arm_func_start ov29_0234FC50 -ov29_0234FC50: ; 0x0234FC50 - stmdb sp!, {r4, lr} - ldr r1, _0234FC9C ; =0x02353848 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #4 - mov r1, #8 - bl MemAlloc - ldr r2, _0234FC9C ; =0x02353848 - ldr r1, _0234FCA0 ; =ov29_0234FC1C - str r0, [r2] - strh r4, [r0, #2] - ldr r0, _0234FCA4 ; =0x023534B4 - bl sub_0202F8C4 - ldr r1, _0234FC9C ; =0x02353848 - ldr r1, [r1] - strb r0, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_0234FC9C: .word 0x02353848 -_0234FCA0: .word ov29_0234FC1C -_0234FCA4: .word 0x023534B4 - arm_func_end ov29_0234FC50 - - arm_func_start ov29_0234FCA8 -ov29_0234FCA8: ; 0x0234FCA8 - stmdb sp!, {r3, lr} - ldr r0, _0234FCF8 ; =0x02353848 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl sub_0202F954 - ldr r0, _0234FCF8 ; =0x02353848 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F8FC - ldr r0, _0234FCF8 ; =0x02353848 - ldr r0, [r0] - bl MemFree - ldr r0, _0234FCF8 ; =0x02353848 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0234FCF8: .word 0x02353848 - arm_func_end ov29_0234FCA8 - ; 0x0234FCFC - - .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0xFC, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF - .byte 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x69, 0x63, 0x20, 0x66, 0x69, 0x6C, 0x65 - .byte 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x4E, 0x54 - .byte 0x2F, 0x74, 0x65, 0x5F, 0x64, 0x69, 0x63, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x46, 0x4F, 0x4E, 0x54 - .byte 0x2F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x6B, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xFF - .byte 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x4F, 0x4E, 0x54 - .byte 0x2F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x73, 0x6B, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00 - .byte 0x46, 0x4F, 0x4E, 0x54, 0x2F, 0x74, 0x65, 0x5F, 0x73, 0x64, 0x69, 0x63, 0x2E, 0x62, 0x69, 0x6E - .byte 0x00, 0x00, 0x00, 0x00, 0xF9, 0x01, 0xEC, 0x01, 0xED, 0x01, 0x88, 0x00, 0xE0, 0x01, 0xE8, 0x01 - .byte 0xF3, 0x01, 0x88, 0x00, 0xEA, 0x01, 0xF7, 0x01, 0xEE, 0x01, 0x88, 0x00, 0xEB, 0x01, 0xF2, 0x01 - .byte 0xE2, 0x01, 0x88, 0x00, 0xE3, 0x01, 0xE4, 0x01, 0xE5, 0x01, 0xF5, 0x01, 0xE9, 0x01, 0xF4, 0x01 - .byte 0xF6, 0x01, 0x88, 0x00, 0xEF, 0x01, 0xF0, 0x01, 0xF1, 0x01, 0x88, 0x00, 0xD8, 0x01, 0xD9, 0x01 - .byte 0xDA, 0x01, 0x88, 0x00, 0xDD, 0x01, 0xDE, 0x01, 0xDF, 0x01, 0xE1, 0x01, 0xDB, 0x01, 0xDC, 0x01 - .byte 0xE6, 0x01, 0xE7, 0x01, 0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x01 - .byte 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 - .byte 0x19, 0x00, 0x00, 0x08, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 - .byte 0x6C, 0x01, 0x6F, 0x01, 0x72, 0x01, 0x75, 0x01, 0x78, 0x01, 0x7B, 0x01, 0x7E, 0x01, 0x81, 0x01 - .byte 0x84, 0x01, 0x87, 0x01, 0x8A, 0x01, 0x8D, 0x01, 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 - .byte 0x48, 0x49, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x4C, 0x4D, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06 - .byte 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x29, 0x02, 0x00, 0x0B - .byte 0x29, 0x02, 0x00, 0x0C, 0x29, 0x02, 0x00, 0x0D, 0x29, 0x02, 0x00, 0x0E, 0x84, 0x04, 0x00, 0x01 - .byte 0x85, 0x04, 0x00, 0x09, 0x86, 0x04, 0x00, 0x04, 0x87, 0x04, 0x00, 0x05, 0x88, 0x04, 0x00, 0x05 - .byte 0x83, 0x04, 0x00, 0x09, 0x5E, 0x00, 0x00, 0x09, 0x35, 0x01, 0x00, 0x10, 0xE1, 0x01, 0x00, 0x11 - .byte 0x59, 0x01, 0x00, 0x12, 0xF9, 0x01, 0x00, 0x13, 0x40, 0x01, 0x00, 0x14, 0x29, 0x00, 0x01, 0x06 - .byte 0x6D, 0x00, 0x02, 0x06, 0x9F, 0x01, 0x04, 0x06, 0x52, 0x01, 0x05, 0x06, 0x51, 0x01, 0x06, 0x06 - .byte 0xE4, 0x01, 0x07, 0x06, 0x8D, 0x00, 0x08, 0x06, 0x8B, 0x00, 0x09, 0x06, 0x07, 0x02, 0x0A, 0x06 - .byte 0x4A, 0x01, 0x0B, 0x06, 0x28, 0x02, 0x0C, 0x06, 0x0D, 0x02, 0x0C, 0x06, 0x28, 0x00, 0x0D, 0x06 - .byte 0xE3, 0x01, 0x0E, 0x06, 0x18, 0x03, 0x0F, 0x06, 0x71, 0x01, 0x10, 0x06, 0xDE, 0x03, 0x11, 0x06 - .byte 0xEF, 0x01, 0x12, 0x06, 0x42, 0x01, 0x13, 0x06, 0x33, 0x00, 0x14, 0x06, 0x32, 0x00, 0x15, 0x06 - .byte 0x08, 0x02, 0x16, 0x06, 0x82, 0x00, 0x17, 0x06, 0x9A, 0x01, 0x18, 0x06, 0x99, 0x01, 0x19, 0x06 - .byte 0x9B, 0x01, 0x1A, 0x06, 0x10, 0x02, 0x1B, 0x06, 0x0E, 0x02, 0x1C, 0x06, 0x15, 0x02, 0x1D, 0x06 - .byte 0x18, 0x00, 0x1F, 0x06, 0xFA, 0x01, 0x20, 0x06, 0xFD, 0x01, 0x21, 0x06, 0x4E, 0x01, 0x22, 0x06 - .byte 0xF6, 0x00, 0x23, 0x06, 0xD7, 0x01, 0x24, 0x06, 0x6A, 0x00, 0x25, 0x06, 0xDF, 0x01, 0x26, 0x06 - .byte 0x0B, 0x02, 0x27, 0x06, 0x19, 0x01, 0x28, 0x06, 0x9E, 0x01, 0x29, 0x06, 0xE6, 0x01, 0x2A, 0x06 - .byte 0x83, 0x04, 0x1E, 0x06, 0x0A, 0x02, 0x31, 0x06, 0x0C, 0x02, 0x32, 0x06, 0xA8, 0x03, 0x33, 0x0A - .byte 0x8E, 0x03, 0x34, 0x0A, 0x2E, 0x04, 0x35, 0x0A, 0x60, 0x00, 0x03, 0x06, 0x9F, 0x01, 0x2B, 0x06 - .byte 0x90, 0x00, 0x2C, 0x06, 0x0F, 0x02, 0x2E, 0x06, 0x11, 0x02, 0x2F, 0x06, 0xA0, 0x01, 0x2D, 0x06 - .byte 0x97, 0x00, 0x30, 0x06, 0xF1, 0x01, 0x36, 0x06, 0x58, 0x00, 0x37, 0x06, 0xF5, 0x01, 0x38, 0x06 - .byte 0xEA, 0x00, 0x39, 0x06, 0x93, 0x01, 0x3A, 0x06, 0xA1, 0x01, 0x3B, 0x06, 0x4A, 0x01, 0x3C, 0x06 - .byte 0x03, 0x02, 0x3D, 0x06, 0x8A, 0x01, 0x3E, 0x06, 0x28, 0x02, 0x3F, 0x06, 0x4E, 0x01, 0x40, 0x06 - .byte 0x4D, 0x01, 0x41, 0x06, 0x4F, 0x04, 0x42, 0x06, 0x18, 0x00, 0x43, 0x06, 0xEE, 0x01, 0x44, 0x06 - .byte 0x59, 0x00, 0x45, 0x06, 0x5D, 0x00, 0x46, 0x06, 0x5D, 0x00, 0x47, 0x06, 0x5D, 0x00, 0x48, 0x06 - .byte 0xC7, 0x01, 0x49, 0x06, 0x06, 0x02, 0x4A, 0x06, 0x43, 0x01, 0x4B, 0x06, 0x74, 0x01, 0x4C, 0x06 - .byte 0xFF, 0x01, 0x4D, 0x06, 0x5F, 0x01, 0x4E, 0x06, 0x9F, 0x01, 0x4F, 0x06, 0x9F, 0x01, 0x50, 0x06 - .byte 0x9F, 0x01, 0x51, 0x06, 0x9F, 0x01, 0x52, 0x06, 0x9F, 0x01, 0x53, 0x06, 0x9F, 0x01, 0x54, 0x06 - .byte 0x9F, 0x01, 0x55, 0x06, 0x28, 0x00, 0x56, 0x0A, 0xE3, 0x01, 0x57, 0x0A, 0x18, 0x03, 0x58, 0x0A - .byte 0x71, 0x01, 0x59, 0x0A, 0xDE, 0x03, 0x5A, 0x0A, 0xEF, 0x01, 0x5B, 0x0A, 0x42, 0x01, 0x5C, 0x0A - .byte 0x33, 0x00, 0x5D, 0x0A, 0x32, 0x00, 0x5E, 0x0A, 0x42, 0x01, 0x5F, 0x0A, 0x43, 0x00, 0x60, 0x0A - .byte 0xA3, 0x03, 0x61, 0x0A, 0x3A, 0x01, 0x62, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x3A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x2E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x1E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x36, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x83, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x85, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x87, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x89, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xF4, 0x00, 0x35, 0x02, 0x4C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x68, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x6C, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x70, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x74, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x7C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x80, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x84, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x84, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x88, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x40, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x44, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x48, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x38, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x3C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x90, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x94, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x98, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x9C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xA0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xAC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xB0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xBC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xC0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xCC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xDC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xE0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xEC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xF0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xF4, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xF8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xFC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x00, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x04, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x08, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x10, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x18, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x1C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x20, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x24, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x28, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x2C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x30, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x34, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x38, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x3C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x18, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x1C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x20, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x24, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD8, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xDC, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xE0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xE4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xE8, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xEC, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xF0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xF4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xF8, 0xFD, 0x34, 0x02, 0xFC, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x04, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x0C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x14, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x1C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x24, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x2C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x34, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x28, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x2C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x30, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x34, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x44, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x4C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x54, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x5C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x64, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x14, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x6C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x74, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x7C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x84, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x8C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x94, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x9C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xA4, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xAC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xB4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xBC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xC4, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xCC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xD4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xDC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xE4, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xEC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xFC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x0C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x14, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x1C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x24, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x2C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x34, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x3C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x44, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x4C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x54, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x5C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x64, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x6C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x74, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x7C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x84, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x8C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0x94, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0x9C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xA4, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xAC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xB4, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xBC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xC4, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xCC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xD4, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xDC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xE4, 0x02, 0x35, 0x02 - .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x40, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x44, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x48, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x54, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x58, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x5C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x60, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x64, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x68, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x6C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x70, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x74, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x4C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x7C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x54, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x58, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x60, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x64, 0xFF, 0x34, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x5C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x80, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x84, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x88, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0x90, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0x94, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x98, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x9C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xA0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xA4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA8, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xAC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xB0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xB4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB8, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xBC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xC0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xC4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC8, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xCC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xD0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xD4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD8, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xDC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xE0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 - .byte 0xE4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE8, 0x00, 0x35, 0x02 - .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xEC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 - .byte 0xF4, 0x00, 0x35, 0x02, 0xF0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4D, 0x2F, 0x6D, 0x61, 0x6E, 0x70 - .byte 0x75, 0x5F, 0x73, 0x75, 0x2E, 0x73, 0x6D, 0x61, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xA2, 0x01, 0xA3, 0x01, 0xA4, 0x01, 0xA5, 0x01, 0x44, 0x47, 0x5F, 0x56 - .byte 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x50, 0x52, 0x49, 0x54, 0x45, 0x5F, 0x4E, 0x41, 0x4D, 0x45, 0x3A - .byte 0x25, 0x64, 0x0A, 0x00, 0xD0, 0x01, 0x20, 0x00, 0xD1, 0x01, 0x40, 0x00, 0xD2, 0x01, 0x80, 0x00 - .byte 0xD4, 0x01, 0x20, 0x00, 0xD5, 0x01, 0x40, 0x00, 0xD6, 0x01, 0x00, 0x01, 0xDA, 0x01, 0x20, 0x00 - .byte 0xDB, 0x01, 0x20, 0x00, 0xDC, 0x01, 0x20, 0x00, 0xDD, 0x01, 0x20, 0x00, 0xDE, 0x01, 0x80, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x06, 0x03 - .byte 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x11, 0x03, 0x00, 0x3F, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x3F - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x01, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x01, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xB8, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x79, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7A, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x7C, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x7E, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7F, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xBA, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBB, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C - .byte 0x41, 0x4E, 0x43, 0x45, 0x2F, 0x6D, 0x61, 0x70, 0x70, 0x61, 0x5F, 0x74, 0x2E, 0x62, 0x69, 0x6E - .byte 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45 - .byte 0x2F, 0x6D, 0x61, 0x70, 0x70, 0x61, 0x5F, 0x79, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00 - .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45, 0x2F, 0x6D, 0x61, 0x70 - .byte 0x70, 0x61, 0x5F, 0x73, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14 - .byte 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFC, 0xFF - .byte 0xF8, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF - .byte 0xF0, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF - .byte 0xF0, 0xFF, 0xF8, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xD1, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD2, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0xD6, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xEA, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x7C, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00 - .byte 0x02, 0x06, 0x04, 0x00, 0x02, 0x00, 0x04, 0x06, 0x04, 0x00, 0x06, 0x02, 0x04, 0x02, 0x06, 0x00 - .byte 0x06, 0x02, 0x00, 0x04, 0x06, 0x04, 0x02, 0x00, 0x00, 0x04, 0x02, 0x06, 0x00, 0x06, 0x02, 0x04 - .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF - .byte 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF - .byte 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01 - .byte 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 - .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00 - .byte 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00 - .byte 0x74, 0x19, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1B, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00 - .byte 0x94, 0x1C, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1B, 0x35, 0x02, 0x01, 0x00, 0xFF, 0xFF - .byte 0x74, 0x19, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1B, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x94, 0x1C, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1B, 0x35, 0x02, 0xFF, 0xFF, 0x01, 0x00 - .byte 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00 - .byte 0x02, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFE, 0xFF - .byte 0xFF, 0xFF, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF - .byte 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0xFE, 0xFF - .byte 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFE, 0xFF - .byte 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00 - .byte 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x63, 0x00, 0x63, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0xFE, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x03, 0x00 - .byte 0x01, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFE, 0xFF - .byte 0xFE, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x01, 0x00, 0x01, 0x00, 0xFD, 0xFF - .byte 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0xFF - .byte 0x03, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFE, 0xFF - .byte 0xFD, 0xFF, 0x02, 0x00, 0x02, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFE, 0xFF - .byte 0x03, 0x00, 0x02, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00, 0xFD, 0xFF - .byte 0x03, 0x00, 0x03, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00 - .byte 0xFF, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00 - .byte 0x01, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0xFE, 0xFF, 0x04, 0x00 - .byte 0x03, 0x00, 0x04, 0x00, 0xFD, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00 - .byte 0xFF, 0xFF, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0xFE, 0xFF, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00 - .byte 0xFD, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0xFC, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00 - .byte 0x01, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0x06, 0x00 - .byte 0x03, 0x00, 0x06, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0xFC, 0xFF, 0x06, 0x00 - .byte 0x05, 0x00, 0x06, 0x00, 0xFB, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00 - .byte 0xFF, 0xFF, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00 - .byte 0xFD, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00 - .byte 0xFB, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0xFA, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00 - .byte 0x01, 0x00, 0x08, 0x00, 0xFF, 0xFF, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0xFE, 0xFF, 0x08, 0x00 - .byte 0x03, 0x00, 0x08, 0x00, 0xFD, 0xFF, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFC, 0xFF, 0x08, 0x00 - .byte 0x05, 0x00, 0x08, 0x00, 0xFB, 0xFF, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFA, 0xFF, 0x08, 0x00 - .byte 0x07, 0x00, 0x08, 0x00, 0xF9, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00 - .byte 0xFF, 0xFF, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0xFE, 0xFF, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00 - .byte 0xFD, 0xFF, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0xFC, 0xFF, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00 - .byte 0xFB, 0xFF, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0xFA, 0xFF, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00 - .byte 0xF9, 0xFF, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0xF8, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00 - .byte 0x01, 0x00, 0x0A, 0x00, 0xFF, 0xFF, 0x0A, 0x00, 0x02, 0x00, 0x0A, 0x00, 0xFE, 0xFF, 0x0A, 0x00 - .byte 0x03, 0x00, 0x0A, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x04, 0x00, 0x0A, 0x00, 0xFC, 0xFF, 0x0A, 0x00 - .byte 0x05, 0x00, 0x0A, 0x00, 0xFB, 0xFF, 0x0A, 0x00, 0x06, 0x00, 0x0A, 0x00, 0xFA, 0xFF, 0x0A, 0x00 - .byte 0x07, 0x00, 0x0A, 0x00, 0xF9, 0xFF, 0x0A, 0x00, 0x08, 0x00, 0x0A, 0x00, 0xF8, 0xFF, 0x0A, 0x00 - .byte 0x63, 0x00, 0x63, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00 - .byte 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00 - .byte 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00 - .byte 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00 - .byte 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x09, 0x00, 0x04, 0x00, 0x04, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x07, 0x00 - .byte 0x07, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00 - .byte 0x05, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00 - .byte 0x03, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x0A, 0x00, 0x63, 0x00, 0x63, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFF, 0xFF - .byte 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0xFF, 0xFF, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0xFE, 0xFF, 0x04, 0x00, 0x02, 0x00 - .byte 0x04, 0x00, 0xFD, 0xFF, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xFF, 0xFF - .byte 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0xFE, 0xFF, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0xFD, 0xFF - .byte 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0xFC, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0xFF, 0xFF, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x02, 0x00 - .byte 0x06, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0xFC, 0xFF, 0x06, 0x00, 0x04, 0x00 - .byte 0x06, 0x00, 0xFB, 0xFF, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xFF, 0xFF - .byte 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xFD, 0xFF - .byte 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0xFB, 0xFF - .byte 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0xFA, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0xFF, 0xFF, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0xFE, 0xFF, 0x08, 0x00, 0x02, 0x00 - .byte 0x08, 0x00, 0xFD, 0xFF, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0xFC, 0xFF, 0x08, 0x00, 0x04, 0x00 - .byte 0x08, 0x00, 0xFB, 0xFF, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0xFA, 0xFF, 0x08, 0x00, 0x06, 0x00 - .byte 0x08, 0x00, 0xF9, 0xFF, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0xFF, 0xFF - .byte 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0xFE, 0xFF, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0xFD, 0xFF - .byte 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0xFC, 0xFF, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0xFB, 0xFF - .byte 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0xFA, 0xFF, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0xF9, 0xFF - .byte 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0xF8, 0xFF, 0x09, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0xFF, 0xFF, 0x0A, 0x00, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xFF, 0x0A, 0x00, 0x02, 0x00 - .byte 0x0A, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x03, 0x00, 0x0A, 0x00, 0xFC, 0xFF, 0x0A, 0x00, 0x04, 0x00 - .byte 0x0A, 0x00, 0xFB, 0xFF, 0x0A, 0x00, 0x05, 0x00, 0x0A, 0x00, 0xFA, 0xFF, 0x0A, 0x00, 0x06, 0x00 - .byte 0x0A, 0x00, 0xF9, 0xFF, 0x0A, 0x00, 0x07, 0x00, 0x0A, 0x00, 0xF8, 0xFF, 0x0A, 0x00, 0x08, 0x00 - .byte 0x0A, 0x00, 0xF7, 0xFF, 0x0A, 0x00, 0x09, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF - .byte 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x01, 0x00 - .byte 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0xFF - .byte 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0x02, 0x00 - .byte 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x01, 0x00, 0x01, 0x00, 0xFD, 0xFF, 0x01, 0x00, 0x03, 0x00 - .byte 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x01, 0x00 - .byte 0xFE, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0x02, 0x00 - .byte 0x02, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x02, 0x00 - .byte 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00 - .byte 0xFC, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x04, 0x00 - .byte 0xFC, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00 - .byte 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFC, 0xFF, 0x01, 0x00, 0x04, 0x00 - .byte 0xFC, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFC, 0xFF, 0xFE, 0xFF, 0x04, 0x00 - .byte 0xFC, 0xFF, 0xFE, 0xFF, 0x04, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x04, 0x00 - .byte 0xFC, 0xFF, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0x04, 0x00 - .byte 0xFC, 0xFF, 0xFD, 0xFF, 0x04, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x04, 0x00 - .byte 0xFC, 0xFF, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0x04, 0x00 - .byte 0xFB, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0x00, 0x00, 0x05, 0x00 - .byte 0xFB, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x05, 0x00 - .byte 0xFB, 0xFF, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFB, 0xFF, 0x01, 0x00, 0x05, 0x00 - .byte 0xFB, 0xFF, 0xFE, 0xFF, 0x05, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0x05, 0x00 - .byte 0xFB, 0xFF, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFB, 0xFF, 0x02, 0x00, 0x05, 0x00 - .byte 0xFB, 0xFF, 0xFD, 0xFF, 0x05, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0xFD, 0xFF, 0x05, 0x00 - .byte 0xFB, 0xFF, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFB, 0xFF, 0x03, 0x00, 0x05, 0x00 - .byte 0xFB, 0xFF, 0xFC, 0xFF, 0x05, 0x00, 0xFC, 0xFF, 0xFC, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0x05, 0x00 - .byte 0xFB, 0xFF, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFB, 0xFF, 0x04, 0x00, 0x05, 0x00 - .byte 0xFB, 0xFF, 0xFB, 0xFF, 0x05, 0x00, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0x05, 0x00 - .byte 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00 - .byte 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x31, 0x00, 0x2C, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x8B, 0x08, 0x8C, 0x08, 0x8D, 0x08, 0x8E, 0x08, 0x8F, 0x08, 0x90, 0x08 - .byte 0x91, 0x08, 0x92, 0x08, 0x93, 0x08, 0x94, 0x08, 0x95, 0x08, 0x96, 0x08, 0x97, 0x08, 0x98, 0x08 - .byte 0x99, 0x08, 0x9A, 0x08, 0x9B, 0x08, 0x9C, 0x08, 0x9D, 0x08, 0x9E, 0x08, 0x9F, 0x08, 0xA0, 0x08 - .byte 0xA1, 0x08, 0xA2, 0x08, 0xA3, 0x08, 0xA4, 0x08, 0xA5, 0x08, 0xA6, 0x08, 0xA7, 0x08, 0xA8, 0x08 - .byte 0xA9, 0x08, 0xAA, 0x08, 0x58, 0x00, 0x00, 0x00, 0x87, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x88, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x89, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x8A, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8B, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x8C, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8D, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x8E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8F, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x90, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x91, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x92, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x09, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00 - .byte 0x94, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x95, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x96, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x97, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x98, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x99, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x9A, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9B, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x9C, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0x9E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9F, 0x09, 0x00, 0x00, 0xE7, 0x03, 0x00, 0x00 - .byte 0xA0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xA2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xA4, 0x09, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0xA5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xA6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xA8, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA9, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xAA, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xAB, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xAC, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xAD, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xAE, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xAF, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xB0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xB2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xB4, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xB6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xB8, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB9, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xBA, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBB, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xBC, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBD, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xBE, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBF, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xC0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xC2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xC4, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xC6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 - .byte 0xC8, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00 - .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00 - .byte 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00 - .byte 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x00, 0x00 - .byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x00, 0x00 - .byte 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x00, 0x00 - .byte 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00 - .byte 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00 - .byte 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00 - .byte 0x40, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 - .byte 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF - .byte 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF - .byte 0x05, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF - .byte 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF - .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x16, 0x02, 0x08, 0x05, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x43, 0x53, 0x3A - .byte 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01 - .byte 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00 - .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0xDB, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xDC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xDB, 0x01, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 - .byte 0xDC, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xDB, 0x01, 0x00, 0x00 - .byte 0x01, 0x01, 0x00, 0x00, 0x6D, 0x6F, 0x76, 0x65, 0x3A, 0x00, 0x00, 0x00, 0x81, 0x45, 0x81, 0x45 - .byte 0x81, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 - .byte 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 - .byte 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 - .byte 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x02, 0x00, 0x02, 0x01, 0x02 - .byte 0x01, 0x02, 0x00, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01 - .byte 0x01, 0x02, 0x00, 0x02, 0x5B, 0x43, 0x53, 0x3A, 0x46, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D - .byte 0x00, 0x00, 0x00, 0x00, 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52 - .byte 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x5B, 0x4B, 0x5D, 0x0A - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07 - .byte 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 - .byte 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00 - .byte 0x0B, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00 - .byte 0x07, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00 - .byte 0x0A, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 - .byte 0x12, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x46, 0x4C, 0x56, 0x20, 0x3A, 0x20, 0x25, 0x64 - .byte 0x0A, 0x00, 0x00, 0x00, 0x41, 0x54, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .byte 0x44, 0x45, 0x46, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xC4, 0x29, 0x35, 0x02 - .byte 0xC4, 0x29, 0x35, 0x02, 0xEC, 0x29, 0x35, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x63, 0x00, 0x63, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 - .byte 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00 - .byte 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF - .byte 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF - .byte 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00 - .byte 0xFF, 0xFF, 0x02, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0D, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x97, 0x00, 0x02, 0x00, 0x64, 0x00, 0x03, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x4B, 0x00, 0x05, 0x00 - .byte 0x5C, 0x01, 0x06, 0x00, 0x99, 0x00, 0x07, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x9C, 0x00, 0x09, 0x00 - .byte 0x08, 0x00, 0x0A, 0x00, 0xDD, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00 - .byte 0x4C, 0x01, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00 - .byte 0xB3, 0x01, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00, 0xE6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xF7, 0xFF, 0xF7, 0xFF - .byte 0xF7, 0xFF, 0xF6, 0xFF, 0xF6, 0xFF, 0xF6, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF - .byte 0xF9, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF - .byte 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF - .byte 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 - .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00 - .byte 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00 - .byte 0x09, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00 - .byte 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0E, 0x00 - .byte 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00 - .byte 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00 - .byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00 - .byte 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00 - .byte 0x19, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00 - .byte 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1E, 0x00 - .byte 0x1E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00 - .byte 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00 - .byte 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00 - .byte 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00 - .byte 0x29, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00 - .byte 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2E, 0x00 - .byte 0x2E, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00 - .byte 0x31, 0x00, 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00 - .byte 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, 0x36, 0x00 - .byte 0x36, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00 - .byte 0x39, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00 - .byte 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3E, 0x00 - .byte 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x73, 0x74, 0x61, 0x69, 0x72, 0x0A, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xEB, 0x03, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00 - .byte 0x23, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x32, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xED, 0x03, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00 - .byte 0x15, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xE9, 0x03, 0x00, 0x00 - .byte 0x00, 0xF0, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 - .byte 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x60, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF - .byte 0xA0, 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 - .byte 0xA0, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00 - .byte 0x80, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xC0, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 - .byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 - .byte 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x60, 0x47, 0x2C, 0x02, 0x57, 0x00, 0x00, 0x00 - .byte 0x34, 0x4A, 0x2C, 0x02, 0x58, 0x00, 0x00, 0x00, 0xE4, 0x49, 0x2C, 0x02, 0x59, 0x00, 0x00, 0x00 - .byte 0xF8, 0x49, 0x2C, 0x02, 0x5A, 0x00, 0x00, 0x00, 0x0C, 0x4A, 0x2C, 0x02, 0x5B, 0x00, 0x00, 0x00 - .byte 0x48, 0x4A, 0x2C, 0x02, 0x5C, 0x00, 0x00, 0x00, 0x20, 0x4A, 0x2C, 0x02, 0x46, 0x00, 0x00, 0x00 - .byte 0x88, 0x4A, 0x2C, 0x02, 0x48, 0x00, 0x00, 0x00, 0x98, 0x4B, 0x2C, 0x02, 0x5D, 0x00, 0x00, 0x00 - .byte 0xA0, 0x4A, 0x2C, 0x02, 0x5E, 0x00, 0x00, 0x00, 0xB8, 0x4A, 0x2C, 0x02, 0x5F, 0x00, 0x00, 0x00 - .byte 0xD0, 0x4A, 0x2C, 0x02, 0x60, 0x00, 0x00, 0x00, 0xE8, 0x4A, 0x2C, 0x02, 0x61, 0x00, 0x00, 0x00 - .byte 0x00, 0x4B, 0x2C, 0x02, 0x62, 0x00, 0x00, 0x00, 0x70, 0x4A, 0x2C, 0x02, 0x64, 0x00, 0x00, 0x00 - .byte 0xC4, 0x48, 0x2C, 0x02, 0x65, 0x00, 0x00, 0x00, 0xCC, 0x48, 0x2C, 0x02, 0x66, 0x00, 0x00, 0x00 - .byte 0xD4, 0x48, 0x2C, 0x02, 0x67, 0x00, 0x00, 0x00, 0xF4, 0x48, 0x2C, 0x02, 0x6B, 0x00, 0x00, 0x00 - .byte 0x0C, 0x49, 0x2C, 0x02, 0x6C, 0x00, 0x00, 0x00, 0x18, 0x49, 0x2C, 0x02, 0x6D, 0x00, 0x00, 0x00 - .byte 0x34, 0x49, 0x2C, 0x02, 0x6E, 0x00, 0x00, 0x00, 0x14, 0x48, 0x2C, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45 - .byte 0x2F, 0x66, 0x69, 0x78, 0x65, 0x64, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x5B, 0x0F, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x5C, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x49, 0x0F, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x0F, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x47, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x0F, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x53, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 - .byte 0x6C, 0x01, 0x6D, 0x01, 0x6E, 0x01, 0x6F, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01 - .byte 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7A, 0x01, 0x7B, 0x01 - .byte 0x7C, 0x01, 0x7D, 0x01, 0x7E, 0x01, 0x7F, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01 - .byte 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01 - .byte 0x8C, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8F, 0x01, 0x5B, 0x52, 0x5D, 0x00, 0x33, 0x0B, 0x34, 0x0B - .byte 0x2F, 0x0B, 0x30, 0x0B, 0x3D, 0x0B, 0x3E, 0x0B, 0x37, 0x0B, 0x38, 0x0B, 0x31, 0x0B, 0x32, 0x0B - .byte 0x39, 0x0B, 0x3A, 0x0B, 0x35, 0x0B, 0x36, 0x0B, 0x3B, 0x0B, 0x3C, 0x0B, 0x08, 0x00, 0x00, 0x00 - .byte 0xD6, 0x3F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xD1, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 - .byte 0xDD, 0x3F, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xDC, 0x3F, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0xE2, 0x3F, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xE6, 0x3F, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 - .byte 0xE3, 0x3F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xDE, 0x3F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .byte 0xD5, 0x3F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xDF, 0x3F, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 - .byte 0xE4, 0x3F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xD4, 0x3F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .byte 0xD3, 0x3F, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xD2, 0x3F, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 - .byte 0xE0, 0x3F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x3F, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 - .byte 0xDB, 0x3F, 0x00, 0x00, 0x48, 0x0B, 0x49, 0x0B, 0x4A, 0x0B, 0x4B, 0x0B, 0x0C, 0x00, 0x00, 0x00 - .byte 0xDA, 0x3F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xD7, 0x3F, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 - .byte 0xE5, 0x3F, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xD8, 0x3F, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .byte 0xD9, 0x3F, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xE1, 0x3F, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 - .byte 0xE7, 0x3F, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0xE8, 0x3F, 0x00, 0x00, 0x3F, 0x0B, 0x40, 0x0B - .byte 0x41, 0x0B, 0x42, 0x0B, 0x43, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x4D, 0x0B, 0x4E, 0x0B, 0x4F, 0x0B - .byte 0x50, 0x0B, 0x00, 0x00, 0x78, 0x0B, 0x79, 0x0B, 0x7A, 0x0B, 0x7B, 0x0B, 0x7C, 0x0B, 0x7D, 0x0B - .byte 0x7E, 0x0B, 0x7F, 0x0B, 0x80, 0x0B, 0x81, 0x0B, 0x82, 0x0B, 0x83, 0x0B, 0x84, 0x0B, 0x85, 0x0B - .byte 0x00, 0x00, 0x86, 0x0B, 0x87, 0x0B, 0x88, 0x0B, 0x89, 0x0B, 0x8A, 0x0B, 0x8B, 0x0B, 0x8D, 0x0B - .byte 0x8C, 0x0B, 0x8E, 0x0B, 0x8F, 0x0B, 0x90, 0x0B, 0x91, 0x0B, 0x00, 0x00, 0x30, 0x3A, 0x83, 0x82 - .byte 0x83, 0x93, 0x83, 0x58, 0x83, 0x5E, 0x81, 0x5B, 0x2D, 0x49, 0x44, 0x81, 0x79, 0x25, 0x64, 0x81 - .byte 0x7A, 0x00, 0x00, 0x00, 0x31, 0x3A, 0x83, 0x82, 0x83, 0x93, 0x83, 0x58, 0x83, 0x5E, 0x81, 0x5B - .byte 0x2D, 0x49, 0x44, 0x81, 0x79, 0x25, 0x64, 0x81, 0x7A, 0x00, 0x00, 0x00, 0xAB, 0x08, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0xAC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x00, 0x00, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x00, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF2, 0x34, 0x02 - .byte 0x1C, 0xF2, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x01, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x5B, 0x4D, 0x3A, 0x52, 0x34, 0x5D, 0x00, 0x00, 0x5B, 0x66, 0x6C, 0x6F - .byte 0x6F, 0x72, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x5B, 0x4D, 0x3A, 0x53, 0x32, 0x5D, 0x00, 0x00 - .byte 0x5B, 0x43, 0x53, 0x3A, 0x57, 0x5D, 0x3F, 0x3F, 0x3F, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xF9, 0x34, 0x02, 0xC0, 0xF7, 0x34, 0x02 - .byte 0xBA, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0xBC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .byte 0xBE, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xBB, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xBC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xBD, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBE, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0xBF, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - - .data - .global ov29_023534E0 -ov29_023534E0: - .byte 0x6C, 0xFD, 0x34, 0x02, 0x28, 0xFD, 0x34, 0x02, 0x58, 0xFD, 0x34, 0x02 - .byte 0x38, 0xFD, 0x34, 0x02, 0xB8, 0xFD, 0x34, 0x02, 0xC8, 0xFD, 0x34, 0x02, 0xC0, 0xFD, 0x34, 0x02 - .byte 0x88, 0xFD, 0x34, 0x02, 0xB0, 0xFD, 0x34, 0x02, 0x98, 0xFD, 0x34, 0x02, 0xA0, 0xFD, 0x34, 0x02 - .byte 0xA8, 0xFD, 0x34, 0x02, 0x90, 0xFD, 0x34, 0x02, 0x80, 0xFD, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x00, 0x2F, 0x30, 0x31, 0x32 - .byte 0x33, 0x34, 0x35, 0x00, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x00, 0xE0, 0x27, 0x35, 0x02 - .byte 0xE8, 0x27, 0x35, 0x02, 0xE4, 0x27, 0x35, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x6C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xF4, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x88, 0x31, 0x35, 0x02, 0x70, 0x31, 0x35, 0x02, 0x28, 0x31, 0x35, 0x02, 0x58, 0x31, 0x35, 0x02 - .byte 0x40, 0x31, 0x35, 0x02, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00 - .byte 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x00, 0xB8, 0x04 - .byte 0xD9, 0x00, 0xB5, 0x04, 0xDB, 0x00, 0xB6, 0x04, 0xDC, 0x00, 0xB4, 0x04, 0xDD, 0x00, 0xB7, 0x04 - .byte 0xDE, 0x00, 0xBE, 0x04, 0xDF, 0x00, 0xC0, 0x04, 0xE0, 0x00, 0xC1, 0x04, 0xE1, 0x00, 0xD2, 0x04 - .byte 0xE2, 0x00, 0xBD, 0x04, 0xEC, 0x00, 0xBF, 0x04, 0xEE, 0x00, 0xC5, 0x04, 0xEF, 0x00, 0xC2, 0x04 - .byte 0xF0, 0x00, 0xC3, 0x04, 0xE3, 0x00, 0xC4, 0x04, 0xF1, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00 - .byte 0xF3, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - - .bss - .global ov29_02353860 -ov29_02353860: - .space 0x2EFC0 diff --git a/asm/overlay_29_022EC62C.s b/asm/overlay_29_022EC62C.s new file mode 100644 index 00000000..674b4e86 --- /dev/null +++ b/asm/overlay_29_022EC62C.s @@ -0,0 +1,565 @@ + .include "asm/macros.inc" + .include "overlay_29_022EC62C.inc" + + .text + + arm_func_start ov29_022EC62C +ov29_022EC62C: ; 0x022EC62C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r0 + bl GetLeader + cmp r6, r0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r7, _022EC6D8 ; =0x02353538 + ldr r1, [r7] + ldrb r0, [r1, #0x10] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + strb r4, [r1, #0x10] + mov sb, r4 + mov r8, r4 + b _022EC6CC +_022EC668: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__022EC608 + cmp r0, #0 + cmpne r6, r5 + beq _022EC6C8 + ldr r0, [r5, #0xb4] + ldrh r0, [r0] + tst r0, #0x8000 + beq _022EC6C8 + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r5 + mov r1, sb + bl RunMonsterAi + mov r0, r5 + bl ExecuteMonsterAction + bl ov29_022EF9C8 + mov r0, r8 + bl TryForcedLoss +_022EC6C8: + add r4, r4, #1 +_022EC6CC: + cmp r4, #0x14 + blt _022EC668 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EC6D8: .word 0x02353538 + arm_func_end ov29_022EC62C + + arm_func_start TrySpawnMonsterAndActivatePlusMinus +TrySpawnMonsterAndActivatePlusMinus: ; 0x022EC6DC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _022EC7E0 ; =0x02353538 + ldr r1, _022EC7E4 ; =0x023522B6 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x80] + mov r0, r0, lsl #1 + ldrsh r0, [r1, r0] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl TrySpawnMonsterAndTickSpawnCounter + ldr r4, _022EC7E0 ; =0x02353538 + mov r8, #0 + ldr r0, [r4] + mov fp, #1 + add r0, r0, #0x3000 + strb r8, [r0, #0xe34] + ldr r0, [r4] + mov r7, r8 + add r0, r0, #0x3000 + strb r8, [r0, #0xe35] + ldr r0, [r4] + mov r6, fp + add r0, r0, #0x3000 + strb r8, [r0, #0xe36] + ldr r0, [r4] + mov r5, fp + add r0, r0, #0x3000 + strb r8, [r0, #0xe37] +_022EC750: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__022EC608 + cmp r0, #0 + beq _022EC7C8 + ldr r0, [sb, #0xb4] + mov r1, #0x3f + strb r7, [r0, #0x152] + ldrb r0, [r0, #6] + cmp r0, #0 + moveq sl, fp + mov r0, sb + movne sl, r7 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + mov r1, #0x38 + addne r0, r0, sl + addne r0, r0, #0x3000 + strneb r6, [r0, #0xe36] + mov r0, sb + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + addne r0, r0, sl + addne r0, r0, #0x3000 + strneb r5, [r0, #0xe34] +_022EC7C8: + add r8, r8, #1 + cmp r8, #0x14 + blt _022EC750 + mov r0, #0 + bl TryForcedLoss + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EC7E0: .word 0x02353538 +_022EC7E4: .word 0x023522B6 + arm_func_end TrySpawnMonsterAndActivatePlusMinus + + arm_func_start IsFloorOver +IsFloorOver: ; 0x022EC7E8 + stmdb sp!, {r3, lr} + ldr r0, _022EC858 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + bl GetLeader + cmp r0, #0 + ldreq r1, _022EC858 ; =0x02353538 + moveq r0, #1 + ldreq r1, [r1] + streqb r0, [r1, #0x758] + ldmeqia sp!, {r3, pc} + ldr r0, _022EC858 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #1 + moveq r0, #2 + streqb r0, [r1, #0x758] + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r0, #2 + moveq r0, #2 + streqb r0, [r1, #0x758] + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EC858: .word 0x02353538 + arm_func_end IsFloorOver + + arm_func_start ov29_022EC85C +ov29_022EC85C: ; 0x022EC85C + stmdb sp!, {r3, lr} + bl GetForcedLossReason + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + bl IsFloorOver + ldmia sp!, {r3, pc} + arm_func_end ov29_022EC85C + + arm_func_start ov29_022EC878 +ov29_022EC878: ; 0x022EC878 + mov r2, #0 + strb r2, [r0] + strb r2, [r0, #1] + strb r2, [r0, #2] + strb r2, [r0, #3] + strb r2, [r0, #4] + ldr r1, _022EC8A4 ; =0x02353598 + strb r2, [r0, #5] + mov r0, #1 + strb r0, [r1] + bx lr + .align 2, 0 +_022EC8A4: .word 0x02353598 + arm_func_end ov29_022EC878 + + arm_func_start ov29_022EC8A8 +ov29_022EC8A8: ; 0x022EC8A8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + mov r5, r1 + mov r0, r2 + mov r1, #0x30 + mov r4, r3 + bl DivideInt + mov r3, r1, lsl #1 + and r0, r3, #0xff + mov r2, r0, lsr #1 + ldr r1, _022EC998 ; =0x02352390 + mov r0, #0xc0 + strb r3, [r6, #4] + add r2, r2, #1 + strb r2, [r6, #2] + add r4, r4, #2 + smlabb r5, r5, r0, r1 + b _022EC96C +_022EC8F0: + strb r4, [r6, #3] + mov r8, #0x63 + ldr r7, _022EC99C ; =0x02353538 + b _022EC93C +_022EC900: + ldrb r1, [r6, #3] + mov r0, r8 + sub r1, r1, #1 + strb r1, [r6, #3] + ldrb r1, [r6, #5] + eor r1, r1, #1 + strb r1, [r6, #5] + ldrb r3, [r6, #4] + and r2, r1, #0xff + ldr r1, [r7] + add r2, r3, r2 + ldr r2, [r5, r2, lsl #2] + add r1, r1, #0x1a000 + str r2, [r1, #0x230] + bl AdvanceFrame +_022EC93C: + ldrb r0, [r6, #3] + cmp r0, #0 + bne _022EC900 + ldrb r0, [r6, #4] + cmp r0, #0 + subne r0, r0, #2 + strneb r0, [r6, #4] + mov r0, #0 + strb r0, [r6, #5] + ldrb r0, [r6, #2] + sub r0, r0, #1 + strb r0, [r6, #2] +_022EC96C: + ldrb r0, [r6, #2] + cmp r0, #0 + bne _022EC8F0 + ldr r0, _022EC99C ; =0x02353538 + mov r2, #0 + ldr r0, [r0] + ldr r1, _022EC9A0 ; =0x02353598 + add r0, r0, #0x1a000 + str r2, [r0, #0x230] + strb r2, [r1] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EC998: .word 0x02352390 +_022EC99C: .word 0x02353538 +_022EC9A0: .word 0x02353598 + arm_func_end ov29_022EC8A8 + + arm_func_start ov29_022EC9A4 +ov29_022EC9A4: ; 0x022EC9A4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r3, #0xc + smulbb r3, r1, r3 + ldr r1, _022ECAD8 ; =0x022C6320 + mov r6, r0 + ldrb r4, [r1, r3] + mov r5, r2 + cmp r4, #5 + beq _022ECA28 + cmp r5, #0 + bne _022EC9E0 + ldr r1, _022ECADC ; =0x00000BFD + bl LogMessageByIdWithPopupCheckUser + b _022ECA18 +_022EC9E0: + cmp r5, #1 + bne _022EC9F4 + ldr r1, _022ECAE0 ; =0x00000BFE + bl LogMessageByIdWithPopupCheckUser + b _022ECA18 +_022EC9F4: + cmp r5, #2 + bne _022ECA08 + ldr r1, _022ECAE4 ; =0x00000BFF + bl LogMessageByIdWithPopupCheckUser + b _022ECA18 +_022ECA08: + cmp r5, #3 + bne _022ECA18 + mov r1, #0xc00 + bl LogMessageByIdWithPopupCheckUser +_022ECA18: + mov r0, r4 + mov r1, #0 + bl ov29_022E5DBC + b _022ECAD0 +_022ECA28: + bl ov29_022EAEF0 + mov r4, r0 + cmp r5, #0 + bne _022ECA48 + ldr r1, _022ECAE8 ; =0x00000C01 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022ECA8C +_022ECA48: + cmp r5, #1 + bne _022ECA60 + ldr r1, _022ECAEC ; =0x00000C02 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022ECA8C +_022ECA60: + cmp r5, #2 + bne _022ECA78 + ldr r1, _022ECAF0 ; =0x00000C03 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022ECA8C +_022ECA78: + cmp r5, #3 + bne _022ECA8C + ldr r1, _022ECAF4 ; =0x00000C04 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_022ECA8C: + add r0, sp, #0 + bl ov29_022EC878 + ldr r0, _022ECAF8 ; =0x02352380 + ldr r0, [r0, r5, lsl #2] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov29_022EAE14 + mov r0, r5, lsl #2 + add r0, r0, #8 + mov r2, r0, lsl #0x10 + mov r3, r2, asr #0x10 + add r0, sp, #0 + mov r1, r5 + mov r2, #0x10 + bl ov29_022EC8A8 + mov r0, r4 + bl ov29_022EAE14 +_022ECAD0: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022ECAD8: .word 0x022C6320 +_022ECADC: .word 0x00000BFD +_022ECAE0: .word 0x00000BFE +_022ECAE4: .word 0x00000BFF +_022ECAE8: .word 0x00000C01 +_022ECAEC: .word 0x00000C02 +_022ECAF0: .word 0x00000C03 +_022ECAF4: .word 0x00000C04 +_022ECAF8: .word 0x02352380 + arm_func_end ov29_022EC9A4 + + arm_func_start ov29_022ECAFC +ov29_022ECAFC: ; 0x022ECAFC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + add r0, sp, #0 + bl ov29_022EC878 + mov r0, r4, lsl #2 + add r0, r0, #2 + mov r2, r0, lsl #0x10 + mov r3, r2, asr #0x10 + add r0, sp, #0 + mov r1, r4 + mov r2, #8 + bl ov29_022EC8A8 + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end ov29_022ECAFC + + arm_func_start ov29_022ECB38 +ov29_022ECB38: ; 0x022ECB38 + ldr r0, _022ECB44 ; =0x02353598 + ldrb r0, [r0] + bx lr + .align 2, 0 +_022ECB44: .word 0x02353598 + arm_func_end ov29_022ECB38 + + arm_func_start DecrementWindCounter +DecrementWindCounter: ; 0x022ECB48 + stmdb sp!, {r4, lr} + bl GetLeader + movs r4, r0 + moveq r0, #0 + beq _022ECB70 + ldr r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_022ECB70: + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022ECD7C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r1, [r0, #0x84] + cmp r1, #0 + subgt r1, r1, #1 + strgth r1, [r0, #0x84] + ldr r0, _022ECD7C ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0x700 + ldrsh r0, [r0, #0x84] + cmp r0, #1 + movlt r0, #3 + strltb r0, [r1, #0x79a] + ldr r0, _022ECD7C ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x79a] + cmp r0, #0 + bne _022ECC2C + add r0, r1, #0x700 + ldrsh r0, [r0, #0x84] + cmp r0, #0xfa + ldmgeia sp!, {r4, pc} + bl ov29_022F2FE4 + mov r1, #1 + mov r0, r4 + mov r2, r1 + bl ov29_022F98B4 + mov r0, r4 + bl DisplayActions + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022ECD7C ; =0x02353538 + mov r0, r4 + ldr r2, [r1] + add r1, r2, #0x4000 + ldrsh r1, [r1, #0xd4] + ldrb r2, [r2, #0x79a] + bl ov29_022EC9A4 + ldr r0, _022ECD7C ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x79a] + ldmia sp!, {r4, pc} +_022ECC2C: + cmp r0, #1 + bne _022ECC9C + add r0, r1, #0x700 + ldrsh r0, [r0, #0x84] + cmp r0, #0x96 + ldmgeia sp!, {r4, pc} + bl ov29_022F2FE4 + mov r1, #1 + mov r0, r4 + mov r2, r1 + bl ov29_022F98B4 + mov r0, r4 + bl DisplayActions + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022ECD7C ; =0x02353538 + mov r0, r4 + ldr r2, [r1] + add r1, r2, #0x4000 + ldrsh r1, [r1, #0xd4] + ldrb r2, [r2, #0x79a] + bl ov29_022EC9A4 + ldr r0, _022ECD7C ; =0x02353538 + mov r1, #2 + ldr r0, [r0] + strb r1, [r0, #0x79a] + ldmia sp!, {r4, pc} +_022ECC9C: + cmp r0, #2 + add r0, r1, #0x700 + ldrsh r0, [r0, #0x84] + bne _022ECD0C + cmp r0, #0x32 + ldmgeia sp!, {r4, pc} + bl ov29_022F2FE4 + mov r1, #1 + mov r0, r4 + mov r2, r1 + bl ov29_022F98B4 + mov r0, r4 + bl DisplayActions + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022ECD7C ; =0x02353538 + mov r0, r4 + ldr r2, [r1] + add r1, r2, #0x4000 + ldrsh r1, [r1, #0xd4] + ldrb r2, [r2, #0x79a] + bl ov29_022EC9A4 + ldr r0, _022ECD7C ; =0x02353538 + mov r1, #3 + ldr r0, [r0] + strb r1, [r0, #0x79a] + ldmia sp!, {r4, pc} +_022ECD0C: + cmp r0, #1 + ldmgeia sp!, {r4, pc} + bl ov29_022F2FE4 + mov r1, #1 + mov r0, r4 + mov r2, r1 + bl ov29_022F98B4 + mov r0, r4 + bl DisplayActions + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022ECD7C ; =0x02353538 + mov r0, r4 + ldr r2, [r1] + add r1, r2, #0x4000 + ldrsh r1, [r1, #0xd4] + ldrb r2, [r2, #0x79a] + bl ov29_022EC9A4 + ldr r0, _022ECD7C ; =0x02353538 + ldr r1, _022ECD80 ; =0x0000025D + ldr r3, [r0] + mov ip, #4 + mov r0, r4 + mov r2, r4 + strb ip, [r3, #0x79a] + bl HandleFaint + ldmia sp!, {r4, pc} + .align 2, 0 +_022ECD7C: .word 0x02353538 +_022ECD80: .word 0x0000025D + arm_func_end DecrementWindCounter + + arm_func_start ov29_022ECD84 +ov29_022ECD84: ; 0x022ECD84 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__022ECDC0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + cmp r0, #1 + ldmneia sp!, {r4, pc} + ldr r1, [r4, #0xb4] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022ECDBC ; =0x0237C974 + bl ov29_02300164 + ldmia sp!, {r4, pc} + .align 2, 0 +_022ECDBC: .word 0x0237C974 + arm_func_end ov29_022ECD84 diff --git a/asm/overlay_29_022ECDE4.s b/asm/overlay_29_022ECDE4.s new file mode 100644 index 00000000..6c8cda21 --- /dev/null +++ b/asm/overlay_29_022ECDE4.s @@ -0,0 +1,1574 @@ + .include "asm/macros.inc" + .include "overlay_29_022ECDE4.inc" + + .text + + arm_func_start ov29_022ECDE4 +ov29_022ECDE4: ; 0x022ECDE4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _022ECF34 ; =0x02353538 + mov r6, r1 + ldr r1, [r4] + mov sb, r0 + add r1, r1, #0x20c + mov r0, r6 + mov r8, r2 + mov r7, r3 + add r4, r1, #0x2c800 + mov r5, #0 + bl EntityIsValid__022ECDC0 + cmp r0, #0 + beq _022ECE28 + ldr r0, [r6] + cmp r0, #1 + ldreq r5, [r6, #0xb4] +_022ECE28: + cmp r5, #0 + ldr r6, [r8, #0xb4] + beq _022ECE44 + mov r0, r4 + mov r1, r5 + bl ov29_02300164 + b _022ECE6C +_022ECE44: + ldr r1, _022ECF38 ; =0x0237C974 + ldrb r0, [r1] + cmp r0, #0 + beq _022ECE60 + mov r0, r4 + bl Strcpy + b _022ECE6C +_022ECE60: + ldr r1, _022ECF3C ; =0x00000A41 + mov r0, r4 + bl GetStringFromFileVeneer +_022ECE6C: + mov r1, r6 + add r0, r4, #0x1e + bl ov29_02300164 + cmp r7, #0 + moveq r0, #0 + streqb r0, [r4, #0x3c] + beq _022ECE94 + mov r1, r7 + add r0, r4, #0x3c + bl Strcpy +_022ECE94: + mov r1, r8 + add r0, r4, #0x70 + bl ov29_022F89CC + strh sb, [r4, #0x5a] + ldrh r1, [r6, #0x62] + ldr r0, _022ECF40 ; =0x000003E7 + ldr r3, _022ECF34 ; =0x02353538 + strh r1, [r4, #0x5e] + ldrh r1, [r6, #0x64] + strh r1, [r4, #0x60] + ldrh r1, [r6, #0x66] + strh r1, [r4, #0x62] + ldr r1, [r6, #0x20] + str r1, [r4, #0x64] + ldrb r1, [r6, #0xa] + strb r1, [r4, #0x6e] + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r4, #0x68] + ldrb r1, [r6, #0x1a] + ldr r0, _022ECF38 ; =0x0237C974 + mov r2, #0x28 + strb r1, [r4, #0x6a] + ldrb r5, [r6, #0x1b] + mov r1, #0 + strb r5, [r4, #0x6b] + ldrb r5, [r6, #0x1c] + strb r5, [r4, #0x6c] + ldrb r5, [r6, #0x1d] + strb r5, [r4, #0x6d] + ldr r5, [r3] + ldrb r3, [r5, #0x748] + strb r3, [r4, #0x5c] + ldrb r3, [r5, #0x749] + strb r3, [r4, #0x5d] + bl Memset + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022ECF34: .word 0x02353538 +_022ECF38: .word 0x0237C974 +_022ECF3C: .word 0x00000A41 +_022ECF40: .word 0x000003E7 + arm_func_end ov29_022ECDE4 + + arm_func_start ov29_022ECF44 +ov29_022ECF44: ; 0x022ECF44 + ldr r1, _022ECF6C ; =0x02353538 + ldr r0, _022ECF70 ; =0x0002CA66 + ldr r2, [r1] + ldr r1, _022ECF74 ; =0x00000279 + ldrsh r0, [r2, r0] + cmp r0, r1 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022ECF6C: .word 0x02353538 +_022ECF70: .word 0x0002CA66 +_022ECF74: .word 0x00000279 + arm_func_end ov29_022ECF44 + + arm_func_start ov29_022ECF78 +ov29_022ECF78: ; 0x022ECF78 + ldr r1, _022ECFAC ; =0x02353538 + ldr r0, _022ECFB0 ; =0x0002CA66 + ldr r2, [r1] + ldr r1, _022ECFB4 ; =0x0000027A + ldrsh r2, [r2, r0] + cmp r2, r1 + addne r0, r1, #3 + cmpne r2, r0 + addne r0, r1, #1 + cmpne r2, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022ECFAC: .word 0x02353538 +_022ECFB0: .word 0x0002CA66 +_022ECFB4: .word 0x0000027A + arm_func_end ov29_022ECF78 + + arm_func_start ov29_022ECFB8 +ov29_022ECFB8: ; 0x022ECFB8 + stmdb sp!, {r4, lr} + ldr r1, _022ED004 ; =0x02353538 + mov r4, r0 + ldr r1, [r1] + cmp r1, #0 + beq _022ECFF8 + add r0, r1, #0x20c + add lr, r0, #0x2c800 + mov ip, #0xe +_022ECFDC: + ldmia lr!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022ECFDC + ldmia lr, {r0, r1} + stmia r4, {r0, r1} + ldmia sp!, {r4, pc} +_022ECFF8: + mov r1, #0xe8 + bl MemZero + ldmia sp!, {r4, pc} + .align 2, 0 +_022ED004: .word 0x02353538 + arm_func_end ov29_022ECFB8 + + arm_func_start SetForcedLossReason +SetForcedLossReason: ; 0x022ED008 + ldr r1, _022ED018 ; =0x02353538 + ldr r1, [r1] + str r0, [r1, #0x14] + bx lr + .align 2, 0 +_022ED018: .word 0x02353538 + arm_func_end SetForcedLossReason + + arm_func_start GetForcedLossReason +GetForcedLossReason: ; 0x022ED01C + ldr r0, _022ED02C ; =0x02353538 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bx lr + .align 2, 0 +_022ED02C: .word 0x02353538 + arm_func_end GetForcedLossReason + + arm_func_start ov29_022ED030 +ov29_022ED030: ; 0x022ED030 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r1, _022ED0A0 ; =0x02352690 + ldr r2, _022ED0A4 ; =0x00000401 + ldr r3, [r1, #4] + ldr ip, [r1] + str r3, [sp, #4] + add r0, sp, #0 + mov r1, #4 + mov r3, #0x300 + str ip, [sp] + bl LoadWteFromFileDirectory + ldr r0, [sp, #4] + mov r1, #0x400 + mov r2, #0x1d + mov r3, #0 + bl ProcessWte + ldr r1, [sp, #4] + ldr r0, [sp] + ldrh r2, [r1, #0xc] + ldr r1, _022ED0A8 ; =0x0237C99C + strh r2, [r1] + bl sub_0201E080 + ldr r0, _022ED0AC ; =0x0235359C + mov r1, #1 + strb r1, [r0] + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022ED0A0: .word 0x02352690 +_022ED0A4: .word 0x00000401 +_022ED0A8: .word 0x0237C99C +_022ED0AC: .word 0x0235359C + arm_func_end ov29_022ED030 + + arm_func_start ov29_022ED0B0 +ov29_022ED0B0: ; 0x022ED0B0 + ldr r0, _022ED0C0 ; =0x0235359C + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_022ED0C0: .word 0x0235359C + arm_func_end ov29_022ED0B0 + + arm_func_start ov29_022ED0C4 +ov29_022ED0C4: ; 0x022ED0C4 + ldr r0, _022ED0D0 ; =0x0235359C + ldrb r0, [r0, #4] + bx lr + .align 2, 0 +_022ED0D0: .word 0x0235359C + arm_func_end ov29_022ED0C4 + + arm_func_start ov29_022ED0D4 +ov29_022ED0D4: ; 0x022ED0D4 + cmp r0, #0 + movlt r0, #0 + cmp r0, #0xff + ldr r1, _022ED0F0 ; =0x0235359C + movgt r0, #0xff + strb r0, [r1, #4] + bx lr + .align 2, 0 +_022ED0F0: .word 0x0235359C + arm_func_end ov29_022ED0D4 + + arm_func_start ov29_022ED0F4 +ov29_022ED0F4: ; 0x022ED0F4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _022ED180 ; =0x0235359C + mov r4, r0 + ldrb r7, [r1, #4] + cmp r7, #0x80 + ldmlsia sp!, {r3, r4, r5, r6, r7, pc} + cmp r7, #0x80 + mov r6, #0x80 + mov r5, #0x68 + ble _022ED174 + b _022ED144 +_022ED120: + sub r0, r7, r4 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x80 + movle r7, r6 + mov r0, r7 + bl ov29_022ED0D4 + mov r0, r5 + bl AdvanceFrame +_022ED144: + cmp r7, #0x80 + bne _022ED120 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022ED150: + add r0, r7, r4 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x80 + movge r7, r6 + mov r0, r7 + bl ov29_022ED0D4 + mov r0, r5 + bl AdvanceFrame +_022ED174: + cmp r7, #0x80 + bne _022ED150 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022ED180: .word 0x0235359C + arm_func_end ov29_022ED0F4 + + arm_func_start ov29_022ED184 +ov29_022ED184: ; 0x022ED184 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x88 + ldr r3, _022ED7F0 ; =0x0235359C + ldrb r3, [r3] + cmp r3, #0 + beq _022ED7E8 + ldrb r4, [r2, #0x34] + cmp r4, #0 + bne _022ED1D0 + ldrb r3, [r2, #0x23] + cmp r3, #0 + ldreqb r3, [r2, #0x24] + cmpeq r3, #0 + ldreqb r3, [r2, #0x30] + cmpeq r3, #0 + movne r3, #1 + moveq r3, #0 + cmp r3, #0 + bne _022ED7E8 +_022ED1D0: + cmp r4, #0 + bne _022ED1E0 + cmp r1, #0xff + bne _022ED370 +_022ED1E0: + add r0, sp, #0x48 + bl sub_0201E730 + ldr r1, _022ED7F4 ; =0x0237C99C + ldr r0, _022ED7F8 ; =0x020AFC70 + ldrh r2, [r1] + mov r3, #5 + mov r1, #0x400 + strb r3, [sp, #0x84] + strh r2, [sp, #0x5c] + ldr r0, [r0] + str r1, [sp, #0x68] + ldr r1, [r0, #0xe0] + ldr r0, _022ED7F0 ; =0x0235359C + add r1, r1, #0x3a00 + str r1, [sp, #0x6c] + ldrb r6, [r0, #4] + mov r5, #0 + mov r3, #0x30 + mov r4, #4 + mov r1, #0x100 + mov r2, #0x22 + add r0, sp, #0x48 + strb r6, [sp, #0x77] + strh r5, [sp, #0x5e] + strh r5, [sp, #0x60] + strh r4, [sp, #0x62] + strh r4, [sp, #0x64] + strh r3, [sp, #0x72] + strb r2, [sp, #0x86] + strh r5, [sp, #0x48] + strh r5, [sp, #0x4a] + strh r1, [sp, #0x4c] + strh r5, [sp, #0x4e] + strh r5, [sp, #0x50] + strh r3, [sp, #0x52] + strh r1, [sp, #0x54] + strh r3, [sp, #0x56] + bl sub_0201F2A0 + mov r4, r5 + mov r3, #0x90 + mov r2, #0x100 + mov r1, #0xc0 + add r0, sp, #0x48 + strh r4, [sp, #0x48] + strh r3, [sp, #0x4a] + strh r2, [sp, #0x4c] + strh r3, [sp, #0x4e] + strh r4, [sp, #0x50] + strh r1, [sp, #0x52] + strh r2, [sp, #0x54] + strh r1, [sp, #0x56] + bl sub_0201F2A0 + mov r3, #0x30 + mov r2, #0x50 + mov r1, #0x90 + add r0, sp, #0x48 + strh r4, [sp, #0x48] + strh r3, [sp, #0x4a] + strh r2, [sp, #0x4c] + strh r3, [sp, #0x4e] + strh r4, [sp, #0x50] + strh r1, [sp, #0x52] + strh r2, [sp, #0x54] + strh r1, [sp, #0x56] + bl sub_0201F2A0 + mov r3, #0xb0 + mov r2, #0x30 + mov r1, #0x100 + mov r0, #0x90 + strh r3, [sp, #0x48] + strh r2, [sp, #0x4a] + strh r1, [sp, #0x4c] + strh r2, [sp, #0x4e] + strh r3, [sp, #0x50] + strh r0, [sp, #0x52] + strh r1, [sp, #0x54] + strh r0, [sp, #0x56] + add r0, sp, #0x48 + bl sub_0201F2A0 + mov r6, #0x50 + mov r5, #0x30 + mov r4, #0xb0 + mov r3, #0x90 + mov r2, #0 + mov r1, #0x60 + add r0, sp, #0x48 + strh r6, [sp, #0x48] + strh r5, [sp, #0x4a] + strh r4, [sp, #0x4c] + strh r5, [sp, #0x4e] + strh r6, [sp, #0x50] + strh r3, [sp, #0x52] + strh r4, [sp, #0x54] + strh r3, [sp, #0x56] + strh r2, [sp, #0x5e] + strh r2, [sp, #0x60] + strh r1, [sp, #0x62] + strh r1, [sp, #0x64] + bl sub_0201F2A0 + b _022ED7E8 +_022ED370: + ldr r6, _022ED7FC ; =0x02352698 + add r5, sp, #0 + mov r4, #4 +_022ED37C: + ldrh r3, [r6], #2 + subs r4, r4, #1 + strh r3, [r5], #2 + bne _022ED37C + mov r3, #0x1c + smlabb r3, r1, r3, r0 + ldr r1, [r3, #0xc] + add r0, sp, #8 + strh r1, [sp] + ldr r1, [r3, #0x10] + strh r1, [sp, #2] + ldr r1, [r3, #0x14] + strh r1, [sp, #4] + ldr r1, [r3, #0x18] + strh r1, [sp, #6] + ldrsh r5, [r2, #0xa] + ldrsh r4, [r2, #8] + bl sub_0201E730 + ldrsh r3, [sp, #2] + ldrsh r6, [sp, #4] + ldrsh lr, [sp] + sub r3, r3, r5 + ldrsh r2, [sp, #6] + mov r1, #5 + mov r0, #0x400 + ldr ip, _022ED7F8 ; =0x020AFC70 + mov r3, r3, lsl #0x10 + sub r6, r6, r4 + sub lr, lr, r4 + mov r4, r3, asr #0x10 + sub r5, r2, r5 + mov r3, r6, lsl #0x10 + mov r6, r5, lsl #0x10 + ldr r7, _022ED7F4 ; =0x0237C99C + strb r1, [sp, #0x44] + ldrh r1, [r7] + ldr r5, [ip] + str r0, [sp, #0x28] + ldr r0, [r5, #0xe0] + mov r2, lr, lsl #0x10 + add r5, r0, #0x3a00 + str r5, [sp, #0x2c] + strh r1, [sp, #0x1c] + ldr r0, _022ED7F0 ; =0x0235359C + mov r1, #0 + ldrb ip, [r0, #4] + mov r7, #4 + mov r5, #0x30 + mov r0, #0x22 + strh r5, [sp, #0x32] + strb ip, [sp, #0x37] + strh r1, [sp, #0x1e] + strh r1, [sp, #0x20] + strh r7, [sp, #0x22] + strh r7, [sp, #0x24] + strb r0, [sp, #0x46] + cmp r4, #0 + mov r5, r2, asr #0x10 + mov r7, r3, asr #0x10 + mov r6, r6, asr #0x10 + ble _022ED4A4 + mov r0, r4, lsl #0x10 + mov r2, r0, asr #0x10 + mov r3, #0x100 + add r0, sp, #8 + strh r1, [sp, #8] + strh r1, [sp, #0xa] + strh r3, [sp, #0xc] + strh r1, [sp, #0xe] + strh r1, [sp, #0x10] + strh r2, [sp, #0x12] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + bl sub_0201F2A0 +_022ED4A4: + cmp r6, #0 + movlt r0, #0 + movge r0, r6 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + rsb r0, r1, #0xc0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #0 + ble _022ED508 + add r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + mov ip, #0 + mov r3, #0x100 + add r0, sp, #8 + strh ip, [sp, #8] + strh r1, [sp, #0xa] + strh r3, [sp, #0xc] + strh r1, [sp, #0xe] + strh ip, [sp, #0x10] + strh r2, [sp, #0x12] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + bl sub_0201F2A0 +_022ED508: + cmp r4, #0 + movlt r0, #0 + movge r0, r4 + mov r0, r0, lsl #0x10 + sub r1, r6, r0, asr #16 + cmp r1, #0xc0 + movgt r1, #0xc0 + mov ip, r0, asr #0x10 + cmp r5, #0 + mov r0, r1, lsl #0x10 + ble _022ED574 + add r1, ip, r0, asr #16 + mov r0, r5, lsl #0x10 + mov r2, r0, asr #0x10 + mov r3, #0 + mov r0, r1, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, sp, #8 + strh r3, [sp, #8] + strh ip, [sp, #0xa] + strh r2, [sp, #0xc] + strh ip, [sp, #0xe] + strh r3, [sp, #0x10] + strh r1, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + bl sub_0201F2A0 +_022ED574: + cmp r4, #0 + movlt r0, #0 + movge r0, r4 + mov r0, r0, lsl #0x10 + rsb r1, r7, #0x100 + mov r2, r1, lsl #0x10 + sub r3, r6, r0, asr #16 + cmp r3, #0xc0 + mov r2, r2, asr #0x10 + movgt r3, #0xc0 + mov r1, r0, asr #0x10 + cmp r2, #0 + mov r0, r3, lsl #0x10 + ble _022ED5EC + add r3, r7, r2 + add r2, r1, r0, asr #16 + mov r0, r3, lsl #0x10 + mov r3, r0, asr #0x10 + mov r0, r2, lsl #0x10 + mov r2, r0, asr #0x10 + add r0, sp, #8 + strh r7, [sp, #8] + strh r1, [sp, #0xa] + strh r3, [sp, #0xc] + strh r1, [sp, #0xe] + strh r7, [sp, #0x10] + strh r2, [sp, #0x12] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + bl sub_0201F2A0 +_022ED5EC: + mvn r0, #0x1f + cmp r5, r0 + cmpgt r4, r0 + ble _022ED660 + cmp r5, #0x120 + cmplt r4, #0xe0 + bge _022ED660 + add r0, r5, #0x20 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + mov ip, #0 + mov r3, #0x30 + add r1, r4, #0x20 + mov r0, r1, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, sp, #8 + strh ip, [sp, #0x1e] + strh ip, [sp, #0x20] + strh r3, [sp, #0x22] + strh r3, [sp, #0x24] + strh r5, [sp, #8] + strh r4, [sp, #0xa] + strh r2, [sp, #0xc] + strh r4, [sp, #0xe] + strh r5, [sp, #0x10] + strh r1, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + bl sub_0201F2A0 +_022ED660: + sub r7, r7, #0x20 + mov r0, r7, lsl #0x10 + mvn r1, #0x1f + cmp r1, r0, asr #16 + mov r2, r0, asr #0x10 + bge _022ED6E4 + cmp r4, r1 + ble _022ED6E4 + cmp r2, #0x120 + cmplt r4, #0xe0 + bge _022ED6E4 + add r0, r2, #0x20 + mov r0, r0, lsl #0x10 + mov ip, r0, asr #0x10 + mov r1, #0x30 + add r3, r4, #0x20 + mov r0, r3, lsl #0x10 + mov r3, r0, asr #0x10 + mov lr, #0 + add r0, sp, #8 + strh r1, [sp, #0x1e] + strh lr, [sp, #0x20] + strh r1, [sp, #0x22] + strh r1, [sp, #0x24] + strh r2, [sp, #8] + strh r4, [sp, #0xa] + strh ip, [sp, #0xc] + strh r4, [sp, #0xe] + strh r2, [sp, #0x10] + strh r3, [sp, #0x12] + strh ip, [sp, #0x14] + strh r3, [sp, #0x16] + bl sub_0201F2A0 +_022ED6E4: + sub r4, r6, #0x20 + mov r0, r4, lsl #0x10 + mvn r2, #0x1f + mov r1, r0, asr #0x10 + cmp r5, r2 + cmpgt r1, r2 + ble _022ED764 + cmp r5, #0x120 + cmplt r1, #0xe0 + bge _022ED764 + add r0, r5, #0x20 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + mov r6, #0x30 + add r2, r1, #0x20 + mov r0, r2, lsl #0x10 + mov r2, r0, asr #0x10 + mov ip, #0 + add r0, sp, #8 + strh ip, [sp, #0x1e] + strh r6, [sp, #0x20] + strh r6, [sp, #0x22] + strh r6, [sp, #0x24] + strh r5, [sp, #8] + strh r1, [sp, #0xa] + strh r3, [sp, #0xc] + strh r1, [sp, #0xe] + strh r5, [sp, #0x10] + strh r2, [sp, #0x12] + strh r3, [sp, #0x14] + strh r2, [sp, #0x16] + bl sub_0201F2A0 +_022ED764: + mov r0, r7, lsl #0x10 + mov r1, r4, lsl #0x10 + mvn r2, #0x1f + cmp r2, r0, asr #16 + mov r5, r0, asr #0x10 + mov r4, r1, asr #0x10 + bge _022ED7E8 + cmp r4, r2 + ble _022ED7E8 + cmp r5, #0x120 + cmplt r4, #0xe0 + bge _022ED7E8 + add r0, r5, #0x20 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + mov r3, #0x30 + add r1, r4, #0x20 + mov r0, r1, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, sp, #8 + strh r3, [sp, #0x1e] + strh r3, [sp, #0x20] + strh r3, [sp, #0x22] + strh r3, [sp, #0x24] + strh r5, [sp, #8] + strh r4, [sp, #0xa] + strh r2, [sp, #0xc] + strh r4, [sp, #0xe] + strh r5, [sp, #0x10] + strh r1, [sp, #0x12] + strh r2, [sp, #0x14] + strh r1, [sp, #0x16] + bl sub_0201F2A0 +_022ED7E8: + add sp, sp, #0x88 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022ED7F0: .word 0x0235359C +_022ED7F4: .word 0x0237C99C +_022ED7F8: .word 0x020AFC70 +_022ED7FC: .word 0x02352698 + arm_func_end ov29_022ED184 + + arm_func_start ov29_022ED800 +ov29_022ED800: ; 0x022ED800 + stmdb sp!, {r3, lr} + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r3, r0, #0xe900 + ldrh r3, [r3, #0xec] + tst r3, #1 + ldmneia sp!, {r3, pc} + add r0, r0, #0x224 + add r0, r0, #0xac00 + bl ov29_022ED184 + ldmia sp!, {r3, pc} + arm_func_end ov29_022ED800 + + arm_func_start ov29_022ED82C +ov29_022ED82C: ; 0x022ED82C + stmdb sp!, {r4, lr} + add r1, r1, #0xc1 + add r1, r1, #0x3400 + mov r1, r1, lsl #0x10 + mov r4, r0 + mov r0, r1, lsr #0x10 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + bl Strcpy + ldmia sp!, {r4, pc} + arm_func_end ov29_022ED82C + + arm_func_start ov29_022ED858 +ov29_022ED858: ; 0x022ED858 + cmp r1, #0 + strne r1, [r0, #0x10] + strneb r2, [r1, #0x20] + bx lr + arm_func_end ov29_022ED858 + + arm_func_start ov29_022ED868 +ov29_022ED868: ; 0x022ED868 + ldr r0, _022ED880 ; =0x02353538 + ldr ip, _022ED884 ; =ov29_02344148 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bx ip + .align 2, 0 +_022ED880: .word 0x02353538 +_022ED884: .word ov29_02344148 + arm_func_end ov29_022ED868 + + arm_func_start ov29_022ED888 +ov29_022ED888: ; 0x022ED888 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr r0, _022ED96C ; =0x023526A0 + mov sl, #0 + ldrh r1, [r0] + ldrh r0, [r0, #2] + add r6, sp, #4 + strh r1, [sp] + strh r0, [sp, #2] + mov r4, #6 + mov fp, #2 + mov r7, sl +_022ED8B8: + mov r0, sl, lsl #0x10 + mov r8, r7 + mov r5, r0, asr #0x10 +_022ED8C4: + mov r0, r8 + mov r1, sl + bl GetTileSafe + mov sb, r0 + ldrh r0, [sb, #2] + tst r0, #4 + beq _022ED94C + strh r8, [sp, #4] + strh r5, [sp, #6] + ldrh r0, [sb, #2] + tst r0, #0x40 + movne r0, r4 + bne _022ED8FC + bl ov29_022E7A30 +_022ED8FC: + cmp r0, #0x11 + mov r1, r6 + bne _022ED92C + mov r2, fp + mov r3, #0 + bl ov29_022E2260 + movs r1, r0 + beq _022ED94C + mov r0, sb + mov r2, #1 + bl ov29_022ED858 + b _022ED94C +_022ED92C: + mov r2, #0 + mov r3, r2 + bl ov29_022E2260 + movs r1, r0 + beq _022ED94C + mov r0, sb + mov r2, #0 + bl ov29_022ED858 +_022ED94C: + add r8, r8, #1 + cmp r8, #0x38 + blt _022ED8C4 + add sl, sl, #1 + cmp sl, #0x20 + blt _022ED8B8 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022ED96C: .word 0x023526A0 + arm_func_end ov29_022ED888 + + arm_func_start ov29_022ED970 +ov29_022ED970: ; 0x022ED970 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r7, r1 + mov r6, r2 + mov r8, r0 + mov r0, r7 + mov r1, r6 + mov r5, r3 + bl GetTileSafe + mov r4, r0 + add r1, sp, #0 + mov r0, r8 + mov r3, r5 + mov r2, #0 + strh r7, [sp] + strh r6, [sp, #2] + bl ov29_022E2260 + movs r1, r0 + beq _022ED9C8 + ldrb r2, [sp, #0x20] + mov r0, r4 + bl ov29_022ED858 +_022ED9C8: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ov29_022ED970 + + arm_func_start ov29_022ED9D0 +ov29_022ED9D0: ; 0x022ED9D0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr r0, _022EDBB8 ; =0x02353538 + ldr r1, _022EDBBC ; =0x0001A21E + ldr r0, [r0] + ldrsh r2, [r0, r1] + add r1, r0, #0x1a000 + ldrb r8, [r1, #0x244] + sub sb, r2, #5 + b _022EDB9C +_022ED9F8: + ldr r1, _022EDBC0 ; =0x0001A21C + mov r2, #0x18 + ldrsh r0, [r0, r1] + mul sl, sb, r2 + sub r7, r0, #6 + mov r0, r1 + add fp, r0, #8 + ldr r0, _022EDBC4 ; =0x0000013E + ldr r6, _022EDBC8 ; =0x0237C864 + sub r0, r0, #0x1f + str r0, [sp, #4] + mov r0, r1 + add r5, r0, #0xa + ldr r4, _022EDBCC ; =0xFFFF000F + b _022EDB7C +_022EDA34: + mov r0, #0 + str r0, [sp] + mov r0, r7 + mov r1, sb + bl GetTile + ldr r2, [r0, #0x10] + cmp r2, #0 + beq _022EDA74 + ldr r1, [r2] + cmp r1, #2 + bne _022EDA74 + ldrb r1, [r2, #0x20] + cmp r1, #0 + cmpeq r8, #0 + movne r1, #1 + strne r1, [sp] +_022EDA74: + ldrh r0, [r0] + tst r0, #0x200 + movne r0, #1 + strne r0, [sp] + ldr r0, [sp] + cmp r0, #0 + beq _022EDB78 + ldr r0, _022EDBB8 ; =0x02353538 + ldr r3, [r0] + mov r0, #0x18 + mul r2, r7, r0 + ldrsh r1, [r3, fp] + ldrsh r0, [r3, r5] + sub r1, r2, r1 + sub r2, sl, r0 + cmp r1, r4, asr #11 + cmpge r2, r4, asr #11 + blt _022EDB78 + ldr r0, [sp, #4] + cmp r1, r0 + cmple r2, #0xe0 + bgt _022EDB78 + ldrh ip, [r6] + add r0, r2, #4 + add r1, r1, #4 + bic ip, ip, #0xc00 + strh ip, [r6] + ldrh ip, [r6, #6] + and r3, r1, r4, lsr #23 + mov r0, r0, lsl #0x14 + and ip, ip, r4 + strh ip, [r6, #6] + ldrh ip, [r6, #6] + mov r1, r6 + mov r2, #0 + orr r0, ip, r0, lsr #16 + strh r0, [r6, #6] + ldrh r0, [r6, #2] + and r0, r0, r4, asr #7 + strh r0, [r6, #2] + ldrh r0, [r6, #2] + orr r0, r0, r3 + strh r0, [r6, #2] + ldrh r0, [r6, #4] + bic r0, r0, #0xc00 + strh r0, [r6, #4] + ldrh r0, [r6, #4] + orr r0, r0, #0xc00 + strh r0, [r6, #4] + ldrh r0, [r6, #4] + bic r0, r0, #0xf000 + strh r0, [r6, #4] + ldrh r0, [r6, #4] + orr r0, r0, #0xa000 + strh r0, [r6, #4] + ldrh r0, [r6, #4] + and r0, r0, r4, asr #6 + strh r0, [r6, #4] + ldrh r3, [r6, #4] + orr r0, r3, #0x3e + orr r0, r0, #0x100 + strh r0, [r6, #4] + ldr r0, _022EDBD0 ; =0x020AFC4C + ldr r0, [r0] + bl sub_0201B9F8 +_022EDB78: + add r7, r7, #1 +_022EDB7C: + ldr r0, _022EDBB8 ; =0x02353538 + ldr r1, _022EDBC0 ; =0x0001A21C + ldr r0, [r0] + ldrsh r1, [r0, r1] + add r1, r1, #6 + cmp r7, r1 + blt _022EDA34 + add sb, sb, #1 +_022EDB9C: + ldr r1, _022EDBBC ; =0x0001A21E + ldrsh r1, [r0, r1] + add r1, r1, #5 + cmp sb, r1 + blt _022ED9F8 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EDBB8: .word 0x02353538 +_022EDBBC: .word 0x0001A21E +_022EDBC0: .word 0x0001A21C +_022EDBC4: .word 0x0000013E +_022EDBC8: .word 0x0237C864 +_022EDBCC: .word 0xFFFF000F +_022EDBD0: .word 0x020AFC4C + arm_func_end ov29_022ED9D0 + + arm_func_start ov29_022EDBD4 +ov29_022EDBD4: ; 0x022EDBD4 + stmdb sp!, {r3, r4, r5, lr} + ldr lr, _022EDC28 ; =0x02353538 + ldrsh r5, [r0] + ldr r3, _022EDC2C ; =0x00012AAA + ldr r4, [lr] + add ip, r3, #2 + strh r5, [r4, r3] + ldrsh r4, [r0, #2] + ldr r0, [lr] + mov r3, #1 + strh r4, [r0, ip] + ldr r0, [lr] + add r0, r0, #0x12000 + strb r1, [r0, #0xaae] + ldr r0, [lr] + add r0, r0, #0x12000 + strb r2, [r0, #0xaaf] + ldr r0, [lr] + add r0, r0, #0x12000 + strb r3, [r0, #0xaa8] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EDC28: .word 0x02353538 +_022EDC2C: .word 0x00012AAA + arm_func_end ov29_022EDBD4 + + arm_func_start ov29_022EDC30 +ov29_022EDC30: ; 0x022EDC30 + stmdb sp!, {r3, lr} + mov r1, r0 + ldrsh r0, [r1] + ldrsh r1, [r1, #2] + bl GetTileSafe + ldrh r2, [r0] + tst r2, #0x200 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldrb r1, [r0, #7] + cmp r1, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, pc} + tst r2, #8 + movne r0, #0 + ldmneia sp!, {r3, pc} + tst r2, #0x20 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #1 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022EDCB4 + ldr r0, [r0] + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_022EDCB4: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_022EDC30 + + arm_func_start ov29_022EDCBC +ov29_022EDCBC: ; 0x022EDCBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r7, r1 + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + mov r6, r2 + mov r5, r3 + bl GetTileSafe + mov r4, r0 + cmp r7, #0x19 + blo _022EDD14 + mov sb, #0 + b _022EDD04 +_022EDCF0: + bl ov29_022E7A30 + mov r7, r0 + cmp r7, #0x11 + bne _022EDD0C + add sb, sb, #1 +_022EDD04: + cmp sb, #0x1e + blt _022EDCF0 +_022EDD0C: + cmp sb, #0x1e + moveq r7, #0x10 +_022EDD14: + ldrh r1, [r4] + tst r1, #0x200 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r4, #7] + cmp r0, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + tst r1, #8 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + tst r1, #0x20 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrh r0, [r4] + and r0, r0, #3 + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022EDDA0 + ldr r1, [r0] + cmp r1, #2 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl ov29_022E1608 + strb r7, [r0] + ldr r0, [r4, #0x10] + bl ov29_022E1608 + strb r6, [r0, #1] + ldr r1, [r4, #0x10] + mov r0, #1 + strb r5, [r1, #0x20] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022EDDA0: + mov r0, r7 + mov r1, r8 + mov r2, r6 + mov r3, #0 + bl ov29_022E2260 + movs r1, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r4 + mov r2, r5 + bl ov29_022ED858 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022EDCBC + + arm_func_start ov29_022EDDD4 +ov29_022EDDD4: ; 0x022EDDD4 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022EDE6C ; =0x02353538 + mov r5, r0 + ldr r0, [r1] + add r0, r0, #0x12000 + ldrb r2, [r0, #0xaa8] + cmp r2, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r2, #0 + strb r2, [r0, #0xaa8] + ldr r3, [r1] + ldr r0, _022EDE70 ; =0x00012AAA + add r2, r3, #0x12000 + ldrb r1, [r2, #0xaae] + ldrb r2, [r2, #0xaaf] + add r0, r3, r0 + mov r3, #1 + bl ov29_022EDCBC + movs r4, r0 + ldr r1, _022EDE70 ; =0x00012AAA + beq _022EDE48 + ldr r0, _022EDE6C ; =0x02353538 + ldr r2, _022EDE74 ; =0x00000E57 + ldr r3, [r0] + mov r0, r5 + add r1, r3, r1 + bl LogMessageByIdWithPopupCheckUserUnknown + b _022EDE60 +_022EDE48: + ldr r0, _022EDE6C ; =0x02353538 + ldr r2, _022EDE78 ; =0x00000E58 + ldr r3, [r0] + mov r0, r5 + add r1, r3, r1 + bl LogMessageByIdWithPopupCheckUserUnknown +_022EDE60: + bl ov29_02336F4C + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EDE6C: .word 0x02353538 +_022EDE70: .word 0x00012AAA +_022EDE74: .word 0x00000E57 +_022EDE78: .word 0x00000E58 + arm_func_end ov29_022EDDD4 + + arm_func_start ov29_022EDE7C +ov29_022EDE7C: ; 0x022EDE7C + stmdb sp!, {r4, lr} + mov r2, r0 + mov r4, r1 + ldrsh r0, [r2] + ldrsh r1, [r2, #2] + bl GetTileSafe + ldr r2, [r0, #0x10] + cmp r2, #0 + beq _022EDED4 + ldr r1, [r2] + cmp r1, #2 + bne _022EDECC + mov r1, #0 + str r1, [r2] + str r1, [r0, #0x10] + cmp r4, #0 + beq _022EDEC4 + bl ov29_02336F4C +_022EDEC4: + mov r0, #1 + ldmia sp!, {r4, pc} +_022EDECC: + mov r0, #0 + ldmia sp!, {r4, pc} +_022EDED4: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_022EDE7C + + arm_func_start ov29_022EDEDC +ov29_022EDEDC: ; 0x022EDEDC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl GetTile + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _022EDF50 + ldr r0, [r1] + cmp r0, #2 + bne _022EDF48 + ldr r0, _022EDF58 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x13] + cmp r0, #0 + bne _022EDF34 + mov r0, #1 + strb r0, [r1, #0x20] + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl ov29_023391EC +_022EDF34: + cmp r4, #0 + beq _022EDF40 + bl ov29_02336F4C +_022EDF40: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022EDF48: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_022EDF50: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EDF58: .word 0x02353538 + arm_func_end ov29_022EDEDC + + arm_func_start ov29_022EDF5C +ov29_022EDF5C: ; 0x022EDF5C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl sub_02024FC8 + bl ov29_0234B034 + add r0, r0, r5, lsl #2 + str r4, [r0, #0x10] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022EDF5C + + arm_func_start ov29_022EDF7C +ov29_022EDF7C: ; 0x022EDF7C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl sub_02024FC8 + add r0, r6, r5, lsl #2 + str r4, [r0, #0x10] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_022EDF7C + + arm_func_start ov29_022EDFA0 +ov29_022EDFA0: ; 0x022EDFA0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, r1 + mov sl, r0 + ldrsh r0, [sb] + ldrsh r1, [sb, #2] + mov fp, r2 + mov r7, r3 + bl GetTileSafe + ldr r4, [r0, #0x10] + str r0, [sp, #0x10] + cmp r4, #0 + beq _022EE2F4 + ldr r0, [r4] + cmp r0, #2 + bne _022EE2F4 + mov r0, r4 + bl ov29_022E1608 + mov r6, r0 + ldrb r1, [r6] + mov r0, #0 + bl ov29_022EDF5C + ldr r0, [sp, #0x10] + ldr r5, [r0, #0xc] + cmp r5, #0 + ldrne r0, [r5] + cmpne r0, #1 + ldrb r0, [r4, #0x20] + movne r5, #0 + cmp r5, #0 + str r0, [sp, #0xc] + mov r0, #1 + strb r0, [r4, #0x20] + beq _022EE1D8 + mov r0, r5 + bl ov29_022F9840 + cmp r7, #0 + ldrneb r0, [r6] + cmpne r0, #0x11 + beq _022EE148 + cmp r0, #0x17 + mov r8, #0 + moveq r7, #0x64 + beq _022EE05C + mov r0, #0x64 + bl DungeonRandInt + mov r7, r0 +_022EE05C: + mov r0, r5 + mov r1, #0x23 + bl ItemIsActive__022EE318 + cmp r0, #0 + ldrne r8, _022EE2FC ; =0x00000E59 + bne _022EE0C8 + mov r0, r5 + mov r1, #0x26 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022EE0C8 + mov r0, #0x32 + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _022EE0C8 + mov r1, sl + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + bl ov29_023361D4 + cmp r0, #0 + ldrne r8, _022EE300 ; =0x00000E5B + bne _022EE0C8 + mov r0, sb + mov r1, #1 + bl ov29_022EDE7C + ldr r8, _022EE304 ; =0x00000E5A +_022EE0C8: + ldr r0, [sp, #0xc] + cmp r0, #1 + beq _022EE0EC + ldr r0, _022EE308 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x244] + cmp r0, #0 + beq _022EE100 +_022EE0EC: + cmp r7, #0 + bge _022EE110 + cmp r8, #0 + ldreq r8, _022EE30C ; =0x00000E5C + b _022EE110 +_022EE100: + cmp r7, #0xf + bge _022EE110 + cmp r8, #0 + ldreq r8, _022EE30C ; =0x00000E5C +_022EE110: + cmp r8, #0 + beq _022EE1D8 + mov r0, sb + bl ov29_022E2CA0 + cmp r0, #0 + beq _022EE12C + bl ov29_02336F4C +_022EE12C: + mov r0, sl + mov r1, r5 + mov r2, r8 + bl LogMessageByIdWithPopupCheckUserTarget + cmp fp, #0 + bne _022EE1D8 + b _022EE2F4 +_022EE148: + mov r0, r5 + mov r1, #0x26 + mov r7, #0 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022EE1D8 + ldr r0, _022EE310 ; =0x022C445C + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _022EE1A4 + mov r1, sl + mov r0, #1 + mov r2, r7 + bl SubstitutePlaceholderStringTags + bl ov29_023361D4 + cmp r0, #0 + ldrne r7, _022EE300 ; =0x00000E5B + bne _022EE1A4 + mov r0, sb + mov r1, #1 + bl ov29_022EDE7C + ldr r7, _022EE304 ; =0x00000E5A +_022EE1A4: + cmp r7, #0 + beq _022EE1D8 + mov r0, sb + bl ov29_022E2CA0 + cmp r0, #0 + beq _022EE1C0 + bl ov29_02336F4C +_022EE1C0: + mov r0, sl + mov r1, r5 + mov r2, r7 + bl LogMessageByIdWithPopupCheckUserTarget + cmp fp, #0 + beq _022EE2F4 +_022EE1D8: + mov r0, sb + bl ov29_022E2CA0 + cmp r0, #0 + beq _022EE264 + mov r0, #0 + mov r1, #0x11c + bl ov29_022E56A0 + bl ov29_02336F4C + ldrb r2, [r6] + mov r0, sl + mov r1, sb + bl ov29_022E58B0 + mov r0, r4 + bl ov29_022E1608 + mov r6, r0 + mov r0, #0 + ldrb r1, [r6] + bl ov29_022EDF5C + ldr r0, _022EE308 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + beq _022EE248 + ldr r1, _022EE314 ; =0x00000E5D + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022EE264 +_022EE248: + ldrb r1, [r6] + mov r0, sl + add r1, r1, #0x51 + add r1, r1, #0xb00 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl LogMessageByIdWithPopupCheckUser +_022EE264: + cmp r5, #0 + beq _022EE29C + ldrb r0, [r6, #1] + cmp r0, #2 + bne _022EE288 + mov r0, r5 + mov r1, #1 + bl ov29_0230D47C + b _022EE29C +_022EE288: + cmp r0, #1 + bne _022EE29C + mov r0, r5 + mov r1, #0 + bl ov29_0230D47C +_022EE29C: + str sb, [sp] + ldrb r6, [r6] + mov r0, r4 + ldr r3, [sp, #0x10] + mov r1, sl + mov r2, r5 + str r6, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + bl ov29_022EF154 + mov r4, r0 + mov r0, r5 + bl EntityIsValid__022EE348 + cmp r0, #0 + beq _022EE2E0 + mov r0, r5 + bl EnemyEvolution +_022EE2E0: + cmp r4, #0 + beq _022EE2F4 + mov r0, sb + mov r1, #1 + bl ov29_022EDE7C +_022EE2F4: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EE2FC: .word 0x00000E59 +_022EE300: .word 0x00000E5B +_022EE304: .word 0x00000E5A +_022EE308: .word 0x02353538 +_022EE30C: .word 0x00000E5C +_022EE310: .word 0x022C445C +_022EE314: .word 0x00000E5D + arm_func_end ov29_022EDFA0 + + arm_func_start ItemIsActive__022EE318 +ItemIsActive__022EE318: ; 0x022EE318 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__022EE318 diff --git a/asm/overlay_29_022EE36C.s b/asm/overlay_29_022EE36C.s new file mode 100644 index 00000000..285d9657 --- /dev/null +++ b/asm/overlay_29_022EE36C.s @@ -0,0 +1,1496 @@ + .include "asm/macros.inc" + .include "overlay_29_022EE36C.inc" + + .text + + arm_func_start ov29_022EE36C +ov29_022EE36C: ; 0x022EE36C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + movs r4, r1 + mov r5, r0 + beq _022EE424 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x19 + mov ip, #1 + mov r3, #3 + bge _022EE3B8 + ldr r0, _022EE42C ; =0x02352AEC + str ip, [sp] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerOffensiveStat + b _022EE424 +_022EE3B8: + cmp r0, #0x32 + bge _022EE3E0 + ldr r0, _022EE430 ; =0x02352AE8 + str ip, [sp] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerOffensiveStat + b _022EE424 +_022EE3E0: + cmp r0, #0x4b + bge _022EE408 + ldr r0, _022EE42C ; =0x02352AEC + str ip, [sp] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerDefensiveStat + b _022EE424 +_022EE408: + ldr r0, _022EE430 ; =0x02352AE8 + str ip, [sp] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerDefensiveStat +_022EE424: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EE42C: .word 0x02352AEC +_022EE430: .word 0x02352AE8 + arm_func_end ov29_022EE36C + + arm_func_start ov29_022EE434 +ov29_022EE434: ; 0x022EE434 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xcc + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r1, #0x15 + ldr r7, [sb, #0xb4] + bl ItemIsActive__022EE318 + cmp r0, #0 + beq _022EE470 + mov r0, sl + mov r1, sb + mov r2, #0xe60 + bl LogMessageByIdWithPopupCheckUserTarget + b _022EE610 +_022EE470: + ldrb r0, [r7, #7] + mvn r4, #0 + mov r5, #0 + cmp r0, #0 + beq _022EE508 + ldr fp, _022EE618 ; =0x020AF6B8 + mov r6, r5 +_022EE48C: + mov r0, #6 + mul r8, r6, r0 + ldr r0, [fp] + ldr r0, [r0, #0x384] + add r1, r0, r8 + ldrb r0, [r0, r8] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022EE4FC + ldrsh r0, [r1, #4] + bl IsNotMoney + cmp r0, #0 + beq _022EE4FC + ldr r0, [fp] + ldr r0, [r0, #0x384] + add r1, r0, r8 + ldrb r0, [r0, r8] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldreqb r0, [r1, #1] + cmpeq r0, #0 + addeq r0, sp, #0 + streq r1, [r0, r5, lsl #2] + addeq r5, r5, #1 +_022EE4FC: + add r6, r6, #1 + cmp r6, #0x32 + blt _022EE48C +_022EE508: + ldrb r0, [r7, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022EE558 + ldrsh r0, [r7, #0x66] + bl IsNotMoney + cmp r0, #0 + beq _022EE558 + ldrb r0, [r7, #0x62] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addeq r0, sp, #0 + addeq r1, r7, #0x62 + moveq r4, r5 + streq r1, [r0, r5, lsl #2] + addeq r5, r5, #1 +_022EE558: + cmp r5, #0 + bne _022EE574 + ldr r2, _022EE61C ; =0x00000E5F + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _022EE610 +_022EE574: + mov r0, r5 + bl DungeonRandInt + mov r5, r0 + add r1, sp, #0 + ldr r1, [r1, r5, lsl #2] + mov r0, #0 + bl ov29_02344B44 + add r0, sp, #0 + ldr r1, [r0, r5, lsl #2] + ldrb r0, [r1] + orr r0, r0, #8 + strb r0, [r1] + ldrb r0, [r1, #1] + cmp r0, #0 + beq _022EE5E8 + cmp r5, r4 + bne _022EE5C4 + mov r1, #8 + bl sub_0200FAEC + b _022EE5E8 +_022EE5C4: + ldr r1, _022EE620 ; =0x02353538 + sub r0, r0, #1 + ldr r2, [r1] + add r1, r0, r0, lsl #3 + add r0, r2, #0x56 + add r2, r0, #0x800 + ldrb r0, [r2, r1, lsl #6] + orr r0, r0, #8 + strb r0, [r2, r1, lsl #6] +_022EE5E8: + bl ov29_022FB920 + ldr r1, _022EE624 ; =0x00000309 + mov r0, sb + bl ov29_022E56A0 + ldr r2, _022EE628 ; =0x00000E5E + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + bl ov29_022E8104 + bl ov29_022E81F8 +_022EE610: + add sp, sp, #0xcc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EE618: .word 0x020AF6B8 +_022EE61C: .word 0x00000E5F +_022EE620: .word 0x02353538 +_022EE624: .word 0x00000309 +_022EE628: .word 0x00000E5E + arm_func_end ov29_022EE434 + + arm_func_start ov29_022EE62C +ov29_022EE62C: ; 0x022EE62C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xd8 + movs sl, r1 + mov fp, r0 + mov r5, #0 + beq _022EE800 + ldr r2, [sl, #0xb4] + sub r0, r5, #1 + ldrb r1, [r2, #7] + mov r4, r5 + str r0, [sp, #4] + cmp r1, #0 + beq _022EE6C0 + ldr r0, _022EE808 ; =0x020AF6B8 + mov r1, r5 + ldr r6, [r0] + mov lr, r5 + ldr r3, [r6, #0x384] + mov r0, #1 + add sb, sp, #8 + mov r8, #6 +_022EE680: + mul r7, r1, r8 + ldrb ip, [r3, r7] + tst ip, #1 + movne ip, r0 + moveq ip, lr + tst ip, #0xff + beq _022EE6B4 + ldr ip, [r6, #0x384] + add ip, ip, r7 + ldrb r7, [ip, #1] + cmp r7, #0 + streq ip, [sb, r4, lsl #2] + addeq r4, r4, #1 +_022EE6B4: + add r1, r1, #1 + cmp r1, #0x32 + blt _022EE680 +_022EE6C0: + ldrb r0, [r2, #0x62] + mov sb, #0 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r0, sp, #8 + addne r1, r2, #0x62 + strne r1, [r0, r4, lsl #2] + ldr r0, _022EE80C ; =0x022C4434 + strne r4, [sp, #4] + ldrsh r0, [r0] + addne r4, r4, #1 + str r0, [sp] + b _022EE7B0 +_022EE6FC: + add r0, sp, #8 + ldr r7, [r0, sb, lsl #2] + ldrsh r0, [r7, #4] + bl GetItemCategoryVeneer + cmp r0, #3 + bne _022EE7AC + ldrsh r0, [r7, #4] + cmp r0, #0x6f + beq _022EE7AC + mov r0, #0x64 + bl DungeonRandInt + ldr r1, [sp] + cmp r0, r1 + bge _022EE7AC + add r0, sp, #8 + ldr r8, [r0, sb, lsl #2] + mov r1, #0x6f + ldrb r6, [r8, #1] + mov r0, r8 + mov r2, #2 + add r5, r5, #1 + bl ov29_02344BD0 + cmp r6, #0 + beq _022EE7AC + ldr r0, [sp, #4] + strb r6, [r7, #1] + cmp sb, r0 + bne _022EE77C + add r0, sp, #8 + ldr r0, [r0, sb, lsl #2] + bl sub_0200FA68 + b _022EE7AC +_022EE77C: + ldr r0, _022EE810 ; =0x02353538 + ldrb r2, [r8, #1] + ldr r3, [r0] + ldrh r1, [r8] + add r0, r2, r2, lsl #3 + add r0, r3, r0, lsl #6 + add r0, r0, #0x600 + strh r1, [r0, #0x16] + ldrh r1, [r8, #2] + strh r1, [r0, #0x18] + ldrh r1, [r8, #4] + strh r1, [r0, #0x1a] +_022EE7AC: + add sb, sb, #1 +_022EE7B0: + cmp sb, r4 + blt _022EE6FC + cmp r5, #0 + bne _022EE7D4 + ldr r2, _022EE814 ; =0x00000E63 + mov r0, fp + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + b _022EE800 +_022EE7D4: + cmp r5, #1 + bne _022EE7F0 + ldr r2, _022EE818 ; =0x00000E61 + mov r0, fp + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + b _022EE800 +_022EE7F0: + ldr r2, _022EE81C ; =0x00000E62 + mov r0, fp + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget +_022EE800: + add sp, sp, #0xd8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EE808: .word 0x020AF6B8 +_022EE80C: .word 0x022C4434 +_022EE810: .word 0x02353538 +_022EE814: .word 0x00000E63 +_022EE818: .word 0x00000E61 +_022EE81C: .word 0x00000E62 + arm_func_end ov29_022EE62C + + arm_func_start ov29_022EE820 +ov29_022EE820: ; 0x022EE820 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r7, r1 + mov r8, r0 + mov r6, r2 + mov r5, r3 + mov r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022EE980 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_02344148 + cmp r0, #0 + bne _022EE868 + ldr r1, _022EE984 ; =0x00000E64 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022EE868: + cmp r5, #0 + ldr r5, [r7, #0xb4] + bne _022EE8AC + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _022EE8AC + mov r0, r6 + mov r1, #0x20 + bl ov29_022EF478 + mov r0, r7 + mov r1, #0x308 + mov r4, #1 + bl ov29_022E56A0 + mov r0, #0x1e + mov r1, #0x48 + bl ov29_022EA370 +_022EE8AC: + ldrb r0, [r5, #7] + cmp r0, #0 + beq _022EE91C + bl GetFloorType + cmp r0, #2 + beq _022EE90C + mov r2, #1 + strb r2, [r5, #0x172] + mov r0, #0x28 + mov r1, #0x4b + strb r2, [r5, #0x174] + bl ov29_022EA370 + ldr r1, _022EE988 ; =0x022C44E4 + mov r0, r7 + ldrsh r1, [r1] + mov r2, #0x11 + mov r3, #0x254 + bl ov29_0230D11C + ldr r0, _022EE980 ; =0x02353538 + mov r1, #2 + ldr r0, [r0] + mov r4, #0 + strb r1, [r0, #6] + b _022EE968 +_022EE90C: + ldr r1, _022EE98C ; =0x00000E66 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _022EE968 +_022EE91C: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #6] + cmp r0, #0 + beq _022EE94C + ldr r2, _022EE990 ; =0x00000E65 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _022EE958 +_022EE94C: + ldr r1, _022EE990 ; =0x00000E65 + mov r0, r8 + bl LogMessageByIdWithPopup +_022EE958: + mov r0, r7 + mov r2, r8 + mov r1, #0x254 + bl HandleFaint +_022EE968: + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + mov r1, #5 + bl ov29_022EF478 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EE980: .word 0x02353538 +_022EE984: .word 0x00000E64 +_022EE988: .word 0x022C44E4 +_022EE98C: .word 0x00000E66 +_022EE990: .word 0x00000E65 + arm_func_end ov29_022EE820 + + arm_func_start ov29_022EE994 +ov29_022EE994: ; 0x022EE994 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #3 + mov r5, r1 + bl DungeonRandInt + ldr r1, _022EEA20 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_02344148 + cmp r0, #0 + bne _022EE9D8 + ldr r1, _022EEA24 ; =0x00000E68 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022EE9D8: + mov r0, r6 + mov r1, r5 + add r2, r4, #2 + bl ov29_022EF4B4 + mov r4, r0 + ldr r1, _022EEA28 ; =0x0000030F + mov r0, r5 + bl ov29_022E56D4 + cmp r4, #0 + bne _022EEA10 + ldr r1, _022EEA24 ; =0x00000E68 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022EEA10: + ldr r1, _022EEA2C ; =0x00000E67 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EEA20: .word 0x02353538 +_022EEA24: .word 0x00000E68 +_022EEA28: .word 0x0000030F +_022EEA2C: .word 0x00000E67 + arm_func_end ov29_022EE994 + + arm_func_start ov29_022EEA30 +ov29_022EEA30: ; 0x022EEA30 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + movs r4, r1 + mov r5, r0 + mov r8, #0 + beq _022EEB08 + ldr r1, [r4, #0xb4] + mov r0, r8 + add lr, r1, #0x124 + mov r7, r8 + mov r6, r8 + mov ip, #1 + add r2, sp, #0x10 + add r1, sp, #0 +_022EEA68: + ldrb r3, [lr, r7, lsl #3] + add sb, lr, r7, lsl #3 + tst r3, #1 + movne r3, ip + moveq r3, r6 + tst r3, #0xff + ldrneb r3, [sb, #6] + cmpne r3, #0 + strne r7, [r1, r0, lsl #2] + strne sb, [r2, r0, lsl #2] + add r7, r7, #1 + addne r0, r0, #1 + cmp r7, #4 + blt _022EEA68 + cmp r0, #0 + beq _022EEADC + bl DungeonRandInt + mov r6, r0 + add r1, sp, #0x10 + ldr r1, [r1, r6, lsl #2] + mov r0, #0 + strb r0, [r1, #6] + ldrh r1, [r1, #4] + bl ov29_0234B084 + add r1, sp, #0 + ldr r1, [r1, r6, lsl #2] + mov r0, r4 + bl ov29_022FA574 + mov r8, #1 +_022EEADC: + cmp r8, #0 + beq _022EEAF8 + ldr r2, _022EEB10 ; =0x00000E69 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _022EEB08 +_022EEAF8: + ldr r2, _022EEB14 ; =0x00000E6A + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_022EEB08: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EEB10: .word 0x00000E69 +_022EEB14: .word 0x00000E6A + arm_func_end ov29_022EEA30 + + arm_func_start ov29_022EEB18 +ov29_022EEB18: ; 0x022EEB18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sl, r0 + mov r4, r1 + mov r7, #0 + bl ov29_022E333C + ldr r1, _022EED1C ; =0x02353538 + mov r5, r0 + ldr r0, [r1] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_02344148 + cmp r0, #0 + bne _022EEB60 + ldr r1, _022EED20 ; =0x00000E6B + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022EED14 +_022EEB60: + ldrsh r0, [r4] + ldrsh r1, [r4, #2] + bl GetTile + ldrb r2, [r0, #7] + cmp r2, #0xff + bne _022EEB94 + ldrsh r1, [r4] + ldrsh r0, [r4, #2] + sub fp, r1, r5 + sub sb, r0, r5 + add r4, r1, r5 + add r5, r0, r5 + b _022EECE8 +_022EEB94: + ldr r0, _022EED1C ; =0x02353538 + mov r1, #0x1c + ldr r0, [r0] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r0, r2, r1, r0 + ldrsh r3, [r0, #2] + ldrsh r2, [r0, #4] + ldrsh r1, [r0, #6] + ldrsh r0, [r0, #8] + sub fp, r3, #1 + sub sb, r2, #1 + add r4, r1, #1 + add r5, r0, #1 + b _022EECE8 +_022EEBD0: + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + mov r6, fp + str r0, [sp] + b _022EECDC +_022EEBE4: + mov r0, r6 + mov r1, sb + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022EECD8 + ldr r1, [r0] + cmp r1, #3 + bne _022EECD8 + bl ov29_022E1610 + ldrb r0, [r0] + tst r0, #2 + bne _022EECD8 + bl GetKecleonIdToSpawnByFloor + strh r0, [sp, #4] + mov r8, #0 + b _022EEC68 +_022EEC28: + ldr r0, _022EED1C ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + beq _022EEC44 + bl GetKecleonIdToSpawnByFloor + b _022EEC4C +_022EEC44: + mov r0, #0 + bl GetMonsterIdToSpawn +_022EEC4C: + strh r0, [sp, #4] + ldrsh r0, [sp, #4] + mov r1, #0 + bl MewSpawnCheck + cmp r0, #0 + bne _022EEC70 + add r8, r8, #1 +_022EEC68: + cmp r8, #0x64 + blt _022EEC28 +_022EEC70: + ldrsh r0, [sp, #4] + mov r1, #0 + bl MewSpawnCheck + cmp r0, #0 + beq _022EECCC + mov r0, #0 + strh r0, [sp, #0xc] + strb r0, [sp, #6] + ldr r0, [sp] + mov r1, #1 + strh r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #8] + strb r0, [sp, #0x12] + add r0, sp, #4 + strh r6, [sp, #0xe] + bl SpawnMonster + cmp r0, #0 + beq _022EECCC + add r0, sp, #0xe + mov r1, #0 + bl ov29_023456BC + add r7, r7, #1 +_022EECCC: + mov r0, r6 + mov r1, sb + bl ov29_023391EC +_022EECD8: + add r6, r6, #1 +_022EECDC: + cmp r6, r4 + ble _022EEBE4 + add sb, sb, #1 +_022EECE8: + cmp sb, r5 + ble _022EEBD0 + cmp r7, #0 + beq _022EED08 + ldr r1, _022EED24 ; =0x00000E6C + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022EED14 +_022EED08: + ldr r1, _022EED28 ; =0x00000E6D + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_022EED14: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EED1C: .word 0x02353538 +_022EED20: .word 0x00000E6B +_022EED24: .word 0x00000E6C +_022EED28: .word 0x00000E6D + arm_func_end ov29_022EEB18 + + arm_func_start ov29_022EED2C +ov29_022EED2C: ; 0x022EED2C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + movs r5, r1 + mov r6, r0 + beq _022EEE38 + mov r0, r5 + mov r1, #6 + mov r2, #8 + bl ov29_023049A8 + mov r0, #0x10 + mov r1, #0x55 + bl ov29_022EA370 + mov r0, r5 + mov r1, #8 + bl ov29_02304A48 + mov r0, r5 + mov r1, #0x2c + ldr r4, [r5, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + bne _022EEE38 + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022EEE38 + ldrh r0, [r4, #0x62] + strh r0, [sp, #0x10] + ldrh r0, [r4, #0x64] + strh r0, [sp, #0x12] + ldrh r0, [r4, #0x66] + strh r0, [sp, #0x14] + ldrb r0, [r4, #6] + cmp r0, #0 + bne _022EEDC4 + ldrb r0, [r4, #0x63] + bl RemoveHeldItemNoHole +_022EEDC4: + mov r0, #0 + strb r0, [r4, #0x62] + bl ov29_02347030 + ldr r1, _022EEE40 ; =0x0000130F + mov r0, r5 + bl ov29_022E56A0 + ldrb r1, [r4, #0x4c] + ldr r0, _022EEE44 ; =0x0235171C + ldrsh r3, [r5, #4] + mov r1, r1, lsl #0x1d + mov r4, r1, lsr #0x1b + ldrsh r2, [r0, r4] + ldr r1, _022EEE48 ; =0x0235171E + mov r0, r6 + add r2, r3, r2 + strh r2, [sp, #0xc] + ldrsh r2, [r1, r4] + ldrsh r3, [r5, #6] + mov r4, #1 + ldr r1, _022EEE4C ; =0x02351844 + add r2, r3, r2 + strh r2, [sp, #0xe] + str r4, [sp] + str r1, [sp, #4] + add r2, sp, #0xc + add r3, sp, #0x10 + add r1, r5, #4 + str r4, [sp, #8] + bl ov29_02346344 +_022EEE38: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022EEE40: .word 0x0000130F +_022EEE44: .word 0x0235171C +_022EEE48: .word 0x0235171E +_022EEE4C: .word 0x02351844 + arm_func_end ov29_022EED2C + + arm_func_start ov29_022EEE50 +ov29_022EEE50: ; 0x022EEE50 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + mov r1, #0xd + ldr r5, [r4, #0xb4] + bl ov29_02301EAC + cmp r0, #0 + bne _022EEEBC + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _022EEEDC ; =0x000003E7 + add r2, r2, r1 + ldr r1, _022EEEE0 ; =0x022C4770 + cmp r2, r0 + movgt r2, r0 + ldr r1, [r1] + mov r0, r2, lsl #8 + bl MultiplyByFixedPoint + bl sub_02001888 + mov r1, r0 + ldr r3, _022EEEE4 ; =0x0000026D + mov r0, r4 + mov r1, r1, asr #8 + mov r2, #0x16 + bl ov29_0230D11C + ldmia sp!, {r3, r4, r5, pc} +_022EEEBC: + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022EEEE8 ; =0x00000E6E + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EEEDC: .word 0x000003E7 +_022EEEE0: .word 0x022C4770 +_022EEEE4: .word 0x0000026D +_022EEEE8: .word 0x00000E6E + arm_func_end ov29_022EEE50 + + arm_func_start ov29_022EEEEC +ov29_022EEEEC: ; 0x022EEEEC + stmdb sp!, {r3, r4, r5, lr} + movs r4, r1 + mov r5, r0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _022EEF3C ; =0x022C45CC + mov r0, r4 + ldrsh r1, [r1] + mov r2, #0x15 + mov r3, #0x26c + bl ov29_0230D11C + mov r0, r4 + bl ov29_022FBD80 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022EEF3C: .word 0x022C45CC + arm_func_end ov29_022EEEEC + + arm_func_start ov29_022EEF40 +ov29_022EEF40: ; 0x022EEF40 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x64 + movs sb, r2 + str r0, [sp, #0xc] + mov sl, r1 + str r3, [sp, #0x10] + ldr r8, [sp, #0x88] + beq _022EF064 + bl ov29_022E7A8C + ldr r1, _022EF06C ; =0x022C4B18 + mov r4, r0 + ldrb r0, [r1, r4] + cmp r0, #0 + bne _022EEFB0 + mov r0, sl + mov r1, r8 + mov r2, r4 + bl ov29_022E58B0 + str r8, [sp] + str r4, [sp, #4] + mov r4, #1 + ldr r0, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r1, sl + mov r2, sb + str r4, [sp, #8] + bl ov29_022EF154 + b _022EF064 +_022EEFB0: + ldr r0, [sb, #0xb4] + mov r5, #0 + ldrb fp, [r0, #6] + str sb, [sp, #0x14] + add r7, r5, #1 +_022EEFC4: + ldr r0, _022EF070 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__022EE348 + cmp r0, #0 + cmpne sb, r6 + beq _022EF004 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #6] + cmp fp, r0 + addeq r0, sp, #0x14 + streq r6, [r0, r7, lsl #2] + addeq r7, r7, #1 +_022EF004: + add r5, r5, #1 + cmp r5, #0x14 + blt _022EEFC4 + mov sb, #0 + add r5, sp, #0x14 + mov fp, #1 + b _022EF05C +_022EF020: + ldr r6, [r5, sb, lsl #2] + mov r2, r4 + mov r0, r6 + add r1, r6, #4 + bl ov29_022E58B0 + str r8, [sp] + ldr r0, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r6 + mov r1, sl + stmib sp, {r4, fp} + bl ov29_022EF154 + mov r0, #1 + bl ov29_022E38E0 + add sb, sb, #1 +_022EF05C: + cmp sb, r7 + blt _022EF020 +_022EF064: + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EF06C: .word 0x022C4B18 +_022EF070: .word 0x02353538 + arm_func_end ov29_022EEF40 + + arm_func_start ov29_022EF074 +ov29_022EF074: ; 0x022EF074 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + mov r0, #3 + mov r4, r1 + bl DungeonRandInt + mov r2, r0 + mov r0, sl + mov r1, r4 + add r2, r2, #2 + bl ov29_022EF4B4 + cmp r0, #0 + ble _022EF0B0 + ldr r1, _022EF148 ; =0x0000030F + mov r0, r4 + bl ov29_022E56D4 +_022EF0B0: + mov r7, #0 + ldr r4, _022EF14C ; =0x02353538 + mov r8, r7 + mov r5, #1 + mov r6, r7 +_022EF0C4: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb38] + mov r0, sb + bl EntityIsValid__022EE348 + cmp r0, #0 + ldrne r0, [sb, #0xb4] + ldrneb r1, [r0, #9] + cmpne r1, #1 + ldrneb r1, [r0, #0xbc] + cmpne r1, #7 + beq _022EF11C + bl IsExperienceLocked + cmp r0, #0 + bne _022EF11C + mov r0, sb + mov r1, sb + mov r2, r6 + bl ov29_02314EB8 + cmp r0, #0 + movne r7, r5 +_022EF11C: + add r8, r8, #1 + cmp r8, #0x10 + blt _022EF0C4 + cmp r7, #0 + ldrne r0, _022EF150 ; =0x00000E6F + moveq r0, #0xe70 + mov r1, r0, lsl #0x10 + mov r0, sl + mov r1, r1, lsr #0x10 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022EF148: .word 0x0000030F +_022EF14C: .word 0x02353538 +_022EF150: .word 0x00000E6F + arm_func_end ov29_022EF074 + + arm_func_start ov29_022EF154 +ov29_022EF154: ; 0x022EF154 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldrb ip, [sp, #0x24] + ldr lr, [sp, #0x20] + mov r7, r0 + mov r6, r1 + mov r5, r2 + cmp ip, #0x20 + mov r4, #0 + addls pc, pc, ip, lsl #2 + b _022EF454 +_022EF180: ; jump table + b _022EF454 ; case 0 + b _022EF204 ; case 1 + b _022EF214 ; case 2 + b _022EF224 ; case 3 + b _022EF234 ; case 4 + b _022EF248 ; case 5 + b _022EF260 ; case 6 + b _022EF280 ; case 7 + b _022EF2A4 ; case 8 + b _022EF2C4 ; case 9 + b _022EF2F4 ; case 10 + b _022EF314 ; case 11 + b _022EF328 ; case 12 + b _022EF348 ; case 13 + b _022EF368 ; case 14 + b _022EF388 ; case 15 + b _022EF398 ; case 16 + b _022EF3BC ; case 17 + b _022EF3D0 ; case 18 + b _022EF3E4 ; case 19 + b _022EF408 ; case 20 + b _022EF418 ; case 21 + b _022EF428 ; case 22 + b _022EF438 ; case 23 + b _022EF444 ; case 24 + b _022EF454 ; case 25 + b _022EF454 ; case 26 + b _022EF454 ; case 27 + b _022EF454 ; case 28 + b _022EF454 ; case 29 + b _022EF454 ; case 30 + b _022EF454 ; case 31 + b _022EF248 ; case 32 +_022EF204: + mov r0, r6 + mov r1, r5 + bl ov29_022EE36C + b _022EF454 +_022EF214: + mov r0, r6 + mov r1, r5 + bl ov29_022EE434 + b _022EF454 +_022EF224: + mov r0, r6 + mov r1, r5 + bl ov29_022EE62C + b _022EF454 +_022EF234: + mov r0, r6 + mov r1, lr + bl ov29_022EE994 + mov r4, #1 + b _022EF454 +_022EF248: + mov r2, r3 + ldrb r3, [sp, #0x28] + mov r0, r6 + mov r1, r5 + bl ov29_022EE820 + b _022EF454 +_022EF260: + cmp r5, #0 + beq _022EF454 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, r4 + bl TryWarp + b _022EF454 +_022EF280: + cmp r5, #0 + beq _022EF454 + mov r0, #8 + bl DungeonRandInt + mov r2, r0 + mov r0, r7 + mov r1, r5 + bl TryBlowAway + b _022EF454 +_022EF2A4: + cmp r5, #0 + beq _022EF454 + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #1 + bl TryInflictConfusedStatus + b _022EF454 +_022EF2C4: + cmp r5, #0 + beq _022EF454 + ldr r1, _022EF460 ; =0x022C4720 + mov r0, r5 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r6 + mov r1, r5 + mov r3, #1 + bl TryInflictSleepStatus + b _022EF454 +_022EF2F4: + cmp r5, #0 + beq _022EF454 + mov r2, #1 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl LowerSpeed + b _022EF454 +_022EF314: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl TrySealMove + b _022EF454 +_022EF328: + cmp r5, #0 + beq _022EF454 + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #1 + bl TryInflictPoisonedStatus + b _022EF454 +_022EF348: + ldr ip, _022EF464 ; =0x00000251 + mov r0, r6 + mov r1, r5 + add r2, r5, #4 + mov r3, #1 + stmia sp, {r4, ip} + bl ov29_02320448 + b _022EF454 +_022EF368: + ldr ip, _022EF464 ; =0x00000251 + mov r0, r6 + mov r1, r5 + add r2, r5, #4 + mov r3, #2 + stmia sp, {r4, ip} + bl ov29_02320448 + b _022EF454 +_022EF388: + mov r0, r6 + mov r1, r5 + bl ov29_022EEA30 + b _022EF454 +_022EF398: + cmp r5, #0 + beq _022EF454 + ldr r0, _022EF468 ; =0x022C45C8 + ldr r3, _022EF46C ; =0x00000252 + ldrsh r1, [r0] + mov r0, r5 + mov r2, #0xf + bl ov29_0230D11C + b _022EF454 +_022EF3BC: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl ov29_02319624 + b _022EF454 +_022EF3D0: + mov r0, r6 + mov r1, lr + bl ov29_022EEB18 + mov r4, #1 + b _022EF454 +_022EF3E4: + cmp r5, #0 + beq _022EF454 + ldr r0, _022EF470 ; =0x022C4418 + ldr r3, _022EF474 ; =0x00000245 + ldrsh r1, [r0] + mov r0, r5 + mov r2, #0xa + bl ov29_0230D11C + b _022EF454 +_022EF408: + mov r0, r6 + mov r1, r5 + bl ov29_022EEE50 + b _022EF454 +_022EF418: + mov r0, r6 + mov r1, r5 + bl ov29_022EEEEC + b _022EF454 +_022EF428: + mov r0, r6 + mov r1, r5 + bl ov29_022EED2C + b _022EF454 +_022EF438: + str lr, [sp] + bl ov29_022EEF40 + b _022EF454 +_022EF444: + mov r0, r6 + mov r1, lr + bl ov29_022EF074 + mov r4, #1 +_022EF454: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EF460: .word 0x022C4720 +_022EF464: .word 0x00000251 +_022EF468: .word 0x022C45C8 +_022EF46C: .word 0x00000252 +_022EF470: .word 0x022C4418 +_022EF474: .word 0x00000245 + arm_func_end ov29_022EF154 + + arm_func_start ov29_022EF478 +ov29_022EF478: ; 0x022EF478 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0, #0x10] + mov r5, r1 + mov r0, r4 + bl EntityIsValid__022EE348 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4] + cmp r0, #2 + bne _022EF4AC + mov r0, r4 + bl ov29_022E1608 + strb r5, [r0] +_022EF4AC: + bl ov29_02336F4C + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022EF478 + + arm_func_start ov29_022EF4B4 +ov29_022EF4B4: ; 0x022EF4B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r0, #8 + mov sl, r1 + mov sb, r2 + bl DungeonRandInt + mov r8, r0 + ldr r0, _022EF5D0 ; =0x0000017B + mov r7, #0 + mov r6, r7 + add r5, r0, #2 + add r4, r0, #3 + b _022EF5BC +_022EF4E8: + mov r0, #0 + bl GetMonsterIdToSpawn + mov fp, r0 + bl FemaleToMaleForm + ldr r1, _022EF5D0 ; =0x0000017B + cmp r0, r1 + cmpne r0, #0x17c + cmpne r0, r5 + cmpne r0, r4 + beq _022EF52C + sub r0, r0, #0x1cc + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022EF534 +_022EF52C: + mov r0, #1 + b _022EF538 +_022EF534: + mov r0, #0 +_022EF538: + cmp r0, #0 + bne _022EF5B8 + strh fp, [sp] + ldrsh r0, [sp] + mov r1, #0 + and r8, r8, #7 + bl MewSpawnCheck + cmp r0, #0 + beq _022EF5B4 + ldr r1, _022EF5D4 ; =0x0235171C + mov r0, #0 + mov r2, r8, lsl #2 + ldrsh r3, [r1, r2] + strh r0, [sp, #8] + strb r0, [sp, #2] + ldrsh r0, [sl] + add r1, r1, r8, lsl #2 + ldrsh r2, [r1, #2] + add r0, r0, r3 + strh r0, [sp, #0xa] + ldrsh r3, [sl, #2] + add r0, sp, #0 + mov r1, #1 + add r2, r3, r2 + strh r2, [sp, #0xc] + mov r2, #0 + str r2, [sp, #4] + strb r2, [sp, #0xe] + bl SpawnMonster + cmp r0, #0 + addne r7, r7, #1 +_022EF5B4: + add r8, r8, #1 +_022EF5B8: + add r6, r6, #1 +_022EF5BC: + cmp r6, sb + blt _022EF4E8 + mov r0, r7 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022EF5D0: .word 0x0000017B +_022EF5D4: .word 0x0235171C + arm_func_end ov29_022EF4B4 + + arm_func_start ov29_022EF5D8 +ov29_022EF5D8: ; 0x022EF5D8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r5, #0 + bl ov29_022E333C + ldrb r7, [r8, #0x25] + mov r6, r0 + cmp r7, #0xff + beq _022EF608 + mov r0, r8 + bl HasDropeyeStatus + cmp r0, #0 + beq _022EF65C +_022EF608: + ldrsh r0, [r8, #6] + sub r4, r0, r6 + b _022EF648 +_022EF614: + ldrsh r0, [r8, #4] + sub r7, r0, r6 + b _022EF634 +_022EF620: + mov r0, r7 + mov r1, r4 + bl ov29_022EF700 + orr r5, r5, r0 + add r7, r7, #1 +_022EF634: + ldrsh r0, [r8, #4] + add r0, r0, r6 + cmp r7, r0 + ble _022EF620 + add r4, r4, #1 +_022EF648: + ldrsh r0, [r8, #6] + add r0, r0, r6 + cmp r4, r0 + ble _022EF614 + b _022EF6C4 +_022EF65C: + ldr r0, _022EF6F4 ; =0x02353538 + mov r1, #0x1c + ldr r0, [r0] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r4, r7, r1, r0 + ldrsh r0, [r4, #4] + sub r6, r0, #1 + b _022EF6B4 +_022EF680: + ldrsh r0, [r4, #2] + sub r7, r0, #1 + b _022EF6A0 +_022EF68C: + mov r0, r7 + mov r1, r6 + bl ov29_022EF700 + orr r5, r5, r0 + add r7, r7, #1 +_022EF6A0: + ldrsh r0, [r4, #6] + add r0, r0, #1 + cmp r7, r0 + ble _022EF68C + add r6, r6, #1 +_022EF6B4: + ldrsh r0, [r4, #8] + add r0, r0, #1 + cmp r6, r0 + ble _022EF680 +_022EF6C4: + cmp r5, #0 + beq _022EF6E4 + ldr r1, _022EF6F8 ; =0x00000E02 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + bl ov29_02339CE8 + bl ov29_02336F4C + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022EF6E4: + ldr r1, _022EF6FC ; =0x00000E03 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EF6F4: .word 0x02353538 +_022EF6F8: .word 0x00000E02 +_022EF6FC: .word 0x00000E03 + arm_func_end ov29_022EF5D8 + + arm_func_start ov29_022EF700 +ov29_022EF700: ; 0x022EF700 + stmdb sp!, {r3, lr} + bl GetTile + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _022EF730 + ldr r0, [r1] + cmp r0, #2 + ldreqb r0, [r1, #0x20] + cmpeq r0, #0 + moveq r0, #1 + streqb r0, [r1, #0x20] + ldmeqia sp!, {r3, pc} +_022EF730: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_022EF700 + + arm_func_start ov29_022EF738 +ov29_022EF738: ; 0x022EF738 + stmdb sp!, {r3, lr} + bl ov29_023361D4 + cmp r0, #0 + beq _022EF780 + ldr r0, _022EF798 ; =0x02353538 + mov r1, #0xc + ldr r0, [r0] + ldr r2, _022EF79C ; =0x022C6C7A + add r0, r0, #0x4000 + ldrb r3, [r0, #0xda] + smulbb r1, r3, r1 + ldrb r1, [r2, r1] + cmp r1, #0 + movne r1, #2 + strneb r1, [r0, #0xca] + moveq r1, #1 + streqb r1, [r0, #0xca] + ldmia sp!, {r3, pc} +_022EF780: + ldr r0, _022EF798 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x4000 + strb r1, [r0, #0xca] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EF798: .word 0x02353538 +_022EF79C: .word 0x022C6C7A + arm_func_end ov29_022EF738 diff --git a/asm/overlay_29_022EF7C4.s b/asm/overlay_29_022EF7C4.s new file mode 100644 index 00000000..c4a8d8e8 --- /dev/null +++ b/asm/overlay_29_022EF7C4.s @@ -0,0 +1,1026 @@ + .include "asm/macros.inc" + .include "overlay_29_022EF7C4.inc" + + .text + + arm_func_start ov29_022EF7C4 +ov29_022EF7C4: ; 0x022EF7C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r7, r2 + cmp r1, #5 + ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r4, _022EF89C ; =0x02353538 + ldr r0, [r4] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xca] + cmp r0, #0 + cmpne r0, #1 + cmpne r0, #3 + beq _022EF874 + mov r5, #1 + mov r6, #0 + b _022EF84C +_022EF804: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb38] + cmp r8, sb + beq _022EF840 + mov r0, sb + bl EntityIsValid__022EF7A0 + cmp r0, #0 + beq _022EF840 + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #8] + cmp r0, #0 + moveq r5, #0 + beq _022EF854 +_022EF840: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_022EF84C: + cmp r6, #0x10 + blt _022EF804 +_022EF854: + cmp r5, #0 + beq _022EF874 + mov r0, #0x64 + bl ov29_0234BA54 + ldr r0, _022EF89C ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #6] +_022EF874: + cmp r7, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, _022EF89C ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #6] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, _022EF8A0 ; =0x000003E7 + bl ov29_022EAE14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EF89C: .word 0x02353538 +_022EF8A0: .word 0x000003E7 + arm_func_end ov29_022EF7C4 + + arm_func_start ov29_022EF8A4 +ov29_022EF8A4: ; 0x022EF8A4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, #1 + ldr r5, _022EF934 ; =0x02353538 + mov r7, r8 + mov r6, #0 + mvn r4, #0 +_022EF8BC: + ldr r0, [r5] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb28] + cmp sb, #0 + beq _022EF918 + mov r0, sb + bl EntityIsValid__022EF7A0 + cmp r0, #0 + ldrne r0, [r5] + addne r0, r0, r8, lsl #2 + addne r0, r0, #0xcc00 + ldrnesh r1, [r0, #0xec] + cmpne r1, r4 + ldrnesh r2, [r0, #0xee] + cmpne r2, r4 + beq _022EF918 + mov r0, sb + mov r3, r7 + bl ov29_022F85F0 + mov r0, sb + mov r1, r6 + bl ov29_022E1A40 +_022EF918: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022EF8BC + bl ov29_023444D4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022EF934: .word 0x02353538 + arm_func_end ov29_022EF8A4 + + arm_func_start ov29_022EF938 +ov29_022EF938: ; 0x022EF938 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r5, _022EF9B4 ; =0x02353538 + mov r4, #0 + mov r6, #4 +_022EF948: + ldr r0, [r5] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + cmp r7, #0 + beq _022EF99C + mov r0, r7 + bl EntityIsValid__022EF7A0 + cmp r0, #0 + beq _022EF99C + ldr r0, [r5] + add r0, r0, r4 + add r0, r0, #0xc000 + ldrb r1, [r0, #0xd0c] + mov r0, r7 + cmp r1, #0xff + beq _022EF994 + bl ov29_022FA360 + b _022EF99C +_022EF994: + mov r1, r6 + bl ov29_022FA360 +_022EF99C: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #4 + blt _022EF948 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022EF9B4: .word 0x02353538 + arm_func_end ov29_022EF938 + + arm_func_start ov29_022EF9B8 +ov29_022EF9B8: ; 0x022EF9B8 + bx lr + arm_func_end ov29_022EF9B8 + + arm_func_start ov29_022EF9BC +ov29_022EF9BC: ; 0x022EF9BC + ldr ip, _022EF9C4 ; =ov29_02348F20 + bx ip + .align 2, 0 +_022EF9C4: .word ov29_02348F20 + arm_func_end ov29_022EF9BC + + arm_func_start ov29_022EF9C8 +ov29_022EF9C8: ; 0x022EF9C8 + stmdb sp!, {r3, lr} + bl IsFloorOver + cmp r0, #0 + ldreq r0, _022EF9E8 ; =0x02353538 + ldreq r0, [r0] + ldreqb r0, [r0, #6] + cmpeq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022EF9E8: .word 0x02353538 + arm_func_end ov29_022EF9C8 + + arm_func_start ov29_022EF9EC +ov29_022EF9EC: ; 0x022EF9EC + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xbc] + cmp r0, #0x14 + addls pc, pc, r0, lsl #2 + b _022EFA64 +_022EFA00: ; jump table + b _022EFA5C ; case 0 + b _022EFA5C ; case 1 + b _022EFA5C ; case 2 + b _022EFA5C ; case 3 + b _022EFA5C ; case 4 + b _022EFA5C ; case 5 + b _022EFA64 ; case 6 + b _022EFA54 ; case 7 + b _022EFA5C ; case 8 + b _022EFA54 ; case 9 + b _022EFA54 ; case 10 + b _022EFA54 ; case 11 + b _022EFA54 ; case 12 + b _022EFA54 ; case 13 + b _022EFA54 ; case 14 + b _022EFA54 ; case 15 + b _022EFA5C ; case 16 + b _022EFA5C ; case 17 + b _022EFA5C ; case 18 + b _022EFA5C ; case 19 + b _022EFA5C ; case 20 +_022EFA54: + mov r0, #1 + bx lr +_022EFA5C: + mov r0, #0 + bx lr +_022EFA64: + mov r0, #0 + bx lr + arm_func_end ov29_022EF9EC + + arm_func_start ov29_022EFA6C +ov29_022EFA6C: ; 0x022EFA6C + mov r0, #1 + bx lr + arm_func_end ov29_022EFA6C + + arm_func_start ov29_022EFA74 +ov29_022EFA74: ; 0x022EFA74 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r1, _022EFAE0 ; =0x02353538 + ldr r0, _022EFAE4 ; =0x000286D0 + ldr r1, [r1] + ldrsh r6, [r1, r0] + cmp r6, #0 + ble _022EFAD8 + add r0, sp, #0 + mov r1, #0x44 + bl ov29_0230F798 + mov r7, r0 + cmp r7, #0 + ble _022EFAD8 + mov r8, #0 + add r5, sp, #0 + mov r4, r8 + b _022EFAD0 +_022EFABC: + ldr r0, [r5, r8, lsl #2] + mov r1, r6 + mov r2, r4 + bl ov29_022FA144 + add r8, r8, #1 +_022EFAD0: + cmp r8, r7 + blt _022EFABC +_022EFAD8: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022EFAE0: .word 0x02353538 +_022EFAE4: .word 0x000286D0 + arm_func_end ov29_022EFA74 + + arm_func_start ov29_022EFAE8 +ov29_022EFAE8: ; 0x022EFAE8 + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #3 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_022EFAE8 + + arm_func_start ov29_022EFB04 +ov29_022EFB04: ; 0x022EFB04 + add r0, r0, #0xf0 + and r0, r0, #0xff + cmp r0, #4 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_022EFB04 + + arm_func_start ov29_022EFB20 +ov29_022EFB20: ; 0x022EFB20 + stmdb sp!, {r3, lr} + cmp r0, #0 + beq _022EFB48 + mov r0, #0xa + bl ov29_0234BA54 + mov r0, #0 + bl ov29_0234B1A4 + mov r0, #0xa + mov r1, #0x62 + bl ov29_022EA370 +_022EFB48: + bl ov29_0234D630 + ldr r1, _022EFB7C ; =0x023535A4 + mvn r2, #1 + mov r0, #1 + strb r2, [r1] + bl ov29_022DE5F0 + ldr r1, _022EFB80 ; =0x0237C9A0 + strh r0, [r1, #2] + mov r0, #0 + bl ov29_022DE5F0 + ldr r1, _022EFB80 ; =0x0237C9A0 + strh r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_022EFB7C: .word 0x023535A4 +_022EFB80: .word 0x0237C9A0 + arm_func_end ov29_022EFB20 + + arm_func_start ov29_022EFB84 +ov29_022EFB84: ; 0x022EFB84 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + bl ov29_0234D8A0 + cmp r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0xa + mov r1, #0x62 + bl ov29_022EA370 + ldmia sp!, {r4, pc} + arm_func_end ov29_022EFB84 + + arm_func_start ov29_022EFBAC +ov29_022EFBAC: ; 0x022EFBAC + ldr r1, _022F04E4 ; =0x000001FE + cmp r0, r1 + bgt _022F0314 + bge _022F04C4 + cmp r0, #0x1d4 + bgt _022F024C + bge _022F04C4 + sub r2, r1, #0x53 + cmp r0, r2 + bgt _022F01E4 + sub r1, r1, #0xe9 + subs r1, r0, r1 + addpl pc, pc, r1, lsl #2 + b _022EFE40 +_022EFBE4: ; jump table + b _022F04C4 ; case 0 + b _022F04C4 ; case 1 + b _022F04C4 ; case 2 + b _022F04CC ; case 3 + b _022F04DC ; case 4 + b _022F04DC ; case 5 + b _022F04DC ; case 6 + b _022F04DC ; case 7 + b _022F04DC ; case 8 + b _022F04DC ; case 9 + b _022F04DC ; case 10 + b _022F04DC ; case 11 + b _022F04CC ; case 12 + b _022F04CC ; case 13 + b _022F04DC ; case 14 + b _022F04DC ; case 15 + b _022F04DC ; case 16 + b _022F04DC ; case 17 + b _022F04C4 ; case 18 + b _022F04DC ; case 19 + b _022F04C4 ; case 20 + b _022F04DC ; case 21 + b _022F04DC ; case 22 + b _022F04DC ; case 23 + b _022F04DC ; case 24 + b _022F04DC ; case 25 + b _022F04DC ; case 26 + b _022F04DC ; case 27 + b _022F04DC ; case 28 + b _022F04C4 ; case 29 + b _022F04C4 ; case 30 + b _022F04DC ; case 31 + b _022F04DC ; case 32 + b _022F04DC ; case 33 + b _022F04DC ; case 34 + b _022F04C4 ; case 35 + b _022F04DC ; case 36 + b _022F04DC ; case 37 + b _022F04DC ; case 38 + b _022F04DC ; case 39 + b _022F04DC ; case 40 + b _022F04DC ; case 41 + b _022F04C4 ; case 42 + b _022F04C4 ; case 43 + b _022F04DC ; case 44 + b _022F04DC ; case 45 + b _022F04DC ; case 46 + b _022F04DC ; case 47 + b _022F04DC ; case 48 + b _022F04DC ; case 49 + b _022F04DC ; case 50 + b _022F04DC ; case 51 + b _022F04CC ; case 52 + b _022F04DC ; case 53 + b _022F04DC ; case 54 + b _022F04DC ; case 55 + b _022F04DC ; case 56 + b _022F04DC ; case 57 + b _022F04C4 ; case 58 + b _022F04DC ; case 59 + b _022F04DC ; case 60 + b _022F04DC ; case 61 + b _022F04DC ; case 62 + b _022F04DC ; case 63 + b _022F04CC ; case 64 + b _022F04CC ; case 65 + b _022F04DC ; case 66 + b _022F04DC ; case 67 + b _022F04DC ; case 68 + b _022F04C4 ; case 69 + b _022F04C4 ; case 70 + b _022F04C4 ; case 71 + b _022F04C4 ; case 72 + b _022F04DC ; case 73 + b _022F04DC ; case 74 + b _022F04DC ; case 75 + b _022F04C4 ; case 76 + b _022F04DC ; case 77 + b _022F04DC ; case 78 + b _022F04DC ; case 79 + b _022F04CC ; case 80 + b _022F04C4 ; case 81 + b _022F04DC ; case 82 + b _022F04DC ; case 83 + b _022F04C4 ; case 84 + b _022F04CC ; case 85 + b _022F04CC ; case 86 + b _022F04DC ; case 87 + b _022F04C4 ; case 88 + b _022F04C4 ; case 89 + b _022F04C4 ; case 90 + b _022F04C4 ; case 91 + b _022F04DC ; case 92 + b _022F04DC ; case 93 + b _022F04C4 ; case 94 + b _022F04C4 ; case 95 + b _022F04DC ; case 96 + b _022F04DC ; case 97 + b _022F04DC ; case 98 + b _022F04DC ; case 99 + b _022F04C4 ; case 100 + b _022F04DC ; case 101 + b _022F04C4 ; case 102 + b _022F04C4 ; case 103 + b _022F04C4 ; case 104 + b _022F04C4 ; case 105 + b _022F04DC ; case 106 + b _022F04DC ; case 107 + b _022F04C4 ; case 108 + b _022F04DC ; case 109 + b _022F04C4 ; case 110 + b _022F04DC ; case 111 + b _022F04DC ; case 112 + b _022F04DC ; case 113 + b _022F04DC ; case 114 + b _022F04DC ; case 115 + b _022F04DC ; case 116 + b _022F04C4 ; case 117 + b _022F04CC ; case 118 + b _022F04DC ; case 119 + b _022F04DC ; case 120 + b _022F04CC ; case 121 + b _022F04C4 ; case 122 + b _022F04C4 ; case 123 + b _022F04C4 ; case 124 + b _022F04C4 ; case 125 + b _022F04DC ; case 126 + b _022F04DC ; case 127 + b _022F04CC ; case 128 + b _022F04C4 ; case 129 + b _022F04C4 ; case 130 + b _022F04DC ; case 131 + b _022F04DC ; case 132 + b _022F04C4 ; case 133 + b _022F04DC ; case 134 + b _022F04C4 ; case 135 + b _022F04C4 ; case 136 + b _022F04C4 ; case 137 + b _022F04DC ; case 138 + b _022F04C4 ; case 139 + b _022F04C4 ; case 140 + b _022F04C4 ; case 141 + b _022F04C4 ; case 142 + b _022F04C4 ; case 143 + b _022F04C4 ; case 144 + b _022F04DC ; case 145 + b _022F04DC ; case 146 + b _022F04DC ; case 147 + b _022F04CC ; case 148 + b _022F04CC ; case 149 + b _022F04CC ; case 150 +_022EFE40: + cmp r0, #0xee + bgt _022F0194 + subs r1, r0, #0x29 + addpl pc, pc, r1, lsl #2 + b _022F016C +_022EFE54: ; jump table + b _022F04C4 ; case 0 + b _022F04C4 ; case 1 + b _022F04DC ; case 2 + b _022F04DC ; case 3 + b _022F04DC ; case 4 + b _022F04DC ; case 5 + b _022F04DC ; case 6 + b _022F04DC ; case 7 + b _022F04C4 ; case 8 + b _022F04CC ; case 9 + b _022F04CC ; case 10 + b _022F04DC ; case 11 + b _022F04CC ; case 12 + b _022F04DC ; case 13 + b _022F04DC ; case 14 + b _022F04DC ; case 15 + b _022F04DC ; case 16 + b _022F04CC ; case 17 + b _022F04CC ; case 18 + b _022F04DC ; case 19 + b _022F04DC ; case 20 + b _022F04DC ; case 21 + b _022F04DC ; case 22 + b _022F04DC ; case 23 + b _022F04D4 ; case 24 + b _022F04DC ; case 25 + b _022F04DC ; case 26 + b _022F04DC ; case 27 + b _022F04DC ; case 28 + b _022F04DC ; case 29 + b _022F04DC ; case 30 + b _022F04C4 ; case 31 + b _022F04C4 ; case 32 + b _022F04C4 ; case 33 + b _022F04DC ; case 34 + b _022F04DC ; case 35 + b _022F04DC ; case 36 + b _022F04DC ; case 37 + b _022F04DC ; case 38 + b _022F04DC ; case 39 + b _022F04C4 ; case 40 + b _022F04C4 ; case 41 + b _022F04DC ; case 42 + b _022F04DC ; case 43 + b _022F04DC ; case 44 + b _022F04DC ; case 45 + b _022F04DC ; case 46 + b _022F04DC ; case 47 + b _022F04DC ; case 48 + b _022F04DC ; case 49 + b _022F04C4 ; case 50 + b _022F04C4 ; case 51 + b _022F04C4 ; case 52 + b _022F04DC ; case 53 + b _022F04DC ; case 54 + b _022F04DC ; case 55 + b _022F04DC ; case 56 + b _022F04CC ; case 57 + b _022F04CC ; case 58 + b _022F04DC ; case 59 + b _022F04DC ; case 60 + b _022F04DC ; case 61 + b _022F04DC ; case 62 + b _022F04DC ; case 63 + b _022F04DC ; case 64 + b _022F04DC ; case 65 + b _022F04DC ; case 66 + b _022F04DC ; case 67 + b _022F04C4 ; case 68 + b _022F04C4 ; case 69 + b _022F04DC ; case 70 + b _022F04DC ; case 71 + b _022F04DC ; case 72 + b _022F04DC ; case 73 + b _022F04DC ; case 74 + b _022F04C4 ; case 75 + b _022F04C4 ; case 76 + b _022F04C4 ; case 77 + b _022F04C4 ; case 78 + b _022F04DC ; case 79 + b _022F04DC ; case 80 + b _022F04DC ; case 81 + b _022F04DC ; case 82 + b _022F04DC ; case 83 + b _022F04DC ; case 84 + b _022F04DC ; case 85 + b _022F04DC ; case 86 + b _022F04DC ; case 87 + b _022F04C4 ; case 88 + b _022F04C4 ; case 89 + b _022F04DC ; case 90 + b _022F04CC ; case 91 + b _022F04C4 ; case 92 + b _022F04CC ; case 93 + b _022F04CC ; case 94 + b _022F04DC ; case 95 + b _022F04C4 ; case 96 + b _022F04DC ; case 97 + b _022F04DC ; case 98 + b _022F04DC ; case 99 + b _022F04DC ; case 100 + b _022F04C4 ; case 101 + b _022F04DC ; case 102 + b _022F04C4 ; case 103 + b _022F04C4 ; case 104 + b _022F04C4 ; case 105 + b _022F04DC ; case 106 + b _022F04DC ; case 107 + b _022F04DC ; case 108 + b _022F04C4 ; case 109 + b _022F04C4 ; case 110 + b _022F04DC ; case 111 + b _022F04DC ; case 112 + b _022F04DC ; case 113 + b _022F04DC ; case 114 + b _022F04DC ; case 115 + b _022F04DC ; case 116 + b _022F04DC ; case 117 + b _022F04DC ; case 118 + b _022F04DC ; case 119 + b _022F04CC ; case 120 + b _022F04CC ; case 121 + b _022F04CC ; case 122 + b _022F04CC ; case 123 + b _022F04C4 ; case 124 + b _022F04C4 ; case 125 + b _022F04DC ; case 126 + b _022F04DC ; case 127 + b _022F04C4 ; case 128 + b _022F04C4 ; case 129 + b _022F04C4 ; case 130 + b _022F04DC ; case 131 + b _022F04DC ; case 132 + b _022F04DC ; case 133 + b _022F04DC ; case 134 + b _022F04DC ; case 135 + b _022F04DC ; case 136 + b _022F04DC ; case 137 + b _022F04DC ; case 138 + b _022F04DC ; case 139 + b _022F04DC ; case 140 + b _022F04DC ; case 141 + b _022F04DC ; case 142 + b _022F04DC ; case 143 + b _022F04DC ; case 144 + b _022F04DC ; case 145 + b _022F04C4 ; case 146 + b _022F04C4 ; case 147 + b _022F04C4 ; case 148 + b _022F04C4 ; case 149 + b _022F04C4 ; case 150 + b _022F04DC ; case 151 + b _022F04C4 ; case 152 + b _022F04DC ; case 153 + b _022F04DC ; case 154 + b _022F04DC ; case 155 + b _022F04DC ; case 156 + b _022F04CC ; case 157 + b _022F04DC ; case 158 + b _022F04C4 ; case 159 + b _022F04C4 ; case 160 + b _022F04C4 ; case 161 + b _022F04C4 ; case 162 + b _022F04C4 ; case 163 + b _022F04C4 ; case 164 + b _022F04C4 ; case 165 + b _022F04C4 ; case 166 + b _022F04C4 ; case 167 + b _022F04C4 ; case 168 + b _022F04C4 ; case 169 + b _022F04C4 ; case 170 + b _022F04C4 ; case 171 + b _022F04C4 ; case 172 + b _022F04C4 ; case 173 + b _022F04C4 ; case 174 + b _022F04C4 ; case 175 + b _022F04C4 ; case 176 + b _022F04C4 ; case 177 + b _022F04C4 ; case 178 + b _022F04C4 ; case 179 + b _022F04C4 ; case 180 + b _022F04C4 ; case 181 + b _022F04C4 ; case 182 + b _022F04C4 ; case 183 + b _022F04C4 ; case 184 + b _022F04C4 ; case 185 + b _022F04C4 ; case 186 + b _022F04C4 ; case 187 + b _022F04DC ; case 188 + b _022F04DC ; case 189 + b _022F04DC ; case 190 + b _022F04C4 ; case 191 + b _022F04DC ; case 192 + b _022F04C4 ; case 193 + b _022F04DC ; case 194 + b _022F04DC ; case 195 + b _022F04DC ; case 196 + b _022F04C4 ; case 197 +_022F016C: + cmp r0, #0xf + bgt _022F0188 + cmp r0, #0xc + blt _022F04DC + cmpne r0, #0xf + beq _022F04C4 + b _022F04DC +_022F0188: + cmp r0, #0x16 + beq _022F04C4 + b _022F04DC +_022F0194: + cmp r0, #0x104 + bgt _022F01D4 + subs r1, r0, #0xfa + addpl pc, pc, r1, lsl #2 + b _022F04DC +_022F01A8: ; jump table + b _022F04C4 ; case 0 + b _022F04DC ; case 1 + b _022F04DC ; case 2 + b _022F04C4 ; case 3 + b _022F04CC ; case 4 + b _022F04DC ; case 5 + b _022F04DC ; case 6 + b _022F04C4 ; case 7 + b _022F04DC ; case 8 + b _022F04DC ; case 9 + b _022F04C4 ; case 10 +_022F01D4: + ldr r1, _022F04E8 ; =0x00000112 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F01E4: + sub r2, r1, #0x37 + cmp r0, r2 + bgt _022F0220 + bge _022F04C4 + sub r2, r1, #0x39 + cmp r0, r2 + bgt _022F0210 + sub r1, r1, #0x39 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0210: + sub r1, r1, #0x38 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0220: + sub r2, r1, #0x2c + cmp r0, r2 + bgt _022F023C + sub r1, r1, #0x2c + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F023C: + sub r1, r1, #0x2b + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F024C: + sub r2, r1, #0x14 + cmp r0, r2 + bgt _022F02BC + bge _022F04CC + sub r2, r1, #0x20 + cmp r0, r2 + bgt _022F0294 + bge _022F04C4 + sub r2, r1, #0x27 + cmp r0, r2 + bgt _022F0288 + sub r1, r1, #0x27 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0288: + cmp r0, #0x1d8 + beq _022F04CC + b _022F04DC +_022F0294: + sub r2, r1, #0x1f + cmp r0, r2 + bgt _022F02B0 + sub r1, r1, #0x1f + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F02B0: + cmp r0, #0x1e4 + beq _022F04C4 + b _022F04DC +_022F02BC: + sub r2, r1, #0xb + cmp r0, r2 + bgt _022F02F8 + bge _022F04C4 + sub r2, r1, #0xd + cmp r0, r2 + bgt _022F02E8 + sub r1, r1, #0xd + cmp r0, r1 + beq _022F04CC + b _022F04DC +_022F02E8: + sub r1, r1, #0xc + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F02F8: + cmp r0, #0x1f4 + bgt _022F0308 + beq _022F04C4 + b _022F04DC +_022F0308: + cmp r0, #0x1f8 + beq _022F04C4 + b _022F04DC +_022F0314: + add r2, r1, #0x9b + cmp r0, r2 + bgt _022F03FC + bge _022F04D4 + add r2, r1, #0x10 + cmp r0, r2 + bgt _022F0398 + bge _022F04CC + cmp r0, #0x204 + bgt _022F036C + bge _022F04C4 + add r2, r1, #1 + cmp r0, r2 + bgt _022F035C + add r1, r1, #1 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F035C: + add r1, r1, #4 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F036C: + add r2, r1, #0xb + cmp r0, r2 + bgt _022F0388 + add r1, r1, #0xb + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0388: + add r1, r1, #0xf + cmp r0, r1 + beq _022F04CC + b _022F04DC +_022F0398: + add r2, r1, #0x17 + cmp r0, r2 + bgt _022F03D0 + bge _022F04C4 + add r2, r1, #0x15 + cmp r0, r2 + bgt _022F03C4 + add r1, r1, #0x15 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F03C4: + cmp r0, #0x214 + beq _022F04C4 + b _022F04DC +_022F03D0: + add r2, r1, #0x37 + cmp r0, r2 + bgt _022F03EC + add r1, r1, #0x37 + cmp r0, r1 + beq _022F04CC + b _022F04DC +_022F03EC: + add r1, r1, #0x38 + cmp r0, r1 + beq _022F04CC + b _022F04DC +_022F03FC: + ldr r2, _022F04EC ; =0x0000037F + cmp r0, r2 + bgt _022F0464 + bge _022F04C4 + sub r1, r2, #0x82 + cmp r0, r1 + bgt _022F0440 + bge _022F04C4 + sub r1, r2, #0xa6 + cmp r0, r1 + bgt _022F0430 + beq _022F04C4 + b _022F04DC +_022F0430: + sub r1, r2, #0xa5 + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0440: + sub r1, r2, #0x81 + cmp r0, r1 + bgt _022F0454 + beq _022F04C4 + b _022F04DC +_022F0454: + sub r1, r2, #0x61 + cmp r0, r1 + beq _022F04CC + b _022F04DC +_022F0464: + add r1, r2, #0x9f + cmp r0, r1 + bgt _022F0498 + bge _022F04C4 + add r1, r2, #0x5a + cmp r0, r1 + bgt _022F0488 + beq _022F04C4 + b _022F04DC +_022F0488: + add r1, r2, #0x6a + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F0498: + add r1, r2, #0xcb + cmp r0, r1 + bgt _022F04B8 + bge _022F04C4 + add r1, r2, #0xab + cmp r0, r1 + beq _022F04C4 + b _022F04DC +_022F04B8: + add r1, r2, #0xcc + cmp r0, r1 + bne _022F04DC +_022F04C4: + mov r0, #0 + bx lr +_022F04CC: + mov r0, #1 + bx lr +_022F04D4: + mov r0, #0 + bx lr +_022F04DC: + mov r0, #1 + bx lr + .align 2, 0 +_022F04E4: .word 0x000001FE +_022F04E8: .word 0x00000112 +_022F04EC: .word 0x0000037F + arm_func_end ov29_022EFBAC + + arm_func_start ov29_022F04F0 +ov29_022F04F0: ; 0x022F04F0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldrsh r0, [r4, #4] + bl ov29_022EFBAC + cmp r0, #0 + movne r0, #1 + strneb r0, [r5, #0xb3] + strneb r0, [r4, #0x171] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022F04F0 + + arm_func_start ov29_022F0518 +ov29_022F0518: ; 0x022F0518 + ldr r2, [r0, #0xb4] + mov r1, #0 + ldr ip, _022F0530 ; =sub_0201D198 + add r0, r0, #0x2c + strb r1, [r2, #0x171] + bx ip + .align 2, 0 +_022F0530: .word sub_0201D198 + arm_func_end ov29_022F0518 + + arm_func_start ov29_022F0534 +ov29_022F0534: ; 0x022F0534 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _022F058C ; =0x02353538 + mov r7, r0 + mov r5, #0 +_022F0544: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__022F0590 + cmp r0, #0 + beq _022F057C + cmp r7, #0 + mov r0, r6 + bne _022F0578 + bl ov29_022F0518 + b _022F057C +_022F0578: + bl ov29_022F04F0 +_022F057C: + add r5, r5, #1 + cmp r5, #0x14 + blt _022F0544 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F058C: .word 0x02353538 + arm_func_end ov29_022F0534 diff --git a/asm/overlay_29_022F05B4.s b/asm/overlay_29_022F05B4.s new file mode 100644 index 00000000..46e2cac3 --- /dev/null +++ b/asm/overlay_29_022F05B4.s @@ -0,0 +1,5460 @@ + .include "asm/macros.inc" + .include "overlay_29_022F05B4.inc" + + .text + + arm_func_start ov29_022F05B4 +ov29_022F05B4: ; 0x022F05B4 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r2, #0 + bne _022F05D4 + bl ov29_022F0518 + mov r0, r4 + bl ov29_022F0518 + ldmia sp!, {r4, pc} +_022F05D4: + bl ov29_022F04F0 + mov r0, r4 + bl ov29_022F04F0 + ldmia sp!, {r4, pc} + arm_func_end ov29_022F05B4 + + arm_func_start ov29_022F05E4 +ov29_022F05E4: ; 0x022F05E4 + stmdb sp!, {r3, lr} + bl ov29_022F0AE0 + bl ov29_0234D668 + bl ov29_0234D838 + mov r0, #0x20 + mov r1, #0x62 + bl ov29_022EA370 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F05E4 + + arm_func_start ov29_022F0604 +ov29_022F0604: ; 0x022F0604 + stmdb sp!, {r3, lr} + mov r3, #0 + str r3, [sp] + bl ov29_022F0984 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F0604 + + arm_func_start ov29_022F0618 +ov29_022F0618: ; 0x022F0618 + stmdb sp!, {r3, lr} + mov ip, #0 + str ip, [sp] + bl ov29_022F0984 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F0618 + + arm_func_start ov29_022F062C +ov29_022F062C: ; 0x022F062C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, #1 + str r4, [sp] + bl ov29_022F0984 + mov r4, r0 + bl ov29_022F0AE0 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_022F062C + + arm_func_start ov29_022F0654 +ov29_022F0654: ; 0x022F0654 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #4 + add r1, r1, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r4 + and r1, r1, #0xff + bl ov29_022FA360 + ldmia sp!, {r4, pc} + arm_func_end ov29_022F0654 + + arm_func_start ov29_022F067C +ov29_022F067C: ; 0x022F067C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x24 + mov r7, r0 + mov r6, r2 + cmp r1, #0 + bne _022F06F4 + mov r5, #0 + ldr r8, _022F077C ; =0x02353538 + mov r4, r5 + add sb, sp, #0x10 +_022F06A4: + ldr r0, [r8] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb28] + mov r0, sl + bl EntityIsValid__022F0590 + cmp r0, #0 + strne sl, [sb, r5, lsl #2] + add r4, r4, #1 + addne r5, r5, #1 + cmp r4, #4 + blt _022F06A4 + cmp r5, #4 + addlt r0, sp, #0x10 + movlt r1, #0 + strlt r1, [r0, r5, lsl #2] + blt _022F0700 + moveq r0, #0 + streq r0, [sp, #0x20] + b _022F0700 +_022F06F4: + mov r0, #0 + str r1, [sp, #0x10] + str r0, [sp, #0x14] +_022F0700: + mov r2, #0 + mov r4, #1 + strb r4, [sp, #8] + strh r2, [sp, #0xa] + strh r6, [sp, #0xc] + strb r4, [sp, #0xe] + strb r2, [sp, #0xf] + add r1, sp, #8 + add r3, sp, #0x10 + mov r0, r7 + stmia sp, {r2, r4} + bl ov29_02322DDC + mov r0, r4 + bl ov29_022E38E0 + mov r3, #0 + add r0, sp, #0x10 + add r2, sp, #8 + mov r1, r7 + str r3, [sp] + bl ExecuteMoveEffect + bl ov29_022E81F8 + mov r0, #0xa + bl ov29_0234BA54 + mov r0, #0 + bl ov29_0234B1A4 + bl GetLeader + mov r1, r4 + mov r2, r1 + bl ov29_022F98B4 + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F077C: .word 0x02353538 + arm_func_end ov29_022F067C + + arm_func_start ov29_022F0780 +ov29_022F0780: ; 0x022F0780 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + bl ov29_0234D668 + bl ov29_0234B034 + mov r2, #0 + mov r1, r0 + mov ip, #1 + mov r0, r4 + mov r3, r2 + str ip, [sp] + bl ov29_0234D690 + bl ov29_0234D650 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_022F0780 + + arm_func_start ov29_022F07BC +ov29_022F07BC: ; 0x022F07BC + stmdb sp!, {r3, lr} + rsb r0, r0, #0 + bl AddMoneyCarried + ldr r0, _022F07D4 ; =0x00001308 + bl sub_02017C80 + ldmia sp!, {r3, pc} + .align 2, 0 +_022F07D4: .word 0x00001308 + arm_func_end ov29_022F07BC + + arm_func_start ov29_022F07D8 +ov29_022F07D8: ; 0x022F07D8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r5, _022F0844 ; =0x02353538 + mov r4, r0 + mov r6, #0 +_022F07E8: + ldr r0, [r5] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__022F0590 + cmp r0, #0 + beq _022F082C + mov r0, r7 + bl ov29_022FBDF0 + cmp r0, #0 + beq _022F082C + mov r0, r7 + mov r1, r4 + bl ov29_022FA360 + mov r0, r7 + bl UpdateAiTargetPos +_022F082C: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x14 + blt _022F07E8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F0844: .word 0x02353538 + arm_func_end ov29_022F07D8 + + arm_func_start ov29_022F0848 +ov29_022F0848: ; 0x022F0848 + ldr ip, _022F0858 ; =ov29_022EA428 + mov r0, #0 + mov r1, r0 + bx ip + .align 2, 0 +_022F0858: .word ov29_022EA428 + arm_func_end ov29_022F0848 + + arm_func_start ov29_022F085C +ov29_022F085C: ; 0x022F085C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r8, r1 + mov r1, #1 + mov r1, r1, lsl r8 + str r1, [sp, #4] + mov r1, r1, lsl #8 + mov fp, r0 + mov r0, #0x100 + str r1, [sp] + bl sub_02001AB0 + ldr r1, _022F0980 ; =0x02353538 + mov r0, #0x400 + ldr r2, [r1] + mov r1, #0 + add r5, r2, #0x1e0 + bl MemAlloc + mov r6, r0 + mov r4, #0 +_022F08A8: + add r3, r5, r4, lsl #2 + add r2, r6, r4, lsl #2 + mov r1, #4 +_022F08B4: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022F08B4 + add r4, r4, #1 + cmp r4, #0x100 + blt _022F08A8 + mov r4, #0 + b _022F0964 +_022F08D8: + mov r0, #0x25 + mov r7, r4, lsl #8 + bl AdvanceFrame + ldr r0, [sp] + mov sl, #0 + sub sb, r0, r4, lsl #8 +_022F08F0: + add r1, r6, sl, lsl #2 + ldrb r0, [r6, sl, lsl #2] + ldrb r3, [r1, #1] + ldrb r2, [r1, #2] + mul r0, sb, r0 + add r1, fp, sl, lsl #2 + mul ip, sb, r3 + mul r2, sb, r2 + ldrb lr, [r1, #1] + ldrb r3, [r1, #2] + ldrb r1, [fp, sl, lsl #2] + mla ip, r7, lr, ip + mla r2, r7, r3, r2 + mla r0, r7, r1, r0 + mov r0, r0, asr #8 + mov r0, r0, asr r8 + mov r3, ip, asr #8 + mov r1, r2, asr #8 + mov r3, r3, asr r8 + strb r0, [r5, sl, lsl #2] + add r2, r5, sl, lsl #2 + add sl, sl, #1 + strb r3, [r2, #1] + mov r0, r1, asr r8 + strb r0, [r2, #2] + cmp sl, #0x100 + blt _022F08F0 + bl ov29_022DE608 + add r4, r4, #1 +_022F0964: + ldr r0, [sp, #4] + cmp r4, r0 + blt _022F08D8 + mov r0, r6 + bl MemFree + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F0980: .word 0x02353538 + arm_func_end ov29_022F085C + + arm_func_start ov29_022F0984 +ov29_022F0984: ; 0x022F0984 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r1 + ldr r4, [r6, #0xb4] + mov r7, r0 + ldrsh r1, [r4, #2] + add r0, sp, #0xc + mov r5, r3 + bl ov29_0234BAC0 + ldrb r0, [r4, #6] + cmp r0, #0 + bne _022F09E0 + mov r0, r6 + bl ov29_022F9C4C + cmp r0, #0 + bne _022F09E0 + mov r1, r6 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrsh r0, [r4, #0xc] + bl ov29_0234B118 + b _022F09F4 +_022F09E0: + ldrsh r1, [r4, #2] + mov r0, #1 + bl ov29_0234B0CC + ldrsh r0, [r4, #2] + bl ov29_0234B104 +_022F09F4: + cmp r5, #0 + beq _022F0A6C + mov r1, #1 + add r0, sp, #4 + mov r2, r5 + mov r3, r1 + str r1, [sp] + bl ov29_0234D860 + ldrb r0, [sp, #0x30] + cmp r0, #0 + beq _022F0A28 + ldr r0, _022F0AA0 ; =ov29_022F0AA4 + bl ov29_0234D878 +_022F0A28: + add r0, sp, #0xc + bl ov29_0234D65C + bl ov29_0234B034 + mov r1, r0 + mov ip, #0 + add r2, sp, #4 + mov r0, r7 + mov r3, #1 + str ip, [sp] + bl ov29_0234D690 + bl ov29_0234D650 + bl ov29_0234D88C + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + b _022F0A98 +_022F0A6C: + add r0, sp, #0xc + bl ov29_0234D65C + bl ov29_0234B034 + mov r1, r0 + mov r3, #1 + mov r0, r7 + mov r2, #0 + str r3, [sp] + bl ov29_0234D690 + bl ov29_0234D650 + mov r0, #1 +_022F0A98: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022F0AA0: .word ov29_022F0AA4 + arm_func_end ov29_022F0984 + + arm_func_start ov29_022F0AA4 +ov29_022F0AA4: ; 0x022F0AA4 + stmdb sp!, {r3, lr} + ldr r1, _022F0AD4 ; =0x023535A4 + mvn r0, #1 + ldrsb r1, [r1] + cmp r1, r0 + ldmneia sp!, {r3, pc} + ldr r0, _022F0AD8 ; =0x023526A8 + ldr r1, _022F0ADC ; =ov29_022F0B10 + bl sub_0202F8C4 + ldr r1, _022F0AD4 ; =0x023535A4 + strb r0, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F0AD4: .word 0x023535A4 +_022F0AD8: .word 0x023526A8 +_022F0ADC: .word ov29_022F0B10 + arm_func_end ov29_022F0AA4 + + arm_func_start ov29_022F0AE0 +ov29_022F0AE0: ; 0x022F0AE0 + stmdb sp!, {r3, lr} + ldr r0, _022F0B0C ; =0x023535A4 + mvn r1, #1 + ldrsb r0, [r0] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202F8FC + ldr r0, _022F0B0C ; =0x023535A4 + mvn r1, #1 + strb r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F0B0C: .word 0x023535A4 + arm_func_end ov29_022F0AE0 + + arm_func_start ov29_022F0B10 +ov29_022F0B10: ; 0x022F0B10 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xd4 + mov r4, r0 + bl sub_02027B1C + add r0, sp, #4 + bl InitPreprocessorArgs + bl GetGold + str r0, [sp, #0x28] + add r1, sp, #4 + str r1, [sp] + ldr r2, _022F0B84 ; =0x023526B8 + add r0, sp, #0x54 + mov r1, #0x80 + mov r3, #0x400 + bl PreprocessString + mov r1, #4 + ldr r3, _022F0B88 ; =0x00000225 + mov r0, r4 + mov r2, r1 + bl sub_02026268 + mov r0, r4 + mov r1, #0xa + mov r2, #0x14 + add r3, sp, #0x54 + bl sub_02026214 + mov r0, r4 + bl sub_02027AF0 + add sp, sp, #0xd4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022F0B84: .word 0x023526B8 +_022F0B88: .word 0x00000225 + arm_func_end ov29_022F0B10 + + arm_func_start ov29_022F0B8C +ov29_022F0B8C: ; 0x022F0B8C + stmdb sp!, {r3, lr} + bl ov29_022E9618 + add r0, r0, #0x4a + ldmia sp!, {r3, pc} + arm_func_end ov29_022F0B8C + + arm_func_start ov29_022F0B9C +ov29_022F0B9C: ; 0x022F0B9C + stmdb sp!, {r3, lr} + bl ov29_022E9618 + ldrh r0, [r0, #0x4a] + ldmia sp!, {r3, pc} + arm_func_end ov29_022F0B9C + + arm_func_start ov29_022F0BAC +ov29_022F0BAC: ; 0x022F0BAC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r3, r0 + mov r6, r1 + add r0, sp, #0 + add r1, r3, #0x2c + mov r2, #3 + ldrsh r4, [r3, #0x48] + ldrsh r5, [r3, #0x4a] + bl sub_0201CF90 + ldrsh r0, [sp] + add r0, r4, r0 + sub r0, r0, #0xc + str r0, [r6, #8] + ldrsh r0, [sp, #2] + add r0, r5, r0 + sub r0, r0, #0xc + str r0, [r6] + ldrsh r0, [sp] + add r0, r4, r0 + add r0, r0, #0xc + str r0, [r6, #0xc] + ldrsh r0, [sp, #2] + add r0, r5, r0 + add r0, r0, #0xc + str r0, [r6, #4] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_022F0BAC + + arm_func_start ov29_022F0C1C +ov29_022F0C1C: ; 0x022F0C1C + stmdb sp!, {r3, lr} + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, [r0, #0xb4] + mov r2, #0 + bl ov29_022F3B98 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F0C1C + + arm_func_start ov29_022F0C3C +ov29_022F0C3C: ; 0x022F0C3C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + movs r4, r0 + moveq r0, #0 + beq _022F0C90 + cmp r1, #0 + beq _022F0C74 + add r3, sp, #0 + mov r2, #4 +_022F0C60: + ldrh r0, [r1], #2 + subs r2, r2, #1 + strh r0, [r3], #2 + bne _022F0C60 + b _022F0C80 +_022F0C74: + add r0, sp, #0 + mov r1, #0x160 + bl InitMove +_022F0C80: + ldr r1, [r4, #0xb4] + add r2, sp, #0 + mov r0, r4 + bl ov29_022F3B98 +_022F0C90: + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end ov29_022F0C3C + + arm_func_start ov29_022F0C98 +ov29_022F0C98: ; 0x022F0C98 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl sub_0204AEA0 + mov r7, r0 + mov r0, #4 + mov r1, #0x2f + mov r8, #0 + bl ov29_022EA370 + mov r0, r8 + mov r1, r0 + bl ov29_022E0DD8 + mov r0, #2 + mov r1, r8 + bl ov29_022E0DD8 + mov r0, #3 + mov r1, r8 + bl ov29_022E0DD8 + mov r0, #4 + mov r1, r8 + bl ov29_022E0DD8 + ldr r1, _022F0EC8 ; =0x02353538 + ldr r2, _022F0ECC ; =0x0237CFBB + ldr r1, [r1] + mov r0, #1 + strb r0, [r2] + add r1, r1, #0x1a000 + strb r0, [r1, #0x249] + bl ov29_0234B1A4 + mov r0, #1 + bl ov29_02338F58 + cmp sl, #0 + bne _022F0D24 + bl sub_0204AEC0 + cmp r0, #0 + bne _022F0D44 +_022F0D24: + mov r0, #0 + mov r1, r0 + bl ov29_02339D7C + cmp sl, #0 + beq _022F0D44 + mov r0, #0xc + mov r1, #0 + bl ov29_022EA428 +_022F0D44: + bl ov29_023391C0 + mov sb, r0 + mov r0, #0 + mov r1, r0 + bl ov29_02339190 + bl ov29_02339CE8 + mov r0, #4 + mov r1, #0x2f + bl ov29_022EA370 + ldr r4, _022F0ED0 ; =0x0237C6A4 + ldr r5, _022F0ECC ; =0x0237CFBB + ldr r6, _022F0ED4 ; =0x0237C694 + mov fp, #0x2f +_022F0D78: + mov r0, fp + bl AdvanceFrame + ldrh r3, [r6, #2] + tst r3, #6 + beq _022F0D98 + ldr r0, _022F0ED8 ; =0x00003F03 + bl sub_02017C80 + b _022F0E30 +_022F0D98: + ldrb r0, [r5] + cmp r0, #0 + bne _022F0DDC + ldrh r2, [r4] + mov r1, #0 + tst r2, #0x40 + beq _022F0DBC + tst r2, #2 + movne r1, #1 +_022F0DBC: + cmp r1, #0 + movne r8, #1 + cmp r8, #0 + beq _022F0DE0 + tst r2, #4 + beq _022F0DE0 + bl ov29_022E0C4C + b _022F0E30 +_022F0DDC: + mov r8, #0 +_022F0DE0: + tst r3, #1 + bne _022F0E18 + tst r3, #0x400 + bne _022F0E18 + cmp r0, #0 + beq _022F0D78 + ldrh r1, [r4] + mov r2, #0 + tst r1, #0x40 + beq _022F0E10 + tst r1, #2 + movne r2, #1 +_022F0E10: + cmp r2, #0 + beq _022F0D78 +_022F0E18: + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [r5] + bl ov29_02339CE8 + b _022F0D78 +_022F0E30: + cmp sl, #0 + bne _022F0E44 + bl sub_0204AEC0 + cmp r0, #0 + bne _022F0E64 +_022F0E44: + mov r0, #0 + mov r1, r0 + bl ov29_0233A0E8 + cmp sl, #0 + beq _022F0E64 + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 +_022F0E64: + mov r0, sb + mov r1, #0 + bl ov29_02339190 + mov r0, #0 + bl ov29_02338F58 + ldr r1, _022F0EC8 ; =0x02353538 + mov r0, r7 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x1a000 + strb r2, [r1, #0x249] + bl sub_0204AEB0 + ldr r0, _022F0ECC ; =0x0237CFBB + mov r1, #1 + strb r1, [r0] + bl ov29_02339CE8 + mov r0, #0 + bl ov29_022E0DF0 + mov r0, #0x2f + bl AdvanceFrame + mov r0, #0x2f + bl AdvanceFrame + bl sub_02006B70 + bl ov29_022E0B44 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F0EC8: .word 0x02353538 +_022F0ECC: .word 0x0237CFBB +_022F0ED0: .word 0x0237C6A4 +_022F0ED4: .word 0x0237C694 +_022F0ED8: .word 0x00003F03 + arm_func_end ov29_022F0C98 + + arm_func_start ov29_022F0EDC +ov29_022F0EDC: ; 0x022F0EDC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xdc + ldr r1, _022F1DDC ; =0x02353538 + add r0, sp, #0xb6 + ldr r2, [r1] + mov r1, #5 + add r2, r2, #0x21c + add r5, r2, #0x1a000 + mov r2, #3 + str r2, [sp, #0x68] + mov r2, #0 + str r2, [sp, #0x64] + bl MemZero + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strh r1, [r0, #0x1c] + bl GetLeader + mov r1, #1 + mov r2, r1 + bl ov29_022F98B4 + bl GetLeader + bl ov29_022FB538 + bl GetLeader + bl ov29_022FF3F4 + cmp r0, #0 + beq _022F0F58 + mov r0, #0x3c + mov r1, #0x10 + bl ov29_022EA370 + b _022F2B34 +_022F0F58: + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x78e] + bl ov29_02339CD4 + ldr r0, _022F1DDC ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #5] + cmp r0, #0 + beq _022F1000 + mov r0, #0 + strb r0, [r1, #5] + bl IsGoldenChamber + cmp r0, #0 + beq _022F0FAC + bl ov29_0234A980 + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _022F2B34 +_022F0FAC: + bl GetLeader + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + bne _022F1000 + mov r0, #0xa + bl ov29_0234BA54 + mov r0, #1 + bl ov29_022EB398 + bl ov29_022F2FE4 + mov r0, #0 + bl ov29_0233A248 + bl GetLeader + mov r1, #0 + bl ov29_0234E8F8 + bl ov29_022E0B44 + bl sub_02006B70 + bl ov29_022E9618 + ldrh r0, [r0, #0x4a] + cmp r0, #0 + bne _022F2B34 +_022F1000: + mov r0, #1 + mov r1, r0 + mov r2, r0 + bl ov29_022FA2F0 + ldr r1, _022F1DE0 ; =0x0235171C + ldrsh r0, [r1, #0x12] + str r0, [sp, #8] + ldrsh r0, [r1, #0x10] + str r0, [sp, #4] +_022F1024: + bl GetLeader + ldr r1, _022F1DDC ; =0x02353538 + mov r6, r0 + ldr r0, [r1] + ldr sb, [r6, #0xb4] + ldrb r0, [r0, #0x78b] + cmp r0, #0 + beq _022F1064 + bl ov29_022F308C + cmp r0, #0 + movne r0, #2 + strneh r0, [sb, #0x4a] + movne r0, #0 + strneb r0, [sb, #0x4e] + bne _022F2B34 + bl ov29_022F2FE4 +_022F1064: + ldr r1, _022F1DE4 ; =0x0237C9A4 + mov r2, #0 + strb r2, [r1, #2] + ldr r0, _022F1DDC ; =0x02353538 + strb r2, [r1, #1] + ldr r0, [r0] + ldr r0, [r0, #0x614] + cmp r0, #0 + strltb r2, [sp, #0xb6] + strltb r2, [sp, #0xb7] + strltb r2, [sp, #0xb8] + strltb r2, [sp, #0xba] + blt _022F10AC + mov r0, #1 + strb r0, [sp, #0xb6] + strb r2, [sp, #0xb7] + strb r2, [sp, #0xb8] + strb r2, [sp, #0xba] +_022F10AC: + mov r0, #0 + str r0, [sp, #0x6c] + bl ov29_022EB3C8 + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #0 + strb r1, [r0] + strb r1, [r0, #3] + sub r0, sp, #4 + str r0, [sp, #0x70] + ldr r0, _022F1DE8 ; =0x00000BA3 + mvn r4, #0 + sub r0, r0, #1 + str r0, [sp, #0x88] + ldr r0, _022F1DE8 ; =0x00000BA3 + sub r0, r0, #2 + str r0, [sp, #0x84] + ldr r0, _022F1DE8 ; =0x00000BA3 + sub r0, r0, #5 + str r0, [sp, #0x80] + ldr r0, _022F1DE8 ; =0x00000BA3 + sub r0, r0, #4 + str r0, [sp, #0x7c] + add r0, sb, #0x100 + str r0, [sp, #0x8c] +_022F110C: + mov r7, #0 + mov r0, r7 + str r0, [sp, #0x4c] + str r0, [sp, #0x48] + str r0, [sp, #0x2c] + ldrb r0, [sp, #0xb6] + cmp r0, #0 + bne _022F2970 + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrsh r0, [r0, #4] + add r1, r0, #1 + ldr r0, _022F1DE4 ; =0x0237C9A4 + strh r1, [r0, #4] + ldrb r0, [r5, #0x35] + cmp r0, #0 + movne r0, r7 + strne r0, [sp, #0x6c] + ldreq r0, [sp, #0x6c] + addeq r0, r0, #1 + streq r0, [sp, #0x6c] + ldr r0, [sp, #0x68] + cmp r0, #0 + beq _022F117C + subs r0, r0, #1 + str r0, [sp, #0x68] + bne _022F117C + mov r0, #0 + bl ov29_023055B0 +_022F117C: + mov r0, r6 + bl ov29_022F2B74 + ldr r0, _022F1DEC ; =0x0237C6A4 + mov r8, #0 + ldrh r1, [r0] + tst r1, #0x40 + movne r0, #1 + moveq r0, #0 + and sl, r0, #0xff + tst r1, #0x10 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + str r0, [sp, #0x58] + tst r1, #0x20 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + tst r1, #0x200 + str r0, [sp, #0x54] + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + str r0, [sp, #0x50] + mov r0, r8 + str r0, [sp, #0x5c] + bl ov29_022E0C3C + cmp r0, #0 + beq _022F1208 + cmp sl, #0 + bne _022F1200 + mov r0, r8 + bl ov29_022E0C2C +_022F1200: + mov sl, #0 + b _022F1228 +_022F1208: + mov r0, r8 + bl ov29_022E0C2C + ldr r0, _022F1DEC ; =0x0237C6A4 + ldrh r0, [r0] + tst r0, #0x100 + movne r0, #1 + moveq r0, r8 + and sl, r0, #0xff +_022F1228: + ldr r0, [sp, #0x50] + cmp r0, #0 + beq _022F1268 + mov r0, r6 + add r1, sp, #0xae + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + ldrsh r1, [r6, #4] + ldrsh r0, [sp, #0xae] + cmp r1, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xb0] + cmpeq r1, r0 + moveq r0, #0 + streq r0, [sp, #0x50] +_022F1268: + ldr r0, _022F1DEC ; =0x0237C6A4 + mov r1, #0 + ldrh r0, [r0] + tst r0, #0x80 + beq _022F1284 + tst r0, #0x1000 + movne r1, #1 +_022F1284: + cmp r1, #0 + beq _022F12E0 + mov r0, r6 + add r1, sp, #0xae + mov r2, #0x66 + mov r3, #0 + bl ov29_022F3EA0 + mov r0, r6 + add r1, sp, #0xaa + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + ldrsh r2, [r6, #4] + ldrsh r0, [sp, #0xae] + cmp r2, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xb0] + cmpeq r1, r0 + ldreqsh r0, [sp, #0xaa] + cmpeq r2, r0 + ldreqsh r0, [sp, #0xac] + cmpeq r1, r0 + moveq r8, #1 +_022F12E0: + ldr r0, [sp, #0x54] + cmp r0, #0 + beq _022F1344 + mov r0, r6 + add r1, sp, #0xae + mov r2, #0x66 + mov r3, #0 + bl ov29_022F3EA0 + mov r0, r6 + add r1, sp, #0xaa + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + ldrsh r2, [r6, #4] + ldrsh r0, [sp, #0xae] + cmp r2, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xb0] + cmpeq r1, r0 + ldreqsh r0, [sp, #0xaa] + cmpeq r2, r0 + ldreqsh r0, [sp, #0xac] + cmpeq r1, r0 + moveq r0, #1 + streq r0, [sp, #0x5c] +_022F1344: + cmp r8, #0 + bne _022F1364 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #1 + beq _022F13B0 + tst r0, #2 + beq _022F13B0 +_022F1364: + ldr r0, [sp, #0x8c] + ldrh r1, [r0, #0x46] + ldr r0, [sp, #0x70] + strh r1, [r0] + ldr r0, [sp, #0x8c] + ldrh r1, [r0, #0x48] + ldr r0, [sp, #0x70] + strh r1, [r0, #2] + ldr r0, [r0] + bl CeilFixedPoint + cmp r0, #0 + beq _022F13B0 + mov r0, #1 + bl ov29_022EB3C8 + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x78e] + b _022F2970 +_022F13B0: + mov r0, #0 + strh r4, [sp, #0xb2] + strh r4, [sp, #0xb4] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x38] + mov fp, r0 + mov r8, r0 + str r0, [sp, #0x60] + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _022F1440 + ldr r0, [sp, #0x58] + cmp r0, #0 + beq _022F1408 + mov r8, #1 + bl GetEquippedThrowableItem + cmp r0, #0 + movge r0, r8 + strge r0, [sp, #0x60] + b _022F1440 +_022F1408: + ldr r0, _022F1DEC ; =0x0237C6A4 + mov r1, r8 + ldrh r0, [r0] + tst r0, #0x80 + beq _022F1424 + tst r0, #2 + movne r1, #1 +_022F1424: + cmp r1, #0 + movne r8, #2 + bne _022F1440 + cmp sl, #0 + ldreq r0, [sp, #0x50] + cmpeq r0, #0 + movne r8, #3 +_022F1440: + cmp r8, #0 + beq _022F16F4 + cmp r8, #1 + mov r0, r6 + add r1, sp, #0xa6 + mov r3, #0 + bne _022F1468 + mov r2, #0x65 + bl ov29_022F3EA0 + b _022F1470 +_022F1468: + mov r2, #0x64 + bl ov29_022F3EA0 +_022F1470: + mov r7, r0 + cmp r7, #0 + blt _022F16F4 + ldrsh r1, [r6, #4] + ldrsh r0, [sp, #0xa6] + cmp r1, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xa8] + cmpeq r1, r0 + beq _022F16F4 + mov r0, r6 + add r1, sp, #0xa6 + bl ov29_022F426C + cmp r0, #0 + bne _022F16F4 + ldrh r0, [sp, #0xa8] + ldrh r1, [sp, #0xa6] + mov r3, #0 + strh r0, [sp, #0x94] + strh r0, [sp, #0xa4] + add r0, r7, #4 + strh r1, [sp, #0xa2] + strh r1, [sp, #0x92] + mov r0, r0, lsl #0x1d + ldr r1, _022F1DE0 ; =0x0235171C + mov ip, r0, lsr #0x1b + ldrsh r1, [r1, ip] + ldrsh r2, [sp, #0xa2] + ldr ip, _022F1DE0 ; =0x0235171C + add r0, ip, r0, lsr #27 + add r1, r2, r1 + strh r1, [sp, #0xa2] + ldrsh r0, [r0, #2] + ldrsh ip, [sp, #0xa4] + ldrsh r2, [r6, #4] + ldrsh r1, [sp, #0xa2] + add r0, ip, r0 + strh r0, [sp, #0xa4] + cmp r2, r1 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xa4] + cmpeq r1, r0 + ldrh r1, [sp, #0x92] + ldrh r0, [sp, #0x94] + moveq r3, #1 + cmp r8, #2 + strh r1, [sp, #0xb2] + strh r0, [sp, #0xb4] + beq _022F1548 + ldr r0, [sp, #0x60] + cmp r0, #0 + beq _022F15C0 + cmp r3, #0 + bne _022F15C0 +_022F1548: + add r0, sp, #0xa6 + bl ov29_02337B68 + cmp r0, #0 + beq _022F16F4 + ldr r1, [sp, #0x60] + ldr r0, [r0, #0xb4] + cmp r1, #1 + bne _022F1584 + bl ov29_022F2B3C + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x38] + moveq r0, #0 + streq r0, [sp, #0x38] + b _022F16F4 +_022F1584: + cmp r1, #2 + bne _022F15A8 + bl ov29_022F2B3C + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x38] + moveq r0, #0 + streq r0, [sp, #0x38] + b _022F16F4 +_022F15A8: + cmp r8, #2 + moveq r0, #0 + streq r0, [sp, #0x30] + moveq fp, #1 + streq r0, [sp, #0x34] + b _022F16F4 +_022F15C0: + ldrsh r1, [r6, #4] + ldrsh r0, [sp, #0xa2] + cmp r1, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xa4] + cmpeq r1, r0 + bne _022F16F4 + add r0, sp, #0xa6 + bl ov29_02337B68 + str r0, [sp, #0x74] + cmp r0, #0 + beq _022F16A4 + cmp r8, #1 + ldr r0, [r0, #0xb4] + bne _022F166C + mov r1, #0 + str r1, [sp, #0x30] + mov fp, r1 + bl ov29_022F2B3C + cmp r0, #0 + beq _022F163C + ldr r0, [sp, #0x60] + cmp r0, #1 + mov r0, #1 + streq r0, [sp, #0x38] + strne r0, [sp, #0x30] + movne r0, fp + strne r0, [sp, #0x38] + mov r0, #0 + str r0, [sp, #0x34] + b _022F1698 +_022F163C: + mov r1, fp + str r1, [sp, #0x38] + ldr r0, [sp, #0x74] + mov r1, #1 + bl IsBlinded + cmp r0, #0 + mov r0, #1 + strne r0, [sp, #0x30] + movne r0, fp + strne r0, [sp, #0x34] + streq r0, [sp, #0x34] + b _022F1698 +_022F166C: + cmp r8, #3 + bne _022F1698 + bl ov29_022F2B3C + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x30] + moveq r0, #0 + mov fp, #0 + streq r0, [sp, #0x30] + mov r0, fp + str r0, [sp, #0x34] +_022F1698: + and r0, r7, #7 + strb r0, [sb, #0x4c] + b _022F16F4 +_022F16A4: + ldrsh r1, [r6, #4] + ldr r0, [sp, #4] + ldrsh r2, [r6, #6] + add r0, r1, r0 + ldr r1, [sp, #8] + add r1, r2, r1 + bl GetTile + ldrh r0, [r0] + tst r0, #0x2000 + beq _022F16F4 + mov r0, #4 + strb r0, [sb, #0x4c] + mov r0, #1 + str r0, [sp, #0x4c] + mov r0, r6 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r6 + mov r2, #4 + bl ov29_023049A8 +_022F16F4: + bl sub_0204AF10 + cmp r0, #0 + moveq r1, #0 + beq _022F17E0 + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #2] + cmp r0, #0 + movne r1, #0 + bne _022F17E0 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + and r0, r0, #0xf0 + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + cmpeq r0, #0 + moveq r1, #0 + beq _022F17E0 + cmp r0, #0x50 + moveq r1, #3 + streq r1, [sp, #0x20] + cmp r0, #0x60 + moveq r1, #5 + streq r1, [sp, #0x20] + cmp r0, #0x90 + moveq r1, #1 + streq r1, [sp, #0x20] + cmp r0, #0xa0 + moveq r1, #7 + streq r1, [sp, #0x20] + cmp r0, #0x40 + moveq r1, #4 + streq r1, [sp, #0x20] + cmp r0, #0x80 + moveq r1, #0 + streq r1, [sp, #0x20] + cmp r0, #0x10 + moveq r1, #2 + streq r1, [sp, #0x20] + cmp r0, #0x20 + moveq r0, #6 + streq r0, [sp, #0x20] + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _022F17B8 + ldr r0, [sp, #0x20] + tst r0, #1 + moveq r1, #0 + beq _022F17E0 +_022F17B8: + ldr r0, [sp, #0x20] + ldrb r8, [sb, #0x4c] + and r1, r0, #7 + mov r0, r6 + strb r1, [sb, #0x4c] + bl ov29_022F87C0 + cmp r0, #0 + moveq r1, #0 + streqb r8, [sb, #0x4c] + movne r1, #1 +_022F17E0: + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _022F1884 + cmp r1, #0 + beq _022F1884 + ldr r0, [sp, #0x64] + cmp r0, #0 + bne _022F18B4 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #2 + beq _022F1868 + mov r0, r6 + bl ov29_022F87C0 + cmp r0, #0 + beq _022F1838 + mov r0, r6 + mov r1, sb + bl ov29_022F37D0 + cmp r0, #0 + beq _022F1844 +_022F1838: + mov r0, #0 + str r0, [sp, #0x48] + b _022F18B4 +_022F1844: + mov r0, #1 + str r0, [sp, #0x48] + ldr r0, _022F1DDC ; =0x02353538 + ldr r1, [r0] + mov r0, #1 + str r0, [sp, #0x2c] + mov r0, #0 + strb r0, [r1, #0x78c] + b _022F18B4 +_022F1868: + mov r0, #1 + str r0, [sp, #0x48] + ldr r0, _022F1DDC ; =0x02353538 + ldr r1, [r0] + mov r0, #0 + strb r0, [r1, #0x78c] + b _022F18B4 +_022F1884: + cmp r0, #0 + bne _022F18A0 + ldr r0, [sp, #0x5c] + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x48] + bne _022F18B4 +_022F18A0: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #1 + movne r0, #1 + strne r0, [sp, #0x48] +_022F18B4: + ldr r0, [sp, #0x30] + cmp r0, #0 + mov r0, #0 + str r0, [sp, #0x64] + cmpeq fp, #0 + ldreq r0, [sp, #0x38] + cmpeq r0, #0 + beq _022F19DC + ldrsh r0, [sp, #0xb2] + ldrsh r1, [sp, #0xb4] + bl GetTileSafe + str r0, [sp, #0x78] + mov r0, #7 + bl sub_02017CCC + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _022F198C + ldrsh r1, [sp, #0xb2] + ldrsh r0, [r6, #4] + sub r0, r1, r0 + bl Abs + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + ldrsh r1, [sp, #0xb4] + ldrsh r0, [r6, #6] + sub r0, r1, r0 + bl Abs + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + ldr r0, [sp, #0x78] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _022F19DC + ldr r0, [sp, #0x60] + cmp r0, #2 + bne _022F1968 + add r0, r6, #4 + add r1, sp, #0xb2 + bl GetDirectionTowardsPosition + strb r0, [sb, #0x4c] + ldrsh r0, [sp, #0xb2] + strh r0, [sb, #0x5a] + ldrsh r0, [sp, #0xb4] + strh r0, [sb, #0x5c] + b _022F19DC +_022F1968: + cmp r8, #0 + cmpne r1, #0 + cmpne r8, r1 + bne _022F19DC + add r0, r6, #4 + add r1, sp, #0xb2 + bl GetDirectionTowardsPosition + strb r0, [sb, #0x4c] + b _022F19DC +_022F198C: + ldrsh r1, [sp, #0xb2] + ldrsh r0, [r6, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _022F19DC + ldrsh r1, [sp, #0xb4] + ldrsh r0, [r6, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _022F19DC + ldr r0, [sp, #0x78] + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _022F19DC + add r0, r6, #4 + add r1, sp, #0xb2 + bl GetDirectionTowardsPosition + strb r0, [sb, #0x4c] +_022F19DC: + ldr r0, [sp, #0x48] + cmp r0, #0 + ldreq r0, [sp, #0x34] + cmpeq r0, #0 + ldreq r0, [sp, #0x30] + cmpeq r0, #0 + cmpeq fp, #0 + beq _022F1CC0 + ldr r0, [sp, #0x2c] + cmp r0, #0 + bne _022F1A64 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #2 + beq _022F1A64 + ldr r0, [sp, #0x8c] + ldrh r1, [r0, #0x46] + ldr r0, [sp, #0x70] + strh r1, [r0] + ldr r0, [sp, #0x8c] + ldrh r1, [r0, #0x48] + ldr r0, [sp, #0x70] + strh r1, [r0, #2] + ldr r0, [r0] + bl CeilFixedPoint + cmp r0, #0 + beq _022F1CE0 + mov r0, #1 + bl ov29_022EB3C8 + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x78e] + b _022F2970 +_022F1A64: + mov r0, r6 + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + beq _022F1AA0 + ldr r1, _022F1DF4 ; =0x00000B9A + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + bl ov29_022EB3C8 + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x78e] + b _022F2970 +_022F1AA0: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x200 + cmpeq fp, #0 + beq _022F1C48 + mov r4, #0 + mov r1, r4 + mov r2, #1 + b _022F1AF4 +_022F1AC4: + add r0, sb, r4, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _022F1AF0 + add r0, sb, r4, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #8 + bne _022F1AFC +_022F1AF0: + add r4, r4, #1 +_022F1AF4: + cmp r4, #4 + blt _022F1AC4 +_022F1AFC: + cmp r4, #4 + bne _022F1B20 + ldr r1, _022F1DF8 ; =0x00000B9B + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + cmp fp, #0 + beq _022F2970 + bl sub_02006B70 + b _022F2970 +_022F1B20: + mov r3, #0 + mov r1, r3 + mov r2, #1 + b _022F1B5C +_022F1B30: + add r0, sb, r3, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + addne r0, sb, r3, lsl #3 + ldrneb r0, [r0, #0x12a] + cmpne r0, #0 + bne _022F1B64 + add r3, r3, #1 +_022F1B5C: + cmp r3, #4 + blt _022F1B30 +_022F1B64: + cmp r3, #4 + bne _022F1B9C + bl sub_0204AF20 + cmp r0, #0 + beq _022F1B8C + mov r0, r6 + mov r1, #0 + bl ov29_022F0C3C + cmp r0, #0 + beq _022F2970 +_022F1B8C: + add r0, sb, #0x4a + mov r1, #0x17 + bl SetMonsterActionFields + b _022F2970 +_022F1B9C: + mov r7, r4 + mov r1, #0 + b _022F1BD8 +_022F1BA8: + cmp r7, r4 + beq _022F1BC0 + add r0, sb, r7, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #2 + beq _022F1BE0 +_022F1BC0: + add r0, sb, r7, lsl #3 + ldrb r0, [r0, #0x12a] + cmp r0, #0 + movne r1, #1 + bne _022F1BE0 + add r7, r7, #1 +_022F1BD8: + cmp r7, #4 + blt _022F1BA8 +_022F1BE0: + cmp r1, #0 + bne _022F1C04 + ldr r1, _022F1DFC ; =0x00000B9C + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + cmp fp, #0 + beq _022F2970 + bl sub_02006B70 + b _022F2970 +_022F1C04: + bl sub_0204AF20 + cmp r0, #0 + beq _022F1C28 + add r1, sb, #0x124 + mov r0, r6 + add r1, r1, r7, lsl #3 + bl ov29_022F0C3C + cmp r0, #0 + beq _022F2970 +_022F1C28: + mov r0, r6 + bl ov29_022E2A38 + mov r2, r4, lsl #0x10 + mov r1, r0 + add r0, sb, #0x4a + mov r2, r2, asr #0x10 + bl ov29_022EBC98 + b _022F2970 +_022F1C48: + ldr r0, [sp, #0x34] + cmp r0, #0 + beq _022F1C74 + mov r0, r6 + mov r1, sb + bl ov29_022F37D0 + cmp r0, #0 + beq _022F1CE0 + mov r0, #1 + str r0, [sp, #0x64] + b _022F2970 +_022F1C74: + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _022F1C9C + mov r0, r6 + mov r1, sb + bl ov29_022F37D0 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x64] + bne _022F2970 +_022F1C9C: + mov r0, r6 + mov r1, sb + bl ov29_022F3AFC + cmp r0, #0 + bne _022F2970 + add r0, sb, #0x4a + mov r1, #0x32 + bl SetMonsterActionFields + b _022F2970 +_022F1CC0: + ldr r0, [sp, #0x4c] + cmp r0, #0 + beq _022F1CE0 + mov r0, r6 + mov r1, sb + bl ov29_022F3AFC + cmp r0, #0 + bne _022F2970 +_022F1CE0: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #0x400 + beq _022F1D10 + mov r0, #0 + mov r1, #1 + strb r1, [sp, #0xb6] + strb r0, [sp, #0xb7] + strb r0, [sp, #0xb8] + strb r0, [sp, #0xb9] + strb r0, [sp, #0xba] + b _022F2970 +_022F1D10: + ldr r0, [sp, #0x58] + cmp r0, #0 + beq _022F1D84 + mov r0, r6 + add r1, sp, #0xcc + bl ov29_022F0BAC + ldr r0, [sp, #0xd4] + ldr r1, [sp, #0xcc] + ldr r2, [sp, #0xd8] + ldr r3, [sp, #0xd0] + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + bl ov29_022E0CB8 + cmp r0, #0 + beq _022F1D84 + mov r0, #0 + mov r1, #1 + strb r1, [sp, #0xb6] + strb r0, [sp, #0xb7] + strb r0, [sp, #0xb8] + strb r0, [sp, #0xb9] + strb r0, [sp, #0xba] + b _022F2970 +_022F1D84: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #6] + tst r0, #2 + beq _022F1DB0 + mov r1, #1 + mov r0, #0 + strb r1, [sp, #0xb6] + strb r0, [sp, #0xb7] + strb r0, [sp, #0xb8] + strb r1, [sp, #0xb9] + b _022F2970 +_022F1DB0: + ldr r1, [sp, #0x6c] + ldr r0, _022F1E00 ; =0x00000708 + cmp r1, r0 + blt _022F1E04 + mov r1, #1 + mov r0, #0 + strb r1, [sp, #0xb6] + strb r1, [sp, #0xb7] + strb r0, [sp, #0xb8] + strb r0, [sp, #0xb9] + b _022F2970 + .align 2, 0 +_022F1DDC: .word 0x02353538 +_022F1DE0: .word 0x0235171C +_022F1DE4: .word 0x0237C9A4 +_022F1DE8: .word 0x00000BA3 +_022F1DEC: .word 0x0237C6A4 +_022F1DF0: .word 0x0237C694 +_022F1DF4: .word 0x00000B9A +_022F1DF8: .word 0x00000B9B +_022F1DFC: .word 0x00000B9C +_022F1E00: .word 0x00000708 +_022F1E04: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x800 + bne _022F1E3C + tst r0, #8 + cmpeq sl, #0 + bne _022F1E3C + ldrb r0, [r5, #0x35] + cmp r0, #0 + beq _022F1E3C + bl ov29_0233779C + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #0 + strb r1, [r0, #2] +_022F1E3C: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x200 + beq _022F1E90 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #2 + beq _022F1E90 + bl sub_0204AF78 + mov r0, #4 + bl sub_02017CCC + mov r0, #0 + mov r1, #1 + bl OpenMessageLog + bl sub_0204AF78 + cmp r0, #0 + beq _022F1E88 + bl ov29_0234BB38 + bl ov29_022E81F8 +_022F1E88: + bl ov29_022E0B44 + bl sub_02006B70 +_022F1E90: + mov r0, #0 + str r0, [sp, #0x44] + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x100 + beq _022F1ECC + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #1] + cmp r0, #0 + ldreq r0, _022F1DE4 ; =0x0237C9A4 + moveq r1, #0 + streqh r1, [r0, #4] + mov r1, #1 + ldr r0, _022F1DE4 ; =0x0237C9A4 + b _022F1ED4 +_022F1ECC: + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #0 +_022F1ED4: + strb r1, [r0, #1] + ldr r0, _022F1DF0 ; =0x0237C694 + mov r8, #0 + ldrh r0, [r0, #2] + tst r0, #0x800 + bne _022F1EF4 + tst r0, #8 + beq _022F1EF8 +_022F1EF4: + mov r8, #1 +_022F1EF8: + cmp sl, #0 + beq _022F1F68 + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _022F1F68 + mov r0, r6 + add r1, sp, #0xbc + bl ov29_022F0BAC + ldr r0, _022F1DEC ; =0x0237C6A4 + ldrh r0, [r0] + tst r0, #0x100 + beq _022F1F68 + ldr r0, [sp, #0xc4] + ldr r1, [sp, #0xbc] + ldr r2, [sp, #0xc8] + ldr r3, [sp, #0xc0] + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + bl ov29_022E0CB8 + cmp r0, #0 + movne r8, #1 +_022F1F68: + cmp r8, #0 + beq _022F20B8 + ldr r0, [r6, #0xb4] + str r0, [sp, #0x10] + ldrb r0, [r0, #0xf1] + cmp r0, #2 + beq _022F2098 + mov r0, r6 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + bne _022F2098 + mov fp, #0 + b _022F2090 +_022F1FA0: + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x10] + ldrb r1, [r0, #0x4c] + mov r0, #1 + str r0, [sp, #0x1c] + add r8, r1, #1 + b _022F204C +_022F1FC0: + and r8, r8, #7 + ldr r1, _022F1DE0 ; =0x0235171C + mov r2, r8, lsl #2 + ldrsh r3, [r1, r2] + ldr r2, _022F1DE0 ; =0x0235171C + ldrsh r0, [r6, #4] + add r2, r2, r8, lsl #2 + ldrsh r1, [r6, #6] + ldrsh r2, [r2, #2] + add r0, r0, r3 + add r1, r1, r2 + bl GetTile + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _022F203C + ldr r0, [r1] + cmp r0, #1 + bne _022F203C + ldr r0, [r1, #0xb4] + str r0, [sp, #0xc] + mov r0, r6 + bl ov29_022E274C + cmp r0, #0 + beq _022F203C + cmp fp, #0 + ldreq r0, [sp, #0xc] + ldreqb r0, [r0, #6] + cmpeq r0, #0 + movne r0, #1 + strne r0, [sp, #0x18] + bne _022F2058 +_022F203C: + ldr r0, [sp, #0x1c] + add r8, r8, #1 + add r0, r0, #1 + str r0, [sp, #0x1c] +_022F204C: + ldr r0, [sp, #0x1c] + cmp r0, #8 + blt _022F1FC0 +_022F2058: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _022F208C + and r2, r8, #7 + ldr r1, [r6, #0xb4] + mov r0, r6 + strb r2, [r1, #0x4c] + bl GetSleepAnimationId + mov r2, r8 + mov r1, r0 + mov r0, r6 + bl ov29_023049A8 + b _022F2098 +_022F208C: + add fp, fp, #1 +_022F2090: + cmp fp, #1 + blt _022F1FA0 +_022F2098: + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #1 + strb r1, [r0, #2] + ldrb r0, [sb, #0x4c] + strb r0, [r5, #0x36] + mov r0, #0xff + strb r0, [r5, #0x37] + bl ov29_022E0B44 +_022F20B8: + ldr r0, [sp, #0x38] + cmp r0, #0 + bne _022F20E4 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x200 + beq _022F20EC + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #0x100 + beq _022F20EC +_022F20E4: + mov r0, #1 + str r0, [sp, #0x44] +_022F20EC: + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _022F2118 + mov r0, r6 + bl ov29_023186CC + cmp r0, #0 + beq _022F2118 + mov r0, r6 + bl ov29_02318700 + mov r0, #0 + str r0, [sp, #0x44] +_022F2118: + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _022F2180 + bl GetEquippedThrowableItem + movs fp, r0 + bmi _022F2180 + mov r8, #1 + bl sub_0204AF20 + cmp r0, #0 + beq _022F2150 + mov r0, r6 + bl ov29_022F0C1C + cmp r0, #0 + moveq r8, #0 +_022F2150: + cmp r8, #0 + beq _022F2970 + mov r0, #0xb + bl ov29_022EB3C8 + add r0, fp, #1 + strb r0, [sb, #0x4e] + mov r0, #0 + strh r0, [sb, #0x50] + strh r0, [sb, #0x52] + ldrh r0, [sb, #0x4a] + cmp r0, #0 + bne _022F2970 +_022F2180: + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + bne _022F21B4 + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #4 + beq _022F21B4 + mov r0, #0 + bl ov29_022F0C98 + mov sl, #0 +_022F21B4: + strh r4, [sp, #0xb2] + strh r4, [sp, #0xb4] + mov r0, #0 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r1, r0, #0x100 + ldrsh r3, [r1, #0xd8] + cmp r3, #0 + blt _022F2210 + ldrsh r2, [r6, #4] + cmp r2, r3 + ldreqsh r1, [r1, #0xda] + ldreqsh r2, [r6, #6] + cmpeq r2, r1 + moveq r7, r4 + beq _022F23C4 + add r1, r0, #0x1d8 + mov r0, r6 + bl ov29_022F40B8 + mov r7, r0 + b _022F23C4 +_022F2210: + ldr r1, _022F1DE4 ; =0x0237C9A4 + ldrb r1, [r1, #2] + cmp r1, #0 + bne _022F2324 + ldr r1, [sp, #0x58] + cmp r1, #0 + cmpeq sl, #0 + ldreq r1, [sp, #0x50] + cmpeq r1, #0 + beq _022F2324 + cmp sl, #0 + beq _022F225C + mov r0, r6 + add r1, sp, #0x9e + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + mov r7, r0 + b _022F22A8 +_022F225C: + ldr r0, [sp, #0x58] + cmp r0, #0 + beq _022F2284 + mov r0, r6 + add r1, sp, #0x9e + mov r2, #0x66 + mov r3, #0 + bl ov29_022F3EA0 + mov r7, r0 + b _022F22A8 +_022F2284: + ldr r0, [sp, #0x50] + cmp r0, #0 + beq _022F22A8 + mov r0, r6 + add r1, sp, #0x9e + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + mov r7, r0 +_022F22A8: + cmp r7, #0 + blt _022F23C4 + ldrsh r1, [r6, #4] + ldrsh r0, [sp, #0x9e] + cmp r1, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0xa0] + cmpeq r1, r0 + beq _022F231C + mov r0, r6 + add r1, sp, #0x9e + bl ov29_022F426C + cmp r0, #0 + beq _022F23C4 + mov r0, r6 + add r1, sp, #0x9e + bl ov29_022F40B8 + ldr r1, [sp, #0x50] + mov r7, r0 + mov r0, #1 + str r0, [sp, #0x40] + cmp r1, #0 + ldrh r1, [sp, #0x9e] + ldrh r0, [sp, #0xa0] + strh r1, [sp, #0xb2] + strh r0, [sp, #0xb4] + movne r0, #1 + strne r0, [sp, #0x3c] + b _022F23C4 +_022F231C: + ldrb r7, [sb, #0x4c] + b _022F23C4 +_022F2324: + ldrb r0, [r0, #0x78c] + cmp r0, #0 + beq _022F234C + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #1] + cmp r0, #0 + ldreq r0, _022F1DF0 ; =0x0237C694 + ldreqh r1, [r0, #2] + moveq r2, r1 + beq _022F2368 +_022F234C: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r1, [r0] + ldrb r0, [r5, #0x35] + cmp r0, #0 + ldrne r0, _022F1DF0 ; =0x0237C694 + ldrneh r2, [r0, #2] + moveq r2, r1 +_022F2368: + and r0, r1, #0xf0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r7, r4 + cmp r1, #0x50 + moveq r7, #3 + and r0, r2, #0xf0 + cmp r1, #0x60 + moveq r7, #5 + mov r0, r0, lsl #0x10 + cmp r1, #0x90 + moveq r7, #1 + cmp r1, #0xa0 + mov r2, r0, lsr #0x10 + moveq r7, #7 + cmp r2, #0x40 + moveq r7, #4 + cmp r2, #0x80 + moveq r7, #0 + cmp r2, #0x10 + moveq r7, #2 + cmp r2, #0x20 + moveq r7, #6 +_022F23C4: + ldr r0, [sp, #0x5c] + cmp r0, #0 + bne _022F243C + ldr r0, [sp, #0x54] + cmp r0, #0 + beq _022F243C + mov r0, r6 + add r1, sp, #0x9a + mov r2, #2 + mov r3, #0 + bl ov29_022F3EA0 + movs r7, r0 + bmi _022F243C + ldrsh r1, [r6, #4] + ldrsh r0, [sp, #0x9a] + cmp r1, r0 + ldreqsh r1, [r6, #6] + ldreqsh r0, [sp, #0x9c] + cmpeq r1, r0 + beq _022F243C + strb r7, [sb, #0x4c] + mov r0, #1 + str r0, [sp, #0x3c] + ldrb r0, [r5, #0x35] + cmp r0, #0 + beq _022F243C + bl ov29_0233779C + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #0 + strb r1, [r0, #2] +_022F243C: + ldr r0, _022F1DDC ; =0x02353538 + cmp sl, #0 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xdc] + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xde] + ldrne r0, _022F1DE4 ; =0x0237C9A4 + ldrneb r0, [r0, #2] + cmpne r0, #0 + beq _022F248C + mov r0, r6 + add r1, sp, #0x96 + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + mov r7, r0 + strb r7, [r5, #0x36] +_022F248C: + cmp r7, #0 + blt _022F2944 + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _022F24AC + tst r7, #1 + beq _022F2964 +_022F24AC: + ldrb r0, [sb, #0x4c] + cmp r0, r7 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + str r0, [sp, #0x28] + and r0, r7, #7 + strb r0, [sb, #0x4c] + ldr r0, _022F1DE4 ; =0x0237C9A4 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _022F251C + mov r0, r6 + strb r7, [r5, #0x36] + bl GetSleepAnimationId + mov r1, r0 + mov r2, r7 + mov r0, r6 + bl ov29_023049A8 + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xd8] + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xda] + b _022F2964 +_022F251C: + mov r8, #0 + mov r0, r8 + str r0, [sp, #0x24] + add r1, sp, #0x90 + bl GetPressedButtons + ldr fp, [r6, #0xb4] + ldr r1, _022F1DE0 ; =0x0235171C + ldrb r3, [fp, #0x4c] + ldrsh r2, [r6, #4] + ldrsh r0, [r6, #6] + mov sl, r3, lsl #2 + ldrsh r1, [r1, sl] + ldr sl, _022F1DE0 ; =0x0235171C + add r3, sl, r3, lsl #2 + add r1, r2, r1 + ldrsh r3, [r3, #2] + mov r1, r1, lsl #0x10 + add r2, r0, r3 + mov r0, r1, asr #0x10 + mov r1, r2, lsl #0x10 + mov r1, r1, asr #0x10 + bl GetTile + ldr r0, [r0, #0xc] + str r0, [sp, #0x14] + cmp r0, #0 + moveq r0, r8 + beq _022F2748 + ldr r0, [r0] + cmp r0, #1 + movne r0, r8 + bne _022F2748 + ldr r0, [sp, #0x14] + ldr sl, [r0, #0xb4] + ldrb r0, [sl, #6] + cmp r0, #0 + ldrneb r0, [sl, #9] + cmpne r0, #1 + cmpne r0, #2 + beq _022F25D8 + mov r0, sl + bl IsExperienceLocked + cmp r0, #0 + bne _022F25D8 + ldrb r0, [sl, #0xbc] + cmp r0, #7 + movne r0, r8 + bne _022F2748 +_022F25D8: + mov r0, fp + bl ov29_022F35E0 + cmp r0, #0 + moveq r0, #0 + beq _022F2748 + mov r0, sl + bl ov29_022F35E0 + cmp r0, #0 + moveq r0, #0 + beq _022F2748 + ldrb r0, [fp, #0xd0] + cmp r0, #2 + moveq r0, #0 + beq _022F2748 + ldrb r0, [sl, #0xd0] + cmp r0, #2 + moveq r0, #0 + beq _022F2748 + ldrb r0, [sl, #0xbd] + cmp r0, #0 + cmpne r0, #2 + cmpne r0, #4 + movne r0, #0 + bne _022F2748 + ldrb r0, [fp, #0xbd] + cmp r0, #0 + cmpne r0, #2 + cmpne r0, #4 + movne r0, #0 + bne _022F2748 + ldr r0, [sp, #0x14] + mov r1, #0 + bl ov29_0232461C + cmp r0, #0 + movne r0, #0 + bne _022F2748 + ldrb r1, [fp, #0x4c] + mov r0, r6 + bl ov29_0230105C + cmp r0, #0 + moveq r0, #0 + beq _022F2748 + ldr r0, [sp, #0x14] + add r1, r6, #4 + bl ov29_022FF958 + cmp r0, #0 + beq _022F26B8 + mov r0, #0 + ldr r1, _022F1DE8 ; =0x00000BA3 + mov r2, #1 + mov r3, r0 + str r0, [sp] + bl ov29_0234D518 + cmp r0, #2 + moveq r0, #0 + beq _022F2748 +_022F26B8: + add r0, fp, #0x4a + mov r1, #2 + bl SetMonsterActionFields + ldr r0, _022F1DF0 ; =0x0237C694 + mov r1, #2 + ldrh r0, [r0] + tst r0, #2 + movne r0, #0 + moveq r0, #1 + strb r0, [fp, #0x4e] + ldrh r2, [fp] + add r0, sl, #0x4a + orr r2, r2, #0x8000 + strh r2, [fp] + bl SetMonsterActionFields + mov r0, #0 + strb r0, [sl, #0x4e] + ldrb r1, [fp, #0x4c] + add r2, sl, #0x100 + mov r0, #1 + add r1, r1, #4 + and r1, r1, #7 + strb r1, [sl, #0x4c] + ldrh r1, [sl] + orr r1, r1, #0x8000 + strh r1, [sl] + ldr r1, [sp, #0x14] + ldrsh r1, [r1, #4] + strh r1, [r2, #0x7e] + ldr r1, [sp, #0x14] + ldrsh r1, [r1, #6] + strh r1, [r2, #0x80] + ldr r1, _022F1DDC ; =0x02353538 + ldr r2, [r1] + mov r1, r0 + strb r1, [r2, #0x10] +_022F2748: + cmp r0, #0 + bne _022F2970 + ldrb r0, [sb, #0xc4] + cmp r0, #2 + ldreq r0, [sp, #0x7c] + streq r0, [sp, #0x24] + orreq r0, r8, #1 + andeq r8, r0, #0xff + beq _022F27C8 + cmp r0, #7 + ldreq r0, [sp, #0x80] + streq r0, [sp, #0x24] + orreq r0, r8, #1 + andeq r8, r0, #0xff + beq _022F27C8 + cmp r0, #5 + moveq r0, #0xba0 + streq r0, [sp, #0x24] + orreq r0, r8, #1 + andeq r8, r0, #0xff + beq _022F27C8 + cmp r0, #3 + ldreq r0, [sp, #0x84] + streq r0, [sp, #0x24] + orreq r0, r8, #1 + andeq r8, r0, #0xff + beq _022F27C8 + cmp r0, #4 + ldreq r0, [sp, #0x88] + streq r0, [sp, #0x24] + orreq r0, r8, #1 + andeq r8, r0, #0xff +_022F27C8: + mov r0, r6 + mov r1, r7 + bl ov29_02300E78 + cmp r0, #0 + orreq r0, r8, #2 + andeq r8, r0, #0xff + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _022F2804 + mov r0, r6 + bl GetSleepAnimationId + mov r2, r7 + mov r1, r0 + mov r0, r6 + bl ov29_023049A8 +_022F2804: + tst r8, #2 + bne _022F2910 + tst r8, #1 + beq _022F2864 + ldr r0, [sp, #0x24] + cmp r0, #0 + beq _022F282C + ldr r1, [sp, #0x24] + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_022F282C: + mov r0, #1 + bl ov29_022EB3C8 + ldr r1, _022F1DDC ; =0x02353538 + mov r3, #1 + ldr r0, [r1] + sub r2, r3, #2 + strb r3, [r0, #0x78e] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xd8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xda] + b _022F2970 +_022F2864: + mov r0, #2 + bl ov29_022EB3C8 + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _022F289C + ldr r0, _022F1DDC ; =0x02353538 + ldrh r2, [sp, #0xb2] + ldr r1, [r0] + mov r0, #7 + add r1, r1, #0x100 + strh r2, [r1, #0xd8] + ldrh r2, [sp, #0xb4] + strh r2, [r1, #0xda] + bl sub_02017CCC +_022F289C: + ldr r0, _022F1DF0 ; =0x0237C694 + ldrh r0, [r0] + tst r0, #2 + ldreq r0, [sp, #0x3c] + cmpeq r0, #0 + beq _022F2904 + add r0, sb, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + beq _022F2904 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xd0] + cmp r0, #2 + ldrne r0, _022F1DDC ; =0x02353538 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #0x78b] + mov r0, #0 + strb r0, [sb, #0x4e] + b _022F2970 +_022F2904: + mov r0, #1 + strb r0, [sb, #0x4e] + b _022F2970 +_022F2910: + tst r8, #1 + beq _022F2920 + mov r0, #0x23 + bl ov29_022EA3B4 +_022F2920: + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xd8] + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xda] + b _022F2964 +_022F2944: + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xd8] + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + strh r4, [r0, #0xda] +_022F2964: + mov r0, #0xf + bl AdvanceFrame + b _022F110C +_022F2970: + ldrb r0, [r5, #0x35] + cmp r0, #0 + beq _022F2980 + bl ov29_0233779C +_022F2980: + ldrh r0, [sb, #0x4a] + cmp r0, #0x2d + cmpne r0, #0x13 + bne _022F29B0 + mov r0, r6 + bl ov29_022F59C4 + bl IsFloorOver + cmp r0, #0 + bne _022F2B34 + mov r0, #0 + bl ov29_022EB3C8 + b _022F1024 +_022F29B0: + ldrb r0, [sp, #0xb6] + cmp r0, #0 + bne _022F2A00 + ldr r0, _022F1DDC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x78c] + ldrh r0, [sb, #0x4a] + cmp r0, #0 + beq _022F29F4 + mov r0, r6 + bl ov29_022EB944 + cmp r0, #0 + bne _022F2B34 + mov r0, #0xf + bl AdvanceFrame + b _022F2B34 +_022F29F4: + mov r0, #0xf + bl AdvanceFrame + b _022F1024 +_022F2A00: + mov r0, #0xf + bl AdvanceFrame + bl ov29_02346E5C + mov r0, #0 + bl ov29_0233A248 + mov r0, #1 + mov r1, #0 + bl ov29_022EA428 + ldrb r0, [sp, #0xb9] + cmp r0, #0 + beq _022F2A70 + bl GetLeader + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + bne _022F2A70 + mov r0, #4 + bl sub_02017CCC + ldrb r0, [sp, #0xb7] + ldrb r1, [sp, #0xb8] + mov r2, #1 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bl ov29_0234DDF4 + bl sub_02006B70 + b _022F2A9C +_022F2A70: + mov r0, #4 + bl sub_02017CCC + ldrb r0, [sp, #0xb7] + ldrb r1, [sp, #0xb8] + mov r2, #0 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bl ov29_0234DDF4 + bl sub_02006B70 +_022F2A9C: + bl ov29_022E0B44 + ldr r0, _022F1DE4 ; =0x0237C9A4 + mov r1, #0 + strb r1, [r0, #2] + strb r1, [r5, #0x35] + bl ov29_0233779C + bl IsFloorOver + cmp r0, #0 + bne _022F2B34 + ldrh r0, [sb, #0x4a] + cmp r0, #0 + beq _022F2B18 + cmp r0, #0x2b + bne _022F2AEC + ldr r0, _022F1DDC ; =0x02353538 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #8] + ldr r0, [r0] + strb r2, [r0, #7] +_022F2AEC: + ldrh r0, [sb, #0x4a] + cmp r0, #0x2e + bne _022F2B34 + ldr r0, _022F1DDC ; =0x02353538 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #8] + ldr r0, [r0] + strb r1, [r0, #7] + b _022F2B34 +_022F2B18: + mov r0, #0xf + bl AdvanceFrame + ldr r0, _022F1DDC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + beq _022F1024 +_022F2B34: + add sp, sp, #0xdc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_022F0EDC + + arm_func_start ov29_022F2B3C +ov29_022F2B3C: ; 0x022F2B3C + ldrb r1, [r0, #6] + cmp r1, #0 + beq _022F2B6C + ldrb r1, [r0, #8] + cmp r1, #0 + ldreqb r1, [r0, #9] + cmpeq r1, #0 + bne _022F2B6C + ldrb r0, [r0, #0xbc] + cmp r0, #7 + movne r0, #1 + bxne lr +_022F2B6C: + mov r0, #0 + bx lr + arm_func_end ov29_022F2B3C + + arm_func_start ov29_022F2B74 +ov29_022F2B74: ; 0x022F2B74 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r1, _022F2FBC ; =0x02353538 + ldr r8, _022F2FC0 ; =0x0237C9A4 + ldr r1, [r1] + ldrb r2, [r8, #1] + add r1, r1, #0x21c + str r0, [sp] + cmp r2, #0 + add r5, r1, #0x1a000 + beq _022F2D58 + ldr r0, _022F2FC4 ; =0x0000013F + mov r6, #0x400 + rsb r6, r6, #0 + add r0, r0, #0x9c + mov r4, #0 + str r0, [sp, #8] + add r7, r6, #0x200 +_022F2BBC: + ldr r0, _022F2FC8 ; =0x023526D8 + mov r1, #6 + ldrh r2, [sp, #0x10] + mla r0, r4, r1, r0 + bic r1, r2, #0x100 + strh r1, [sp, #0x10] + ldrh r2, [sp, #0x10] + ldrb r1, [r0, #5] + bic r2, r2, #0x200 + strh r2, [sp, #0x10] + cmp r1, #0 + ldrh r1, [sp, #0x10] + movne r2, #0x10 + moveq r2, #0 + bic r1, r1, #0xc00 + strh r1, [sp, #0x10] + ldrh r1, [sp, #0x10] + orr r1, r1, #0x400 + strh r1, [sp, #0x10] + ldrh r1, [sp, #0x10] + bic r1, r1, #0x1000 + strh r1, [sp, #0x10] + ldrh r1, [sp, #0x10] + bic r1, r1, #0x2000 + strh r1, [sp, #0x10] + ldrh r1, [sp, #0x10] + orr r1, r1, #0x2000 + strh r1, [sp, #0x10] + ldrh r1, [sp, #0x10] + bic r1, r1, #0xc000 + strh r1, [sp, #0x10] + ldrb r1, [r0, #4] + cmp r1, #0 + movne r1, #8 + moveq r1, #0 + add r1, r1, r2 + ldrh r3, [sp, #0x12] + mov sb, r1, lsl #0x1b + ldrh r1, [sp, #0x16] + ldrh r2, [sp, #0x14] + bic r3, r3, #0x3e00 + bic r1, r1, #1 + and r2, r2, r6 + strh r3, [sp, #0x12] + strh r1, [sp, #0x16] + strh r2, [sp, #0x14] + ldrh r1, [sp, #0x12] + ldrh r3, [sp, #0x14] + ldrh r2, [sp, #0x16] + orr r1, r1, sb, lsr #18 + strh r1, [sp, #0x12] + ldr r1, [sp, #8] + ldrsh fp, [r0] + orr r1, r3, r1 + strh r1, [sp, #0x14] + bic r1, r2, #2 + strh r1, [sp, #0x16] + ldrh r1, [sp, #0x14] + ldrh r2, [sp, #0x12] + ldrsh sb, [r0, #2] + bic r1, r1, #0xc00 + bic r2, r2, #0xc000 + strh r1, [sp, #0x14] + strh r2, [sp, #0x12] + ldrh r2, [sp, #0x14] + ldrh r0, [sp, #0x12] + ldrh r1, [sp, #0x16] + orr r2, r2, #0x800 + strh r2, [sp, #0x14] + ldrh r2, [sp, #0x14] + and sl, r0, r7 + ldr r0, _022F2FCC ; =0xFFFF000F + bic r2, r2, #0xf000 + strh r2, [sp, #0x14] + ldrsh ip, [r8, #4] + and r3, r1, r0 + ldr r0, _022F2FD0 ; =0x020AFC4C + add ip, ip, ip, lsr #31 + strh r3, [sp, #0x16] + mov r3, ip, asr #1 + and r3, r3, #7 + add r3, r3, #0xa + strh sl, [sp, #0x12] + mul sl, fp, r3 + mul r3, sb, r3 + add sb, sl, #0x7c + and sl, sb, r6, lsr #23 + ldrh fp, [sp, #0x12] + add r3, r3, #0x62 + ldrh sb, [sp, #0x16] + mov r3, r3, lsl #0x14 + orr sl, fp, sl + orr r3, sb, r3, lsr #16 + ldr r0, [r0] + ldr r2, _022F2FC4 ; =0x0000013F + add r1, sp, #0x10 + strh sl, [sp, #0x12] + strh r3, [sp, #0x16] + bl sub_0201B9F8 + add r4, r4, #1 + cmp r4, #4 + blt _022F2BBC + b _022F2F7C +_022F2D58: + ldrb r0, [r5, #0x35] + cmp r0, #0 + beq _022F2F7C + ldrb r3, [r5, #0x36] + cmp r3, #0 + blt _022F2F7C + cmp r3, #8 + bge _022F2F7C + ldrb r0, [r8, #3] + ldr r2, _022F2FC0 ; =0x0237C9A4 + cmp r0, #0 + ldrneb r0, [r8] + ldrsh r2, [r2, #4] + cmpne r0, #0 + mov r0, #0xc + mul r1, r3, r0 + add r2, r2, r2, lsr #31 + ldr r0, _022F2FD4 ; =0x023526F0 + mov r2, r2, asr #1 + and r2, r2, #7 + ldr r3, _022F2FD8 ; =0x023526F2 + add r7, r2, #0xa + ldrsh r4, [r0, r1] + ldrsh r2, [r3, r1] + movne sl, #3 + moveq sl, #1 + mul r3, r2, r7 + mul r6, r4, r7 + add r7, r6, #0x7c + cmp sl, #0 + add r8, r3, #0x62 + mov r6, #0 + ble _022F2F7C + ldr r3, _022F2FDC ; =0x023526F4 + mov r4, #0x400 + ldr r2, _022F2FE0 ; =0x000003FF + ldr r3, [r3, r1] + add sb, r0, r1 + sub r0, r2, #0x2c0 + rsb r4, r4, #0 + str r0, [sp, #4] + add r0, r4, #0x200 + and fp, r3, r2 + str r0, [sp, #0xc] + b _022F2F74 +_022F2E0C: + ldrh r1, [sp, #0x10] + ldrb r0, [sb, #9] + ldrh r3, [sp, #0x12] + bic r1, r1, #0x100 + strh r1, [sp, #0x10] + cmp r0, #0 + ldrh r0, [sp, #0x10] + movne r1, #0x10 + ldrh r2, [sp, #0x14] + bic r0, r0, #0x200 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + bic r3, r3, #0x3e00 + strh r3, [sp, #0x12] + bic r0, r0, #0xc00 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + and r2, r2, r4 + strh r2, [sp, #0x14] + orr r0, r0, #0x400 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + moveq r1, #0 + ldrh r3, [sp, #0x12] + bic r0, r0, #0x1000 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + ldrh r2, [sp, #0x14] + bic r0, r0, #0x2000 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + orr r0, r0, #0x2000 + strh r0, [sp, #0x10] + ldrh r0, [sp, #0x10] + bic r0, r0, #0xc000 + strh r0, [sp, #0x10] + ldrb r0, [sb, #8] + cmp r0, #0 + movne r0, #8 + moveq r0, #0 + add r0, r0, r1 + ldrh r1, [sp, #0x16] + mov r0, r0, lsl #0x1b + orr r0, r3, r0, lsr #18 + bic r1, r1, #1 + strh r1, [sp, #0x16] + strh r0, [sp, #0x12] + orr r0, r2, fp + ldrh r2, [sp, #0x12] + ldrh r1, [sp, #0x16] + strh r0, [sp, #0x14] + bic r2, r2, #0xc000 + bic r0, r1, #2 + ldrh r1, [sp, #0x14] + strh r2, [sp, #0x12] + strh r0, [sp, #0x16] + bic r1, r1, #0xc00 + strh r1, [sp, #0x14] + ldrh r1, [sp, #0x14] + ldrh r3, [sp, #0x12] + ldrh r2, [sp, #0x16] + orr r1, r1, #0x800 + strh r1, [sp, #0x14] + ldr r1, [sp, #0xc] + and r0, r7, r4, lsr #23 + and r1, r3, r1 + strh r1, [sp, #0x12] + ldr r1, _022F2FCC ; =0xFFFF000F + ldrh r3, [sp, #0x14] + and r1, r2, r1 + ldrh r2, [sp, #0x12] + strh r1, [sp, #0x16] + bic r3, r3, #0xf000 + orr r0, r2, r0 + strh r0, [sp, #0x12] + ldrh r1, [sp, #0x16] + mov r0, r8, lsl #0x14 + ldr r2, [sp, #4] + orr r0, r1, r0, lsr #16 + strh r0, [sp, #0x16] + ldr r0, _022F2FD0 ; =0x020AFC4C + add r1, sp, #0x10 + ldr r0, [r0] + strh r3, [sp, #0x14] + bl sub_0201B9F8 + ldrsh r1, [sb] + ldrsh r0, [sb, #2] + add r6, r6, #1 + add r7, r7, r1, lsl #2 + add r8, r8, r0, lsl #2 +_022F2F74: + cmp r6, sl + blt _022F2E0C +_022F2F7C: + ldr r0, _022F2FC0 ; =0x0237C9A4 + ldrb r1, [r0, #2] + cmp r1, #0 + ldrneb r2, [r5, #0x36] + ldrneb r1, [r5, #0x37] + cmpne r1, r2 + beq _022F2FB4 + strb r2, [r5, #0x37] + ldrb r3, [r0, #2] + ldr r0, [sp] + ldrb r1, [r5, #0x36] + add r0, r0, #4 + mov r2, #0 + bl ov29_02337428 +_022F2FB4: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F2FBC: .word 0x02353538 +_022F2FC0: .word 0x0237C9A4 +_022F2FC4: .word 0x0000013F +_022F2FC8: .word 0x023526D8 +_022F2FCC: .word 0xFFFF000F +_022F2FD0: .word 0x020AFC4C +_022F2FD4: .word 0x023526F0 +_022F2FD8: .word 0x023526F2 +_022F2FDC: .word 0x023526F4 +_022F2FE0: .word 0x000003FF + arm_func_end ov29_022F2B74 + + arm_func_start ov29_022F2FE4 +ov29_022F2FE4: ; 0x022F2FE4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _022F3084 ; =0x02353538 + ldr r2, _022F3088 ; =0x0237C694 + ldr r6, [r1] + mov r4, #0 + ldrb r5, [r6, #0x78c] + ldrb r0, [r6, #0x78b] + ldrh r7, [r2] + sub r3, r4, #1 + orr r0, r5, r0 + strb r0, [r6, #0x78c] + ldr r0, [r1] + and r5, r7, #0xf0 + strb r4, [r0, #0x78b] + ldr r0, [r1] + mov r8, #0x54 + add r0, r0, #0x100 + strh r3, [r0, #0xd8] + ldr r0, [r1] + ldr r7, _022F3088 ; =0x0237C694 + add r0, r0, #0x100 + strh r3, [r0, #0xda] + ldrh r0, [r2] + ldr r6, _022F3084 ; =0x02353538 + tst r0, #0x100 + movne r4, #1 + b _022F3070 +_022F3050: + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrh r0, [r7] + and r0, r0, #0xf0 + tst r5, r0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r8 + bl AdvanceFrame +_022F3070: + ldr r0, [r6] + ldrb r0, [r0, #0x78c] + cmp r0, #0 + bne _022F3050 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F3084: .word 0x02353538 +_022F3088: .word 0x0237C694 + arm_func_end ov29_022F2FE4 + + arm_func_start ov29_022F308C +ov29_022F308C: ; 0x022F308C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x68 + ldr r0, _022F35D4 ; =0x02353538 + ldr r5, [r0] + bl GetLeader + mov r4, r0 + ldrsh sl, [r4, #4] + ldrsh sb, [r4, #6] + ldr r2, [r4, #0xb4] + mov r0, sl + mov r1, sb + ldrb r7, [r2, #0x4c] + bl GetTile + ldrb r1, [r5, #0x78b] + ldr r3, _022F35D8 ; =0x0235171C + mov r5, r7, lsl #2 + ldr r2, _022F35DC ; =0x0235171E + ldrsh r6, [r3, r5] + mov r8, r0 + cmp r1, #0 + ldrsh r5, [r2, r5] + moveq r0, #0 + beq _022F35CC + ldr r0, [r8, #0x10] + cmp r0, #0 + movne r0, #0 + bne _022F35CC + add r1, sp, #0x4c + mov r0, r4 + strh sl, [sp, #0x4c] + strh sb, [sp, #0x4e] + bl ov29_022FFA94 + cmp r0, #0 + movne r0, #0 + bne _022F35CC + mov r0, r4 + mov r1, r7 + bl ov29_02300FCC + cmp r0, #0 + moveq r0, #0 + beq _022F35CC + ldrb r0, [r8, #7] + str r0, [sp, #0x10] + cmp r0, #0xff + bne _022F3160 + add r0, sl, r6 + add r1, sb, r5 + bl GetTile + ldrb r0, [r0, #7] + cmp r0, #0xff + beq _022F3170 + mov r0, #0 + b _022F35CC +_022F3160: + ldrh r0, [r8] + tst r0, #8 + movne r0, #0 + bne _022F35CC +_022F3170: + mvn r6, #0 + ldr r5, _022F35D8 ; =0x0235171C + b _022F31C4 +_022F317C: + add r0, r7, r6 + mov r0, r0, lsl #0x1d + mov r1, r0, lsr #0x1b + add r0, r5, r0, lsr #27 + ldrsh r2, [r5, r1] + ldrsh r1, [r0, #2] + add r0, sl, r2 + add r1, sb, r1 + bl GetTile + ldr r1, [r0, #0xc] + cmp r1, #0 + movne r0, #0 + bne _022F35CC + ldrh r0, [r0] + tst r0, #0x200 + movne r0, #0 + bne _022F35CC + add r6, r6, #1 +_022F31C4: + cmp r6, #1 + ble _022F317C + add r1, r7, #4 + add r0, r7, #5 + mov r1, r1, lsl #0x1d + mov r0, r0, lsl #0x1d + add r2, r7, #3 + mov r2, r2, lsl #0x1d + ldr r6, _022F35D8 ; =0x0235171C + mov r5, r1, lsr #0x1b + mov fp, r0, lsr #0x1b + ldrsh r1, [r6, r5] + ldr r8, _022F35DC ; =0x0235171E + mov r3, r2, lsr #0x1b + add r1, sl, r1 + ldrsh r2, [r6, r3] + ldrsh r0, [r6, fp] + ldrsh r6, [r8, r3] + add r2, sl, r2 + ldrsh r5, [r8, r5] + ldrsh r3, [r8, fp] + add r8, sl, r0 + add r0, sb, r5 + str r1, [sp, #8] + str r0, [sp, #4] + ldr r0, [sp, #8] + add r6, sb, r6 + str r0, [sp, #0x60] + ldr r0, [sp, #4] + add r1, sb, r3 + str r0, [sp, #0x54] + and r0, r7, #1 + str r2, [sp, #0x5c] + str r8, [sp, #0x64] + str r6, [sp, #0x50] + str r1, [sp, #0x58] + str r0, [sp] + mvn r5, #0 + b _022F33E4 +_022F3260: + add r8, sl, r5 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + mvn r6, #0 + str r0, [sp, #0x14] + b _022F33D8 +_022F3278: + add fp, sb, r6 + mov r0, r8 + mov r1, fp + bl GetTile + ldr r1, [r0, #0x10] + str r0, [sp, #0xc] + cmp r1, #0 + beq _022F32DC + mov r0, #0 + b _022F32C0 +_022F32A0: + add r2, sp, #0x5c + ldr r2, [r2, r0, lsl #2] + cmp r8, r2 + addeq r2, sp, #0x50 + ldreq r2, [r2, r0, lsl #2] + cmpeq fp, r2 + beq _022F32C8 + add r0, r0, #1 +_022F32C0: + cmp r0, #3 + blt _022F32A0 +_022F32C8: + cmp r0, #3 + ldreq r0, [r1] + cmpeq r0, #3 + moveq r0, #0 + beq _022F35CC +_022F32DC: + ldr r0, [sp] + cmp r0, #0 + beq _022F3324 + cmp r1, #0 + beq _022F3368 + ldr r0, [r1] + cmp r0, #2 + bne _022F3368 + ldrb r0, [r1, #0x20] + cmp r0, #0 + ldreq r0, _022F35D4 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x1a000 + ldreqb r0, [r0, #0x244] + cmpeq r0, #0 + beq _022F3368 + mov r0, #0 + b _022F35CC +_022F3324: + cmp r5, #0 + cmpne r6, #0 + bne _022F3368 + cmp r1, #0 + beq _022F3368 + ldr r0, [r1] + cmp r0, #2 + bne _022F3368 + ldrb r0, [r1, #0x20] + cmp r0, #0 + ldreq r0, _022F35D4 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x1a000 + ldreqb r0, [r0, #0x244] + cmpeq r0, #0 + movne r0, #0 + bne _022F35CC +_022F3368: + cmp r5, #0 + cmpne r6, #0 + bne _022F33D4 + cmp r5, #0 + cmpeq r6, #0 + beq _022F33D4 + ldr r0, [sp, #8] + cmp r0, r8 + ldreq r0, [sp, #4] + cmpeq r0, fp + beq _022F33D4 + ldr r0, [sp, #0x14] + add r1, sp, #0x48 + strh r0, [sp, #0x48] + mov r0, r4 + strh fp, [sp, #0x4a] + bl ov29_022FFA94 + cmp r0, #0 + bne _022F33D4 + ldr r0, [sp, #0x10] + cmp r0, #0xff + ldrne r0, [sp, #0xc] + ldrneb r1, [r0, #7] + ldrne r0, [sp, #0x10] + cmpne r0, r1 + movne r0, #0 + bne _022F35CC +_022F33D4: + add r6, r6, #1 +_022F33D8: + cmp r6, #1 + ble _022F3278 + add r5, r5, #1 +_022F33E4: + cmp r5, #1 + ble _022F3260 + ldr r0, [sp] + cmp r0, #0 + bne _022F35C8 + cmp r7, #0 + cmpne r7, #4 + bne _022F34E8 + sub r3, sl, #1 + sub r2, sb, #1 + add r1, sp, #0x44 + mov r0, r4 + strh r3, [sp, #0x44] + strh r2, [sp, #0x46] + bl ov29_022FFA94 + mov r5, r0 + sub r2, sl, #1 + add r1, sp, #0x40 + mov r0, r4 + strh r2, [sp, #0x40] + strh sb, [sp, #0x42] + bl ov29_022FFA94 + mov r6, r0 + sub r3, sl, #1 + add r2, sb, #1 + add r1, sp, #0x3c + mov r0, r4 + strh r3, [sp, #0x3c] + strh r2, [sp, #0x3e] + bl ov29_022FFA94 + cmp r6, #0 + bne _022F3474 + cmp r5, r6 + cmpeq r6, r0 + movne r0, #0 + bne _022F35CC +_022F3474: + add r3, sl, #1 + sub r2, sb, #1 + add r1, sp, #0x38 + mov r0, r4 + strh r3, [sp, #0x38] + strh r2, [sp, #0x3a] + bl ov29_022FFA94 + mov r5, r0 + add r2, sl, #1 + add r1, sp, #0x34 + mov r0, r4 + strh r2, [sp, #0x34] + strh sb, [sp, #0x36] + bl ov29_022FFA94 + mov r6, r0 + add r3, sl, #1 + add r2, sb, #1 + add r1, sp, #0x30 + mov r0, r4 + strh r3, [sp, #0x30] + strh r2, [sp, #0x32] + bl ov29_022FFA94 + cmp r6, #0 + bne _022F35C8 + cmp r5, r6 + cmpeq r6, r0 + beq _022F35C8 + mov r0, #0 + b _022F35CC +_022F34E8: + sub r3, sl, #1 + sub r2, sb, #1 + add r1, sp, #0x2c + mov r0, r4 + strh r3, [sp, #0x2c] + strh r2, [sp, #0x2e] + bl ov29_022FFA94 + mov r5, r0 + sub r2, sb, #1 + add r1, sp, #0x28 + mov r0, r4 + strh sl, [sp, #0x28] + strh r2, [sp, #0x2a] + bl ov29_022FFA94 + mov r6, r0 + add r3, sl, #1 + sub r2, sb, #1 + add r1, sp, #0x24 + mov r0, r4 + strh r3, [sp, #0x24] + strh r2, [sp, #0x26] + bl ov29_022FFA94 + cmp r6, #0 + bne _022F3558 + cmp r5, r6 + cmpeq r6, r0 + movne r0, #0 + bne _022F35CC +_022F3558: + sub r3, sl, #1 + add r2, sb, #1 + add r1, sp, #0x20 + mov r0, r4 + strh r3, [sp, #0x20] + strh r2, [sp, #0x22] + bl ov29_022FFA94 + mov r5, r0 + add r2, sb, #1 + add r1, sp, #0x1c + mov r0, r4 + strh sl, [sp, #0x1c] + strh r2, [sp, #0x1e] + bl ov29_022FFA94 + mov r6, r0 + add r3, sl, #1 + add r2, sb, #1 + add r1, sp, #0x18 + mov r0, r4 + strh r3, [sp, #0x18] + strh r2, [sp, #0x1a] + bl ov29_022FFA94 + cmp r6, #0 + bne _022F35C8 + cmp r5, r6 + cmpeq r6, r0 + movne r0, #0 + bne _022F35CC +_022F35C8: + mov r0, #1 +_022F35CC: + add sp, sp, #0x68 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F35D4: .word 0x02353538 +_022F35D8: .word 0x0235171C +_022F35DC: .word 0x0235171E + arm_func_end ov29_022F308C + + arm_func_start ov29_022F35E0 +ov29_022F35E0: ; 0x022F35E0 + ldrb r0, [r0, #0xc4] + cmp r0, #2 + moveq r0, #0 + bxeq lr + cmp r0, #1 + moveq r0, #0 + bxeq lr + cmp r0, #7 + moveq r0, #0 + bxeq lr + cmp r0, #5 + moveq r0, #0 + bxeq lr + cmp r0, #3 + moveq r0, #0 + bxeq lr + cmp r0, #4 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_022F35E0 + + arm_func_start ov29_022F3634 +ov29_022F3634: ; 0x022F3634 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + bl GetLeader + movs r4, r0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + bl GetTileAtEntity + mov r5, r0 + mov r0, r4 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r0, [r4, #0xb4] + ldrneb r0, [r0, #0xef] + cmpne r0, #3 + beq _022F3698 + mov r0, r4 + mov r1, #0x10 + bl HasHeldItem + cmp r0, #0 + bne _022F3698 + add r0, r4, #4 + bl ov29_02337D68 +_022F3698: + ldrh r0, [r5] + tst r0, #0x200 + ldrne r0, _022F37CC ; =0x02353538 + movne r1, #1 + ldrne r0, [r0] + strneb r1, [r0, #5] + ldr r5, [r5, #0x10] + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r5] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F36CC: ; jump table + ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 1 + b _022F36E8 ; case 2 + b _022F3778 ; case 3 + ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 4 + b _022F37C0 ; case 5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} ; case 6 +_022F36E8: + mov r0, r5 + bl ov29_022E1608 + mov r6, r0 + mov r7, #0 + mov r0, r4 + mov r1, #0x13 + mov r8, r7 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022F372C + ldrb r0, [r5, #0x20] + cmp r0, #0 + bne _022F372C + mov r0, #1 + strb r0, [r5, #0x20] + bl ov29_02336F4C + mov r8, #1 +_022F372C: + ldrb r0, [r6, #1] + cmp r0, #0 + moveq r7, #1 + beq _022F3750 + cmp r0, #1 + moveq r7, #0 + beq _022F3750 + cmp r0, #2 + moveq r7, #1 +_022F3750: + cmp r7, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r8, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + add r1, r4, #4 + mov r2, #0 + mov r3, #1 + bl ov29_022EDFA0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F3778: + mov r0, r5 + bl ov29_022E1610 + ldrb r0, [r0] + tst r0, #2 + bne _022F37A0 + add r0, r4, #4 + mov r1, #1 + bl ov29_02345058 + bl ov29_022FB920 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F37A0: + mov r0, r4 + bl ShouldMonsterRunAway + cmp r0, #0 + ldreq r0, _022F37CC ; =0x02353538 + moveq r1, #4 + ldreq r0, [r0] + streq r1, [r0, #0x614] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022F37C0: + mov r0, #1 + bl ov29_02338794 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F37CC: .word 0x02353538 + arm_func_end ov29_022F3634 + + arm_func_start ov29_022F37D0 +ov29_022F37D0: ; 0x022F37D0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r4, r1 + bl ov29_022F87C0 + movs r5, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r5] + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + bl ov29_023009CC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r5, #0xb4] + mov r6, #1 + ldrb r0, [r1, #6] + cmp r0, #0 + beq _022F3850 + ldrb r0, [r1, #0xbc] + cmp r0, #7 + cmpne r0, #0x10 + cmpne r0, #0x11 + cmpne r0, #0x12 + cmpne r0, #0x13 + cmpne r0, #0x14 + ldrneb r0, [r1, #9] + cmpne r0, #1 + movne r6, #0 + b _022F3874 +_022F3850: + mov r2, #0 + mov r0, r7 + mov r1, r5 + mov r3, r2 + bl ov29_0230175C + cmp r0, #1 + movne r0, r6 + moveq r0, #0 + and r6, r0, #0xff +_022F3874: + cmp r6, #0 + beq _022F3888 + add r0, r4, #0x4a + mov r1, #0x13 + bl SetMonsterActionFields +_022F3888: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022F37D0 + + arm_func_start ov29_022F3890 +ov29_022F3890: ; 0x022F3890 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r5, r1 + mov r6, r0 + bl ov29_022E9618 + mov r4, r0 + cmp r5, #0 + beq _022F38D0 + ldrb r0, [r4, #0xd0] + cmp r0, #4 + bne _022F38D0 + ldrb r0, [r4, #0x4c] + add r1, r0, #4 + and r0, r1, #0xff + and r0, r0, #7 + strb r0, [r4, #0x4c] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022F38D0: + ldrb r0, [r4, #0xd0] + cmp r0, #2 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #8 + bl DungeonRandInt + mov sb, r0 + mov r8, #0 + mov r7, #1 + b _022F3928 +_022F38F4: + cmp r5, #0 + movne r0, r7 + bne _022F390C + mov r0, r6 + mov r1, sb + bl ov29_02300E78 +_022F390C: + cmp r0, #0 + andne r0, sb, #7 + strneb r0, [r4, #0x4c] + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r0, sb, #1 + and sb, r0, #7 + add r8, r8, #1 +_022F3928: + cmp r8, #8 + blt _022F38F4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022F3890 + + arm_func_start ov29_022F3934 +ov29_022F3934: ; 0x022F3934 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _022F3AE4 ; =0x02353538 + ldr r0, [r0] + ldr r6, [r0, #0xc8] + bl GetLeader + ldr sb, [r6, #0xb4] + mov fp, r0 + ldrb r0, [sb, #7] + ldr sl, [fp, #0xb4] + cmp r0, #0 + beq _022F3970 + ldr r1, _022F3AE8 ; =0x00000BA4 + mov r0, r6 + bl LogMessageByIdWithPopup + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F3970: + mov r0, #2 + bl ov29_02346BD8 + cmp r0, #0 + bne _022F398C + bl ov29_022F670C + cmp r0, #0 + beq _022F399C +_022F398C: + ldr r1, _022F3AEC ; =0x00000BA5 + mov r0, r6 + bl LogMessageByIdWithPopup + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F399C: + ldr r0, _022F3AE4 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x790] + cmp r0, #0 + beq _022F39C0 + ldr r1, _022F3AF0 ; =0x00000BA6 + mov r0, r6 + bl LogMessageByIdWithPopup + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F39C0: + mov r5, #0 + strb r5, [r1, #0x799] + mov r0, #1 + strb r0, [sb, #7] + strb r5, [sl, #7] + mvn r4, #0 +_022F39D8: + mov r0, r5 + bl GetActiveTeamMember + mov r7, r0 + ldrb r0, [r7] + mov r8, r4 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F3A40 + ldrsh r0, [r7, #8] + bl CheckTeamMemberIdx__022F9C34 + cmp r0, #0 + ldrsh r0, [sb, #0xc] + ldreqsh r8, [r7, #8] + cmp r5, r0 + bne _022F3A38 + mov r0, #1 + strb r0, [r7, #1] + cmp r8, r4 + beq _022F3A40 + mov r0, r8 + bl sub_02056754 + b _022F3A40 +_022F3A38: + mov r0, #0 + strb r0, [r7, #1] +_022F3A40: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #4 + blt _022F39D8 + ldr r0, _022F3AF4 ; =0x0235355C + mov r1, #0 + str r1, [r0] + add r3, sl, #0x4a + add r2, sb, #0x4a + mov r1, #0xa +_022F3A6C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022F3A6C + mov r0, r6 + mov r1, #1 + bl ov29_022E2E54 + bl ov29_022E8104 + bl ov29_022E81F8 + mov r0, fp + bl ov29_022E3DD8 + bl GetLeader + bl ov29_022E3E24 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + ldr r1, _022F3AF8 ; =0x00000BA7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + bl ov29_022F62CC + mov r0, fp + mov r1, #0 + strh r1, [sb, #0x68] + strh r1, [sl, #0x68] + bl ov29_022F9EA0 + mov r0, r6 + bl ov29_022F9EA0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F3AE4: .word 0x02353538 +_022F3AE8: .word 0x00000BA4 +_022F3AEC: .word 0x00000BA5 +_022F3AF0: .word 0x00000BA6 +_022F3AF4: .word 0x0235355C +_022F3AF8: .word 0x00000BA7 + arm_func_end ov29_022F3934 + + arm_func_start ov29_022F3AFC +ov29_022F3AFC: ; 0x022F3AFC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl ov29_022F89AC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrh r0, [r0] + tst r0, #0x2000 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl ov29_023491B8 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_023009CC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + bl ov29_022E28D4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r4 + bl ov29_023009CC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r0, r5, #0x4a + mov r1, #0x42 + bl SetMonsterActionFields + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_022F3AFC + + arm_func_start ov29_022F3B8C +ov29_022F3B8C: ; 0x022F3B8C + ldr ip, _022F3B94 ; =ov29_022FBAB4 + bx ip + .align 2, 0 +_022F3B94: .word ov29_022FBAB4 + arm_func_end ov29_022F3B8C + + arm_func_start ov29_022F3B98 +ov29_022F3B98: ; 0x022F3B98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r4, #0 + str r4, [sp, #4] + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov fp, r4 + str r4, [sp] + bl sub_0204AF20 + cmp r0, #0 + moveq r0, r4 + beq _022F3E88 + cmp r8, #0 + ldrb r5, [sl, #0xb0] + beq _022F3C4C + mov r6, r4 + mov r0, sl + mov r1, r8 + mov r2, r6 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + mov r1, r0, lsl #0x10 + mov r7, r1, asr #0x10 + mov r0, sl + mov r1, r8 + mov r2, r4 + bl GetEntityMoveTargetAndRange + cmp r7, #0 + cmpne r7, #0x10 + cmpne r7, #0x40 + cmpne r7, #0x50 + cmpne r7, #0x80 + and r0, r0, #0xf + cmpne r7, #0x90 + beq _022F3C3C + cmp r0, #4 + bne _022F3C40 + ldrh r0, [r8, #4] + cmp r0, #0x80 + beq _022F3C40 +_022F3C3C: + mov r6, #1 +_022F3C40: + cmp r6, #0 + moveq r0, #1 + beq _022F3E88 +_022F3C4C: + bl ov29_022F2FE4 + ldr r1, _022F3E90 ; =0x0237C9A4 + mov r2, #0 + strb r2, [r1, #1] + mov r0, #1 + strh r2, [r1, #4] + bl ov29_0234B4CC + mov r0, #0 + bl ov29_0234B1A4 + ldr r0, _022F3E94 ; =0x00000BA8 + bl ov29_0234FC50 + bl ov29_022E0B44 + ldr r6, _022F3E90 ; =0x0237C9A4 + mvn r8, #0 +_022F3C84: + mov r0, #0x62 + bl AdvanceFrame + ldrb r0, [r6, #1] + cmp r0, #0 + beq _022F3CAC + mov r0, sl + bl ov29_022F2B74 + ldrsh r0, [r6, #4] + add r0, r0, #1 + strh r0, [r6, #4] +_022F3CAC: + ldr r0, _022F3E98 ; =0x0237C6A4 + mov r1, #0 + ldrh r0, [r0] + tst r0, #0x40 + beq _022F3CC8 + tst r0, #2 + movne r1, #1 +_022F3CC8: + cmp r1, #0 + beq _022F3D10 + add r1, sp, #8 + mov r0, sl + mov r2, #0x64 + mov r3, #0 + bl ov29_022F3EA0 + ldrsh r2, [sl, #4] + ldrsh r1, [sp, #8] + mov r7, r0 + cmp r2, r1 + ldreqsh r1, [sl, #6] + ldreqsh r0, [sp, #0xa] + cmpeq r1, r0 + movne r0, #1 + moveq r4, #1 + strne r0, [sp, #4] + b _022F3DE0 +_022F3D10: + ldr r0, _022F3E9C ; =0x0237C694 + ldrh r0, [r0] + tst r0, #0x100 + and r0, r0, #0xf0 + mov r0, r0, lsl #0x10 + movne r1, #1 + mov r0, r0, lsr #0x10 + strneb r1, [r6, #1] + bne _022F3D4C + mov r1, #0 + strb r1, [r6, #1] + strh r1, [r6, #4] + ldr r1, _022F3E9C ; =0x0237C694 + ldrh r1, [r1, #2] + and r0, r0, r1 +_022F3D4C: + mov r7, r8 + cmp r0, #0x50 + moveq r7, #3 + cmp r0, #0x60 + moveq r7, #5 + cmp r0, #0x90 + moveq r7, #1 + cmp r0, #0xa0 + moveq r7, #7 + cmp r0, #0x40 + moveq r7, #4 + cmp r0, #0x80 + moveq r7, #0 + cmp r0, #0x10 + moveq r7, #2 + cmp r0, #0x20 + ldrb r0, [r6, #1] + moveq r7, #6 + cmp r0, #0 + beq _022F3DB0 + cmp r7, #0 + blt _022F3DC0 + tst r7, #1 + bne _022F3DE0 + b _022F3DC0 +_022F3DB0: + cmp r7, #0 + blt _022F3DC0 + tst r7, #1 + beq _022F3DE0 +_022F3DC0: + ldr r0, _022F3E9C ; =0x0237C694 + ldrh r0, [r0, #2] + tst r0, #2 + movne r4, #1 + bne _022F3DE0 + tst r0, #1 + beq _022F3C84 + mov fp, #1 +_022F3DE0: + bl ov29_0234FCA8 + cmp r0, #0 + beq _022F3DFC + mov r0, #0x62 + bl AdvanceFrame + mov r0, #0x62 + bl AdvanceFrame +_022F3DFC: + cmp r4, #0 + bne _022F3E5C + ldr r0, [sp, #4] + cmp r0, #0 + bne _022F3E28 + mvn r0, #0 + cmp r7, r0 + beq _022F3E24 + cmp fp, #0 + beq _022F3E28 +_022F3E24: + ldrb r7, [sb, #0x4c] +_022F3E28: + and r1, r7, #7 + mov r0, sl + strb r1, [sb, #0x4c] + bl GetSleepAnimationId + mov r1, r0 + mov r0, sl + mov r2, r7 + bl ov29_023049A8 + mov r0, #0x62 + bl AdvanceFrame + mov r0, #1 + str r0, [sp] + b _022F3E68 +_022F3E5C: + mov r0, #1 + strb r5, [sb, #0x4c] + bl sub_02017CCC +_022F3E68: + ldr r1, _022F3E90 ; =0x0237C9A4 + mov r0, #0 + strb r0, [r1, #1] + strh r0, [r1, #4] + bl ov29_0234B4CC + bl ov29_022E0B44 + bl sub_02006B70 + ldr r0, [sp] +_022F3E88: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F3E90: .word 0x0237C9A4 +_022F3E94: .word 0x00000BA8 +_022F3E98: .word 0x0237C6A4 +_022F3E9C: .word 0x0237C694 + arm_func_end ov29_022F3B98 + + arm_func_start ov29_022F3EA0 +ov29_022F3EA0: ; 0x022F3EA0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r5, r0 + mov sb, r1 + mov r4, r3 + cmp r2, #0x64 + mov r6, #0 + add r0, sp, #0 + bne _022F3ECC + bl ov29_022E0C64 + b _022F3EE0 +_022F3ECC: + cmp r2, #0x65 + bne _022F3EDC + bl ov29_022E0C80 + b _022F3EE0 +_022F3EDC: + bl ov29_022E0C9C +_022F3EE0: + ldr r1, _022F40AC ; =0x02353538 + ldr r0, _022F40B0 ; =0x0001A224 + ldr r7, [r1] + ldr r2, [sp] + ldrsh r0, [r7, r0] + mov r1, #0x18 + add r0, r2, r0 + bl DivideInt + ldr r1, _022F40B4 ; =0x0001A226 + ldr r3, [sp, #4] + ldrsh r2, [r7, r1] + mov r7, r0 + mov r1, #0x18 + add r0, r3, r2 + bl DivideInt + mov r8, r0 + strh r7, [sb] + strh r8, [sb, #2] + ldrsh r1, [sb] + ldrsh r0, [r5, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #2 + ble _022F3F58 + ldrsh r1, [sb, #2] + ldrsh r0, [r5, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #2 + bgt _022F3F5C +_022F3F58: + mov r6, #1 +_022F3F5C: + mov r0, sb + bl ov29_022E2CA0 + cmp r0, #0 + cmpeq r6, #0 + beq _022F40A0 + ldrsh r0, [r5, #4] + mvn r6, #0 + cmp r0, r7 + ldreqsh r1, [r5, #6] + cmpeq r1, r8 + moveq r6, #0 + cmp r0, r7 + bne _022F3F9C + ldrsh r1, [r5, #6] + cmp r1, r8 + movlt r6, #0 +_022F3F9C: + cmp r0, r7 + ldrltsh r1, [r5, #6] + cmplt r1, r8 + movlt r6, #1 + cmp r0, r7 + bge _022F3FC0 + ldrsh r1, [r5, #6] + cmp r1, r8 + moveq r6, #2 +_022F3FC0: + cmp r0, r7 + bge _022F3FD4 + ldrsh r1, [r5, #6] + cmp r1, r8 + movgt r6, #3 +_022F3FD4: + cmp r0, r7 + bne _022F3FE8 + ldrsh r1, [r5, #6] + cmp r1, r8 + movgt r6, #4 +_022F3FE8: + cmp r0, r7 + ldrgtsh r1, [r5, #6] + cmpgt r1, r8 + movgt r6, #5 + cmp r0, r7 + ble _022F400C + ldrsh r1, [r5, #6] + cmp r1, r8 + moveq r6, #6 +_022F400C: + cmp r0, r7 + ble _022F4020 + ldrsh r0, [r5, #6] + cmp r0, r8 + movlt r6, #7 +_022F4020: + cmp r6, #0 + movlt r0, r6 + blt _022F40A4 + cmp r4, #0 + beq _022F4098 + mov r0, r5 + mov r1, r6 + bl ov29_02301158 + cmp r0, #0 + movne r0, r6 + bne _022F40A4 + tst r6, #1 + moveq r0, r6 + beq _022F40A4 + sub r1, r6, #1 + mov r0, r5 + and r1, r1, #7 + bl ov29_02301158 + cmp r0, #0 + subne r0, r6, #1 + andne r0, r0, #7 + bne _022F40A4 + add r1, r6, #1 + mov r0, r5 + and r1, r1, #7 + bl ov29_02301158 + cmp r0, #0 + addne r0, r6, #1 + andne r0, r0, #7 + bne _022F40A4 +_022F4098: + mov r0, r6 + b _022F40A4 +_022F40A0: + mvn r0, #0 +_022F40A4: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F40AC: .word 0x02353538 +_022F40B0: .word 0x0001A224 +_022F40B4: .word 0x0001A226 + arm_func_end ov29_022F3EA0 + + arm_func_start ov29_022F40B8 +ov29_022F40B8: ; 0x022F40B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sb, r1 + ldrsh r2, [sb] + mov sl, r0 + cmp r2, #0 + movlt r0, #0 + blt _022F425C + ldrsh r0, [sb, #2] + cmp r0, #0 + movlt r0, #0 + blt _022F425C + add r0, sl, #4 + bl GetDirectionTowardsPosition + mov r5, r0 + mov r0, sl + mov r1, r5 + bl ov29_02301158 + cmp r0, #0 + movne r0, r5 + bne _022F425C + tst r5, #1 + beq _022F4218 + ldrsh r1, [sl, #4] + ldrsh r0, [sb] + sub r0, r1, r0 + bl Abs + ldrsh r2, [sl, #6] + ldrsh r1, [sb, #2] + mov r6, r0 + sub r0, r2, r1 + bl Abs + mov r7, r0 + cmp r6, r7 + movgt r1, #1 + ldr r0, _022F4264 ; =0x023526C8 + movle r1, #0 + add r0, r0, r1, lsl #3 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _022F4178 + sub r1, r5, #1 + add r0, r5, #1 + and r1, r1, #7 + and r0, r0, #7 + str r1, [sp] + str r0, [sp, #4] + b _022F4190 +_022F4178: + add r1, r5, #1 + sub r0, r5, #1 + and r1, r1, #7 + and r0, r0, #7 + str r1, [sp] + str r0, [sp, #4] +_022F4190: + mov r4, #0 + b _022F420C +_022F4198: + add r0, sp, #0 + ldr r8, [r0, r4, lsl #2] + ldr r0, _022F4268 ; =0x0235171C + mov r1, r8, lsl #2 + ldrsh r1, [r0, r1] + ldrsh r2, [sl, #4] + ldrsh r0, [sb] + add r1, r2, r1 + sub r0, r1, r0 + bl Abs + ldr r1, _022F4268 ; =0x0235171C + ldrsh r3, [sl, #6] + add r1, r1, r8, lsl #2 + ldrsh r2, [r1, #2] + mov fp, r0 + ldrsh r1, [sb, #2] + add r0, r3, r2 + sub r0, r0, r1 + bl Abs + cmp fp, r6 + cmple r0, r7 + bgt _022F4208 + mov r0, sl + mov r1, r8 + bl ov29_02301158 + cmp r0, #0 + movne r0, r8 + bne _022F425C +_022F4208: + add r4, r4, #1 +_022F420C: + cmp r4, #2 + blt _022F4198 + b _022F4258 +_022F4218: + sub r1, r5, #1 + mov r0, sl + and r1, r1, #7 + bl ov29_02301158 + cmp r0, #0 + subne r0, r5, #1 + andne r0, r0, #7 + bne _022F425C + add r1, r5, #1 + mov r0, sl + and r1, r1, #7 + bl ov29_02301158 + cmp r0, #0 + addne r0, r5, #1 + andne r0, r0, #7 + bne _022F425C +_022F4258: + mov r0, r5 +_022F425C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F4264: .word 0x023526C8 +_022F4268: .word 0x0235171C + arm_func_end ov29_022F40B8 + + arm_func_start ov29_022F426C +ov29_022F426C: ; 0x022F426C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl GetTileSafe + ldr r1, _022F42D4 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + bl ov29_022FF958 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F42D4: .word 0x02353538 + arm_func_end ov29_022F426C + + arm_func_start ov29_022F42D8 +ov29_022F42D8: ; 0x022F42D8 + stmdb sp!, {r3, lr} + bl GetHero + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrsh r0, [r0, #4] + bl GetMonsterGenderVeneer + ldmia sp!, {r3, pc} + arm_func_end ov29_022F42D8 + + arm_func_start ov29_022F42F8 +ov29_022F42F8: ; 0x022F42F8 + cmp r0, #0 + moveq r1, #0 + beq _022F4318 + ldr r1, [r0] + cmp r1, #0 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff +_022F4318: + cmp r1, #0 + ldrne r0, [r0, #0xb4] + ldrneb r0, [r0, #7] + cmpne r0, #0 + bxeq lr + ldr r0, _022F434C ; =0x02353538 + mov r3, #0 + ldr r2, [r0] + sub r1, r3, #1 + strb r3, [r2, #5] + ldr r0, [r0] + str r1, [r0, #0x614] + bx lr + .align 2, 0 +_022F434C: .word 0x02353538 + arm_func_end ov29_022F42F8 + + arm_func_start ov29_022F4350 +ov29_022F4350: ; 0x022F4350 + ldr r2, [r0, #0xb4] + mov r3, #1 + ldr ip, _022F436C ; =ov29_02345058 + add r0, r0, #4 + mov r1, #0 + strb r3, [r2, #0x4e] + bx ip + .align 2, 0 +_022F436C: .word ov29_02345058 + arm_func_end ov29_022F4350 + + arm_func_start ov29_022F4370 +ov29_022F4370: ; 0x022F4370 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r5, r1 + mov r1, #0 + mov r2, #0xfe + mov r6, r0 + bl ov29_022EB54C + mov sb, #0 + mov lr, #1 + mov r4, r0 + mov ip, sb + mov fp, sb + mov r2, lr + ldr r1, _022F44D4 ; =0x020AF6B8 + mov r0, #6 + b _022F441C +_022F43AC: + mul r7, sb, r0 + ldr r3, [r1] + ldr r8, [r3, #0x384] + ldrb sl, [r8, r7] + tst sl, #1 + movne r3, lr + moveq r3, ip + tst r3, #0xff + beq _022F4418 + ldrb r3, [r8, r7] + tst r3, #0x10 + beq _022F4418 + tst sl, #8 + movne r3, r2 + moveq r3, fp + tst r3, #0xff + beq _022F440C + add r1, r8, r7 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F44D8 ; =0x00000BA9 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F440C: + ldrb r3, [r8, r7] + bic r3, r3, #0x10 + strb r3, [r8, r7] +_022F4418: + add sb, sb, #1 +_022F441C: + cmp sb, #0x32 + blt _022F43AC + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldr r0, _022F44DC ; =0x00003F07 + bl ov29_022EACCC + cmp r5, #0 + beq _022F4494 + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4468 + ldr r1, _022F44E0 ; =0x00000BAA + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022F4494 +_022F4468: + ldrsh r0, [r4, #4] + bl GetItemCategoryVeneer + cmp r0, #0 + bne _022F4488 + ldr r1, _022F44E4 ; =0x00000BAB + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022F4494 +_022F4488: + ldr r1, _022F44E8 ; =0x00000BAC + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_022F4494: + ldrb r0, [r4] + orr r0, r0, #0x10 + strb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + cmpne r5, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F44EC ; =0x00000BAE + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F44D4: .word 0x020AF6B8 +_022F44D8: .word 0x00000BA9 +_022F44DC: .word 0x00003F07 +_022F44E0: .word 0x00000BAA +_022F44E4: .word 0x00000BAB +_022F44E8: .word 0x00000BAC +_022F44EC: .word 0x00000BAE + arm_func_end ov29_022F4370 + + arm_func_start ov29_022F44F0 +ov29_022F44F0: ; 0x022F44F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, #0 + mov r7, #1 + mov sl, r0 + mov sb, r1 + mov r6, r8 + mov fp, r7 + ldr r5, _022F45BC ; =0x020AF6B8 + mov r4, #6 + b _022F45B0 +_022F4518: + mul r2, r8, r4 + ldr r0, [r5] + ldr r3, [r0, #0x384] + ldrb r1, [r3, r2] + tst r1, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _022F45AC + ldrb r0, [r3, r2] + tst r0, #0x10 + beq _022F45AC + tst r1, #8 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _022F4578 + add r1, r3, r2 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F45C0 ; =0x00000BA9 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022F4578: + ldrb ip, [r3, r2] + mov r0, #0 + add r1, r3, r2 + bic ip, ip, #0x10 + strb ip, [r3, r2] + bl ov29_02344B44 + ldr r0, _022F45C4 ; =0x00003F07 + bl ov29_022EACCC + cmp sb, #0 + beq _022F45AC + ldr r1, _022F45C8 ; =0x00000BAD + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_022F45AC: + add r8, r8, #1 +_022F45B0: + cmp r8, #0x32 + blt _022F4518 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F45BC: .word 0x020AF6B8 +_022F45C0: .word 0x00000BA9 +_022F45C4: .word 0x00003F07 +_022F45C8: .word 0x00000BAD + arm_func_end ov29_022F44F0 + + arm_func_start ov29_022F45CC +ov29_022F45CC: ; 0x022F45CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x14 + mov sl, r0 + mov r1, #1 + bl ov29_022EB568 + mov r4, r0 + ldr r8, [sl, #0xb4] + mov r0, sl + mov r1, #0 + mov r2, #2 + ldr sb, [r4, #0xb4] + bl ov29_022EB54C + ldrb r1, [r8, #0x4e] + mov r5, r0 + mov r0, r5 + cmp r1, #0x80 + moveq r1, #1 + movne r1, #0 + and r6, r1, #0xff + bl GetItemIndex + mov r7, r0 + cmp r6, #0 + bne _022F4668 + ldrb r0, [r5] + tst r0, #0x10 + beq _022F4668 + ldrb r0, [r5] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4668 + mov r1, r5 + mov r0, #1 + bl ov29_02344B44 + mov r0, sl + mov r1, #0xbb0 + bl LogMessageByIdWithPopupCheckUser + b _022F48B8 +_022F4668: + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrb r0, [sb, #0x62] + tst r0, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _022F47CC + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F46C0 + add r1, sb, #0x62 + mov r0, #1 + bl ov29_02344B44 + ldr r1, _022F48C0 ; =0x00000BAF + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022F48B8 +_022F46C0: + ldrh r0, [sb, #0x62] + cmp r6, #0 + add r1, sp, #0xc + strh r0, [sp, #0xc] + ldrh r2, [sb, #0x64] + ldrb r0, [sp, #0xc] + ldrb r3, [sp, #0xd] + strh r2, [sp, #0xe] + ldrh r6, [sb, #0x66] + bic r2, r0, #0x10 + strh r6, [sp, #0x10] + ldrh r0, [r5] + strh r0, [sp, #6] + ldrh r6, [r5, #2] + ldrb r0, [sp, #6] + strh r6, [sp, #8] + ldrh r5, [r5, #4] + bic r0, r0, #0x10 + strh r5, [sp, #0xa] + strb r3, [sp, #7] + strb r2, [sp, #0xc] + strb r0, [sp, #6] + beq _022F472C + add r0, sl, #4 + mov r2, #1 + bl ov29_02345538 + b _022F4734 +_022F472C: + mov r0, r1 + bl sub_0200FB54 +_022F4734: + ldrh r0, [sp, #6] + cmp r7, #0 + strh r0, [sb, #0x62] + ldrh r0, [sp, #8] + strh r0, [sb, #0x64] + ldrh r0, [sp, #0xa] + strh r0, [sb, #0x66] + blt _022F4770 + ldrb r0, [r8, #0x54] + bl ov29_022EB594 + mov r2, r0 + add r1, sp, #6 + mov r0, r7 + bl sub_0200FBE0 + b _022F4778 +_022F4770: + mov r0, sb + bl ov29_02346F14 +_022F4778: + add r1, sp, #6 + mov r0, #0 + bl ov29_02344B44 + add r1, sp, #0xc + mov r0, #1 + bl ov29_02344B44 + ldr r0, _022F48C4 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F48C8 ; =0x00000BB2 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldrb r0, [sp, #6] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4878 + ldr r1, _022F48CC ; =0x00000BAE + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022F4878 +_022F47CC: + ldrh r0, [r5] + cmp r7, #0 + strh r0, [sp] + ldrh r1, [r5, #2] + ldrb r0, [sp] + strh r1, [sp, #2] + ldrh r1, [r5, #4] + bic r0, r0, #0x10 + strb r0, [sp] + ldrh r0, [sp] + strh r1, [sp, #4] + strh r0, [sb, #0x62] + ldrh r0, [sp, #2] + strh r0, [sb, #0x64] + ldrh r0, [sp, #4] + strh r0, [sb, #0x66] + blt _022F482C + ldrb r0, [r8, #0x54] + bl ov29_022EB594 + mov r2, r0 + mov r0, r7 + add r1, sb, #0x62 + bl sub_0200FBE0 + b _022F4834 +_022F482C: + mov r0, sb + bl ov29_02346F14 +_022F4834: + add r1, sp, #0 + mov r0, #0 + bl ov29_02344B44 + ldr r0, _022F48C4 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F48D0 ; =0x00000BB3 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldrb r0, [sp] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4878 + ldr r1, _022F48CC ; =0x00000BAE + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_022F4878: + mov r0, r4 + bl ov29_022F9EA0 + mov r0, sl + mov r1, r4 + bl ov29_02321164 + ldrb r0, [sb, #7] + ldr r1, _022F48D4 ; =0x02353538 + cmp r0, #0 + ldreqh r0, [sb] + orreq r0, r0, #0x4000 + streqh r0, [sb] + ldr r1, [r1] + mov r0, sl + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C +_022F48B8: + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F48C0: .word 0x00000BAF +_022F48C4: .word 0x00001317 +_022F48C8: .word 0x00000BB2 +_022F48CC: .word 0x00000BAE +_022F48D0: .word 0x00000BB3 +_022F48D4: .word 0x02353538 + arm_func_end ov29_022F45CC + + arm_func_start ov29_022F48D8 +ov29_022F48D8: ; 0x022F48D8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r1, #0 + mov r6, r0 + bl ov29_022EB568 + mov r4, r0 + ldr r5, [r4, #0xb4] + ldrb r0, [r5, #0x62] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + mov r0, #0 + beq _022F4928 + add r1, r5, #0x62 + bl ov29_02344B44 + ldr r1, _022F49D0 ; =0x00000BAE + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _022F49C8 +_022F4928: + ldrh r2, [r5, #0x62] + add r1, sp, #0 + strh r2, [sp] + ldrh r3, [r5, #0x64] + ldrb r2, [sp] + strh r3, [sp, #2] + ldrh r3, [r5, #0x66] + bic r2, r2, #0x10 + strh r3, [sp, #4] + strb r2, [sp] + bl ov29_02344B44 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r0, r5, #0x62 + bl ItemZInit + add r0, sp, #0 + bl sub_0200FB54 + ldr r0, _022F49D4 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F49D8 ; =0x00000BB5 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r4 + bl ov29_022F9EA0 + mov r1, r4 + mov r0, r6 + bl ov29_02321164 + ldrb r0, [r5, #7] + ldr r1, _022F49DC ; =0x02353538 + cmp r0, #0 + ldreqh r0, [r5] + orreq r0, r0, #0x4000 + streqh r0, [r5] + ldr r1, [r1] + mov r0, r6 + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C +_022F49C8: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F49D0: .word 0x00000BAE +_022F49D4: .word 0x00001317 +_022F49D8: .word 0x00000BB5 +_022F49DC: .word 0x02353538 + arm_func_end ov29_022F48D8 + + arm_func_start ov29_022F49E0 +ov29_022F49E0: ; 0x022F49E0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r1, #0 + mov r7, r0 + bl ov29_022EB568 + mov r4, r0 + ldr r5, [r4, #0xb4] + ldr r2, _022F4BC8 ; =0x00001565 + mov r0, r7 + mov r1, #1 + bl ov29_022EB54C + ldrb r1, [r5, #0x62] + mov r6, r0 + tst r1, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4A44 + add r1, r5, #0x62 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F4BCC ; =0x00000BAE + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022F4BC0 +_022F4A44: + ldrb r0, [r6] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4A84 + ldrb r0, [r6] + tst r0, #0x10 + beq _022F4A84 + mov r1, r6 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F4BCC ; =0x00000BAE + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022F4BC0 +_022F4A84: + ldrb r2, [r5, #0x62] + add r1, r5, #0x62 + mov r0, #0 + bic r2, r2, #0x10 + strb r2, [r5, #0x62] + ldrb r2, [r6] + bic r2, r2, #0x10 + strb r2, [r6] + bl ov29_02344B44 + mov r1, r6 + mov r0, #1 + bl ov29_02344B44 + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrh r3, [r5, #0x62] + ldrh r2, [r5, #0x64] + ldrh r1, [r5, #0x66] + ldrb r0, [r5, #6] + strh r3, [sp] + strh r2, [sp, #2] + strh r1, [sp, #4] + cmp r0, #0 + bne _022F4AF0 + add r0, r5, #0x62 + bl RemoveEquivItemNoHole +_022F4AF0: + ldrh r0, [r6] + strh r0, [r5, #0x62] + ldrh r0, [r6, #2] + strh r0, [r5, #0x64] + ldrh r0, [r6, #4] + strh r0, [r5, #0x66] + ldrb r0, [r5, #6] + cmp r0, #0 + movne r0, #0 + strneb r0, [r5, #0x63] + bne _022F4B24 + mov r0, r5 + bl ov29_02346F14 +_022F4B24: + ldrh r2, [sp] + ldrh r0, [sp, #2] + ldrh r1, [sp, #4] + strh r2, [r6] + strh r0, [r6, #2] + mov r0, r6 + strh r1, [r6, #4] + bl ov29_02346FB8 + cmp r0, #0 + movlt r0, #0 + strltb r0, [r6, #1] + blt _022F4B70 + ldr r2, _022F4BD0 ; =0x02353538 + add r1, r0, r0, lsl #3 + ldr r0, [r2] + add r0, r0, #0x3f4 + add r0, r0, #0x400 + add r0, r0, r1, lsl #6 + bl ov29_02346F14 +_022F4B70: + bl ov29_02347030 + ldr r0, _022F4BD4 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F4BD8 ; =0x00000BB6 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, r7 + mov r1, r4 + bl ov29_02321164 + ldrb r0, [r5, #7] + ldr r1, _022F4BD0 ; =0x02353538 + cmp r0, #0 + ldreqh r0, [r5] + orreq r0, r0, #0x4000 + streqh r0, [r5] + ldr r1, [r1] + mov r0, r7 + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C +_022F4BC0: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F4BC8: .word 0x00001565 +_022F4BCC: .word 0x00000BAE +_022F4BD0: .word 0x02353538 +_022F4BD4: .word 0x00001317 +_022F4BD8: .word 0x00000BB6 + arm_func_end ov29_022F49E0 + + arm_func_start ov29_022F4BDC +ov29_022F4BDC: ; 0x022F4BDC + stmdb sp!, {r3, lr} + mov r1, #0 + bl ov29_022EB568 + ldr r0, [r0, #0xb4] + mov r1, #1 + strb r1, [r0, #0x109] + ldmia sp!, {r3, pc} + arm_func_end ov29_022F4BDC + + arm_func_start ov29_022F4BF8 +ov29_022F4BF8: ; 0x022F4BF8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r1, #0 + mov r2, #4 + ldr r6, [r5, #0xb4] + bl ov29_022EB54C + mov r4, r0 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldrb r1, [r6, #0x4e] + cmp r1, #0x80 + bne _022F4C3C + ldr r1, _022F4D94 ; =0x00000BB7 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4C3C: + cmp r1, #0x33 + bhs _022F4C78 + ldrb r0, [r4] + tst r0, #0x10 + beq _022F4C78 + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4C78 + ldr r1, _022F4D98 ; =0x00000BAE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4C78: + cmp r1, #0x81 + bne _022F4CA8 + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4CA8 + ldr r1, _022F4D98 ; =0x00000BAE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4CA8: + ldrsh r0, [r5, #4] + ldrsh r1, [r5, #6] + bl GetTile + ldrh r1, [r0] + tst r1, #0x200 + beq _022F4CD0 + ldr r1, _022F4D9C ; =0x00000BB8 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4CD0: + and r1, r1, #3 + cmp r1, #1 + beq _022F4CEC + ldr r1, _022F4D9C ; =0x00000BB8 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4CEC: + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022F4D08 + ldr r1, _022F4D9C ; =0x00000BB8 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4D08: + ldrb r2, [r4] + mov r1, r4 + mov r0, #0 + bic r2, r2, #0x10 + strb r2, [r4] + bl ov29_02344B44 + mov r1, r4 + add r0, r5, #4 + mov r2, #1 + bl ov29_02345538 + cmp r0, #0 + bne _022F4D48 + ldr r1, _022F4D9C ; =0x00000BB8 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, r5, r6, pc} +_022F4D48: + mov r0, r4 + bl ItemZInit + bl ov29_02347030 + ldr r0, _022F4DA0 ; =0x00001317 + bl ov29_022EACCC + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022F4DA4 ; =0x00000BB9 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + ldr r1, _022F4DA8 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F4D94: .word 0x00000BB7 +_022F4D98: .word 0x00000BAE +_022F4D9C: .word 0x00000BB8 +_022F4DA0: .word 0x00001317 +_022F4DA4: .word 0x00000BB9 +_022F4DA8: .word 0x02353538 + arm_func_end ov29_022F4BF8 + + arm_func_start ov29_022F4DAC +ov29_022F4DAC: ; 0x022F4DAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r8, r0 + ldr r6, [r8, #0xb4] + mov r1, #0 + mov r2, #5 + bl ov29_022EB54C + mov r4, r0 + mov r0, r8 + mov r1, #1 + mov r2, #6 + bl ov29_022EB54C + ldrb r1, [r6, #0x4e] + mov r7, r0 + cmp r1, #0x80 + beq _022F4DFC + ldr r1, _022F503C ; =0x00000BBA + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _022F5034 +_022F4DFC: + ldrb r1, [r6, #0x54] + cmp r1, #0x33 + bhs _022F4E48 + ldrb r0, [r7] + tst r0, #0x10 + beq _022F4E48 + ldrb r0, [r7] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4E48 + mov r1, r7 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F5040 ; =0x00000BAE + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _022F5034 +_022F4E48: + cmp r1, #0x81 + bne _022F4E84 + ldrb r0, [r7] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F4E84 + mov r1, r7 + mov r0, #1 + bl ov29_02344B44 + ldr r1, _022F5044 ; =0x00000BB1 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _022F5034 +_022F4E84: + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #3 + beq _022F4EB4 + ldr r1, _022F5048 ; =0x00000BBB + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _022F5034 +_022F4EB4: + mov r0, r4 + bl ov29_02348D3C + ldrh r1, [r4] + mov r5, r0 + add r0, r6, #0x50 + strh r1, [sp] + ldrh r2, [r4, #2] + ldrb r1, [sp] + mov ip, #0 + strh r2, [sp, #2] + ldrh r2, [r4, #4] + bic r3, r1, #0x10 + mov r1, #1 + strh r2, [sp, #4] + ldrh r2, [r7] + strh r2, [sp, #6] + ldrh lr, [r7, #2] + ldrb r2, [sp, #6] + ldrb r4, [sp, #7] + strh lr, [sp, #8] + ldrh lr, [r7, #4] + bic r2, r2, #0x10 + strh lr, [sp, #0xa] + strb ip, [sp, #7] + strb r3, [sp] + strb r2, [sp, #6] + bl ov29_023456BC + mov r0, r7 + bl RemoveEquivItemNoHole + ldrb r0, [r7, #1] + cmp r0, #0 + beq _022F4F3C + mov r0, r7 + bl ItemZInit +_022F4F3C: + add r1, sp, #6 + add r0, r6, #0x50 + mov r2, #1 + bl ov29_02345538 + cmp r0, #0 + bne _022F4F68 + ldr r1, _022F504C ; =0x00000BBC + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + bl ov29_02347030 + b _022F5034 +_022F4F68: + strb r4, [sp, #1] + ldrb r0, [r6, #0x54] + cmp r0, #0x81 + bne _022F4F94 + ldrh r0, [sp] + strh r0, [r6, #0x62] + ldrh r0, [sp, #2] + strh r0, [r6, #0x64] + ldrh r0, [sp, #4] + strh r0, [r6, #0x66] + b _022F4FDC +_022F4F94: + mov r0, r7 + bl ov29_02346FB8 + cmp r0, #0 + blt _022F4FD0 + ldr r1, _022F5050 ; =0x02353538 + add r0, r0, r0, lsl #3 + ldr r2, [r1] + ldrh r1, [sp] + add r0, r2, r0, lsl #6 + add r0, r0, #0x800 + strh r1, [r0, #0x56] + ldrh r1, [sp, #2] + strh r1, [r0, #0x58] + ldrh r1, [sp, #4] + strh r1, [r0, #0x5a] +_022F4FD0: + add r0, sp, #0 + mov r1, r4 + bl AddItemToBag +_022F4FDC: + bl ov29_02347030 + add r1, sp, #6 + mov r0, #0 + bl ov29_02344B44 + add r1, sp, #0 + mov r0, #1 + bl ov29_02344B44 + ldr r0, _022F5054 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F5058 ; =0x00000BBD + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _022F5050 ; =0x02353538 + mov r0, r8 + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C + add r0, sp, #0 + mov r1, r5 + bl ov29_02348ECC + cmp r0, #0 +_022F5034: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F503C: .word 0x00000BBA +_022F5040: .word 0x00000BAE +_022F5044: .word 0x00000BB1 +_022F5048: .word 0x00000BBB +_022F504C: .word 0x00000BBC +_022F5050: .word 0x02353538 +_022F5054: .word 0x00001317 +_022F5058: .word 0x00000BBD + arm_func_end ov29_022F4DAC + + arm_func_start ov29_022F505C +ov29_022F505C: ; 0x022F505C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + ldrsh r0, [r7, #4] + ldrsh r1, [r7, #6] + ldr r5, [r7, #0xb4] + bl GetTile + mov r4, r0 + mov r0, r7 + mov r1, #0 + mov r2, #7 + bl ov29_022EB54C + mov r6, r0 + mov r1, r6 + mov r0, #0 + bl ov29_02344B44 + ldrb r1, [r5, #0x4e] + cmp r1, #0x33 + bhs _022F50E8 + ldrb r0, [r6] + tst r0, #0x10 + beq _022F50E8 + ldrb r0, [r6] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F50E8 + mov r1, r6 + mov r0, #1 + bl ov29_02344B44 + ldr r1, _022F5274 ; =0x00000BB1 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022F526C +_022F50E8: + cmp r1, #0x81 + bne _022F5118 + ldrb r0, [r6] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F5118 + mov r0, r7 + mov r1, #0xbb0 + bl LogMessageByIdWithPopupCheckUser + b _022F526C +_022F5118: + ldr r0, [r4, #0x10] + cmp r0, #0 + ldrne r1, [r0] + cmpne r1, #3 + beq _022F513C + ldr r1, _022F5278 ; =0x00000BBB + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022F526C +_022F513C: + bl ov29_022E1610 + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl ov29_02344B44 + ldrh r2, [r6] + add r0, r7, #4 + mov r1, #1 + strh r2, [sp] + ldrh r3, [r6, #2] + ldrb r2, [sp] + strh r3, [sp, #2] + ldrh ip, [r6, #4] + bic r3, r2, #0x10 + strh ip, [sp, #4] + ldrh r2, [r4] + strh r2, [sp, #6] + ldrh ip, [r4, #2] + ldrb r2, [sp, #6] + strh ip, [sp, #8] + ldrh r4, [r4, #4] + bic r2, r2, #0x10 + strh r4, [sp, #0xa] + strb r3, [sp] + strb r2, [sp, #6] + bl ov29_023456BC + mov r0, r6 + bl RemoveEquivItemNoHole + ldrb r0, [r6, #1] + cmp r0, #0 + beq _022F51C0 + mov r0, r6 + bl ItemZInit +_022F51C0: + add r1, sp, #0 + add r0, r7, #4 + mov r2, #1 + bl ov29_02345538 + cmp r0, #0 + bne _022F51EC + ldr r1, _022F527C ; =0x00000BBC + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + bl ov29_02347030 + b _022F526C +_022F51EC: + add r0, sp, #6 + bl ov29_02348D3C + ldrb r1, [r5, #0x4e] + mov r4, r0 + add r0, sp, #6 + cmp r1, #0x81 + bne _022F5228 + ldrh r1, [sp, #6] + strh r1, [r5, #0x62] + ldrh r1, [sp, #8] + strh r1, [r5, #0x64] + ldrh r1, [sp, #0xa] + strh r1, [r5, #0x66] + bl AddItemToBagNoHeld + b _022F522C +_022F5228: + bl AddItemToBagNoHeld +_022F522C: + bl ov29_02347030 + ldr r0, _022F5280 ; =0x00001317 + bl ov29_022EACCC + ldr r1, _022F5284 ; =0x00000BBD + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _022F5288 ; =0x02353538 + mov r0, r7 + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C + add r0, sp, #6 + mov r1, r4 + bl ov29_02348ECC + cmp r0, #0 +_022F526C: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022F5274: .word 0x00000BB1 +_022F5278: .word 0x00000BBB +_022F527C: .word 0x00000BBC +_022F5280: .word 0x00001317 +_022F5284: .word 0x00000BBD +_022F5288: .word 0x02353538 + arm_func_end ov29_022F505C diff --git a/asm/overlay_29_022F52B0.s b/asm/overlay_29_022F52B0.s new file mode 100644 index 00000000..207b286b --- /dev/null +++ b/asm/overlay_29_022F52B0.s @@ -0,0 +1,1175 @@ + .include "asm/macros.inc" + .include "overlay_29_022F52B0.inc" + + .text + + arm_func_start ov29_022F52B0 +ov29_022F52B0: ; 0x022F52B0 + ldr ip, _022F52B8 ; =ov29_02343D30 + bx ip + .align 2, 0 +_022F52B8: .word ov29_02343D30 + arm_func_end ov29_022F52B0 + + arm_func_start ov29_022F52BC +ov29_022F52BC: ; 0x022F52BC + ldr ip, _022F52C8 ; =ov29_022F52F8 + mov r1, r0 + bx ip + .align 2, 0 +_022F52C8: .word ov29_022F52F8 + arm_func_end ov29_022F52BC + + arm_func_start ov29_022F52CC +ov29_022F52CC: ; 0x022F52CC + ldr r2, [r0, #0xb4] + ldr r1, _022F52F0 ; =0x02353538 + ldrb r2, [r2, #0x54] + ldr r1, [r1] + ldr ip, _022F52F4 ; =ov29_022F52F8 + add r1, r1, r2, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb28] + bx ip + .align 2, 0 +_022F52F0: .word 0x02353538 +_022F52F4: .word ov29_022F52F8 + arm_func_end ov29_022F52CC + + arm_func_start ov29_022F52F8 +ov29_022F52F8: ; 0x022F52F8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov r8, r1 + mov sb, r0 + mov r0, r8 + ldr r5, [r8, #0xb4] + bl ov29_023186CC + cmp r0, #0 + beq _022F5334 + mov r0, r8 + bl ov29_02318700 + mov r0, #0x14 + mov r1, #9 + bl ov29_022EA370 + b _022F54B0 +_022F5334: + mov r0, sb + bl ov29_022F3B8C + mov r0, sb + mov r1, #0 + mov r2, #8 + bl ov29_022EB54C + mov r4, r0 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + bl ov29_0234B034 + mov r2, r5 + mov r1, #0 + str r1, [sp] + mov r3, r1 + bl ov29_0230040C + mov r0, r8 + mov r1, r4 + bl ov29_0231D4A4 + cmp r0, #0 + beq _022F54B0 + mov r0, r4 + bl ov29_022EB378 + mov r1, r0 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldrh r2, [r4] + mov r0, sb + mov r1, #0 + strh r2, [sp, #8] + ldrh r3, [r4, #2] + mov r2, #0x66 + strh r3, [sp, #0xa] + ldrh r3, [r4, #4] + strh r3, [sp, #0xc] + bl ov29_022EB60C + mov r0, #0x1e + mov r1, #0x11 + bl ov29_022EA370 + mov r0, #0 + str r8, [sp] + add r1, sp, #8 + str r1, [sp, #4] + mov r1, r0 + mov r2, r0 + mov r3, r8 + bl ApplyItemEffect + mov r0, r8 + bl EntityIsValid__022F528C + cmp r0, #0 + ldrne r0, [r8, #0xb4] + ldrneb r0, [r0, #7] + cmpne r0, #0 + beq _022F5498 + mov r0, r8 + mov r1, #0x33 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022F5498 + ldrsh r0, [sp, #0xc] + bl ov29_02347000 + cmp r0, #0 + beq _022F5498 + mov r7, #0 + ldr r4, _022F54B8 ; =0x02353538 + add r6, sp, #8 + mov r5, r7 +_022F5440: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb28] + cmp sl, r8 + beq _022F5484 + mov r0, sl + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F5484 + str sl, [sp] + mov r0, r5 + mov r1, r5 + mov r2, r5 + mov r3, r8 + str r6, [sp, #4] + bl ApplyItemEffect +_022F5484: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022F5440 +_022F5498: + ldr r1, _022F54B8 ; =0x02353538 + mov r0, sb + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C +_022F54B0: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F54B8: .word 0x02353538 + arm_func_end ov29_022F52F8 + + arm_func_start ov29_022F54BC +ov29_022F54BC: ; 0x022F54BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x14 + mov sb, r0 + ldr r8, [sb, #0xb4] + bl ov29_022F3B8C + mov r0, sb + mov r1, #0 + mov r2, #9 + bl ov29_022EB54C + mov r4, r0 + mov r0, sb + bl ov29_023186CC + cmp r0, #0 + beq _022F550C + mov r0, sb + bl ov29_02318700 + mov r0, #0x14 + mov r1, #9 + bl ov29_022EA370 + b _022F5978 +_022F550C: + ldrb r0, [r8, #0x4e] + cmp r0, #0x81 + bne _022F5558 + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F5558 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F5980 ; =0x00000BAE + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x14 + mov r1, #0x4c + bl ov29_022EA370 + b _022F5978 +_022F5558: + ldrsh r0, [r4, #4] + bl GetItemCategoryVeneer + cmp r0, #0 + beq _022F5578 + ldrsh r0, [r4, #4] + bl GetItemCategoryVeneer + cmp r0, #1 + bne _022F55B8 +_022F5578: + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022F55B8 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _022F5980 ; =0x00000BAE + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x14 + mov r1, #0x4c + bl ov29_022EA370 + b _022F5978 +_022F55B8: + mov r0, sb + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + beq _022F55E8 + ldr r1, _022F5984 ; =0x00000BBE + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x14 + mov r1, #0x4c + bl ov29_022EA370 + b _022F5978 +_022F55E8: + ldrh r0, [r4] + mov r2, #0 + add r1, sp, #0xc + strh r0, [sp, #0xc] + ldrh r5, [r4, #2] + ldrb r3, [sp, #0xc] + mov r0, sb + strh r5, [sp, #0xe] + ldrh r5, [r4, #4] + bic r3, r3, #0x10 + strh r5, [sp, #0x10] + strb r3, [sp, #0xc] + strb r2, [sp, #0xd] + bl ov29_0230F9A4 + ldrb r0, [r8, #0x4e] + cmp r0, #0x80 + bne _022F563C + add r0, r8, #0x50 + mov r1, #1 + mov r4, #0 + bl ov29_023456BC +_022F563C: + ldrsh r0, [sp, #0x10] + mov r5, #1 + bl GetItemCategoryVeneer + cmp r0, #0 + beq _022F5660 + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + cmp r0, #1 + bne _022F566C +_022F5660: + ldrh r0, [sp, #0xe] + cmp r0, #1 + movhi r5, #0 +_022F566C: + cmp r5, #0 + ldrb r0, [r8, #0x4e] + beq _022F56A8 + cmp r0, #0x80 + beq _022F56F4 + mov r0, r4 + bl ov29_02346FB8 + cmp r0, #0 + blt _022F5698 + mov r0, r4 + bl RemoveEquivItemNoHole +_022F5698: + mov r0, r4 + bl ItemZInit + bl ov29_02347030 + b _022F56F4 +_022F56A8: + cmp r0, #0x80 + bne _022F56D0 + ldrh r2, [sp, #0xe] + add r1, sp, #0xc + add r0, r8, #0x50 + sub r3, r2, #1 + mov r2, #1 + strh r3, [sp, #0xe] + bl ov29_02345538 + b _022F56F4 +_022F56D0: + mov r0, r4 + bl ov29_02346FB8 + cmp r0, #0 + blt _022F56E8 + mov r0, r4 + bl DecrementStackItem +_022F56E8: + ldrh r0, [r4, #2] + sub r0, r0, #1 + strh r0, [r4, #2] +_022F56F4: + mov r0, sb + mov r1, #0x30 + bl ItemIsActive__022F5994 + cmp r0, #0 + beq _022F5714 + mov r0, #8 + bl DungeonRandInt + strb r0, [r8, #0x4c] +_022F5714: + mov r0, sb + bl ov29_022E272C + cmp r0, #0 + beq _022F577C + ldr r1, _022F5988 ; =0x00000103 + mov r0, sb + ldrb r7, [r8, #0x4c] + bl ov29_022E56A0 + mov r6, #0 + mov r5, r6 + mov r4, #2 + mov sl, #0x15 +_022F5744: + sub r0, r7, #1 + and r7, r0, #7 + mov r0, sb + mov r1, r5 + mov r2, r7 + bl ov29_023049A8 + mov r0, r4 + mov r1, sl + bl ov29_022EA370 + add r6, r6, #1 + cmp r6, #8 + blt _022F5744 + mov r0, #4 + strb r0, [r8, #0x179] +_022F577C: + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + cmp r0, #0 + beq _022F579C + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + cmp r0, #1 + bne _022F57A4 +_022F579C: + mov r0, #1 + strh r0, [sp, #0xe] +_022F57A4: + add r1, sp, #0xc + mov r0, #0 + bl ov29_02344B70 + bl ov29_0234B034 + mov r1, #0 + mov r2, r8 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + cmp r0, #0 + bne _022F57E8 + mov r0, sb + mov r1, #0xbc0 + bl LogMessageByIdWithPopupCheckUser + b _022F57F4 +_022F57E8: + ldr r1, _022F598C ; =0x00000BBF + mov r0, sb + bl LogMessageByIdWithPopupCheckUser +_022F57F4: + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + mov r1, r0 + mov r0, sb + bl ov29_022E5728 + mov r0, sb + mov r1, #0x2e + bl ItemIsActive__022F5994 + cmp r0, #0 + movne r0, #1 + strneb r0, [sp, #9] + moveq r0, #0 + streqb r0, [sp, #9] + ldrb r0, [r8, #0xee] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022F5880 +_022F5838: ; jump table + b _022F5848 ; case 0 + b _022F585C ; case 1 + b _022F5870 ; case 2 + b _022F5880 ; case 3 +_022F5848: + mov r1, #0 + mov r0, #0xa + strb r1, [sp, #8] + strh r0, [sp, #0xa] + b _022F5880 +_022F585C: + mov r1, #0 + mov r0, #0x63 + strb r1, [sp, #8] + strh r0, [sp, #0xa] + b _022F5880 +_022F5870: + mov r1, #1 + mov r0, #0x63 + strb r1, [sp, #8] + strh r0, [sp, #0xa] +_022F5880: + ldr r1, [sb, #0xb4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + bne _022F58A0 + add r0, r1, #0x228 + mov r1, #0x24 + bl ExclusiveItemEffectFlagTest +_022F58A0: + cmp r0, #0 + movne r1, #0 + movne r0, #0x63 + strneb r1, [sp, #8] + strneh r0, [sp, #0xa] + mov r0, sb + mov r1, #0x16 + bl ItemIsActive__022F5994 + cmp r0, #0 + bne _022F58DC + mov r0, sb + mov r1, #0x42 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022F58EC +_022F58DC: + mov r1, #1 + mov r0, #0x63 + strb r1, [sp, #8] + strh r0, [sp, #0xa] +_022F58EC: + ldrsh r0, [sp, #0x10] + bl GetItemCategoryVeneer + cmp r0, #1 + bne _022F5928 + add r0, sp, #4 + mov r1, sb + bl ov29_022E9A9C + add r4, sp, #8 + add r1, sp, #0xc + add r3, sp, #4 + mov r0, sb + add r2, sb, #4 + str r4, [sp] + bl ov29_02347BC8 + b _022F5944 +_022F5928: + add r0, sp, #8 + str r0, [sp] + ldrb r3, [r8, #0x4c] + add r1, sp, #0xc + mov r0, sb + add r2, sb, #4 + bl ov29_02347518 +_022F5944: + mov r0, sb + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F5978 + ldrb r1, [r8, #0x4c] + mov r0, sb + bl ov29_02304A48 + ldr r1, _022F5990 ; =0x02353538 + mov r0, sb + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02307F4C +_022F5978: + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F5980: .word 0x00000BAE +_022F5984: .word 0x00000BBE +_022F5988: .word 0x00000103 +_022F598C: .word 0x00000BBF +_022F5990: .word 0x02353538 + arm_func_end ov29_022F54BC + + arm_func_start ItemIsActive__022F5994 +ItemIsActive__022F5994: ; 0x022F5994 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__022F5994 + + arm_func_start ov29_022F59C4 +ov29_022F59C4: ; 0x022F59C4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_022F87C0 + movs r1, r0 + moveq r1, #0 + beq _022F59FC + ldr r0, [r1] + cmp r0, #1 + movne r1, #0 + bne _022F59FC + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + movne r1, #0 +_022F59FC: + mov r0, r4 + mvn r2, #0 + bl ov29_022F5A40 + ldmia sp!, {r4, pc} + arm_func_end ov29_022F59C4 + + arm_func_start ov29_022F5A0C +ov29_022F5A0C: ; 0x022F5A0C + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetLeader + ldr r1, _022F5A3C ; =0x02353538 + ldrb r3, [r4, #4] + ldr r1, [r1] + mov r2, #0 + add r1, r1, r3, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb28] + bl ov29_022F5A40 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F5A3C: .word 0x02353538 + arm_func_end ov29_022F5A0C + + arm_func_start ov29_022F5A40 +ov29_022F5A40: ; 0x022F5A40 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov r6, r0 + movs sl, r1 + mov r5, r2 + ldr r8, [r6, #0xb4] + bne _022F5A70 + ldr r1, _022F5D9C ; =0x00000BC1 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F5D94 +_022F5A70: + bl ov29_023009CC + cmp r0, #0 + bne _022F5A90 + ldr r1, _022F5D9C ; =0x00000BC1 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F5D94 +_022F5A90: + ldr r0, [sl, #0xb4] + ldrb r0, [r0, #0xbc] + bl ov29_022EFB04 + movs r4, r0 + bne _022F5ADC + mov r0, r6 + mov r1, sl + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #1 + beq _022F5D84 + mov r0, sl + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #1 + beq _022F5D84 +_022F5ADC: + ldr sb, [sl, #0xb4] + bl ov29_0234B034 + mov r1, #0 + mov r2, sb + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + mov r1, #1 + mov r2, sb + mov r3, #7 + bl ov29_0230040C + mov r0, #3 + bl ov29_02348C64 + mov r0, r6 + mov r1, sl + bl ov29_02307BDC + mov r0, sl + bl ov29_023009CC + cmp r0, #0 + beq _022F5B4C + mov r0, sl + mov r1, #1 + bl ov29_02300818 + cmp r0, #0 + beq _022F5B78 +_022F5B4C: + add r0, r6, #4 + add r1, sl, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r6 + bl ov29_02304AFC + ldr r1, _022F5DA0 ; =0x00000BC2 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F5D94 +_022F5B78: + add r0, r6, #4 + add r1, sl, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r6 + bl ov29_02304AFC + cmp r5, #0 + blt _022F5BA8 + mov r0, sl + mov r1, r5 + bl ov29_02304AFC + b _022F5BB8 +_022F5BA8: + ldrb r1, [r8, #0x4c] + mov r0, sl + add r1, r1, #4 + bl ov29_02304AFC +_022F5BB8: + cmp r4, #0 + beq _022F5BD0 + mov r0, r6 + mov r1, sl + bl ov29_02344544 + b _022F5D94 +_022F5BD0: + ldrb r0, [sb, #9] + cmp r0, #1 + bne _022F5BE4 + bl ov29_022F6748 + b _022F5D94 +_022F5BE4: + ldrb r0, [sb, #0xbc] + cmp r0, #7 + bne _022F5C3C + ldr r0, _022F5DA4 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + beq _022F5C18 + ldr r1, _022F5DA8 ; =0x00000BC3 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F5D94 +_022F5C18: + bl ov29_023491A4 + ldrb r0, [r0, #0x18] + cmp r0, #0 + mov r0, sl + beq _022F5C34 + bl ov29_0234A5E4 + b _022F5D94 +_022F5C34: + bl ov29_0234A2D4 + b _022F5D94 +_022F5C3C: + ldrsh r2, [sb, #0x12] + ldrsh r1, [sb, #0x16] + ldr r0, _022F5DAC ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, lsl #3 + mov r1, #0xa + bl DivideInt + ldrsh r1, [sb, #0x10] + cmp r1, r0 + movge r4, #0 + bge _022F5C84 + mov r0, sl + bl HasLowHealth + cmp r0, #0 + moveq r4, #1 + movne r4, #2 +_022F5C84: + bl sub_02025888 + ldrb r1, [sb, #0x48] + mov r5, r0 + cmp r1, #0xd6 + bne _022F5CA4 + ldr r1, _022F5DB0 ; =0x0000025E + bl GetStringFromFileVeneer + b _022F5D3C +_022F5CA4: + mov r0, sl + mov r6, #0x14 + bl ov29_0231AE3C + str r0, [sp, #4] + ldr r0, _022F5DB4 ; =0x000004D3 + sub fp, r0, #0x1b +_022F5CBC: + mov r0, sb + bl ov29_0234CFEC + mov r7, r0 + cmp r7, fp + ldrne r0, _022F5DB4 ; =0x000004D3 + cmpne r7, r0 + moveq r2, #0 + beq _022F5CE8 + ldrb r0, [r8, #0x48] + bl ov29_0234CFA0 + mov r2, r0 +_022F5CE8: + mov r0, r7 + mov r1, r4 + bl GetTalkLine + mov r1, r0 + mov r0, r5 + bl GetStringFromFileVeneer + ldr r0, [sp, #4] + cmp r0, #0 + bne _022F5D3C + ldr r1, _022F5DB8 ; =0x02352750 + mov r0, r5 + bl sub_02020880 + cmp r0, #0 + beq _022F5D3C + subs r6, r6, #1 + bne _022F5D34 + ldr r1, _022F5DBC ; =0x02352758 + mov r0, r5 + bl Strcpy +_022F5D34: + cmp r6, #0 + bne _022F5CBC +_022F5D3C: + ldrb r0, [sb, #0x48] + cmp r0, #0xd7 + bne _022F5D5C + mov r0, sl + bl HasLowHealth + cmp r0, #0 + movne r2, #2 + bne _022F5D60 +_022F5D5C: + mov r2, #0 +_022F5D60: + ldrsh r1, [sb, #4] + add r0, sp, #8 + bl ov29_0234BAC0 + add r1, sp, #8 + mov r0, sl + mov r2, r5 + mov r3, #1 + bl ov29_0234D304 + b _022F5D94 +_022F5D84: + ldr r1, _022F5D9C ; =0x00000BC1 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 +_022F5D94: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F5D9C: .word 0x00000BC1 +_022F5DA0: .word 0x00000BC2 +_022F5DA4: .word 0x02353538 +_022F5DA8: .word 0x00000BC3 +_022F5DAC: .word 0x000003E7 +_022F5DB0: .word 0x0000025E +_022F5DB4: .word 0x000004D3 +_022F5DB8: .word 0x02352750 +_022F5DBC: .word 0x02352758 + arm_func_end ov29_022F5A40 + + arm_func_start ov29_022F5DC0 +ov29_022F5DC0: ; 0x022F5DC0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetLeader + ldr r1, _022F5DF0 ; =0x02353538 + ldrb r3, [r4, #4] + ldr r1, [r1] + mov r2, #0 + add r1, r1, r3, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb28] + bl ov29_022F5DF4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F5DF0: .word 0x02353538 + arm_func_end ov29_022F5DC0 + + arm_func_start ov29_022F5DF4 +ov29_022F5DF4: ; 0x022F5DF4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x44 + movs r7, r1 + ldr r4, [r7, #0xb4] + mov r0, #0 + bne _022F5E1C + ldr r1, _022F5F0C ; =0x00000BC4 + mov r2, #1 + bl DisplayMessage2 + b _022F5F04 +_022F5E1C: + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrsh r0, [r4, #0xc] + ldr r5, _022F5F10 ; =0x00000BC5 + cmp r0, #0 + add r6, r5, #4 + blt _022F5E84 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetActiveTeamMember + mov r4, r0 + ldrsh r0, [r4, #8] + bl ov29_022F9C40 + cmp r0, #0 + addne r5, r5, #3 + addne r6, r5, #3 + bne _022F5E84 + ldrsh r0, [r4, #8] + bl IsMonsterIdInNormalRange__022F9C68 + cmp r0, #0 + beq _022F5E84 + bl ov29_022E08A0 + cmp r0, #0 + addne r5, r5, #2 + ldr r6, _022F5F14 ; =0x00000BCA + addeq r5, r5, #1 +_022F5E84: + mov r2, #1 + mov r1, r5 + mov r3, r2 + mov r0, #0 + str r2, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _022F5F04 + mov r0, #0 + bl ov29_0233A248 + mov r0, #0 + bl sub_02024FB8 + mov r1, r0 + add r0, sp, #4 + mov r2, #0x40 + bl Strncpy + mov r0, r7 + bl ov29_022E690C + mov r0, r7 + mov r1, #0x25c + mov r2, #0 + bl HandleFaint + bl UpdateMapSurveyorFlag + bl ov29_022E8104 + bl ov29_022E81F8 + mov r0, #0 + add r1, sp, #4 + bl ov29_0234B0B4 + mov r1, r6 + mov r0, #0 + mov r2, #1 + bl DisplayMessage +_022F5F04: + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_022F5F0C: .word 0x00000BC4 +_022F5F10: .word 0x00000BC5 +_022F5F14: .word 0x00000BCA + arm_func_end ov29_022F5DF4 + + arm_func_start ov29_022F5F18 +ov29_022F5F18: ; 0x022F5F18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov sb, r0 + mov r7, #0 + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F5F88 + ldr r0, _022F6050 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_02344160 + cmp r0, #0 + bne _022F5F60 + ldr r1, _022F6054 ; =0x00000DFD + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + b _022F6048 +_022F5F60: + ldr r4, [sb, #0xb4] + mov r1, r7 + mov r0, sb + strb r1, [r4, #0x23f] + bl ov29_0231A7A0 + cmp r0, #0 + movne r7, #1 + strneb r7, [r4, #0x23f] + mov r0, #0 + strb r0, [r4, #0x23e] +_022F5F88: + mov r6, #0 + mov r4, #1 + mov r5, r6 + mov sl, r4 + b _022F5FD8 +_022F5F9C: + ldr r8, [sb, #0xb4] + mov r0, sb + str r5, [sp] + ldrb r1, [r8, #0x54] + mov r2, r4 + mov r3, r5 + bl ov29_0232145C + bl IsFloorOver + cmp r0, #0 + ldreqb r0, [r8, #0x23e] + cmpeq r0, #0 + ldreqb r0, [r8, #0x163] + cmpeq r0, #0 + bne _022F5FEC + add r6, r6, #1 +_022F5FD8: + mov r0, sb + mov r1, sl + bl GetNumberOfAttacks + cmp r6, r0 + blt _022F5F9C +_022F5FEC: + mov r0, sb + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F6014 + cmp r7, #0 + moveq r1, #1 + movne r1, #0 + mov r0, sb + and r1, r1, #0xff + bl UpdateMovePp +_022F6014: + bl IsFloorOver + cmp r0, #0 + bne _022F6048 + mov r0, sb + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F6040 + ldr r1, [sb, #0xb4] + mov r0, sb + ldrb r1, [r1, #0x54] + bl ov29_022FA574 +_022F6040: + mov r0, sb + bl TryActivateTruant +_022F6048: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F6050: .word 0x02353538 +_022F6054: .word 0x00000DFD + arm_func_end ov29_022F5F18 + + arm_func_start ov29_022F6058 +ov29_022F6058: ; 0x022F6058 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sl, r0 + ldr r7, [sl, #0xb4] + ldr r2, _022F61F8 ; =0x0237CA80 + mov r3, #0 + add r0, sp, #0xc + str r3, [r2] + mov sb, r1 + bl InitMove + ldrb r0, [r7, #0xd0] + cmp r0, #1 + bne _022F60AC + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022F61FC ; =0x00000BCC + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022F61F0 +_022F60AC: + ldrb r0, [r7, #0xbf] + cmp r0, #4 + bne _022F60D8 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022F6200 ; =0x00000BCD + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _022F61F0 +_022F60D8: + mov r6, #0 + cmp sb, #0x160 + moveq r8, #1 + movne r8, #0 + strb r6, [r7, #0x163] + mov fp, r6 + mov r5, #0xa + add r4, sp, #0xc + b _022F6154 +_022F60FC: + mov r0, sl + bl ov29_022F3B8C + str fp, [r7, #0x18c] + ldrb r1, [sp, #0xc] + strb r5, [sp, #0x12] + mov r0, sl + orr r1, r1, #0xc + strb r1, [sp, #0xc] + str fp, [sp] + mov r1, r8 + mov r2, fp + mov r3, fp + str r4, [sp, #4] + bl ov29_02322374 + mov r0, sl + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F6168 + ldrb r0, [r7, #0x163] + cmp r0, #0 + bne _022F6168 + add r6, r6, #1 +_022F6154: + mov r0, sl + mov r1, #1 + bl GetNumberOfAttacks + cmp r6, r0 + blt _022F60FC +_022F6168: + mov r0, sl + bl EntityIsValid__022F528C + cmp r0, #0 + beq _022F61F0 + cmp sb, #0x160 + ldreq r0, _022F61F8 ; =0x0237CA80 + ldreq r0, [r0] + cmpeq r0, #0 + bne _022F6198 + ldr r1, _022F6204 ; =0x00000BCE + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_022F6198: + ldrb r0, [r7, #7] + cmp r0, #0 + cmpne sb, #0x160 + beq _022F61E8 + ldrb r1, [r7, #0x4c] + ldr r0, _022F6208 ; =0x0235171C + ldrsh r3, [sl, #4] + mov r1, r1, lsl #2 + ldrsh r2, [r0, r1] + ldr r1, _022F620C ; =0x0235171E + add r0, sp, #8 + add r2, r3, r2 + strh r2, [sp, #8] + ldrb r2, [r7, #0x4c] + ldrsh r3, [sl, #6] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [sp, #0xa] + bl ov29_02338430 +_022F61E8: + mov r0, sl + bl EnemyEvolution +_022F61F0: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F61F8: .word 0x0237CA80 +_022F61FC: .word 0x00000BCC +_022F6200: .word 0x00000BCD +_022F6204: .word 0x00000BCE +_022F6208: .word 0x0235171C +_022F620C: .word 0x0235171E + arm_func_end ov29_022F6058 + + arm_func_start ov29_022F6210 +ov29_022F6210: ; 0x022F6210 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + bl EntityIsValid__022F62A8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r4, #0 + ldr r7, _022F62A4 ; =0x02353538 + b _022F6294 +_022F6234: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb38] + mov r0, r5 + bl EntityIsValid__022F62A8 + cmp r0, #0 + beq _022F6288 + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #9] + cmp r0, #1 + bne _022F6288 + mov r0, r5 + bl ov29_023009CC + cmp r0, #0 + beq _022F6288 + ldrb r1, [r6, #0x25] + ldrb r0, [r5, #0x25] + cmp r1, r0 + moveq r0, r5 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022F6288: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_022F6294: + cmp r4, #0x10 + blt _022F6234 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F62A4: .word 0x02353538 + arm_func_end ov29_022F6210 diff --git a/asm/overlay_29_022F62CC.s b/asm/overlay_29_022F62CC.s new file mode 100644 index 00000000..6090d3f5 --- /dev/null +++ b/asm/overlay_29_022F62CC.s @@ -0,0 +1,1223 @@ + .include "asm/macros.inc" + .include "overlay_29_022F62CC.inc" + + .text + + arm_func_start ov29_022F62CC +ov29_022F62CC: ; 0x022F62CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov sl, r0 + bl IsFloorOver + cmp r0, #0 + bne _022F66F4 + bl GetLeader + ldr r1, _022F66FC ; =0x02353538 + mov r4, r0 + ldr r1, [r1] + ldr r6, [r4, #0xb4] + ldrb fp, [r1, #0x7c8] + bl GetTileAtEntity + ldrh r0, [r0] + ldr r7, _022F66FC ; =0x02353538 + tst r0, #0x20 + movne r0, #1 + moveq r0, #0 + and r5, r0, #0xff + ldr r0, [r7] + strb r5, [r0, #0x7c8] + ldr r0, [r7] + strb r5, [r0, #0x7c9] + ldr r1, [r7] + ldrb r0, [r1, #0x790] + cmp r0, #0 + bne _022F66F4 + ldr r0, [r1, #0x7c4] + cmp r0, #0 + beq _022F66F4 + ldrb r0, [r6, #0xef] + cmp r0, #1 + bne _022F6380 + ldrb r0, [r1, #0x7c9] + cmp r0, #0 + beq _022F6364 + mov r0, #0 + bl ov29_022E38E0 +_022F6364: + ldr r0, _022F66FC ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x7c8] + ldr r0, [r0] + strb r2, [r0, #0x7c9] + b _022F66F4 +_022F6380: + mov r6, #0 + mov r8, r6 +_022F6388: + ldr r0, [r7] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb38] + mov r0, sb + bl EntityIsValid__022F62A8 + cmp r0, #0 + beq _022F63D8 + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #9] + cmp r0, #1 + bne _022F63D8 + mov r0, sb + bl ov29_023009CC + cmp r0, #0 + beq _022F63D8 + ldrb r1, [r4, #0x25] + ldrb r0, [sb, #0x25] + cmp r1, r0 + moveq r6, #1 +_022F63D8: + add r8, r8, #1 + cmp r8, #0x10 + blt _022F6388 + bl GetKecleonIdToSpawnByFloor + mov r1, r0 + add r0, sp, #0x18 + mov r2, #0 + bl ov29_0234BAC0 + cmp fp, #0 + cmpeq r5, #1 + bne _022F6448 + cmp r6, #0 + beq _022F66F4 + mov r0, r4 + bl ov29_022F6210 + movs r5, r0 + beq _022F6434 + add r0, r5, #4 + add r1, r4, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r5 + bl ov29_02304A48 +_022F6434: + ldr r1, _022F6700 ; =0x00000E53 + add r0, sp, #0x18 + mov r2, #1 + bl DisplayMessage2 + b _022F66F4 +_022F6448: + cmp r5, #1 + beq _022F66F4 + cmp fp, #1 + cmpeq r5, #0 + beq _022F6464 + cmp sl, #0 + beq _022F66F4 +_022F6464: + mov r7, #0 + str r7, [sp] + bl ov29_022F670C + cmp r0, #0 + beq _022F6620 + mov r0, #1 + str r0, [sp] + mov r8, r7 + ldr sb, _022F66FC ; =0x02353538 + b _022F6618 +_022F648C: + ldr r0, [sb] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb38] + mov r0, sl + bl EntityIsValid__022F62A8 + cmp r0, #0 + beq _022F6614 + ldr r0, [sl, #0xb4] + ldrb r0, [r0, #9] + cmp r0, #1 + bne _022F6614 + mov r0, sl + bl ov29_023009CC + cmp r0, #0 + beq _022F6614 + ldrb r1, [r4, #0x25] + ldrb r0, [sl, #0x25] + cmp r1, r0 + bne _022F6614 + ldrsh r1, [r4, #4] + ldrsh r0, [sl, #4] + mov r7, #1 + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _022F6510 + ldrsh r1, [r4, #6] + ldrsh r0, [sl, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _022F65CC +_022F6510: + ldr r0, _022F6704 ; =0x02352760 + mvn r8, #0 + ldrh r1, [r0] + ldrh r0, [r0, #2] + str r8, [sp, #4] + strh r1, [sp, #0x10] + strh r0, [sp, #0x12] + ldrh r0, [sp, #0x10] + str r0, [sp, #8] + ldrh r0, [sp, #0x12] + str r0, [sp, #0xc] + b _022F65C4 +_022F6540: + ldr sb, [sp, #4] + b _022F65B8 +_022F6548: + ldr r0, [sp, #8] + strh r0, [sp, #0x14] + ldr r0, [sp, #0xc] + strh r0, [sp, #0x16] + ldrsh r0, [r4, #4] + add r0, r8, r0 + strh r0, [sp, #0x14] + ldrsh r1, [r4, #6] + ldrsh r0, [sp, #0x14] + add r1, sb, r1 + strh r1, [sp, #0x16] + ldrsh r1, [sp, #0x16] + bl GetTile + ldrb r0, [r0, #7] + cmp r0, #0xff + beq _022F65B4 + mov r0, sl + add r1, sp, #0x14 + bl ov29_022FF764 + cmp r0, #0 + bne _022F65B4 + add r3, sp, #0x14 + mov r0, r4 + mov r1, sl + mov r2, #3 + bl TryWarp + b _022F65CC +_022F65B4: + add sb, sb, #1 +_022F65B8: + cmp sb, #1 + ble _022F6548 + add r8, r8, #1 +_022F65C4: + cmp r8, #1 + ble _022F6540 +_022F65CC: + mov r0, r4 + bl ov29_023009CC + cmp r0, #0 + moveq r7, #0 + beq _022F65F8 + add r0, r4, #4 + add r1, sl, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r4 + bl ov29_02304A00 +_022F65F8: + add r0, sl, #4 + add r1, r4, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, sl + bl ov29_02304A48 + b _022F6620 +_022F6614: + add r8, r8, #1 +_022F6618: + cmp r8, #0x10 + blt _022F648C +_022F6620: + ldr r0, [sp] + cmp r0, #0 + beq _022F6654 + cmp r7, #0 + bne _022F6654 + ldr r0, _022F66FC ; =0x02353538 + ldr r0, [r0] + ldr r1, [r0, #0x7c4] + ldr r0, [r0, #0x7bc] + cmp r1, r0 + ble _022F66F4 + bl ov29_022F6CAC + b _022F66F4 +_022F6654: + ldr r0, [sp] + cmp r0, #0 + beq _022F6688 + cmp r6, #0 + bne _022F6688 + ldr r0, _022F66FC ; =0x02353538 + ldr r0, [r0] + ldr r1, [r0, #0x7c4] + ldr r0, [r0, #0x7bc] + cmp r1, r0 + ble _022F66F4 + bl ov29_022F6CAC + b _022F66F4 +_022F6688: + mov r0, r7 + bl ov29_022F67D0 + mov r0, r7 + bl ov29_022F6A0C + cmp r0, #0 + beq _022F66A8 + bl ov29_022F6CAC + b _022F66F4 +_022F66A8: + cmp fp, #1 + cmpeq r5, #0 + bne _022F66F4 + cmp r6, #0 + beq _022F66F4 + mov r0, r4 + bl ov29_022F6210 + movs r5, r0 + beq _022F66E4 + add r0, r5, #4 + add r1, r4, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r5 + bl ov29_02304A48 +_022F66E4: + ldr r1, _022F6708 ; =0x00000E52 + add r0, sp, #0x18 + mov r2, #1 + bl DisplayMessage2 +_022F66F4: + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F66FC: .word 0x02353538 +_022F6700: .word 0x00000E53 +_022F6704: .word 0x02352760 +_022F6708: .word 0x00000E52 + arm_func_end ov29_022F62CC + + arm_func_start ov29_022F670C +ov29_022F670C: ; 0x022F670C + ldr r0, _022F6744 ; =0x02353538 + ldr r2, [r0] + ldr r1, [r2, #0x7c4] + ldr r0, [r2, #0x7bc] + sub r0, r1, r0 + cmp r0, #0 + movgt r0, #1 + bxgt lr + ldr r0, [r2, #0x7c0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022F6744: .word 0x02353538 + arm_func_end ov29_022F670C + + arm_func_start ov29_022F6748 +ov29_022F6748: ; 0x022F6748 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl GetKecleonIdToSpawnByFloor + mov r1, r0 + add r0, sp, #0 + mov r2, #0 + bl ov29_0234BAC0 + mov r0, #1 + bl ov29_022F67D0 + mov r0, #1 + bl ov29_022F6A0C + movs r4, r0 + beq _022F67B4 + bl GetLeader + bl GetTileAtEntity + ldrh r0, [r0] + tst r0, #0x20 + beq _022F67AC + cmp r4, #2 + beq _022F67C4 + ldr r1, _022F67CC ; =0x00000E51 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F67C4 +_022F67AC: + bl ov29_022F6CAC + b _022F67C4 +_022F67B4: + add r0, sp, #0 + mov r1, #0xe50 + mov r2, #1 + bl DisplayMessage2 +_022F67C4: + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F67CC: .word 0x00000E51 + arm_func_end ov29_022F6748 + + arm_func_start ov29_022F67D0 +ov29_022F67D0: ; 0x022F67D0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + ldr r1, _022F69EC ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + mov r5, #0 + ldr r0, [r0, #0x7c0] + cmp r0, #0 + beq _022F69E4 + mov r0, #0x3e + bl TeamLeaderIqSkillIsEnabled + cmp r0, #0 + movne r5, #1 + bl GetKecleonIdToSpawnByFloor + mov r1, r0 + add r0, sp, #0x14 + mov r2, #0 + bl ov29_0234BAC0 + ldr r0, _022F69EC ; =0x02353538 + cmp r4, #0 + ldr r0, [r0] + ldr r4, [r0, #0x7c0] + beq _022F69E4 + ldr r0, _022F69F0 ; =0x023535A8 + cmp r5, #0 + str r4, [r0] + beq _022F6870 + ldr r0, _022F69F4 ; =0x022C4800 + mov r1, r4, lsl #8 + ldr r3, [r0] + mov r2, #0x64 + smull r0, r1, r3, r1 + mov r3, #0 + bl sub_0208FC8C + bl sub_020018A4 + mov r4, r0 + ldr r1, _022F69F8 ; =0x00000E4F + add r0, sp, #0x14 + mov r2, #1 + bl DisplayMessage2 +_022F6870: + mov r1, r4 + mov r0, #0 + bl ov29_0234B09C + mov r2, #0 + ldr r1, _022F69FC ; =0x00000E4D + add r0, sp, #0x14 + mov r3, r2 + str r2, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _022F69E4 + ldr r0, _022F6A00 ; =0x00001308 + bl ov29_022EACCC + mov r0, r4 + bl AddMoneyCarried + ldr r1, _022F6A04 ; =0x02352760 + ldr r0, _022F69EC ; =0x02353538 + ldrh r3, [r1, #4] + ldr r0, [r0] + ldrh r2, [r1, #6] + add r1, r0, #0xc000 + strh r3, [sp, #4] + strh r2, [sp, #6] + ldr sl, [r0, #0x7bc] + ldr sb, [r1, #0xd14] + b _022F69A8 +_022F68D8: + add r0, r0, #0xc000 + ldr r8, [r0, #0xd18] + mov r0, sb, lsl #0x10 + mov r7, r0, asr #0x10 + add r6, sp, #0xc + add r5, sp, #8 + mov fp, #1 + ldr r4, _022F69EC ; =0x02353538 + b _022F6990 +_022F68FC: + mov r0, sb + mov r1, r8 + strh r7, [sp, #8] + strh r8, [sp, #0xa] + bl GetTile + ldrh r1, [r0] + tst r1, #0x20 + ldrne r0, [r0, #0x10] + cmpne r0, #0 + beq _022F698C + ldr r1, [r0] + cmp r1, #3 + bne _022F698C + bl ov29_022E1610 + ldrb r1, [r0] + tst r1, #2 + bne _022F698C + ldrh r2, [r0] + mov r1, fp + strh r2, [sp, #0xc] + ldrh r2, [r0, #2] + strh r2, [sp, #0xe] + ldrh r2, [r0, #4] + mov r0, r5 + strh r2, [sp, #0x10] + bl ov29_023456BC + ldrsh r0, [sp, #0x10] + bl sub_0200CCE0 + cmp r0, #0 + ldrneb r0, [sp, #0xc] + mov r1, r6 + mov r2, #1 + orrne r0, r0, #2 + strneb r0, [sp, #0xc] + mov r0, r5 + bl ov29_02345538 +_022F698C: + add r8, r8, #1 +_022F6990: + ldr r0, [r4] + add r1, r0, #0xc000 + ldr r1, [r1, #0xd20] + cmp r8, r1 + ble _022F68FC + add sb, sb, #1 +_022F69A8: + add r1, r0, #0xc000 + ldr r1, [r1, #0xd1c] + cmp sb, r1 + ble _022F68D8 + ldr r1, _022F69EC ; =0x02353538 + add r0, sp, #0x14 + ldr r4, [r1] + ldr r1, _022F6A08 ; =0x00000E4A + ldr r2, [r4, #0x7bc] + ldr r3, [r4, #0x7c4] + sub r2, r2, sl + add r3, r3, r2 + mov r2, #1 + str r3, [r4, #0x7c4] + bl DisplayMessage2 +_022F69E4: + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F69EC: .word 0x02353538 +_022F69F0: .word 0x023535A8 +_022F69F4: .word 0x022C4800 +_022F69F8: .word 0x00000E4F +_022F69FC: .word 0x00000E4D +_022F6A00: .word 0x00001308 +_022F6A04: .word 0x02352760 +_022F6A08: .word 0x00000E4A + arm_func_end ov29_022F67D0 + + arm_func_start ov29_022F6A0C +ov29_022F6A0C: ; 0x022F6A0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r0, #0x3e + mov r4, #0 + bl TeamLeaderIqSkillIsEnabled + cmp r0, #0 + movne r4, #1 + bl GetKecleonIdToSpawnByFloor + mov r1, r0 + add r0, sp, #4 + mov r2, #0 + bl ov29_0234BAC0 + ldr r0, _022F6C8C ; =0x02353538 + cmp r4, #0 + ldr r0, [r0] + ldr r1, [r0, #0x7c4] + ldr r0, [r0, #0x7bc] + sub r6, r1, r0 + beq _022F6A80 + ldr r0, _022F6C90 ; =0x022C473C + mov r3, r6, lsl #8 + ldr r0, [r0] + mov r2, #0x64 + smull r0, r1, r3, r0 + mov r3, #0 + bl sub_0208FC8C + bl sub_020018A4 + mov r6, r0 +_022F6A80: + cmp r6, #0 + movle r0, #0 + ble _022F6C84 + cmp r5, #0 + beq _022F6AE0 + cmp r4, #0 + beq _022F6AAC + ldr r1, _022F6C94 ; =0x00000E4E + add r0, sp, #4 + mov r2, #1 + bl DisplayMessage2 +_022F6AAC: + mov r1, r6 + mov r0, #0 + bl ov29_0234B09C + mov r2, #0 + ldr r1, _022F6C98 ; =0x00000E4C + add r0, sp, #4 + mov r3, #1 + str r2, [sp] + bl ov29_0234D518 + cmp r0, #1 + beq _022F6AE8 + mov r0, #1 + b _022F6C84 +_022F6AE0: + mov r0, #1 + b _022F6C84 +_022F6AE8: + bl GetGold + cmp r0, r6 + bge _022F6B0C + ldr r1, _022F6C9C ; =0x00000E4B + add r0, sp, #4 + mov r2, #1 + bl DisplayMessage2 + mov r0, #2 + b _022F6C84 +_022F6B0C: + ldr r0, _022F6CA0 ; =0x00001308 + bl ov29_022EACCC + rsb r0, r6, #0 + bl AddMoneyCarried + mov r6, #0 + mov r4, r6 +_022F6B24: + mov r5, r4 +_022F6B28: + mov r0, r6 + mov r1, r5 + bl GetTile + ldrh r1, [r0] + tst r1, #0x20 + bne _022F6B78 + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022F6B78 + ldr r1, [r0] + cmp r1, #3 + bne _022F6B78 + bl ov29_022E1610 + mov r7, r0 + ldrsh r0, [r7, #4] + bl sub_0200CCE0 + cmp r0, #0 + ldrneb r0, [r7] + bicne r0, r0, #2 + strneb r0, [r7] +_022F6B78: + add r5, r5, #1 + cmp r5, #0x20 + blt _022F6B28 + add r6, r6, #1 + cmp r6, #0x38 + blt _022F6B24 + mov r6, #0 + ldr sb, _022F6CA4 ; =0x020AF6B8 + mov r4, r6 + mov r5, #1 + mov r8, #6 +_022F6BA4: + mul r1, r6, r8 + ldr r0, [sb] + ldr r2, [r0, #0x384] + ldrb r0, [r2, r1] + add r7, r2, r1 + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022F6BE4 + ldrsh r0, [r7, #4] + bl sub_0200CCE0 + cmp r0, #0 + ldrneb r0, [r7] + bicne r0, r0, #2 + strneb r0, [r7] +_022F6BE4: + add r6, r6, #1 + cmp r6, #0x32 + blt _022F6BA4 + mov r7, #0 + ldr r8, _022F6C8C ; =0x02353538 + mov r4, r7 + mov r5, #1 +_022F6C00: + ldr r0, [r8] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__022F62A8 + cmp r0, #0 + beq _022F6C54 + ldr r6, [r6, #0xb4] + ldrb r0, [r6, #0x62] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022F6C54 + ldrsh r0, [r6, #0x66] + bl sub_0200CCE0 + cmp r0, #0 + ldrneb r0, [r6, #0x62] + bicne r0, r0, #2 + strneb r0, [r6, #0x62] +_022F6C54: + add r7, r7, #1 + cmp r7, #0x14 + blt _022F6C00 + ldr r1, _022F6C8C ; =0x02353538 + add r0, sp, #4 + ldr r4, [r1] + ldr r1, _022F6CA8 ; =0x00000E49 + ldr r3, [r4, #0x7bc] + mov r2, #1 + str r3, [r4, #0x7c4] + bl DisplayMessage2 + mov r0, #0 +_022F6C84: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F6C8C: .word 0x02353538 +_022F6C90: .word 0x022C473C +_022F6C94: .word 0x00000E4E +_022F6C98: .word 0x00000E4C +_022F6C9C: .word 0x00000E4B +_022F6CA0: .word 0x00001308 +_022F6CA4: .word 0x020AF6B8 +_022F6CA8: .word 0x00000E49 + arm_func_end ov29_022F6A0C + + arm_func_start ov29_022F6CAC +ov29_022F6CAC: ; 0x022F6CAC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _022F6E0C ; =0x02353538 + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x790] + ldr r0, [r0] + strb r2, [r0, #0x791] + bl GetLeader + ldr r1, _022F6E10 ; =0x00000E54 + bl LogMessageByIdWithPopupCheckUser + mov r6, #0 + mov r4, r6 +_022F6CDC: + mov r5, r4 +_022F6CE0: + mov r0, r6 + mov r1, r5 + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _022F6D14 + ldr r1, [r0] + cmp r1, #3 + bne _022F6D14 + bl ov29_022E1610 + ldrb r1, [r0] + bic r1, r1, #2 + strb r1, [r0] +_022F6D14: + add r5, r5, #1 + cmp r5, #0x20 + blt _022F6CE0 + add r6, r6, #1 + cmp r6, #0x38 + blt _022F6CDC + mov r7, #0 + ldr r1, _022F6E14 ; =0x020AF6B8 + mov r3, r7 + mov r4, #1 + mov r0, #6 +_022F6D40: + mul r5, r7, r0 + ldr r2, [r1] + add r7, r7, #1 + ldr r6, [r2, #0x384] + ldrb r2, [r6, r5] + tst r2, #1 + movne r2, r4 + moveq r2, r3 + tst r2, #0xff + ldrneb r2, [r6, r5] + bicne r2, r2, #2 + strneb r2, [r6, r5] + cmp r7, #0x32 + blt _022F6D40 + mov r8, #0 + ldr sb, _022F6E0C ; =0x02353538 + mov r6, r8 + mov r4, r8 + mov r5, #1 +_022F6D8C: + ldr r0, [sb] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb78] + mov r0, sl + bl EntityIsValid__022F62A8 + cmp r0, #0 + beq _022F6DDC + ldr r7, [sl, #0xb4] + mov r0, sl + strb r6, [r7, #9] + bl CalcSpeedStageWrapper + ldrb r0, [r7, #0x62] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + ldrneb r0, [r7, #0x62] + bicne r0, r0, #2 + strneb r0, [r7, #0x62] +_022F6DDC: + add r8, r8, #1 + cmp r8, #0x14 + blt _022F6D8C + ldr r0, _022F6E0C ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x7c4] + ldr r1, [r0] + str r2, [r1, #0x7bc] + ldr r0, [r0] + str r2, [r0, #0x7c0] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022F6E0C: .word 0x02353538 +_022F6E10: .word 0x00000E54 +_022F6E14: .word 0x020AF6B8 + arm_func_end ov29_022F6CAC + + arm_func_start ResetDamageDesc +ResetDamageDesc: ; 0x022F6E18 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + strb r1, [r0, #0x10] + bx lr + arm_func_end ResetDamageDesc + + arm_func_start ov29_022F6E40 +ov29_022F6E40: ; 0x022F6E40 + stmdb sp!, {r4, lr} + ldr r0, _022F6ED8 ; =0x0001A002 + mov r1, #0 + bl MemAlloc + ldr r2, _022F6EDC ; =0x0237C9AC + ldr r1, _022F6ED8 ; =0x0001A002 + str r0, [r2] + bl MemZero + ldr r0, _022F6EDC ; =0x0237C9AC + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + strh r1, [r0] + bl ov29_0231B490 + mov r2, #0 + ldr r0, _022F6EE0 ; =0x0237C9B0 + mov r1, r2 +_022F6E84: + str r1, [r0, r2, lsl #2] + add r2, r2, #1 + cmp r2, #2 + blt _022F6E84 + ldr r0, _022F6EE4 ; =0x00000216 + bl GetSpriteFileSize + mov r4, r0 + ldr r0, _022F6EE8 ; =0x00000217 + bl GetSpriteFileSize + cmp r4, r0 + bne _022F6EC0 + mov r0, #0x218 + bl GetSpriteFileSize + ldr r0, _022F6EEC ; =0x00000211 + bl GetSpriteFileSize +_022F6EC0: + ldr r0, _022F6EF0 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x3000 + str r1, [r0, #0xe1c] + ldmia sp!, {r4, pc} + .align 2, 0 +_022F6ED8: .word 0x0001A002 +_022F6EDC: .word 0x0237C9AC +_022F6EE0: .word 0x0237C9B0 +_022F6EE4: .word 0x00000216 +_022F6EE8: .word 0x00000217 +_022F6EEC: .word 0x00000211 +_022F6EF0: .word 0x02353538 + arm_func_end ov29_022F6E40 + + arm_func_start ov29_022F6EF4 +ov29_022F6EF4: ; 0x022F6EF4 + ldr r1, _022F6F08 ; =0x0000FFFF + ldr r0, _022F6F0C ; =0x023535AC + strh r1, [r0, #2] + strh r1, [r0] + bx lr + .align 2, 0 +_022F6F08: .word 0x0000FFFF +_022F6F0C: .word 0x023535AC + arm_func_end ov29_022F6EF4 + + arm_func_start ov29_022F6F10 +ov29_022F6F10: ; 0x022F6F10 + stmdb sp!, {r4, r5, r6, lr} + bl ov29_022F7008 + ldr r0, _022F6F60 ; =0x0237C9AC + ldr r0, [r0] + bl MemFree + mov r6, #0 + ldr r5, _022F6F64 ; =0x0237C9B0 + mov r4, r6 +_022F6F30: + ldr r0, [r5, r6, lsl #2] + cmp r0, #0 + beq _022F6F44 + bl MemFree + str r4, [r5, r6, lsl #2] +_022F6F44: + add r6, r6, #1 + cmp r6, #2 + blt _022F6F30 + ldr r0, _022F6F60 ; =0x0237C9AC + mov r1, #0 + str r1, [r0] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F6F60: .word 0x0237C9AC +_022F6F64: .word 0x0237C9B0 + arm_func_end ov29_022F6F10 + + arm_func_start ov29_022F6F68 +ov29_022F6F68: ; 0x022F6F68 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _022F6FFC ; =0x023535AC + mov r5, r0 + ldrh r0, [r2, #2] + mov r4, r1 + cmp r0, r5 + ldreqh r0, [r2] + cmpeq r0, r4 + beq _022F6FE8 + ldr r0, _022F7000 ; =0x0237C9AC + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrsh r0, [r0] + cmp r0, #0 + beq _022F6FA8 + bl ov29_022F7008 +_022F6FA8: + mov r1, #1 + ldr r0, _022F7004 ; =0x020AFC68 + str r1, [sp] + ldr r1, _022F7000 ; =0x0237C9AC + ldr r0, [r0] + ldr r3, [r1] + mov r1, r5 + mov r2, r4 + bl sub_0201D590 + ldr r1, _022F7000 ; =0x0237C9AC + ldr r2, _022F6FFC ; =0x023535AC + ldr r1, [r1] + add r1, r1, #0x1a000 + strh r0, [r1] + strh r5, [r2, #2] + strh r4, [r2] +_022F6FE8: + ldr r0, _022F7000 ; =0x0237C9AC + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrsh r0, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F6FFC: .word 0x023535AC +_022F7000: .word 0x0237C9AC +_022F7004: .word 0x020AFC68 + arm_func_end ov29_022F6F68 + + arm_func_start ov29_022F7008 +ov29_022F7008: ; 0x022F7008 + stmdb sp!, {r3, lr} + ldr r0, _022F7048 ; =0x0237C9AC + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrsh r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldr r0, _022F704C ; =0x020AFC68 + ldr r0, [r0] + bl DeleteWanTableEntryVeneer + ldr r0, _022F7048 ; =0x0237C9AC + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + strh r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F7048: .word 0x0237C9AC +_022F704C: .word 0x020AFC68 + arm_func_end ov29_022F7008 + + arm_func_start ov29_022F7050 +ov29_022F7050: ; 0x022F7050 + ldr r0, _022F7064 ; =0x0237C9AC + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrsh r0, [r0] + bx lr + .align 2, 0 +_022F7064: .word 0x0237C9AC + arm_func_end ov29_022F7050 + + arm_func_start ov29_022F7068 +ov29_022F7068: ; 0x022F7068 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + bl IsCastform + cmp r0, #0 + beq _022F70B4 + ldr r0, _022F70F4 ; =0x0000017B + bl GetSpriteFileSize + add r4, r4, r0 + mov r0, #0x17c + bl GetSpriteFileSize + add r4, r4, r0 + ldr r0, _022F70F8 ; =0x0000017D + bl GetSpriteFileSize + add r4, r4, r0 + ldr r0, _022F70FC ; =0x0000017E + bl GetSpriteFileSize + add r4, r4, r0 + b _022F70EC +_022F70B4: + mov r0, r5 + bl IsCherrim + cmp r0, #0 + beq _022F70E0 + mov r0, #0x1cc + bl GetSpriteFileSize + add r4, r4, r0 + ldr r0, _022F7100 ; =0x000001CD + bl GetSpriteFileSize + add r4, r4, r0 + b _022F70EC +_022F70E0: + mov r0, r5 + bl GetSpriteFileSize + add r4, r4, r0 +_022F70EC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F70F4: .word 0x0000017B +_022F70F8: .word 0x0000017D +_022F70FC: .word 0x0000017E +_022F7100: .word 0x000001CD + arm_func_end ov29_022F7068 + + arm_func_start ov29_022F7104 +ov29_022F7104: ; 0x022F7104 + ldr r1, _022F712C ; =0x02353538 + mov r3, #0x400 + ldr r0, [r1] + mov r2, #0xa + add r0, r0, #0x3000 + str r3, [r0, #0xe2c] + ldr r0, [r1] + add r0, r0, #0x3000 + str r2, [r0, #0xe30] + bx lr + .align 2, 0 +_022F712C: .word 0x02353538 + arm_func_end ov29_022F7104 + + arm_func_start ov29_022F7130 +ov29_022F7130: ; 0x022F7130 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _022F72F8 ; =0x02353538 + mov r2, #0 + ldr r0, [r0] + mov r3, r2 + add r0, r0, #0x114 + add r4, r0, #0x19800 + ldr r0, _022F72FC ; =0x00000483 +_022F7150: + mov r1, r2, lsl #1 + add r2, r2, #1 + strh r3, [r4, r1] + cmp r2, r0 + blt _022F7150 + ldr r1, _022F72F8 ; =0x02353538 + ldr r0, _022F7300 ; =0x00000229 + ldr r2, [r1] + mov r1, #1 + add r2, r2, #0x2c000 + str r3, [r2, #0xb0c] + bl LoadMonsterSprite + mov r6, #0 + mov r5, #1 + ldr r4, _022F72F8 ; =0x02353538 + b _022F71AC +_022F7190: + add r0, r1, #0x174 + add r0, r0, #0x3800 + add r0, r0, r6, lsl #3 + bl GetMonsterIdFromSpawnEntry + mov r1, r5 + bl LoadMonsterSprite + add r6, r6, #1 +_022F71AC: + ldr r1, [r4] + add r0, r1, #0x3000 + ldr r0, [r0, #0xe20] + cmp r6, r0 + blt _022F7190 + bl LoadMissionMonsterSprites + ldr r0, _022F72F8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r1, [r0, #0xa8] + cmp r1, #0 + beq _022F71E8 + ldrsh r0, [r0, #0xa8] + mov r1, #1 + bl LoadMonsterSprite +_022F71E8: + mov sb, #0 + mov r8, #1 + ldr fp, _022F7304 ; =0x00000217 + mov r7, sb + mov r5, sb + mov r6, r8 + mov r4, sb +_022F7204: + mov r0, sb + bl GetActiveTeamMember + mov sl, r0 + ldrb r0, [sl] + tst r0, #1 + movne r1, r8 + moveq r1, r7 + tst r1, #0xff + beq _022F7278 + tst r0, #2 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _022F7278 + ldrsh r0, [sl, #0xc] + bl IsShaymin + cmp r0, #0 + beq _022F726C + mov r0, r4 + bl ov29_0231B4AC + cmp r0, #0 + beq _022F726C + mov r0, fp + mov r1, #0 + bl LoadMonsterSprite + b _022F7278 +_022F726C: + ldrsh r0, [sl, #0xc] + mov r1, #0 + bl LoadMonsterSprite +_022F7278: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 + blt _022F7204 + ldr r0, _022F72F8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0x6e + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r7, #0 + mov r6, #1 + mov r5, r7 + mov r4, r6 +_022F72B4: + mov r0, r7 + bl GetExplorerMazeMonster + ldrb r1, [r0] + tst r1, #1 + movne r1, r6 + moveq r1, r5 + tst r1, #0xff + beq _022F72E0 + ldrsh r0, [r0, #4] + mov r1, r4 + bl LoadMonsterSprite +_022F72E0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022F72B4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F72F8: .word 0x02353538 +_022F72FC: .word 0x00000483 +_022F7300: .word 0x00000229 +_022F7304: .word 0x00000217 + arm_func_end ov29_022F7130 + + arm_func_start ov29_022F7308 +ov29_022F7308: ; 0x022F7308 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, #0 + ldr r4, _022F7360 ; =0x02353538 + mov r5, r6 +_022F7318: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + cmp r7, #0 + beq _022F7350 + mov r0, r7 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F7350 + ldr r0, [r7, #0xb4] + mov r1, r5 + ldrsh r0, [r0, #4] + bl LoadMonsterSprite +_022F7350: + add r6, r6, #1 + cmp r6, #0x14 + blt _022F7318 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F7360: .word 0x02353538 + arm_func_end ov29_022F7308 diff --git a/asm/overlay_29_022F7388.s b/asm/overlay_29_022F7388.s new file mode 100644 index 00000000..d5ae2113 --- /dev/null +++ b/asm/overlay_29_022F7388.s @@ -0,0 +1,6395 @@ + .include "asm/macros.inc" + .include "overlay_29_022F7388.inc" + + .text + + arm_func_start GetSpriteIndex__022F7388 +GetSpriteIndex__022F7388: ; 0x022F7388 + ldr r2, _022F73A0 ; =0x02353538 + ldr r1, _022F73A4 ; =0x00019914 + ldr r2, [r2] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_022F73A0: .word 0x02353538 +_022F73A4: .word 0x00019914 + arm_func_end GetSpriteIndex__022F7388 + + arm_func_start JoinedAtRangeCheck2Veneer +JoinedAtRangeCheck2Veneer: ; 0x022F73A8 + ldr ip, _022F73B0 ; =JoinedAtRangeCheck2 + bx ip + .align 2, 0 +_022F73B0: .word JoinedAtRangeCheck2 + arm_func_end JoinedAtRangeCheck2Veneer + + arm_func_start FloorNumberIsEven +FloorNumberIsEven: ; 0x022F73B4 + ldr r0, _022F73E8 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x748] + cmp r0, #0x5b + ldreqb r0, [r1, #0x749] + cmpeq r0, #0xa + moveq r0, #0 + bxeq lr + ldrb r0, [r1, #0x749] + tst r0, #1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_022F73E8: .word 0x02353538 + arm_func_end FloorNumberIsEven + + arm_func_start GetKecleonIdToSpawnByFloor +GetKecleonIdToSpawnByFloor: ; 0x022F73EC + stmdb sp!, {r3, lr} + bl FloorNumberIsEven + cmp r0, #0 + ldrne r0, _022F7404 ; =0x000003D7 + ldreq r0, _022F7408 ; =0x0000017F + ldmia sp!, {r3, pc} + .align 2, 0 +_022F7404: .word 0x000003D7 +_022F7408: .word 0x0000017F + arm_func_end GetKecleonIdToSpawnByFloor + + arm_func_start ov29_022F740C +ov29_022F740C: ; 0x022F740C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _022F74D0 ; =0x02353538 + mov r7, r0 + ldr r2, [r2] + mov r6, r1 + add r1, r2, #0x114 + add r5, r1, #0x19800 + bl GetSpriteIndex__020526EC + mov r4, r0 + mov r1, r7, lsl #1 + mov r0, r7 + strh r6, [r5, r1] + bl GetMonsterGender + cmp r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r7, #0x258 + bge _022F7490 + add r6, r7, #0x258 + mov r1, r6, lsl #0x10 + mov r0, r7 + mov r1, r1, asr #0x10 + bl GendersEqualNotGenderless + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetSpriteIndex__020526EC + cmp r4, r0 + moveq r0, r7, lsl #1 + ldreqsh r1, [r5, r0] + moveq r0, r6, lsl #1 + streqh r1, [r5, r0] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022F7490: + sub r6, r7, #0x258 + mov r1, r6, lsl #0x10 + mov r0, r7 + mov r1, r1, asr #0x10 + bl GendersEqualNotGenderless + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetSpriteIndex__020526EC + cmp r4, r0 + moveq r0, r7, lsl #1 + ldreqsh r1, [r5, r0] + moveq r0, r6, lsl #1 + streqh r1, [r5, r0] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F74D0: .word 0x02353538 + arm_func_end ov29_022F740C + + arm_func_start ov29_022F74D4 +ov29_022F74D4: ; 0x022F74D4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _022F75C4 ; =0x02353538 + mov r6, r0 + ldr r2, [r1] + ldr r1, _022F75C8 ; =0x00019914 + add r2, r2, r6, lsl #1 + ldrsh r1, [r2, r1] + cmp r1, #0 + bne _022F75BC + bl GetSpriteIndex__020526EC + mov r4, r0 + mov r0, r6 + bl IsShaymin + cmp r0, #0 + beq _022F756C + mov r0, r6 + bl IsShaymin + cmp r0, #0 + mov r0, r6 + movne r5, #0 + bl GetSpriteFileSize + mov r1, #0 + bl MemAlloc + ldr r2, _022F75CC ; =0x0237C9B0 + mov r1, #1 + str r0, [r2, r5, lsl #2] + str r1, [sp] + ldr r0, _022F75D0 ; =0x020AFC68 + ldr r3, [r2, r5, lsl #2] + ldr r0, [r0] + mov r2, r4 + mov r1, #0 + bl sub_0201D590 + mov r1, r0 + mov r0, r6 + bl ov29_022F740C + b _022F7598 +_022F756C: + mov r1, #1 + ldr r0, _022F75D0 ; =0x020AFC68 + str r1, [sp] + mov r1, #0 + ldr r0, [r0] + mov r2, r4 + mov r3, r1 + bl sub_0201D484 + mov r1, r0 + mov r0, r6 + bl ov29_022F740C +_022F7598: + mov r1, r4 + mov r0, #0 + bl GetFileLengthInPackWithPackNb + ldr r1, _022F75C4 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x2c000 + ldr r2, [r1, #0xb0c] + add r0, r2, r0 + str r0, [r1, #0xb0c] +_022F75BC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022F75C4: .word 0x02353538 +_022F75C8: .word 0x00019914 +_022F75CC: .word 0x0237C9B0 +_022F75D0: .word 0x020AFC68 + arm_func_end ov29_022F74D4 + + arm_func_start ov29_022F75D4 +ov29_022F75D4: ; 0x022F75D4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r2, _022F764C ; =0x02353538 + mov r5, r1 + ldr r1, [r2] + mov r6, r0 + add r1, r1, #0x114 + mov r0, r5 + add r4, r1, #0x19800 + bl GetSpriteIndex__020526EC + mov r1, #1 + str r1, [sp] + mov r1, r6, lsl #1 + ldr r2, _022F7650 ; =0x020AFC68 + mov r3, r0 + ldrsh r1, [r4, r1] + ldr r0, [r2] + mov r2, #0 + bl ReplaceWanFromBinFile + mov r1, r0 + mov r0, r5 + bl ov29_022F740C + mov r3, r6, lsl #1 + ldrsh r2, [r4, r3] + mov r1, r5, lsl #1 + mov r0, #0 + strh r2, [r4, r1] + strh r0, [r4, r3] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022F764C: .word 0x02353538 +_022F7650: .word 0x020AFC68 + arm_func_end ov29_022F75D4 + + arm_func_start LoadMonsterSprite +LoadMonsterSprite: ; 0x022F7654 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + bne _022F769C + ldr r0, _022F7748 ; =0xFFFFFE5E + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + bhi _022F769C + ldr r0, _022F774C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3e00 + ldrsh r0, [r0, #0x3a] + bl ov29_022F74D4 + ldmia sp!, {r4, pc} +_022F769C: + mov r0, r4 + bl ov29_022F74D4 + ldr r1, _022F7750 ; =0x0000017B + cmp r4, r1 + cmpne r4, #0x17c + addne r0, r1, #2 + cmpne r4, r0 + addne r0, r1, #3 + cmpne r4, r0 + beq _022F76E4 + ldr r0, _022F7754 ; =0xFFFFFC2D + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + bhi _022F7704 +_022F76E4: + ldr r0, _022F7750 ; =0x0000017B + bl ov29_022F74D4 + mov r0, #0x17c + bl ov29_022F74D4 + ldr r0, _022F7758 ; =0x0000017D + bl ov29_022F74D4 + ldr r0, _022F775C ; =0x0000017E + bl ov29_022F74D4 +_022F7704: + cmp r4, #0x1cc + ldrne r0, _022F7760 ; =0x000001CD + cmpne r4, r0 + beq _022F7734 + ldr r0, _022F7764 ; =0xFFFFFBDC + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + ldmhiia sp!, {r4, pc} +_022F7734: + mov r0, #0x1cc + bl ov29_022F74D4 + ldr r0, _022F7760 ; =0x000001CD + bl ov29_022F74D4 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F7748: .word 0xFFFFFE5E +_022F774C: .word 0x02353538 +_022F7750: .word 0x0000017B +_022F7754: .word 0xFFFFFC2D +_022F7758: .word 0x0000017D +_022F775C: .word 0x0000017E +_022F7760: .word 0x000001CD +_022F7764: .word 0xFFFFFBDC + arm_func_end LoadMonsterSprite + + arm_func_start ov29_022F7768 +ov29_022F7768: ; 0x022F7768 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022F77F4 ; =0x02353538 + mov r5, r0 + ldr r1, [r1] + ldr r0, _022F77F8 ; =0x00019914 + add r1, r1, r5, lsl #1 + ldrsh r1, [r1, r0] + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _022F77FC ; =0x020AFC68 + ldr r0, [r0] + bl DeleteWanTableEntryVeneer + ldr r0, _022F77F4 ; =0x02353538 + ldr r1, _022F77F8 ; =0x00019914 + ldr r2, [r0] + mov r3, #0 + add r2, r2, r5, lsl #1 + mov r0, r5 + strh r3, [r2, r1] + bl IsShaymin + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl IsShaymin + cmp r0, #0 + ldr r0, _022F7800 ; =0x0237C9B0 + movne r4, #0 + ldr r0, [r0, r4, lsl #2] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl MemFree + ldr r0, _022F7800 ; =0x0237C9B0 + mov r1, #0 + str r1, [r0, r4, lsl #2] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F77F4: .word 0x02353538 +_022F77F8: .word 0x00019914 +_022F77FC: .word 0x020AFC68 +_022F7800: .word 0x0237C9B0 + arm_func_end ov29_022F7768 + + arm_func_start ov29_022F7804 +ov29_022F7804: ; 0x022F7804 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, _022F7830 ; =0x00000483 + mov r5, #0 +_022F7810: + mov r0, r5 + bl ov29_022F7768 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + cmp r4, r0, asr #16 + mov r5, r0, asr #0x10 + bgt _022F7810 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F7830: .word 0x00000483 + arm_func_end ov29_022F7804 + + arm_func_start ov29_022F7834 +ov29_022F7834: ; 0x022F7834 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, #0 + mov r5, r0 + mov r8, r4 + mov r6, r4 + mov r7, #1 +_022F784C: + mov r0, r8 + bl GetActiveTeamMember + ldrb r0, [r0] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + addne r4, r4, #1 + cmp r8, #4 + blt _022F784C + cmp r4, #4 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r7, #0 + mov r8, r7 + mov r4, r7 + mov r6, #1 +_022F78A8: + mov r0, r8 + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r1, r6 + moveq r1, r4 + tst r1, #0xff + beq _022F78D4 + ldrsh r0, [r0, #0xc] + bl GetBodySize + add r7, r7, r0 +_022F78D4: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022F78A8 + ldrsh r0, [r5, #4] + bl GetBodySize + add r0, r7, r0 + cmp r0, #6 + movgt r0, #1 + movle r0, #0 + tst r0, #0xff + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_022F7834 + + arm_func_start ov29_022F7910 +ov29_022F7910: ; 0x022F7910 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x54 + mov sl, r0 + ldrb r0, [sl] + mov r5, #0 + tst r0, #1 + movne r0, #1 + moveq r0, r5 + tst r0, #0xff + ldrnesh r0, [sl, #4] + cmpne r0, #0 + moveq r0, #0 + beq _022F7BCC + ldrb r0, [sl, #2] + cmp r0, #0xfa + movne r0, #0 + bne _022F7BCC + b _022F7AA4 +_022F7958: + mov r0, sl + bl ov29_022F7834 + cmp r0, #0 + beq _022F7AA0 + ldrsh r1, [sl, #4] + mov r0, #0 + bl ov29_0234B06C + ldr r1, _022F7BD4 ; =0x00000C0D + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov sb, #0 + mov r7, sb + bl StoryRestrictionsEnabled + cmp r0, #0 + movne sb, #1 + mov r8, #0 + mov fp, #1 + add r4, sp, #0x44 +_022F79A4: + mov r0, r8 + bl GetActiveTeamMember + mov r6, r0 + ldrb r0, [r6] + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _022F7A14 + ldrb r0, [r6, #1] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _022F7A14 + cmp sb, #0 + beq _022F7A0C + ldrb r0, [r6, #3] + cmp r0, #0xd6 + moveq r1, #1 + movne r1, #0 + tst r1, #0xff + bne _022F7A14 + bl JoinedAtRangeCheck2 + cmp r0, #0 + bne _022F7A14 +_022F7A0C: + str r6, [r4, r7, lsl #2] + add r7, r7, #1 +_022F7A14: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022F79A4 + cmp r7, #0 + beq _022F7AAC + add r0, sp, #0x44 + mov r1, r7 + bl ov29_0234EF24 + movs r4, r0 + beq _022F7AA4 + add r0, sp, #4 + mov r1, r4 + bl sub_020585B4 + add r1, sp, #4 + mov r0, #1 + bl ov29_0234B0B4 + mov r0, #0 + mov r3, #1 + ldr r1, _022F7BD8 ; =0x00000C0E + mov r2, r0 + str r3, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _022F7AA4 + ldr r1, _022F7BDC ; =0x00000C0F + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldrsh r0, [r4, #8] + bl sub_020566C4 + mov r0, #0 + strb r0, [r4] + b _022F7AA4 +_022F7AA0: + mov r5, #1 +_022F7AA4: + cmp r5, #0 + beq _022F7958 +_022F7AAC: + cmp r5, #0 + bne _022F7AD8 + ldrsh r1, [sl, #4] + mov r0, #0 + bl ov29_0234B06C + ldr r1, _022F7BE0 ; =0x00000C0C + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + b _022F7BCC +_022F7AD8: + mov r4, #0 + mov r6, r4 + mov r7, #1 + b _022F7BA4 +_022F7AE8: + mov r0, r4 + bl GetActiveTeamMember + mov r5, r0 + ldrb r0, [r5] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + bne _022F7B98 + ldr r2, _022F7BE4 ; =0x000055AA + mov r0, r5 + mov r1, sl + mov r3, r4 + bl sub_02053250 + ldr r0, _022F7BE8 ; =0x020B0A48 + mov r1, r4, lsl #1 + ldr r0, [r0] + mvn r3, #0 + add r0, r0, #0x9000 + ldr r2, [r0, #0x870] + ldr r0, _022F7BEC ; =0x020A1C7C + strh r3, [r2, r1] + ldrb r2, [r5] + ldr r1, [r0, #0x20] + orr r0, r2, #1 + strb r0, [r5] + ldrsh r0, [r5, #6] + cmp r0, r1 + bge _022F7B70 + strh r1, [r5, #6] + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #6] + add r0, r5, #0x4c + bl sub_02058EB0 +_022F7B70: + ldrb r1, [r5] + add r0, r5, #0x3e + orr r1, r1, #2 + strb r1, [r5] + strh r4, [r5, #0xa] + bl ItemZInit + ldrsh r1, [sl, #4] + mov r0, #0 + bl ov29_0234B06C + b _022F7BAC +_022F7B98: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_022F7BA4: + cmp r4, #4 + blt _022F7AE8 +_022F7BAC: + ldrsh r1, [sl, #4] + mov r0, #0 + bl ov29_0234B06C + ldr r1, _022F7BF0 ; =0x00000C12 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #1 +_022F7BCC: + add sp, sp, #0x54 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F7BD4: .word 0x00000C0D +_022F7BD8: .word 0x00000C0E +_022F7BDC: .word 0x00000C0F +_022F7BE0: .word 0x00000C0C +_022F7BE4: .word 0x000055AA +_022F7BE8: .word 0x020B0A48 +_022F7BEC: .word 0x020A1C7C +_022F7BF0: .word 0x00000C12 + arm_func_end ov29_022F7910 + + arm_func_start ov29_022F7BF4 +ov29_022F7BF4: ; 0x022F7BF4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + ldrb r0, [r6] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrnesh r0, [r6, #4] + cmpne r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, _022F7E18 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsRecruitingAllowed + cmp r0, #0 + ldrne r0, _022F7E18 ; =0x02353538 + ldrne r0, [r0] + ldrneb r0, [r0, #0x759] + cmpne r0, #0 + bne _022F7C7C + ldrb r0, [r6, #2] + cmp r0, #0xd9 + blo _022F7C5C + cmp r0, #0xe4 + blo _022F7C7C +_022F7C5C: + ldrsh r1, [r6, #4] + mov r0, #0 + bl ov29_0234B06C + ldr r1, _022F7E1C ; =0x00000C0B + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F7E10 +_022F7C7C: + mov r0, r6 + bl ov29_022F7834 + cmp r0, #0 + beq _022F7CD4 + ldrsh r1, [r6, #4] + mov r0, #0 + bl ov29_0234B06C + ldrb r0, [r6, #2] + cmp r0, #0xd9 + blo _022F7CC0 + cmp r0, #0xe4 + bhs _022F7CC0 + mov r0, #0 + mov r1, #0xc10 + mov r2, #1 + bl DisplayMessage2 + b _022F7E10 +_022F7CC0: + ldr r1, _022F7E20 ; =0x00000C0A + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F7E10 +_022F7CD4: + mov r4, #0 + mov r7, r4 + mov r8, #1 + b _022F7DC4 +_022F7CE4: + mov r0, r4 + bl GetActiveTeamMember + mov r5, r0 + ldrb r0, [r5] + tst r0, #1 + movne r0, r8 + moveq r0, r7 + tst r0, #0xff + bne _022F7DB8 + ldr r2, _022F7E24 ; =0x000055AA + mov r0, r5 + mov r1, r6 + mov r3, r4 + bl sub_02053250 + ldr r0, _022F7E28 ; =0x020B0A48 + mov r1, r4, lsl #1 + ldr r0, [r0] + mvn r3, #0 + add r0, r0, #0x9000 + ldr r2, [r0, #0x870] + ldr r0, _022F7E2C ; =0x020A1C7C + strh r3, [r2, r1] + ldrb r2, [r5] + ldr r1, [r0, #0x20] + orr r0, r2, #1 + strb r0, [r5] + ldrsh r0, [r5, #6] + cmp r0, r1 + bge _022F7D6C + strh r1, [r5, #6] + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #6] + add r0, r5, #0x4c + bl sub_02058EB0 +_022F7D6C: + ldrb r1, [r5] + add r0, r5, #0x3e + orr r1, r1, #2 + strb r1, [r5] + strh r4, [r5, #0xa] + bl ItemZInit + ldrsh r1, [r6, #4] + mov r0, #0 + bl ov29_0234B06C + ldrb r0, [r6, #2] + cmp r0, #0xd9 + blo _022F7DA4 + cmp r0, #0xe4 + blo _022F7E10 +_022F7DA4: + ldr r1, _022F7E30 ; =0x00000C11 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _022F7E10 +_022F7DB8: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_022F7DC4: + cmp r4, #4 + blt _022F7CE4 + ldrsh r1, [r6, #4] + mov r0, #0 + bl ov29_0234B06C + ldrb r0, [r6, #2] + cmp r0, #0xd9 + blo _022F7E00 + cmp r0, #0xe4 + bhs _022F7E00 + mov r0, #0 + mov r1, #0xc10 + mov r2, #1 + bl DisplayMessage2 + b _022F7E10 +_022F7E00: + ldr r1, _022F7E20 ; =0x00000C0A + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 +_022F7E10: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F7E18: .word 0x02353538 +_022F7E1C: .word 0x00000C0B +_022F7E20: .word 0x00000C0A +_022F7E24: .word 0x000055AA +_022F7E28: .word 0x020B0A48 +_022F7E2C: .word 0x020A1C7C +_022F7E30: .word 0x00000C11 + arm_func_end ov29_022F7BF4 + + arm_func_start ov29_022F7E34 +ov29_022F7E34: ; 0x022F7E34 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, #0 + mov r6, r8 + mov r7, #1 + mov r4, r8 + mov r5, r8 +_022F7E4C: + mov r0, r8 + bl GetActiveTeamMember + mov sb, r0 + ldrb r0, [sb] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _022F7E94 + ldrsh r0, [sb, #8] + bl sub_02056264 + cmp r0, #0 + strneb r5, [sb] + bne _022F7E94 + ldrsh r0, [sb, #8] + bl CheckTeamMemberIdx__02056228 + cmp r0, #0 + strneb r4, [sb] +_022F7E94: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022F7E4C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022F7E34 + + arm_func_start ov29_022F7EAC +ov29_022F7EAC: ; 0x022F7EAC + stmdb sp!, {r3, r4, r5, lr} + bl GetLeader + ldr r1, _022F7F04 ; =0x02353538 + mov r2, #0 + ldr r5, [r1] + movs r4, r0 + strb r2, [r5, #0x78b] + strb r2, [r5, #0x78c] + strb r2, [r5, #0x78e] + str r2, [r5, #0xcc] + ldmeqia sp!, {r3, r4, r5, pc} + bl GetTileAtEntity + ldrh r0, [r0] + tst r0, #0x20 + movne r0, #1 + moveq r0, #0 + strb r0, [r5, #0x7c8] + and r1, r0, #0xff + add r0, r4, #4 + strb r1, [r5, #0x7c9] + bl ov29_02337A3C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F7F04: .word 0x02353538 + arm_func_end ov29_022F7EAC + + arm_func_start ov29_022F7F08 +ov29_022F7F08: ; 0x022F7F08 + stmdb sp!, {r3, lr} + ldrb r0, [r0, #7] + cmp r0, #0 + beq _022F7F28 + bl GetForcedLossReason + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_022F7F28: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F7F08 + + arm_func_start HandleFaint +HandleFaint: ; 0x022F7F30 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xbc + mov sl, r0 + mov r8, r2 + mov sb, r1 + ldr r7, [sl, #0xb4] + bl GetTileAtEntity + mov r4, r0 + cmp r8, #0 + bne _022F7F64 + add r0, sp, #4 + bl ov29_022E2470 + add r8, sp, #4 +_022F7F64: + ldr r0, [r4, #0xc] + cmp r0, sl + moveq r0, #0 + streq r0, [r4, #0xc] + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + bl ov29_023391EC + mov r5, #0 + ldr fp, _022F85D0 ; =0x02353538 + mov r4, r5 +_022F7F8C: + ldr r0, [fp] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + cmp r6, #0 + beq _022F7FC4 + mov r0, r6 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F7FC4 + ldr r1, [r6, #0xb4] + ldr r0, [r1, #0x84] + cmp r0, sl + streq r4, [r1, #0x84] +_022F7FC4: + add r5, r5, #1 + cmp r5, #0x14 + blt _022F7F8C + ldrb r0, [r7, #0xd8] + cmp r0, #2 + ldreq r0, _022F85D0 ; =0x02353538 + moveq r1, #0 + ldreq r0, [r0] + addeq r0, r0, #0x3000 + streqb r1, [r0, #0xe38] + ldrb r0, [r7, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _022F8008 + ldr r0, [r7, #0xb4] + bl FreeOtherWrappedMonsters +_022F8008: + mov r0, sl + bl ov29_023159D4 + mov r1, #0 + strb r1, [sl, #0x22] + ldr r0, _022F85D4 ; =0x0235355C + strb r1, [sl, #0x20] + str r1, [r0] + ldrb r0, [r7, #7] + cmp r0, #0 + bne _022F8098 + ldrb r0, [r7, #0x48] + bl JoinedAtRangeCheck2 + cmp r0, #0 + beq _022F8098 + bl StoryRestrictionsEnabled + cmp r0, #0 + beq _022F8098 + mov r0, #1 + bl SetForcedLossReason + mov r2, #0 + ldr r0, _022F85D0 ; =0x02353538 + strh r2, [r7, #0x10] + ldr r0, [r0] + mov r1, sl + add r0, r0, #0x248 + add r0, r0, #0x400 + bl ov29_022E2A78 + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75f] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r7, #0x165] + bl ov29_022E8104 + bl ov29_022E81F8 + b _022F85C8 +_022F8098: + ldrb r0, [r7, #7] + cmp r0, #0 + beq _022F83B4 + mov r0, #0 + bl ov29_0234B1A4 + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75f] + cmp r0, #0 + bne _022F80F4 + bl GetForcedLossReason + cmp r0, #1 + mov r0, #1 + streqb r0, [sl, #0x20] + strneb r0, [r7, #0x165] + bl ov29_022E8104 + bl ov29_022E81F8 + mov r0, #0x3c + mov r1, #0x49 + bl ov29_022EA370 + mov r0, #0 + mov r1, r0 + bl OpenMessageLog +_022F80F4: + ldr r1, _022F85D0 ; =0x02353538 + ldr r2, [r1] + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _022F825C + mov r4, #0 + bl IsOutlawOrChallengeRequestFloor + cmp r0, #0 + bne _022F8234 + bl GetForcedLossReason + cmp r0, #4 + beq _022F8234 + ldr r0, _022F85D0 ; =0x02353538 + ldr r2, [r0] + ldrb r0, [r2, #0x790] + cmp r0, #0 + bne _022F8234 + ldr r1, _022F85D8 ; =0x0000025B + cmp sb, r1 + addne r0, r1, #6 + cmpne sb, r0 + addne r0, r1, #0xb + cmpne sb, r0 + addne r0, r1, #2 + cmpne sb, r0 + beq _022F8234 + add r0, r2, #0x4000 + ldrb r0, [r0, #0xca] + cmp r0, #0 + bne _022F8234 + add r0, r2, #0x700 + ldrsb r2, [r0, #0x9b] + cmp r2, #0 + blt _022F8234 + ldrsb r0, [r0, #0x98] + cmp r0, #3 + cmpne r0, #2 + beq _022F8234 + cmp r2, #0 + ble _022F8220 + mov r0, r4 + mov r3, #1 + ldr r1, _022F85DC ; =0x00000C13 + mov r2, r0 + str r3, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _022F8208 + ldr r1, _022F85E0 ; =0x00000C14 + mov r0, r4 + mov r2, #1 + bl DisplayMessage + ldr r1, _022F85D0 ; =0x02353538 + mov r0, #1 + ldr r2, [r1] + strb r0, [r2, #8] + ldr r2, [r1] + strb r0, [r2, #0xa] + ldr r2, [r1] + strb r0, [r2, #0x758] + ldr r2, [r1] + add r1, r2, #0x700 + ldrsb r1, [r1, #0x9b] + sub r1, r1, #1 + strb r1, [r2, #0x79b] + bl ov29_0234B010 + bl ov29_022E8104 + bl ov29_022E81F8 + b _022F85C8 +_022F8208: + cmp r0, #2 + bne _022F8240 + mov r0, r7 + bl ov29_022F7F08 + mov r4, r0 + b _022F8240 +_022F8220: + rsb r1, r1, #0xe70 + mov r0, r4 + mov r2, #1 + bl DisplayMessage2 + b _022F8240 +_022F8234: + mov r0, r7 + bl ov29_022F7F08 + mov r4, r0 +_022F8240: + mov r0, #1 + bl ov29_0234B010 + cmp r4, #0 + beq _022F8284 + mov r0, sl + bl ov29_022E68BC + b _022F8284 +_022F825C: + mov r0, #1 + strb r0, [r2, #8] + ldr r2, [r1] + strb r0, [r2, #0xa] + ldr r1, [r1] + strb r0, [r1, #0x758] + bl ov29_0234B010 + bl ov29_022E8104 + bl ov29_022E81F8 + b _022F85C8 +_022F8284: + ldr r0, _022F85E4 ; =0x00000266 + cmp sb, r0 + bne _022F82B4 + ldr r1, _022F85D0 ; =0x02353538 + mov r0, sb + ldr r2, [r1] + mov r1, r8 + add r3, r2, #0x248 + mov r2, sl + add r3, r3, #0x400 + bl ov29_022ECDE4 + b _022F82C8 +_022F82B4: + mov r0, sb + mov r1, r8 + mov r2, sl + mov r3, #0 + bl ov29_022ECDE4 +_022F82C8: + ldr r0, _022F85E8 ; =0x0000025E + cmp sb, r0 + bne _022F83B4 + mov r5, #0 + mov r4, r5 + ldr r6, _022F85D0 ; =0x02353538 + b _022F8328 +_022F82E4: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb28] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F8324 + ldr r5, [r8, #0xb4] + ldrsh r0, [r5, #0x10] + cmp r0, #0 + bne _022F8324 + ldrb r0, [r5, #0x48] + bl JoinedAtRangeCheck2 + cmp r0, #0 + bne _022F8330 +_022F8324: + add r4, r4, #1 +_022F8328: + cmp r4, #4 + blt _022F82E4 +_022F8330: + cmp r5, #0 + beq _022F83B4 + ldrsh r0, [r5, #0xc] + bl GetActiveTeamMember + mov r4, r0 + ldrsh r0, [r5, #0xc] + mov r1, r5 + bl ov29_022FE048 + ldrsh r0, [r4, #8] + bl IsMonsterIdInNormalRange__02056294 + cmp r0, #0 + beq _022F83A8 + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsLevelResetDungeon + cmp r0, #0 + bne _022F83A8 + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r0, [r0, #0x98] + cmp r0, #3 + beq _022F83A8 + ldrsh r0, [r5, #0xc] + mvn r1, #0 + bl sub_02058674 + ldrsh r0, [r4, #8] + mov r1, r4 + bl sub_0205349C +_022F83A8: + ldrb r0, [r4] + orr r0, r0, #8 + strb r0, [r4] +_022F83B4: + mov r0, sl + mov r1, #1 + bl ov29_022E1C0C + ldrb r0, [r7, #6] + cmp r0, #0 + ldrne r0, _022F85D8 ; =0x0000025B + cmpne sb, r0 + beq _022F83F4 + ldrb r0, [r7, #0xbc] + bl ov29_022EFAE8 + cmp r0, #0 + beq _022F83F4 + mov r0, #1 + bl SetMissionTargetEnemyDefeated + mov r0, #1 + bl ov29_02349688 +_022F83F4: + ldrb r0, [r7, #0x48] + cmp r0, #0xfa + bne _022F8428 + mov r0, #2 + bl SetForcedLossReason + ldr r0, _022F85D0 ; =0x02353538 + mov r1, sl + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x248 + add r0, r0, #0x400 + bl ov29_022E2A78 + b _022F8460 +_022F8428: + cmp r0, #0xe3 + beq _022F8460 + bl JoinedAtRangeCheck + cmp r0, #0 + beq _022F8460 + mov r0, #3 + bl SetForcedLossReason + ldr r0, _022F85D0 ; =0x02353538 + mov r1, sl + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x248 + add r0, r0, #0x400 + bl ov29_022E2A78 +_022F8460: + bl GetLeader + cmp r0, #0 + ldrne r0, _022F85D8 ; =0x0000025B + cmpne sb, r0 + beq _022F84AC + ldrb r0, [r7, #7] + cmp r0, #0 + bne _022F84AC + bl GetForcedLossReason + cmp r0, #0 + bne _022F84AC + ldr r0, _022F85EC ; =0x00000233 + ldrb r1, [r7, #0xbc] + cmp sb, r0 + moveq r2, #1 + movne r2, #0 + mov r0, sl + and r2, r2, #0xff + bl ov29_022EF7C4 +_022F84AC: + ldrb r0, [r7, #6] + cmp r0, #0 + bne _022F8594 + ldrsh r0, [r7, #0xc] + bl GetActiveTeamMember + mov r4, r0 + ldrsh r0, [r7, #0xc] + mov r1, r7 + bl ov29_022FE048 + ldrsh r0, [r4, #8] + bl IsMonsterIdInNormalRange__02056294 + cmp r0, #0 + beq _022F856C + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsLevelResetDungeon + cmp r0, #0 + bne _022F8528 + ldr r0, _022F85D0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r0, [r0, #0x98] + cmp r0, #3 + beq _022F8528 + ldrsh r0, [r7, #0xc] + mvn r1, #0 + bl sub_02058674 + ldrsh r0, [r4, #8] + mov r1, r4 + bl sub_0205349C +_022F8528: + ldrb r0, [r7, #7] + mov r5, #0 + cmp r0, #0 + ldr r0, _022F85D0 ; =0x02353538 + movne r5, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x75c] + cmp r0, #0 + bne _022F855C + ldrb r0, [r7, #0x48] + bl JoinedAtRangeCheck2 + cmp r0, #0 + movne r5, #1 +_022F855C: + cmp r5, #0 + bne _022F856C + ldrsh r0, [r4, #8] + bl sub_020566C4 +_022F856C: + ldrb r0, [r7, #7] + cmp r0, #0 + ldrneb r0, [r4] + orrne r0, r0, #8 + strneb r0, [r4] + bne _022F8594 + add r0, r7, #0x62 + bl sub_0200FB54 + mov r0, #0 + strb r0, [r4] +_022F8594: + ldr r0, [r7, #0xb0] + bl ov29_022DDB68 + ldr r0, _022F85D0 ; =0x02353538 + ldr r1, _022F85D4 ; =0x0235355C + mov r2, #0 + ldr r0, [r0] + str r2, [r1] + mov r1, #1 + strb r1, [r0, #0xe] + str r2, [sl] + bl ov29_022E2978 + bl ov29_022E8104 + bl ov29_022E81F8 +_022F85C8: + add sp, sp, #0xbc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F85D0: .word 0x02353538 +_022F85D4: .word 0x0235355C +_022F85D8: .word 0x0000025B +_022F85DC: .word 0x00000C13 +_022F85E0: .word 0x00000C14 +_022F85E4: .word 0x00000266 +_022F85E8: .word 0x0000025E +_022F85EC: .word 0x00000233 + arm_func_end HandleFaint + + arm_func_start ov29_022F85F0 +ov29_022F85F0: ; 0x022F85F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov r7, r2 + mov sb, r0 + mov r0, r8 + mov r1, r7 + mov r6, r3 + bl GetTileSafe + ldr r5, [sb, #0xb4] + mov r4, r0 + ldrb r0, [r5, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _022F8634 + ldr r0, [r5, #0xb4] + bl FreeOtherWrappedMonsters +_022F8634: + ldrb r0, [r5, #0xc4] + cmp r0, #7 + cmpne r0, #5 + cmpne r0, #2 + bne _022F8658 + mov r0, sb + mov r1, sb + mov r2, #1 + bl EndFrozenClassStatus +_022F8658: + ldrsh r1, [sb, #4] + cmp r8, r1 + ldreqsh r0, [sb, #6] + cmpeq r7, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r1, #0 + ldrgesh r2, [sb, #6] + cmpge r2, #0 + blt _022F8690 + mov r0, sb + bl ov29_02337EC0 + ldrsh r0, [sb, #4] + ldrsh r1, [sb, #6] + bl ov29_023391EC +_022F8690: + ldrsh r2, [sb, #4] + mov r0, r8, lsl #0x10 + mov r1, r7, lsl #0x10 + strh r2, [sb, #8] + ldrsh r2, [sb, #6] + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + strh r2, [sb, #0xa] + strh r0, [sb, #4] + strh r1, [sb, #6] + ldrb r2, [r5, #7] + cmp r2, #0 + beq _022F86C8 + bl ov29_02338F24 +_022F86C8: + str sb, [r4, #0xc] + ldrb r0, [r5, #7] + cmp r0, #0 + beq _022F86FC + mov r0, r8, lsl #0x10 + mov r1, r7, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + bl ov29_02338F24 + ldr r0, _022F87BC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #5] +_022F86FC: + mov r0, r8 + mov r1, r7 + bl ov29_023391EC + cmp r6, #0 + beq _022F871C + cmp r6, #1 + beq _022F8768 + b _022F87A8 +_022F871C: + ldrh r0, [r5, #0x72] + strh r0, [r5, #0x76] + ldrh r0, [r5, #0x74] + strh r0, [r5, #0x78] + ldrh r0, [r5, #0x6e] + strh r0, [r5, #0x72] + ldrh r0, [r5, #0x70] + strh r0, [r5, #0x74] + ldrh r0, [r5, #0x6a] + strh r0, [r5, #0x6e] + ldrh r0, [r5, #0x6c] + strh r0, [r5, #0x70] + ldrb r0, [r5, #0xef] + cmp r0, #1 + ldrneh r0, [sb, #8] + strneh r0, [r5, #0x6a] + ldrneh r0, [sb, #0xa] + strneh r0, [r5, #0x6c] + b _022F87A8 +_022F8768: + ldrh r0, [sb, #4] + strh r0, [r5, #0x6a] + ldrh r0, [sb, #6] + strh r0, [r5, #0x6c] + ldrh r0, [r5, #0x6a] + strh r0, [r5, #0x6e] + ldrh r0, [r5, #0x6c] + strh r0, [r5, #0x70] + ldrh r0, [r5, #0x6e] + strh r0, [r5, #0x72] + ldrh r0, [r5, #0x70] + strh r0, [r5, #0x74] + ldrh r0, [r5, #0x72] + strh r0, [r5, #0x76] + ldrh r0, [r5, #0x74] + strh r0, [r5, #0x78] +_022F87A8: + ldrb r1, [r4, #7] + mov r0, sb + strb r1, [sb, #0x25] + bl ov29_02304BAC + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F87BC: .word 0x02353538 + arm_func_end ov29_022F85F0 + + arm_func_start ov29_022F87C0 +ov29_022F87C0: ; 0x022F87C0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r5, [r4, #0xb4] + ldrb r1, [r5, #0x4c] + bl CanAttackInDirection + cmp r0, #0 + beq _022F8820 + ldrb r2, [r5, #0x4c] + ldr r1, _022F8828 ; =0x0235171C + ldr r0, _022F882C ; =0x0235171E + mov ip, r2, lsl #2 + ldrsh lr, [r4, #4] + ldrsh r3, [r1, ip] + ldrsh r2, [r4, #6] + ldrsh r1, [r0, ip] + add r0, lr, r3 + add r1, r2, r1 + bl GetTile + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _022F8820 + ldr r1, [r0] + cmp r1, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_022F8820: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F8828: .word 0x0235171C +_022F882C: .word 0x0235171E + arm_func_end ov29_022F87C0 + + arm_func_start ov29_022F8830 +ov29_022F8830: ; 0x022F8830 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r5, [r4, #0xb4] + ldr r0, _022F88B8 ; =0x0235171C + ldrb r2, [r5, #0x4c] + ldrsh r3, [r4, #4] + ldr r1, _022F88BC ; =0x0235171E + mov r2, r2, lsl #2 + ldrsh r0, [r0, r2] + add r0, r3, r0 + strh r0, [sp] + ldrb r2, [r5, #0x4c] + ldrsh r3, [r4, #6] + ldrsh r0, [sp] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [sp, #2] + ldrsh r1, [sp, #2] + bl GetTile + mov r5, r0 + add r1, sp, #0 + mov r0, r4 + bl ov29_022FFB90 + cmp r0, #0 + bne _022F88B0 + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _022F88B0 + ldr r1, [r0] + cmp r1, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_022F88B0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F88B8: .word 0x0235171C +_022F88BC: .word 0x0235171E + arm_func_end ov29_022F8830 + + arm_func_start ov29_022F88C0 +ov29_022F88C0: ; 0x022F88C0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldr r0, _022F89A4 ; =0x0235171C + ldrb r2, [r4, #0x4c] + ldrsh r3, [r5, #4] + ldr r1, _022F89A8 ; =0x0235171E + mov r2, r2, lsl #2 + ldrsh r0, [r0, r2] + add r0, r3, r0 + strh r0, [sp] + ldrb r2, [r4, #0x4c] + ldrsh r3, [r5, #6] + ldrsh r0, [sp] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [sp, #2] + ldrsh r1, [sp, #2] + bl GetTile + add r1, sp, #0 + mov r0, r5 + bl ov29_022FFB90 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #0x4c] + ldr r0, _022F89A4 ; =0x0235171C + ldrsh r2, [r5, #4] + mov r1, r1, lsl #2 + ldrsh r0, [r0, r1] + ldr r1, _022F89A8 ; =0x0235171E + add r0, r2, r0, lsl #1 + strh r0, [sp] + ldrb r2, [r4, #0x4c] + ldrsh r3, [r5, #6] + ldrsh r0, [sp] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1, lsl #1 + strh r1, [sp, #2] + ldrsh r1, [sp, #2] + bl GetTile + mov r4, r0 + add r1, sp, #0 + mov r0, r5 + bl ov29_022FFB90 + cmp r0, #0 + bne _022F899C + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _022F899C + ldr r1, [r0] + cmp r1, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_022F899C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F89A4: .word 0x0235171C +_022F89A8: .word 0x0235171E + arm_func_end ov29_022F88C0 + + arm_func_start ov29_022F89AC +ov29_022F89AC: ; 0x022F89AC + stmdb sp!, {r3, lr} + mov r1, r0 + add r0, sp, #0 + bl ov29_022F8FF8 + ldrsh r0, [sp] + ldrsh r1, [sp, #2] + bl GetTile + ldmia sp!, {r3, pc} + arm_func_end ov29_022F89AC + + arm_func_start ov29_022F89CC +ov29_022F89CC: ; 0x022F89CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + ldr r5, [r6, #0xb4] + mov r7, r0 + mov r1, r5 + add r0, r7, #2 + bl ov29_02300164 + ldrsh r1, [r5, #2] + ldr r0, _022F8FF0 ; =0x000003E7 + mov r3, #0 + strh r1, [r7] + ldrsh r1, [r5, #0x10] + str r1, [r7, #0x24] + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + str r1, [r7, #0x28] + ldrb r0, [r5, #0xa] + str r0, [r7, #0x2c] + ldr r0, [r5, #0x20] + str r0, [r7, #0x30] +_022F8A28: + add r2, r5, r3 + ldrb r0, [r2, #0x1a] + add r1, r7, r3 + add r3, r3, #1 + strb r0, [r1, #0x34] + ldrb r0, [r2, #0x1c] + cmp r3, #2 + strb r0, [r1, #0x36] + ldrb r0, [r2, #0x5e] + strb r0, [r1, #0x16] + ldrb r0, [r2, #0x60] + strb r0, [r1, #0x18] + blt _022F8A28 + ldrb r0, [r5, #7] + mov r1, #0 + strb r0, [r7, #0x38] + strb r1, [r7, #0x39] + strb r1, [r7, #0x3a] + strb r1, [r7, #0x3b] + strb r1, [r7, #0x3c] + ldrb r0, [r5, #0xd8] + cmp r0, #4 + moveq r0, #1 + streqb r0, [r7, #0x45] + strneb r1, [r7, #0x45] + mov r0, r6 + mov r1, #0x6f + bl AbilityIsActive2 + str r0, [sp] + ldrsh r1, [r5, #2] + ldrsh r3, [r5, #0xe] + mov r0, r7 + add r2, r5, #0x62 + bl sub_0205A450 + ldrb r2, [r5, #0xa8] + mov r1, #0 + add r0, r5, #0x90 + strb r2, [r7, #0x54] + ldrh r2, [r5, #0x62] + add r4, r7, #0x48 + ldr r3, _022F8FF4 ; =0x02353538 + strh r2, [r7, #0x1c] + ldrh r2, [r5, #0x64] + strh r2, [r7, #0x1e] + ldrh r2, [r5, #0x66] + strh r2, [r7, #0x20] + ldrsh r2, [r5, #0xe] + strh r2, [r7, #0x3e] + ldrb r2, [r5, #0x48] + strb r2, [r7, #0x1a] + ldrb r2, [r5, #0x49] + strb r2, [r7, #0x1b] + strb r1, [r7, #0x42] + strb r1, [r7, #0x43] + ldmia r0, {r0, r1, r2} + stmia r4, {r0, r1, r2} + ldr r0, [r3] + ldrb r0, [r0, #0x75a] + cmp r0, #0 + moveq r0, #3 + beq _022F8B24 + mov r0, r5 + bl ov29_022F9B8C +_022F8B24: + strb r0, [r7, #0x44] + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _022F8FF0 ; =0x000003E7 + mov r4, #0 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + add r0, r2, r0, lsr #30 + ldrsh r1, [r5, #0x10] + sub r2, sp, #4 + cmp r1, r0, asr #2 + movle r0, #6 + strleb r0, [r7, #0x58] + ldr r0, _022F8FF4 ; =0x02353538 + addle r4, r4, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x78d] + cmp r0, #0 + addne r0, r7, r4 + movne r1, #0xb + strneb r1, [r0, #0x58] + add r0, r5, #0x100 + ldrh r1, [r0, #0x46] + addne r4, r4, #1 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + bne _022F8BC4 + ldrb r0, [r5, #7] + cmp r0, #0 + movne r1, #0x13 + add r0, r7, r4 + moveq r1, #0x42 + strb r1, [r0, #0x58] + add r4, r4, #1 +_022F8BC4: + ldr r0, [r6, #0xb4] + ldr r0, [r0, #0x110] + cmp r0, #1 + addgt r0, r7, r4 + movgt r1, #0x1b + strgtb r1, [r0, #0x58] + ldr r0, [r6, #0xb4] + addgt r4, r4, #1 + ldr r0, [r0, #0x110] + cmp r0, #1 + addlt r0, r7, r4 + movlt r1, #0x29 + strltb r1, [r0, #0x58] + ldr r0, [r5, #0x34] + addlt r4, r4, #1 + cmp r0, #0x100 + ldrge r0, [r5, #0x38] + cmpge r0, #0x100 + ldrge r0, [r5, #0x3c] + cmpge r0, #0x100 + ldrge r0, [r5, #0x40] + cmpge r0, #0x100 + ldrgesh r0, [r5, #0x24] + cmpge r0, #0xa + ldrgesh r0, [r5, #0x26] + cmpge r0, #0xa + ldrgesh r0, [r5, #0x28] + cmpge r0, #0xa + ldrgesh r0, [r5, #0x2a] + cmpge r0, #0xa + ldrgesh r0, [r5, #0x2c] + cmpge r0, #0xa + ldrgesh r0, [r5, #0x2e] + cmpge r0, #0xa + addlt r0, r7, r4 + movlt r1, #0x3b + strltb r1, [r0, #0x58] + ldr r0, [r5, #0x34] + addlt r4, r4, #1 + cmp r0, #0x100 + ldrle r0, [r5, #0x38] + cmple r0, #0x100 + ldrle r0, [r5, #0x3c] + cmple r0, #0x100 + ldrle r0, [r5, #0x40] + cmple r0, #0x100 + ldrlesh r0, [r5, #0x24] + cmple r0, #0xa + ldrlesh r0, [r5, #0x26] + cmple r0, #0xa + ldrlesh r0, [r5, #0x28] + cmple r0, #0xa + ldrlesh r0, [r5, #0x2a] + cmple r0, #0xa + ldrlesh r0, [r5, #0x2c] + cmple r0, #0xa + ldrlesh r0, [r5, #0x2e] + cmple r0, #0xa + addgt r0, r7, r4 + movgt r1, #0x45 + strgtb r1, [r0, #0x58] + ldrb r1, [r5, #0xbd] + addgt r4, r4, #1 + cmp r1, #0 + beq _022F8CD8 + cmp r4, #0x1e + addlt r0, r7, r4 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8CD8: + ldrb r1, [r5, #0xbf] + cmp r1, #0 + beq _022F8CF8 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #6 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8CF8: + ldrb r1, [r5, #0xc4] + cmp r1, #0 + beq _022F8D18 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0xb + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8D18: + ldrb r1, [r5, #0xd0] + cmp r1, #0 + beq _022F8D38 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x13 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8D38: + ldrb r1, [r5, #0xd2] + cmp r1, #0 + beq _022F8D58 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x1b + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8D58: + ldrb r1, [r5, #0xd5] + cmp r1, #0 + beq _022F8D78 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x29 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8D78: + ldrb r1, [r5, #0xd8] + cmp r1, #0 + beq _022F8D98 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x3b + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8D98: + ldrb r1, [r5, #0xe0] + cmp r1, #0 + beq _022F8DB8 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x42 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8DB8: + ldrb r1, [r5, #0xec] + cmp r1, #0 + beq _022F8DD8 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x45 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8DD8: + ldrb r1, [r5, #0xee] + cmp r1, #0 + beq _022F8DF8 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x4a + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8DF8: + ldrb r1, [r5, #0xef] + cmp r1, #0 + beq _022F8E18 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x4d + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8E18: + ldrb r1, [r5, #0xf1] + cmp r1, #0 + beq _022F8E38 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x52 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8E38: + ldrb r1, [r5, #0xf3] + cmp r1, #0 + beq _022F8E58 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x57 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8E58: + ldrb r1, [r5, #0xf5] + cmp r1, #0 + beq _022F8E78 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x59 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8E78: + ldrb r1, [r5, #0xf7] + cmp r1, #0 + beq _022F8E98 + cmp r4, #0x1e + addlt r0, r7, r4 + addlt r1, r1, #0x5b + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8E98: + ldrb r0, [r5, #0x11e] + cmp r0, #0 + beq _022F8EB8 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x5d + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8EB8: + ldrb r0, [r5, #0xf9] + cmp r0, #0 + beq _022F8ED8 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x5e + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8ED8: + ldrb r0, [r5, #0xfa] + cmp r0, #0 + beq _022F8EF8 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x5f + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8EF8: + ldrb r0, [r5, #0xfd] + cmp r0, #0 + beq _022F8F18 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x60 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8F18: + ldrb r0, [r5, #0xfe] + cmp r0, #0 + beq _022F8F38 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x61 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8F38: + mov r0, r6 + bl ShouldMonsterRunAway + cmp r0, #0 + beq _022F8F5C + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x62 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8F5C: + ldrb r0, [r5, #0x106] + cmp r0, #0 + beq _022F8F7C + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x63 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8F7C: + mov r0, r6 + mov r1, #0 + bl GetNumberOfAttacks + cmp r0, #2 + blt _022F8FA4 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x64 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8FA4: + ldrb r0, [r5, #0xfb] + cmp r0, #0 + beq _022F8FC4 + cmp r4, #0x1e + addlt r0, r7, r4 + movlt r1, #0x65 + strltb r1, [r0, #0x58] + addlt r4, r4, #1 +_022F8FC4: + mov r1, #0 + b _022F8FD8 +_022F8FCC: + add r0, r7, r4 + strb r1, [r0, #0x58] + add r4, r4, #1 +_022F8FD8: + cmp r4, #0x1e + blt _022F8FCC + add r0, r7, r4 + mov r1, #0 + strb r1, [r0, #0x58] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F8FF0: .word 0x000003E7 +_022F8FF4: .word 0x02353538 + arm_func_end ov29_022F89CC + + arm_func_start ov29_022F8FF8 +ov29_022F8FF8: ; 0x022F8FF8 + stmdb sp!, {r4, lr} + ldr r2, [r1, #0xb4] + ldr ip, _022F9050 ; =0x0235171C + ldrb lr, [r2, #0x4c] + ldrsh r4, [r1, #4] + ldr r3, _022F9054 ; =0x0235171E + mov lr, lr, lsl #2 + ldrsh ip, [ip, lr] + add r4, r4, ip + strh r4, [r0] + ldrb ip, [r2, #0x4c] + ldrsh lr, [r1, #6] + mov r1, ip, lsl #2 + ldrsh r1, [r3, r1] + add r1, lr, r1 + strh r1, [r0, #2] + ldrb r0, [r2, #0x4c] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_022F9050: .word 0x0235171C +_022F9054: .word 0x0235171E + arm_func_end ov29_022F8FF8 + + arm_func_start ov29_022F9058 +ov29_022F9058: ; 0x022F9058 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r4, [r1, #0xb4] + mov r5, r0 + ldrsh r0, [r4, #2] + strh r0, [r5] + ldrh r0, [r1, #4] + strh r0, [r5, #2] + ldrh r0, [r1, #6] + strh r0, [r5, #4] + ldrb r0, [r4, #0x100] + cmp r0, #0 + ldrnesh r0, [r4, #0x14] + ldreqsh r0, [r4, #0x12] + strh r0, [r5, #6] + ldrb r1, [r4, #0xa] + add r0, sp, #0 + strh r1, [r5, #0xc] + ldrsh r1, [r4, #2] + ldrb r2, [r4, #0xa] + bl GetLvlStats + ldr r0, [sp] + add r3, r4, #0x124 + str r0, [r5, #0x10] + ldrb r0, [r4, #0x1a] + add r2, r5, #0x22 + mov r1, #0x11 + strb r0, [r5, #8] + ldrb r0, [r4, #0x1b] + strb r0, [r5, #9] + ldrb r0, [r4, #0x1c] + strb r0, [r5, #0xa] + ldrb r0, [r4, #0x1d] + strb r0, [r5, #0xb] + ldrh r0, [r4, #0x62] + strh r0, [r5, #0x1c] + ldrh r0, [r4, #0x64] + strh r0, [r5, #0x1e] + ldrh r0, [r4, #0x66] + strh r0, [r5, #0x20] +_022F90F8: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022F90F8 + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + strh r1, [r5, #0x14] + ldrh r1, [r0, #0x48] + strh r1, [r5, #0x16] + ldrh r1, [r0, #0x4a] + strh r1, [r5, #0x18] + ldrh r0, [r0, #0x4c] + strh r0, [r5, #0x1a] + ldrh r0, [r4, #0x44] + strh r0, [r5, #0x44] + ldrh r0, [r4, #0x46] + strh r0, [r5, #0x46] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + arm_func_end ov29_022F9058 + + arm_func_start UpdateAiTargetPos +UpdateAiTargetPos: ; 0x022F9144 + stmdb sp!, {r3, lr} + ldr lr, [r0, #0xb4] + ldr r2, _022F918C ; =0x0235171C + ldrb r3, [lr, #0x4c] + ldrsh ip, [r0, #4] + add r1, lr, #0x100 + mov r3, r3, lsl #2 + ldrsh r3, [r2, r3] + ldr r2, _022F9190 ; =0x0235171E + add r3, ip, r3 + strh r3, [r1, #0x7e] + ldrb r3, [lr, #0x4c] + ldrsh ip, [r0, #6] + mov r0, r3, lsl #2 + ldrsh r0, [r2, r0] + add r0, ip, r0 + strh r0, [r1, #0x80] + ldmia sp!, {r3, pc} + .align 2, 0 +_022F918C: .word 0x0235171C +_022F9190: .word 0x0235171E + arm_func_end UpdateAiTargetPos + + arm_func_start ov29_022F9194 +ov29_022F9194: ; 0x022F9194 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r1, #0x25 + ldr r4, [r5, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + beq _022F91D8 + mov r0, r5 + bl GetApparentWeather + mov r1, #6 + mul r2, r0, r1 + ldr r1, _022F9234 ; =0x022C4C6C + mov r0, #0 + ldrb r1, [r1, r2] + strb r1, [r4, #0x5e] + strb r0, [r4, #0x5f] + b _022F91FC +_022F91D8: + mov r5, #0 +_022F91DC: + ldrsh r0, [r4, #2] + mov r1, r5 + bl GetType + add r1, r4, r5 + add r5, r5, #1 + strb r0, [r1, #0x5e] + cmp r5, #2 + blt _022F91DC +_022F91FC: + mov r5, #0 +_022F9200: + ldrsh r0, [r4, #2] + mov r1, r5 + bl GetAbility + add r1, r4, r5 + add r5, r5, #1 + strb r0, [r1, #0x60] + cmp r5, #2 + blt _022F9200 + ldr r0, _022F9238 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xe] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022F9234: .word 0x022C4C6C +_022F9238: .word 0x02353538 + arm_func_end ov29_022F9194 + + arm_func_start TryActivateSlowStart +TryActivateSlowStart: ; 0x022F923C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, #0 + mov r7, #1 + ldr r5, _022F92D0 ; =0x00000C17 + ldr r4, _022F92D4 ; =0x02353538 + mov r6, sb + mov fp, r7 + mov r8, #0x5e +_022F925C: + ldr r0, [r4] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb78] + mov r0, sl + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F92C0 + mov r0, sl + mov r1, r8 + bl AbilityIsActive2 + cmp r0, #0 + beq _022F92C0 + mov r0, r7 + mov r1, sl + mov r2, r6 + bl SubstitutePlaceholderStringTags + mov r0, sl + mov r1, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, sl + mov r1, sl + mov r2, fp + mov r3, #0 + bl LowerSpeed +_022F92C0: + add sb, sb, #1 + cmp sb, #0x14 + blt _022F925C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F92D0: .word 0x00000C17 +_022F92D4: .word 0x02353538 + arm_func_end TryActivateSlowStart + + arm_func_start TryActivateArtificialWeatherAbilities +TryActivateArtificialWeatherAbilities: ; 0x022F92D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + bl IsSecretFloor + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r4, _022F9404 ; =0x02353538 + ldr r1, [r4] + ldrb r0, [r1, #0xe] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov sb, #0 + strb sb, [r1, #0xe] + ldr r0, [r4] + mov r5, #1 + add r0, r0, #0xc000 + strb sb, [r0, #0xd5d] + mov r6, r5 + mov r7, r5 + mov r8, r5 + mov fp, r5 +_022F9324: + ldr r0, [r4] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb78] + mov r0, sl + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F93F4 + mov r0, sl + mov r1, #4 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + addne r0, r0, #0xcd00 + strneh r8, [r0, #0x52] + bne _022F93C0 + mov r0, sl + mov r1, #0x1c + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + addne r0, r0, #0xcd00 + strneh r7, [r0, #0x4e] + bne _022F93C0 + mov r0, sl + mov r1, #0x31 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + addne r0, r0, #0xcd00 + strneh r6, [r0, #0x4c] + bne _022F93C0 + mov r0, sl + mov r1, #0x78 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r4] + addne r0, r0, #0xcd00 + strneh r5, [r0, #0x54] +_022F93C0: + mov r0, sl + mov r1, #8 + bl AbilityIsActive2 + cmp r0, #0 + bne _022F93E8 + mov r0, sl + mov r1, #0x2d + bl AbilityIsActive2 + cmp r0, #0 + beq _022F93F4 +_022F93E8: + ldr r0, [r4] + add r0, r0, #0xc000 + strb fp, [r0, #0xd5d] +_022F93F4: + add sb, sb, #1 + cmp sb, #0x14 + blt _022F9324 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022F9404: .word 0x02353538 + arm_func_end TryActivateArtificialWeatherAbilities + + arm_func_start ov29_022F9408 +ov29_022F9408: ; 0x022F9408 + stmdb sp!, {r4, lr} + movs r4, r0 + beq _022F94A8 + ldr r2, _022F94E0 ; =0x0000017B + cmp r1, r2 + blt _022F945C + add r2, r2, #3 + cmp r1, r2 + bgt _022F945C + mov r1, #0x25 + bl AbilityIsActive2 + cmp r0, #0 + ldreq r0, _022F94E0 ; =0x0000017B + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl GetApparentWeather + mov r1, #6 + mul r1, r0, r1 + ldr r0, _022F94E4 ; =0x022C4C6E + ldrsh r0, [r0, r1] + ldmia sp!, {r4, pc} +_022F945C: + ldr r0, _022F94E8 ; =0x000003D3 + cmp r1, r0 + blt _022F94D8 + add r0, r0, #3 + cmp r1, r0 + bgt _022F94D8 + mov r0, r4 + mov r1, #0x25 + bl AbilityIsActive2 + cmp r0, #0 + ldreq r0, _022F94E8 ; =0x000003D3 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl GetApparentWeather + mov r1, #6 + mul r1, r0, r1 + ldr r0, _022F94EC ; =0x022C4C70 + ldrsh r0, [r0, r1] + ldmia sp!, {r4, pc} +_022F94A8: + ldr r0, _022F94E0 ; =0x0000017B + cmp r1, r0 + blt _022F94C0 + add r2, r0, #3 + cmp r1, r2 + ldmleia sp!, {r4, pc} +_022F94C0: + ldr r0, _022F94E8 ; =0x000003D3 + cmp r1, r0 + blt _022F94D8 + add r2, r0, #3 + cmp r1, r2 + ldmleia sp!, {r4, pc} +_022F94D8: + mov r0, r1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022F94E0: .word 0x0000017B +_022F94E4: .word 0x022C4C6E +_022F94E8: .word 0x000003D3 +_022F94EC: .word 0x022C4C70 + arm_func_end ov29_022F9408 + + arm_func_start ov29_022F94F0 +ov29_022F94F0: ; 0x022F94F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + cmpne sb, r8 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r5, [sb, #0xb4] + ldr r6, [r8, #0xb4] + ldrb r0, [r5, #0xbc] + bl ov29_022EFB04 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r6, #0x60] + mvn r4, #0 + cmp r0, #0x28 + ldrb r0, [r6, #0x61] + moveq r4, #0 + cmp r0, #0x28 + moveq r4, #1 + cmp r4, #0 + blt _022F95FC + ldrb r1, [r5, #0x60] + ldrb r2, [r5, #0x61] + mov r0, #0 + cmp r1, #0 + strneb r1, [sp] + addne r0, r0, #1 + cmp r2, #0 + addne r1, sp, #0 + strneb r2, [r1, r0] + addne r0, r0, #1 + cmp r0, #0 + mvneq r0, #0 + beq _022F95A0 + cmp r0, #1 + moveq r0, #0 + beq _022F95A0 + bl DungeonRandInt +_022F95A0: + cmp r0, #0 + blt _022F95FC + add r1, sp, #0 + ldrb r3, [r1, r0] + ldr r1, _022F96BC ; =0x02353538 + add r2, r6, r4 + strb r3, [r2, #0x60] + mov r0, #0 + ldr r3, [r1] + mov r4, #1 + mov r1, r8 + mov r2, r0 + strb r4, [r3, #0xe] + bl SubstitutePlaceholderStringTags + ldr r2, _022F96C0 ; =0x00000C18 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + bl ov29_022E6260 + mov r0, sb + mov r1, r8 + bl ov29_022FA7DC +_022F95FC: + ldrb r0, [r6, #0x164] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + mov r0, sb + mov r1, r8 + mov r2, #0x3b + mov r3, #1 + strb r4, [r6, #0x164] + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + mov r1, r7 + bl GetMoveTypeForMonster + ldrh r1, [r7, #4] + mov r4, r0 + cmp r1, #0x1f + bne _022F9658 + mov r0, sb + bl GetApparentWeather + ldr r1, _022F96C4 ; =0x022C48DC + ldrb r4, [r1, r0] +_022F9658: + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r8 + mov r1, r4 + bl MonsterIsType + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #0 + strb r4, [r6, #0x5e] + strb r0, [r6, #0x5f] + mov r3, #1 + mov r1, r8 + mov r2, r0 + strb r3, [r6, #0xff] + bl SubstitutePlaceholderStringTags + ldrb r1, [r6, #0x5e] + mov r0, #0 + bl ov29_0234B084 + ldr r2, _022F96C8 ; =0x00000C19 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + bl ov29_022E647C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022F96BC: .word 0x02353538 +_022F96C0: .word 0x00000C18 +_022F96C4: .word 0x022C48DC +_022F96C8: .word 0x00000C19 + arm_func_end ov29_022F94F0 + + arm_func_start DefenderAbilityIsActive__022F96CC +DefenderAbilityIsActive__022F96CC: ; 0x022F96CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r7, r6 + beq _022F9710 + bl IsMonster__022F9720 + cmp r0, #0 + cmpne r4, #0 + beq _022F9710 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022F9710: + mov r0, r6 + mov r1, r5 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end DefenderAbilityIsActive__022F96CC + + arm_func_start IsMonster__022F9720 +IsMonster__022F9720: ; 0x022F9720 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__022F9720 + + arm_func_start ov29_022F9744 +ov29_022F9744: ; 0x022F9744 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r4, r2 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + bl EntityIsValid__022F7364 + cmp r0, #0 + cmpne r7, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r5, [r6, #0xb4] + mov r0, r6 + bl Conversion2IsActive + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r4 + bl GetMoveTypeForMonster + bl sub_02050964 + movs r4, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + bl ov29_02307CE0 + mov r0, r6 + strb r4, [r5, #0x5e] + mov r1, #0 + strb r1, [r5, #0x5f] + bl ov29_022E4160 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #0 + bl ov29_0234B084 + mov r0, r7 + mov r1, r6 + ldr r2, _022F97EC ; =0x00000C16 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F97EC: .word 0x00000C16 + arm_func_end ov29_022F9744 + + arm_func_start TryActivateTruant +TryActivateTruant: ; 0x022F97F0 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F9838 + mov r0, r4 + mov r1, #0x2a + bl AbilityIsActive2 + cmp r0, #0 + beq _022F9838 + mov r2, #0 + str r2, [sp] + mov r0, r4 + mov r1, r4 + mov r3, #1 + str r2, [sp, #4] + bl TryInflictPausedStatus +_022F9838: + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end TryActivateTruant + + arm_func_start ov29_022F9840 +ov29_022F9840: ; 0x022F9840 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5] + cmp r0, #1 + bne _022F987C + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + and r4, r0, #0xff +_022F987C: + bl sub_0204AEF0 + cmp r0, #0 + moveq r4, #0 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_022E272C + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r1, #1 + mov r0, r5 + mov r2, r1 + bl ov29_022F98B4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022F9840 + + arm_func_start ov29_022F98B4 +ov29_022F98B4: ; 0x022F98B4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6] + cmp r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _022F9968 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldr r0, [r0, #0x22c] + cmp r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #0 + beq _022F9928 + mov r0, #1 + bl ov29_022E38E0 + mov r7, #0x34 + ldr r5, _022F9968 ; =0x02353538 + b _022F9918 +_022F9910: + mov r0, r7 + bl AdvanceFrame +_022F9918: + ldr r0, [r5] + ldrsh r0, [r0, #0x1c] + cmp r0, #0x3c + blt _022F9910 +_022F9928: + mov r0, #4 + mov r1, #0x44 + bl ov29_022EA370 + mov r0, r6 + mov r1, r4 + bl ov29_022E2E54 + cmp r4, #0 + beq _022F9950 + add r0, r6, #4 + bl ov29_02337A3C +_022F9950: + ldr r0, _022F9968 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strh r1, [r0, #0x1c] + bl ov29_022E81F8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022F9968: .word 0x02353538 + arm_func_end ov29_022F98B4 + + arm_func_start ov29_022F996C +ov29_022F996C: ; 0x022F996C + bx lr + arm_func_end ov29_022F996C + + arm_func_start ov29_022F9970 +ov29_022F9970: ; 0x022F9970 + stmdb sp!, {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _022F99E8 ; =0x02353538 + b _022F99DC +_022F9980: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F99D8 + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #3 + bne _022F99D8 + ldr r1, _022F99E8 ; =0x02353538 + ldr r0, [r1] + add r0, r0, #0x19000 + str r5, [r0, #0x904] + ldr r2, [r5, #0xb4] + ldr r0, [r1] + ldr r1, [r2, #0xb0] + add r0, r0, #0x19000 + str r1, [r0, #0x90c] + ldmia sp!, {r4, r5, r6, pc} +_022F99D8: + add r4, r4, #1 +_022F99DC: + cmp r4, #0x14 + blt _022F9980 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022F99E8: .word 0x02353538 + arm_func_end ov29_022F9970 + + arm_func_start ov29_022F99EC +ov29_022F99EC: ; 0x022F99EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + mov r4, #0 + ldr r6, _022F9A70 ; =0x02353538 + mov r5, r4 + add r7, sp, #0 +_022F9A04: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb38] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F9A40 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xbc] + cmp r0, #0xb + blo _022F9A40 + cmp r0, #0xe + strls r8, [r7, r4, lsl #2] + addls r4, r4, #1 +_022F9A40: + add r5, r5, #1 + cmp r5, #0x10 + blt _022F9A04 + cmp r4, #0 + movle r0, #0 + ble _022F9A68 + mov r0, r4 + bl DungeonRandInt + add r1, sp, #0 + ldr r0, [r1, r0, lsl #2] +_022F9A68: + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022F9A70: .word 0x02353538 + arm_func_end ov29_022F99EC + + arm_func_start RestorePpAllMovesSetFlags +RestorePpAllMovesSetFlags: ; 0x022F9A74 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, [r0, #0xb4] + mov r7, #0 + add r6, r0, #0x124 + mov r4, r7 + mov r5, #1 +_022F9A8C: + ldrb r0, [r6, r7, lsl #3] + add r8, r6, r7, lsl #3 + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022F9AE4 + ldrh r1, [r8, #2] + mov r0, r8 + bic r1, r1, #8 + strh r1, [r8, #2] + ldrh r1, [r8, #2] + bic r1, r1, #0x10 + strh r1, [r8, #2] + ldrh r1, [r8, #2] + bic r1, r1, #0x40 + strh r1, [r8, #2] + ldrh r1, [r8, #2] + orr r1, r1, #4 + strh r1, [r8, #2] + bl GetMaxPpWrapper + strb r0, [r8, #6] +_022F9AE4: + add r7, r7, #1 + cmp r7, #4 + blt _022F9A8C + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end RestorePpAllMovesSetFlags + + arm_func_start ov29_022F9AF4 +ov29_022F9AF4: ; 0x022F9AF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r1, [sb, #0xb4] + mov r5, #0 + ldrb r8, [r1, #6] + bl ov29_022F87C0 + cmp r0, #0 + moveq r0, r5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mvn r7, #0 + mov r4, r7 +_022F9B20: + mov r6, r4 +_022F9B24: + ldrsh r0, [sb, #4] + ldrsh r1, [sb, #6] + add r0, r0, r6 + add r1, r1, r7 + bl GetTileSafe + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _022F9B60 + ldr r0, [r1] + cmp r0, #1 + bne _022F9B60 + ldr r0, [r1, #0xb4] + ldrb r0, [r0, #6] + cmp r8, r0 + addne r5, r5, #1 +_022F9B60: + add r6, r6, #1 + cmp r6, #1 + ble _022F9B24 + add r7, r7, #1 + cmp r7, #1 + ble _022F9B20 + cmp r5, #2 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022F9AF4 + + arm_func_start ov29_022F9B8C +ov29_022F9B8C: ; 0x022F9B8C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x4c + mov r2, #0 + mov r1, #1 + mov r4, r0 + strb r2, [sp, #4] + strb r1, [sp, #5] + str r2, [sp] + ldrsh r1, [r4, #2] + add r0, sp, #8 + add r3, sp, #4 + bl sub_02052E2C + ldrsh r0, [r4, #2] + mov r1, #0 + mov r2, #6 + strh r0, [sp, #0xc] + ldrb r0, [r4, #0xa] + strb r0, [sp, #9] + ldrsh r0, [r4, #0xe] + strh r0, [sp, #0x10] + ldrb r0, [r4, #0x1a] + strb r0, [sp, #0x14] + ldrb r0, [r4, #0x1c] + strb r0, [sp, #0x16] + ldrb r0, [r4, #0x48] + strb r0, [sp, #0xa] + ldrb r0, [r4, #0x49] + strb r0, [sp, #0xb] + add r0, sp, #8 +_022F9C00: + mla lr, r1, r2, r0 + add r3, r4, r1, lsl #3 + ldrb ip, [r3, #0x124] + add r3, r3, #0x100 + add r1, r1, #1 + strb ip, [lr, #0x22] + ldrh r3, [r3, #0x28] + cmp r1, #4 + strh r3, [lr, #0x24] + blt _022F9C00 + bl GetMonsterEvoStatus + add sp, sp, #0x4c + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_022F9B8C + + arm_func_start CheckTeamMemberIdx__022F9C34 +CheckTeamMemberIdx__022F9C34: ; 0x022F9C34 + ldr ip, _022F9C3C ; =CheckTeamMemberIdx__02056228 + bx ip + .align 2, 0 +_022F9C3C: .word CheckTeamMemberIdx__02056228 + arm_func_end CheckTeamMemberIdx__022F9C34 + + arm_func_start ov29_022F9C40 +ov29_022F9C40: ; 0x022F9C40 + ldr ip, _022F9C48 ; =sub_02056264 + bx ip + .align 2, 0 +_022F9C48: .word sub_02056264 + arm_func_end ov29_022F9C40 + + arm_func_start ov29_022F9C4C +ov29_022F9C4C: ; 0x022F9C4C + stmdb sp!, {r3, lr} + ldr r0, [r0, #0xb4] + ldrsh r0, [r0, #0xc] + bl GetActiveTeamMember + ldrsh r0, [r0, #8] + bl sub_02056264 + ldmia sp!, {r3, pc} + arm_func_end ov29_022F9C4C + + arm_func_start IsMonsterIdInNormalRange__022F9C68 +IsMonsterIdInNormalRange__022F9C68: ; 0x022F9C68 + ldr ip, _022F9C70 ; =IsMonsterIdInNormalRange__02056294 + bx ip + .align 2, 0 +_022F9C70: .word IsMonsterIdInNormalRange__02056294 + arm_func_end IsMonsterIdInNormalRange__022F9C68 + + arm_func_start ov29_022F9C74 +ov29_022F9C74: ; 0x022F9C74 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r0 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022F9E80 + ldr r5, [r6, #0xb4] + ldrb r0, [r5, #0x103] + cmp r0, #0 + beq _022F9E78 + mov r0, r6 + bl GetTileAtEntity + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + bne _022F9D50 + ldr r0, _022F9E88 ; =0x02353538 + ldr r1, _022F9E8C ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + bne _022F9D34 + ldrb r0, [r5, #0xc4] + cmp r0, #1 + bne _022F9CF0 + mov r0, r6 + mov r1, r6 + mov r2, #1 + bl EndFrozenClassStatus +_022F9CF0: + ldrsh r0, [r5, #2] + bl GetMobilityType + cmp r0, #4 + ldrnesh r1, [r5, #2] + ldrne r0, _022F9E90 ; =0x00000115 + cmpne r1, r0 + cmpne r1, #0x92 + ldrneb r0, [r5, #0xbf] + cmpne r0, #1 + beq _022F9E78 + mov r3, #0 + mov r0, r6 + mov r1, r6 + mov r2, #1 + str r3, [sp] + bl TryInflictBurnStatus + b _022F9E78 +_022F9D34: + ldrb r0, [r5, #0xbf] + cmp r0, #1 + bne _022F9E78 + mov r0, r6 + mov r1, r6 + bl ov29_023061A8 + b _022F9E78 +_022F9D50: + cmp r0, #0 + bne _022F9E78 + ldrb r0, [r5, #7] + cmp r0, #0 + beq _022F9E78 + add r0, r5, #0x100 + ldrh r1, [r0, #0x48] + ldrh r4, [r0, #0x46] + sub r3, sp, #4 + strh r1, [sp, #0xa] + mov r0, r1 + strh r4, [r3] + strh r0, [r3, #2] + ldr r1, _022F9E94 ; =0x02352768 + ldr r0, [r3] + ldrh r2, [r1] + strh r4, [sp, #8] + strh r2, [r3] + ldrh r1, [r1, #2] + strh r1, [r3, #2] + ldr r1, [r3] + bl SubFixedPoint + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r1, [sp, #4] + add r0, r5, #0x100 + ldrh r3, [sp, #6] + strh r1, [r0, #0x46] + ldrh r2, [sp, #8] + strh r3, [r0, #0x48] + sub r0, sp, #4 + ldrh r1, [sp, #0xa] + strh r2, [r0] + mov r4, #0 + strh r1, [r0, #2] + ldr r0, [r0] + bl CeilFixedPoint + cmp r0, #0x14 + blt _022F9E18 + add r0, r5, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0x14 + ldrlt r4, _022F9E98 ; =0x00000C1A +_022F9E18: + ldrh r1, [sp, #8] + ldrh r0, [sp, #0xa] + sub r2, sp, #4 + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0xa + blt _022F9E64 + add r0, r5, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0xa + ldrlt r4, _022F9E9C ; =0x00000C1B +_022F9E64: + cmp r4, #0 + beq _022F9E78 + mov r0, r6 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUser +_022F9E78: + mov r0, #0 + strb r0, [r5, #0x103] +_022F9E80: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_022F9E88: .word 0x02353538 +_022F9E8C: .word 0x020A1AE8 +_022F9E90: .word 0x00000115 +_022F9E94: .word 0x02352768 +_022F9E98: .word 0x00000C1A +_022F9E9C: .word 0x00000C1B + arm_func_end ov29_022F9C74 + + arm_func_start ov29_022F9EA0 +ov29_022F9EA0: ; 0x022F9EA0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r1, #0x6f + ldr r4, [r5, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + bne _022F9FEC + ldrb r0, [r4, #7] + cmp r0, #0 + bne _022F9FBC + mov r0, r5 + mov r1, #0x11 + bl HasHeldItem + cmp r0, #0 + bne _022F9EF4 + mov r0, r5 + mov r1, #0x32 + bl HasHeldItem + cmp r0, #0 + beq _022F9F60 +_022F9EF4: + mov r0, #0xa + bl sub_02050FF8 + add r1, r4, #0x100 + ldrh r2, [r1, #0x46] + sub r3, sp, #4 + strh r0, [sp, #8] + strh r2, [r3] + ldrh r1, [r1, #0x48] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xa] + strh r1, [r3, #2] + ldrh r2, [sp, #8] + ldr r0, [r3] + ldrh r1, [sp, #0xa] + strh r2, [r3] + strh r1, [r3, #2] + ldr r1, [r3] + bl SubFixedPoint + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r2, [sp, #4] + add r0, r4, #0x100 + ldrh r1, [sp, #6] + strh r2, [r0, #0x46] + strh r1, [r0, #0x48] + b _022F9F9C +_022F9F60: + mov r0, r5 + mov r1, #0x22 + bl HasHeldItem + cmp r0, #0 + beq _022F9F9C + mov r0, #0 + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r2, [sp] + add r0, r4, #0x100 + ldrh r1, [sp, #2] + strh r2, [r0, #0x46] + strh r1, [r0, #0x48] +_022F9F9C: + ldr r0, _022FA028 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x78d] + cmp r0, #0 + beq _022F9FEC + mov r0, r5 + bl UpdateStatusIconFlags + b _022F9FEC +_022F9FBC: + ldrsh r1, [r4, #0x66] + ldrsh r0, [r4, #0x68] + cmp r0, r1 + beq _022F9FEC + cmp r1, #0x18 + cmpne r0, #0x18 + cmpne r1, #0xe + cmpne r0, #0xe + bne _022F9FEC + mov r0, #1 + bl ov29_022E2EC4 + bl ov29_02339CE8 +_022F9FEC: + ldrsh r1, [r4, #0x68] + ldrsh r0, [r4, #0x66] + cmp r1, r0 + beq _022FA000 + bl ov29_02307DD0 +_022FA000: + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrnesh r0, [r4, #0x66] + moveq r0, #0 + strh r0, [r4, #0x68] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022FA028: .word 0x02353538 + arm_func_end ov29_022F9EA0 + + arm_func_start ov29_022FA02C +ov29_022FA02C: ; 0x022FA02C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x90 + mov sl, r0 + mov r3, r1 + ldrsh r1, [sl, #2] + mov sb, r2 + add r0, sp, #4 + mov r2, r3 + bl GetLearnableIqSkills + mov r6, r0 + ldrsh r1, [sl, #2] + ldrsh r2, [sl, #0xe] + add r0, sp, #0x49 + bl GetLearnableIqSkills + mov r7, r0 + bl ov29_0234B034 + mov r1, #0 + mov r2, sl + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r8, #1 + add r5, sp, #4 + mov r4, r8 + mov fp, #0 +_022FA090: + mov r1, #0 + mov r2, r1 + mov r3, r1 + b _022FA0B4 +_022FA0A0: + ldrb r0, [r5, r3] + cmp r0, r8 + moveq r1, r4 + beq _022FA0BC + add r3, r3, #1 +_022FA0B4: + cmp r3, r6 + blt _022FA0A0 +_022FA0BC: + mov r3, fp + b _022FA0DC +_022FA0C4: + add r0, r5, r3 + ldrb r0, [r0, #0x45] + cmp r8, r0 + moveq r2, #1 + beq _022FA0E4 + add r3, r3, #1 +_022FA0DC: + cmp r3, r7 + blt _022FA0C4 +_022FA0E4: + cmp r1, r2 + beq _022FA12C + add r0, sl, #0x90 + and r1, r8, #0xff + bl EnableIqSkill + add r0, sl, #0x9c + and r1, r8, #0xff + bl EnableIqSkill + cmp sb, #0 + bne _022FA12C + mov r0, #4 + bl sub_02017C50 + mov r0, #0 + and r1, r8, #0xff + bl ov29_0234B084 + ldr r1, _022FA140 ; =0x00000C1C + mov r0, #0 + bl LogMessageByIdWithPopup +_022FA12C: + add r8, r8, #1 + cmp r8, #0x45 + blt _022FA090 + add sp, sp, #0x90 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FA140: .word 0x00000C1C + arm_func_end ov29_022FA02C + + arm_func_start ov29_022FA144 +ov29_022FA144: ; 0x022FA144 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r5, [r7, #0xb4] + ldr r0, _022FA1CC ; =0x000003E7 + ldrsh r4, [r5, #0xe] + mov r6, r2 + add r1, r4, r1 + strh r1, [r5, #0xe] + ldrsh r1, [r5, #0xe] + cmp r1, r0 + strgth r0, [r5, #0xe] + cmp r6, #0 + bne _022FA1B0 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrsh r0, [r5, #0xe] + cmp r4, r0 + bne _022FA1A4 + ldr r1, _022FA1D0 ; =0x00000C27 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022FA1B0 +_022FA1A4: + ldr r1, _022FA1D4 ; =0x00000C26 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser +_022FA1B0: + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl ov29_022FA02C + mov r0, r7 + bl ov29_023021F0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FA1CC: .word 0x000003E7 +_022FA1D0: .word 0x00000C27 +_022FA1D4: .word 0x00000C26 + arm_func_end ov29_022FA144 + + arm_func_start ov29_022FA1D8 +ov29_022FA1D8: ; 0x022FA1D8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6, #0xb4] + mov r5, r1 + ldrb r1, [r4, #7] + cmp r1, #0 + beq _022FA210 + ldrsh r1, [r6, #4] + add r0, r4, #0x100 + strh r1, [r0, #0x7e] + ldrsh r1, [r6, #6] + add r1, r1, #1 + strh r1, [r0, #0x80] + b _022FA27C +_022FA210: + ldrb r1, [r4, #0x16a] + cmp r1, #0xff + beq _022FA274 + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + ldrb r2, [r4, #0x16a] + ldr r1, _022FA2E8 ; =0x0235171C + add r0, r4, #0x100 + strb r2, [r4, #0x4c] + mov r2, r2, lsl #2 + ldrsh r3, [r1, r2] + ldrsh ip, [r6, #4] + ldr r2, _022FA2EC ; =0x0235171E + mov r1, #0xff + add r3, ip, r3 + strh r3, [r0, #0x7e] + ldrb r3, [r4, #0x4c] + ldrsh ip, [r6, #6] + mov r3, r3, lsl #2 + ldrsh r2, [r2, r3] + add r2, ip, r2 + strh r2, [r0, #0x80] + strb r1, [r4, #0x16a] + b _022FA27C +_022FA274: + mov r1, r2 + bl AiMovement +_022FA27C: + add r0, r4, #0x100 + ldrsh r1, [r0, #0x7e] + cmp r1, #0 + ldreqsh r0, [r0, #0x80] + cmpeq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, #1 + bl ov29_02300818 + cmp r0, #0 + beq _022FA2B8 + mov r0, r6 + bl ov29_02300CB0 + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_022FA2B8: + add r1, r4, #0x7e + add r0, r6, #4 + add r1, r1, #0x100 + bl GetDirectionTowardsPosition + mov r1, r0 + and r0, r1, #7 + strb r0, [r4, #0x4c] + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02304A48 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FA2E8: .word 0x0235171C +_022FA2EC: .word 0x0235171E + arm_func_end ov29_022FA1D8 + + arm_func_start ov29_022FA2F0 +ov29_022FA2F0: ; 0x022FA2F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr sb, _022FA35C ; =0x02353538 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0 +_022FA308: + ldr r0, [sb] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r4, [r0, #0xb78] + mov r0, r4 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FA34C + cmp r7, #0 + ldrne r0, [r4, #0xb4] + ldrneb r0, [r0, #0xbc] + cmpne r0, #7 + bne _022FA34C + mov r0, r4 + mov r1, r8 + mov r2, r6 + bl ov29_022FA1D8 +_022FA34C: + add r5, r5, #1 + cmp r5, #0x14 + blt _022FA308 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FA35C: .word 0x02353538 + arm_func_end ov29_022FA2F0 + + arm_func_start ov29_022FA360 +ov29_022FA360: ; 0x022FA360 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r6, #0xb4] + and r1, r5, #7 + mov r0, r6 + strb r1, [r4, #0x4c] + bl GetSleepAnimationId + mov r1, r0 + ldrb r2, [r4, #0x4c] + mov r0, r6 + bl ov29_023049A8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_022FA360 + + arm_func_start ov29_022FA3A0 +ov29_022FA3A0: ; 0x022FA3A0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r1, r4 + add r0, r5, #4 + bl GetDirectionTowardsPosition + and r1, r0, #0xff + mov r0, r5 + bl ov29_022FA360 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022FA3A0 + + arm_func_start ov29_022FA3D4 +ov29_022FA3D4: ; 0x022FA3D4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _022FA414 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + mov r6, #0 + add r0, r0, #0x328 + add r5, r0, #0x12800 +_022FA3F0: + ldr r0, [r5, r6, lsl #2] + mov r1, r4 + bl ov29_022FA3A0 + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #4 + blt _022FA3F0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FA414: .word 0x02353538 + arm_func_end ov29_022FA3D4 + + arm_func_start ov29_022FA418 +ov29_022FA418: ; 0x022FA418 + stmdb sp!, {r3, lr} + bl ov29_023361D4 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov29_022EF938 + ldmia sp!, {r3, pc} + arm_func_end ov29_022FA418 + + arm_func_start ShouldMonsterHeadToStairs +ShouldMonsterHeadToStairs: ; 0x022FA430 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + bl GetStairsRoom + mov r5, r0 + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + bl GetTile + ldrb r0, [r0, #7] + cmp r5, r0 + bne _022FA514 + ldr r1, _022FA51C ; =0x02353538 + add r0, sl, #4 + ldr r1, [r1] + add r1, r1, #0xe4 + add r1, r1, #0xcc00 + bl GetChebyshevDistance + ldr r7, _022FA520 ; =0x00002710 + ldr r4, _022FA51C ; =0x02353538 + mov r6, r0 + mov r8, #0 +_022FA480: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FA4E8 + mov r0, sl + mov r1, sb + bl ov29_023018AC + cmp r0, #1 + bne _022FA4E8 + ldrsh r0, [sb, #4] + ldrsh r1, [sb, #6] + bl GetTile + ldrb r0, [r0, #7] + cmp r5, r0 + bne _022FA4E8 + ldr r1, [r4] + add r0, sb, #4 + add r1, r1, #0xe4 + add r1, r1, #0xcc00 + bl GetChebyshevDistance + cmp r0, r7 + movlt r7, r0 +_022FA4E8: + add r8, r8, #1 + cmp r8, #0x14 + blt _022FA480 + ldr r0, _022FA520 ; =0x00002710 + cmp r7, r0 + beq _022FA50C + beq _022FA514 + cmp r7, r6 + ble _022FA514 +_022FA50C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_022FA514: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FA51C: .word 0x02353538 +_022FA520: .word 0x00002710 + arm_func_end ShouldMonsterHeadToStairs + + arm_func_start ov29_022FA524 +ov29_022FA524: ; 0x022FA524 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _022FA570 ; =0x02353538 + mov r5, #0 +_022FA530: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FA560 + ldr r1, [r6, #0xb4] + mov r0, r6 + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 +_022FA560: + add r5, r5, #1 + cmp r5, #0x14 + blt _022FA530 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FA570: .word 0x02353538 + arm_func_end ov29_022FA524 + + arm_func_start ov29_022FA574 +ov29_022FA574: ; 0x022FA574 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xb4] + mov r1, r4 + add r0, r0, #0x124 + bl sub_0201405C + cmp r0, #0 + bne _022FA5B4 + ldr r1, _022FA5E4 ; =0x00000C1D + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_022FA5B4: + cmp r0, #1 + bne _022FA5CC + ldr r1, _022FA5E8 ; =0x00000C1E + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_022FA5CC: + cmp r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _022FA5EC ; =0x00000C1F + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FA5E4: .word 0x00000C1D +_022FA5E8: .word 0x00000C1E +_022FA5EC: .word 0x00000C1F + arm_func_end ov29_022FA574 + + arm_func_start MewSpawnCheck +MewSpawnCheck: ; 0x022FA5F0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl CanMonsterSpawn + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r5, #0x97 + bne _022FA63C + ldr r0, _022FA644 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3000 + ldrb r0, [r0, #0xe39] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_022FA63C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FA644: .word 0x02353538 + arm_func_end MewSpawnCheck + + arm_func_start ov29_022FA648 +ov29_022FA648: ; 0x022FA648 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r7, #0 + mov r6, #1 + mov fp, r6 + mov r5, r7 +_022FA65C: + ldr r0, _022FA74C ; =0x02353538 + ldr r0, [r0] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb28] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FA730 + ldr sl, [r8, #0xb4] + ldrb r1, [sl, #7] + ldrsh r0, [sl, #0xc] + cmp r1, #0 + beq _022FA6C4 + strb r6, [sl, #0x165] + bl ov29_022E8104 + bl ov29_022E81F8 + bl ov29_022E0A04 + cmp r0, #1 + mov r0, r8 + bne _022FA6B8 + bl ov29_022E68D8 + b _022FA6BC +_022FA6B8: + bl ov29_022E68BC +_022FA6BC: + strb r5, [r8, #0x20] + b _022FA730 +_022FA6C4: + cmp r0, #0 + blt _022FA730 + mov sb, #0 + bl GetActiveTeamMember + mov r4, r0 + bl ov29_022E0A04 + cmp r0, #0 + movne sb, #1 + bne _022FA70C + ldrsh r0, [r4, #8] + bl sub_02056264 + cmp r0, #0 + movne sb, #1 + bne _022FA70C + ldrsh r0, [r4, #8] + bl IsMonsterIdInNormalRange__02056294 + cmp r0, #0 + movne sb, #1 +_022FA70C: + cmp sb, #0 + beq _022FA730 + strb fp, [sl, #0x165] + bl ov29_022E8104 + bl ov29_022E81F8 + mov r0, r8 + bl ov29_022E68BC + mov r0, #0 + strb r0, [r8, #0x20] +_022FA730: + add r7, r7, #1 + cmp r7, #4 + blt _022FA65C + mov r0, #0x1e + mov r1, #0x4a + bl ov29_022EA370 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FA74C: .word 0x02353538 + arm_func_end ov29_022FA648 + + arm_func_start ov29_022FA750 +ov29_022FA750: ; 0x022FA750 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, #0 + ldr r4, _022FA7D8 ; =0x02353538 + mov r5, r6 +_022FA760: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FA7C8 + ldr sb, [r8, #0xb4] + mov r7, r5 +_022FA788: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb78] + mov r0, sl + bl EntityIsValid__022F7364 + cmp r0, #0 + cmpne r8, sl + beq _022FA7BC + ldrh r1, [sb, #0x80] + ldrh r0, [sl, #0x26] + cmp r1, r0 + streq sl, [sb, #0x84] +_022FA7BC: + add r7, r7, #1 + cmp r7, #0x14 + blt _022FA788 +_022FA7C8: + add r6, r6, #1 + cmp r6, #0x14 + blt _022FA760 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FA7D8: .word 0x02353538 + arm_func_end ov29_022FA750 + + arm_func_start ov29_022FA7DC +ov29_022FA7DC: ; 0x022FA7DC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + mov r2, #0x16 + mov r3, #1 + mov r6, r0 + ldr r4, [r5, #0xb4] + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA81C + ldrb r0, [r4, #0xbf] + cmp r0, #4 + bne _022FA81C + mov r0, r6 + mov r1, r5 + bl ov29_023061A8 +_022FA81C: + mov r0, r6 + mov r1, r5 + mov r2, #0x40 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA850 + ldrb r0, [r4, #0xd0] + cmp r0, #2 + bne _022FA850 + mov r0, r6 + mov r1, r5 + bl EndCringeClassStatus +_022FA850: + mov r0, r6 + mov r1, r5 + mov r2, #0x42 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA884 + ldrb r0, [r4, #0xbf] + cmp r0, #1 + bne _022FA884 + mov r0, r6 + mov r1, r5 + bl ov29_023061A8 +_022FA884: + mov r0, r6 + mov r1, r5 + mov r2, #0x29 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA8B8 + ldrb r0, [r4, #0xd0] + cmp r0, #7 + bne _022FA8B8 + mov r0, r6 + mov r1, r5 + bl EndCringeClassStatus +_022FA8B8: + mov r0, r6 + mov r1, r5 + mov r2, #0x36 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + bne _022FA8F0 + mov r0, r6 + mov r1, r5 + mov r2, #0x49 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA924 +_022FA8F0: + mov r0, r5 + bl ov29_023007A8 + cmp r0, #0 + bne _022FA90C + ldrb r0, [r4, #0xbd] + cmp r0, #4 + bne _022FA924 +_022FA90C: + mov r3, #1 + mov r0, r6 + mov r1, r5 + mov r2, #0 + str r3, [sp] + bl ov29_02305FDC +_022FA924: + mov r0, r6 + mov r1, r5 + mov r2, #0x41 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA95C + ldrb r0, [r4, #0xc4] + cmp r0, #1 + bne _022FA95C + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl EndFrozenClassStatus +_022FA95C: + mov r0, r6 + mov r1, r5 + mov r2, #0x45 + mov r3, #1 + bl DefenderAbilityIsActive__022F96CC + cmp r0, #0 + beq _022FA998 + ldrb r0, [r4, #0xbf] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _022FA998 + mov r0, r6 + mov r1, r5 + bl ov29_023061A8 +_022FA998: + mov r0, r5 + mov r1, #0x25 + bl AbilityIsActive2 + cmp r0, #0 + beq _022FA9CC + mov r0, #0 + strb r0, [r4, #0xff] + ldrb r0, [r4, #0xd5] + cmp r0, #0xc + bne _022FA9CC + mov r0, r6 + mov r1, r5 + bl ov29_023064F4 +_022FA9CC: + mov r0, r5 + mov r1, #0x2b + bl AbilityIsActive2 + cmp r0, #0 + beq _022FA9FC + ldrb r0, [r4, #0xc4] + cmp r0, #2 + bne _022FA9FC + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl EndFrozenClassStatus +_022FA9FC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_022FA7DC + + arm_func_start ov29_022FAA04 +ov29_022FAA04: ; 0x022FAA04 + ldr ip, [r0, #0xb4] + mov r3, #0 +_022FAA0C: + add r2, ip, r3, lsl #3 + ldrb r0, [r2, #0x124] + add r3, r3, #1 + cmp r3, #4 + bic r0, r0, #0x10 + strb r0, [r2, #0x124] + blt _022FAA0C + ldrb r0, [ip, #0x144] + bic r0, r0, #0x10 + strb r0, [ip, #0x144] + ldrh r0, [r1, #4] + cmp r0, #0x160 + ldreqb r0, [ip, #0x144] + orreq r0, r0, #0x10 + streqb r0, [ip, #0x144] + ldrneb r0, [r1] + orrne r0, r0, #0x10 + strneb r0, [r1] + bx lr + arm_func_end ov29_022FAA04 + + arm_func_start ov29_022FAA58 +ov29_022FAA58: ; 0x022FAA58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r1, _022FAC90 ; =0x02353538 + mov sl, r0 + ldr r0, [r1] + mov r6, #0 + add r0, r0, #0x328 + add r4, r0, #0x12800 +_022FAA78: + ldr r5, [r4, r6, lsl #2] + mov r0, r5 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FAB98 + mov r0, r5 + mov r1, #0x37 + bl IqSkillIsEnabled + cmp r0, #0 + beq _022FAB98 + ldr sb, [r5, #0xb4] + mov r8, #0 + mov r7, r8 + add fp, sb, #0x124 +_022FAAB0: + ldrb r1, [fp, r7, lsl #3] + add r0, fp, r7, lsl #3 + str r0, [sp] + tst r1, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022FAB00 + ldr r0, [sp] + bl GetMaxPpWrapper + ldr r1, [sp] + ldrb r1, [r1, #6] + cmp r1, r0 + beq _022FAB00 + add r0, r8, #1 + mov r1, r0, lsl #0x10 + mov r2, r8, lsl #1 + add r0, sp, #4 + strh r7, [r0, r2] + mov r8, r1, asr #0x10 +_022FAB00: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022FAAB0 + cmp r8, #0 + ble _022FAB4C + mov r0, r8 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + add r1, sp, #4 + mov r0, r0, asr #0xf + ldrsh r0, [r1, r0] + add r1, sb, #0x124 + add r1, r1, r0, lsl #3 + ldrb r0, [r1, #6] + add r0, r0, #1 + strb r0, [r1, #6] + b _022FAB54 +_022FAB4C: + mov r0, #0 + b _022FAB58 +_022FAB54: + mov r0, #1 +_022FAB58: + cmp r0, #0 + beq _022FAB98 + mov r0, r5 + bl ov29_022E4964 + cmp sl, #0 + bne _022FAB98 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, #0x37 + bl ov29_0234B084 + mov r0, r5 + mov r1, #0xc20 + bl LogMessageByIdWithPopupCheckUser +_022FAB98: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #4 + blt _022FAA78 + mov r8, #0 + mov fp, r8 +_022FABB4: + ldr sb, [r4, r8, lsl #2] + mov r0, sb + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FAC74 + ldr r6, [sb, #0xb4] + mov r7, fp + add r5, r6, #0x124 + b _022FABFC +_022FABD8: + add r0, r5, r7, lsl #3 + bl GetMaxPp + add r1, r6, r7, lsl #3 + ldrb r1, [r1, #0x12a] + cmp r1, r0 + blt _022FAC04 + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022FABFC: + cmp r7, #4 + blt _022FABD8 +_022FAC04: + cmp r7, #4 + beq _022FAC74 + mov r0, sb + mov r1, #0x47 + bl ExclusiveItemEffectIsActive__022FAC98 + cmp r0, #0 + beq _022FAC74 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, sb + mov r1, #0x47 + add r2, sp, #0xc + bl ov29_0230F654 + mov r0, #1 + add r1, sp, #0xc + bl ov29_02344B44 + cmp sl, #0 + bne _022FAC60 + ldr r1, _022FAC94 ; =0x00000C23 + mov r0, sb + bl LogMessageByIdWithPopupCheckUser +_022FAC60: + mov r0, sb + mov r1, sb + mov r2, #1 + mov r3, sl + bl RestoreMovePP +_022FAC74: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022FABB4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FAC90: .word 0x02353538 +_022FAC94: .word 0x00000C23 + arm_func_end ov29_022FAA58 + + arm_func_start ExclusiveItemEffectIsActive__022FAC98 +ExclusiveItemEffectIsActive__022FAC98: ; 0x022FAC98 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__022FAC98 + + arm_func_start ov29_022FACBC +ov29_022FACBC: ; 0x022FACBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + ldr r1, _022FAD44 ; =0x02353538 + mov sb, r0 + ldr r0, [r1] + mov r8, #0 + add r0, r0, #0x328 + ldr r5, _022FAD48 ; =0x000003E7 + add r7, r0, #0x12800 + mov r4, r8 + mov r6, #0x48 +_022FACE8: + ldr sl, [r7, r8, lsl #2] + mov r0, sl + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FAD28 + mov r0, sl + mov r1, r6 + bl ExclusiveItemEffectIsActive__022FAC98 + cmp r0, #0 + beq _022FAD28 + mov r0, sl + mov r1, sl + mov r2, r5 + mov r3, r4 + str sb, [sp] + bl TryIncreaseHp +_022FAD28: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022FACE8 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FAD44: .word 0x02353538 +_022FAD48: .word 0x000003E7 + arm_func_end ov29_022FACBC + + arm_func_start ov29_022FAD4C +ov29_022FAD4C: ; 0x022FAD4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _022FAF00 ; =0x02353538 + mov r8, #0 + ldr r1, [r1] + sub r3, r8, #1 + add r2, r1, #0xcc00 + ldrsh r4, [r2, #0xe4] + add r1, r1, #0x328 + add r5, r1, #0x12800 + cmp r4, r3 + ldreqsh r1, [r2, #0xe6] + mov sb, r0 + moveq r0, r3 + cmpeq r1, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r7, #0 + mov r4, #0x1a + b _022FADE4 +_022FAD94: + ldr r6, [r5, r7, lsl #2] + mov r0, r6 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FADD8 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0x48] + cmp r0, #0xd9 + blo _022FADC0 + cmp r0, #0xe4 + blo _022FADD8 +_022FADC0: + mov r0, r6 + mov r1, r4 + bl IqSkillIsEnabled + cmp r0, #0 + movne r8, #1 + bne _022FADEC +_022FADD8: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022FADE4: + cmp r7, #4 + blt _022FAD94 +_022FADEC: + cmp r8, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl GetFloorType + cmp r0, #0 + bne _022FAEEC + cmp sb, #0 + bne _022FAE14 + ldr r1, _022FAF04 ; =0x00000C21 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_022FAE14: + bl GetLeader + mov r5, r0 + add r0, sp, #0 + add r1, sp, #2 + mov r4, #0 + bl ov29_023363C0 + ldrsh r1, [sp] + ldrsh r3, [r5, #4] + ldrsh r2, [sp, #2] + cmp r3, r1 + ldreqsh r0, [r5, #6] + cmpeq r0, r2 + cmp r3, r1 + bne _022FAE58 + ldrsh r0, [r5, #6] + cmp r0, r2 + movlt r4, #0 +_022FAE58: + cmp r3, r1 + ldrltsh r0, [r5, #6] + cmplt r0, r2 + movlt r4, #1 + cmp r3, r1 + bge _022FAE7C + ldrsh r0, [r5, #6] + cmp r0, r2 + moveq r4, #2 +_022FAE7C: + cmp r3, r1 + bge _022FAE90 + ldrsh r0, [r5, #6] + cmp r0, r2 + movgt r4, #3 +_022FAE90: + cmp r3, r1 + bne _022FAEA4 + ldrsh r0, [r5, #6] + cmp r0, r2 + movgt r4, #4 +_022FAEA4: + cmp r3, r1 + ldrgtsh r0, [r5, #6] + cmpgt r0, r2 + movgt r4, #5 + cmp r3, r1 + ble _022FAEC8 + ldrsh r0, [r5, #6] + cmp r0, r2 + moveq r4, #6 +_022FAEC8: + cmp r3, r1 + ble _022FAEDC + ldrsh r0, [r5, #6] + cmp r0, r2 + movlt r4, #7 +_022FAEDC: + mov r0, r5 + mov r1, r4 + bl ov29_022E6928 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FAEEC: + bl GetFloorType + cmp r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl GetFloorType + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FAF00: .word 0x02353538 +_022FAF04: .word 0x00000C21 + arm_func_end ov29_022FAD4C + + arm_func_start ov29_022FAF08 +ov29_022FAF08: ; 0x022FAF08 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _022FAFC8 ; =0x02353538 + mov r6, r0 + ldr r0, [r1] + mov r5, #0 + add r0, r0, #0x328 + add r8, r0, #0x12800 + bl ov29_022E0880 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov sb, r5 + mov r7, #0x36 + b _022FAF74 +_022FAF3C: + ldr r4, [r8, sb, lsl #2] + mov r0, r4 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FAF68 + mov r0, r4 + mov r1, r7 + bl IqSkillIsEnabled + cmp r0, #0 + movne r5, #1 + bne _022FAF7C +_022FAF68: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_022FAF74: + cmp sb, #4 + blt _022FAF3C +_022FAF7C: + cmp r5, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r1, _022FAFC8 ; =0x02353538 + ldr r0, _022FAFCC ; =0x00012AF8 + ldr r1, [r1] + ldrsh r1, [r1, r0] + cmp r1, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r6, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #0 + bl ov29_0234B09C + ldr r1, _022FAFD0 ; =0x00000C22 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x78 + mov r1, #0xa + bl ov29_022EA370 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FAFC8: .word 0x02353538 +_022FAFCC: .word 0x00012AF8 +_022FAFD0: .word 0x00000C22 + arm_func_end ov29_022FAF08 + + arm_func_start ov29_022FAFD4 +ov29_022FAFD4: ; 0x022FAFD4 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_022FAFD4 + + arm_func_start GetTeamMemberWithIqSkill +GetTeamMemberWithIqSkill: ; 0x022FAFF8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _022FB060 ; =0x02353538 + mov r4, #0 + ldr r1, [r1] + mov r5, r0 + add r0, r1, #0x328 + mov r7, r4 + add r6, r0, #0x12800 + b _022FB050 +_022FB01C: + ldr r0, [r6, r7, lsl #2] + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FB044 + ldr r0, [r6, r7, lsl #2] + mov r1, r5 + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r4, [r6, r7, lsl #2] + bne _022FB058 +_022FB044: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022FB050: + cmp r7, #4 + blt _022FB01C +_022FB058: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FB060: .word 0x02353538 + arm_func_end GetTeamMemberWithIqSkill + + arm_func_start TeamMemberHasEnabledIqSkill +TeamMemberHasEnabledIqSkill: ; 0x022FB064 + stmdb sp!, {r3, lr} + bl GetTeamMemberWithIqSkill + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end TeamMemberHasEnabledIqSkill + + arm_func_start TeamLeaderIqSkillIsEnabled +TeamLeaderIqSkillIsEnabled: ; 0x022FB080 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetLeader + mov r1, r4 + bl IqSkillIsEnabled + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end TeamLeaderIqSkillIsEnabled + + arm_func_start ov29_022FB0A8 +ov29_022FB0A8: ; 0x022FB0A8 + stmdb sp!, {r3, lr} + ldr ip, [r0, #0xb4] + mov r0, #0 + mov lr, r0 + mov r2, r0 + mov r3, #1 +_022FB0C0: + add r1, ip, lr, lsl #3 + ldrb r1, [r1, #0x124] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _022FB0F4 + add r1, ip, lr, lsl #3 + ldrb r1, [r1, #0x12a] + cmp r1, #0 + addeq r0, r0, #1 + moveq r0, r0, lsl #0x10 + moveq r0, r0, asr #0x10 +_022FB0F4: + add r1, lr, #1 + mov r1, r1, lsl #0x10 + mov lr, r1, asr #0x10 + cmp lr, #4 + blt _022FB0C0 + ldmia sp!, {r3, pc} + arm_func_end ov29_022FB0A8 + + arm_func_start ov29_022FB10C +ov29_022FB10C: ; 0x022FB10C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + ldr r6, [sb, #0xb4] + mov r7, #0 + mov sl, r0 + mov r8, r2 + add r4, r6, #0x124 + mov fp, r7 + mov r5, #1 + b _022FB198 +_022FB134: + add r0, r6, r7, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, r5 + moveq r0, fp + tst r0, #0xff + beq _022FB18C + cmp r8, #0 + beq _022FB168 + add r0, r4, r7, lsl #3 + bl ov29_02324798 + cmp r0, #0 + beq _022FB18C +_022FB168: + add r0, r4, r7, lsl #3 + bl GetMoveType + mov r2, r0 + mov r0, sb + mov r1, sl + bl ov29_0230AA8C + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_022FB18C: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022FB198: + cmp r7, #4 + blt _022FB134 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_022FB10C + + arm_func_start ov29_022FB1A8 +ov29_022FB1A8: ; 0x022FB1A8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + ldr r6, [r0, #0xb4] + mov r4, r7 + mov r5, #1 + b _022FB204 +_022FB1C0: + add r0, r6, r7, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022FB1F8 + add r0, r6, r7, lsl #3 + add r0, r0, #0x100 + ldrh r0, [r0, #0x28] + bl IsOneHitKoMove + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022FB1F8: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 +_022FB204: + cmp r7, #4 + blt _022FB1C0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FB1A8 + + arm_func_start ov29_022FB214 +ov29_022FB214: ; 0x022FB214 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x74 + mov sl, r0 + mov sb, r1 + mov r5, #0 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FB244 + mov r0, sb + bl EntityIsValid__022F7364 + cmp r0, #0 + bne _022FB24C +_022FB244: + mov r0, #0 + b _022FB508 +_022FB24C: + ldr r4, [sb, #0xb4] + ldrb r0, [r4, #6] + cmp r0, #0 + ldrsh r0, [r4, #0x66] + beq _022FB31C + cmp r0, #0 + beq _022FB504 + ldrsh r0, [r4, #0x66] + bl ov29_0231E990 + cmp r0, #0 + beq _022FB504 + mov r0, sl + add r1, r4, #0x62 + bl ov29_0231D4A4 + cmp r0, #0 + beq _022FB504 + mov r0, r5 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, sb + mov r0, #1 + mov r2, r5 + bl SubstitutePlaceholderStringTags + add r1, r4, #0x62 + mov r0, #1 + bl ov29_02344B44 + ldr r2, _022FB510 ; =0x00000C24 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldrh r2, [r4, #0x62] + mov r0, sl + add r1, r4, #0x62 + strh r2, [sp, #8] + ldrh r2, [r4, #0x64] + strh r2, [sp, #0xa] + ldrh r2, [r4, #0x66] + strh r2, [sp, #0xc] + bl ov29_0230F9A4 + add r0, r4, #0x62 + bl ItemZInit + mov r0, r5 + str sl, [sp] + add r1, sp, #8 + str r1, [sp, #4] + mov r3, sb + mov r1, r0 + mov r2, r0 + bl ApplyItemEffect + mov r5, #1 + b _022FB504 +_022FB31C: + bl ov29_0231E990 + cmp r0, #0 + beq _022FB3D4 + mov r0, sl + add r1, r4, #0x62 + bl ov29_0231D4A4 + cmp r0, #0 + beq _022FB504 + mov r0, r5 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, sb + mov r0, #1 + mov r2, r5 + bl SubstitutePlaceholderStringTags + add r1, r4, #0x62 + mov r0, #1 + bl ov29_02344B44 + ldr r2, _022FB510 ; =0x00000C24 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldrh r2, [r4, #0x62] + mov r0, sl + add r1, r4, #0x62 + strh r2, [sp, #8] + ldrh r2, [r4, #0x64] + strh r2, [sp, #0xa] + ldrh r2, [r4, #0x66] + strh r2, [sp, #0xc] + bl ov29_0230F9A4 + add r0, r4, #0x62 + bl RemoveEquivItem + add r0, r4, #0x62 + bl ItemZInit + mov r0, r5 + str sl, [sp] + add r1, sp, #8 + str r1, [sp, #4] + mov r3, sb + mov r1, r0 + mov r2, r0 + bl ApplyItemEffect + mov r5, #1 + b _022FB504 +_022FB3D4: + bl GetNbItemsInBag + mov r7, r0 + mov r6, r5 + add r4, sp, #0xe + b _022FB3F8 +_022FB3E8: + mov r0, r7 + bl RandInt + strb r0, [r4, r6] + add r6, r6, #1 +_022FB3F8: + cmp r6, r7 + blt _022FB3E8 + add r0, sp, #0xe + mov r1, #0 + add r0, r0, r7 + b _022FB418 +_022FB410: + strb r1, [r0, r1] + add r1, r1, #1 +_022FB418: + cmp r1, r7 + blt _022FB410 + mov r8, #0 + add r4, sp, #0xe + ldr fp, _022FB514 ; =0x020AF6B8 + b _022FB4FC +_022FB430: + ldrb r1, [r4, r8] + ldr r3, [fp] + mov r0, #6 + smulbb r2, r1, r0 + ldr r1, [r3, #0x384] + ldrb r0, [r1, r2] + add r6, r1, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022FB4F8 + ldrb r0, [r6, #1] + cmp r0, #0 + bne _022FB4F8 + ldrsh r0, [r6, #4] + bl ov29_0231E990 + cmp r0, #0 + beq _022FB4F8 + mov r0, sl + mov r1, r6 + bl ov29_0231D4A4 + cmp r0, #0 + beq _022FB504 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, sb + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r1, r6 + mov r0, #1 + bl ov29_02344B44 + mov r0, sl + mov r1, sb + ldr r2, _022FB518 ; =0x00000C25 + bl LogMessageByIdWithPopupCheckUserTarget + str sl, [sp] + mov r3, sb + str r6, [sp, #4] + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl ApplyItemEffect + mov r0, r6 + bl RemoveEquivItem + mov r5, #1 + b _022FB504 +_022FB4F8: + add r8, r8, #1 +_022FB4FC: + cmp r8, r7, lsl #1 + blt _022FB430 +_022FB504: + mov r0, r5 +_022FB508: + add sp, sp, #0x74 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FB510: .word 0x00000C24 +_022FB514: .word 0x020AF6B8 +_022FB518: .word 0x00000C25 + arm_func_end ov29_022FB214 + + arm_func_start ov29_022FB51C +ov29_022FB51C: ; 0x022FB51C + stmdb sp!, {r3, lr} + bl GetScenarioBalance__0204CB94 + cmp r0, #2 + movhs r0, #1 + movlo r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_022FB51C + + arm_func_start ov29_022FB538 +ov29_022FB538: ; 0x022FB538 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r5, [r6, #0xb4] + mov r4, #0 + ldr r7, _022FB5E8 ; =0x02353538 + strb r4, [r5, #0x10c] + ldr r0, [r7] + add r0, r0, #0x3000 + ldrb r0, [r0, #0xe38] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + b _022FB5DC +_022FB574: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + cmpne r8, r6 + beq _022FB5D8 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #2 + bne _022FB5D8 + mov r0, r6 + mov r1, r8 + bl ov29_022E274C + cmp r0, #0 + beq _022FB5D8 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xd9] + cmp r0, #0 + movne r0, #2 + moveq r0, #1 + strb r0, [r5, #0x10c] + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_022FB5D8: + add r4, r4, #1 +_022FB5DC: + cmp r4, #0x14 + blt _022FB574 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FB5E8: .word 0x02353538 + arm_func_end ov29_022FB538 + + arm_func_start ov29_022FB5EC +ov29_022FB5EC: ; 0x022FB5EC + stmdb sp!, {r4, lr} + bl GetSpawnThreshold + mov r4, r0 + bl GetScenarioBalance__022E095C + cmp r4, r0 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end ov29_022FB5EC + + arm_func_start HasLowHealth +HasLowHealth: ; 0x022FB610 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__022F7364 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r3, [r4, #0xb4] + ldr r0, _022FB674 ; =0x000003E7 + ldrsh r2, [r3, #0x12] + ldrsh r1, [r3, #0x16] + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r3, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_022FB674: .word 0x000003E7 + arm_func_end HasLowHealth + + arm_func_start ov29_022FB678 +ov29_022FB678: ; 0x022FB678 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, #0 + ldr r4, _022FB6E0 ; =0x0235171C + b _022FB6D0 +_022FB690: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh r3, [r4, r1] + ldrsh ip, [r7, #4] + ldrsh r1, [r0, #2] + ldrsh r2, [r7, #6] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr r0, [r0, #0xc] + cmp r0, r6 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_022FB6D0: + cmp r5, #8 + blt _022FB690 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FB6E0: .word 0x0235171C + arm_func_end ov29_022FB678 + + arm_func_start ov29_022FB6E4 +ov29_022FB6E4: ; 0x022FB6E4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl IsMonster__022F9720 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0x48] + cmp r0, #0xd6 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end ov29_022FB6E4 + + arm_func_start ov29_022FB718 +ov29_022FB718: ; 0x022FB718 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr sb, [sl, #0xb4] + mov r1, #0 + mov r0, sl + strh r1, [sb, #0x16] + bl Conversion2IsActive + mov r6, r0 + mov r0, sl + mov r1, #0x38 + ldr r4, [sl, #0xb4] + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r0, _022FB834 ; =0x020A1870 + mov r8, #0 + ldrnesh r1, [r4, #0x16] + ldrnesh r0, [r0] + add r5, r4, #0x124 + mov fp, r8 + addne r0, r1, r0 + strneh r0, [r4, #0x16] + mov r4, #1 +_022FB77C: + ldrb r0, [r5, r8, lsl #3] + add r7, r5, r8, lsl #3 + tst r0, #1 + movne r0, r4 + moveq r0, fp + tst r0, #0xff + beq _022FB7C0 + ldrh r2, [r7, #2] + mov r0, sl + mov r1, #0x39 + bic r2, r2, #0x100 + strh r2, [r7, #2] + bl IqSkillIsEnabled + cmp r0, #0 + ldrneh r0, [r7, #2] + orrne r0, r0, #0x100 + strneh r0, [r7, #2] +_022FB7C0: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022FB77C + mov r0, sl + bl ov29_02348100 + cmp r6, #2 + bne _022FB7FC + mov r0, sl + bl Conversion2IsActive + cmp r0, #0 + bne _022FB7FC + mov r0, sl + bl ov29_02307CE0 +_022FB7FC: + ldrsh r1, [sb, #0x12] + ldrsh r0, [sb, #0x16] + ldr r2, _022FB838 ; =0x000003E7 + add r1, r1, r0 + cmp r1, r2 + ldrsh r0, [sb, #0x10] + movle r2, r1 + cmp r0, r2 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, _022FB838 ; =0x000003E7 + cmp r1, r0 + movgt r1, r0 + strh r1, [sb, #0x10] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FB834: .word 0x020A1870 +_022FB838: .word 0x000003E7 + arm_func_end ov29_022FB718 + + arm_func_start ov29_022FB83C +ov29_022FB83C: ; 0x022FB83C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sl, r0 + mov sb, r1 + bl EntityIsValid__022F7364 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r8, [sl, #0xb4] + mov r7, #0 + add r6, r8, #0x124 + mov r4, r7 + mov r5, #1 +_022FB868: + ldrb r0, [r6, r7, lsl #3] + mov r1, r7, lsl #3 + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022FB88C + add r0, r6, r1 + bl GetMoveBasePp +_022FB88C: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022FB868 + mov r0, sl + bl ov29_022FB718 + cmp sb, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrsh r2, [r8, #0x12] + ldrsh r1, [r8, #0x16] + ldr r0, _022FB91C ; =0x000003E7 + mov sb, #0 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r8, #0x10] + add r6, r8, #0x124 + mov r4, sb + mov r5, #1 +_022FB8DC: + ldrb r0, [r6, sb, lsl #3] + add r7, r6, sb, lsl #3 + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _022FB904 + mov r0, r7 + bl GetMaxPp + strb r0, [r7, #6] +_022FB904: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 + blt _022FB8DC + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FB91C: .word 0x000003E7 + arm_func_end ov29_022FB83C + + arm_func_start ov29_022FB920 +ov29_022FB920: ; 0x022FB920 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, _022FB980 ; =0x02353538 + mov r5, #0 +_022FB92C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + bl ov29_022FB718 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #4 + blt _022FB92C + mov r0, #0x41 + bl TeamMemberHasEnabledIqSkill + cmp r0, #0 + ldrne r0, _022FB980 ; =0x02353538 + movne r1, #1 + ldreq r0, _022FB980 ; =0x02353538 + moveq r1, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + strb r1, [r0, #0x241] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FB980: .word 0x02353538 + arm_func_end ov29_022FB920 + + arm_func_start ov29_022FB984 +ov29_022FB984: ; 0x022FB984 + mov r0, #0 + bx lr + arm_func_end ov29_022FB984 + + arm_func_start ov29_022FB98C +ov29_022FB98C: ; 0x022FB98C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r2, #1 + ldr r0, _022FB9B8 ; =0x0000270F + mov r4, r1 + sub r3, r2, #2 + bl ov29_022EA718 + mov r0, r5 + mov r1, r4 + bl ov29_022E576C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FB9B8: .word 0x0000270F + arm_func_end ov29_022FB98C + + arm_func_start ov29_022FB9BC +ov29_022FB9BC: ; 0x022FB9BC + stmdb sp!, {r3, lr} + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xbc] + bl ov29_022EFB04 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_022FB9BC + + arm_func_start ov29_022FB9E0 +ov29_022FB9E0: ; 0x022FB9E0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl IsMonster__022F9720 + cmp r0, #0 + beq _022FBA4C + ldr r1, [r5, #0xb4] + mov r0, #0 + add ip, r1, #0x124 + mov r2, r0 + mov r3, #1 + b _022FBA44 +_022FBA10: + ldrb r1, [ip, r0, lsl #3] + add lr, ip, r0, lsl #3 + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _022FBA38 + ldrh r1, [lr, #4] + cmp r1, r4 + ldmeqia sp!, {r3, r4, r5, pc} +_022FBA38: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 +_022FBA44: + cmp r0, #4 + blt _022FBA10 +_022FBA4C: + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022FB9E0 + + arm_func_start ov29_022FBA54 +ov29_022FBA54: ; 0x022FBA54 + stmdb sp!, {r3, lr} + bl ov29_022FB9E0 + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_022FBA54 + + arm_func_start ov29_022FBA70 +ov29_022FBA70: ; 0x022FBA70 + stmdb sp!, {r4, lr} + mov r4, r0 + bl IsMonster__022F9720 + cmp r0, #0 + beq _022FBAAC + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0x48] + cmp r0, #0xfa + moveq r0, #1 + ldmeqia sp!, {r4, pc} + cmp r0, #0xd9 + blo _022FBAAC + cmp r0, #0xe4 + movlo r0, #1 + ldmloia sp!, {r4, pc} +_022FBAAC: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_022FBA70 + + arm_func_start ov29_022FBAB4 +ov29_022FBAB4: ; 0x022FBAB4 + ldr r2, [r0, #0xb4] + cmp r2, #0 + addne r0, r2, #0x100 + movne r1, #0 + strneh r1, [r0, #0x92] + strne r1, [r2, #0x18c] + bx lr + arm_func_end ov29_022FBAB4 + + arm_func_start IsSpecialStoryAlly +IsSpecialStoryAlly: ; 0x022FBAD0 + ldrb r0, [r0, #0x48] + cmp r0, #0xd9 + blo _022FBAE8 + cmp r0, #0xe4 + movlo r0, #1 + bxlo lr +_022FBAE8: + mov r0, #0 + bx lr + arm_func_end IsSpecialStoryAlly + + arm_func_start IsExperienceLocked +IsExperienceLocked: ; 0x022FBAF0 + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x48] + cmp r1, #0xfa + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl IsSpecialStoryAlly + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsExperienceLocked + + arm_func_start ov29_022FBB1C +ov29_022FBB1C: ; 0x022FBB1C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + ldr r4, _022FBBE4 ; =0x02353538 + ldr sl, _022FBBE8 ; =0x00019914 + mov r7, #0 + add r6, sp, #0 + mov r5, #3 +_022FBB38: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FBBD0 + ldr sb, [r8, #0xb4] + ldr r2, [r4] + ldrsh r1, [sb, #4] + add r0, r8, #0x2c + add r1, r2, r1, lsl #1 + ldrsh r1, [r1, sl] + strh r1, [r8, #0xa8] + bl sub_0201C0CC + ldrsh r1, [r8, #0xa8] + add r0, r8, #0x2c + bl sub_0201C0E8 + mov r0, r8 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r8 + bl ov29_02304830 + ldrh r0, [r8, #4] + mov r2, r6 + mov r3, r5 + strh r0, [sp] + ldrh r0, [r8, #6] + strh r0, [sp, #2] + ldr r0, [sb, #0xb0] + ldrsh r1, [sb, #4] + bl ov29_022DDA54 + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + bl GetTileSafe + ldrb r0, [r0, #7] + strb r0, [r8, #0x25] +_022FBBD0: + add r7, r7, #1 + cmp r7, #0x14 + blt _022FBB38 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FBBE4: .word 0x02353538 +_022FBBE8: .word 0x00019914 + arm_func_end ov29_022FBB1C + + arm_func_start ov29_022FBBEC +ov29_022FBBEC: ; 0x022FBBEC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r4, #0 + ldr r6, _022FBC48 ; =0x02353538 + b _022FBC38 +_022FBC00: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FBC34 + ldr r0, [r7, #0xb4] + ldrb r0, [r0, #0xbc] + cmp r5, r0 + moveq r0, r7 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FBC34: + add r4, r4, #1 +_022FBC38: + cmp r4, #0x14 + blt _022FBC00 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FBC48: .word 0x02353538 + arm_func_end ov29_022FBBEC + + arm_func_start ov29_022FBC4C +ov29_022FBC4C: ; 0x022FBC4C + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + ldr r4, _022FBC90 ; =0x02353538 + b _022FBC80 +_022FBC5C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + bl EntityIsValid__022F7364 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + add r5, r5, #1 +_022FBC80: + cmp r5, #4 + blt _022FBC5C + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FBC90: .word 0x02353538 + arm_func_end ov29_022FBC4C + + arm_func_start ov29_022FBC94 +ov29_022FBC94: ; 0x022FBC94 + stmdb sp!, {r4, r5, r6, lr} + bl GetBodySize + ldr r6, _022FBD04 ; =0x02353538 + mov r4, r0 + mov r5, #0 +_022FBCA8: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + bl EntityIsValid__022F7364 + cmp r0, #0 + beq _022FBCE4 + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + ldr r0, [r0, #0xb4] + ldrsh r0, [r0, #2] + bl GetBodySize + add r4, r4, r0 +_022FBCE4: + add r5, r5, #1 + cmp r5, #4 + blt _022FBCA8 + cmp r4, #6 + movle r0, #1 + movgt r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FBD04: .word 0x02353538 + arm_func_end ov29_022FBC94 + + arm_func_start ov29_022FBD08 +ov29_022FBD08: ; 0x022FBD08 + ldr r0, _022FBD20 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x3000 + str r1, [r0, #0xe1c] + bx lr + .align 2, 0 +_022FBD20: .word 0x02353538 + arm_func_end ov29_022FBD08 + + arm_func_start ov29_022FBD24 +ov29_022FBD24: ; 0x022FBD24 + stmdb sp!, {r4, lr} + mov r4, r0 + bl IsMonster__022F9720 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _022FBD7C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1cc + add r3, r0, #0x3c00 + ldr r2, [r3, #0x50] + cmp r2, #0x14 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0xb4] + mov r0, #1 + ldr r1, [r1, #0xb0] + str r1, [r3, r2, lsl #2] + ldr r1, [r3, #0x50] + add r1, r1, #1 + str r1, [r3, #0x50] + ldmia sp!, {r4, pc} + .align 2, 0 +_022FBD7C: .word 0x02353538 + arm_func_end ov29_022FBD24 + + arm_func_start ov29_022FBD80 +ov29_022FBD80: ; 0x022FBD80 + stmdb sp!, {r4, lr} + mov r4, r0 + bl IsMonster__022F9720 + cmp r0, #0 + beq _022FBDD4 + ldr r0, _022FBDDC ; =0x02353538 + ldr r1, [r4, #0xb4] + ldr r0, [r0] + ldr r2, [r1, #0xb0] + add r0, r0, #0x1cc + add r1, r0, #0x3c00 + ldr ip, [r1, #0x50] + mov r3, #0 + b _022FBDCC +_022FBDB8: + ldr r0, [r1, r3, lsl #2] + cmp r2, r0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + add r3, r3, #1 +_022FBDCC: + cmp r3, ip + blt _022FBDB8 +_022FBDD4: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FBDDC: .word 0x02353538 + arm_func_end ov29_022FBD80 + + arm_func_start ov29_022FBDE0 +ov29_022FBDE0: ; 0x022FBDE0 + ldr ip, _022FBDEC ; =ov29_022EFAE8 + ldrb r0, [r0, #0xbc] + bx ip + .align 2, 0 +_022FBDEC: .word ov29_022EFAE8 + arm_func_end ov29_022FBDE0 + + arm_func_start ov29_022FBDF0 +ov29_022FBDF0: ; 0x022FBDF0 + ldr r0, [r0, #0xb4] + ldr ip, _022FBE00 ; =ov29_022EFB04 + ldrb r0, [r0, #0xbc] + bx ip + .align 2, 0 +_022FBE00: .word ov29_022EFB04 + arm_func_end ov29_022FBDF0 + + arm_func_start ov29_022FBE04 +ov29_022FBE04: ; 0x022FBE04 + stmdb sp!, {r3, lr} + ldrb r0, [r0, #6] + cmp r0, #0 + bne _022FBE4C + ldr r0, _022FBE54 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl GetTurnLimit + ldr r1, _022FBE54 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x700 + ldrsh r1, [r1, #0x84] + cmp r1, r0 + bne _022FBE4C + bl ov29_023361D4 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} +_022FBE4C: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBE54: .word 0x02353538 + arm_func_end ov29_022FBE04 + + arm_func_start ov29_022FBE58 +ov29_022FBE58: ; 0x022FBE58 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr ip, [r4, #0xb4] + mov r6, #1 + strb r6, [ip, #0x100] + ldrsh r5, [ip, #0x12] + ldrsh r3, [ip, #0x16] + ldr r7, _022FBF04 ; =0x022C5938 + mov r0, #0xc + add r5, r5, r3 + smlabb r3, r1, r0, r7 + rsb lr, r6, #0x3e8 + cmp r5, lr + movgt r5, lr + strh r5, [ip, #0x14] + mov r0, #0 + strh r0, [ip, #0x16] + strh r0, [ip, #0x18] + ldrsh r5, [r3, #2] + add lr, ip, #0x100 + add r0, ip, #0x90 + strh r5, [ip, #0x12] + ldrsh r5, [r3, #2] + strh r5, [ip, #0x10] + ldrb r5, [r3, #6] + strb r5, [ip, #0x1a] + ldrb r5, [r3, #7] + strb r5, [ip, #0x1b] + ldrb r5, [r3, #8] + strb r5, [ip, #0x1c] + ldrb r3, [r3, #9] + strb r3, [ip, #0x1d] + strh r1, [lr, #0x68] + strb r2, [ip, #0x16a] + ldrsh r1, [ip, #2] + ldrsh r2, [ip, #0xe] + bl sub_02058EB0 + mov r0, r4 + bl ov29_023021F0 + mov r0, r4 + mov r1, #1 + bl ov29_022FB83C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FBF04: .word 0x022C5938 + arm_func_end ov29_022FBE58 + + arm_func_start ov29_022FBF08 +ov29_022FBF08: ; 0x022FBF08 + stmdb sp!, {r3, lr} + ldr r0, _022FBF2C ; =0x02353538 + ldr r0, [r0] + ldr r0, [r0, #0x7cc] + sub r0, r0, #1 + cmp r0, #1 + ldmhiia sp!, {r3, pc} + bl LoadWazaP2 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBF2C: .word 0x02353538 + arm_func_end ov29_022FBF08 + + arm_func_start ov29_022FBF30 +ov29_022FBF30: ; 0x022FBF30 + stmdb sp!, {r3, lr} + ldr r0, _022FBF54 ; =0x02353538 + ldr r0, [r0] + ldr r0, [r0, #0x7cc] + sub r0, r0, #1 + cmp r0, #1 + ldmhiia sp!, {r3, pc} + bl UnloadCurrentWazaP + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBF54: .word 0x02353538 + arm_func_end ov29_022FBF30 + + arm_func_start ov29_022FBF58 +ov29_022FBF58: ; 0x022FBF58 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x218 + ldr r1, _022FC230 ; =0x02353538 + mov r0, #0 + ldr r1, [r1] + add r1, r1, #0xf4 + add r5, r1, #0x3400 + bl DungeonRngSetSecondary + bl ov29_022FBF08 + add r0, sp, #0x16 + mov r1, #0 + bl ov29_022E7BE8 + mov r4, r0 + mov r6, #0 + b _022FC028 +_022FBF94: + add r0, sp, #0x16 + add r7, r0, r6, lsl #3 + mov r0, r7 + bl GetMonsterIdFromSpawnEntry + strh r0, [r5] + mov r0, r7 + bl GetMonsterLevelFromSpawnEntry + strh r0, [r5, #2] + ldrsh r1, [r5] + ldrsh r2, [r5, #2] + add r0, r5, #4 + bl ov29_02303B18 + ldrh r0, [r5, #4] + cmp r0, #0 + moveq r0, #0x170 + streqh r0, [r5, #4] + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl ov29_022FE2FC + strh r0, [r5, #0xc] + mov r7, #0 +_022FBFE8: + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r2, r7 + add r8, r5, r7 + bl ov29_022FE350 + strb r0, [r8, #0xe] + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r2, r7 + bl ov29_022FE3B8 + add r7, r7, #1 + strb r0, [r8, #0x10] + cmp r7, #2 + blt _022FBFE8 + add r5, r5, #0x12 + add r6, r6, #1 +_022FC028: + cmp r6, r4 + blt _022FBF94 + mov r0, #0 + b _022FC040 +_022FC038: + strh r0, [r5], #0x12 + add r6, r6, #1 +_022FC040: + cmp r6, #0x40 + blt _022FC038 + cmp r4, #0x40 + bge _022FC0A8 + bl IsDestinationFloorWithFixedRoom + cmp r0, #0 + bne _022FC0A8 + bl IsDestinationFloorWithMonster + cmp r0, #0 + beq _022FC0A8 + mov r0, #0xa + bl IsCurrentMissionType + cmp r0, #0 + bne _022FC088 + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _022FC0A8 +_022FC088: + add r0, sp, #8 + bl ov29_022FE420 + add r0, sp, #0x16 + ldrsh r1, [sp, #0xc] + ldrsh r2, [sp, #8] + add r0, r0, r4, lsl #3 + bl SetMonsterLevelAndId + add r4, r4, #1 +_022FC0A8: + cmp r4, #0x40 + bge _022FC0E0 + ldr r0, _022FC230 ; =0x02353538 + ldr r2, [r0] + add r0, r2, #0x700 + ldrsh r1, [r0, #0xa8] + cmp r1, #0 + beq _022FC0E0 + ldrb r1, [r2, #0x7aa] + ldrsh r2, [r0, #0xa8] + add r3, sp, #0x16 + add r0, r3, r4, lsl #3 + bl SetMonsterLevelAndId + add r4, r4, #1 +_022FC0E0: + mov r2, #0 + ldr r1, _022FC230 ; =0x02353538 + mov sl, r2 +_022FC0EC: + ldr r0, [r1] + add r0, r0, r2 + add r0, r0, #0x3000 + add r2, r2, #1 + strb sl, [r0, #0xb74] + cmp r2, #0x258 + blt _022FC0EC + mvn r0, #0 + mov r5, #1 + str r0, [sp] + b _022FC1E8 +_022FC118: + ldr r6, [sp] + mov r8, #0 + mov r7, r6 + b _022FC194 +_022FC128: + add r0, sp, #0x16 + add sb, r0, r8, lsl #3 + mov r0, sb + bl GetMonsterIdFromSpawnEntry + mov fp, r0 + mov r0, sb + bl GetMonsterLevelFromSpawnEntry + str r0, [sp, #4] + mov r0, fp + mov r1, #0x258 + bl DivideInt + ldr r0, _022FC230 ; =0x02353538 + mov r1, r1, lsl #0x10 + ldr r0, [r0] + mov sb, r1, asr #0x10 + add r0, r0, r1, asr #16 + add r0, r0, #0x3000 + ldrb r0, [r0, #0xb74] + cmp r0, #0 + bne _022FC190 + ldr r1, [sp, #4] + mov r0, sb + bl GetExp + cmp r7, r0 + movlt r7, r0 + movlt r6, sb +_022FC190: + add r8, r8, #1 +_022FC194: + cmp r8, r4 + blt _022FC128 + cmp r6, #0 + blt _022FC1F0 + cmp r5, #0x100 + ble _022FC1C8 + ldr r0, _022FC230 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r6 + add r1, r0, #0x3000 + mov r0, #1 + strb r0, [r1, #0xb74] + b _022FC1E4 +_022FC1C8: + ldr r0, _022FC230 ; =0x02353538 + rsb r1, r5, #0x100 + ldr r0, [r0] + add r5, r5, #2 + add r0, r0, r6 + add r0, r0, #0x3000 + strb r1, [r0, #0xb74] +_022FC1E4: + add sl, sl, #1 +_022FC1E8: + cmp sl, r4 + blt _022FC118 +_022FC1F0: + ldr r1, _022FC230 ; =0x02353538 + mov r4, #0 + mov r2, #1 +_022FC1FC: + ldr r0, [r1] + add r0, r0, r4 + add r0, r0, #0x3000 + ldrb r3, [r0, #0xb74] + add r4, r4, #1 + cmp r3, #0 + streqb r2, [r0, #0xb74] + cmp r4, #0x258 + blt _022FC1FC + bl ov29_022FBF30 + bl DungeonRngSetPrimary + add sp, sp, #0x218 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC230: .word 0x02353538 + arm_func_end ov29_022FBF58 + + arm_func_start ov29_022FC234 +ov29_022FC234: ; 0x022FC234 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + ldrsh r0, [sp, #0x30] + mov sb, r1 + mov r1, #0x258 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x34] + bl DivideInt + mov r0, r1, lsl #0x10 + ldr r2, _022FC464 ; =0x02353538 + mov r4, r0, asr #0x10 + ldr r1, [r2] + mov fp, #0 + add r0, r1, #0xf4 + add r5, r0, #0x3400 + mov r3, r5 + mov r0, #0x12 + b _022FC314 +_022FC284: + mul r2, fp, r0 + ldrsh r1, [r3, r2] + add r5, r3, r2 + cmp r1, #0 + beq _022FC31C + cmp r1, r4 + ldreqsh r1, [r5, #2] + cmpeq r1, r6 + bne _022FC310 + mov r1, r4 + mov r2, r6 + add r0, r5, #4 + bl ov29_02303B18 + mov r4, #0 +_022FC2BC: + add r0, r5, r4, lsl #1 + ldrh r1, [r0, #4] + add r0, sl, r4, lsl #3 + bl GetInfoMoveCheckId + add r4, r4, #1 + cmp r4, #4 + blt _022FC2BC + ldrsh r0, [r5, #0xc] + mov r2, #0 + strh r0, [sb] +_022FC2E4: + add r1, r5, r2 + ldrb r0, [r1, #0xe] + strb r0, [r8, r2] + ldrb r0, [r1, #0x10] + strb r0, [r7, r2] + add r2, r2, #1 + cmp r2, #2 + blt _022FC2E4 + mov r0, #0 + strb r0, [sl, #0x20] + b _022FC45C +_022FC310: + add fp, fp, #1 +_022FC314: + cmp fp, #0x40 + blt _022FC284 +_022FC31C: + cmp fp, #0x40 + bne _022FC3A4 + add r0, sp, #0 + mov r1, r4 + mov r2, r6 + bl ov29_02303B18 + mov r5, #0 + add fp, sp, #0 +_022FC33C: + mov r0, r5, lsl #1 + ldrh r1, [fp, r0] + add r0, sl, r5, lsl #3 + bl GetInfoMoveCheckId + add r5, r5, #1 + cmp r5, #4 + blt _022FC33C + mov r0, r4 + mov r1, r6 + bl ov29_022FE2FC + strh r0, [sb] + mov r5, #0 +_022FC36C: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl ov29_022FE350 + strb r0, [r8, r5] + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl ov29_022FE3B8 + strb r0, [r7, r5] + add r5, r5, #1 + cmp r5, #2 + blt _022FC36C + b _022FC454 +_022FC3A4: + strh r4, [r5] + mov r1, r4 + mov r2, r6 + strh r6, [r5, #2] + add r0, r5, #4 + bl ov29_02303B18 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl ov29_022FE2FC + strh r0, [r5, #0xc] + mov r6, #0 +_022FC3D0: + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r2, r6 + add r4, r5, r6 + bl ov29_022FE350 + strb r0, [r4, #0xe] + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + mov r2, r6 + bl ov29_022FE3B8 + add r6, r6, #1 + strb r0, [r4, #0x10] + cmp r6, #2 + blt _022FC3D0 + mov r4, #0 +_022FC40C: + add r0, r5, r4, lsl #1 + ldrh r1, [r0, #4] + add r0, sl, r4, lsl #3 + bl GetInfoMoveCheckId + add r4, r4, #1 + cmp r4, #4 + blt _022FC40C + ldrsh r0, [r5, #0xc] + mov r2, #0 + strh r0, [sb] +_022FC434: + add r1, r5, r2 + ldrb r0, [r1, #0xe] + strb r0, [r8, r2] + ldrb r0, [r1, #0x10] + strb r0, [r7, r2] + add r2, r2, #1 + cmp r2, #2 + blt _022FC434 +_022FC454: + mov r0, #0 + strb r0, [sl, #0x20] +_022FC45C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC464: .word 0x02353538 + arm_func_end ov29_022FC234 + + arm_func_start ov29_022FC468 +ov29_022FC468: ; 0x022FC468 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, [sp, #0x24] + mov sb, r0 + cmp r4, #0xb + mov r0, #0 + cmp r4, #0xc + moveq r0, #1 + cmp r4, #0xd + moveq r0, #2 + cmp r4, #0xe + moveq r0, #3 + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [sp, #0x20] + bl GetExplorerMazeMonster + mov r4, r0 + mov r0, sb + add r1, r4, #0x22 + bl GroundToDungeonMoveset + ldrsh r0, [r4, #0xa] + mov r2, #0 + strh r0, [r8] +_022FC4C4: + add r1, r4, r2 + ldrb r0, [r1, #0xc] + strb r0, [r7, r2] + ldrb r0, [r1, #0xe] + strb r0, [r6, r2] + add r2, r2, #1 + cmp r2, #2 + blt _022FC4C4 + ldrsh r1, [r4, #8] + ldr r0, _022FC508 ; =0x020A1C7C + ldr r0, [r0, #0x20] + strh r1, [r5] + cmp r1, r0 + strlth r0, [r5] + mov r0, #0 + strb r0, [sb, #0x20] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FC508: .word 0x020A1C7C + arm_func_end ov29_022FC468 + + arm_func_start InitTeam +InitTeam: ; 0x022FC50C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + mov sl, r0 + mov r0, #0 + bl DungeonRngSetSecondary + ldr r0, _022FC98C ; =0x02353538 + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe0] + ldrsh r1, [r1, #0xe2] + bl GetTile + ldrb fp, [r0, #7] + mov r4, #0 +_022FC540: + mov r0, r4 + bl GetActiveTeamMember + add r1, r4, #1 + mov r1, r1, lsl #0x10 + strh r4, [r0, #0xa] + mov r4, r1, asr #0x10 + cmp r4, #4 + blt _022FC540 + mov r7, #0 + mov r6, #1 + mov r8, r7 + mov r5, r7 + mov sb, r6 + add r4, sp, #0x34 +_022FC578: + mov r0, r8 + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r2, r6 + moveq r2, r5 + tst r2, #0xff + beq _022FC5B0 + tst r1, #2 + movne r1, sb + moveq r1, #0 + tst r1, #0xff + strne r0, [r4, r7, lsl #2] + addne r7, r7, #1 +_022FC5B0: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022FC578 + mov r1, #0 + add r0, sp, #0x34 + b _022FC5D8 +_022FC5D0: + str r1, [r0, r7, lsl #2] + add r7, r7, #1 +_022FC5D8: + cmp r7, #4 + blt _022FC5D0 + mov r8, #0 + mov r7, r8 + mov r3, r8 + mov r4, #1 + mov r2, r8 + add r5, sp, #0x34 + add r1, sp, #0x24 +_022FC5FC: + ldr r6, [r5, r7, lsl #2] + cmp r6, #0 + beq _022FC628 + ldrb r0, [r6, #1] + cmp r0, #0 + movne r0, r4 + moveq r0, r3 + tst r0, #0xff + strne r6, [r1, r8, lsl #2] + strne r2, [r5, r7, lsl #2] + addne r8, r8, #1 +_022FC628: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022FC5FC + ldr r0, _022FC98C ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75c] + cmp r0, #0 + bne _022FC698 + mov r7, #0 + mov r4, r7 + add r5, sp, #0x34 + add sb, sp, #0x24 +_022FC660: + ldr r6, [r5, r7, lsl #2] + cmp r6, #0 + beq _022FC684 + ldrb r0, [r6, #3] + bl JoinedAtRangeCheck2Veneer + cmp r0, #0 + strne r6, [sb, r8, lsl #2] + strne r4, [r5, r7, lsl #2] + addne r8, r8, #1 +_022FC684: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _022FC660 +_022FC698: + mov r4, #0 + mov r2, r4 + add r1, sp, #0x24 + add r3, sp, #0x34 +_022FC6A8: + ldr r0, [r3, r4, lsl #2] + cmp r0, #0 + strne r0, [r1, r8, lsl #2] + add r0, r4, #1 + mov r0, r0, lsl #0x10 + strne r2, [r3, r4, lsl #2] + mov r4, r0, asr #0x10 + addne r8, r8, #1 + cmp r4, #4 + blt _022FC6A8 + mov r1, #0 + add r0, sp, #0x24 + b _022FC6E4 +_022FC6DC: + str r1, [r0, r8, lsl #2] + add r8, r8, #1 +_022FC6E4: + cmp r8, #4 + blt _022FC6DC + mov sb, #0 +_022FC6F0: + add r0, sp, #0x24 + ldr r5, [r0, sb, lsl #2] + mov r6, #0 + cmp r5, #0 + beq _022FC8BC + ldrsh r1, [r5, #0xc] + sub r0, r1, #0x17c + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #2 + ldrls r0, _022FC990 ; =0x0000017B + strlsh r0, [r5, #0xc] + bls _022FC74C + sub r0, r1, #0x3d4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #2 + ldrls r0, _022FC994 ; =0x000003D3 + strlsh r0, [r5, #0xc] +_022FC74C: + mov r4, #0 +_022FC750: + ldr r0, _022FC998 ; =0x02351E28 + mov r1, r4, lsl #2 + ldrh r1, [r0, r1] + add r0, r0, r4, lsl #2 + ldrh r0, [r0, #2] + strh r1, [sp, #0x1e] + ldrsh r8, [sp, #0x1e] + strh r0, [sp, #0x20] + cmp r8, #0x63 + beq _022FC808 + ldr r0, _022FC98C ; =0x02353538 + ldrsh r7, [sp, #0x20] + ldr r0, [r0] + add r0, r0, #0xcc00 + ldrsh r1, [r0, #0xe2] + ldrsh r2, [r0, #0xe0] + add r1, r7, r1 + add r0, r8, r2 + bl GetTile + mov r1, r0 + ldrb r0, [r1, #7] + cmp r0, fp + bne _022FC800 + ldrsh r0, [r5, #0xc] + bl ov29_022FF6C4 + cmp r0, #0 + bne _022FC800 + ldr r0, _022FC98C ; =0x02353538 + mov r1, #0 + ldr r2, [r0] + mov r0, #1 + str r1, [sp] + stmib sp, {r0, r1, sl} + str r1, [sp, #0x10] + add r0, r2, #0xcc00 + ldrsh r1, [r0, #0xe0] + ldrsh r2, [r0, #0xe2] + ldrsh r0, [r5, #0xc] + mov r3, r5 + add r1, r8, r1 + add r2, r7, r2 + bl InitTeamMember + mov r6, #1 + b _022FC808 +_022FC800: + add r4, r4, #1 + b _022FC750 +_022FC808: + cmp r6, #0 + bne _022FC8BC + ldr r8, _022FC998 ; =0x02351E28 + mov r7, #0 +_022FC818: + mov r0, r7, lsl #2 + ldrh r1, [r8, r0] + add r0, r8, r7, lsl #2 + ldrh r0, [r0, #2] + strh r1, [sp, #0x14] + ldrsh r6, [sp, #0x14] + strh r0, [sp, #0x16] + cmp r6, #0x63 + beq _022FC8BC + ldr r0, _022FC98C ; =0x02353538 + ldrsh r4, [sp, #0x16] + ldr r0, [r0] + add r0, r0, #0xcc00 + ldrsh r1, [r0, #0xe2] + ldrsh r2, [r0, #0xe0] + add r1, r4, r1 + add r0, r6, r2 + bl GetTile + mov r1, r0 + ldrsh r0, [r5, #0xc] + bl ov29_022FF6C4 + cmp r0, #0 + bne _022FC8B4 + ldr r0, _022FC98C ; =0x02353538 + mov r1, #0 + ldr r2, [r0] + mov r0, #1 + str r1, [sp] + stmib sp, {r0, r1, sl} + str r1, [sp, #0x10] + add r0, r2, #0xcc00 + ldrsh r1, [r0, #0xe0] + ldrsh r2, [r0, #0xe2] + ldrsh r0, [r5, #0xc] + mov r3, r5 + add r1, r6, r1 + add r2, r4, r2 + bl InitTeamMember + b _022FC8BC +_022FC8B4: + add r7, r7, #1 + b _022FC818 +_022FC8BC: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 + blt _022FC6F0 + bl ov29_022FCD04 + mov r2, #0 + mov r8, r2 + add r1, sp, #0x18 +_022FC8E0: + add r0, r2, #1 + mov r0, r0, lsl #0x10 + strb r8, [r1, r2] + mov r2, r0, asr #0x10 + cmp r2, #5 + blt _022FC8E0 + ldr r4, _022FC98C ; =0x02353538 + mov r6, #0 + mov r7, #1 + add r5, sp, #0x18 +_022FC908: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + bl EntityIsValid__022FC99C + cmp r0, #0 + beq _022FC964 + ldr r0, [r4] + add r1, r8, r8, lsl #3 + add r0, r0, #0x56 + add r2, r0, #0x800 + ldrb r0, [r2, r1, lsl #6] + add r2, r2, r1, lsl #6 + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + ldrneb r1, [r2, #1] + cmpne r1, #0 + addne r0, r8, #1 + andne r0, r0, #0xff + strneb r0, [r5, r1] + strneb r0, [r2, #1] +_022FC964: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _022FC908 + add r0, sp, #0x18 + bl sub_0200F9B4 + bl DungeonRngSetPrimary + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC98C: .word 0x02353538 +_022FC990: .word 0x0000017B +_022FC994: .word 0x000003D3 +_022FC998: .word 0x02351E28 + arm_func_end InitTeam diff --git a/asm/overlay_29_022FC9C0.s b/asm/overlay_29_022FC9C0.s new file mode 100644 index 00000000..cc672efc --- /dev/null +++ b/asm/overlay_29_022FC9C0.s @@ -0,0 +1,2540 @@ + .include "asm/macros.inc" + .include "overlay_29_022FC9C0.inc" + + .text + + arm_func_start ov29_022FC9C0 +ov29_022FC9C0: ; 0x022FC9C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov r0, #0 + bl DungeonRngSetSecondary + mov sl, #0 + mov r8, #1 + mov sb, sl + mov r7, sl + mov r5, sl + mov r6, r8 + ldr r4, _022FCCF0 ; =0x000055AA + b _022FCA44 +_022FC9F0: + mov r0, sb + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r2, r8 + moveq r2, r7 + tst r2, #0xff + beq _022FCA38 + tst r1, #2 + movne r1, r6 + moveq r1, r5 + tst r1, #0xff + beq _022FCA38 + ldrsh r1, [r0, #8] + cmp r1, r4 + streq r0, [sp, #0x18] + addeq sl, sl, #1 + beq _022FCA4C +_022FCA38: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_022FCA44: + cmp sb, #4 + blt _022FC9F0 +_022FCA4C: + mov r1, #0 + add r0, sp, #0x18 + b _022FCA60 +_022FCA58: + str r1, [r0, sl, lsl #2] + add sl, sl, #1 +_022FCA60: + cmp sl, #4 + blt _022FCA58 + ldr r0, _022FCCF4 ; =0x0235355C + mov r1, #0 + str r1, [r0] + bl GetLeader + mov r4, r0 + bl EntityIsValid__022FC99C + cmp r0, #0 + ldreq r0, _022FCCF8 ; =0x02353538 + ldrnesh sb, [r4, #4] + ldreq r0, [r0] + ldrnesh r8, [r4, #6] + addeq r0, r0, #0xcc00 + ldreqsh sb, [r0, #0xe0] + ldreqsh r8, [r0, #0xe2] + mov r0, sb + mov r1, r8 + bl GetTile + ldrb r4, [r0, #7] + mov sl, #0 +_022FCAB4: + add r0, sp, #0x18 + ldr r6, [r0, sl, lsl #2] + mov r7, #0 + cmp r6, #0 + beq _022FCCD0 + ldrb r0, [r6] + tst r0, #1 + movne r1, #1 + moveq r1, r7 + tst r1, #0xff + beq _022FCCD0 + tst r0, #2 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _022FCCD0 + ldrsh r1, [r6, #8] + ldr r0, _022FCCF0 ; =0x000055AA + cmp r1, r0 + bne _022FCCD0 + ldr r0, _022FCCFC ; =0x00005AA5 + ldr fp, _022FCD00 ; =0x02351E28 + mov r5, #0 + strh r0, [r6, #8] +_022FCB14: + mov r0, r5, lsl #2 + ldrh r0, [fp, r0] + add r1, fp, r5, lsl #2 + ldrh r1, [r1, #2] + strh r0, [sp, #0x14] + ldrsh r0, [sp, #0x14] + strh r1, [sp, #0x16] + cmp r0, #0x63 + beq _022FCBAC + ldrsh r1, [sp, #0x16] + add r0, r0, sb + add r1, r1, r8 + bl GetTile + mov r1, r0 + ldrb r0, [r1, #7] + cmp r0, r4 + bne _022FCBA4 + ldrsh r0, [r6, #0xc] + bl ov29_022FF6C4 + cmp r0, #0 + bne _022FCBA4 + mov r1, #0 + str r1, [sp] + mov r0, #1 + stmib sp, {r0, r1} + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrsh r1, [sp, #0x14] + ldrsh r2, [sp, #0x16] + ldrsh r0, [r6, #0xc] + mov r3, r6 + add r1, r1, sb + add r2, r2, r8 + bl InitTeamMember + mov r7, #1 + b _022FCBAC +_022FCBA4: + add r5, r5, #1 + b _022FCB14 +_022FCBAC: + cmp r7, #0 + bne _022FCC48 + ldr fp, _022FCD00 ; =0x02351E28 + mov r5, #0 +_022FCBBC: + mov r0, r5, lsl #2 + ldrh r0, [fp, r0] + add r1, fp, r5, lsl #2 + ldrh r1, [r1, #2] + strh r0, [sp, #0x14] + ldrsh r0, [sp, #0x14] + strh r1, [sp, #0x16] + cmp r0, #0x63 + beq _022FCC48 + ldrsh r1, [sp, #0x16] + add r0, r0, sb + add r1, r1, r8 + bl GetTile + mov r1, r0 + ldrsh r0, [r6, #0xc] + bl ov29_022FF6C4 + cmp r0, #0 + bne _022FCC40 + mov r1, #0 + str r1, [sp] + mov r0, #1 + stmib sp, {r0, r1} + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrsh r1, [sp, #0x14] + ldrsh r2, [sp, #0x16] + ldrsh r0, [r6, #0xc] + mov r3, r6 + add r1, r1, sb + add r2, r2, r8 + bl InitTeamMember + mov r7, #1 + b _022FCC48 +_022FCC40: + add r5, r5, #1 + b _022FCBBC +_022FCC48: + cmp r7, #0 + bne _022FCCD0 + mov r7, #0 + add r5, sp, #0x14 + mov fp, r7 + b _022FCCC8 +_022FCC60: + mov r0, r5 + mov r1, fp + bl ov29_022E9628 + cmp r0, #0 + beq _022FCCC4 + ldrsh r0, [sp, #0x14] + ldrsh r1, [sp, #0x16] + bl GetTile + mov r1, r0 + ldrsh r0, [r6, #0xc] + bl ov29_022FF6C4 + cmp r0, #0 + bne _022FCCC4 + mov r1, #0 + str r1, [sp] + mov r0, #1 + stmib sp, {r0, r1} + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldrsh r0, [r6, #0xc] + ldrsh r1, [sp, #0x14] + ldrsh r2, [sp, #0x16] + mov r3, r6 + bl InitTeamMember + b _022FCCD0 +_022FCCC4: + add r7, r7, #1 +_022FCCC8: + cmp r7, #0x64 + blt _022FCC60 +_022FCCD0: + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 + cmp sl, #4 + blt _022FCAB4 + bl DungeonRngSetPrimary + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FCCF0: .word 0x000055AA +_022FCCF4: .word 0x0235355C +_022FCCF8: .word 0x02353538 +_022FCCFC: .word 0x00005AA5 +_022FCD00: .word 0x02351E28 + arm_func_end ov29_022FC9C0 + + arm_func_start ov29_022FCD04 +ov29_022FCD04: ; 0x022FCD04 + stmdb sp!, {r4, r5, r6, lr} + mov r5, #0 + ldr r4, _022FCD70 ; =0x02353538 + b _022FCD64 +_022FCD14: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb28] + mov r0, r6 + bl EntityIsValid__022FC99C + cmp r0, #0 + ldrne r0, [r6, #0xb4] + ldrneb r0, [r0, #7] + cmpne r0, #0 + beq _022FCD60 + mov r0, r6 + bl ov29_022E2DFC + ldrh r1, [r6, #4] + ldr r0, _022FCD74 ; =0x0237C690 + strh r1, [r0] + ldrh r1, [r6, #6] + strh r1, [r0, #2] + ldmia sp!, {r4, r5, r6, pc} +_022FCD60: + add r5, r5, #1 +_022FCD64: + cmp r5, #4 + blt _022FCD14 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FCD70: .word 0x02353538 +_022FCD74: .word 0x0237C690 + arm_func_end ov29_022FCD04 + + arm_func_start ov29_022FCD78 +ov29_022FCD78: ; 0x022FCD78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + add r0, sp, #0x24 + mov r1, #0xe + bl MemZero + mov r0, #0 + strb r0, [sp, #0x2c] + mov r7, #1 + bl IsDestinationFloorWithFixedRoom + cmp r0, #0 + bne _022FCE00 + bl IsDestinationFloorWithMonster + cmp r0, #0 + beq _022FCE00 + mov r0, #0xa + bl IsCurrentMissionType + cmp r0, #0 + bne _022FCDD0 + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _022FCDDC +_022FCDD0: + add r0, sp, #0x24 + bl ov29_022FE420 + b _022FCE34 +_022FCDDC: + bl ov29_023491A4 + ldrsh r2, [r0, #0xc] + mov r0, r7 + mov r1, #7 + strh r2, [sp, #0x24] + strb r1, [sp, #0x26] + strh r0, [sp, #0x28] + strb r0, [sp, #0x2a] + b _022FCE34 +_022FCE00: + ldr r0, _022FD080 ; =0x02353538 + ldr r2, [r0] + add r0, r2, #0x700 + ldrsh r0, [r0, #0xa8] + cmp r0, #0 + moveq r7, #0 + beq _022FCE34 + mov r1, #0 + strb r1, [sp, #0x26] + strh r0, [sp, #0x24] + ldrb r0, [r2, #0x7aa] + strh r0, [sp, #0x28] + strb r1, [sp, #0x2a] +_022FCE34: + ldr r0, _022FD080 ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x38 + add r1, r1, #0x3000 + strb r2, [r1, #0xe39] + bl DungeonRandInt + mov r6, r0 + mov r0, #0x20 + bl DungeonRandInt + mov sl, r0 + mov r0, #0 + bl DungeonRngSetSecondary + bl ov29_022FBF08 + mov sb, #0 + mov fp, sb +_022FCE74: + add sl, sl, #1 + cmp sl, #0x20 + moveq sl, #0 + mov r0, sl, lsl #0x10 + mov r5, #0 + mov r4, r0, asr #0x10 +_022FCE8C: + add r6, r6, #1 + cmp r6, #0x38 + moveq r6, #0 + mov r0, r6 + mov r1, sl + bl GetTile + ldrh r0, [r0, #2] + tst r0, #8 + beq _022FCF48 + cmp sb, #0 + mov r8, #0 + add sb, sb, #1 + bne _022FCED0 + cmp r7, #0 + beq _022FCF48 + mov r8, #1 + b _022FCEE8 +_022FCED0: + mov r0, r8 + bl GetMonsterIdToSpawn + strh r0, [sp, #0x14] + mov r0, r8 + strh r0, [sp, #0x1c] + strb r0, [sp, #0x16] +_022FCEE8: + mov r0, #0 + str r0, [sp, #0x18] + strb r0, [sp, #0x22] + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r8, #0 + strh r4, [sp, #0x20] + strh r0, [sp, #0x1e] + cmpne r7, #0 + beq _022FCF28 + strh r0, [sp, #0x2e] + mov r0, #1 + strb r0, [sp, #0x2c] + strh r4, [sp, #0x30] + mov r7, #0 + b _022FCF48 +_022FCF28: + ldrsh r0, [sp, #0x14] + mov r1, #1 + bl MewSpawnCheck + cmp r0, #0 + beq _022FCF48 + add r0, sp, #0x14 + mov r1, #0 + bl SpawnMonster +_022FCF48: + add r5, r5, #1 + cmp r5, #0x38 + blt _022FCE8C + add fp, fp, #1 + cmp fp, #0x20 + blt _022FCE74 + bl DungeonRngSetPrimary + mov r0, #0 + bl DungeonRngSetSecondary + ldrb r0, [sp, #0x2c] + cmp r0, #0 + beq _022FD060 + ldrsh r3, [sp, #0x24] + ldrb r2, [sp, #0x26] + ldrsh r1, [sp, #0x28] + ldrb r0, [sp, #0x2b] + strh r3, [sp, #4] + strb r2, [sp, #6] + strh r1, [sp, #0xc] + cmp r0, #0 + beq _022FD020 + bl IsOutlawMonsterHouseFloor + cmp r0, #0 + bne _022FCFB4 + bl IsDestinationFloorWithFleeingOutlaw + cmp r0, #0 + beq _022FCFEC +_022FCFB4: + ldr r1, _022FD080 ; =0x02353538 + add r0, sp, #0 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0xce0 + add r1, r1, #0xc000 + bl ov29_022E9A0C + cmp r0, #0 + ldrnesh r1, [sp] + ldrnesh r0, [sp, #2] + moveq r7, #1 + strneh r1, [sp, #0x2e] + strneh r0, [sp, #0x30] + b _022FD020 +_022FCFEC: + ldr r1, _022FD080 ; =0x02353538 + add r0, sp, #0 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0xce0 + add r1, r1, #0xc000 + bl ov29_022E99F0 + cmp r0, #0 + ldrnesh r1, [sp] + ldrnesh r0, [sp, #2] + moveq r7, #1 + strneh r1, [sp, #0x2e] + strneh r0, [sp, #0x30] +_022FD020: + cmp r7, #0 + bne _022FD060 + ldrsh r3, [sp, #0x2e] + ldrsh r2, [sp, #0x30] + mov r1, #0 + add r0, sp, #4 + str r1, [sp, #8] + strb r1, [sp, #0x12] + strh r3, [sp, #0xe] + strh r2, [sp, #0x10] + bl SpawnMonster + cmp r0, #0 + bne _022FD060 + ldrb r0, [sp, #0x2a] + cmp r0, #0 + movne r7, #1 +_022FD060: + cmp r7, #0 + beq _022FD070 + mov r0, #1 + bl SetTargetMonsterNotFoundFlag +_022FD070: + bl ov29_022FBF30 + bl DungeonRngSetPrimary + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FD080: .word 0x02353538 + arm_func_end ov29_022FCD78 + + arm_func_start SpawnMonster +SpawnMonster: ; 0x022FD084 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, r1 + ldrsh r0, [r7, #0xa] + ldrsh r1, [r7, #0xc] + bl GetTile + mov r1, r0 + ldrsh r0, [r7] + bl ov29_022FF6C4 + cmp r0, #0 + movne r0, #0 + bne _022FD2F8 + ldrsh r0, [r7] + bl ov29_022E20C0 + movs r4, r0 + mov r0, #0 + beq _022FD2F8 + ldr r3, _022FD300 ; =0x0237C690 + mov r1, r4 + mov r2, r7 + bl ov29_022FD9D4 + ldr r5, [r4, #0xb4] + mov r0, #1 + strb r0, [r5, #6] + mov r1, #0 + strb r1, [r5, #8] + ldr r0, _022FD304 ; =0x02353538 + ldr r1, _022FD308 ; =0x0002CB08 + ldr r2, [r0] + mov r0, r4 + ldrsh r1, [r2, r1] + strh r1, [r5, #0xe] + bl ov29_023021F0 + ldrb r0, [r7, #2] + bl ov29_022EFAE8 + cmp r0, #0 + beq _022FD154 + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _022FD150 + mov r0, #0x49 + strb r0, [r5, #0x62] + mov r0, #1 + strh r0, [r5, #0x64] + bl GetItemToRetrieve + strh r0, [r5, #0x66] + mov r0, #0 + strb r0, [r5, #0x63] + b _022FD154 +_022FD150: + bl IsDestinationFloorWithFleeingOutlaw +_022FD154: + ldrb ip, [r7, #2] + add r0, ip, #0xf5 + and r0, r0, #0xff + cmp r0, #3 + bhi _022FD194 + add r0, r5, #0xe + str r0, [sp] + add r0, r5, #0x124 + add r1, r5, #0x12 + add r2, r5, #0x1a + add r3, r5, #0x1c + str ip, [sp, #4] + bl ov29_022FC468 + mov r0, r4 + bl ov29_023021F0 + b _022FD1F0 +_022FD194: + ldrsh r2, [r5, #2] + add r0, r5, #0x124 + add r1, r5, #0x12 + str r2, [sp] + ldrb ip, [r5, #0xa] + add r2, r5, #0x1a + add r3, r5, #0x1c + str ip, [sp, #4] + bl ov29_022FC234 + ldrb r1, [r5, #6] + cmp r1, #0 + beq _022FD1D0 + ldrb r0, [r7, #2] + cmp r0, #0xa + beq _022FD1E8 +_022FD1D0: + cmp r1, #0 + beq _022FD1F0 + ldrb r0, [r7, #2] + bl ov29_022EFB04 + cmp r0, #0 + beq _022FD1F0 +_022FD1E8: + mov r0, #1 + strb r0, [r5, #8] +_022FD1F0: + ldrb r0, [r7, #2] + bl ov29_022EFAE8 + cmp r0, #0 + beq _022FD224 + ldr r0, _022FD30C ; =0x022C45A4 + ldrsh r2, [r5, #0x12] + ldrsh r1, [r0] + ldr r0, _022FD310 ; =0x000003E7 + add r1, r2, r1 + strh r1, [r5, #0x12] + ldrsh r1, [r5, #0x12] + cmp r1, r0 + strgth r0, [r5, #0x12] +_022FD224: + ldr r0, _022FD304 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + cmp r0, #0x67 + bne _022FD278 + ldr r1, _022FD314 ; =0x022C489C + add r0, r5, #0x1a + ldrb r1, [r1] + bl sub_02054FEC + ldr r1, _022FD314 ; =0x022C489C + add r0, r5, #0x1b + ldrb r1, [r1, #1] + bl sub_02054FEC + ldr r1, _022FD314 ; =0x022C489C + add r0, r5, #0x1c + ldrb r1, [r1, #2] + bl sub_02055020 + ldr r1, _022FD314 ; =0x022C489C + add r0, r5, #0x1d + ldrb r1, [r1, #3] + bl sub_02055020 +_022FD278: + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _022FD310 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r5, #0x10] + ldr r1, [r7, #4] + mov r0, r4 + str r1, [r5, #0x120] + mov r1, #1 + bl ov29_022FB83C + ldrb r0, [r7, #2] + cmp r0, #0 + cmpeq r6, #0 + ldreqb r0, [r7, #0xe] + cmpeq r0, #0 + bne _022FD2F4 + mov r0, #0x64 + bl DungeonRandInt + mov r5, r0 + ldrsh r0, [r7] + bl GetChanceAsleep + cmp r0, r5 + ble _022FD2F4 + mov r0, r4 + mov r1, #0x7f + bl InflictSleepStatusSingle + mov r0, r4 + mov r1, #8 + bl ov29_02304A48 +_022FD2F4: + mov r0, r4 +_022FD2F8: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FD300: .word 0x0237C690 +_022FD304: .word 0x02353538 +_022FD308: .word 0x0002CB08 +_022FD30C: .word 0x022C45A4 +_022FD310: .word 0x000003E7 +_022FD314: .word 0x022C489C + arm_func_end SpawnMonster + + arm_func_start ov29_022FD318 +ov29_022FD318: ; 0x022FD318 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov29_022FBC4C + cmp r0, #0 + moveq r0, #0 + beq _022FD3AC + cmp r4, #0 + bne _022FD36C + mov r0, r6 + mov r1, r5 + bl GetTile + mov r1, r0 + mov r0, r7 + bl ov29_022FF6C4 + cmp r0, #0 + movne r0, #0 + bne _022FD3AC +_022FD36C: + mov r1, r7 + mov r0, #0 + bl ov29_022F9408 + bl GetSpriteIndex__022F7388 + mov r4, r0 + mov r0, #1 + bl ov29_022DEA10 + str r0, [sp] + add r0, sp, #8 + mov r2, r7 + mov r3, r4 + add r1, sp, #4 + bl ov29_022E1C84 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 +_022FD3AC: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end ov29_022FD318 + + arm_func_start InitTeamMember +InitTeamMember: ; 0x022FD3B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x14 + mov r5, r3 + ldrb r3, [r5, #1] + mov r7, r0 + ldr r4, [sp, #0x38] + cmp r3, #0 + movne r0, #1 + moveq r0, #0 + and r6, r0, #0xff + cmp r4, #0 + movne r0, #0 + strne r0, [r4] + mov r0, r7 + mov sl, r1 + mov sb, r2 + bl GetBaseForm + ldr r1, _022FD77C ; =0x000001A2 + cmp r0, r1 + bne _022FD420 + ldrb r0, [sp, #0x3c] + cmp r0, #0 + ldrne r0, _022FD780 ; =0x02353538 + ldrne r0, [r0] + addne r0, r0, #0x3e00 + ldrnesh r7, [r0, #0x3a] + moveq r7, r1 +_022FD420: + ldrb r0, [sp, #0x48] + mov r1, sl + mov r2, sb + cmp r0, #0 + movne r3, #1 + moveq r3, #0 + mov r0, r7 + and r3, r3, #0xff + bl ov29_022FD318 + cmp r0, #0 + moveq r0, #0 + beq _022FD774 + mov r0, r7 + bl ov29_022E1D2C + ldr r1, _022FD784 ; =0x0237C9C0 + strh r7, [sp, #4] + ldrb r3, [r1] + ldr r2, _022FD788 ; =0x0235171C + ldr r1, _022FD78C ; =0x0235171E + mov r3, r3, lsl #2 + ldrsh r2, [r2, r3] + ldrsh r1, [r1, r3] + mov r7, r0 + strh sl, [sp, #0xe] + strh sb, [sp, #0x10] + ldrb r8, [r5, #2] + mov r3, #0 + add r2, sl, r2 + add r1, sb, r1 + strh r2, [sp] + strh r1, [sp, #2] + strb r3, [sp, #6] + str r3, [sp, #8] + strb r3, [sp, #0x12] + cmp r6, #0 + addne r3, sp, #0 + ldreq r3, _022FD790 ; =0x0237C690 + add r2, sp, #4 + mov r1, r7 + mov r0, #1 + strh r8, [sp, #0xc] + bl ov29_022FD9D4 + ldr r8, [r7, #0xb4] + mov r2, #0 + strb r2, [r8, #6] + strb r2, [r8, #8] + strb r2, [r8, #9] + ldrb r1, [sp, #0x40] + strb r6, [r8, #7] + ldr r0, _022FD794 ; =0x0235355C + strb r1, [r8, #0x102] + str r2, [r0] + cmp r6, #0 + ldrne r0, _022FD790 ; =0x0237C690 + mov r3, #0 + strneh sl, [r0] + strneh sb, [r0, #2] + ldrsh r0, [r5, #0xe] + strh r0, [r8, #0x10] + ldrsh r0, [r5, #0x10] + strh r0, [r8, #0x12] + strh r3, [r8, #0x16] + ldr r0, [r5, #0x18] + str r0, [r8, #0x20] +_022FD520: + add r2, r5, r3 + ldrb r0, [r2, #0x12] + add r1, r8, r3 + add r3, r3, #1 + strb r0, [r1, #0x1a] + ldrb r0, [r2, #0x14] + cmp r3, #2 + strb r0, [r1, #0x1c] + blt _022FD520 + add r3, r5, #0x1c + add r2, r8, #0x124 + mov r1, #0x11 +_022FD550: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022FD550 + mov r2, #0 + add r1, r8, #0x124 + mov sb, r2 + mov sl, #1 +_022FD570: + ldrb r3, [r1, r2, lsl #3] + mov r0, r2, lsl #3 + add r2, r2, #1 + tst r3, #1 + movne r3, sl + moveq r3, sb + tst r3, #0xff + ldrneb r3, [r1, r0] + bicne r6, r3, #0x10 + andne r3, r6, #0xff + bicne r3, r3, #0x20 + strneb r3, [r1, r0] + cmp r2, #4 + blt _022FD570 + ldrb r1, [r8, #0x144] + add r0, r5, #0x4c + add sb, r8, #0x90 + bic r2, r1, #0x10 + and r1, r2, #0xff + bic r1, r1, #0x20 + strb r1, [r8, #0x144] + ldrb r1, [r5, #2] + add r3, r8, #0x100 + mov r6, #0 + strb r1, [r8, #0xa] + ldrsh r1, [r5, #6] + strh r1, [r8, #0xe] + ldrb r1, [r5, #0x58] + strb r1, [r8, #0xa8] + ldmia r0, {r0, r1, r2} + stmia sb, {r0, r1, r2} + ldrh r1, [r5, #0x5a] + mov r0, r7 + strh r1, [r8, #0x44] + ldrh r1, [r5, #0x5c] + strh r1, [r8, #0x46] + ldrb r1, [r5, #3] + strb r1, [r8, #0x48] + ldrb r1, [r5, #4] + strb r1, [r8, #0x49] + ldrh r1, [r5, #0x44] + strh r1, [r3, #0x46] + ldrh r1, [r5, #0x46] + strh r1, [r3, #0x48] + ldrh r1, [r5, #0x48] + strh r1, [r3, #0x4a] + ldrh r1, [r5, #0x4a] + strh r1, [r3, #0x4c] + ldrsh r1, [r5, #0xa] + strh r1, [r8, #0xc] + ldrh r1, [r5, #0x3e] + strh r1, [r8, #0x62] + ldrh r1, [r5, #0x40] + strh r1, [r8, #0x64] + ldrh r1, [r5, #0x42] + strh r1, [r8, #0x66] + strb r6, [r8, #0xfc] + strb r6, [r8, #0x103] + strb r6, [r8, #0x23c] + strb r6, [r8, #0x23d] + strh r6, [r8, #0x68] + bl ov29_023021F0 + ldrb r1, [sp, #0x44] + mov r0, r7 + bl ov29_022FB83C + bl GetCurrentBagCapacity + cmp r0, #1 + beq _022FD760 + bl ov29_022E0880 + cmp r0, #0 + bne _022FD760 + mov r0, r7 + bl ov29_022FBA70 + cmp r0, #0 + bne _022FD760 + ldrb r0, [r8, #0x60] + cmp r0, #0x47 + ldrneb r0, [r8, #0x61] + cmpne r0, #0x47 + bne _022FD760 + ldr r2, [r7, #0xb4] + ldr r0, _022FD798 ; =0x022C4520 + ldrb r1, [r2, #6] + ldrsh r5, [r0] + cmp r1, #0 + movne r0, #0 + bne _022FD6D8 + add r0, r2, #0x228 + mov r1, #0x61 + bl ExclusiveItemEffectFlagTest +_022FD6D8: + cmp r0, #0 + beq _022FD6FC + ldr r1, _022FD79C ; =0x022C4858 + mov r0, r5, lsl #8 + ldr r1, [r1] + bl MultiplyByFixedPoint + mov r1, r0, asr #7 + add r0, r0, r1, lsr #24 + mov r5, r0, asr #8 +_022FD6FC: + mov r0, r5 + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _022FD760 + ldrb r0, [r8, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _022FD760 + bl IsBagFull + cmp r0, #0 + bne _022FD760 + mov r0, #0 + bl ov29_022E7AC4 + mov r1, r0 + cmp r1, #0xb7 + beq _022FD760 + add r0, r8, #0x62 + mov r2, #0 + bl InitStandardItem + mov r0, r8 + bl ov29_02346F14 + mov r0, #1 + strb r0, [r8, #0xfc] +_022FD760: + mov r0, r7 + bl ov29_022F9EA0 + cmp r4, #0 + strne r7, [r4] + mov r0, #1 +_022FD774: + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FD77C: .word 0x000001A2 +_022FD780: .word 0x02353538 +_022FD784: .word 0x0237C9C0 +_022FD788: .word 0x0235171C +_022FD78C: .word 0x0235171E +_022FD790: .word 0x0237C690 +_022FD794: .word 0x0235355C +_022FD798: .word 0x022C4520 +_022FD79C: .word 0x022C4858 + arm_func_end InitTeamMember + + arm_func_start ov29_022FD7A0 +ov29_022FD7A0: ; 0x022FD7A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r7, r0 + mov r6, r1 + ldrb r1, [r7, #0xaa] + mov r0, r6 + mov r4, #0 + bl ov29_022E1AAC + mov sb, r0 + mov r0, r7 + bl ov29_022E1AD4 + ldr r5, [r7, #0xb4] + mov r8, r0 + ldr r0, [r5, #0xb0] + bl ov29_022DDB68 + ldrb r0, [r5, #6] + cmp r0, #0 + beq _022FD864 + cmp sb, r8 + ble _022FD864 + mov r1, r6 + mov r0, r4 + bl ov29_022F9408 + mov r8, r0 + bl GetSpriteIndex__022F7388 + mov r4, r0 + mov r0, r7 + mov r1, #1 + bl ov29_022E1C0C + mov r0, #1 + bl ov29_022E1F34 + mov r3, r4 + ldrb r4, [r7, #0xaa] + mov r2, r8 + add r0, sp, #0xc + add r1, sp, #8 + str r4, [sp] + bl ov29_022E2018 + cmp r0, #0 + bne _022FD860 + ldrb r2, [r7, #0xaa] + add r0, sp, #0xc + add r1, sp, #8 + str r2, [sp] + ldr r2, [r7, #0xb4] + ldrsh r3, [r7, #0xa8] + ldrsh r2, [r2, #4] + bl ov29_022E2018 +_022FD860: + mov r4, #1 +_022FD864: + mov r0, #0 + strh r6, [sp, #0x10] + strh r0, [sp, #0x18] + strb r0, [sp, #0x12] + ldrh r2, [r7, #4] + mov r1, r6 + strh r2, [sp, #0x1a] + ldrh r2, [r7, #6] + strh r2, [sp, #0x1c] + str r0, [sp, #0x14] + bl ov29_022F9408 + mov r1, #0 + strb r1, [r7, #0x22] + ldr r1, [r7, #0xb4] + strh r0, [r1, #4] + ldr r1, [r7, #0xb4] + strh r6, [r1, #2] + bl GetSpriteIndex__022F7388 + strh r0, [r7, #0xa8] + cmp r4, #0 + beq _022FD904 + ldr r0, [sp, #0xc] + add r0, r0, #0x62 + strh r0, [r7, #0xac] + ldr r1, [sp, #0xc] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17a] + ldr r1, [sp, #8] + ldr r0, [r7, #0xb4] + strb r1, [r0, #0x17b] + ldrb r0, [r5, #6] + cmp r0, #0 + beq _022FD904 + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, r1, lsr #0x10 + bl ov29_022E1EC4 +_022FD904: + mov r0, #7 + strb r0, [r7, #0xae] + mov r1, #0 + strb r1, [r7, #0xb0] + mov r0, #0xff + strb r0, [r7, #0xaf] + mov r0, #1 + strb r0, [r7, #0xb1] + strb r0, [r7, #0xb3] + strb r1, [r7, #0x28] + str r1, [r7, #0x1c] + ldrb r0, [r5, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _022FD94C + ldr r0, [r5, #0xb4] + bl FreeOtherWrappedMonsters +_022FD94C: + ldrb r0, [r5, #6] + add r2, sp, #0x10 + mov r1, r7 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + mov r3, #0 + bl ov29_022FD9D4 + ldrsh r2, [r5, #2] + add r0, r5, #0x124 + add r1, r5, #0x12 + str r2, [sp] + ldrb r4, [r5, #0xa] + add r2, r5, #0x1a + add r3, r5, #0x1c + str r4, [sp, #4] + bl ov29_022FC234 + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _022FD9D0 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r5, #0x10] + mov r1, #0 + mov r0, r7 + strb r1, [r5, #9] + bl ov29_022E6644 + mov r0, r7 + bl UpdateStatusIconFlags + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FD9D0: .word 0x000003E7 + arm_func_end ov29_022FD7A0 + + arm_func_start ov29_022FD9D4 +ov29_022FD9D4: ; 0x022FD9D4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + ldr r4, _022FDDB0 ; =0x02353538 + mov r7, r1 + ldr r4, [r4] + mov r1, #1 + strb r1, [r4, #0xe] + ldr r4, [r7, #0xb4] + mov r8, r0 + mov r6, r2 + mov r0, r4 + mov r5, r3 + bl ov29_022FDDC0 + mov r0, #0 + ldrb r2, [r6, #2] + mov r3, #1 + sub r1, r0, #1 + strb r2, [r4, #0xbc] + strb r3, [r7, #0x20] + strb r0, [r7, #0x22] + sub r0, r0, #2 + strh r1, [r7, #8] + strh r1, [r7, #0xa] + strh r0, [r7, #4] + strh r0, [r7, #6] + mov r0, r7 + ldrsh r1, [r6, #0xa] + ldrsh r2, [r6, #0xc] + bl ov29_022F85F0 + mov r0, r7 + mov r1, #0 + bl ov29_022E1A40 + cmp r8, #0 + bne _022FDAD4 + ldrsh r1, [r6] + ldr r0, _022FDDB4 ; =0x0000017F + cmp r1, r0 + addne r0, r0, #0x258 + cmpne r1, r0 + bne _022FDAAC + ldr r0, _022FDDB0 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x790] + cmp r0, #0 + bne _022FDAAC + add r0, r1, #0x4000 + ldrb r0, [r0, #0xc6] + cmp r0, #0 + beq _022FDAAC + ldrb r0, [r6, #2] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r4, #9] + beq _022FDAB4 +_022FDAAC: + mov r0, #0 + strb r0, [r4, #9] +_022FDAB4: + ldrsh r0, [r4, #2] + bl GetBaseForm + cmp r0, #0x97 + ldreq r0, _022FDDB0 ; =0x02353538 + moveq r1, #1 + ldreq r0, [r0] + addeq r0, r0, #0x3000 + streqb r1, [r0, #0xe39] +_022FDAD4: + ldr r1, _022FDDB0 ; =0x02353538 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x3000 + ldr r0, [r0, #0xe2c] + str r0, [r4, #0xb0] + ldr r0, [r1] + add r0, r0, #0x3000 + ldr r1, [r0, #0xe2c] + add r1, r1, #1 + str r1, [r0, #0xe2c] + str r2, [r4, #0xb4] + ldrsh r0, [r6, #8] + cmp r0, #0 + bne _022FDB18 + ldrsh r0, [r6] + bl GetMonsterLevelToSpawn +_022FDB18: + strb r0, [r4, #0xa] + ldr r0, [r6, #4] + mov r2, #1 + str r0, [r4, #0x120] + strh r2, [r4, #0xe] + ldrsh r1, [r4, #2] + add r0, r4, #0x90 + bl sub_02058EB0 + add r0, r4, #0x44 + bl ShuffleHiddenPower + mov r1, #1 + strh r1, [r4, #0x12] + mov r0, #0x64 + strh r1, [r4, #0x10] + bl sub_02050FF8 + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r0, [sp, #4] + add r1, r4, #0x100 + ldrh r2, [sp, #6] + strh r0, [r1, #0x46] + mov r0, #0x64 + strh r2, [r1, #0x48] + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r2, [sp] + add r0, r4, #0x100 + ldrh r1, [sp, #2] + strh r2, [r0, #0x4a] + cmp r5, #0 + strh r1, [r0, #0x4c] + ldrneh r1, [r5] + strneh r1, [r0, #0x7e] + ldrneh r1, [r5, #2] + moveq r1, #0 + streqh r1, [r0, #0x7e] + strh r1, [r0, #0x80] + mov r3, #0 + strh r3, [r4] + strb r3, [r4, #0x14e] + strb r3, [r4, #0x14f] + add r0, r4, #0x200 + strh r3, [r0, #0xc] + strh r3, [r0, #0xe] + strb r3, [r4, #0x7c] + ldrh r2, [r7, #4] + mov r0, r4 + mov r1, #1 + strh r2, [r4, #0x8c] + ldrh r2, [r7, #6] + strh r2, [r4, #0x8e] + str r3, [r4, #0x84] + str r3, [r4, #0x88] + strh r3, [r4, #0x80] + strb r3, [r4, #0x10b] + str r3, [r4, #0x188] + strb r3, [r4, #0x10c] + strb r3, [r4, #0x23c] + strb r3, [r4, #0x23d] + strb r3, [r4, #0x23f] + bl ov29_022FDDC0 + add r0, r4, #0x62 + bl ItemZInit + mov r2, #0 + strh r2, [r4, #0x68] + str r2, [r4, #0x218] + str r2, [r4, #0x21c] + mov r0, #0xff + strb r0, [r4, #0x177] + strb r0, [r4, #0x178] + str r2, [r4, #0x214] + strb r2, [r4, #0x151] + strb r2, [r4, #0x150] + strb r2, [r4, #0x179] + add r0, r4, #0x200 + strh r2, [r0, #0x10] + strh r2, [r0, #0x12] + strb r2, [r4, #0x152] + strb r2, [r4, #0x153] + add r0, r4, #0x100 + strh r2, [r0, #0x92] + str r2, [r4, #0x18c] + strb r2, [r4, #0x105] + strb r2, [r4, #0x104] + strb r2, [r4, #0x109] + strb r2, [r4, #0x155] + mov r1, #1 + strb r1, [r4, #0x156] + strh r2, [r0, #0x58] + strh r2, [r0, #0x5a] + strb r2, [r4, #0x15c] + strb r2, [r4, #0x15d] + strb r2, [r4, #0x15e] + strb r2, [r4, #0x15f] + strb r2, [r4, #0x17c] + strb r2, [r4, #0x106] + strb r2, [r4, #0x107] + mov r0, #0x63 + strb r0, [r4, #0x10a] + strb r2, [r4, #0x162] + strb r2, [r4, #0x163] + strb r2, [r4, #0x164] + strb r2, [r4, #0x165] + strb r2, [r4, #0x170] + mov r0, r7 + strb r2, [r4, #0x171] + bl CalcSpeedStageWrapper + mov r0, #1 + strb r0, [r4, #0x160] + mov r0, #0 + strb r0, [r4, #0x172] + strb r0, [r4, #0x174] + strb r0, [r4, #0x173] + strb r0, [r4, #0x175] + strb r0, [r4, #0x176] + ldrsh r1, [r4, #4] + cmp r1, #0x32 + ldrne r0, _022FDDB8 ; =0x0000028A + cmpne r1, r0 + cmpne r1, #0x33 + addne r0, r0, #1 + cmpne r1, r0 + moveq r0, #0 + streqb r0, [r4, #0x160] + ldr r1, _022FDDBC ; =0x0235276C + ldr r0, _022FDDB0 ; =0x02353538 + ldrh r3, [r1] + ldr r0, [r0] + add r2, sp, #8 + strh r3, [sp, #8] + ldrh r1, [r1, #2] + add r0, r0, #0x1a000 + strh r1, [sp, #0xa] + ldrsh r1, [r7, #4] + strh r1, [sp, #8] + ldrsh r1, [r7, #6] + strh r1, [sp, #0xa] + ldrb r3, [r0, #0x23c] + ldrsh r1, [r4, #4] + ldr r0, [r4, #0xb0] + bl ov29_022DDA54 + mov r0, r7 + bl ov29_023021F0 + mov r1, #0 + mov r0, r7 + mov r2, r1 + bl ov29_022FA1D8 + mov r1, #0 + strh r1, [r4, #0xac] + str r1, [r4, #0x18c] + add r0, r4, #0x100 + strh r1, [r0, #0x90] + strb r1, [r4, #0x166] + strb r1, [r4, #0x167] + strb r1, [r4, #0x221] + strh r1, [r0, #0x68] + mov r2, #0xff + add r0, r4, #0x224 + mov r1, #0x18 + strb r2, [r4, #0x16a] + bl MemZero + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FDDB0: .word 0x02353538 +_022FDDB4: .word 0x0000017F +_022FDDB8: .word 0x0000028A +_022FDDBC: .word 0x0235276C + arm_func_end ov29_022FD9D4 + + arm_func_start ov29_022FDDC0 +ov29_022FDDC0: ; 0x022FDDC0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov r2, #0 + strb r2, [sl, #0xbd] + strb r2, [sl, #0xbe] + strb r2, [sl, #0xbf] + strb r2, [sl, #0xc0] + strb r2, [sl, #0xc1] + strb r2, [sl, #0xc2] + strb r2, [sl, #0xc4] + strb r2, [sl, #0xcc] + strb r2, [sl, #0xcd] + mov r0, #0x22 + str r0, [sl, #0xc8] + strb r2, [sl, #0xd0] + strb r2, [sl, #0xd1] + strb r2, [sl, #0xd2] + strb r2, [sl, #0xd5] + strb r2, [sl, #0xd6] + strb r2, [sl, #0xd8] + strb r2, [sl, #0xdb] + strb r2, [sl, #0xdc] + strb r2, [sl, #0xe0] + strb r2, [sl, #0xe9] + strb r2, [sl, #0xea] + strb r2, [sl, #0xec] + strb r2, [sl, #0xed] + strb r2, [sl, #0xee] + strb r2, [sl, #0xef] + strb r2, [sl, #0xf0] + strb r2, [sl, #0xf1] + strb r2, [sl, #0xf2] + strb r2, [sl, #0xf3] + strb r2, [sl, #0xf4] + strb r2, [sl, #0xf5] + strb r2, [sl, #0xf6] + strb r2, [sl, #0xf7] + strb r2, [sl, #0xf8] + strb r2, [sl, #0xf9] + strb r2, [sl, #0xfa] + strb r2, [sl, #0xfb] + mov r0, #0xff + strb r0, [sl, #0x177] + mov sb, r1 + strb r0, [sl, #0x178] + mov r6, r2 +_022FDE78: + add r0, sl, r2 + strb r6, [r0, #0x114] + add r2, r2, #1 + strb r6, [r0, #0x119] + cmp r2, #5 + blt _022FDE78 + mov r8, r6 + mov r5, #1 + mov fp, #0xa + mov r4, #0x100 +_022FDEA0: + ldrsh r0, [sl, #2] + mov r1, r8 + add r7, sl, r8 + bl GetAbility + and r1, r0, #0xff + cmp r1, #0x25 + strb r0, [r7, #0x60] + moveq r6, #1 + cmp sb, #0 + strneb r5, [r7, #0x1a] + strneb r5, [r7, #0x1c] + add r1, sl, r8, lsl #1 + strh fp, [r1, #0x24] + strh fp, [r1, #0x28] + add r0, sl, r8, lsl #2 + strh fp, [r1, #0x2c] + str r4, [r0, #0x34] + add r8, r8, #1 + str r4, [r0, #0x3c] + cmp r8, #2 + blt _022FDEA0 + cmp r6, #0 + beq _022FDF24 + mov r0, #0 + bl GetApparentWeather + mov r1, #6 + mul r2, r0, r1 + ldr r1, _022FDF9C ; =0x022C4C6C + mov r0, #0 + ldrb r1, [r1, r2] + strb r1, [sl, #0x5e] + strb r0, [sl, #0x5f] + b _022FDF48 +_022FDF24: + mov r4, #0 +_022FDF28: + ldrsh r0, [sl, #2] + mov r1, r4 + bl GetType + add r1, sl, r4 + add r4, r4, #1 + strb r0, [r1, #0x5e] + cmp r4, #2 + blt _022FDF28 +_022FDF48: + mov r2, #0 + strb r2, [sl, #0xaa] + strb r2, [sl, #0xab] + ldr r0, _022FDFA0 ; =0x02353538 + strb r2, [sl, #0xa9] + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0xe] + strh r2, [sl, #0x30] + strb r2, [sl, #0x11e] + strb r2, [sl, #0x106] + strb r2, [sl, #0x11f] + strb r2, [sl, #0xfd] + strb r2, [sl, #0x108] + strb r2, [sl, #0xfe] + strb r2, [sl, #0xff] + strb r2, [sl, #0x100] + mov r0, sl + strb r2, [sl, #0x10b] + bl ov29_02307DC0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FDF9C: .word 0x022C4C6C +_022FDFA0: .word 0x02353538 + arm_func_end ov29_022FDDC0 + + arm_func_start ov29_022FDFA4 +ov29_022FDFA4: ; 0x022FDFA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, #0 + mov r4, r7 + mov r5, #1 + mov r6, r7 +_022FDFB8: + ldr r0, _022FE044 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb28] + mov r0, r8 + bl EntityIsValid__022FC99C + cmp r0, #0 + ldrne r1, [r8, #0xb4] + mvnne r0, #0 + ldrnesh r3, [r1, #0xc] + cmpne r3, r0 + beq _022FE034 + mov r8, r6 +_022FDFF0: + add r0, r1, r8, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + addne r0, r1, r8, lsl #3 + addne r0, r0, #0x100 + ldrneh r2, [r0, #0x26] + add r8, r8, #1 + bicne r2, r2, #1 + strneh r2, [r0, #0x26] + cmp r8, #4 + blt _022FDFF0 + mov r0, r3, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov29_022FE048 +_022FE034: + add r7, r7, #1 + cmp r7, #4 + blt _022FDFB8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FE044: .word 0x02353538 + arm_func_end ov29_022FDFA4 + + arm_func_start ov29_022FE048 +ov29_022FE048: ; 0x022FE048 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + bl GetActiveTeamMember + ldrsh r1, [r4, #0x10] + mov r3, r0 + mov r5, #0 + strh r1, [r3, #0xe] + ldrsh r0, [r4, #0x12] + strh r0, [r3, #0x10] + ldr r0, [r4, #0x20] + str r0, [r3, #0x18] +_022FE074: + add r2, r4, r5 + ldrb r0, [r2, #0x1a] + add r1, r3, r5 + add r5, r5, #1 + strb r0, [r1, #0x12] + ldrb r0, [r2, #0x1c] + cmp r5, #2 + strb r0, [r1, #0x14] + blt _022FE074 + ldrsh r1, [r4, #4] + sub r0, r1, #0x17c + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #2 + ldrls r0, _022FE188 ; =0x0000017B + strlsh r0, [r3, #0xc] + bls _022FE0E0 + sub r0, r1, #0x3d4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #2 + ldrls r0, _022FE18C ; =0x000003D3 + strlsh r0, [r3, #0xc] +_022FE0E0: + add r5, r4, #0x124 + add r2, r3, #0x1c + mov r1, #0x11 +_022FE0EC: + ldrh r0, [r5], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022FE0EC + ldrb r1, [r4, #0xa] + add r0, r4, #0x90 + add r5, r3, #0x4c + strb r1, [r3, #2] + ldrsh r1, [r4, #0xe] + add ip, r4, #0x100 + ldr lr, _022FE190 ; =0x000055AA + strh r1, [r3, #6] + ldmia r0, {r0, r1, r2} + stmia r5, {r0, r1, r2} + ldrb r0, [r4, #0xa8] + strb r0, [r3, #0x58] + ldrh r0, [r4, #0x44] + strh r0, [r3, #0x5a] + ldrh r0, [r4, #0x46] + strh r0, [r3, #0x5c] + ldrh r0, [ip, #0x46] + strh r0, [r3, #0x44] + ldrh r0, [ip, #0x48] + strh r0, [r3, #0x46] + ldrh r0, [ip, #0x4a] + strh r0, [r3, #0x48] + ldrh r0, [ip, #0x4c] + strh r0, [r3, #0x4a] + ldrh r0, [r4, #0x62] + strh r0, [r3, #0x3e] + ldrh r0, [r4, #0x64] + strh r0, [r3, #0x40] + ldrh r0, [r4, #0x66] + strh r0, [r3, #0x42] + ldrsh r0, [r3, #8] + cmp r0, lr + ldreq r0, _022FE194 ; =0x00005AA5 + streqh r0, [r3, #8] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FE188: .word 0x0000017B +_022FE18C: .word 0x000003D3 +_022FE190: .word 0x000055AA +_022FE194: .word 0x00005AA5 + arm_func_end ov29_022FE048 + + arm_func_start ov29_022FE198 +ov29_022FE198: ; 0x022FE198 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr ip, _022FE248 ; =0x02353538 + mov r6, #0 + ldr r4, [ip] + mov lr, #6 + add ip, r4, #0x5e0 + ldr r7, [ip, #0x30] + b _022FE1E8 +_022FE1B8: + mla r5, r6, lr, ip + ldrb r4, [r5, #3] + cmp r4, #0 + beq _022FE1E4 + ldrb r4, [r5, #4] + cmp r0, r4 + ldreqb r4, [r5, #5] + cmpeq r1, r4 + streqh r2, [r5] + streqb r3, [r5, #2] + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_022FE1E4: + add r6, r6, #1 +_022FE1E8: + cmp r6, r7 + blt _022FE1B8 + cmp r7, #8 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + mov lr, #6 + mla r4, r7, lr, ip + mov r5, #1 + strb r5, [r4, #3] + ldr r5, [ip, #0x30] + mla r4, r5, lr, ip + strb r0, [r4, #4] + ldr r4, [ip, #0x30] + mla r0, r4, lr, ip + strb r1, [r0, #5] + ldr r0, [ip, #0x30] + mul r1, r0, lr + strh r2, [ip, r1] + ldr r1, [ip, #0x30] + mla r0, r1, lr, ip + strb r3, [r0, #2] + ldr r0, [ip, #0x30] + add r0, r0, #1 + str r0, [ip, #0x30] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FE248: .word 0x02353538 + arm_func_end ov29_022FE198 + + arm_func_start ov29_022FE24C +ov29_022FE24C: ; 0x022FE24C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + ldr r0, _022FE2E0 ; =0x02353538 + ldr r0, [r0] + add r6, r0, #0x5e0 + bl ov29_022FBF08 + mov r5, #0 + mov r4, r5 + add sb, sp, #0 + mov r8, #1 + mov r7, #6 + b _022FE2C8 +_022FE27C: + mla r3, r5, r7, r6 + ldrb r0, [r3, #3] + cmp r0, #0 + beq _022FE2C4 + ldrsh r2, [r3] + mov r0, sb + mov r1, r8 + strh r2, [sp] + strh r4, [sp, #8] + ldrb r2, [r3, #4] + strh r2, [sp, #0xa] + ldrb r2, [r3, #5] + strh r2, [sp, #0xc] + ldrb r2, [r3, #2] + strb r2, [sp, #2] + str r4, [sp, #4] + strb r4, [sp, #0xe] + bl SpawnMonster +_022FE2C4: + add r5, r5, #1 +_022FE2C8: + ldr r0, [r6, #0x30] + cmp r5, r0 + blt _022FE27C + bl ov29_022FBF30 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FE2E0: .word 0x02353538 + arm_func_end ov29_022FE24C + + arm_func_start ov29_022FE2E4 +ov29_022FE2E4: ; 0x022FE2E4 + ldr r0, _022FE2F8 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x610] + bx lr + .align 2, 0 +_022FE2F8: .word 0x02353538 + arm_func_end ov29_022FE2E4 + + arm_func_start ov29_022FE2FC +ov29_022FE2FC: ; 0x022FE2FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r8, r0 + mov r7, r1 + bl GetBaseHp + mov r6, r0 + mov r5, #2 + add r4, sp, #0 + b _022FE33C +_022FE320: + mov r0, r4 + mov r1, r8 + mov r2, r5 + bl GetLvlStats + ldrh r0, [sp, #4] + add r5, r5, #1 + add r6, r6, r0 +_022FE33C: + cmp r5, r7 + ble _022FE320 + mov r0, r6 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ov29_022FE2FC + + arm_func_start ov29_022FE350 +ov29_022FE350: ; 0x022FE350 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r7, r2 + mov r4, r1 + mov r1, r7 + mov r5, r0 + bl GetBaseOffensiveStat + add r6, sp, #0 + add sb, r6, r7 + mov r8, r0 + mov r7, #2 + b _022FE39C +_022FE380: + mov r0, r6 + mov r1, r5 + mov r2, r7 + bl GetLvlStats + ldrb r0, [sb, #6] + add r7, r7, #1 + add r8, r8, r0 +_022FE39C: + cmp r7, r4 + ble _022FE380 + cmp r8, #0xff + movgt r8, #0xff + mov r0, r8 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022FE350 + + arm_func_start ov29_022FE3B8 +ov29_022FE3B8: ; 0x022FE3B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r7, r2 + mov r4, r1 + mov r1, r7 + mov r5, r0 + bl GetBaseDefensiveStat + add r6, sp, #0 + add sb, r6, r7 + mov r8, r0 + mov r7, #2 + b _022FE404 +_022FE3E8: + mov r0, r6 + mov r1, r5 + mov r2, r7 + bl GetLvlStats + ldrb r0, [sb, #8] + add r7, r7, #1 + add r8, r8, r0 +_022FE404: + cmp r7, r4 + ble _022FE3E8 + cmp r8, #0xff + movgt r8, #0xff + mov r0, r8 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_022FE3B8 + + arm_func_start ov29_022FE420 +ov29_022FE420: ; 0x022FE420 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _022FE4A0 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetMissionRank + mov r5, r0 + bl ov29_023491A4 + ldrsh r2, [r0, #0xe] + ldr r0, _022FE4A4 ; =0x020A1998 + mov r1, r5, lsl #1 + ldrsh r1, [r0, r1] + strh r2, [r4] + mov r0, #1 + strh r1, [r4, #4] + strb r0, [r4, #6] + strb r0, [r4, #7] + bl IsDestinationFloorWithHiddenOutlaw + cmp r0, #0 + movne r0, #2 + strneb r0, [r4, #2] + movne r0, #0 + strneb r0, [r4, #7] + ldmneia sp!, {r3, r4, r5, pc} + bl IsDestinationFloorWithFleeingOutlaw + cmp r0, #0 + movne r0, #3 + strneb r0, [r4, #2] + moveq r0, #1 + streqb r0, [r4, #2] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FE4A0: .word 0x02353538 +_022FE4A4: .word 0x020A1998 + arm_func_end ov29_022FE420 + + arm_func_start ov29_022FE4A8 +ov29_022FE4A8: ; 0x022FE4A8 + ldr r0, _022FE4B8 ; =0x0237C9C0 + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_022FE4B8: .word 0x0237C9C0 + arm_func_end ov29_022FE4A8 + + arm_func_start ExecuteMonsterAction +ExecuteMonsterAction: ; 0x022FE4BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r0, #1 + bl ov29_022E38E0 + bl ov29_022FBD08 + mov r0, #1 + bl ov29_0234B024 + ldr r6, [sb, #0xb4] + mov r1, #0 + strb r1, [r6, #0x109] + ldr r0, _022FED70 ; =0x02353538 + strb r1, [r6, #0xfc] + ldr r1, [r0] + ldr r0, _022FED74 ; =0x022C4F3C + str sb, [r1, #0xc4] + ldrh r2, [r6, #0x4a] + ldrb r0, [r0, r2, lsl #1] + cmp r0, #0 + beq _022FE538 + ldrb r0, [r6, #7] + cmp r0, #0 + beq _022FE528 + ldr r1, _022FED78 ; =0x022C4F3D + mov r0, sb + ldrb r1, [r1, r2, lsl #1] + bl ov29_022F3890 + b _022FE538 +_022FE528: + ldr r1, _022FED78 ; =0x022C4F3D + mov r0, sb + ldrb r1, [r1, r2, lsl #1] + bl ov29_023085DC +_022FE538: + mov r0, sb + mov r1, #0 + bl ov29_02300DCC + cmp r0, #0 + beq _022FE568 + mov r0, sb + mov r1, #1 + bl ov29_0232461C + cmp r0, #0 + beq _022FE568 + mov r0, sb + bl ov29_02318D58 +_022FE568: + mov r4, #0 + add r3, r6, #0x124 + mov r1, r4 + mov r2, #1 +_022FE578: + ldrb r0, [r3, r4, lsl #3] + add r5, r3, r4, lsl #3 + add r4, r4, #1 + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + ldrneh r0, [r5, #2] + bicne r0, r0, #4 + strneh r0, [r5, #2] + cmp r4, #4 + blt _022FE578 + bl ov29_022E81F8 + mov r0, sb + mov r1, #0 + bl ov29_022EB944 + cmp r0, #0 + bne _022FE638 + mov r0, sb + bl DisplayActions + cmp r0, #0 + beq _022FE608 + bl IsFloorOver + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, _022FED7C ; =0x0237C9C0 + ldrb r0, [r0, #1] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FE608: + ldrb r0, [r6, #7] + cmp r0, #0 + bne _022FE61C + mov r0, #0xa + bl ov29_0234BA54 +_022FE61C: + ldrb r0, [r6, #0x23c] + cmp r0, #0 + bne _022FE630 + mov r0, sb + bl ov29_022F9840 +_022FE630: + mov r0, #0xa + bl AdvanceFrame +_022FE638: + mov r0, #0 + strb r0, [r6, #0x23c] + ldrh r0, [r6, #0x4a] + mov r4, #0 + ldr r1, _022FED80 ; =0x0237CA6C + cmp r0, #1 + cmpne r0, #0 + cmpne r0, #4 + cmpne r0, #2 + movne r0, #1 + strneb r0, [r6, #0x152] + strb r4, [r6, #0x154] + ldr r0, _022FED84 ; =0x0237CA68 + strb r4, [r1] + strb r4, [r0] + mov r1, #1 + strb r1, [r6, #0x103] + ldrh r0, [r6, #0x4a] + cmp r0, #0x42 + addls pc, pc, r0, lsl #2 + b _022FEBAC +_022FE68C: ; jump table + b _022FEBAC ; case 0 + b _022FEBAC ; case 1 + b _022FE798 ; case 2 + b _022FEBAC ; case 3 + b _022FEBAC ; case 4 + b _022FEBAC ; case 5 + b _022FEBAC ; case 6 + b _022FEBAC ; case 7 + b _022FEAA4 ; case 8 + b _022FEA30 ; case 9 + b _022FEAB0 ; case 10 + b _022FEAC8 ; case 11 + b _022FEBAC ; case 12 + b _022FEA08 ; case 13 + b _022FEA08 ; case 14 + b _022FEBAC ; case 15 + b _022FEA20 ; case 16 + b _022FEBAC ; case 17 + b _022FEA08 ; case 18 + b _022FEB0C ; case 19 + b _022FEB18 ; case 20 + b _022FE99C ; case 21 + b _022FEBAC ; case 22 + b _022FEB24 ; case 23 + b _022FEBAC ; case 24 + b _022FEBAC ; case 25 + b _022FEBAC ; case 26 + b _022FEBAC ; case 27 + b _022FEBAC ; case 28 + b _022FEBAC ; case 29 + b _022FEBAC ; case 30 + b _022FEBAC ; case 31 + b _022FEBAC ; case 32 + b _022FEBAC ; case 33 + b _022FEBAC ; case 34 + b _022FEB68 ; case 35 + b _022FEB74 ; case 36 + b _022FEB44 ; case 37 + b _022FE9A8 ; case 38 + b _022FEAC8 ; case 39 + b _022FEBAC ; case 40 + b _022FEBAC ; case 41 + b _022FEBAC ; case 42 + b _022FEBAC ; case 43 + b _022FEA28 ; case 44 + b _022FEBAC ; case 45 + b _022FEBAC ; case 46 + b _022FEBAC ; case 47 + b _022FEBAC ; case 48 + b _022FEA14 ; case 49 + b _022FEB34 ; case 50 + b _022FEBAC ; case 51 + b _022FEBAC ; case 52 + b _022FEBAC ; case 53 + b _022FEA3C ; case 54 + b _022FEA48 ; case 55 + b _022FEA60 ; case 56 + b _022FEB80 ; case 57 + b _022FEABC ; case 58 + b _022FEA84 ; case 59 + b _022FEA6C ; case 60 + b _022FEA78 ; case 61 + b _022FEA54 ; case 62 + b _022FEB5C ; case 63 + b _022FEBAC ; case 64 + b _022FEAC8 ; case 65 + b _022FEBA0 ; case 66 +_022FE798: + ldrb r0, [r6, #0xc4] + cmp r0, #2 + cmpne r0, #7 + beq _022FE7B8 + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #2 + bhi _022FE818 +_022FE7B8: + mov r0, #0 + strh r0, [r6, #0x4a] + mov r0, #1 + strb r0, [r6, #0x151] + ldrb r0, [r6, #7] + cmp r0, #0 + beq _022FEBB4 + ldr r0, _022FED70 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + ldrsh r0, [r0, #0xd8] + cmp r0, #0 + blt _022FE7F4 + mov r0, #0x56 + bl AdvanceFrame +_022FE7F4: + ldr r1, _022FED70 ; =0x02353538 + mvn r2, #0 + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xd8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xda] + b _022FEBB4 +_022FE818: + ldrb r1, [r6, #0x4c] + ldrh r3, [r6] + ldr r2, _022FED88 ; =0x0235171C + mov r8, r1, lsl #2 + ldr r0, _022FED8C ; =0x0235171E + ldrsh ip, [sb, #4] + ldrsh r7, [r2, r8] + ldrsh r5, [sb, #6] + ldrsh r2, [r0, r8] + add r0, ip, r7 + mov r0, r0, lsl #0x10 + add r2, r5, r2 + mov r2, r2, lsl #0x10 + mov r5, r4 + tst r3, #0x8000 + mov r7, r0, asr #0x10 + mov r8, r2, asr #0x10 + bne _022FE870 + mov r0, sb + bl ov29_02300E78 + cmp r0, #0 + moveq r5, #1 +_022FE870: + cmp r5, #0 + beq _022FE8D8 + mov r0, #0 + strh r0, [r6, #0x4a] + mov r0, #1 + strb r0, [r6, #0x151] + ldrb r0, [r6, #7] + cmp r0, #0 + beq _022FEBB4 + ldr r0, _022FED70 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x100 + ldrsh r0, [r0, #0xd8] + cmp r0, #0 + blt _022FE8B4 + mov r0, #0x56 + bl AdvanceFrame +_022FE8B4: + ldr r1, _022FED70 ; =0x02353538 + mvn r2, #0 + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xd8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xda] + b _022FEBB4 +_022FE8D8: + ldrsh r2, [sb, #4] + mov r0, sb + mov r1, r7 + strh r2, [sp] + ldrsh r4, [sb, #6] + mov r2, r8 + mov r3, #0 + strh r4, [sp, #2] + bl ov29_022F85F0 + ldrb r1, [r6, #0x4c] + add r2, sp, #0 + mov r0, sb + bl ov29_02304D20 + mov r0, sb + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r6, #0xef] + cmpne r0, #3 + beq _022FE95C + mov r0, sb + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _022FE94C + mov r0, sb + mov r1, #0x10 + bl HasHeldItem +_022FE94C: + cmp r0, #0 + bne _022FE95C + add r0, sb, #4 + bl ov29_02337CCC +_022FE95C: + ldrb r0, [r6, #7] + mov r4, #1 + cmp r0, #0 + beq _022FEBB4 + ldrb r0, [r6, #0xd0] + cmp r0, #2 + bne _022FEBB4 + ldr r1, _022FED70 ; =0x02353538 + sub r2, r4, #2 + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xd8] + ldr r0, [r1] + add r0, r0, #0x100 + strh r2, [r0, #0xda] + b _022FEBB4 +_022FE99C: + mov r0, sb + bl ov29_0231A8A0 + b _022FEBB4 +_022FE9A8: + bl ov29_022E5D68 + ldr r0, _022FED70 ; =0x02353538 + mov r2, #1 + ldr r0, [r0] + ldr r1, _022FED7C ; =0x0237C9C0 + strb r2, [r0, #6] + ldrb r2, [r6, #0x4c] + add r0, sb, #4 + strb r2, [r1] + bl ov29_02338708 + cmp r0, #0 + beq _022FEBB4 + bl ov29_02338850 + cmp r0, #1 + bne _022FE9F0 + mov r0, #1 + bl ov29_02338898 + b _022FEBB4 +_022FE9F0: + bl ov29_02338850 + cmp r0, #2 + bne _022FEBB4 + mov r0, #2 + bl ov29_02338898 + b _022FEBB4 +_022FEA08: + mov r0, sb + bl ov29_022F52CC + b _022FEBB4 +_022FEA14: + mov r0, sb + bl ov29_0231A9F8 + b _022FEBB4 +_022FEA20: + strh r1, [r6, #0x4a] + b _022FEBB4 +_022FEA28: + strh r1, [r6, #0x4a] + b _022FEBB4 +_022FEA30: + mov r0, sb + bl ov29_022F4350 + b _022FEBB4 +_022FEA3C: + mov r0, sb + bl ov29_022F45CC + b _022FEBB4 +_022FEA48: + mov r0, sb + bl ov29_022F48D8 + b _022FEBB4 +_022FEA54: + mov r0, sb + bl ov29_022F49E0 + b _022FEBB4 +_022FEA60: + mov r0, sb + bl ov29_022F4BDC + b _022FEBB4 +_022FEA6C: + mov r0, sb + bl ov29_022F4370 + b _022FEBB4 +_022FEA78: + mov r0, sb + bl ov29_022F44F0 + b _022FEBB4 +_022FEA84: + ldr r0, _022FED70 ; =0x02353538 + ldrb r1, [r6, #0x4e] + ldr r2, [r0] + add r0, r2, r1, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + str r0, [r2, #0xc8] + b _022FEBB4 +_022FEAA4: + mov r0, sb + bl ov29_022F4BF8 + b _022FEBB4 +_022FEAB0: + mov r0, sb + bl ov29_022F4DAC + b _022FEBB4 +_022FEABC: + mov r0, sb + bl ov29_022F505C + b _022FEBB4 +_022FEAC8: + mov r0, r6 + bl ov29_02302368 + cmp r0, #0 + beq _022FEAEC + mov r0, sb + bl ov29_022F996C + mov r0, sb + bl ov29_022F54BC + b _022FEBB4 +_022FEAEC: + mov r0, r4 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, sb + mov r1, #0xdf0 + bl LogMessageByIdWithPopupCheckUser + b _022FEBB4 +_022FEB0C: + mov r0, sb + bl ov29_022F59C4 + b _022FEBB4 +_022FEB18: + mov r0, sb + bl ov29_022F5F18 + b _022FEBB4 +_022FEB24: + mov r0, sb + mov r1, #0x160 + bl ov29_022F6058 + b _022FEBB4 +_022FEB34: + mov r0, sb + rsb r1, r1, #0x164 + bl ov29_022F6058 + b _022FEBB4 +_022FEB44: + mov r0, sb + mov r2, r4 + mov r3, r4 + add r1, sb, #4 + bl ov29_022EDFA0 + b _022FEBB4 +_022FEB5C: + mov r0, sb + bl ov29_0230F158 + b _022FEBB4 +_022FEB68: + mov r0, sb + bl ov29_0230F140 + b _022FEBB4 +_022FEB74: + mov r0, sb + bl ov29_0230F14C + b _022FEBB4 +_022FEB80: + mov r0, r4 + mov r1, sb + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldr r1, _022FED90 ; =0x00000DF1 + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + b _022FEBB4 +_022FEBA0: + mov r0, sb + bl ov29_022F52B0 + b _022FEBB4 +_022FEBAC: + mov r0, #1 + strh r0, [r6, #0x4a] +_022FEBB4: + mov r0, sb + bl ov29_022EDDD4 + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r2, [sb, #0xb4] + ldrb r0, [r2, #0x154] + cmp r0, #0 + bne _022FEBF0 + mov r1, #0 + mov r0, sb + strb r1, [r2, #0x154] + bl ov29_02318D58 +_022FEBF0: + mov r0, #0 + bl ov29_022E3A58 + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl ov29_022EF9BC + ldrb r0, [r6, #0x155] + cmp r0, #0 + beq _022FEC88 + mov ip, #0 + mov r5, #1 + mov r8, ip + strb ip, [r6, #0x155] + add r7, r6, #0x124 + mov r3, ip + mov r1, ip + mov r0, r5 +_022FEC3C: + ldrb r2, [r7, r8, lsl #3] + add lr, r7, r8, lsl #3 + tst r2, #1 + movne r2, r5 + moveq r2, r3 + tst r2, #0xff + beq _022FEC68 + ldrb r2, [lr] + tst r2, #0x10 + movne ip, r0 + strneb r1, [lr, #6] +_022FEC68: + add r8, r8, #1 + cmp r8, #4 + blt _022FEC3C + cmp ip, #0 + beq _022FEC88 + ldr r1, _022FED94 ; =0x00000DF2 + mov r0, sb + bl LogMessageByIdWithPopupCheckUser +_022FEC88: + bl ov29_022FF168 + bl ov29_022EC85C + cmp r0, #0 + bne _022FECB4 + bl ov29_022FEFC8 + bl ov29_022FEDBC + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FECB4: + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl ov29_022EC85C + cmp r0, #0 + bne _022FECD8 + bl ov29_02346888 +_022FECD8: + mov r0, #0 + bl ov29_022E3A58 + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r6, #0x14e] + cmp r0, #0 + cmpeq r4, #0 + bne _022FED68 + mov r0, sb + add r1, sb, #4 + bl ov29_022FFC9C + cmp r0, #0 + beq _022FED58 + ldr r0, [r6, #0x110] + cmp r0, #1 + ble _022FED50 + mov r0, #0 + bl DisplayActions + mov r0, sb + bl EntityIsValid__022FED98 + cmp r0, #0 + beq _022FED48 + bl IsFloorOver + cmp r0, #0 + beq _022FED50 +_022FED48: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FED50: + mov r0, sb + bl ov29_02321104 +_022FED58: + mov r0, sb + bl ov29_0230FC24 + mov r0, sb + bl EnemyEvolution +_022FED68: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FED70: .word 0x02353538 +_022FED74: .word 0x022C4F3C +_022FED78: .word 0x022C4F3D +_022FED7C: .word 0x0237C9C0 +_022FED80: .word 0x0237CA6C +_022FED84: .word 0x0237CA68 +_022FED88: .word 0x0235171C +_022FED8C: .word 0x0235171E +_022FED90: .word 0x00000DF1 +_022FED94: .word 0x00000DF2 + arm_func_end ExecuteMonsterAction diff --git a/asm/overlay_29_022FEDBC.s b/asm/overlay_29_022FEDBC.s new file mode 100644 index 00000000..ef9fbb1b --- /dev/null +++ b/asm/overlay_29_022FEDBC.s @@ -0,0 +1,1432 @@ + .include "asm/macros.inc" + .include "overlay_29_022FEDBC.inc" + + .text + + arm_func_start ov29_022FEDBC +ov29_022FEDBC: ; 0x022FEDBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r4, #0 +_022FEDC8: + ldr r0, _022FEFB8 ; =0x02353538 + mov r6, #0 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__022FED98 + cmp r0, #0 + ldrne r8, [r7, #0xb4] + ldrneb r5, [r8, #0x177] + cmpne r5, #0xff + beq _022FEFA4 + mov r0, r7 + mov r1, #1 + bl ov29_02300DCC + cmp r0, #0 + movne r0, #0xff + strneb r0, [r8, #0x177] + bne _022FEFA4 + mov r0, r7 + bl ov29_023007A8 + cmp r0, #0 + moveq r0, #0xff + streqb r0, [r8, #0x177] + beq _022FEFA4 + ldrb r0, [r8, #0xf3] + cmp r0, #1 + moveq r0, #0xff + streqb r0, [r8, #0x177] + beq _022FEFA4 + mov r0, #4 + bl DungeonRandInt + ldr fp, _022FEFBC ; =0x0000020D + mov sb, r6 + add lr, r8, #0x124 + sub r1, fp, #0xc6 + b _022FEF80 +_022FEE60: + ldrb r2, [lr, r0, lsl #3] + add sl, lr, r0, lsl #3 + tst r2, #1 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + beq _022FEF70 + add ip, sp, #8 + mov r3, #4 +_022FEE84: + ldrh r2, [sl], #2 + subs r3, r3, #1 + strh r2, [ip], #2 + bne _022FEE84 + ldrh r2, [sp, #0xc] + cmp r2, #0x8a + cmpne r2, r1 + cmpne r2, fp + beq _022FEF70 + mov sb, #0 + add r6, r8, #0x124 + mov fp, #1 + b _022FEF20 +_022FEEB8: + ldrb r0, [r6, sb, lsl #3] + add sl, r6, sb, lsl #3 + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _022FEF1C + ldrb r0, [r8, #7] + cmp r0, #0 + bne _022FEEEC + ldrb r0, [sl] + tst r0, #4 + beq _022FEF1C +_022FEEEC: + ldrh r0, [sl, #4] + cmp r0, #0xe3 + bne _022FEF1C + mov r0, r7 + mov r1, sl + mov r2, #1 + bl CanMonsterUseMove + cmp r0, #0 + beq _022FEF1C + add r0, sl, #6 + bl TickStatusTurnCounter + b _022FEF28 +_022FEF1C: + add sb, sb, #1 +_022FEF20: + cmp sb, #4 + blt _022FEEB8 +_022FEF28: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022FEFC0 ; =0x00000DF3 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + and r0, r5, #7 + strb r0, [r8, #0x4c] + mov r1, #0 + add r2, sp, #8 + stmia sp, {r1, r2} + mov r0, r7 + mov r2, r1 + mov r3, #1 + bl ov29_02322374 + mov r6, #1 + b _022FEF88 +_022FEF70: + add r0, r0, #1 + cmp r0, #4 + moveq r0, #0 + add sb, sb, #1 +_022FEF80: + cmp sb, #4 + blt _022FEE60 +_022FEF88: + mov r0, #0xff + strb r0, [r8, #0x177] + cmp r6, #0 + beq _022FEFA4 + ldr r1, _022FEFC4 ; =0x00001204 + mov r0, r7 + bl ov29_022E56A0 +_022FEFA4: + add r4, r4, #1 + cmp r4, #0x14 + blt _022FEDC8 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FEFB8: .word 0x02353538 +_022FEFBC: .word 0x0000020D +_022FEFC0: .word 0x00000DF3 +_022FEFC4: .word 0x00001204 + arm_func_end ov29_022FEDBC + + arm_func_start ov29_022FEFC8 +ov29_022FEFC8: ; 0x022FEFC8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r5, #0 +_022FEFD4: + ldr r0, _022FF160 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__022FED98 + cmp r0, #0 + ldrne sl, [r8, #0xb4] + ldrneb r7, [sl, #0x178] + cmpne r7, #0xff + beq _022FF14C + mov r0, r8 + mov r1, #1 + bl ov29_02300DCC + cmp r0, #0 + movne r0, #0xff + strneb r0, [sl, #0x178] + strneb r0, [sl, #0x177] + bne _022FF14C + mov r0, r8 + bl ov29_023007A8 + cmp r0, #0 + moveq r0, #0xff + streqb r0, [sl, #0x178] + streqb r0, [sl, #0x177] + beq _022FF14C + ldrb r0, [sl, #0xf3] + cmp r0, #1 + moveq r0, #0xff + streqb r0, [sl, #0x178] + streqb r0, [sl, #0x177] + beq _022FF14C + mov r6, #0 + add r4, sl, #0x124 + mov fp, #1 + b _022FF0F8 +_022FF068: + ldrb r0, [r4, r6, lsl #3] + add sb, r4, r6, lsl #3 + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _022FF0F4 + ldrb r0, [sl, #7] + cmp r0, #0 + bne _022FF09C + ldrb r0, [sb] + tst r0, #4 + beq _022FF0F4 +_022FF09C: + ldrh r0, [sb, #4] + cmp r0, #0x19 + bne _022FF0F4 + mov r0, r8 + mov r1, sb + mov r2, #1 + bl CanMonsterUseMove + cmp r0, #0 + beq _022FF0F4 + add r2, sp, #8 + mov r3, sb + mov r1, #4 +_022FF0CC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _022FF0CC + add r0, sb, #6 + bl TickStatusTurnCounter + mov r0, r8 + mov r1, sb + bl ov29_022FAA04 + b _022FF100 +_022FF0F4: + add r6, r6, #1 +_022FF0F8: + cmp r6, #4 + blt _022FF068 +_022FF100: + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _022FF164 ; =0x00000DF4 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + and r0, r7, #7 + mov r1, #0 + strb r0, [sl, #0x4c] + add r3, sp, #8 + stmia sp, {r1, r3} + mov r0, r8 + mov r2, r1 + mov r3, #1 + bl ov29_02322374 + mov r0, #0xff + strb r0, [sl, #0x178] + strb r0, [sl, #0x177] +_022FF14C: + add r5, r5, #1 + cmp r5, #0x14 + blt _022FEFD4 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FF160: .word 0x02353538 +_022FF164: .word 0x00000DF4 + arm_func_end ov29_022FEFC8 + + arm_func_start ov29_022FF168 +ov29_022FF168: ; 0x022FF168 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r5, _022FF1C4 ; =0x02353538 + mov r6, r4 +_022FF178: + ldr r0, [r5] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__022FED98 + cmp r0, #0 + ldrne r2, [r7, #0xb4] + ldrneb r0, [r2, #0x15c] + cmpne r0, #0 + beq _022FF1B4 + mov r0, r7 + mov r1, r7 + strb r6, [r2, #0x15c] + bl ov29_02313CE4 +_022FF1B4: + add r4, r4, #1 + cmp r4, #0x14 + blt _022FF178 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FF1C4: .word 0x02353538 + arm_func_end ov29_022FF168 + + arm_func_start HasStatusThatPreventsActing +HasStatusThatPreventsActing: ; 0x022FF1C8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r0, r4, #0x4a + mov r1, #1 + bl SetMonsterActionFields + ldrb r0, [r4, #0xbd] + cmp r0, #1 + cmpne r0, #3 + cmpne r0, #5 + bne _022FF20C + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF20C: + ldrb r0, [r4, #0xc4] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _022FF27C +_022FF21C: ; jump table + b _022FF27C ; case 0 + b _022FF238 ; case 1 + b _022FF27C ; case 2 + b _022FF24C ; case 3 + b _022FF260 ; case 4 + b _022FF27C ; case 5 + b _022FF274 ; case 6 +_022FF238: + ldr r1, _022FF3DC ; =0x00000C28 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF24C: + ldr r1, _022FF3E0 ; =0x00000C29 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF260: + ldr r1, _022FF3E4 ; =0x00000C2A + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF274: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF27C: + ldrb r0, [r4, #0xd0] + cmp r0, #3 + beq _022FF294 + cmp r0, #7 + beq _022FF2A8 + b _022FF2BC +_022FF294: + ldr r1, _022FF3E8 ; =0x00000C2B + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF2A8: + ldr r1, _022FF3EC ; =0x00000C2C + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF2BC: + ldrb r0, [r4, #0xd2] + cmp r0, #1 + bne _022FF2DC + ldr r1, _022FF3F0 ; =0x00000C2D + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF2DC: + ldrb r0, [r4, #0xd8] + cmp r0, #2 + bne _022FF320 + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + mov r0, #8 + bl DungeonRandInt + strb r0, [r4, #0x4c] + ldrsh r2, [r5, #4] + add r1, r4, #0x100 + mov r0, #1 + strh r2, [r1, #0x7e] + ldrsh r2, [r5, #6] + sub r2, r2, #1 + strh r2, [r1, #0x80] + ldmia sp!, {r3, r4, r5, pc} +_022FF320: + ldrb r0, [r4, #9] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + beq _022FF3AC + ldrb r1, [r4, #0x4c] + mov r0, r5 + bl ov29_02300E78 + cmp r0, #0 + beq _022FF368 + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + b _022FF3A4 +_022FF368: + mov r0, #2 + bl DungeonRandInt + cmp r0, #0 + beq _022FF39C + mov r0, #8 + bl DungeonRandInt + and r1, r0, #0xff + and r0, r1, #7 + strb r0, [r4, #0x4c] + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + b _022FF3A4 +_022FF39C: + mov r0, r5 + bl ChooseAiMove +_022FF3A4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022FF3AC: + ldrb r0, [r4, #0xf1] + cmp r0, #2 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + mov r0, #8 + bl DungeonRandInt + strb r0, [r4, #0x4c] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FF3DC: .word 0x00000C28 +_022FF3E0: .word 0x00000C29 +_022FF3E4: .word 0x00000C2A +_022FF3E8: .word 0x00000C2B +_022FF3EC: .word 0x00000C2C +_022FF3F0: .word 0x00000C2D + arm_func_end HasStatusThatPreventsActing + + arm_func_start ov29_022FF3F4 +ov29_022FF3F4: ; 0x022FF3F4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r0 + mov r4, #0 + ldr r6, [r7, #0xb4] + mov r0, r4 + mov r1, r7 + mov r2, r4 + bl SubstitutePlaceholderStringTags + add r0, r6, #0x4a + mov r1, #1 + bl SetMonsterActionFields + ldrb r0, [r6, #0xbd] + cmp r0, #1 + cmpne r0, #3 + cmpne r0, #5 + bne _022FF448 + ldr r1, _022FF60C ; =0x00000C2E + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF448: + ldrb r0, [r6, #0xc4] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _022FF4B8 +_022FF458: ; jump table + b _022FF4B8 ; case 0 + b _022FF474 ; case 1 + b _022FF4B8 ; case 2 + b _022FF488 ; case 3 + b _022FF49C ; case 4 + b _022FF4B8 ; case 5 + b _022FF4B0 ; case 6 +_022FF474: + ldr r1, _022FF610 ; =0x00000C28 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF488: + ldr r1, _022FF614 ; =0x00000C29 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF49C: + ldr r1, _022FF618 ; =0x00000C2A + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF4B0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF4B8: + ldrb r0, [r6, #0xd0] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _022FF51C +_022FF4C8: ; jump table + b _022FF51C ; case 0 + b _022FF51C ; case 1 + b _022FF4EC ; case 2 + b _022FF4F4 ; case 3 + b _022FF51C ; case 4 + b _022FF51C ; case 5 + b _022FF51C ; case 6 + b _022FF508 ; case 7 + b _022FF51C ; case 8 +_022FF4EC: + mov r4, #1 + b _022FF51C +_022FF4F4: + ldr r1, _022FF61C ; =0x00000C2B + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF508: + ldr r1, _022FF620 ; =0x00000C2C + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF51C: + ldrb r0, [r6, #0xd2] + cmp r0, #1 + bne _022FF53C + ldr r1, _022FF624 ; =0x00000C2D + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF53C: + cmp r0, #0 + cmpne r0, #0xb + cmpne r0, #0xc + beq _022FF604 + cmp r4, #0 + beq _022FF564 + ldr r1, _022FF628 ; =0x00000C2F + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _022FF5FC +_022FF564: + mov r5, #0 + add r4, r6, #0x124 + mov r8, r5 + mov sb, #1 + b _022FF5F4 +_022FF578: + ldrb r0, [r4, r5, lsl #3] + mov r1, r5, lsl #3 + tst r0, #1 + movne r0, sb + moveq r0, r8 + tst r0, #0xff + beq _022FF5F0 + mov r0, r7 + add r1, r4, r1 + bl ov29_023245A4 + cmp r0, #0 + beq _022FF5F0 + ldrb r0, [r6, #0xd4] + cmp r0, r5 + bne _022FF5F0 + b _022FF5CC +_022FF5B8: + add r0, r6, r5, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #2 + beq _022FF5D4 + sub r5, r5, #1 +_022FF5CC: + cmp r5, #0 + bgt _022FF5B8 +_022FF5D4: + ldrb r1, [r6, #0x4e] + mov r2, r5, lsl #0x10 + add r0, r6, #0x4a + mov r2, r2, asr #0x10 + bl ov29_022EBC98 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_022FF5F0: + add r5, r5, #1 +_022FF5F4: + cmp r5, #4 + blt _022FF578 +_022FF5FC: + mov r0, r7 + bl ov29_02318D58 +_022FF604: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FF60C: .word 0x00000C2E +_022FF610: .word 0x00000C28 +_022FF614: .word 0x00000C29 +_022FF618: .word 0x00000C2A +_022FF61C: .word 0x00000C2B +_022FF620: .word 0x00000C2C +_022FF624: .word 0x00000C2D +_022FF628: .word 0x00000C2F + arm_func_end ov29_022FF3F4 + + arm_func_start ov29_022FF62C +ov29_022FF62C: ; 0x022FF62C + stmdb sp!, {r4, lr} + mov r4, r1 + bl GetMobilityType + cmp r4, #0 + beq _022FF660 + cmp r0, #0 + cmpne r0, #4 + moveq r1, #1 + movne r1, #0 + tst r1, #0xff + ldrne r0, _022FF670 ; =0x0237C9B8 + ldrneb r0, [r0, #5] + ldmneia sp!, {r4, pc} +_022FF660: + cmp r0, #4 + ldrhs r1, _022FF670 ; =0x0237C9B8 + ldrhsb r0, [r1, r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_022FF670: .word 0x0237C9B8 + arm_func_end ov29_022FF62C + + arm_func_start ov29_022FF674 +ov29_022FF674: ; 0x022FF674 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #4 + moveq r2, #1 + movne r2, #0 + mov r0, r1 + and r1, r2, #0xff + bl ov29_022FF62C + mov r4, r0 + cmp r4, #3 + beq _022FF6BC + mov r0, r5 + bl HasConditionalGroundImmunity + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} +_022FF6BC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022FF674 + + arm_func_start ov29_022FF6C4 +ov29_022FF6C4: ; 0x022FF6C4 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r1, [r4, #0xc] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} + ldrh r1, [r4] + tst r1, #0x10 + movne r0, #1 + ldmneia sp!, {r4, pc} + mov r1, #0 + bl ov29_022FF62C + ldrh r1, [r4] + cmp r0, #3 + and r1, r1, #3 + addls pc, pc, r0, lsl #2 + b _022FF754 +_022FF708: ; jump table + b _022FF718 ; case 0 + b _022FF728 ; case 1 + b _022FF744 ; case 2 + b _022FF754 ; case 3 +_022FF718: + cmp r1, #1 + bne _022FF75C + mov r0, #0 + ldmia sp!, {r4, pc} +_022FF728: + cmp r1, #2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r1, #1 + bne _022FF75C + mov r0, #0 + ldmia sp!, {r4, pc} +_022FF744: + cmp r1, #0 + beq _022FF75C + mov r0, #0 + ldmia sp!, {r4, pc} +_022FF754: + mov r0, #0 + ldmia sp!, {r4, pc} +_022FF75C: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end ov29_022FF6C4 + + arm_func_start ov29_022FF764 +ov29_022FF764: ; 0x022FF764 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + ldr r5, [r6, #0xb4] + bl GetTile + ldrsh r1, [r7] + mov r4, r0 + cmp r1, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r0, [r7, #2] + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0x38 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #0x20 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_02336204 + cmp r0, #0 + bne _022FF810 + ldrb r0, [r5, #0xef] + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022FF810: + ldrsh r1, [r5, #2] + mov r0, r6 + bl ov29_022FF674 + ldrh r2, [r4] + mov r1, r0 + mov r0, r6 + and r4, r2, #3 + bl ov29_022FF8C8 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022FF888 +_022FF83C: ; jump table + b _022FF84C ; case 0 + b _022FF85C ; case 1 + b _022FF878 ; case 2 + b _022FF888 ; case 3 +_022FF84C: + cmp r4, #1 + bne _022FF890 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF85C: + cmp r4, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #1 + bne _022FF890 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF878: + cmp r4, #0 + beq _022FF890 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF888: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FF890: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FF764 + + arm_func_start ItemIsActive__022FF898 +ItemIsActive__022FF898: ; 0x022FF898 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__022FF898 + + arm_func_start ov29_022FF8C8 +ov29_022FF8C8: ; 0x022FF8C8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + cmp r4, #3 + beq _022FF8EC + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #2 +_022FF8EC: + mov r0, r5 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #3 + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022FF8C8 + + arm_func_start ov29_022FF908 +ov29_022FF908: ; 0x022FF908 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldrb r1, [r4, #0xef] + cmp r1, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrsh r1, [r4, #2] + mov r0, r5 + bl ov29_022FF674 + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_022FF908 + + arm_func_start ov29_022FF958 +ov29_022FF958: ; 0x022FF958 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + ldr r5, [r6, #0xb4] + bl GetTile + ldrsh r1, [r7] + mov r4, r0 + cmp r1, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r0, [r7, #2] + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0x38 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #0x20 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #1 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_02336204 + cmp r0, #0 + bne _022FFA0C + ldrb r0, [r5, #0xef] + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA0C: + ldrsh r1, [r5, #2] + mov r0, r6 + bl ov29_022FF674 + ldrh r2, [r4] + mov r1, r0 + mov r0, r6 + and r4, r2, #3 + bl ov29_022FF8C8 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022FFA84 +_022FFA38: ; jump table + b _022FFA48 ; case 0 + b _022FFA58 ; case 1 + b _022FFA74 ; case 2 + b _022FFA84 ; case 3 +_022FFA48: + cmp r4, #1 + bne _022FFA8C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA58: + cmp r4, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #1 + bne _022FFA8C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA74: + cmp r4, #0 + beq _022FFA8C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA84: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFA8C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FF958 + + arm_func_start ov29_022FFA94 +ov29_022FFA94: ; 0x022FFA94 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + ldr r5, [r6, #0xb4] + bl GetTile + ldrsh r1, [r7] + mov r4, r0 + cmp r1, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r0, [r7, #2] + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0x38 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #0x20 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #1 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r1, [r5, #2] + mov r0, r6 + bl ov29_022FF674 + ldrh r1, [r4] + cmp r0, #3 + and r1, r1, #3 + addls pc, pc, r0, lsl #2 + b _022FFB80 +_022FFB34: ; jump table + b _022FFB44 ; case 0 + b _022FFB54 ; case 1 + b _022FFB70 ; case 2 + b _022FFB70 ; case 3 +_022FFB44: + cmp r1, #1 + bne _022FFB88 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFB54: + cmp r1, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #1 + bne _022FFB88 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFB70: + cmp r1, #0 + beq _022FFB88 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFB80: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFB88: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FFA94 + + arm_func_start ov29_022FFB90 +ov29_022FFB90: ; 0x022FFB90 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + ldr r5, [r6, #0xb4] + bl GetTile + ldrsh r1, [r7] + mov r4, r0 + cmp r1, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r0, [r7, #2] + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0x38 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #0x20 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #1 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_02336204 + cmp r0, #0 + bne _022FFC44 + ldrb r0, [r5, #0xef] + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022FFC44: + ldrsh r1, [r5, #2] + mov r0, r6 + bl ov29_022FF674 + ldrh r2, [r4] + mov r1, r0 + mov r0, r6 + and r4, r2, #3 + bl ov29_022FF8C8 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022FFC94 +_022FFC70: ; jump table + b _022FFC80 ; case 0 + b _022FFC80 ; case 1 + b _022FFC80 ; case 2 + b _022FFC94 ; case 3 +_022FFC80: + cmp r4, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFC94: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FFB90 + + arm_func_start ov29_022FFC9C +ov29_022FFC9C: ; 0x022FFC9C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r6, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + ldr r5, [r6, #0xb4] + bl GetTile + ldrsh r1, [r7] + mov r4, r0 + cmp r1, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r0, [r7, #2] + cmp r0, #0 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + cmp r1, #0x38 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + cmp r0, #0x20 + movge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #0xc] + cmp r1, #0 + beq _022FFD38 + ldr r0, [r1] + cmp r0, #1 + bne _022FFD30 + ldr r0, [r1, #0xb4] + cmp r0, r5 + beq _022FFD38 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFD30: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFD38: + bl ov29_02336204 + cmp r0, #0 + bne _022FFD6C + ldrb r0, [r5, #0xef] + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_022FFD6C: + ldrsh r1, [r5, #2] + mov r0, r6 + bl ov29_022FF674 + ldrh r2, [r4] + mov r1, r0 + mov r0, r6 + and r4, r2, #3 + bl ov29_022FF8C8 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022FFDE4 +_022FFD98: ; jump table + b _022FFDA8 ; case 0 + b _022FFDB8 ; case 1 + b _022FFDD4 ; case 2 + b _022FFDE4 ; case 3 +_022FFDA8: + cmp r4, #1 + bne _022FFDEC + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFDB8: + cmp r4, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #1 + bne _022FFDEC + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFDD4: + cmp r4, #0 + beq _022FFDEC + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFDE4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_022FFDEC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_022FFC9C + + arm_func_start CalcSpeedStage +CalcSpeedStage: ; 0x022FFDF4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r7, r1 + ldr r6, [r8, #0xb4] + bl GetApparentWeather + mov r4, #0 + mov r5, r0 + mov r1, r4 +_022FFE14: + add r2, r6, r1 + ldrb r0, [r2, #0x119] + add r1, r1, #1 + cmp r0, #0 + ldrb r0, [r2, #0x114] + subne r4, r4, r7 + cmp r0, #0 + addne r4, r4, r7 + cmp r1, #5 + blt _022FFE14 + ldrb r0, [r6, #0xbf] + cmp r0, #4 + ldrsh r0, [r6, #2] + subeq r4, r4, #1 + bl GetSpeedStatus + add r4, r4, r0 + mov r0, r8 + mov r1, #6 + bl MonsterIsType + cmp r0, #0 + beq _022FFE78 + mov r0, r8 + bl GetApparentWeather + cmp r0, #7 + addeq r4, r4, #1 +_022FFE78: + mov r0, r8 + mov r1, #0x3a + bl IqSkillIsEnabled + cmp r0, #0 + ldr r1, _022FFF18 ; =0x023535B8 + addne r4, r4, #1 + ldrb r0, [r1, r5] + cmp r0, #0 + beq _022FFEB0 + ldrb r1, [r1, r5] + mov r0, r8 + bl ExclusiveItemEffectIsActive__022FFF28 + cmp r0, #0 + addne r4, r4, #1 +_022FFEB0: + ldrsh r1, [r6, #4] + ldr r0, _022FFF1C ; =0x000001A5 + cmp r1, r0 + addne r0, r0, #0x72 + cmpne r1, r0 + ldrsh r1, [r6, #2] + ldr r0, _022FFF20 ; =0x0000017F + addeq r4, r4, #1 + cmp r1, r0 + addne r0, r0, #0x258 + cmpne r1, r0 + bne _022FFEFC + ldrb r0, [r6, #6] + cmp r0, #0 + ldrne r0, _022FFF24 ; =0x02353538 + ldrne r0, [r0] + ldrneb r0, [r0, #0x790] + cmpne r0, #0 + addne r4, r4, #1 +_022FFEFC: + cmp r4, #0 + movlt r4, #0 + cmp r4, #5 + movge r4, #4 + mov r0, r4 + str r4, [r6, #0x110] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FFF18: .word 0x023535B8 +_022FFF1C: .word 0x000001A5 +_022FFF20: .word 0x0000017F +_022FFF24: .word 0x02353538 + arm_func_end CalcSpeedStage + + arm_func_start ExclusiveItemEffectIsActive__022FFF28 +ExclusiveItemEffectIsActive__022FFF28: ; 0x022FFF28 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__022FFF28 + + arm_func_start CalcSpeedStageWrapper +CalcSpeedStageWrapper: ; 0x022FFF4C + ldr ip, _022FFF58 ; =CalcSpeedStage + mov r1, #1 + bx ip + .align 2, 0 +_022FFF58: .word CalcSpeedStage + arm_func_end CalcSpeedStageWrapper + + arm_func_start GetNumberOfAttacks +GetNumberOfAttacks: ; 0x022FFF5C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r5, #0 + mov sl, r0 + mov sb, r1 + mov r6, r5 + mov r7, r5 + bl EntityIsValid__023000E4 + cmp r0, #0 + moveq r0, r5 + beq _023000D4 + mov r0, sl + bl GetApparentWeather + mov r8, r0 + cmp r8, #4 + bne _022FFFB8 + mov r0, sl + mov r1, #0x1b + bl AbilityIsActive + cmp r0, #0 + movne r5, #1 + movne r6, r5 + b _022FFFD8 +_022FFFB8: + cmp r8, #1 + bne _022FFFD8 + mov r0, sl + mov r1, #0x4a + bl AbilityIsActive + cmp r0, #0 + movne r5, #1 + movne r6, r5 +_022FFFD8: + ldr r4, _023000DC ; =0x023535B0 + ldrb r0, [r4, r8] + cmp r0, #0 + beq _02300000 + ldrb r1, [r4, r8] + mov r0, sl + bl ExclusiveItemEffectIsActive__022FFF28 + cmp r0, #0 + ldrneb r7, [r4, r8] + movne r5, #1 +_02300000: + mov r0, sl + mov r1, #0x54 + bl AbilityIsActive + cmp r0, #0 + beq _02300028 + ldr r0, [sl, #0xb4] + ldrsh r0, [r0, #0x66] + cmp r0, #0 + moveq r5, #1 + moveq r6, r5 +_02300028: + cmp sb, #0 + beq _023000C8 + cmp r6, #0 + beq _02300068 + ldr r0, [sl, #0xb4] + mov r2, r5 + mov r1, #0x40 + bl ov29_023023C0 + cmp r0, #0 + beq _023000C8 + mov r0, sl + bl ov29_022E655C + mov r0, sl + mov r1, #0xc30 + bl LogMessageByIdWithPopupCheckUser + b _023000C8 +_02300068: + cmp r7, #0 + beq _023000C8 + ldr r0, [sl, #0xb4] + mov r2, r5 + mov r1, #0x40 + bl ov29_023023C0 + cmp r0, #0 + beq _023000C8 + mov r0, sl + bl ov29_022E655C + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r2, sp, #0 + mov r0, sl + mov r1, r7 + bl ov29_0230F654 + add r1, sp, #0 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _023000E0 ; =0x00000C31 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_023000C8: + cmp r5, #0 + movne r0, #2 + moveq r0, #1 +_023000D4: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023000DC: .word 0x023535B0 +_023000E0: .word 0x00000C31 + arm_func_end GetNumberOfAttacks diff --git a/asm/overlay_29_02300108.s b/asm/overlay_29_02300108.s new file mode 100644 index 00000000..ee9d07bc --- /dev/null +++ b/asm/overlay_29_02300108.s @@ -0,0 +1,3120 @@ + .include "asm/macros.inc" + .include "overlay_29_02300108.inc" + + .text + + arm_func_start ov29_02300108 +ov29_02300108: ; 0x02300108 + ldr r1, _02300160 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x1a000 + ldrb r2, [r1, #0x23e] + cmp r2, #0 + ldreqb r2, [r1, #0x245] + cmpeq r2, #0 + bne _0230013C + ldrb r1, [r1, #0x244] + cmp r1, #0 + ldreqb r1, [r0, #0xef] + cmpeq r1, #1 + bne _0230014C +_0230013C: + ldrb r1, [r0, #6] + cmp r1, #0 + movne r0, #1 + bxne lr +_0230014C: + ldrb r0, [r0, #0xd8] + cmp r0, #2 + moveq r0, #2 + movne r0, #0 + bx lr + .align 2, 0 +_02300160: .word 0x02353538 + arm_func_end ov29_02300108 + + arm_func_start ov29_02300164 +ov29_02300164: ; 0x02300164 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl ov29_02300108 + cmp r0, #1 + bne _02300190 + ldr r1, _02300274 ; =0x00000C34 + mov r0, r5 + bl sub_020258E4 + ldmia sp!, {r3, r4, r5, pc} +_02300190: + cmp r0, #2 + bne _023001A8 + ldr r1, _02300278 ; =0x00000C32 + mov r0, r5 + bl sub_020258E4 + ldmia sp!, {r3, r4, r5, pc} +_023001A8: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _0230025C + ldrb r0, [r4, #0xbc] + cmp r0, #0xb + bne _023001DC + mov r0, #0 + bl GetExplorerMazeMonster + mov r1, r0 + mov r0, r5 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r3, r4, r5, pc} +_023001DC: + cmp r0, #0xc + bne _02300200 + mov r0, #1 + bl GetExplorerMazeMonster + mov r1, r0 + mov r0, r5 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r3, r4, r5, pc} +_02300200: + cmp r0, #0xd + bne _02300224 + mov r0, #2 + bl GetExplorerMazeMonster + mov r1, r0 + mov r0, r5 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r3, r4, r5, pc} +_02300224: + cmp r0, #0xe + bne _02300248 + mov r0, #3 + bl GetExplorerMazeMonster + mov r1, r0 + mov r0, r5 + mov r2, #0x4e + bl sub_02056084 + ldmia sp!, {r3, r4, r5, pc} +_02300248: + ldrsh r1, [r4, #4] + mov r0, r5 + mov r2, #0x4e + bl GetNameWithGender + ldmia sp!, {r3, r4, r5, pc} +_0230025C: + ldrsh r0, [r4, #0xc] + bl GetActiveTeamMember + mov r1, r0 + mov r0, r5 + bl sub_020585B4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02300274: .word 0x00000C34 +_02300278: .word 0x00000C32 + arm_func_end ov29_02300164 + + arm_func_start ov29_0230027C +ov29_0230027C: ; 0x0230027C + stmdb sp!, {r4, lr} + sub sp, sp, #0x100 + ldrb r2, [r1, #0xd8] + mov r4, r0 + cmp r2, #2 + bne _023002B4 + ldr r1, _023002C0 ; =0x00000C32 + add r0, sp, #0 + bl sub_020258E4 + ldr r1, _023002C4 ; =0x023527C0 + add r2, sp, #0 + mov r0, r4 + bl SprintfStatic + b _023002B8 +_023002B4: + bl ov29_02300164 +_023002B8: + add sp, sp, #0x100 + ldmia sp!, {r4, pc} + .align 2, 0 +_023002C0: .word 0x00000C32 +_023002C4: .word 0x023527C0 + arm_func_end ov29_0230027C + + arm_func_start SprintfStatic +SprintfStatic: ; 0x023002C8 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl Vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic + + arm_func_start ov29_023002F0 +ov29_023002F0: ; 0x023002F0 + stmdb sp!, {r3, r4, r5, lr} + ldrb r3, [r1, #0xd8] + mov r5, r0 + mov r4, r2 + cmp r3, #2 + bne _02300328 + ldr r0, _02300350 ; =0x00000C33 + bl StringFromMessageId + mov r3, r0 + ldr r1, _02300354 ; =0x023527D0 + mov r0, r5 + mov r2, r4 + bl SprintfStatic + ldmia sp!, {r3, r4, r5, pc} +_02300328: + ldrb r3, [r1, #6] + cmp r3, #0 + beq _02300344 + ldrsh r1, [r1, #4] + mov r2, #0x4e + bl GetName + ldmia sp!, {r3, r4, r5, pc} +_02300344: + ldrsh r1, [r1, #0xc] + bl sub_02058534 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02300350: .word 0x00000C33 +_02300354: .word 0x023527D0 + arm_func_end ov29_023002F0 + + arm_func_start ov29_02300358 +ov29_02300358: ; 0x02300358 + stmdb sp!, {r4, lr} + ldr r2, _02300400 ; =0x02353538 + mov r4, r0 + ldr r0, [r2] + add r0, r0, #0x1a000 + ldrb r2, [r0, #0x23e] + cmp r2, #0 + ldreqb r0, [r0, #0x245] + cmpeq r0, #0 + bne _0230038C + ldrb r0, [r1, #0xef] + cmp r0, #1 + bne _023003B0 +_0230038C: + ldrb r0, [r1, #6] + cmp r0, #0 + beq _023003B0 + ldr r0, _02300404 ; =0x00000C35 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + bl Strcpy + ldmia sp!, {r4, pc} +_023003B0: + ldrb r0, [r1, #0xd8] + cmp r0, #2 + bne _023003D4 + ldr r0, _02300408 ; =0x00000C33 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + bl Strcpy + ldmia sp!, {r4, pc} +_023003D4: + ldrb r0, [r1, #6] + cmp r0, #0 + beq _023003F0 + ldrsh r1, [r1, #4] + mov r0, r4 + bl GetNameRaw + ldmia sp!, {r4, pc} +_023003F0: + ldrsh r1, [r1, #0xc] + mov r0, r4 + bl sub_0205858C + ldmia sp!, {r4, pc} + .align 2, 0 +_02300400: .word 0x02353538 +_02300404: .word 0x00000C35 +_02300408: .word 0x00000C33 + arm_func_end ov29_02300358 + + arm_func_start ov29_0230040C +ov29_0230040C: ; 0x0230040C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl sub_02024FB8 + ldrsh r1, [sp, #0x18] + mov r4, r0 + cmp r1, #0 + beq _02300448 + cmp r1, #1 + beq _02300454 + cmp r1, #2 + beq _02300488 + b _02300490 +_02300448: + mov r1, r5 + bl ov29_02300164 + b _02300490 +_02300454: + mov r0, r5 + bl ov29_02300108 + cmp r0, #0 + bne _02300478 + ldrsh r1, [r5, #4] + mov r0, r4 + mov r2, #0x6a + bl GetNameWithGender + b _02300490 +_02300478: + mov r0, r4 + mov r1, r5 + bl ov29_02300164 + b _02300490 +_02300488: + mov r1, r5 + bl ov29_02300358 +_02300490: + cmp r7, #0 + addne r0, r7, r6, lsl #2 + strne r4, [r0, #0x38] + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r4 + bl ov29_0234B0B4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0230040C + + arm_func_start ov29_023004B0 +ov29_023004B0: ; 0x023004B0 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xbd] + cmp r0, #1 + moveq r0, #1 + bxeq lr + cmp r0, #3 + moveq r0, #1 + bxeq lr + cmp r0, #4 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_023004B0 + + arm_func_start ov29_023004E4 +ov29_023004E4: ; 0x023004E4 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xbf] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_023004E4 + + arm_func_start ov29_02300500 +ov29_02300500: ; 0x02300500 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xc4] + cmp r0, #3 + cmpne r0, #5 + cmpne r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + arm_func_end ov29_02300500 + + arm_func_start ov29_02300520 +ov29_02300520: ; 0x02300520 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xd0] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02300520 + + arm_func_start ov29_0230053C +ov29_0230053C: ; 0x0230053C + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #1 + moveq r0, #1 + bxeq lr + cmp r0, #2 + moveq r0, #1 + bxeq lr + cmp r0, #4 + moveq r0, #1 + bxeq lr + cmp r0, #5 + moveq r0, #1 + bxeq lr + cmp r0, #6 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_0230053C + + arm_func_start ov29_02300588 +ov29_02300588: ; 0x02300588 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xe0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02300588 + + arm_func_start ov29_023005A4 +ov29_023005A4: ; 0x023005A4 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xec] + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_023005A4 + + arm_func_start ov29_023005C0 +ov29_023005C0: ; 0x023005C0 + stmdb sp!, {r4, lr} + ldr r4, [r0, #0xb4] + bl IsBlinded + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} + ldrb r0, [r4, #0xf1] + cmp r0, #2 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + cmp r0, #4 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end ov29_023005C0 + + arm_func_start ov29_023005FC +ov29_023005FC: ; 0x023005FC + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xf3] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_023005FC + + arm_func_start ov29_02300618 +ov29_02300618: ; 0x02300618 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xf5] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02300618 + + arm_func_start ov29_02300634 +ov29_02300634: ; 0x02300634 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6, #0xb4] + mov r5, r1 + bl ov29_023004B0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_023004E4 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02300500 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02300520 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_0230053C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02300588 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_023005A4 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + bl ov29_023005C0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_023005FC + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02300618 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldrb r0, [r4, #0xfe] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldrb r0, [r4, #0x106] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov ip, #0 + add r3, r4, #0x124 + mov r1, ip + mov r2, #1 + b _02300770 +_02300740: + ldrb r0, [r3, ip, lsl #3] + add lr, r3, ip, lsl #3 + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _0230076C + ldrh r0, [lr, #2] + tst r0, #1 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_0230076C: + add ip, ip, #1 +_02300770: + cmp ip, #4 + blt _02300740 + mov r1, #0 + b _02300798 +_02300780: + add r0, r4, r1 + ldrb r0, [r0, #0x119] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + add r1, r1, #1 +_02300798: + cmp r1, #5 + blt _02300780 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_02300634 + + arm_func_start ov29_023007A8 +ov29_023007A8: ; 0x023007A8 + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #0xbd] + cmp r0, #1 + moveq r0, #1 + bxeq lr + cmp r0, #5 + moveq r0, #1 + bxeq lr + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_023007A8 + + arm_func_start ov29_023007DC +ov29_023007DC: ; 0x023007DC + ldr r3, [r0, #0xb4] + ldr r0, _02300814 ; =0x000003E7 + ldrsh r2, [r3, #0x12] + ldrsh r1, [r3, #0x16] + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r3, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r0, #1 + movgt r0, #0 + bx lr + .align 2, 0 +_02300814: .word 0x000003E7 + arm_func_end ov29_023007DC + + arm_func_start ov29_02300818 +ov29_02300818: ; 0x02300818 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + cmp r1, #0 + ldr r4, [r5, #0xb4] + beq _02300840 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02300840: + ldrb r0, [r4, #0xbd] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #5 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_02300CB0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #6 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x105] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02300818 + + arm_func_start ov29_023008DC +ov29_023008DC: ; 0x023008DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + cmp r1, #0 + ldr r4, [r5, #0xb4] + beq _02300904 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02300904: + ldrb r0, [r4, #0xbd] + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #5 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_02300D00 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #6 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x105] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023008DC + + arm_func_start ov29_023009A0 +ov29_023009A0: ; 0x023009A0 + stmdb sp!, {r4, lr} + mov r1, #0 + mov r4, r0 + bl ov29_0232461C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, pc} + mov r0, r4 + mov r1, #0 + bl ov29_02300818 + ldmia sp!, {r4, pc} + arm_func_end ov29_023009A0 + + arm_func_start ov29_023009CC +ov29_023009CC: ; 0x023009CC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + mov r1, #0 + bl ov29_0232461C + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xbd] + cmp r0, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ShouldMonsterRunAway + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xf3] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r3, [r4, #0xc4] + cmp r3, #6 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r3, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r2, [r4, #0xd0] + cmp r2, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #0xbd] + cmp r1, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xef] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r1, #5 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r2, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r3, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r3, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xf1] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd8] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #7 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #3 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023009CC + + arm_func_start ov29_02300B04 +ov29_02300B04: ; 0x02300B04 + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #1 + cmpne r0, #5 + cmpne r0, #3 + beq _02300B30 + ldrb r0, [r1, #0xc4] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #6 + bhi _02300B38 +_02300B30: + mov r0, #0 + bx lr +_02300B38: + mov r0, #1 + bx lr + arm_func_end ov29_02300B04 + + arm_func_start ov29_02300B40 +ov29_02300B40: ; 0x02300B40 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xbc] + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl IsExperienceLocked + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #7] + cmp r0, #0 + bne _02300B90 + mov r0, r5 + bl ShouldMonsterRunAway + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02300B90: + mov r0, r5 + mov r1, #0 + bl ov29_02300818 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_02300CB0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0 + bl ov29_0232461C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #4 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02300B40 + + arm_func_start ov29_02300BF8 +ov29_02300BF8: ; 0x02300BF8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xbc] + cmp r0, #7 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl IsExperienceLocked + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #7] + cmp r0, #0 + bne _02300C48 + mov r0, r5 + bl ShouldMonsterRunAway + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02300C48: + mov r0, r5 + mov r1, #0 + bl ov29_023008DC + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_02300D00 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0 + bl ov29_0232461C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xc4] + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #4 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02300BF8 + + arm_func_start ov29_02300CB0 +ov29_02300CB0: ; 0x02300CB0 + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #2 + cmpne r0, #4 + cmpne r0, #0 + movne r0, #1 + bxne lr + ldrb r0, [r1, #0xc4] + cmp r0, #1 + moveq r0, #1 + bxeq lr + cmp r0, #6 + moveq r0, #1 + bxeq lr + ldrb r0, [r1, #0xd2] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02300CB0 + + arm_func_start ov29_02300D00 +ov29_02300D00: ; 0x02300D00 + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #2 + cmpne r0, #4 + cmpne r0, #0 + movne r0, #1 + bxne lr + ldrb r0, [r1, #0xc4] + cmp r0, #1 + moveq r0, #1 + bxeq lr + cmp r0, #6 + moveq r0, #1 + bxeq lr + ldrb r0, [r1, #0xd2] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02300D00 + + arm_func_start ov29_02300D50 +ov29_02300D50: ; 0x02300D50 + stmdb sp!, {r3, lr} + ldr r1, [r0, #0xb4] + ldrb r3, [r1, #0xc4] + cmp r3, #3 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r3, #4 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrb r2, [r1, #0xd0] + cmp r2, #7 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r2, #3 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrb r1, [r1, #0xbf] + cmp r1, #4 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r3, #6 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r2, #1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl ov29_02300CB0 + ldmia sp!, {r3, pc} + arm_func_end ov29_02300D50 + + arm_func_start ov29_02300DC0 +ov29_02300DC0: ; 0x02300DC0 + ldr ip, _02300DC8 ; =ov29_02300D50 + bx ip + .align 2, 0 +_02300DC8: .word ov29_02300D50 + arm_func_end ov29_02300DC0 + + arm_func_start ov29_02300DCC +ov29_02300DCC: ; 0x02300DCC + stmdb sp!, {r3, lr} + cmp r1, #0 + ldr r2, [r0, #0xb4] + bne _02300DF4 + ldrb r1, [r2, #0xbd] + cmp r1, #2 + cmpne r1, #4 + cmpne r1, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} +_02300DF4: + ldrb r1, [r2, #0xc4] + cmp r1, #1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #3 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #4 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #6 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrb r1, [r2, #0xd0] + cmp r1, #1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #3 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #7 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + ldrb r1, [r2, #0xbf] + cmp r1, #4 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl ShouldMonsterRunAway + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02300DCC + + arm_func_start ov29_02300E78 +ov29_02300E78: ; 0x02300E78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r2, [r6, #0xb4] + mov r5, r1 + ldrsh r1, [r2, #2] + bl ov29_022FF674 + ldr r2, _02300F24 ; =0x0235171C + mov ip, r5, lsl #2 + ldr r1, _02300F28 ; =0x0235171E + ldrsh r3, [r2, ip] + ldrsh lr, [r6, #4] + mov r4, r0 + ldrsh r2, [r6, #6] + ldrsh r1, [r1, ip] + add r0, lr, r3 + add r1, r2, r1 + bl GetTile + ldrh r1, [r0] + tst r1, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r0, #0xc] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + and r2, r5, #0xff + bl ov29_02300F30 + mov r4, r0 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl GetTile + add r0, r0, r4 + ldr r1, _02300F2C ; =0x02352798 + and r2, r5, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02300F24: .word 0x0235171C +_02300F28: .word 0x0235171E +_02300F2C: .word 0x02352798 + arm_func_end ov29_02300E78 + + arm_func_start ov29_02300F30 +ov29_02300F30: ; 0x02300F30 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl ov29_02336204 + cmp r0, #0 + bne _02300FC4 + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xef] + cmp r0, #3 + moveq r5, #3 + beq _02300FC4 + mov r0, r6 + mov r1, #0x10 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r5, #3 + bne _02300FC4 + cmp r5, #3 + beq _02300F98 + mov r0, r6 + mov r1, #0xc + bl IqSkillIsEnabled + cmp r0, #0 + movne r5, #2 + bne _02300FC4 +_02300F98: + mov r0, r6 + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + beq _02300FC4 + cmp r4, #0xff + moveq r5, #3 + beq _02300FC4 + tst r4, #1 + movne r5, #2 + moveq r5, #3 +_02300FC4: + mov r0, r5 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_02300F30 + + arm_func_start ov29_02300FCC +ov29_02300FCC: ; 0x02300FCC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr r1, _02301050 ; =0x0235171C + mov ip, r4, lsl #2 + ldr r0, _02301054 ; =0x0235171E + ldrsh r3, [r1, ip] + ldrsh lr, [r5, #4] + ldrsh r1, [r0, ip] + ldrsh r2, [r5, #6] + add r0, lr, r3 + add r1, r2, r1 + bl GetTile + ldrh r1, [r0] + tst r1, #0x10 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, [r0, #0xc] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrsh r0, [r5, #4] + ldrsh r1, [r5, #6] + bl GetTile + ldr r1, _02301058 ; =0x02352790 + and r2, r4, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02301050: .word 0x0235171C +_02301054: .word 0x0235171E +_02301058: .word 0x02352790 + arm_func_end ov29_02300FCC + + arm_func_start ov29_0230105C +ov29_0230105C: ; 0x0230105C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r2, [r6, #0xb4] + mov r5, r1 + ldrsh r1, [r2, #2] + bl ov29_022FF674 + ldr r2, _0230110C ; =0x0235171C + mov ip, r5, lsl #2 + ldr r1, _02301110 ; =0x0235171E + ldrsh r3, [r2, ip] + ldrsh lr, [r6, #4] + mov r4, r0 + ldrsh r2, [r6, #6] + ldrsh r1, [r1, ip] + add r0, lr, r3 + add r1, r2, r1 + bl GetTile + ldrh r1, [r0] + tst r1, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r0, #0xc] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #1 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + and r2, r5, #0xff + bl ov29_02300F30 + mov r4, r0 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl GetTile + add r0, r0, r4 + ldr r1, _02301114 ; =0x02352788 + and r2, r5, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230110C: .word 0x0235171C +_02301110: .word 0x0235171E +_02301114: .word 0x02352788 + arm_func_end ov29_0230105C + + arm_func_start IsMonsterCornered +IsMonsterCornered: ; 0x02301118 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + b _02301148 +_02301128: + mov r0, r5 + mov r1, r4 + bl ov29_02301158 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + add r0, r4, #1 + and r4, r0, #0xff +_02301148: + cmp r4, #8 + blo _02301128 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end IsMonsterCornered + + arm_func_start ov29_02301158 +ov29_02301158: ; 0x02301158 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r2, [r6, #0xb4] + mov r5, r1 + ldrsh r1, [r2, #2] + bl ov29_022FF674 + ldr r2, _02301228 ; =0x0235171C + mov ip, r5, lsl #2 + ldr r1, _0230122C ; =0x0235171E + ldrsh r3, [r2, ip] + ldrsh lr, [r6, #4] + mov r4, r0 + ldrsh r2, [r6, #6] + ldrsh r1, [r1, ip] + add r0, lr, r3 + add r1, r2, r1 + bl GetTile + ldrh r1, [r0] + tst r1, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _023011E0 + ldr r0, [r1] + cmp r0, #1 + bne _023011E0 + mov r0, r6 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_023011E0: + mov r0, r6 + mov r1, r4 + and r2, r5, #0xff + bl ov29_02300F30 + mov r4, r0 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl GetTile + add r0, r0, r4 + ldr r1, _02301230 ; =0x02352780 + and r2, r5, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02301228: .word 0x0235171C +_0230122C: .word 0x0235171E +_02301230: .word 0x02352780 + arm_func_end ov29_02301158 + + arm_func_start CanAttackInDirection +CanAttackInDirection: ; 0x02301234 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r2, [r6, #0xb4] + mov r5, r1 + ldrsh r1, [r2, #2] + bl ov29_022FF674 + mov r4, r0 + ldr r1, _023012EC ; =0x0235171C + mov ip, r5, lsl #2 + cmp r4, #1 + ldr r0, _023012F0 ; =0x0235171E + ldrsh r3, [r1, ip] + ldrsh lr, [r6, #4] + ldrsh r1, [r0, ip] + ldrsh r2, [r6, #6] + add r0, lr, r3 + movls r4, #2 + add r1, r2, r1 + bl GetTile + ldrh r1, [r0] + tst r1, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r0, #0xc] + cmp r0, #0 + ldrne r0, [r0] + cmpne r0, #1 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + and r2, r5, #0xff + bl ov29_02300F30 + mov r4, r0 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl GetTile + add r0, r0, r4 + ldr r1, _023012F4 ; =0x02352778 + and r2, r5, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023012EC: .word 0x0235171C +_023012F0: .word 0x0235171E +_023012F4: .word 0x02352778 + arm_func_end CanAttackInDirection + + arm_func_start CanAiMonsterMoveInDirection +CanAiMonsterMoveInDirection: ; 0x023012F8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + ldr r3, [r8, #0xb4] + mov r7, r1 + ldrsh r1, [r3, #2] + mov r6, r2 + bl ov29_022FF674 + mov r1, #0 + strb r1, [r6] + ldr r2, _02301484 ; =0x0235171C + mov r4, r7, lsl #2 + ldr r1, _02301488 ; =0x0235171E + ldrsh r3, [r2, r4] + ldrsh ip, [r8, #4] + mov r5, r0 + ldrsh r2, [r8, #6] + ldrsh r1, [r1, r4] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + mov r4, r0 + ldrh r0, [r4] + tst r0, #0x10 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + tst r0, #0x40 + beq _02301390 + ldr r0, _0230148C ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x793] + cmp r0, #0 + bne _02301390 + mov r0, r8 + mov r1, #0xf + bl IqSkillIsEnabled + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02301390: + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _023013E4 + mov r0, r8 + mov r1, #0xe + bl IqSkillIsEnabled + cmp r0, #0 + beq _023013E4 + ldr r1, [r4, #0x10] + ldr r0, [r1] + cmp r0, #2 + bne _023013E4 + ldrb r0, [r1, #0x20] + cmp r0, #0 + bne _023013DC + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xf1] + cmp r0, #3 + bne _023013E4 +_023013DC: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023013E4: + ldrh r0, [r4] + and r0, r0, #3 + cmp r0, #2 + bne _0230142C + ldr r0, _0230148C ; =0x02353538 + ldr r1, _02301490 ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0230142C + mov r0, r8 + mov r1, #0x14 + bl IqSkillIsEnabled + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_0230142C: + mov r0, r8 + mov r1, r5 + and r2, r7, #0xff + bl ov29_02300F30 + mov r5, r0 + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + bl GetTile + add r0, r0, r5 + ldr r1, _02301494 ; =0x02352770 + and r2, r7, #7 + ldrb r1, [r1, r2] + ldrb r0, [r0, #8] + tst r1, r0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + mov r0, #1 + strneb r0, [r6] + movne r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02301484: .word 0x0235171C +_02301488: .word 0x0235171E +_0230148C: .word 0x02353538 +_02301490: .word 0x020A1AE8 +_02301494: .word 0x02352770 + arm_func_end CanAiMonsterMoveInDirection + + arm_func_start ov29_02301498 +ov29_02301498: ; 0x02301498 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r1, [r5, #0xb4] + ldrsh r1, [r1, #2] + bl ov29_022FF674 + mov r1, r0 + mov r0, r5 + mov r2, #0xff + bl ov29_02300F30 + mov r4, r0 + cmp r4, #3 + bne _023014FC + ldr r4, [r5, #0xb4] + mov r0, #0x64 + bl DungeonRandInt + add r1, r4, #0x200 + ldrsh r2, [r1, #0x12] + add r0, r2, r0 + strh r0, [r1, #0x12] + ldrsh r0, [r1, #0x12] + cmp r0, #0xc8 + mov r0, #0 + strgeh r0, [r1, #0x12] + movge r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_023014FC: + ldr r0, _0230158C ; =0x02353538 + ldr r1, _02301590 ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + cmpeq r4, #1 + bne _02301534 + mov r0, r5 + mov r1, #0x14 + bl IqSkillIsEnabled + cmp r0, #0 + movne r4, #0 +_02301534: + ldrsh r0, [r5, #4] + ldrsh r1, [r5, #6] + bl GetTile + add r0, r0, r4 + ldrb r0, [r0, #8] + cmp r0, #0x54 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0x51 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0x45 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0x15 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #0x55 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230158C: .word 0x02353538 +_02301590: .word 0x020A1AE8 + arm_func_end ov29_02301498 + + arm_func_start ov29_02301594 +ov29_02301594: ; 0x02301594 + stmdb sp!, {r4, lr} + mov r4, r1 + mov r1, #3 + bl ov29_02301F20 + cmp r0, #0 + cmpne r4, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_02301594 + + arm_func_start ShouldMonsterRunAway +ShouldMonsterRunAway: ; 0x023015B8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl EntityIsValid__023000E4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0x104] + cmp r0, #0 + ldrneb r0, [r4, #0x105] + cmpne r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #7] + cmp r0, #0 + bne _0230169C + mov r0, r5 + mov r1, #0x2b + bl AbilityIsActive + cmp r0, #0 + beq _02301644 + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _023016A4 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + ldrsh r1, [r4, #0x10] + add r0, r2, r2, lsr #31 + cmp r1, r0, asr #1 + movlt r0, #1 + movge r0, #0 + tst r0, #0xff + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02301644: + mov r0, r5 + mov r1, #0xa + bl ov29_02301F20 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #6 + bl ov29_02301F20 + cmp r0, #0 + beq _0230169C + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _023016A4 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + ldrsh r1, [r4, #0x10] + add r0, r2, r2, lsr #31 + cmp r1, r0, asr #1 + movle r0, #1 + ldmleia sp!, {r3, r4, r5, pc} +_0230169C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023016A4: .word 0x000003E7 + arm_func_end ShouldMonsterRunAway + + arm_func_start ShouldMonsterRunAwayVariation +ShouldMonsterRunAwayVariation: ; 0x023016A8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl ShouldMonsterRunAway + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl ov29_023016D8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ShouldMonsterRunAwayVariation + + arm_func_start ov29_023016D8 +ov29_023016D8: ; 0x023016D8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r4, [r6, #0xb4] + mov r5, r1 + ldrb r1, [r4, #7] + cmp r1, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r1, #0x2b + bl AbilityIsActive + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02301758 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + ldrsh r1, [r4, #0x10] + add r0, r2, r2, lsr #31 + cmp r1, r0, asr #1 + movle r1, #1 + movgt r1, #0 + and r2, r1, #0xff + mov r0, r4 + mov r1, #4 + bl ov29_023023C0 + cmp r5, #0 + cmpne r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_022E62A8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02301758: .word 0x000003E7 + arm_func_end ov29_023016D8 + + arm_func_start ov29_0230175C +ov29_0230175C: ; 0x0230175C + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0, #0xb4] + ldr r5, [r1, #0xb4] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #9] + cmp r1, #1 + ldrneb r1, [r5, #9] + cmpne r1, #1 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #0xbc] + cmp r1, #7 + ldrneb r1, [r5, #0xbc] + cmpne r1, #7 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r3, #0 + beq _023017C4 + ldrb r1, [r4, #6] + cmp r1, #0 + ldreqb r1, [r5, #0xc4] + cmpeq r1, #6 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} +_023017C4: + cmp r2, #0 + ldreqb r1, [r5, #0xef] + cmpeq r1, #1 + bne _023017E4 + bl CanSeeInvisibleMonsters + cmp r0, #0 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} +_023017E4: + ldrb r0, [r4, #0x10c] + cmp r0, #0 + bne _02301804 + ldrb r0, [r4, #7] + cmp r0, #0 + movne r1, #0 + moveq r1, #1 + b _02301810 +_02301804: + cmp r0, #1 + moveq r1, #2 + movne r1, #3 +_02301810: + ldrb r0, [r4, #9] + cmp r0, #0 + beq _02301828 + cmp r0, #3 + moveq r2, #1 + b _02301844 +_02301828: + ldrb r0, [r4, #6] + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + cmp r0, #0 + ldrneb r0, [r4, #8] + cmpne r0, #0 +_02301844: + ldrb r0, [r5, #9] + movne r2, #0 + cmp r0, #0 + beq _02301860 + cmp r0, #3 + moveq r3, #1 + b _0230187C +_02301860: + ldrb r0, [r5, #6] + cmp r0, #0 + movne r3, #1 + moveq r3, #0 + cmp r0, #0 + ldrneb r0, [r5, #8] + cmpne r0, #0 +_0230187C: + ldrb r0, [r5, #0xd8] + movne r3, #0 + cmp r0, #2 + ldr r0, _023018A8 ; =0x023527A0 + moveq r4, #1 + add r0, r0, r1, lsl #3 + add r0, r0, r2, lsl #2 + movne r4, #0 + add r0, r0, r3, lsl #1 + ldrb r0, [r4, r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023018A8: .word 0x023527A0 + arm_func_end ov29_0230175C + + arm_func_start ov29_023018AC +ov29_023018AC: ; 0x023018AC + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0, #0xb4] + ldr r5, [r1, #0xb4] + ldrb r0, [r4, #0xbc] + cmp r0, #7 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl IsExperienceLocked + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #9] + cmp r0, #0 + cmpne r0, #3 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r5, #0xbc] + cmp r0, #7 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl IsExperienceLocked + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r5, #9] + cmp r0, #0 + cmpne r0, #3 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r1, [r4, #6] + ldrb r0, [r5, #6] + cmp r1, r0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023018AC + + arm_func_start ov29_02301940 +ov29_02301940: ; 0x02301940 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr r3, [r4, #0xb4] + mov r5, r0 + ldrb r0, [r3, #0xd5] + cmp r0, #2 + bne _02301988 + cmp r2, #0 + beq _02301980 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02301990 ; =0x00000C36 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02301980: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_02301988: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02301990: .word 0x00000C36 + arm_func_end ov29_02301940 + + arm_func_start ov29_02301994 +ov29_02301994: ; 0x02301994 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl GetApparentWeather + cmp r0, #1 + bne _02301A00 + mov r0, r6 + mov r1, r5 + mov r2, #0x7b + mov r3, #1 + bl DefenderAbilityIsActive__02301A0C + cmp r0, #0 + beq _02301A00 + cmp r4, #0 + beq _023019F8 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02301A08 ; =0x00000C37 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023019F8: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02301A00: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02301A08: .word 0x00000C37 + arm_func_end ov29_02301994 + + arm_func_start DefenderAbilityIsActive__02301A0C +DefenderAbilityIsActive__02301A0C: ; 0x02301A0C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r7, r6 + beq _02301A50 + bl IsMonster__02301A60 + cmp r0, #0 + cmpne r4, #0 + beq _02301A50 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02301A50: + mov r0, r6 + mov r1, r5 + bl AbilityIsActive + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end DefenderAbilityIsActive__02301A0C + + arm_func_start IsMonster__02301A60 +IsMonster__02301A60: ; 0x02301A60 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__02301A60 + + arm_func_start ov29_02301A84 +ov29_02301A84: ; 0x02301A84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov sb, r2 + bl GetApparentWeather + ldr r6, _02301B24 ; =0x023535C0 + mov r7, r0 + ldrb r0, [r6, r7] + mov r8, #0 + cmp r0, #0 + beq _02301B18 + ldrb r1, [r6, r7] + mov r0, r4 + bl ExclusiveItemEffectIsActive__022FFF28 + cmp r0, #0 + beq _02301B18 + cmp sb, #0 + ldrb r6, [r6, r7] + beq _02301B14 + mov r0, r8 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r2, sp, #0 + mov r0, r4 + mov r1, r6 + bl ov29_0230F654 + add r1, sp, #0 + mov r0, #1 + bl ov29_02344B44 + ldr r2, _02301B28 ; =0x00000C39 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02301B14: + mov r8, #1 +_02301B18: + mov r0, r8 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02301B24: .word 0x023535C0 +_02301B28: .word 0x00000C39 + arm_func_end ov29_02301A84 + + arm_func_start ov29_02301B2C +ov29_02301B2C: ; 0x02301B2C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r0, #0 + mov r5, r2 + mov r6, r1 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + bl ov29_023197CC + movs r4, r0 + beq _02301BB0 + cmp r5, #0 + beq _02301BA8 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r4, #1 + bne _02301B8C + ldr r2, _02301C20 ; =0x00000C38 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02301BA8 +_02301B8C: + cmp r4, #2 + bne _02301BA8 + ldr r2, _02301C24 ; =0x00000C39 + mov r0, r7 + mov r1, r6 + mov r3, #0x26 + bl ov29_02314DC4 +_02301BA8: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02301BB0: + mov r0, r7 + mov r1, r6 + mov r2, #0xf + mov r3, #1 + bl DefenderAbilityIsActive__02301A0C + cmp r0, #0 + bne _02301BE8 + mov r0, r7 + mov r1, r6 + mov r2, #0x18 + mov r3, #1 + bl DefenderAbilityIsActive__02301A0C + cmp r0, #0 + beq _02301C18 +_02301BE8: + cmp r5, #0 + beq _02301C10 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02301C28 ; =0x00000C3A + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02301C10: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02301C18: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02301C20: .word 0x00000C38 +_02301C24: .word 0x00000C39 +_02301C28: .word 0x00000C3A + arm_func_end ov29_02301B2C + + arm_func_start ov29_02301C2C +ov29_02301C2C: ; 0x02301C2C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r8, [sl, #0xb4] + mov sb, r1 + ldrb r0, [r8, #0xbd] + cmp r0, #1 + cmpne r0, #5 + cmpne r0, #3 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r6, #0 + add r5, r8, #0x124 + mov fp, r6 + mov r4, #1 + b _02301CCC +_02301C68: + ldrb r1, [r5, r6, lsl #3] + add r7, r5, r6, lsl #3 + tst r1, #1 + movne r0, r4 + moveq r0, fp + tst r0, #0xff + beq _02301CC8 + ldrb r0, [r8, #7] + cmp r0, #0 + bne _02301C98 + tst r1, #4 + beq _02301CC8 +_02301C98: + mov r0, sl + mov r1, r7 + mov r2, #1 + bl ov29_02324BE8 + cmp r0, #0 + ldrneb r0, [r7, #6] + cmpne r0, #0 + beq _02301CC8 + ldrh r0, [r7, #4] + cmp r0, sb + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02301CC8: + add r6, r6, #1 +_02301CCC: + cmp r6, #4 + blt _02301C68 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02301C2C + + arm_func_start NoGastroAcidStatus +NoGastroAcidStatus: ; 0x02301CDC + stmdb sp!, {r4, lr} + mov r4, r0 + bl IsMonster__02301A60 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #4 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end NoGastroAcidStatus + + arm_func_start AbilityIsActive +AbilityIsActive: ; 0x02301D10 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl IsMonster__02301A60 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r4, #0 + ldr r1, [r5, #0xb4] + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r1, #0x60] + cmp r0, r4 + bne _02301D58 + mov r0, r5 + mov r1, r4 + bl NoGastroAcidStatus + ldmia sp!, {r3, r4, r5, pc} +_02301D58: + ldrb r0, [r1, #0x61] + cmp r0, r4 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl NoGastroAcidStatus + ldmia sp!, {r3, r4, r5, pc} + arm_func_end AbilityIsActive + + arm_func_start AbilityIsActive2 +AbilityIsActive2: ; 0x02301D78 + ldr ip, _02301D80 ; =AbilityIsActive + bx ip + .align 2, 0 +_02301D80: .word AbilityIsActive + arm_func_end AbilityIsActive2 + + arm_func_start ov29_02301D84 +ov29_02301D84: ; 0x02301D84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r0 + mov r6, r1 + mov r5, #0 + mov r4, #1 + ldr r8, _02301E14 ; =0x02353538 + b _02301E04 +_02301DA0: + ldr r0, [r8] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__023000E4 + cmp r0, #0 + cmpne r7, sb + beq _02301DF8 + mov r0, r7 + mov r1, sb + bl ov29_022FAFD4 + cmp r0, #0 + beq _02301DF8 + mov r0, r7 + mov r1, sb + mov r2, r6 + mov r3, r4 + bl DefenderAbilityIsActive__02301A0C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02301DF8: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_02301E04: + cmp r5, #0x14 + blt _02301DA0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02301E14: .word 0x02353538 + arm_func_end ov29_02301D84 + + arm_func_start LevitateIsActive +LevitateIsActive: ; 0x02301E18 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GravityIsActive + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + mov r1, #0x37 + bl AbilityIsActive + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end LevitateIsActive + + arm_func_start MonsterIsType +MonsterIsType: ; 0x02301E50 + cmp r1, #0 + ldr r2, [r0, #0xb4] + moveq r0, #0 + bxeq lr + ldrb r0, [r2, #0x5e] + cmp r0, r1 + moveq r0, #1 + bxeq lr + ldrb r0, [r2, #0x5f] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end MonsterIsType + + arm_func_start ov29_02301E88 +ov29_02301E88: ; 0x02301E88 + stmdb sp!, {r3, lr} + cmp r1, #0xa + bne _02301EA4 + bl GravityIsActive + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} +_02301EA4: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02301E88 + + arm_func_start ov29_02301EAC +ov29_02301EAC: ; 0x02301EAC + stmdb sp!, {r3, lr} + ldr r3, [r0, #0xb4] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldrb r2, [r3, #0x5e] + cmp r2, r1 + bne _02301ED4 + bl ov29_02301E88 + ldmia sp!, {r3, pc} +_02301ED4: + ldrb r2, [r3, #0x5f] + cmp r2, r1 + movne r0, #0 + ldmneia sp!, {r3, pc} + bl ov29_02301E88 + ldmia sp!, {r3, pc} + arm_func_end ov29_02301EAC + + arm_func_start CanSeeInvisibleMonsters +CanSeeInvisibleMonsters: ; 0x02301EEC + stmdb sp!, {r3, lr} + ldr r1, [r0, #0xb4] + ldrb r1, [r1, #0xf1] + cmp r1, #3 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + mov r1, #0x21 + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end CanSeeInvisibleMonsters + + arm_func_start ov29_02301F20 +ov29_02301F20: ; 0x02301F20 + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #7] + cmp r0, #0 + beq _02301F38 + cmp r1, #1 + b _02301F40 +_02301F38: + ldrb r0, [r2, #0xa8] + cmp r0, r1 +_02301F40: + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end ov29_02301F20 + + arm_func_start HasDropeyeStatus +HasDropeyeStatus: ; 0x02301F50 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__023000E4 + cmp r0, #0 + beq _02301F78 + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xf1] + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_02301F78: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end HasDropeyeStatus + + arm_func_start IqSkillIsEnabled +IqSkillIsEnabled: ; 0x02301F80 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + bne _02301FAC + ldr r0, _02301FB8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x12] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} +_02301FAC: + add r0, r2, #0x9c + bl IqSkillFlagTest + ldmia sp!, {r3, pc} + .align 2, 0 +_02301FB8: .word 0x02353538 + arm_func_end IqSkillIsEnabled + + arm_func_start ov29_02301FBC +ov29_02301FBC: ; 0x02301FBC + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + ldrb r0, [r4, #6] + mov r6, #0 + cmp r0, #0 + str r6, [r4, #0x9c] + beq _02302118 + str r6, [r4, #0xa0] + str r6, [r4, #0xa4] + b _0230202C +_02301FE4: + ldrsh r0, [r4, #2] + and r1, r6, #0xff + bl GetSpeciesIqSkill + mov r5, r0 + cmp r5, #0xff + beq _02302034 + ldrsh r0, [r4, #0xe] + mov r1, r5 + bl CanLearnIqSkill + cmp r0, #0 + beq _02302028 + mov r1, r5 + add r0, r4, #0x90 + bl EnableIqSkill + mov r1, r5 + add r0, r4, #0x9c + bl EnableIqSkill +_02302028: + add r6, r6, #1 +_0230202C: + cmp r6, #0x19 + blt _02301FE4 +_02302034: + ldr r0, _023021E8 ; =0x020A188C + ldrsh r1, [r4, #0xe] + ldrsh r0, [r0] + cmp r1, r0 + bge _02302068 + add r0, r4, #0x9c + mov r1, #0x17 + bl IqSkillFlagTest + cmp r0, #0 + beq _02302068 + add r0, r4, #0x9c + mov r1, #0x17 + bl DisableIqSkill +_02302068: + mov r0, r4 + bl ov29_022FBDE0 + cmp r0, #0 + bne _0230208C + ldr r0, _023021EC ; =0x020A18A4 + ldrsh r1, [r4, #0xe] + ldrsh r0, [r0] + cmp r1, r0 + bge _023020AC +_0230208C: + add r0, r4, #0x9c + mov r1, #0x16 + bl IqSkillFlagTest + cmp r0, #0 + beq _023020AC + add r0, r4, #0x9c + mov r1, #0x16 + bl DisableIqSkill +_023020AC: + add r0, r4, #0x9c + mov r1, #0x15 + bl IqSkillFlagTest + cmp r0, #0 + beq _023020CC + add r0, r4, #0x9c + mov r1, #0x15 + bl DisableIqSkill +_023020CC: + add r0, r4, #0x9c + mov r1, #0x14 + bl IqSkillFlagTest + cmp r0, #0 + beq _023020EC + add r0, r4, #0x9c + mov r1, #0x14 + bl DisableIqSkill +_023020EC: + add r0, r4, #0x9c + mov r1, #0xb + bl IqSkillFlagTest + cmp r0, #0 + beq _0230210C + add r0, r4, #0x9c + mov r1, #0xb + bl DisableIqSkill +_0230210C: + mov r0, #2 + strb r0, [r4, #0xa8] + ldmia sp!, {r4, r5, r6, pc} +_02302118: + str r6, [r4, #0xa0] + str r6, [r4, #0xa4] + b _02302174 +_02302124: + ldrsh r0, [r4, #2] + and r1, r6, #0xff + bl GetSpeciesIqSkill + mov r5, r0 + cmp r5, #0xff + beq _0230217C + ldrsh r0, [r4, #0xe] + mov r1, r5 + bl CanLearnIqSkill + cmp r0, #0 + beq _02302170 + mov r1, r5 + add r0, r4, #0x90 + bl IqSkillFlagTest + cmp r0, #0 + beq _02302170 + mov r1, r5 + add r0, r4, #0x9c + bl EnableIqSkill +_02302170: + add r6, r6, #1 +_02302174: + cmp r6, #0x19 + blt _02302124 +_0230217C: + mov r0, #3 + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _023021A4 + add r0, r4, #0x90 + mov r1, #0x18 + bl EnableIqSkill + add r0, r4, #0x9c + mov r1, #0x18 + bl EnableIqSkill +_023021A4: + add r0, r4, #0x90 + mov r1, #0x38 + bl IqSkillFlagTest + cmp r0, #0 + beq _023021C4 + add r0, r4, #0x9c + mov r1, #0x38 + bl EnableIqSkill +_023021C4: + add r0, r4, #0x90 + mov r1, #0x39 + bl IqSkillFlagTest + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r0, r4, #0x9c + mov r1, #0x39 + bl EnableIqSkill + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023021E8: .word 0x020A188C +_023021EC: .word 0x020A18A4 + arm_func_end ov29_02301FBC + + arm_func_start ov29_023021F0 +ov29_023021F0: ; 0x023021F0 + ldr ip, _023021FC ; =ov29_02301FBC + ldr r0, [r0, #0xb4] + bx ip + .align 2, 0 +_023021FC: .word ov29_02301FBC + arm_func_end ov29_023021F0 + + arm_func_start ov29_02302200 +ov29_02302200: ; 0x02302200 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r6, #0 + ldr r5, _02302278 ; =0x02353538 + b _02302268 +_02302228: + ldr r1, [r5] + mov r0, r4 + add r1, r1, r6, lsl #2 + add r1, r1, #0x12000 + ldr r7, [r1, #0xb28] + bl EntityIsValid__023000E4 + cmp r0, #0 + cmpne r4, r7 + beq _02302264 + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02302264: + add r6, r6, #1 +_02302268: + cmp r6, #4 + blt _02302228 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02302278: .word 0x02353538 + arm_func_end ov29_02302200 + + arm_func_start GetMoveTypeForMonster +GetMoveTypeForMonster: ; 0x0230227C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldrh r0, [r4, #4] + bl IsRegularAttackOrProjectile + cmp r0, #0 + bne _023022C0 + mov r0, r5 + bl EntityIsValid__023000E4 + cmp r0, #0 + beq _023022C0 + mov r0, r5 + mov r1, #0x6b + bl AbilityIsActive + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_023022C0: + ldrh r1, [r4, #4] + cmp r1, #0x144 + ldreq r0, [r5, #0xb4] + ldreqb r0, [r0, #0x46] + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _02302318 ; =0x000001D7 + cmp r1, r0 + bne _023022F4 + mov r0, r5 + bl ov29_0231AE90 + cmp r0, #0 + ldrneb r0, [r0, #2] + ldmneia sp!, {r3, r4, r5, pc} +_023022F4: + ldrh r0, [r4, #4] + cmp r0, #0x1f + bne _0230230C + mov r0, r5 + bl ov29_0231AF0C + ldmia sp!, {r3, r4, r5, pc} +_0230230C: + mov r0, r4 + bl GetMoveType + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02302318: .word 0x000001D7 + arm_func_end GetMoveTypeForMonster + + arm_func_start GetMovePower +GetMovePower: ; 0x0230231C + stmdb sp!, {r3, r4, r5, lr} + ldrh r2, [r1, #4] + mov r5, r0 + ldrb r4, [r1, #7] + cmp r2, #0x144 + ldreq r0, [r5, #0xb4] + ldreqsh r0, [r0, #0x44] + addeq r0, r4, r0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r1 + bl GetMoveBasePower + add r4, r4, r0 + mov r0, r5 + mov r1, #0x2b + bl ItemIsActive__022FF898 + cmp r0, #0 + movne r4, r4, lsl #1 + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GetMovePower + + arm_func_start ov29_02302368 +ov29_02302368: ; 0x02302368 + stmdb sp!, {r3, lr} + ldrsh r0, [r0, #2] + bl CanThrowItems + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02302368 + + arm_func_start ov29_02302388 +ov29_02302388: ; 0x02302388 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__023000E4 + cmp r0, #0 + ldrne r0, [r4, #0xb4] + ldrneb r1, [r0, #0xbc] + cmpne r1, #7 + beq _023023B8 + bl IsExperienceLocked + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_023023B8: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_02302388 + + arm_func_start ov29_023023C0 +ov29_023023C0: ; 0x023023C0 + stmdb sp!, {r3, lr} + add r3, r0, #0x100 + ldrh ip, [r3, #0x58] + tst ip, r1 + ldrneh ip, [r3, #0x5a] + ldreqh lr, [r3, #0x5a] + orrne ip, ip, r1 + mvneq ip, r1 + andeq ip, lr, ip + cmp r2, #0 + add r2, r0, #0x100 + strh ip, [r3, #0x5a] + ldrneh r3, [r2, #0x58] + ldreqh ip, [r2, #0x58] + add r0, r0, #0x100 + orrne r3, r3, r1 + mvneq r3, r1 + andeq r3, ip, r3 + strh r3, [r2, #0x58] + ldrh r2, [r0, #0x5a] + tst r2, r1 + bne _02302428 + ldrh r0, [r0, #0x58] + tst r0, r1 + movne r0, #1 + ldmneia sp!, {r3, pc} +_02302428: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_023023C0 + + arm_func_start ov29_02302430 +ov29_02302430: ; 0x02302430 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl ov29_02301994 + cmp r0, #0 + movne r0, #1 + bne _023024D4 + mov r0, r5 + mov r1, #0x59 + bl ExclusiveItemEffectIsActive__022FFF28 + cmp r0, #0 + beq _023024B4 + cmp r4, #0 + beq _023024AC + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r2, sp, #0 + mov r0, r5 + mov r1, #0x59 + bl ov29_0230F654 + add r1, sp, #0 + mov r0, #1 + bl ov29_02344B44 + ldr r2, _023024DC ; =0x00000C39 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023024AC: + mov r0, #1 + b _023024D4 +_023024B4: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl ov29_02301A84 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_023024D4: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023024DC: .word 0x00000C39 + arm_func_end ov29_02302430 + + arm_func_start ov29_023024E0 +ov29_023024E0: ; 0x023024E0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #7 + mov r5, r0 + bl IqSkillIsEnabled + cmp r0, #0 + bne _02302534 + cmp r4, #0 + beq _02302518 + mov r0, r5 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + bne _0230252C +_02302518: + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #0xd0] + cmp r0, #2 + cmpne r0, #4 + bne _02302534 +_0230252C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_02302534: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023024E0 + + arm_func_start AddExpSpecial +AddExpSpecial: ; 0x0230253C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + ldr r5, [r7, #0xb4] + mov r6, r2 + mov r0, r5 + bl IsExperienceLocked + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [r5, #0xa] + cmp r0, #0x64 + bne _02302580 + cmp r6, #0 + ldrgt r0, _023026B4 ; =0x02353538 + movgt r1, #1 + ldrgt r0, [r0] + strgtb r1, [r0, #0xf] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02302580: + ldr r2, [r5, #0x20] + mov r0, r7 + mov r1, #0x1c + add r4, r2, r6 + bl IqSkillIsEnabled + cmp r0, #0 + beq _023025C0 + ldr r0, _023026B8 ; =0x022C44A8 + mov r1, #0x64 + ldrsh r0, [r0] + mov r0, r0, lsl #8 + bl DivideInt + mov r1, r0 + mov r0, r6, lsl #8 + bl MultiplyByFixedPoint + add r4, r4, r0, asr #8 +_023025C0: + mov r0, r7 + mov r1, #0x43 + bl ItemIsActive__023026CC + cmp r0, #0 + beq _023025F8 + ldr r0, _023026BC ; =0x022C469C + mov r1, #0x64 + ldrsh r0, [r0] + mov r0, r0, lsl #8 + bl DivideInt + mov r1, r0 + mov r0, r6, lsl #8 + bl MultiplyByFixedPoint + add r4, r4, r0, asr #8 +_023025F8: + mov r0, r7 + mov r1, #0x42 + bl ItemIsActive__023026CC + cmp r0, #0 + beq _02302630 + ldr r0, _023026C0 ; =0x022C4698 + mov r1, #0x64 + ldrsh r0, [r0] + mov r0, r0, lsl #8 + bl DivideInt + mov r1, r0 + mov r0, r6, lsl #8 + bl MultiplyByFixedPoint + add r4, r4, r0, asr #8 +_02302630: + ldr r1, [r7, #0xb4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + bne _02302650 + add r0, r1, #0x228 + mov r1, #0x4f + bl ExclusiveItemEffectFlagTest +_02302650: + cmp r0, #0 + beq _0230267C + ldr r0, _023026C4 ; =0x022C458C + mov r1, #0x64 + ldrsh r0, [r0] + mov r0, r0, lsl #8 + bl DivideInt + mov r1, r0 + mov r0, r6, lsl #8 + bl MultiplyByFixedPoint + add r4, r4, r0, asr #8 +_0230267C: + ldr r0, _023026C8 ; =0x0098967F + cmp r4, r0 + movge r4, r0 + ldr r0, [r5, #0x20] + subs r2, r4, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r5, #0x214] + ldr r0, _023026B4 ; =0x02353538 + add r1, r1, r2 + str r1, [r5, #0x214] + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0xf] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023026B4: .word 0x02353538 +_023026B8: .word 0x022C44A8 +_023026BC: .word 0x022C469C +_023026C0: .word 0x022C4698 +_023026C4: .word 0x022C458C +_023026C8: .word 0x0098967F + arm_func_end AddExpSpecial + + arm_func_start ItemIsActive__023026CC +ItemIsActive__023026CC: ; 0x023026CC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__023026CC + + arm_func_start EnemyEvolution +EnemyEvolution: ; 0x023026FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x168 + mov sl, r0 + bl sub_02025888 + ldr r0, _02302A28 ; =0x02353538 + ldr r2, [r0] + ldrb r1, [r2, #0xf] + ldrb r0, [r2, #0x748] + cmp r1, #0 + str r0, [sp, #8] + beq _02302A20 + mov r0, #0 + strb r0, [r2, #0xf] + bl GetForcedLossReason + cmp r0, #0 + bne _02302A20 + mov r0, sl + bl EntityIsValid__02302A38 + cmp r0, #0 + bne _02302758 + add r0, sp, #0xb0 + bl ov29_022E2470 + add sl, sp, #0xb0 +_02302758: + ldr r0, _02302A2C ; =0x023527F8 + mov r4, #0 + ldr r3, [r0] + ldr r2, [r0, #4] + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + str r3, [sp, #0x14] + str r2, [sp, #0x18] + str r1, [sp, #0xc] + str r0, [sp, #0x10] +_02302780: + ldr r0, _02302A28 ; =0x02353538 + ldr r3, [sp, #0x14] + ldr r0, [r0] + ldr r2, [sp, #0x18] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + mov r6, #0 + str r6, [sp, #4] + str r3, [sp, #0x24] + str r2, [sp, #0x28] + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + cmp r5, #0 + beq _02302A14 + mov r0, r5 + bl EntityIsValid__02302A38 + cmp r0, #0 + ldrne sb, [r5, #0xb4] + ldrnesh r0, [sb, #0x10] + cmpne r0, #0 + beq _02302A14 + ldrb r0, [sb, #0x102] + cmp r0, #0 + movne r0, r6 + strneb r0, [sb, #0x102] + bne _02302A08 + ldr fp, [sb, #0x214] + cmp fp, #0 + beq _023028C4 + ldrb r0, [sb, #7] + cmp r0, #0 + beq _02302818 + ldrb r1, [sb, #0xa] + add r0, sp, #0x54 + bl sub_02058C9C +_02302818: + ldrsh r2, [sb, #0x12] + ldrsh r0, [sb, #0x16] + ldrb r7, [sb, #0x1a] + ldr r1, _02302A30 ; =0x000003E7 + add r0, r2, r0 + ldrb r3, [sb, #0x1b] + ldrb r2, [sb, #0x1c] + str r0, [sp, #4] + cmp r0, r1 + strgt r1, [sp, #4] + ldrb r1, [sb, #0x1d] + ldrb r0, [sb, #0xa] + str r7, [sp, #0x24] + str r3, [sp, #0x28] + str r2, [sp, #0x1c] + str r1, [sp, #0x20] + cmp r0, #0x64 + beq _023028C4 + ldr r0, [sp, #8] + bl IsExpEnabledInDungeon + cmp r0, #0 + beq _023028C4 + ldr r0, [sb, #0x20] + mov r1, fp + add r2, r0, fp + mov r0, #0 + str r2, [sb, #0x20] + bl ov29_0234B09C + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + mov r2, sb + mov r3, r1 + bl ov29_0230040C + mov r0, sl + ldr r1, _02302A34 ; =0x00000F1F + bl LogMessageByIdWithPopup + mov r0, sl + mov r1, r5 + mov r2, #1 + mov r3, r2 + bl ov29_0230303C + orr r6, r6, r0 +_023028C4: + ldrb r0, [sb, #0x153] + cmp r0, #0 + beq _02302968 + ldrsh r0, [sb, #2] + mov r2, #0 + add r1, sp, #0x2c + mov r3, r2 + bl GetEvolutions + movs r6, r0 + beq _02302964 + bl DungeonRandInt + mov r8, r0 + mov r7, #0 + b _0230293C +_023028FC: + mov r1, r8, lsl #1 + add r0, sp, #0x2c + ldrsh r0, [r0, r1] + bl IsOnMonsterSpawnList + cmp r0, #0 + beq _0230292C + mov r1, r8, lsl #1 + add r0, sp, #0x2c + ldrsh r0, [r0, r1] + bl GetSpriteIndex__022F7388 + cmp r0, #0 + bne _02302944 +_0230292C: + add r8, r8, #1 + cmp r8, r6 + movge r8, #0 + add r7, r7, #1 +_0230293C: + cmp r7, r6 + blt _023028FC +_02302944: + cmp r7, r6 + bge _02302964 + add r0, sp, #0x2c + mov r1, r8, lsl #1 + ldrsh r2, [r0, r1] + mov r0, sl + mov r1, r5 + bl EvolveMonster +_02302964: + mov r6, #0 +_02302968: + cmp r6, #0 + beq _023029EC + ldrb r0, [sb, #6] + cmp r0, #0 + bne _023029EC + ldrsh r2, [sb, #0x12] + ldrsh r1, [sb, #0x16] + ldr r0, _02302A30 ; =0x000003E7 + ldr r3, [sp, #0x28] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldr r0, [sp, #4] + sub r0, r1, r0 + str r0, [sp, #0x84] + ldrb r2, [sb, #0x1a] + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x1c] + sub r1, r2, r1 + str r1, [sp, #0x88] + ldrb r1, [sb, #0x1c] + ldr r2, [sp, #0x20] + sub r0, r1, r0 + str r0, [sp, #0x8c] + ldrb r6, [sb, #0x1b] + add r1, sp, #0x60 + mov r0, r5 + sub r3, r6, r3 + str r3, [sp, #0x90] + ldrb r3, [sb, #0x1d] + sub r2, r3, r2 + str r2, [sp, #0x94] + bl ov29_02302CC8 +_023029EC: + cmp fp, #0 + beq _02302A08 + add r2, sp, #0x54 + mov r0, sl + mov r1, r5 + mov r3, #1 + bl ov29_02302C04 +_02302A08: + mov r0, #0 + str r0, [sb, #0x214] + strb r0, [sb, #0x153] +_02302A14: + add r4, r4, #1 + cmp r4, #0x14 + blt _02302780 +_02302A20: + add sp, sp, #0x168 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02302A28: .word 0x02353538 +_02302A2C: .word 0x023527F8 +_02302A30: .word 0x000003E7 +_02302A34: .word 0x00000F1F + arm_func_end EnemyEvolution diff --git a/asm/overlay_29_02302A5C.s b/asm/overlay_29_02302A5C.s new file mode 100644 index 00000000..0b68448c --- /dev/null +++ b/asm/overlay_29_02302A5C.s @@ -0,0 +1,2094 @@ + .include "asm/macros.inc" + .include "overlay_29_02302A5C.inc" + + .text + + arm_func_start ov29_02302A5C +ov29_02302A5C: ; 0x02302A5C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x74 + mov sb, r1 + mov sl, r0 + mov r0, sb + str r2, [sp] + mov r8, r3 + bl EntityIsValid__02302A38 + cmp r0, #0 + beq _02302BF4 + ldr r5, [sb, #0xb4] + mov r4, #0 + ldrb r0, [r5, #7] + cmp r0, #0 + beq _02302AA4 + ldrb r1, [r5, #0xa] + add r0, sp, #0xc + bl sub_02058C9C +_02302AA4: + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _02302BFC ; =0x000003E7 + ldrb fp, [r5, #0x1c] + add r7, r2, r1 + ldrb r1, [r5, #0x1a] + cmp r7, r0 + movgt r7, r0 + str r1, [sp, #8] + ldrb r1, [r5, #0x1b] + mov r0, r5 + ldrb r6, [r5, #0x1d] + str r1, [sp, #4] + bl IsExperienceLocked + cmp r0, #0 + bne _02302BA8 + ldrb r1, [r5, #0xa] + ldr r0, [sp] + add r2, r1, r0 + cmp r2, #0x64 + movge r2, #0x64 + cmp r2, r1 + beq _02302BA8 + ldrsh r1, [r5, #2] + add r0, sp, #0x18 + bl GetLvlStats + ldr r1, [sp, #0x18] + ldrb r3, [sp, #0x98] + str r1, [r5, #0x20] + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_0230303C + orrs r4, r4, r0 + beq _02302BA8 + ldrb r0, [r5, #6] + cmp r0, #0 + bne _02302BA8 + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _02302BFC ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + sub r0, r1, r7 + str r0, [sp, #0x48] + ldrb r1, [r5, #0x1a] + ldr r0, [sp, #8] + cmp r8, #0 + sub r0, r1, r0 + str r0, [sp, #0x4c] + ldrb r0, [r5, #0x1c] + sub r0, r0, fp + str r0, [sp, #0x50] + ldrb r1, [r5, #0x1b] + ldr r0, [sp, #4] + sub r0, r1, r0 + str r0, [sp, #0x54] + ldrb r0, [r5, #0x1d] + sub r0, r0, r6 + str r0, [sp, #0x58] + beq _02302BA8 + add r1, sp, #0x24 + mov r0, sb + bl ov29_02302CC8 +_02302BA8: + add r2, sp, #0xc + mov r0, sl + mov r1, sb + mov r3, r8 + bl ov29_02302C04 + mov r0, #0 + str r0, [r5, #0x214] + strb r0, [r5, #0x153] + cmp r4, #0 + bne _02302BF4 + cmp r8, #0 + beq _02302BF4 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02302C00 ; =0x00000F1D + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02302BF4: + add sp, sp, #0x74 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02302BFC: .word 0x000003E7 +_02302C00: .word 0x00000F1D + arm_func_end ov29_02302A5C + + arm_func_start ov29_02302C04 +ov29_02302C04: ; 0x02302C04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + ldr r1, [sb, #0xb4] + mov sl, r0 + ldrb r0, [r1, #7] + mov r8, r2 + mov r4, r3 + cmp r0, #0 + beq _02302CB8 + ldrb r1, [r1, #0xa] + add r0, sp, #0 + bl sub_02058C9C + ldr r0, _02302CC0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl sub_0204F610 + cmp r0, #0 + bne _02302CB8 + cmp r4, #0 + beq _02302CB8 + mov r7, #0 + ldr r4, _02302CC4 ; =0x00000F2A + mov fp, r7 + mov r5, #1 + add r6, sp, #0 +_02302C6C: + ldrb r0, [r8, r7] + cmp r0, #0 + ldreqb r0, [r6, r7] + cmpeq r0, #1 + bne _02302CAC + mov r0, fp + mov r1, sb + mov r2, fp + bl SubstitutePlaceholderStringTags + mov r0, r5 + and r1, r7, #0xff + bl ov29_0234B084 + mov r0, sl + mov r1, sb + mov r2, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02302CAC: + add r7, r7, #1 + cmp r7, #0xc + blt _02302C6C +_02302CB8: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02302CC0: .word 0x02353538 +_02302CC4: .word 0x00000F2A + arm_func_end ov29_02302C04 + + arm_func_start ov29_02302CC8 +ov29_02302CC8: ; 0x02302CC8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x58 + mov sb, r0 + mov r8, r1 + mov r4, #0 + bl sub_02025888 + mov r5, r0 + ldr r7, [sb, #0xb4] + mov r0, sb + mov r1, r4 + mov r2, #1 + bl ov29_022F98B4 + add r0, sp, #0x18 + mov r1, r7 + bl ov29_02300164 + add r1, sp, #0x18 + mov r0, sb + str r1, [r8, #0x38] + bl ov29_023009CC + cmp r0, #0 + beq _02302DBC + mov r0, sb + mov r6, r4 + bl ov29_022FB6E4 + cmp r0, #0 + bne _02302D40 + ldrb r0, [r7, #7] + cmp r0, #0 + moveq r6, #1 + b _02302D58 +_02302D40: + ldr r0, _02302F64 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsSpecialEpisodeDungeon + cmp r0, #0 + movne r6, #1 +_02302D58: + cmp r6, #0 + beq _02302DEC + mov r0, r7 + bl ov29_0234CFEC + mov r6, r0 + ldrb r0, [r7, #0x48] + bl ov29_0234CFA0 + mov r2, r0 + mov r0, r6 + mov r1, #3 + bl GetTalkLine + mov r6, r0 + ldrsh r1, [r7, #4] + add r0, sp, #8 + mov r2, #0 + bl ov29_0234BAC0 + mov r1, r6 + mov r0, r5 + bl GetStringFromFileVeneer + mov r0, sb + add r1, sp, #8 + mov r2, r5 + mov r3, #1 + bl ov29_0234D304 + b _02302DEC +_02302DBC: + ldr r0, _02302F68 ; =0x00000F27 + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcpy + mov r2, r4 + mov r0, r5 + mov r3, r2 + str r8, [sp] + mov r1, #1 + str r1, [sp, #4] + bl ov29_0234D234 +_02302DEC: + mov r0, #0 + strb r0, [r5] + ldr r0, [r8, #0x24] + cmp r0, #0 + ble _02302E18 + ldr r0, _02302F6C ; =0x00000F18 + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcat + add r4, r4, #1 +_02302E18: + ldr r0, [r8, #0x28] + cmp r0, #0 + ble _02302E5C + ldr r0, _02302F70 ; =0x023527F0 + ldrb r2, [r0, r4] + cmp r2, #0 + beq _02302E44 + ldr r1, _02302F74 ; =0x023535C8 + mov r0, r5 + ldr r1, [r1, r2, lsl #2] + bl Strcat +_02302E44: + ldr r0, _02302F78 ; =0x00000F19 + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcat + add r4, r4, #1 +_02302E5C: + ldr r0, [r8, #0x2c] + cmp r0, #0 + ble _02302EA0 + ldr r0, _02302F70 ; =0x023527F0 + ldrb r2, [r0, r4] + cmp r2, #0 + beq _02302E88 + ldr r1, _02302F74 ; =0x023535C8 + mov r0, r5 + ldr r1, [r1, r2, lsl #2] + bl Strcat +_02302E88: + ldr r0, _02302F7C ; =0x00000F1A + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcat + add r4, r4, #1 +_02302EA0: + ldr r0, [r8, #0x30] + cmp r0, #0 + ble _02302EE4 + ldr r0, _02302F70 ; =0x023527F0 + ldrb r2, [r0, r4] + cmp r2, #0 + beq _02302ECC + ldr r1, _02302F74 ; =0x023535C8 + mov r0, r5 + ldr r1, [r1, r2, lsl #2] + bl Strcat +_02302ECC: + ldr r0, _02302F80 ; =0x00000F1B + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcat + add r4, r4, #1 +_02302EE4: + ldr r0, [r8, #0x34] + cmp r0, #0 + ble _02302F24 + ldr r0, _02302F70 ; =0x023527F0 + ldrb r2, [r0, r4] + cmp r2, #0 + beq _02302F10 + ldr r1, _02302F74 ; =0x023535C8 + mov r0, r5 + ldr r1, [r1, r2, lsl #2] + bl Strcat +_02302F10: + ldr r0, _02302F84 ; =0x00000F1C + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + bl Strcat +_02302F24: + ldrb r0, [r5] + cmp r0, #0 + beq _02302F4C + mov r2, #0 + mov r0, r5 + mov r3, r2 + str r8, [sp] + mov r1, #1 + str r1, [sp, #4] + bl ov29_0234D234 +_02302F4C: + bl GetLeader + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + add sp, sp, #0x58 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02302F64: .word 0x02353538 +_02302F68: .word 0x00000F27 +_02302F6C: .word 0x00000F18 +_02302F70: .word 0x023527F0 +_02302F74: .word 0x023535C8 +_02302F78: .word 0x00000F19 +_02302F7C: .word 0x00000F1A +_02302F80: .word 0x00000F1B +_02302F84: .word 0x00000F1C + arm_func_end ov29_02302CC8 + + arm_func_start ov29_02302F88 +ov29_02302F88: ; 0x02302F88 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + bl EntityIsValid__02302A38 + cmp r0, #0 + beq _02303030 + ldr r5, [r7, #0xb4] + mov r4, #0 + mov r0, r5 + bl IsExperienceLocked + cmp r0, #0 + bne _02303000 + ldrb r0, [r5, #0xa] + sub r2, r0, r6 + cmp r2, #1 + movlt r2, #1 + cmp r2, r0 + beq _02303000 + ldrsh r1, [r5, #2] + add r0, sp, #0 + bl GetLvlStats + ldr r2, [sp] + mov r0, r8 + mov r1, r7 + str r2, [r5, #0x20] + bl ov29_02303284 + orr r4, r4, r0 +_02303000: + mov r0, #0 + str r0, [r5, #0x214] + strb r0, [r5, #0x153] + cmp r4, #0 + bne _02303030 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02303038 ; =0x00000F1E + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02303030: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02303038: .word 0x00000F1E + arm_func_end ov29_02302F88 + + arm_func_start ov29_0230303C +ov29_0230303C: ; 0x0230303C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r1 + str r0, [sp, #4] + mov r0, sl + mov r6, #0 + mov sb, r2 + str r3, [sp, #8] + bl EntityIsValid__02302A38 + cmp r0, #0 + moveq r0, r6 + beq _02303268 + ldr r7, [sl, #0xb4] + mov r0, r7 + ldrsh fp, [r7, #2] + ldr r8, [r7, #0x20] + bl IsExperienceLocked + cmp r0, #0 + movne r0, r6 + bne _02303268 + ldrb r0, [r7, #0xa] + ldr r4, _02303270 ; =0x0237C9C4 + add r5, r0, #1 + b _0230325C +_0230309C: + add r0, sp, #0xc + mov r1, fp + mov r2, r5 + bl GetLvlStats + ldr r0, [sp, #0xc] + cmp r0, r8 + bgt _02303264 + strb r5, [r7, #0xa] + str r8, [r7, #0x20] + cmp sb, #0 + beq _02303160 + ldrb r0, [r7, #6] + cmp r0, #0 + bne _02303124 + mov r0, sl + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + cmp r6, #0 + bne _023030F0 + bl ov29_022EAC7C +_023030F0: + mov r0, #0 + mov r1, r5 + bl ov29_0234B09C + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r0, sl + mov r1, #0xf20 + bl ov29_0234D484 + b _02303160 +_02303124: + cmp r6, #0 + bne _02303130 + bl ov29_022EAC7C +_02303130: + mov r0, #0 + mov r1, r5 + bl ov29_0234B09C + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r0, sl + mov r1, #0xf20 + bl LogMessageByIdWithPopup +_02303160: + ldrh r1, [sp, #0x10] + add r0, r7, #0x12 + mov r6, #1 + bl sub_02054FB8 + ldrsh r1, [r7, #0x10] + ldrh r0, [sp, #0x10] + add r0, r1, r0 + strh r0, [r7, #0x10] + ldrsh r1, [r7, #0x12] + ldrsh r0, [r7, #0x16] + add r2, r1, r0 + ldr r0, _02303274 ; =0x000003E7 + cmp r2, r0 + movgt r1, r0 + ldrsh r0, [r7, #0x10] + movle r1, r2 + cmp r0, r1 + blt _023031B8 + ldr r0, _02303274 ; =0x000003E7 + cmp r2, r0 + movgt r2, r0 + strh r2, [r7, #0x10] +_023031B8: + ldr r0, _02303278 ; =0x0237C9C8 + ldrb r2, [r7, #0x1a] + mov r1, r0 + strb r2, [r1] + ldrb r2, [r7, #0x1b] + strb r2, [r1, #1] + ldrb r1, [r7, #0x1c] + strb r1, [r4] + ldrb r1, [r7, #0x1d] + strb r1, [r4, #1] + ldrb r1, [sp, #0x12] + bl sub_02054FEC + ldrb r1, [sp, #0x13] + ldr r0, _0230327C ; =0x0237C9C9 + bl sub_02054FEC + ldrb r1, [sp, #0x14] + mov r0, r4 + bl sub_02055020 + ldrb r1, [sp, #0x15] + ldr r0, _02303280 ; =0x0237C9C5 + bl sub_02055020 + mov r0, sl + bl ov29_023021F0 + mov r0, sl + bl ov29_02318D58 + ldr r0, _02303278 ; =0x0237C9C8 + mov r1, sl + ldrb r2, [r0] + ldr r0, [sp, #4] + strb r2, [r7, #0x1a] + ldr r2, _02303278 ; =0x0237C9C8 + ldr r3, [sp, #8] + ldrb ip, [r2, #1] + mov r2, sb + strb ip, [r7, #0x1b] + ldrb ip, [r4] + strb ip, [r7, #0x1c] + ldrb ip, [r4, #1] + strb ip, [r7, #0x1d] + bl ov29_023034E0 + add r5, r5, #1 +_0230325C: + cmp r5, #0x64 + ble _0230309C +_02303264: + mov r0, r6 +_02303268: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02303270: .word 0x0237C9C4 +_02303274: .word 0x000003E7 +_02303278: .word 0x0237C9C8 +_0230327C: .word 0x0237C9C9 +_02303280: .word 0x0237C9C5 + arm_func_end ov29_0230303C + + arm_func_start ov29_02303284 +ov29_02303284: ; 0x02303284 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sl, r1 + str r0, [sp, #4] + mov r0, sl + bl EntityIsValid__02302A38 + cmp r0, #0 + moveq r0, #0 + beq _023034BC + ldr r7, [sl, #0xb4] + mov r0, r7 + ldrsh r5, [r7, #2] + ldr r8, [r7, #0x20] + ldrb r6, [r7, #0xa] + bl IsExperienceLocked + cmp r0, #0 + movne r0, #0 + bne _023034BC + mov sb, #1 + add r4, sp, #8 + b _023032F8 +_023032D8: + mov r0, r4 + mov r1, r5 + mov r2, sb + bl GetLvlStats + ldr r0, [sp, #8] + cmp r0, r8 + bge _02303304 + add sb, sb, #1 +_023032F8: + ldrb r0, [r7, #0xa] + cmp sb, r0 + blt _023032D8 +_02303304: + sub r4, sb, #1 + ldrb sb, [r7, #0xa] + ldr fp, _023034C4 ; =0x0237C9C4 + b _02303450 +_02303314: + cmp sb, #0x64 + strge r8, [r7, #0x20] + bge _0230333C + add r0, sp, #8 + mov r1, r5 + add r2, sb, #1 + bl GetLvlStats + ldr r0, [sp, #8] + sub r0, r0, #1 + str r0, [r7, #0x20] +_0230333C: + cmp r6, sb + ble _0230344C + add r0, sp, #8 + mov r1, r5 + add r2, sb, #1 + bl GetLvlStats + strb sb, [r7, #0xa] + ldrh r1, [sp, #0xc] + add r0, r7, #0x10 + rsb r1, r1, #0 + bl sub_02054FB8 + ldrh r1, [sp, #0xc] + add r0, r7, #0x12 + rsb r1, r1, #0 + bl sub_02054FB8 + ldrsh r1, [r7, #0x12] + ldrsh r0, [r7, #0x16] + add r2, r1, r0 + ldr r0, _023034C8 ; =0x000003E7 + cmp r2, r0 + movgt r1, r0 + ldrsh r0, [r7, #0x10] + movle r1, r2 + cmp r0, r1 + blt _023033B0 + ldr r0, _023034C8 ; =0x000003E7 + cmp r2, r0 + movgt r2, r0 + strh r2, [r7, #0x10] +_023033B0: + ldr r0, _023034CC ; =0x0237C9C8 + ldrb r2, [r7, #0x1a] + mov r1, r0 + strb r2, [r1] + ldrb r2, [r7, #0x1b] + strb r2, [r1, #1] + ldrb r1, [r7, #0x1c] + strb r1, [fp] + ldrb r1, [r7, #0x1d] + strb r1, [fp, #1] + ldrb r1, [sp, #0xe] + rsb r1, r1, #0 + bl sub_02054FEC + ldrb r1, [sp, #0xf] + ldr r0, _023034D0 ; =0x0237C9C9 + rsb r1, r1, #0 + bl sub_02054FEC + ldrb r1, [sp, #0x10] + mov r0, fp + rsb r1, r1, #0 + bl sub_02055020 + ldrb r1, [sp, #0x11] + ldr r0, _023034D4 ; =0x0237C9C5 + rsb r1, r1, #0 + bl sub_02055020 + mov r0, sl + bl ov29_023021F0 + mov r0, sl + bl ov29_02318D58 + ldr r0, _023034CC ; =0x0237C9C8 + ldrb r0, [r0] + strb r0, [r7, #0x1a] + ldr r0, _023034CC ; =0x0237C9C8 + ldrb r0, [r0, #1] + strb r0, [r7, #0x1b] + ldrb r0, [fp] + strb r0, [r7, #0x1c] + ldrb r0, [fp, #1] + strb r0, [r7, #0x1d] +_0230344C: + sub sb, sb, #1 +_02303450: + cmp sb, r4 + bgt _02303314 + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldrb r1, [r7, #0xa] + cmp r1, r6 + bne _02303494 + ldr r2, _023034D8 ; =0x00000F22 + ldr r0, [sp, #4] + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _023034BC +_02303494: + mov r0, #0 + bl ov29_0234B09C + mov r0, sl + mov r1, #0x204 + bl ov29_022E56A0 + ldr r2, _023034DC ; =0x00000F21 + ldr r0, [sp, #4] + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 +_023034BC: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023034C4: .word 0x0237C9C4 +_023034C8: .word 0x000003E7 +_023034CC: .word 0x0237C9C8 +_023034D0: .word 0x0237C9C9 +_023034D4: .word 0x0237C9C5 +_023034D8: .word 0x00000F22 +_023034DC: .word 0x00000F21 + arm_func_end ov29_02303284 + + arm_func_start ov29_023034E0 +ov29_023034E0: ; 0x023034E0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x78 + mov sb, r1 + ldr r5, [sb, #0xb4] + mov r4, #0 + ldrb r0, [r5, #6] + mov r8, r2 + mov fp, r4 + str r3, [sp, #8] + cmp r0, #0 + str r4, [sp, #0xc] + add r0, r5, #0x4a + strne r4, [sp, #8] + movne r8, r4 + bl ov29_022EBCE8 + mov sl, #0 + mov r6, r0 + mvn r0, #0 + cmp r6, r0 + addne r0, r5, r6, lsl #3 + addne r0, r0, #0x100 + ldrneh r7, [r0, #0x28] + mov ip, sl + mov lr, sl + moveq r7, #0 + mov r3, #1 + add r0, sp, #0x10 +_0230354C: + add r1, r5, ip, lsl #3 + ldrb r1, [r1, #0x124] + tst r1, #1 + movne r1, r3 + moveq r1, lr + tst r1, #0xff + beq _02303588 + add r1, r5, ip, lsl #3 + add r1, r1, #0x100 + ldrh r2, [r1, #0x28] + mov r1, sl, lsl #1 + add sl, sl, #1 + strh r2, [r0, r1] + mov r1, sl, lsl #0x10 + mov sl, r1, asr #0x10 +_02303588: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + mov ip, r1, asr #0x10 + cmp ip, #4 + blt _0230354C + mov r2, sl + mov r3, #0 + add r1, sp, #0x10 + b _023035C0 +_023035AC: + add r0, r2, #1 + mov r0, r0, lsl #0x10 + mov r2, r2, lsl #1 + strh r3, [r1, r2] + mov r2, r0, asr #0x10 +_023035C0: + cmp r2, #4 + blt _023035AC + add r1, sp, #0x10 + stmia sp, {r1, sl} + ldrsh r1, [r5, #2] + ldrb r2, [r5, #0xa] + ldrsh r3, [r5, #0xe] + add r0, sp, #0x58 + bl sub_02053904 + mov sl, r0 + add r0, sp, #0x18 + add r1, r5, #0x124 + bl sub_020149C0 + cmp sl, #0 + beq _02303670 + mov r0, sl + bl DungeonRandInt + mov sl, #0 + add ip, sp, #0x18 + mov r1, sl + mov r2, #1 + b _02303668 +_02303618: + ldrb r3, [ip, sl, lsl #3] + tst r3, #1 + movne r3, r2 + moveq r3, r1 + tst r3, #0xff + bne _02303664 + add r1, sp, #0x58 + mov r0, r0, lsl #1 + ldrh r2, [r1, r0] + add r3, sp, #0x18 + mov r0, sb + add r1, r3, sl, lsl #3 + bl ov29_0231EA04 + add r2, sp, #0x1a + mov r1, sl, lsl #3 + ldrh r0, [r2, r1] + orr r0, r0, #4 + strh r0, [r2, r1] + b _02303670 +_02303664: + add sl, sl, #1 +_02303668: + cmp sl, #8 + blt _02303618 +_02303670: + add sl, sp, #0x18 +_02303674: + mov lr, #0 + mov r1, lr +_0230367C: + ldrb r0, [sl, r1, lsl #3] + add r1, r1, #1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne lr, lr, #1 + cmp r1, #8 + blt _0230367C + cmp lr, #4 + bgt _02303770 + mov sl, #0 + mov ip, sl + b _023036FC +_023036B4: + add r1, r5, ip, lsl #3 + add r0, sp, #0x18 + add r2, r1, #0x124 + add r3, r0, ip, lsl #3 + mov r1, #4 +_023036C8: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023036C8 + add r0, r5, ip, lsl #3 + add r0, r0, #0x100 + ldrh r1, [r0, #0x26] + add ip, ip, #1 + tst r1, #4 + bicne r1, r1, #4 + strneh r1, [r0, #0x26] + ldrneh r4, [r0, #0x28] + movne sl, #1 +_023036FC: + cmp ip, lr + blt _023036B4 + mov r1, #0 + b _02303718 +_0230370C: + add r0, r5, ip, lsl #3 + strb r1, [r0, #0x124] + add ip, ip, #1 +_02303718: + cmp ip, #4 + blt _0230370C + cmp sl, #0 + cmpne r8, #0 + beq _02303818 + bl ov29_0234B034 + mov r1, #0 + mov r2, r5 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r1, r4 + mov r0, #0 + bl ov29_0234B084 + ldr r1, _023038C4 ; =0x0000131B + mov r0, sb + bl ov29_022E56A0 + ldr r1, _023038C8 ; =0x00000F23 + mov r0, sb + bl ov29_0234D484 + mov fp, #1 + b _02303818 +_02303770: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _02303808 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02303808 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _023037E8 + cmp r8, #0 + beq _023037E8 + mov r0, #0xa + mov r1, #6 + bl ov29_022EA370 + ldrsh r1, [r5, #2] + ldr r0, _023038CC ; =0xFFFFFE5E + mov r2, #1 + add r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + mov r0, #0 + ldr r1, _023038D0 ; =0x00000F25 + bhi _023037E4 + add r1, r1, #1 + bl DisplayMessage2 + b _023037E8 +_023037E4: + bl DisplayMessage2 +_023037E8: + mov r0, #1 + str r0, [sp, #0xc] + mov r0, sb + mov r1, sl + mov r2, #1 + mov r3, #0 + bl ov29_0234FAEC + b _02303674 +_02303808: + mov r0, sb + mov r1, sl + bl ov29_02303BEC + b _02303674 +_02303818: + cmp fp, #0 + cmpne r7, #0 + mvnne r0, #0 + cmpne r6, r0 + beq _023038BC + mov r2, #0 + mov r4, r6 + mov r0, r2 + mov r1, #1 + b _0230389C +_02303840: + add r3, r5, r4, lsl #3 + ldrb r3, [r3, #0x124] + tst r3, #1 + movne r3, r1 + moveq r3, r0 + tst r3, #0xff + beq _02303870 + add r3, r5, r4, lsl #3 + add r3, r3, #0x100 + ldrh r3, [r3, #0x28] + cmp r7, r3 + beq _023038A4 +_02303870: + add r3, r4, #1 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + mov r4, r3, lsr #0x1f + rsb r3, r4, r3, lsl #30 + add r4, r4, r3, ror #30 + add r3, r2, #1 + mov r2, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, asr #0x10 + mov r2, r3, asr #0x10 +_0230389C: + cmp r2, #4 + blt _02303840 +_023038A4: + cmp r2, #4 + beq _023038B4 + cmp r4, r6 + beq _023038BC +_023038B4: + mov r0, #1 + strb r0, [r5, #0x23e] +_023038BC: + add sp, sp, #0x78 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023038C4: .word 0x0000131B +_023038C8: .word 0x00000F23 +_023038CC: .word 0xFFFFFE5E +_023038D0: .word 0x00000F25 + arm_func_end ov29_023034E0 + + arm_func_start ov29_023038D4 +ov29_023038D4: ; 0x023038D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xa4 + mov sl, r0 + ldr r8, [sl, #0xb4] + mov r6, r1 + mov r5, #0 + add r0, sp, #0 + add r1, r8, #0x124 + mov r7, r5 + bl sub_020149C0 + mov r4, r5 + add r3, sp, #0 + mov r0, r5 + mov r1, #1 + b _02303958 +_02303910: + ldrb r2, [r3, r4, lsl #3] + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + bne _02303954 + add r1, sp, #0 + mov r0, sl + mov r2, r6 + add r1, r1, r4, lsl #3 + bl ov29_0231EA04 + add r2, sp, #2 + mov r1, r4, lsl #3 + ldrh r0, [r2, r1] + orr r0, r0, #4 + strh r0, [r2, r1] + b _02303960 +_02303954: + add r4, r4, #1 +_02303958: + cmp r4, #8 + blt _02303910 +_02303960: + mov sb, #0 + mov fp, #1 + add r4, sp, #0 + b _02303AC8 +_02303970: + mov r6, #0 + mov r1, r6 +_02303978: + ldrb r0, [r4, r1, lsl #3] + add r1, r1, #1 + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + addne r6, r6, #1 + cmp r1, #8 + blt _02303978 + cmp r6, #4 + bgt _02303A84 + mov sb, #0 + add r4, r8, #0x124 + add fp, sp, #0 + b _02303A14 +_023039B4: + add r0, r8, sb, lsl #3 + add r3, fp, sb, lsl #3 + add r2, r0, #0x124 + mov r1, #4 +_023039C4: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023039C4 + add r0, r8, sb, lsl #3 + add r3, r0, #0x100 + ldrh r0, [r3, #0x26] + tst r0, #4 + beq _02303A10 + bic r5, r0, #4 + add r0, sp, #0x40 + mov r2, #0 + add r1, r4, sb, lsl #3 + strh r5, [r3, #0x26] + bl FormatMoveString + add r0, r8, sb, lsl #3 + add r0, r0, #0x100 + ldrh r5, [r0, #0x28] + mov r7, #1 +_02303A10: + add sb, sb, #1 +_02303A14: + cmp sb, r6 + blt _023039B4 + mov r1, #0 + b _02303A30 +_02303A24: + add r0, r8, sb, lsl #3 + strb r1, [r0, #0x124] + add sb, sb, #1 +_02303A30: + cmp sb, #4 + blt _02303A24 + cmp r7, #0 + beq _02303AD0 + ldrb r0, [r8, #6] + cmp r0, #0 + bne _02303AD0 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r5 + mov r0, #0 + bl ov29_0234B084 + ldr r1, _02303B08 ; =0x0000131B + mov r0, sl + bl ov29_022E56A0 + ldr r1, _02303B0C ; =0x00000F23 + mov r0, sl + bl ov29_0234D484 + b _02303AD0 +_02303A84: + ldrb r0, [r8, #6] + mov r7, #0 + cmp r0, #0 + bne _02303AC4 + ldr r1, _02303B10 ; =0x00000F28 + mov r0, r7 + mov r2, #1 + bl DisplayMessage + mov r2, #1 + mov r0, sl + mov r1, r4 + mov r3, r2 + bl ov29_0234FAEC + cmp r0, #0 + moveq r0, r7 + beq _02303B00 +_02303AC4: + add sb, sb, #1 +_02303AC8: + cmp sb, #0x1e + blt _02303970 +_02303AD0: + cmp r7, #0 + ldreqb r0, [r8, #6] + cmpeq r0, #0 + bne _02303AFC + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02303B14 ; =0x00000F24 + mov r0, sl + bl ov29_0234D484 +_02303AFC: + mov r0, #1 +_02303B00: + add sp, sp, #0xa4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02303B08: .word 0x0000131B +_02303B0C: .word 0x00000F23 +_02303B10: .word 0x00000F28 +_02303B14: .word 0x00000F24 + arm_func_end ov29_023038D4 + + arm_func_start ov29_02303B18 +ov29_02303B18: ; 0x02303B18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov sb, r2 + mov r2, #0 + mov sl, r0 + mov r8, r2 +_02303B30: + mov r0, r2, lsl #1 + add r2, r2, #1 + strh r8, [sl, r0] + cmp r2, #4 + blt _02303B30 + mov r0, r1 + bl GetMovesetLevelUpPtr + mov r7, r0 + add r6, sp, #0 + mov r5, #0 + mov r4, #4 + b _02303BD8 +_02303B60: + mov r0, r7 + mov r1, r6 + bl sub_0205384C + ldrb r1, [r0] + add r7, r0, #1 + cmp r1, sb + bgt _02303BE4 + mov r1, r5 + ldrh r2, [sp] + b _02303BA4 +_02303B88: + mov r0, r1, lsl #1 + ldrh r0, [sl, r0] + cmp r2, r0 + beq _02303BAC + add r0, r1, #1 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 +_02303BA4: + cmp r1, #4 + blt _02303B88 +_02303BAC: + cmp r1, #4 + bne _02303BD8 + cmp r8, #4 + movne r0, r8 + addne r8, r8, #1 + bne _02303BCC + mov r0, r4 + bl DungeonRandInt +_02303BCC: + ldrh r1, [sp] + mov r0, r0, lsl #1 + strh r1, [sl, r0] +_02303BD8: + ldrb r0, [r7] + cmp r0, #0 + bne _02303B60 +_02303BE4: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02303B18 + + arm_func_start ov29_02303BEC +ov29_02303BEC: ; 0x02303BEC + stmdb sp!, {r4, lr} + mov r0, #0 + mov r4, r1 + mov ip, r0 + mov r2, r0 + mov r3, #1 +_02303C04: + ldrb r1, [r4, ip, lsl #3] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + ldrneb r1, [r4, ip, lsl #3] + addne r0, r0, #1 + bicne r1, r1, #2 + strneb r1, [r4, ip, lsl #3] + add ip, ip, #1 + cmp ip, #8 + blt _02303C04 + bl DungeonRandInt + add r1, r4, r0, lsl #3 + ldrh lr, [r1, #4] + b _02303C64 +_02303C44: + add ip, r4, r0, lsl #3 + add r3, ip, #8 + mov r2, #4 +_02303C50: + ldrh r1, [r3], #2 + subs r2, r2, #1 + strh r1, [ip], #2 + bne _02303C50 + add r0, r0, #1 +_02303C64: + cmp r0, #7 + blt _02303C44 + mov r1, #0 + mov r0, lr + strb r1, [r4, #0x38] + ldmia sp!, {r4, pc} + arm_func_end ov29_02303BEC + + arm_func_start EvolveMonster +EvolveMonster: ; 0x02303C7C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r7, r1 + ldr r6, [r7, #0xb4] + mov r8, r0 + mov r5, r2 + bl ov29_0234B034 + mov r1, #0 + mov r2, r6 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r1, r5 + mov r0, #1 + bl ov29_0234B06C + mov r0, r5 + bl GetSpriteIndex__022F7388 + strh r5, [r6, #4] + strh r5, [r6, #2] + mov r4, r0 + ldrb r2, [r6, #0xa] + add r0, sp, #0x14 + mov r1, r5 + bl GetLvlStats + ldr r1, [sp, #0x14] + mov r0, r6 + str r1, [r6, #0x20] + mov r1, #0 + strh r4, [r7, #0xa8] + bl ov29_022FDDC0 + mov r0, r7 + bl ov29_022F9194 + mov r0, r7 + mov r1, #7 + bl ov29_02304830 + ldr r2, _02303DFC ; =0x00000F29 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + bl ov29_022E6724 + bl ov29_022EAC9C + ldr r0, _02303E00 ; =0x0000013F + cmp r5, r0 + addne r0, r0, #0x258 + cmpne r5, r0 + bne _02303DF4 + mov r5, #0 + ldr r4, _02303E04 ; =0x0235171C + mov r8, #0x140 + b _02303D84 +_02303D48: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh ip, [r7, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [r7, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + mov r1, r0 + mov r0, r8 + bl ov29_022FF6C4 + cmp r0, #0 + beq _02303D8C + add r5, r5, #1 +_02303D84: + cmp r5, #8 + blt _02303D48 +_02303D8C: + mov r0, #0x140 + bl IsOnMonsterSpawnList + cmp r0, #0 + beq _02303DF4 + mov r0, #0x140 + strh r0, [sp, #4] + ldrb r1, [r6, #0xa] + mov r2, #0 + ldr r0, _02303E04 ; =0x0235171C + mov r5, r5, lsl #2 + strh r1, [sp, #0xc] + strb r2, [sp, #6] + ldrsh r3, [r0, r5] + ldrsh r4, [r7, #4] + ldr r1, _02303E08 ; =0x0235171E + add r0, sp, #4 + add r3, r4, r3 + strh r3, [sp, #0xe] + ldrsh r4, [r7, #6] + ldrsh r3, [r1, r5] + mov r1, #1 + str r2, [sp, #8] + add r3, r4, r3 + strh r3, [sp, #0x10] + strb r2, [sp, #0x12] + bl SpawnMonster +_02303DF4: + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02303DFC: .word 0x00000F29 +_02303E00: .word 0x0000013F +_02303E04: .word 0x0235171C +_02303E08: .word 0x0235171E + arm_func_end EvolveMonster + + arm_func_start ov29_02303E0C +ov29_02303E0C: ; 0x02303E0C + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0xbc] + cmp r1, #1 + cmpne r1, #2 + cmpne r1, #3 + cmpne r1, #0xb + cmpne r1, #0xc + cmpne r1, #0xd + cmpne r1, #0xe + beq _02303E4C + cmp r1, #4 + bne _02303E54 + ldrsh r0, [r0, #2] + bl NeedsItemToSpawn + cmp r0, #0 + beq _02303E54 +_02303E4C: + mov r0, #1 + ldmia sp!, {r3, pc} +_02303E54: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_02303E0C + + arm_func_start ov29_02303E5C +ov29_02303E5C: ; 0x02303E5C + stmdb sp!, {r3, r4, r5, lr} + mvn r4, #0x1f + cmp r3, r4 + ldrgtsh ip, [sp, #0x10] + cmpgt ip, r4 + ldmleia sp!, {r3, r4, r5, pc} + rsb lr, r4, #0xff + cmp r3, lr + cmplt ip, #0xe0 + ldmgeia sp!, {r3, r4, r5, pc} + cmp r1, #6 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r5, _02303F0C ; =0x0237C888 + mov lr, #0x48 + smlabb r5, r2, lr, r5 + mov r2, #0xc + mla r1, r2, r1, r5 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrh lr, [r1, #2] + ldrsh r5, [r1, #8] + sub r0, r2, #0x20c + and r0, lr, r0 + strh r0, [r1, #2] + ldrh r2, [r1, #2] + add r0, r3, r5 + and r0, r0, r4, lsr #23 + orr r0, r2, r0 + strh r0, [r1, #2] + ldrh r3, [r1, #6] + ldrsh r4, [r1, #0xa] + ldr r0, _02303F10 ; =0xFFFF000F + ldr r2, _02303F14 ; =0x020AFC4C + and r0, r3, r0 + strh r0, [r1, #6] + add r0, ip, r4 + ldrh r4, [r1, #6] + mov r3, r0, lsl #0x14 + ldr r0, [r2] + orr r3, r4, r3, lsr #16 + mov r2, #0 + strh r3, [r1, #6] + bl sub_0201B9F8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02303F0C: .word 0x0237C888 +_02303F10: .word 0xFFFF000F +_02303F14: .word 0x020AFC4C + arm_func_end ov29_02303E5C + + arm_func_start ov29_02303F18 +ov29_02303F18: ; 0x02303F18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x38 + ldr r1, _023046C8 ; =0x02353538 + mov r7, r0 + ldr r0, [r1] + ldr r5, [r7, #0xb4] + add r0, r0, #0x1a000 + ldr r1, [r0, #0x22c] + cmp r1, r7 + moveq r4, #0 + ldrneb r4, [r0, #0x245] + ldrb r0, [r5, #0xd8] + ldrb r1, [r7, #0xaf] + cmp r0, #2 + ldrb r0, [r7, #0xae] + moveq r4, #1 + cmp r1, r0 + ldreqb r1, [r7, #0xb1] + ldreqb r0, [r7, #0xb0] + cmpeq r1, r0 + ldreqb r0, [r7, #0xb3] + cmpeq r0, #0 + bne _02304044 + add r0, r7, #0x2c + mov r6, #0 + bl sub_0201D1B0 + cmp r0, #0 + moveq r6, #1 + cmp r6, #0 + beq _02304044 + mov r0, r7 + bl GetSleepAnimationId + mov r3, #1 + strb r3, [r7, #0x21] + ldrb r1, [r5, #0x10a] + cmp r1, #0x63 + bne _02303FF4 + ldrb r6, [r7, #0xaf] + cmp r6, #0xd + bhs _02303FF0 + ldrb r1, [r5, #0xd2] + cmp r1, #1 + moveq r3, #2 + beq _02303FD4 + ldrb r1, [r7, #0x23] + cmp r1, #3 + movlo r3, #0 +_02303FD4: + ldr r2, _023046CC ; =0x02352810 + mov r1, #0xd + mla r1, r3, r1, r2 + ldrb r1, [r6, r1] + cmp r1, #7 + moveq r1, r0 + b _02303FF4 +_02303FF0: + mov r1, #0x63 +_02303FF4: + cmp r1, #0x63 + beq _02304044 + strb r1, [r7, #0xae] + mov r1, #0 + strb r1, [r7, #0x28] + ldrb r2, [r7, #0xb1] + mov r1, #1 + and r2, r2, #7 + strb r2, [r7, #0xb0] + strb r1, [r7, #0xb3] + ldrb r1, [r5, #0x23d] + cmp r1, #0 + ldreqb r1, [r7, #0xae] + cmpeq r1, #6 + ldreqb r1, [r7, #0xb2] + addeq r2, r1, #1 + andeq r1, r2, #0xff + streqb r2, [r7, #0xb2] + cmpeq r1, #0x10 + streqb r0, [r7, #0xae] +_02304044: + ldrh r0, [r7, #0x2e] + orr r0, r0, #0x10 + strh r0, [r7, #0x2e] + ldrb r2, [r7, #0xae] + ldrb r0, [r7, #0xaf] + cmp r0, r2 + ldreqb r1, [r7, #0xb1] + ldreqb r0, [r7, #0xb0] + cmpeq r1, r0 + ldreqb r0, [r7, #0xb3] + cmpeq r0, #0 + beq _023041F4 + strb r2, [r7, #0xaf] + ldrb r1, [r7, #0xb0] + mov r0, #0 + strb r1, [r7, #0xb1] + strb r0, [r7, #0xb3] + ldrb r0, [r7, #0x28] + cmp r0, #0 + movne r6, #2 + ldreqsh r6, [r7, #0xac] + cmp r4, #0 + bne _0230414C + cmp r0, #0 + beq _023040EC + bl ov29_022F7050 + mov r1, r0 + add r0, r7, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + mov r1, r6, lsl #0x10 + mov r3, r1, asr #0x10 + mov r1, #0 + str r1, [sp] + and r0, r0, #3 + stmib sp, {r0, r1} + str r1, [sp, #0xc] + ldrb r1, [r7, #0xae] + ldrb r2, [r7, #0xb0] + add r0, r7, #0x2c + bl sub_0201C418 + b _023041E4 +_023040EC: + ldrsh r1, [r7, #0xa8] + add r0, r7, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + ldrb r1, [r7, #0xaa] + and r0, r0, #3 + mov r3, r6, lsl #0x10 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldrb r1, [r7, #0xae] + ldrb r2, [r7, #0xb0] + add r0, r7, #0x2c + mov r3, r3, asr #0x10 + bl sub_0201C418 + ldrb r0, [r5, #0x171] + cmp r0, #0 + beq _023041E4 + add r0, r7, #0x2c + mov r1, #1 + bl sub_0201D198 + b _023041E4 +_0230414C: + cmp r0, #0 + beq _02304198 + bl ov29_022F7050 + mov r1, r0 + add r0, r7, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + mov r1, r6, lsl #0x10 + mov r3, r1, asr #0x10 + mov r1, #0 + str r1, [sp] + and r0, r0, #3 + stmib sp, {r0, r1} + str r1, [sp, #0xc] + ldrb r1, [r7, #0xae] + ldrb r2, [r7, #0xb0] + add r0, r7, #0x2c + bl sub_0201C418 + b _023041E4 +_02304198: + ldr r0, _023046D0 ; =0x00000229 + bl GetSpriteIndex__022F7388 + mov r1, r0 + add r0, r7, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + mov r1, r6, lsl #0x10 + mov r3, r1, asr #0x10 + ldrb r2, [r7, #0xaa] + and r1, r0, #3 + mov r0, #0 + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r7, #0x2c + ldrb r1, [r7, #0xae] + ldrb r2, [r7, #0xb0] + bl sub_0201C418 +_023041E4: + ldrb r0, [r7, #0xae] + cmp r0, #6 + movne r0, #0 + strneb r0, [r7, #0xb2] +_023041F4: + ldr r1, [r7, #0xc] + ldr r0, [r7, #0x14] + cmp r1, r0 + ldreq r1, [r7, #0x10] + ldreq r0, [r7, #0x18] + cmpeq r1, r0 + bne _02304224 + ldrb r0, [r7, #0x23] + cmp r0, #0xa + addlo r0, r0, #1 + strlob r0, [r7, #0x23] + b _0230422C +_02304224: + mov r0, #0 + strb r0, [r7, #0x23] +_0230422C: + ldr r1, [r7, #0xc] + ldr r0, _023046D4 ; =0x0001A224 + str r1, [r7, #0x14] + ldr r2, [r7, #0x10] + ldr r1, _023046C8 ; =0x02353538 + str r2, [r7, #0x18] + ldr r8, [r1] + add r1, r0, #2 + ldrsh r4, [r8, r1] + ldr r6, [r7, #0x10] + ldr r3, [r7, #0x1c] + ldrb r2, [r5, #0x160] + rsb r1, r4, r6, asr #8 + ldrsh r8, [r8, r0] + add r1, r1, r1, lsr #31 + ldr sb, [r7, #0xc] + ldr r0, [r5, #0x188] + sub r3, r6, r3 + sub r0, r3, r0 + rsb r8, r8, sb, asr #8 + mov sl, r1, asr #1 + cmp r2, #0 + rsb sb, r4, r0, asr #8 + subeq sl, sl, #1 + bl ov29_022ECB38 + cmp r0, #0 + beq _023042B0 + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + tst r0, #1 + mvnne r0, #1 + moveq r0, #2 + add r8, r8, r0 +_023042B0: + ldrb r0, [r5, #0x172] + cmp r0, #0 + bne _023042D8 + mov r0, r7 + bl ov29_022E273C + ldrb r1, [r5, #0x170] + mov r4, r0 + cmp r1, #0 + movne r4, #0 + b _02304310 +_023042D8: + ldrb r0, [r5, #0x173] + cmp r0, #0 + beq _023042FC + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + tst r0, #4 + movne r0, #1 + mvneq r0, #0 + add r8, r8, r0 +_023042FC: + ldrb r0, [r5, #0x174] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r4, r0, #0xff +_02304310: + ldr r3, _023046DC ; =0x0235280C + add r0, sp, #0x28 + ldrh r6, [r3] + add r2, r7, #0x2c + mov r1, #4 + strh r6, [sp, #0x18] + ldrh r3, [r3, #2] + strh r3, [sp, #0x1a] + ldr r3, [r7, #0xc] + mov r3, r3, asr #8 + strh r3, [sp, #0x18] + ldr ip, [r7, #0x10] + ldr r6, [r7, #0x1c] + ldr r3, [r5, #0x188] + sub r6, ip, r6 + sub r3, r6, r3 + mov r3, r3, asr #8 + strh r3, [sp, #0x1a] + bl sub_0201D034 + ldr r1, _023046C8 ; =0x02353538 + ldr r0, [r5, #0xb0] + ldr r2, [r1] + add r1, sp, #0x18 + add r2, r2, #0x1a000 + ldrb r3, [r2, #0x23c] + add r2, sp, #0x28 + bl ov29_022DDB98 + add r0, sp, #0x10 + mov r1, r7 + bl ov29_022E3A40 + cmp r4, #0 + ldrneb r0, [r5, #0x156] + cmpne r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + str r0, [sp] + ldrsh r1, [r5, #4] + ldr r0, [r5, #0xb0] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl ov29_022DD7D8 + mov r0, r7 + mov r1, sl + bl ov29_022E6E80 + mov r0, r7 + bl ov29_023046E8 + cmp r4, #0 + beq _0230464C + ldr r0, [r7, #0xb4] + ldr r1, _023046C8 ; =0x02353538 + ldr r3, _023046E0 ; =0x0000F3FF + ldrb r6, [r0, #0x220] + mov r0, #0 + ldr r1, [r1] + add r2, r3, #0xc00 + strh r3, [sp, #0x1c] + strh r2, [sp, #0x1e] + strh r3, [sp, #0x20] + strh r0, [sp, #0x22] + strh r0, [sp, #0x24] + add r2, r1, #0x1a000 + ldrb r2, [r2, #0x23c] + mov r2, r2, lsl #0xa + strh r2, [sp, #0x26] + ldrb r2, [r5, #6] + cmp r2, #0 + beq _02304458 + ldrb r2, [r5, #0xbc] + cmp r2, #0xb + blo _02304434 + cmp r2, #0xe + bls _02304458 +_02304434: + ldrsh r3, [r5, #4] + ldr r2, _023046E4 ; =0xFFFFFE5D + add r2, r3, r2 + mov r2, r2, lsl #0x10 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + cmp r2, #2 + movls r0, #1 +_02304458: + ldrb r2, [r5, #0xef] + cmp r2, #1 + addeq r1, r1, #0x1a000 + ldreqb r1, [r1, #0x244] + cmpeq r1, #0 + moveq r0, #1 + cmp r0, #0 + beq _023044B8 + bl ov29_02338988 + cmp r0, #0 + beq _02304498 + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + tst r0, #1 + beq _023044B8 + b _023046C0 +_02304498: + bl ov29_022E3580 + cmp r0, #0 + bne _023044B8 + bl ov29_022E3570 + cmp r0, #0 + ldreqh r0, [sp, #0x22] + orreq r0, r0, #0x400 + streqh r0, [sp, #0x22] +_023044B8: + ldrh r2, [r7, #0x2e] + add r1, sp, #0x1c + add r0, r7, #0x2c + orr r2, r2, #0x20 + strh r2, [r7, #0x2e] + bl sub_0201D110 + ldrb r0, [r5, #6] + cmp r0, #0 + ldrneb r0, [r5, #0xd8] + cmpne r0, #2 + moveq r0, #1 + movne r0, #0 + mov r1, r0, lsl #0x10 + mov r0, r5 + mov r4, r1, asr #0x10 + bl IsExperienceLocked + cmp r0, #0 + bne _0230450C + ldrb r0, [r5, #0xbc] + cmp r0, #7 + bne _02304510 +_0230450C: + mov r4, #1 +_02304510: + strh sl, [r7, #0x64] + strh r8, [r7, #0x48] + strh sb, [r7, #0x4a] + ldrb r0, [r5, #0x10b] + cmp r0, #2 + beq _02304590 + ldrb r1, [r5, #0xc4] + cmp r1, #6 + ldrneb r0, [r5, #0xbf] + cmpne r0, #4 + cmpne r1, #2 + bne _02304558 + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + and r0, r0, #2 + add r0, r8, r0 + strh r0, [r7, #0x48] + strh sb, [r7, #0x4a] +_02304558: + ldrb r0, [r7, #0x22] + cmp r0, #0 + bne _02304570 + add r0, r7, #0x2c + bl sub_0201CF5C + b _02304590 +_02304570: + cmp r0, #1 + bne _02304590 + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + tst r0, #1 + beq _02304590 + add r0, r7, #0x2c + bl sub_0201CF5C +_02304590: + ldrsh r2, [r7, #0x50] + add r1, r5, #0x100 + ldr r0, _023046D4 ; =0x0001A224 + strh r2, [r1, #0x82] + ldrsh r8, [r7, #0x52] + ldr r3, _023046C8 ; =0x02353538 + add r2, r0, #2 + strh r8, [r1, #0x84] + ldrsh sb, [r1, #0x82] + ldr r8, [r7, #0xc] + add r8, sb, r8, asr #8 + strh r8, [r1, #0x82] + ldrsh sb, [r1, #0x84] + ldr r8, [r7, #0x10] + add r8, sb, r8, asr #8 + strh r8, [r1, #0x84] + ldr sb, [r3] + ldrsh r8, [r1, #0x82] + ldrsh r0, [sb, r0] + ldrsh r3, [r1, #0x84] + ldrsh r1, [sb, r2] + sub r0, r8, r0 + mov r0, r0, lsl #0x10 + sub r1, r3, r1 + mov r1, r1, lsl #0x10 + mov r8, r0, asr #0x10 + mov sb, r1, asr #0x10 + bl ov29_022ECB38 + cmp r0, #0 + beq _02304628 + ldr r0, _023046D8 ; =0x0237C850 + ldr r0, [r0] + tst r0, #1 + mvnne r0, #1 + moveq r0, #2 + add r0, r8, r0 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 +_02304628: + ldrb r0, [r7, #0x22] + cmp r0, #0 + bne _0230464C + str sb, [sp] + ldrb r0, [r5, #0x160] + mov r1, r6 + mov r2, r4 + mov r3, r8 + bl ov29_02303E5C +_0230464C: + ldrb r0, [r5, #0xc4] + cmp r0, #1 + cmpne r0, #6 + beq _023046C0 + ldr r0, _023046C8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x78b] + cmp r0, #0 + beq _02304690 + bl ov29_0234B4E0 + cmp r0, #0 + bne _02304690 + add r0, r7, #0x2c + bl sub_0201C458 + add r0, r7, #0x2c + bl sub_0201C458 + b _023046B8 +_02304690: + ldrb r0, [r7, #0xaf] + cmp r0, #0 + cmpne r0, #7 + bne _023046B8 + ldr r0, [r7, #0xb4] + ldr r0, [r0, #0x110] + cmp r0, #1 + ble _023046B8 + add r0, r7, #0x2c + bl sub_0201C458 +_023046B8: + add r0, r7, #0x2c + bl sub_0201C458 +_023046C0: + add sp, sp, #0x38 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023046C8: .word 0x02353538 +_023046CC: .word 0x02352810 +_023046D0: .word 0x00000229 +_023046D4: .word 0x0001A224 +_023046D8: .word 0x0237C850 +_023046DC: .word 0x0235280C +_023046E0: .word 0x0000F3FF +_023046E4: .word 0xFFFFFE5D + arm_func_end ov29_02303F18 + + arm_func_start ov29_023046E8 +ov29_023046E8: ; 0x023046E8 + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #0x172] + cmp r0, #0 + bxne lr + ldrb r0, [r1, #0x10b] + cmp r0, #1 + ldr r0, [r1, #0x188] + bne _02304728 + cmp r0, #0xc800 + bxge lr + add r0, r0, #0x800 + str r0, [r1, #0x188] + cmp r0, #0xc800 + movgt r0, #0xc800 + strgt r0, [r1, #0x188] + bx lr +_02304728: + subs r0, r0, #0xc00 + str r0, [r1, #0x188] + movmi r0, #0 + strmi r0, [r1, #0x188] + bx lr + arm_func_end ov29_023046E8 + + arm_func_start ov29_0230473C +ov29_0230473C: ; 0x0230473C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, #0 + ldr r6, _023047B4 ; =0x02353538 + mov r7, r5 +_0230474C: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r4, [r0, #0xb78] + mov r0, r4 + bl EntityIsValid__023047B8 + cmp r0, #0 + ldrne r2, [r4, #0xb4] + ldrneb r0, [r2, #0x179] + cmpne r0, #0 + beq _023047A4 + sub r1, r0, #1 + and r0, r1, #0xff + strb r1, [r2, #0x179] + tst r0, #1 + bne _023047A4 + ldrb r2, [r2, #0x4c] + mov r0, r4 + mov r1, r7 + sub r2, r2, #1 + and r2, r2, #7 + bl ov29_023049A8 +_023047A4: + add r5, r5, #1 + cmp r5, #0x14 + blt _0230474C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023047B4: .word 0x02353538 + arm_func_end ov29_0230473C diff --git a/asm/overlay_29_023047DC.s b/asm/overlay_29_023047DC.s new file mode 100644 index 00000000..d8873e5e --- /dev/null +++ b/asm/overlay_29_023047DC.s @@ -0,0 +1,999 @@ + .include "asm/macros.inc" + .include "overlay_29_023047DC.inc" + + .text + + arm_func_start ov29_023047DC +ov29_023047DC: ; 0x023047DC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _0230482C ; =0x02353538 + mov r5, #0 +_023047E8: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__023047B8 + cmp r0, #0 + beq _0230481C + mov r0, r6 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r6 + bl ov29_02304830 +_0230481C: + add r5, r5, #1 + cmp r5, #0x14 + blt _023047E8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230482C: .word 0x02353538 + arm_func_end ov29_023047DC + + arm_func_start ov29_02304830 +ov29_02304830: ; 0x02304830 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r2, _0230494C ; =0x02353538 + mov r5, r0 + ldr r0, [r2] + ldr r4, [r5, #0xb4] + add r0, r0, #0x1a000 + ldr r2, [r0, #0x22c] + ldrb r3, [r0, #0x245] + cmp r5, r2 + mov r2, #0 + strb r2, [r5, #0x28] + strb r1, [r5, #0xaf] + and r0, r1, #0xff + strb r0, [r5, #0xae] + ldrb r0, [r4, #0x4c] + moveq r3, #0 + strb r0, [r5, #0xb1] + strb r0, [r5, #0xb0] + strb r2, [r5, #0xb3] + ldrb r0, [r4, #0xd8] + ldrsh r6, [r5, #0xac] + cmp r0, #2 + beq _023048E0 + cmp r3, #0 + bne _023048E0 + ldrsh r1, [r5, #0xa8] + add r0, r5, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + ldrb r1, [r5, #0xaa] + and r0, r0, #3 + mov r3, r6, lsl #0x10 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + str r0, [sp, #0xc] + ldrb r1, [r5, #0xae] + ldrb r2, [r5, #0xb0] + add r0, r5, #0x2c + mov r3, r3, asr #0x10 + bl sub_0201C418 + b _0230492C +_023048E0: + ldr r0, _02304950 ; =0x00000229 + bl GetSpriteIndex__022F7388 + mov r1, r0 + add r0, r5, #0x2c + bl sub_0201C0E8 + bl Rand16Bit + mov r1, r6, lsl #0x10 + mov r3, r1, asr #0x10 + ldrb r2, [r5, #0xaa] + and r1, r0, #3 + mov r0, #0 + str r2, [sp] + str r1, [sp, #4] + str r0, [sp, #8] + str r0, [sp, #0xc] + add r0, r5, #0x2c + ldrb r1, [r5, #0xae] + ldrb r2, [r5, #0xb0] + bl sub_0201C418 +_0230492C: + mov r0, #0 + strb r0, [r5, #0xb2] + ldrb r0, [r4, #6] + cmp r0, #0 + bne _02304944 + bl ov29_022E8104 +_02304944: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230494C: .word 0x02353538 +_02304950: .word 0x00000229 + arm_func_end ov29_02304830 + + arm_func_start ov29_02304954 +ov29_02304954: ; 0x02304954 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _023049A4 ; =0x02353538 + mov r5, #0 +_02304960: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__023047B8 + cmp r0, #0 + beq _02304994 + mov r0, r6 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r6 + bl ov29_02304830 +_02304994: + add r5, r5, #1 + cmp r5, #0x14 + blt _02304960 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023049A4: .word 0x02353538 + arm_func_end ov29_02304954 + + arm_func_start ov29_023049A8 +ov29_023049A8: ; 0x023049A8 + ldr r3, [r0] + cmp r3, #1 + bxne lr + mov r3, #0 + strb r3, [r0, #0x28] + strb r1, [r0, #0xae] + cmp r2, #0 + bxlt lr + cmp r2, #8 + strltb r2, [r0, #0xb0] + bx lr + arm_func_end ov29_023049A8 + + arm_func_start ov29_023049D4 +ov29_023049D4: ; 0x023049D4 + stmdb sp!, {r3, lr} + ldr r3, [r0] + cmp r3, #1 + ldmneia sp!, {r3, pc} + ldrb r3, [r0, #0xaf] + cmp r3, r1 + ldreqb r3, [r0, #0xb1] + cmpeq r3, r2 + ldmeqia sp!, {r3, pc} + bl ov29_023049A8 + ldmia sp!, {r3, pc} + arm_func_end ov29_023049D4 + + arm_func_start ov29_02304A00 +ov29_02304A00: ; 0x02304A00 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r2, [r5] + mov r4, r1 + cmp r2, #1 + ldmneia sp!, {r3, r4, r5, pc} + bl GetSleepAnimationId + strb r0, [r5, #0xae] + mov r0, #0 + strb r0, [r5, #0x28] + cmp r4, #0 + ldmltia sp!, {r3, r4, r5, pc} + cmp r4, #8 + ldrlt r0, [r5, #0xb4] + andlt r1, r4, #7 + strltb r1, [r0, #0x4c] + strltb r1, [r5, #0xb0] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02304A00 + + arm_func_start ov29_02304A48 +ov29_02304A48: ; 0x02304A48 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r2, [r5] + mov r4, r1 + cmp r2, #1 + ldmneia sp!, {r3, r4, r5, pc} + bl GetSleepAnimationId + strb r0, [r5, #0xae] + mov r0, #0 + strb r0, [r5, #0x28] + cmp r4, #0 + ldmltia sp!, {r3, r4, r5, pc} + cmp r4, #8 + strltb r4, [r5, #0xb0] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02304A48 + + arm_func_start ov29_02304A84 +ov29_02304A84: ; 0x02304A84 + ldr r2, [r0] + cmp r2, #1 + bxne lr + mov r2, #6 + strb r2, [r0, #0xae] + mov r2, #0 + strb r2, [r0, #0x28] + cmp r1, #0 + bxlt lr + cmp r1, #8 + strltb r1, [r0, #0xb0] + bx lr + arm_func_end ov29_02304A84 + + arm_func_start GetSleepAnimationId +GetSleepAnimationId: ; 0x02304AB4 + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #1 + cmpne r0, #5 + cmpne r0, #3 + bne _02304AE8 + ldrsh r0, [r1, #4] + cmp r0, #0xb9 + ldreqb r0, [r1, #0xbe] + cmpeq r0, #0x7f + moveq r0, #7 + movne r0, #5 + bx lr +_02304AE8: + ldrb r0, [r1, #0xd2] + cmp r0, #1 + moveq r0, #0xb + movne r0, #7 + bx lr + arm_func_end GetSleepAnimationId + + arm_func_start ov29_02304AFC +ov29_02304AFC: ; 0x02304AFC + ldr r2, [r0, #0xb4] + and r1, r1, #7 + ldr ip, _02304B10 ; =ov29_02304A48 + strb r1, [r2, #0x4c] + bx ip + .align 2, 0 +_02304B10: .word ov29_02304A48 + arm_func_end ov29_02304AFC + + arm_func_start ov29_02304B14 +ov29_02304B14: ; 0x02304B14 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + bl EntityIsValid__023047B8 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r6, [r7, #0xb4] + mov r5, #0 + mov r4, #0x21 + b _02304B58 +_02304B38: + mov r0, r4 + bl AdvanceFrame + ldrsh r0, [r6, #4] + ldrb r1, [r7, #0xaf] + bl sub_02053038 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r5, r5, #1 +_02304B58: + cmp r5, #0x64 + blt _02304B38 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02304B14 + + arm_func_start ov29_02304B64 +ov29_02304B64: ; 0x02304B64 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _02304BA8 ; =0x02353538 + mov r5, #0 +_02304B70: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__023047B8 + cmp r0, #0 + beq _02304B98 + mov r0, r6 + bl ov29_02304BAC +_02304B98: + add r5, r5, #1 + cmp r5, #0x14 + blt _02304B70 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02304BA8: .word 0x02353538 + arm_func_end ov29_02304B64 + + arm_func_start ov29_02304BAC +ov29_02304BAC: ; 0x02304BAC + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + bl GetTileAtEntity + ldrh r1, [r0] + ldr r5, [r4, #0xb4] + ldrsh r0, [r5, #4] + and r6, r1, #3 + bl GetShadowSize + mov r4, r0 + cmp r6, #3 + moveq r0, #6 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r6, #1 + bne _02304BF8 + bl ov29_02337E94 + cmp r0, #0 + ldrne r0, _02304C30 ; =0x02352808 + ldrneb r4, [r0, r4] + b _02304C24 +_02304BF8: + cmp r6, #2 + bne _02304C24 + ldr r0, _02304C34 ; =0x02353538 + ldr r1, _02304C38 ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + ldrne r0, _02304C30 ; =0x02352808 + ldrneb r4, [r0, r4] +_02304C24: + mov r0, r4 + strb r4, [r5, #0x220] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02304C30: .word 0x02352808 +_02304C34: .word 0x02353538 +_02304C38: .word 0x020A1AE8 + arm_func_end ov29_02304BAC + + arm_func_start ov29_02304C3C +ov29_02304C3C: ; 0x02304C3C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, r0 + mov sl, r1 + bl EntityIsValid__023047B8 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r4] + cmp r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [r4, #0xb4] + mov r0, r4 + ldrb r7, [r1, #0x4c] + mov r8, r7 + bl ov29_022E272C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov sb, #0 + mov r6, #2 + mov r5, #0x43 + b _02304CC0 +_02304C8C: + mov r0, r4 + mov r1, r8 + bl ov29_02304A48 + mov r0, r6 + mov r1, r5 + bl ov29_022EA370 + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + add r0, sb, #1 + mov r0, r0, lsl #0x10 + and r8, r1, #7 + mov sb, r0, asr #0x10 +_02304CC0: + cmp sb, sl, lsl #3 + blt _02304C8C + mov r6, #2 + mov r5, #0x43 + b _02304CFC +_02304CD4: + mov r0, r4 + mov r1, r8 + bl ov29_02304A48 + mov r0, r6 + mov r1, r5 + bl ov29_022EA370 + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + and r8, r0, #7 +_02304CFC: + cmp r8, r7 + bne _02304CD4 + mov r0, r4 + mov r1, r8 + bl ov29_02304A48 + mov r0, #2 + mov r1, #0x43 + bl ov29_022EA370 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02304C3C + + arm_func_start ov29_02304D20 +ov29_02304D20: ; 0x02304D20 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, r0 + ldr sb, [r6, #0xb4] + mov r5, r1 + add r0, sb, #0x200 + ldrsh r0, [r0, #0xc] + mov r4, r2 + cmp r0, #4 + movge r0, #0 + strgeh r0, [sb, #0x4a] + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl sub_0204AEE0 + cmp r0, #0 + movne r1, #2 + ldr r2, _02304FD4 ; =0x0237C9CC + moveq r1, #1 + str r1, [r2] + add r0, sb, #0x200 + ldrsh r3, [r0, #0xc] + mov r1, #0x1c + add r0, sb, #0x19c + smulbb sl, r3, r1 + add r7, r0, sl + mov r1, #0 + strb r1, [r7, #0x1a] + str r5, [r7, #0xc] + ldrsh r8, [r6, #4] + mov r3, r5, lsl #2 + ldr r1, _02304FD8 ; =0x0235173C + strh r8, [r0, sl] + ldrsh r5, [r6, #6] + ldr r0, _02304FDC ; =0x0235173E + ldrsh r1, [r1, r3] + strh r5, [r7, #2] + ldrsh r5, [r4] + ldrsh r0, [r0, r3] + str r5, [r7, #4] + ldrsh r3, [r4, #2] + str r3, [r7, #8] + ldr r3, [r2] + mul r1, r3, r1 + str r1, [r7, #0x10] + ldr r1, [r2] + mul r0, r1, r0 + str r0, [r7, #0x14] + bl sub_0204AEE0 + cmp r0, #0 + movne r1, #2 + ldr r5, _02304FD4 ; =0x0237C9CC + moveq r1, #1 + add r0, sb, #0x200 + str r1, [r5] + ldrsh r1, [r0, #0xc] + add r1, r1, #1 + strh r1, [r0, #0xc] + ldrsh r0, [r0, #0xc] + cmp r0, #2 + bne _02304E6C + ldr r1, [r5] + mov r0, #0x18 + mov r1, r1, lsl #1 + bl DivideInt + add r1, sb, #0x100 + strh r0, [r1, #0xb4] + ldr r0, [sb, #0x1ac] + mov r1, r5 + mov r0, r0, lsl #1 + str r0, [sb, #0x1ac] + ldr r2, [sb, #0x1b0] + mov r0, #0x18 + mov r2, r2, lsl #1 + str r2, [sb, #0x1b0] + ldr r1, [r1] + mov r1, r1, lsl #1 + bl DivideInt + strh r0, [r7, #0x18] + ldr r0, [r7, #0x10] + mov r0, r0, lsl #1 + str r0, [r7, #0x10] + ldr r0, [r7, #0x14] + mov r0, r0, lsl #1 + str r0, [r7, #0x14] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02304E6C: + cmp r0, #3 + bne _02304F14 + mov r6, #0 + mov r4, #0x18 + mov sl, #0x1c +_02304E80: + mla r8, r6, sl, sb + ldr r1, [r5] + mov r0, r4 + add r1, r1, r1, lsl #1 + bl DivideInt + add r1, r8, #0x100 + strh r0, [r1, #0xb4] + ldr r0, [r8, #0x1ac] + add r6, r6, #1 + add r0, r0, r0, lsl #1 + str r0, [r8, #0x1ac] + ldr r0, [r8, #0x1b0] + cmp r6, #2 + add r0, r0, r0, lsl #1 + str r0, [r8, #0x1b0] + ldr r0, [r8, #0x1ac] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r8, #0x1ac] + ldr r0, [r8, #0x1b0] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r8, #0x1b0] + blt _02304E80 + ldr r1, _02304FD4 ; =0x0237C9CC + mov r0, #0x18 + ldr r1, [r1] + add r1, r1, r1, lsl #1 + bl DivideInt + strh r0, [r7, #0x18] + ldr r0, [r7, #0x10] + add r0, r0, r0, lsl #1 + str r0, [r7, #0x10] + ldr r0, [r7, #0x14] + add r0, r0, r0, lsl #1 + str r0, [r7, #0x14] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02304F14: + cmp r0, #4 + bne _02304FC0 + mov r8, #0 + mov r6, #0x18 + mov fp, #3 + mov r4, #0x1c +_02304F2C: + mla sl, r8, r4, sb + ldr r1, [r5] + mov r0, r6 + mov r1, r1, lsl #2 + bl DivideInt + add r1, sl, #0x100 + strh r0, [r1, #0xb4] + ldr r0, [sl, #0x1ac] + mov r1, fp + mov r0, r0, lsl #2 + str r0, [sl, #0x1ac] + ldr r0, [sl, #0x1b0] + mov r0, r0, lsl #2 + str r0, [sl, #0x1b0] + ldr r0, [sl, #0x1ac] + bl DivideInt + str r0, [sl, #0x1ac] + ldr r0, [sl, #0x1b0] + mov r1, #3 + bl DivideInt + add r8, r8, #1 + str r0, [sl, #0x1b0] + cmp r8, #3 + blt _02304F2C + ldr r1, _02304FD4 ; =0x0237C9CC + mov r0, #0x18 + ldr r1, [r1] + mov r1, r1, lsl #2 + bl DivideInt + strh r0, [r7, #0x18] + ldr r0, [r7, #0x10] + mov r0, r0, lsl #2 + str r0, [r7, #0x10] + ldr r0, [r7, #0x14] + mov r0, r0, lsl #2 + str r0, [r7, #0x14] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02304FC0: + ldr r1, [r5] + mov r0, #0x18 + bl DivideInt + strh r0, [r7, #0x18] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02304FD4: .word 0x0237C9CC +_02304FD8: .word 0x0235173C +_02304FDC: .word 0x0235173E + arm_func_end ov29_02304D20 + + arm_func_start DisplayActions +DisplayActions: ; 0x02304FE0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r1, _02305580 ; =0x0237C9C1 + mov r6, #0 + mov sl, r0 + mov r7, r6 + strb r6, [r1] + bl sub_0204AEE0 + cmp r0, #0 + mov r5, #0 + movne r1, #2 + ldr r0, _02305584 ; =0x0237C9CC + moveq r1, #1 + str r1, [r0] + mov r4, r5 + mov fp, r5 +_02305020: + ldr r0, _02305588 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__0230558C + cmp r0, #0 + beq _02305160 + ldr sb, [r8, #0xb4] + add r0, sb, #0x200 + ldrsh r0, [r0, #0xc] + cmp r0, #0 + bne _023050EC + ldrb r0, [sb, #0x151] + cmp r0, #0 + beq _02305160 + strb r4, [sb, #0x151] + add r0, sb, #0x100 + ldrsh r1, [r0, #0x7e] + cmp r1, #0 + ldreqsh r0, [r0, #0x80] + cmpeq r0, #0 + beq _02305160 + ldrsh r0, [r8, #4] + cmp r1, r0 + addeq r0, sb, #0x100 + ldreqsh r1, [r0, #0x80] + ldreqsh r0, [r8, #6] + cmpeq r1, r0 + beq _02305160 + mov r0, r8 + mov r1, #1 + bl ov29_02300818 + cmp r0, #0 + beq _023050C0 + mov r0, r8 + bl ov29_02300CB0 + cmp r0, #0 + bne _02305160 +_023050C0: + add r0, r8, #4 + add r1, sb, #0x7e + add r1, r1, #0x100 + bl GetDirectionTowardsPosition + mov r1, r0 + ldrb r0, [sb, #0x4c] + cmp r1, r0 + beq _02305160 + mov r0, r8 + bl ov29_02304A48 + b _02305160 +_023050EC: + ldrh r2, [sb] + mov r0, r8 + add r1, sp, #0xc + orr r2, r2, #0x2000 + strh r2, [sb] + ldr r3, [sb, #0x1a0] + mov r2, #0x18 + mul r2, r3, r2 + add r2, r2, #0xc + mov r2, r2, lsl #8 + str r2, [sp, #0xc] + ldr r3, [sb, #0x1a4] + mov r2, #0x18 + mul r2, r3, r2 + add r2, r2, #0x10 + mov r2, r2, lsl #8 + str r2, [sp, #0x10] + bl ov29_022E1A40 + ldr r2, [sb, #0x1a8] + mov r0, r8 + mov r1, #0 + bl ov29_023049D4 + add r0, sb, #0x200 + strh fp, [r0, #0xe] + mov r0, r8 + mov r6, #1 + bl ov29_022E272C + cmp r0, #0 + movne r7, r6 +_02305160: + add r5, r5, #1 + cmp r5, #0x14 + blt _02305020 + cmp r6, #0 + moveq r0, #0 + beq _02305578 + ldr r0, _02305588 ; =0x02353538 + ldr r1, [r0] + ldr r6, [r1, #0xc4] + str sl, [r1, #0xc4] + ldr r0, [r0] + ldrb r0, [r0, #0x78b] + cmp r0, #0 + bne _0230532C + cmp r7, #0 + beq _0230532C + mov r0, #0x35 + bl ov29_0234BA18 + mov r5, #0 + b _02305314 +_023051B0: + mov r0, #7 + bl AdvanceFrame + mov sl, #0 + ldr r4, _02305588 ; =0x02353538 + mov fp, sl +_023051C4: + ldr r0, [r4] + add r0, r0, sl, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__0230558C + cmp r0, #0 + beq _02305304 + ldr sb, [r7, #0xb4] + add r0, sb, #0x200 + ldrsh r2, [r0, #0xe] + ldrsh r1, [r0, #0xc] + add r3, sb, #0x19c + mov r0, #0x1c + smlabb r8, r2, r0, r3 + cmp r1, #0 + beq _02305304 + mov r0, r7 + ldr r1, [r8, #0x10] + ldr r2, [r8, #0x14] + bl ov29_022E1A90 + ldrb r0, [sb, #7] + cmp r0, #0 + beq _02305258 + ldr r0, [r4] + add r0, r0, #0x100 + ldrsh r1, [r0, #0xdc] + cmp r1, #0 + blt _02305258 + ldr r1, [r7, #0xc] + mov r1, r1, asr #8 + strh r1, [r0, #0xdc] + ldr r1, [r7, #0x10] + ldr r0, [r4] + mov r1, r1, asr #8 + add r0, r0, #0x100 + strh r1, [r0, #0xde] +_02305258: + ldrsh r0, [r8, #0x18] + sub r0, r0, #1 + strh r0, [r8, #0x18] + ldrsh r0, [r8, #0x18] + cmp r0, #0 + bne _02305304 + add r2, sb, #0x200 + ldrsh r0, [r2, #0xe] + add r0, r0, #1 + strh r0, [r2, #0xe] + ldrsh r1, [r2, #0xe] + ldrsh r0, [r2, #0xc] + cmp r1, r0 + streqh fp, [r2, #0xc] + beq _02305304 + mov r0, #0x1c + smlabb r0, r1, r0, sb + ldr r3, [r0, #0x1a0] + mov r1, #0x18 + mul r1, r3, r1 + add r1, r1, #0xc + mov r1, r1, lsl #8 + str r1, [sp, #4] + ldrsh r3, [r2, #0xe] + mov r2, #0x1c + mov r0, r7 + smlabb r2, r3, r2, sb + ldr r3, [r2, #0x1a4] + mov r2, #0x18 + mul r2, r3, r2 + add r2, r2, #0x10 + mov r2, r2, lsl #8 + add r1, sp, #4 + str r2, [sp, #8] + bl ov29_022E1A40 + add r2, sb, #0x200 + ldrsh r3, [r2, #0xe] + mov r2, #0x1c + mov r0, r7 + smlabb r2, r3, r2, sb + ldr r2, [r2, #0x1a8] + mov r1, #0 + bl ov29_023049D4 +_02305304: + add sl, sl, #1 + cmp sl, #0x14 + blt _023051C4 + add r5, r5, #1 +_02305314: + ldr r1, _02305584 ; =0x0237C9CC + mov r0, #0x18 + ldr r1, [r1] + bl DivideInt + cmp r5, r0 + blt _023051B0 +_0230532C: + mov r7, #0 + ldr r8, _02305588 ; =0x02353538 + mov r4, r7 +_02305338: + ldr r0, [r8] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230537C + ldr r1, [r5, #0xb4] + add r0, r1, #0x200 + strh r4, [r0, #0xc] + ldrh r0, [r1] + tst r0, #0x2000 + beq _0230537C + mov r0, r5 + mov r1, r4 + bl ov29_022E1A40 +_0230537C: + add r7, r7, #1 + cmp r7, #0x14 + blt _02305338 + bl ov29_02307DD0 + mov r8, #0 +_02305390: + mov sl, #0 + mov fp, sl + mov r7, #1 + ldr r5, _02305588 ; =0x02353538 + ldr r4, _02305580 ; =0x0237C9C1 + b _02305530 +_023053A8: + ldr r0, [r5] + add r0, r0, sl, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + bl IsFloorOver + cmp r0, #0 + bne _02305538 + ldr r0, [sb, #0xb4] + cmp r8, #0 + ldrb r1, [r0, #7] + bne _023053F0 + cmp r1, #0 + beq _0230552C + b _023053F8 +_023053F0: + cmp r1, #0 + bne _0230552C +_023053F8: + ldrh r3, [sb, #4] + ldrh r2, [sb, #6] + ldrh r1, [r0] + strh r3, [sp] + strh r2, [sp, #2] + tst r1, #0x2000 + bne _02305430 + mov r0, sb + bl ov29_0234AD10 + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + b _023054E4 +_02305430: + bic r1, r1, #0x2000 + strh r1, [r0] + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0230545C + add r0, sb, #4 + bl ov29_02337A3C + mov r0, fp + bl ov29_022F62CC + bl ov29_022F3634 + b _0230547C +_0230545C: + mov r0, sb + bl ov29_0234AD10 + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + mov r0, sb + bl ov29_02305694 +_0230547C: + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + bl IsFloorOver + cmp r0, #0 + bne _02305538 + mov r0, #0 + bl TryForcedLoss + mov r0, sb + bl ov29_0230FC24 + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + bl IsFloorOver + cmp r0, #0 + bne _02305538 + mov r0, sb + bl EnemyEvolution + bl ov29_02346888 + ldr r1, [r5] + mov r0, sb + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02305814 +_023054E4: + mov r0, sb + bl EntityIsValid__0230558C + cmp r0, #0 + beq _0230552C + bl IsFloorOver + cmp r0, #0 + bne _02305538 + ldrsh r1, [sp] + ldrsh r0, [sb, #4] + cmp r1, r0 + ldreqsh r1, [sp, #2] + ldreqsh r0, [sb, #6] + cmpeq r1, r0 + mov r0, sb + strneb r7, [r4] + bl ov29_022F9C74 + mov r0, sb + bl ov29_02321104 +_0230552C: + add sl, sl, #1 +_02305530: + cmp sl, #0x14 + blt _023053A8 +_02305538: + add r8, r8, #1 + cmp r8, #2 + blt _02305390 + bl ov29_022EF9C8 + bl IsFloorOver + cmp r0, #0 + ldrne r1, _02305588 ; =0x02353538 + movne r0, #1 + ldrne r1, [r1] + strne r6, [r1, #0xc4] + bne _02305578 + bl ov29_022EF9BC + ldr r1, _02305588 ; =0x02353538 + mov r0, #1 + ldr r1, [r1] + str r6, [r1, #0xc4] +_02305578: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02305580: .word 0x0237C9C1 +_02305584: .word 0x0237C9CC +_02305588: .word 0x02353538 + arm_func_end DisplayActions diff --git a/asm/overlay_29_023055B0.s b/asm/overlay_29_023055B0.s new file mode 100644 index 00000000..c55ad1cb --- /dev/null +++ b/asm/overlay_29_023055B0.s @@ -0,0 +1,460 @@ + .include "asm/macros.inc" + .include "overlay_29_023055B0.inc" + + .text + + arm_func_start ov29_023055B0 +ov29_023055B0: ; 0x023055B0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, #0 + mov r5, #1 + ldr r4, _02305690 ; =0x02353538 + b _02305684 +_023055C4: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__0230558C + cmp r0, #0 + beq _02305680 + ldr r8, [r7, #0xb4] + ldrb r0, [r8, #7] + cmp r0, #0 + bne _02305680 + mov r0, r8 + bl ov29_022FBE04 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r0, r8, #0x100 + ldrsh r1, [r0, #0x7e] + cmp r1, #0 + ldreqsh r0, [r0, #0x80] + cmpeq r0, #0 + beq _02305680 + ldrsh r0, [r7, #4] + cmp r1, r0 + addeq r0, r8, #0x100 + ldreqsh r1, [r0, #0x80] + ldreqsh r0, [r7, #6] + cmpeq r1, r0 + beq _02305680 + mov r0, r7 + mov r1, r5 + bl ov29_02300818 + cmp r0, #0 + bne _02305680 + add r1, r8, #0x7e + add r0, r7, #4 + add r1, r1, #0x100 + bl GetDirectionTowardsPosition + mov sb, r0 + and r1, sb, #7 + mov r0, r7 + strb r1, [r8, #0x4c] + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + mov r2, sb + bl ov29_023049A8 +_02305680: + add r6, r6, #1 +_02305684: + cmp r6, #0x14 + blt _023055C4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02305690: .word 0x02353538 + arm_func_end ov29_023055B0 + + arm_func_start ov29_02305694 +ov29_02305694: ; 0x02305694 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r8, [sb, #0xb4] + bl EntityIsValid__0230558C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + bl GetTileAtEntity + mov r4, r0 + mov r0, sb + mov r1, #0xd + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r8, #0xef] + cmpne r0, #3 + beq _02305708 + mov r0, sb + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _023056F8 + mov r0, sb + mov r1, #0x10 + bl HasHeldItem +_023056F8: + cmp r0, #0 + bne _02305708 + add r0, sb, #4 + bl ov29_02337D68 +_02305708: + ldr r4, [r4, #0x10] + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r4] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02305724: ; jump table + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 1 + b _02305740 ; case 2 + b _02305808 ; case 3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} ; case 6 +_02305740: + mov r0, r4 + bl ov29_022E1608 + ldrb r1, [r8, #6] + mov r6, #0 + mov r5, r0 + mov r7, r6 + cmp r1, #0 + bne _02305790 + mov r0, sb + mov r1, #0x13 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02305790 + ldrb r0, [r4, #0x20] + cmp r0, #0 + bne _02305790 + mov r0, #1 + strb r0, [r4, #0x20] + bl ov29_02336F4C + mov r7, #1 +_02305790: + ldrb r0, [r5, #1] + cmp r0, #0 + bne _023057B8 + ldrb r0, [r4, #0x20] + cmp r0, #0 + beq _023057E0 + ldrb r0, [r8, #6] + cmp r0, #0 + moveq r6, #1 + b _023057E0 +_023057B8: + cmp r0, #1 + bne _023057D0 + ldrb r0, [r8, #6] + cmp r0, #0 + movne r6, #1 + b _023057E0 +_023057D0: + cmp r0, #2 + ldreqb r0, [r8, #6] + cmpeq r0, #0 + moveq r6, #1 +_023057E0: + cmp r6, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r7, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + add r1, sb, #4 + mov r2, #0 + mov r3, #1 + bl ov29_022EDFA0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02305808: + mov r0, sb + bl ov29_0230F164 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02305694 + + arm_func_start ov29_02305814 +ov29_02305814: ; 0x02305814 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__0230558C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + bl IsFloorOver + cmp r0, #0 + ldreq r0, _023058BC ; =0x02353538 + ldreq r0, [r0] + ldreqb r0, [r0, #0x793] + cmpeq r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl GetTileAtEntity + ldrh r0, [r0] + tst r0, #0x40 + ldmeqia sp!, {r3, r4, r5, pc} + bl GetLeader + ldr r1, _023058C0 ; =0x00000C82 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _023058BC ; =0x02353538 + mov r0, r5 + ldr r2, [r1] + mov r3, #1 + mov r1, r4 + strb r3, [r2, #0x794] + bl ov29_02307F4C + mov r0, #0 + bl ov29_022E3A58 + add r0, r5, #4 + bl ov29_022E2CA0 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0x78 + mov r1, #0x39 + bl ov29_022EA370 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023058BC: .word 0x02353538 +_023058C0: .word 0x00000C82 + arm_func_end ov29_02305814 + + arm_func_start ov29_023058C4 +ov29_023058C4: ; 0x023058C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r7, r3 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sb + mov r1, r4 + ldr r6, [sb, #0xb4] + bl ov29_02300634 + cmp r0, #0 + beq _02305AD8 + mov r0, sb + mov r4, #1 + bl ov29_023004B0 + cmp r0, #0 + beq _0230593C + mov r2, r5 + mov fp, r4 + mov r0, sl + mov r1, sb + mov r3, r2 + str fp, [sp] + bl ov29_02305FDC +_0230593C: + mov r0, sb + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sb + bl ov29_023004E4 + cmp r0, #0 + beq _0230596C + mov r0, sl + mov r1, sb + bl ov29_023061A8 +_0230596C: + ldrb r0, [sp, #0x28] + cmp r0, #0 + mov r0, sb + beq _0230599C + bl ov29_02300500 + cmp r0, #0 + beq _023059C0 + mov r0, sl + mov r1, sb + mov r2, #1 + bl EndFrozenClassStatus + b _023059C0 +_0230599C: + bl ov29_02300500 + cmp r0, #0 + ldrneb r0, [r6, #0xc4] + cmpne r0, #3 + beq _023059C0 + mov r0, sl + mov r1, sb + mov r2, #1 + bl EndFrozenClassStatus +_023059C0: + mov r0, sb + bl ov29_02300520 + cmp r0, #0 + beq _023059DC + mov r0, sl + mov r1, sb + bl EndCringeClassStatus +_023059DC: + mov r0, sb + bl ov29_0230053C + cmp r0, #0 + beq _02305A00 + mov r0, sl + mov r1, sb + mov r2, #0 + mov r3, #1 + bl ov29_02306728 +_02305A00: + mov r0, sb + bl ov29_02300588 + cmp r0, #0 + beq _02305A1C + mov r0, sl + mov r1, sb + bl ov29_023068C4 +_02305A1C: + mov r0, sb + bl ov29_023005A4 + cmp r0, #0 + beq _02305A38 + mov r0, sl + mov r1, sb + bl ov29_02306950 +_02305A38: + mov r0, sb + mov r1, #0 + bl ov29_023005C0 + cmp r0, #0 + beq _02305A58 + mov r0, sl + mov r1, sb + bl ov29_02306B28 +_02305A58: + mov r0, sb + bl ov29_023005FC + cmp r0, #0 + beq _02305A74 + mov r0, sl + mov r1, sb + bl ov29_02306BF8 +_02305A74: + mov r0, sb + bl ov29_02300618 + cmp r0, #0 + beq _02305A90 + mov r0, sl + mov r1, sb + bl ov29_02306C64 +_02305A90: + ldrb r0, [r6, #0x106] + cmp r0, #0 + beq _02305AB4 + ldr r2, _02305BF0 ; =0x00000C83 + mov r3, #0 + mov r0, sl + mov r1, sb + strb r3, [r6, #0x106] + bl LogMessageByIdWithPopupCheckUserTarget +_02305AB4: + ldrb r0, [r6, #0xfe] + cmp r0, #0 + beq _02305AD8 + ldr r2, _02305BF4 ; =0x00000C84 + mov r3, #0 + mov r0, sl + mov r1, sb + strb r3, [r6, #0xfe] + bl LogMessageByIdWithPopupCheckUserTarget +_02305AD8: + mov r0, sb + bl CalcSpeedStageWrapper + mov r2, #0 + mov fp, r0 + mov r1, r2 +_02305AEC: + add r0, r6, r2 + add r2, r2, #1 + strb r1, [r0, #0x119] + cmp r2, #5 + blt _02305AEC + mov r0, sb + bl CalcSpeedStageWrapper + cmp fp, r0 + beq _02305B40 + mov r0, #0 + mov r1, sb + mov r2, r0 + mov r4, #1 + bl SubstitutePlaceholderStringTags + ldr r1, [r6, #0x110] + ldr r0, _02305BF8 ; =0x02353318 + mov r1, r1, lsl #1 + ldrh r2, [r0, r1] + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02305B40: + mov fp, #0 + mov r1, #1 + add r2, r6, #0x124 + mov r0, fp + mov ip, r1 +_02305B54: + ldrb r6, [r2, fp, lsl #3] + add r3, r2, fp, lsl #3 + tst r6, #1 + movne r6, r1 + moveq r6, r0 + tst r6, #0xff + beq _02305B88 + ldrh r6, [r3, #2] + tst r6, #1 + bicne r6, r6, #1 + movne r4, ip + movne r5, ip + strneh r6, [r3, #2] +_02305B88: + add fp, fp, #1 + cmp fp, #4 + blt _02305B54 + cmp r4, #0 + beq _02305BC8 + cmp r8, #0 + beq _02305BAC + mov r0, sb + bl ov29_022E543C +_02305BAC: + cmp r5, #0 + beq _02305BE0 + ldr r2, _02305BFC ; =0x00000C85 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02305BE0 +_02305BC8: + cmp r7, #0 + bne _02305BE0 + ldr r2, _02305C00 ; =0x00000C86 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02305BE0: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02305BF0: .word 0x00000C83 +_02305BF4: .word 0x00000C84 +_02305BF8: .word 0x02353318 +_02305BFC: .word 0x00000C85 +_02305C00: .word 0x00000C86 + arm_func_end ov29_023058C4 diff --git a/asm/overlay_29_02305C28.s b/asm/overlay_29_02305C28.s new file mode 100644 index 00000000..029ab4fe --- /dev/null +++ b/asm/overlay_29_02305C28.s @@ -0,0 +1,2609 @@ + .include "asm/macros.inc" + .include "overlay_29_02305C28.inc" + + .text + + arm_func_start ov29_02305C28 +ov29_02305C28: ; 0x02305C28 + stmdb sp!, {r3, lr} + mov ip, #0 + str ip, [sp] + bl ov29_023058C4 + ldmia sp!, {r3, pc} + arm_func_end ov29_02305C28 + + arm_func_start ov29_02305C3C +ov29_02305C3C: ; 0x02305C3C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xb8 + mov sb, r0 + mov r8, r1 + bl EntityIsValid__02305C04 + cmp r0, #0 + beq _02305F4C + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + beq _02305F4C + mov r5, #0 + mov r0, sb + mov r1, r5 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + bl ov29_02300634 + cmp r0, #0 + beq _02305D28 + mov r0, sb + mov r1, r8 + bl ov29_02306DCC + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_02306F00 + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_02307078 + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_02307198 + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_0230737C + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_023076C0 + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_023077FC + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_023078EC + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_02307A2C + orr r5, r5, r0 + mov r0, sb + mov r1, r8 + bl ov29_02307B0C + orr r5, r5, r0 +_02305D28: + ldrb r0, [r6, #0x106] + cmp r0, #0 + beq _02305D68 + mov r0, sb + mov r1, r8 + mov r2, #1 + bl ov29_0231662C + cmp r0, #0 + ldrneb r1, [r6, #0x106] + orrne r0, r5, #0x11 + andne r5, r0, #0xff + orreq r0, r5, #1 + andeq r5, r0, #0xff + strneb r1, [r7, #0x106] + mov r0, #0 + strb r0, [r6, #0x106] +_02305D68: + ldrb r0, [r6, #0xfe] + cmp r0, #0 + beq _02305DAC + mov r0, sb + mov r1, r8 + mov r2, #0 + mov r3, #1 + bl ov29_023174C8 + cmp r0, #0 + ldrneb r1, [r6, #0xfe] + orrne r0, r5, #0x11 + andne r5, r0, #0xff + orreq r0, r5, #1 + andeq r5, r0, #0xff + strneb r1, [r7, #0xfe] + mov r0, #0 + strb r0, [r6, #0xfe] +_02305DAC: + mov r0, sb + mov r1, r8 + mov r2, #0 + bl ov29_02301940 + cmp r0, #0 + bne _02305E08 + mov r0, sb + mov r1, r8 + mov r2, #0 + bl ov29_02302430 + cmp r0, #0 + bne _02305E08 + mov r2, #0 +_02305DE0: + add r0, r6, r2 + ldrb r0, [r0, #0x119] + add r1, r7, r2 + add r2, r2, #1 + strb r0, [r1, #0x119] + cmp r0, #0 + orrne r0, r5, #0x11 + andne r5, r0, #0xff + cmp r2, #5 + blt _02305DE0 +_02305E08: + mov r0, sb + bl CalcSpeedStageWrapper + mov r2, #0 + mov r4, r0 + mov r1, r2 +_02305E1C: + add r0, r6, r2 + add r2, r2, #1 + strb r1, [r0, #0x119] + cmp r2, #5 + blt _02305E1C + mov r0, sb + bl CalcSpeedStageWrapper + cmp r4, r0 + orrne r0, r5, #1 + andne r5, r0, #0xff + mov r0, #0 + add r6, r6, #0x124 + mov r3, r0 + mov r4, #1 +_02305E54: + ldrb r1, [r6, r0, lsl #3] + add ip, r6, r0, lsl #3 + tst r1, #1 + movne r1, r4 + moveq r1, r3 + tst r1, #0xff + beq _02305E88 + ldrh r1, [ip, #2] + tst r1, #1 + orrne r2, r5, #1 + bicne r1, r1, #1 + strneh r1, [ip, #2] + andne r5, r2, #0xff +_02305E88: + add r0, r0, #1 + cmp r0, #4 + blt _02305E54 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xd8] + mov r2, #0 + cmp r0, #2 + mov r0, #1 + bne _02305ED0 + mov r1, r8 + strb r2, [r7, #0xd8] + bl SubstitutePlaceholderStringTags + mov r0, #2 + strb r0, [r7, #0xd8] + b _02305ED8 +_02305ED0: + mov r1, r8 + bl SubstitutePlaceholderStringTags +_02305ED8: + cmp r5, #0 + beq _02305EF4 + cmp r5, #1 + beq _02305F08 + cmp r5, #0x11 + beq _02305F24 + b _02305F3C +_02305EF4: + ldr r2, _02305F54 ; =0x00000CCC + add r1, sp, #0 + mov r0, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02305F3C +_02305F08: + mov r0, sb + bl ov29_022E543C + ldr r2, _02305F58 ; =0x00000CCB + add r1, sp, #0 + mov r0, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02305F3C +_02305F24: + mov r0, sb + bl ov29_022E543C + ldr r2, _02305F5C ; =0x00000CCA + add r1, sp, #0 + mov r0, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02305F3C: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags +_02305F4C: + add sp, sp, #0xb8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02305F54: .word 0x00000CCC +_02305F58: .word 0x00000CCB +_02305F5C: .word 0x00000CCA + arm_func_end ov29_02305C3C + + arm_func_start ov29_02305F60 +ov29_02305F60: ; 0x02305F60 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r0, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r5, [r4, #0xb4] + mov r1, #0 + mov r0, r5 + bl ov29_022FDDC0 + mov ip, #0 + strb ip, [r5, #0x106] + strb ip, [r5, #0xfe] + add r3, r5, #0x124 + mov r1, ip + mov r2, #1 +_02305FA0: + ldrb r0, [r3, ip, lsl #3] + add lr, r3, ip, lsl #3 + add ip, ip, #1 + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + ldrneh r0, [lr, #2] + bicne r0, r0, #1 + strneh r0, [lr, #2] + cmp ip, #4 + blt _02305FA0 + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02305F60 + + arm_func_start ov29_02305FDC +ov29_02305FDC: ; 0x02305FDC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + mov r0, r8 + mov r7, r2 + mov r6, r3 + mov r4, #0 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r4 + ldr r5, [r8, #0xb4] + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xbd] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02306164 +_02306028: ; jump table + b _02306164 ; case 0 + b _02306044 ; case 1 + b _0230605C ; case 2 + b _02306070 ; case 3 + b _02306118 ; case 4 + b _023060A8 ; case 5 + b _02306164 ; case 6 +_02306044: + ldr r2, _0230618C ; =0x00000C8D + mov r0, sb + mov r1, r8 + mov r4, #1 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306164 +_0230605C: + ldr r2, _02306190 ; =0x00000C8E + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306164 +_02306070: + mov r4, #1 + mov r0, sb + mov r1, r8 + rsb r2, r4, #0xc90 + bl LogMessageByIdWithPopupCheckUserTarget + cmp r6, #0 + beq _02306164 + ldr r0, _02306194 ; =0x022C45A8 + ldr r3, _02306198 ; =0x0000024E + ldrsh r1, [r0] + mov r0, r8 + mov r2, #8 + bl ov29_0230D11C + b _02306164 +_023060A8: + mov r0, sb + mov r1, r8 + mov r2, #0xc90 + mov r4, #1 + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r0, [sp, #0x20] + cmp r0, #0 + beq _023060E8 + ldr r0, _0230619C ; =0x022C45A0 + mov r6, r4 + ldrsh r2, [r0] + mov r0, sb + mov r1, r8 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp +_023060E8: + ldrb r0, [sp, #0x20] + mov r6, #0 + strb r6, [r5, #0xbd] + cmp r0, #0 + beq _02306164 + mov r2, #1 + mov r0, sb + mov r1, r8 + mov r3, r2 + str r6, [sp] + bl ov29_023058C4 + b _02306164 +_02306118: + cmp r7, #0 + beq _02306154 + ldr r1, _023061A0 ; =0x022C4868 + mov r3, r4 + mov r0, r8 + mov r2, #1 + strb r3, [r5, #0xbd] + bl CalcStatusDuration + mov r2, r0 + mov r0, sb + mov r1, r8 + add r2, r2, #1 + mov r3, #1 + bl TryInflictSleepStatus + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02306154: + ldr r2, _023061A4 ; =0x00000C91 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_02306164: + mov r1, #0 + mov r0, r8 + strb r1, [r5, #0xbd] + bl UpdateStatusIconFlags + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r8 + mov r1, #8 + bl ov29_02304A48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230618C: .word 0x00000C8D +_02306190: .word 0x00000C8E +_02306194: .word 0x022C45A8 +_02306198: .word 0x0000024E +_0230619C: .word 0x022C45A0 +_023061A0: .word 0x022C4868 +_023061A4: .word 0x00000C91 + arm_func_end ov29_02305FDC + + arm_func_start ov29_023061A8 +ov29_023061A8: ; 0x023061A8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + arm_func_end ov29_023061A8 + + arm_func_start ov29_023061CC +ov29_023061CC: ; 0x023061CC + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xbf] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + arm_func_end ov29_023061CC + + arm_func_start caseD_6 +caseD_6: ; 0x023061E4 + b _02306238 +_023061E8: ; jump table + b _02306238 ; case 0 + b _02306228 ; case 1 + b _02306200 ; case 2 + b _02306200 ; case 3 + b _02306214 ; case 4 + b _02306238 ; case 5 +_02306200: + ldr r2, _0230624C ; =0x00000C9E + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306238 +_02306214: + ldr r2, _02306250 ; =0x00000C9C + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306238 +_02306228: + ldr r2, _02306254 ; =0x00000C9D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + arm_func_end caseD_6 +_02306238: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xbf] + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230624C: .word 0x00000C9E +_02306250: .word 0x00000C9C +_02306254: .word 0x00000C9D + + arm_func_start EndFrozenClassStatus +EndFrozenClassStatus: ; 0x02306258 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r4, #0 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + ldr r5, [r7, #0xb4] + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xc4] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02306398 +_023062A0: ; jump table + b _02306398 ; case 0 + b _023062C4 ; case 1 + b _02306300 ; case 2 + b _02306338 ; case 3 + b _0230635C ; case 4 + b _0230631C ; case 5 + b _02306380 ; case 6 + b _023062E4 ; case 7 + b _02306398 ; case 8 +_023062C4: + cmp r6, #0 + beq _023062DC + ldr r2, _023063BC ; =0x00000C9F + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_023062DC: + mov r4, #1 + b _02306398 +_023062E4: + cmp r6, #0 + beq _02306398 + ldr r2, _023063C0 ; =0x00000C99 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306398 +_02306300: + cmp r6, #0 + beq _02306398 + ldr r2, _023063C4 ; =0x00000C9A + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306398 +_0230631C: + cmp r6, #0 + beq _02306398 + ldr r2, _023063C8 ; =0x00000C9B + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02306398 +_02306338: + cmp r6, #0 + beq _02306350 + ldr r2, _023063CC ; =0x00000C98 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02306350: + ldr r0, [r5, #0xb4] + bl FreeOtherWrappedMonsters + b _02306398 +_0230635C: + cmp r6, #0 + beq _02306374 + ldr r2, _023063CC ; =0x00000C98 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02306374: + ldr r0, [r5, #0xb4] + bl FreeOtherWrappedMonsters + b _02306398 +_02306380: + cmp r6, #0 + beq _02306398 + ldr r2, _023063D0 ; =0x00000CBB + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02306398: + mov r1, #0 + mov r0, r7 + strb r1, [r5, #0xc4] + bl UpdateStatusIconFlags + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + bl ov29_022E6798 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023063BC: .word 0x00000C9F +_023063C0: .word 0x00000C99 +_023063C4: .word 0x00000C9A +_023063C8: .word 0x00000C9B +_023063CC: .word 0x00000C98 +_023063D0: .word 0x00000CBB + arm_func_end EndFrozenClassStatus + + arm_func_start EndCringeClassStatus +EndCringeClassStatus: ; 0x023063D4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd0] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _023064C0 +_02306414: ; jump table + b _023064C0 ; case 0 + b _023064B0 ; case 1 + b _02306438 ; case 2 + b _02306474 ; case 3 + b _0230644C ; case 4 + b _02306460 ; case 5 + b _0230649C ; case 6 + b _02306488 ; case 7 + b _023064C0 ; case 8 +_02306438: + ldr r2, _023064DC ; =0x00000C97 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_0230644C: + ldr r2, _023064E0 ; =0x00000CA4 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_02306460: + ldr r2, _023064E4 ; =0x00000CA7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_02306474: + ldr r2, _023064E8 ; =0x00000CBD + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_02306488: + ldr r2, _023064EC ; =0x00000CB7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_0230649C: + mov r0, r6 + mov r1, r5 + mov r2, #0xcb0 + bl LogMessageByIdWithPopupCheckUserTarget + b _023064C0 +_023064B0: + ldr r2, _023064F0 ; =0x00000CBC + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023064C0: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xd0] + bl UpdateStatusIconFlags + mov r0, r5 + bl CalcSpeedStageWrapper + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023064DC: .word 0x00000C97 +_023064E0: .word 0x00000CA4 +_023064E4: .word 0x00000CA7 +_023064E8: .word 0x00000CBD +_023064EC: .word 0x00000CB7 +_023064F0: .word 0x00000CBC + arm_func_end EndCringeClassStatus + + arm_func_start ov29_023064F4 +ov29_023064F4: ; 0x023064F4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0x12 + addls pc, pc, r0, lsl #2 + b _02306688 +_02306530: ; jump table + b _02306688 ; case 0 + b _0230657C ; case 1 + b _0230658C ; case 2 + b _0230659C ; case 3 + b _023065AC ; case 4 + b _023065BC ; case 5 + b _023065CC ; case 6 + b _023065DC ; case 7 + b _023065EC ; case 8 + b _023065FC ; case 9 + b _023065AC ; case 10 + b _0230660C ; case 11 + b _0230661C ; case 12 + b _0230663C ; case 13 + b _0230664C ; case 14 + b _0230665C ; case 15 + b _0230666C ; case 16 + b _0230667C ; case 17 + b _02306688 ; case 18 +_0230657C: + ldr r1, _0230669C ; =0x00000C87 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230658C: + ldr r1, _023066A0 ; =0x00000C8A + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230659C: + ldr r1, _023066A4 ; =0x00000C88 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065AC: + ldr r1, _023066A8 ; =0x00000C89 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065BC: + ldr r1, _023066AC ; =0x00000C8B + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065CC: + ldr r1, _023066B0 ; =0x00000C8C + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065DC: + ldr r1, _023066B4 ; =0x00000CA6 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065EC: + ldr r1, _023066B8 ; =0x00000CAE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_023065FC: + ldr r1, _023066BC ; =0x00000CB1 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230660C: + ldr r1, _023066C0 ; =0x00000CB2 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230661C: + ldr r1, _023066C4 ; =0x00000CB3 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + bl ov29_022E65F4 + mov r0, r5 + bl ov29_02307CE0 + b _02306688 +_0230663C: + ldr r1, _023066C8 ; =0x00000CB4 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230664C: + ldr r1, _023066CC ; =0x00000CB5 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230665C: + ldr r1, _023066D0 ; =0x00000CBE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230666C: + mov r0, r5 + mov r1, #0xcc0 + bl LogMessageByIdWithPopupCheckUser + b _02306688 +_0230667C: + ldr r1, _023066D4 ; =0x00000CC1 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_02306688: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xd5] + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230669C: .word 0x00000C87 +_023066A0: .word 0x00000C8A +_023066A4: .word 0x00000C88 +_023066A8: .word 0x00000C89 +_023066AC: .word 0x00000C8B +_023066B0: .word 0x00000C8C +_023066B4: .word 0x00000CA6 +_023066B8: .word 0x00000CAE +_023066BC: .word 0x00000CB1 +_023066C0: .word 0x00000CB2 +_023066C4: .word 0x00000CB3 +_023066C8: .word 0x00000CB4 +_023066CC: .word 0x00000CB5 +_023066D0: .word 0x00000CBE +_023066D4: .word 0x00000CC1 + arm_func_end ov29_023064F4 + + arm_func_start ov29_023066D8 +ov29_023066D8: ; 0x023066D8 + stmdb sp!, {r4, lr} + mov r4, r1 + mov r0, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #3 + ldmneia sp!, {r4, pc} + ldr r1, _02306724 ; =0x02353538 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x19000 + str r2, [r0, #0x904] + ldr r0, [r1] + add r0, r0, #0x19000 + str r2, [r0, #0x90c] + ldmia sp!, {r4, pc} + .align 2, 0 +_02306724: .word 0x02353538 + arm_func_end ov29_023066D8 + + arm_func_start ov29_02306728 +ov29_02306728: ; 0x02306728 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #0 + ldr r4, [r7, #0xb4] + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd8] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02306894 +_02306770: ; jump table + b _02306894 ; case 0 + b _02306790 ; case 1 + b _023067D4 ; case 2 + b _023067AC ; case 3 + b _02306830 ; case 4 + b _02306868 ; case 5 + b _02306880 ; case 6 + b _02306894 ; case 7 +_02306790: + cmp r6, #1 + cmpne r5, #0 + beq _02306894 + ldr r1, _023068A8 ; =0x00000C95 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _02306894 +_023067AC: + cmp r6, #3 + cmpne r5, #0 + beq _023067C4 + ldr r1, _023068AC ; =0x00000C96 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser +_023067C4: + mov r0, r8 + mov r1, r7 + bl ov29_023066D8 + b _02306894 +_023067D4: + mov r1, #0 + mov r0, r7 + strb r1, [r4, #0xd8] + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 + ldr r1, _023068B0 ; =0x02353538 + mov r0, #0 + ldr r1, [r1] + cmp r6, #2 + add r1, r1, #0x3000 + strb r0, [r1, #0xe38] + beq _02306894 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r5, #0 + beq _02306894 + ldr r1, _023068B4 ; =0x00000CA5 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _02306894 +_02306830: + mov r1, #0 + mov r0, r7 + strb r1, [r4, #0xd8] + bl ov29_022FB984 + cmp r5, #0 + beq _02306854 + ldr r1, _023068B8 ; =0x00000CBF + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser +_02306854: + ldr r0, _023068B0 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xe] + b _02306894 +_02306868: + cmp r5, #0 + beq _02306894 + ldr r1, _023068BC ; =0x00000CC2 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _02306894 +_02306880: + cmp r5, #0 + beq _02306894 + ldr r1, _023068C0 ; =0x00000CC3 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser +_02306894: + mov r1, #0 + mov r0, r7 + strb r1, [r4, #0xd8] + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023068A8: .word 0x00000C95 +_023068AC: .word 0x00000C96 +_023068B0: .word 0x02353538 +_023068B4: .word 0x00000CA5 +_023068B8: .word 0x00000CBF +_023068BC: .word 0x00000CC2 +_023068C0: .word 0x00000CC3 + arm_func_end ov29_02306728 + + arm_func_start ov29_023068C4 +ov29_023068C4: ; 0x023068C4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xe0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230692C +_02306900: ; jump table + b _0230692C ; case 0 + b _02306910 ; case 1 + b _02306920 ; case 2 + b _0230692C ; case 3 +_02306910: + ldr r1, _02306948 ; =0x00000C94 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _0230692C +_02306920: + ldr r1, _0230694C ; =0x00000CAF + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_0230692C: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xe0] + mov r1, #0xff + strb r1, [r4, #0xe8] + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306948: .word 0x00000C94 +_0230694C: .word 0x00000CAF + arm_func_end ov29_023068C4 + + arm_func_start ov29_02306950 +ov29_02306950: ; 0x02306950 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xec] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _023069E0 +_0230698C: ; jump table + b _023069E0 ; case 0 + b _023069A4 ; case 1 + b _023069B4 ; case 2 + b _023069C4 ; case 3 + b _023069D4 ; case 4 + b _023069E0 ; case 5 +_023069A4: + mov r0, r5 + mov r1, #0xca0 + bl LogMessageByIdWithPopupCheckUser + b _023069E0 +_023069B4: + ldr r1, _023069F4 ; =0x00000CA1 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _023069E0 +_023069C4: + ldr r1, _023069F8 ; =0x00000CA2 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _023069E0 +_023069D4: + ldr r1, _023069FC ; =0x00000CA3 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_023069E0: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xec] + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023069F4: .word 0x00000CA1 +_023069F8: .word 0x00000CA2 +_023069FC: .word 0x00000CA3 + arm_func_end ov29_02306950 + + arm_func_start ov29_02306A00 +ov29_02306A00: ; 0x02306A00 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r1 + mov r4, #0 + mov r0, r8 + mov r7, r2 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + ldr r6, [r8, #0xb4] + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xef] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02306ADC +_02306A48: ; jump table + b _02306ADC ; case 0 + b _02306A60 ; case 1 + b _02306A84 ; case 2 + b _02306A74 ; case 3 + b _02306AC4 ; case 4 + b _02306ADC ; case 5 +_02306A60: + ldr r1, _02306B18 ; =0x00000CA8 + mov r0, r8 + mov r4, #1 + bl LogMessageByIdWithPopupCheckUser + b _02306ADC +_02306A74: + ldr r1, _02306B1C ; =0x00000CB8 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _02306ADC +_02306A84: + ldrsh r1, [r6, #2] + mov r0, r8 + bl ov29_022F9408 + strh r0, [r6, #4] + ldrsh r0, [r6, #4] + bl GetSpriteIndex__022F7388 + strh r0, [r8, #0xa8] + mov r0, r8 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r8 + bl ov29_02304830 + ldr r1, _02306B20 ; =0x00000CB6 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _02306ADC +_02306AC4: + cmp r7, #0 + bne _02306AD8 + ldr r1, _02306B24 ; =0x00000CAC + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser +_02306AD8: + mov r5, #1 +_02306ADC: + mov r1, #0 + mov r0, r8 + strb r1, [r6, #0xef] + bl UpdateStatusIconFlags + cmp r4, #0 + beq _02306AFC + mov r0, #1 + bl ov29_022F62CC +_02306AFC: + cmp r7, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r8 + bl ov29_02321104 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02306B18: .word 0x00000CA8 +_02306B1C: .word 0x00000CB8 +_02306B20: .word 0x00000CB6 +_02306B24: .word 0x00000CAC + arm_func_end ov29_02306A00 + + arm_func_start ov29_02306B28 +ov29_02306B28: ; 0x02306B28 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf1] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02306BB8 +_02306B64: ; jump table + b _02306BB8 ; case 0 + b _02306B7C ; case 1 + b _02306B8C ; case 2 + b _02306B9C ; case 3 + b _02306BAC ; case 4 + b _02306BB8 ; case 5 +_02306B7C: + ldr r1, _02306BE8 ; =0x00000CA9 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306BB8 +_02306B8C: + ldr r1, _02306BEC ; =0x00000CAA + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306BB8 +_02306B9C: + ldr r1, _02306BF0 ; =0x00000CAB + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02306BB8 +_02306BAC: + ldr r1, _02306BF4 ; =0x00000CAD + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_02306BB8: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xf1] + bl UpdateStatusIconFlags + ldrb r0, [r4, #7] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0x31 + bl AdvanceFrame + bl ov29_02336F4C + bl ov29_02339CE8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306BE8: .word 0x00000CA9 +_02306BEC: .word 0x00000CAA +_02306BF0: .word 0x00000CAB +_02306BF4: .word 0x00000CAD + arm_func_end ov29_02306B28 + + arm_func_start ov29_02306BF8 +ov29_02306BF8: ; 0x02306BF8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf3] + cmp r0, #0 + beq _02306C4C + cmp r0, #1 + beq _02306C40 + cmp r0, #2 + b _02306C4C +_02306C40: + ldr r1, _02306C60 ; =0x00000CB9 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_02306C4C: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xf3] + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306C60: .word 0x00000CB9 + arm_func_end ov29_02306BF8 + + arm_func_start ov29_02306C64 +ov29_02306C64: ; 0x02306C64 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf5] + cmp r0, #0 + beq _02306CB8 + arm_func_end ov29_02306C64 + + arm_func_start ov29_02306C9C +ov29_02306C9C: ; 0x02306C9C + cmp r0, #1 + beq _02306CAC + cmp r0, #2 + b _02306CB8 +_02306CAC: + ldr r1, _02306CCC ; =0x00000CC4 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_02306CB8: + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xf5] + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02306CCC: .word 0x00000CC4 + arm_func_end ov29_02306C9C + + arm_func_start ov29_02306CD0 +ov29_02306CD0: ; 0x02306CD0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r0, r6 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r4, #0 + ldr r5, [r6, #0xb4] + mov r0, r4 + mov r1, r6 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xf7] + cmp r0, #0 + beq _02306D2C + cmp r0, #1 + beq _02306D1C + cmp r0, #2 + b _02306D2C +_02306D1C: + ldr r1, _02306D50 ; =0x00000CC5 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r4, #1 +_02306D2C: + mov r1, #0 + mov r0, r6 + strb r1, [r5, #0xf7] + bl UpdateStatusIconFlags + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_02321134 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02306D50: .word 0x00000CC5 + arm_func_end ov29_02306CD0 + + arm_func_start ov29_02306D54 +ov29_02306D54: ; 0x02306D54 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, #0 + ldr r4, _02306DC8 ; =0x02353538 + mov sb, r0 + mov r5, r8 + mov r6, #1 + mov r7, r8 +_02306D70: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr r1, [r0, #0xb78] + cmp r1, #0 + moveq r0, r7 + beq _02306DA0 + ldr r0, [r1] + cmp r0, #1 + moveq r0, r6 + movne r0, r5 + and r0, r0, #0xff +_02306DA0: + cmp r0, #0 + beq _02306DB0 + mov r0, sb + bl ov29_02306CD0 +_02306DB0: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x14 + blt _02306D70 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02306DC8: .word 0x02353538 + arm_func_end ov29_02306D54 + + arm_func_start ov29_02306DCC +ov29_02306DCC: ; 0x02306DCC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov r8, r1 + mov r4, #0 + mov sb, r0 + mov r0, r8 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + beq _02306EF8 + mov r1, sb + mov r2, r0 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xbd] + cmp r0, #0 + moveq r0, r4 + beq _02306EF8 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02306E9C +_02306E3C: ; jump table + b _02306E9C ; case 0 + b _02306E58 ; case 1 + b _02306E9C ; case 2 + b _02306E58 ; case 3 + b _02306E58 ; case 4 + b _02306E7C ; case 5 + b _02306E9C ; case 6 +_02306E58: + mov r2, #1 + mov r0, sb + mov r1, r8 + mov r3, r2 + str r4, [sp] + bl ov29_02311C28 + mov sl, r0 + mov r4, #1 + b _02306E9C +_02306E7C: + mov r2, r4 + mov r0, sb + mov r1, r8 + mov r3, r2 + str r2, [sp] + bl ov29_02311C28 + mov sl, r0 + mov r4, #1 +_02306E9C: + cmp sl, #0 + beq _02306EBC + ldrb r1, [r6, #0xbd] + orr r0, r5, #0x11 + and r5, r0, #0xff + strb r1, [r7, #0xbd] + ldrb r0, [r6, #0xbe] + strb r0, [r7, #0xbe] +_02306EBC: + cmp r4, #0 + orrne r1, r5, #1 + movne r0, #0 + strneb r0, [r6, #0xbd] + andne r5, r1, #0xff + cmp r4, #0 + beq _02306EE4 + mov r0, sb + mov r1, #0x378 + bl ov29_02304A48 +_02306EE4: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r5 +_02306EF8: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02306DCC + + arm_func_start ov29_02306F00 +ov29_02306F00: ; 0x02306F00 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov sl, #0 + mov sb, r0 + mov r8, r1 + mov r4, sl + mov r5, sl + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, sl + beq _02307070 + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, sl + beq _02307070 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + ldrb r0, [r6, #0xbf] + cmp r0, #0 + mov r0, sl + beq _02307070 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, sl + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xbf] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0230701C +_02306F84: ; jump table + b _0230701C ; case 0 + b _02306FFC ; case 1 + b _02306F9C ; case 2 + b _02306FBC ; case 3 + b _02306FDC ; case 4 + b _0230701C ; case 5 +_02306F9C: + mov r0, sb + mov r1, r8 + mov r2, sl + mov r3, #1 + bl TryInflictPoisonedStatus + mov sl, r0 + mov r4, #1 + b _0230701C +_02306FBC: + mov r0, sb + mov r1, r8 + mov r2, sl + mov r3, #1 + bl TryInflictBadlyPoisonedStatus + mov sl, r0 + mov r4, #1 + b _0230701C +_02306FDC: + mov r0, sb + mov r1, r8 + mov r2, sl + mov r3, #1 + bl TryInflictParalysisStatus + mov sl, r0 + mov r4, #1 + b _0230701C +_02306FFC: + mov r2, sl + mov r4, #1 + mov r0, sb + mov r1, r8 + mov r3, r2 + str r4, [sp] + bl TryInflictBurnStatus + mov sl, r0 +_0230701C: + cmp sl, #0 + beq _02307048 + add r3, r6, #0xbf + add r2, r7, #0xbf + mov r1, #4 +_02307030: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _02307030 + orr r0, r5, #0x11 + and r5, r0, #0xff +_02307048: + cmp r4, #0 + orrne r0, r5, #1 + movne r1, #0 + andne r5, r0, #0xff + mov r0, sb + strneb r1, [r6, #0xbf] + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r5 +_02307070: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02306F00 + + arm_func_start ov29_02307078 +ov29_02307078: ; 0x02307078 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + ldrb r1, [r6, #0xc4] + cmp r1, #3 + cmpne r1, #4 + beq _023070E0 + ldrb r0, [r7, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _023070E8 +_023070E0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_023070E8: + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _0230714C +_023070F4: ; jump table + b _0230714C ; case 0 + b _0230714C ; case 1 + b _02307114 ; case 2 + b _0230714C ; case 3 + b _0230714C ; case 4 + b _0230714C ; case 5 + b _0230714C ; case 6 + b _02307130 ; case 7 +_02307114: + mov r0, sb + mov r1, r8 + mov r2, #1 + bl TryInflictShadowHoldStatus + mov sl, r0 + mov r4, #1 + b _0230714C +_02307130: + mov r0, sb + mov r1, r8 + mov r2, #0x7e + mov r3, #1 + bl TryInflictConstrictionStatus + mov sl, r0 + mov r4, #1 +_0230714C: + cmp sl, #0 + beq _0230716C + add r0, r6, #0xc4 + add r7, r7, #0xc4 + ldmia r0, {r0, r1, r2} + orr r3, r5, #0x11 + stmia r7, {r0, r1, r2} + and r5, r3, #0xff +_0230716C: + cmp r4, #0 + orrne r0, r5, #1 + movne r1, #0 + andne r5, r0, #0xff + mov r0, sb + strneb r1, [r6, #0xc4] + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02307078 + + arm_func_start ov29_02307198 +ov29_02307198: ; 0x02307198 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + beq _02307374 + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + beq _02307374 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + ldrb r0, [r6, #0xd0] + cmp r0, #0 + mov r0, r4 + beq _02307374 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xd0] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _0230731C +_0230721C: ; jump table + b _0230731C ; case 0 + b _02307300 ; case 1 + b _02307240 ; case 2 + b _0230729C ; case 3 + b _02307260 ; case 4 + b _02307280 ; case 5 + b _023072E4 ; case 6 + b _023072C4 ; case 7 + b _0230731C ; case 8 +_02307240: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl TryInflictConfusedStatus + mov sl, r0 + mov r4, #1 + b _0230731C +_02307260: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl TryInflictCoweringStatus + mov sl, r0 + mov r4, #1 + b _0230731C +_02307280: + mov r0, sb + mov r1, r8 + mov r2, #1 + bl ov29_023163A8 + mov sl, r0 + mov r4, #1 + b _0230731C +_0230729C: + mov r3, r4 + mov r0, sb + mov r1, r8 + str r3, [sp] + mov r2, #1 + str r2, [sp, #4] + bl TryInflictPausedStatus + mov sl, r0 + mov r4, #1 + b _0230731C +_023072C4: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl TryInflictInfatuatedStatus + mov sl, r0 + mov r4, #1 + b _0230731C +_023072E4: + mov r0, sb + mov r1, r8 + mov r2, #1 + bl ov29_02316720 + mov sl, r0 + mov r4, #1 + b _0230731C +_02307300: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl TryInflictCringeStatus + mov sl, r0 + mov r4, #1 +_0230731C: + cmp sl, #0 + beq _0230733C + ldrb r1, [r6, #0xd0] + orr r0, r5, #0x11 + and r5, r0, #0xff + strb r1, [r7, #0xd0] + ldrb r0, [r6, #0xd1] + strb r0, [r7, #0xd1] +_0230733C: + cmp r4, #0 + movne r0, #0 + orrne r1, r5, #1 + strneb r0, [r6, #0xd0] + mov r0, sb + andne r5, r1, #0xff + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, sb + bl CalcSpeedStageWrapper + mov r0, r8 + bl CalcSpeedStageWrapper + mov r0, r5 +_02307374: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02307198 + + arm_func_start ov29_0230737C +ov29_0230737C: ; 0x0230737C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov r5, r4 + mov r6, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + beq _023076B4 + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + beq _023076B4 + mov r1, sb + mov r2, r0 + ldr r7, [sb, #0xb4] + ldr sl, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xd8] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230749C +_023073F0: ; jump table + b _0230749C ; case 0 + b _02307410 ; case 1 + b _0230741C ; case 2 + b _0230749C ; case 3 + b _02307440 ; case 4 + b _02307460 ; case 5 + b _02307480 ; case 6 + b _0230749C ; case 7 +_02307410: + mov r5, #1 + mov r4, r5 + b _0230749C +_0230741C: + mov r2, r4 + mov r4, #1 + mov r0, sb + mov r1, r8 + mov r3, r2 + str r4, [sp] + bl ov29_02315E24 + mov r5, r0 + b _0230749C +_02307440: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl ov29_0231827C + mov r5, r0 + mov r4, #1 + b _0230749C +_02307460: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl ov29_023185A8 + mov r5, r0 + mov r4, #1 + b _0230749C +_02307480: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl ov29_0231872C + mov r5, r0 + mov r4, #1 +_0230749C: + ldrb r0, [r7, #0xd8] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _023076A0 +_023074AC: ; jump table + b _023076A0 ; case 0 + b _023074C8 ; case 1 + b _02307528 ; case 2 + b _023076A0 ; case 3 + b _02307554 ; case 4 + b _023075D4 ; case 5 + b _0230763C ; case 6 +_023074C8: + cmp r5, #0 + beq _02307500 + mov r0, sb + mov r1, r8 + bl ov29_023066D8 + add r3, r7, #0xd8 + add r2, sl, #0xd8 + mov r1, #5 +_023074E8: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _023074E8 + orr r0, r6, #0x11 + and r6, r0, #0xff +_02307500: + cmp r4, #0 + beq _023076A0 + mov r0, r8 + mov r1, sb + mov r2, #1 + mov r3, #0 + bl ov29_02306728 + orr r0, r6, #1 + and r6, r0, #0xff + b _023076A0 +_02307528: + cmp r5, #0 + beq _023076A0 + mov r3, #0 + mov r0, sb + mov r1, r8 + mov r2, #1 + str r3, [sp] + bl ov29_02315E24 + orr r0, r6, #0x11 + and r6, r0, #0xff + b _023076A0 +_02307554: + cmp r5, #0 + beq _023075AC + mov r0, sb + mov r1, r8 + bl ov29_023066D8 + add r3, r7, #0xd8 + add r2, sl, #0xd8 + mov r1, #5 +_02307574: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _02307574 + ldr r1, _023076BC ; =0x02353538 + mov r0, r8 + ldr r1, [r1] + mov r2, #1 + strb r2, [r1, #0xe] + bl ov29_022FB984 + mov r0, r8 + bl UpdateStatusIconFlags + orr r0, r6, #0x11 + and r6, r0, #0xff +_023075AC: + cmp r4, #0 + beq _023076A0 + mov r0, r8 + mov r1, sb + mov r2, #4 + mov r3, #0 + bl ov29_02306728 + orr r0, r6, #1 + and r6, r0, #0xff + b _023076A0 +_023075D4: + cmp r5, #0 + beq _02307614 + mov r0, sb + mov r1, r8 + bl ov29_023066D8 + add r3, r7, #0xd8 + add r2, sl, #0xd8 + mov r1, #5 +_023075F4: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _023075F4 + mov r0, r8 + bl UpdateStatusIconFlags + orr r0, r6, #0x11 + and r6, r0, #0xff +_02307614: + cmp r4, #0 + beq _023076A0 + mov r0, r8 + mov r1, sb + mov r2, #5 + mov r3, #0 + bl ov29_02306728 + orr r0, r6, #1 + and r6, r0, #0xff + b _023076A0 +_0230763C: + cmp r5, #0 + beq _0230767C + mov r0, sb + mov r1, r8 + bl ov29_023066D8 + add r3, r7, #0xd8 + add r2, sl, #0xd8 + mov r1, #5 +_0230765C: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _0230765C + mov r0, r8 + bl UpdateStatusIconFlags + orr r0, r6, #0x11 + and r6, r0, #0xff +_0230767C: + cmp r4, #0 + beq _023076A0 + mov r0, r8 + mov r1, sb + mov r2, #6 + mov r3, #0 + bl ov29_02306728 + orr r0, r6, #1 + and r6, r0, #0xff +_023076A0: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r6 +_023076B4: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023076BC: .word 0x02353538 + arm_func_end ov29_0230737C + + arm_func_start ov29_023076C0 +ov29_023076C0: ; 0x023076C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + ldrb r0, [r6, #0xe0] + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xe0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230776C +_02307740: ; jump table + b _0230776C ; case 0 + b _02307750 ; case 1 + b _0230776C ; case 2 + b _0230776C ; case 3 +_02307750: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl TryInflictLeechSeedStatus + mov sl, r0 + mov r4, #1 +_0230776C: + cmp sl, #0 + beq _023077CC + add r0, r6, #0xe0 + add r3, r7, #0xe0 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #0xff + strb r0, [r7, #0xe8] + ldr r2, _023077F8 ; =0x02353538 + mov r0, #0 +_02307794: + ldr r1, [r2] + add r1, r1, r0, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb78] + cmp sb, r1 + streqb r0, [r7, #0xe8] + ldreq r1, [sb, #0xb4] + add r0, r0, #1 + ldreq r1, [r1, #0xb0] + streq r1, [r7, #0xe4] + cmp r0, #0x14 + blt _02307794 + orr r0, r5, #0x11 + and r5, r0, #0xff +_023077CC: + cmp r4, #0 + orrne r0, r5, #1 + movne r1, #0 + andne r5, r0, #0xff + mov r0, sb + strneb r1, [r6, #0xe0] + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023077F8: .word 0x02353538 + arm_func_end ov29_023076C0 + + arm_func_start ov29_023077FC +ov29_023077FC: ; 0x023077FC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, sb + mov r2, r0 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xec] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _023078A0 +_0230786C: ; jump table + b _023078A0 ; case 0 + b _023078A0 ; case 1 + b _02307884 ; case 2 + b _023078A0 ; case 3 + b _023078A0 ; case 4 + b _023078A0 ; case 5 +_02307884: + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, #1 + bl ov29_02315C00 + mov sl, r0 + mov r4, #1 +_023078A0: + cmp sl, #0 + beq _023078C0 + ldrb r1, [r6, #0xec] + orr r0, r5, #0x11 + and r5, r0, #0xff + strb r1, [r7, #0xec] + ldrb r0, [r6, #0xed] + strb r0, [r7, #0xed] +_023078C0: + cmp r4, #0 + orrne r0, r5, #1 + movne r1, #0 + andne r5, r0, #0xff + mov r0, sb + strneb r1, [r6, #0xec] + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_023077FC + + arm_func_start ov29_023078EC +ov29_023078EC: ; 0x023078EC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov sl, r4 + mov r5, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, sb + mov r2, r0 + ldr r6, [sb, #0xb4] + ldr r7, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r8 + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xf1] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _023079C4 +_0230795C: ; jump table + b _023079C4 ; case 0 + b _02307974 ; case 1 + b _02307994 ; case 2 + b _023079C4 ; case 3 + b _023079B0 ; case 4 + b _023079C4 ; case 5 +_02307974: + mov r0, sb + mov r1, r8 + mov r2, #1 + mov r3, r4 + bl ov29_023176CC + mov sl, r0 + mov r4, #1 + b _023079C4 +_02307994: + mov r0, sb + mov r1, r8 + mov r2, #1 + bl ov29_02317844 + mov sl, r0 + mov r4, #1 + b _023079C4 +_023079B0: + mov r0, sb + mov r1, r8 + bl ov29_02317AF4 + mov sl, r0 + mov r4, #1 +_023079C4: + cmp sl, #0 + beq _023079E4 + ldrb r1, [r6, #0xf1] + orr r0, r5, #0x11 + and r5, r0, #0xff + strb r1, [r7, #0xf1] + ldrb r0, [r6, #0xf2] + strb r0, [r7, #0xf2] +_023079E4: + cmp r4, #0 + orrne r0, r5, #1 + movne r1, #0 + andne r5, r0, #0xff + mov r0, sb + strneb r1, [r6, #0xf1] + bl UpdateStatusIconFlags + mov r0, r8 + bl UpdateStatusIconFlags + ldrb r0, [r6, #7] + cmp r0, #0 + beq _02307A24 + mov r0, #0x31 + bl AdvanceFrame + bl ov29_02336F4C + bl ov29_02339CE8 +_02307A24: + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_023078EC + + arm_func_start ov29_02307A2C +ov29_02307A2C: ; 0x02307A2C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sl, r0 + mov sb, r1 + mov r5, r4 + mov r6, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, sb + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, sl + mov r2, r0 + ldr r7, [sl, #0xb4] + ldr r8, [sb, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, sb + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xf3] + cmp r0, #0 + beq _02307AC0 + cmp r0, #1 + beq _02307AA8 + cmp r0, #2 + b _02307AC0 +_02307AA8: + mov r0, sl + mov r1, sb + mov r2, #1 + bl ov29_02317124 + mov r5, r0 + mov r4, #1 +_02307AC0: + cmp r5, #0 + beq _02307AE0 + ldrb r1, [r7, #0xf3] + orr r0, r6, #0x11 + and r6, r0, #0xff + strb r1, [r8, #0xf3] + ldrb r0, [r7, #0xf4] + strb r0, [r8, #0xf4] +_02307AE0: + cmp r4, #0 + orrne r0, r6, #1 + movne r1, #0 + andne r6, r0, #0xff + mov r0, sl + strneb r1, [r7, #0xf3] + bl UpdateStatusIconFlags + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02307A2C + + arm_func_start ov29_02307B0C +ov29_02307B0C: ; 0x02307B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sl, r0 + mov sb, r1 + mov r5, r4 + mov r6, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, sb + bl EntityIsValid__02305C04 + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, sl + mov r2, r0 + ldr r7, [sl, #0xb4] + ldr r8, [sb, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, sb + mov r0, #1 + mov r2, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xf5] + cmp r0, #1 + bne _02307B90 + mov r0, sl + mov r1, sb + mov r2, #1 + bl ov29_02318850 + mov r5, r0 + mov r4, #1 +_02307B90: + cmp r5, #0 + beq _02307BB0 + ldrb r1, [r7, #0xf5] + orr r0, r6, #0x11 + and r6, r0, #0xff + strb r1, [r8, #0xf5] + ldrb r0, [r7, #0xf6] + strb r0, [r8, #0xf6] +_02307BB0: + cmp r4, #0 + orrne r0, r6, #1 + movne r1, #0 + andne r6, r0, #0xff + mov r0, sl + strneb r1, [r7, #0xf5] + bl UpdateStatusIconFlags + mov r0, sb + bl UpdateStatusIconFlags + mov r0, r6 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_02307B0C + + arm_func_start ov29_02307BDC +ov29_02307BDC: ; 0x02307BDC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r4, [r5, #0xb4] + mov r6, r0 + ldrb r2, [r4, #0xc4] + mov r3, #0 + cmp r2, #6 + bne _02307C0C + mov r2, #1 + bl EndFrozenClassStatus + mov r3, #1 +_02307C0C: + ldrb r0, [r4, #0xbd] + cmp r0, #1 + ldreqb r0, [r4, #0xbe] + cmpeq r0, #0x7f + bne _02307C3C + mov r3, #1 + mov r0, r6 + mov r1, r5 + mov r2, #0 + str r3, [sp] + bl ov29_02305FDC + mov r3, #1 +_02307C3C: + mov r0, r3 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_02307BDC + + arm_func_start ov29_02307C48 +ov29_02307C48: ; 0x02307C48 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr ip, [r4, #0xb4] + mov r3, #0 + mov r1, #1 + strb r3, [ip, #0xbd] + mov r2, r1 + strb r3, [ip, #0xbe] + bl ov29_022FA1D8 + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r4, pc} + arm_func_end ov29_02307C48 + + arm_func_start ov29_02307C78 +ov29_02307C78: ; 0x02307C78 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r3, [r4, #0xb4] + ldrb r0, [r3, #0xc4] + cmp r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #0 + strb r0, [r3, #0xc4] + strb r0, [r3, #0xcc] + mov r1, r4 + mov r2, r0 + strb r0, [r3, #0xcd] + bl SubstitutePlaceholderStringTags + ldr r2, _02307CDC ; =0x00000C9F + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02307CDC: .word 0x00000C9F + arm_func_end ov29_02307C78 + + arm_func_start ov29_02307CE0 +ov29_02307CE0: ; 0x02307CE0 + stmdb sp!, {r4, lr} + ldr r4, [r0, #0xb4] + mov r1, #0 + bl ov29_02307D54 + mov r1, #0 + strb r1, [r4, #0xff] + ldrsh r0, [r4, #2] + bl GetType + strb r0, [r4, #0x5e] + ldrsh r0, [r4, #2] + mov r1, #1 + bl GetType + strb r0, [r4, #0x5f] + ldmia sp!, {r4, pc} + arm_func_end ov29_02307CE0 + + arm_func_start ov29_02307D18 +ov29_02307D18: ; 0x02307D18 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #7 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl ov29_023064F4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02307D18 + + arm_func_start ov29_02307D54 +ov29_02307D54: ; 0x02307D54 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02305C04 + cmp r0, #0 + ldrne r2, [r5, #0xb4] + ldrneb r0, [r2, #0xa9] + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + strb r0, [r2, #0xa9] + ldrb r1, [r2, #0xaa] + cmp r4, #0 + strb r1, [r2, #0x5e] + ldrb r1, [r2, #0xab] + strb r1, [r2, #0x5f] + strb r0, [r2, #0xaa] + strb r0, [r2, #0xab] + ldmeqia sp!, {r3, r4, r5, pc} + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02307DBC ; =0x00000CC8 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02307DBC: .word 0x00000CC8 + arm_func_end ov29_02307D54 + + arm_func_start ov29_02307DC0 +ov29_02307DC0: ; 0x02307DC0 + mov r1, #0 + strb r1, [r0, #0x104] + strb r1, [r0, #0x105] + bx lr + arm_func_end ov29_02307DC0 + + arm_func_start ov29_02307DD0 +ov29_02307DD0: ; 0x02307DD0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 +_02307DD8: + ldr r0, _02307EF4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb38] + mov r0, r6 + bl EntityIsValid__02307EF8 + cmp r0, #0 + beq _02307EE4 + ldr r1, [r6, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #1 + ldreqb r0, [r1, #0xbe] + cmpeq r0, #0x7f + bne _02307EE4 + mov r8, #0 + mov r7, r8 + mov r5, r8 + ldrb sl, [r6, #0x25] + ldr fp, _02307EF4 ; =0x02353538 + b _02307EBC +_02307E2C: + ldr r0, [fp] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb28] + mov r0, sb + bl EntityIsValid__02307EF8 + cmp r0, #0 + beq _02307EB8 + mov r0, sb + mov r1, #0x1f + bl ItemIsActive__02307F1C + cmp r0, #0 + bne _02307EB8 + ldrsh r1, [sb, #4] + ldrsh r0, [r6, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _02307E94 + ldrsh r1, [sb, #6] + ldrsh r0, [r6, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + movle r8, #1 + ble _02307EC4 +_02307E94: + mov r0, sb + mov r1, #0x24 + bl ItemIsActive__02307F1C + cmp r0, #0 + beq _02307EB8 + ldrb r0, [sb, #0x25] + cmp sl, r0 + moveq r7, #1 + beq _02307EC4 +_02307EB8: + add r5, r5, #1 +_02307EBC: + cmp r5, #4 + blt _02307E2C +_02307EC4: + cmp r7, #0 + bne _02307ED4 + cmp r8, #0 + movne r7, #1 +_02307ED4: + cmp r7, #0 + beq _02307EE4 + mov r0, r6 + bl ov29_02307C48 +_02307EE4: + add r4, r4, #1 + cmp r4, #0x10 + blt _02307DD8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02307EF4: .word 0x02353538 + arm_func_end ov29_02307DD0 diff --git a/asm/overlay_29_02307F1C.s b/asm/overlay_29_02307F1C.s new file mode 100644 index 00000000..50e44ddb --- /dev/null +++ b/asm/overlay_29_02307F1C.s @@ -0,0 +1,252 @@ + .include "asm/macros.inc" + .include "overlay_29_02307F1C.inc" + + .text + + arm_func_start ItemIsActive__02307F1C +ItemIsActive__02307F1C: ; 0x02307F1C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__02307F1C + + arm_func_start ov29_02307F4C +ov29_02307F4C: ; 0x02307F4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1a0 + mov r4, r0 + mov r5, r1 + bl EntityIsValid__02307EF8 + cmp r0, #0 + beq _02308268 + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + bne _02308268 + mov r0, r4 + bl GetTileAtEntity + ldrh r0, [r0] + tst r0, #0x40 + beq _02308268 + ldr r0, _02308270 ; =0x02353538 + ldr r2, [r0] + ldrb r1, [r2, #0x793] + cmp r1, #0 + bne _02308268 + mov r1, #1 + strb r1, [r2, #0x793] + ldr r1, [r0] + add r0, r1, #0x4000 + ldrb r2, [r0, #0xc9] + cmp r2, #0xff + beq _02308268 + add r0, r1, #0x2e8 + add r1, r0, #0xec00 + mov r0, #0x1c + mla r1, r2, r0, r1 + cmp r5, #0 + mov r5, #0 + beq _02308064 + ldrsh r0, [r4, #6] + add r7, sp, #0x10 + sub sb, r0, #4 + b _02308050 +_02307FE8: + ldrsh r0, [r4, #4] + sub r8, r0, #4 + mov r0, sb, lsl #0x10 + mov r6, r0, asr #0x10 + b _0230803C +_02307FFC: + mov r0, r8 + mov r1, sb + bl GetTileSafe + ldr r1, [r0, #0xc] + cmp r1, #0 + ldreqh r0, [r0] + andeq r0, r0, #3 + cmpeq r0, #1 + bne _02308038 + cmp r5, #0x64 + movlt r1, r5, lsl #2 + addlt r0, r7, r5, lsl #2 + strlth r8, [r7, r1] + strlth r6, [r0, #2] + addlt r5, r5, #1 +_02308038: + add r8, r8, #1 +_0230803C: + ldrsh r0, [r4, #4] + add r0, r0, #4 + cmp r8, r0 + ble _02307FFC + add sb, sb, #1 +_02308050: + ldrsh r0, [r4, #6] + add r0, r0, #4 + cmp sb, r0 + ble _02307FE8 + b _02308124 +_02308064: + ldrsh r2, [r4, #4] + ldrsh r0, [r1, #2] + add fp, sp, #0x10 + sub r7, r2, #4 + cmp r7, r0 + movle r7, r0 + add r8, r2, #5 + ldrsh r2, [r4, #6] + ldrsh r0, [r1, #6] + sub sb, r2, #4 + cmp r8, r0 + movge r8, r0 + ldrsh r0, [r1, #4] + add sl, r2, #5 + cmp sb, r0 + movle sb, r0 + ldrsh r0, [r1, #8] + cmp sl, r0 + movge sl, r0 + b _0230811C +_023080B4: + mov r0, sb, lsl #0x10 + mov r6, r7 + mov r4, r0, asr #0x10 + b _02308110 +_023080C4: + mov r0, r6 + mov r1, sb + bl GetTileSafe + ldr r1, [r0, #0xc] + cmp r1, #0 + ldreqh r1, [r0] + andeq r1, r1, #3 + cmpeq r1, #1 + bne _0230810C + ldrh r0, [r0] + tst r0, #0x40 + beq _0230810C + cmp r5, #0x64 + movlt r1, r5, lsl #2 + addlt r0, fp, r5, lsl #2 + strlth r6, [fp, r1] + strlth r4, [r0, #2] + addlt r5, r5, #1 +_0230810C: + add r6, r6, #1 +_02308110: + cmp r6, r8 + blt _023080C4 + add sb, sb, #1 +_0230811C: + cmp sb, sl + blt _023080B4 +_02308124: + ldr r0, _02308274 ; =0x022C4560 + ldr r1, _02308278 ; =0x022C4660 + ldrsh r0, [r0] + ldrsh r1, [r1] + bl DungeonRandRange + mov r6, r0 + cmp r6, r5 + movge r6, r5 + mov r8, #0 + b _02308258 +_0230814C: + mov r0, r5 + bl DungeonRandInt + mov r3, #0 + mov r4, r0 + add r2, sp, #0x10 + mov r0, r3 + b _02308188 +_02308168: + mov r1, r4, lsl #2 + ldrsh r1, [r2, r1] + cmp r1, #0 + bne _02308190 + add r4, r4, #1 + cmp r4, r5 + movge r4, r0 + add r3, r3, #1 +_02308188: + cmp r3, r5 + blt _02308168 +_02308190: + add r0, sp, #0x10 + mov r1, r4, lsl #2 + ldrsh r7, [r0, r1] + cmp r7, #0 + beq _02308260 + mov r0, #1 + bl GetMonsterIdToSpawn + add r1, sp, #0x10 + mov r3, #0 + strh r0, [sp] + add r0, r1, r4, lsl #2 + ldrsh r2, [r0, #2] + mov r1, #1 + ldrsh r0, [sp] + strh r3, [sp, #8] + strb r3, [sp, #2] + str r3, [sp, #4] + strb r1, [sp, #0xe] + strh r7, [sp, #0xa] + strh r2, [sp, #0xc] + bl MewSpawnCheck + cmp r0, #0 + beq _02308254 + add r0, sp, #0 + mov r1, #0 + bl SpawnMonster + mov r4, r0 + bl EntityIsValid__02307EF8 + cmp r0, #0 + beq _02308254 + mov r0, #0xc800 + str r0, [r4, #0x1c] + mov sl, #0 + mov sb, #0xaa + mov r7, #0x57 + b _02308244 +_02308220: + ldr r0, [r4, #0x1c] + mov r1, sb + bl MultiplyByFixedPoint + str r0, [r4, #0x1c] + cmp r0, #0x100 + blt _0230824C + mov r0, r7 + bl AdvanceFrame + add sl, sl, #1 +_02308244: + cmp sl, #0x64 + blt _02308220 +_0230824C: + mov r0, #0 + str r0, [r4, #0x1c] +_02308254: + add r8, r8, #1 +_02308258: + cmp r8, r6 + blt _0230814C +_02308260: + mov r0, #1 + bl ov29_022E38E0 +_02308268: + add sp, sp, #0x1a0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02308270: .word 0x02353538 +_02308274: .word 0x022C4560 +_02308278: .word 0x022C4660 + arm_func_end ov29_02307F4C diff --git a/asm/overlay_29_023082A0.s b/asm/overlay_29_023082A0.s new file mode 100644 index 00000000..61a1cd3d --- /dev/null +++ b/asm/overlay_29_023082A0.s @@ -0,0 +1,920 @@ + .include "asm/macros.inc" + .include "overlay_29_023082A0.inc" + + .text + + arm_func_start ov29_023082A0 +ov29_023082A0: ; 0x023082A0 + stmdb sp!, {r3, lr} + ldr r1, [r0, #0xb4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldrb r0, [r1, #0xa8] + bl sub_02058C3C + ldmia sp!, {r3, pc} + arm_func_end ov29_023082A0 + + arm_func_start ov29_023082C4 +ov29_023082C4: ; 0x023082C4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + bl GetLeader + movs r4, r0 + beq _02308338 + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl ov29_0230175C + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl CanTargetEntity + cmp r0, #0 + movne r0, r4 + ldmneia sp!, {r3, r4, r5, pc} +_02308338: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023082C4 + + arm_func_start RunMonsterAi +RunMonsterAi: ; 0x02308340 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + ldrh r1, [r4] + tst r1, #0x8000 + beq _02308374 + ldrb r1, [r4, #0xc4] + cmp r1, #6 + ldmneia sp!, {r3, r4, r5, pc} + mov r1, r5 + mov r2, #1 + bl EndFrozenClassStatus + ldmia sp!, {r3, r4, r5, pc} +_02308374: + mov r1, #0 + strb r1, [r4, #0x10c] + ldrb r1, [r4, #0xbc] + cmp r1, #6 + bls _02308394 + bl ov29_022EF9EC + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_02308394: + ldrb r0, [r4, #0xbc] + cmp r0, #7 + ldrneb r0, [r4, #0x109] + cmpne r0, #0 + beq _023083F0 + mov r0, r5 + bl ov29_02300B40 + cmp r0, #0 + beq _023083DC + mov r0, #0 + mov r1, r5 + mov r2, r0 + strb r0, [r4, #0x109] + bl SubstitutePlaceholderStringTags + ldr r1, _023085D4 ; =0x00000DED + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_023083DC: + mov r0, r5 + bl ov29_0230E914 + ldrh r0, [r4, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_023083F0: + mov r0, r5 + bl HasStatusThatPreventsActing + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_022FB538 + add r0, r4, #0x4a + bl ClearMonsterActionFields + ldrb r0, [r4, #0xbc] + cmp r0, #7 + bne _02308450 + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + mov r0, #8 + bl DungeonRandInt + strb r0, [r4, #0x4c] + ldrsh r1, [r5, #4] + add r0, r4, #0x100 + strh r1, [r0, #0x7e] + ldrsh r1, [r5, #6] + sub r1, r1, #1 + strh r1, [r0, #0x80] + ldmia sp!, {r3, r4, r5, pc} +_02308450: + mov r0, r5 + bl ov29_0230E914 + ldrh r0, [r4, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0x15 + bl IqSkillIsEnabled + cmp r0, #0 + bne _02308510 + mov r0, r5 + bl ChooseAiMove + ldrh r0, [r4, #0x4a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #2 + bne _023084A8 + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + ldmia sp!, {r3, r4, r5, pc} +_023084A8: + ldrsh r0, [r4, #2] + bl GetCanMoveFlag + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #1 + bl AiMovement + ldrb r0, [r4, #6] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0x17 + bl IqSkillIsEnabled + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrh r0, [r4, #0x4a] + cmp r0, #1 + ldmhiia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _023085D8 ; =0x00000DEE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_02308510: + ldrb r0, [r4, #0xd0] + cmp r0, #2 + bne _0230852C + ldrsh r1, [r4, #2] + add r0, r4, #0x4a + bl SetActionPassTurnOrWalk + ldmia sp!, {r3, r4, r5, pc} +_0230852C: + ldrsh r0, [r4, #2] + bl GetCanMoveFlag + cmp r0, #0 + beq _02308548 + mov r0, r5 + mov r1, #1 + bl AiMovement +_02308548: + ldrh r0, [r4, #0x4a] + cmp r0, #0 + cmpne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ChooseAiMove + ldrsh r0, [r4, #2] + bl GetCanMoveFlag + cmp r0, #0 + ldrneb r0, [r4, #6] + cmpne r0, #0 + beq _023085B4 + mov r0, r5 + mov r1, #0x17 + bl IqSkillIsEnabled + cmp r0, #0 + beq _023085B4 + ldrh r0, [r4, #0x4a] + cmp r0, #1 + bhi _023085B4 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _023085D8 ; =0x00000DEE + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_023085B4: + ldrh r0, [r4, #0x4a] + cmp r0, #0 + cmpne r0, #1 + movne r0, #0 + strneb r0, [r4, #0x7d] + strneb r0, [r4, #0x14e] + strneb r0, [r4, #0x151] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023085D4: .word 0x00000DED +_023085D8: .word 0x00000DEE + arm_func_end RunMonsterAi + + arm_func_start ov29_023085DC +ov29_023085DC: ; 0x023085DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + cmp r1, #0 + ldr r4, [r5, #0xb4] + beq _02308618 + ldrb r1, [r4, #0xd0] + cmp r1, #4 + bne _02308618 + ldrb r1, [r4, #0x4c] + add r2, r1, #4 + and r1, r2, #0xff + and r1, r1, #7 + strb r1, [r4, #0x4c] + bl UpdateAiTargetPos + ldmia sp!, {r3, r4, r5, pc} +_02308618: + ldrb r0, [r4, #0xd0] + cmp r0, #2 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #8 + bl DungeonRandInt + strb r0, [r4, #0x4c] + mov r0, r5 + bl UpdateAiTargetPos + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023085DC + + arm_func_start ov29_0230863C +ov29_0230863C: ; 0x0230863C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x40 + ldr r7, [sp, #0x68] + ldrsh r4, [sp, #0x6c] + ldr r6, [sp, #0x74] + str r7, [sp] + stmib sp, {r4, r6} + mov r8, r2 + mov sl, r0 + mov sb, r1 + bl ApplyDamage + cmp r0, #0 + ldreqb r0, [r8, #0x10] + cmpeq r0, #0 + bne _02308F68 + mov r0, sl + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _02308F68 + mov r0, sb + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _02308F68 + ldr r0, [sl] + cmp r0, #1 + ldreq r0, [sb] + cmpeq r0, #1 + bne _02308F68 + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xd2] + cmp r0, #0xc + bne _023086D4 + ldr r1, _02308F70 ; =0x02352AEC + mov r0, sl + ldr r2, [r1] + mov r1, sb + mov r3, #1 + bl BoostOffensiveStat +_023086D4: + ldr r0, [sp, #0x70] + cmp r0, #0 + beq _02308F68 + mov r0, sb + bl ov29_02300D50 + cmp r0, #0 + ldreq r0, [sb, #0xb4] + ldreqb r0, [r0, #0xd2] + cmpeq r0, #0 + movne r0, #0 + bne _02308F64 + mov r0, sl + mov r1, #0x29 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02308730 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F74 ; =0x022C442C + ldrsh r1, [r1] + cmp r0, r1 + movlt r0, #0 + blt _02308F64 +_02308730: + ldrb r0, [r8, #0xd] + bl ov29_0231EA30 + cmp r0, #0 + bne _02308778 + cmp sl, sb + beq _02308778 + ldrsh r1, [sl, #4] + ldrsh r0, [sb, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _02308778 + ldrsh r1, [sl, #6] + ldrsh r0, [sb, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _02308780 +_02308778: + mov r0, #0 + b _023087B4 +_02308780: + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xd + bne _023087A8 + mov r0, sb + mov r1, sl + bl ov29_022E5E84 + mov r0, sb + mov r1, sl + bl ov29_0231EDFC +_023087A8: + mov r0, sl + mov r1, sb + bl ov29_0230D654 +_023087B4: + cmp r0, #0 + movne r0, #1 + bne _02308F64 + ldrb r0, [r8, #0xd] + bl ov29_0231EA30 + mov r4, r0 + cmp sl, sb + mov r5, #0 + beq _02308808 + ldrsh r1, [sl, #4] + ldrsh r0, [sb, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _02308808 + ldrsh r1, [sl, #6] + ldrsh r0, [sb, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _02308810 +_02308808: + mov r0, #0 + b _02308A28 +_02308810: + add r0, sp, #0x2c + bl ResetDamageDesc + ldr r0, [sb, #0xb4] + cmp r4, #0 + ldrb r0, [r0, #0xd5] + bne _023088E4 + cmp r0, #4 + bne _0230883C + mov r0, sb + bl ov29_022E3F24 + add r5, r5, #4 +_0230883C: + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xa + bne _02308858 + mov r0, sb + bl ov29_022E3F24 + add r5, r5, #1 +_02308858: + mov r0, sb + mov r1, #0x20 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + mov r0, sb + mov r1, #0x23 + addne r5, r5, #4 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + mov r0, sb + mov r1, #0x31 + addne r5, r5, #1 + bl IqSkillIsEnabled + cmp r0, #0 + beq _023088B0 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F78 ; =0x022C44C0 + mov r0, r0, lsl #0x10 + ldrsh r1, [r1] + cmp r1, r0, asr #16 + addgt r5, r5, #4 +_023088B0: + mov r0, sb + mov r1, #0x27 + bl IqSkillIsEnabled + cmp r0, #0 + beq _023088F8 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F7C ; =0x022C4464 + mov r0, r0, lsl #0x10 + ldrsh r1, [r1] + cmp r1, r0, asr #16 + addgt r5, r5, #1 + b _023088F8 +_023088E4: + cmp r0, #8 + bne _023088F8 + mov r0, sb + bl ov29_022E40C0 + add r5, r5, #4 +_023088F8: + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xf + bne _02308914 + mov r0, sb + bl ov29_022E57D4 + add r5, r5, #2 +_02308914: + mov r0, sl + mov r1, sb + mov r2, #0x12 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + addne r5, r5, #2 + cmp r5, #0 + beq _02308A1C + ldr r2, _02308F80 ; =0x00000C3F + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, [r8] + mov r1, #6 + mul r2, r0, r5 + mov r0, r2, asr #1 + add r0, r2, r0, lsr #30 + mov r0, r0, asr #2 + str r0, [sp, #0x2c] + ldrb r2, [r8, #0xc] + mov r0, #2 + mov r3, #0 + strb r2, [sp, #0x38] + str r1, [sp, #0x30] + str r0, [sp, #0x34] + ldrb r0, [r8, #0xd] + strb r0, [sp, #0x39] + strb r3, [sp, #0x3a] + strb r3, [sp, #0x3b] + strb r3, [sp, #0x3c] + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xf + bne _023089FC + mov r2, #1 + add r1, sp, #0xc + mov r0, sb + strb r2, [sp, #0x39] + bl ov29_023380FC + mov fp, r0 + ldrsh r5, [sp, #0x6c] + mov r4, #0 + b _023089F0 +_023089C4: + str r7, [sp] + stmib sp, {r5, r6} + add r0, sp, #0xc + ldr r1, [r0, r4, lsl #2] + mov r0, sb + add r2, sp, #0x2c + mov r3, #0 + bl ApplyDamage + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_023089F0: + cmp r4, fp + blt _023089C4 + b _02308A1C +_023089FC: + ldrsh r0, [sp, #0x6c] + str r7, [sp] + add r2, sp, #0x2c + str r0, [sp, #4] + mov r0, sb + mov r1, sl + str r6, [sp, #8] + bl ApplyDamage +_02308A1C: + mov r0, sl + mov r1, sb + bl ov29_0230D654 +_02308A28: + cmp r0, #0 + movne r0, #1 + bne _02308F64 + cmp sl, sb + beq _02308A6C + ldrsh r1, [sl, #4] + ldrsh r0, [sb, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _02308A6C + ldrsh r1, [sl, #6] + ldrsh r0, [sb, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _02308A74 +_02308A6C: + mov r0, #0 + b _02308ECC +_02308A74: + ldrb r0, [r8, #0xd] + bl ov29_0231EA30 + mov r4, r0 + mov r0, sb + mov r1, #0xb + ldr r6, [sl, #0xb4] + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02308B04 + cmp r4, #0 + bne _02308B04 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F84 ; =0x022C45B4 + ldrsh r1, [r1] + cmp r0, r1 + bge _02308B04 + mov r0, #0x12c + bl DungeonRandInt + cmp r0, #0x64 + mov r2, #0xb + bge _02308AE0 + mov r0, sl + mov r1, sb + mov r3, #0x40 + bl ov29_0230F728 + b _02308B04 +_02308AE0: + cmp r0, #0xc8 + mov r0, sl + mov r1, sb + bge _02308AFC + mov r3, #0x10 + bl ov29_0230F728 + b _02308B04 +_02308AFC: + mov r3, #0x80 + bl ov29_0230F728 +_02308B04: + ldr r5, _02308F88 ; =0x023535DC + b _02308B54 +_02308B0C: + ldrb r1, [r5] + mov r0, sb + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02308B50 + ldr r3, [r5, #8] + mov r0, sl + mov r1, sb + mov r2, r4 + blx r3 + cmp r0, #0 + beq _02308B50 + ldrb r2, [r5] + ldr r3, [r5, #4] + mov r0, sl + mov r1, sb + bl ov29_0230F728 +_02308B50: + add r5, r5, #0x10 +_02308B54: + ldrb r0, [r5] + cmp r0, #0 + bne _02308B0C + mov r0, sb + mov r1, #0x1b + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02308BB0 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F8C ; =0x022C45B0 + ldrsh r1, [r1] + cmp r0, r1 + bge _02308BB0 + mov r0, sb + bl HasLowHealth + cmp r0, #0 + beq _02308BB0 + mov r0, sl + mov r1, sb + mov r2, #0x1b + mov r3, #0x40000 + bl ov29_0230F728 +_02308BB0: + mov r0, sl + mov r1, sb + mov r2, #5 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308C38 + ldrb r0, [r6, #0xf7] + mov r5, #0 + cmp r0, #1 + beq _02308C00 + mov r0, sl + mov r1, #0xa + bl ov29_02301EAC + cmp r0, #0 + bne _02308C00 + mov r0, sl + bl LevitateIsActive + cmp r0, #0 + beq _02308C0C +_02308C00: + bl GravityIsActive + cmp r0, #0 + moveq r5, #1 +_02308C0C: + cmp r5, #0 + bne _02308C38 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F90 ; =0x022C4564 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #1 + strlth r1, [r0, #0x92] +_02308C38: + mov r0, sl + mov r1, sb + mov r2, #0xa + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308C88 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F94 ; =0x022C468C + ldrsh r1, [r1] + cmp r0, r1 + bge _02308C88 + add r0, r6, #0x100 + ldrh r3, [r0, #0x92] + ldr r1, _02308F98 ; =0x0237CA6D + mov r2, #0 + orr r3, r3, #2 + strh r3, [r0, #0x92] + strb r2, [r1] +_02308C88: + mov r0, sl + mov r1, sb + mov r2, #0x17 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308CDC + mov r0, sl + mov r1, #0x11 + bl MonsterIsType + cmp r0, #0 + beq _02308CDC + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308F9C ; =0x022C4460 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #4 + strlth r1, [r0, #0x92] +_02308CDC: + mov r0, sl + mov r1, sb + mov r2, #0x20 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308D24 + cmp r4, #0 + bne _02308D24 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FA0 ; =0x022C4550 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #8 + strlth r1, [r0, #0x92] +_02308D24: + mov r0, sl + mov r1, sb + mov r2, #0x27 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308D64 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FA4 ; =0x022C45C0 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x20 + strlth r1, [r0, #0x92] +_02308D64: + mov r0, sl + mov r1, sb + mov r2, #0x3d + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308DE0 + cmp r4, #0 + bne _02308DE0 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FA8 ; =0x022C45AC + ldrsh r1, [r1] + cmp r0, r1 + bge _02308DE0 + mov r0, #3 + bl DungeonRandInt + cmp r0, #1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x40 + strlth r1, [r0, #0x92] + blt _02308DE0 + cmp r0, #2 + add r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x10 + strlth r1, [r0, #0x92] + ldrgeh r1, [r0, #0x92] + orrge r1, r1, #0x80 + strgeh r1, [r0, #0x92] +_02308DE0: + mov r0, sl + mov r1, sb + mov r2, #0x3e + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308E20 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FAC ; =0x022C467C + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x100 + strlth r1, [r0, #0x92] +_02308E20: + mov r0, sl + mov r1, sb + mov r2, #0x44 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308E80 + ldr r1, [sb, #0xb4] + ldrsh r0, [r6, #2] + ldrsh r1, [r1, #2] + bl sub_02054EC8 + cmp r0, #0 + beq _02308E80 + cmp r4, #0 + bne _02308E80 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FB0 ; =0x022C4524 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x200 + strlth r1, [r0, #0x92] +_02308E80: + mov r2, #1 + mov r0, sl + mov r1, sb + mov r3, r2 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02308EC0 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02308FB4 ; =0x022C4638 + ldrsh r1, [r1] + cmp r0, r1 + addlt r0, r6, #0x100 + ldrlth r1, [r0, #0x92] + orrlt r1, r1, #0x400 + strlth r1, [r0, #0x92] +_02308EC0: + mov r0, sl + mov r1, sb + bl ov29_0230D654 +_02308ECC: + cmp r0, #0 + movne r0, #1 + bne _02308F64 + ldr r0, [sb, #0xb4] + ldrb r1, [r0, #0xe0] + cmp r1, #2 + bne _02308F4C + ldr r1, _02308FB8 ; =0x02353538 + ldrb r2, [r0, #0xe8] + ldr r1, [r1] + add r1, r1, r2, lsl #2 + add r1, r1, #0x12000 + ldr r4, [r1, #0xb78] + cmp r4, #0 + moveq r1, #0 + streqb r1, [r0, #0xe0] + beq _02308F4C + ldr r1, [r4, #0xb4] + ldr r2, [r0, #0xe4] + ldr r1, [r1, #0xb0] + cmp r2, r1 + movne r1, #0 + strneb r1, [r0, #0xe0] + bne _02308F4C + mov r0, r4 + mov r1, sb + bl ov29_022E45D0 + ldr r1, [r8] + mov r0, r4 + mov r2, #0xc + mov r3, #0x238 + bl ov29_0230D11C +_02308F4C: + mov r0, sl + mov r1, sb + bl ov29_0230D654 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 +_02308F64: + cmp r0, #0 +_02308F68: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02308F70: .word 0x02352AEC +_02308F74: .word 0x022C442C +_02308F78: .word 0x022C44C0 +_02308F7C: .word 0x022C4464 +_02308F80: .word 0x00000C3F +_02308F84: .word 0x022C45B4 +_02308F88: .word 0x023535DC +_02308F8C: .word 0x022C45B0 +_02308F90: .word 0x022C4564 +_02308F94: .word 0x022C468C +_02308F98: .word 0x0237CA6D +_02308F9C: .word 0x022C4460 +_02308FA0: .word 0x022C4550 +_02308FA4: .word 0x022C45C0 +_02308FA8: .word 0x022C45AC +_02308FAC: .word 0x022C467C +_02308FB0: .word 0x022C4524 +_02308FB4: .word 0x022C4638 +_02308FB8: .word 0x02353538 + arm_func_end ov29_0230863C diff --git a/asm/overlay_29_02308FE0.s b/asm/overlay_29_02308FE0.s new file mode 100644 index 00000000..aef54e69 --- /dev/null +++ b/asm/overlay_29_02308FE0.s @@ -0,0 +1,6264 @@ + .include "asm/macros.inc" + .include "overlay_29_02308FE0.inc" + + .text + + arm_func_start ApplyDamage +ApplyDamage: ; 0x02308FE0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x64 + ldr r5, [sp, #0x8c] + mov sb, #0 + mov r6, r2 + mov r7, r1 + strb sb, [r6, #0x10] + ldr r1, [r7] + mov r8, r0 + str r3, [sp, #0x10] + mov fp, sb + str sb, [sp, #0x14] + cmp r1, #1 + bne _0230902C + ldr r0, [r7, #0xb4] + ldrb r0, [r0, #0xbc] + bl ov29_022EFB04 + cmp r0, #0 + beq _0230903C +_0230902C: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_0230903C: + ldr r4, [r7, #0xb4] + ldrb r0, [r4, #6] + cmp r0, #0 + beq _0230905C + ldrb r0, [r4, #8] + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #0x14] +_0230905C: + mov r0, r8 + mov r1, r7 + bl ov29_02307BDC + mov r0, r8 + mov r1, r7 + bl ov29_0230D440 + ldr r0, [r8] + cmp r0, #1 + ldreq r0, [r8, #0xb4] + ldreqb r0, [r0, #0xec] + cmpeq r0, #3 + ldreqb r0, [r6, #0xf] + cmpeq r0, #0 + ldreq r0, _02309F98 ; =0x022C4598 + ldreqsh r0, [r0] + streq r0, [r6] + ldr r0, [r8] + cmp r0, #1 + bne _02309134 + mov r0, r8 + mov r1, r7 + mov r2, #0x73 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + ldrne r0, [r6, #4] + cmpne r0, #4 + cmpne r0, #0xe + cmpne r0, #0 + cmpne r0, #0x17 + beq _023091A4 + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _02309F9C ; =0x00000C46 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _02309124 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _02309124 + mov r0, r8 + mov r1, r7 + bl ov29_022E576C +_02309124: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309134: + cmp r0, #6 + bne _023091A4 + mov r0, r7 + mov r1, #0x73 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, [r6, #4] + cmpne r0, #4 + cmpne r0, #0xe + cmpne r0, #0x17 + beq _023091A4 + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _02309F9C ; =0x00000C46 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _02309194 + mov r0, r7 + bl ov29_022E57A0 +_02309194: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_023091A4: + ldr r0, _02309FA0 ; =0x0000024D + cmp r5, r0 + beq _02309224 + ldr r0, [r8] + cmp r0, #1 + bne _02309224 + mov r0, r8 + mov r1, r7 + mov r2, #0xd + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02309224 + ldr r1, [r6] + ldr r0, _02309FA4 ; =0x0000270F + cmp r1, r0 + bne _02309224 + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + mov r1, r7 + mov r2, #0xc40 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r7 + bl ov29_022E576C + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309224: + ldrb r0, [r4, #0xc4] + cmp r0, #1 + bne _02309274 + cmp r5, #0x250 + beq _02309264 + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _02309FA8 ; =0x00000C41 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r7 + bl ov29_022E576C +_02309264: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309274: + ldrb r0, [r4, #0xbd] + cmp r0, #1 + cmpne r0, #5 + cmpne r0, #3 + bne _0230929C + ldrb r0, [r4, #0xbe] + cmp r0, #0x7f + bne _0230929C + mov r0, r7 + bl ov29_02307C48 +_0230929C: + ldr r0, [r8] + cmp r0, #1 + bne _023093D8 + mov r0, r8 + mov r1, r7 + mov r2, #0x23 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _023092F8 + ldrb r0, [r6, #0xc] + cmp r0, #5 + bne _023092F8 + mov r3, #0 + str r3, [sp] + ldr r2, [r6] + mov r0, r8 + mov r1, r7 + bl TryIncreaseHp + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_023092F8: + mov r0, r8 + mov r1, r7 + mov r2, #0x24 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02309348 + ldrb r0, [r6, #0xc] + cmp r0, #3 + bne _02309348 + mov r3, #0 + str r3, [sp] + ldr r2, [r6] + mov r0, r8 + mov r1, r7 + bl TryIncreaseHp + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309348: + mov r0, r8 + mov r1, r7 + mov r2, #0x55 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _02309398 + ldrb r0, [r6, #0xc] + cmp r0, #3 + bne _02309398 + mov r3, #0 + str r3, [sp] + ldr r2, [r6] + mov r0, r8 + mov r1, r7 + bl TryIncreaseHp + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309398: + mov r0, r8 + mov r1, r7 + mov r2, #0x66 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _023093D8 + ldrb r0, [r6, #0xc] + cmp r0, #5 + bne _023093D8 + mov r0, r7 + bl ov29_0231B060 + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_023093D8: + ldr sl, _02309FAC ; =0x023528A4 + b _0230944C +_023093E0: + ldrb r0, [r6, #0xc] + cmp r1, r0 + bne _02309448 + ldr r1, [sl, #4] + mov r0, r8 + and r2, r1, #0xff + str r2, [sp] + mov r2, #0 + mov r1, r7 + mov r3, r2 + bl ov29_02314D40 + cmp r0, #0 + beq _02309448 + ldr r0, [sl, #4] + cmp r0, #0x71 + mov r0, #1 + strleb r0, [r6, #0x10] + ble _02309440 + str r0, [sp] + ldr r2, [r6] + mov r0, r8 + mov r1, r7 + mov r3, #0 + bl TryIncreaseHp +_02309440: + mov r0, #0 + b _0230945C +_02309448: + add sl, sl, #8 +_0230944C: + ldrb r1, [sl] + cmp r1, #0x12 + bne _023093E0 + mov r0, #1 +_0230945C: + cmp r0, #0 + bne _023094D8 + ldrb r0, [r6, #0x10] + cmp r0, #0 + beq _023094C8 + ldr r0, [r8] + cmp r0, #1 + bne _023094AC + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _023094C8 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _023094C8 + mov r0, r8 + mov r1, r7 + bl ov29_022FB98C + b _023094C8 +_023094AC: + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _023094C8 + mov r0, r8 + mov r1, r7 + bl ov29_022FB98C +_023094C8: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_023094D8: + ldr r0, [r6] + cmp r0, #0 + ble _02309520 + mov r0, r7 + mov r1, #0x51 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02309520 + ldr r0, _02309FB0 ; =0x022C45C4 + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _02309520 + mov r0, r7 + mov r1, r7 + mov r2, #1 + mov r3, #0 + bl ov29_02317E88 +_02309520: + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _023095A0 + ldrb r0, [r6, #0xe] + cmp r0, #0 + beq _02309548 + ldr r2, _02309FB4 ; =0x00000C42 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02309548: + ldr r0, [r6, #8] + cmp r0, #0 + beq _02309568 + cmp r0, #1 + beq _0230957C + cmp r0, #3 + beq _02309590 + b _023095A0 +_02309568: + ldr r2, _02309FB8 ; =0x00000C43 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _023095A0 +_0230957C: + ldr r2, _02309FBC ; =0x00000C44 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _023095A0 +_02309590: + ldr r2, _02309FC0 ; =0x00000C45 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_023095A0: + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, [r6] + cmp r1, #0 + bne _02309650 + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _02309618 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _02309618 + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _02309608 + ldr r2, _02309FC4 ; =0x00000C47 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02309608: + mov r0, r8 + mov r1, r7 + bl ov29_022E576C + b _02309640 +_02309618: + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _02309634 + ldr r2, _02309FC4 ; =0x00000C47 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02309634: + mov r0, #0x1e + mov r1, #0x18 + bl ov29_022EA370 +_02309640: + mov r0, #1 + strb r0, [r6, #0x10] + mov r0, #0 + b _0230A918 +_02309650: + ldr r0, _02309FA4 ; =0x0000270F + cmp r1, r0 + bne _02309740 + ldr r0, [sp, #0x90] + cmp r0, #0 + beq _02309718 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _02309718 + mov r0, r7 + bl GetTileAtEntity + mov r2, #0 + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + add r1, r1, #0x2b4 + str r2, [sp, #8] + str r2, [sp, #0xc] + mov fp, r0 + mov r0, r7 + mov r3, #3 + bl ov29_022E35E4 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 + mvn r1, #0 + cmp sl, r1 + ldr r0, _02309FC8 ; =0x023535D4 + strh r1, [r0] + beq _02309718 + b _023096D4 +_023096CC: + mov r0, #0x18 + bl AdvanceFrame +_023096D4: + mov r0, sl + bl ov10_022BF964 + cmp r0, #0 + bne _023096CC + mov r0, sl + bl ov10_022BDE50 + mov r2, #0 + str r2, [sp] + mov r0, #1 + stmib sp, {r0, r2} + ldr r1, _02309FCC ; =0x000002B6 + mov r0, r7 + mov r3, #3 + str r2, [sp, #0xc] + bl ov29_022E35E4 + ldr r1, _02309FC8 ; =0x023535D4 + strh r0, [r1] +_02309718: + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _02309734 + ldr r2, _02309FD0 ; =0x00000C48 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02309734: + ldr r0, _02309FD4 ; =0x000003E7 + str r0, [r4, #0xb8] + b _02309808 +_02309740: + mov r0, #0 + bl ov29_0234B09C + ldr r1, [r6, #4] + ldr r2, [r4, #0xb8] + cmp r1, #0x1b + ldrlt r0, _02309FD8 ; =0x02353330 + movge sl, #0 + movlt r1, r1, lsl #1 + ldrlth sl, [r0, r1] + ldr r1, [r6] + ldr r0, _02309FD4 ; =0x000003E7 + add r1, r2, r1 + str r1, [r4, #0xb8] + cmp r1, r0 + strgt r0, [r4, #0xb8] + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _023097E4 + ldr r0, [r6, #4] + cmp r0, #0xe + cmpne r0, #0x17 + ldrne r0, _02309FDC ; =0x0000025F + cmpne r5, r0 + beq _023097BC + ldr r0, [r6] + mov r2, #1 + mov r1, r7 + rsb r0, r0, #0 + sub r3, r2, #2 + bl ov29_022EA718 +_023097BC: + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _02309808 + cmp sl, #0 + beq _02309808 + mov r0, r8 + mov r1, r7 + mov r2, sl + bl LogMessageByIdWithPopupCheckUserTarget + b _02309808 +_023097E4: + ldrb r0, [r4, #0x15c] + cmp r0, #0 + bne _02309808 + cmp sl, #0 + beq _02309808 + mov r0, r8 + mov r1, r7 + mov r2, sl + bl LogMessageByIdWithPopupCheckUserTarget +_02309808: + ldr r0, [r6, #4] + cmp r0, #0xe + bne _02309820 + ldrsh r0, [r4, #0x10] + cmp r0, #1 + bgt _0230991C +_02309820: + cmp fp, #0 + bne _0230991C + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _0230991C + ldrsh r1, [r8, #4] + ldrsh r0, [r7, #4] + cmp r1, r0 + ldreqsh r1, [r8, #6] + ldreqsh r0, [r7, #6] + cmpeq r1, r0 + beq _023098EC + ldr r0, [r8] + cmp r0, #1 + bne _023098EC + ldrb r0, [r4, #7] + mov sl, #0 + cmp r0, #0 + beq _023098A0 + bl sub_0204AF00 + cmp r0, #0 + beq _023098A0 + mov r0, r7 + bl ov29_022F9AF4 + cmp r0, #0 + bne _023098A0 + mov r0, r7 + mov r1, r8 + bl ov29_022E274C + cmp r0, #0 + movne sl, #1 +_023098A0: + ldrb r0, [r4, #0xf1] + cmp r0, #2 + beq _023098C0 + mov r0, r7 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + beq _023098C4 +_023098C0: + mov sl, #0 +_023098C4: + cmp sl, #0 + beq _023098E4 + add r0, r7, #4 + add r1, r8, #4 + ldr sl, [r7, #0xb4] + bl GetDirectionTowardsPosition + and r0, r0, #7 + strb r0, [sl, #0x4c] +_023098E4: + mov r0, r7 + bl UpdateAiTargetPos +_023098EC: + ldr r0, _02309FDC ; =0x0000025F + cmp r5, r0 + beq _0230991C + ldr r1, [r7, #0xb4] + mov r0, r7 + ldrb r2, [r1, #0x4c] + mov r1, #6 + bl ov29_023049A8 + mov r0, r7 + mov r1, r6 + bl ov29_022E5478 + mov sb, #1 +_0230991C: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _0230995C + ldr r0, [r6] + cmp r0, #0 + ble _0230995C + ldr r0, [r8] + cmp r0, #1 + ldreq r0, [r8, #0xb4] + ldreqb r0, [r0, #6] + cmpeq r0, #0 + bne _0230995C + ldrsh r0, [r4, #2] + bl SetMonsterFlag2 + ldrsh r0, [r4, #2] + bl SetPokemonBattled +_0230995C: + ldrsh sl, [r4, #0x10] + ldr r0, [r6] + cmp sl, r0 + subgt r0, sl, r0 + movle r0, #0 + strh r0, [r4, #0x10] + ldrb r0, [r4, #0xd5] + cmp r0, #9 + bne _023099A8 + ldrsh r0, [r4, #0x10] + cmp r0, #0 + bne _02309A28 + ldr r2, _02309FE0 ; =0x00000C49 + mov r3, #1 + mov r0, r8 + mov r1, r7 + strh r3, [r4, #0x10] + bl LogMessageByIdWithPopupCheckUserTarget + b _02309A28 +_023099A8: + ldr r0, [sp, #0x10] + cmp r0, #1 + bne _023099DC + ldrsh r0, [r4, #0x10] + cmp r0, #0 + bne _02309A28 + ldr r2, _02309FE4 ; =0x00000C4A + mov r3, #1 + mov r0, r8 + mov r1, r7 + strh r3, [r4, #0x10] + bl LogMessageByIdWithPopupCheckUserTarget + b _02309A28 +_023099DC: + mov r0, r7 + mov r1, #0x22 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02309A28 + ldr r0, _02309FE8 ; =0x022C4834 + ldr r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _02309A28 + ldrsh r0, [r4, #0x10] + cmp r0, #0 + bne _02309A28 + ldr r2, _02309FE0 ; =0x00000C49 + mov r3, #1 + mov r0, r8 + mov r1, r7 + strh r3, [r4, #0x10] + bl LogMessageByIdWithPopupCheckUserTarget +_02309A28: + bl ov29_022E81F8 + ldrsh r0, [r4, #0x10] + subs sl, sl, r0 + movmi sl, #0 + cmp sb, #0 + cmpeq fp, #0 + beq _02309A50 + mov r0, #0xa + mov r1, #0x18 + bl ov29_022EA370 +_02309A50: + mov r0, r7 + bl UpdateStatusIconFlags + ldrsh r0, [r4, #0x10] + cmp r0, #0 + beq _02309B20 + cmp sb, #0 + beq _02309A78 + mov r0, r7 + mov r1, #8 + bl ov29_02304A48 +_02309A78: + ldr r0, [r6, #4] + cmp r0, #0xe + beq _02309B04 + mov r0, r7 + mov r1, #0x17 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _02309AC4 + cmp sl, #0 + ble _02309AC4 + ldr r1, [r6] + ldr r0, _02309FA4 ; =0x0000270F + cmp r1, r0 + beq _02309AC4 + ldr r1, _02309FEC ; =0x022C45FC + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl AddExpSpecial +_02309AC4: + mov r0, r7 + mov r1, #0x50 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _02309B04 + cmp sl, #0 + ble _02309B04 + ldr r1, [r6] + ldr r0, _02309FA4 ; =0x0000270F + cmp r1, r0 + beq _02309B04 + ldr r1, _02309FEC ; =0x022C45FC + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl AddExpSpecial +_02309B04: + cmp fp, #0 + beq _02309B18 + mov r0, r7 + bl ov29_0230D7D4 + bl ov29_02336F4C +_02309B18: + mov r0, #0 + b _0230A918 +_02309B20: + ldr r0, _02309FDC ; =0x0000025F + cmp r5, r0 + bne _02309B5C + ldr r1, [r7, #0xb4] + mov r0, r7 + ldrb r2, [r1, #0x4c] + mov r1, #6 + bl ov29_023049A8 + mov r0, r7 + mov r1, r6 + bl ov29_022E5478 + mov r0, #0xa + mov r1, #0x18 + bl ov29_022EA370 + mov sb, #1 +_02309B5C: + ldrb r0, [r4, #0xef] + cmp r0, #2 + bne _02309B78 + mov r0, r8 + mov r1, r7 + mov r2, #0 + bl ov29_02306A00 +_02309B78: + cmp fp, #0 + beq _02309BA4 + mov r0, #0x14 + mov r1, #0x18 + bl ov29_022EA370 + mov r1, #2 + mov r0, r7 + strb r1, [r7, #0x22] + bl ov29_0230D7D4 + bl ov29_02336F4C + b _02309BC0 +_02309BA4: + cmp sb, #0 + beq _02309BC0 + mov r2, #1 + mov r0, #0x1e + mov r1, #0x18 + strb r2, [r7, #0x22] + bl ov29_022EA370 +_02309BC0: + mov r0, r8 + mov sb, #1 + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _02309BE8 + ldr r0, [r8] + cmp r0, #1 + bne _02309BE8 + cmp r8, r7 + movne sb, #0 +_02309BE8: + mov r0, #0 + mov r1, r8 + mov r2, r0 + strb r0, [r4, #0x156] + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r0, [r6, #4] + cmp r0, #0x13 + cmpne r0, #4 + cmpne r0, #0x14 + ldrb r0, [r4, #6] + bne _02309C50 + cmp r0, #0 + beq _02309C40 + ldr r2, _02309FF0 ; =0x00000C4B + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02309DC8 +_02309C40: + ldr r1, _02309FF0 ; =0x00000C4B + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309C50: + cmp r0, #0 + beq _02309C98 + ldrb r0, [r4, #0xbc] + cmp r0, #7 + bne _02309C7C + ldr r0, _02309FF4 ; =0x02353220 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309C7C: + ldr r0, _02309FF8 ; =0x0235321C + mov r1, sb, lsl #1 + ldrh r2, [r0, r1] + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02309DC8 +_02309C98: + ldrsh r0, [r4, #0xc] + bl GetActiveTeamMember + ldrb r1, [r4, #7] + mov r6, r0 + cmp r1, #0 + bne _02309CD4 + ldrb r0, [r4, #0x48] + bl JoinedAtRangeCheck2Veneer + cmp r0, #0 + beq _02309CEC + ldr r0, _02309FFC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75c] + cmp r0, #0 + bne _02309CEC +_02309CD4: + ldr r0, _0230A000 ; =0x02353228 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309CEC: + mov r0, r4 + bl IsExperienceLocked + cmp r0, #0 + beq _02309D3C + mov r0, r4 + bl IsSpecialStoryAlly + cmp r0, #0 + beq _02309D24 + ldr r0, _0230A004 ; =0x02353234 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309D24: + ldr r0, _0230A008 ; =0x0235322C + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309D3C: + ldrb r0, [r4, #0xbc] + cmp r0, #7 + bne _02309D60 + ldr r0, _02309FF4 ; =0x02353220 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309D60: + ldrsh r0, [r6, #8] + bl IsMonsterIdInNormalRange__022F9C68 + cmp r0, #0 + beq _02309DB4 + ldr r0, _02309FFC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75d] + cmp r0, #0 + beq _02309D9C + ldr r0, _0230A00C ; =0x02353224 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309D9C: + ldr r0, _0230A010 ; =0x02353230 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup + b _02309DC8 +_02309DB4: + ldr r0, _0230A014 ; =0x02353218 + mov r1, sb, lsl #1 + ldrh r1, [r0, r1] + mov r0, r8 + bl LogMessageByIdWithPopup +_02309DC8: + ldrb r0, [r4, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _02309DE4 + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters +_02309DE4: + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _02309F44 + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _02309F44 + ldrb r0, [r4, #0x62] + tst r0, #2 + ldreqsh r1, [r4, #0x66] + ldreq r0, _0230A018 ; =0x00000153 + cmpeq r1, r0 + bne _02309F44 + mov r0, r7 + bl ov29_022E550C + mov r0, #0 + strb r0, [r7, #0x22] + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02309FD4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r4, #0x10] + mov r2, #0 + strb r2, [r4, #0x162] + mov r0, #1 + strb r0, [r4, #0x156] + add r0, r4, #0x100 + ldrh r1, [r0, #0x4a] + strh r1, [r0, #0x46] + ldrh r1, [r0, #0x4c] + strh r1, [r0, #0x48] + ldrb r0, [r4, #7] + cmp r0, #0 + ldrne r0, _02309FFC ; =0x02353538 + ldrne r1, [r0] + strneb r2, [r1, #0x799] + ldrne r0, [r0] + strneb r2, [r0, #0x78d] + add r0, r4, #0x62 + bl ItemZInit + ldrb r0, [r4, #0xd8] + cmp r0, #3 + bne _02309EC0 + mov r0, r8 + mov r1, r7 + mov r2, #3 + mov r3, #1 + bl ov29_02306728 + b _02309EDC +_02309EC0: + cmp r0, #2 + bne _02309EDC + mov r0, r8 + mov r1, r7 + mov r2, #2 + mov r3, #1 + bl ov29_02306728 +_02309EDC: + mov r0, r7 + bl ov29_023159D4 + mov r0, r4 + mov r1, #0 + bl ov29_022FDDC0 + bl ov10_022BDC68 + mov r0, r7 + bl RestorePpAllMovesSetFlags + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, #1 + mov r1, r7 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + ldr r1, _0230A01C ; =0x00000C4C + bl LogMessageByIdWithPopup + mov r0, r7 + bl ov29_0230D628 + mov r0, #0 + b _0230A918 +_02309F44: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0230A224 + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _0230A224 + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldreqsh r1, [r4, #0x66] + ldreq r0, _0230A020 ; =0x00000159 + cmpeq r1, r0 + bne _0230A224 + mov sl, #0 + mov sb, sl + ldr r6, _02309FFC ; =0x02353538 + b _0230A090 + .align 2, 0 +_02309F98: .word 0x022C4598 +_02309F9C: .word 0x00000C46 +_02309FA0: .word 0x0000024D +_02309FA4: .word 0x0000270F +_02309FA8: .word 0x00000C41 +_02309FAC: .word 0x023528A4 +_02309FB0: .word 0x022C45C4 +_02309FB4: .word 0x00000C42 +_02309FB8: .word 0x00000C43 +_02309FBC: .word 0x00000C44 +_02309FC0: .word 0x00000C45 +_02309FC4: .word 0x00000C47 +_02309FC8: .word 0x023535D4 +_02309FCC: .word 0x000002B6 +_02309FD0: .word 0x00000C48 +_02309FD4: .word 0x000003E7 +_02309FD8: .word 0x02353330 +_02309FDC: .word 0x0000025F +_02309FE0: .word 0x00000C49 +_02309FE4: .word 0x00000C4A +_02309FE8: .word 0x022C4834 +_02309FEC: .word 0x022C45FC +_02309FF0: .word 0x00000C4B +_02309FF4: .word 0x02353220 +_02309FF8: .word 0x0235321C +_02309FFC: .word 0x02353538 +_0230A000: .word 0x02353228 +_0230A004: .word 0x02353234 +_0230A008: .word 0x0235322C +_0230A00C: .word 0x02353224 +_0230A010: .word 0x02353230 +_0230A014: .word 0x02353218 +_0230A018: .word 0x00000153 +_0230A01C: .word 0x00000C4C +_0230A020: .word 0x00000159 +_0230A024: + ldr r0, [r6] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb28] + mov r0, sl + bl EntityIsValid__02308FBC + cmp r0, #0 + cmpne sl, r7 + beq _0230A08C + mov r0, r7 + mov r1, sl + bl ov29_022E274C + cmp r0, #0 + beq _0230A08C + ldrsh r1, [sl, #4] + ldrsh r0, [r7, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _0230A08C + ldrsh r1, [sl, #6] + ldrsh r0, [r7, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _0230A098 +_0230A08C: + add sb, sb, #1 +_0230A090: + cmp sb, #4 + blt _0230A024 +_0230A098: + cmp sb, #4 + beq _0230A224 + mov r0, r7 + bl ov29_022E550C + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrh r2, [sl, #4] + ldrh r1, [sl, #6] + mov r0, sl + strh r2, [sp, #0x18] + strh r1, [sp, #0x1a] + mov r2, r7 + mov r1, #0x260 + bl HandleFaint + ldrsh r1, [sp, #0x18] + ldrsh r2, [sp, #0x1a] + mov r0, r7 + mov r3, #1 + bl ov29_022F85F0 + mov r0, r7 + mov r1, #0 + bl ov29_022E1A40 + mov r0, #0 + strb r0, [r7, #0x22] + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02309FD4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r7 + strh r1, [r4, #0x10] + bl ov29_022E66D8 + mov r2, #0 + strb r2, [r4, #0x162] + mov r0, #1 + strb r0, [r4, #0x156] + add r0, r4, #0x100 + ldrh r1, [r0, #0x4a] + strh r1, [r0, #0x46] + ldrh r1, [r0, #0x4c] + strh r1, [r0, #0x48] + ldrb r0, [r4, #7] + cmp r0, #0 + ldrne r0, _02309FFC ; =0x02353538 + ldrne r1, [r0] + strneb r2, [r1, #0x799] + ldrne r0, [r0] + strneb r2, [r0, #0x78d] + add r0, r4, #0x62 + bl ItemZInit + ldrb r0, [r4, #0xd8] + cmp r0, #3 + bne _0230A190 + mov r0, r8 + mov r1, r7 + mov r2, #3 + mov r3, #1 + bl ov29_02306728 + b _0230A1AC +_0230A190: + cmp r0, #2 + bne _0230A1AC + mov r0, r8 + mov r1, r7 + mov r2, #2 + mov r3, #1 + bl ov29_02306728 +_0230A1AC: + mov r0, r7 + bl ov29_023159D4 + mov r0, r4 + mov r1, #0 + bl ov29_022FDDC0 + bl ov10_022BDC68 + mov r0, r7 + bl RestorePpAllMovesSetFlags + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, sl + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + ldr r1, _0230A920 ; =0x00000C4D + bl LogMessageByIdWithPopup + mov r0, r7 + bl ov29_0230D628 + mov r0, #0 + b _0230A918 +_0230A224: + mov r0, r7 + mov r1, #0x16 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230A5E0 + ldrb r0, [r4, #0x62] + mov r6, #0 + mov sb, r6 + tst r0, #1 + movne r0, #1 + moveq r0, r6 + tst r0, #0xff + beq _0230A29C + mov r0, r7 + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + bne _0230A29C + ldrb r0, [r4, #0x62] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0230A29C + ldrsh r0, [r4, #0x66] + cmp r0, #0x49 + addeq r6, r4, #0x62 + beq _0230A29C + cmp r0, #0x69 + addeq sb, r4, #0x62 +_0230A29C: + cmp r6, #0 + ldreqb r0, [r4, #6] + cmpeq r0, #0 + bne _0230A330 + ldr r0, _0230A924 ; =0x020AF6B8 + mov sl, #0 + ldr ip, [r0] + mov lr, sl + mov r1, #1 + mov r0, #6 + b _0230A328 +_0230A2C8: + mul r2, sl, r0 + ldr r3, [ip, #0x384] + add fp, r3, r2 + ldrb r2, [r3, r2] + tst r2, #1 + movne r3, r1 + moveq r3, lr + tst r3, #0xff + beq _0230A324 + tst r2, #8 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + ldreqb r2, [fp, #1] + cmpeq r2, #0 + bne _0230A324 + ldrsh r2, [fp, #4] + cmp r2, #0x49 + moveq r6, fp + beq _0230A330 + cmp sb, #0 + cmpeq r2, #0x69 + moveq sb, fp +_0230A324: + add sl, sl, #1 +_0230A328: + cmp sl, #0x32 + blt _0230A2C8 +_0230A330: + cmp r6, #0 + beq _0230A45C + mov r0, r7 + bl ov29_022FBD24 + mov r0, r7 + bl ov29_022E550C + mov r0, r6 + bl ov29_0230D688 + mov r0, #0 + strb r0, [r7, #0x22] + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02309FD4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [r4, #0x10] + mov r2, #0 + strb r2, [r4, #0x162] + mov r0, #1 + strb r0, [r4, #0x156] + add r0, r4, #0x100 + ldrh r1, [r0, #0x4a] + strh r1, [r0, #0x46] + ldrh r1, [r0, #0x4c] + strh r1, [r0, #0x48] + ldrb r0, [r4, #7] + cmp r0, #0 + ldrne r0, _02309FFC ; =0x02353538 + ldrne r1, [r0] + strneb r2, [r1, #0x799] + ldrne r0, [r0] + strneb r2, [r0, #0x78d] + ldrb r0, [r4, #0xd8] + cmp r0, #3 + bne _0230A3D8 + mov r0, r8 + mov r1, r7 + mov r2, #3 + mov r3, #1 + bl ov29_02306728 + b _0230A3F4 +_0230A3D8: + cmp r0, #2 + bne _0230A3F4 + mov r0, r8 + mov r1, r7 + mov r2, #2 + mov r3, #1 + bl ov29_02306728 +_0230A3F4: + mov r0, r7 + bl ov29_023159D4 + mov r0, r4 + mov r1, #0 + bl ov29_022FDDC0 + bl ov10_022BDC68 + mov r0, r7 + bl RestorePpAllMovesSetFlags + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, #1 + mov r1, r7 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + ldr r1, _0230A01C ; =0x00000C4C + bl LogMessageByIdWithPopup + mov r0, r7 + bl ov29_0230D628 + mov r0, #0 + b _0230A918 +_0230A45C: + ldr r0, _02309FFC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0230A5E0 + cmp sb, #0 + beq _0230A5E0 + bl ov29_022EAF20 + ldrb r1, [r4, #0xd8] + mov r6, r0 + cmp r1, #2 + bne _0230A4A0 + ldrb r2, [r4, #0xd8] + mov r0, r7 + mov r1, r7 + mov r3, #0 + bl ov29_02306728 +_0230A4A0: + mov r0, #0 + mov r1, #0x69 + bl ov29_02344B9C + mov r0, #1 + mov r1, #0x49 + bl ov29_02344B9C + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + bl ov29_022EFB20 + mov r0, r7 + bl ov29_022E550C + mov r0, sb + bl ov29_0230D688 + mov r0, #0 + strb r0, [r7, #0x22] + mov r0, #1 + strb r0, [r4, #0x23d] + mov r0, r7 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r7 + bl ov29_02304830 + mov r0, #1 + mov r1, r7 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + ldr r1, _0230A01C ; =0x00000C4C + bl LogMessageByIdWithPopup + mov r0, #0xa + bl ov29_0234BA54 + mov r0, #0 + bl ov29_0234B1A4 + mov r0, #1 + bl ov29_022F0534 + ldr r0, _0230A928 ; =0x00000C6A + bl ov29_022F0780 + mov r0, r7 + mov r1, #0xb + bl ov29_02304830 + ldr r0, _0230A92C ; =0x00000C6B + mov r1, r7 + mov r2, #0 + bl ov29_022F0604 + mov r0, #4 + bl ov29_022EAF34 + mov r0, r7 + bl ov29_022F0518 + mov r0, r7 + mov r1, #6 + bl ov29_02304830 + ldr r0, _0230A930 ; =0x00000C6C + bl ov29_022F0780 + bl ov29_022F05E4 + mov r0, #1 + bl ov29_022EFB84 + mov r0, #1 + strb r0, [r7, #0x22] + mov r0, #0 + strb r0, [r4, #0x23d] + mov r0, r8 + ldr r1, _0230A934 ; =0x00000C6D + bl LogMessageByIdWithPopup + mov r0, #0xa + bl ov29_0234BA54 + mov r0, #0 + bl ov29_022F0534 + ldr r0, _02309FFC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd6] + bl ov29_022EAD00 + bl ov29_022EAE14 + mov r0, r6 + bl ov29_022EAF34 + mov r0, r7 + bl ov29_0230D628 +_0230A5E0: + ldrb r0, [r4, #7] + cmp r0, #0 + bne _0230A69C + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230A690 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _0230A67C + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _0230A648 + mov r0, r4 + bl ov29_022FBDE0 + cmp r0, #0 + beq _0230A648 + ldrb r0, [r4, #0x62] + tst r0, #0x40 + bicne r1, r0, #0x40 + andne r0, r1, #0xff + orrne r0, r0, #0x80 + strneb r0, [r4, #0x62] +_0230A648: + mov r0, r7 + add r1, r7, #4 + add r2, r4, #0x62 + mov r3, #1 + bl ov29_02345A3C + cmp r0, #0 + beq _0230A684 + ldrb r0, [r4, #0x62] + tst r0, #0x80 + beq _0230A684 + mov r0, #1 + bl ov29_0234969C + b _0230A684 +_0230A67C: + add r0, r4, #0x62 + bl sub_0200FB54 +_0230A684: + add r0, r4, #0x62 + bl ItemZInit + b _0230A69C +_0230A690: + mov r0, r8 + mov r1, r7 + bl ov29_0230F9D8 +_0230A69C: + ldrb r0, [r4, #0x100] + mov r6, #0 + cmp r0, #0 + ldrne r0, _02309FFC ; =0x02353538 + ldrne r1, _02309FD4 ; =0x000003E7 + ldrne r0, [r0] + addne r0, r0, #0x700 + strneh r1, [r0, #0x96] + ldr r0, [r8] + cmp r0, #1 + bne _0230A7FC + ldrsh r0, [r4, #2] + ldrb r1, [r4, #0xa] + ldr sl, [r8, #0xb4] + bl GetExp + mov sb, r0 + mov r0, r4 + bl ov29_02303E0C + cmp r0, #0 + bne _0230A7FC + ldrb r0, [r4, #0x100] + cmp r0, #0 + beq _0230A714 + add r0, r4, #0x100 + ldrsh r2, [r0, #0x68] + mov r0, #0xc + ldr r1, _0230A938 ; =0x022C593C + smulbb r0, r2, r0 + ldrsh sb, [r1, r0] + b _0230A740 +_0230A714: + ldrb r0, [r4, #0x108] + cmp r0, #0 + addeq r0, sb, sb, lsr #31 + moveq sb, r0, asr #1 + beq _0230A738 + cmp r0, #2 + addeq r0, sb, sb, lsl #1 + addeq r0, r0, r0, lsr #31 + moveq sb, r0, asr #1 +_0230A738: + cmp sb, #0 + moveq sb, #1 +_0230A740: + ldrb r0, [r4, #0xfd] + cmp r0, #0 + movne r0, #1 + strneb r0, [sl, #0x155] + ldr r0, [sp, #0x88] + cmp r0, #1 + bne _0230A7FC + ldrb r0, [sl, #6] + cmp r0, #0 + bne _0230A7D4 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _0230A7FC + mov r0, r8 + mov r1, r8 + mov r2, sb + bl AddExpSpecial + ldr r6, _02309FFC ; =0x02353538 + mov r4, #0 +_0230A78C: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb28] + mov r0, sl + bl EntityIsValid__02308FBC + cmp r0, #0 + cmpne sl, r8 + beq _0230A7C0 + mov r0, r8 + mov r1, sl + mov r2, sb + bl AddExpSpecial +_0230A7C0: + add r4, r4, #1 + cmp r4, #4 + blt _0230A78C + mov r6, #1 + b _0230A7FC +_0230A7D4: + ldr r0, _02309FFC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl CanEnemyEvolve + cmp r0, #0 + movne r1, #1 + ldrne r0, _02309FFC ; =0x02353538 + strneb r1, [sl, #0x153] + ldrne r0, [r0] + strneb r1, [r0, #0xf] +_0230A7FC: + mov r0, r8 + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _0230A824 + ldr r0, [r8] + cmp r0, #1 + ldreq r0, [r8, #0xb4] + ldreqb r0, [r0, #7] + cmpeq r0, #0 + moveq r6, #0 +_0230A824: + cmp r6, #0 + beq _0230A8CC + add r0, sp, #0x1c + mov r1, r7 + bl ov29_022F9058 + mov r0, r8 + mov r1, r7 + bl ov29_0230DBD0 + cmp r0, #0 + beq _0230A8A8 + add r2, sp, #0x1c + mov r0, r8 + mov r1, r7 + bl ov29_0230E064 + cmp r0, #0 + bne _0230A898 + mov r0, r7 + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _0230A8F4 + mov r0, r8 + mov r1, r7 + mov r2, r5 + bl ov29_0230AA0C + mov r0, r7 + mov r2, r8 + mov r1, #0x234 + bl HandleFaint + b _0230A8F4 +_0230A898: + ldr r0, _0230A93C ; =0x0237CA6C + mov r1, #1 + strb r1, [r0] + b _0230A8F4 +_0230A8A8: + mov r0, r8 + mov r1, r7 + mov r2, r5 + bl ov29_0230AA0C + mov r0, r7 + mov r1, r5 + mov r2, r8 + bl HandleFaint + b _0230A8F4 +_0230A8CC: + mov r0, r8 + mov r1, r7 + mov r2, r5 + bl ov29_0230AA0C + mov r0, r8 + bl ov29_022ECD84 + mov r0, r7 + mov r1, r5 + mov r2, r8 + bl HandleFaint +_0230A8F4: + ldr r0, _0230A93C ; =0x0237CA6C + ldrb r0, [r0] + cmp r0, #0 + bne _0230A914 + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0230A914 + bl ov29_0233847C +_0230A914: + mov r0, #1 +_0230A918: + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230A920: .word 0x00000C4D +_0230A924: .word 0x020AF6B8 +_0230A928: .word 0x00000C6A +_0230A92C: .word 0x00000C6B +_0230A930: .word 0x00000C6C +_0230A934: .word 0x00000C6D +_0230A938: .word 0x022C593C +_0230A93C: .word 0x0237CA6C + arm_func_end ApplyDamage + + arm_func_start DefenderAbilityIsActive__0230A940 +DefenderAbilityIsActive__0230A940: ; 0x0230A940 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r7, r6 + beq _0230A984 + bl IsMonster__0230A994 + cmp r0, #0 + cmpne r4, #0 + beq _0230A984 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_0230A984: + mov r0, r6 + mov r1, r5 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end DefenderAbilityIsActive__0230A940 + + arm_func_start IsMonster__0230A994 +IsMonster__0230A994: ; 0x0230A994 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__0230A994 + + arm_func_start ExclusiveItemEffectIsActive__0230A9B8 +ExclusiveItemEffectIsActive__0230A9B8: ; 0x0230A9B8 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__0230A9B8 + + arm_func_start ItemIsActive__0230A9DC +ItemIsActive__0230A9DC: ; 0x0230A9DC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__0230A9DC + + arm_func_start ov29_0230AA0C +ov29_0230AA0C: ; 0x0230AA0C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r2 + mov r2, #0x76 + mov r3, #1 + mov r6, r0 + mov r5, r1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230AA78 + ldr r0, _0230AA84 ; =0x022C4594 + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + ldrne ip, _0230AA88 ; =0x0000026F + cmpne r4, ip + beq _0230AA78 + mov r0, #0 + str r0, [sp] + mov r0, r6 + mov r1, r5 + add r2, r5, #4 + mov r3, #1 + str ip, [sp, #4] + bl ov29_02320788 + mov r0, #1 + b _0230AA7C +_0230AA78: + mov r0, #0 +_0230AA7C: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230AA84: .word 0x022C4594 +_0230AA88: .word 0x0000026F + arm_func_end ov29_0230AA0C + + arm_func_start ov29_0230AA8C +ov29_0230AA8C: ; 0x0230AA8C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r3, _0230AB4C ; =0x02352838 + mov sl, r0 + ldrh r4, [r3] + ldrh r3, [r3, #2] + mov sb, r1 + mov r8, r2 + strh r4, [sp] + strh r3, [sp, #2] + bl ov29_0230AB58 + ldr fp, _0230AB50 ; =0x02353538 + mov r7, r0 + mov r6, #0 + mov r5, #1 + add r4, sp, #0 +_0230AAC8: + cmp r7, #0 + bne _0230AB04 + mov r0, r8 + bl ov29_0230ABF0 + cmp r0, #0 + beq _0230AB04 + mov r0, sl + mov r1, sb + mov r2, r6 + bl ov29_0230AC04 + cmp r0, #0 + ldrne r1, [fp] + movne r0, #0 + strneb r5, [r1, #0x1d4] + bne _0230AB18 +_0230AB04: + mov r0, sl + mov r1, sb + mov r2, r6 + mov r3, r8 + bl GetTypeMatchup +_0230AB18: + add r1, r6, #1 + mov r1, r1, lsl #0x10 + mov r2, r6, lsl #1 + mov r6, r1, asr #0x10 + strh r0, [r4, r2] + cmp r6, #2 + blt _0230AAC8 + ldrsh r2, [sp] + ldr r0, _0230AB54 ; =0x022C4D14 + ldrsh r1, [sp, #2] + add r0, r0, r2, lsl #4 + ldr r0, [r0, r1, lsl #2] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230AB4C: .word 0x02352838 +_0230AB50: .word 0x02353538 +_0230AB54: .word 0x022C4D14 + arm_func_end ov29_0230AA8C + + arm_func_start ov29_0230AB58 +ov29_0230AB58: ; 0x0230AB58 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, #0 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r5, #0x57 + mov fp, r6 + mov r4, #1 + b _0230ABDC +_0230AB7C: + mov r0, sl + mov r1, r5 + ldr r7, [sb, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + beq _0230ABB4 + add r0, r7, r6 + ldrb r0, [r0, #0x5e] + cmp r0, #0xe + bne _0230ABB4 + cmp r8, #1 + cmpne r8, #7 + moveq r0, r4 + beq _0230ABB8 +_0230ABB4: + mov r0, fp +_0230ABB8: + cmp r0, #0 + ldrne r1, _0230ABEC ; =0x02353538 + movne r0, #1 + ldrne r1, [r1] + strneb r0, [r1, #0x1cc] + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0230ABDC: + cmp r6, #2 + blt _0230AB7C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230ABEC: .word 0x02353538 + arm_func_end ov29_0230AB58 + + arm_func_start ov29_0230ABF0 +ov29_0230ABF0: ; 0x0230ABF0 + cmp r0, #1 + cmpne r0, #7 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end ov29_0230ABF0 + + arm_func_start ov29_0230AC04 +ov29_0230AC04: ; 0x0230AC04 + stmdb sp!, {r3, lr} + ldr r3, [r1, #0xb4] + add r1, r3, r2 + ldrb r1, [r1, #0x5e] + cmp r1, #0xe + bne _0230AC50 + ldrb r1, [r3, #0xfe] + cmp r1, #0 + bne _0230AC38 + mov r1, #0x45 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230AC40 +_0230AC38: + mov r0, #1 + b _0230AC44 +_0230AC40: + mov r0, #0 +_0230AC44: + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0230AC50: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_0230AC04 + + arm_func_start GetTypeMatchup +GetTypeMatchup: ; 0x0230AC58 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + ldr r4, [r7, #0xb4] + mov r6, r2 + ldrb r1, [r4, #0xf5] + mov r5, r3 + cmp r1, #1 + beq _0230AC88 + mov r1, #0x46 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230ACA0 +_0230AC88: + cmp r5, #0xb + addeq r0, r4, r6 + ldreqb r0, [r0, #0x5e] + cmpeq r0, #0x10 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0230ACA0: + cmp r5, #9 + bne _0230ACE0 + bl GravityIsActive + cmp r0, #0 + beq _0230ACCC + add r0, r4, r6 + ldrb r0, [r0, #0x5e] + cmp r0, #0xa + bne _0230ACE0 + mov r0, #2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230ACCC: + mov r0, r7 + bl HasConditionalGroundImmunity + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_0230ACE0: + ldr r1, _0230AD00 ; =0x022C56B0 + mov r0, #0x24 + mla r0, r5, r0, r1 + add r1, r4, r6 + ldrb r1, [r1, #0x5e] + mov r1, r1, lsl #1 + ldrsh r0, [r1, r0] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230AD00: .word 0x022C56B0 + arm_func_end GetTypeMatchup + + arm_func_start ov29_0230AD04 +ov29_0230AD04: ; 0x0230AD04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x64 + ldr r5, _0230B774 ; =0x02352838 + mov sl, r1 + ldr r4, [r5, #0x1c] + ldr r5, [r5, #0x20] + ldr r8, [sp, #0x88] + ldr r1, [sp, #0x90] + ldr r7, [sp, #0x8c] + str r1, [sp, #0x90] + ldr r6, [sl, #0xb4] + mov r1, #1 + mov fp, r0 + mov sb, r2 + str r3, [sp, #4] + str r4, [sp, #0x34] + str r5, [sp, #0x38] + bl IntToFixedPoint64 + mov r0, #0 + str r0, [sp, #0x30] + strb r0, [r7, #0xe] + ldr r1, [sp, #0x30] + mov r0, sb + strb r1, [r7, #0xf] + bl EntityIsValid__02308FBC + cmp r0, #0 + moveq r0, #1 + beq _0230B76C + mov r0, r8 + bl ov29_0230ABF0 + str r0, [sp, #0x2c] + mov r0, sl + mov r1, sb + mov r2, #0x35 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + cmpne r8, #0 + movne r0, #1 + strne r0, [sp, #0x30] + mov r3, #2 + mov r0, sl + mov r1, sb + mov r2, r8 + str r3, [r7, #8] + bl ov29_0230AB58 + ldr r3, _0230B778 ; =0x022C4820 + str r0, [sp, #0x28] + ldr r0, [r3] + ldr r2, _0230B77C ; =0x022C4824 + str r0, [sp, #0x24] + ldr r0, [r2] + ldr r1, _0230B780 ; =0x022C482C + str r0, [sp, #0x20] + ldr r0, [r1] + ldr r1, _0230B784 ; =0x022C4758 + str r0, [sp, #0x1c] + ldr r0, _0230B788 ; =0x022C474C + mov r4, #0 + ldr r0, [r0] + str r0, [sp, #0x18] + ldr r0, [r1] + ldr r1, _0230B78C ; =0x022C481C + str r0, [sp, #0x14] + ldr r0, _0230B790 ; =0x022C4810 + ldr r0, [r0] + str r0, [sp, #0x10] + ldr r0, [r1] + str r0, [sp, #0xc] + ldr r0, _0230B794 ; =0x022C4818 + ldr r0, [r0] + str r0, [sp, #8] + b _0230AF8C +_0230AE28: + ldr r0, [sp, #0x90] + cmp r0, #0 + bne _0230AE90 + mov r0, sl + mov r1, #0x3b + bl IqSkillIsEnabled + cmp r0, #0 + bne _0230AE5C + mov r0, sb + mov r1, #0x3b + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230AE90 +_0230AE5C: + ldr r1, [sp, #0x24] + add r0, sp, #0x44 + bl FixedPoint32To64 + ldr r1, [sp, #0x20] + add r0, sp, #0x4c + bl FixedPoint32To64 + ldr r1, [sp, #0x1c] + add r0, sp, #0x54 + bl FixedPoint32To64 + ldr r1, [sp, #0x18] + add r0, sp, #0x5c + bl FixedPoint32To64 + b _0230AEC0 +_0230AE90: + ldr r1, [sp, #0x14] + add r0, sp, #0x44 + bl FixedPoint32To64 + ldr r1, [sp, #0x10] + add r0, sp, #0x4c + bl FixedPoint32To64 + ldr r1, [sp, #0xc] + add r0, sp, #0x54 + bl FixedPoint32To64 + ldr r1, [sp, #8] + add r0, sp, #0x5c + bl FixedPoint32To64 +_0230AEC0: + mov r0, fp + bl FixedPoint64IsZero + cmp r0, #0 + bne _0230AF94 + ldr r0, [sp, #0x28] + cmp r0, #0 + bne _0230AF1C + ldr r0, [sp, #0x2c] + cmp r0, #0 + beq _0230AF1C + mov r0, sl + mov r1, sb + mov r2, r4, lsl #0x10 + mov r2, r2, asr #0x10 + bl ov29_0230AC04 + cmp r0, #0 + beq _0230AF1C + ldr r0, _0230B798 ; =0x02353538 + mov r5, #0 + ldr r1, [r0] + mov r0, #1 + strb r0, [r1, #0x1d4] + b _0230AF38 +_0230AF1C: + mov r0, sl + mov r1, sb + mov r2, r4, lsl #0x10 + mov r2, r2, asr #0x10 + mov r3, r8 + bl GetTypeMatchup + mov r5, r0 +_0230AF38: + mov r0, sl + mov r1, #0x3b + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230AF64 + add r2, sp, #0x44 + mov r0, fp + mov r1, fp + add r2, r2, r5, lsl #3 + bl MultiplyFixedPoint64 + b _0230AF80 +_0230AF64: + cmp r5, #2 + beq _0230AF80 + add r2, sp, #0x44 + mov r0, fp + mov r1, fp + add r2, r2, r5, lsl #3 + bl MultiplyFixedPoint64 +_0230AF80: + add r0, sp, #0x34 + str r5, [r0, r4, lsl #2] + add r4, r4, #1 +_0230AF8C: + cmp r4, #2 + blt _0230AE28 +_0230AF94: + ldr r0, _0230B798 ; =0x02353538 + ldr r4, [sp, #0x34] + ldr r2, [r0] + ldr r1, _0230B79C ; =0x022C4D14 + strb r4, [r2, #0x18c] + ldr r3, [sp, #0x38] + ldr r2, [r0] + add r1, r1, r4, lsl #4 + ldr r0, [r1, r3, lsl #2] + strb r3, [r2, #0x18d] + cmp r0, #3 + str r0, [r7, #8] + moveq r4, #1 + beq _0230AFEC + ldr r0, [sp, #0x30] + mov r4, #0 + cmp r0, #0 + ldrne r0, _0230B774 ; =0x02352838 + ldrne r1, [r0, #0x3c] + ldrne r0, [r0, #0x40] + strne r1, [fp] + strne r0, [fp, #4] +_0230AFEC: + mov r0, sl + mov r1, #0x50 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B02C + ldr r0, [r7, #8] + cmp r0, #1 + bne _0230B02C + ldr r1, _0230B7A0 ; =0x022C47C0 + add r0, sp, #0x3c + ldr r1, [r1] + bl FixedPoint32To64 + add r2, sp, #0x3c + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 +_0230B02C: + mov r0, sl + mov r1, sb + mov r2, #0x6c + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + bne _0230B064 + mov r0, sl + mov r1, sb + mov r2, #0x6e + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230B080 +_0230B064: + ldr r0, [r7, #8] + cmp r0, #3 + bne _0230B080 + ldr r2, _0230B7A4 ; =0x02352864 + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 +_0230B080: + mov r0, sb + mov r1, #0x5a + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230B0A4 + ldr r2, _0230B7A8 ; =0x0235283C + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 +_0230B0A4: + ldr r0, [sp, #0x90] + cmp r0, #0 + bne _0230B104 + mov r0, sl + mov r1, #0x64 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B104 + ldr r0, _0230B7AC ; =0x022C455C + ldrsh r1, [r0] + ldr r0, [sp, #4] + cmp r0, r1 + bgt _0230B104 + ldr r2, _0230B7B0 ; =0x02352844 + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 + mov r1, #0x64 + ldr r2, _0230B7B4 ; =0x00000C3E + mov r0, sl + str r1, [sp] + mov r1, sb + mov r3, #2 + bl ov29_0234B250 +_0230B104: + cmp r8, #2 + cmpne r8, #6 + bne _0230B14C + mov r0, sl + mov r1, sb + mov r2, #2 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230B14C + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7A8 ; =0x0235283C + ldr r3, [r0] + mov r5, #1 + mov r0, fp + mov r1, fp + strb r5, [r3, #0x1c5] + bl MultiplyFixedPoint64 +_0230B14C: + cmp r8, #2 + bne _0230B198 + mov r0, sl + mov r1, sb + bl ov29_02313C74 + cmp r0, #0 + beq _0230B198 + ldr r1, _0230B798 ; =0x02353538 + mov r0, fp + ldr r2, [r1] + mov r3, #1 + mov r1, #0 + strb r3, [r2, #0x1c6] + bl IntToFixedPoint64 + mov r4, #0 + str r4, [r7, #8] + strb r4, [r7, #0xe] + mov r0, #1 + strb r0, [r7, #0xf] +_0230B198: + cmp r8, #2 + bne _0230B1DC + mov r0, sl + mov r1, sb + mov r2, #0x5f + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230B1DC + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7A8 ; =0x0235283C + ldr r3, [r0] + mov r5, #1 + mov r0, fp + mov r1, fp + strb r5, [r3, #0x1c5] + bl MultiplyFixedPoint64 +_0230B1DC: + cmp r8, #9 + bne _0230B248 + mov r0, sl + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + bne _0230B208 + mov r0, sb + bl LevitateIsActive + cmp r0, #0 + bne _0230B218 +_0230B208: + mov r0, sb + bl HasConditionalGroundImmunity + cmp r0, #0 + beq _0230B248 +_0230B218: + ldr r1, _0230B798 ; =0x02353538 + mov r0, fp + ldr r2, [r1] + mov r3, #1 + mov r1, #0 + strb r3, [r2, #0x1c7] + bl IntToFixedPoint64 + mov r4, #0 + str r4, [r7, #8] + strb r4, [r7, #0xe] + mov r0, #1 + strb r0, [r7, #0xf] +_0230B248: + cmp r8, #3 + bne _0230B2F4 + mov r0, sl + mov r1, #0x10 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B2F4 + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + ldr r0, _0230B7B8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r6, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r0, #1 + movgt r0, #0 + and r7, r0, #0xff + mov r0, r6 + mov r2, r7 + mov r1, #0x80 + bl ov29_023023C0 + mov r5, r0 + cmp r7, #0 + beq _0230B2D4 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7BC ; =0x0235284C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c8] + bl MultiplyFixedPoint64 +_0230B2D4: + cmp r5, #0 + beq _0230B2F4 + mov r0, sl + bl ov29_022E6214 + ldr r2, _0230B7C0 ; =0x00000C4F + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0230B2F4: + cmp r8, #4 + bne _0230B3A0 + mov r0, sl + mov r1, #0x1a + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B3A0 + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + ldr r0, _0230B7B8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r6, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r0, #1 + movgt r0, #0 + and r7, r0, #0xff + mov r0, r6 + mov r2, r7 + mov r1, #2 + bl ov29_023023C0 + mov r5, r0 + cmp r7, #0 + beq _0230B380 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7BC ; =0x0235284C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c9] + bl MultiplyFixedPoint64 +_0230B380: + cmp r5, #0 + beq _0230B3A0 + mov r0, sl + bl ov29_022E61C8 + mov r0, sl + mov r1, sb + mov r2, #0xc50 + bl LogMessageByIdWithPopupCheckUserTarget +_0230B3A0: + cmp r8, #0xc + bne _0230B44C + mov r0, sl + mov r1, #0x43 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B44C + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + ldr r0, _0230B7B8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r6, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r0, #1 + movgt r0, #0 + and r7, r0, #0xff + mov r0, r6 + mov r2, r7 + mov r1, #0x10 + bl ov29_023023C0 + mov r5, r0 + cmp r7, #0 + beq _0230B42C + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7BC ; =0x0235284C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1ca] + bl MultiplyFixedPoint64 +_0230B42C: + cmp r5, #0 + beq _0230B44C + mov r0, sl + bl ov29_022E64C4 + ldr r2, _0230B7C4 ; =0x00000C51 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0230B44C: + cmp r8, #2 + bne _0230B534 + mov r0, sl + mov r1, #0x46 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B4F8 + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + ldr r0, _0230B7B8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r6, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r0, #1 + movgt r0, #0 + and r7, r0, #0xff + mov r0, r6 + mov r2, r7 + mov r1, #0x20 + bl ov29_023023C0 + mov r5, r0 + cmp r7, #0 + beq _0230B4D8 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7BC ; =0x0235284C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1cb] + bl MultiplyFixedPoint64 +_0230B4D8: + cmp r5, #0 + beq _0230B4F8 + mov r0, sl + bl ov29_022E6510 + ldr r2, _0230B7C8 ; =0x00000C52 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0230B4F8: + mov r0, sl + mov r1, sb + mov r2, #0x55 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230B534 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7B0 ; =0x02352844 + ldr r3, [r0] + mov r5, #1 + mov r0, fp + mov r1, fp + strb r5, [r3, #0x1cb] + bl MultiplyFixedPoint64 +_0230B534: + ldrb r0, [r6, #0xbf] + cmp r0, #1 + bne _0230B560 + ldr r1, _0230B7CC ; =0x022C4744 + add r0, sp, #0x3c + ldr r1, [r1] + bl FixedPoint32To64 + add r2, sp, #0x3c + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 +_0230B560: + mov r0, fp + bl FixedPoint64IsZero + cmp r0, #0 + bne _0230B5CC + mov r0, sl + mov r1, r8 + bl MonsterIsType + cmp r0, #0 + beq _0230B5CC + ldr r1, _0230B798 ; =0x02353538 + mov r0, sl + ldr r2, [r1] + mov r3, #1 + mov r1, #0x63 + strb r3, [r2, #0x1cf] + bl AbilityIsActive2 + cmp r0, #0 + beq _0230B5BC + ldr r2, _0230B7BC ; =0x0235284C + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 + b _0230B5CC +_0230B5BC: + ldr r2, _0230B7B0 ; =0x02352844 + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 +_0230B5CC: + mov r0, sl + bl GetApparentWeather + mov r5, r0 + cmp r5, #1 + bne _0230B634 + cmp r8, #2 + bne _0230B60C + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7B0 ; =0x02352844 + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c4] + bl MultiplyFixedPoint64 + b _0230B634 +_0230B60C: + cmp r8, #3 + bne _0230B634 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7A8 ; =0x0235283C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c4] + bl MultiplyFixedPoint64 +_0230B634: + cmp r5, #4 + bne _0230B690 + cmp r8, #2 + bne _0230B668 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7A8 ; =0x0235283C + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c3] + bl MultiplyFixedPoint64 + b _0230B690 +_0230B668: + cmp r8, #3 + bne _0230B690 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7B0 ; =0x02352844 + ldr r3, [r0] + mov r7, #1 + mov r0, fp + mov r1, fp + strb r7, [r3, #0x1c3] + bl MultiplyFixedPoint64 +_0230B690: + cmp r5, #3 + bne _0230B6C0 + cmp r8, #1 + beq _0230B6C0 + ldr r2, _0230B7D0 ; =0x0235285C + mov r0, fp + mov r1, fp + bl MultiplyFixedPoint64 + ldr r0, _0230B798 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1c2] +_0230B6C0: + ldr r0, _0230B798 ; =0x02353538 + ldr r7, [r0] + add r0, r7, #0xc000 + ldrb r0, [r0, #0xd5b] + cmp r0, #0 + bne _0230B6E0 + cmp r5, #6 + bne _0230B700 +_0230B6E0: + cmp r8, #5 + bne _0230B700 + ldr r2, _0230B7A8 ; =0x0235283C + mov r3, #1 + mov r0, fp + mov r1, fp + strb r3, [r7, #0x1d0] + bl MultiplyFixedPoint64 +_0230B700: + ldr r0, _0230B798 ; =0x02353538 + ldr r5, [r0] + add r0, r5, #0xc000 + ldrb r0, [r0, #0xd5c] + cmp r0, #0 + beq _0230B738 + cmp r8, #2 + bne _0230B738 + ldr r2, _0230B7A8 ; =0x0235283C + mov r3, #1 + mov r0, fp + mov r1, fp + strb r3, [r5, #0x1d1] + bl MultiplyFixedPoint64 +_0230B738: + cmp r8, #5 + ldreqb r0, [r6, #0xd2] + cmpeq r0, #0xb + bne _0230B768 + ldr r0, _0230B798 ; =0x02353538 + ldr r2, _0230B7BC ; =0x0235284C + ldr r3, [r0] + mov r5, #1 + mov r0, fp + mov r1, fp + strb r5, [r3, #0x1d2] + bl MultiplyFixedPoint64 +_0230B768: + mov r0, r4 +_0230B76C: + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230B774: .word 0x02352838 +_0230B778: .word 0x022C4820 +_0230B77C: .word 0x022C4824 +_0230B780: .word 0x022C482C +_0230B784: .word 0x022C4758 +_0230B788: .word 0x022C474C +_0230B78C: .word 0x022C481C +_0230B790: .word 0x022C4810 +_0230B794: .word 0x022C4818 +_0230B798: .word 0x02353538 +_0230B79C: .word 0x022C4D14 +_0230B7A0: .word 0x022C47C0 +_0230B7A4: .word 0x02352864 +_0230B7A8: .word 0x0235283C +_0230B7AC: .word 0x022C455C +_0230B7B0: .word 0x02352844 +_0230B7B4: .word 0x00000C3E +_0230B7B8: .word 0x000003E7 +_0230B7BC: .word 0x0235284C +_0230B7C0: .word 0x00000C4F +_0230B7C4: .word 0x00000C51 +_0230B7C8: .word 0x00000C52 +_0230B7CC: .word 0x022C4744 +_0230B7D0: .word 0x0235285C + arm_func_end ov29_0230AD04 + + arm_func_start ov29_0230B7D4 +ov29_0230B7D4: ; 0x0230B7D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r4, #1 + mov r8, r2 + mov fp, #0 + bl EntityIsValid__02308FBC + cmp r0, #0 + moveq r0, r4 + beq _0230BB98 + mov r0, sl + mov r1, #0x6b + ldr r7, [sl, #0xb4] + ldr r6, [sb, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + movne r8, r4 + cmp r8, #1 + cmpne r8, #7 + moveq fp, #1 + cmp r8, #2 + bne _0230B84C + mov r0, sl + mov r1, sb + bl ov29_02313C74 + cmp r0, #0 + movne r0, #0 + bne _0230BB98 +_0230B84C: + cmp r8, #5 + bne _0230B874 + mov r0, sl + mov r1, sb + mov r2, #0x23 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + movne r0, #0 + bne _0230BB98 +_0230B874: + cmp r8, #3 + bne _0230B89C + mov r0, sl + mov r1, sb + mov r2, #0x24 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + movne r0, #0 + bne _0230BB98 +_0230B89C: + cmp r8, #9 + bne _0230B8E0 + mov r0, sl + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + bne _0230B8C8 + mov r0, sb + bl LevitateIsActive + cmp r0, #0 + bne _0230B8D8 +_0230B8C8: + mov r0, sb + bl HasConditionalGroundImmunity + cmp r0, #0 + beq _0230B8E0 +_0230B8D8: + mov r0, #1 + b _0230BB98 +_0230B8E0: + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_0230AB58 + ldr r1, _0230BBA0 ; =0x02352884 + str r0, [sp] + add ip, sp, #4 + ldmia r1, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + mov r5, #0 + b _0230B9A0 +_0230B90C: + ldr r0, [sp] + add ip, sp, #0x14 + cmp r0, #0 + add r0, sp, #4 + ldmia r0, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + bne _0230B960 + cmp fp, #0 + beq _0230B960 + add r0, r6, r5 + ldrb r0, [r0, #0x5e] + cmp r0, #0xe + ldreqb r0, [r6, #0xfe] + cmpeq r0, #0 + bne _0230B960 + ldr r1, _0230BBA4 ; =0x02353538 + mov r0, #0 + ldr r2, [r1] + mov r1, #1 + strb r1, [r2, #0x1d4] + b _0230B978 +_0230B960: + mov r0, sl + mov r1, sb + mov r2, r5, lsl #0x10 + mov r2, r2, asr #0x10 + mov r3, r8 + bl GetTypeMatchup +_0230B978: + cmp r4, #0 + beq _0230B9A8 + add r1, sp, #0x14 + ldr r0, [r1, r0, lsl #2] + mul r0, r4, r0 + add r0, r0, r0, lsr #31 + movs r4, r0, asr #1 + moveq r0, #2 + beq _0230BB98 + add r5, r5, #1 +_0230B9A0: + cmp r5, #2 + blt _0230B90C +_0230B9A8: + cmp r8, #2 + cmpne r8, #6 + bne _0230B9D4 + mov r0, sl + mov r1, sb + mov r2, #2 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + movne r0, #2 + bne _0230BB98 +_0230B9D4: + cmp r8, #3 + bne _0230BA1C + mov r0, sl + mov r1, #0x10 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BA1C + ldrsh r2, [r7, #0x12] + ldrsh r1, [r7, #0x16] + ldr r0, _0230BBA8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r7, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r4, r4, lsl #1 +_0230BA1C: + cmp r8, #4 + bne _0230BA64 + mov r0, sl + mov r1, #0x1a + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BA64 + ldrsh r2, [r7, #0x12] + ldrsh r1, [r7, #0x16] + ldr r0, _0230BBA8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r7, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r4, r4, lsl #1 +_0230BA64: + cmp r8, #0xc + bne _0230BAAC + mov r0, sl + mov r1, #0x43 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BAAC + ldrsh r2, [r7, #0x12] + ldrsh r1, [r7, #0x16] + ldr r0, _0230BBA8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r7, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r4, r4, lsl #1 +_0230BAAC: + cmp r8, #2 + bne _0230BAF4 + mov r0, sl + mov r1, #0x46 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BAF4 + ldrsh r2, [r7, #0x12] + ldrsh r1, [r7, #0x16] + ldr r0, _0230BBA8 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r7, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + movle r4, r4, lsl #1 +_0230BAF4: + cmp r4, #0 + moveq r0, #2 + beq _0230BB98 + mov r0, sl + mov r1, r8 + bl MonsterIsType + cmp r0, #0 + mov r0, sl + movne r4, r4, lsl #1 + bl GetApparentWeather + cmp r0, #1 + bne _0230BB3C + cmp r8, #2 + moveq r4, r4, lsl #1 + beq _0230BB3C + cmp r8, #3 + moveq r0, #2 + beq _0230BB98 +_0230BB3C: + ldr r0, _0230BBA4 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0xc000 + ldrb r0, [r0, #0xd5b] + cmp r0, #0 + beq _0230BB60 + cmp r8, #5 + moveq r0, #2 + beq _0230BB98 +_0230BB60: + add r0, r1, #0xc000 + ldrb r0, [r0, #0xd5c] + cmp r0, #0 + beq _0230BB7C + cmp r8, #2 + moveq r0, #2 + beq _0230BB98 +_0230BB7C: + cmp r8, #5 + ldreqb r0, [r7, #0xd2] + cmpeq r0, #0xb + moveq r4, r4, lsl #1 + cmp r4, #3 + movge r4, #3 + add r0, r4, #2 +_0230BB98: + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230BBA0: .word 0x02352884 +_0230BBA4: .word 0x02353538 +_0230BBA8: .word 0x000003E7 + arm_func_end ov29_0230B7D4 + + arm_func_start CalcDamage +CalcDamage: ; 0x0230BBAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc0 + ldr r4, _0230C450 ; =0x02353538 + mov sl, r0 + ldr r4, [r4] + ldr r6, [sl, #0xb4] + ldr r8, [sp, #0xec] + str r2, [sp, #0xc] + mov sb, r1 + ldr r1, [sp, #0xf4] + mov r0, r8 + str r1, [sp, #0xf4] + ldr r1, [sp, #0xf8] + str r3, [sp, #0x10] + str r1, [sp, #0xf8] + ldr r1, [sp, #0xf0] + add r5, r4, #0x184 + ldr r7, [sb, #0xb4] + str r1, [sp, #0x1c] + bl ResetDamageDesc + ldrb r0, [r6, #0x221] + cmp r0, #0 + beq _0230BC1C + ldr r1, _0230C454 ; =0x022C4710 + ldr r0, [sp, #0x1c] + ldr r1, [r1] + bl MultiplyByFixedPoint + str r0, [sp, #0x1c] +_0230BC1C: + mov r0, sl + mov r1, #0x5c + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BC50 + ldr r0, [sp, #0xf4] + bl IsRecoilMove + cmp r0, #0 + ldrne r0, [sp, #0x1c] + addne r0, r0, r0, lsl #1 + addne r0, r0, r0, lsr #31 + movne r0, r0, asr #1 + strne r0, [sp, #0x1c] +_0230BC50: + mov r0, sl + mov r1, #0x65 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BC84 + ldr r0, [sp, #0xf4] + bl IsPunchMove + cmp r0, #0 + beq _0230BC84 + ldr r0, [sp, #0x1c] + mov r1, #0x180 + bl MultiplyByFixedPoint + str r0, [sp, #0x1c] +_0230BC84: + mov r0, sl + mov r1, #0x6b + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0xc] + ldr r1, _0230C458 ; =0x000001D3 + ldr r0, [sp, #0xf4] + cmp r0, r1 + ldreqb r0, [r6, #0x5e] + streq r0, [sp, #0xc] + ldr r0, [sp, #0xf4] + bl MoveIsNotPhysical + str r0, [sp, #0x18] + bl ResetDamageCalcScratchSpace + ldrb r0, [r6, #7] + cmp r0, #0 + bne _0230BD34 + add r0, r6, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + bne _0230BD34 + mov r0, #1 + str r0, [r8] + mov r0, #0 + str r0, [r8, #4] + mov r0, #2 + str r0, [r8, #8] + ldr r0, [sp, #0xf4] + ldr r1, [sp, #0xc] + strb r1, [r8, #0xc] + bl GetMoveCategory + strb r0, [r8, #0xd] + mov r0, #0 + strb r0, [r8, #0xe] + strb r0, [r8, #0xf] + strb r0, [r8, #0x10] + b _0230D054 +_0230BD34: + ldr r1, _0230C45C ; =0x00000163 + ldr r0, [sp, #0xf4] + cmp r0, r1 + bne _0230BDA0 + mov r0, sl + mov r1, sb + mov r2, #0x35 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230BDA0 + mov r0, #1 + str r0, [r8] + mov r0, #0 + str r0, [r8, #4] + mov r0, #2 + str r0, [r8, #8] + ldr r0, [sp, #0xf4] + ldr r1, [sp, #0xc] + strb r1, [r8, #0xc] + bl GetMoveCategory + strb r0, [r8, #0xd] + mov r0, #0 + strb r0, [r8, #0xe] + strb r0, [r8, #0xf] + strb r0, [r8, #0x10] + b _0230D054 +_0230BDA0: + ldr r0, [sp, #0xf4] + ldr r1, [sp, #0xc] + strb r1, [r8, #0xc] + bl GetMoveCategory + strb r0, [r8, #0xd] + ldr r0, [sp, #0xc] + mov r4, #0 + strb r0, [r5] + ldr r0, [sp, #0x18] + mov r1, #0x60 + str r0, [r5, #4] + add r0, r6, r0, lsl #2 + ldr r0, [r0, #0x34] + mov fp, r4 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x18] + add r0, r7, r0, lsl #2 + ldr r0, [r0, #0x3c] + str r0, [sp, #0x38] + mov r0, sl + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BE40 + ldrb r1, [r7, #0x1c] + ldrb r0, [r7, #0x1d] + cmp r1, r0 + blo _0230BE28 + ldr r0, [sp, #0x18] + cmp r0, #1 + ldreqb r0, [r5, #0x32] + addeq r4, r4, #1 + addeq r0, r0, #1 + streqb r0, [r5, #0x32] + b _0230BE40 +_0230BE28: + ldr r0, [sp, #0x18] + cmp r0, #0 + ldreqb r0, [r5, #0x32] + addeq r4, r4, #1 + addeq r0, r0, #1 + streqb r0, [r5, #0x32] +_0230BE40: + ldr r0, [sp, #0xf8] + cmp r0, #0 + ldr r0, [sp, #0x18] + add r0, r6, r0, lsl #1 + ldrsh r0, [r0, #0x24] + str r0, [sp, #0x44] + beq _0230BE70 + ldr r0, [sp, #0xc] + cmp r0, #2 + ldreqsh r0, [r6, #0x30] + streqh r0, [r5, #0x10] + addeq r4, r4, r0 +_0230BE70: + mov r0, sl + mov r1, #0x22 + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5, #0x34] + mov r1, #0x23 + addne r4, r4, #1 + addne r0, r0, #1 + strneb r0, [r5, #0x34] + mov r0, sl + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5, #0x34] + mov r1, #0x3c + subne r4, r4, #1 + subne r0, r0, #1 + strneb r0, [r5, #0x34] + mov r0, sl + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r6, #0x166] + mov r1, #0x32 + cmpne r0, #0 + ldrneb r0, [r5, #0x34] + addne r4, r4, #1 + addne r0, r0, #1 + strneb r0, [r5, #0x34] + mov r0, sl + bl ov29_02338288 + cmp r0, #0 + ldr r0, [sp, #0x18] + addne r4, r4, #1 + cmp r0, #0 + mov r0, sl + bne _0230BFA8 + mov r1, #0x68 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BF5C + ldrsh r0, [r6, #4] + ldrsh r1, [r7, #4] + bl GendersEqualNotGenderless + cmp r0, #0 + ldrneb r0, [r5, #0x32] + addne r4, r4, #1 + addne r0, r0, #1 + strneb r0, [r5, #0x32] + bne _0230BF5C + ldrsh r0, [r6, #4] + bl GetMonsterGenderVeneer + cmp r0, #3 + beq _0230BF5C + ldrsh r0, [r7, #4] + bl GetMonsterGenderVeneer + cmp r0, #3 + ldrneb r0, [r5, #0x32] + subne r4, r4, #1 + subne r0, r0, #1 + strneb r0, [r5, #0x32] +_0230BF5C: + mov r0, sl + bl GetApparentWeather + cmp r0, #1 + bne _0230C040 + mov r0, sl + mov r1, #0x71 + bl AbilityIsActive2 + cmp r0, #0 + bne _0230BF94 + mov r0, sl + mov r1, #0x71 + bl ov29_02301D84 + cmp r0, #0 + beq _0230C040 +_0230BF94: + add r4, r4, #1 + ldrb r0, [r5, #0x32] + add r0, r0, #1 + strb r0, [r5, #0x32] + b _0230C040 +_0230BFA8: + mov r1, #0x5a + bl AbilityIsActive2 + cmp r0, #0 + beq _0230BFD4 + mov r0, sl + bl GetApparentWeather + cmp r0, #1 + ldreqb r0, [r5, #0x32] + addeq r4, r4, #2 + addeq r0, r0, #2 + streqb r0, [r5, #0x32] +_0230BFD4: + mov r0, sb + bl GetApparentWeather + cmp r0, #1 + bne _0230C01C + mov r0, sb + mov r1, #0x71 + bl AbilityIsActive2 + cmp r0, #0 + bne _0230C00C + mov r0, sb + mov r1, #0x71 + bl ov29_02301D84 + cmp r0, #0 + beq _0230C01C +_0230C00C: + add fp, fp, #1 + ldrb r0, [r5, #0x33] + add r0, r0, #1 + strb r0, [r5, #0x33] +_0230C01C: + mov r0, sb + bl GetApparentWeather + cmp r0, #2 + bne _0230C040 + ldrb r0, [r7, #0x5e] + cmp r0, #0xd + ldrneb r0, [r7, #0x5f] + cmpne r0, #0xd + addeq fp, fp, #2 +_0230C040: + ldrsh r1, [r6, #4] + ldr r0, _0230C460 ; =0x000001A3 + cmp r1, r0 + addeq r4, r4, #2 + cmp r1, #0x1a4 + ldr r0, _0230C464 ; =0x000001A5 + subeq r4, r4, #2 + cmp r1, r0 + ldr r0, _0230C468 ; =0x00000211 + subeq r4, r4, #2 + cmp r1, r0 + subeq r4, r4, #2 + beq _0230C07C + cmp r1, #0x218 + addeq r4, r4, #2 +_0230C07C: + ldr r0, [sp, #0x44] + add r0, r0, r4 + str r0, [sp, #0x44] + ldrb r0, [r6, #0x167] + cmp r0, #0 + beq _0230C0AC + mov r0, sl + mov r1, #0x4f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0x14 + strne r0, [sp, #0x44] +_0230C0AC: + ldr r0, [sp, #0x18] + cmp r0, #0 + add r0, r7, r0, lsl #1 + ldrsh r4, [r0, #0x28] + bne _0230C0F4 + ldrb r0, [r7, #0xd2] + mov r1, #0x31 + cmp r0, #6 + moveq r0, #1 + streqb r0, [r5, #0x51] + mov r0, sb + addeq fp, fp, #1 + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5, #0x35] + subne fp, fp, #1 + subne r0, r0, #1 + strneb r0, [r5, #0x35] +_0230C0F4: + mov r0, sb + mov r1, #0x22 + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5, #0x35] + mov r1, #0x23 + subne fp, fp, #1 + subne r0, r0, #1 + strneb r0, [r5, #0x35] + mov r0, sb + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5, #0x35] + addne fp, fp, #1 + addne r0, r0, #1 + strneb r0, [r5, #0x35] + ldrsh r1, [r7, #4] + ldr r0, _0230C460 ; =0x000001A3 + cmp r1, r0 + subeq fp, fp, #2 + cmp r1, #0x1a4 + ldr r0, _0230C464 ; =0x000001A5 + addeq fp, fp, #2 + cmp r1, r0 + ldr r0, _0230C468 ; =0x00000211 + subeq fp, fp, #2 + cmp r1, r0 + addeq fp, fp, #2 + beq _0230C170 + cmp r1, #0x218 + subeq fp, fp, #2 +_0230C170: + ldr r1, _0230C46C ; =0x000001BD + ldr r0, [sp, #0xf4] + add r4, r4, fp + cmp r0, r1 + bne _0230C1F4 + ldrsh r1, [r7, #0x24] + mov r0, #0 + cmp r1, #0xa + subgt r1, r1, #0xa + addgt r0, r0, r1 + movgt r0, r0, lsl #0x10 + ldrsh r1, [r7, #0x28] + movgt r0, r0, asr #0x10 + cmp r1, #0xa + subgt r1, r1, #0xa + addgt r0, r0, r1 + movgt r0, r0, lsl #0x10 + ldrsh r1, [r7, #0x26] + movgt r0, r0, asr #0x10 + cmp r1, #0xa + subgt r1, r1, #0xa + addgt r0, r0, r1 + movgt r0, r0, lsl #0x10 + ldrsh r1, [r7, #0x2a] + movgt r0, r0, asr #0x10 + cmp r1, #0xa + subgt r1, r1, #0xa + addgt r0, r0, r1 + movgt r0, r0, lsl #0x10 + ldr r1, [sp, #0x44] + movgt r0, r0, asr #0x10 + add r0, r1, r0 + str r0, [sp, #0x44] +_0230C1F4: + mov r0, sl + mov r1, #0x67 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0x100 + movne r4, #0xa + strne r0, [sp, #0x38] + bne _0230C23C + mov r0, sl + mov r1, sb + mov r2, #0x67 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + movne r0, #0xa + strne r0, [sp, #0x44] + movne r0, #0x100 + strne r0, [sp, #0x3c] +_0230C23C: + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x18] + cmp r0, #0 + movlt r0, #0 + strlt r0, [sp, #0x44] + ldr r0, [sp, #0x44] + ldr r2, _0230C470 ; =0x022C4D98 + cmp r0, #0x14 + movgt r0, #0x14 + strgt r0, [sp, #0x44] + ldr r0, [sp, #0x44] + strb r0, [r5, #0xa] + add r0, r6, #0x1a + ldrb r3, [r0, r1] + ldr r1, [sp, #0x44] + ldr fp, [r2, r1, lsl #2] + ldr r1, [sp, #0x18] + strh r3, [r5, #0xc] + ldrb r0, [r0, r1] + mov r1, fp + mov r0, r0, lsl #8 + bl MultiplyByFixedPoint + ldr r1, [sp, #0x3c] + bl MultiplyByFixedPoint + mov r0, r0, asr #8 + cmp r4, #0 + movlt r4, #0 + str r0, [sp, #0x90] + cmp r4, #0x14 + movgt r4, #0x14 + ldr r1, [sp, #0x18] + strb r4, [r5, #0xb] + add r0, r7, #0x1c + ldrb r2, [r0, r1] + ldr r1, _0230C474 ; =0x022C4DEC + strh r2, [r5, #0xe] + ldr r2, [sp, #0x18] + ldr r1, [r1, r4, lsl #2] + ldrb r0, [r0, r2] + mov r0, r0, lsl #8 + bl MultiplyByFixedPoint + ldr r1, [sp, #0x38] + bl MultiplyByFixedPoint + mov r0, r0, asr #8 + str r0, [sp, #0x94] + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0230C314 + ldr r1, [sp, #0x18] + mov r0, sl + bl ExclusiveItemOffenseBoost + ldr r1, [sp, #0x90] + add r0, r1, r0 + str r0, [sp, #0x90] +_0230C314: + ldrb r0, [r7, #6] + cmp r0, #0 + bne _0230C338 + ldr r1, [sp, #0x18] + mov r0, sb + bl ExclusiveItemDefenseBoost + ldr r1, [sp, #0x94] + add r0, r1, r0 + str r0, [sp, #0x94] +_0230C338: + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0230C4D8 + mov r0, sl + mov r1, #0x1a + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C378 + ldr r0, _0230C478 ; =0x020A18AC + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x30] + add r0, r0, r2 + strb r0, [r5, #0x30] +_0230C378: + mov r0, sl + mov r1, #0x32 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C3AC + ldr r0, _0230C47C ; =0x020A187C + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x30] + add r0, r0, r2 + strb r0, [r5, #0x30] +_0230C3AC: + mov r0, sl + bl AuraBowIsActive + cmp r0, #0 + beq _0230C3DC + ldr r0, _0230C480 ; =0x020A1898 + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x31] + add r0, r0, r2 + strb r0, [r5, #0x31] +_0230C3DC: + ldr r0, [sp, #0xf8] + cmp r0, #0 + beq _0230C5E0 + mov r0, sb + mov r1, #0x25 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C41C + ldr r0, _0230C484 ; =0x020A18A8 + ldr r1, [sp, #0x94] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x94] + ldrb r0, [r5, #0x36] + add r0, r0, r2 + strb r0, [r5, #0x36] +_0230C41C: + mov r0, sb + bl AuraBowIsActive + cmp r0, #0 + beq _0230C5E0 + ldr r0, _0230C480 ; =0x020A1898 + ldr r1, [sp, #0x94] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x94] + ldrb r0, [r5, #0x36] + add r0, r0, r2 + strb r0, [r5, #0x36] + b _0230C5E0 + .align 2, 0 +_0230C450: .word 0x02353538 +_0230C454: .word 0x022C4710 +_0230C458: .word 0x000001D3 +_0230C45C: .word 0x00000163 +_0230C460: .word 0x000001A3 +_0230C464: .word 0x000001A5 +_0230C468: .word 0x00000211 +_0230C46C: .word 0x000001BD +_0230C470: .word 0x022C4D98 +_0230C474: .word 0x022C4DEC +_0230C478: .word 0x020A18AC +_0230C47C: .word 0x020A187C +_0230C480: .word 0x020A1898 +_0230C484: .word 0x020A18A8 +_0230C488: .word 0x020A18B4 +_0230C48C: .word 0x020A186C +_0230C490: .word 0x00000C53 +_0230C494: .word 0x00000C54 +_0230C498: .word 0x00000C55 +_0230C49C: .word 0x000003E7 +_0230C4A0: .word 0x020A18D8 +_0230C4A4: .word 0x02352984 +_0230C4A8: .word 0x02352990 +_0230C4AC: .word 0x0235299C +_0230C4B0: .word 0x020A18F4 +_0230C4B4: .word 0x020A18F0 +_0230C4B8: .word 0x020A18CC +_0230C4BC: .word 0x020A18F8 +_0230C4C0: .word 0x020A18EC +_0230C4C4: .word 0x020A18D4 +_0230C4C8: .word 0x020A18E8 +_0230C4CC: .word 0x0235286C +_0230C4D0: .word 0x02352838 +_0230C4D4: .word 0x0235287C +_0230C4D8: + ldr r0, [sp, #0xf8] + cmp r0, #0 + beq _0230C548 + mov r0, sb + mov r1, #0x29 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C518 + ldr r0, _0230C488 ; =0x020A18B4 + ldr r1, [sp, #0x94] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x94] + ldrb r0, [r5, #0x37] + add r0, r0, r2 + strb r0, [r5, #0x37] +_0230C518: + mov r0, sb + bl AuraBowIsActive + cmp r0, #0 + beq _0230C548 + ldr r0, _0230C480 ; =0x020A1898 + ldr r1, [sp, #0x94] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x94] + ldrb r0, [r5, #0x36] + add r0, r0, r2 + strb r0, [r5, #0x36] +_0230C548: + mov r0, sl + mov r1, #0x28 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C57C + ldr r0, _0230C48C ; =0x020A186C + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x31] + add r0, r0, r2 + strb r0, [r5, #0x31] +_0230C57C: + mov r0, sl + mov r1, #0x32 + bl ItemIsActive__0230A9DC + cmp r0, #0 + beq _0230C5B0 + ldr r0, _0230C47C ; =0x020A187C + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x31] + add r0, r0, r2 + strb r0, [r5, #0x31] +_0230C5B0: + mov r0, sb + bl AuraBowIsActive + cmp r0, #0 + beq _0230C5E0 + ldr r0, _0230C480 ; =0x020A1898 + ldr r1, [sp, #0x90] + ldrsh r2, [r0] + add r0, r1, r2 + str r0, [sp, #0x90] + ldrb r0, [r5, #0x31] + add r0, r0, r2 + strb r0, [r5, #0x31] +_0230C5E0: + ldr r0, [sp, #0x10] + mov r1, fp + mov r0, r0, lsl #8 + bl MultiplyByFixedPoint + ldr r1, [sp, #0x3c] + bl MultiplyByFixedPoint + mov r1, r0 + add r0, sp, #0xa0 + bl FixedPoint32To64 + mov r0, #0x64 + bl DungeonRandInt + mov r4, #1 + str r0, [sp, #0x40] + add r0, r6, #0x100 + ldrh r1, [r0, #0x5a] + mov fp, r4 + str r4, [sp, #0x28] + bic r1, r1, #0x100 + strh r1, [r0, #0x5a] + ldrh r1, [r0, #0x58] + str r4, [sp, #0x2c] + bic r1, r1, #0x100 + strh r1, [r0, #0x58] + ldr r0, [sp, #0xf4] + bl MoveIsNotPhysical + str r0, [sp, #0x30] + cmp r0, #0 + bne _0230C6B8 + mov r0, sl + mov r1, #0x11 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230C6B8 + ldr r0, [sl, #0xb4] + mov r1, r4 + str r0, [sp, #0x24] + mov r0, sl + bl ov29_02300634 + str r0, [sp, #0x48] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x48] + mov r1, r4 + bl ov29_023023C0 + ldr r1, [sp, #0x48] + cmp r1, #0 + movne r4, r4, lsl #1 + cmp r0, #0 + beq _0230C6B8 + mov r0, sl + bl ov29_022E6130 + mov r0, sl + mov r1, sb + ldr r2, _0230C490 ; =0x00000C53 + bl LogMessageByIdWithPopupCheckUserTarget +_0230C6B8: + mov r0, sl + mov r1, #0x22 + bl AbilityIsActive2 + cmp r0, #0 + bne _0230C6E0 + mov r0, sl + mov r1, #0x4b + bl AbilityIsActive2 + cmp r0, #0 + beq _0230C748 +_0230C6E0: + ldr r0, [sp, #0x40] + cmp r0, #0x21 + ldr r0, [sl, #0xb4] + bge _0230C700 + ldr r1, [sp, #0x30] + cmp r1, #0 + moveq r1, #1 + beq _0230C704 +_0230C700: + mov r1, #0 +_0230C704: + and r1, r1, #0xff + str r1, [sp, #0x34] + ldr r2, [sp, #0x34] + mov r1, #0x100 + bl ov29_023023C0 + ldr r1, [sp, #0x34] + cmp r1, #0 + addne r4, r4, r4, lsl #1 + movne fp, fp, lsl #1 + cmp r0, #0 + beq _0230C748 + mov r0, sl + bl ov29_022E617C + mov r0, sl + mov r1, sb + ldr r2, _0230C494 ; =0x00000C54 + bl LogMessageByIdWithPopupCheckUserTarget +_0230C748: + mov r0, sl + mov r1, #0x30 + bl AbilityIsActive2 + cmp r0, #0 + beq _0230C76C + ldr r0, [sp, #0x30] + cmp r0, #0 + addeq r4, r4, r4, lsl #1 + moveq fp, fp, lsl #1 +_0230C76C: + ldr r0, [sl, #0xb4] + mov r1, #0x38 + ldrb r0, [r0, #6] + cmp r0, #0 + moveq r0, #1 + streq r0, [sp, #0x14] + movne r0, #0 + strne r0, [sp, #0x14] + mov r0, sl + bl AbilityIsActive2 + cmp r0, #0 + beq _0230C7D4 + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0230C7D4 + ldr r0, _0230C450 ; =0x02353538 + ldr r1, [r0] + ldr r0, [sp, #0x14] + add r0, r1, r0 + add r0, r0, #0x3000 + ldrb r0, [r0, #0xe36] + cmp r0, #0 + movne r0, #0xa + mulne r0, fp, r0 + rsbne r4, r4, r4, lsl #4 + movne fp, r0 +_0230C7D4: + mov r0, sl + mov r1, #0x3f + bl AbilityIsActive2 + cmp r0, #0 + beq _0230C820 + ldr r0, [sp, #0x30] + cmp r0, #1 + bne _0230C820 + ldr r0, _0230C450 ; =0x02353538 + ldr r1, [r0] + ldr r0, [sp, #0x14] + add r0, r1, r0 + add r0, r0, #0x3000 + ldrb r0, [r0, #0xe34] + cmp r0, #0 + movne r0, #0xa + mulne r0, fp, r0 + rsbne r4, r4, r4, lsl #4 + movne fp, r0 +_0230C820: + mov r0, sl + mov r1, sb + mov r2, #6 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230C84C + ldr r0, [sp, #0x30] + cmp r0, #0 + moveq r4, r4, lsl #2 + addeq fp, fp, fp, lsl #2 +_0230C84C: + mov r0, sl + mov r1, sb + mov r2, #0x34 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230C8E0 + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _0230C8E0 + ldr r0, [sb, #0xb4] + mov r1, #1 + str r0, [sp, #0x20] + mov r0, sb + bl ov29_02300634 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x4c] + mov r1, #8 + bl ov29_023023C0 + ldr r1, [sp, #0x4c] + cmp r1, #0 + beq _0230C8C0 + ldr r1, [sp, #0x28] + add r1, r1, r1, lsl #1 + str r1, [sp, #0x28] + ldr r1, [sp, #0x2c] + mov r1, r1, lsl #1 + str r1, [sp, #0x2c] +_0230C8C0: + cmp r0, #0 + beq _0230C8E0 + mov r0, sb + bl ov29_022E63D8 + mov r0, sl + mov r1, sb + ldr r2, _0230C498 ; =0x00000C55 + bl LogMessageByIdWithPopupCheckUserTarget +_0230C8E0: + add r0, sp, #0x90 + ldr r2, [r0] + add r1, sp, #0x94 + mul r0, r2, r4 + ldr r3, [r1] + ldr r2, [sp, #0x28] + cmp fp, #1 + mul r2, r3, r2 + str r2, [r1] + add r1, sp, #0x90 + str r0, [r1] + beq _0230C920 + mov r1, fp + bl DivideInt + add r1, sp, #0x90 + str r0, [r1] +_0230C920: + ldr r0, [sp, #0x2c] + cmp r0, #1 + beq _0230C940 + add r4, sp, #0x94 + mov r1, r0 + ldr r0, [r4] + bl DivideInt + str r0, [r4] +_0230C940: + ldr r0, [sp, #0x90] + strh r0, [r5, #0x12] + ldr r0, [sp, #0x94] + strh r0, [r5, #0x14] + ldr r0, [sp, #0x90] + cmp r0, #0 + movlt r0, #0 + strlt r0, [sp, #0x90] + ldr r1, [sp, #0x90] + ldr r0, _0230C49C ; =0x000003E7 + cmp r1, r0 + strge r0, [sp, #0x90] + ldr r1, [sp, #0x94] + add r0, sp, #0x98 + strh r1, [r5, #0x1a] + ldr r1, [sp, #0x94] + bl IntToFixedPoint64 + ldr r2, [sp, #0x90] + ldr r1, [sp, #0x94] + add r0, sp, #0x88 + sub r1, r2, r1 + bl IntToFixedPoint64 + ldr r1, _0230C4A0 ; =0x020A18D8 + add r0, sp, #0x80 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x88 + add r2, sp, #0x80 + mov r1, r0 + bl DivideFixedPoint64 + ldrb r1, [r6, #0xa] + add r0, sp, #0x80 + bl IntToFixedPoint64 + add r0, sp, #0xa8 + add r1, sp, #0x80 + add r2, sp, #0x88 + bl AddFixedPoint64 + ldr r1, [sp, #0x90] + add r0, sp, #0x80 + bl IntToFixedPoint64 + add r0, sp, #0xa0 + add r2, sp, #0x80 + mov r1, r0 + bl AddFixedPoint64 + add r0, sp, #0xa0 + bl FixedPoint64ToInt + strh r0, [r5, #0x18] + ldrb r1, [r6, #0xa] + add r0, sp, #0xa8 + strh r1, [r5, #0x16] + bl FixedPoint64ToInt + strh r0, [r5, #0x1c] + add r0, sp, #0xa8 + bl FixedPoint64ToInt + mov r1, r0 + ldr r0, _0230C4A4 ; =0x02352984 + bl DebugPrint0__0200C1FC + add r0, sp, #0xa0 + bl FixedPoint64ToInt + mov r1, r0 + ldr r0, _0230C4A8 ; =0x02352990 + bl DebugPrint0__0200C1FC + add r0, sp, #0x98 + bl FixedPoint64ToInt + mov r1, r0 + ldr r0, _0230C4AC ; =0x0235299C + bl DebugPrint0__0200C1FC + ldr r1, _0230C4B0 ; =0x020A18F4 + add r0, sp, #0x70 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x70 + add r1, sp, #0xa0 + mov r2, r0 + bl MultiplyFixedPoint64 + ldr r1, _0230C4B4 ; =0x020A18F0 + add r0, sp, #0x68 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x68 + add r1, sp, #0x98 + mov r2, r0 + bl MultiplyFixedPoint64 + ldr r1, _0230C4B8 ; =0x020A18CC + add r0, sp, #0x78 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x60 + add r1, sp, #0xa8 + add r2, sp, #0x78 + bl AddFixedPoint64 + ldr r1, _0230C4BC ; =0x020A18F8 + add r0, sp, #0x78 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x60 + add r2, sp, #0x78 + mov r1, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0x60 + bl FixedPoint64ToInt + mov r1, r0 + add r0, sp, #0x60 + bl ClampedLn + ldr r1, _0230C4C0 ; =0x020A18EC + add r0, sp, #0x78 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0x60 + add r2, sp, #0x78 + mov r1, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0xb0 + add r1, sp, #0x68 + add r2, sp, #0x70 + bl AddFixedPoint64 + add r0, sp, #0xb0 + add r2, sp, #0x60 + mov r1, r0 + bl AddFixedPoint64 + ldr r1, _0230C4C4 ; =0x020A18D4 + add r0, sp, #0x78 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0xb0 + add r2, sp, #0x78 + mov r1, r0 + bl AddFixedPoint64 + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + bne _0230CB78 + ldrb r0, [r6, #6] + cmp r0, #0 + beq _0230CB78 + ldr r1, _0230C4C8 ; =0x020A18E8 + add r0, sp, #0x78 + ldr r1, [r1] + bl FixedPoint32To64 + add r0, sp, #0xb0 + add r2, sp, #0x78 + mov r1, r0 + bl DivideFixedPoint64 +_0230CB78: + ldr r0, _0230C4CC ; =0x0235286C + add r1, sp, #0xb0 + bl FixedPoint64CmpLt + cmp r0, #0 + ldrne r0, _0230C4D0 ; =0x02352838 + ldrne r1, [r0, #0x38] + ldrne r0, [r0, #0x34] + strne r1, [sp, #0xb4] + strne r0, [sp, #0xb0] + ldr r1, _0230C4D4 ; =0x0235287C + add r0, sp, #0xb0 + bl FixedPoint64CmpLt + cmp r0, #0 + ldrne r0, _0230C4D0 ; =0x02352838 + ldrne r1, [r0, #0x48] + ldrne r0, [r0, #0x44] + strne r1, [sp, #0xb4] + strne r0, [sp, #0xb0] + ldr r0, [sp, #0xf4] + bl IsRegularAttackOrProjectile + cmp r0, #0 + ldr r0, [sp, #0xc] + movne r1, #1 + str r0, [sp] + moveq r1, #0 + and r1, r1, #0xff + str r8, [sp, #4] + str r1, [sp, #8] + ldr r3, [sp, #0x10] + add r0, sp, #0xb8 + mov r1, sl + mov r2, sb + bl ov29_0230AD04 + mov fp, r0 + ldr r0, [sp, #0xc] + cmp r0, #2 + bne _0230CC78 + mov r0, sl + mov r1, sb + bl ov29_02313C74 + movs r4, r0 + beq _0230CC78 + ldrb r0, [r7, #0x15c] + cmp r0, #0 + bne _0230CC78 + ldr r0, [sp, #0xf8] + cmp r0, #0 + beq _0230CC78 + mov r0, #1 + mov r1, sb + strb r0, [r7, #0x15c] + mov r2, #0 + bl SubstitutePlaceholderStringTags + cmp r4, #1 + bne _0230CC68 + ldr r2, _0230D05C ; =0x00000C58 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _0230CC78 +_0230CC68: + ldr r2, _0230D060 ; =0x00000C57 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0230CC78: + ldr r0, [sp, #0xf8] + cmp r0, #0 + beq _0230CD3C + mov r0, sl + mov r1, #0x44 + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + bne _0230CD3C + ldr r0, [sp, #0x18] + cmp r0, #0 + bne _0230CCF0 + ldr r0, [sp, #0xf4] + cmp r0, #0x48 + beq _0230CCBC + ldrb r0, [r7, #0xd5] + cmp r0, #1 + beq _0230CCD0 +_0230CCBC: + mov r0, sb + mov r1, #0x1e + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230CCF0 +_0230CCD0: + mov r0, sb + bl ov29_022E406C + add r0, sp, #0xb8 + ldr r2, _0230D064 ; =0x0235283C + mov r1, r0 + bl MultiplyFixedPoint64 + mov r0, #1 + strb r0, [r5, #0x3a] +_0230CCF0: + ldr r0, [sp, #0x18] + cmp r0, #1 + bne _0230CD3C + ldrb r0, [r7, #0xd5] + cmp r0, #3 + beq _0230CD1C + mov r0, sb + mov r1, #0x1f + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230CD3C +_0230CD1C: + mov r0, sb + bl ov29_022E4018 + add r0, sp, #0xb8 + ldr r2, _0230D064 ; =0x0235283C + mov r1, r0 + bl MultiplyFixedPoint64 + mov r0, #1 + strb r0, [r5, #0x3b] +_0230CD3C: + ldrb r0, [r7, #0xd5] + cmp r0, #0x11 + beq _0230CEEC + mov r0, sl + mov r1, sb + mov r2, #0xc + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + bne _0230CEEC + mov r0, sl + mov r1, sb + mov r2, #0x13 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + bne _0230CEEC + mov r0, sb + mov r1, #0x40 + bl IqSkillIsEnabled + cmp r0, #0 + bne _0230CEEC + ldrsh r0, [r6, #2] + bl GetMonsterGenderVeneer + cmp r0, #2 + ldrne r1, [sp, #0xe8] + ldreq r4, [sp, #0xe8] + addne r0, r1, r1, lsr #31 + addne r4, r1, r0, asr #1 + ldrb r0, [r6, #0xec] + cmp r0, #4 + moveq r0, #1 + streqb r0, [r5, #0x3c] + ldreq r4, _0230C49C ; =0x000003E7 + beq _0230CE74 + mov r0, sl + mov r1, #0x13 + bl ItemIsActive__0230A9DC + cmp r0, #0 + bne _0230CDF0 + mov r0, sl + mov r1, #0x1d + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230CE04 +_0230CDF0: + ldr r0, _0230D068 ; =0x022C46F0 + mov r1, #1 + ldrsh r0, [r0] + strb r1, [r5, #0x38] + add r4, r4, r0 +_0230CE04: + mov r0, sl + mov r1, #0x58 + bl AbilityIsActive2 + cmp r0, #0 + ldrne r0, _0230D06C ; =0x022C4510 + movne r1, #1 + ldrnesh r0, [r0] + strneb r1, [r5, #0x49] + mov r1, #0x14 + addne r4, r4, r0 + mov r0, sb + bl ItemIsActive__0230A9DC + cmp r0, #0 + ldrne r0, _0230D068 ; =0x022C46F0 + movne r1, #1 + ldrnesh r0, [r0] + strneb r1, [r5, #0x39] + addne r4, r4, r0 + cmp fp, #0 + beq _0230CE74 + mov r0, sl + mov r1, #1 + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r0, _0230D070 ; =0x022C45E0 + movne r1, #1 + ldrnesh r4, [r0] + strneb r1, [r5, #0x3d] +_0230CE74: + mov r0, #0x64 + bl DungeonRandInt + cmp r0, r4 + bge _0230CEEC + mov r2, #1 + mov r4, #5 + mov r0, sl + mov r1, sb + add r3, r2, #0xdc0 + str r4, [sp] + bl ov29_02314D40 + cmp r0, #0 + bne _0230CEEC + mov r2, #1 + mov r0, sl + mov r1, #0x5d + strb r2, [r8, #0xe] + bl AbilityIsActive2 + cmp r0, #0 + add r0, sp, #0xb8 + beq _0230CEE0 + ldr r2, _0230D074 ; =0x0235284C + mov r1, r0 + bl MultiplyFixedPoint64 + mov r0, #1 + strb r0, [r5, #0x4a] + b _0230CEEC +_0230CEE0: + ldr r2, _0230D078 ; =0x02352844 + mov r1, r0 + bl MultiplyFixedPoint64 +_0230CEEC: + add r0, sp, #0xb0 + bl FixedPoint64ToInt + str r0, [r5, #0x24] + add r0, sp, #0xb0 + add r2, sp, #0xb8 + mov r1, r0 + bl MultiplyFixedPoint64 + ldr r1, [sp, #0x1c] + add r0, sp, #0x58 + mov r2, r1 + str r2, [r5, #0x2c] + bl FixedPoint32To64 + add r0, sp, #0xb0 + add r2, sp, #0x58 + mov r1, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0xb0 + bl FixedPoint64ToInt + str r0, [r5, #0x20] + mov r0, #0x4000 + bl DungeonRandInt + add r0, r0, #0xe000 + mov r1, #0 + str r0, [sp, #0xbc] + add r0, sp, #0xb0 + str r1, [sp, #0xb8] + add r2, sp, #0xb8 + mov r1, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0x50 + mov r1, #0x64 + bl IntToFixedPoint64 + add r0, sp, #0xb8 + add r1, sp, #0x50 + mov r2, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0xb8 + bl FixedPoint64ToInt + str r0, [r5, #0x28] + add r0, sp, #0xb0 + bl FixedPoint64ToInt + str r0, [r8] + ldr r1, _0230D07C ; =0x00000195 + ldr r0, [sp, #0xf4] + cmp r0, r1 + bne _0230CFBC + ldr r0, [r8] + mov r1, #0x80 + mov r0, r0, lsl #8 + bl MultiplyByFixedPoint + bl RoundUpDiv256 + str r0, [r8] +_0230CFBC: + ldr r1, _0230D07C ; =0x00000195 + ldr r0, [sp, #0xf4] + cmp r0, r1 + bne _0230CFFC + mov r0, sl + mov r1, #0x2f + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230CFFC + ldr r0, _0230D080 ; =0x022C47F8 + ldr r2, [r8] + ldr r1, [r0] + mov r0, r2, lsl #8 + bl MultiplyByFixedPoint + bl RoundUpDiv256 + str r0, [r8] +_0230CFFC: + ldr r0, [r8] + arm_func_end CalcDamage + + arm_func_start ov29_0230D000 +ov29_0230D000: ; 0x0230D000 + cmp r0, #0 + ble _0230D038 + mov r0, sl + mov r1, #0x5b + bl ExclusiveItemEffectIsActive__0230A9B8 + cmp r0, #0 + beq _0230D038 + ldr r0, _0230D084 ; =0x022C4844 + ldr r2, [r8] + ldr r1, [r0] + mov r0, r2, lsl #8 + bl MultiplyByFixedPoint + bl RoundUpDiv256 + str r0, [r8] +_0230D038: + mov r1, #0 + str r1, [r8, #4] + ldr r0, [r8] + cmp r0, #0 + streqb r1, [r8, #0xe] + ldrb r0, [r8, #0xe] + strb r0, [r7, #0x167] +_0230D054: + add sp, sp, #0xc0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230D05C: .word 0x00000C58 +_0230D060: .word 0x00000C57 +_0230D064: .word 0x0235283C +_0230D068: .word 0x022C46F0 +_0230D06C: .word 0x022C4510 +_0230D070: .word 0x022C45E0 +_0230D074: .word 0x0235284C +_0230D078: .word 0x02352844 +_0230D07C: .word 0x00000195 +_0230D080: .word 0x022C47F8 +_0230D084: .word 0x022C4844 + arm_func_end ov29_0230D000 + + arm_func_start ov29_0230D088 +ov29_0230D088: ; 0x0230D088 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x1c + ldr r5, [sp, #0x2c] + ldr r4, [sp, #0x28] + mov lr, r0 + strb r2, [r5, #0xc] + cmp r4, #1 + strb r3, [r5, #0xd] + mov ip, r1 + str r2, [sp] + mov r2, ip + ldr r0, _0230D118 ; =0x000003E7 + movlt r4, #1 + cmp r4, r0 + movgt r4, r0 + add r0, sp, #0x14 + mov r1, lr + mov r3, r4 + str r5, [sp, #4] + mov ip, #0 + str ip, [sp, #8] + bl ov29_0230AD04 + add r0, sp, #0xc + mov r1, r4 + bl IntToFixedPoint64 + add r0, sp, #0xc + add r2, sp, #0x14 + mov r1, r0 + bl MultiplyFixedPoint64 + add r0, sp, #0xc + bl FixedPoint64ToInt + str r0, [r5] + mov r0, #0 + str r0, [r5, #4] + add sp, sp, #0x1c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0230D118: .word 0x000003E7 + arm_func_end ov29_0230D088 + + arm_func_start ov29_0230D11C +ov29_0230D11C: ; 0x0230D11C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xdc + mov r7, r0 + add r0, sp, #0x10 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ResetDamageDesc + add r0, sp, #0x24 + bl ov29_022E2470 + mov r3, #0 + mov r0, #2 + str r0, [sp, #0x18] + str r6, [sp, #0x10] + str r5, [sp, #0x14] + strb r3, [sp, #0x1c] + strb r3, [sp, #0x1e] + strb r3, [sp, #0x1f] + strb r3, [sp, #0x20] + stmia sp, {r3, r4} + str r3, [sp, #8] + mov r1, r7 + add r0, sp, #0x24 + add r2, sp, #0x10 + str r3, [sp, #0xc] + bl ov29_0230863C + add sp, sp, #0xdc + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end ov29_0230D11C + + arm_func_start CalcRecoilDamageFixed +CalcRecoilDamageFixed: ; 0x0230D18C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _0230D238 + ldr r0, [r7] + cmp r0, #1 + bne _0230D1F0 + ldr r0, [r7, #0xb4] + ldrsh r0, [r0, #0x10] + cmp r0, #0 + beq _0230D238 + mov r0, r7 + mov r1, #0x5c + bl AbilityIsActive2 + cmp r0, #0 + beq _0230D1F0 + mov r0, r6, lsl #8 + mov r1, #0x180 + bl MultiplyByFixedPoint + mov r6, r0, asr #8 +_0230D1F0: + ldrb r1, [sp, #0x34] + str r4, [sp] + ldrsh r0, [sp, #0x38] + str r1, [sp, #4] + mov r1, #3 + str r1, [sp, #8] + ldr r1, [sp, #0x3c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + str r1, [sp, #0x10] + ldr r4, [sp, #0x44] + str r0, [sp, #0x14] + arm_func_end CalcRecoilDamageFixed + + arm_func_start ov29_0230D220 +ov29_0230D220: ; 0x0230D220 + mov r0, r7 + mov r1, r7 + mov r2, r6 + mov r3, r5 + str r4, [sp, #0x18] + bl CalcDamageFixed +_0230D238: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end ov29_0230D220 + + arm_func_start CalcDamageFixed +CalcDamageFixed: ; 0x0230D240 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x2c + mov sl, r0 + add r0, sp, #0x18 + mov sb, r1 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x54] + bl ResetDamageDesc + mov r5, #0 + ldrb r0, [sp, #0x58] + ldr r1, [sp, #0x60] + mov r2, #2 + str r2, [sp, #0x20] + str r1, [sp, #0x1c] + strb r6, [sp, #0x24] + strb r5, [sp, #0x26] + strb r5, [sp, #0x27] + strb r0, [sp, #0x25] + cmp r6, #0 + beq _0230D2F8 + add r4, sp, #0x10 +_0230D298: + mov r2, r5, lsl #0x10 + mov r0, sl + mov r1, sb + mov r3, r6 + mov r2, r2, asr #0x10 + bl GetTypeMatchup + str r0, [r4, r5, lsl #2] + add r5, r5, #1 + cmp r5, #2 + blt _0230D298 + mov r0, sl + mov r1, sb + mov r2, #0x35 + mov r3, #1 + bl DefenderAbilityIsActive__0230A940 + cmp r0, #0 + beq _0230D2F8 + ldr r2, [sp, #0x10] + ldr r0, _0230D39C ; =0x022C4D14 + ldr r1, [sp, #0x14] + add r0, r0, r2, lsl #4 + ldr r0, [r0, r1, lsl #2] + cmp r0, #3 + movne r8, #0 +_0230D2F8: + ldrsh r1, [sp, #0x5c] + ldr r0, _0230D3A0 ; =0x00000256 + mov r8, r8, lsl #8 + cmp r1, r0 + bne _0230D334 + mov r0, sl + mov r1, #0x2f + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230D334 + ldr r1, _0230D3A4 ; =0x022C47F8 + mov r0, r8 + ldr r1, [r1] + bl MultiplyByFixedPoint + mov r8, r0 +_0230D334: + mov r0, r8 + bl RoundUpDiv256 + str r0, [sp, #0x18] + cmp r8, #0 + moveq r0, #1 + streqb r0, [sp, #0x28] + movne r0, #0 + strneb r0, [sp, #0x28] + ldrsh r1, [sp, #0x5c] + str r7, [sp] + ldr r0, [sp, #0x64] + str r1, [sp, #4] + str r0, [sp, #8] + ldr r4, [sp, #0x68] + add r2, sp, #0x18 + mov r0, sl + mov r1, sb + mov r3, #0 + str r4, [sp, #0xc] + bl ov29_0230863C + ldr r1, [sp, #0x50] + cmp r1, #0 + ldrneb r0, [sp, #0x28] + strneb r0, [r1] + add sp, sp, #0x2c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0230D39C: .word 0x022C4D14 +_0230D3A0: .word 0x00000256 +_0230D3A4: .word 0x022C47F8 + arm_func_end CalcDamageFixed + + arm_func_start CalcDamageFixedNoCategory +CalcDamageFixedNoCategory: ; 0x0230D3A8 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr lr, [sp, #0x20] + ldrb ip, [sp, #0x24] + str lr, [sp] + ldrsh lr, [sp, #0x28] + str ip, [sp, #4] + mov ip, #3 + str ip, [sp, #8] + ldr ip, [sp, #0x2c] + str lr, [sp, #0xc] + ldr lr, [sp, #0x30] + str ip, [sp, #0x10] + ldr ip, [sp, #0x34] + str lr, [sp, #0x14] + str ip, [sp, #0x18] + bl CalcDamageFixed + add sp, sp, #0x1c + ldmia sp!, {pc} + arm_func_end CalcDamageFixedNoCategory + + arm_func_start CalcDamageFixedWrapper +CalcDamageFixedWrapper: ; 0x0230D3F4 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr ip, [sp, #0x20] + ldrb lr, [sp, #0x24] + str ip, [sp] + ldrb ip, [sp, #0x28] + str lr, [sp, #4] + ldrsh lr, [sp, #0x2c] + str ip, [sp, #8] + ldr ip, [sp, #0x30] + str lr, [sp, #0xc] + ldr lr, [sp, #0x34] + str ip, [sp, #0x10] + ldr ip, [sp, #0x38] + str lr, [sp, #0x14] + str ip, [sp, #0x18] + bl CalcDamageFixed + add sp, sp, #0x1c + ldmia sp!, {pc} + arm_func_end CalcDamageFixedWrapper + + arm_func_start ov29_0230D440 +ov29_0230D440: ; 0x0230D440 + ldr r2, [r1, #0xb4] + ldrb r1, [r2, #9] + cmp r1, #0 + bxeq lr + ldr r1, [r0] + cmp r1, #1 + bxne lr + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + movne r0, #2 + strneb r0, [r2, #9] + moveq r0, #3 + streqb r0, [r2, #9] + bx lr + arm_func_end ov29_0230D440 + + arm_func_start ov29_0230D47C +ov29_0230D47C: ; 0x0230D47C + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #9] + cmp r0, #0 + bxeq lr + cmp r1, #0 + movne r0, #2 + strneb r0, [r2, #9] + moveq r0, #3 + streqb r0, [r2, #9] + bx lr + arm_func_end ov29_0230D47C + + arm_func_start ov29_0230D4A4 +ov29_0230D4A4: ; 0x0230D4A4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r1, #0xe + mov r5, r2 + ldr r4, [r6, #0xb4] + bl MonsterIsType + cmp r0, #0 + beq _0230D4E8 + cmp r5, #1 + cmpne r5, #7 + bne _0230D4E8 + ldrb r0, [r4, #0xfe] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0230D4E8: + mov r4, #0 + b _0230D518 +_0230D4F0: + mov r2, r4, lsl #0x10 + mov r0, r7 + mov r1, r6 + mov r3, r5 + mov r2, r2, asr #0x10 + bl GetTypeMatchup + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + add r4, r4, #1 +_0230D518: + cmp r4, #2 + blt _0230D4F0 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0230D4A4 + + arm_func_start ResetDamageCalcScratchSpace +ResetDamageCalcScratchSpace: ; 0x0230D528 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _0230D614 ; =0x02353538 + mov r1, #0x54 + ldr r4, [r0] + add r5, r4, #0x184 + mov r0, r5 + bl MemZero + mov r1, #0 + strb r1, [r4, #0x184] + str r1, [r5, #4] + strb r1, [r5, #8] + strb r1, [r5, #9] + mov r0, #0xa + strb r0, [r5, #0xa] + strb r0, [r5, #0xb] + mov r0, #1 + strh r0, [r5, #0xc] + strh r0, [r5, #0xe] + strh r1, [r5, #0x10] + strh r1, [r5, #0x14] + strh r1, [r5, #0x12] + strh r1, [r5, #0x16] + strh r1, [r5, #0x1c] + str r1, [r5, #0x20] + str r1, [r5, #0x28] + str r1, [r5, #0x2c] + strb r1, [r5, #0x30] + strb r1, [r5, #0x31] + strb r1, [r5, #0x36] + strb r1, [r5, #0x37] + strb r1, [r5, #0x34] + strb r1, [r5, #0x35] + strb r1, [r5, #0x38] + strb r1, [r5, #0x39] + strb r1, [r5, #0x3a] + strb r1, [r5, #0x3b] + strb r1, [r5, #0x3c] + strb r1, [r5, #0x3d] + strb r1, [r5, #0x3e] + strb r1, [r5, #0x40] + strb r1, [r5, #0x3f] + strb r1, [r5, #0x41] + strb r1, [r5, #0x42] + strb r1, [r5, #0x43] + strb r1, [r5, #0x44] + strb r1, [r5, #0x45] + strb r1, [r5, #0x46] + strb r1, [r5, #0x47] + strb r1, [r5, #0x48] + strb r1, [r5, #0x4b] + strb r1, [r5, #0x4c] + strb r1, [r5, #0x4d] + strb r1, [r5, #0x4e] + strb r1, [r5, #0x4f] + strb r1, [r5, #0x50] + strb r1, [r5, #0x51] + strb r1, [r5, #0x32] + strb r1, [r5, #0x33] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230D614: .word 0x02353538 + arm_func_end ResetDamageCalcScratchSpace + + arm_func_start ov29_0230D618 +ov29_0230D618: ; 0x0230D618 + ldr r1, _0230D624 ; =0x02352894 + ldr r0, [r1, r0, lsl #2] + bx lr + .align 2, 0 +_0230D624: .word 0x02352894 + arm_func_end ov29_0230D618 + + arm_func_start ov29_0230D628 +ov29_0230D628: ; 0x0230D628 + stmdb sp!, {r3, lr} + ldr r1, _0230D650 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x1a000 + ldr r1, [r1, #0x22c] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r1, #1 + bl ov29_022E2E54 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D650: .word 0x02353538 + arm_func_end ov29_0230D628 + + arm_func_start ov29_0230D654 +ov29_0230D654: ; 0x0230D654 + stmdb sp!, {r4, lr} + mov r4, r1 + bl EntityIsValid__02308FBC + cmp r0, #0 + beq _0230D678 + mov r0, r4 + bl EntityIsValid__02308FBC + cmp r0, #0 + bne _0230D680 +_0230D678: + mov r0, #1 + ldmia sp!, {r4, pc} +_0230D680: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_0230D654 + + arm_func_start ov29_0230D688 +ov29_0230D688: ; 0x0230D688 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldrh r3, [r4] + mov r1, #0x55 + mov r2, #2 + strh r3, [sp] + ldrh r3, [r4, #2] + strh r3, [sp, #2] + ldrh r3, [r4, #4] + strh r3, [sp, #4] + bl ov29_02344BD0 + mov r0, r4 + bl SetItemAcquired + ldrb r0, [sp, #1] + strb r0, [r4, #1] + cmp r0, #0 + beq _0230D6FC + add r0, sp, #0 + bl GetEquivItemIndex + cmp r0, #0 + blt _0230D6FC + bl GetItemAtIdx + ldrh r1, [r4] + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + ldrh r1, [r4, #4] + strh r1, [r0, #4] +_0230D6FC: + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end ov29_0230D688 + + arm_func_start ov29_0230D704 +ov29_0230D704: ; 0x0230D704 + mov r0, #0 + bx lr + arm_func_end ov29_0230D704 + + arm_func_start ov29_0230D70C +ov29_0230D70C: ; 0x0230D70C + stmdb sp!, {r3, lr} + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _0230D734 ; =0x022C45B4 + arm_func_end ov29_0230D70C + + arm_func_start ov29_0230D71C +ov29_0230D71C: ; 0x0230D71C + ldrsh r1, [r1] + cmp r0, r1 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D734: .word 0x022C45B4 + arm_func_end ov29_0230D71C + + arm_func_start ov29_0230D738 +ov29_0230D738: ; 0x0230D738 + stmdb sp!, {r3, lr} + cmp r2, #0 + bne _0230D760 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _0230D768 ; =0x022C45B4 + ldrsh r1, [r1] + cmp r0, r1 + movlt r0, #1 + ldmltia sp!, {r3, pc} +_0230D760: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230D768: .word 0x022C45B4 + arm_func_end ov29_0230D738 + + arm_func_start ov29_0230D76C +ov29_0230D76C: ; 0x0230D76C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl IsMonster__0230A994 + cmp r0, #0 + beq _0230D798 + mov r0, r5 + bl IsMonster__0230A994 + cmp r0, #0 + bne _0230D7A0 +_0230D798: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0230D7A0: + ldr r0, [r6, #0xb4] + ldr r1, [r5, #0xb4] + ldrsh r0, [r0, #2] + ldrsh r1, [r1, #2] + bl sub_02054EC8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl ov29_0230D738 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0230D76C + + arm_func_start ov29_0230D7D4 +ov29_0230D7D4: ; 0x0230D7D4 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r2, _0230D870 ; =0x023535D4 + mvn r1, #0 + ldrsh r3, [r2] + mov r4, r0 + cmp r3, r1 + beq _0230D808 + ldrsh r0, [r2] + bl ov10_022BDE50 + ldr r0, _0230D870 ; =0x023535D4 + mvn r1, #0 + strh r1, [r0] +_0230D808: + mov r2, #0 + mov r1, #1 + str r2, [sp] + stmib sp, {r1, r2} + mov r0, r4 + rsb r1, r1, #0x2b8 + mov r3, #3 + str r2, [sp, #0xc] + bl ov29_022E35E4 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mvn r0, #0 + cmp r5, r0 + beq _0230D868 + mov r4, #0x18 + b _0230D850 +_0230D848: + mov r0, r4 + bl AdvanceFrame +_0230D850: + mov r0, r5 + bl ov10_022BF964 + cmp r0, #0 + bne _0230D848 + mov r0, r5 + bl ov10_022BDE50 +_0230D868: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230D870: .word 0x023535D4 + arm_func_end ov29_0230D7D4 + + arm_func_start ov29_0230D874 +ov29_0230D874: ; 0x0230D874 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr lr, [r5, #0xb4] + ldr ip, [r4, #0xb4] + ldrsh r3, [lr, #0x28] + ldrsh r1, [lr, #0x2a] + ldrsh r0, [ip, #0x28] + cmp r2, #0 + strh r0, [lr, #0x28] + ldrsh r0, [ip, #0x2a] + strh r0, [lr, #0x2a] + strh r3, [ip, #0x28] + strh r1, [ip, #0x2a] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0230D8E4 ; =0x00000F2D + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230D8E4: .word 0x00000F2D + arm_func_end ov29_0230D874 + + arm_func_start ov29_0230D8E8 +ov29_0230D8E8: ; 0x0230D8E8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr lr, [r5, #0xb4] + ldr ip, [r4, #0xb4] + ldr r3, [lr, #0x3c] + ldr r1, [lr, #0x40] + ldr r0, [ip, #0x3c] + cmp r2, #0 + str r0, [lr, #0x3c] + ldr r0, [ip, #0x40] + str r0, [lr, #0x40] + str r3, [ip, #0x3c] + str r1, [ip, #0x40] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + arm_func_end ov29_0230D8E8 + + arm_func_start ov29_0230D92C +ov29_0230D92C: ; 0x0230D92C + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0230D958 ; =0x00000F2E + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230D958: .word 0x00000F2E + arm_func_end ov29_0230D92C + + arm_func_start ov29_0230D95C +ov29_0230D95C: ; 0x0230D95C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr lr, [r5, #0xb4] + ldr ip, [r4, #0xb4] + ldrsh r3, [lr, #0x24] + ldrsh r1, [lr, #0x26] + ldrsh r0, [ip, #0x24] + cmp r2, #0 + strh r0, [lr, #0x24] + ldrsh r0, [ip, #0x26] + strh r0, [lr, #0x26] + strh r3, [ip, #0x24] + strh r1, [ip, #0x26] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0230D9CC ; =0x00000F2B + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230D9CC: .word 0x00000F2B + arm_func_end ov29_0230D95C + + arm_func_start ov29_0230D9D0 +ov29_0230D9D0: ; 0x0230D9D0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr lr, [r5, #0xb4] + ldr ip, [r4, #0xb4] + ldr r3, [lr, #0x34] + ldr r1, [lr, #0x38] + ldr r0, [ip, #0x34] + cmp r2, #0 + str r0, [lr, #0x34] + ldr r0, [ip, #0x38] + str r0, [lr, #0x38] + str r3, [ip, #0x34] + str r1, [ip, #0x38] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0230DA40 ; =0x00000F2C + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230DA40: .word 0x00000F2C + arm_func_end ov29_0230D9D0 + + arm_func_start ov29_0230DA44 +ov29_0230DA44: ; 0x0230DA44 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr lr, [r5, #0xb4] + ldr ip, [r4, #0xb4] + ldrsh r3, [lr, #0x2c] + ldrsh r1, [lr, #0x2e] + ldrsh r0, [ip, #0x2c] + cmp r2, #0 + strh r0, [lr, #0x2c] + ldrsh r0, [ip, #0x2e] + strh r0, [lr, #0x2e] + strh r3, [ip, #0x2c] + strh r1, [ip, #0x2e] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0230DAB4 ; =0x00000F2F + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230DAB4: .word 0x00000F2F + arm_func_end ov29_0230DA44 + + arm_func_start ov29_0230DAB8 +ov29_0230DAB8: ; 0x0230DAB8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr ip, [r5, #0xb4] + mov r4, r1 + ldrsh r1, [ip, #0x24] + ldr r3, [ip, #0x34] + ldr r0, [ip, #0x3c] + cmp r2, #0 + str r0, [ip, #0x34] + ldrsh r0, [ip, #0x28] + strh r0, [ip, #0x24] + str r3, [ip, #0x3c] + strh r1, [ip, #0x28] + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + mov r2, #0xf30 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0230DAB8 + + arm_func_start ov29_0230DB14 +ov29_0230DB14: ; 0x0230DB14 + stmdb sp!, {r4, lr} + ldr r1, _0230DBC8 ; =0x02353538 + mov r4, r0 + ldr r1, [r1] + ldrb r1, [r1, #0x759] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl ov29_022EFA6C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0x97 + ldreq r0, _0230DBC8 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x700 + ldreqsb r0, [r0, #0x98] + cmpeq r0, #2 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, _0230DBCC ; =0x000001A3 + cmp r4, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + cmp r4, #0x1a4 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r1, #2 + cmp r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + sub r0, r1, #0xa + cmp r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + sub r0, r1, #9 + cmp r4, r0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + sub r0, r1, #8 + cmp r4, r0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_0230DBC8: .word 0x02353538 +_0230DBCC: .word 0x000001A3 + arm_func_end ov29_0230DB14 + + arm_func_start ov29_0230DBD0 +ov29_0230DBD0: ; 0x0230DBD0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r2, _0230E024 ; =0x02353538 + mov r8, r0 + ldr r0, [r2] + mov r7, r1 + ldrb r0, [r0, #0x748] + ldr r5, [r8, #0xb4] + ldr r6, [r7, #0xb4] + bl IsRecruitingAllowed + cmp r0, #0 + beq _0230DC28 + bl ov29_023361D4 + cmp r0, #0 + bne _0230DC28 + bl IsLegendaryChallengeFloor + cmp r0, #0 + bne _0230DC28 + mov r0, #0xa + mov r1, #6 + bl IsCurrentMissionTypeExact + cmp r0, #0 + beq _0230DC30 +_0230DC28: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230DC30: + ldr r0, _0230E024 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x75d] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r1, #0x748] + cmp r0, #0x5b + bne _0230DC70 + ldrsh r1, [r6, #2] + ldr r0, _0230E028 ; =0x000001E6 + cmp r1, r0 + addne r0, r0, #0x258 + cmpne r1, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230DC70: + ldrsh r0, [r6, #2] + cmp r0, #0x91 + cmpne r0, #0x90 + cmpne r0, #0x92 + ldrne r2, _0230E02C ; =0x0000010F + cmpne r0, r2 + subne r1, r2, #1 + cmpne r0, r1 + cmpne r0, #0x110 + cmpne r0, #0x19c + addne r1, r2, #0x8e + cmpne r0, r1 + addne r1, r2, #0x92 + cmpne r0, r1 + cmpne r0, #0x1a0 + addne r1, r2, #0x93 + cmpne r0, r1 + addne r1, r2, #0x8a + cmpne r0, r1 + addne r1, r2, #0x8b + cmpne r0, r1 + addne r1, r2, #0x8c + cmpne r0, r1 + beq _0230DCF0 + ldr r1, _0230E030 ; =0xFFFFFDEA + add r1, r0, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + bhi _0230DD04 +_0230DCF0: + mov r1, #1 + bl IsMonsterOnTeam + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230DD04: + mov r0, r6 + bl ov29_022FBDE0 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsh r0, [r6, #2] + bl ov29_0230DB14 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsh r1, [r8, #4] + ldrsh r0, [r7, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _0230DD5C + ldrsh r1, [r8, #6] + ldrsh r0, [r7, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _0230DD64 +_0230DD5C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230DD64: + ldrb r0, [r6, #0x48] + cmp r0, #0xfa + ldrneb r0, [r6, #0xbc] + cmpne r0, #7 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + mov r1, r8 + bl ov29_022E274C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #1 + bl ov29_022E1B28 + bl ov29_022E81F8 + ldrsh r0, [r6, #2] + mov r1, #1 + bl IsMonsterOnTeam + mov sb, r0 + mov r0, #0x3e8 + bl DungeonRandInt + mov r4, r0 + bl HasPlayedOldGame + cmp r0, #0 + beq _0230DDE0 + cmp sb, #0 + bne _0230DDE0 + ldrsh r0, [r6, #2] + bl GetRecruitRate2 + mov r6, r0 + b _0230DDEC +_0230DDE0: + ldrsh r0, [r6, #2] + bl GetRecruitRate1 + mov r6, r0 +_0230DDEC: + cmp r6, #0 + ble _0230DDFC + cmp sb, #0 + movne r6, r6, asr #1 +_0230DDFC: + ldr r0, _0230E034 ; =0xFFFFFC19 + cmp r6, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r8 + mov r1, #0x35 + bl ItemIsActive__0230E578 + cmp r0, #0 + ldrne r0, _0230E038 ; =0x022C44FC + ldrnesh r0, [r0] + addne r6, r6, r0 + bne _0230DFD4 + mov r0, r8 + mov r1, #0x39 + bl ItemIsActive__0230E578 + cmp r0, #0 + ldrne r0, _0230E03C ; =0x022C443C + ldrnesh r0, [r0] + addne r6, r6, r0 + bne _0230DFD4 + mov r0, r8 + mov r1, #0x3a + bl ItemIsActive__0230E578 + cmp r0, #0 + ldrne r0, _0230E040 ; =0x022C447C + ldrnesh r0, [r0] + addne r6, r6, r0 + bne _0230DFD4 + mov r0, r8 + mov r1, #0x3b + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DEA0 + mov r0, r7 + mov r1, #6 + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E044 ; =0x022C441C + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DEA0: + mov r0, r8 + mov r1, #0x3c + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DED4 + mov r0, r7 + mov r1, #2 + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E048 ; =0x022C4410 + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DED4: + mov r0, r8 + mov r1, #0x3d + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DF08 + mov r0, r7 + mov r1, #9 + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E04C ; =0x022C470C + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DF08: + mov r0, r8 + mov r1, #0x3e + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DF3C + mov r0, r7 + mov r1, #3 + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E050 ; =0x022C4708 + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DF3C: + mov r0, r8 + mov r1, #0x3f + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DF70 + mov r0, r7 + mov r1, #0xd + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E054 ; =0x022C4704 + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DF70: + mov r0, r8 + mov r1, #0x40 + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DFA4 + mov r0, r7 + mov r1, #4 + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E058 ; =0x022C4700 + ldrnesh r0, [r0] + addne r6, r6, r0 + b _0230DFD4 +_0230DFA4: + mov r0, r8 + mov r1, #0x41 + bl ItemIsActive__0230E578 + cmp r0, #0 + beq _0230DFD4 + mov r0, r7 + mov r1, #0xa + bl MonsterIsType + cmp r0, #0 + ldrne r0, _0230E05C ; =0x022C46FC + ldrnesh r0, [r0] + addne r6, r6, r0 +_0230DFD4: + mov r0, r8 + mov r1, #0x1e + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r0, _0230E038 ; =0x022C44FC + ldrb r1, [r5, #0xa] + ldrnesh r0, [r0] + mov r1, r1, lsl #1 + addne r6, r6, r0 + ldr r0, _0230E060 ; =0x022C5064 + ldrsh r0, [r0, r1] + add r0, r6, r0 + cmp r4, r0 + mov r0, #0 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + bl GetFirstEmptyMemberIdx + cmp r0, #0 + movlt r0, #0 + movge r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230E024: .word 0x02353538 +_0230E028: .word 0x000001E6 +_0230E02C: .word 0x0000010F +_0230E030: .word 0xFFFFFDEA +_0230E034: .word 0xFFFFFC19 +_0230E038: .word 0x022C44FC +_0230E03C: .word 0x022C443C +_0230E040: .word 0x022C447C +_0230E044: .word 0x022C441C +_0230E048: .word 0x022C4410 +_0230E04C: .word 0x022C470C +_0230E050: .word 0x022C4708 +_0230E054: .word 0x022C4704 +_0230E058: .word 0x022C4700 +_0230E05C: .word 0x022C46FC +_0230E060: .word 0x022C5064 + arm_func_end ov29_0230DBD0 + + arm_func_start ov29_0230E064 +ov29_0230E064: ; 0x0230E064 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x114 + mov sl, r0 + mov r0, #0xa + mov r5, #0 + mov sb, r1 + mov r8, r2 + bl ov29_0234BA54 + mov r0, r5 + bl ov29_0234B1A4 + bl ov29_0234D630 + add r0, sb, #4 + add r1, sl, #4 + mvn r7, #0 + bl GetDirectionTowardsPosition + mov r6, r0 + ldr r4, [sb, #0xb4] + mov r0, r5 + strb r0, [sb, #0x22] + mov r0, sl + mov r1, sb + bl ov29_02305F60 + mov r1, r6 + mov r0, sb + bl ov29_02304A48 + ldrsh r0, [r4, #2] + mov r1, #1 + bl IsMonsterOnTeam + cmp r0, #0 + beq _0230E0FC + bl ov29_0234B034 + mov r1, #1 + str r1, [sp] + mov r1, r5 + ldr r2, [sb, #0xb4] + mov r3, r1 + bl ov29_0230040C + b _0230E114 +_0230E0FC: + bl ov29_0234B034 + mov r1, r5 + str r1, [sp] + ldr r2, [sb, #0xb4] + mov r3, r1 + bl ov29_0230040C +_0230E114: + bl ov29_0234B034 + mov r1, r0 + mov r3, #1 + mov r2, #0 + str r3, [sp] + ldr r0, _0230E55C ; =0x00000C77 + mov r3, r2 + bl ov29_0234D7C0 + cmp r0, #2 + moveq r4, #0 + beq _0230E524 + mov r4, #1 + mov r0, #0 + orr r1, r4, #2 + strb r1, [sp, #0xac] + strb r0, [sp, #0xad] + ldrsh r2, [r8, #0xc] + ldr r1, _0230E560 ; =0x02353538 + sub r3, r0, #1 + strb r2, [sp, #0xae] + strh r4, [sp, #0xb2] + ldr r2, [r1] + ldrh r4, [r8, #0x44] + add r1, sp, #0x14 + strh r4, [r1, #0xf2] + ldrh r4, [r8, #0x46] + strh r4, [r1, #0xf4] + strb r0, [sp, #0x104] + strh r3, [sp, #0xb4] + strh r3, [sp, #0xb6] + ldrsh r1, [r8] + strh r1, [sp, #0xb8] + ldrb r1, [r2, #0x748] + strb r1, [sp, #0xaf] + ldrb r1, [r2, #0x749] + add r2, sp, #0xac + strb r1, [sp, #0xb0] + ldrsh r1, [r8, #6] + strh r1, [sp, #0xba] + ldrsh r1, [r8, #6] + strh r1, [sp, #0xbc] + ldrh r1, [r8, #0x14] + strh r1, [sp, #0xf0] + ldrh r1, [r8, #0x16] + strh r1, [sp, #0xf2] + ldrh r1, [r8, #0x18] + strh r1, [sp, #0xf4] + ldrh r1, [r8, #0x1a] + strh r1, [sp, #0xf6] +_0230E1D8: + add r4, r8, r0 + ldrb r1, [r4, #8] + add r3, r2, r0 + add r0, r0, #1 + strb r1, [r3, #0x12] + ldrb r1, [r4, #0xa] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + strb r1, [r3, #0x14] + cmp r0, #2 + blt _0230E1D8 + ldr r0, [r8, #0x10] + add r2, sp, #0xc8 + str r0, [sp, #0xc4] + add r3, r8, #0x22 + mov r1, #0x11 +_0230E218: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0230E218 + ldrh r0, [r8, #0x1c] + strh r0, [sp, #0xea] + ldrh r0, [r8, #0x1e] + strh r0, [sp, #0xec] + ldrh r0, [r8, #0x20] + strh r0, [sp, #0xee] + ldrsh r0, [r8] + bl GetNameString + mov r1, r0 + add r0, sp, #0x100 + add r0, r0, #0xa + mov r2, #0xa + bl sub_02025314 + ldrsh r1, [sp, #0xb8] + ldrsh r2, [sp, #0xb2] + add r0, sp, #0xf8 + bl sub_02058EB0 + add r1, sp, #0x100 + add r0, sp, #0x98 + add r1, r1, #0xa + mov r2, #0xa + add r4, sp, #0x18 + bl StrncpySimpleNoPad + bl ov29_022EACAC + bl ov29_0234B034 + mov r1, r0 + mov r0, #1 + str r0, [sp] + mov r2, #0 + ldr r0, _0230E564 ; =0x00000C7B + mov r3, r2 + bl ov29_0234D7C0 + cmp r0, #1 + bne _0230E2D4 + bl ov29_0234D838 + add r6, sp, #0x100 + add r6, r6, #0xa +_0230E2BC: + mov r0, r6 + add r1, sp, #0x98 + mov r2, #0 + bl ov29_0234F008 + cmp r0, #0 + beq _0230E2BC +_0230E2D4: + add r1, sp, #0xac + mov r0, r4 + bl sub_020585B4 + mov r1, r4 + mov r0, #0 + bl ov29_0234B0B4 + mov r0, #1 + mov r1, #0 + bl ov29_0234B084 + ldr r0, _0230E568 ; =0x00000C7E + bl ov29_0230E658 + ldrsh r1, [r8, #2] + ldrsh r2, [r8, #4] + mov r0, sb + bl ov29_02337EC0 + ldrsh r2, [r8, #2] + ldrsh r3, [r8, #4] + mov r0, sl + mov r1, sb + bl ov29_0230E5A8 + cmp r0, #0 + bne _0230E42C + add r0, sp, #0xac + mvn r1, #0 + bl ov29_0230E5FC + mov r7, r0 + b _0230E410 +_0230E340: + ldr r0, _0230E56C ; =0x00000C7F + bl ov29_0230E658 + mvn r4, #0 +_0230E34C: + bl ov29_0234D838 + add r1, sp, #0x100 + mov r0, sb + add r1, r1, #0xa + bl ov29_0234EE10 + movs r6, r0 + beq _0230E3D4 + cmp r6, sb + add r0, sp, #0x58 + bne _0230E380 + add r1, sp, #0xac + bl sub_020585B4 + b _0230E38C +_0230E380: + ldr r1, [r6, #0xb4] + ldrsh r1, [r1, #0xc] + bl sub_020584FC +_0230E38C: + mov r0, #0 + add r1, sp, #0x58 + bl ov29_0234B0B4 + mov r0, #1 + mov r1, sl + mov r2, #0 + bl SubstitutePlaceholderStringTags + bl ov29_0234B034 + mov r1, #1 + mov r2, #0 + str r1, [sp] + mov r1, r0 + mov r0, #0xc80 + mov r3, r2 + bl ov29_0234D7C0 + mov fp, r0 + cmp fp, r4 + beq _0230E34C +_0230E3D4: + cmp fp, #2 + cmpne r6, #0 + beq _0230E410 + ldr r0, _0230E56C ; =0x00000C7F + add r0, r0, #2 + bl ov29_0230E658 + mov r0, r6 + bl ov29_022E68BC + ldr r1, _0230E570 ; =0x00000233 + mov r0, r6 + mov r2, sl + bl HandleFaint + cmp r6, sb + moveq r4, #1 + beq _0230E524 +_0230E410: + mov r0, sl + mov r1, sb + ldrsh r2, [r8, #2] + ldrsh r3, [r8, #4] + bl ov29_0230E5A8 + cmp r0, #0 + beq _0230E340 +_0230E42C: + mov r6, #0 + mov r4, r6 + mov r5, #1 + b _0230E468 +_0230E43C: + mov r0, r6 + bl GetActiveTeamMember + ldrb r0, [r0] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _0230E470 + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0230E468: + cmp r6, #4 + blt _0230E43C +_0230E470: + add r0, sp, #0xac + mov r1, r7 + strh r6, [sp, #0xb6] + bl ov29_0230E5FC + strh r0, [sp, #0xb4] + ldrsh r1, [sp, #0xb4] + mov r0, r6 + bl sub_02056698 + ldr r1, _0230E570 ; =0x00000233 + mov r0, sb + mov r2, sl + bl HandleFaint + mov r0, r6 + bl GetActiveTeamMember + mov r4, r0 + add r7, sp, #0xac + mov r6, r4 + mov r5, #6 +_0230E4B8: + ldmia r7!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _0230E4B8 + ldmia r7, {r0, r1} + stmia r6, {r0, r1} + bl ov29_022E8104 + bl ov29_022E81F8 + add r1, sp, #0x14 + mov r0, #0 + str r1, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + ldrsh r2, [r8, #4] + mov r3, r4 + bl InitTeamMember + ldrsh r0, [r4, #0xc] + bl SetPokemonJoined + bl ov29_022E8104 + bl ov29_022E81F8 + ldr r5, [sp, #0x14] + mov r4, #1 +_0230E524: + mov r0, #1 + bl ov29_0234D8A0 + cmp r4, #0 + bne _0230E540 + ldr r1, _0230E574 ; =0x00000C78 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_0230E540: + cmp r5, #0 + beq _0230E550 + mov r0, r5 + bl ov29_02321104 +_0230E550: + mov r0, r4 + add sp, sp, #0x114 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230E55C: .word 0x00000C77 +_0230E560: .word 0x02353538 +_0230E564: .word 0x00000C7B +_0230E568: .word 0x00000C7E +_0230E56C: .word 0x00000C7F +_0230E570: .word 0x00000233 +_0230E574: .word 0x00000C78 + arm_func_end ov29_0230E064 + + arm_func_start ItemIsActive__0230E578 +ItemIsActive__0230E578: ; 0x0230E578 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__0230E578 + + arm_func_start ov29_0230E5A8 +ov29_0230E5A8: ; 0x0230E5A8 + stmdb sp!, {r4, lr} + ldr r4, [r1, #0xb4] + mov r1, r2 + ldrsh r0, [r4, #2] + mov r2, r3 + mov r3, #1 + bl ov29_022FD318 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldrsh r0, [r4, #2] + bl ov29_022FBC94 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl sub_02056830 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end ov29_0230E5A8 + + arm_func_start ov29_0230E5FC +ov29_0230E5FC: ; 0x0230E5FC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x44 + mov r5, r0 + mov r4, r1 + add r0, sp, #0 + mov r1, r5 + bl sub_020534BC + mov r1, #0 + sub r0, r1, #1 + strb r1, [sp, #6] + strb r1, [sp, #7] + cmp r4, r0 + bne _0230E640 + add r0, sp, #0 + bl sub_02055CCC + mov r4, r0 + b _0230E64C +_0230E640: + ldrsh r0, [r5, #8] + add r1, sp, #0 + bl sub_02055D7C +_0230E64C: + mov r0, r4 + add sp, sp, #0x44 + ldmia sp!, {r4, r5, pc} + arm_func_end ov29_0230E5FC + + arm_func_start ov29_0230E658 +ov29_0230E658: ; 0x0230E658 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl sub_02025888 + mov r5, r0 + mov r0, r4 + bl StringFromMessageId + mov r4, r0 + bl ov29_0234B034 + mov r2, r4 + str r0, [sp] + mov r0, r5 + mov r1, #0x400 + mov r3, r1 + bl PreprocessString + mov r0, r5 + bl ov29_0234BB50 + bl ov29_0234B034 + mov r1, r0 + mov r0, r5 + mov r2, #1 + str r2, [sp] + mov r2, #0 + mov r3, r2 + bl ov29_0234D6C8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0230E658 + + arm_func_start TrySpawnMonsterAndTickSpawnCounter +TrySpawnMonsterAndTickSpawnCounter: ; 0x0230E6BC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + ldr r0, _0230E8D8 ; =0x02353538 + mov r6, #0 + ldr r7, [r0] + add r0, r7, #0x700 + ldrsh r1, [r0, #0x86] + cmp r1, #0 + beq _0230E8D0 + ldrsh r1, [r0, #0x82] + add r1, r1, #1 + strh r1, [r0, #0x82] + ldrb r1, [r7, #0x790] + cmp r1, #0 + bne _0230E710 + ldr r1, _0230E8DC ; =0x022C44DC + ldrsh r2, [r0, #0x82] + ldrsh r0, [r1] + cmp r2, r0 + bge _0230E724 + b _0230E8D0 +_0230E710: + ldr r1, _0230E8E0 ; =0x022C4640 + ldrsh r2, [r0, #0x82] + ldrsh r0, [r1] + cmp r2, r0 + blt _0230E8D0 +_0230E724: + cmp r2, #0x384 + ble _0230E76C + add r0, r7, #0x19000 + ldr r4, [r0, #0x908] + mov r0, r4 + bl EntityIsValid__0230E8F0 + cmp r0, #0 + beq _0230E76C + add r0, r7, #0x19000 + ldrh r1, [r4, #0x26] + ldr r0, [r0, #0x910] + cmp r1, r0 + bne _0230E76C + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r6, r4 +_0230E76C: + mov r5, #0 + add r0, r7, #0x700 + strh r5, [r0, #0x82] + add r0, r7, #0x19000 + mov r4, r5 + str r5, [r0, #0x908] +_0230E784: + add r0, r7, r4, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb38] + mov r0, r8 + bl EntityIsValid__0230E8F0 + cmp r0, #0 + beq _0230E7B8 + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + bl GetTile + ldrh r0, [r0] + tst r0, #0x100 + addeq r5, r5, #1 +_0230E7B8: + add r4, r4, #1 + cmp r4, #0x10 + blt _0230E784 + ldrb r0, [r7, #0x790] + cmp r0, #0 + bne _0230E80C + ldr r0, _0230E8D8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xc9] + cmp r0, #0xff + bne _0230E7FC + ldr r0, _0230E8E4 ; =0x022C4430 + ldrsh r0, [r0] + cmp r5, r0 + blt _0230E80C + b _0230E8D0 +_0230E7FC: + ldr r0, _0230E8E8 ; =0x022C46A4 + ldrsh r0, [r0] + cmp r5, r0 + bge _0230E8D0 +_0230E80C: + cmp r6, #0 + beq _0230E828 + ldr r1, _0230E8EC ; =0x00000C5D + mov r0, #0 + bl LogMessageByIdWithPopup + mov r0, r6 + bl ov29_022E62F0 +_0230E828: + ldrb r0, [r7, #0x790] + cmp r0, #0 + beq _0230E83C + bl GetKecleonIdToSpawnByFloor + b _0230E844 +_0230E83C: + mov r0, #0 + bl GetMonsterIdToSpawn +_0230E844: + mov r5, r0 + mov r0, r5 + bl GetMonsterLevelToSpawn + movs r4, r0 + mov r0, r5 + mov r1, #0 + moveq r4, #1 + bl MewSpawnCheck + cmp r0, #0 + beq _0230E8D0 + add r0, sp, #0xa + mov r1, #0 + bl ov29_022E9628 + cmp r0, #0 + beq _0230E8D0 + mov r1, #0 + mov r0, #0x64 + strh r5, [sp] + strh r4, [sp, #8] + strb r1, [sp, #2] + bl DungeonRandInt + ldr r1, _0230E8D8 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + ldrb r0, [r0, #0x748] + bl GetRandomMovementChance + cmp r4, r0 + movlt r0, #1 + strlt r0, [sp, #4] + movge r0, #0 + strge r0, [sp, #4] + mov r1, #0 + add r0, sp, #0 + strb r1, [sp, #0xe] + bl SpawnMonster +_0230E8D0: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0230E8D8: .word 0x02353538 +_0230E8DC: .word 0x022C44DC +_0230E8E0: .word 0x022C4640 +_0230E8E4: .word 0x022C4430 +_0230E8E8: .word 0x022C46A4 +_0230E8EC: .word 0x00000C5D + arm_func_end TrySpawnMonsterAndTickSpawnCounter diff --git a/asm/overlay_29_0230E914.s b/asm/overlay_29_0230E914.s new file mode 100644 index 00000000..6114ffea --- /dev/null +++ b/asm/overlay_29_0230E914.s @@ -0,0 +1,497 @@ + .include "asm/macros.inc" + .include "overlay_29_0230E914.inc" + + .text + + arm_func_start ov29_0230E914 +ov29_0230E914: ; 0x0230E914 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x50 + mov sl, r0 + ldr r7, [sl, #0xb4] + bl ov29_02300B40 + cmp r0, #0 + movne r0, #0 + strneb r0, [r7, #0x109] + bne _0230ED98 + ldrb r0, [r7, #0x109] + cmp r0, #0 + beq _0230EAF0 + ldrb r0, [r7, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230ED98 + ldrsh r0, [r7, #0x66] + bl GetItemCategoryVeneer + cmp r0, #0 + bne _0230EA08 + mov r0, sl + add r2, r7, #0x62 + mov r1, #2 + mov r3, #1 + bl ov29_0230EDB0 + mov r4, #0 + ldr r6, _0230EDA0 ; =0x0237C9D8 + ldr r5, _0230EDA4 ; =0x023536FC + b _0230E9DC +_0230E990: + ldr r0, [r6, r4, lsl #2] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0230E9D8 + add r0, r7, #0x4a + mov r1, #0x24 + bl SetMonsterActionFields + mov r0, #0x81 + strb r0, [r7, #0x4e] + ldrsh r1, [sl, #4] + ldr r0, _0230EDA8 ; =0x0237C9F8 + strh r1, [r7, #0x50] + ldrsh r1, [sl, #6] + strh r1, [r7, #0x52] + ldr r0, [r0, r4, lsl #2] + and r0, r0, #7 + strb r0, [r7, #0x4c] + b _0230E9E8 +_0230E9D8: + add r4, r4, #1 +_0230E9DC: + ldr r0, [r5] + cmp r4, r0 + blt _0230E990 +_0230E9E8: + ldr r0, _0230EDA4 ; =0x023536FC + ldr r0, [r0] + cmp r4, r0 + bne _0230ED98 + add r0, r7, #0x4a + mov r1, #0x39 + bl SetMonsterActionFields + b _0230ED98 +_0230EA08: + cmp r0, #1 + bne _0230EAAC + add r2, sp, #0 + mov r0, sl + add r1, r7, #0x62 + mov r3, #1 + bl ov29_0230F02C + ldr r0, _0230EDA4 ; =0x023536FC + ldr r1, [r0] + cmp r1, #0 + beq _0230EA9C + ldr r0, [r0] + bl DungeonRandInt + mov r4, r0 + add r0, r7, #0x4a + mov r1, #0x24 + bl SetMonsterActionFields + mov r0, #0x81 + strb r0, [r7, #0x4e] + ldrsh r2, [sl, #4] + add r1, sp, #0 + add r0, sl, #4 + strh r2, [r7, #0x50] + ldrsh r2, [sl, #6] + add r1, r1, r4, lsl #2 + strh r2, [r7, #0x52] + bl GetDirectionTowardsPosition + and r0, r0, #7 + strb r0, [r7, #0x4c] + add r1, sp, #0 + mov r0, r4, lsl #2 + ldrh r0, [r1, r0] + add r1, r1, r4, lsl #2 + strh r0, [r7, #0x5a] + ldrh r0, [r1, #2] + strh r0, [r7, #0x5c] + b _0230ED98 +_0230EA9C: + add r0, r7, #0x4a + mov r1, #0x39 + bl SetMonsterActionFields + b _0230ED98 +_0230EAAC: + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + add r0, r7, #0x4a + bhi _0230EAE4 + mov r1, #0x23 + bl SetMonsterActionFields + mov r0, #0x81 + strb r0, [r7, #0x4e] + ldrsh r0, [sl, #4] + strh r0, [r7, #0x50] + ldrsh r0, [sl, #6] + strh r0, [r7, #0x52] + b _0230ED98 +_0230EAE4: + mov r1, #0x39 + bl SetMonsterActionFields + b _0230ED98 +_0230EAF0: + mov r0, sl + mov r1, #0x16 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0230ED98 + mov r5, #1 + b _0230ED90 +_0230EB0C: + cmp r5, #1 + addeq r8, r7, #0x62 + moveq r6, #0x81 + beq _0230EB84 + cmp r5, #0 + bne _0230EB58 + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0230ED8C + ldr r1, [r0] + cmp r1, #3 + bne _0230ED8C + bl ov29_022E1610 + mov r8, r0 + mov r6, #0x80 + b _0230EB84 +_0230EB58: + ldrb r0, [r7, #7] + cmp r0, #0 + beq _0230ED98 + ldr r0, _0230EDAC ; =0x020AF6B8 + sub r1, r5, #1 + ldr r0, [r0] + sub r2, r5, #2 + ldr r3, [r0, #0x384] + mov r0, #6 + mla r8, r2, r0, r3 + and r6, r1, #0xff +_0230EB84: + ldrb r1, [r8] + tst r1, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230ED8C + ldrb r0, [r8] + tst r0, #2 + bne _0230ED8C + tst r1, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0230ED8C + ldrsh r0, [r8, #4] + mov r1, #0 + bl TestItemAiFlag + cmp r0, #0 + beq _0230EC4C + mov r0, sl + mov r1, r8 + mov r2, #2 + bl ov29_0231E05C + movs r4, r0 + beq _0230EC4C + ldrsh r0, [r8, #4] + bl GetItemCategoryVeneer + mov sb, r0 + cmp sb, #9 + ldreqb r0, [r7, #6] + cmpeq r0, #0 + beq _0230EC4C + mov r0, r4 + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0230EC4C + cmp sb, #9 + add r0, r7, #0x4a + bne _0230EC2C + mov r1, #0x31 + bl SetMonsterActionFields + b _0230EC34 +_0230EC2C: + mov r1, #0x23 + bl SetMonsterActionFields +_0230EC34: + strb r6, [r7, #0x4e] + ldrsh r0, [sl, #4] + strh r0, [r7, #0x50] + ldrsh r0, [sl, #6] + strh r0, [r7, #0x52] + b _0230ED98 +_0230EC4C: + mov r0, r7 + bl ov29_02302368 + cmp r0, #0 + beq _0230ED8C + mov r4, #1 + ldr fp, _0230EDA4 ; =0x023536FC + b _0230ED84 +_0230EC68: + ldrsh r0, [r8, #4] + mov r1, r4 + bl TestItemAiFlag + cmp r0, #0 + beq _0230ED80 + ldrsh r0, [r8, #4] + bl GetItemCategoryVeneer + cmp r0, #1 + mov r0, sl + mov r3, #0 + bne _0230ED14 + mov r1, r8 + add r2, sp, #0 + bl ov29_0230F02C + ldr r0, [fp] + cmp r0, #0 + beq _0230ED80 + ldr r0, _0230EDA4 ; =0x023536FC + ldr r0, [r0] + bl DungeonRandInt + mov r4, r0 + add r0, r7, #0x4a + mov r1, #0x24 + bl SetMonsterActionFields + strb r6, [r7, #0x4e] + ldrsh r2, [sl, #4] + add r1, sp, #0 + add r0, sl, #4 + strh r2, [r7, #0x50] + ldrsh r2, [sl, #6] + add r1, r1, r4, lsl #2 + strh r2, [r7, #0x52] + bl GetDirectionTowardsPosition + and r0, r0, #7 + strb r0, [r7, #0x4c] + add r1, sp, #0 + mov r0, r4, lsl #2 + ldrh r0, [r1, r0] + add r1, r1, r4, lsl #2 + strh r0, [r7, #0x5a] + ldrh r0, [r1, #2] + strh r0, [r7, #0x5c] + b _0230ED98 +_0230ED14: + mov r1, r4 + mov r2, r8 + bl ov29_0230EDB0 + mov sb, #0 + b _0230ED74 +_0230ED28: + ldr r0, _0230EDA0 ; =0x0237C9D8 + ldr r0, [r0, sb, lsl #2] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0230ED70 + add r0, r7, #0x4a + mov r1, #0x24 + bl SetMonsterActionFields + strb r6, [r7, #0x4e] + ldrsh r1, [sl, #4] + ldr r0, _0230EDA8 ; =0x0237C9F8 + strh r1, [r7, #0x50] + ldrsh r1, [sl, #6] + strh r1, [r7, #0x52] + ldr r0, [r0, sb, lsl #2] + and r0, r0, #7 + strb r0, [r7, #0x4c] + b _0230ED98 +_0230ED70: + add sb, sb, #1 +_0230ED74: + ldr r0, [fp] + cmp sb, r0 + blt _0230ED28 +_0230ED80: + add r4, r4, #1 +_0230ED84: + cmp r4, #3 + blt _0230EC68 +_0230ED8C: + add r5, r5, #1 +_0230ED90: + cmp r5, #0x34 + blt _0230EB0C +_0230ED98: + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230EDA0: .word 0x0237C9D8 +_0230EDA4: .word 0x023536FC +_0230EDA8: .word 0x0237C9F8 +_0230EDAC: .word 0x020AF6B8 + arm_func_end ov29_0230E914 + + arm_func_start ov29_0230EDB0 +ov29_0230EDB0: ; 0x0230EDB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r4, _0230EFF4 ; =0x023536FC + mov r5, #0 + mov sl, r0 + str r3, [sp, #8] + ldr r0, _0230EFF8 ; =0x0237C9D0 + str r1, [sp] + str r2, [sp, #4] + str r5, [r4] + mov fp, r5 +_0230EDDC: + strb fp, [r0, r5] + add r5, r5, #1 + cmp r5, #8 + blt _0230EDDC + mvn r0, #0 + str r0, [sp, #0x10] +_0230EDF4: + ldr r0, _0230EFFC ; =0x02353538 + ldr r0, [r0] + add r0, r0, fp, lsl #2 + add r0, r0, #0x12000 + ldr r4, [r0, #0xb78] + mov r0, r4 + bl EntityIsValid__0230F008 + cmp r0, #0 + cmpne sl, r4 + beq _0230EFE0 + ldr r0, [sp] + mov r2, #0 + cmp r0, #1 + mov r0, sl + mov r1, r4 + bne _0230EE50 + mov r3, r2 + bl ov29_0230175C + cmp r0, #0 + bne _0230EFE0 + mov r0, #3 + str r0, [sp, #0xc] + b _0230EE68 +_0230EE50: + mov r3, #1 + bl ov29_0230175C + cmp r0, #1 + bne _0230EFE0 + mov r0, #1 + str r0, [sp, #0xc] +_0230EE68: + mov r0, sl + mov r1, r4 + bl ov29_022E274C + cmp r0, #0 + beq _0230EFE0 + ldrsh r6, [r4, #4] + ldrsh r7, [sl, #4] + sub r0, r7, r6 + bl Abs + mov r5, r0 + ldrsh r8, [r4, #6] + ldrsh sb, [sl, #6] + sub r0, sb, r8 + bl Abs + ldr r1, [sl, #0xb4] + ldrb r1, [r1, #0xee] + cmp r1, #0 + bne _0230EEC4 + cmp r5, r0 + movgt r1, r5 + movle r1, r0 + cmp r1, #0xa + bgt _0230EFE0 +_0230EEC4: + cmp r5, r0 + ldr r5, [sp, #0x10] + bne _0230EF08 + cmp r7, r6 + cmplt sb, r8 + movlt r5, #1 + blt _0230EF54 + cmp r7, r6 + bge _0230EEF4 + cmp sb, r8 + movgt r5, #3 + bgt _0230EF54 +_0230EEF4: + cmp r7, r6 + cmpgt sb, r8 + movgt r5, #5 + movle r5, #7 + b _0230EF54 +_0230EF08: + cmp r7, r6 + bne _0230EF1C + cmp sb, r8 + movlt r5, #0 + blt _0230EF54 +_0230EF1C: + cmp r7, r6 + bge _0230EF30 + cmp sb, r8 + moveq r5, #2 + beq _0230EF54 +_0230EF30: + cmp r7, r6 + bne _0230EF44 + cmp sb, r8 + movgt r5, #4 + bgt _0230EF54 +_0230EF44: + cmp r7, r6 + ble _0230EF54 + cmp sb, r8 + moveq r5, #6 +_0230EF54: + cmp r5, #0 + blt _0230EFE0 + ldr r0, _0230EFF8 ; =0x0237C9D0 + ldrb r0, [r0, r5] + cmp r0, #0 + bne _0230EFE0 + mov r0, sl + mov r1, r4 + mov r2, r5 + mov r3, #0xa + bl IsTargetInRange + cmp r0, #0 + beq _0230EFE0 + ldr r0, _0230EFF8 ; =0x0237C9D0 + mov r1, #1 + strb r1, [r0, r5] + ldr r0, [sp, #8] + cmp r0, #0 + ldr r0, _0230EFF4 ; =0x023536FC + ldr r1, [r0] + ldr r0, _0230F000 ; =0x0237C9F8 + str r5, [r0, r1, lsl #2] + movne r0, #0x64 + bne _0230EFC4 + ldr r2, [sp, #0xc] + ldr r1, [sp, #4] + mov r0, r4 + bl ov29_0231E05C +_0230EFC4: + ldr r1, _0230EFF4 ; =0x023536FC + ldr r2, [r1] + ldr r1, _0230F004 ; =0x0237C9D8 + str r0, [r1, r2, lsl #2] + ldr r0, _0230EFF4 ; =0x023536FC + add r1, r2, #1 + str r1, [r0] +_0230EFE0: + add fp, fp, #1 + cmp fp, #0x14 + blt _0230EDF4 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230EFF4: .word 0x023536FC +_0230EFF8: .word 0x0237C9D0 +_0230EFFC: .word 0x02353538 +_0230F000: .word 0x0237C9F8 +_0230F004: .word 0x0237C9D8 + arm_func_end ov29_0230EDB0 diff --git a/asm/overlay_29_0230F02C.s b/asm/overlay_29_0230F02C.s new file mode 100644 index 00000000..f52aab73 --- /dev/null +++ b/asm/overlay_29_0230F02C.s @@ -0,0 +1,2247 @@ + .include "asm/macros.inc" + .include "overlay_29_0230F02C.inc" + + .text + + arm_func_start ov29_0230F02C +ov29_0230F02C: ; 0x0230F02C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r4, _0230F138 ; =0x023536FC + mov r6, #0 + mov sl, r0 + mov fp, r1 + mov sb, r2 + mov r8, r3 + str r6, [r4] +_0230F04C: + ldr r0, _0230F13C ; =0x02353538 + ldr r0, [r0] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__0230F008 + cmp r0, #0 + cmpne sl, r7 + beq _0230F128 + mov r0, sl + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + beq _0230F128 + mov r0, sl + mov r1, r7 + mov r2, #0 + mov r3, #1 + bl ov29_0230175C + cmp r0, #1 + bne _0230F128 + ldrsh r1, [r7, #6] + ldrsh r0, [sl, #6] + sub r0, r1, r0 + bl Abs + ldrsh r2, [r7, #4] + ldrsh r1, [sl, #4] + mov r5, r0 + sub r0, r2, r1 + bl Abs + cmp r0, r5 + movle r0, r5 + cmp r0, #0xa + bgt _0230F128 + cmp r8, #0 + bne _0230F0FC + mov r0, r7 + mov r1, fp + mov r2, #1 + bl ov29_0231E05C + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0230F128 +_0230F0FC: + ldr r0, [r4] + ldrsh r1, [r7, #4] + mov r0, r0, lsl #2 + strh r1, [sb, r0] + ldr r0, [r4] + ldrsh r1, [r7, #6] + add r0, sb, r0, lsl #2 + strh r1, [r0, #2] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0230F128: + add r6, r6, #1 + cmp r6, #0x14 + blt _0230F04C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230F138: .word 0x023536FC +_0230F13C: .word 0x02353538 + arm_func_end ov29_0230F02C + + arm_func_start ov29_0230F140 +ov29_0230F140: ; 0x0230F140 + ldr ip, _0230F148 ; =ov29_022F52BC + bx ip + .align 2, 0 +_0230F148: .word ov29_022F52BC + arm_func_end ov29_0230F140 + + arm_func_start ov29_0230F14C +ov29_0230F14C: ; 0x0230F14C + ldr ip, _0230F154 ; =ov29_022F54BC + bx ip + .align 2, 0 +_0230F154: .word ov29_022F54BC + arm_func_end ov29_0230F14C + + arm_func_start ov29_0230F158 +ov29_0230F158: ; 0x0230F158 + ldr ip, _0230F160 ; =ov29_0230F164 + bx ip + .align 2, 0 +_0230F160: .word ov29_0230F164 + arm_func_end ov29_0230F158 + + arm_func_start ov29_0230F164 +ov29_0230F164: ; 0x0230F164 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x198 + mov r8, r0 + ldr r6, [r8, #0xb4] + bl GetTileAtEntity + mov r5, r0 + ldr r4, [r5, #0x10] + cmp r4, #0 + beq _0230F624 + bl IsFloorOver + cmp r0, #0 + bne _0230F624 + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #7] + cmp r0, #0 + bne _0230F624 + ldrb r0, [r6, #9] + cmp r0, #1 + beq _0230F624 + mov r0, r6 + bl IsExperienceLocked + cmp r0, #0 + bne _0230F624 + ldrb r0, [r6, #0xbc] + cmp r0, #7 + beq _0230F624 + ldr r6, [r8, #0xb4] + mov r0, r4 + mov r7, #1 + bl ov29_022E1610 + ldrb r1, [r6, #6] + mov r4, r0 + cmp r1, #0 + beq _0230F204 + bl ov29_02348D00 + cmp r0, #0 + bne _0230F624 +_0230F204: + ldrb r0, [r4] + tst r0, #2 + bne _0230F228 + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0230F22C + ldrh r0, [r5] + tst r0, #0x20 + beq _0230F22C +_0230F228: + mov r7, #0 +_0230F22C: + cmp r7, #0 + beq _0230F624 + mov r0, r8 + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + beq _0230F274 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0230F62C ; =0x00000C5E + mov r0, r8 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F274: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0230F300 + ldrsh r0, [r4, #4] + bl GetItemCategoryVeneer + cmp r0, #6 + bne _0230F300 + ldrb r0, [r6, #6] + cmp r0, #0 + beq _0230F2A8 + ldr r0, _0230F630 ; =0x00001305 + bl ov29_022EACCC + b _0230F2B0 +_0230F2A8: + ldr r0, _0230F634 ; =0x00001308 + bl ov29_022EACCC +_0230F2B0: + mov r0, r8 + mov r1, #0x1b + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r4] + orrne r0, r0, #0x20 + strneb r0, [r4] + mov r0, r4 + bl sub_0200D8AC + bl AddMoneyCarried + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + add r0, r8, #4 + mov r1, #1 + bl ov29_023456BC + ldr r1, _0230F638 ; =0x00000C5F + mov r0, r8 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F300: + ldr r0, _0230F63C ; =0x02353538 + ldr r0, [r0] + ldrb sb, [r0, #0x75b] + cmp sb, #0 + beq _0230F36C + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0230F36C + ldr r0, _0230F640 ; =0x020AF6B8 + mov r5, #0 + ldr r0, [r0] + add r2, sp, #0 + ldr r7, [r0, #0x384] + add r1, sp, #0xcc + mov r0, #6 +_0230F33C: + mla r3, r5, r0, r7 + str r3, [r2, r5, lsl #2] + str r5, [r1, r5, lsl #2] + add r5, r5, #1 + cmp r5, #0x32 + blt _0230F33C + add r1, r6, #0x62 + mvn r0, #0 + str r1, [sp, #0xc8] + str r0, [sp, #0x194] + mov r5, #0x33 + b _0230F380 +_0230F36C: + add r1, r6, #0x62 + mvn r0, #0 + str r1, [sp] + str r0, [sp, #0xcc] + mov r5, #1 +_0230F380: + ldrsh lr, [r4, #4] + cmp lr, #0xb + bge _0230F4B0 + ldrb r0, [r4] + tst r0, #2 + bne _0230F4B0 + mvn r7, #0 + mov ip, r7 + mov sl, #0 + and r0, r0, #8 + add fp, sp, #0 + b _0230F408 +_0230F3B0: + ldr r1, [fp, sl, lsl #2] + ldrb r1, [r1] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _0230F404 + ldr r3, [fp, sl, lsl #2] + ldrb r2, [r3] + tst r2, #2 + ldreqsh r1, [r3, #4] + cmpeq lr, r1 + andeq r1, r2, #8 + cmpeq r0, r1 + bne _0230F404 + ldrh r1, [r3, #2] + cmp r1, #0x63 + beq _0230F404 + cmp ip, r1 + movlt ip, r1 + movlt r7, sl +_0230F404: + add sl, sl, #1 +_0230F408: + cmp sl, r5 + blt _0230F3B0 + mvn r0, #0 + cmp r7, r0 + beq _0230F4B0 + add r1, sp, #0 + ldr r2, [r1, r7, lsl #2] + ldrh r0, [r4, #2] + ldrh r1, [r2, #2] + add r0, r1, r0 + cmp r0, #0x63 + movge r0, #0x63 + strh r0, [r2, #2] + ldrb r0, [r4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrneb r0, [r2] + orrne r0, r0, #8 + strneb r0, [r2] + bl ov29_02347040 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + add r0, r8, #4 + mov r1, #1 + bl ov29_023456BC + ldr r0, _0230F644 ; =0x00001304 + bl ov29_022EACCC + add r0, sp, #0xcc + ldr r0, [r0, r7, lsl #2] + cmp r0, #0 + bge _0230F4A0 + mov r0, r8 + mov r1, #0xc60 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F4A0: + ldr r1, _0230F648 ; =0x00000C61 + mov r0, r8 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F4B0: + cmp sb, #0 + beq _0230F4CC + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0230F4CC + bl GetCurrentBagCapacity + mov r5, r0 +_0230F4CC: + mov r7, #0 + add r3, sp, #0 + mov r0, r7 + mov r1, #1 + b _0230F500 +_0230F4E0: + ldr r2, [r3, r7, lsl #2] + ldrb r2, [r2] + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + beq _0230F508 + add r7, r7, #1 +_0230F500: + cmp r7, r5 + blt _0230F4E0 +_0230F508: + mov r0, r8 + mov r1, r4 + mov r2, #1 + bl ov29_02348DD8 + cmp r0, #0 + bne _0230F624 + cmp r7, r5 + bne _0230F544 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _0230F64C ; =0x00000C62 + mov r0, r8 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F544: + ldrb r0, [r6, #6] + cmp r0, #0 + beq _0230F55C + ldr r0, _0230F630 ; =0x00001305 + bl ov29_022EACCC + b _0230F564 +_0230F55C: + ldr r0, _0230F644 ; =0x00001304 + bl ov29_022EACCC +_0230F564: + add r0, sp, #0xcc + ldr r0, [r0, r7, lsl #2] + cmp r0, #0 + bge _0230F5BC + ldrh r1, [r4] + mov r0, r8 + strh r1, [r6, #0x62] + ldrh r1, [r4, #2] + strh r1, [r6, #0x64] + ldrh r1, [r4, #4] + strh r1, [r6, #0x66] + bl ov29_022F9EA0 + mov r1, r4 + mov r0, #0 + bl ov29_02344B44 + add r0, r8, #4 + mov r1, #1 + bl ov29_023456BC + mov r0, r8 + mov r1, #0xc60 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F5BC: + mov r0, r4 + bl ov29_02348D3C + mov r5, r0 + mov r0, r4 + bl ov29_02345004 + cmp r0, #0 + mov r0, #0 + beq _0230F5F8 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0230F650 ; =0x00000C63 + mov r0, r8 + bl LogMessageByIdWithPopup + b _0230F624 +_0230F5F8: + mov r1, r4 + bl ov29_02344B44 + add r0, r8, #4 + mov r1, #1 + bl ov29_023456BC + ldr r1, _0230F648 ; =0x00000C61 + mov r0, r8 + bl LogMessageByIdWithPopup + mov r0, r4 + mov r1, r5 + bl ov29_02348ECC +_0230F624: + add sp, sp, #0x198 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230F62C: .word 0x00000C5E +_0230F630: .word 0x00001305 +_0230F634: .word 0x00001308 +_0230F638: .word 0x00000C5F +_0230F63C: .word 0x02353538 +_0230F640: .word 0x020AF6B8 +_0230F644: .word 0x00001304 +_0230F648: .word 0x00000C61 +_0230F64C: .word 0x00000C62 +_0230F650: .word 0x00000C63 + arm_func_end ov29_0230F164 + + arm_func_start ov29_0230F654 +ov29_0230F654: ; 0x0230F654 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl EntityIsValid__0230F008 + cmp r0, #0 + moveq r0, #0 + beq _0230F6C0 + ldr r3, [r6, #0xb4] + add r0, sp, #4 + ldrb r2, [r3, #0x5f] + mov r1, r5 + str r2, [sp] + ldrsh r2, [r3, #4] + ldrb r3, [r3, #0x5e] + bl sub_0201116C + cmp r0, #0 + moveq r0, #0 + beq _0230F6C0 + ldrh r1, [sp, #4] + mov r0, #1 + strh r1, [r4] + ldrh r1, [sp, #6] + strh r1, [r4, #2] + ldrh r1, [sp, #8] + strh r1, [r4, #4] +_0230F6C0: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0230F654 + + arm_func_start AuraBowIsActive +AuraBowIsActive: ; 0x0230F6C8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r4, [r5, #0xb4] + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230F710 + ldrsh r0, [r4, #0x66] + bl IsAuraBow + cmp r0, #0 + bne _0230F718 +_0230F710: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230F718: + ldrsh r1, [r4, #0x66] + mov r0, r5 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end AuraBowIsActive + + arm_func_start ov29_0230F728 +ov29_0230F728: ; 0x0230F728 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr ip, [r1, #0xb4] + ldr r4, [r0, #0xb4] + ldrb r0, [ip, #0x5f] + mov r5, r3 + mov r1, r2 + str r0, [sp] + ldrsh r2, [ip, #4] + ldrb r3, [ip, #0x5e] + add r0, sp, #4 + bl sub_0201116C + ldr r1, [r4, #0x18c] + add r0, r4, #0x100 + orr r1, r1, r5 + str r1, [r4, #0x18c] + ldrsh r1, [sp, #8] + strh r1, [r0, #0x90] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + arm_func_end ov29_0230F728 + + arm_func_start ExclusiveItemOffenseBoost +ExclusiveItemOffenseBoost: ; 0x0230F778 + ldr r0, [r0, #0xb4] + add r0, r0, r1 + ldrb r0, [r0, #0x224] + bx lr + arm_func_end ExclusiveItemOffenseBoost + + arm_func_start ExclusiveItemDefenseBoost +ExclusiveItemDefenseBoost: ; 0x0230F788 + ldr r0, [r0, #0xb4] + add r0, r0, r1 + ldrb r0, [r0, #0x226] + bx lr + arm_func_end ExclusiveItemDefenseBoost + + arm_func_start ov29_0230F798 +ov29_0230F798: ; 0x0230F798 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, #0 + ldr r4, _0230F80C ; =0x02353538 + mov sb, r0 + mov r8, r1 + mov r5, r6 +_0230F7B0: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0230F008 + cmp r0, #0 + beq _0230F7F0 + mov r0, r7 + mov r1, r8 + bl ItemIsActive__0230F810 + cmp r0, #0 + addne r0, r6, #1 + movne r0, r0, lsl #0x10 + strne r7, [sb, r6, lsl #2] + movne r6, r0, asr #0x10 +_0230F7F0: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #4 + blt _0230F7B0 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230F80C: .word 0x02353538 + arm_func_end ov29_0230F798 + + arm_func_start ItemIsActive__0230F810 +ItemIsActive__0230F810: ; 0x0230F810 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__0230F810 + + arm_func_start ov29_0230F840 +ov29_0230F840: ; 0x0230F840 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + mov r6, #0 + ldr r5, _0230F8A8 ; =0x02353538 + b _0230F898 +_0230F854: + ldr r0, [r5] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0230F008 + cmp r0, #0 + beq _0230F88C + mov r0, r7 + mov r1, r4 + bl ExclusiveItemEffectIsActive__0230F8AC + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_0230F88C: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0230F898: + cmp r6, #4 + blt _0230F854 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230F8A8: .word 0x02353538 + arm_func_end ov29_0230F840 + + arm_func_start ExclusiveItemEffectIsActive__0230F8AC +ExclusiveItemEffectIsActive__0230F8AC: ; 0x0230F8AC + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__0230F8AC + + arm_func_start ov29_0230F8D0 +ov29_0230F8D0: ; 0x0230F8D0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r7, r1 + bl EntityIsValid__0230F008 + cmp r0, #0 + moveq r0, #0xff + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r8, #0xb4] + mov r5, #0 + ldrb r6, [r0, #0x4c] + ldr r4, _0230F97C ; =0x0235171C + b _0230F96C +_0230F900: + mov r1, r6, lsl #2 + add r0, r4, r6, lsl #2 + ldrsh ip, [r8, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [r8, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr sb, [r0, #0xc] + cmp sb, #0 + beq _0230F958 + mov r0, sb + bl IsMonster__0230F980 + cmp r0, #0 + beq _0230F958 + mov r0, sb + mov r1, r7 + bl ItemIsActive__0230F810 + cmp r0, #0 + movne r0, r6 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230F958: + add r0, r6, #1 + and r0, r0, #0xff + add r1, r5, #1 + and r6, r0, #7 + and r5, r1, #0xff +_0230F96C: + cmp r5, #8 + blo _0230F900 + mov r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230F97C: .word 0x0235171C + arm_func_end ov29_0230F8D0 + + arm_func_start IsMonster__0230F980 +IsMonster__0230F980: ; 0x0230F980 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__0230F980 + + arm_func_start ov29_0230F9A4 +ov29_0230F9A4: ; 0x0230F9A4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl IsMonster__0230F980 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl ov29_0234908C + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0230F9A4 + + arm_func_start ov29_0230F9D8 +ov29_0230F9D8: ; 0x0230F9D8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r2, _0230FB28 ; =0x02353538 + mov r6, r0 + ldr r0, [r2] + mov r5, r1 + ldrb r0, [r0, #0x748] + bl TreasureBoxDropsEnabled + cmp r0, #0 + ldrne r4, [r5, #0xb4] + ldrneb r0, [r4, #6] + cmpne r0, #0 + beq _0230FB20 + ldr r0, [r6] + mov r7, #0 + cmp r0, #1 + bne _0230FA54 + mov r0, r6 + mov r1, #0x43 + bl IqSkillIsEnabled + cmp r0, #0 + addne r0, r7, #1 + movne r0, r0, lsl #0x10 + movne r7, r0, asr #0x10 + mov r0, r6 + mov r1, #0x56 + bl ExclusiveItemEffectIsActive__0230F8AC + cmp r0, #0 + addne r0, r7, #1 + movne r0, r0, lsl #0x10 + movne r7, r0, asr #0x10 +_0230FA54: + ldrsh r1, [r4, #2] + add r0, sp, #0 + mov r2, r7 + bl ov29_02346060 + cmp r0, #0 + beq _0230FA84 + add r2, sp, #0 + mov r0, r5 + add r1, r5, #4 + mov r3, #1 + bl ov29_02345A3C + b _0230FB20 +_0230FA84: + mov r0, r6 + mov r1, #0x75 + bl AbilityIsActive2 + mov r2, r0 + add r0, sp, #0 + mov r1, r5 + mov r3, r7 + bl ov29_023460DC + cmp r0, #0 + beq _0230FAC4 + add r2, sp, #0 + mov r0, r5 + add r1, r5, #4 + mov r3, #1 + bl ov29_02345A3C + b _0230FB20 +_0230FAC4: + mov r0, r6 + bl IsMonster__0230F980 + cmp r0, #0 + beq _0230FB20 + mov r0, r6 + mov r1, #0x62 + bl ExclusiveItemEffectIsActive__0230F8AC + cmp r0, #0 + beq _0230FB20 + ldr r0, _0230FB2C ; =0x022C4650 + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0230FB20 + add r0, sp, #0 + mov r1, #0xb7 + mov r2, #2 + bl ov29_02344BD0 + add r2, sp, #0 + mov r0, r5 + add r1, r5, #4 + mov r3, #1 + bl ov29_02345A3C +_0230FB20: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230FB28: .word 0x02353538 +_0230FB2C: .word 0x022C4650 + arm_func_end ov29_0230F9D8 + + arm_func_start ov29_0230FB30 +ov29_0230FB30: ; 0x0230FB30 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0230FB88 ; =0x023529A8 + mov r5, r0 + ldrh r2, [r1] + add r0, sp, #0 + strh r2, [sp] + ldrh r1, [r1, #2] + strh r1, [sp, #2] + bl ov29_02347184 + movs r4, r0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0230FB8C ; =0x00000F62 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230FB88: .word 0x023529A8 +_0230FB8C: .word 0x00000F62 + arm_func_end ov29_0230FB30 + + arm_func_start TickNoSlipCap +TickNoSlipCap: ; 0x0230FB90 + stmdb sp!, {r3, r4, r5, lr} + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0230FBB8 + mov r0, r5 + mov r1, #0xd + bl HasHeldItem +_0230FBB8: + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #6] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x107] + add r1, r0, #1 + and r0, r1, #0xff + cmp r0, #0x14 + strb r1, [r4, #0x107] + movhs r0, #0x13 + strhsb r0, [r4, #0x107] + mov r0, #0x64 + bl DungeonRandInt + ldrb r2, [r4, #0x107] + ldr r1, _0230FC20 ; =0x022C4BE4 + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + cmp r0, r1 + ldmgeia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_0230FB30 + mov r0, #0 + strb r0, [r4, #0x107] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230FC20: .word 0x022C4BE4 + arm_func_end TickNoSlipCap + + arm_func_start ov29_0230FC24 +ov29_0230FC24: ; 0x0230FC24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x34 + movs r5, r0 + beq _02310FF4 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r4, [r5, #0xb4] + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0x150] + bl ov29_022FB718 + bl ov29_0234B294 + mov r0, r5 + bl TryWeatherFormChange + mov r0, r5 + mov r1, #0x1d + bl ItemIsActive__02311034 + cmp r0, #0 + beq _0230FD0C + ldrb r0, [r4, #0x17c] + add r1, r0, #1 + and r0, r1, #0xff + cmp r0, #0x14 + strb r1, [r4, #0x17c] + movhs r0, #0x13 + strhsb r0, [r4, #0x17c] + mov r0, #0x64 + bl DungeonRandInt + ldrb r2, [r4, #0x17c] + ldr r1, _02310A6C ; =0x022C4BBC + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + cmp r0, r1 + bge _0230FD0C + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0x17c] + bl ov29_022EC62C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r2, #0 + mov r0, r5 + mov r1, r5 + mov r3, r2 + bl TryWarp + mov r0, r5 + bl ov29_022F42F8 +_0230FD0C: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _0231013C + mov r0, r5 + mov r1, #0x1e + mov r7, #0xa + bl ItemIsActive__02311034 + cmp r0, #0 + movne r2, r7 + moveq r2, #0 + mov r0, r5 + mov r1, #0x26 + sub r7, r7, r2 + bl ItemIsActive__02311034 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r5 + mov r1, #0x10 + sub r7, r7, r2 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r5 + mov r1, #0x22 + subne r7, r7, #1 + bl ItemIsActive__02311034 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r5 + mov r1, #0x11 + add r7, r7, r2 + bl ItemIsActive__02311034 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r5 + mov r1, #0x32 + add r7, r7, r2 + bl ItemIsActive__02311034 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r5 + mov r1, #0x59 + add r7, r7, r2 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + adds r7, r7, r0 + movmi r7, #0 + ldr r3, _02310A70 ; =0x0000199A + cmp r7, #0x13 + mov r6, #0 + ldr r2, _02310A74 ; =0x022C4FC4 + movgt r7, #0x13 + add r0, sp, #0x2c + add r1, sp, #0x24 + str r6, [sp, #0x24] + str r3, [sp, #0x28] + add r2, r2, r7, lsl #3 + bl MultiplyFixedPoint64 + ldrb r2, [r4, #0x15d] + cmp r2, #1 + ldrhi r0, _02310A78 ; =0x022C4A5C + ldrhi r1, [sp, #0x30] + ldrhi r0, [r0, r2, lsl #2] + addhi r0, r1, r0, lsl #16 + strhi r0, [sp, #0x30] + mov r0, #0 + strb r0, [r4, #0x15d] + add r0, r4, #0x100 + ldrh r2, [r0, #0x46] + ldrh r1, [r0, #0x48] + add r0, sp, #0x2c + strh r2, [sp, #0x20] + strh r1, [sp, #0x22] + bl BinToDecFixedPoint + strh r0, [sp, #0x14] + mov r0, r0, lsr #0x10 + add r1, r4, #0x100 + strh r0, [sp, #0x16] + ldrh r0, [r1, #0x46] + sub r3, sp, #4 + ldrh r2, [sp, #0x14] + strh r0, [r3] + ldrh r0, [r1, #0x48] + ldrh r1, [sp, #0x16] + strh r0, [r3, #2] + ldr r0, [r3] + strh r2, [r3] + strh r1, [r3, #2] + ldr r1, [r3] + bl SubFixedPoint + strh r0, [sp, #0x10] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x12] + ldrh r1, [sp, #0x10] + add r0, r4, #0x100 + ldrh r3, [sp, #0x12] + strh r1, [r0, #0x46] + ldrh r2, [sp, #0x20] + strh r3, [r0, #0x48] + sub r0, sp, #4 + ldrh r1, [sp, #0x22] + strh r2, [r0] + mov r6, #0 + strh r1, [r0, #2] + ldr r0, [r0] + mov r7, #1 + bl CeilFixedPoint + cmp r0, #0x14 + blt _0230FEFC + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0x14 + ldrlt r6, _02310A7C ; =0x00000DE6 +_0230FEFC: + ldrh r1, [sp, #0x20] + ldrh r0, [sp, #0x22] + sub r2, sp, #4 + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0xa + blt _0230FF48 + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0xa + ldrlt r6, _02310A80 ; =0x00000DE7 +_0230FF48: + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + bne _0230FF98 + mov r0, #0 + bl sub_02050FF8 + strh r0, [sp, #0xc] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xe] + ldrh r2, [sp, #0xc] + add r0, r4, #0x100 + ldrh r1, [sp, #0xe] + strh r2, [r0, #0x46] + strh r1, [r0, #0x48] +_0230FF98: + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + bge _0230FFE8 + mov r0, #0 + bl sub_02050FF8 + strh r0, [sp, #8] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xa] + ldrh r2, [sp, #8] + add r0, r4, #0x100 + ldrh r1, [sp, #0xa] + strh r2, [r0, #0x46] + strh r1, [r0, #0x48] +_0230FFE8: + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + bne _023100D8 + bl ov29_022F2FE4 + mov r0, r5 + bl ov29_022EC62C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r0, _02310A84 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x799] + cmp r0, #0xa + addlo r0, r0, #1 + strlob r0, [r1, #0x799] + ldr r0, _02310A84 ; =0x02353538 + mov r1, r5 + ldr r0, [r0] + ldrb r0, [r0, #0x799] + cmp r0, #1 + ldreq r6, _02310A88 ; =0x00000DE8 + cmp r0, #2 + ldreq r6, _02310A8C ; =0x00000DE9 + moveq r7, #0 + cmp r0, #3 + mov r0, r5 + ldreq r6, _02310A90 ; =0x00000DEA + moveq r7, #0 + bl ov29_02307BDC + mov r0, r5 + mov r1, #1 + mov r2, #0xe + mov r3, #0x250 + bl ov29_0230D11C + mov r0, #1 + strb r0, [r4, #0x150] + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + movne r6, #0 + b _023100E8 +_023100D8: + ldr r0, _02310A84 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x799] +_023100E8: + cmp r6, #0 + beq _0231013C + cmp r7, #0 + beq _02310124 + ldr r0, _02310A84 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _02310124 + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310124 + ldr r0, _02310A94 ; =0x00001303 + bl ov29_022EACCC +_02310124: + mov r0, r5 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x1e + mov r1, #0x32 + bl ov29_022EA370 +_0231013C: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r0, _02310A84 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd5a] + cmp r0, #0 + bne _0231037C + mov r0, r5 + bl GetApparentWeather + cmp r0, #5 + mov r0, r5 + bne _023101FC + mov r1, #0x77 + bl AbilityIsActive2 + cmp r0, #0 + bne _02310360 + mov r0, r5 + mov r1, #0x4d + bl AbilityIsActive2 + cmp r0, #0 + bne _02310360 + mov r0, r5 + mov r1, #6 + bl MonsterIsType + cmp r0, #0 + bne _02310360 + ldr r3, _02310A98 ; =0x00000DBD + mov r6, #9 + mov r0, r5 + mov r1, r5 + mov r2, #1 + str r6, [sp] + bl ov29_02314D40 + cmp r0, #0 + bne _02310360 + ldr r0, _02310A9C ; =0x022C46EC + ldr r3, _02310AA0 ; =0x0000025F + ldrsh r1, [r0] + mov r0, r5 + mov r2, #0x12 + bl ov29_0230D11C + b _02310360 +_023101FC: + bl GetApparentWeather + cmp r0, #2 + mov r0, r5 + bne _02310298 + mov r1, #0x1d + bl AbilityIsActive2 + cmp r0, #0 + bne _02310360 + mov r0, r5 + mov r1, #9 + bl MonsterIsType + cmp r0, #0 + bne _02310360 + mov r0, r5 + mov r1, #0xd + bl MonsterIsType + cmp r0, #0 + bne _02310360 + mov r0, r5 + mov r1, #0x11 + bl MonsterIsType + cmp r0, #0 + bne _02310360 + ldr r3, _02310A98 ; =0x00000DBD + mov r6, #9 + mov r0, r5 + mov r1, r5 + mov r2, #1 + str r6, [sp] + bl ov29_02314D40 + cmp r0, #0 + bne _02310360 + ldr r0, _02310A9C ; =0x022C46EC + ldr r3, _02310AA0 ; =0x0000025F + ldrsh r1, [r0] + mov r0, r5 + mov r2, #0x12 + bl ov29_0230D11C + b _02310360 +_02310298: + bl GetApparentWeather + cmp r0, #1 + bne _02310360 + mov r0, r5 + mov r1, #0x5a + bl AbilityIsActive2 + cmp r0, #0 + beq _02310304 + ldr r3, _02310A98 ; =0x00000DBD + mov r6, #9 + mov r0, r5 + mov r1, r5 + mov r2, #1 + str r6, [sp] + bl ov29_02314D40 + cmp r0, #0 + bne _02310360 + mov r0, #2 + mov r1, #0x5a + bl ov29_0234B084 + ldr r0, _02310A9C ; =0x022C46EC + mov r2, #0x19 + ldrsh r1, [r0] + mov r0, r5 + rsb r3, r2, #0x278 + bl ov29_0230D11C + b _02310360 +_02310304: + mov r0, r5 + mov r1, #0x55 + bl AbilityIsActive2 + cmp r0, #0 + beq _02310360 + ldr r3, _02310A98 ; =0x00000DBD + mov r6, #9 + mov r0, r5 + mov r1, r5 + mov r2, #1 + str r6, [sp] + bl ov29_02314D40 + cmp r0, #0 + bne _02310360 + mov r0, #2 + mov r1, #0x55 + bl ov29_0234B084 + ldr r0, _02310A9C ; =0x022C46EC + ldr r3, _02310AA0 ; =0x0000025F + ldrsh r1, [r0] + mov r0, r5 + mov r2, #0x1a + bl ov29_0230D11C +_02310360: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_0231037C: + mov r0, #0x64 + bl DungeonRandInt + mov r6, r0 + mov r0, r5 + mov r1, #0x21 + bl AbilityIsActive2 + cmp r0, #0 + beq _023103F8 + ldr r0, _02310AA4 ; =0x022C46A0 + ldrsh r0, [r0] + cmp r6, r0 + bge _023103F8 + mov r0, r5 + mov r1, #0 + bl ov29_02300634 + cmp r0, #0 + beq _023103F8 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl ov29_02305C28 +_023103F8: + mov r0, r5 + mov r1, #0x51 + bl AbilityIsActive2 + cmp r0, #0 + beq _02310474 + mov r0, r5 + bl GetApparentWeather + cmp r0, #4 + bne _02310474 + mov r0, r5 + mov r1, #0 + bl ov29_02300634 + cmp r0, #0 + ldrneb r0, [r4, #0xc4] + cmpne r0, #3 + beq _02310474 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r3, #0 + mov r0, r5 + mov r1, r5 + mov r2, #1 + str r3, [sp] + bl ov29_023058C4 +_02310474: + mov r0, r5 + mov r1, #0xb + bl AbilityIsActive2 + cmp r0, #0 + beq _023104C0 + ldrb r1, [r4, #0x11f] + ldr r0, _02310AA8 ; =0x022C466C + add r2, r1, #1 + ldrsh r0, [r0] + and r1, r2, #0xff + strb r2, [r4, #0x11f] + cmp r1, r0 + blt _023104C0 + mov r3, #0 + mov r0, r5 + mov r1, r5 + mov r2, #0x7f + strb r3, [r4, #0x11f] + bl BoostSpeedOneStage +_023104C0: + ldrb r0, [r4, #0xbd] + cmp r0, #4 + bne _023104F8 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r0, r5 + bl ov29_022E53F0 +_023104F8: + ldrb r0, [r4, #0xbf] + cmp r0, #1 + bne _02310590 + ldrb r0, [r4, #0xc1] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xc1] + ldrb r0, [r4, #0xc1] + cmp r0, #0 + bne _02310574 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r1, _02310AAC ; =0x022C4610 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r5 + strb r2, [r4, #0xc1] + bl ov29_02307BDC + ldr r0, _02310AB0 ; =0x022C44D4 + mov r2, #1 + ldrsh r1, [r0] + mov r0, r5 + rsb r3, r2, #0x248 + bl ov29_0230D11C +_02310574: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_02310590: + bl GravityIsActive + cmp r0, #0 + beq _023105DC + mov r0, r5 + bl HasConditionalGroundImmunity + cmp r0, #0 + beq _023105C0 + mov r0, r5 + mov r1, r5 + bl ov29_02306CD0 + mov r0, r5 + bl ov29_02321104 +_023105C0: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_023105DC: + mov r0, r5 + mov r1, #0x69 + bl AbilityIsActive2 + cmp r0, #0 + beq _02310614 + mov r0, r5 + bl ov29_0231B1B8 + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_02310614: + mov r0, r5 + bl GetTileAtEntity + bl ov29_02337E2C + cmp r0, #0 + bne _023106A4 + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02310AB4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldrsh r0, [r4, #0x10] + cmp r0, r1 + bge _0231067C + mov r0, r5 + mov r1, #0x64 + bl ExclusiveItemEffectIsActive__02311064 + cmp r0, #0 + beq _0231067C + ldr r0, _02310AB8 ; =0x022C4664 + mov r3, #0 + ldrsh r2, [r0] + mov r0, r5 + mov r1, r5 + str r3, [sp] + bl TryIncreaseHp +_0231067C: + mov r0, r5 + mov r1, #0x65 + bl ExclusiveItemEffectIsActive__02311064 + cmp r0, #0 + beq _023106A4 + mov r2, #1 + mov r0, r5 + mov r1, r5 + mov r3, r2 + bl ov29_02305C28 +_023106A4: + mov r0, r5 + mov r1, #0x5c + bl ExclusiveItemEffectIsActive__02311064 + cmp r0, #0 + beq _02310754 + mov sl, #0 + ldr r6, _02310A84 ; =0x02353538 + mov sb, sl + mov r7, #1 +_023106C8: + ldr r0, [r6] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb28] + mov r0, r8 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310718 + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xbf] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02310718 + mov r0, r8 + bl ov29_022E543C + mov r0, r8 + mov r1, r8 + bl ov29_023061A8 + mov sl, r7 +_02310718: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 + blt _023106C8 + cmp sl, #0 + beq _02310754 + ldr r0, _02310ABC ; =0x022C464C + mov r6, #1 + ldrsh r2, [r0] + mov r0, r5 + mov r1, r5 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp +_02310754: + ldrb r0, [r4, #0xbf] + cmp r0, #2 + bne _02310830 + ldrb r0, [r4, #0xc1] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xc1] + ldrb r0, [r4, #0xc1] + cmp r0, #0 + bne _02310810 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + ldreqb r0, [r4, #0xbf] + cmpeq r0, #2 + bne _02310FF4 + ldr r1, _02310AC0 ; =0x022C46A8 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r5 + strb r2, [r4, #0xc1] + bl ov29_02307BDC + mov r0, r5 + mov r1, #0x72 + bl AbilityIsActive2 + cmp r0, #0 + beq _023107F8 + ldr r0, _02310AC4 ; =0x022C44D8 + mov r6, #1 + ldrsh r2, [r0] + mov r0, r5 + mov r1, r5 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp + b _02310810 +_023107F8: + ldr r0, _02310AC4 ; =0x022C44D8 + mov r2, #3 + ldrsh r1, [r0] + mov r0, r5 + rsb r3, r2, #0x24c + bl ov29_0230D11C +_02310810: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + beq _0231092C + b _02310FF4 +_02310830: + cmp r0, #3 + bne _0231092C + ldrb r0, [r4, #0xc1] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xc1] + ldrb r0, [r4, #0xc1] + cmp r0, #0 + bne _02310910 + ldrb r6, [r4, #0xc2] + cmp r6, #0x1d + addlo r0, r6, #1 + strlob r0, [r4, #0xc2] + ldr r0, _02310AC8 ; =0x022C4414 + cmp r6, #0x1d + ldrsh r0, [r0] + movge r6, #0x1d + cmp r6, #0 + strb r0, [r4, #0xc1] + mov r0, #0 + movlt r6, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + ldreqb r0, [r4, #0xbf] + cmpeq r0, #3 + bne _02310FF4 + mov r0, r5 + mov r1, r5 + bl ov29_02307BDC + mov r0, r5 + mov r1, #0x72 + bl AbilityIsActive2 + cmp r0, #0 + beq _023108F4 + ldr r0, _02310ACC ; =0x022C4C9C + mov r1, r6, lsl #1 + ldrsh r2, [r0, r1] + mov r6, #1 + mov r0, r5 + mov r1, r5 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp + b _02310910 +_023108F4: + ldr r0, _02310ACC ; =0x022C4C9C + mov r1, r6, lsl #1 + ldrsh r1, [r0, r1] + mov r2, #3 + mov r0, r5 + rsb r3, r2, #0x24c + bl ov29_0230D11C +_02310910: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_0231092C: + ldrb r0, [r4, #0xc4] + cmp r0, #7 + bne _023109D4 + ldrb r0, [r4, #0xcd] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xcd] + ldrb r0, [r4, #0xcd] + cmp r0, #0 + bne _023109B4 + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r1, _02310AD0 ; =0x022C4454 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r5 + strb r2, [r4, #0xcd] + bl ov29_02307BDC + ldr r1, [r4, #0xc8] + mov r0, r5 + bl ov29_022E42E8 + ldr r1, _02310AD4 ; =0x022C446C + mov r0, r5 + ldrsh r1, [r1] + mov r2, #2 + mov r3, #0x248 + bl ov29_0230D11C +_023109B4: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + beq _02310B6C + b _02310FF4 +_023109D4: + cmp r0, #4 + bne _02310AF8 + ldrb r0, [r4, #0xcd] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xcd] + ldrb r0, [r4, #0xcd] + cmp r0, #0 + bne _02310A4C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r1, _02310AD8 ; =0x022C45F0 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r5 + strb r2, [r4, #0xcd] + bl ov29_02307BDC + ldr r0, _02310ADC ; =0x022C45D0 + ldr r3, _02310AE0 ; =0x0000024A + ldrsh r1, [r0] + mov r0, r5 + mov r2, #5 + bl ov29_0230D11C +_02310A4C: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + beq _02310B6C + b _02310FF4 + .align 2, 0 +_02310A6C: .word 0x022C4BBC +_02310A70: .word 0x0000199A +_02310A74: .word 0x022C4FC4 +_02310A78: .word 0x022C4A5C +_02310A7C: .word 0x00000DE6 +_02310A80: .word 0x00000DE7 +_02310A84: .word 0x02353538 +_02310A88: .word 0x00000DE8 +_02310A8C: .word 0x00000DE9 +_02310A90: .word 0x00000DEA +_02310A94: .word 0x00001303 +_02310A98: .word 0x00000DBD +_02310A9C: .word 0x022C46EC +_02310AA0: .word 0x0000025F +_02310AA4: .word 0x022C46A0 +_02310AA8: .word 0x022C466C +_02310AAC: .word 0x022C4610 +_02310AB0: .word 0x022C44D4 +_02310AB4: .word 0x000003E7 +_02310AB8: .word 0x022C4664 +_02310ABC: .word 0x022C464C +_02310AC0: .word 0x022C46A8 +_02310AC4: .word 0x022C44D8 +_02310AC8: .word 0x022C4414 +_02310ACC: .word 0x022C4C9C +_02310AD0: .word 0x022C4454 +_02310AD4: .word 0x022C446C +_02310AD8: .word 0x022C45F0 +_02310ADC: .word 0x022C45D0 +_02310AE0: .word 0x0000024A +_02310AE4: .word 0x022C45E8 +_02310AE8: .word 0x022C4590 +_02310AEC: .word 0x022C44BC +_02310AF0: .word 0x022C46AC +_02310AF4: .word 0x022C4588 +_02310AF8: + cmp r0, #5 + bne _02310B6C + ldrb r0, [r4, #0xcd] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xcd] + ldrb r0, [r4, #0xcd] + cmp r0, #0 + bne _02310B6C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldr r1, _02310AE4 ; =0x022C45E8 + ldr r0, _02310AE8 ; =0x022C4590 + ldrsh r3, [r1] + ldrsh r2, [r0] + mov r0, r5 + mov r1, r5 + strb r3, [r4, #0xcd] + mov r6, #1 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp +_02310B6C: + ldrb r0, [r4, #0xd8] + cmp r0, #1 + bne _02310C28 + ldrb r0, [r4, #0xdc] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xdc] + ldrb r0, [r4, #0xdc] + cmp r0, #0 + bne _02310C0C + ldrsh r2, [r4, #0x12] + ldrsh r1, [r4, #0x16] + ldr r0, _02310AB4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + ldr r1, _02310AEC ; =0x022C44BC + movs r6, r0, asr #2 + ldrsh r1, [r1] + mov r0, #0 + addeq r6, r6, #1 + strb r1, [r4, #0xdc] + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + arm_func_end ov29_0230FC24 + + arm_func_start ov29_02310BDC +ov29_02310BDC: ; 0x02310BDC + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r0, r5 + mov r1, r5 + bl ov29_02307BDC + mov r2, #7 + mov r0, r5 + mov r1, r6 + add r3, r2, #0x244 + bl ov29_0230D11C +_02310C0C: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + arm_func_end ov29_02310BDC + + arm_func_start ov29_02310C18 +ov29_02310C18: ; 0x02310C18 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_02310C28: + ldrb r0, [r4, #0xe0] + cmp r0, #1 + bne _02310DE0 + ldrb r0, [r4, #0xea] + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r4, #0xea] + ldrb r0, [r4, #0xea] + cmp r0, #0 + bne _02310DC4 + ldr r0, _02310A84 ; =0x02353538 + ldrb r2, [r4, #0xe8] + ldr r0, [r0] + ldr r1, _02310AF0 ; =0x022C46AC + add r0, r0, r2, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + ldrsh r1, [r1] + ldr r0, _02310AF4 ; =0x022C4588 + cmp r7, #0 + ldrsh r6, [r0] + strb r1, [r4, #0xea] + moveq r0, #0 + streqb r0, [r4, #0xe0] + beq _02310DC4 + ldr r0, [r7, #0xb4] + ldr r1, [r4, #0xe4] + ldr r0, [r0, #0xb0] + cmp r1, r0 + movne r0, #0 + strneb r0, [r4, #0xe0] + bne _02310DC4 + cmp r7, r5 + beq _02310CF0 + cmp r7, #0 + moveq r0, #0 + beq _02310CD0 + ldr r0, [r7] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_02310CD0: + cmp r0, #0 + beq _02310CF0 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r8, #0 + bne _02310D00 +_02310CF0: + mov r0, r5 + mov r1, #0x3a + bl AbilityIsActive2 + mov r8, r0 +_02310D00: + mov r0, r5 + bl ov29_022EC62C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + mov r0, r7 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldrb r0, [r4, #0xc4] + cmp r0, #1 + beq _02310DC4 + mov r0, r5 + mov r1, r5 + bl ov29_02307BDC + mov r0, r5 + mov r1, r6 + mov r2, #9 + mov r3, #0x24c + bl ov29_0230D11C + cmp r8, #0 + beq _02310D94 + mov r0, r7 + mov r1, r7 + bl ov29_02307BDC + mov r2, #0xd + mov r0, r7 + mov r1, r6 + add r3, r2, #0x22c + bl ov29_0230D11C + b _02310DC4 +_02310D94: + mov r0, r5 + mov r1, #0x73 + bl AbilityIsActive2 + cmp r0, #0 + bne _02310DC4 + mov r8, #1 + mov r0, r7 + mov r1, r7 + mov r2, r6 + mov r3, #0 + str r8, [sp] + bl TryIncreaseHp +_02310DC4: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_02310DE0: + ldrb r0, [r4, #0x106] + cmp r0, #0 + beq _02310E9C + add r0, r4, #6 + add r0, r0, #0x100 + bl TickStatusTurnCounter + ldrb r0, [r4, #0x106] + cmp r0, #0 + bne _02310E9C + mov r0, #0 + bl DisplayActions + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _02310FFC ; =0x00000DEB + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + bl ov29_02307BDC + ldrb r0, [r4, #0xd5] + cmp r0, #7 + bne _02310E6C + ldr r1, _02311000 ; =0x00000DEC + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + b _02310E80 +_02310E6C: + mov r2, #0xb + ldr r1, _02311004 ; =0x0000270F + mov r0, r5 + rsb r3, r2, #0x258 + bl ov29_0230D11C +_02310E80: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 +_02310E9C: + ldrb r0, [r4, #0xd2] + cmp r0, #1 + bne _02310F70 + add r0, r4, #0xd3 + bl TickStatusTurnCounter + ldrb r0, [r4, #0xd3] + cmp r0, #0 + bne _02310F70 + mov r1, #0 + mov r0, r5 + strb r1, [r4, #0xd2] + bl ov29_02300818 + cmp r0, #0 + bne _02310F70 + mov r0, r5 + mov r1, #0 + bl ov29_02300DCC + cmp r0, #0 + bne _02310F70 + mov r0, r5 + bl ov29_02300CB0 + cmp r0, #0 + bne _02310F70 + mov r0, #0 + bl DisplayActions + ldrh r0, [r4, #0xac] + cmp r0, #0 + ldreq r0, _02311008 ; =0x00000165 + streqh r0, [r4, #0xac] + ldrh r1, [r4, #0xac] + add r0, sp, #0x18 + bl InitMove + mov r1, #0 + ldrb r0, [sp, #0x18] + add r6, sp, #0x18 + mov r2, r1 + orr r0, r0, #0x10 + strb r0, [sp, #0x18] + mov r0, r5 + mov r3, r1 + stmia sp, {r1, r6} + bl ov29_02322374 + mov r1, #0 + mov r0, r5 + strh r1, [r4, #0xac] + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r0, #0 + str r0, [r4, #0xb8] +_02310F70: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + ldrb r0, [r4, #0xd2] + cmp r0, #0xc + bne _02310FD0 + add r0, r4, #0xd3 + bl TickStatusTurnCounter + ldrb r0, [r4, #0xd3] + cmp r0, #0 + bne _02310FD0 + mov r0, #0 + strb r0, [r4, #0xd2] + mov r1, r5 + mov r2, r0 + strb r0, [r4, #0x154] + bl SubstitutePlaceholderStringTags + ldr r1, _0231100C ; =0x00000CBA + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_02310FD0: + mov r0, r5 + bl EntityIsValid__02311010 + cmp r0, #0 + beq _02310FF4 + bl IsFloorOver + cmp r0, #0 + bne _02310FF4 + mov r0, r5 + bl TickNoSlipCap +_02310FF4: + add sp, sp, #0x34 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02310FFC: .word 0x00000DEB +_02311000: .word 0x00000DEC +_02311004: .word 0x0000270F +_02311008: .word 0x00000165 +_0231100C: .word 0x00000CBA + arm_func_end ov29_02310C18 diff --git a/asm/overlay_29_02311034.s b/asm/overlay_29_02311034.s new file mode 100644 index 00000000..9eb0c339 --- /dev/null +++ b/asm/overlay_29_02311034.s @@ -0,0 +1,600 @@ + .include "asm/macros.inc" + .include "overlay_29_02311034.inc" + + .text + + arm_func_start ItemIsActive__02311034 +ItemIsActive__02311034: ; 0x02311034 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__02311034 + + arm_func_start ExclusiveItemEffectIsActive__02311064 +ExclusiveItemEffectIsActive__02311064: ; 0x02311064 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__02311064 + + arm_func_start TickStatusAndHealthRegen +TickStatusAndHealthRegen: ; 0x02311088 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + movs sl, r0 + mov r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl ov29_0234B294 + ldr r7, [sl, #0xb4] + ldrb r0, [r7, #0xbf] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _023110E0 + mov r0, sl + mov r1, #0x72 + bl AbilityIsActive2 + cmp r0, #0 + moveq r4, #1 +_023110E0: + ldrb r0, [r7, #0x150] + cmp r0, #0 + cmpeq r4, #0 + bne _023112A8 + ldrb r0, [r7, #0xd8] + cmp r0, #5 + ldrneb r0, [r7, #0xbd] + cmpne r0, #3 + beq _023112A8 + ldrb r0, [r7, #6] + mov r4, #0 + cmp r0, #0 + bne _02311120 + ldrsh r0, [r7, #2] + bl GetRegenSpeed + mov r4, r0 +_02311120: + cmp r4, #0 + beq _023112A8 + mov r0, sl + mov r1, #0x11 + bl ItemIsActive__02311034 + cmp r0, #0 + bne _02311150 + mov r0, sl + mov r1, #0x35 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231115C +_02311150: + ldr r0, _02311800 ; =0x022C46F8 + ldrsh r0, [r0] + add r4, r4, r0 +_0231115C: + ldrb r0, [r7, #0xd5] + mov r1, #3 + cmp r0, #6 + ldreq r0, _02311804 ; =0x022C46D0 + ldreqsh r0, [r0] + addeq r4, r4, r0 + mov r0, sl + bl AbilityIsActive2 + cmp r0, #0 + beq _0231119C + mov r0, sl + bl GetApparentWeather + cmp r0, #4 + ldreq r0, _02311808 ; =0x022C4578 + ldreqsh r0, [r0] + addeq r4, r4, r0 +_0231119C: + mov r0, sl + mov r1, #0x55 + bl AbilityIsActive2 + cmp r0, #0 + beq _023111C8 + mov r0, sl + bl GetApparentWeather + cmp r0, #4 + ldreq r0, _02311808 ; =0x022C4578 + ldreqsh r0, [r0] + addeq r4, r4, r0 +_023111C8: + mov r0, sl + mov r1, #0x4d + bl AbilityIsActive2 + cmp r0, #0 + beq _023111F4 + mov r0, sl + bl GetApparentWeather + cmp r0, #5 + ldreq r0, _0231180C ; =0x022C4630 + ldreqsh r0, [r0] + addeq r4, r4, r0 +_023111F4: + mov r0, sl + mov r1, #0x49 + bl ExclusiveItemEffectIsActive__02311064 + cmp r0, #0 + ldrne r0, _02311810 ; =0x022C4674 + ldrsh r2, [r7, #0x12] + ldrnesh r0, [r0] + ldrsh r1, [r7, #0x16] + addne r4, r4, r0 + cmp r4, #0x1f4 + movgt r4, #0x1f4 + add r3, r2, r1 + cmp r4, #0x1e + ldr r0, _02311814 ; =0x000003E7 + movlt r4, #0x1e + cmp r3, r0 + movgt r3, r0 + add r0, r7, #0x200 + ldrsh r1, [r0, #0x10] + add r2, r7, #0x210 + add r1, r1, r3 + strh r1, [r0, #0x10] + b _02311268 +_02311250: + ldrsh r1, [r7, #0x10] + add r1, r1, #1 + strh r1, [r7, #0x10] + ldrsh r1, [r2] + sub r1, r1, r4 + strh r1, [r2] +_02311268: + ldrsh r1, [r0, #0x10] + cmp r1, r4 + bge _02311250 + ldrsh r1, [r7, #0x12] + ldrsh r0, [r7, #0x16] + ldr r2, _02311814 ; =0x000003E7 + add r1, r1, r0 + cmp r1, r2 + ldrsh r0, [r7, #0x10] + movle r2, r1 + cmp r0, r2 + blt _023112A8 + ldr r0, _02311814 ; =0x000003E7 + cmp r1, r0 + movgt r1, r0 + strh r1, [r7, #0x10] +_023112A8: + ldrb r0, [r7, #0xbd] + cmp r0, #0 + beq _0231131C + add r0, r7, #0xbe + bl TickStatusTurnCounter + ldrb r0, [r7, #0xbe] + cmp r0, #0 + bne _0231131C + ldr r0, [r7, #0x110] + cmp r0, #1 + ble _02311304 + ldrb r0, [r7, #0xbd] + cmp r0, #4 + bne _02311304 + mov r0, #0 + bl DisplayActions + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02311304: + mov r2, #1 + mov r0, sl + mov r1, sl + mov r3, r2 + str r2, [sp] + bl ov29_02305FDC +_0231131C: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xbf] + cmp r0, #0 + beq _02311364 + add r0, r7, #0xc0 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xc0] + cmp r0, #0 + bne _02311364 + mov r0, sl + mov r1, sl + bl ov29_023061A8 +_02311364: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xc4] + cmp r0, #0 + beq _023113B0 + add r0, r7, #0xcc + bl TickStatusTurnCounter + ldrb r0, [r7, #0xcc] + cmp r0, #0 + bne _023113B0 + mov r0, sl + mov r1, sl + mov r2, #1 + bl EndFrozenClassStatus +_023113B0: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xd0] + cmp r0, #0 + beq _023113F8 + add r0, r7, #0xd1 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xd1] + cmp r0, #0 + bne _023113F8 + mov r0, sl + mov r1, sl + bl EndCringeClassStatus +_023113F8: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xd5] + cmp r0, #0 + beq _02311468 + add r0, r7, #0xd6 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xd5] + cmp r0, #0x10 + bne _02311450 + add r0, r7, #0xd7 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xd7] + cmp r0, #0 + bne _02311450 + mov r0, sl + bl ov29_023183E8 +_02311450: + ldrb r0, [r7, #0xd6] + cmp r0, #0 + bne _02311468 + mov r0, sl + mov r1, sl + bl ov29_023064F4 +_02311468: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xd8] + cmp r0, #0 + beq _023114B8 + add r0, r7, #0xdb + bl TickStatusTurnCounter + ldrb r0, [r7, #0xdb] + cmp r0, #0 + bne _023114B8 + mov r0, sl + mov r1, sl + mov r2, #0 + mov r3, #1 + bl ov29_02306728 +_023114B8: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xe0] + cmp r0, #0 + beq _02311500 + add r0, r7, #0xe9 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xe9] + cmp r0, #0 + bne _02311500 + mov r0, sl + mov r1, sl + bl ov29_023068C4 +_02311500: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xec] + cmp r0, #0 + beq _02311548 + add r0, r7, #0xed + bl TickStatusTurnCounter + ldrb r0, [r7, #0xed] + cmp r0, #0 + bne _02311548 + mov r0, sl + mov r1, sl + bl ov29_02306950 +_02311548: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xef] + cmp r0, #0 + beq _02311594 + add r0, r7, #0xf0 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xf0] + cmp r0, #0 + bne _02311594 + mov r0, sl + mov r1, sl + mov r2, #0 + bl ov29_02306A00 +_02311594: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xf1] + cmp r0, #0 + beq _023115DC + add r0, r7, #0xf2 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xf2] + cmp r0, #0 + bne _023115DC + mov r0, sl + mov r1, sl + bl ov29_02306B28 +_023115DC: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xf3] + cmp r0, #0 + beq _02311624 + add r0, r7, #0xf4 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xf4] + cmp r0, #0 + bne _02311624 + mov r0, sl + mov r1, sl + bl ov29_02306BF8 +_02311624: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xf5] + cmp r0, #0 + beq _0231166C + add r0, r7, #0xf6 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xf6] + cmp r0, #0 + bne _0231166C + mov r0, sl + mov r1, sl + bl ov29_02306C64 +_0231166C: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xf7] + cmp r0, #0 + beq _023116B4 + add r0, r7, #0xf8 + bl TickStatusTurnCounter + ldrb r0, [r7, #0xf8] + cmp r0, #0 + bne _023116B4 + mov r0, sl + mov r1, sl + bl ov29_02306CD0 +_023116B4: + mov r0, sl + bl EntityIsValid__02311010 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsFloorOver + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0x105] + cmp r0, #0 + beq _0231174C + add r0, r7, #5 + add r0, r0, #0x100 + bl TickStatusTurnCounter + ldrb r0, [r7, #0x105] + cmp r0, #0 + bne _0231174C + ldrb r0, [r7, #0x104] + cmp r0, #2 + bne _02311720 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02311818 ; =0x00000CC6 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _02311744 +_02311720: + cmp r0, #1 + bne _02311744 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231181C ; =0x00000CC7 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_02311744: + mov r0, #0 + strb r0, [r7, #0x104] +_0231174C: + mov r6, #0 + add r0, r7, #0x19 + mov sb, r6 + add r5, r0, #0x100 + add r4, r7, #0x114 + mov fp, #1 +_02311764: + add r8, r7, sb + ldrb r0, [r8, #0x119] + cmp r0, #0 + beq _02311788 + add r0, r5, sb + bl TickStatusTurnCounter + ldrb r0, [r8, #0x119] + cmp r0, #0 + moveq r6, fp +_02311788: + ldrb r0, [r8, #0x114] + cmp r0, #0 + beq _023117A8 + add r0, r4, sb + bl TickStatusTurnCounter + ldrb r0, [r8, #0x114] + cmp r0, #0 + moveq r6, #1 +_023117A8: + add sb, sb, #1 + cmp sb, #5 + blt _02311764 + cmp r6, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0xb4] + mov r0, sl + ldr r5, [r1, #0x110] + bl CalcSpeedStageWrapper + mov r4, r0 + cmp r5, r4 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, _02311820 ; =0x02353318 + mov r1, r4, lsl #1 + ldrh r1, [r0, r1] + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02311800: .word 0x022C46F8 +_02311804: .word 0x022C46D0 +_02311808: .word 0x022C4578 +_0231180C: .word 0x022C4630 +_02311810: .word 0x022C4674 +_02311814: .word 0x000003E7 +_02311818: .word 0x00000CC6 +_0231181C: .word 0x00000CC7 +_02311820: .word 0x02353318 + arm_func_end TickStatusAndHealthRegen + + arm_func_start InflictSleepStatusSingle +InflictSleepStatusSingle: ; 0x02311824 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r4, #0 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r5, [r7, #0xb4] + ldrb r0, [r5, #0xbd] + cmp r0, #3 + beq _023118A0 + cmp r0, #1 + beq _02311898 + mov r0, #1 + strb r0, [r5, #0xbd] + cmp r6, #0x7f + beq _02311890 + mov r0, r7 + mov r1, #0x2f + bl AbilityIsActive2 + cmp r0, #0 + beq _02311890 + add r0, r6, r6, lsr #31 + mov r6, r0, asr #1 + cmp r6, #1 + movlt r6, #1 +_02311890: + strb r6, [r5, #0xbe] + b _023118A4 +_02311898: + mov r4, #1 + b _023118A4 +_023118A0: + mov r4, #2 +_023118A4: + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end InflictSleepStatusSingle diff --git a/asm/overlay_29_023118D8.s b/asm/overlay_29_023118D8.s new file mode 100644 index 00000000..80bab58f --- /dev/null +++ b/asm/overlay_29_023118D8.s @@ -0,0 +1,4074 @@ + .include "asm/macros.inc" + .include "overlay_29_023118D8.inc" + + .text + + arm_func_start TryInflictSleepStatus +TryInflictSleepStatus: ; 0x023118D8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r4, r3 + mov r2, #1 + mov r3, r2 + mov r7, r0 + mov r6, r1 + str r4, [sp] + bl ov29_023119E4 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xbd] + cmp r0, #2 + bne _02311930 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _023119D0 ; =0x00000D09 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02311930: + cmp r0, #5 + bne _02311954 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _023119D4 ; =0x00000D0A + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02311954: + mov r0, r6 + bl ov29_022E3E74 + mov r0, r6 + mov r1, r5 + bl InflictSleepStatusSingle + mov r4, r0 + mov r0, r6 + mov r1, #8 + bl ov29_02304A48 + cmp r4, #1 + bne _02311994 + ldr r2, _023119D8 ; =0x00000D06 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02311994: + cmp r4, #2 + bne _023119B0 + ldr r2, _023119DC ; =0x00000D07 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023119B0: + ldr r2, _023119E0 ; =0x00000D04 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023119D0: .word 0x00000D09 +_023119D4: .word 0x00000D0A +_023119D8: .word 0x00000D06 +_023119DC: .word 0x00000D07 +_023119E0: .word 0x00000D04 + arm_func_end TryInflictSleepStatus + + arm_func_start ov29_023119E4 +ov29_023119E4: ; 0x023119E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x20] + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #1 + beq _02311B78 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r5, #0 + beq _02311A48 + mov r0, r8 + mov r1, r7 + mov r2, r4 + bl ov29_02301940 + cmp r0, #0 + movne r0, #1 + bne _02311B78 +_02311A48: + cmp r6, #0 + beq _02311A6C + mov r0, r8 + mov r1, r7 + mov r2, r4 + bl ov29_02302430 + cmp r0, #0 + movne r0, #1 + bne _02311B78 +_02311A6C: + mov r0, r7 + mov r1, #0x11 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02311AA0 + cmp r4, #0 + beq _02311A98 + ldr r2, _02311B80 ; =0x00000DA4 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02311A98: + mov r0, #1 + b _02311B78 +_02311AA0: + mov r0, r8 + mov r1, r7 + mov r2, #0x36 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02311ADC + cmp r4, #0 + beq _02311AD4 + ldr r2, _02311B84 ; =0x00000DA5 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02311AD4: + mov r0, #1 + b _02311B78 +_02311ADC: + mov r0, r8 + mov r1, r7 + mov r2, #0x49 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02311B18 + cmp r4, #0 + beq _02311B10 + ldr r2, _02311B88 ; =0x00000DA6 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02311B10: + mov r0, #1 + b _02311B78 +_02311B18: + mov r0, r7 + mov r1, #0x1c + bl ItemIsActive__02311BF8 + cmp r0, #0 + beq _02311B4C + cmp r4, #0 + beq _02311B44 + ldr r2, _02311B8C ; =0x00000DB1 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02311B44: + mov r0, #1 + b _02311B78 +_02311B4C: + ldr r3, _02311B90 ; =0x00000DC2 + mov ip, #0xa + mov r0, r8 + mov r1, r7 + mov r2, r4 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_02311B78: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311B80: .word 0x00000DA4 +_02311B84: .word 0x00000DA5 +_02311B88: .word 0x00000DA6 +_02311B8C: .word 0x00000DB1 +_02311B90: .word 0x00000DC2 + arm_func_end ov29_023119E4 + + arm_func_start DefenderAbilityIsActive__02311B94 +DefenderAbilityIsActive__02311B94: ; 0x02311B94 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _02311BE8 + cmp r0, #0 + moveq r1, #0 + beq _02311BC8 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_02311BC8: + cmp r1, #0 + cmpne r3, #0 + beq _02311BE8 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02311BE8: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__02311B94 + + arm_func_start ItemIsActive__02311BF8 +ItemIsActive__02311BF8: ; 0x02311BF8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__02311BF8 + + arm_func_start ov29_02311C28 +ov29_02311C28: ; 0x02311C28 + stmdb sp!, {r3, lr} + ldrb ip, [sp, #8] + str ip, [sp] + bl ov29_023119E4 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02311C28 + + arm_func_start TryInflictNightmareStatus +TryInflictNightmareStatus: ; 0x02311C4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r2 + mov r2, #1 + mov r3, r2 + mov r7, r0 + mov r6, r1 + str r2, [sp] + mov r4, #0 + bl ov29_023119E4 + cmp r0, #0 + bne _02311D4C + ldr r5, [r6, #0xb4] + ldrb r0, [r5, #0xbd] + cmp r0, #2 + beq _02311D34 + mov r0, r6 + bl ov29_022E4B8C + ldrb r0, [r5, #0xbd] + cmp r0, #3 + beq _02311CE0 + mov r0, r7 + mov r1, r6 + mov r2, #0x2f + mov r3, #1 + strb r8, [r5, #0xbe] + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02311CE4 + ldrb r0, [r5, #0xbe] + mov r1, r0, asr #1 + and r0, r1, #0xff + cmp r0, #1 + strb r1, [r5, #0xbe] + movlo r0, #1 + strlob r0, [r5, #0xbe] + b _02311CE4 +_02311CE0: + mov r4, #1 +_02311CE4: + mov r2, #3 + mov r0, r6 + mov r1, #8 + strb r2, [r5, #0xbd] + bl ov29_02304A48 + cmp r4, #0 + beq _02311D14 + ldr r2, _02311D54 ; =0x00000D0D + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311D44 +_02311D14: + ldr r2, _02311D58 ; =0x00000D0C + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _02311D44 +_02311D34: + ldr r2, _02311D5C ; =0x00000D0E + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02311D44: + mov r0, r6 + bl UpdateStatusIconFlags +_02311D4C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311D54: .word 0x00000D0D +_02311D58: .word 0x00000D0C +_02311D5C: .word 0x00000D0E + arm_func_end TryInflictNightmareStatus + + arm_func_start TryInflictNappingStatus +TryInflictNappingStatus: ; 0x02311D60 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r4, #0 + mov r6, r2 + mov r5, #1 + mov r2, r4 + mov r3, r4 + mov r8, r0 + mov r7, r1 + str r5, [sp] + bl ov29_023119E4 + cmp r0, #0 + bne _02311E5C + ldr r5, [r7, #0xb4] + ldrb r0, [r5, #0xbd] + cmp r0, #2 + beq _02311E44 + mov r0, r7 + bl ov29_022E4BA0 + ldrb r0, [r5, #0xbd] + cmp r0, #0 + cmpne r0, #4 + bne _02311DFC + mov r0, r8 + mov r1, r7 + mov r2, #0x2f + mov r3, #1 + strb r6, [r5, #0xbe] + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02311E00 + ldrb r0, [r5, #0xbe] + mov r1, r0, asr #1 + and r0, r1, #0xff + cmp r0, #1 + strb r1, [r5, #0xbe] + movlo r0, #1 + strlob r0, [r5, #0xbe] + b _02311E00 +_02311DFC: + mov r4, #1 +_02311E00: + mov r2, #5 + mov r0, r7 + mov r1, #8 + strb r2, [r5, #0xbd] + bl ov29_02304A48 + cmp r4, #0 + beq _02311E30 + ldr r2, _02311E64 ; =0x00000D08 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311E54 +_02311E30: + ldr r2, _02311E68 ; =0x00000D05 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311E54 +_02311E44: + ldr r2, _02311E6C ; =0x00000D0B + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02311E54: + mov r0, r7 + bl UpdateStatusIconFlags +_02311E5C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311E64: .word 0x00000D08 +_02311E68: .word 0x00000D05 +_02311E6C: .word 0x00000D0B + arm_func_end TryInflictNappingStatus + + arm_func_start TryInflictYawningStatus +TryInflictYawningStatus: ; 0x02311E70 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r2 + mov r2, #1 + mov r3, r2 + mov r6, r0 + mov r5, r1 + str r2, [sp] + bl ov29_023119E4 + cmp r0, #0 + bne _02311F6C + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0xbd] + cmp r0, #0 + bne _02311EEC + mov r0, #4 + strb r0, [r1, #0xbd] + mov r0, r5 + strb r4, [r1, #0xbe] + bl ov29_022E53EC + mov r0, r5 + mov r1, #8 + bl ov29_02304A48 + ldr r2, _02311F74 ; =0x00000D0F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02311F64 +_02311EEC: + cmp r0, #1 + cmpne r0, #3 + cmpne r0, #5 + bne _02311F10 + ldr r2, _02311F78 ; =0x00000D12 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311F64 +_02311F10: + cmp r0, #2 + bne _02311F2C + mov r0, r6 + mov r1, r5 + mov r2, #0xd10 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311F64 +_02311F2C: + cmp r0, #4 + bne _02311F48 + ldr r2, _02311F7C ; =0x00000D11 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02311F64 +_02311F48: + ldr r2, _02311F74 ; =0x00000D0F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet +_02311F64: + mov r0, r5 + bl UpdateStatusIconFlags +_02311F6C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02311F74: .word 0x00000D0F +_02311F78: .word 0x00000D12 +_02311F7C: .word 0x00000D11 + arm_func_end TryInflictYawningStatus + + arm_func_start TryInflictSleeplessStatus +TryInflictSleeplessStatus: ; 0x02311F80 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r4, #0 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r5, [r6, #0xb4] + mov r1, r6 + ldrb r0, [r5, #0xbd] + cmp r0, #1 + cmpne r0, #5 + cmpne r0, #3 + mov r0, #0 + mov r2, r0 + moveq r4, #1 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xbd] + cmp r0, #2 + beq _02312040 + ldr r1, _0231205C ; =0x022C4728 + mov r3, #2 + mov r0, r6 + mov r2, #0 + strb r3, [r5, #0xbd] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r5, #0xbe] + mov r1, #0xff + strb r1, [r5, #0x178] + mov r0, r6 + strb r1, [r5, #0x177] + bl ov29_022E4BB4 + mov r0, r6 + mov r1, #8 + bl ov29_02304A48 + cmp r4, #0 + beq _0231202C + ldr r2, _02312060 ; =0x00000D13 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0231202C: + ldr r2, _02312064 ; =0x00000D15 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02312050 +_02312040: + ldr r2, _02312068 ; =0x00000D14 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02312050: + mov r0, r6 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0231205C: .word 0x022C4728 +_02312060: .word 0x00000D13 +_02312064: .word 0x00000D15 +_02312068: .word 0x00000D14 + arm_func_end TryInflictSleeplessStatus + + arm_func_start TryInflictPausedStatus +TryInflictPausedStatus: ; 0x0231206C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r4, r2 + mov r5, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #0 + ldr r4, [r6, #0xb4] + beq _023120BC + ldrb r2, [sp, #0x18] + mov r0, r7 + mov r1, r6 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_023120BC: + ldrb r2, [sp, #0x18] + mov r0, r7 + mov r1, r6 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [sp, #0x1c] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_0234B034 + mov r1, #0 + mov r2, r4 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldrb r0, [r4, #0xd0] + cmp r0, #3 + beq _02312160 + mov r1, #3 + mov r0, r6 + strb r1, [r4, #0xd0] + add r1, r5, #1 + strb r1, [r4, #0xd1] + bl ov29_022E4428 + cmp r5, #1 + bne _02312140 + ldr r2, _0231219C ; =0x00000D16 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02312150 +_02312140: + ldr r2, _023121A0 ; =0x00000D18 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02312150: + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _0231218C +_02312160: + cmp r5, #1 + bne _0231217C + ldr r2, _023121A4 ; =0x00000D17 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231218C +_0231217C: + ldr r2, _023121A8 ; =0x00000D19 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0231218C: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0231219C: .word 0x00000D16 +_023121A0: .word 0x00000D18 +_023121A4: .word 0x00000D17 +_023121A8: .word 0x00000D19 + arm_func_end TryInflictPausedStatus + + arm_func_start TryInflictInfatuatedStatus +TryInflictInfatuatedStatus: ; 0x023121AC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r8, r2 + mov r7, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + beq _0231231C + mov r0, r5 + mov r1, r4 + mov r2, r8 + ldr r6, [r4, #0xb4] + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + bne _0231231C + mov r0, r5 + mov r1, r4 + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + bne _0231231C + mov r0, r5 + mov r1, r4 + mov r2, #0x29 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02312260 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r8, #0 + beq _02312258 + ldr r2, _02312324 ; =0x00000DA3 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02312258: + mov r0, #0 + b _0231231C +_02312260: + ldr r3, _02312328 ; =0x00000DBB + mov ip, #3 + mov r0, r5 + mov r1, r4 + mov r2, r8 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #0 + bne _0231231C + cmp r7, #0 + movne r0, #1 + bne _0231231C + bl ov29_0234B034 + mov r1, #0 + mov r2, r6 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldrb r0, [r6, #0xd0] + cmp r0, #7 + beq _02312300 + ldr r1, _0231232C ; =0x022C4804 + mov r3, #7 + mov r0, r4 + mov r2, #1 + strb r3, [r6, #0xd0] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r4 + strb r1, [r6, #0xd1] + bl ov29_022E4C00 + ldr r2, _02312330 ; =0x00000D1A + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + mov r1, r4 + bl TryActivateQuickFeet + b _02312310 +_02312300: + ldr r2, _02312334 ; =0x00000D1B + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02312310: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 +_0231231C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02312324: .word 0x00000DA3 +_02312328: .word 0x00000DBB +_0231232C: .word 0x022C4804 +_02312330: .word 0x00000D1A +_02312334: .word 0x00000D1B + arm_func_end TryInflictInfatuatedStatus + + arm_func_start TryInflictBurnStatus +TryInflictBurnStatus: ; 0x02312338 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r4, r2 + mov r8, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, [sb, #0xb4] + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r0, sl + mov r1, sb + mov r2, #0x42 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _023123F0 + cmp r8, #0 + beq _023123E8 + ldr r2, _023125F0 ; =0x00000DAB + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_023123E8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023123F0: + mov r0, sb + mov r1, #2 + bl MonsterIsType + cmp r0, #0 + beq _02312424 + cmp r8, #0 + beq _0231241C + ldr r2, _023125F4 ; =0x00000DAC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231241C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312424: + mov r0, sb + bl GetTileAtEntity + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + bne _0231247C + ldr r0, _023125F8 ; =0x02353538 + ldr r1, _023125FC ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + beq _0231247C + cmp r8, #0 + beq _02312474 + ldr r2, _02312600 ; =0x00000DB9 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312474: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231247C: + ldrb r0, [sp, #0x28] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xbf] + mov r5, #1 + cmp r0, #1 + beq _023124F4 + ldr r1, _02312604 ; =0x022C4874 + mov r0, sb + mov r2, r5 + strb r5, [r7, #0xbf] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xc0] + mov r5, #0 + strb r5, [r7, #0xc1] + strb r5, [r7, #0xc2] + cmp r4, #0 + beq _023124D4 + mov r0, sb + bl ov29_022E4294 +_023124D4: + ldr r2, _02312608 ; =0x00000D1C + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet + b _02312504 +_023124F4: + ldr r2, _0231260C ; =0x00000D1D + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312504: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, sb + mov r1, #0x19 + bl AbilityIsActive2 + cmp r0, #0 + beq _023125E8 + cmp r5, #0 + bne _023125E8 + mov r5, #0 + ldr fp, _02312610 ; =0x0235171C + mov r4, r5 +_02312534: + mov r1, r4, lsl #2 + add r0, fp, r4, lsl #2 + ldrsh r3, [fp, r1] + ldrsh r1, [r0, #2] + ldrsh r0, [sb, #4] + ldrsh r2, [sb, #6] + add r0, r0, r3 + add r1, r2, r1 + bl GetTile + ldr r6, [r0, #0xc] + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023125DC + ldr r0, [r6] + cmp r0, #1 + bne _023125DC + cmp r5, #0 + bne _023125AC + mov r5, #1 + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldr r2, _02312614 ; =0x00000DC5 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_023125AC: + mov r0, sb + mov r1, r6 + bl ov29_023018AC + cmp r0, #1 + bne _023125DC + mov r2, #0 + str r2, [sp] + mov r0, sl + mov r1, r6 + mov r2, #1 + mov r3, r8 + bl TryInflictBurnStatus +_023125DC: + add r4, r4, #1 + cmp r4, #8 + blt _02312534 +_023125E8: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023125F0: .word 0x00000DAB +_023125F4: .word 0x00000DAC +_023125F8: .word 0x02353538 +_023125FC: .word 0x020A1AE8 +_02312600: .word 0x00000DB9 +_02312604: .word 0x022C4874 +_02312608: .word 0x00000D1C +_0231260C: .word 0x00000D1D +_02312610: .word 0x0235171C +_02312614: .word 0x00000DC5 + arm_func_end TryInflictBurnStatus + + arm_func_start TryInflictBurnStatusWholeTeam +TryInflictBurnStatusWholeTeam: ; 0x02312618 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + ldr r4, _02312660 ; =0x02353538 + mov r6, r7 + mov r5, #1 +_0231262C: + ldr r0, [r4] + mov r2, r5 + add r0, r0, r7, lsl #2 + str r6, [sp] + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + mov r3, r5 + mov r1, r0 + bl TryInflictBurnStatus + add r7, r7, #1 + cmp r7, #4 + blt _0231262C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02312660: .word 0x02353538 + arm_func_end TryInflictBurnStatusWholeTeam + + arm_func_start TryInflictPoisonedStatus +TryInflictPoisonedStatus: ; 0x02312664 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r4, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, [sb, #0xb4] + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r0, sb + mov r1, #0x1b + bl ItemIsActive__02311BF8 + cmp r0, #0 + beq _02312714 + cmp r8, #0 + beq _0231270C + mov r0, sl + mov r1, sb + mov r2, #0xdb0 + bl LogMessageByIdWithPopupCheckUserTarget +_0231270C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312714: + mov r0, sl + mov r1, sb + mov r2, #0x45 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02312750 + cmp r8, #0 + beq _02312748 + ldr r2, _02312924 ; =0x00000DAD + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312748: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312750: + mov r0, sb + mov r1, #8 + bl MonsterIsType + cmp r0, #0 + bne _02312778 + mov r0, sb + mov r1, #0x11 + bl MonsterIsType + cmp r0, #0 + beq _02312798 +_02312778: + cmp r8, #0 + beq _02312790 + ldr r2, _02312928 ; =0x00000DAE + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312790: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312798: + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xbf] + mov r4, #1 + cmp r0, #3 + beq _02312830 + cmp r0, #2 + beq _0231281C + ldr r1, _0231292C ; =0x022C4878 + mov r3, #2 + mov r0, sb + mov r2, r4 + strb r3, [r7, #0xbf] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xc0] + mov r4, #0 + strb r4, [r7, #0xc1] + mov r0, sb + strb r4, [r7, #0xc2] + bl ov29_022E4388 + ldr r2, _02312930 ; =0x00000D1E + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sb + mov r1, #8 + bl ov29_02304A84 + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet + b _02312840 +_0231281C: + mov r0, sl + mov r1, sb + mov r2, #0xd20 + bl LogMessageByIdWithPopupCheckUserTarget + b _02312840 +_02312830: + mov r0, sl + mov r1, sb + add r2, r4, #0xd20 + bl LogMessageByIdWithPopupCheckUserTarget +_02312840: + mov r0, sb + mov r1, #0x19 + bl AbilityIsActive2 + cmp r0, #0 + beq _02312914 + cmp r4, #0 + bne _02312914 + mov r5, #0 + ldr fp, _02312934 ; =0x0235171C + mov r4, r5 +_02312868: + mov r1, r4, lsl #2 + add r0, fp, r4, lsl #2 + ldrsh r6, [sb, #4] + ldrsh r3, [fp, r1] + ldrsh r1, [r0, #2] + ldrsh r2, [sb, #6] + add r0, r6, r3 + add r1, r2, r1 + bl GetTile + ldr r6, [r0, #0xc] + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02312908 + ldr r0, [r6] + cmp r0, #1 + bne _02312908 + cmp r5, #0 + bne _023128E0 + mov r5, #1 + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldr r2, _02312938 ; =0x00000DC5 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_023128E0: + mov r0, sb + mov r1, r6 + bl ov29_023018AC + cmp r0, #1 + bne _02312908 + mov r0, sl + mov r1, r6 + mov r2, r8 + mov r3, #0 + bl TryInflictPoisonedStatus +_02312908: + add r4, r4, #1 + cmp r4, #8 + blt _02312868 +_02312914: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02312924: .word 0x00000DAD +_02312928: .word 0x00000DAE +_0231292C: .word 0x022C4878 +_02312930: .word 0x00000D1E +_02312934: .word 0x0235171C +_02312938: .word 0x00000DC5 + arm_func_end TryInflictPoisonedStatus + + arm_func_start TryInflictBadlyPoisonedStatus +TryInflictBadlyPoisonedStatus: ; 0x0231293C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r4, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r7, [sb, #0xb4] + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + mov r0, sb + mov r1, #0x1b + bl ItemIsActive__02311BF8 + cmp r0, #0 + beq _023129EC + cmp r8, #0 + beq _023129E4 + mov r0, sl + mov r1, sb + mov r2, #0xdb0 + bl LogMessageByIdWithPopupCheckUserTarget +_023129E4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023129EC: + mov r0, sl + mov r1, sb + mov r2, #0x45 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02312A28 + cmp r8, #0 + beq _02312A20 + ldr r2, _02312BE0 ; =0x00000DAD + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312A20: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312A28: + mov r0, sb + mov r1, #8 + bl MonsterIsType + cmp r0, #0 + bne _02312A50 + mov r0, sb + mov r1, #0x11 + bl MonsterIsType + cmp r0, #0 + beq _02312A70 +_02312A50: + cmp r8, #0 + beq _02312A68 + ldr r2, _02312BE4 ; =0x00000DAE + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312A68: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02312A70: + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [r7, #0xbf] + mov r4, #1 + cmp r0, #3 + beq _02312AEC + ldr r1, _02312BE8 ; =0x022C4880 + mov r3, #3 + mov r0, sb + mov r2, r4 + strb r3, [r7, #0xbf] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xc0] + mov r4, #0 + strb r4, [r7, #0xc1] + mov r0, sb + strb r4, [r7, #0xc2] + bl ov29_022E43D8 + ldr r2, _02312BEC ; =0x00000D1F + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sb + mov r1, #8 + bl ov29_02304A84 + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet + b _02312AFC +_02312AEC: + mov r0, sl + mov r1, sb + add r2, r4, #0xd20 + bl LogMessageByIdWithPopupCheckUserTarget +_02312AFC: + mov r0, sb + mov r1, #0x19 + bl AbilityIsActive2 + cmp r0, #0 + beq _02312BD0 + cmp r4, #0 + bne _02312BD0 + mov r5, #0 + ldr fp, _02312BF0 ; =0x0235171C + mov r4, r5 +_02312B24: + mov r1, r4, lsl #2 + add r0, fp, r4, lsl #2 + ldrsh r6, [sb, #4] + ldrsh r3, [fp, r1] + ldrsh r1, [r0, #2] + ldrsh r2, [sb, #6] + add r0, r6, r3 + add r1, r2, r1 + bl GetTile + ldr r6, [r0, #0xc] + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02312BC4 + ldr r0, [r6] + cmp r0, #1 + bne _02312BC4 + cmp r5, #0 + bne _02312B9C + mov r5, #1 + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldr r2, _02312BF4 ; =0x00000DC5 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02312B9C: + mov r0, sb + mov r1, r6 + bl ov29_023018AC + cmp r0, #1 + bne _02312BC4 + mov r0, sl + mov r1, r6 + mov r2, r8 + mov r3, #0 + bl TryInflictBadlyPoisonedStatus +_02312BC4: + add r4, r4, #1 + cmp r4, #8 + blt _02312B24 +_02312BD0: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02312BE0: .word 0x00000DAD +_02312BE4: .word 0x00000DAE +_02312BE8: .word 0x022C4880 +_02312BEC: .word 0x00000D1F +_02312BF0: .word 0x0235171C +_02312BF4: .word 0x00000DC5 + arm_func_end TryInflictBadlyPoisonedStatus + + arm_func_start TryInflictFrozenStatus +TryInflictFrozenStatus: ; 0x02312BF8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r4, [r6, #0xb4] + ldrb r0, [r4, #0xc4] + cmp r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02301940 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02302430 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov ip, #4 + mov r0, r7 + mov r1, r6 + mov r2, r5 + rsb r3, ip, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #0x41 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02312CC4 + cmp r5, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _02312E00 ; =0x00000DA8 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02312CC4: + mov r0, r6 + mov r1, #6 + bl MonsterIsType + cmp r0, #0 + beq _02312CF4 + cmp r5, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _02312E04 ; =0x00000DA9 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02312CF4: + mov r0, r6 + bl GetTileAtEntity + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + bne _02312D48 + ldr r0, _02312E08 ; =0x02353538 + ldr r1, _02312E0C ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + bne _02312D48 + cmp r5, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _02312E10 ; =0x00000DAA + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02312D48: + mov ip, #4 + mov r0, r7 + mov r1, r6 + mov r2, r5 + rsb r3, ip, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [r4, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _02312D88 + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters +_02312D88: + mov r0, r6 + bl ov29_022E4C4C + mov r2, #1 + ldr r1, _02312E14 ; =0x022C4870 + mov r0, r6 + strb r2, [r4, #0xc4] + bl CalcStatusDuration + add r3, r0, #1 + strb r3, [r4, #0xcc] + mov r3, #0 + ldr r2, _02312E18 ; =0x00000D22 + mov r0, r7 + mov r1, r6 + strb r3, [r4, #0xcd] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + mov r0, r6 + mov r1, #0 + bl ov29_0231B4EC + cmp r0, #3 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r2, _02312E1C ; =0x00000D23 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02312E00: .word 0x00000DA8 +_02312E04: .word 0x00000DA9 +_02312E08: .word 0x02353538 +_02312E0C: .word 0x020A1AE8 +_02312E10: .word 0x00000DAA +_02312E14: .word 0x022C4870 +_02312E18: .word 0x00000D22 +_02312E1C: .word 0x00000D23 + arm_func_end TryInflictFrozenStatus + + arm_func_start TryInflictConstrictionStatus +TryInflictConstrictionStatus: ; 0x02312E20 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, [r6, #0xb4] + ldrb r1, [r4, #0xc4] + add r0, r1, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _02312EA4 + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters + b _02312ECC +_02312EA4: + cmp r1, #5 + bne _02312ECC + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02312F68 ; =0x00000C9B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02312ECC: + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xc4] + cmp r0, #7 + beq _02312F48 + ldr r1, _02312F6C ; =0x022C48A0 + mov r3, #7 + mov r0, r6 + mov r2, #1 + strb r3, [r4, #0xc4] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r4, #0xcc] + mov r0, #0 + strb r0, [r4, #0xcd] + mov r0, r6 + str r5, [r4, #0xc8] + bl ov29_022E42E4 + ldr r2, _02312F70 ; =0x00000D24 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, #8 + bl ov29_02304A84 + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _02312F58 +_02312F48: + ldr r2, _02312F74 ; =0x00000D25 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02312F58: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02312F68: .word 0x00000C9B +_02312F6C: .word 0x022C48A0 +_02312F70: .word 0x00000D24 +_02312F74: .word 0x00000D25 + arm_func_end TryInflictConstrictionStatus + + arm_func_start TryInflictShadowHoldStatus +TryInflictShadowHoldStatus: ; 0x02312F78 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #0x2b + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _0231302C + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, #0x2b + bl ov29_0234B084 + cmp r4, #0 + bne _02313024 + ldr r2, _0231311C ; =0x00000D28 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02313024: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0231302C: + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r4, [r5, #0xb4] + ldrb r1, [r4, #0xc4] + add r0, r1, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _0231305C + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters + b _02313084 +_0231305C: + cmp r1, #5 + bne _02313084 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02313120 ; =0x00000C9B + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02313084: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xc4] + cmp r0, #2 + beq _023130FC + ldr r1, _02313124 ; =0x022C4898 + mov r3, #2 + mov r0, r5 + mov r2, #1 + strb r3, [r4, #0xc4] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xcc] + mov r1, #0 + strb r1, [r4, #0xcd] + bl ov29_022E42E0 + ldr r2, _02313128 ; =0x00000D26 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + mov r1, #8 + bl ov29_02304A84 + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _0231310C +_023130FC: + ldr r2, _0231312C ; =0x00000D27 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0231310C: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231311C: .word 0x00000D28 +_02313120: .word 0x00000C9B +_02313124: .word 0x022C4898 +_02313128: .word 0x00000D26 +_0231312C: .word 0x00000D27 + arm_func_end TryInflictShadowHoldStatus + + arm_func_start TryInflictIngrainStatus +TryInflictIngrainStatus: ; 0x02313130 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _0231316C + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters +_0231316C: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xc4] + cmp r0, #5 + beq _023131CC + ldr r1, _023131E8 ; =0x022C48B8 + mov r3, #5 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xc4] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xcc] + mov r1, #0 + strb r1, [r4, #0xcd] + bl ov29_022E4D24 + ldr r2, _023131EC ; =0x00000D29 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023131DC +_023131CC: + ldr r2, _023131F0 ; =0x00000D2A + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023131DC: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023131E8: .word 0x022C48B8 +_023131EC: .word 0x00000D29 +_023131F0: .word 0x00000D2A + arm_func_end TryInflictIngrainStatus + + arm_func_start TryInflictWrappedStatus +TryInflictWrappedStatus: ; 0x023131F4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, [r7, #0xb4] + ldr r5, [r6, #0xb4] + ldrb r1, [r4, #0xc4] + cmp r1, #3 + cmpne r1, #4 + ldrneb r0, [r5, #0xc4] + cmpne r0, #3 + cmpne r0, #4 + beq _02313324 + mov r0, #3 + strb r0, [r4, #0xc4] + mov r0, #0x7f + strb r0, [r4, #0xcc] + mov r2, #0 + ldr r1, _023133DC ; =0x022C48AC + mov r0, r6 + strb r2, [r4, #0xcd] + mov r3, #4 + mov r2, #1 + strb r3, [r5, #0xc4] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r5, #0xcc] + mov r0, #0 + ldr r3, _023133E0 ; =0x02353538 + strb r0, [r5, #0xcd] + ldr r1, [r3] + mov r0, r7 + add r1, r1, #0x3000 + ldr r2, [r1, #0xe30] + mov r1, r6 + str r2, [r4, #0xb4] + ldr r2, [r3] + add r2, r2, #0x3000 + ldr r2, [r2, #0xe30] + str r2, [r5, #0xb4] + ldr r2, [r3] + add r2, r2, #0x3000 + ldr r3, [r2, #0xe30] + add r3, r3, #1 + str r3, [r2, #0xe30] + bl ov29_022E4290 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023133E4 ; =0x00000D2B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, #8 + bl ov29_02304A84 + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _023133D0 +_02313324: + cmp r1, #3 + bne _0231334C + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023133E8 ; =0x00000D2C + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0231334C: + ldrb r0, [r5, #0xc4] + cmp r0, #3 + bne _02313378 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023133E8 ; =0x00000D2C + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02313378: + ldrb r0, [r4, #0xc4] + cmp r0, #4 + bne _023133A4 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023133EC ; =0x00000D2D + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023133A4: + ldrb r0, [r5, #0xc4] + cmp r0, #4 + bne _023133D0 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023133EC ; =0x00000D2D + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023133D0: + mov r0, r6 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023133DC: .word 0x022C48AC +_023133E0: .word 0x02353538 +_023133E4: .word 0x00000D2B +_023133E8: .word 0x00000D2C +_023133EC: .word 0x00000D2D + arm_func_end TryInflictWrappedStatus + + arm_func_start FreeOtherWrappedMonsters +FreeOtherWrappedMonsters: ; 0x023133F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, #0 + ldr r7, _02313468 ; =0x02353538 + mov r6, r0 + mov sb, r4 + mov r8, r4 +_02313408: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02313458 + ldr r1, [r5, #0xb4] + ldr r0, [r1, #0xb4] + cmp r0, r6 + bne _02313450 + ldrb r0, [r1, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + strlsb sb, [r1, #0xc4] + str r8, [r1, #0xb4] +_02313450: + mov r0, r5 + bl UpdateStatusIconFlags +_02313458: + add r4, r4, #1 + cmp r4, #0x14 + blt _02313408 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02313468: .word 0x02353538 + arm_func_end FreeOtherWrappedMonsters + + arm_func_start TryInflictPetrifiedStatus +TryInflictPetrifiedStatus: ; 0x0231346C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r5 + bl ov29_022E41F0 + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xc4] + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #1 + bhi _023134E0 + ldr r0, [r4, #0xb4] + bl FreeOtherWrappedMonsters +_023134E0: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xc4] + cmp r0, #6 + beq _02313560 + mov r0, #6 + strb r0, [r4, #0xc4] + ldrb r0, [r4, #7] + mov r2, #1 + cmp r0, #0 + beq _02313524 + ldr r1, _023135E8 ; =0x022C479C + mov r0, r5 + bl CalcStatusDuration + b _02313530 +_02313524: + ldr r1, _023135EC ; =0x022C47A0 + mov r0, r5 + bl CalcStatusDuration +_02313530: + add r0, r0, #1 + strb r0, [r4, #0xcc] + mov r3, #0 + ldr r2, _023135F0 ; =0x00000D32 + mov r0, r6 + mov r1, r5 + strb r3, [r4, #0xcd] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02313570 +_02313560: + ldr r2, _023135F4 ; =0x00000D33 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02313570: + ldrb r0, [r4, #6] + cmp r0, #0 + beq _023135DC + mov r4, #0 + ldr r6, _023135F8 ; =0x02353538 + mov r8, #6 + mov r7, r4 +_0231358C: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb28] + mov r0, sb + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023135D0 + ldr r1, [sb, #0xb4] + ldrb r0, [r1, #0x7c] + cmp r0, #1 + ldreq r0, [r1, #0x84] + cmpeq r0, r5 + streqb r8, [r1, #0x7c] + streq r7, [r1, #0x84] + streqh r7, [r1, #0x80] + streqb r7, [r1, #0x7e] +_023135D0: + add r4, r4, #1 + cmp r4, #4 + blt _0231358C +_023135DC: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023135E8: .word 0x022C479C +_023135EC: .word 0x022C47A0 +_023135F0: .word 0x00000D32 +_023135F4: .word 0x00000D33 +_023135F8: .word 0x02353538 + arm_func_end TryInflictPetrifiedStatus + + arm_func_start LowerOffensiveStat +LowerOffensiveStat: ; 0x023135FC + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + bl sub_02025888 + mov r6, r0 + bl sub_02025888 + mov r4, r0 + mov r1, r5, lsl #0x10 + mov r0, r7 + mov r5, r1, asr #0x10 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023137E8 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02313660 + ldr r1, _023137F4 ; =0x00000DCB + mov r0, r6 + bl sub_020258E4 + mov r1, r6 + mov r0, #1 + bl ov29_0234B0B4 + b _02313678 +_02313660: + ldr r1, _023137F8 ; =0x00000DCA + mov r0, r6 + bl sub_020258E4 + mov r1, r6 + mov r0, #1 + bl ov29_0234B0B4 +_02313678: + ldrb r0, [sp, #0x28] + cmp r0, #0 + beq _02313720 + ldrb r2, [sp, #0x2c] + mov r0, r8 + mov r1, r7 + bl ov29_02301B2C + cmp r0, #0 + bne _023137E8 + mov r0, r7 + mov r1, #0x12 + bl ItemIsActive__02311BF8 + cmp r0, #0 + beq _023136D4 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023137FC ; =0x00000DB2 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _023137E8 +_023136D4: + mov r0, r8 + mov r1, r7 + mov r2, #9 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02313720 + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _02313720 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02313800 ; =0x00000D9E + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _023137E8 +_02313720: + mov r0, #0 + mov r1, r7 + mov r2, r0 + ldr r6, [r7, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x20 + ldr r1, [r1] + mov r0, r7 + bl ov29_022E4D28 + mov r0, r7 + mov r1, #0x61 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, r5, lsl #0x11 + movne r5, r0, asr #0x10 + cmp r5, #1 + bne _02313780 + ldr r1, _02313804 ; =0x00000DCD + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #2 + bl ov29_0234B0B4 + b _02313798 +_02313780: + ldr r1, _02313808 ; =0x00000DCC + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #2 + bl ov29_0234B0B4 +_02313798: + ldr r1, [sp, #0x20] + add r0, r6, r1, lsl #1 + ldrsh r0, [r0, #0x24] + subs r4, r0, r5 + movmi r4, #0 + cmp r4, r0 + beq _023137D0 + ldr r2, _0231380C ; =0x00000D91 + add r3, r6, r1, lsl #1 + mov r0, r8 + mov r1, r7 + strh r4, [r3, #0x24] + bl LogMessageByIdWithPopupCheckUserTarget + b _023137E0 +_023137D0: + ldr r2, _02313810 ; =0x00000DD9 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_023137E0: + mov r0, r7 + bl UpdateStatusIconFlags +_023137E8: + ldmia sp!, {r4, r5, r6, r7, r8, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_023137F4: .word 0x00000DCB +_023137F8: .word 0x00000DCA +_023137FC: .word 0x00000DB2 +_02313800: .word 0x00000D9E +_02313804: .word 0x00000DCD +_02313808: .word 0x00000DCC +_0231380C: .word 0x00000D91 +_02313810: .word 0x00000DD9 + arm_func_end LowerOffensiveStat + + arm_func_start LowerDefensiveStat +LowerDefensiveStat: ; 0x02313814 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + bl sub_02025888 + mov r6, r0 + bl sub_02025888 + mov r4, r0 + mov r1, r5, lsl #0x10 + mov r0, r7 + mov r5, r1, asr #0x10 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _0231397C + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02313878 + ldr r1, _02313988 ; =0x00000DC9 + mov r0, r6 + bl sub_020258E4 + mov r1, r6 + mov r0, #1 + bl ov29_0234B0B4 + b _02313890 +_02313878: + ldr r1, _0231398C ; =0x00000DC8 + mov r0, r6 + bl sub_020258E4 + mov r1, r6 + mov r0, #1 + bl ov29_0234B0B4 +_02313890: + ldrb r0, [sp, #0x28] + cmp r0, #0 + beq _023138B4 + ldrb r2, [sp, #0x2c] + mov r0, r8 + mov r1, r7 + bl ov29_02301B2C + cmp r0, #0 + bne _0231397C +_023138B4: + mov r0, #0 + mov r1, r7 + mov r2, r0 + ldr r6, [r7, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x20 + ldr r1, [r1] + mov r0, r7 + bl ov29_022E4DCC + mov r0, r7 + mov r1, #0x61 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, r5, lsl #0x11 + movne r5, r0, asr #0x10 + cmp r5, #1 + bne _02313914 + ldr r1, _02313990 ; =0x00000DCD + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #2 + bl ov29_0234B0B4 + b _0231392C +_02313914: + ldr r1, _02313994 ; =0x00000DCC + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #2 + bl ov29_0234B0B4 +_0231392C: + ldr r1, [sp, #0x20] + add r0, r6, r1, lsl #1 + ldrsh r0, [r0, #0x28] + subs r4, r0, r5 + movmi r4, #0 + cmp r4, r0 + beq _02313964 + add r3, r6, r1, lsl #1 + mov r0, r8 + mov r1, r7 + mov r2, #0xd90 + strh r4, [r3, #0x28] + bl LogMessageByIdWithPopupCheckUserTarget + b _02313974 +_02313964: + ldr r2, _02313998 ; =0x00000DD7 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02313974: + mov r0, r7 + bl UpdateStatusIconFlags +_0231397C: + ldmia sp!, {r4, r5, r6, r7, r8, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02313988: .word 0x00000DC9 +_0231398C: .word 0x00000DC8 +_02313990: .word 0x00000DCD +_02313994: .word 0x00000DCC +_02313998: .word 0x00000DD7 + arm_func_end LowerDefensiveStat + + arm_func_start BoostOffensiveStat +BoostOffensiveStat: ; 0x0231399C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov r6, r3 + mov sb, r0 + bl sub_02025888 + mov r4, r0 + bl sub_02025888 + mov r5, r0 + mov r1, r6, lsl #0x10 + mov r0, r8 + mov r6, r1, asr #0x10 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02313AE4 + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r7, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x28 + ldr r1, [r1] + mov r0, r8 + bl ov29_022E4E74 + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02313A24 + ldr r1, _02313AF0 ; =0x00000DCB + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 + b _02313A3C +_02313A24: + ldr r1, _02313AF4 ; =0x00000DCA + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 +_02313A3C: + mov r0, r8 + mov r1, #0x61 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, r6, lsl #0x11 + movne r6, r0, asr #0x10 + cmp r6, #1 + bne _02313A78 + ldr r1, _02313AF8 ; =0x00000DCD + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, #2 + bl ov29_0234B0B4 + b _02313A90 +_02313A78: + ldr r1, _02313AFC ; =0x00000DCC + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, #2 + bl ov29_0234B0B4 +_02313A90: + ldr r1, [sp, #0x28] + add r0, r7, r1, lsl #1 + ldrsh r0, [r0, #0x24] + add r4, r0, r6 + cmp r4, #0x14 + movge r4, #0x14 + cmp r4, r0 + beq _02313ACC + ldr r2, _02313B00 ; =0x00000D8F + add r3, r7, r1, lsl #1 + mov r0, sb + mov r1, r8 + strh r4, [r3, #0x24] + bl LogMessageByIdWithPopupCheckUserTarget + b _02313ADC +_02313ACC: + ldr r2, _02313B04 ; =0x00000DD8 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_02313ADC: + mov r0, r8 + bl UpdateStatusIconFlags +_02313AE4: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02313AF0: .word 0x00000DCB +_02313AF4: .word 0x00000DCA +_02313AF8: .word 0x00000DCD +_02313AFC: .word 0x00000DCC +_02313B00: .word 0x00000D8F +_02313B04: .word 0x00000DD8 + arm_func_end BoostOffensiveStat + + arm_func_start BoostDefensiveStat +BoostDefensiveStat: ; 0x02313B08 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov r6, r3 + mov sb, r0 + bl sub_02025888 + mov r4, r0 + bl sub_02025888 + mov r5, r0 + mov r1, r6, lsl #0x10 + mov r0, r8 + mov r6, r1, asr #0x10 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02313C50 + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r7, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x28 + ldr r1, [r1] + mov r0, r8 + bl ov29_022E4F1C + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02313B90 + ldr r1, _02313C5C ; =0x00000DC9 + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 + b _02313BA8 +_02313B90: + ldr r1, _02313C60 ; =0x00000DC8 + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 +_02313BA8: + mov r0, r8 + mov r1, #0x61 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, r6, lsl #0x11 + movne r6, r0, asr #0x10 + cmp r6, #1 + bne _02313BE4 + ldr r1, _02313C64 ; =0x00000DCD + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, #2 + bl ov29_0234B0B4 + b _02313BFC +_02313BE4: + ldr r1, _02313C68 ; =0x00000DCC + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, #2 + bl ov29_0234B0B4 +_02313BFC: + ldr r1, [sp, #0x28] + add r0, r7, r1, lsl #1 + ldrsh r0, [r0, #0x28] + add r4, r0, r6 + cmp r4, #0x14 + movge r4, #0x14 + cmp r4, r0 + beq _02313C38 + ldr r2, _02313C6C ; =0x00000D8E + add r3, r7, r1, lsl #1 + mov r0, sb + mov r1, r8 + strh r4, [r3, #0x28] + bl LogMessageByIdWithPopupCheckUserTarget + b _02313C48 +_02313C38: + ldr r2, _02313C70 ; =0x00000DD6 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_02313C48: + mov r0, r8 + bl UpdateStatusIconFlags +_02313C50: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02313C5C: .word 0x00000DC9 +_02313C60: .word 0x00000DC8 +_02313C64: .word 0x00000DCD +_02313C68: .word 0x00000DCC +_02313C6C: .word 0x00000D8E +_02313C70: .word 0x00000DD6 + arm_func_end BoostDefensiveStat + + arm_func_start ov29_02313C74 +ov29_02313C74: ; 0x02313C74 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0x6b + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #0x48 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4, #0xb4] + ldrsh r0, [r0, #0x30] + cmp r0, #2 + movge r0, #1 + movlt r0, #2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02313C74 + + arm_func_start ov29_02313CE4 +ov29_02313CE4: ; 0x02313CE4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r0, r5 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrsh r0, [r4, #0x30] + add r1, r0, #1 + cmp r1, #2 + movge r1, #2 + cmp r0, r1 + beq _02313D34 + mov r0, r5 + strh r1, [r4, #0x30] + bl ov29_022E4338 +_02313D34: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02313CE4 + + arm_func_start ApplyOffensiveStatMultiplier +ApplyOffensiveStatMultiplier: ; 0x02313D40 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + mov r7, r3 + bl sub_02025888 + mov r4, r0 + mov r0, r8 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _02313F3C + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02313D94 + ldr r1, _02313F48 ; =0x00000DCB + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 + b _02313DAC +_02313D94: + ldr r1, _02313F4C ; =0x00000DCA + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 +_02313DAC: + cmp r7, #0x100 + bge _02313DCC + ldrb r2, [sp, #0x30] + mov r0, sb + mov r1, r8 + bl ov29_02301B2C + cmp r0, #0 + bne _02313F3C +_02313DCC: + mov r0, r8 + mov r1, #0x12 + bl ItemIsActive__02311BF8 + cmp r0, #0 + beq _02313E0C + cmp r7, #0x100 + bge _02313E0C + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02313F50 ; =0x00000DB2 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02313F3C +_02313E0C: + mov r0, sb + mov r1, r8 + mov r2, #9 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02313E6C + ldr r0, [sp, #0x28] + cmp r0, #0 + bne _02313E6C + cmp r7, #0x100 + bge _02313E6C + ldrb r0, [sp, #0x30] + cmp r0, #0 + beq _02313F3C + mov r0, #0 + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02313F54 ; =0x00000D9E + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02313F3C +_02313E6C: + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r5, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + ldr r6, [sp, #0x28] + cmp r7, #0x100 + add r0, r5, r6, lsl #2 + ldr r4, [r0, #0x34] + add r1, sp, #0x28 + mov r0, r8 + bge _02313EA8 + ldr r1, [r1] + bl ov29_022E5068 + b _02313EB0 +_02313EA8: + ldr r1, [r1] + bl ov29_022E4FC0 +_02313EB0: + add r0, r5, r6, lsl #2 + ldr r0, [r0, #0x34] + mov r1, r7 + bl MultiplyByFixedPoint + add r1, r5, r6, lsl #2 + str r0, [r1, #0x34] + cmp r0, #2 + movlt r0, #2 + strlt r0, [r1, #0x34] + add r2, r5, r6, lsl #2 + ldr r1, [r2, #0x34] + ldr r0, _02313F58 ; =0x000063FD + cmp r1, r0 + strgt r0, [r2, #0x34] + add r0, r5, r6, lsl #2 + ldr r0, [r0, #0x34] + cmp r4, r0 + ble _02313F0C + ldr r2, _02313F5C ; =0x00000DD1 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02313F34 +_02313F0C: + bge _02313F24 + mov r0, sb + mov r1, r8 + mov r2, #0xdd0 + bl LogMessageByIdWithPopupCheckUserTarget + b _02313F34 +_02313F24: + ldr r2, _02313F60 ; =0x00000DD3 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_02313F34: + mov r0, r8 + bl UpdateStatusIconFlags +_02313F3C: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02313F48: .word 0x00000DCB +_02313F4C: .word 0x00000DCA +_02313F50: .word 0x00000DB2 +_02313F54: .word 0x00000D9E +_02313F58: .word 0x000063FD +_02313F5C: .word 0x00000DD1 +_02313F60: .word 0x00000DD3 + arm_func_end ApplyOffensiveStatMultiplier + + arm_func_start ApplyDefensiveStatMultiplier +ApplyDefensiveStatMultiplier: ; 0x02313F64 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + mov r7, r3 + bl sub_02025888 + mov r4, r0 + mov r0, r8 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023140C0 + ldr r0, [sp, #0x28] + cmp r0, #0 + beq _02313FB8 + ldr r1, _023140CC ; =0x00000DC9 + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 + b _02313FD0 +_02313FB8: + ldr r1, _023140D0 ; =0x00000DC8 + mov r0, r4 + bl sub_020258E4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 +_02313FD0: + cmp r7, #0x100 + bge _02313FF0 + ldrb r2, [sp, #0x30] + mov r0, sb + mov r1, r8 + bl ov29_02301B2C + cmp r0, #0 + bne _023140C0 +_02313FF0: + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r5, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + ldr r6, [sp, #0x28] + cmp r7, #0x100 + add r0, r5, r6, lsl #2 + ldr r4, [r0, #0x3c] + add r1, sp, #0x28 + mov r0, r8 + bge _0231402C + ldr r1, [r1] + bl ov29_022E51B0 + b _02314034 +_0231402C: + ldr r1, [r1] + bl ov29_022E510C +_02314034: + add r0, r5, r6, lsl #2 + ldr r0, [r0, #0x3c] + mov r1, r7 + bl MultiplyByFixedPoint + add r1, r5, r6, lsl #2 + str r0, [r1, #0x3c] + cmp r0, #2 + movlt r0, #2 + strlt r0, [r1, #0x3c] + add r2, r5, r6, lsl #2 + ldr r1, [r2, #0x3c] + ldr r0, _023140D4 ; =0x000063FD + cmp r1, r0 + strgt r0, [r2, #0x3c] + add r0, r5, r6, lsl #2 + ldr r0, [r0, #0x3c] + cmp r4, r0 + ble _02314090 + ldr r2, _023140D8 ; =0x00000DCF + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _023140B8 +_02314090: + bge _023140A8 + ldr r2, _023140DC ; =0x00000DCE + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _023140B8 +_023140A8: + ldr r2, _023140E0 ; =0x00000DD2 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_023140B8: + mov r0, r8 + bl UpdateStatusIconFlags +_023140C0: + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_023140CC: .word 0x00000DC9 +_023140D0: .word 0x00000DC8 +_023140D4: .word 0x000063FD +_023140D8: .word 0x00000DCF +_023140DC: .word 0x00000DCE +_023140E0: .word 0x00000DD2 + arm_func_end ApplyDefensiveStatMultiplier + + arm_func_start BoostHitChanceStat +BoostHitChanceStat: ; 0x023140E4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r1 + mov r7, r0 + bl sub_02025888 + mov r8, r0 + mov r0, r6 + mov r4, #1 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _0231420C + mov r0, #0 + mov r1, r6 + mov r2, r0 + ldr r5, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x20 + ldr r1, [r1] + mov r0, r6 + bl ov29_022E5258 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0231415C + ldr r1, _02314218 ; =0x00000DC7 + mov r0, r8 + bl sub_020258E4 + mov r1, r8 + mov r0, r4 + bl ov29_0234B0B4 + b _02314174 +_0231415C: + ldr r1, _0231421C ; =0x00000DC6 + mov r0, r8 + bl sub_020258E4 + mov r1, r8 + mov r0, r4 + bl ov29_0234B0B4 +_02314174: + mov r0, r6 + mov r1, #0x61 + bl AbilityIsActive2 + ldr r1, [sp, #0x20] + cmp r0, #0 + movne r0, r4, lsl #0x11 + add r2, r5, r1, lsl #1 + movne r4, r0, asr #0x10 + ldrsh r0, [r2, #0x2c] + mov r3, r1, lsl #1 + cmp r0, #0x14 + bge _023141F4 + add r1, r5, #0x2c + ldrsh r0, [r1, r3] + add r0, r0, r4 + strh r0, [r1, r3] + ldrsh r0, [r2, #0x2c] + cmp r0, #0x14 + movgt r0, #0x14 + strgth r0, [r2, #0x2c] + cmp r4, #2 + blt _023141E0 + ldr r2, _02314220 ; =0x00000D95 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314204 +_023141E0: + ldr r2, _02314224 ; =0x00000D93 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314204 +_023141F4: + ldr r2, _02314228 ; =0x00000DD5 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02314204: + mov r0, r6 + bl UpdateStatusIconFlags +_0231420C: + ldmia sp!, {r4, r5, r6, r7, r8, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_02314218: .word 0x00000DC7 +_0231421C: .word 0x00000DC6 +_02314220: .word 0x00000D95 +_02314224: .word 0x00000D93 +_02314228: .word 0x00000DD5 + arm_func_end BoostHitChanceStat + + arm_func_start LowerHitChanceStat +LowerHitChanceStat: ; 0x0231422C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r1 + mov r7, r0 + mov r8, r3 + bl sub_02025888 + mov r5, r0 + mov r0, r6 + mov r4, #1 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023143C4 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02314284 + ldr r1, _023143D0 ; =0x00000DC7 + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, r4 + bl ov29_0234B0B4 + b _0231429C +_02314284: + ldr r1, _023143D4 ; =0x00000DC6 + mov r0, r5 + bl sub_020258E4 + mov r1, r5 + mov r0, r4 + bl ov29_0234B0B4 +_0231429C: + mov r0, r7 + mov r1, r6 + mov r2, r8 + bl ov29_02301B2C + cmp r0, #0 + bne _023143C4 + mov r0, r7 + mov r1, r6 + mov r2, #0x1e + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02314308 + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _02314308 + cmp r8, #0 + beq _023143C4 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023143D8 ; =0x00000D9F + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _023143C4 +_02314308: + mov r0, r6 + mov r1, #0x61 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, r4, lsl #0x11 + movne r4, r0, asr #0x10 + mov r0, #0 + mov r1, r6 + mov r2, r0 + ldr r5, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + add r1, sp, #0x20 + ldr r1, [r1] + mov r0, r6 + bl ov29_022E52F8 + ldr r1, [sp, #0x20] + add r2, r5, r1, lsl #1 + ldrsh r0, [r2, #0x2c] + mov r3, r1, lsl #1 + cmp r0, #0 + ble _023143AC + add r1, r5, #0x2c + ldrsh r0, [r1, r3] + sub r0, r0, r4 + strh r0, [r1, r3] + ldrsh r0, [r2, #0x2c] + cmp r0, #0 + movlt r0, #0 + strlth r0, [r2, #0x2c] + cmp r4, #2 + blt _02314398 + ldr r2, _023143DC ; =0x00000D94 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _023143BC +_02314398: + ldr r2, _023143E0 ; =0x00000D92 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _023143BC +_023143AC: + ldr r2, _023143E4 ; =0x00000DD4 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023143BC: + mov r0, r6 + bl UpdateStatusIconFlags +_023143C4: + ldmia sp!, {r4, r5, r6, r7, r8, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_023143D0: .word 0x00000DC7 +_023143D4: .word 0x00000DC6 +_023143D8: .word 0x00000D9F +_023143DC: .word 0x00000D94 +_023143E0: .word 0x00000D92 +_023143E4: .word 0x00000DD4 + arm_func_end LowerHitChanceStat + + arm_func_start TryInflictCringeStatus +TryInflictCringeStatus: ; 0x023143E8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + bl sub_02025888 + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #0x1f + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _02314498 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r5, #0 + beq _02314490 + ldr r2, _02314534 ; =0x00000DA2 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02314490: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02314498: + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r4, [r6, #0xb4] + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd0] + cmp r0, #1 + beq _02314514 + ldr r1, _02314538 ; =0x022C4884 + mov r2, #1 + mov r0, r6 + strb r2, [r4, #0xd0] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r6 + strb r1, [r4, #0xd1] + bl ov29_022E539C + ldr r2, _0231453C ; =0x00000D02 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl ov29_0231B364 + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _02314524 +_02314514: + ldr r2, _02314540 ; =0x00000D03 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02314524: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02314534: .word 0x00000DA2 +_02314538: .word 0x022C4884 +_0231453C: .word 0x00000D02 +_02314540: .word 0x00000D03 + arm_func_end TryInflictCringeStatus + + arm_func_start TryInflictParalysisStatus +TryInflictParalysisStatus: ; 0x02314544 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r4, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + beq _023147D0 + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + bne _023147D0 + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + bne _023147D0 + mov r0, sl + mov r1, sb + mov r2, #0x16 + mov r3, #1 + bl DefenderAbilityIsActive__02311B94 + cmp r0, #0 + beq _023145F4 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r8, #0 + beq _023145EC + mov r0, sl + mov r1, sb + mov r2, #0xda0 + bl LogMessageByIdWithPopupCheckUserTarget +_023145EC: + mov r0, #0 + b _023147D0 +_023145F4: + mov r0, sb + mov r1, #1 + bl ExclusiveItemEffectIsActive__023147EC + cmp r0, #0 + beq _02314654 + cmp r8, #0 + beq _0231464C + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r2, sp, #4 + mov r0, sb + mov r1, #1 + bl ov29_0230F654 + add r1, sp, #4 + mov r0, #1 + bl ov29_02344B44 + ldr r2, _023147D8 ; =0x00000DA1 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231464C: + mov r0, #0 + b _023147D0 +_02314654: + cmp r4, #0 + movne r0, #1 + bne _023147D0 + mov r0, #0 + ldr r7, [sb, #0xb4] + mov r1, sb + mov r2, r0 + mov r4, #1 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xbf] + cmp r0, #4 + beq _023146E0 + ldr r1, _023147DC ; =0x022C4894 + mov r3, #4 + mov r0, sb + mov r2, r4 + strb r3, [r7, #0xbf] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xc0] + mov r4, #0 + strb r4, [r7, #0xc1] + mov r0, sl + mov r1, sb + mov r2, #0xd00 + strb r4, [r7, #0xc2] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sb + bl ov29_022E4240 + mov r0, sb + bl CalcSpeedStageWrapper + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet + b _023146F0 +_023146E0: + ldr r2, _023147E0 ; =0x00000D01 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_023146F0: + mov r0, sb + mov r1, #0x19 + bl AbilityIsActive2 + cmp r0, #0 + beq _023147C4 + cmp r4, #0 + bne _023147C4 + mov r5, #0 + ldr fp, _023147E4 ; =0x0235171C + mov r4, r5 +_02314718: + mov r1, r4, lsl #2 + add r0, fp, r4, lsl #2 + ldrsh r6, [sb, #4] + ldrsh r3, [fp, r1] + ldrsh r1, [r0, #2] + ldrsh r2, [sb, #6] + add r0, r6, r3 + add r1, r2, r1 + bl GetTile + ldr r6, [r0, #0xc] + mov r0, r6 + bl EntityIsValid__023118B4 + cmp r0, #0 + beq _023147B8 + ldr r0, [r6] + cmp r0, #1 + bne _023147B8 + cmp r5, #0 + bne _02314790 + mov r5, #1 + bl ov29_0234B034 + mov r1, #0 + mov r2, r7 + mov r3, r1 + str r1, [sp] + bl ov29_0230040C + ldr r2, _023147E8 ; =0x00000DC5 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02314790: + mov r0, sb + mov r1, r6 + bl ov29_023018AC + cmp r0, #1 + bne _023147B8 + mov r0, sl + mov r1, r6 + mov r2, r8 + mov r3, #0 + bl TryInflictParalysisStatus +_023147B8: + add r4, r4, #1 + cmp r4, #8 + blt _02314718 +_023147C4: + mov r0, sb + bl UpdateStatusIconFlags + mov r0, #1 +_023147D0: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023147D8: .word 0x00000DA1 +_023147DC: .word 0x022C4894 +_023147E0: .word 0x00000D01 +_023147E4: .word 0x0235171C +_023147E8: .word 0x00000DC5 + arm_func_end TryInflictParalysisStatus + + arm_func_start ExclusiveItemEffectIsActive__023147EC +ExclusiveItemEffectIsActive__023147EC: ; 0x023147EC + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__023147EC + + arm_func_start BoostSpeed +BoostSpeed: ; 0x02314810 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + mov r0, r8 + mov r7, r2 + mov r6, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r6, #0 + bne _02314850 + ldr r1, _0231492C ; =0x022C4888 + mov r0, r8 + mov r2, #0 + bl CalcStatusDuration + add r6, r0, #1 +_02314850: + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r5, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + mov r0, r8 + mov r1, r7 + bl CalcSpeedStage + mov r4, r0 + cmp r4, #4 + bne _0231489C + ldrb r0, [sp, #0x20] + cmp r0, #0 + beq _02314920 + ldr r2, _02314930 ; =0x00000DDB + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314920 +_0231489C: + mov r2, #0 + b _023148BC +_023148A4: + add r1, r5, r2 + ldrb r0, [r1, #0x114] + cmp r0, #0 + streqb r6, [r1, #0x114] + beq _023148C4 + add r2, r2, #1 +_023148BC: + cmp r2, #5 + blt _023148A4 +_023148C4: + mov r0, r8 + mov r1, r7 + bl CalcSpeedStage + mov r6, r0 + cmp r4, r6 + bne _023148F0 + ldr r2, _02314934 ; =0x00000DDA + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314920 +_023148F0: + mov r0, r8 + bl ov29_022E44CC + ldr r0, _02314938 ; =0x02353318 + mov r1, r6, lsl #1 + ldrh r2, [r0, r1] + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + strb r0, [r5, #0x101] + mov r0, #0 + strb r0, [r5, #0x152] +_02314920: + mov r0, r8 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231492C: .word 0x022C4888 +_02314930: .word 0x00000DDB +_02314934: .word 0x00000DDA +_02314938: .word 0x02353318 + arm_func_end BoostSpeed + + arm_func_start BoostSpeedOneStage +BoostSpeedOneStage: ; 0x0231493C + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, r2 + mov r2, #1 + bl BoostSpeed + ldmia sp!, {r3, pc} + arm_func_end BoostSpeedOneStage + + arm_func_start LowerSpeed +LowerSpeed: ; 0x02314954 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r7, r3 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r7 + bl ov29_02301940 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + mov r2, r7 + bl ov29_02302430 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, #0 + mov r1, sb + mov r2, r0 + ldr r4, [sb, #0xb4] + bl SubstitutePlaceholderStringTags + mov r0, sb + bl CalcSpeedStageWrapper + movs fp, r0 + bne _023149E8 + cmp r7, #0 + beq _02314AA0 + ldr r2, _02314AAC ; =0x00000DDC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02314AA0 +_023149E8: + mov r5, #0 + b _02314A34 +_023149F0: + mov r1, #0 + b _02314A28 +_023149F8: + add r6, r4, r1 + ldrb r0, [r6, #0x119] + cmp r0, #0 + bne _02314A24 + ldr r1, _02314AB0 ; =0x022C488C + mov r0, sb + mov r2, #1 + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r6, #0x119] + b _02314A30 +_02314A24: + add r1, r1, #1 +_02314A28: + cmp r1, #5 + blt _023149F8 +_02314A30: + add r5, r5, #1 +_02314A34: + cmp r5, r8 + blt _023149F0 + mov r0, sb + bl CalcSpeedStageWrapper + mov r4, r0 + cmp fp, r4 + bne _02314A6C + cmp r7, #0 + beq _02314AA0 + ldr r2, _02314AB4 ; =0x00000DDA + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02314AA0 +_02314A6C: + mov r0, sb + bl ov29_022E451C + ldr r0, _02314AB8 ; =0x02353318 + mov r1, r4, lsl #1 + ldrh r2, [r0, r1] + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + cmp r4, #0 + bne _02314AA0 + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet +_02314AA0: + mov r0, sb + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02314AAC: .word 0x00000DDC +_02314AB0: .word 0x022C488C +_02314AB4: .word 0x00000DDA +_02314AB8: .word 0x02353318 + arm_func_end LowerSpeed + + arm_func_start TrySealMove +TrySealMove: ; 0x02314ABC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r5, #0 + movs r7, r1 + mov r8, r0 + mov r6, r2 + moveq r0, r5 + beq _02314C18 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, r5 + bne _02314C18 + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, r5 + bne _02314C18 + ldr r0, [r7, #0xb4] + mov r4, r5 + add ip, r0, #0x124 + mov lr, r4 + mov r2, r5 + mov r3, #1 + add r0, sp, #4 +_02314B28: + ldrb r1, [ip, lr, lsl #3] + add sb, ip, lr, lsl #3 + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _02314B54 + ldrh r1, [sb, #2] + tst r1, #1 + streq sb, [r0, r4, lsl #2] + addeq r4, r4, #1 +_02314B54: + add lr, lr, #1 + cmp lr, #4 + blt _02314B28 + cmp r6, #0 + beq _02314B74 + cmp r4, #0 + moveq r0, #0 + beq _02314C18 +_02314B74: + cmp r4, #0 + beq _02314BE8 + ldr r3, _02314C20 ; =0x00000DBE + mov r5, #8 + mov r0, r8 + mov r1, r7 + mov r2, #1 + str r5, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #0 + bne _02314C18 + cmp r6, #0 + movne r0, #1 + bne _02314C18 + mov r0, r4 + bl DungeonRandInt + add r1, sp, #4 + ldr r2, [r1, r0, lsl #2] + mov r0, #0 + ldrh r1, [r2, #2] + orr r1, r1, #1 + strh r1, [r2, #2] + ldrh r1, [r2, #4] + bl ov29_0234B084 + mov r0, r8 + mov r1, r7 + mov r5, #1 + bl TryActivateQuickFeet +_02314BE8: + cmp r5, #0 + beq _02314C04 + ldr r2, _02314C24 ; =0x00000DE3 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314C14 +_02314C04: + ldr r2, _02314C28 ; =0x00000DE4 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02314C14: + mov r0, #1 +_02314C18: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02314C20: .word 0x00000DBE +_02314C24: .word 0x00000DE3 +_02314C28: .word 0x00000DE4 + arm_func_end TrySealMove + + arm_func_start BoostOrLowerSpeed +BoostOrLowerSpeed: ; 0x02314C2C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__023118B4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0x32 + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + mov r2, #1 + mov r0, r5 + beq _02314C74 + mov r1, r4 + mov r3, r2 + bl LowerSpeed + b _02314C84 +_02314C74: + mov r1, r4 + mov r3, #0 + str r2, [sp] + bl BoostSpeed +_02314C84: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end BoostOrLowerSpeed + + arm_func_start ResetHitChanceStat +ResetHitChanceStat: ; 0x02314C8C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r8, r2 + mov r4, r3 + mov r7, #0 + bl EntityIsValid__023118B4 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r5, #0xb4] + add r1, r0, r8, lsl #1 + ldrsh r0, [r1, #0x2c] + cmp r0, #0xa + movne r0, #0xa + movne r7, #1 + strneh r0, [r1, #0x2c] + cmp r7, #0 + beq _02314CE4 + mov r0, r5 + bl ov29_022E543C + b _02314CF4 +_02314CE4: + cmp r4, #0 + beq _02314CF4 + mov r0, r5 + bl ov29_022E543C +_02314CF4: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r7, #0 + beq _02314D20 + mov r0, r6 + mov r1, r5 + mov r2, #0xd60 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314D30 +_02314D20: + ldr r2, _02314D3C ; =0x00000D61 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02314D30: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02314D3C: .word 0x00000D61 + arm_func_end ResetHitChanceStat + + arm_func_start ov29_02314D40 +ov29_02314D40: ; 0x02314D40 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r6, r1 + ldrb r1, [sp, #0x20] + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, r3 + bl ExclusiveItemEffectIsActive__023147EC + cmp r0, #0 + beq _02314DB8 + cmp r5, #0 + beq _02314DB0 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r1, [sp, #0x20] + add r2, sp, #0 + mov r0, r6 + bl ov29_0230F654 + add r1, sp, #0 + mov r0, #1 + bl ov29_02344B44 + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02314DB0: + mov r0, #1 + b _02314DBC +_02314DB8: + mov r0, #0 +_02314DBC: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02314D40 + + arm_func_start ov29_02314DC4 +ov29_02314DC4: ; 0x02314DC4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + mov r0, #0 + mov r5, r2 + mov r2, r0 + mov r6, r1 + mov r4, r3 + bl SubstitutePlaceholderStringTags + add r2, sp, #0 + mov r0, r6 + mov r1, r4 + bl ov29_0230F654 + add r1, sp, #0 + mov r0, #1 + bl ov29_02344B44 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl LogMessageByIdWithPopupCheckUserTarget + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02314DC4 + + arm_func_start TryActivateQuickFeet +TryActivateQuickFeet: ; 0x02314E1C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0x6d + bl AbilityIsActive2 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r3, #0 + mov r0, r5 + mov r1, r4 + mov r2, #1 + str r3, [sp] + bl BoostSpeed + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end TryActivateQuickFeet + + arm_func_start ov29_02314E60 +ov29_02314E60: ; 0x02314E60 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02314EB0 ; =0x022C4618 + mov r4, r1 + ldr ip, [r4, #0xb4] + mov r3, #1 + mov r5, r0 + ldrsh r1, [r2] + strb r3, [ip, #0x104] + mov r0, r4 + strb r1, [ip, #0x105] + bl ov29_022E60E4 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02314EB4 ; =0x00000DE5 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02314EB0: .word 0x022C4618 +_02314EB4: .word 0x00000DE5 + arm_func_end ov29_02314E60 + + arm_func_start ov29_02314EB8 +ov29_02314EB8: ; 0x02314EB8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r1 + ldr r5, [r7, #0xb4] + mov r8, r0 + mov r4, #0 + mov r6, r2 + mov r2, r4 + mov r0, #1 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xfd] + cmp r0, #0 + beq _02314F04 + cmp r6, #0 + beq _02314F2C + ldr r2, _02314F34 ; =0x00000ED1 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02314F2C +_02314F04: + mov r4, #1 + mov r0, r7 + strb r4, [r5, #0xfd] + bl UpdateStatusIconFlags + cmp r6, #0 + beq _02314F2C + mov r0, r8 + mov r1, r7 + mov r2, #0xed0 + bl LogMessageByIdWithPopupCheckUserTarget +_02314F2C: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02314F34: .word 0x00000ED1 + arm_func_end ov29_02314EB8 + + arm_func_start TryInflictConfusedStatus +TryInflictConfusedStatus: ; 0x02314F38 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02302430 + cmp r0, #0 + mov r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + mov r1, #0x19 + bl ItemIsActive__0231513C + cmp r0, #0 + beq _02314FD8 + cmp r5, #0 + beq _02314FD0 + ldr r2, _02315100 ; =0x00000DAF + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02314FD0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02314FD8: + mov ip, #2 + ldr r3, _02315104 ; =0x00000DBA + mov r0, r7 + mov r1, r6 + mov r2, r5 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r7, r6 + beq _02315048 + cmp r7, #0 + moveq r0, #0 + beq _02315028 + ldr r0, [r7] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_02315028: + cmp r0, #0 + beq _02315048 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _02315054 +_02315048: + mov r0, r6 + mov r1, #0x40 + bl AbilityIsActive2 +_02315054: + cmp r0, #0 + beq _0231507C + cmp r5, #0 + beq _02315074 + ldr r2, _02315108 ; =0x00000DA7 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02315074: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0231507C: + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + bl ov29_022E41CC + ldr r4, [r6, #0xb4] + ldrb r0, [r4, #0xd0] + cmp r0, #2 + beq _023150E0 + ldr r1, _0231510C ; =0x022C4890 + mov r3, #2 + mov r0, r6 + mov r2, #1 + strb r3, [r4, #0xd0] + bl CalcStatusDuration + add r3, r0, #1 + ldr r2, _02315110 ; =0x00000CFE + mov r0, r7 + mov r1, r6 + strb r3, [r4, #0xd1] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _023150F0 +_023150E0: + ldr r2, _02315114 ; =0x00000CFF + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023150F0: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02315100: .word 0x00000DAF +_02315104: .word 0x00000DBA +_02315108: .word 0x00000DA7 +_0231510C: .word 0x022C4890 +_02315110: .word 0x00000CFE +_02315114: .word 0x00000CFF + arm_func_end TryInflictConfusedStatus diff --git a/asm/overlay_29_0231513C.s b/asm/overlay_29_0231513C.s new file mode 100644 index 00000000..0805ff34 --- /dev/null +++ b/asm/overlay_29_0231513C.s @@ -0,0 +1,4334 @@ + .include "asm/macros.inc" + .include "overlay_29_0231513C.inc" + + .text + + arm_func_start ItemIsActive__0231513C +ItemIsActive__0231513C: ; 0x0231513C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__0231513C + + arm_func_start TryInflictCoweringStatus +TryInflictCoweringStatus: ; 0x0231516C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r7, r2 + mov r6, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, r7 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, r7 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r6, [r4, #0xb4] + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xd0] + cmp r0, #4 + beq _02315240 + ldr r1, _02315260 ; =0x022C47B0 + mov r3, #4 + mov r0, r4 + mov r2, #1 + strb r3, [r6, #0xd0] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r4 + strb r1, [r6, #0xd1] + bl ov29_022E41DC + ldr r2, _02315264 ; =0x00000D43 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + mov r1, r4 + bl TryActivateQuickFeet + b _02315250 +_02315240: + ldr r2, _02315268 ; =0x00000D44 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02315250: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02315260: .word 0x022C47B0 +_02315264: .word 0x00000D43 +_02315268: .word 0x00000D44 + arm_func_end TryInflictCoweringStatus + + arm_func_start ov29_0231526C +ov29_0231526C: ; 0x0231526C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r0, r4 + mov r5, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r4, #0xb4] + ldr r3, _023152E0 ; =0x000003E7 + ldrsh r0, [r2, #0x10] + add r0, r0, r5 + strh r0, [r2, #0x10] + ldrsh r1, [r2, #0x12] + ldrsh r0, [r2, #0x16] + add r1, r1, r0 + cmp r1, r3 + ldrsh r0, [r2, #0x10] + movle r3, r1 + cmp r0, r3 + ble _023152D0 + ldr r0, _023152E0 ; =0x000003E7 + cmp r1, r0 + movgt r1, r0 + strh r1, [r2, #0x10] +_023152D0: + mov r0, r4 + bl ov29_022E4480 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023152E0: .word 0x000003E7 + arm_func_end ov29_0231526C + + arm_func_start TryIncreaseHp +TryIncreaseHp: ; 0x023152E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, r3 + mov fp, #0 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, fp + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr sb, [r6, #0xb4] + ldrb r0, [sb, #0xd8] + cmp r0, #5 + bne _02315348 + mov r0, fp + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023155EC ; =0x00000D83 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02315348: + mov r0, r6 + mov r1, #0x34 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231537C + ldr r1, _023155F0 ; =0x022C4470 + mov r0, r5, lsl #8 + ldrsh r1, [r1] + mov r1, r1, lsl #8 + bl MultiplyByFixedPoint + mov r1, #0x64 + bl DivideInt + add r5, r5, r0, asr #8 +_0231537C: + ldrsh r1, [sb, #0x12] + ldrsh r0, [sb, #0x16] + ldr r8, _023155F4 ; =0x000003E7 + ldrsh sl, [sb, #0x10] + add r1, r1, r0 + cmp r1, r8 + ldr r0, _023155F4 ; =0x000003E7 + movle r8, r1 + cmp r1, r0 + movgt r1, r0 + cmp sl, r1 + bne _023153B4 + cmp r4, #0 + bgt _023153C4 +_023153B4: + cmp r5, #0 + bne _02315454 + cmp r4, #0 + ble _02315454 +_023153C4: + ldrsh r1, [sb, #0x12] + ldr r0, _023155F4 ; =0x000003E7 + ldr r2, _023155F4 ; =0x000003E7 + add r1, r1, r4 + strh r1, [sb, #0x12] + ldrsh r1, [sb, #0x10] + add r1, r1, r4 + strh r1, [sb, #0x10] + ldrsh r1, [sb, #0x12] + cmp r1, r0 + strgth r0, [sb, #0x12] + ldrsh r1, [sb, #0x12] + ldrsh r0, [sb, #0x16] + add r1, r1, r0 + cmp r1, r2 + ldrsh r0, [sb, #0x10] + movle r2, r1 + cmp r0, r2 + ble _02315420 + ldr r0, _023155F4 ; =0x000003E7 + cmp r1, r0 + movgt r1, r0 + strh r1, [sb, #0x10] +_02315420: + ldrsh r2, [sb, #0x12] + ldrsh r1, [sb, #0x16] + ldr r0, _023155F4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldrsh r0, [sb, #0x10] + cmp r0, r1 + moveq sl, r0 + mov r0, r6 + bl ov29_022E4430 + mov fp, #1 + b _02315464 +_02315454: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_0231526C +_02315464: + ldrsh r2, [sb, #0x12] + ldrsh r1, [sb, #0x16] + ldr r0, _023155F4 ; =0x000003E7 + add r2, r2, r1 + ldrsh r1, [sb, #0x10] + cmp r2, r0 + movgt r2, r0 + mov r0, r6 + sub sl, r1, sl + sub r8, r2, r8 + bl UpdateStatusIconFlags + mov r1, sl + mov r0, #0 + bl ov29_0234B09C + mov r0, #1 + mov r1, r8 + bl ov29_0234B09C + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp sl, #0 + cmpeq r8, #0 + bne _02315504 + ldrb r0, [sp, #0x28] + cmp r0, #0 + beq _023154FC + cmp fp, #0 + beq _023154EC + ldr r2, _023155F8 ; =0x00000CFD + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _023154FC +_023154EC: + ldr r2, _023155FC ; =0x00000CFA + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023154FC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02315504: + cmp r4, #0 + cmpeq sl, #0 + bne _02315534 + ldrb r0, [sp, #0x28] + cmp r0, #0 + beq _0231552C + ldr r2, _02315600 ; =0x00000CFB + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0231552C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02315534: + cmp r8, #0 + mov r4, #0 + beq _02315560 + mov r0, r6 + bl ov29_022E272C + cmp r0, #0 + ldr r2, _02315604 ; =0x00000CFC + mov r0, r7 + mov r1, r6 + movne r4, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_02315560: + cmp sl, #0 + beq _023155C8 + mov r0, r6 + bl ov29_022E272C + cmp r0, #0 + movne r4, sl + cmp r5, #0 + beq _023155C8 + ldrsh r2, [sb, #0x12] + ldrsh r1, [sb, #0x16] + ldr r0, _023155F4 ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldrsh r0, [sb, #0x10] + cmp r0, r1 + bne _023155B8 + ldr r2, _02315608 ; =0x00000CF9 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _023155C8 +_023155B8: + ldr r2, _0231560C ; =0x00000CF8 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023155C8: + cmp r4, #0 + beq _023155E4 + mov r2, #1 + mov r0, r4 + mov r1, r6 + sub r3, r2, #2 + bl ov29_022EA718 +_023155E4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023155EC: .word 0x00000D83 +_023155F0: .word 0x022C4470 +_023155F4: .word 0x000003E7 +_023155F8: .word 0x00000CFD +_023155FC: .word 0x00000CFA +_02315600: .word 0x00000CFB +_02315604: .word 0x00000CFC +_02315608: .word 0x00000CF9 +_0231560C: .word 0x00000CF8 + arm_func_end TryIncreaseHp + + arm_func_start ov29_02315610 +ov29_02315610: ; 0x02315610 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r4, #0xb4] + ldrb r0, [r2, #0xfa] + cmp r0, #0 + beq _02315650 + ldr r2, _02315698 ; =0x00000CE4 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_02315650: + mov r1, #1 + mov r0, r4 + strb r1, [r2, #0xfa] + bl ov29_022E465C + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231569C ; =0x00000CE2 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_02339CE8 + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315698: .word 0x00000CE4 +_0231569C: .word 0x00000CE2 + arm_func_end ov29_02315610 + + arm_func_start ov29_023156A0 +ov29_023156A0: ; 0x023156A0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl GetFloorType + cmp r0, #0 + beq _023156DC + ldr r2, _02315750 ; =0x00000CE6 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_023156DC: + ldr r2, [r4, #0xb4] + ldrb r0, [r2, #0xfb] + cmp r0, #0 + beq _02315700 + ldr r2, _02315754 ; =0x00000CE5 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_02315700: + mov r1, #1 + mov r0, r4 + strb r1, [r2, #0xfb] + bl ov29_022E4660 + mov r0, #0 + bl ov29_02338794 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02315758 ; =0x00000CE3 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_02339CE8 + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02315750: .word 0x00000CE6 +_02315754: .word 0x00000CE5 +_02315758: .word 0x00000CE3 + arm_func_end ov29_023156A0 + + arm_func_start ov29_0231575C +ov29_0231575C: ; 0x0231575C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, [r4, #0xb4] + ldrb r0, [r2, #0xf9] + cmp r0, #0 + beq _0231579C + ldr r2, _023157E4 ; =0x00000CEA + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_0231579C: + mov r1, #1 + mov r0, r4 + strb r1, [r2, #0xf9] + bl ov29_022E4664 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023157E8 ; =0x00000CE9 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + bl ov29_022E2EC4 + bl ov29_02339CE8 + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023157E4: .word 0x00000CEA +_023157E8: .word 0x00000CE9 + arm_func_end ov29_0231575C + + arm_func_start TryInflictLeechSeedStatus +TryInflictLeechSeedStatus: ; 0x023157EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r8, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r0, [r6] + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + cmp r6, r5 + ldr r4, [r5, #0xb4] + bne _02315850 + cmp r8, #0 + beq _02315848 + ldr r2, _023159BC ; =0x00000DE1 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02315848: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02315850: + mov r0, r6 + mov r1, r5 + mov r2, r8 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + mov r1, r5 + mov r2, r8 + bl ov29_02302430 + cmp r0, #0 + mov r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, #4 + bl MonsterIsType + cmp r0, #0 + beq _023158C8 + cmp r8, #0 + beq _023158C0 + ldr r2, _023159C0 ; =0x00000DE2 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023158C0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023158C8: + cmp r7, #0 + ldrb r0, [r4, #0xe0] + beq _023158E8 + cmp r0, #1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023158E8: + cmp r0, #1 + beq _02315930 + cmp r0, #2 + bne _02315908 + ldr r2, _023159C4 ; =0x00000CAF + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02315908: + ldr r1, _023159C8 ; =0x022C4790 + mov r2, #1 + mov r0, r5 + strb r2, [r4, #0xe0] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r4, #0xe9] + mov r0, #0 + strb r0, [r4, #0xea] + b _02315948 +_02315930: + ldr r2, _023159CC ; =0x00000CE1 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02315948: + mov r0, r5 + bl ov29_022E4668 + mov r0, #0xff + ldr r1, _023159D0 ; =0x02353538 + strb r0, [r4, #0xe8] + mov r2, #0 +_02315960: + ldr r0, [r1] + add r0, r0, r2, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb78] + cmp r6, r0 + streqb r2, [r4, #0xe8] + ldreq r0, [r6, #0xb4] + add r2, r2, #1 + ldreq r0, [r0, #0xb0] + streq r0, [r4, #0xe4] + cmp r2, #0x14 + blt _02315960 + mov r0, r6 + mov r1, r5 + mov r2, #0xce0 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023159BC: .word 0x00000DE1 +_023159C0: .word 0x00000DE2 +_023159C4: .word 0x00000CAF +_023159C8: .word 0x022C4790 +_023159CC: .word 0x00000CE1 +_023159D0: .word 0x02353538 + arm_func_end TryInflictLeechSeedStatus + + arm_func_start ov29_023159D4 +ov29_023159D4: ; 0x023159D4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r4, #0 + ldr r5, [r0, #0xb4] + ldr r7, _02315A4C ; =0x02353538 + mov r8, r4 +_023159E8: + ldr r0, [r7] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02315A3C + ldr r2, [r6, #0xb4] + ldrb r0, [r2, #0xe0] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #1 + bhi _02315A3C + ldr r1, [r2, #0xe4] + ldr r0, [r5, #0xb0] + cmp r1, r0 + bne _02315A3C + mov r0, r6 + strb r8, [r2, #0xe0] + bl UpdateStatusIconFlags +_02315A3C: + add r4, r4, #1 + cmp r4, #0x14 + blt _023159E8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02315A4C: .word 0x02353538 + arm_func_end ov29_023159D4 + + arm_func_start TryInflictDestinyBond +TryInflictDestinyBond: ; 0x02315A50 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r6] + cmp r0, #1 + ldreq r0, [r5] + cmpeq r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r6, #0xb4] + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xe0] + cmp r0, #2 + beq _02315AE4 + cmp r0, #1 + bne _02315AB8 + ldr r2, _02315B5C ; =0x00000C94 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02315AB8: + ldr r1, _02315B60 ; =0x022C47D4 + mov r3, #2 + mov r0, r5 + mov r2, #1 + strb r3, [r4, #0xe0] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r4, #0xe9] + mov r0, #0 + strb r0, [r4, #0xea] + b _02315AF8 +_02315AE4: + ldr r2, _02315B64 ; =0x00000D54 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r4, r5, r6, pc} +_02315AF8: + mov r0, r5 + bl ov29_022E45CC + mov r0, #0xff + ldr r1, _02315B68 ; =0x02353538 + strb r0, [r4, #0xe8] + mov r2, #0 +_02315B10: + ldr r0, [r1] + add r0, r0, r2, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb78] + cmp r5, r0 + streqb r2, [r4, #0xe8] + ldreq r0, [r5, #0xb4] + add r2, r2, #1 + ldreq r0, [r0, #0xb0] + streq r0, [r4, #0xe4] + cmp r2, #0x14 + blt _02315B10 + ldr r2, _02315B6C ; =0x00000D53 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02315B5C: .word 0x00000C94 +_02315B60: .word 0x022C47D4 +_02315B64: .word 0x00000D54 +_02315B68: .word 0x02353538 +_02315B6C: .word 0x00000D53 + arm_func_end TryInflictDestinyBond + + arm_func_start ov29_02315B70 +ov29_02315B70: ; 0x02315B70 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r4, [r6, #0xb4] + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xec] + cmp r0, #1 + beq _02315BDC + mov r1, #1 + mov r0, r6 + strb r1, [r4, #0xec] + add r1, r5, #1 + strb r1, [r4, #0xed] + bl ov29_022E456C + ldr r2, _02315BF8 ; =0x00000D2E + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _02315BEC +_02315BDC: + ldr r2, _02315BFC ; =0x00000D2F + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02315BEC: + mov r0, r6 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02315BF8: .word 0x00000D2E +_02315BFC: .word 0x00000D2F + arm_func_end ov29_02315B70 + + arm_func_start ov29_02315C00 +ov29_02315C00: ; 0x02315C00 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r7, r2 + mov r6, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r6, [r4, #0xb4] + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xec] + cmp r0, #2 + beq _02315CC4 + mov r1, #2 + mov r0, r4 + strb r1, [r6, #0xec] + add r1, r7, #1 + strb r1, [r6, #0xed] + bl ov29_022E45B8 + mov r0, r5 + mov r1, r4 + mov r2, #0xd30 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + mov r1, r4 + bl TryActivateQuickFeet + b _02315CD4 +_02315CC4: + ldr r2, _02315CE4 ; =0x00000D31 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02315CD4: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02315CE4: .word 0x00000D31 + arm_func_end ov29_02315C00 + + arm_func_start ov29_02315CE8 +ov29_02315CE8: ; 0x02315CE8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xec] + cmp r0, #3 + beq _02315D60 + ldr r1, _02315D7C ; =0x022C47A4 + mov r3, #3 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xec] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xed] + bl ov29_022E466C + ldr r2, _02315D80 ; =0x00000D3F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02315D70 +_02315D60: + mov r0, r6 + mov r1, r5 + mov r2, #0xd40 + bl LogMessageByIdWithPopupCheckUserTarget +_02315D70: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02315D7C: .word 0x022C47A4 +_02315D80: .word 0x00000D3F + arm_func_end ov29_02315CE8 + + arm_func_start ov29_02315D84 +ov29_02315D84: ; 0x02315D84 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xec] + cmp r0, #4 + beq _02315DFC + ldr r1, _02315E18 ; =0x022C47AC + mov r3, #4 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xec] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xed] + bl ov29_022E4670 + ldr r2, _02315E1C ; =0x00000D41 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02315E0C +_02315DFC: + ldr r2, _02315E20 ; =0x00000D42 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02315E0C: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02315E18: .word 0x022C47AC +_02315E1C: .word 0x00000D41 +_02315E20: .word 0x00000D42 + arm_func_end ov29_02315D84 + + arm_func_start ov29_02315E24 +ov29_02315E24: ; 0x02315E24 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + beq _023160C4 + mov r0, sl + mov r1, sb + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + bne _023160C4 + mov r0, sl + mov r1, sb + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + mov r0, #0 + bne _023160C4 + ldr r6, [sb, #0xb4] + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xd8] + cmp r0, #2 + bne _02315EC4 + cmp r7, #0 + beq _02315EBC + ldr r2, _023160CC ; =0x00000D46 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02315EBC: + mov r0, #1 + b _023160C4 +_02315EC4: + ldrb r0, [sp, #0x38] + cmp r0, #0 + movne r0, #1 + bne _023160C4 + ldr fp, _023160D0 ; =0x02353538 + mov r4, #0 +_02315EDC: + ldr r0, [fp] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + cmpne sb, r5 + beq _02315F34 + ldr r0, [r5, #0xb4] + ldrb r0, [r0, #0xd8] + add r0, r0, #0xfe + and r0, r0, #0xff + cmp r0, #1 + bhi _02315F34 + mov r0, sl + mov r1, r5 + mov r2, #0 + mov r3, r7 + bl ov29_02306728 + mov r0, #0x2a + bl AdvanceFrame +_02315F34: + add r4, r4, #1 + cmp r4, #0x14 + blt _02315EDC + mov r0, sb + bl ov29_022E4674 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xd8] + cmp r0, #0 + beq _02315F78 + mov r0, sl + mov r1, sb + mov r3, r7 + mov r2, #2 + bl ov29_02306728 +_02315F78: + mov r0, sl + mov r1, sb + bl ov29_023066D8 + mov r0, #2 + strb r0, [r6, #0xd8] + ldr r0, [sl, #0xb4] + ldr r1, _023160D4 ; =0x022C47B4 + ldrb r3, [r0, #6] + mov r0, sb + mov r2, #1 + strb r3, [r6, #0xd9] + strb r8, [r6, #0xda] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r6, #0xdb] + mov r0, #0 + strb r0, [r6, #0xdc] + ldrb r0, [r6, #6] + cmp r0, #0 + bne _02315FCC + bl ov29_022E81F8 +_02315FCC: + mov r0, sb + bl GetSleepAnimationId + mov r1, r0 + mov r0, sb + bl ov29_02304830 + ldr r0, _023160D0 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + cmp r7, #0 + add r0, r0, #0x3000 + strb r1, [r0, #0xe38] + beq _0231600C + ldr r2, _023160D8 ; =0x00000D45 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231600C: + mov r0, sl + mov r1, sb + bl TryActivateQuickFeet + mov sl, #0 + mov r4, #1 + mov r6, #6 + mov r5, sl +_02316028: + ldr r0, _023160D0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, sl, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _023160AC + ldr r8, [r7, #0xb4] + strb r6, [r8, #0x7c] + str r5, [r8, #0x84] + strh r5, [r8, #0x80] + ldrb r0, [r8, #7] + cmp r0, #0 + bne _023160AC + add r2, sp, #0 + add r3, r8, #0x4a + mov r1, #0xa +_02316074: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _02316074 + mov r0, r7 + mov r1, r4 + bl AiMovement + add r3, sp, #0 + add r2, r8, #0x4a + mov r1, #0xa +_0231609C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0231609C +_023160AC: + add sl, sl, #1 + cmp sl, #0x14 + blt _02316028 + mov r0, sb + bl UpdateStatusIconFlags + mov r0, #1 +_023160C4: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023160CC: .word 0x00000D46 +_023160D0: .word 0x02353538 +_023160D4: .word 0x022C47B4 +_023160D8: .word 0x00000D45 + arm_func_end ov29_02315E24 + + arm_func_start ov29_023160DC +ov29_023160DC: ; 0x023160DC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + beq _0231626C + mov r0, r7 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + beq _0231626C + mov r0, r8 + mov r1, #0xe + ldr r4, [r8, #0xb4] + ldr r5, [r7, #0xb4] + bl MonsterIsType + cmp r0, #0 + beq _02316218 + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + bne _0231626C + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + bne _0231626C + mov r0, r8 + mov r1, r7 + mov r3, r6 + mov r2, #1 + bl ov29_02306728 + mov r0, r7 + bl ov29_022E46C0 + ldrsh r0, [r4, #0x10] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + strh r0, [r4, #0x10] + ldrsh r0, [r4, #0x10] + cmp r0, #0 + moveq r0, #1 + streqh r0, [r4, #0x10] + ldrb r0, [r5, #0xd8] + cmp r0, #1 + beq _023161E0 + mov r0, r8 + mov r1, r7 + bl ov29_023066D8 + mov r2, #1 + ldr r1, _02316274 ; =0x022C4784 + mov r0, r7 + strb r2, [r5, #0xd8] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r5, #0xdb] + mov r0, #0 + strb r0, [r5, #0xdc] +_023161E0: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _02316208 + ldr r2, _02316278 ; =0x00000CEC + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02316208: + mov r0, r8 + mov r1, r7 + bl TryActivateQuickFeet + b _02316260 +_02316218: + ldr r1, _0231627C ; =0x02352AEC + mov r0, r8 + ldr r2, [r1] + mov r1, r8 + mov r3, #1 + str r2, [sp] + bl BoostOffensiveStat + add r1, sp, #0 + ldr r2, [r1] + mov r0, r8 + mov r1, r8 + mov r3, #1 + bl BoostDefensiveStat + mov r2, #1 + mov r0, r8 + mov r1, r8 + mov r3, r2 + bl LowerSpeed +_02316260: + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, #1 +_0231626C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02316274: .word 0x022C4784 +_02316278: .word 0x00000CEC +_0231627C: .word 0x02352AEC + arm_func_end ov29_023160DC + + arm_func_start ov29_02316280 +ov29_02316280: ; 0x02316280 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r5 + mov r1, r4 + mov r2, #3 + mov r3, #1 + bl ov29_02306728 + mov sb, #0 + ldr r6, _0231639C ; =0x02353538 + mov r8, sb + mov r7, #1 +_023162C0: + ldr r0, [r6] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb78] + mov r0, sl + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02316304 + ldr r0, [sl, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #3 + bne _02316304 + mov r0, r5 + mov r1, sl + mov r2, r8 + mov r3, r7 + bl ov29_02306728 +_02316304: + add sb, sb, #1 + cmp sb, #0x14 + blt _023162C0 + mov r0, r4 + bl ov29_022E46D0 + ldr r6, [r4, #0xb4] + ldrb r0, [r6, #0xd8] + cmp r0, #3 + beq _02316350 + ldr r1, _023163A0 ; =0x022C4788 + mov r3, #3 + mov r0, r4 + mov r2, #0 + strb r3, [r6, #0xd8] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r6, #0xdb] + mov r0, #0 + strb r0, [r6, #0xdc] +_02316350: + ldr r3, _0231639C ; =0x02353538 + mov r0, #0 + ldr r2, [r3] + mov r1, r4 + add r2, r2, #0x19000 + str r4, [r2, #0x904] + ldr r2, [r3] + ldr r6, [r6, #0xb0] + add r3, r2, #0x19000 + mov r2, r0 + str r6, [r3, #0x90c] + bl SubstitutePlaceholderStringTags + ldr r2, _023163A4 ; =0x00000CED + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0231639C: .word 0x02353538 +_023163A0: .word 0x022C4788 +_023163A4: .word 0x00000CED + arm_func_end ov29_02316280 + + arm_func_start ov29_023163A8 +ov29_023163A8: ; 0x023163A8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r6, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + beq _023164C0 + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + bne _023164C0 + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + bne _023164C0 + ldr r3, _023164C8 ; =0x00000C39 + mov ip, #8 + mov r0, r5 + mov r1, r4 + mov r2, #1 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #0 + bne _023164C0 + cmp r6, #0 + movne r0, #1 + bne _023164C0 + mov r0, #0 + ldr r6, [r4, #0xb4] + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xd0] + cmp r0, #5 + beq _023164A4 + ldr r1, _023164CC ; =0x022C47BC + mov r3, #5 + mov r0, r4 + mov r2, #1 + strb r3, [r6, #0xd0] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r4 + strb r1, [r6, #0xd1] + bl ov29_022E442C + ldr r2, _023164D0 ; =0x00000D49 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r5 + mov r1, r4 + bl TryActivateQuickFeet + b _023164B4 +_023164A4: + ldr r2, _023164D4 ; =0x00000D4A + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_023164B4: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 +_023164C0: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023164C8: .word 0x00000C39 +_023164CC: .word 0x022C47BC +_023164D0: .word 0x00000D49 +_023164D4: .word 0x00000D4A + arm_func_end ov29_023163A8 + + arm_func_start ov29_023164D8 +ov29_023164D8: ; 0x023164D8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r4, #0 + bl EntityIsValid__02315118 + cmp r0, #0 + mov r0, r4 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r5, [r6, #0xb4] + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0x11e] + cmp r0, #3 + bhs _02316554 + add r1, r0, #1 + mov r0, #1 + strb r1, [r5, #0x11e] + bl ov29_022E38E0 + mov r0, r6 + bl ov29_022E46D4 + ldrb r1, [r5, #0x11e] + mov r0, r4 + bl ov29_0234B09C + ldr r2, _02316574 ; =0x00000D4B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r4, #1 + b _02316564 +_02316554: + ldr r2, _02316578 ; =0x00000D4C + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02316564: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02316574: .word 0x00000D4B +_02316578: .word 0x00000D4C + arm_func_end ov29_023164D8 + + arm_func_start ov29_0231657C +ov29_0231657C: ; 0x0231657C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xef] + cmp r0, #1 + beq _02316604 + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl ov29_02306A00 + mov r3, #1 + ldr r1, _02316620 ; =0x022C47C8 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xef] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xf0] + bl ov29_022E4704 + ldr r2, _02316624 ; =0x00000D4D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02316614 +_02316604: + ldr r2, _02316628 ; =0x00000D4E + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02316614: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02316620: .word 0x022C47C8 +_02316624: .word 0x00000D4D +_02316628: .word 0x00000D4E + arm_func_end ov29_0231657C + + arm_func_start ov29_0231662C +ov29_0231662C: ; 0x0231662C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl ov29_022E4714 + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0x106] + cmp r0, #0 + bne _023166F4 + ldr r1, _02316714 ; =0x022C47D0 + mov r0, r5 + mov r2, #0 + bl CalcStatusDuration + add r3, r0, #1 + ldr r2, _02316718 ; =0x00000D51 + mov r0, r6 + mov r1, r5 + strb r3, [r4, #0x106] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02316704 +_023166F4: + ldr r2, _0231671C ; =0x00000D52 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02316704: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02316714: .word 0x022C47D0 +_02316718: .word 0x00000D51 +_0231671C: .word 0x00000D52 + arm_func_end ov29_0231662C + + arm_func_start ov29_02316720 +ov29_02316720: ; 0x02316720 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + ldr r4, [r6, #0xb4] + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov ip, #8 + ldr r3, _023168C4 ; =0x00000C39 + mov r0, r7 + mov r1, r6 + mov r2, #1 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov lr, #0 + add ip, r4, #0x124 + mov r1, lr + mov r2, #1 + b _023167E8 +_023167BC: + ldrb r0, [ip, lr, lsl #3] + mov r3, lr, lsl #3 + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _023167E4 + ldrb r0, [ip, r3] + tst r0, #0x10 + bne _023167F0 +_023167E4: + add lr, lr, #1 +_023167E8: + cmp lr, #4 + blt _023167BC +_023167F0: + cmp lr, #4 + bne _02316834 + ldrb r0, [r4, #0x144] + tst r0, #0x10 + bne _02316834 + cmp r5, #0 + bne _0231682C + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023168C8 ; =0x00000D57 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0231682C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02316834: + cmp r5, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd0] + cmp r0, #6 + beq _023168A4 + ldr r1, _023168CC ; =0x022C47D8 + mov r3, #6 + mov r0, r6 + mov r2, #1 + strb r3, [r4, #0xd0] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r6 + strb r1, [r4, #0xd1] + bl ov29_022E4718 + ldr r2, _023168D0 ; =0x00000D55 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _023168B4 +_023168A4: + ldr r2, _023168D4 ; =0x00000D56 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023168B4: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023168C4: .word 0x00000C39 +_023168C8: .word 0x00000D57 +_023168CC: .word 0x022C47D8 +_023168D0: .word 0x00000D55 +_023168D4: .word 0x00000D56 + arm_func_end ov29_02316720 + + arm_func_start ov29_023168D8 +ov29_023168D8: ; 0x023168D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x24 + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r8, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02316B98 + mov r0, #0 + mov r1, r5 + mov r2, r0 + ldr r4, [r5, #0xb4] + bl SubstitutePlaceholderStringTags + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r7, #0 + beq _02316A88 + mov r0, r7 + bl sub_02050FF8 + strh r0, [sp, #0x10] + add r1, r4, #0x100 + ldrh ip, [r1, #0x4a] + ldrh r1, [r1, #0x4c] + mov r0, r0, lsr #0x10 + ldrh r2, [sp, #0x10] + sub r3, sp, #4 + strh r0, [sp, #0x12] + strh r1, [sp, #0x1e] + ldrh r1, [sp, #0x12] + strh r2, [sp, #0x20] + ldrh r0, [sp, #0x1e] + strh ip, [r3] + strh r1, [sp, #0x22] + strh r0, [r3, #2] + ldrh r2, [sp, #0x20] + ldr r0, [r3] + ldrh r1, [sp, #0x22] + strh r2, [r3] + strh ip, [sp, #0x1c] + strh r1, [r3, #2] + ldr r1, [r3] + bl SubFixedPoint + strh r0, [sp, #0xc] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xe] + ldrh r2, [sp, #0xc] + add r1, r4, #0x100 + ldrh r0, [sp, #0xe] + strh r2, [r1, #0x4a] + sub r3, sp, #4 + strh r0, [r1, #0x4c] + ldrh r0, [r1, #0x46] + strh r0, [r3] + ldrh r0, [r1, #0x48] + strh r0, [r3, #2] + ldrh r2, [r1, #0x4a] + ldr r0, [r3] + strh r2, [r3] + ldrh r1, [r1, #0x4c] + strh r1, [r3, #2] + ldr r1, [r3] + bl sub_02050F78 + strh r0, [sp, #8] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xa] + ldrh r0, [sp, #8] + add r1, r4, #0x100 + ldrh r2, [sp, #0xa] + strh r0, [r1, #0x46] + mov r0, #0 + strh r2, [r1, #0x48] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrh r1, [sp, #0x1c] + sub r2, sp, #4 + ldrh r0, [sp, #0x1e] + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r4, #0x100 + mov r4, r0 + ldrh r0, [r1, #0x4a] + sub r2, sp, #4 + strh r0, [r2] + ldrh r0, [r1, #0x4c] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r4, r0 + beq _02316A74 + mov r0, r5 + bl ov29_022E471C + ldr r2, _02316BA0 ; =0x00000D64 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02316B90 +_02316A74: + ldr r2, _02316BA4 ; =0x00000D68 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02316B90 +_02316A88: + mov r0, r8 + bl sub_02050FF8 + strh r0, [sp, #4] + add r1, r4, #0x100 + ldrh ip, [r1, #0x46] + ldrh r1, [r1, #0x48] + mov r0, r0, lsr #0x10 + ldrh r2, [sp, #4] + sub r3, sp, #4 + strh r0, [sp, #6] + strh r1, [sp, #0x1a] + ldrh r1, [sp, #6] + strh r2, [sp, #0x14] + ldrh r0, [sp, #0x1a] + strh ip, [r3] + strh r1, [sp, #0x16] + strh r0, [r3, #2] + ldrh r2, [sp, #0x14] + ldr r0, [r3] + ldrh r1, [sp, #0x16] + strh r2, [r3] + strh ip, [sp, #0x18] + strh r1, [r3, #2] + ldr r1, [r3] + bl SubFixedPoint + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r1, [sp] + add r2, r4, #0x100 + ldrh r3, [sp, #2] + strh r1, [r2, #0x46] + mov r0, #0 + strh r3, [r2, #0x48] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrh r1, [sp, #0x18] + sub r2, sp, #4 + ldrh r0, [sp, #0x1a] + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r4, #0x100 + ldrh r2, [r1, #0x46] + sub r3, sp, #4 + mov r4, r0 + strh r2, [r3] + ldrh r0, [r1, #0x48] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r4, r0 + beq _02316B80 + mov r0, r5 + bl ov29_022E47B8 + ldr r2, _02316BA8 ; =0x00000D63 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02316B90 +_02316B80: + ldr r2, _02316BAC ; =0x00000D69 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02316B90: + mov r0, r5 + bl UpdateStatusIconFlags +_02316B98: + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02316BA0: .word 0x00000D64 +_02316BA4: .word 0x00000D68 +_02316BA8: .word 0x00000D63 +_02316BAC: .word 0x00000D69 + arm_func_end ov29_023168D8 + + arm_func_start ov29_02316BB0 +ov29_02316BB0: ; 0x02316BB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x50] + bl EntityIsValid__02315118 + cmp r0, #0 + beq _023170FC + mov r0, sb + mov r1, #0x25 + ldr r5, [sb, #0xb4] + bl IqSkillIsEnabled + cmp r0, #0 + bne _02316C08 + mov r0, sb + mov r1, #0x59 + bl AbilityIsActive2 + cmp r0, #0 + beq _02316C38 +_02316C08: + ldr r1, _02317104 ; =0x022C44B0 + mov r0, r8, lsl #8 + ldrsh r1, [r1] + mov r1, r1, lsl #8 + bl MultiplyByFixedPoint + mov r1, #0x64 + bl DivideInt + bl sub_02001888 + ldr r1, _02317108 ; =0x000003E7 + add r8, r8, r0, asr #8 + cmp r8, r1 + movgt r8, r1 +_02316C38: + ldrb r0, [r5, #7] + cmp r0, #0 + bne _02316C74 + mov r0, sb + mov r1, #0x22 + bl ItemIsActive__0231513C + cmp r0, #0 + beq _02316C74 + cmp r6, #0 + beq _023170FC + ldr r2, _0231710C ; =0x00000D6C + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023170FC +_02316C74: + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r7, #0 + mov r4, #0 + beq _02316CE8 + add r0, r5, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r5, #0x100 + ldrh r2, [r1, #0x4a] + sub r3, sp, #4 + mov fp, r0 + strh r2, [r3] + ldrh r0, [r1, #0x4c] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp fp, r0 + ldr r0, _02317108 ; =0x000003E7 + movge r4, #1 + cmp r8, r0 + moveq r4, #1 +_02316CE8: + cmp r4, #0 + add r0, r5, #0x100 + beq _02316F08 + ldrh r4, [r0, #0x4a] + ldrh r3, [r0, #0x4c] + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r4, [sp, #0x24] + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r3, [sp, #0x26] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r5, #0x100 + ldrh r2, [r1, #0x4a] + sub r3, sp, #4 + mov r4, r0 + strh r2, [r3] + ldrh r0, [r1, #0x4c] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r4, r0 + moveq r4, #1 + mov r0, r7 + movne r4, #0 + bl sub_02050FF8 + strh r0, [sp, #0x18] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x1a] + add r1, r5, #0x100 + ldrh r7, [sp, #0x18] + ldrh r2, [sp, #0x1a] + ldrh r0, [r1, #0x4a] + sub r3, sp, #4 + strh r7, [sp, #0x28] + strh r0, [r3] + ldrh r0, [r1, #0x4c] + strh r2, [sp, #0x2a] + ldrh r2, [sp, #0x28] + strh r0, [r3, #2] + ldr r0, [r3] + ldrh r1, [sp, #0x2a] + strh r2, [r3] + strh r1, [r3, #2] + ldr r1, [r3] + bl sub_02050EBC + strh r0, [sp, #0x14] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x16] + ldrh r0, [sp, #0x14] + add r1, r5, #0x100 + ldrh r2, [sp, #0x16] + strh r0, [r1, #0x4a] + mov r0, #0xc8 + strh r2, [r1, #0x4c] + bl sub_02050FF8 + strh r0, [sp, #0x10] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x12] + add r1, r5, #0x100 + ldrh r0, [r1, #0x4a] + sub r7, sp, #4 + ldrh r3, [sp, #0x10] + strh r0, [r7] + ldrh r0, [r1, #0x4c] + ldrh r2, [sp, #0x12] + strh r0, [r7, #2] + ldr r0, [r7] + strh r3, [r7] + strh r2, [r7, #2] + ldr r1, [r7] + bl sub_02050F78 + strh r0, [sp, #0xc] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xe] + ldrh r2, [sp, #0xc] + add r0, r5, #0x100 + ldrh r1, [sp, #0xe] + strh r2, [r0, #0x4a] + tst r4, #0xff + strh r1, [r0, #0x4c] + ldrh r1, [r0, #0x4a] + strh r1, [r0, #0x46] + ldrh r1, [r0, #0x4c] + strh r1, [r0, #0x48] + bne _02316E60 + cmp r6, #0 + beq _02316E60 + ldr r2, _02317110 ; =0x00000D6A + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02316E60: + ldrh r1, [sp, #0x24] + ldrh r0, [sp, #0x26] + sub r2, sp, #4 + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r5, #0x100 + ldrh r2, [r1, #0x4a] + sub r3, sp, #4 + mov r4, r0 + strh r2, [r3] + ldrh r0, [r1, #0x4c] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r4, r0 + bne _02316ED4 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _023170F4 + ldr r2, _02317114 ; =0x00000D66 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023170F4 +_02316ED4: + mov r0, sb + bl ov29_022E476C + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _023170F4 + ldr r2, _02317118 ; =0x00000D65 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023170F4 +_02316F08: + ldrh r2, [r0, #0x46] + ldrh r1, [r0, #0x48] + mov r0, r8 + strh r2, [sp, #0x20] + strh r1, [sp, #0x22] + bl sub_02050FF8 + strh r0, [sp, #8] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0xa] + add r1, r5, #0x100 + ldrh r4, [sp, #8] + ldrh r2, [sp, #0xa] + ldrh r0, [r1, #0x46] + sub r3, sp, #4 + strh r4, [sp, #0x1c] + strh r0, [r3] + ldrh r0, [r1, #0x48] + strh r2, [sp, #0x1e] + ldrh r2, [sp, #0x1c] + strh r0, [r3, #2] + ldr r0, [r3] + ldrh r1, [sp, #0x1e] + strh r2, [r3] + strh r1, [r3, #2] + ldr r1, [r3] + bl sub_02050EBC + strh r0, [sp, #4] + mov r0, r0, lsr #0x10 + strh r0, [sp, #6] + ldrh r2, [sp, #4] + add r1, r5, #0x100 + ldrh r0, [sp, #6] + strh r2, [r1, #0x46] + sub r3, sp, #4 + strh r0, [r1, #0x48] + ldrh r0, [r1, #0x46] + strh r0, [r3] + ldrh r0, [r1, #0x48] + strh r0, [r3, #2] + ldrh r2, [r1, #0x4a] + ldr r0, [r3] + strh r2, [r3] + ldrh r1, [r1, #0x4c] + strh r1, [r3, #2] + ldr r1, [r3] + bl sub_02050F78 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldr r0, _02317108 ; =0x000003E7 + ldrh r2, [sp] + cmp r8, r0 + add r0, r5, #0x100 + ldrh r1, [sp, #2] + strh r2, [r0, #0x46] + strh r1, [r0, #0x48] + ldreqh r1, [r0, #0x4a] + streqh r1, [r0, #0x46] + ldreqh r1, [r0, #0x4c] + streqh r1, [r0, #0x48] + mov r0, sb + bl ov29_022E47BC + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrh r1, [sp, #0x20] + sub r2, sp, #4 + ldrh r0, [sp, #0x22] + strh r1, [r2] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r5, #0x100 + ldrh r2, [r1, #0x46] + sub r3, sp, #4 + mov r4, r0 + strh r2, [r3] + ldrh r0, [r1, #0x48] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r4, r0 + bne _02317074 + cmp r6, #0 + beq _023170F4 + ldr r2, _0231711C ; =0x00000D67 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023170F4 +_02317074: + add r0, r5, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + add r1, r5, #0x100 + ldrh r2, [r1, #0x4a] + sub r3, sp, #4 + mov r4, r0 + strh r2, [r3] + ldrh r0, [r1, #0x4c] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r4, r0 + blt _023170DC + cmp r6, #0 + beq _023170F4 + ldr r2, _02317110 ; =0x00000D6A + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023170F4 +_023170DC: + cmp r6, #0 + beq _023170F4 + ldr r2, _02317120 ; =0x00000D6B + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_023170F4: + mov r0, sb + bl UpdateStatusIconFlags +_023170FC: + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02317104: .word 0x022C44B0 +_02317108: .word 0x000003E7 +_0231710C: .word 0x00000D6C +_02317110: .word 0x00000D6A +_02317114: .word 0x00000D66 +_02317118: .word 0x00000D65 +_0231711C: .word 0x00000D67 +_02317120: .word 0x00000D6B + arm_func_end ov29_02316BB0 + + arm_func_start ov29_02317124 +ov29_02317124: ; 0x02317124 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf3] + cmp r0, #1 + beq _023171F0 + ldr r1, _02317210 ; =0x022C4848 + mov r2, #1 + mov r0, r5 + strb r2, [r4, #0xf3] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xf4] + bl ov29_022E47C0 + ldr r2, _02317214 ; =0x00000D72 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02317200 +_023171F0: + ldr r2, _02317218 ; =0x00000D73 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02317200: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317210: .word 0x022C4848 +_02317214: .word 0x00000D72 +_02317218: .word 0x00000D73 + arm_func_end ov29_02317124 + + arm_func_start ov29_0231721C +ov29_0231721C: ; 0x0231721C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x240 + mov sb, r1 + mov sl, r0 + mov r0, sb + bl EntityIsValid__02315118 + cmp r0, #0 + beq _023173F4 + ldr r8, [sb, #0xb4] + ldrb r0, [r8, #0xef] + cmp r0, #2 + bne _02317260 + ldr r2, _023173FC ; =0x00000D6F + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023173F4 +_02317260: + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + add r0, sp, #0x40 + mov r1, #0 + bl ov29_022E7C60 + movs r6, r0 + bne _02317298 + ldr r2, _02317400 ; =0x00000D6E + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023173F4 +_02317298: + mov r0, #0 + bl sub_02024FB8 + mov r1, r0 + add r0, sp, #0 + bl Strcpy + mov r4, #0 + mov r7, r4 + ldrsh r5, [r8, #4] + add fp, sp, #0x40 + b _02317310 +_023172C0: + mov r0, r6 + bl DungeonRandInt + add r0, fp, r0, lsl #3 + bl GetMonsterIdFromSpawnEntry + mov r1, r0 + mov r0, sb + bl ov29_022F9408 + ldrsh r1, [r8, #4] + mov r5, r0 + cmp r5, r1 + beq _0231730C + mov r1, #1 + bl MewSpawnCheck + cmp r0, #0 + beq _0231730C + mov r0, r5 + bl GetSpriteIndex__022F7388 + movs r4, r0 + bne _02317318 +_0231730C: + add r7, r7, #1 +_02317310: + cmp r7, #0x14 + blt _023172C0 +_02317318: + cmp r7, #0x14 + bne _02317334 + ldr r2, _02317400 ; =0x00000D6E + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023173F4 +_02317334: + cmp r4, #0 + bne _02317350 + ldr r2, _02317400 ; =0x00000D6E + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023173F4 +_02317350: + strh r5, [r8, #4] + mov r0, sb + strh r4, [sb, #0xa8] + bl ov29_02304BAC + mov r0, sb + bl ov29_022E47C4 + mov r0, sb + bl GetSleepAnimationId + mov r1, r0 + mov r0, sb + bl ov29_02304830 + mov r0, sl + mov r1, sb + mov r2, #0 + bl ov29_02306A00 + mov r0, #2 + strb r0, [r8, #0xef] + ldr r1, _02317404 ; =0x022C47FC + mov r0, sb + mov r2, #1 + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r8, #0xf0] + mov r0, #1 + bl sub_02024FB8 + ldrsh r1, [r8, #4] + mov r2, #0x4e + mov r4, r0 + bl GetNameWithGender + mov r0, #0 + add r1, sp, #0 + bl ov29_0234B0B4 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0B4 + ldr r2, _02317408 ; =0x00000D6D + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sb + bl UpdateStatusIconFlags +_023173F4: + add sp, sp, #0x240 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023173FC: .word 0x00000D6F +_02317400: .word 0x00000D6E +_02317404: .word 0x022C47FC +_02317408: .word 0x00000D6D + arm_func_end ov29_0231721C + + arm_func_start ov29_0231740C +ov29_0231740C: ; 0x0231740C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xef] + cmp r0, #3 + beq _02317494 + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02306A00 + mov r3, #3 + ldr r1, _023174C0 ; =0x022C480C + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xef] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xf0] + bl ov29_022E47C8 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + mov r1, r5 + mov r2, #0xd70 + bl LogMessageByIdWithPopupCheckUserTarget + b _023174B4 +_02317494: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023174C4 ; =0x00000D71 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023174B4: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023174C0: .word 0x022C480C +_023174C4: .word 0x00000D71 + arm_func_end ov29_0231740C + + arm_func_start ov29_023174C8 +ov29_023174C8: ; 0x023174C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, #0 + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov sl, r3 + mov r4, sb + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, sb + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, sb + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + mov r0, sb + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r1, r7 + mov r2, r0 + ldr r5, [r7, #0xb4] + bl SubstitutePlaceholderStringTags + cmp sl, #0 + beq _02317568 + mov r0, r7 + mov r1, #0xe + bl MonsterIsType + cmp r0, #0 + movne r0, #1 + moveq r0, sb + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02317568: + ldrsh r0, [r5, #0x2e] + cmp r0, #0xa + movgt r0, #0xa + movgt sb, #1 + strgth r0, [r5, #0x2e] + cmp sb, #0 + beq _023175A4 + mov r0, r7 + mov r1, r6 + bl ov29_022E47CC + ldr r2, _02317638 ; =0x00000D77 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r4, #1 +_023175A4: + ldrb r0, [r5, #0xfe] + cmp r0, #0 + beq _023175C8 + ldr r2, _0231763C ; =0x00000D75 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_023175C8: + cmp r4, #0 + bne _023175DC + mov r0, r7 + mov r1, r6 + bl ov29_022E47CC +_023175DC: + mov r0, r7 + mov r1, #0xe + bl MonsterIsType + cmp r0, #0 + bne _02317604 + ldr r2, _02317640 ; =0x00000D76 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02317628 +_02317604: + ldr r2, _02317644 ; =0x00000D74 + mov r3, #1 + mov r0, r8 + mov r1, r7 + strb r3, [r5, #0xfe] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r7 + bl TryActivateQuickFeet +_02317628: + mov r0, r7 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02317638: .word 0x00000D77 +_0231763C: .word 0x00000D75 +_02317640: .word 0x00000D76 +_02317644: .word 0x00000D74 + arm_func_end ov29_023174C8 + + arm_func_start ov29_02317648 +ov29_02317648: ; 0x02317648 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _023176C0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x78d] + cmp r0, #0 + bne _023176AC + mov r0, r4 + bl ov29_022E4868 + ldr r1, _023176C0 ; =0x02353538 + mov r0, r4 + ldr r1, [r1] + mov r2, #1 + strb r2, [r1, #0x78d] + bl UpdateStatusIconFlags + ldr r2, _023176C4 ; =0x00000D78 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_023176AC: + ldr r2, _023176C8 ; =0x00000D79 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023176C0: .word 0x02353538 +_023176C4: .word 0x00000D78 +_023176C8: .word 0x00000D79 + arm_func_end ov29_02317648 + + arm_func_start ov29_023176CC +ov29_023176CC: ; 0x023176CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r6, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r6, [r4, #0xb4] + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r6, #0xf1] + cmp r0, #1 + beq _023177B8 + mov r2, #1 + cmp r7, #0 + strb r2, [r6, #0xf1] + movne r0, #0x7f + bne _0231777C + ldr r1, _023177D8 ; =0x022C4828 + mov r0, r4 + bl CalcStatusDuration + add r0, r0, #1 +_0231777C: + strb r0, [r6, #0xf2] + mov r0, r4 + bl ov29_022E486C + ldr r2, _023177DC ; =0x00000D34 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0x31 + bl AdvanceFrame + bl ov29_02336F4C + bl ov29_02339CE8 + mov r0, r5 + mov r1, r4 + bl TryActivateQuickFeet + b _023177C8 +_023177B8: + ldr r2, _023177E0 ; =0x00000D35 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_023177C8: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023177D8: .word 0x022C4828 +_023177DC: .word 0x00000D34 +_023177E0: .word 0x00000D35 + arm_func_end ov29_023176CC + + arm_func_start IsBlinded +IsBlinded: ; 0x023177E4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _0231783C + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0xf1] + cmp r0, #1 + beq _02317834 + cmp r4, #0 + beq _0231783C + ldrb r0, [r1, #7] + cmp r0, #0 + bne _0231783C + mov r0, r5 + mov r1, #0xe + bl ItemIsActive__0231513C + cmp r0, #0 + beq _0231783C +_02317834: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0231783C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end IsBlinded + + arm_func_start ov29_02317844 +ov29_02317844: ; 0x02317844 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + cmp r4, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf1] + cmp r0, #2 + beq _02317930 + mov r0, r5 + bl ov29_022E48B8 + ldr r2, _02317950 ; =0x00000D36 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r3, #2 + ldr r1, _02317954 ; =0x022C4830 + mov r0, r5 + mov r2, #1 + strb r3, [r4, #0xf1] + bl CalcStatusDuration + add r2, r0, #1 + mov r0, r6 + mov r1, r5 + strb r2, [r4, #0xf2] + bl ov29_0231B364 + mov r0, #1 + bl ov29_022E2EC4 + bl ov29_02336F4C + bl ov29_02339CE8 + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02317940 +_02317930: + ldr r2, _02317958 ; =0x00000D37 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02317940: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317950: .word 0x00000D36 +_02317954: .word 0x022C4830 +_02317958: .word 0x00000D37 + arm_func_end ov29_02317844 + + arm_func_start ov29_0231795C +ov29_0231795C: ; 0x0231795C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf1] + cmp r0, #3 + beq _023179E4 + ldr r1, _02317A00 ; =0x022C4838 + mov r3, #3 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xf1] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xf2] + bl ov29_022E4914 + ldr r2, _02317A04 ; =0x00000D38 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0x31 + bl AdvanceFrame + bl ov29_02336F4C + bl ov29_02339CE8 + b _023179F4 +_023179E4: + ldr r2, _02317A08 ; =0x00000D39 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023179F4: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317A00: .word 0x022C4838 +_02317A04: .word 0x00000D38 +_02317A08: .word 0x00000D39 + arm_func_end ov29_0231795C + + arm_func_start ov29_02317A0C +ov29_02317A0C: ; 0x02317A0C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02317A4C + ldr r0, [r4, #0xb4] + ldrsh r0, [r0, #2] + bl GetMobilityType + cmp r0, #0 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + bne _02317A54 +_02317A4C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02317A54: + ldr r6, [r4, #0xb4] + ldrb r0, [r6, #0xef] + cmp r0, #4 + beq _02317AB8 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_02306A00 + mov r3, #4 + ldr r1, _02317AE8 ; =0x022C486C + mov r0, r4 + mov r2, #1 + strb r3, [r6, #0xef] + bl CalcStatusDuration + add r3, r0, #1 + mov r0, #0 + mov r1, r4 + mov r2, r0 + strb r3, [r6, #0xf0] + bl SubstitutePlaceholderStringTags + ldr r2, _02317AEC ; =0x00000D3A + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _02317AD8 +_02317AB8: + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02317AF0 ; =0x00000D3B + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02317AD8: + mov r0, r4 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317AE8: .word 0x022C486C +_02317AEC: .word 0x00000D3A +_02317AF0: .word 0x00000D3B + arm_func_end ov29_02317A0C + + arm_func_start ov29_02317AF4 +ov29_02317AF4: ; 0x02317AF4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02317B40 + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + bne _02317B40 + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + beq _02317B48 +_02317B40: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02317B48: + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xf1] + cmp r0, #1 + bne _02317B70 + ldr r2, _02317C0C ; =0x00000D3E + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02317B70: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf1] + cmp r0, #4 + beq _02317BEC + ldr r1, _02317C10 ; =0x022C487C + mov r3, #4 + mov r0, r5 + mov r2, #1 + strb r3, [r4, #0xf1] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xf2] + bl sub_01FFB62C + ldr r0, _02317C14 ; =0x00000115 + bl ov29_022EACCC + ldr r2, _02317C18 ; =0x00000D3C + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0x31 + bl AdvanceFrame + bl ov29_02336F4C + bl ov29_02339CE8 + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02317BFC +_02317BEC: + ldr r2, _02317C1C ; =0x00000D3D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02317BFC: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317C0C: .word 0x00000D3E +_02317C10: .word 0x022C487C +_02317C14: .word 0x00000115 +_02317C18: .word 0x00000D3C +_02317C1C: .word 0x00000D3D + arm_func_end ov29_02317AF4 + + arm_func_start RestoreMovePP +RestoreMovePP: ; 0x02317C20 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov fp, r2 + mov r8, r3 + mov r6, #0 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02317D48 + ldr r0, [sb, #0xb4] + mov r5, r6 + add r4, r0, #0x124 +_02317C58: + ldrb r0, [r4, r5, lsl #3] + add r7, r4, r5, lsl #3 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02317CD0 + ldrb r1, [r7, #6] + mov r0, r7 + str r1, [sp, #4] + bl GetMaxPp + str r0, [sp] + mov r0, r7 + bl GetMaxPpWrapper + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [sp] + cmp r1, r0 + bge _02317CD0 + ldr r0, [sp, #4] + mov r6, #1 + add r0, r0, fp + str r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [sp] + cmp r1, r0 + ldrgt r0, [sp] + strgt r0, [sp, #4] + ldr r0, [sp, #4] + strb r0, [r7, #6] +_02317CD0: + add r5, r5, #1 + cmp r5, #4 + blt _02317C58 + cmp r6, #0 + beq _02317D18 + mov r0, sb + bl ov29_022E4964 + cmp r8, #0 + bne _02317D40 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02317D50 ; =0x00000DB3 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02317D40 +_02317D18: + cmp r8, #0 + bne _02317D40 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02317D54 ; =0x00000DB4 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_02317D40: + mov r0, sb + bl UpdateStatusIconFlags +_02317D48: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02317D50: .word 0x00000DB3 +_02317D54: .word 0x00000DB4 + arm_func_end RestoreMovePP + + arm_func_start ov29_02317D58 +ov29_02317D58: ; 0x02317D58 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r5, r2 + mov r6, r3 + mov r4, #0 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _02317E78 + ldr r0, [r7, #0xb4] + add r1, r0, #0x124 + ldrb r0, [r1, r5, lsl #3] + add r5, r1, r5, lsl #3 + tst r0, #1 + movne r0, #1 + moveq r0, r4 + tst r0, #0xff + beq _02317E78 + ldrb r1, [r5, #6] + mov r0, r5 + str r1, [sp, #4] + bl GetMaxPp + str r0, [sp] + mov r0, r5 + bl GetMaxPpWrapper + str r0, [sp] + ldr r1, [sp, #4] + ldr r0, [sp] + cmp r1, r0 + bge _02317E04 + ldr r0, [sp, #4] + mov r4, #1 + add r0, r0, r6 + str r0, [sp, #4] + ldr r1, [sp, #4] + ldr r0, [sp] + cmp r1, r0 + ldrgt r0, [sp] + strgt r0, [sp, #4] + ldr r0, [sp, #4] + strb r0, [r5, #6] +_02317E04: + cmp r4, #0 + beq _02317E44 + mov r0, r7 + bl ov29_022E4964 + ldrb r0, [sp, #0x20] + cmp r0, #0 + beq _02317E70 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02317E80 ; =0x00000DB3 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02317E70 +_02317E44: + ldrb r0, [sp, #0x20] + cmp r0, #0 + beq _02317E70 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02317E84 ; =0x00000DB4 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02317E70: + mov r0, r7 + bl UpdateStatusIconFlags +_02317E78: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02317E80: .word 0x00000DB3 +_02317E84: .word 0x00000DB4 + arm_func_end ov29_02317D58 + + arm_func_start ov29_02317E88 +ov29_02317E88: ; 0x02317E88 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov sb, r1 + ldr r1, [sb, #0xb4] + mov r6, #0 + mov sl, r0 + mov r8, r2 + mov r7, r3 + mov r5, r6 + add r4, r1, #0x124 + add fp, sp, #0xc +_02317EB4: + ldrb r1, [r4, r5, lsl #3] + add r0, r4, r5, lsl #3 + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _02317F00 + ldrb r1, [r0, #6] + str r1, [sp, #8] + bl GetMaxPp + str r0, [sp, #4] + ldr r1, [sp, #8] + ldr r0, [sp, #4] + cmp r1, r0 + addlt r0, r6, #1 + movlt r1, r6, lsl #1 + movlt r0, r0, lsl #0x10 + strlth r5, [fp, r1] + movlt r6, r0, asr #0x10 +_02317F00: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #4 + blt _02317EB4 + cmp r6, #0 + ble _02317F48 + mov r0, r6 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + add r1, sp, #0xc + mov r0, r0, asr #0xf + ldrh r2, [r1, r0] + mov r0, sl + mov r1, sb + mov r3, r8 + str r7, [sp] + bl ov29_02317D58 +_02317F48: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02317E88 + + arm_func_start ov29_02317F50 +ov29_02317F50: ; 0x02317F50 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, [r5, #0xb4] + ldrb r3, [r2, #0x1a] + add r1, r3, r4 + cmp r1, #0xff + movge r1, #0xff + and r0, r1, #0xff + strb r1, [r2, #0x1a] + cmp r3, r0 + bhs _02317FC0 + mov r0, r5 + bl ov29_022E49B4 + ldr r2, _02317FDC ; =0x00000D96 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02317FD0 +_02317FC0: + ldr r2, _02317FE0 ; =0x00000D97 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02317FD0: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02317FDC: .word 0x00000D96 +_02317FE0: .word 0x00000D97 + arm_func_end ov29_02317F50 + + arm_func_start ov29_02317FE4 +ov29_02317FE4: ; 0x02317FE4 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, [r5, #0xb4] + ldrb r3, [r2, #0x1b] + add r1, r3, r4 + cmp r1, #0xff + movge r1, #0xff + and r0, r1, #0xff + strb r1, [r2, #0x1b] + cmp r3, r0 + bhs _02318054 + mov r0, r5 + bl ov29_022E4A04 + ldr r2, _02318070 ; =0x00000D98 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02318064 +_02318054: + ldr r2, _02318074 ; =0x00000D99 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318064: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318070: .word 0x00000D98 +_02318074: .word 0x00000D99 + arm_func_end ov29_02317FE4 + + arm_func_start ov29_02318078 +ov29_02318078: ; 0x02318078 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, [r5, #0xb4] + ldrb r3, [r2, #0x1c] + add r1, r3, r4 + cmp r1, #0xff + movge r1, #0xff + and r0, r1, #0xff + strb r1, [r2, #0x1c] + cmp r3, r0 + bhs _023180E8 + mov r0, r5 + bl ov29_022E4A54 + ldr r2, _02318104 ; =0x00000D9A + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023180F8 +_023180E8: + ldr r2, _02318108 ; =0x00000D9B + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023180F8: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318104: .word 0x00000D9A +_02318108: .word 0x00000D9B + arm_func_end ov29_02318078 + + arm_func_start ov29_0231810C +ov29_0231810C: ; 0x0231810C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + mov r4, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, [r5, #0xb4] + ldrb r3, [r2, #0x1d] + add r1, r3, r4 + cmp r1, #0xff + movge r1, #0xff + and r0, r1, #0xff + strb r1, [r2, #0x1d] + cmp r3, r0 + bhs _0231817C + mov r0, r5 + bl ov29_022E4AA4 + ldr r2, _02318198 ; =0x00000D9C + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231818C +_0231817C: + ldr r2, _0231819C ; =0x00000D9D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0231818C: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318198: .word 0x00000D9C +_0231819C: .word 0x00000D9D + arm_func_end ov29_0231810C + + arm_func_start ov29_023181A0 +ov29_023181A0: ; 0x023181A0 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r4, [r5, #0xb4] + mov r6, r0 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xee] + cmp r0, #1 + beq _023181EC + mov r1, #1 + mov r0, r5 + strb r1, [r4, #0xee] + bl ov29_022E4AF0 + ldr r2, _02318208 ; =0x00000DDD + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023181FC +_023181EC: + ldr r2, _0231820C ; =0x00000DDE + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023181FC: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318208: .word 0x00000DDD +_0231820C: .word 0x00000DDE + arm_func_end ov29_023181A0 + + arm_func_start ov29_02318210 +ov29_02318210: ; 0x02318210 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r4, [r5, #0xb4] + mov r6, r0 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xee] + cmp r0, #2 + beq _0231825C + mov r1, #2 + mov r0, r5 + strb r1, [r4, #0xee] + bl ov29_022E4B3C + ldr r2, _02318278 ; =0x00000DDF + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231826C +_0231825C: + mov r0, r6 + mov r1, r5 + mov r2, #0xde0 + bl LogMessageByIdWithPopupCheckUserTarget +_0231826C: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318278: .word 0x00000DDF + arm_func_end ov29_02318210 + + arm_func_start ov29_0231827C +ov29_0231827C: ; 0x0231827C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r8, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + bl EntityIsValid__02315118 + cmp r0, #0 + mov r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r1, r6 + mov r2, r0 + ldr r4, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + cmp r8, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r4, #0xd8] + cmp r0, #4 + beq _02318388 + mov r0, r7 + mov r1, r6 + bl ov29_023066D8 + mov r3, #4 + ldr r1, _023183B0 ; =0x022C476C + mov r0, r6 + mov r2, #1 + strb r3, [r4, #0xd8] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r4, #0xdb] + mov r1, #0 + ldr r0, _023183B4 ; =0x02353538 + strb r1, [r4, #0xdc] + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0xe] + cmp r5, #0 + beq _02318370 + ldr r2, _023183B8 ; =0x00000D7B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02318370: + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + mov r0, r6 + bl ov29_022FB984 + b _023183A0 +_02318388: + cmp r5, #0 + beq _023183A0 + ldr r2, _023183BC ; =0x00000D7C + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023183A0: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023183B0: .word 0x022C476C +_023183B4: .word 0x02353538 +_023183B8: .word 0x00000D7B +_023183BC: .word 0x00000D7C + arm_func_end ov29_0231827C + + arm_func_start SetReflectDamageCountdownTo4 +SetReflectDamageCountdownTo4: ; 0x023183C0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02315118 + cmp r0, #0 + ldrne r0, _023183E4 ; =0x022C4620 + ldrne r1, [r4, #0xb4] + ldrnesh r0, [r0] + strneb r0, [r1, #0xd7] + ldmia sp!, {r4, pc} + .align 2, 0 +_023183E4: .word 0x022C4620 + arm_func_end SetReflectDamageCountdownTo4 + + arm_func_start ov29_023183E8 +ov29_023183E8: ; 0x023183E8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + bl EntityIsValid__02315118 + cmp r0, #0 + beq _0231844C + ldr r3, [r4, #0xb4] + ldr r0, _02318454 ; =0x000003E7 + ldrsh r2, [r3, #0x12] + ldrsh r1, [r3, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldrsh r0, [r3, #0x10] + cmp r0, r1 + bge _02318444 + ldr r0, _02318458 ; =0x022C4628 + mov r3, #0 + ldrsh r2, [r0] + mov r0, r4 + mov r1, r4 + str r3, [sp] + bl TryIncreaseHp +_02318444: + mov r0, r4 + bl SetReflectDamageCountdownTo4 +_0231844C: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02318454: .word 0x000003E7 +_02318458: .word 0x022C4628 + arm_func_end ov29_023183E8 + + arm_func_start ov29_0231845C +ov29_0231845C: ; 0x0231845C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0x10 + beq _023184E0 + ldr r1, _023184FC ; =0x022C4764 + mov r3, #0x10 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl SetReflectDamageCountdownTo4 + ldr r2, _02318500 ; =0x00000D7D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023184F0 +_023184E0: + ldr r2, _02318504 ; =0x00000D7E + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023184F0: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023184FC: .word 0x022C4764 +_02318500: .word 0x00000D7D +_02318504: .word 0x00000D7E + arm_func_end ov29_0231845C + + arm_func_start ov29_02318508 +ov29_02318508: ; 0x02318508 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0x11 + beq _02318584 + ldr r1, _023185A0 ; =0x022C4768 + mov r3, #0x11 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r3, r0, #1 + ldr r2, _023185A4 ; =0x00000D7F + mov r0, r6 + mov r1, r5 + strb r3, [r4, #0xd6] + bl LogMessageByIdWithPopupCheckUserTarget + b _02318594 +_02318584: + mov r0, r6 + mov r1, r5 + mov r2, #0xd80 + bl LogMessageByIdWithPopupCheckUserTarget +_02318594: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023185A0: .word 0x022C4768 +_023185A4: .word 0x00000D7F + arm_func_end ov29_02318508 + + arm_func_start ov29_023185A8 +ov29_023185A8: ; 0x023185A8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r7, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r7, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xd8] + cmp r0, #5 + beq _02318698 + mov r0, r6 + mov r1, r5 + bl ov29_023066D8 + mov r3, #5 + ldr r1, _023186C0 ; =0x022C4774 + mov r0, r5 + mov r2, #1 + strb r3, [r7, #0xd8] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xdb] + cmp r4, #0 + beq _02318688 + ldr r2, _023186C4 ; =0x00000D81 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318688: + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _023186B0 +_02318698: + cmp r4, #0 + beq _023186B0 + ldr r2, _023186C8 ; =0x00000D82 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023186B0: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023186C0: .word 0x022C4774 +_023186C4: .word 0x00000D81 +_023186C8: .word 0x00000D82 + arm_func_end ov29_023185A8 + + arm_func_start ov29_023186CC +ov29_023186CC: ; 0x023186CC + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd8] + cmp r0, #6 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end ov29_023186CC + + arm_func_start ov29_02318700 +ov29_02318700: ; 0x02318700 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02318728 ; =0x00000D86 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, pc} + .align 2, 0 +_02318728: .word 0x00000D86 + arm_func_end ov29_02318700 + + arm_func_start ov29_0231872C +ov29_0231872C: ; 0x0231872C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r7, r3 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + cmp r7, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r7, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xd8] + cmp r0, #6 + beq _0231881C + mov r0, r6 + mov r1, r5 + bl ov29_023066D8 + mov r3, #6 + ldr r1, _02318844 ; =0x022C4778 + mov r0, r5 + mov r2, #1 + strb r3, [r7, #0xd8] + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r7, #0xdb] + cmp r4, #0 + beq _0231880C + ldr r2, _02318848 ; =0x00000D84 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0231880C: + mov r0, r6 + mov r1, r5 + bl TryActivateQuickFeet + b _02318834 +_0231881C: + cmp r4, #0 + beq _02318834 + ldr r2, _0231884C ; =0x00000D85 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318834: + mov r0, r5 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02318844: .word 0x022C4778 +_02318848: .word 0x00000D84 +_0231884C: .word 0x00000D85 + arm_func_end ov29_0231872C + + arm_func_start ov29_02318850 +ov29_02318850: ; 0x02318850 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02301940 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl ov29_02302430 + cmp r0, #0 + mov r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r6 + mov r2, r0 + ldr r4, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + mov r0, r6 + mov r1, #0x10 + bl ov29_02301EAC + cmp r0, #0 + bne _02318900 + cmp r5, #0 + bne _023188F8 + ldr r2, _02318974 ; =0x00000D89 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_023188F8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02318900: + cmp r5, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [r4, #0xf5] + cmp r0, #1 + beq _02318954 + ldr r1, _02318978 ; =0x022C477C + mov r2, #1 + mov r0, r6 + strb r2, [r4, #0xf5] + bl CalcStatusDuration + add r3, r0, #1 + ldr r2, _0231897C ; =0x00000D87 + mov r0, r7 + mov r1, r6 + strb r3, [r4, #0xf6] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl TryActivateQuickFeet + b _02318964 +_02318954: + ldr r2, _02318980 ; =0x00000D88 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02318964: + mov r0, r6 + bl UpdateStatusIconFlags + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02318974: .word 0x00000D89 +_02318978: .word 0x022C477C +_0231897C: .word 0x00000D87 +_02318980: .word 0x00000D88 + arm_func_end ov29_02318850 + + arm_func_start ov29_02318984 +ov29_02318984: ; 0x02318984 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + bl GravityIsActive + cmp r0, #0 + beq _023189B0 + ldr r2, _02318A3C ; =0x00000D8C + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r4, r5, r6, pc} +_023189B0: + mov r0, r6 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl EntityIsValid__02315118 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xf7] + cmp r0, #1 + beq _02318A20 + ldr r1, _02318A40 ; =0x022C4780 + mov r2, #1 + mov r0, r5 + strb r2, [r4, #0xf7] + bl CalcStatusDuration + add r3, r0, #1 + ldr r2, _02318A44 ; =0x00000D8A + mov r0, r6 + mov r1, r5 + strb r3, [r4, #0xf8] + bl LogMessageByIdWithPopupCheckUserTarget + b _02318A30 +_02318A20: + ldr r2, _02318A48 ; =0x00000D8B + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318A30: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318A3C: .word 0x00000D8C +_02318A40: .word 0x022C4780 +_02318A44: .word 0x00000D8A +_02318A48: .word 0x00000D8B + arm_func_end ov29_02318984 + + arm_func_start HasConditionalGroundImmunity +HasConditionalGroundImmunity: ; 0x02318A4C + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02315118 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl GravityIsActive + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xf7] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + arm_func_end HasConditionalGroundImmunity + + arm_func_start ov29_02318A90 +ov29_02318A90: ; 0x02318A90 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl IsMonster__02318AB0 + cmp r0, #0 + ldrne r0, [r5, #0xb4] + strneb r4, [r0, #0x10b] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02318A90 + + arm_func_start IsMonster__02318AB0 +IsMonster__02318AB0: ; 0x02318AB0 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__02318AB0 + + arm_func_start ov29_02318AD4 +ov29_02318AD4: ; 0x02318AD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, r0 + mov r8, #1 + bl IsMonster__02318AB0 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov sb, #0 + ldr r7, [r4, #0xb4] + mov r5, sb + mov r6, r8 + mov r4, #0x53 + b _02318B3C +_02318B04: + ldrb r0, [r7, #0x10b] + cmp r0, #1 + bne _02318B20 + ldr r0, [r7, #0x188] + cmp r0, #0xc800 + movge r8, r6 + movlt r8, r5 +_02318B20: + cmp r8, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r4 + bl AdvanceFrame + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_02318B3C: + cmp sb, #0x190 + blt _02318B04 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02318AD4 + + arm_func_start ov29_02318B48 +ov29_02318B48: ; 0x02318B48 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, r0 + mov r8, #1 + bl IsMonster__02318AB0 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov sb, #0 + ldr r7, [r4, #0xb4] + mov r5, sb + mov r6, r8 + mov r4, #0x53 + b _02318BB0 +_02318B78: + ldrb r0, [r7, #0x10b] + cmp r0, #0 + bne _02318B94 + ldr r0, [r7, #0x188] + cmp r0, #0 + movle r8, r6 + movgt r8, r5 +_02318B94: + cmp r8, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r4 + bl AdvanceFrame + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_02318BB0: + cmp sb, #0x190 + blt _02318B78 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02318B48 + + arm_func_start ov29_02318BBC +ov29_02318BBC: ; 0x02318BBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r1 + mov sb, r0 + mov r0, r8 + mov r7, r2 + mov r6, r3 + bl EntityIsValid__02318D34 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #0 + ldr r5, [r8, #0xb4] + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r5, #0xd2] + cmp r0, r7 + cmpeq r7, #0xc + bne _02318C18 + ldr r2, _02318D20 ; =0x00000D7A + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02318C18: + strb r7, [r5, #0xd2] + mov r2, #0 + add r0, r5, #0x124 + b _02318C3C +_02318C28: + add r1, r0, r2, lsl #3 + cmp r1, r6 + streqb r2, [r5, #0xd4] + beq _02318C44 + add r2, r2, #1 +_02318C3C: + cmp r2, #4 + blt _02318C28 +_02318C44: + add r0, r7, #0xf9 + mov r1, #1 + and r0, r0, #0xff + strb r1, [r5, #0x154] + cmp r0, #1 + mov r4, #0 + movls r4, r1 + strlsb r1, [r5, #0x10b] + bls _02318C7C + cmp r7, #9 + cmpne r7, #0xa + cmpne r7, #0xd + moveq r0, #2 + streqb r0, [r5, #0x10b] +_02318C7C: + cmp r7, #1 + bne _02318CD0 + ldr r1, _02318D24 ; =0x022C4754 + mov r0, r8 + mov r2, #0 + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r5, #0xd3] + mov r0, #0 + str r0, [r5, #0xb8] + ldrh r1, [r6, #4] + cmp r1, #0x154 + ldreq r0, _02318D28 ; =0x00000166 + streqh r0, [r5, #0xac] + beq _02318CD0 + ldr r0, _02318D2C ; =0x00000217 + cmp r1, r0 + subeq r0, r0, #0xb0 + streqh r0, [r5, #0xac] + subne r0, r0, #0xb2 + strneh r0, [r5, #0xac] +_02318CD0: + cmp r7, #0xc + bne _02318CF0 + ldr r1, _02318D30 ; =0x022C475C + mov r0, r8 + mov r2, #0 + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r5, #0xd3] +_02318CF0: + mov r0, r8 + mov r1, r4 + bl ov29_022E41B0 + ldr r2, [sp, #0x20] + mov r0, sb + mov r1, r8 + bl LogMessageWithPopupCheckUserTarget + mov r0, r8 + bl UpdateStatusIconFlags + mov r0, r8 + bl ov29_02318AD4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02318D20: .word 0x00000D7A +_02318D24: .word 0x022C4754 +_02318D28: .word 0x00000166 +_02318D2C: .word 0x00000217 +_02318D30: .word 0x022C475C + arm_func_end ov29_02318BBC diff --git a/asm/overlay_29_02318D58.s b/asm/overlay_29_02318D58.s new file mode 100644 index 00000000..c7466b1a --- /dev/null +++ b/asm/overlay_29_02318D58.s @@ -0,0 +1,76 @@ + .include "asm/macros.inc" + .include "overlay_29_02318D58.inc" + + .text + + arm_func_start ov29_02318D58 +ov29_02318D58: ; 0x02318D58 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02318D34 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0xb4] + ldrb r0, [r1, #0xd2] + cmp r0, #1 + cmpne r0, #0xc + movne r0, #0 + strneb r0, [r1, #0xd2] + strneb r0, [r1, #0x154] + strneb r0, [r1, #0x10b] + mov r0, r4 + bl UpdateStatusIconFlags + ldmia sp!, {r4, pc} + arm_func_end ov29_02318D58 + + arm_func_start ov29_02318D98 +ov29_02318D98: ; 0x02318D98 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, #0 + ldr r4, [r6, #0xb4] + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, r5 + bne _02318DEC + ldr r2, _02318E40 ; =0x00000CF3 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02318DEC: + mov r0, r6 + bl ov29_022E3F20 + ldrb r0, [r4, #0xd5] + cmp r0, #4 + cmpne r0, #0xa + cmpne r0, #0xf + beq _02318E20 + ldr r1, _02318E44 ; =0x022C4750 + mov r0, r6 + mov r2, #0 + bl CalcStatusDuration + add r0, r0, #1 + strb r0, [r4, #0xd6] +_02318E20: + ldr r2, _02318E48 ; =0x00000CF2 + mov r0, r7 + mov r1, r6 + strb r5, [r4, #0xd5] + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02318E40: .word 0x00000CF3 +_02318E44: .word 0x022C4750 +_02318E48: .word 0x00000CF2 + arm_func_end ov29_02318D98 diff --git a/asm/overlay_29_02318E70.s b/asm/overlay_29_02318E70.s new file mode 100644 index 00000000..8fcb13f7 --- /dev/null +++ b/asm/overlay_29_02318E70.s @@ -0,0 +1,1265 @@ + .include "asm/macros.inc" + .include "overlay_29_02318E70.inc" + + .text + + arm_func_start ov29_02318E70 +ov29_02318E70: ; 0x02318E70 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #2 + beq _02318EE8 + ldr r1, _02318F04 ; =0x022C4734 + mov r3, #2 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E3F74 + ldr r2, _02318F08 ; =0x00000CEE + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02318EF8 +_02318EE8: + ldr r2, _02318F0C ; =0x00000CEF + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318EF8: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318F04: .word 0x022C4734 +_02318F08: .word 0x00000CEE +_02318F0C: .word 0x00000CEF + arm_func_end ov29_02318E70 + + arm_func_start ov29_02318F10 +ov29_02318F10: ; 0x02318F10 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0xe + beq _02318F88 + ldr r1, _02318FA4 ; =0x022C4738 + mov r3, #0xe + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E3F78 + mov r0, r6 + mov r1, r5 + mov r2, #0xcf0 + bl LogMessageByIdWithPopupCheckUserTarget + b _02318F98 +_02318F88: + ldr r2, _02318FA8 ; =0x00000CF1 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02318F98: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02318FA4: .word 0x022C4738 +_02318FA8: .word 0x00000CF1 + arm_func_end ov29_02318F10 + + arm_func_start ov29_02318FAC +ov29_02318FAC: ; 0x02318FAC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #6 + beq _02319024 + ldr r1, _02319040 ; =0x022C4794 + mov r3, #6 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E3F7C + ldr r2, _02319044 ; =0x00000CDE + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319034 +_02319024: + ldr r2, _02319048 ; =0x00000CDF + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02319034: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319040: .word 0x022C4794 +_02319044: .word 0x00000CDE +_02319048: .word 0x00000CDF + arm_func_end ov29_02318FAC + + arm_func_start ov29_0231904C +ov29_0231904C: ; 0x0231904C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #5 + beq _023190C4 + ldr r1, _023190E0 ; =0x022C4740 + mov r3, #5 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E3FC8 + ldr r2, _023190E4 ; =0x00000CE7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023190D4 +_023190C4: + ldr r2, _023190E8 ; =0x00000CE8 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023190D4: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023190E0: .word 0x022C4740 +_023190E4: .word 0x00000CE7 +_023190E8: .word 0x00000CE8 + arm_func_end ov29_0231904C + + arm_func_start ov29_023190EC +ov29_023190EC: ; 0x023190EC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #3 + beq _02319164 + ldr r1, _02319180 ; =0x022C4730 + mov r3, #3 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E4014 + ldr r2, _02319184 ; =0x00000CF4 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319174 +_02319164: + ldr r2, _02319188 ; =0x00000CF5 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02319174: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319180: .word 0x022C4730 +_02319184: .word 0x00000CF4 +_02319188: .word 0x00000CF5 + arm_func_end ov29_023190EC + + arm_func_start ov29_0231918C +ov29_0231918C: ; 0x0231918C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #1 + beq _02319204 + ldr r1, _02319220 ; =0x022C472C + mov r3, #1 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E4068 + ldr r2, _02319224 ; =0x00000CF6 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319214 +_02319204: + ldr r2, _02319228 ; =0x00000CF7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02319214: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319220: .word 0x022C472C +_02319224: .word 0x00000CF6 +_02319228: .word 0x00000CF7 + arm_func_end ov29_0231918C + + arm_func_start ov29_0231922C +ov29_0231922C: ; 0x0231922C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl ov29_022E40B8 + ldr r4, [r5, #0xb4] + ldrb r0, [r4, #0xd5] + cmp r0, #7 + beq _023192A4 + ldr r1, _023192D0 ; =0x022C47B8 + mov r3, #7 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r3, r0, #1 + mov r0, #0 + mov r1, r5 + mov r2, r0 + strb r3, [r4, #0xd6] + bl SubstitutePlaceholderStringTags + ldr r2, _023192D4 ; =0x00000D47 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023192C4 +_023192A4: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _023192D8 ; =0x00000D48 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023192C4: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023192D0: .word 0x022C47B8 +_023192D4: .word 0x00000D47 +_023192D8: .word 0x00000D48 + arm_func_end ov29_0231922C + + arm_func_start ov29_023192DC +ov29_023192DC: ; 0x023192DC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #8 + beq _02319354 + ldr r1, _02319370 ; =0x022C47CC + mov r3, #8 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E40BC + ldr r2, _02319374 ; =0x00000D4F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319364 +_02319354: + mov r0, r6 + mov r1, r5 + mov r2, #0xd50 + bl LogMessageByIdWithPopupCheckUserTarget +_02319364: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319370: .word 0x022C47CC +_02319374: .word 0x00000D4F + arm_func_end ov29_023192DC + + arm_func_start ov29_02319378 +ov29_02319378: ; 0x02319378 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #9 + beq _023193F0 + ldr r1, _0231940C ; =0x022C47F4 + mov r3, #9 + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E4108 + ldr r2, _02319410 ; =0x00000D58 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319400 +_023193F0: + ldr r2, _02319414 ; =0x00000D59 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02319400: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231940C: .word 0x022C47F4 +_02319410: .word 0x00000D58 +_02319414: .word 0x00000D59 + arm_func_end ov29_02319378 + + arm_func_start ov29_02319418 +ov29_02319418: ; 0x02319418 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0xb + beq _02319490 + ldr r1, _023194AC ; =0x022C4840 + mov r3, #0xb + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E410C + ldr r2, _023194B0 ; =0x00000D5A + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023194A0 +_02319490: + ldr r2, _023194B4 ; =0x00000D5B + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023194A0: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023194AC: .word 0x022C4840 +_023194B0: .word 0x00000D5A +_023194B4: .word 0x00000D5B + arm_func_end ov29_02319418 + + arm_func_start ov29_023194B8 +ov29_023194B8: ; 0x023194B8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + mov r1, #0x25 + ldr r4, [r5, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + beq _02319500 + ldr r2, _02319574 ; =0x00000DC4 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r4, r5, r6, pc} +_02319500: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0xc + beq _02319558 + ldr r1, _02319578 ; =0x022C4854 + mov r3, #0xc + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E415C + ldr r2, _0231957C ; =0x00000D5C + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319568 +_02319558: + ldr r2, _02319580 ; =0x00000D5D + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02319568: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319574: .word 0x00000DC4 +_02319578: .word 0x022C4854 +_0231957C: .word 0x00000D5C +_02319580: .word 0x00000D5D + arm_func_end ov29_023194B8 + + arm_func_start ov29_02319584 +ov29_02319584: ; 0x02319584 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0 + ldr r4, [r5, #0xb4] + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0xd5] + cmp r0, #0xd + beq _023195FC + ldr r1, _02319618 ; =0x022C485C + mov r3, #0xd + mov r0, r5 + mov r2, #0 + strb r3, [r4, #0xd5] + bl CalcStatusDuration + add r1, r0, #1 + mov r0, r5 + strb r1, [r4, #0xd6] + bl ov29_022E41AC + ldr r2, _0231961C ; =0x00000D5E + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231960C +_023195FC: + ldr r2, _02319620 ; =0x00000D5F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0231960C: + mov r0, r5 + bl UpdateStatusIconFlags + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02319618: .word 0x022C485C +_0231961C: .word 0x00000D5E +_02319620: .word 0x00000D5F + arm_func_end ov29_02319584 + + arm_func_start ov29_02319624 +ov29_02319624: ; 0x02319624 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, #0 + bl EntityIsValid__02318E4C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r2, #0xa + mov sl, #0x100 + ldr r3, [r6, #0xb4] + mov ip, r4 + mov fp, #1 + mov r1, r2 + mov r0, r2 + mov lr, sl +_02319668: + add sb, r3, ip, lsl #1 + ldrsh r8, [sb, #0x24] + cmp r8, #0xa + strneh r2, [sb, #0x24] + add sb, r3, ip, lsl #1 + ldrsh r8, [sb, #0x28] + movne r4, fp + cmp r8, #0xa + strneh r1, [sb, #0x28] + add sb, r3, ip, lsl #1 + ldrsh r8, [sb, #0x2c] + movne r4, #1 + cmp r8, #0xa + strneh r0, [sb, #0x2c] + add sb, r3, ip, lsl #2 + ldr r8, [sb, #0x34] + movne r4, #1 + cmp r8, #0x100 + strne sl, [sb, #0x34] + add sb, r3, ip, lsl #2 + ldr r8, [sb, #0x3c] + movne r4, #1 + cmp r8, #0x100 + add ip, ip, #1 + strne lr, [sb, #0x3c] + movne r4, #1 + cmp ip, #2 + blt _02319668 + cmp r4, #0 + beq _023196EC + mov r0, r6 + bl ov29_022E543C + b _023196FC +_023196EC: + cmp r5, #0 + beq _023196FC + mov r0, r6 + bl ov29_022E543C +_023196FC: + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r4, #0 + beq _02319728 + mov r0, r7 + mov r1, r6 + mov r2, #0xd60 + bl LogMessageByIdWithPopupCheckUserTarget + b _02319738 +_02319728: + ldr r2, _02319744 ; =0x00000D61 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_02319738: + mov r0, r6 + bl UpdateStatusIconFlags + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02319744: .word 0x00000D61 + arm_func_end ov29_02319624 + + arm_func_start ov29_02319748 +ov29_02319748: ; 0x02319748 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02318E4C + cmp r0, #0 + beq _0231979C + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xb + moveq r0, #1 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0x25 + bl ExclusiveItemEffectIsActive__023197A8 + cmp r0, #0 + beq _0231979C + ldr r0, _023197A4 ; =0x022C4648 + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r4, pc} +_0231979C: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_023197A4: .word 0x022C4648 + arm_func_end ov29_02319748 + + arm_func_start ExclusiveItemEffectIsActive__023197A8 +ExclusiveItemEffectIsActive__023197A8: ; 0x023197A8 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__023197A8 + + arm_func_start ov29_023197CC +ov29_023197CC: ; 0x023197CC + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02318E4C + cmp r0, #0 + beq _0231980C + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xe + moveq r0, #1 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0x26 + bl ExclusiveItemEffectIsActive__023197A8 + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r4, pc} +_0231980C: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_023197CC + + arm_func_start Conversion2IsActive +Conversion2IsActive: ; 0x02319814 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02318E4C + cmp r0, #0 + beq _02319854 + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #0xd5] + cmp r0, #0xc + moveq r0, #1 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0x27 + bl ExclusiveItemEffectIsActive__023197A8 + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r4, pc} +_02319854: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Conversion2IsActive + + arm_func_start ov29_0231985C +ov29_0231985C: ; 0x0231985C + mov r2, #0 + ldr r0, _0231987C ; =0x0237CA18 + mov r1, r2 +_02319868: + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #8 + blt _02319868 + bx lr + .align 2, 0 +_0231987C: .word 0x0237CA18 + arm_func_end ov29_0231985C + + arm_func_start AiConsiderMove +AiConsiderMove: ; 0x02319880 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov sl, r1 + str r0, [sp, #8] + mov r0, #1 + mov sb, r2 + ldr r6, [sl, #0xb4] + str r0, [sp, #0x14] + mov r5, #0 + bl ov29_0231985C + mov r0, sl + mov r1, sb + mov r2, #1 + bl GetEntityMoveTargetAndRange + str r0, [sp, #0x24] + mov r0, sl + mov r1, #8 + bl IqSkillIsEnabled + mov r4, r0 + ldr r0, [sp, #8] + mov r1, r5 + strb r1, [r0] + ldrb r0, [r6, #0xd0] + cmp r0, #5 + bne _023198F8 + mov r0, sb + bl IsAffectedByTaunt + cmp r0, #0 + moveq r0, #1 + beq _02319F64 +_023198F8: + cmp r4, #0 + beq _02319918 + mov r0, sl + mov r1, sb + bl StatusCheckerCheck + cmp r0, #0 + moveq r0, #1 + beq _02319F64 +_02319918: + mov r0, sb + mov r1, #0 + bl GetMoveTargetAndRange + ldr r1, _02319F6C ; =0x00000273 + cmp r0, r1 + bne _02319958 + ldrsh r3, [r6, #0x12] + ldrsh r2, [r6, #0x16] + add r0, r1, #0x174 + add r2, r3, r2 + cmp r2, r0 + movgt r2, r0 + ldrsh r0, [r6, #0x10] + cmp r0, r2 + moveq r0, #1 + beq _02319F64 +_02319958: + ldr r0, [sp, #0x24] + ands r7, r0, #0xf0 + cmpne r7, #0x10 + cmpne r7, #0x20 + bne _02319A54 + mov r0, sl + mov r1, #1 + bl IsBlinded + cmp r0, #0 + beq _023199C0 + ldrb r6, [r6, #0x4c] + ldr r4, _02319F70 ; =0x0237CA18 + ldrb r0, [r4, r6] + cmp r0, #0 + bne _02319E88 + ldr r1, _02319F74 ; =0x0237CA20 + mov r3, #1 + ldr r0, _02319F78 ; =0x0237CA28 + mov r2, #0x63 + strb r3, [r4, r6] + strb r6, [r1] + str r2, [r0] + mov r1, #0 + str r1, [r0, #0x20] + add r5, r5, #1 + b _02319E88 +_023199C0: + ldr fp, _02319F7C ; =0x0235171C + mov r8, #0 +_023199C8: + mov r1, r8, lsl #2 + add r0, fp, r8, lsl #2 + ldrsh r6, [sl, #4] + ldrsh r3, [fp, r1] + ldrsh r2, [sl, #6] + ldrsh r1, [r0, #2] + add r0, r6, r3 + add r1, r2, r1 + bl GetTile + ldr r6, [r0, #0xc] + cmp r6, #0 + beq _02319A44 + ldr r0, [r6] + cmp r0, #1 + bne _02319A44 + cmp r7, #0x10 + cmpne r7, #0x20 + beq _02319A24 + mov r0, sl + mov r1, r8 + bl CanAttackInDirection + cmp r0, #0 + beq _02319A44 +_02319A24: + str sb, [sp] + ldr r1, [sp, #0x24] + mov r0, r5 + mov r2, sl + mov r3, r6 + str r4, [sp, #4] + bl TryAddTargetToAiTargetList + mov r5, r0 +_02319A44: + add r8, r8, #1 + cmp r8, #8 + blt _023199C8 + b _02319E88 +_02319A54: + cmp r7, #0x30 + bne _02319AC8 + ldr r7, _02319F80 ; =0x02353538 + mov r6, #0 +_02319A64: + ldr r0, [r7] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__02319F8C + cmp r0, #0 + beq _02319AB8 + mov r0, sl + mov r1, r8 + bl ov29_022E274C + cmp r0, #0 + beq _02319AB8 + str sb, [sp] + ldr r1, [sp, #0x24] + mov r0, r5 + mov r2, sl + mov r3, r8 + str r4, [sp, #4] + bl TryAddTargetToAiTargetList + mov r5, r0 +_02319AB8: + add r6, r6, #1 + cmp r6, #0x14 + blt _02319A64 + b _02319E88 +_02319AC8: + cmp r7, #0x40 + bne _02319BB0 + mov r8, #0 +_02319AD4: + ldr r0, _02319F7C ; =0x0235171C + mov r2, r8, lsl #2 + add r0, r0, r8, lsl #2 + ldrsh r6, [r0, #2] + ldr r0, _02319F7C ; =0x0235171C + ldrsh r1, [sl, #6] + ldrsh r7, [r0, r2] + ldrsh r0, [sl, #4] + add r1, r1, r6 + add r0, r0, r7 + bl GetTile + mov fp, r0 + mov r0, sl + mov r1, r8 + bl CanAttackInDirection + cmp r0, #0 + beq _02319BA0 + ldr r3, [fp, #0xc] + cmp r3, #0 + beq _02319B58 + ldr r0, [r3] + cmp r0, #1 + bne _02319B58 + str sb, [sp] + ldr r1, [sp, #0x24] + mov r0, r5 + mov r2, sl + str r4, [sp, #4] + mov fp, r5 + bl TryAddTargetToAiTargetList + mov r5, r0 + cmp fp, r5 + bne _02319BA0 +_02319B58: + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + add r0, r0, r7, lsl #1 + add r1, r1, r6, lsl #1 + bl GetTile + ldr r3, [r0, #0xc] + cmp r3, #0 + beq _02319BA0 + ldr r0, [r3] + cmp r0, #1 + bne _02319BA0 + str sb, [sp] + ldr r1, [sp, #0x24] + mov r0, r5 + mov r2, sl + str r4, [sp, #4] + bl TryAddTargetToAiTargetList + mov r5, r0 +_02319BA0: + add r8, r8, #1 + cmp r8, #8 + blt _02319AD4 + b _02319E88 +_02319BB0: + cmp r7, #0x50 + cmpne r7, #0x80 + cmpne r7, #0x90 + bne _02319E00 + cmp r7, #0x50 + moveq r0, #0xa + streq r0, [sp, #0xc] + movne r0, #1 + strne r0, [sp, #0xc] + cmp r7, #0x90 + moveq r0, #2 + streq r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x20] + mvn r0, #0 + str r0, [sp, #0x28] +_02319BF0: + ldr r0, _02319F80 ; =0x02353538 + ldr r1, [r0] + ldr r0, [sp, #0x20] + add r0, r1, r0, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb78] + str r0, [sp, #0x18] + bl EntityIsValid__02319F8C + cmp r0, #0 + ldrne r0, [sp, #0x18] + cmpne sl, r0 + beq _02319DE8 + ldr r1, [sp, #0x18] + add r0, sl, #4 + add r1, r1, #4 + bl GetDirectionTowardsPosition + ldr r1, _02319F70 ; =0x0237CA18 + str r0, [sp, #0x1c] + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02319DE8 + ldr r1, [sp, #0x18] + mov r0, sl + bl ov29_022E274C + cmp r0, #0 + beq _02319DE8 + ldr r0, [sp, #0x18] + ldrsh r6, [sl, #4] + ldrsh fp, [r0, #4] + sub r0, r6, fp + bl Abs + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + ldrsh r8, [sl, #6] + ldrsh r7, [r0, #6] + sub r0, r8, r7 + bl Abs + ldr r1, [sp, #0x10] + cmp r1, r0 + movgt r2, r1 + movle r2, r0 + cmp r2, #0xa + movgt r0, #0 + bgt _02319D50 + ldr r1, [sp, #0xc] + cmp r2, r1 + movgt r0, #0 + bgt _02319D50 + ldr r1, [sp, #0x10] + cmp r1, r0 + ldr r0, [sp, #0x28] + bne _02319CF8 + cmp r6, fp + cmplt r8, r7 + movlt r0, #1 + blt _02319D44 + cmp r6, fp + bge _02319CE4 + cmp r8, r7 + movgt r0, #3 + bgt _02319D44 +_02319CE4: + cmp r6, fp + cmpgt r8, r7 + movgt r0, #5 + movle r0, #7 + b _02319D44 +_02319CF8: + cmp r6, fp + bne _02319D0C + cmp r8, r7 + movlt r0, #0 + blt _02319D44 +_02319D0C: + cmp r6, fp + bge _02319D20 + cmp r8, r7 + moveq r0, #2 + beq _02319D44 +_02319D20: + cmp r6, fp + bne _02319D34 + cmp r8, r7 + movgt r0, #4 + bgt _02319D44 +_02319D34: + cmp r6, fp + ble _02319D44 + cmp r8, r7 + moveq r0, #6 +_02319D44: + cmp r0, #0 + movge r0, #1 + movlt r0, #0 +_02319D50: + cmp r0, #0 + beq _02319DE8 + str r4, [sp] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x18] + mov r1, sl + mov r3, sb + bl IsAiTargetEligible + cmp r0, #0 + beq _02319DE8 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0xc] + mov r0, sl + bl IsTargetInRange + cmp r0, #0 + beq _02319DE8 + ldr r1, _02319F70 ; =0x0237CA18 + ldr r0, [sp, #0x1c] + mov r2, #1 + strb r2, [r1, r0] + mov r1, r0 + ldr r0, _02319F74 ; =0x0237CA20 + strb r1, [r0, r5] + mov r0, sl + mov r1, sb + bl GetMoveTypeForMonster + mov r3, r0 + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x18] + mov r0, sl + bl ov29_0231A364 + ldr r1, _02319F84 ; =0x0237CA28 + str r0, [r1, r5, lsl #2] + ldr r1, [sp, #0x18] + ldr r0, _02319F88 ; =0x0237CA48 + str r1, [r0, r5, lsl #2] + add r5, r5, #1 +_02319DE8: + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #0x14 + blt _02319BF0 + b _02319E88 +_02319E00: + cmp r7, #0x60 + bne _02319E60 + ldr r7, _02319F80 ; =0x02353538 + mov r6, #0 +_02319E10: + ldr r0, [r7] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl EntityIsValid__02319F8C + cmp r0, #0 + beq _02319E50 + str sb, [sp] + ldr r1, [sp, #0x24] + mov r0, r5 + mov r2, sl + mov r3, r8 + str r4, [sp, #4] + bl TryAddTargetToAiTargetList + mov r5, r0 +_02319E50: + add r6, r6, #1 + cmp r6, #0x14 + blt _02319E10 + b _02319E88 +_02319E60: + cmp r7, #0x70 + bne _02319E88 + str sb, [sp] + ldr r1, [sp, #0x24] + mov r2, sl + mov r3, sl + mov r0, #0 + str r4, [sp, #4] + bl TryAddTargetToAiTargetList + mov r5, r0 +_02319E88: + cmp r5, #0 + ldreq r0, [sp, #8] + moveq r1, #0 + streqb r1, [r0] + beq _02319F60 + mov r0, #0 + str r0, [sp, #0x14] + mov r4, r0 + ldr r3, _02319F84 ; =0x0237CA28 + b _02319EC4 +_02319EB0: + ldr r2, [r3, r4, lsl #2] + ldr r1, [sp, #0x14] + add r4, r4, #1 + cmp r1, r2 + strlt r2, [sp, #0x14] +_02319EC4: + cmp r4, r5 + blt _02319EB0 + mov r6, #0 + mov r2, r6 + ldr r4, _02319F84 ; =0x0237CA28 + b _02319EF0 +_02319EDC: + ldr r3, [r4, r6, lsl #2] + ldr r1, [sp, #0x14] + cmp r1, r3 + strne r2, [r4, r6, lsl #2] + add r6, r6, #1 +_02319EF0: + cmp r6, r5 + blt _02319EDC + mov r3, #0 + ldr r2, _02319F84 ; =0x0237CA28 + b _02319F10 +_02319F04: + ldr r1, [r2, r3, lsl #2] + add r3, r3, #1 + add r0, r0, r1 +_02319F10: + cmp r3, r5 + blt _02319F04 + bl DungeonRandInt + mov r3, #0 + ldr r2, _02319F84 ; =0x0237CA28 + b _02319F38 +_02319F28: + ldr r1, [r2, r3, lsl #2] + subs r0, r0, r1 + bmi _02319F40 + add r3, r3, #1 +_02319F38: + cmp r3, r5 + blt _02319F28 +_02319F40: + ldr r1, _02319F74 ; =0x0237CA20 + ldr r0, [sp, #8] + mov r2, #1 + strb r2, [r0] + ldrb r2, [r1, r3] + mov r1, #8 + strb r2, [r0, #1] + str r1, [r0, #4] +_02319F60: + ldr r0, [sp, #0x14] +_02319F64: + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02319F6C: .word 0x00000273 +_02319F70: .word 0x0237CA18 +_02319F74: .word 0x0237CA20 +_02319F78: .word 0x0237CA28 +_02319F7C: .word 0x0235171C +_02319F80: .word 0x02353538 +_02319F84: .word 0x0237CA28 +_02319F88: .word 0x0237CA48 + arm_func_end AiConsiderMove diff --git a/asm/overlay_29_02319FB0.s b/asm/overlay_29_02319FB0.s new file mode 100644 index 00000000..8e74bbb0 --- /dev/null +++ b/asm/overlay_29_02319FB0.s @@ -0,0 +1,1331 @@ + .include "asm/macros.inc" + .include "overlay_29_02319FB0.inc" + + .text + + arm_func_start TryAddTargetToAiTargetList +TryAddTargetToAiTargetList: ; 0x02319FB0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r2 + mov r6, r3 + ldrsh r3, [r7, #4] + ldrsh r2, [r6, #4] + mov sb, r0 + mov r8, r1 + cmp r3, r2 + ldreqsh r1, [r7, #6] + ldreqsh r0, [r6, #6] + ldr r2, [r7, #0xb4] + cmpeq r1, r0 + ldreqb r5, [r2, #0x4c] + beq _0231A010 + and r0, r8, #0xf0 + cmp r0, #0x30 + cmpne r0, #0x60 + cmpne r0, #0x70 + ldreqb r5, [r2, #0x4c] + beq _0231A010 + add r0, r7, #4 + add r1, r6, #4 + bl GetDirectionTowardsPosition + mov r5, r0 +_0231A010: + ldr r4, _0231A094 ; =0x0237CA18 + ldrb r0, [r4, r5] + cmp r0, #0 + movne r0, sb + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb ip, [sp, #0x24] + ldr r3, [sp, #0x20] + mov r0, r8 + mov r1, r7 + mov r2, r6 + str ip, [sp] + bl IsAiTargetEligible + cmp r0, #0 + beq _0231A08C + ldr r2, _0231A098 ; =0x0237CA20 + mov r3, #1 + ldr r1, [sp, #0x20] + mov r0, r7 + strb r3, [r4, r5] + strb r5, [r2, sb] + bl GetMoveTypeForMonster + mov r3, r0 + mov r0, r7 + mov r1, r8 + mov r2, r6 + bl ov29_0231A364 + ldr r2, _0231A09C ; =0x0237CA28 + ldr r1, _0231A0A0 ; =0x0237CA48 + str r0, [r2, sb, lsl #2] + str r6, [r1, sb, lsl #2] + add sb, sb, #1 +_0231A08C: + mov r0, sb + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231A094: .word 0x0237CA18 +_0231A098: .word 0x0237CA20 +_0231A09C: .word 0x0237CA28 +_0231A0A0: .word 0x0237CA48 + arm_func_end TryAddTargetToAiTargetList + + arm_func_start IsAiTargetEligible +IsAiTargetEligible: ; 0x0231A0A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, r0 + mov r6, r2 + mov r2, #0 + mov r7, r1 + mov r5, r3 + mov r4, r2 + ands r0, r8, #0xf + bne _0231A0E4 + mov r0, r7 + mov r1, r6 + mov r3, #1 + bl ov29_0230175C + cmp r0, #1 + moveq r4, #1 + b _0231A1B8 +_0231A0E4: + cmp r0, #1 + bne _0231A108 + mov r0, r7 + mov r1, r6 + mov r3, #1 + bl ov29_0230175C + cmp r0, #0 + moveq r4, #1 + b _0231A1B8 +_0231A108: + cmp r0, #2 + bne _0231A13C + ldr r1, [r6, #0xb4] + mov r4, #1 + ldrb r0, [r1, #9] + cmp r0, #1 + moveq r0, r2 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #0xbc] + cmp r0, #7 + bne _0231A1B8 + mov r0, r2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A13C: + cmp r0, #5 + bne _0231A17C + cmp r7, r6 + ldr r1, [r6, #0xb4] + moveq r0, r2 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #9] + mov r4, #1 + cmp r0, #1 + moveq r0, r2 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #0xbc] + cmp r0, #7 + bne _0231A1B8 + mov r0, r2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A17C: + cmp r0, #6 + bne _0231A1AC + cmp r7, r6 + moveq r0, r2 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r7 + mov r1, r6 + mov r3, #1 + bl ov29_0230175C + cmp r0, #0 + moveq r4, #1 + b _0231A1B8 +_0231A1AC: + sub r0, r0, #3 + cmp r0, #1 + movls r4, #1 +_0231A1B8: + cmp r4, #0 + beq _0231A358 + ldrb r0, [sp, #0x18] + cmp r0, #0 + beq _0231A328 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl ov29_02333FD0 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + and r0, r8, #0xf00 + cmp r0, #0x100 + bne _0231A21C + mov r0, r5 + mov r1, #2 + bl GetMoveAccuracyOrAiChance + mov r5, r0 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, r5 + blt _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A21C: + cmp r0, #0x200 + bne _0231A23C + mov r0, r6 + bl ov29_023007DC + cmp r0, #0 + bne _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A23C: + cmp r0, #0x300 + bne _0231A260 + mov r0, r6 + mov r1, #1 + bl ov29_02300634 + cmp r0, #0 + bne _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A260: + cmp r0, #0x400 + bne _0231A280 + mov r0, r6 + bl ov29_023007A8 + cmp r0, #0 + bne _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A280: + cmp r0, #0x600 + bne _0231A2B8 + ldr r1, [r6, #0xb4] + ldrb r0, [r1, #0x5e] + cmp r0, #0xe + ldrneb r0, [r1, #0x5f] + cmpne r0, #0xe + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #0xfe] + cmp r0, #0 + beq _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A2B8: + cmp r0, #0x500 + bne _0231A358 + ldrh r1, [r5, #4] + ldr r0, _0231A360 ; =0x000001B7 + cmp r1, r0 + addne r0, r0, #0x57 + cmpne r1, r0 + mov r0, r6 + mov r1, #1 + bne _0231A304 + bl ov29_02300634 + cmp r0, #0 + bne _0231A358 + mov r0, r6 + bl ov29_023007DC + cmp r0, #0 + bne _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A304: + bl ov29_02300634 + cmp r0, #0 + bne _0231A358 + mov r0, r6 + bl ov29_023007DC + cmp r0, #0 + bne _0231A358 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0231A328: + and r0, r8, #0xf00 + cmp r0, #0x100 + bne _0231A358 + mov r0, r5 + mov r1, #2 + bl GetMoveAccuracyOrAiChance + mov r5, r0 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, r5 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, r7, r8, pc} +_0231A358: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0231A360: .word 0x000001B7 + arm_func_end IsAiTargetEligible + + arm_func_start ov29_0231A364 +ov29_0231A364: ; 0x0231A364 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r2 + mov sb, r0 + mov r8, r1 + mov r0, r7 + mov r1, #0x6f + mov r6, r3 + ldr r5, [r7, #0xb4] + mov r4, #1 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0231A3A4 + mov r0, r7 + mov r1, #0xf + bl HasHeldItem +_0231A3A4: + cmp r0, #0 + movne r0, #0x1f4 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r5, #6] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + tst r8, #0xf + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + mov r1, #9 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231A404 + ldrsh r0, [r5, #2] + mov r1, #0x258 + bl DivideInt + ldr r0, _0231A45C ; =0x02353538 + ldr r0, [r0] + add r0, r0, r1 + add r0, r0, #0x3000 + ldrb r4, [r0, #0xb74] + b _0231A454 +_0231A404: + mov r0, sb + mov r1, #0xa + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231A42C + ldrsh r0, [r5, #0x10] + rsb r4, r0, #0x1f4 + cmp r4, #1 + movlt r4, #1 + b _0231A454 +_0231A42C: + mov r0, sb + mov r1, #0xb + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231A454 + mov r0, sb + mov r1, r7 + mov r2, r6 + bl ov29_0230B7D4 + add r4, r0, #1 +_0231A454: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231A45C: .word 0x02353538 + arm_func_end ov29_0231A364 + + arm_func_start ov29_0231A460 +ov29_0231A460: ; 0x0231A460 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x48 + mov sl, r0 + ldr r3, [sl, #0xb4] + mov sb, r1 + str r2, [sp] + mov r1, #1 + ldrb r6, [r3, #0x4c] + mov r4, #0 + bl IsBlinded + cmp r0, #0 + movne r7, #1 + bne _0231A4AC + mov r0, sl + mov r1, #0xf + bl ov29_0230F8D0 + cmp r0, #0xff + mov r7, #8 + movne r6, r0 +_0231A4AC: + mov r0, sl + mov r1, #9 + bl IqSkillIsEnabled + cmp r0, #0 + bne _0231A4D4 + mov r0, sl + mov r1, #0xa + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231A4DC +_0231A4D4: + mov r2, #1 + b _0231A4E0 +_0231A4DC: + mov r2, #0 +_0231A4E0: + mov r0, sl + mov r1, #8 + and fp, r2, #0xff + bl IqSkillIsEnabled + str r0, [sp, #4] + mov r5, #0 + b _0231A5CC +_0231A4FC: + and r6, r6, #7 + ldr r1, _0231A690 ; =0x0235171C + mov r2, r6, lsl #2 + ldrsh r3, [r1, r2] + add r1, r1, r6, lsl #2 + ldrsh r0, [sl, #4] + ldrsh r2, [sl, #6] + ldrsh r1, [r1, #2] + add r0, r0, r3 + add r1, r2, r1 + bl GetTile + ldr r8, [r0, #0xc] + cmp r8, #0 + beq _0231A5C4 + ldr r0, [r8] + cmp r0, #1 + bne _0231A5C4 + mov r0, sl + mov r1, r6 + bl CanAttackInDirection + cmp r0, #0 + beq _0231A5C4 + ldr r3, [sp] + mov r0, sl + mov r1, r8 + mov r2, #0 + bl ov29_0230175C + cmp r0, #1 + bne _0231A5C4 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0231A58C + ldr r0, [r8, #0xb4] + ldrb r0, [r0, #0xc4] + cmp r0, #1 + beq _0231A5C4 +_0231A58C: + add r0, sp, #0x28 + mov r1, #0 + str r6, [r0, r4, lsl #2] + mov r2, r8 + mov r0, sl + mov r3, r1 + bl ov29_0231A364 + add r1, sp, #8 + cmp fp, #0 + str r0, [r1, r4, lsl #2] + streq r6, [sb] + moveq r0, #1 + beq _0231A688 + add r4, r4, #1 +_0231A5C4: + add r5, r5, #1 + add r6, r6, #1 +_0231A5CC: + cmp r5, r7 + blt _0231A4FC + cmp r4, #0 + mov r0, #0 + beq _0231A688 + mov r5, r0 + mov r3, r0 + add r2, sp, #8 + b _0231A600 +_0231A5F0: + ldr r1, [r2, r3, lsl #2] + add r3, r3, #1 + cmp r5, r1 + movlt r5, r1 +_0231A600: + cmp r3, r4 + blt _0231A5F0 + mov r6, #0 + mov r1, r6 + add r3, sp, #8 + b _0231A628 +_0231A618: + ldr r2, [r3, r6, lsl #2] + cmp r5, r2 + strne r1, [r3, r6, lsl #2] + add r6, r6, #1 +_0231A628: + cmp r6, r4 + blt _0231A618 + mov r3, #0 + add r2, sp, #8 + b _0231A648 +_0231A63C: + ldr r1, [r2, r3, lsl #2] + add r3, r3, #1 + add r0, r0, r1 +_0231A648: + cmp r3, r4 + blt _0231A63C + bl DungeonRandInt + mov r3, #0 + add r2, sp, #8 + b _0231A670 +_0231A660: + ldr r1, [r2, r3, lsl #2] + subs r0, r0, r1 + bmi _0231A678 + add r3, r3, #1 +_0231A670: + cmp r3, r4 + blt _0231A660 +_0231A678: + add r1, sp, #0x28 + ldr r1, [r1, r3, lsl #2] + mov r0, #1 + str r1, [sb] +_0231A688: + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231A690: .word 0x0235171C + arm_func_end ov29_0231A460 + + arm_func_start IsTargetInRange +IsTargetInRange: ; 0x0231A694 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov sb, r0 + mov r5, r1 + ldrsh r1, [sb, #6] + ldrsh r0, [r5, #6] + mov r8, r2 + mov r7, r3 + sub r0, r1, r0 + bl Abs + ldrsh r2, [sb, #4] + ldrsh r1, [r5, #4] + mov r6, r0 + sub r0, r2, r1 + bl Abs + mov r4, r0 + cmp r4, r6 + movle r4, r6 + cmp r4, r7 + mov r0, sb + mov r1, #3 + movgt r4, r7 + bl IqSkillIsEnabled + cmp r0, #0 + bne _0231A708 + cmp r4, r7 + movle r0, #1 + movgt r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0231A708: + ldr r1, _0231A798 ; =0x0235171C + mov r2, r8, lsl #2 + ldr r0, _0231A79C ; =0x0235171E + ldrsh r7, [sb, #4] + ldrsh r8, [sb, #6] + ldrsh sb, [r1, r2] + ldrsh sl, [r0, r2] + mov r6, #0 + b _0231A788 +_0231A72C: + add r7, r7, sb + add r8, r8, sl + cmp r7, #1 + cmpge r8, #1 + blt _0231A790 + cmp r7, #0x37 + cmplt r8, #0x1f + bge _0231A790 + mov r0, r7 + mov r1, r8 + bl GetTile + ldrh r1, [r0] + tst r1, #3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [r0, #0xc] + cmp r0, r5 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add r6, r6, #1 +_0231A788: + cmp r6, r4 + ble _0231A72C +_0231A790: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0231A798: .word 0x0235171C +_0231A79C: .word 0x0235171E + arm_func_end IsTargetInRange + + arm_func_start ov29_0231A7A0 +ov29_0231A7A0: ; 0x0231A7A0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r1, #0x52 + mov r7, r0 + mov r5, r4 + mov r6, r4 + bl ExclusiveItemEffectIsActive__0231A87C + cmp r0, #0 + mov r0, r7 + mov r1, #0x1f + movne r4, #1 + bl IqSkillIsEnabled + cmp r0, #0 + movne r5, #1 + cmp r5, #0 + beq _0231A81C + ldr r0, _0231A870 ; =0x022C459C + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0231A81C + mov r0, r7 + bl ov29_022E3ED0 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231A874 ; =0x00000DF5 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r6, #1 +_0231A81C: + cmp r6, #0 + bne _0231A868 + cmp r4, #0 + beq _0231A868 + ldr r0, _0231A870 ; =0x022C459C + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0231A868 + mov r0, r7 + bl ov29_022E3ED0 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231A878 ; =0x00000DF7 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r6, #1 +_0231A868: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0231A870: .word 0x022C459C +_0231A874: .word 0x00000DF5 +_0231A878: .word 0x00000DF7 + arm_func_end ov29_0231A7A0 + + arm_func_start ExclusiveItemEffectIsActive__0231A87C +ExclusiveItemEffectIsActive__0231A87C: ; 0x0231A87C + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__0231A87C + + arm_func_start ov29_0231A8A0 +ov29_0231A8A0: ; 0x0231A8A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov sb, r0 + mov r7, #0 + bl IsMonster__0231A9D4 + cmp r0, #0 + beq _0231A910 + ldr r0, _0231A9CC ; =0x02353538 + ldr r4, [sb, #0xb4] + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_02344160 + cmp r0, #0 + bne _0231A8EC + ldr r1, _0231A9D0 ; =0x00000DFD + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + b _0231A9C4 +_0231A8EC: + mov r1, r7 + mov r0, sb + strb r1, [r4, #0x23f] + bl ov29_0231A7A0 + cmp r0, #0 + movne r7, #1 + strneb r7, [r4, #0x23f] + mov r0, #0 + strb r0, [r4, #0x23e] +_0231A910: + mov r6, #0 + mov r4, #1 + mov r5, r6 + mov sl, r4 + b _0231A970 +_0231A924: + ldr r8, [sb, #0xb4] + mov r0, sb + str r5, [sp] + ldrb r1, [r8, #0x4e] + mov r2, r4 + mov r3, r5 + bl ov29_0232145C + mov r0, sb + bl EntityIsValid__02319F8C + cmp r0, #0 + beq _0231A984 + bl IsFloorOver + cmp r0, #0 + ldreqb r0, [r8, #0x23e] + cmpeq r0, #0 + ldreqb r0, [r8, #0x163] + cmpeq r0, #0 + bne _0231A984 + add r6, r6, #1 +_0231A970: + mov r0, sb + mov r1, sl + bl GetNumberOfAttacks + cmp r6, r0 + blt _0231A924 +_0231A984: + mov r0, sb + bl EntityIsValid__02319F8C + cmp r0, #0 + beq _0231A9BC + cmp r7, #0 + moveq r1, #1 + movne r1, #0 + ldr r4, [sb, #0xb4] + mov r0, sb + and r1, r1, #0xff + bl UpdateMovePp + ldrb r1, [r4, #0x4e] + mov r0, sb + bl ov29_022FA574 +_0231A9BC: + mov r0, sb + bl TryActivateTruant +_0231A9C4: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0231A9CC: .word 0x02353538 +_0231A9D0: .word 0x00000DFD + arm_func_end ov29_0231A8A0 + + arm_func_start IsMonster__0231A9D4 +IsMonster__0231A9D4: ; 0x0231A9D4 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__0231A9D4 + + arm_func_start ov29_0231A9F8 +ov29_0231A9F8: ; 0x0231A9F8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x34 + mov r7, r0 + mov r1, #0 + mov r2, #0x15 + ldr r5, [r7, #0xb4] + bl ov29_022EB54C + mov r1, r0 + ldrb r0, [r1] + ldrh r4, [r1] + ldrh r3, [r1, #2] + ldrh r2, [r1, #4] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + strh r4, [sp, #0x18] + strh r3, [sp, #0x1a] + strh r2, [sp, #0x1c] + tst r0, #0xff + beq _0231AA60 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _0231AC90 ; =0x00000DF8 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _0231AC88 +_0231AA60: + mov r0, r7 + bl ov29_022FBAB4 + add r2, sp, #0x1e + add r3, r5, #0x4a + mov r1, #0xa +_0231AA74: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0231AA74 + ldr r0, _0231AC94 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_023440AC + cmp r0, #0 + mov r4, #1 + bne _0231AAB4 + ldr r1, _0231AC98 ; =0x00000DF9 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + b _0231AC24 +_0231AAB4: + ldrsh r6, [sp, #0x1c] + mov r0, r6 + bl GetItemMoveId16 + mov r1, r0 + add r0, sp, #0x10 + bl InitMove + ldrb r0, [r5, #7] + cmp r0, #0 + bne _0231AB18 + mov r2, r4 + mov r3, #0xa + strb r2, [sp, #8] + add r0, sp, #8 + mov r1, r7 + add r2, r5, #0x124 + str r3, [sp, #0xc] + bl AiConsiderMove + ldrb r0, [sp, #8] + cmp r0, #0 + beq _0231AB18 + ldrb r1, [sp, #9] + mov r0, r7 + and r1, r1, #7 + strb r1, [r5, #0x4c] + bl UpdateAiTargetPos +_0231AB18: + ldrb r0, [r5, #0xd0] + cmp r0, #1 + bne _0231AB48 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231AC9C ; =0x00000DFA + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r4, #0 + b _0231ABA0 +_0231AB48: + cmp r0, #7 + bne _0231AB74 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231ACA0 ; =0x00000DFB + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r4, #0 + b _0231ABA0 +_0231AB74: + ldrb r0, [r5, #0xbf] + cmp r0, #4 + bne _0231ABA0 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231ACA4 ; =0x00000DFC + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r4, #0 +_0231ABA0: + cmp r4, #0 + beq _0231AC20 + cmp r6, #0x138 + ldrne r0, _0231ACA8 ; =0x00000141 + mov r1, #0 + cmpne r6, r0 + bne _0231AC00 + mov r0, r7 + mov r2, #0x7a + bl ov29_022EB60C + ldrb r2, [sp, #0x10] + mov r0, #0xa + mov r1, #0 + orr r2, r2, #0xc + strb r2, [sp, #0x10] + strb r0, [sp, #0x16] + add r4, sp, #0x10 + mov r0, r7 + mov r2, r6 + mov r3, r1 + stmia sp, {r1, r4} + bl ov29_02322374 + mov r4, #0 + b _0231AC24 +_0231AC00: + add r4, sp, #0x10 + mov r0, r7 + mov r2, r6 + mov r3, r1 + stmia sp, {r1, r4} + bl ov29_02322374 + mov r4, r0 + b _0231AC24 +_0231AC20: + mov r4, #0 +_0231AC24: + mov r0, r7 + bl EntityIsValid__02319F8C + cmp r0, #0 + beq _0231AC60 + cmp r4, #0 + beq _0231AC4C + mov r0, r7 + mov r1, #0 + mov r2, #0x7a + bl ov29_022EB60C +_0231AC4C: + mov r0, r7 + bl EnemyEvolution + mov r0, r7 + bl ov29_02321274 + b _0231AC74 +_0231AC60: + cmp r4, #0 + beq _0231AC74 + add r0, sp, #0x1e + mov r1, #0 + bl ov29_022EB4E8 +_0231AC74: + bl IsFloorOver + cmp r0, #0 + bne _0231AC88 + mov r0, r7 + bl TryActivateTruant +_0231AC88: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0231AC90: .word 0x00000DF8 +_0231AC94: .word 0x02353538 +_0231AC98: .word 0x00000DF9 +_0231AC9C: .word 0x00000DFA +_0231ACA0: .word 0x00000DFB +_0231ACA4: .word 0x00000DFC +_0231ACA8: .word 0x00000141 + arm_func_end ov29_0231A9F8 + + arm_func_start GetEntityMoveTargetAndRange +GetEntityMoveTargetAndRange: ; 0x0231ACAC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldrh r1, [r5, #4] + mov r4, r2 + mov r6, r0 + cmp r1, #0xed + cmpeq r4, #0 + bne _0231ACE0 + mov r1, #0xe + bl MonsterIsType + cmp r0, #0 + moveq r0, #0x73 + ldmeqia sp!, {r4, r5, r6, pc} +_0231ACE0: + mov r0, r5 + mov r1, r4 + bl GetMoveTargetAndRange + mov r4, r0 + mov r0, r5 + bl IsMoveRangeString19 + cmp r0, #0 + beq _0231AD2C + mov r0, r6 + mov r1, #0x55 + bl ExclusiveItemEffectIsActive__0231A87C + cmp r0, #0 + beq _0231AD2C + ldr r0, _0231AD34 ; =0x00000273 + cmp r4, r0 + subeq r4, r0, #0x12 + beq _0231AD2C + cmp r4, #0x73 + moveq r4, #0x61 +_0231AD2C: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231AD34: .word 0x00000273 + arm_func_end GetEntityMoveTargetAndRange + + arm_func_start ov29_0231AD38 +ov29_0231AD38: ; 0x0231AD38 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r2, #1 + bl GetEntityMoveTargetAndRange + and r4, r0, #0xf + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl GetEntityMoveTargetAndRange + cmp r4, #3 + and r0, r0, #0xf + cmpne r4, #1 + cmpne r0, #4 + cmpne r0, #3 + cmpne r0, #1 + cmpne r0, #6 + beq _0231ADA0 + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x70 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} +_0231ADA0: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0231AD38 + + arm_func_start ov29_0231ADA8 +ov29_0231ADA8: ; 0x0231ADA8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r1, [r0, #0xb4] + mov r0, #0 + mov r5, r0 + add r4, r1, #0x124 + mov ip, r0 + mov lr, #1 + add r2, sp, #0 +_0231ADCC: + ldrb r1, [r4, r5, lsl #3] + add r3, r4, r5, lsl #3 + tst r1, #1 + movne r1, lr + moveq r1, ip + tst r1, #0xff + beq _0231AE00 + ldrh r3, [r3, #4] + add r1, r0, #1 + mov r0, r0, lsl #1 + mov r1, r1, lsl #0x10 + strh r3, [r2, r0] + mov r0, r1, lsr #0x10 +_0231AE00: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, lsr #0x10 + cmp r5, #4 + blo _0231ADCC + cmp r0, #0 + moveq r0, #0 + beq _0231AE34 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + add r1, sp, #0 + mov r0, r0, lsr #0xf + ldrh r0, [r1, r0] +_0231AE34: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0231ADA8 + + arm_func_start ov29_0231AE3C +ov29_0231AE3C: ; 0x0231AE3C + stmdb sp!, {r3, lr} + ldr ip, [r0, #0xb4] + mov r0, #0 + mov lr, r0 + mov r2, r0 + mov r3, #1 +_0231AE54: + add r1, ip, lr, lsl #3 + ldrb r1, [r1, #0x124] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + add r1, lr, #1 + addne r0, r0, #1 + mov r1, r1, lsl #0x10 + movne r0, r0, lsl #0x10 + mov lr, r1, lsr #0x10 + movne r0, r0, lsr #0x10 + cmp lr, #4 + blo _0231AE54 + ldmia sp!, {r3, pc} + arm_func_end ov29_0231AE3C + + arm_func_start ov29_0231AE90 +ov29_0231AE90: ; 0x0231AE90 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl IsMonster__0231A9D4 + cmp r0, #0 + ldrne r4, [r4, #0xb4] + ldrnesh r0, [r4, #0x66] + cmpne r0, #0 + beq _0231AF00 + mov ip, #0 + ldr r3, _0231AF08 ; =0x022C5130 + mov lr, ip + mov r1, #6 +_0231AEC0: + smulbb r5, lr, r1 + ldrsh r2, [r3, r5] + cmp r2, #0 + beq _0231AEF0 + ldrsh r0, [r4, #0x66] + cmp r0, r2 + moveq ip, #1 + beq _0231AEF0 + add r0, lr, #1 + mov r0, r0, lsl #0x10 + mov lr, r0, asr #0x10 + b _0231AEC0 +_0231AEF0: + cmp ip, #0 + ldrne r0, _0231AF08 ; =0x022C5130 + addne r0, r0, r5 + ldmneia sp!, {r3, r4, r5, pc} +_0231AF00: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231AF08: .word 0x022C5130 + arm_func_end ov29_0231AE90 + + arm_func_start ov29_0231AF0C +ov29_0231AF0C: ; 0x0231AF0C + stmdb sp!, {r3, lr} + bl GetApparentWeather + ldr r1, _0231AF20 ; =0x022C48DC + ldrb r0, [r1, r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0231AF20: .word 0x022C48DC + arm_func_end ov29_0231AF0C + + arm_func_start ov29_0231AF24 +ov29_0231AF24: ; 0x0231AF24 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl IsMonster__0231A9D4 + cmp r0, #0 + beq _0231AFAC + mov r0, r6 + mov r1, r5 + bl ov29_022FB9E0 + mov r1, r0 + cmp r4, #0 + beq _0231AF98 + cmp r1, #0 + bge _0231AF98 + ldr r4, [r6, #0xb4] + mov r1, #0 + mov r2, r1 + add r0, r4, #0x4a + bl SetActionUseMoveAi + mov r2, #1 + strb r2, [r4, #0x124] + add r0, r4, #0x100 + mov r1, #0 + strh r1, [r0, #0x26] + strh r5, [r0, #0x28] + strb r2, [r4, #0x12a] + strb r1, [r4, #0x12b] +_0231AF98: + mov r3, #0 + mov r0, r6 + mov r2, #1 + str r3, [sp] + bl ov29_0232145C +_0231AFAC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0231AF24 + + arm_func_start ov29_0231AFB4 +ov29_0231AFB4: ; 0x0231AFB4 + stmdb sp!, {r4, lr} + mov ip, #0 + ldr r1, _0231B004 ; =0x02353538 + mov r2, ip + mov r3, ip +_0231AFC8: + ldr r0, [r1] + mov r4, r3 + add r0, r0, #0xe4 + add r0, r0, #0x19800 + add lr, r0, ip, lsl #4 +_0231AFDC: + str r2, [lr, r4, lsl #3] + add r0, lr, r4, lsl #3 + add r4, r4, #1 + str r2, [r0, #4] + cmp r4, #2 + blt _0231AFDC + add ip, ip, #1 + cmp ip, #2 + blt _0231AFC8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0231B004: .word 0x02353538 + arm_func_end ov29_0231AFB4 + + arm_func_start ov29_0231B008 +ov29_0231B008: ; 0x0231B008 + stmdb sp!, {r3, r4, r5, lr} + mov lr, #0 + ldr r1, _0231B05C ; =0x02353538 + mov r3, lr + mov r2, #2 + mov ip, lr +_0231B020: + ldr r0, [r1] + mov r5, ip + add r0, r0, #0xe4 + add r0, r0, #0x19800 + add r4, r0, lr, lsl #4 +_0231B034: + str r3, [r4, r5, lsl #3] + add r0, r4, r5, lsl #3 + add r5, r5, #1 + str r2, [r0, #4] + cmp r5, #2 + blt _0231B034 + add lr, lr, #1 + cmp lr, #2 + blt _0231B020 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231B05C: .word 0x02353538 + arm_func_end ov29_0231B008 + + arm_func_start ov29_0231B060 +ov29_0231B060: ; 0x0231B060 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r2, _0231B0A0 ; =0x00000C3B + mov ip, #0x66 + mov r4, r0 + mov r1, #0 + mov r3, #2 + str ip, [sp] + bl ov29_0234B250 + mov r0, r4 + mov r1, r4 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0231B0A0: .word 0x00000C3B + arm_func_end ov29_0231B060 + + arm_func_start ov29_0231B0A4 +ov29_0231B0A4: ; 0x0231B0A4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r1 + bl EntityIsValid__0231B194 + cmp r0, #0 + beq _0231B184 + mov r0, r4 + bl EntityIsValid__0231B194 + cmp r0, #0 + beq _0231B184 + ldr r0, [r5, #0xb4] + ldr r6, [r4, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + bne _0231B184 + bl ov29_0232E80C + cmp r4, r0 + ldrneb r0, [r6, #6] + cmpne r0, #0 + beq _0231B184 + ldrsh r0, [r6, #0x66] + cmp r0, #0 + bne _0231B150 + ldrsh r0, [r6, #2] + add r1, sp, #0 + bl GetTreasureBoxChances + ldrsh r0, [sp, #4] + cmp r0, #0 + ldrlesh r0, [sp, #6] + cmple r0, #0 + ble _0231B184 + mov r0, r5 + bl ov29_022E4110 + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231B18C ; =0x00000C3D + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231B184 +_0231B150: + mov r0, r5 + bl ov29_022E4110 + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + add r1, r6, #0x62 + mov r0, #2 + bl ov29_02344B44 + ldr r2, _0231B190 ; =0x00000C3C + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_0231B184: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231B18C: .word 0x00000C3D +_0231B190: .word 0x00000C3C + arm_func_end ov29_0231B0A4 diff --git a/asm/overlay_29_0231B1B8.s b/asm/overlay_29_0231B1B8.s new file mode 100644 index 00000000..a240ed13 --- /dev/null +++ b/asm/overlay_29_0231B1B8.s @@ -0,0 +1,1877 @@ + .include "asm/macros.inc" + .include "overlay_29_0231B1B8.inc" + + .text + + arm_func_start ov29_0231B1B8 +ov29_0231B1B8: ; 0x0231B1B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x50 + mov sl, r0 + ldr r0, [sl, #0xb4] + mov r6, #0 + ldrb r0, [r0, #6] + ldr r4, _0231B30C ; =0x02353538 + mov r7, #0 + cmp r0, #0 + moveq r0, #1 + movne r0, r6 + and sb, r0, #0xff + add r5, sp, #0 +_0231B1EC: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb78] + mov r0, r8 + bl IsMonster__0231B318 + cmp r0, #0 + beq _0231B240 + ldr r0, [r8, #0xb4] + cmp sb, #0 + ldrb r0, [r0, #6] + beq _0231B228 + cmp r0, #0 + beq _0231B240 + b _0231B230 +_0231B228: + cmp r0, #0 + bne _0231B240 +_0231B230: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + str r8, [r5, r6, lsl #2] + mov r6, r0, asr #0x10 +_0231B240: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x14 + blt _0231B1EC + mov r0, #2 + mov r1, #0x69 + bl ov29_0234B084 + ldr r0, _0231B310 ; =0x022C4530 + mov r8, #0 + ldrsh r7, [r0] + mov r4, #0x18 + ldr fp, _0231B314 ; =0x0000026E + add r5, sp, #0 + b _0231B2FC +_0231B27C: + ldr sb, [r5, r8, lsl #2] + cmp sb, #0 + beq _0231B2F0 + mov r0, sb + bl IsMonster__0231B318 + cmp r0, #0 + beq _0231B2F0 + mov r0, sl + mov r1, sb + bl ov29_022E28D4 + cmp r0, #0 + cmpne sl, sb + beq _0231B2F0 + mov r0, sb + bl ov29_023007A8 + cmp r0, #0 + beq _0231B2F0 + mov r0, sb + mov r1, r7 + mov r2, r4 + mov r3, fp + bl ov29_0230D11C + mov r0, sb + bl EntityIsValid__0231B194 + cmp r0, #0 + beq _0231B2F0 + mov r0, sl + mov r1, sb + bl ov29_02307BDC +_0231B2F0: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 +_0231B2FC: + cmp r8, r6 + blt _0231B27C + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231B30C: .word 0x02353538 +_0231B310: .word 0x022C4530 +_0231B314: .word 0x0000026E + arm_func_end ov29_0231B1B8 + + arm_func_start IsMonster__0231B318 +IsMonster__0231B318: ; 0x0231B318 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__0231B318 + + arm_func_start ov29_0231B33C +ov29_0231B33C: ; 0x0231B33C + stmdb sp!, {r4, lr} + ldr r4, [r0, #0xb4] + bl ov29_022E60E4 + ldr r0, _0231B360 ; =0x022C457C + mov r1, #2 + ldrsh r0, [r0] + strb r1, [r4, #0x104] + strb r0, [r4, #0x105] + ldmia sp!, {r4, pc} + .align 2, 0 +_0231B360: .word 0x022C457C + arm_func_end ov29_0231B33C + + arm_func_start ov29_0231B364 +ov29_0231B364: ; 0x0231B364 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0x70 + bl AbilityIsActive2 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0231B364 + + arm_func_start ov29_0231B39C +ov29_0231B39C: ; 0x0231B39C + mov ip, #0 + mov r3, ip +_0231B3A4: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + strb r3, [r0, ip, lsl #2] + add r2, r0, ip, lsl #2 + mov ip, r1, asr #0x10 + strh r3, [r2, #2] + cmp ip, #8 + blt _0231B3A4 + strh r3, [r0, #0x20] + bx lr + arm_func_end ov29_0231B39C + + arm_func_start ov29_0231B3CC +ov29_0231B3CC: ; 0x0231B3CC + ldrsh r3, [r0, #0x20] + cmp r3, #8 + bxge lr + mov r2, #1 + strb r2, [r0, r3, lsl #2] + ldrsh r2, [r0, #0x20] + add r2, r0, r2, lsl #2 + strh r1, [r2, #2] + ldrsh r1, [r0, #0x20] + add r1, r1, #1 + strh r1, [r0, #0x20] + bx lr + arm_func_end ov29_0231B3CC + + arm_func_start ov29_0231B3FC +ov29_0231B3FC: ; 0x0231B3FC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r0, r1 + bl FemaleToMaleForm + mov r4, r0 + mov r6, #0 + b _0231B44C +_0231B418: + ldrb r0, [r5, r6, lsl #2] + mov r1, r6, lsl #2 + cmp r0, #0 + beq _0231B440 + add r0, r5, r1 + ldrsh r0, [r0, #2] + bl FemaleToMaleForm + cmp r4, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} +_0231B440: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_0231B44C: + ldrsh r0, [r5, #0x20] + cmp r6, r0 + blt _0231B418 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0231B3FC + + arm_func_start ov29_0231B460 +ov29_0231B460: ; 0x0231B460 + stmdb sp!, {r3, lr} + ldr r0, _0231B48C ; =0x02353538 + ldr r2, [r0] + add r0, r2, #0x700 + ldrsh r1, [r0, #0xa8] + cmp r1, #0 + ldmeqia sp!, {r3, pc} + ldrsh r1, [r0, #0xa8] + add r0, r2, #0x7d0 + bl ov29_0231B3CC + ldmia sp!, {r3, pc} + .align 2, 0 +_0231B48C: .word 0x02353538 + arm_func_end ov29_0231B460 + + arm_func_start ov29_0231B490 +ov29_0231B490: ; 0x0231B490 + ldr r0, _0231B4A8 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x3000 + strb r1, [r0, #0xe3c] + bx lr + .align 2, 0 +_0231B4A8: .word 0x02353538 + arm_func_end ov29_0231B490 + + arm_func_start ov29_0231B4AC +ov29_0231B4AC: ; 0x0231B4AC + stmdb sp!, {r3, lr} + cmp r0, #0 + ldreq r0, _0231B4E8 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x3000 + ldreqb r0, [r0, #0xe3c] + ldmeqia sp!, {r3, pc} + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0231B4E8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsSkyExclusiveDungeon + ldmia sp!, {r3, pc} + .align 2, 0 +_0231B4E8: .word 0x02353538 + arm_func_end ov29_0231B4AC + + arm_func_start ov29_0231B4EC +ov29_0231B4EC: ; 0x0231B4EC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + ldr r7, [r8, #0xb4] + cmp r1, #1 + mov r6, #0 + ldrsh r0, [r7, #2] + bne _0231B548 + bl IsShaymin + cmp r0, #0 + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsh r4, [r7, #2] + ldr r0, _0231B680 ; =0x00000216 + cmp r4, r0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r1, [r7, #0xc4] + cmp r1, #1 + moveq r0, #2 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r5, r0, #1 + mov r6, #1 + b _0231B570 +_0231B548: + bl IsShaymin + cmp r0, #0 + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrsh r4, [r7, #2] + ldr r0, _0231B684 ; =0x00000217 + cmp r4, r0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + sub r5, r0, #1 +_0231B570: + ldrsh r0, [r7, #0xc] + bl GetActiveTeamMember + mov sb, r0 + cmp r6, #0 + beq _0231B5A0 + mov r0, r8 + mov r1, #0x2b8 + mov r2, #0 + bl ov29_022E3590 + mov r0, #0x21 + mov r1, #0x42 + bl ov29_022EA370 +_0231B5A0: + mov r0, #0 + bl ov29_022E9FD0 + mov r0, r4 + mov r1, r5 + bl ov29_022F75D4 + strh r5, [r7, #2] + ldrsh r0, [r7, #2] + strh r0, [r7, #4] + strh r0, [sb, #0xc] + strh r5, [r7, #2] + ldrsh r0, [r7, #2] + strh r0, [r7, #4] + ldr r4, [r8, #0xb4] + ldrsh r0, [r4, #4] + bl GetSpriteIndex__022F7388 + strh r0, [r8, #0xa8] + ldrb r0, [r4, #0xd8] + cmp r0, #2 + beq _0231B5F4 + add r0, r8, #0x2c + bl sub_0201CF80 +_0231B5F4: + mov r0, r8 + bl GetSleepAnimationId + mov r1, r0 + mov r0, r8 + bl ov29_02304830 + mov r0, r8 + bl ov29_02304BAC + mov r0, r8 + bl ov29_022F9194 + mov r0, #1 + bl ov29_022E9FD0 + ldr r0, _0231B684 ; =0x00000217 + cmp r5, r0 + ldreq r0, _0231B688 ; =0x02353538 + moveq r1, #1 + ldrne r0, _0231B688 ; =0x02353538 + movne r1, #0 + ldr r0, [r0] + add r0, r0, #0x3000 + strb r1, [r0, #0xe3c] + bl sub_020017EC + bl ov29_022E81F8 + mov r0, #1 + mov r1, #0x42 + bl ov29_022EA370 + cmp r6, #0 + beq _0231B678 + mov r0, r8 + bl ov29_022F04F0 + mov r0, #1 + bl ov29_022E38E0 + mov r0, r8 + bl ov29_022F0518 +_0231B678: + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231B680: .word 0x00000216 +_0231B684: .word 0x00000217 +_0231B688: .word 0x02353538 + arm_func_end ov29_0231B4EC + + arm_func_start ApplyItemEffect +ApplyItemEffect: ; 0x0231B68C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x5c + movs sb, r0 + mov sl, r2 + mov r8, r3 + ldr r7, [sp, #0x80] + ldr r6, [sp, #0x84] + beq _0231B840 + cmp r1, #0 + bne _0231B840 + mov r0, r7 + ldr r5, [r7, #0xb4] + mov r4, #0 + bl ov29_022FB9BC + cmp r0, #0 + beq _0231B6E4 + mov r0, r8 + mov r2, r6 + add r1, r7, #4 + mov r3, r4 + bl ov29_02345A3C + b _0231CBA4 +_0231B6E4: + ldrb r0, [r5, #6] + cmp r0, #0 + ldrsh r0, [r6, #4] + beq _0231B74C + bl GetItemCategoryVeneer + cmp r0, #0 + beq _0231B720 + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #2 + beq _0231B720 + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #1 + movne r4, #1 +_0231B720: + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #4 + bne _0231B768 + ldrsh r1, [r6, #4] + cmp r1, #0x190 + blt _0231B768 + ldr r0, _0231C6C0 ; =0x000001AB + cmp r1, r0 + movle r4, #0 + b _0231B768 +_0231B74C: + bl GetItemCategoryVeneer + cmp r0, #2 + beq _0231B768 + mov r0, r7 + mov r1, #2 + bl IqSkillIsEnabled + mov r4, r0 +_0231B768: + mov r0, r7 + bl ov29_02300B40 + cmp r0, #0 + movne r4, #0 + cmp r4, #0 + beq _0231B840 + ldrb r0, [r5, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0231B840 + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0231B7B0 + bl IsBagFull + cmp r0, #0 + bne _0231B840 +_0231B7B0: + ldrb r0, [r5, #9] + cmp r0, #1 + bne _0231B7D4 + mov r0, r8 + mov r2, r6 + add r1, r7, #4 + mov r3, #0 + bl ov29_02345A3C + b _0231CBA4 +_0231B7D4: + ldr r0, _0231C6C4 ; =0x00001317 + bl ov29_022EACCC + mov r1, r6 + mov r0, #0 + bl ov29_02344B44 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231C6C8 ; =0x00000BE6 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + ldrh r0, [r6] + strh r0, [r5, #0x62] + ldrh r0, [r6, #2] + strh r0, [r5, #0x64] + ldrh r0, [r6, #4] + strh r0, [r5, #0x66] + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0231B834 + mov r0, r5 + bl ov29_02346F14 +_0231B834: + mov r0, r7 + bl ov29_022F9EA0 + b _0231CBA4 +_0231B840: + cmp sb, #0 + beq _0231B860 + mov r0, r7 + mov r1, r6 + bl ov29_022E5A00 + mov r0, r8 + mov r1, r7 + bl ov29_0230D440 +_0231B860: + ldrb r0, [r6] + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0231B8E4 + mov r1, r6 + mov r0, #0 + bl ov29_02344B44 + ldr r2, _0231C6CC ; =0x00000BE7 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + cmp sb, #0 + beq _0231B8E4 + add r1, sp, #0x21 + ldr r0, _0231C6D0 ; =0x022C4574 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + mov r0, r8 + bl EnemyEvolution + b _0231CBA4 +_0231B8E4: + cmp sb, #0 + bne _0231B8F8 + mov r0, r7 + mov r1, r6 + bl ov29_022E5AE4 +_0231B8F8: + mov r0, r8 + mov r1, r6 + bl ov29_0230F9A4 + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #2 + bne _0231B92C + mov r3, #0 + mov r0, r8 + mov r1, r7 + mov r2, #5 + str r3, [sp] + bl ov29_02316BB0 +_0231B92C: + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #5 + beq _0231B94C + ldrsh r0, [r6, #4] + bl GetItemCategoryVeneer + cmp r0, #0xa + bne _0231B9A8 +_0231B94C: + cmp sb, #0 + beq _0231B994 + add r1, sp, #0x20 + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231B994: + ldr r2, _0231C6DC ; =0x00000BE8 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231B9A8: + ldrsh r0, [r6, #4] + cmp r0, #0x19c + bgt _0231BD6C + bge _0231CA60 + cmp r0, #0x194 + bgt _0231BD00 + bge _0231CA60 + cmp r0, #0x190 + bgt _0231BCD0 + bge _0231CA60 + cmp r0, #0xb6 + bgt _0231BCC0 + cmp r0, #0 + addge pc, pc, r0, lsl #2 + b _0231CABC +_0231B9E4: ; jump table + b _0231CABC ; case 0 + b _0231BE50 ; case 1 + b _0231BE88 ; case 2 + b _0231BEC0 ; case 3 + b _0231BEF8 ; case 4 + b _0231BF30 ; case 5 + b _0231BF68 ; case 6 + b _0231BFDC ; case 7 + b _0231BFA0 ; case 8 + b _0231C018 ; case 9 + b _0231C050 ; case 10 + b _0231CABC ; case 11 + b _0231CABC ; case 12 + b _0231CABC ; case 13 + b _0231CABC ; case 14 + b _0231CABC ; case 15 + b _0231CABC ; case 16 + b _0231CABC ; case 17 + b _0231CABC ; case 18 + b _0231CABC ; case 19 + b _0231CABC ; case 20 + b _0231CABC ; case 21 + b _0231CABC ; case 22 + b _0231CABC ; case 23 + b _0231CABC ; case 24 + b _0231CABC ; case 25 + b _0231CABC ; case 26 + b _0231CABC ; case 27 + b _0231CABC ; case 28 + b _0231CABC ; case 29 + b _0231CABC ; case 30 + b _0231CABC ; case 31 + b _0231CABC ; case 32 + b _0231CABC ; case 33 + b _0231CABC ; case 34 + b _0231CABC ; case 35 + b _0231CABC ; case 36 + b _0231CABC ; case 37 + b _0231CABC ; case 38 + b _0231CABC ; case 39 + b _0231CABC ; case 40 + b _0231CABC ; case 41 + b _0231CABC ; case 42 + b _0231CABC ; case 43 + b _0231CABC ; case 44 + b _0231CABC ; case 45 + b _0231CABC ; case 46 + b _0231CABC ; case 47 + b _0231CABC ; case 48 + b _0231CABC ; case 49 + b _0231CABC ; case 50 + b _0231CABC ; case 51 + b _0231CABC ; case 52 + b _0231CABC ; case 53 + b _0231CABC ; case 54 + b _0231CABC ; case 55 + b _0231CABC ; case 56 + b _0231CABC ; case 57 + b _0231CABC ; case 58 + b _0231CABC ; case 59 + b _0231CABC ; case 60 + b _0231CABC ; case 61 + b _0231CABC ; case 62 + b _0231CABC ; case 63 + b _0231CABC ; case 64 + b _0231CABC ; case 65 + b _0231CABC ; case 66 + b _0231CABC ; case 67 + b _0231CABC ; case 68 + b _0231C08C ; case 69 + b _0231C0A4 ; case 70 + b _0231C0CC ; case 71 + b _0231C15C ; case 72 + b _0231CABC ; case 73 + b _0231C118 ; case 74 + b _0231C210 ; case 75 + b _0231C130 ; case 76 + b _0231C0F4 ; case 77 + b _0231C248 ; case 78 + b _0231C258 ; case 79 + b _0231C144 ; case 80 + b _0231C194 ; case 81 + b _0231C184 ; case 82 + b _0231C16C ; case 83 + b _0231C1BC ; case 84 + b _0231C234 ; case 85 + b _0231C1A4 ; case 86 + b _0231C278 ; case 87 + b _0231C268 ; case 88 + b _0231C1F4 ; case 89 + b _0231C1E4 ; case 90 + b _0231C224 ; case 91 + b _0231C304 ; case 92 + b _0231C31C ; case 93 + b _0231C338 ; case 94 + b _0231C348 ; case 95 + b _0231C360 ; case 96 + b _0231C370 ; case 97 + b _0231CABC ; case 98 + b _0231C28C ; case 99 + b _0231C2A4 ; case 100 + b _0231C2BC ; case 101 + b _0231C2D4 ; case 102 + b _0231C380 ; case 103 + b _0231C6B0 ; case 104 + b _0231CABC ; case 105 + b _0231C768 ; case 106 + b _0231C7A0 ; case 107 + b _0231C2EC ; case 108 + b _0231C394 ; case 109 + b _0231C3B4 ; case 110 + b _0231C3F4 ; case 111 + b _0231C3D4 ; case 112 + b _0231C5FC ; case 113 + b _0231C61C ; case 114 + b _0231C63C ; case 115 + b _0231C7B0 ; case 116 + b _0231C7C0 ; case 117 + b _0231C7FC ; case 118 + b _0231C404 ; case 119 + b _0231C420 ; case 120 + b _0231C43C ; case 121 + b _0231C458 ; case 122 + b _0231C474 ; case 123 + b _0231C490 ; case 124 + b _0231C4AC ; case 125 + b _0231C4C8 ; case 126 + b _0231C4E4 ; case 127 + b _0231C500 ; case 128 + b _0231C51C ; case 129 + b _0231C538 ; case 130 + b _0231C554 ; case 131 + b _0231C570 ; case 132 + b _0231C58C ; case 133 + b _0231C5A8 ; case 134 + b _0231C5C4 ; case 135 + b _0231C5E0 ; case 136 + b _0231C80C ; case 137 + b _0231CABC ; case 138 + b _0231CABC ; case 139 + b _0231CABC ; case 140 + b _0231CABC ; case 141 + b _0231CABC ; case 142 + b _0231CABC ; case 143 + b _0231CABC ; case 144 + b _0231CABC ; case 145 + b _0231CABC ; case 146 + b _0231CABC ; case 147 + b _0231CABC ; case 148 + b _0231CABC ; case 149 + b _0231CABC ; case 150 + b _0231CABC ; case 151 + b _0231CABC ; case 152 + b _0231CABC ; case 153 + b _0231CABC ; case 154 + b _0231CABC ; case 155 + b _0231CABC ; case 156 + b _0231CABC ; case 157 + b _0231CABC ; case 158 + b _0231CABC ; case 159 + b _0231CABC ; case 160 + b _0231CABC ; case 161 + b _0231CABC ; case 162 + b _0231CABC ; case 163 + b _0231CABC ; case 164 + b _0231CABC ; case 165 + b _0231CABC ; case 166 + b _0231C81C ; case 167 + b _0231C82C ; case 168 + b _0231C844 ; case 169 + b _0231C8B0 ; case 170 + b _0231C91C ; case 171 + b _0231C988 ; case 172 + b _0231CABC ; case 173 + b _0231CABC ; case 174 + b _0231CABC ; case 175 + b _0231CABC ; case 176 + b _0231CABC ; case 177 + b _0231CABC ; case 178 + b _0231CA50 ; case 179 + b _0231C9F4 ; case 180 + b _0231CABC ; case 181 + b _0231C65C ; case 182 +_0231BCC0: + ldr r1, _0231C6E0 ; =0x0000016B + cmp r0, r1 + beq _0231CB14 + b _0231CABC +_0231BCD0: + ldr r1, _0231C6E4 ; =0x00000192 + cmp r0, r1 + bgt _0231BCF0 + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BCF0: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BD00: + cmp r0, #0x198 + bgt _0231BD3C + bge _0231CA60 + ldr r1, _0231C6E8 ; =0x00000196 + cmp r0, r1 + bgt _0231BD2C + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BD2C: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BD3C: + ldr r1, _0231C6EC ; =0x0000019A + cmp r0, r1 + bgt _0231BD5C + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BD5C: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BD6C: + cmp r0, #0x1a4 + bgt _0231BDE4 + bge _0231CA60 + cmp r0, #0x1a0 + bgt _0231BDB4 + bge _0231CA60 + ldr r1, _0231C6F0 ; =0x0000019E + cmp r0, r1 + bgt _0231BDA4 + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BDA4: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BDB4: + ldr r1, _0231C6F4 ; =0x000001A2 + cmp r0, r1 + bgt _0231BDD4 + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BDD4: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BDE4: + cmp r0, #0x1a8 + bgt _0231BE20 + bge _0231CA60 + ldr r1, _0231C6F8 ; =0x000001A6 + cmp r0, r1 + bgt _0231BE10 + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BE10: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BE20: + ldr r1, _0231C6FC ; =0x000001AA + cmp r0, r1 + bgt _0231BE40 + bge _0231CA60 + sub r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BE40: + add r1, r1, #1 + cmp r0, r1 + beq _0231CA60 + b _0231CABC +_0231BE50: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x52 + bl InitMove + ldr r0, _0231C704 ; =0x022C4624 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #1 + add r2, sp, #0x52 + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BE88: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x4a + bl InitMove + ldr r0, _0231C708 ; =0x022C46E8 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #2 + add r2, sp, #0x4a + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BEC0: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x42 + bl InitMove + ldr r0, _0231C70C ; =0x022C46E4 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #3 + add r2, sp, #0x42 + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BEF8: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x3a + bl InitMove + ldr r0, _0231C710 ; =0x022C46E0 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #4 + add r2, sp, #0x3a + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BF30: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x32 + bl InitMove + ldr r0, _0231C714 ; =0x022C46DC + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #5 + add r2, sp, #0x32 + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BF68: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x2a + bl InitMove + ldr r0, _0231C718 ; =0x022C46D8 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #6 + add r2, sp, #0x2a + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231BFA0: + mov r4, #0 + str r4, [sp] + ldr r0, _0231C71C ; =0x022C46B4 + ldr r1, _0231C720 ; =0x0000024F + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231BFDC: + mov r4, #0 + str r4, [sp] + ldr r0, _0231C724 ; =0x022C46B8 + ldr r1, _0231C720 ; =0x0000024F + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C018: + ldr r1, _0231C700 ; =0x00000195 + add r0, sp, #0x22 + bl InitMove + ldr r0, _0231C728 ; =0x022C44D0 + mov r4, #0x100 + ldrsh r3, [r0] + str r4, [sp] + mov r4, #9 + add r2, sp, #0x22 + mov r0, r8 + mov r1, r7 + str r4, [sp, #4] + bl CalcDamageProjectile + b _0231CB14 +_0231C050: + mov r4, #0 + str r4, [sp] + ldr r0, _0231C72C ; =0x022C46BC + ldr r1, _0231C720 ; =0x0000024F + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C08C: + mov r0, r8 + mov r1, r7 + mov r3, sl + mov r2, #1 + bl ov29_02305C28 + b _0231CB14 +_0231C0A4: + ldr r1, _0231C730 ; =0x022C45EC + ldr r0, _0231C734 ; =0x022C44F4 + ldrsh r2, [r1] + ldrsh r3, [r0] + mov r4, #1 + mov r0, r8 + mov r1, r7 + str r4, [sp] + bl TryIncreaseHp + b _0231CB14 +_0231C0CC: + ldr r1, _0231C738 ; =0x022C4478 + ldr r0, _0231C73C ; =0x022C45F4 + ldrsh r2, [r1] + ldrsh r3, [r0] + mov r4, #1 + mov r0, r8 + mov r1, r7 + str r4, [sp] + bl TryIncreaseHp + b _0231CB14 +_0231C0F4: + ldr r0, _0231C740 ; =0x022C44F8 + mov r4, #1 + ldrsh r3, [r0] + mov r0, r8 + mov r1, r7 + mov r2, #0 + str r4, [sp] + bl TryIncreaseHp + b _0231CB14 +_0231C118: + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl ov29_023176CC + b _0231CB14 +_0231C130: + mov r0, r8 + mov r1, r7 + mov r2, #0 + bl ov29_02317844 + b _0231CB14 +_0231C144: + mov r0, r8 + mov r1, r7 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + b _0231CB14 +_0231C15C: + mov r0, r8 + mov r1, r7 + bl ov29_0231795C + b _0231CB14 +_0231C16C: + mov r0, r8 + mov r1, r7 + mov r2, #1 + mov r3, #0 + bl TryInflictConfusedStatus + b _0231CB14 +_0231C184: + mov r0, r8 + mov r1, r7 + bl ov29_0231CBEC + b _0231CB14 +_0231C194: + mov r0, r8 + mov r1, r7 + bl ov29_0231CC18 + b _0231CB14 +_0231C1A4: + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl TryWarp + b _0231CB14 +_0231C1BC: + ldr r1, _0231C744 ; =0x022C4720 + mov r0, r7 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r8 + mov r1, r7 + mov r3, #1 + bl TryInflictSleepStatus + b _0231CB14 +_0231C1E4: + mov r0, r8 + mov r1, r7 + bl TryInflictSleeplessStatus + b _0231CB14 +_0231C1F4: + mov r2, #1 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl ov29_02302A5C + b _0231CB14 +_0231C210: + mov r0, r8 + mov r1, r7 + mov r2, #1 + bl ov29_02302F88 + b _0231CB14 +_0231C224: + mov r0, r8 + mov r1, r7 + bl TryInflictPetrifiedStatus + b _0231CB14 +_0231C234: + ldr r2, _0231C748 ; =0x00000BE9 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C248: + mov r0, r8 + mov r1, r7 + bl ov29_0231CC4C + b _0231CB14 +_0231C258: + mov r0, r8 + mov r1, r7 + bl ov29_0231CC94 + b _0231CB14 +_0231C268: + mov r0, r8 + mov r1, r7 + bl ov29_0231CE68 + b _0231CB14 +_0231C278: + mov r0, r8 + mov r1, r7 + mov r2, sb + bl ov29_0231CF84 + b _0231CB14 +_0231C28C: + ldr r2, _0231C74C ; =0x000003E7 + mov r0, r8 + mov r1, r7 + mov r3, #0 + bl RestoreMovePP + b _0231CB14 +_0231C2A4: + ldr r1, _0231C750 ; =0x022C4420 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl ov29_02317F50 + b _0231CB14 +_0231C2BC: + ldr r1, _0231C754 ; =0x022C46CC + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl ov29_02317FE4 + b _0231CB14 +_0231C2D4: + ldr r1, _0231C758 ; =0x022C46C8 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl ov29_02318078 + b _0231CB14 +_0231C2EC: + ldr r1, _0231C75C ; =0x022C46C4 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + bl ov29_0231810C + b _0231CB14 +_0231C304: + mov r0, r8 + mov r1, r7 + mov r2, #1 + mov r3, #0 + bl ov29_02305C28 + b _0231CB14 +_0231C31C: + mov r3, #1 + mov r0, r8 + mov r1, r7 + mov r2, #5 + str r3, [sp] + bl ov29_02302A5C + b _0231CB14 +_0231C338: + mov r0, r8 + mov r1, r7 + bl ov29_0231CD80 + b _0231CB14 +_0231C348: + mov r0, r8 + mov r1, r7 + mov r2, #4 + mov r3, #0 + bl TryWarp + b _0231CB14 +_0231C360: + mov r0, r8 + mov r1, r7 + bl ViolentSeedBoost + b _0231CB14 +_0231C370: + mov r0, r8 + mov r1, r7 + bl ov29_0231657C + b _0231CB14 +_0231C380: + mov r0, r7 + mov r1, #0xa + mov r2, #0 + bl ov29_022FA144 + b _0231CB14 +_0231C394: + mov r4, #1 + mov r0, r8 + mov r1, r7 + mov r2, #0x32 + mov r3, #5 + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C3B4: + mov r4, #1 + mov r0, r8 + mov r1, r7 + mov r2, #0x64 + mov r3, #0xa + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C3D4: + mov r4, #1 + mov r0, r8 + mov r1, r7 + rsb r2, r4, #0x3e8 + mov r3, #0xa + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C3F4: + mov r0, r8 + mov r1, r7 + bl ov29_0231D534 + b _0231CB14 +_0231C404: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #1 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C420: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #2 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C43C: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #3 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C458: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #4 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C474: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #5 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C490: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #6 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C4AC: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #7 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C4C8: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #8 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C4E4: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #9 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C500: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xa + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C51C: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xb + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C538: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xc + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C554: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xd + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C570: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xe + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C58C: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xf + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C5A8: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0x10 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C5C4: + ldr r1, _0231C760 ; =0x020A1888 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0x11 + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C5E0: + ldr r1, _0231C764 ; =0x020A18B0 + mov r0, r8 + ldrsh r3, [r1] + mov r1, r7 + mov r2, #0xff + bl ApplyGummiBoostsDungeonMode + b _0231CB14 +_0231C5FC: + mov r4, #1 + mov r0, r8 + mov r1, r7 + mov r2, #0x32 + mov r3, #5 + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C61C: + mov r4, #1 + mov r0, r8 + mov r1, r7 + mov r2, #0xa + mov r3, #0 + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C63C: + mov r4, #1 + mov r0, r8 + mov r1, r7 + rsb r2, r4, #0x3e8 + mov r3, #0x32 + str r4, [sp] + bl ov29_02316BB0 + b _0231CB14 +_0231C65C: + cmp sb, #0 + beq _0231C6A4 + add r1, sp, #0x1f + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C6A4: + mov r0, r8 + bl ov29_02343CD8 + b _0231CB14 +_0231C6B0: + mov r0, r8 + mov r1, r7 + bl ov29_02317AF4 + b _0231CB14 + .align 2, 0 +_0231C6C0: .word 0x000001AB +_0231C6C4: .word 0x00001317 +_0231C6C8: .word 0x00000BE6 +_0231C6CC: .word 0x00000BE7 +_0231C6D0: .word 0x022C4574 +_0231C6D4: .word 0x00000256 +_0231C6D8: .word 0x022C4558 +_0231C6DC: .word 0x00000BE8 +_0231C6E0: .word 0x0000016B +_0231C6E4: .word 0x00000192 +_0231C6E8: .word 0x00000196 +_0231C6EC: .word 0x0000019A +_0231C6F0: .word 0x0000019E +_0231C6F4: .word 0x000001A2 +_0231C6F8: .word 0x000001A6 +_0231C6FC: .word 0x000001AA +_0231C700: .word 0x00000195 +_0231C704: .word 0x022C4624 +_0231C708: .word 0x022C46E8 +_0231C70C: .word 0x022C46E4 +_0231C710: .word 0x022C46E0 +_0231C714: .word 0x022C46DC +_0231C718: .word 0x022C46D8 +_0231C71C: .word 0x022C46B4 +_0231C720: .word 0x0000024F +_0231C724: .word 0x022C46B8 +_0231C728: .word 0x022C44D0 +_0231C72C: .word 0x022C46BC +_0231C730: .word 0x022C45EC +_0231C734: .word 0x022C44F4 +_0231C738: .word 0x022C4478 +_0231C73C: .word 0x022C45F4 +_0231C740: .word 0x022C44F8 +_0231C744: .word 0x022C4720 +_0231C748: .word 0x00000BE9 +_0231C74C: .word 0x000003E7 +_0231C750: .word 0x022C4420 +_0231C754: .word 0x022C46CC +_0231C758: .word 0x022C46C8 +_0231C75C: .word 0x022C46C4 +_0231C760: .word 0x020A1888 +_0231C764: .word 0x020A18B0 +_0231C768: + mov r0, r8 + mov r1, r7 + bl ov29_02317A0C + cmp r0, #0 + bne _0231CB14 + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CBAC ; =0x00000C75 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C7A0: + mov r0, r8 + mov r1, r7 + bl ov29_0231D74C + b _0231CB14 +_0231C7B0: + mov r0, r8 + mov r1, r7 + bl ov29_0231D680 + b _0231CB14 +_0231C7C0: + mov r4, #0 + str r4, [sp] + ldr r0, _0231CBB0 ; =0x022C4438 + str r4, [sp, #4] + mov r1, #0x270 + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C7FC: + mov r0, r8 + mov r1, r7 + bl ov29_0231D6E0 + b _0231CB14 +_0231C80C: + mov r0, r8 + mov r1, r7 + bl ov29_0231D7C0 + b _0231CB14 +_0231C81C: + mov r0, r8 + mov r1, r7 + bl ov29_0231D838 + b _0231CB14 +_0231C82C: + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl ov29_023176CC + b _0231CB14 +_0231C844: + cmp sb, #0 + beq _0231C88C + add r1, sp, #0x1e + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C88C: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CBB4 ; =0x00000C67 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C8B0: + cmp sb, #0 + beq _0231C8F8 + add r1, sp, #0x1d + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C8F8: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CBB4 ; =0x00000C67 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C91C: + cmp sb, #0 + beq _0231C964 + add r1, sp, #0x1c + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C964: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CBB4 ; =0x00000C67 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C988: + cmp sb, #0 + beq _0231C9D0 + add r1, sp, #0x1b + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231C9D0: + mov r0, #0 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CBB4 ; =0x00000C67 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231C9F4: + cmp sb, #0 + beq _0231CA3C + add r1, sp, #0x1a + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231CA3C: + ldr r2, _0231CBB8 ; =0x00000C76 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231CA50: + mov r0, r8 + mov r1, r7 + bl ov29_0231D9C0 + b _0231CB14 +_0231CA60: + cmp sb, #0 + beq _0231CAA8 + add r1, sp, #0x19 + ldr r0, _0231CBBC ; =0x022C44EC + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231CAA8: + ldr r2, _0231C6DC ; =0x00000BE8 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CB14 +_0231CABC: + cmp sb, #0 + beq _0231CB04 + add r1, sp, #0x18 + ldr r0, _0231C6D8 ; =0x022C4558 + str r1, [sp] + mov r4, #0 + ldrsh r2, [r0] + ldr r1, _0231C6D4 ; =0x00000256 + str r4, [sp, #4] + str r1, [sp, #8] + str r4, [sp, #0xc] + str r4, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r3, #1 + str r4, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231CB14 +_0231CB04: + ldr r2, _0231C6DC ; =0x00000BE8 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_0231CB14: + mov r0, r7 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + beq _0231CB9C + ldr r1, [r7, #0xb4] + ldrsh r4, [r6, #4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + bne _0231CB48 + add r0, r1, #0x228 + mov r1, #0x5d + bl ExclusiveItemEffectFlagTest +_0231CB48: + cmp r0, #0 + beq _0231CB9C + ldr r0, _0231CBC0 ; =0x022C4EB8 + b _0231CB90 +_0231CB58: + cmp r4, r1 + bne _0231CB8C + mov r0, #0xa + bl ov29_0234BA54 + ldr r0, _0231CBC4 ; =0x022C4864 + mov r4, #1 + ldr r2, [r0] + mov r0, r8 + mov r1, r7 + mov r3, #0 + str r4, [sp] + bl TryIncreaseHp + b _0231CB9C +_0231CB8C: + add r0, r0, #2 +_0231CB90: + ldrsh r1, [r0] + cmp r1, #0 + bne _0231CB58 +_0231CB9C: + mov r0, r8 + bl EnemyEvolution +_0231CBA4: + add sp, sp, #0x5c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0231CBAC: .word 0x00000C75 +_0231CBB0: .word 0x022C4438 +_0231CBB4: .word 0x00000C67 +_0231CBB8: .word 0x00000C76 +_0231CBBC: .word 0x022C44EC +_0231CBC0: .word 0x022C4EB8 +_0231CBC4: .word 0x022C4864 + arm_func_end ApplyItemEffect diff --git a/asm/overlay_29_0231CBEC.s b/asm/overlay_29_0231CBEC.s new file mode 100644 index 00000000..ef4e1dfd --- /dev/null +++ b/asm/overlay_29_0231CBEC.s @@ -0,0 +1,2481 @@ + .include "asm/macros.inc" + .include "overlay_29_0231CBEC.inc" + + .text + + arm_func_start ov29_0231CBEC +ov29_0231CBEC: ; 0x0231CBEC + stmdb sp!, {r3, lr} + ldr r2, [r1, #0xb4] + ldrb r2, [r2, #0xbf] + cmp r2, #4 + bne _0231CC08 + bl ov29_023061A8 + ldmia sp!, {r3, pc} +_0231CC08: + ldr r2, _0231CC14 ; =0x00000BE9 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, pc} + .align 2, 0 +_0231CC14: .word 0x00000BE9 + arm_func_end ov29_0231CBEC + + arm_func_start ov29_0231CC18 +ov29_0231CC18: ; 0x0231CC18 + stmdb sp!, {r3, lr} + ldr r2, [r1, #0xb4] + ldrb r2, [r2, #0xbf] + add r2, r2, #0xfe + and r2, r2, #0xff + cmp r2, #1 + bhi _0231CC3C + bl ov29_023061A8 + ldmia sp!, {r3, pc} +_0231CC3C: + ldr r2, _0231CC48 ; =0x00000BE9 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, pc} + .align 2, 0 +_0231CC48: .word 0x00000BE9 + arm_func_end ov29_0231CC18 + + arm_func_start ov29_0231CC4C +ov29_0231CC4C: ; 0x0231CC4C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr r2, [r4, #0xb4] + mov r5, r0 + ldrb r2, [r2, #0xbf] + cmp r2, #1 + bne _0231CC70 + bl ov29_023061A8 + ldmia sp!, {r3, r4, r5, pc} +_0231CC70: + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231CC90 ; =0x00000BEA + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231CC90: .word 0x00000BEA + arm_func_end ov29_0231CC4C + + arm_func_start ov29_0231CC94 +ov29_0231CC94: ; 0x0231CC94 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r4, [r5, #0xb4] + mov r6, r0 + ldrb r2, [r4, #7] + cmp r2, #0 + beq _0231CCC4 + mov r2, #0 + mov r3, #5 + bl ov29_023168D8 + b _0231CD6C +_0231CCC4: + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, #0x12 + bl IqSkillIsEnabled + cmp r0, #0 + beq _0231CCF8 + ldr r2, _0231CD74 ; =0x00000BEB + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CD6C +_0231CCF8: + add r0, r4, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + beq _0231CD5C + mov r0, #0 + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r0, [sp] + add r3, r4, #0x100 + ldrh r4, [sp, #2] + strh r0, [r3, #0x46] + ldr r2, _0231CD78 ; =0x00000BEC + mov r0, r6 + mov r1, r5 + strh r4, [r3, #0x48] + bl LogMessageByIdWithPopupCheckUserTarget + b _0231CD6C +_0231CD5C: + ldr r2, _0231CD7C ; =0x00000BED + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0231CD6C: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0231CD74: .word 0x00000BEB +_0231CD78: .word 0x00000BEC +_0231CD7C: .word 0x00000BED + arm_func_end ov29_0231CC94 + + arm_func_start ov29_0231CD80 +ov29_0231CD80: ; 0x0231CD80 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + ldr r1, _0231CE10 ; =0x023529AC + ldr ip, [r4, #0xb4] + ldrh r3, [r1] + ldrh r2, [r1, #2] + ldrsh r1, [ip, #0x28] + mov r5, r0 + ldrsh r0, [ip, #0x2a] + mov ip, #1 + strh r3, [sp, #8] + cmp r1, #0 + strgth r1, [sp, #8] + str ip, [sp] + strh r2, [sp, #0xa] + cmp r0, #0 + strgth r0, [sp, #0xa] + ldr r0, _0231CE14 ; =0x02352AEC + ldrsh r3, [sp, #8] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerDefensiveStat + ldr r0, _0231CE18 ; =0x02352AE8 + mov ip, #1 + ldr r2, [r0] + str ip, [sp] + ldrsh r3, [sp, #0xa] + mov r0, r5 + mov r1, r4 + str ip, [sp, #4] + bl LowerDefensiveStat + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0231CE10: .word 0x023529AC +_0231CE14: .word 0x02352AEC +_0231CE18: .word 0x02352AE8 + arm_func_end ov29_0231CD80 + + arm_func_start ViolentSeedBoost +ViolentSeedBoost: ; 0x0231CE1C + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r4, [r5, #0xb4] + ldr r2, _0231CE60 ; =0x02352AEC + ldrsh r3, [r4, #0x24] + ldr r2, [r2] + mov r6, r0 + rsb r3, r3, #0x14 + bl BoostOffensiveStat + ldrsh r3, [r4, #0x26] + ldr r1, _0231CE64 ; =0x02352AE8 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + rsb r3, r3, #0x14 + bl BoostOffensiveStat + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231CE60: .word 0x02352AEC +_0231CE64: .word 0x02352AE8 + arm_func_end ViolentSeedBoost + + arm_func_start ov29_0231CE68 +ov29_0231CE68: ; 0x0231CE68 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r0, #0x64 + ldr r6, [r8, #0xb4] + mov r4, #0 + mov r5, #1 + bl DungeonRandInt + ldr r1, _0231CF78 ; =0x022C46C0 + mov ip, #0 + ldrsh r1, [r1] + add r3, r6, #0x124 + cmp r0, r1 + movlt r5, #3 + mov r0, ip + mov r1, #1 + b _0231CF10 +_0231CEAC: + ldrb r2, [r3, ip, lsl #3] + add r7, r3, ip, lsl #3 + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + beq _0231CF0C + mov r0, r7 + bl GetMoveBasePower + cmp r0, #0 + beq _0231CF18 + mov r0, r7 + ldrb r6, [r7, #7] + bl GetMoveMaxGinsengBoost + ldrb r1, [r7, #7] + add r2, r1, r5 + and r1, r2, #0xff + strb r2, [r7, #7] + cmp r1, r0 + strgeb r0, [r7, #7] + ldrb r0, [r7, #7] + cmp r6, r0 + movne r4, #1 + b _0231CF18 +_0231CF0C: + add ip, ip, #1 +_0231CF10: + cmp ip, #4 + blt _0231CEAC +_0231CF18: + cmp r4, #0 + beq _0231CF64 + ldrh r1, [r7, #4] + mov r0, #0 + bl ov29_0234B084 + mov r0, sb + mov r1, r8 + mov r2, #0xbf0 + bl LogMessageByIdWithPopupCheckUserTarget + cmp r5, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #0xa + mov r1, #0x40 + bl ov29_022EA370 + ldr r2, _0231CF7C ; =0x00000BEF + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231CF64: + ldr r2, _0231CF80 ; =0x00000BEE + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231CF78: .word 0x022C46C0 +_0231CF7C: .word 0x00000BEF +_0231CF80: .word 0x00000BEE + arm_func_end ov29_0231CE68 + + arm_func_start ov29_0231CF84 +ov29_0231CF84: ; 0x0231CF84 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + mov r6, r0 + mov r5, r1 + cmp r2, #0 + beq _0231D00C + ldr r7, [r5, #0xb4] + bl ov29_022E0880 + cmp r0, #0 + ldrne r0, _0231D0A8 ; =0x022C45D8 + ldreq r0, _0231D0AC ; =0x022C45D4 + ldrsh r4, [r0] + ldrb r0, [r7, #0xc4] + cmp r0, #1 + bne _0231CFD0 + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl EndFrozenClassStatus +_0231CFD0: + add r0, sp, #0x18 + str r0, [sp] + mov ip, #0 + ldr r0, _0231D0B0 ; =0x00000255 + str ip, [sp, #4] + str r0, [sp, #8] + str ip, [sp, #0xc] + str ip, [sp, #0x10] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #1 + str ip, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0231D0A0 +_0231D00C: + bl ov29_022E5BD8 + mov r0, r6 + bl ov29_022F8830 + movs r4, r0 + bne _0231D034 + ldr r2, _0231D0B4 ; =0x00000BF2 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231D0A0 +_0231D034: + ldr r7, [r4, #0xb4] + bl ov29_022E0880 + cmp r0, #0 + ldrne r0, _0231D0B8 ; =0x022C45DC + ldreq r0, _0231D0BC ; =0x022C44E8 + ldrsh r5, [r0] + ldrb r0, [r7, #0xc4] + cmp r0, #1 + bne _0231D068 + mov r0, r6 + mov r1, r4 + mov r2, #1 + bl EndFrozenClassStatus +_0231D068: + add r0, sp, #0x18 + str r0, [sp] + mov ip, #0 + ldr r0, _0231D0B0 ; =0x00000255 + str ip, [sp, #4] + str r0, [sp, #8] + str ip, [sp, #0xc] + str ip, [sp, #0x10] + mov r0, r6 + mov r1, r4 + mov r2, r5 + mov r3, #1 + str ip, [sp, #0x14] + bl CalcDamageFixedNoCategory +_0231D0A0: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0231D0A8: .word 0x022C45D8 +_0231D0AC: .word 0x022C45D4 +_0231D0B0: .word 0x00000255 +_0231D0B4: .word 0x00000BF2 +_0231D0B8: .word 0x022C45DC +_0231D0BC: .word 0x022C44E8 + arm_func_end ov29_0231CF84 + + arm_func_start ApplyGummiBoostsDungeonMode +ApplyGummiBoostsDungeonMode: ; 0x0231D0C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r4, #0 + mov sb, r1 + mov sl, r0 + mov r8, r3 + mov r3, r4 + mov r5, r4 + cmp r2, #0xff + ldr r7, [sb, #0xb4] + bne _0231D108 + ldr r1, _0231D468 ; =0x020A1890 + ldr r0, _0231D46C ; =0x020A1894 + ldrsh r1, [r1] + ldrsh r0, [r0] + add fp, r4, r1 + add r3, r4, r0 + b _0231D164 +_0231D108: + ldrb r1, [r7, #0x5e] + ldrb r6, [r7, #0x5f] + mov r0, #0x24 + smulbb r1, r1, r0 + ldr fp, _0231D470 ; =0x020A22B0 + smulbb r6, r6, r0 + add ip, fp, r1 + mov r0, r2, lsl #1 + add fp, fp, r6 + ldrsh ip, [r0, ip] + ldrsh r0, [r0, fp] + cmp ip, r0 + addgt fp, r4, ip + addle fp, r4, r0 + ldr ip, _0231D474 ; =0x020A2538 + mov r0, r2, lsl #1 + add r2, ip, r1 + add r1, ip, r6 + ldrsh r2, [r0, r2] + ldrsh r0, [r0, r1] + cmp r2, r0 + addgt r3, r3, r2 + addle r3, r3, r0 +_0231D164: + mov r6, #1 + mov r0, sl + mov r1, sb + mov r2, r3 + str r6, [sp] + mov r3, #0 + bl ov29_02316BB0 + ldrb r0, [r7, #6] + cmp r0, #0 + bne _0231D284 + mov r0, r7 + bl IsExperienceLocked + cmp r0, #0 + bne _0231D284 + ldrsh r6, [r7, #0xe] + add r2, r6, fp + strh r2, [r7, #0xe] + ldrsh r0, [r7, #0xe] + cmp r0, #1 + movlt r0, #1 + strlth r0, [r7, #0xe] + ldrsh r1, [r7, #0xe] + ldr r0, _0231D478 ; =0x000003E7 + cmp r1, r0 + strgth r0, [r7, #0xe] + ldrsh r1, [r7, #0xe] + cmp r6, r1 + bne _0231D1EC + ldr r2, _0231D47C ; =0x00000BF3 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r4, #1 + b _0231D284 +_0231D1EC: + sub r0, r2, r6 + cmp r0, #9 + movge r5, #0 + bge _0231D214 + cmp r0, #5 + movge r5, #1 + bge _0231D214 + cmp r0, #3 + movge r5, #2 + movlt r5, #3 +_0231D214: + sub r0, r1, r6 + cmp r0, #9 + movge fp, #0 + bge _0231D23C + cmp r0, #5 + movge fp, #1 + bge _0231D23C + cmp r0, #3 + movge fp, #2 + movlt fp, #3 +_0231D23C: + ldr r0, _0231D480 ; =0x023532D0 + mov r1, r5, lsl #1 + ldrh r2, [r0, r1] + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, _0231D484 ; =0x02353324 + mov r1, fp, lsl #1 + ldrh r2, [r0, r1] + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + mov r2, #0 + bl ov29_022FA02C + mov r0, sb + bl ov29_023021F0 +_0231D284: + cmp r5, #3 + beq _0231D460 + ldr r0, _0231D488 ; =0x022C44CC + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + beq _0231D460 + ldr r5, [sb, #0xb4] + ldr r0, _0231D48C ; =0x022C45E4 + ldrb r1, [r5, #0x1a] + ldrsh r0, [r0] + str r1, [sp, #4] + ldrb fp, [r5, #0x1b] + ldrb r6, [r5, #0x1c] + ldrb r7, [r5, #0x1d] + bl DungeonRandInt + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r4, #0 + cmpeq r0, #0xa + moveq r0, #0xf + beq _0231D2F4 + mov r0, #4 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + ldr r1, _0231D490 ; =0x023529B0 + mov r0, r0, lsr #0xf + ldrh r0, [r1, r0] +_0231D2F4: + tst r0, #1 + beq _0231D328 + ldrb r1, [r5, #0x1a] + cmp r1, #0xff + bge _0231D320 + add r1, r1, r8 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + cmp r1, #0xff + movgt r1, #0xff + b _0231D324 +_0231D320: + bic r0, r0, #1 +_0231D324: + strb r1, [r5, #0x1a] +_0231D328: + tst r0, #2 + beq _0231D35C + ldrb r1, [r5, #0x1b] + cmp r1, #0xff + bge _0231D354 + add r1, r1, r8 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + cmp r1, #0xff + movgt r1, #0xff + b _0231D358 +_0231D354: + bic r0, r0, #2 +_0231D358: + strb r1, [r5, #0x1b] +_0231D35C: + tst r0, #4 + beq _0231D390 + ldrb r1, [r5, #0x1c] + cmp r1, #0xff + bge _0231D388 + add r1, r1, r8 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + cmp r1, #0xff + movgt r1, #0xff + b _0231D38C +_0231D388: + bic r0, r0, #4 +_0231D38C: + strb r1, [r5, #0x1c] +_0231D390: + tst r0, #8 + beq _0231D3BC + ldrb r0, [r5, #0x1d] + cmp r0, #0xff + bge _0231D3B8 + add r0, r0, r8 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #0xff + movgt r0, #0xff +_0231D3B8: + strb r0, [r5, #0x1d] +_0231D3BC: + ldrb r1, [r5, #0x1a] + ldr r0, [sp, #4] + cmp r1, r0 + ble _0231D3E8 + sub r1, r1, r0 + mov r0, #0 + bl ov29_0234B09C + ldr r2, _0231D494 ; =0x00000BF7 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231D3E8: + ldrb r0, [r5, #0x1b] + cmp r0, fp + ble _0231D410 + sub r1, r0, fp + mov r0, #0 + bl ov29_0234B09C + ldr r2, _0231D498 ; =0x00000BF8 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231D410: + ldrb r0, [r5, #0x1c] + cmp r0, r6 + ble _0231D438 + sub r1, r0, r6 + mov r0, #0 + bl ov29_0234B09C + ldr r2, _0231D49C ; =0x00000BF9 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231D438: + ldrb r0, [r5, #0x1d] + cmp r0, r7 + ble _0231D460 + sub r1, r0, r7 + mov r0, #0 + bl ov29_0234B09C + ldr r2, _0231D4A0 ; =0x00000BFA + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0231D460: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231D468: .word 0x020A1890 +_0231D46C: .word 0x020A1894 +_0231D470: .word 0x020A22B0 +_0231D474: .word 0x020A2538 +_0231D478: .word 0x000003E7 +_0231D47C: .word 0x00000BF3 +_0231D480: .word 0x023532D0 +_0231D484: .word 0x02353324 +_0231D488: .word 0x022C44CC +_0231D48C: .word 0x022C45E4 +_0231D490: .word 0x023529B0 +_0231D494: .word 0x00000BF7 +_0231D498: .word 0x00000BF8 +_0231D49C: .word 0x00000BF9 +_0231D4A0: .word 0x00000BFA + arm_func_end ApplyGummiBoostsDungeonMode + + arm_func_start ov29_0231D4A4 +ov29_0231D4A4: ; 0x0231D4A4 + stmdb sp!, {r4, lr} + ldrb r2, [r1] + mov r4, r0 + ldr r0, [r4, #0xb4] + tst r2, #8 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + beq _0231D4E4 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _0231D52C ; =0x00000BE7 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r4, pc} +_0231D4E4: + ldrb r0, [r0, #0xf3] + cmp r0, #1 + bne _0231D524 + ldrsh r0, [r1, #4] + bl IsEdible + cmp r0, #0 + beq _0231D524 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231D530 ; =0x00000BF6 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r4, pc} +_0231D524: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_0231D52C: .word 0x00000BE7 +_0231D530: .word 0x00000BF6 + arm_func_end ov29_0231D4A4 + + arm_func_start ov29_0231D534 +ov29_0231D534: ; 0x0231D534 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov ip, #1 + mov r4, r1 + mov r2, #0x1e + mov r3, #0 + mov r5, r0 + str ip, [sp] + bl ov29_02316BB0 + mov r0, r4 + mov r1, #0x25 + bl IqSkillIsEnabled + cmp r0, #0 + bne _0231D580 + mov r0, r4 + mov r1, #0x59 + bl AbilityIsActive2 + cmp r0, #0 + beq _0231D598 +_0231D580: + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _0231D674 ; =0x022C4680 + ldrsh r1, [r1] + cmp r0, r1 + blt _0231D66C +_0231D598: + mov r0, #5 + bl DungeonRandInt + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0231D66C +_0231D5AC: ; jump table + b _0231D5C0 ; case 0 + b _0231D5D8 ; case 1 + b _0231D5EC ; case 2 + b _0231D60C ; case 3 + b _0231D624 ; case 4 +_0231D5C0: + mov r0, r5 + mov r1, r4 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus + b _0231D66C +_0231D5D8: + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl TryInflictShadowHoldStatus + b _0231D66C +_0231D5EC: + mov r2, #1 + mov ip, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + str ip, [sp] + bl TryInflictBurnStatus + b _0231D66C +_0231D60C: + mov r0, r5 + mov r1, r4 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus + b _0231D66C +_0231D624: + ldr r0, _0231D678 ; =0x02352AEC + mov ip, #1 + ldr r2, [r0] + str ip, [sp] + mov r0, r5 + mov r1, r4 + mov r3, #3 + str ip, [sp, #4] + bl LowerOffensiveStat + ldr r0, _0231D67C ; =0x02352AE8 + mov ip, #1 + str ip, [sp] + ldr r2, [r0] + mov r0, r5 + mov r1, r4 + mov r3, #3 + str ip, [sp, #4] + bl LowerOffensiveStat +_0231D66C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231D674: .word 0x022C4680 +_0231D678: .word 0x02352AEC +_0231D67C: .word 0x02352AE8 + arm_func_end ov29_0231D534 + + arm_func_start ov29_0231D680 +ov29_0231D680: ; 0x0231D680 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + ldr r2, [r5, #0xb4] + mov r6, r0 + ldrsh r4, [r2, #2] + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r4, #0x124 + cmpne r4, #0x37c + bne _0231D6C4 + ldr r2, _0231D6D8 ; =0x000003E7 + mov r0, r6 + mov r1, r5 + mov r3, #0 + bl RestoreMovePP + ldmia sp!, {r4, r5, r6, pc} +_0231D6C4: + ldr r2, _0231D6DC ; =0x00000C64 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0231D6D8: .word 0x000003E7 +_0231D6DC: .word 0x00000C64 + arm_func_end ov29_0231D680 + + arm_func_start ov29_0231D6E0 +ov29_0231D6E0: ; 0x0231D6E0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + mov r4, r1 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + bne _0231D730 + bl ov29_02338530 + cmp r0, #0 + bne _0231D730 + mov r0, #1 + bl ov29_02338548 + ldr r2, _0231D744 ; =0x00000C6E + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} +_0231D730: + ldr r2, _0231D748 ; =0x00000C6F + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231D744: .word 0x00000C6E +_0231D748: .word 0x00000C6F + arm_func_end ov29_0231D6E0 + + arm_func_start ov29_0231D74C +ov29_0231D74C: ; 0x0231D74C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + mov r4, r1 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0231D788 + ldr r1, _0231D7B8 ; =0x00000C68 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0231D7A0 +_0231D788: + ldr r2, _0231D7BC ; =0x00000C69 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0xa + bl ov29_0234BA54 +_0231D7A0: + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryWarp + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231D7B8: .word 0x00000C68 +_0231D7BC: .word 0x00000C69 + arm_func_end ov29_0231D74C + + arm_func_start ov29_0231D7C0 +ov29_0231D7C0: ; 0x0231D7C0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r1, [r5, #0xb4] + mov r6, r0 + ldrsh r0, [r1, #2] + bl FemaleToMaleForm + mov r1, #1 + mov r4, r0 + str r1, [sp] + ldr r0, _0231D830 ; =0x022C47E0 + mov r1, r5 + ldrsh r2, [r0] + ldrsh r3, [r0, #2] + mov r0, r6 + bl ov29_02316BB0 + cmp r4, #0x1e0 + cmpne r4, #0xb9 + bne _0231D828 + ldr r1, _0231D834 ; =0x022C47F0 + mov r0, r5 + ldr r1, [r1] + mov r2, #0 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ov29_022FA144 +_0231D828: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0231D830: .word 0x022C47E0 +_0231D834: .word 0x022C47F0 + arm_func_end ov29_0231D7C0 + + arm_func_start ov29_0231D838 +ov29_0231D838: ; 0x0231D838 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl ov29_022E272C + cmp r0, #0 + beq _0231D978 + mov r0, #1 + bl ov29_022EFB20 + bl ov29_022EAF20 + mov r4, r0 + mov r0, #3 + bl ov29_022EAF34 + ldr r1, _0231D9B0 ; =0x000003FF + mov r0, #4 + add r2, sp, #4 + mov r3, #0 + bl AllocAndLoadFileInPack + ldr r1, [sp, #4] + add r0, sp, #0 + bl HandleSir0Translation + mov r0, r5 + bl ov29_022F04F0 + ldrb r0, [r5, #0xaa] + mov r1, #1 + bl ov29_022DE47C + mov r0, #0 + bl ov29_022DD828 + ldr r0, [sp] + mov r1, #6 + bl ov29_022F085C + ldr r0, _0231D9B4 ; =0x00000C65 + bl ov29_022F0780 + bl ov29_022F05E4 + mov r0, #0 + bl ov29_022EFB84 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231D9B8 ; =0x00000C66 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0xa + bl ov29_0234BA54 + mov r0, r6 + mov r1, r5 + bl ov29_02319378 + ldr r0, _0231D9BC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd6] + bl ov29_022EAD00 + bl ov29_022EAE14 + mov r0, r4 + bl ov29_022EAF34 + bl ov29_02339CE8 + mov r0, #1 + bl ov29_02339FF4 + mov r0, #0 + bl GetApparentWeather + bl ov29_022DE620 + mov r1, #6 + bl ov29_022F085C + mov r0, r5 + bl ov29_022F0518 + add r0, sp, #4 + bl UnloadFile + ldrb r0, [r5, #0xaa] + mov r1, #0 + bl ov29_022DE47C + bl ov29_022DE608 + mov r0, #1 + bl ov29_022DD828 + mov r0, #0xa + mov r1, r0 + bl ov29_022EA370 + b _0231D9A8 +_0231D978: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231D9B8 ; =0x00000C66 + mov r0, r5 + bl LogMessageByIdWithPopup + mov r0, #0xa + bl ov29_0234BA54 + mov r0, r6 + mov r1, r5 + bl ov29_02319378 +_0231D9A8: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0231D9B0: .word 0x000003FF +_0231D9B4: .word 0x00000C65 +_0231D9B8: .word 0x00000C66 +_0231D9BC: .word 0x02353538 + arm_func_end ov29_0231D838 + + arm_func_start ov29_0231D9C0 +ov29_0231D9C0: ; 0x0231D9C0 + stmdb sp!, {r3, r4, r5, lr} + mov r0, #0x1a + mov r5, r1 + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _0231DA50 + mov r0, r5 + mov r1, #1 + bl ov29_0231B4EC + mov r4, r0 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r4, #3 + bne _0231DA10 + ldr r1, _0231DA70 ; =0x00000C71 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_0231DA10: + cmp r4, #1 + bne _0231DA28 + ldr r1, _0231DA74 ; =0x00000C72 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_0231DA28: + cmp r4, #2 + bne _0231DA40 + ldr r1, _0231DA78 ; =0x00000C74 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_0231DA40: + ldr r1, _0231DA7C ; =0x00000C73 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_0231DA50: + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0231DA7C ; =0x00000C73 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0231DA70: .word 0x00000C71 +_0231DA74: .word 0x00000C72 +_0231DA78: .word 0x00000C74 +_0231DA7C: .word 0x00000C73 + arm_func_end ov29_0231D9C0 + + arm_func_start ov29_0231DA80 +ov29_0231DA80: ; 0x0231DA80 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + mov sl, r0 + ldrsh r0, [sb, #4] + bl GetItemMoveId16 + ldrb r1, [sb] + mov r5, r0 + tst r1, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0231DAC8 + ldr r1, _0231DBE0 ; =0x00000BE7 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231DAC8: + ldrsh r0, [sb, #4] + bl IsHM + cmp r0, #0 + beq _0231DAF0 + ldr r1, _0231DBE4 ; =0x00000BF4 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231DAF0: + ldr fp, _0231DBE8 ; =0x02353538 + mov r4, #0 +_0231DAF8: + ldr r0, [fp] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + beq _0231DB70 + ldr r8, [r7, #0xb4] + mov r0, r5 + ldrsh r1, [r8, #2] + bl sub_02053D1C + mov r6, r0 + mov r0, r7 + mov r1, r5 + bl ov29_022FBA54 + cmp r0, #0 + mov r0, r7 + movne r6, #0 + bl ov29_023009A0 + cmp r0, #0 + ldrb r0, [r8, #0xbc] + movne r6, #0 + cmp r0, #7 + mov r0, r8 + moveq r6, #0 + bl IsExperienceLocked + cmp r0, #0 + movne r6, #0 + strb r6, [r8, #0x161] +_0231DB70: + add r4, r4, #1 + cmp r4, #4 + blt _0231DAF8 + mov r0, #0 + mov r2, r0 + mov r3, r0 + mov r1, #1 + bl ov31_023877EC + mov r4, r0 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r4 + mov r1, sb + bl ov29_022E5AE4 + mov r0, r4 + mov r1, r5 + bl ov29_023038D4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r2, _0231DBEC ; =0x00000141 + mov r0, sl + mov r1, #0 + bl ov29_022EB668 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231DBE0: .word 0x00000BE7 +_0231DBE4: .word 0x00000BF4 +_0231DBE8: .word 0x02353538 +_0231DBEC: .word 0x00000141 + arm_func_end ov29_0231DA80 + + arm_func_start ov29_0231DBF0 +ov29_0231DBF0: ; 0x0231DBF0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + ldrb r1, [sb] + mov sl, r0 + tst r1, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0231DC2C + ldr r1, _0231DD50 ; =0x00000BE7 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231DC2C: + ldr r4, _0231DD54 ; =0x02353538 + ldr r0, [r4] + ldrb r0, [r0, #0x75c] + cmp r0, #0 + bne _0231DC58 + ldr r1, _0231DD58 ; =0x00000BA4 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231DC58: + mov r5, #0 + mov fp, #1 +_0231DC60: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + beq _0231DCEC + ldr r8, [r7, #0xb4] + mov r6, fp + ldrsh r0, [r8, #0xc] + cmp r0, #4 + movge r6, #0 + bge _0231DCAC + bl GetActiveTeamMember + ldrsh r0, [r0, #8] + bl CheckTeamMemberIdx__022F9C34 + cmp r0, #0 + movne r6, #0 +_0231DCAC: + mov r0, r7 + mov r1, #0 + bl ov29_02300818 + cmp r0, #0 + ldrb r0, [r8, #0xbc] + movne r6, #0 + cmp r0, #7 + mov r0, r8 + moveq r6, #0 + bl IsExperienceLocked + cmp r0, #0 + ldrb r0, [r8, #7] + movne r6, #0 + cmp r0, #0 + movne r6, #0 + strb r6, [r8, #0x161] +_0231DCEC: + add r5, r5, #1 + cmp r5, #4 + blt _0231DC60 + mov r0, #0 + mov r1, #1 + mov r2, r0 + mov r3, r1 + bl ov31_023877EC + mov r4, r0 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl ov29_022E5AE4 + ldr r0, _0231DD54 ; =0x02353538 + ldr r2, _0231DD5C ; =0x00000142 + ldr r3, [r0] + mov r0, sl + mov r1, #0 + str r4, [r3, #0xc8] + bl ov29_022EB668 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231DD50: .word 0x00000BE7 +_0231DD54: .word 0x02353538 +_0231DD58: .word 0x00000BA4 +_0231DD5C: .word 0x00000142 + arm_func_end ov29_0231DBF0 + + arm_func_start ov29_0231DD60 +ov29_0231DD60: ; 0x0231DD60 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov sb, r1 + ldrb r1, [sb] + mov sl, r0 + mov r6, #0 + tst r1, #8 + movne r0, #1 + moveq r0, r6 + ldr r4, [sl, #0xb4] + tst r0, #0xff + beq _0231DDA8 + ldr r1, _0231E04C ; =0x00000BE7 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + mov r0, #0 + b _0231E044 +_0231DDA8: + ldr fp, _0231E050 ; =0x02353538 + mov r5, #0 +_0231DDB0: + ldr r0, [fp] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0231CBC8 + cmp r0, #0 + beq _0231DE0C + ldr r8, [r7, #0xb4] + mov r0, r7 + mov r1, #0 + mov r7, #1 + bl ov29_023008DC + cmp r0, #0 + ldrb r0, [r8, #0xbc] + movne r7, #0 + cmp r0, #7 + mov r0, r8 + moveq r7, #0 + bl IsExperienceLocked + cmp r0, #0 + movne r7, #0 + strb r7, [r8, #0x161] +_0231DE0C: + add r5, r5, #1 + cmp r5, #4 + blt _0231DDB0 + mov r0, #0 + mov r2, r0 + mov r3, r0 + mov r1, #1 + bl ov31_023877EC + str r0, [sp, #4] + bl EntityIsValid__0231CBC8 + cmp r0, #0 + moveq r0, #0 + beq _0231E044 + add r2, sp, #8 + add r3, r4, #0x4a + mov r1, #0xa +_0231DE4C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0231DE4C + mov fp, #1 + ldr r5, _0231E054 ; =0x0000016A + add r7, sp, #4 + mov r8, fp +_0231DE6C: + add r0, r4, #0x4a + bl ClearMonsterActionFields + ldrsh r0, [sb, #4] + mov r2, #0 + cmp r0, r5 + beq _0231DE9C + mov r0, r7 + mov r1, r8 + mov r3, r2 + str r8, [sp] + bl ov30_023853BC + b _0231DEB0 +_0231DE9C: + mov r0, r7 + mov r1, fp + mov r3, r2 + str fp, [sp] + bl ov30_023853E0 +_0231DEB0: + cmp r0, #0 + beq _0231DF1C + cmp r6, #0 + beq _0231DFF4 + ldrsh r0, [sb, #4] + ldr r1, _0231E058 ; =0x00000BF5 + cmp r0, r5 + bne _0231DF00 + mov r0, #1 + str r0, [sp] + mov r0, #0 + mov r2, #1 + mov r3, r0 + bl ov29_0234D518 + cmp r0, #1 + bne _0231DF1C + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + b _0231DFF4 +_0231DF00: + mov r0, #0 + mov r2, r0 + mov r3, r0 + str r0, [sp] + bl ov29_0234D518 + cmp r0, #1 + beq _0231DFF4 +_0231DF1C: + ldrh r0, [r4, #0x4a] + cmp r0, #0x1d + bne _0231DF34 + add r0, r4, #0x4a + bl ov30_02385FE0 + b _0231DE6C +_0231DF34: + cmp r0, #0x20 + bne _0231DF60 + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add r0, r4, #0x4a + bl ov31_02386204 + mov r0, #1 + bl ov29_022EB398 + mov r6, #1 + b _0231DE6C +_0231DF60: + cmp r0, #0x21 + bne _0231DF8C + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add r0, r4, #0x4a + mov r1, #0 + bl ov31_02386308 + mov r0, #1 + bl ov29_022EB398 + b _0231DE6C +_0231DF8C: + cmp r0, #0x1e + bne _0231DFB0 + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add r0, r4, #0x4a + mov r1, #0 + bl ov31_023860A4 + b _0231DE6C +_0231DFB0: + cmp r0, #0x33 + bne _0231DFD4 + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add r0, r4, #0x4a + mov r1, #0 + bl ov31_023860A4 + b _0231DE6C +_0231DFD4: + cmp r0, #0x1f + bne _0231DE6C + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add r0, r4, #0x4a + bl ov31_0238619C + b _0231DE6C +_0231DFF4: + cmp r6, #0 + beq _0231E038 + add r3, sp, #8 + add r2, r4, #0x4a + mov r1, #0xa +_0231E008: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0231E008 + mov r0, sl + mov r1, #0 + mov r2, #0x6e + bl ov29_022EB60C + add r0, r4, #0x4a + mov r1, #0x2c + bl SetMonsterActionFields + b _0231E040 +_0231E038: + mov r0, #1 + bl ov29_022EB398 +_0231E040: + mov r0, r6 +_0231E044: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231E04C: .word 0x00000BE7 +_0231E050: .word 0x02353538 +_0231E054: .word 0x0000016A +_0231E058: .word 0x00000BF5 + arm_func_end ov29_0231DD60 + + arm_func_start ov29_0231E05C +ov29_0231E05C: ; 0x0231E05C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r0 + tst r2, #1 + mov r4, #0 + movne r0, #1 + moveq r0, r4 + ldrsh r1, [r1, #4] + tst r2, #2 + and r5, r0, #0xff + movne r0, #1 + moveq r0, #0 + ldr r6, [r7, #0xb4] + and r0, r0, #0xff + cmp r1, #0xa7 + bgt _0231E2D0 + bge _0231E7DC + cmp r1, #0x89 + addls pc, pc, r1, lsl #2 + b _0231E8DC +_0231E0A8: ; jump table + b _0231E8DC ; case 0 + b _0231E2F0 ; case 1 + b _0231E2F0 ; case 2 + b _0231E2F0 ; case 3 + b _0231E2F0 ; case 4 + b _0231E2F0 ; case 5 + b _0231E2F0 ; case 6 + b _0231E2F0 ; case 7 + b _0231E2F0 ; case 8 + b _0231E2F0 ; case 9 + b _0231E2F0 ; case 10 + b _0231E8DC ; case 11 + b _0231E8DC ; case 12 + b _0231E8DC ; case 13 + b _0231E8B0 ; case 14 + b _0231E8B0 ; case 15 + b _0231E8DC ; case 16 + b _0231E8DC ; case 17 + b _0231E8DC ; case 18 + b _0231E8DC ; case 19 + b _0231E34C ; case 20 + b _0231E8DC ; case 21 + b _0231E8DC ; case 22 + b _0231E8DC ; case 23 + b _0231E8DC ; case 24 + b _0231E8DC ; case 25 + b _0231E8DC ; case 26 + b _0231E8DC ; case 27 + b _0231E8DC ; case 28 + b _0231E8DC ; case 29 + b _0231E8DC ; case 30 + b _0231E8DC ; case 31 + b _0231E8DC ; case 32 + b _0231E8DC ; case 33 + b _0231E2FC ; case 34 + b _0231E8DC ; case 35 + b _0231E8DC ; case 36 + b _0231E8DC ; case 37 + b _0231E8DC ; case 38 + b _0231E8DC ; case 39 + b _0231E8DC ; case 40 + b _0231E8DC ; case 41 + b _0231E8DC ; case 42 + b _0231E8DC ; case 43 + b _0231E8DC ; case 44 + b _0231E8DC ; case 45 + b _0231E8DC ; case 46 + b _0231E338 ; case 47 + b _0231E338 ; case 48 + b _0231E8DC ; case 49 + b _0231E8DC ; case 50 + b _0231E8DC ; case 51 + b _0231E8DC ; case 52 + b _0231E8DC ; case 53 + b _0231E8DC ; case 54 + b _0231E8DC ; case 55 + b _0231E8DC ; case 56 + b _0231E8DC ; case 57 + b _0231E8DC ; case 58 + b _0231E8DC ; case 59 + b _0231E8DC ; case 60 + b _0231E8DC ; case 61 + b _0231E8DC ; case 62 + b _0231E8DC ; case 63 + b _0231E8DC ; case 64 + b _0231E8DC ; case 65 + b _0231E8DC ; case 66 + b _0231E8DC ; case 67 + b _0231E8DC ; case 68 + b _0231E448 ; case 69 + b _0231E354 ; case 70 + b _0231E354 ; case 71 + b _0231E4D8 ; case 72 + b _0231E8DC ; case 73 + b _0231E5D0 ; case 74 + b _0231E730 ; case 75 + b _0231E52C ; case 76 + b _0231E4B4 ; case 77 + b _0231E6E4 ; case 78 + b _0231E6FC ; case 79 + b _0231E504 ; case 80 + b _0231E5A4 ; case 81 + b _0231E554 ; case 82 + b _0231E57C ; case 83 + b _0231E670 ; case 84 + b _0231E8DC ; case 85 + b _0231E600 ; case 86 + b _0231E76C ; case 87 + b _0231E6DC ; case 88 + b _0231E6C8 ; case 89 + b _0231E6B0 ; case 90 + b _0231E744 ; case 91 + b _0231E448 ; case 92 + b _0231E8DC ; case 93 + b _0231E804 ; case 94 + b _0231E8DC ; case 95 + b _0231E814 ; case 96 + b _0231E828 ; case 97 + b _0231E8DC ; case 98 + b _0231E3BC ; case 99 + b _0231E464 ; case 100 + b _0231E478 ; case 101 + b _0231E48C ; case 102 + b _0231E8DC ; case 103 + b _0231E8C0 ; case 104 + b _0231E8DC ; case 105 + b _0231E798 ; case 106 + b _0231E8B0 ; case 107 + b _0231E4A0 ; case 108 + b _0231E864 ; case 109 + b _0231E864 ; case 110 + b _0231E898 ; case 111 + b _0231E864 ; case 112 + b _0231E8DC ; case 113 + b _0231E8DC ; case 114 + b _0231E8DC ; case 115 + b _0231E3BC ; case 116 + b _0231E8B0 ; case 117 + b _0231E784 ; case 118 + b _0231E8DC ; case 119 + b _0231E8DC ; case 120 + b _0231E8DC ; case 121 + b _0231E8DC ; case 122 + b _0231E8DC ; case 123 + b _0231E8DC ; case 124 + b _0231E8DC ; case 125 + b _0231E8DC ; case 126 + b _0231E8DC ; case 127 + b _0231E8DC ; case 128 + b _0231E8DC ; case 129 + b _0231E8DC ; case 130 + b _0231E8DC ; case 131 + b _0231E8DC ; case 132 + b _0231E8DC ; case 133 + b _0231E8DC ; case 134 + b _0231E8DC ; case 135 + b _0231E8DC ; case 136 + b _0231E83C ; case 137 +_0231E2D0: + cmp r1, #0xa8 + bgt _0231E2E0 + beq _0231E8B0 + b _0231E8DC +_0231E2E0: + ldr r0, _0231E8E8 ; =0x0000014F + cmp r1, r0 + beq _0231E8A0 + b _0231E8DC +_0231E2F0: + cmp r5, #0 + movne r4, #0x46 + b _0231E8E0 +_0231E2FC: + cmp r5, #0 + beq _0231E330 + add r0, r6, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + movgt r0, #0x32 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231E330: + mov r4, #0 + b _0231E8E0 +_0231E338: + cmp r5, #0 + movne r0, #0x32 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + b _0231E8E0 +_0231E34C: + mov r4, #0x28 + b _0231E8E0 +_0231E354: + ldrsh r1, [r6, #0x12] + ldrsh r0, [r6, #0x16] + ldr r2, _0231E8EC ; =0x000003E7 + add r3, r1, r0 + cmp r3, r2 + ldrsh r1, [r6, #0x10] + movle r2, r3 + cmp r1, r2 + bge _0231E8E0 + ldr r0, _0231E8EC ; =0x000003E7 + cmp r3, r0 + movgt r3, r0 + mov r0, r3, asr #1 + add r0, r3, r0, lsr #30 + cmp r1, r0, asr #2 + bgt _0231E8E0 + cmp r5, #0 + bne _0231E3B4 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x64 + moveq r4, #0x32 + b _0231E8E0 +_0231E3B4: + mov r4, #0x32 + b _0231E8E0 +_0231E3BC: + cmp r1, #0x74 + mov r1, #1 + bne _0231E3D8 + ldrsh r0, [r6, #4] + cmp r0, #0x124 + cmpne r0, #0x37c + movne r1, #0 +_0231E3D8: + cmp r1, #0 + beq _0231E8E0 + mov r4, #0 + add r7, r6, #0x124 + mov r8, r4 + mov r5, r4 + mov r6, #1 +_0231E3F4: + ldrb r0, [r7, r8, lsl #3] + add sb, r7, r8, lsl #3 + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _0231E430 + ldrb r0, [sb, #6] + cmp r0, #0 + mov r0, sb + addeq r4, r4, #0x1e + bl GetMaxPpWrapper + ldrb r1, [sb, #6] + cmp r1, r0 + addne r4, r4, #6 +_0231E430: + add r8, r8, #1 + cmp r8, #4 + blt _0231E3F4 + cmp r4, #0x63 + movge r4, #0x63 + b _0231E8E0 +_0231E448: + mov r0, r7 + mov r1, #1 + bl ov29_02300634 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #0 + b _0231E8E0 +_0231E464: + ldrb r0, [r6, #0x1a] + cmp r0, #0xfa + movhs r4, #0 + movlo r4, #0x64 + b _0231E8E0 +_0231E478: + ldrb r0, [r6, #0x1b] + cmp r0, #0xfa + movhs r4, #0 + movlo r4, #0x64 + b _0231E8E0 +_0231E48C: + ldrb r0, [r6, #0x1c] + cmp r0, #0xfa + movhs r4, #0 + movlo r4, #0x64 + b _0231E8E0 +_0231E4A0: + ldrb r0, [r6, #0x1d] + cmp r0, #0xfa + movhs r4, #0 + movlo r4, #0x64 + b _0231E8E0 +_0231E4B4: + cmp r5, #0 + movne r4, #0 + bne _0231E8E0 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0xa + moveq r4, #0x64 + b _0231E8E0 +_0231E4D8: + mov r0, r7 + bl CanSeeInvisibleMonsters + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E504: + ldr r0, [r6, #0x110] + cmp r0, #3 + movgt r0, #0 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E52C: + ldrb r0, [r6, #0xf1] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E554: + ldrb r0, [r6, #0xbf] + cmp r0, #4 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #0x1e + b _0231E8E0 +_0231E57C: + ldrb r0, [r6, #0xd0] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #0xf + b _0231E8E0 +_0231E5A4: + ldrb r0, [r6, #0xbf] + cmp r0, #2 + cmpne r0, #3 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x64 + moveq r4, #0x32 + b _0231E8E0 +_0231E5D0: + mov r0, r7 + mov r1, #1 + bl IsBlinded + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E600: + cmp r0, #0 + bne _0231E620 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x28 + moveq r4, #5 + b _0231E8E0 +_0231E620: + ldrsh r2, [r6, #0x12] + ldrsh r1, [r6, #0x16] + ldr r0, _0231E8EC ; =0x000003E7 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + ldrsh r0, [r6, #0x10] + cmp r0, r1 + cmplt r0, #0x14 + bge _0231E8E0 + cmp r5, #0 + bne _0231E668 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x64 + moveq r4, #0x32 + b _0231E8E0 +_0231E668: + mov r4, #0x32 + b _0231E8E0 +_0231E670: + ldrb r0, [r6, #0xbd] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, #5 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E6B0: + ldrb r0, [r6, #0xbd] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #5 + b _0231E8E0 +_0231E6C8: + ldrb r0, [r6, #0xa] + cmp r0, #0x63 + movlo r4, #0x50 + movhs r4, #0 + b _0231E8E0 +_0231E6DC: + mov r4, #0x50 + b _0231E8E0 +_0231E6E4: + ldrb r0, [r6, #0xbf] + cmp r0, #1 + moveq r0, #0x32 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + b _0231E8E0 +_0231E6FC: + add r0, r6, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + movgt r0, #0x32 + ldmgtia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + b _0231E8E0 +_0231E730: + ldrb r0, [r6, #0xa] + cmp r0, #1 + movhi r4, #0x50 + movls r4, #0 + b _0231E8E0 +_0231E744: + ldrb r0, [r6, #0xc4] + cmp r0, #6 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #5 + b _0231E8E0 +_0231E76C: + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #0x1e + b _0231E8E0 +_0231E784: + ldrb r0, [r6, #6] + cmp r0, #0 + movne r4, #0 + moveq r4, #0x64 + b _0231E8E0 +_0231E798: + ldrsh r0, [r6, #2] + bl GetMobilityType + cmp r0, #0 + cmpne r0, #4 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + ldrneb r0, [r6, #0xef] + cmpne r0, #4 + moveq r4, #0 + beq _0231E8E0 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0xa + moveq r4, #0x64 + b _0231E8E0 +_0231E7DC: + ldrb r0, [r6, #0xd5] + cmp r0, #9 + moveq r4, #0 + beq _0231E8E0 + mov r0, r7 + bl ov29_0231E8F0 + cmp r0, #0 + movne r4, #0x50 + moveq r4, #0 + b _0231E8E0 +_0231E804: + cmp r5, #0 + movne r4, #0x46 + moveq r4, #0 + b _0231E8E0 +_0231E814: + ldrsh r0, [r6, #0x26] + cmp r0, #0x14 + movge r4, #0 + movlt r4, #0x50 + b _0231E8E0 +_0231E828: + ldrb r0, [r6, #0xef] + cmp r0, #1 + movne r4, #0x50 + moveq r4, #0 + b _0231E8E0 +_0231E83C: + ldrsh r0, [r6, #4] + bl FemaleToMaleForm + ldrsh r0, [r6, #4] + cmp r0, #0x1e0 + cmpne r0, #0xb9 + bne _0231E8E0 + cmp r5, #0 + movne r4, #0x46 + moveq r4, #0x64 + b _0231E8E0 +_0231E864: + add r0, r6, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0xa + movlt r0, #0x64 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r4, #0 + b _0231E8E0 +_0231E898: + mov r4, #0x1e + b _0231E8E0 +_0231E8A0: + cmp r5, #0 + movne r4, #0 + moveq r4, #0x14 + b _0231E8E0 +_0231E8B0: + cmp r5, #0 + movne r4, #0x50 + moveq r4, #0 + b _0231E8E0 +_0231E8C0: + ldrb r0, [r6, #0xf1] + cmp r0, #4 + beq _0231E8E0 + cmp r5, #0 + movne r4, #0x50 + moveq r4, #0 + b _0231E8E0 +_0231E8DC: + mov r4, #0 +_0231E8E0: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231E8E8: .word 0x0000014F +_0231E8EC: .word 0x000003E7 + arm_func_end ov29_0231E05C + + arm_func_start ov29_0231E8F0 +ov29_0231E8F0: ; 0x0231E8F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, #0 + mov sl, #1 + mov r6, r0 + mov sb, r5 + mov r8, r5 + mov r7, sl + ldr r4, _0231E98C ; =0x0235171C + b _0231E97C +_0231E914: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh ip, [r6, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [r6, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _0231E978 + ldr r0, [r1] + cmp r0, #0 + moveq r0, sl + movne r0, sb + cmp r0, #1 + beq _0231E978 + mov r0, r6 + mov r2, r8 + mov r3, r7 + bl ov29_0230175C + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0231E978: + add r5, r5, #1 +_0231E97C: + cmp r5, #8 + blt _0231E914 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0231E98C: .word 0x0235171C + arm_func_end ov29_0231E8F0 + + arm_func_start ov29_0231E990 +ov29_0231E990: ; 0x0231E990 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r4, #0x45 + blt _0231E9A8 + cmp r4, #0x8a + ble _0231E9B0 +_0231E9A8: + mov r0, #0 + ldmia sp!, {r4, pc} +_0231E9B0: + bl IsItemValidVeneer + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _0231E9EC ; =0x022C4B74 + b _0231E9D8 +_0231E9C8: + cmp r4, r1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add r0, r0, #2 +_0231E9D8: + ldrsh r1, [r0] + cmp r1, #0 + bne _0231E9C8 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_0231E9EC: .word 0x022C4B74 + arm_func_end ov29_0231E990 + + arm_func_start GetMaxPpWrapper +GetMaxPpWrapper: ; 0x0231E9F0 + stmdb sp!, {r3, lr} + bl GetMaxPp + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + arm_func_end GetMaxPpWrapper + + arm_func_start ov29_0231EA04 +ov29_0231EA04: ; 0x0231EA04 + ldr ip, _0231EA14 ; =InitMove + mov r0, r1 + mov r1, r2 + bx ip + .align 2, 0 +_0231EA14: .word InitMove + arm_func_end ov29_0231EA04 + + arm_func_start MoveIsNotPhysical +MoveIsNotPhysical: ; 0x0231EA18 + stmdb sp!, {r3, lr} + bl GetMoveCategory + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, pc} + arm_func_end MoveIsNotPhysical + + arm_func_start ov29_0231EA30 +ov29_0231EA30: ; 0x0231EA30 + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + bx lr + arm_func_end ov29_0231EA30 + + arm_func_start ov29_0231EA40 +ov29_0231EA40: ; 0x0231EA40 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl ov29_023361D4 + cmp r0, #0 + bne _0231EA80 + ldr r0, _0231EDC8 ; =0x02353538 + ldr r0, [r0] + add r1, r0, #0x4000 + ldrsh r0, [r1, #0xd4] + sub r2, r0, #0x1a + mov r2, r2, lsl #0x10 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + cmp r2, #1 + bhi _0231EA90 +_0231EA80: + ldr r1, _0231EDCC ; =0x00000E01 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231EA90: + ldrb r2, [r1, #0xc4] + cmp r2, #0 + beq _0231EAAC + ldr r1, _0231EDD0 ; =0x00000DFF + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231EAAC: + ldrb r1, [r1, #0xc7] + cmp r1, #0 + beq _0231EAC8 + mov r0, sl + mov r1, #0xe00 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231EAC8: + bl ov29_022E0378 + cmp r0, #0 + movne r7, #3 + moveq r7, #2 + mov r6, #0 + mov sb, #1 +_0231EAE0: + ldr fp, _0231EDC8 ; =0x02353538 + mov r5, #1 + mov r4, #0 +_0231EAEC: + mov r0, sb + mov r1, r5 + mov r8, #0 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #0x400 + strh r1, [r0] + strb r4, [r0, #7] + ldrh r1, [r0] + tst r1, #0x10 + bne _0231EBCC + tst r1, #0x100 + bne _0231EBCC + ldrh r1, [r0, #2] + orr r1, r1, #3 + strh r1, [r0, #2] + ldrh r1, [r0] + bic r1, r1, #8 + strh r1, [r0] + ldrh r1, [r0] + tst r1, #0x40 + ldrh r1, [r0] + movne r6, #1 + and r2, r1, #3 + cmp r2, #2 + cmpne r2, #3 + beq _0231EBCC + cmp sb, #1 + cmpne r5, #1 + cmpne sb, #0x36 + cmpne r5, #0x1e + bne _0231EB84 + ldr r1, [r0, #0x10] + cmp r1, #0 + ldreq r1, [fp] + ldreqb r1, [r1, #0x78f] + cmpeq r1, #0 + moveq r8, #1 +_0231EB84: + cmp r8, #0 + beq _0231EBA8 + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, r7 + strh r1, [r0] + b _0231EBCC +_0231EBA8: + cmp r2, #1 + beq _0231EBCC + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + orr r1, r1, #0x400 + strh r1, [r0] +_0231EBCC: + add r5, r5, #1 + cmp r5, #0x1f + blt _0231EAEC + add sb, sb, #1 + cmp sb, #0x37 + blt _0231EAE0 + ldr r0, _0231EDC8 ; =0x02353538 + mov r2, #1 + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe4] + ldrsh r1, [r1, #0xe6] + bl StairsAlwaysReachable + cmp r0, #0 + beq _0231EC64 + mov r5, #0 + mov r4, r5 +_0231EC10: + mov r8, r4 +_0231EC14: + mov r0, r5 + mov r1, r8 + bl GetTileSafe + ldrh r1, [r0] + tst r1, #0x100 + bne _0231EC4C + tst r1, #0x400 + beq _0231EC4C + tst r1, #0x8000 + bicne r1, r1, #3 + strneh r1, [r0] + ldrneh r1, [r0] + orrne r1, r1, r7 + strneh r1, [r0] +_0231EC4C: + add r8, r8, #1 + cmp r8, #0x20 + blt _0231EC14 + add r5, r5, #1 + cmp r5, #0x38 + blt _0231EC10 +_0231EC64: + cmp r6, #0 + ldrne r0, _0231EDC8 ; =0x02353538 + mov r5, #0 + ldrne r0, [r0] + movne r1, #0 + addne r0, r0, #0x4000 + strneb r1, [r0, #0xc9] + mov r4, r5 +_0231EC84: + mov r7, r4 +_0231EC88: + cmp r6, #0 + beq _0231ECA8 + mov r0, r5 + mov r1, r7 + bl GetTileSafe + ldrh r1, [r0] + orr r1, r1, #0x40 + strh r1, [r0] +_0231ECA8: + mov r0, r5 + mov r1, r7 + bl ov29_02336A84 + add r7, r7, #1 + cmp r7, #0x20 + blt _0231EC88 + add r5, r5, #1 + cmp r5, #0x38 + blt _0231EC84 + ldr r4, _0231EDC8 ; =0x02353538 + mov r5, #0 +_0231ECD4: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__0231EDD8 + cmp r0, #0 + beq _0231ED08 + ldrsh r0, [r6, #4] + ldrsh r1, [r6, #6] + bl GetTile + ldrb r0, [r0, #7] + strb r0, [r6, #0x25] +_0231ED08: + add r5, r5, #1 + cmp r5, #0x14 + blt _0231ECD4 + bl ov29_0233FB1C + bl ov29_0233785C + bl ov29_0233665C + bl ov29_02304B64 + bl ov29_02339CE8 + bl ov29_02336F4C + ldr r1, _0231EDD4 ; =0x00000DFE + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x28 + mov r1, #0x2b + bl ov29_022EA370 + mov r0, sl + mov r1, #1 + bl ov29_02305814 + ldr r4, _0231EDC8 ; =0x02353538 + mov r6, #0 +_0231ED58: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r5, [r0, #0xb78] + mov r0, r5 + bl EntityIsValid__0231EDD8 + cmp r0, #0 + beq _0231ED98 + mov r0, r5 + bl ov29_022F9C74 + mov r0, r5 + bl EntityIsValid__0231EDD8 + cmp r0, #0 + beq _0231ED98 + mov r0, r5 + bl ov29_02321104 +_0231ED98: + add r6, r6, #1 + cmp r6, #0x14 + blt _0231ED58 + ldr r0, _0231EDC8 ; =0x02353538 + mov r3, #1 + ldr r1, [r0] + mov r0, #0x14 + add r2, r1, #0x4000 + mov r1, #0x2b + strb r3, [r2, #0xc4] + bl ov29_022EA370 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231EDC8: .word 0x02353538 +_0231EDCC: .word 0x00000E01 +_0231EDD0: .word 0x00000DFF +_0231EDD4: .word 0x00000DFE + arm_func_end ov29_0231EA40 diff --git a/asm/overlay_29_0231EDFC.s b/asm/overlay_29_0231EDFC.s new file mode 100644 index 00000000..2b8d6ddf --- /dev/null +++ b/asm/overlay_29_0231EDFC.s @@ -0,0 +1,525 @@ + .include "asm/macros.inc" + .include "overlay_29_0231EDFC.inc" + + .text + + arm_func_start ov29_0231EDFC +ov29_0231EDFC: ; 0x0231EDFC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xf4 + mov r5, r0 + mov r4, r1 + cmp r5, r4 + beq _0231EE54 + cmp r5, #0 + moveq r0, #0 + beq _0231EE34 + ldr r0, [r5] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_0231EE34: + cmp r0, #0 + beq _0231EE54 + mov r0, r5 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0231EE60 +_0231EE54: + mov r0, r4 + mov r1, #0xe + bl AbilityIsActive2 +_0231EE60: + cmp r0, #0 + beq _0231EE8C + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231F544 ; =0x00000E45 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231F53C +_0231EE8C: + cmp r5, r4 + bne _0231EEB8 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231F548 ; =0x00000E46 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231F53C +_0231EEB8: + ldrh r0, [r4, #4] + mov sl, #0 + mov r8, sl + strh r0, [sp, #0x40] + ldrh r0, [r4, #6] + strh r0, [sp, #0x42] + b _0231F098 +_0231EED4: + mov sl, #0 + ldr fp, _0231F54C ; =0x0235171C + mov r6, sl +_0231EEE0: + ldr r0, _0231F550 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__0231F570 + cmp r0, #0 + cmpne r5, sb + cmpne r4, sb + beq _0231F080 + mov r0, r5 + mov r1, sb + bl ov29_022E274C + cmp r0, #0 + beq _0231F080 + cmp r8, #0 + mov r0, r5 + mov r2, #0 + mov r1, sb + mov r3, #1 + bne _0231EF48 + bl ov29_0230175C + cmp r0, #1 + bne _0231F080 + b _0231EF54 +_0231EF48: + bl ov29_0230175C + cmp r0, #0 + bne _0231F080 +_0231EF54: + cmp r8, #0 + mov r7, #0 + bne _0231EFF8 + b _0231EFBC +_0231EF64: + mov r0, r7, lsl #2 + ldrsh r1, [fp, r0] + ldrsh r3, [sb, #4] + add r0, fp, r7, lsl #2 + ldrsh r2, [r0, #2] + add r0, r3, r1 + strh r0, [sp, #0x34] + ldrsh r3, [sb, #6] + mov r0, r4 + add r1, sp, #0x34 + add r2, r3, r2 + strh r2, [sp, #0x36] + bl ov29_022FF764 + cmp r0, #0 + bne _0231EFB8 + ldrsh r0, [sp, #0x34] + ldrsh r1, [sp, #0x36] + bl GetTile + ldrh r0, [r0] + tst r0, #0x800 + beq _0231EFC4 +_0231EFB8: + add r7, r7, #1 +_0231EFBC: + cmp r7, #8 + blt _0231EF64 +_0231EFC4: + cmp r7, #8 + beq _0231F080 + cmp sl, #0x28 + bge _0231F080 + ldrh r1, [sb, #4] + mov r3, sl, lsl #2 + add r0, sp, #0x54 + add r2, r0, r3 + strh r1, [r0, r3] + ldrh r0, [sb, #6] + add sl, sl, #1 + strh r0, [r2, #2] + b _0231F080 +_0231EFF8: + mov r0, r7, lsl #2 + ldrsh r1, [fp, r0] + ldrsh r3, [sb, #4] + add r0, fp, r7, lsl #2 + ldrsh r2, [r0, #2] + add r0, r3, r1 + strh r0, [sp, #0x30] + ldrsh r3, [sb, #6] + mov r0, r4 + add r1, sp, #0x30 + add r2, r3, r2 + strh r2, [sp, #0x32] + bl ov29_022FF764 + cmp r0, #0 + bne _0231F074 + ldrsh r0, [sp, #0x30] + ldrsh r1, [sp, #0x32] + bl GetTile + ldrh r0, [r0] + tst r0, #0x800 + bne _0231F074 + cmp sl, #0x28 + bge _0231F074 + ldrh r3, [sp, #0x30] + ldrh r2, [sp, #0x32] + mov r0, sl, lsl #2 + add r1, sp, #0x54 + add ip, r1, r0 + strh r3, [r1, r0] + add sl, sl, #1 + strh r2, [ip, #2] +_0231F074: + add r7, r7, #1 + cmp r7, #8 + blt _0231EFF8 +_0231F080: + add r6, r6, #1 + cmp r6, #0x14 + blt _0231EEE0 + cmp sl, #0 + bne _0231F0A0 + add r8, r8, #1 +_0231F098: + cmp r8, #2 + blt _0231EED4 +_0231F0A0: + cmp sl, #0 + beq _0231F0D0 + mov r0, sl + bl DungeonRandInt + add r1, sp, #0x54 + mov r2, r0, lsl #2 + add r0, r1, r0, lsl #2 + ldrh r1, [r1, r2] + ldrh r0, [r0, #2] + strh r1, [sp, #0x40] + strh r0, [sp, #0x42] + b _0231F178 +_0231F0D0: + mov r0, r5 + bl HasDropeyeStatus + mov r2, r0 + add r1, sp, #0x44 + add r0, r5, #4 + bl ov29_022E9298 + mov r7, #0 + add r6, sp, #0x2c + b _0231F154 +_0231F0F4: + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x4c] + bl DungeonRandRange + strh r0, [sp, #0x2c] + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x50] + bl DungeonRandRange + strh r0, [sp, #0x2e] + mov r0, r4 + mov r1, r6 + bl ov29_022FF764 + cmp r0, #0 + bne _0231F150 + ldrsh r0, [sp, #0x2c] + ldrsh r1, [sp, #0x2e] + bl GetTile + ldrh r0, [r0] + tst r0, #0x800 + ldreqh r1, [sp, #0x2c] + ldreqh r0, [sp, #0x2e] + streqh r1, [sp, #0x40] + streqh r0, [sp, #0x42] + beq _0231F15C +_0231F150: + add r7, r7, #1 +_0231F154: + cmp r7, #0x64 + blt _0231F0F4 +_0231F15C: + cmp r7, #0x64 + bne _0231F178 + ldr r2, _0231F554 ; =0x00000E48 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0231F53C +_0231F178: + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231F558 ; =0x00000E47 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0231F1B0 + ldr r0, _0231F55C ; =0x00000212 + bl ov29_022EACCC +_0231F1B0: + ldrsh r3, [sp, #0x42] + ldrsh r2, [r4, #6] + ldrsh r1, [sp, #0x40] + ldrsh r0, [r4, #4] + sub r2, r3, r2 + ldr r6, [r4, #0xb4] + sub r0, r1, r0 + cmp r0, r2 + movle r0, r2 + mov sb, r0, lsl #4 + cmp sb, #0x50 + movgt sb, #0x50 + cmp sb, #0xa + add r0, sp, #0x40 + add r1, r4, #4 + ldrb r8, [r6, #0x4c] + mov r7, #0 + movlt sb, #0xa + bl GetDirectionTowardsPosition + mov r6, r0 + ldr r0, _0231F54C ; =0x0235171C + mov r1, r6, lsl #2 + ldrsh r0, [r0, r1] + mov r1, #3 + mov r0, r0, lsl #8 + bl DivideInt + ldrsh sl, [sp, #0x40] + mov r1, #0x18 + ldr r2, _0231F560 ; =0x0235171E + mov r3, r6, lsl #2 + smulbb r1, sl, r1 + add r1, r1, #0xc + add r6, r0, r1, lsl #8 + ldrsh r2, [r2, r3] + mov r1, #3 + mov r0, r2, lsl #8 + bl DivideInt + ldrsh r2, [sp, #0x42] + mov r1, #0x18 + ldr sl, [r4, #0xc] + smulbb r1, r2, r1 + add r1, r1, #0x10 + add fp, r0, r1, lsl #8 + ldr r0, [r4, #0x10] + mov r1, sb + sub r0, fp, r0 + bl DivideInt + str sl, [sp, #0x38] + ldr r1, [r4, #0x10] + str r0, [sp, #0x18] + sub r0, r6, sl + str r1, [sp, #0x3c] + mov r1, sb + mov sl, #0 + bl DivideInt + str r0, [sp, #0x1c] + b _0231F31C +_0231F294: + ldr r2, [sp, #0x38] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x3c] + add r0, r2, r0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x18] + add r0, r1, r0 + str r0, [sp, #0x3c] + mov r0, r4 + add r1, sp, #0x38 + bl ov29_022E1A40 + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0231F308 + mov r0, r7 + bl sub_020018D0 + mov r0, r0, lsl #5 + str r0, [r4, #0x1c] + mov r0, #0x3b + bl AdvanceFrame + tst sl, #3 + bne _0231F308 + and r8, r8, #7 + mov r0, r4 + mov r1, #6 + mov r2, r8 + bl ov29_023049A8 + add r8, r8, #1 +_0231F308: + mov r0, #0x800 + mov r1, sb + bl DivideInt + add r7, r7, r0 + add sl, sl, #1 +_0231F31C: + cmp sl, sb + blt _0231F294 + add r1, sp, #0x38 + mov r0, r4 + str r6, [sp, #0x38] + str fp, [sp, #0x3c] + mov r2, #0 + str r2, [r4, #0x1c] + bl ov29_022E1A40 + mov r0, #0x3b + bl AdvanceFrame + ldr r0, [r4, #0xb4] + and r1, r8, #7 + strb r1, [r0, #0x4c] + ldrsh r0, [sp, #0x40] + ldrsh r1, [sp, #0x42] + bl GetTile + ldr r7, [r0, #0xc] + mov r0, r7 + bl EntityIsValid__0231F570 + cmp r0, #0 + bne _0231F394 + ldrsh r1, [sp, #0x40] + ldrsh r2, [sp, #0x42] + mov r0, r4 + mov r3, #1 + bl ov29_022F85F0 + mov r0, r4 + bl ov29_02321238 + b _0231F53C +_0231F394: + mov r8, #0 + ldr r6, _0231F54C ; =0x0235171C + add sb, sp, #0x28 + b _0231F40C +_0231F3A4: + mov r1, r8, lsl #2 + add r0, r6, r8, lsl #2 + ldrsh sl, [sp, #0x40] + ldrsh r3, [r6, r1] + ldrsh r2, [sp, #0x42] + ldrsh r1, [r0, #2] + add r3, sl, r3 + mov r0, r4 + add r2, r2, r1 + mov r1, sb + strh r3, [sp, #0x28] + strh r2, [sp, #0x2a] + bl ov29_022FF764 + cmp r0, #0 + bne _0231F408 + ldrsh r0, [sp, #0x28] + ldrsh r1, [sp, #0x2a] + bl GetTile + ldrh r0, [r0] + tst r0, #0x800 + ldreqh r1, [sp, #0x28] + ldreqh r0, [sp, #0x2a] + streqh r1, [sp, #0x40] + streqh r0, [sp, #0x42] + beq _0231F414 +_0231F408: + add r8, r8, #1 +_0231F40C: + cmp r8, #8 + blt _0231F3A4 +_0231F414: + cmp r8, #8 + bne _0231F434 + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryWarp + b _0231F454 +_0231F434: + add r1, sp, #0x40 + mov r0, r4 + bl ov29_0232033C + ldrsh r1, [sp, #0x40] + ldrsh r2, [sp, #0x42] + mov r0, r4 + mov r3, #1 + bl ov29_022F85F0 +_0231F454: + ldr r0, [r7] + cmp r0, #1 + bne _0231F4D4 + ldr r1, _0231F564 ; =0x00000163 + add r0, sp, #0x20 + bl InitMove + add r1, sp, #0x20 + mov r0, r7 + bl ov29_02324854 + cmp r0, #0 + bne _0231F4B4 + mov r3, #0 + str r3, [sp] + ldr r0, _0231F568 ; =0x022C4458 + ldr r1, _0231F56C ; =0x00000259 + str r3, [sp, #4] + str r1, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r5 + mov r1, r7 + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory +_0231F4B4: + mov r0, r7 + bl EntityIsValid__0231F570 + cmp r0, #0 + beq _0231F4D4 + ldr r1, [r7, #0xb4] + mov r0, r7 + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 +_0231F4D4: + mov r3, #0 + str r3, [sp] + ldr r0, _0231F568 ; =0x022C4458 + str r3, [sp, #4] + mov r1, #0x258 + str r1, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldrsh r2, [r0] + mov r0, r5 + mov r1, r4 + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory + mov r0, r4 + bl EntityIsValid__0231F570 + cmp r0, #0 + beq _0231F528 + ldr r1, [r4, #0xb4] + mov r0, r4 + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 +_0231F528: + mov r0, #0x1e + mov r1, #0x3b + bl ov29_022EA370 + mov r0, r4 + bl ov29_02321238 +_0231F53C: + add sp, sp, #0xf4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231F544: .word 0x00000E45 +_0231F548: .word 0x00000E46 +_0231F54C: .word 0x0235171C +_0231F550: .word 0x02353538 +_0231F554: .word 0x00000E48 +_0231F558: .word 0x00000E47 +_0231F55C: .word 0x00000212 +_0231F560: .word 0x0235171E +_0231F564: .word 0x00000163 +_0231F568: .word 0x022C4458 +_0231F56C: .word 0x00000259 + arm_func_end ov29_0231EDFC diff --git a/asm/overlay_29_0231F594.s b/asm/overlay_29_0231F594.s new file mode 100644 index 00000000..8ee9f16b --- /dev/null +++ b/asm/overlay_29_0231F594.s @@ -0,0 +1,461 @@ + .include "asm/macros.inc" + .include "overlay_29_0231F594.inc" + + .text + + arm_func_start ov29_0231F594 +ov29_0231F594: ; 0x0231F594 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _0231F6D4 ; =0x02353538 + mov r8, r0 + ldr r0, [r1] + mov r6, #0 + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_0234413C + cmp r0, #0 + bne _0231F5CC + ldr r1, _0231F6D8 ; =0x00000C08 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231F5CC: + bl ov29_02337E94 + cmp r0, #0 + beq _0231F5E8 + ldr r1, _0231F6DC ; =0x00000C09 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0231F5E8: + mov r7, r6 + mov sb, #1 + mov r4, r6 +_0231F5F4: + mov r5, r4 +_0231F5F8: + mov r0, r5 + mov r1, r7 + bl GetTileSafe + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #2 + bne _0231F63C + ldrh r2, [r0] + mov r1, r7 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r5 + bl ov29_02336694 + mov r6, sb +_0231F63C: + add r5, r5, #1 + cmp r5, #0x38 + blt _0231F5F8 + add r7, r7, #1 + cmp r7, #0x20 + blt _0231F5F4 + mov r5, #0 + mov r4, r5 +_0231F65C: + mov r7, r4 +_0231F660: + mov r0, r7 + mov r1, r5 + bl ov29_02336A84 + add r7, r7, #1 + cmp r7, #0x38 + blt _0231F660 + add r5, r5, #1 + cmp r5, #0x20 + blt _0231F65C + cmp r6, #0 + beq _0231F6A8 + mov r0, r8 + mov r1, #0x210 + bl ov29_022E56A0 + ldr r1, _0231F6E0 ; =0x00000C07 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser + b _0231F6B4 +_0231F6A8: + ldr r1, _0231F6D8 ; =0x00000C08 + mov r0, r8 + bl LogMessageByIdWithPopupCheckUser +_0231F6B4: + ldr r0, _0231F6D4 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x78f] + bl ov29_02304B64 + bl ov29_02339CE8 + bl ov29_02336F4C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0231F6D4: .word 0x02353538 +_0231F6D8: .word 0x00000C08 +_0231F6DC: .word 0x00000C09 +_0231F6E0: .word 0x00000C07 + arm_func_end ov29_0231F594 + + arm_func_start ov29_0231F6E4 +ov29_0231F6E4: ; 0x0231F6E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x38 + ldr r1, _0231FBE4 ; =0x02353538 + mov sl, r0 + ldr r0, [r1] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_0234410C + cmp r0, #0 + bne _0231F71C + mov r0, sl + mov r1, #0xbd0 + bl LogMessageByIdWithPopupCheckUser + b _0231FBDC +_0231F71C: + ldr r0, _0231FBE8 ; =0x000013BC + mov r2, #0 + mov r1, #0xf + str r2, [sp, #0xc] + bl MemAlloc + mov r4, r0 + mov r6, #0 + add r0, r4, #0x1f8 + mov r5, r4 + mov r8, r6 + add fp, r0, #0x1000 + b _0231F86C +_0231F74C: + add r0, r1, r8, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xbc8] + mov r0, r7 + bl EntityIsValid__0231FBFC + cmp r0, #0 + beq _0231F868 + cmp r6, #0x19 + bge _0231F884 + ldrsh sb, [r7, #4] + ldrsh r0, [sl, #4] + sub r0, sb, r0 + bl Abs + cmp r0, #2 + bgt _0231F7A0 + ldrsh r1, [r7, #6] + ldrsh r0, [sl, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #2 + ble _0231F868 +_0231F7A0: + mov r0, sb + ldrsh r1, [r7, #6] + bl GetTile + ldrh r0, [r0] + tst r0, #3 + beq _0231F868 + mov r0, #3 + str r0, [r5] + mov r0, #6 + mul sb, r6, r0 + add r0, fp, sb + str r0, [r5, #0xb4] + ldrh r1, [r7, #4] + mov r0, r5 + strh r1, [r5, #4] + ldrh r1, [r7, #6] + strh r1, [r5, #6] + ldrsh r2, [r7, #4] + mov r1, #0x18 + ldrsh r3, [r7, #6] + smulbb r1, r2, r1 + mov r2, #0x18 + smulbb r2, r3, r2 + add r1, r1, #4 + add r2, r2, #4 + mov r1, r1, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r1, #0 + strh r1, [r5, #0x26] + mov r1, #1 + strb r1, [r5, #0x20] + mov r1, #0 + strb r1, [r5, #0x22] + str r1, [r5, #0x1c] + ldr r1, _0231FBE4 ; =0x02353538 + add r0, r4, sb + ldr r2, [r1] + mov r1, #6 + mla r1, r8, r1, r2 + add r1, r1, #0x3e00 + ldrh r2, [r1, #0x40] + add r0, r0, #0x1100 + add r5, r5, #0xb8 + strh r2, [r0, #0xf8] + ldrh r2, [r1, #0x42] + add r6, r6, #1 + strh r2, [r0, #0xfa] + ldrh r1, [r1, #0x44] + strh r1, [r0, #0xfc] +_0231F868: + add r8, r8, #1 +_0231F86C: + ldr r0, _0231FBE4 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0x3f00 + ldrsh r0, [r0, #0xc0] + cmp r8, r0 + blt _0231F74C +_0231F884: + cmp r6, #0 + bne _0231F89C + ldr r1, _0231FBEC ; =0x00000BCF + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _0231FBD4 +_0231F89C: + mov r1, #0 + mov sb, r1 + add r0, sp, #0x18 +_0231F8A8: + strb sb, [r0, r1] + add r1, r1, #1 + cmp r1, #0x1e + blt _0231F8A8 + b _0231F9A8 +_0231F8BC: + ldrsh r1, [sl, #4] + ldrsh r0, [sl, #6] + mov r7, #0 + ldr r5, _0231FBF0 ; =0x02351844 + mov r8, r7 + strh r1, [sp, #0x14] + strh r0, [sp, #0x16] + add fp, sp, #0x18 +_0231F8DC: + cmp r8, #0x1e + bge _0231F978 + mov r2, r8, lsl #2 + ldrsh r0, [r5, r2] + cmp r0, #0x63 + beq _0231F978 + ldrb r1, [fp, r8] + cmp r1, #0 + bne _0231F970 + add r1, r5, r2 + ldrsh r3, [sl, #4] + ldrsh r2, [sl, #6] + ldrsh r1, [r1, #2] + add r0, r3, r0 + strh r0, [sp, #0x14] + add r0, r2, r1 + strh r0, [sp, #0x16] + ldrsh r0, [sp, #0x14] + ldrsh r1, [sp, #0x16] + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _0231F970 + tst r2, #0x200 + ldreq r0, [r0, #0x10] + cmpeq r0, #0 + bne _0231F970 + ldrh r2, [sp, #0x14] + add r0, r4, sb, lsl #2 + add r0, r0, #0x1200 + ldrh r1, [sp, #0x16] + strh r2, [r0, #0x8e] + mov r7, #1 + strh r1, [r0, #0x90] + strb r7, [fp, r8] + b _0231F978 +_0231F970: + add r8, r8, #1 + b _0231F8DC +_0231F978: + cmp r7, #0 + bne _0231F9A4 + mov r0, #0xb8 + mul r2, sb, r0 + add r1, r4, sb, lsl #2 + mov r3, #0 + str r3, [r4, r2] + sub r2, r0, #0xb9 + add r0, r1, #0x1200 + strh r2, [r0, #0x8e] + strh r2, [r0, #0x90] +_0231F9A4: + add sb, sb, #1 +_0231F9A8: + cmp sb, r6 + blt _0231F8BC + mov fp, #0x18 + mov sb, #0 + mov r5, fp + mov r7, #0xb8 + b _0231FA58 +_0231F9C4: + mla r0, sb, r7, r4 + bl EntityIsValid__0231FBFC + cmp r0, #0 + beq _0231FA54 + mov r0, #0xb8 + mla r8, sb, r0, r4 + mov r1, #1 + add r0, r8, #4 + bl ov29_023456BC + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + bl ov29_023391EC + add r0, r4, sb, lsl #2 + add r0, r0, #0x1200 + ldrsh r2, [r0, #0x8e] + ldr r0, [r8, #0xc] + mov r1, #0x3c + smulbb r2, r2, fp + add r2, r2, #4 + rsb r0, r0, r2, lsl #8 + bl DivideInt + add r1, r4, sb, lsl #3 + add r1, r1, #0x1000 + str r0, [r1, #0x2f4] + add r0, r4, sb, lsl #2 + add r0, r0, #0x1200 + ldrsh r0, [r0, #0x90] + ldr r2, [r8, #0x10] + mov r1, #0x3c + smulbb r0, r0, r5 + add r0, r0, #4 + rsb r0, r2, r0, lsl #8 + bl DivideInt + add r1, r4, sb, lsl #3 + add r1, r1, #0x1000 + str r0, [r1, #0x2f8] +_0231FA54: + add sb, sb, #1 +_0231FA58: + cmp sb, r6 + blt _0231F9C4 + ldr r1, _0231FBF4 ; =0x00000222 + mov r0, sl + bl ov29_022E56A0 + ldr r0, _0231FBE4 ; =0x02353538 + mov r7, #0 + ldr r0, [r0] + mov r8, r7 + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x245] + mov r5, r7 + str r0, [sp, #8] +_0231FA8C: + and r0, r7, #0xff + mov sb, #0 + str r0, [sp, #0x10] + b _0231FB0C +_0231FA9C: + mov r0, #0xb8 + mul fp, sb, r0 + add r0, r4, fp + bl EntityIsValid__0231FBFC + cmp r0, #0 + beq _0231FB08 + mov r0, #0xb8 + mla r0, sb, r0, r4 + add r1, r4, sb, lsl #3 + add r2, r1, #0x1000 + ldr r1, [r2, #0x2f4] + ldr r2, [r2, #0x2f8] + str r0, [sp, #4] + bl ov29_022E1A90 + mov r0, r8 + bl sub_020018D0 + mov r1, #0xc + mul r1, r0, r1 + ldr r0, [sp, #4] + ldr r3, [sp, #0x10] + str r1, [r0, #0x1c] + mov r1, #0 + str r1, [sp] + ldr r1, [sp, #8] + add r0, r4, fp + mov r2, #0 + bl ov29_023457C8 +_0231FB08: + add sb, sb, #1 +_0231FB0C: + cmp sb, r6 + blt _0231FA9C + mov r0, #0x13 + bl AdvanceFrame + tst r5, #3 + addeq r7, r7, #1 + add r5, r5, #1 + add r8, r8, #0x22 + cmp r5, #0x3c + and r7, r7, #7 + blt _0231FA8C + add r0, r4, #0x8e + mov fp, #1 + mov sb, #0 + add r8, r0, #0x1200 + mov r7, fp + mov r5, #0xb8 + b _0231FB9C +_0231FB54: + add r0, r4, sb, lsl #2 + add r0, r0, #0x1200 + ldrsh r0, [r0, #0x8e] + cmp r0, #0 + blt _0231FB98 + mla r0, sb, r5, r4 + bl ov29_022E1610 + mov r1, r0 + mov r2, fp + add r0, r8, sb, lsl #2 + bl ov29_02345538 + add r0, r4, sb, lsl #2 + add r1, r0, #0x1200 + ldrsh r0, [r1, #0x8e] + ldrsh r1, [r1, #0x90] + bl ov29_023391EC + str r7, [sp, #0xc] +_0231FB98: + add sb, sb, #1 +_0231FB9C: + cmp sb, r6 + blt _0231FB54 + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0231FBC0 + ldr r1, _0231FBF8 ; =0x00000BD1 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _0231FBCC +_0231FBC0: + ldr r1, _0231FBEC ; =0x00000BCF + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_0231FBCC: + mov r0, #1 + bl ov29_022F62CC +_0231FBD4: + mov r0, r4 + bl MemFree +_0231FBDC: + add sp, sp, #0x38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231FBE4: .word 0x02353538 +_0231FBE8: .word 0x000013BC +_0231FBEC: .word 0x00000BCF +_0231FBF0: .word 0x02351844 +_0231FBF4: .word 0x00000222 +_0231FBF8: .word 0x00000BD1 + arm_func_end ov29_0231F6E4 diff --git a/asm/overlay_29_0231FC20.s b/asm/overlay_29_0231FC20.s new file mode 100644 index 00000000..951c938a --- /dev/null +++ b/asm/overlay_29_0231FC20.s @@ -0,0 +1,379 @@ + .include "asm/macros.inc" + .include "overlay_29_0231FC20.inc" + + .text + + arm_func_start TryPounce +TryPounce: ; 0x0231FC20 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r1 + mov r6, r0 + mov r5, r2 + cmp r6, sl + ldr r4, [sl, #0xb4] + beq _0231FC7C + cmp r6, #0 + moveq r0, #0 + beq _0231FC5C + ldr r0, [r6] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_0231FC5C: + cmp r0, #0 + beq _0231FC7C + mov r0, r6 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0231FC88 +_0231FC7C: + mov r0, sl + mov r1, #0xe + bl AbilityIsActive2 +_0231FC88: + cmp r0, #0 + beq _0231FCB4 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0231FDD0 ; =0x00000E56 + mov r0, r6 + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231FCB4: + ldr r0, _0231FDD4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_023440DC + cmp r0, #0 + bne _0231FCE4 + ldr r2, _0231FDD8 ; =0x00000E55 + mov r0, r6 + mov r1, sl + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0231FCE4: + cmp r5, #8 + ldreqb r5, [r4, #0x4c] + mov r0, sl + mov r1, #6 + mov r2, r5 + bl ov29_023049A8 + ldr r1, _0231FDDC ; =0x0235171C + mov r2, r5, lsl #2 + add r0, r1, r5, lsl #2 + mov r5, #0 + ldrsh r8, [r1, r2] + ldrsh sb, [r0, #2] + mov r4, r5 + mov fp, #0x3a +_0231FD1C: + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + add r0, r0, r8 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r1, r1, sb + mov r0, r1, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r6, #0 + cmpgt r7, #0 + ble _0231FDB4 + cmp r6, #0x37 + cmplt r7, #0x1f + bge _0231FDB4 + mov r0, r6 + mov r1, r7 + bl GetTile + ldr r1, [r0, #0xc] + cmp r1, #0 + bne _0231FDB4 + ldrh r0, [r0] + tst r0, #3 + beq _0231FDB4 + mov r0, sl + mov r1, r6 + mov r2, r7 + mov r3, r5 + bl ov29_022F85F0 + mov r0, sl + mov r1, r4 + bl ov29_022E1A40 + mov r0, sl + bl ov29_022E272C + cmp r0, #0 + beq _0231FD1C + mov r0, fp + bl AdvanceFrame + b _0231FD1C +_0231FDB4: + mov r0, sl + bl ov29_022F9C74 + mov r0, sl + bl ov29_02321104 + mov r0, sl + bl ov29_0232124C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231FDD0: .word 0x00000E56 +_0231FDD4: .word 0x02353538 +_0231FDD8: .word 0x00000E55 +_0231FDDC: .word 0x0235171C + arm_func_end TryPounce + + arm_func_start TryBlowAway +TryBlowAway: ; 0x0231FDE0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x30 + ldr r3, _02320154 ; =0x02353538 + mov sl, r0 + ldr r0, [r3] + mov sb, r1 + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + mov r1, #0xa + mov r4, r2 + str r1, [sp, #0x20] + mov fp, #0 + bl ov29_023440DC + cmp r0, #0 + bne _0231FE30 + ldr r2, _02320158 ; =0x00000B97 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _0232014C +_0231FE30: + cmp sl, sb + mov r0, fp + mov r1, sb + bne _0231FE5C + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232015C ; =0x00000B98 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _0232014C +_0231FE5C: + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp sl, sb + beq _0231FEAC + cmp sl, #0 + moveq r0, fp + beq _0231FE8C + ldr r0, [sl] + cmp r0, #1 + moveq r0, #1 + movne r0, fp + and r0, r0, #0xff +_0231FE8C: + cmp r0, #0 + beq _0231FEAC + mov r0, sl + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0231FEB8 +_0231FEAC: + mov r0, sb + mov r1, #0xe + bl AbilityIsActive2 +_0231FEB8: + cmp r0, #0 + beq _0231FED4 + ldr r2, _02320160 ; =0x00000B99 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _0232014C +_0231FED4: + add r0, r4, #4 + and r2, r0, #7 + ldr r3, [sb, #0xb4] + mov r0, sb + mov r1, #6 + strb r2, [r3, #0x4c] + bl ov29_023049A8 + ldr r1, _02320164 ; =0x00000212 + mov r0, sb + bl ov29_022E56A0 + ldr r2, _02320168 ; =0x00000B96 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldr r1, _0232016C ; =0x0235171C + mov r2, r4, lsl #2 + add r0, r1, r4, lsl #2 + ldrsh r8, [r1, r2] + ldrsh r7, [r0, #2] + mov r5, #1 + mov r4, #0 +_0231FF28: + ldrh r0, [sb, #4] + strh r0, [sp, #0x2c] + ldrh r1, [sb, #6] + ldrsh r0, [sp, #0x2c] + strh r1, [sp, #0x2e] + add r0, r0, r8 + strh r0, [sp, #0x2c] + ldrsh r0, [sp, #0x2e] + ldrsh r1, [sp, #0x2c] + add r0, r0, r7 + strh r0, [sp, #0x2e] + cmp r1, #0 + ldrgesh r0, [sp, #0x2e] + cmpge r0, #0 + blt _0232003C + cmp r1, #0x38 + cmplt r0, #0x20 + bge _0232003C + mov r0, r7, lsl #0xa + str r0, [sp, #0x1c] + mov r0, r8, lsl #0xa + str r0, [sp, #0x18] + mov r6, #0 +_0231FF84: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + mov r0, sb + bl ov29_022E1A90 + mov r0, sb + bl ov29_022E272C + cmp r0, #0 + beq _0231FFAC + mov r0, #0x19 + bl AdvanceFrame +_0231FFAC: + add r6, r6, #1 + cmp r6, #6 + blt _0231FF84 + ldrsh r0, [sp, #0x2c] + ldrsh r1, [sp, #0x2e] + bl GetTile + mov r6, r0 + ldr r0, [r6, #0xc] + cmp r0, #0 + movne r4, r0 + movne r5, #0 + bne _0232003C + add r1, sp, #0x2c + mov r0, sb + bl ov29_022FFB90 + cmp r0, #0 + beq _02320010 + ldrh r0, [r6] + tst r0, #3 + moveq r5, #0 + beq _0232003C + tst r0, #0x13 + movne fp, #1 + mov r5, #1 + b _0232003C +_02320010: + ldrsh r1, [sp, #0x2c] + ldrsh r2, [sp, #0x2e] + mov r0, sb + mov r3, #1 + bl ov29_022F85F0 + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #0 + bgt _0231FF28 + mov r5, #1 +_0232003C: + cmp r5, #0 + bne _02320088 + mov r0, sb + add r1, sb, #4 + bl ov29_0232033C + mov r3, #0 + str r3, [sp] + ldr r0, _02320170 ; =0x022C4570 + str r3, [sp, #4] + mov r1, #0x258 + str r1, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldrsh r2, [r0] + mov r0, sl + mov r1, sb + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory + b _0232009C +_02320088: + cmp fp, #0 + beq _0232009C + mov r0, sb + add r1, sb, #4 + bl ov29_0232033C +_0232009C: + bl IsFloorOver + cmp r0, #0 + bne _0232014C + mov r0, r4 + bl EntityIsValid__0232017C + cmp r0, #0 + beq _02320118 + ldr r1, _02320174 ; =0x00000163 + add r0, sp, #0x24 + bl InitMove + add r1, sp, #0x24 + mov r0, r4 + bl ov29_02324854 + cmp r0, #0 + bne _02320118 + mov r0, sl + mov r1, r4 + bl ov29_02307BDC + mov r3, #0 + str r3, [sp] + ldr r0, _02320170 ; =0x022C4570 + ldr r1, _02320178 ; =0x00000259 + str r3, [sp, #4] + str r1, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + ldrsh r2, [r0] + mov r0, sl + mov r1, r4 + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory +_02320118: + bl IsFloorOver + cmp r0, #0 + bne _0232014C + mov r0, sb + bl EntityIsValid__0232017C + cmp r0, #0 + beq _0232014C + mov r0, sb + bl ov29_022F9C74 + mov r0, sb + bl ov29_02321104 + mov r0, sb + bl ov29_02321238 +_0232014C: + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02320154: .word 0x02353538 +_02320158: .word 0x00000B97 +_0232015C: .word 0x00000B98 +_02320160: .word 0x00000B99 +_02320164: .word 0x00000212 +_02320168: .word 0x00000B96 +_0232016C: .word 0x0235171C +_02320170: .word 0x022C4570 +_02320174: .word 0x00000163 +_02320178: .word 0x00000259 + arm_func_end TryBlowAway diff --git a/asm/overlay_29_023201A0.s b/asm/overlay_29_023201A0.s new file mode 100644 index 00000000..41e8de0e --- /dev/null +++ b/asm/overlay_29_023201A0.s @@ -0,0 +1,421 @@ + .include "asm/macros.inc" + .include "overlay_29_023201A0.inc" + + .text + + arm_func_start ov29_023201A0 +ov29_023201A0: ; 0x023201A0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__0232017C + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl ov29_022F9C74 + mov r0, r4 + bl ov29_02321104 + mov r0, r4 + bl ov29_02321238 + ldmia sp!, {r4, pc} + arm_func_end ov29_023201A0 + + arm_func_start ov29_023201D0 +ov29_023201D0: ; 0x023201D0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + mov sl, r0 + mov r4, r1 + mov r0, #0 + mov sb, r2 + mov r1, sl + mov r2, r0 + mov r8, r3 + mov r5, #1 + bl SubstitutePlaceholderStringTags + ldrh r0, [sl, #4] + ldr r1, _02320330 ; =0x0235171C + mov r2, r4, lsl #2 + strh r0, [sp] + ldrh r3, [sl, #6] + ldrsh r6, [r1, r2] + ldr r0, _02320334 ; =0x0235171E + ldrsh r1, [sp] + ldrsh r7, [r0, r2] + strh r3, [sp, #2] + add r0, r1, r6 + ldrsh r1, [sp, #2] + strh r0, [sp] + ldrsh r0, [sp] + add r1, r1, r7 + strh r1, [sp, #2] + cmp r0, #0 + ldrgesh r1, [sp, #2] + cmpge r1, #0 + blt _02320258 + cmp r0, #0x38 + cmplt r1, #0x20 + blt _0232025C +_02320258: + mov r5, #0 +_0232025C: + ldrsh r1, [sp, #2] + bl GetTile + mov r4, r0 + ldr r0, [r4, #0xc] + add r1, sp, #0 + cmp r0, #0 + mov r0, sl + movne r5, #0 + bl ov29_022FFB90 + cmp r0, #0 + beq _02320294 + ldrh r0, [r4] + tst r0, #3 + moveq r5, #0 +_02320294: + cmp r5, #0 + beq _02320328 + ldr r1, _02320338 ; =0x00000212 + mov r0, sl + bl ov29_022E56A0 + mov r0, sl + mov r1, r8 + bl LogMessageByIdWithPopupCheckUser + mov r7, r7, lsl #0xa + mov r6, r6, lsl #0xa + mov r5, #0 + mov r4, #0x19 +_023202C4: + mov r0, sl + mov r1, r6 + mov r2, r7 + bl ov29_022E1A90 + mov r0, sl + bl ov29_022E272C + cmp r0, #0 + beq _023202EC + mov r0, r4 + bl AdvanceFrame +_023202EC: + add r5, r5, #1 + cmp r5, #6 + blt _023202C4 + ldrsh r1, [sp] + ldrsh r2, [sp, #2] + mov r0, sl + mov r3, #1 + bl ov29_022F85F0 + bl IsFloorOver + cmp r0, #0 + bne _02320328 + cmp sb, #0 + beq _02320328 + mov r0, sl + bl ov29_023201A0 +_02320328: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02320330: .word 0x0235171C +_02320334: .word 0x0235171E +_02320338: .word 0x00000212 + arm_func_end ov29_023201D0 + + arm_func_start ov29_0232033C +ov29_0232033C: ; 0x0232033C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldrsh r3, [r1] + ldrsh r2, [r1, #2] + mov r1, #0x18 + mov sl, r0 + smulbb r3, r3, r1 + smulbb r0, r2, r1 + add r2, r3, #0xc + ldr r8, [sl, #0xc] + add r1, r0, #0x10 + sub r0, r8, r2, lsl #8 + mov r6, r2, lsl #8 + mov r7, r1, lsl #8 + bl Abs + cmp r0, #0xc + bge _02320394 + ldr r0, [sl, #0x10] + sub r0, r0, r7 + bl Abs + cmp r0, #0xc + blt _0232041C +_02320394: + ldr sb, [sl, #0x10] + sub r0, r6, r8 + mov r1, #0xc + mov r5, #0 + bl DivideInt + str r0, [sp] + sub r0, r7, sb + mov r1, #0xc + bl DivideInt + mov fp, r0 + mov r4, r5 +_023203C0: + ldr r0, [sp] + add sb, sb, fp + add r8, r8, r0 + mov r0, r5 + str r8, [sp, #4] + str sb, [sp, #8] + bl sub_020018D0 + mov r1, #0xc + mul r1, r0, r1 + str r1, [sl, #0x1c] + mov r0, sl + add r1, sp, #4 + bl ov29_022E1A40 + mov r0, sl + bl ov29_022E272C + cmp r0, #0 + beq _0232040C + mov r0, #0x1a + bl AdvanceFrame +_0232040C: + add r4, r4, #1 + cmp r4, #0xc + add r5, r5, #0xaa + blt _023203C0 +_0232041C: + add r1, sp, #4 + mov r0, sl + str r6, [sp, #4] + str r7, [sp, #8] + mov r2, #0 + str r2, [sl, #0x1c] + bl ov29_022E1A40 + mov r0, #0x1a + bl AdvanceFrame + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_0232033C + + arm_func_start ov29_02320448 +ov29_02320448: ; 0x02320448 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov sl, r0 + ldr r0, [sp, #0x38] + mov sb, r1 + str r0, [sp, #0x38] + str r2, [sp, #4] + mov r8, r3 + ldr fp, [sp, #0x3c] + mov r5, #0 + mov r7, #0x15 + ldr r4, _0232074C ; =0x02353538 + b _023204B4 +_0232047C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__02320764 + cmp r0, #0 + beq _023204B0 + mov r0, r6 + mov r1, r7 + bl AbilityIsActive2 + cmp r0, #0 + bne _023204BC +_023204B0: + add r5, r5, #1 +_023204B4: + cmp r5, #0x14 + blt _0232047C +_023204BC: + cmp r5, #0x14 + beq _023204F4 + mov r0, sl + mov r1, sb + bl ov29_022E55F0 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02320750 ; =0x00000BFC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02320744 +_023204F4: + mov r0, sb + bl GetApparentWeather + cmp r0, #4 + bne _02320518 + ldr r2, _02320750 ; =0x00000BFC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02320744 +_02320518: + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_022E5560 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02320754 ; =0x00000BFB + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, _02320758 ; =0x023529B8 + mov r6, #0 + ldr r4, [r0, r8, lsl #2] + mov r7, r6 + b _023206AC +_0232055C: + ldr r0, [sp, #4] + ldrsh r0, [r0] + add r0, r1, r0 + strh r0, [sp, #0xc] + ldr r0, [sp, #4] + ldrsh r2, [r4, #2] + ldrsh r1, [r0, #2] + ldrsh r0, [sp, #0xc] + add r1, r2, r1 + strh r1, [sp, #0xe] + cmp r0, #0 + ldrgesh r1, [sp, #0xe] + cmpge r1, #0 + blt _023206A8 + cmp r0, #0x38 + cmplt r1, #0x20 + bge _023206A8 + bl GetTileSafe + ldrsh r1, [sp, #0xc] + mov r5, r0 + cmp r1, #1 + ldrgesh r0, [sp, #0xe] + cmpge r0, #1 + blt _02320634 + cmp r1, #0x37 + cmplt r0, #0x1f + bge _02320634 + ldrh r0, [r5] + tst r0, #3 + bne _02320634 + ldrh r0, [r5] + tst r0, #0x10 + bne _02320634 + bic r0, r0, #3 + strh r0, [r5] + ldrh r0, [r5] + mvn r7, #0 + str r7, [sp, #8] + orr r0, r0, #1 + strh r0, [r5] +_023205FC: + ldr r6, [sp, #8] +_02320600: + ldrsh r0, [sp, #0xc] + ldrsh r1, [sp, #0xe] + add r0, r0, r6 + add r1, r1, r7 + bl ov29_02336694 + add r6, r6, #1 + cmp r6, #1 + ble _02320600 + add r7, r7, #1 + cmp r7, #1 + ble _023205FC + mov r6, #1 + mov r7, r6 +_02320634: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _02320664 + cmp r0, sb + beq _02320660 + ldr r0, [r0] + cmp r0, #3 + bne _02320660 + add r0, sp, #0xc + mov r1, #0 + bl ov29_023456BC +_02320660: + mov r6, #1 +_02320664: + ldr r1, [r5, #0xc] + cmp r1, #0 + cmpne r1, sb + beq _023206A8 + ldr r0, [r1] + cmp r0, #1 + bne _023206A8 + ldr r2, _0232075C ; =0x02353700 + mov r0, sl + ldr r5, [r2, r8, lsl #2] + ldr r2, [sp, #0x38] + mov r3, fp + str r5, [sp] + bl ov29_02320AA4 + bl IsFloorOver + cmp r0, #0 + bne _023206B8 +_023206A8: + add r4, r4, #4 +_023206AC: + ldrsh r1, [r4] + cmp r1, #0x63 + bne _0232055C +_023206B8: + bl IsFloorOver + cmp r0, #0 + bne _02320744 + ldr r0, [sb] + cmp r0, #1 + bne _023206FC + ldr r0, _02320760 ; =0x0000026F + cmp fp, r0 + beq _023206FC + ldr r1, _0232075C ; =0x02353700 + ldr r2, [sp, #0x38] + ldr r4, [r1, r8, lsl #2] + mov r0, sl + mov r1, sb + mov r3, fp + str r4, [sp] + bl ov29_02320AA4 +_023206FC: + cmp r6, #0 + beq _02320744 + cmp r7, #0 + beq _0232073C + mov r6, #0 + mov r4, r6 +_02320714: + mov r5, r4 +_02320718: + mov r0, r5 + mov r1, r6 + bl ov29_02336A84 + add r5, r5, #1 + cmp r5, #0x38 + blt _02320718 + add r6, r6, #1 + cmp r6, #0x20 + blt _02320714 +_0232073C: + bl ov29_02339CE8 + bl ov29_02336F4C +_02320744: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232074C: .word 0x02353538 +_02320750: .word 0x00000BFC +_02320754: .word 0x00000BFB +_02320758: .word 0x023529B8 +_0232075C: .word 0x02353700 +_02320760: .word 0x0000026F + arm_func_end ov29_02320448 diff --git a/asm/overlay_29_02320788.s b/asm/overlay_29_02320788.s new file mode 100644 index 00000000..862f9788 --- /dev/null +++ b/asm/overlay_29_02320788.s @@ -0,0 +1,940 @@ + .include "asm/macros.inc" + .include "overlay_29_02320788.inc" + + .text + + arm_func_start ov29_02320788 +ov29_02320788: ; 0x02320788 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov sl, r0 + ldr r0, [sp, #0x38] + mov sb, r1 + str r0, [sp, #0x38] + str r2, [sp, #4] + mov r8, r3 + ldr fp, [sp, #0x3c] + mov r5, #0 + mov r7, #0x15 + ldr r4, _02320A8C ; =0x02353538 + b _023207F4 +_023207BC: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__02320764 + cmp r0, #0 + beq _023207F0 + mov r0, r6 + mov r1, r7 + bl AbilityIsActive2 + cmp r0, #0 + bne _023207FC +_023207F0: + add r5, r5, #1 +_023207F4: + cmp r5, #0x14 + blt _023207BC +_023207FC: + cmp r5, #0x14 + beq _02320834 + mov r0, sl + mov r1, sb + bl ov29_022E55F0 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02320A90 ; =0x00000BFC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02320A84 +_02320834: + mov r0, sb + bl GetApparentWeather + cmp r0, #4 + bne _02320858 + ldr r2, _02320A90 ; =0x00000BFC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02320A84 +_02320858: + mov r0, sl + mov r1, sb + mov r2, r8 + bl ov29_022E5560 + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02320A94 ; =0x00000BFB + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, _02320A98 ; =0x023529B8 + mov r6, #0 + ldr r4, [r0, r8, lsl #2] + mov r7, r6 + b _023209EC +_0232089C: + ldr r0, [sp, #4] + ldrsh r0, [r0] + add r0, r1, r0 + strh r0, [sp, #0xc] + ldr r0, [sp, #4] + ldrsh r2, [r4, #2] + ldrsh r1, [r0, #2] + ldrsh r0, [sp, #0xc] + add r1, r2, r1 + strh r1, [sp, #0xe] + cmp r0, #0 + ldrgesh r1, [sp, #0xe] + cmpge r1, #0 + blt _023209E8 + cmp r0, #0x38 + cmplt r1, #0x20 + bge _023209E8 + bl GetTileSafe + ldrsh r1, [sp, #0xc] + mov r5, r0 + cmp r1, #1 + ldrgesh r0, [sp, #0xe] + cmpge r0, #1 + blt _02320974 + cmp r1, #0x37 + cmplt r0, #0x1f + bge _02320974 + ldrh r0, [r5] + tst r0, #3 + bne _02320974 + ldrh r0, [r5] + tst r0, #0x10 + bne _02320974 + bic r0, r0, #3 + strh r0, [r5] + ldrh r0, [r5] + mvn r7, #0 + str r7, [sp, #8] + orr r0, r0, #1 + strh r0, [r5] +_0232093C: + ldr r6, [sp, #8] +_02320940: + ldrsh r0, [sp, #0xc] + ldrsh r1, [sp, #0xe] + add r0, r0, r6 + add r1, r1, r7 + bl ov29_02336694 + add r6, r6, #1 + cmp r6, #1 + ble _02320940 + add r7, r7, #1 + cmp r7, #1 + ble _0232093C + mov r6, #1 + mov r7, r6 +_02320974: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _023209A4 + cmp r0, sb + beq _023209A0 + ldr r0, [r0] + cmp r0, #3 + bne _023209A0 + add r0, sp, #0xc + mov r1, #0 + bl ov29_023456BC +_023209A0: + mov r6, #1 +_023209A4: + ldr r1, [r5, #0xc] + cmp r1, #0 + cmpne r1, sb + beq _023209E8 + ldr r0, [r1] + cmp r0, #1 + bne _023209E8 + ldr r2, _02320A9C ; =0x02353700 + mov r0, sl + ldr r5, [r2, r8, lsl #2] + ldr r2, [sp, #0x38] + mov r3, fp + str r5, [sp] + bl ov29_02320BCC + bl IsFloorOver + cmp r0, #0 + bne _023209F8 +_023209E8: + add r4, r4, #4 +_023209EC: + ldrsh r1, [r4] + cmp r1, #0x63 + bne _0232089C +_023209F8: + bl IsFloorOver + cmp r0, #0 + bne _02320A84 + ldr r0, [sb] + cmp r0, #1 + bne _02320A3C + ldr r0, _02320AA0 ; =0x0000026F + cmp fp, r0 + beq _02320A3C + ldr r1, _02320A9C ; =0x02353700 + ldr r2, [sp, #0x38] + ldr r4, [r1, r8, lsl #2] + mov r0, sl + mov r1, sb + mov r3, fp + str r4, [sp] + bl ov29_02320BCC +_02320A3C: + cmp r6, #0 + beq _02320A84 + cmp r7, #0 + beq _02320A7C + mov r6, #0 + mov r4, r6 +_02320A54: + mov r5, r4 +_02320A58: + mov r0, r5 + mov r1, r6 + bl ov29_02336A84 + add r5, r5, #1 + cmp r5, #0x38 + blt _02320A58 + add r6, r6, #1 + cmp r6, #0x20 + blt _02320A54 +_02320A7C: + bl ov29_02339CE8 + bl ov29_02336F4C +_02320A84: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02320A8C: .word 0x02353538 +_02320A90: .word 0x00000BFC +_02320A94: .word 0x00000BFB +_02320A98: .word 0x023529B8 +_02320A9C: .word 0x02353700 +_02320AA0: .word 0x0000026F + arm_func_end ov29_02320788 + + arm_func_start ov29_02320AA4 +ov29_02320AA4: ; 0x02320AA4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x24 + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl EntityIsValid__02320764 + cmp r0, #0 + beq _02320BC0 + ldr r1, _02320BC8 ; =0x00000163 + add r0, sp, #0x1a + ldr r4, [r7, #0xb4] + bl InitMove + add r1, sp, #0x1a + mov r0, r7 + bl ov29_02324854 + cmp r0, #0 + bne _02320BC0 + ldrb r0, [r4, #6] + mov r1, #2 + cmp r0, #0 + bne _02320B2C + ldrsh r2, [r4, #0x10] + mov r0, r7 + add r2, r2, r2, lsr #31 + mov r4, r2, asr #1 + bl MonsterIsType + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 + cmp r4, #1 + movlt r4, #1 + b _02320B44 +_02320B2C: + mov r0, r7 + ldr r4, [sp, #0x40] + bl MonsterIsType + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 +_02320B44: + mov ip, #7 + mov r0, r8 + mov r1, r7 + mov r2, #1 + mov r3, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r4, #1 + bne _02320B94 + mov r2, #1 + mov ip, #6 + mov r0, r8 + mov r1, r7 + rsb r3, r2, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 +_02320B94: + add r0, sp, #0x18 + stmia sp, {r0, r6} + mov r3, #0 + str r5, [sp, #8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, r8 + mov r1, r7 + mov r2, r4 + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory +_02320BC0: + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02320BC8: .word 0x00000163 + arm_func_end ov29_02320AA4 + + arm_func_start ov29_02320BCC +ov29_02320BCC: ; 0x02320BCC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x24 + mov r8, r1 + mov sb, r0 + mov r0, r8 + mov r7, r2 + mov r6, r3 + bl EntityIsValid__02320764 + cmp r0, #0 + beq _02320CFC + ldr r1, _02320D04 ; =0x00000163 + add r0, sp, #0x1a + ldr r5, [r8, #0xb4] + bl InitMove + add r1, sp, #0x1a + mov r0, r8 + bl ov29_02324854 + cmp r0, #0 + bne _02320CFC + ldrb r0, [r5, #6] + mov r1, #2 + cmp r0, #0 + bne _02320C54 + ldrsh r2, [r5, #0x10] + mov r0, r8 + add r2, r2, r2, lsr #31 + mov r4, r2, asr #1 + bl MonsterIsType + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 + cmp r4, #1 + movlt r4, #1 + b _02320C6C +_02320C54: + mov r0, r8 + ldr r4, [sp, #0x40] + bl MonsterIsType + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 +_02320C6C: + mov ip, #7 + mov r0, sb + mov r1, r8 + mov r2, #1 + mov r3, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + movne r4, #1 + bne _02320CBC + mov r2, #1 + mov ip, #6 + mov r0, sb + mov r1, r8 + rsb r3, r2, #0xdc0 + str ip, [sp] + bl ov29_02314D40 + cmp r0, #0 + addne r0, r4, r4, lsr #31 + movne r4, r0, asr #1 +_02320CBC: + ldrsh r0, [r5, #0x10] + mov r3, #0 + mov r1, r8 + cmp r4, r0 + subge r4, r0, #1 + add r0, sp, #0x18 + stmia sp, {r0, r7} + str r6, [sp, #8] + cmp r4, #0 + movlt r4, #0 + str r3, [sp, #0xc] + str r3, [sp, #0x10] + mov r0, sb + mov r2, r4 + str r3, [sp, #0x14] + bl CalcDamageFixedNoCategory +_02320CFC: + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02320D04: .word 0x00000163 + arm_func_end ov29_02320BCC + + arm_func_start TryWarp +TryWarp: ; 0x02320D08 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r0, r4 + mov r2, r4 + mov r6, r3 + ldr r5, [r8, #0xb4] + bl SubstitutePlaceholderStringTags + cmp sb, r8 + beq _02320D78 + cmp sb, #0 + moveq r0, r4 + beq _02320D58 + ldr r0, [sb] + cmp r0, #1 + moveq r0, #1 + movne r0, r4 + and r0, r0, #0xff +_02320D58: + cmp r0, #0 + beq _02320D78 + mov r0, sb + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _02320D84 +_02320D78: + mov r0, r8 + mov r1, #0xe + bl AbilityIsActive2 +_02320D84: + cmp r0, #0 + beq _02320DA0 + ldr r2, _023210E8 ; =0x00000E74 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02320DA0: + ldr r0, _023210EC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl ov29_023440DC + cmp r0, #0 + bne _02320DD0 + ldr r2, _023210F0 ; =0x00000E72 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02320DD0: + cmp r7, #1 + bne _02320E20 + ldr r0, _023210EC ; =0x02353538 + ldrsh r1, [r8, #4] + ldr r0, [r0] + add r0, r0, #0xcc00 + ldrsh r2, [r0, #0xe4] + cmp r2, r1 + ldreqsh r1, [r0, #0xe6] + ldreqsh r0, [r8, #6] + cmpeq r1, r0 + bne _02320E20 + ldr r2, _023210F4 ; =0x00000E73 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sb + mov r1, r8 + bl TryInflictPetrifiedStatus + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02320E20: + ldr r2, _023210F8 ; =0x00000E71 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r8 + bl ov29_02307BDC + mov r0, sb + mov r1, r8 + bl ov29_022E5650 + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _02320EA4 + ldrb sl, [r5, #0x4c] + ldr fp, _023210FC ; =0x0237C850 +_02320E60: + ldr r0, [r8, #0x1c] + add r0, r0, #0x800 + str r0, [r8, #0x1c] + cmp r0, #0xa000 + bge _02320EA4 + ldr r0, [fp] + tst r0, #3 + bne _02320E98 + add r0, sl, #1 + and sl, r0, #7 + mov r0, r8 + mov r1, sl + strb sl, [r5, #0x4c] + bl ov29_02304A48 +_02320E98: + mov r0, #0x22 + bl AdvanceFrame + b _02320E60 +_02320EA4: + cmp r7, #5 + addls pc, pc, r7, lsl #2 + b _02320EC8 +_02320EB0: ; jump table + b _02320EC8 ; case 0 + b _02320EF4 ; case 1 + b _02320F30 ; case 2 + b _02320F60 ; case 3 + b _02320F74 ; case 4 + b _02320FB0 ; case 5 +_02320EC8: + add r0, sp, #0 + mov r1, #1 + bl ov29_022E9628 + cmp r0, #0 + bne _02321008 + ldrh r0, [r8, #4] + mov r4, #1 + strh r0, [sp] + ldrh r0, [r8, #6] + strh r0, [sp, #2] + b _02321008 +_02320EF4: + ldr r1, _023210EC ; =0x02353538 + add r0, sp, #0 + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0xe4 + add r1, r1, #0xcc00 + bl ov29_022E99F0 + cmp r0, #0 + bne _02321008 + ldrh r0, [r8, #4] + mov r4, #1 + strh r0, [sp] + ldrh r0, [r8, #6] + strh r0, [sp, #2] + b _02321008 +_02320F30: + add r0, sp, #0 + mov r1, r6 + mov r2, #0 + bl ov29_022E99F0 + cmp r0, #0 + bne _02321008 + ldrh r0, [r8, #4] + mov r4, #1 + strh r0, [sp] + ldrh r0, [r8, #6] + strh r0, [sp, #2] + b _02321008 +_02320F60: + ldrh r0, [r6] + strh r0, [sp] + ldrh r0, [r6, #2] + strh r0, [sp, #2] + b _02321008 +_02320F74: + ldr r1, _023210EC ; =0x02353538 + add r0, sp, #0 + ldr r1, [r1] + mov r2, #1 + add r1, r1, #0xe4 + add r1, r1, #0xcc00 + bl ov29_022E9A28 + cmp r0, #0 + bne _02321008 + ldrh r0, [r8, #4] + mov r4, #1 + strh r0, [sp] + ldrh r0, [r8, #6] + strh r0, [sp, #2] + b _02321008 +_02320FB0: + ldrb r0, [r5, #6] + cmp r0, #0 + ldreqb r0, [r5, #7] + cmpeq r0, #0 + bne _02320FE4 + bl GetLeader + mov r1, r0 + add r0, sp, #0 + add r1, r1, #4 + mov r2, #0 + bl ov29_022E99F0 + cmp r0, #0 + bne _02321008 +_02320FE4: + add r0, sp, #0 + mov r1, #1 + bl ov29_022E9628 + cmp r0, #0 + ldreqh r0, [r8, #4] + moveq r4, #1 + streqh r0, [sp] + ldreqh r0, [r8, #6] + streqh r0, [sp, #2] +_02321008: + ldrsh r1, [sp] + ldrsh r2, [sp, #2] + mov r0, r8 + mov r3, #1 + bl ov29_022F85F0 + mov r0, r8 + mov r1, #0 + bl ov29_022E1A40 + mov r0, r8 + bl sub_01FFB62C + mov r0, #1 + bl ov29_022E2EC4 + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _023210A0 + ldrb sl, [r5, #0x4c] + mov r0, #0xa000 + ldr r6, _023210FC ; =0x0237C850 + str r0, [r8, #0x1c] + mov fp, #0x22 +_0232105C: + ldr r0, [r8, #0x1c] + sub r0, r0, #0x400 + str r0, [r8, #0x1c] + cmp r0, #0 + ble _023210A0 + ldr r0, [r6] + tst r0, #3 + bne _02321094 + add r0, sl, #1 + and sl, r0, #7 + mov r0, r8 + mov r1, sl + strb sl, [r5, #0x4c] + bl ov29_02304A48 +_02321094: + mov r0, fp + bl AdvanceFrame + b _0232105C +_023210A0: + mov r1, #0 + mov r0, #0x22 + str r1, [r8, #0x1c] + bl AdvanceFrame + cmp r4, #0 + beq _023210C8 + ldr r2, _02321100 ; =0x00000E75 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_023210C8: + cmp r7, #1 + bne _023210DC + mov r0, sb + mov r1, r8 + bl TryInflictPetrifiedStatus +_023210DC: + mov r0, r8 + bl ov29_02321238 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023210E8: .word 0x00000E74 +_023210EC: .word 0x02353538 +_023210F0: .word 0x00000E72 +_023210F4: .word 0x00000E73 +_023210F8: .word 0x00000E71 +_023210FC: .word 0x0237C850 +_02321100: .word 0x00000E75 + arm_func_end TryWarp + + arm_func_start ov29_02321104 +ov29_02321104: ; 0x02321104 + stmdb sp!, {r4, lr} + mov r4, r0 + add r1, r4, #4 + bl ov29_022FFC9C + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, r4 + mov r2, #5 + mov r3, #0 + bl TryWarp + ldmia sp!, {r4, pc} + arm_func_end ov29_02321104 + + arm_func_start ov29_02321134 +ov29_02321134: ; 0x02321134 + stmdb sp!, {r4, lr} + mov r4, r0 + add r1, r4, #4 + bl ov29_022FF958 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, r4 + mov r2, #5 + mov r3, #0 + bl TryWarp + ldmia sp!, {r4, pc} + arm_func_end ov29_02321134 + + arm_func_start ov29_02321164 +ov29_02321164: ; 0x02321164 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r0, r4 + add r1, r4, #4 + bl ov29_022FFC9C + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #5 + mov r3, #0 + bl TryWarp + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02321164 + + arm_func_start ov29_0232119C +ov29_0232119C: ; 0x0232119C + stmdb sp!, {r3, r4, r5, lr} + movs r4, r0 + mov r5, r2 + moveq r0, #0 + beq _023211C4 + ldr r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_023211C4: + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r1, #0 + beq _023211E0 + mov r0, r4 + mov r1, #8 + bl ov29_02304A48 +_023211E0: + ldr r0, [r4, #0xb4] + ldrb r0, [r0, #7] + cmp r0, #0 + beq _02321210 + cmp r5, #0 + beq _02321200 + mov r0, r4 + bl ov29_022F42F8 +_02321200: + add r0, r4, #4 + bl ov29_02337A3C + mov r0, #0 + bl ov29_022F62CC +_02321210: + mov r0, r4 + bl ov29_022F9C74 + ldr r1, _02321234 ; =0x02353538 + mov r0, r4 + ldr r1, [r1] + add r1, r1, #0x4000 + ldrb r1, [r1, #0xc4] + bl ov29_02305814 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02321234: .word 0x02353538 + arm_func_end ov29_0232119C + + arm_func_start ov29_02321238 +ov29_02321238: ; 0x02321238 + ldr ip, _02321248 ; =ov29_0232119C + mov r1, #0 + mov r2, #1 + bx ip + .align 2, 0 +_02321248: .word ov29_0232119C + arm_func_end ov29_02321238 + + arm_func_start ov29_0232124C +ov29_0232124C: ; 0x0232124C + ldr ip, _0232125C ; =ov29_0232119C + mov r1, #1 + mov r2, r1 + bx ip + .align 2, 0 +_0232125C: .word ov29_0232119C + arm_func_end ov29_0232124C + + arm_func_start ov29_02321260 +ov29_02321260: ; 0x02321260 + ldr ip, _02321270 ; =ov29_0232119C + mov r1, #0 + mov r2, r1 + bx ip + .align 2, 0 +_02321270: .word ov29_0232119C + arm_func_end ov29_02321260 + + arm_func_start ov29_02321274 +ov29_02321274: ; 0x02321274 + ldr ip, _02321284 ; =ov29_0232119C + mov r1, #1 + mov r2, #0 + bx ip + .align 2, 0 +_02321284: .word ov29_0232119C + arm_func_end ov29_02321274 + + arm_func_start ov29_02321288 +ov29_02321288: ; 0x02321288 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x34] + ldr r5, [sl, #0xb4] + bl ov29_022F87C0 + movs r4, r0 + bne _023212E0 + mov r0, sl + mov r1, r6 + bl ov29_022FAA04 + ldrh r2, [r6, #2] + mov r0, sl + mov r1, #1 + orr r2, r2, #8 + strh r2, [r6, #2] + bl UpdateMovePp + mov r0, #0 + b _02321428 +_023212E0: + add r2, sp, #8 + mov r3, r6 + mov r1, #4 +_023212EC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023212EC + mov r0, r4 + bl ov29_023247B4 + strh r0, [sp, #0xc] + ldrh r0, [sp, #0xc] + cmp r0, #0 + bne _02321360 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02321430 ; =0x00000F11 + mov r0, sl + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sl + mov r1, r6 + bl ov29_022FAA04 + ldrh r2, [r6, #2] + mov r0, sl + mov r1, #1 + orr r2, r2, #8 + strh r2, [r6, #2] + bl UpdateMovePp + mov r0, #0 + b _02321428 +_02321360: + mov r0, sl + mov r1, r6 + mov r2, #1 + bl CanMonsterUseMove + cmp r0, #0 + beq _023213E4 + mov r0, r4 + bl ov29_022E4C84 + mov r0, sl + bl ov29_022E4CD4 + mov r0, #1 + strb r0, [r5, #0x221] + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02321434 ; =0x00000F12 + mov r1, r4 + mov r0, sl + bl LogMessageByIdWithPopupCheckUserTarget + ldr r4, [sp, #0x30] + add r0, sp, #8 + str r4, [sp] + str r0, [sp, #4] + mov r1, sb + mov r2, r8 + mov r3, r7 + mov r0, sl + bl ov29_02322374 + mov r4, r0 + mov r0, #0 + strb r0, [r5, #0x221] + b _02321408 +_023213E4: + ldr r1, [sp, #0x30] + mov r0, sl + str r1, [sp] + mov r1, sb + mov r2, r8 + mov r3, r7 + str r6, [sp, #4] + bl ov29_02322374 + mov r4, r0 +_02321408: + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02321424 + mov r0, sl + mov r1, r6 + bl ov29_022FAA04 +_02321424: + mov r0, r4 +_02321428: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02321430: .word 0x00000F11 +_02321434: .word 0x00000F12 + arm_func_end ov29_02321288 diff --git a/asm/overlay_29_0232145C.s b/asm/overlay_29_0232145C.s new file mode 100644 index 00000000..3983f09b --- /dev/null +++ b/asm/overlay_29_0232145C.s @@ -0,0 +1,4673 @@ + .include "asm/macros.inc" + .include "overlay_29_0232145C.inc" + + .text + + arm_func_start ov29_0232145C +ov29_0232145C: ; 0x0232145C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + mov sb, r1 + mov sl, r0 + cmp sb, #4 + str r2, [sp, #8] + mov r8, r3 + mov r4, sb + ldr r7, [sp, #0x58] + ldr r5, [sl, #0xb4] + movge r0, #0 + bge _02321A40 + bl ov29_022FBAB4 + mov r0, #0 + strb r0, [r5, #0x163] + ldrb r1, [r5, #0xd0] + cmp r1, #1 + bne _023214C4 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02321A48 ; =0x00000E7C + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + b _02321A40 +_023214C4: + cmp r1, #7 + bne _023214EC + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02321A4C ; =0x00000E7D + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + b _02321A40 +_023214EC: + ldrb r1, [r5, #0xbf] + cmp r1, #4 + bne _02321518 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02321A50 ; =0x00000E78 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + b _02321A40 +_02321518: + ldr r1, _02321A54 ; =0x0237CA68 + mov r2, r0 + strb r0, [r1] + str r0, [r1, #0x18] + strb r0, [r1, #4] +_0232152C: + add r1, r5, r0, lsl #1 + add r1, r1, #0x100 + add r0, r0, #1 + strh r2, [r1, #0x94] + cmp r0, #4 + blt _0232152C + mov r1, r2 + b _02321570 +_0232154C: + add r4, r4, #1 + cmp r4, #4 + add r2, r2, #1 + bge _02321578 + add r0, r5, r4, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #2 + beq _02321578 + add r1, r1, #1 +_02321570: + cmp r1, #4 + blt _0232154C +_02321578: + cmp r2, #2 + movge r6, #1 + movlt r6, #0 +_02321584: + add r1, r5, #0x124 + mov r0, sl + add r4, r1, sb, lsl #3 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02321888 + bl IsFloorOver + cmp r0, #0 + bne _02321888 + bl ov29_022ED868 + cmp r0, #0 + bne _023215D8 + ldrh r0, [r4, #4] + bl IsTrappingMove + cmp r0, #0 + beq _023215D8 + ldr r1, _02321A58 ; =0x00000E7E + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + b _02321A40 +_023215D8: + ldrh r0, [r4, #4] + cmp r0, #0x19 + cmpne r0, #0xe3 + mov r0, sl + bne _02321610 + bl ov29_023007A8 + cmp r0, #0 + bne _02321620 + mov r0, sl + mov r1, #1 + bl ov29_02300DCC + cmp r0, #0 + bne _02321888 + b _02321620 +_02321610: + mov r1, #0 + bl ov29_02300DCC + cmp r0, #0 + bne _02321888 +_02321620: + ldr r0, _02321A54 ; =0x0237CA68 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _02321888 + ldrb r0, [r4] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02321848 + mov r2, #1 + str r2, [sp, #0x18] + mov r2, #0 + mov r0, sl + mov r1, r4 + str r2, [sp, #0x14] + bl ov29_023245A4 + ldrb r1, [r4, #6] + mov fp, r0 + cmp r1, #0 + beq _02321684 + cmp fp, #0 + moveq r0, #1 + streq r0, [sp, #0x14] + b _023216AC +_02321684: + cmp fp, #0 + bne _023216AC + ldrh r1, [r4, #4] + mov r0, #0 + bl ov29_0234B084 + ldr r1, _02321A5C ; =0x00000E7F + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + str r0, [sp, #0x18] +_023216AC: + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _02321848 + ldr r1, _02321A54 ; =0x0237CA68 + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [r1, #0x18] + strb fp, [r5, #0x163] + ldrh r1, [r4, #4] + str r0, [sp, #0xc] + cmp r1, #0xe5 + bne _0232179C + mov r0, sl + mov r1, r4 + mov r2, #1 + bl CanMonsterUseMove + cmp r0, #0 + beq _02321764 + add r2, sp, #0x2c + mov r3, r4 + mov r1, #4 +_02321700: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _02321700 + mov r0, sl + bl ov29_02324698 + strh r0, [sp, #0x30] + bl ov29_0234B034 + mov r1, #0 + add r2, sp, #0x2c + mov r3, r1 + bl FormatMoveStringMore + mov r0, sl + mov r1, #0xe80 + bl LogMessageByIdWithPopupCheckUser + str r6, [sp] + add r1, sp, #0x2c + str r1, [sp, #4] + ldr r1, [sp, #8] + mov r0, sl + mov r2, r8 + mov r3, r7 + bl ov29_02322374 + str r0, [sp, #0x10] + b _0232177C +_02321764: + ldr r1, _02321A60 ; =0x00000E81 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + ldr r1, _02321A64 ; =0x00000E79 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_0232177C: + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + beq _023217E4 + mov r0, sl + mov r1, r4 + bl ov29_022FAA04 + b _023217E4 +_0232179C: + ldr r0, _02321A68 ; =0x000001D1 + str r6, [sp] + cmp r1, r0 + mov r0, sl + bne _023217CC + ldr r1, [sp, #8] + mov r2, r8 + mov r3, r7 + str r4, [sp, #4] + bl ov29_02321288 + str r0, [sp, #0x10] + b _023217E4 +_023217CC: + ldr r1, [sp, #8] + mov r2, r8 + mov r3, r7 + str r4, [sp, #4] + bl ov29_02322374 + str r0, [sp, #0x10] +_023217E4: + ldr r0, [sp, #0x14] + cmp r0, #0 + ldrne r0, [sp, #0x10] + cmpne r0, #0 + beq _02321810 + ldrh r0, [r4, #2] + tst r0, #4 + bicne r0, r0, #4 + strneh r0, [r4, #2] + orreq r0, r0, #8 + streqh r0, [r4, #2] +_02321810: + ldr r0, _02321A54 ; =0x0237CA68 + ldr r1, [r0, #0x18] + ldr r0, [sp, #0xc] + cmp r0, r1 + bne _02321848 + cmp r8, #0 + bne _0232183C + ldr r1, _02321A6C ; =0x00000E76 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + b _02321848 +_0232183C: + ldr r1, _02321A70 ; =0x00000E77 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_02321848: + mov r0, #1 + bl ov29_022E38E0 + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02321888 + bl IsFloorOver + cmp r0, #0 + bne _02321888 + add sb, sb, #1 + cmp sb, #4 + bge _02321888 + add r0, r5, sb, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #2 + bne _02321584 +_02321888: + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + beq _023219A0 + mov sb, #0 +_0232189C: + add r0, r5, sb, lsl #1 + add r0, r0, #0x100 + ldrh r1, [r0, #0x94] + cmp r1, #0 + beq _02321994 + ldrh r1, [r0, #0x94] + add r4, sp, #0x24 + mov r0, r4 + bl GetInfoMoveCheckId + ldrb r0, [sp, #0x24] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0232198C + ldrh r1, [r4, #4] + cmp r1, #0xe5 + bne _0232194C + add r2, sp, #0x1c + mov r1, #4 +_023218EC: + ldrh r0, [r4], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023218EC + mov r0, sl + bl ov29_02324698 + strh r0, [sp, #0x20] + bl ov29_0234B034 + mov r1, #0 + add r2, sp, #0x1c + mov r3, r1 + bl FormatMoveStringMore + mov r0, sl + mov r1, #0xe80 + bl LogMessageByIdWithPopupCheckUser + str r6, [sp] + add r1, sp, #0x1c + str r1, [sp, #4] + mov r0, sl + mov r1, #0 + mov r2, r8 + mov r3, r7 + bl ov29_02322374 + b _0232198C +_0232194C: + ldr r0, _02321A68 ; =0x000001D1 + str r6, [sp] + cmp r1, r0 + mov r0, sl + bne _02321978 + ldr r1, [sp, #8] + mov r2, r8 + mov r3, r7 + str r4, [sp, #4] + bl ov29_02321288 + b _0232198C +_02321978: + mov r2, r8 + mov r3, r7 + mov r1, #0 + str r4, [sp, #4] + bl ov29_02322374 +_0232198C: + mov r0, #1 + bl ov29_022E38E0 +_02321994: + add sb, sb, #1 + cmp sb, #4 + blt _0232189C +_023219A0: + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #1 + beq _02321A40 + mov r0, sl + bl EnemyEvolution + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #1 + beq _02321A40 + ldr r1, _02321A54 ; =0x0237CA68 + ldrb r0, [r1] + cmp r0, #0 + beq _02321A3C + mov r2, #0 + mov r0, sl + strb r2, [r1] + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02321A3C + ldr r1, _02321A74 ; =0x022C4714 + mov r0, sl + ldr r4, [sl, #0xb4] + mov r2, #1 + bl CalcStatusDuration + mov r2, #0 + str r2, [sp] + mov r3, r0 + str r2, [sp, #4] + mov r0, sl + mov r1, sl + mov r2, #1 + bl TryInflictPausedStatus + ldrb r0, [r4, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x108] +_02321A3C: + mov r0, #1 +_02321A40: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02321A48: .word 0x00000E7C +_02321A4C: .word 0x00000E7D +_02321A50: .word 0x00000E78 +_02321A54: .word 0x0237CA68 +_02321A58: .word 0x00000E7E +_02321A5C: .word 0x00000E7F +_02321A60: .word 0x00000E81 +_02321A64: .word 0x00000E79 +_02321A68: .word 0x000001D1 +_02321A6C: .word 0x00000E76 +_02321A70: .word 0x00000E77 +_02321A74: .word 0x022C4714 + arm_func_end ov29_0232145C + + arm_func_start ov29_02321A78 +ov29_02321A78: ; 0x02321A78 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl EntityIsValid__02321438 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r4, [r5, #0xb4] + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #1 + beq _02321ABC + ldr r1, _02321CC0 ; =0x00000E82 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321ABC: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #2 + beq _02321AE8 + ldr r1, _02321CC4 ; =0x00000E83 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321AE8: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #4 + beq _02321B14 + ldr r1, _02321CC8 ; =0x00000E84 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321B14: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #8 + beq _02321B44 + ldr r1, _02321CCC ; =0x00000E85 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus +_02321B44: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x10 + beq _02321B74 + ldr r1, _02321CD0 ; =0x00000E86 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus +_02321B74: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x20 + beq _02321BA4 + ldr r1, _02321CD4 ; =0x00000E87 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus +_02321BA4: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x40 + beq _02321BD4 + ldr r1, _02321CD8 ; =0x00000E88 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus +_02321BD4: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x80 + beq _02321C14 + ldr r1, _02321CDC ; =0x00000E89 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _02321CE0 ; =0x022C4720 + mov r0, r5 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r5 + mov r3, #1 + bl TryInflictSleepStatus +_02321C14: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x100 + beq _02321C4C + ldr r1, _02321CE4 ; =0x00000E8A + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r2, #1 + mov ip, #0 + mov r0, r5 + mov r1, r5 + mov r3, r2 + str ip, [sp] + bl TryInflictBurnStatus +_02321C4C: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x200 + beq _02321C7C + ldr r1, _02321CE8 ; =0x00000E8B + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl TryInflictInfatuatedStatus +_02321C7C: + add r0, r4, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #0x400 + beq _02321CB0 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02321CEC ; =0x00000E8C + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + bl ov29_0231B33C +_02321CB0: + add r0, r4, #0x100 + mov r1, #0 + strh r1, [r0, #0x92] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02321CC0: .word 0x00000E82 +_02321CC4: .word 0x00000E83 +_02321CC8: .word 0x00000E84 +_02321CCC: .word 0x00000E85 +_02321CD0: .word 0x00000E86 +_02321CD4: .word 0x00000E87 +_02321CD8: .word 0x00000E88 +_02321CDC: .word 0x00000E89 +_02321CE0: .word 0x022C4720 +_02321CE4: .word 0x00000E8A +_02321CE8: .word 0x00000E8B +_02321CEC: .word 0x00000E8C + arm_func_end ov29_02321A78 + + arm_func_start ov29_02321CF0 +ov29_02321CF0: ; 0x02321CF0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322244 + ldr r4, [r6, #0xb4] + ldr r0, [r4, #0x18c] + tst r0, #1 + beq _02321D48 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0232224C ; =0x00000E8D + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321D48: + ldr r0, [r4, #0x18c] + tst r0, #2 + beq _02321D80 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322250 ; =0x00000E8E + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321D80: + ldr r0, [r4, #0x18c] + tst r0, #4 + beq _02321DB8 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322254 ; =0x00000E8F + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0 + bl TryInflictShadowHoldStatus +_02321DB8: + ldr r0, [r4, #0x18c] + tst r0, #0x80000 + beq _02321E00 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322258 ; =0x00000EA3 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _0232225C ; =0x022C4724 + mov r0, r5 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r6 + mov r1, r6 + bl TryInflictNightmareStatus +_02321E00: + ldr r0, [r4, #0x18c] + tst r0, #8 + beq _02321E3C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + mov r0, r6 + mov r1, #0xe90 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus +_02321E3C: + ldr r0, [r4, #0x18c] + tst r0, #0x10 + beq _02321E78 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322260 ; =0x00000E91 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus +_02321E78: + ldr r0, [r4, #0x18c] + tst r0, #0x20 + beq _02321EB4 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322264 ; =0x00000E92 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus +_02321EB4: + ldr r0, [r4, #0x18c] + tst r0, #0x40 + beq _02321EF0 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322268 ; =0x00000E93 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus +_02321EF0: + ldr r0, [r4, #0x18c] + tst r0, #0x80 + beq _02321F3C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0232226C ; =0x00000E94 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + ldr r1, _02322270 ; =0x022C4720 + mov r0, r6 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r6 + mov r1, r6 + mov r3, #1 + bl TryInflictSleepStatus +_02321F3C: + ldr r0, [r4, #0x18c] + tst r0, #0x100 + beq _02321F80 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322274 ; =0x00000E95 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r2, #1 + mov r1, #0 + mov r0, r6 + str r1, [sp] + mov r1, r6 + mov r3, r2 + bl TryInflictBurnStatus +_02321F80: + ldr r0, [r4, #0x18c] + tst r0, #0x200 + beq _02321FBC + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322278 ; =0x00000E96 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictInfatuatedStatus +_02321FBC: + ldr r0, [r4, #0x18c] + tst r0, #0x800 + beq _02321FF8 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0232227C ; =0x00000E98 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r2, #0 + mov r0, r6 + mov r1, r6 + mov r3, r2 + bl TryInflictConfusedStatus +_02321FF8: + ldr r0, [r4, #0x18c] + tst r0, #0x100000 + beq _02322030 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322280 ; =0x00000E99 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + bl TryInflictFrozenStatus +_02322030: + ldr r0, [r4, #0x18c] + tst r0, #0x1000 + beq _0232206C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322284 ; =0x00000E9B + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0x22 + mov r3, #1 + bl TryInflictConstrictionStatus +_0232206C: + ldr r0, [r4, #0x18c] + tst r0, #0x2000 + beq _023220A8 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322288 ; =0x00000E9A + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictCringeStatus +_023220A8: + ldr r0, [r4, #0x18c] + tst r0, #0x4000 + beq _023220E4 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0232228C ; =0x00000E9C + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r2, #0 + mov r0, r6 + mov r1, r6 + mov r3, r2 + bl ov29_023176CC +_023220E4: + ldr r0, [r4, #0x18c] + tst r0, #0x8000 + beq _0232211C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322290 ; =0x00000E9D + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0 + bl TrySealMove +_0232211C: + ldr r0, [r4, #0x18c] + tst r0, #0x10000 + beq _02322150 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322294 ; =0x00000E9E + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + bl ov29_0231657C +_02322150: + ldr r0, [r4, #0x18c] + tst r0, #0x20000 + beq _0232218C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _02322298 ; =0x00000E9F + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r5 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage +_0232218C: + ldr r0, [r4, #0x18c] + tst r0, #0x200000 + beq _023221C4 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + mov r0, r6 + mov r1, #0xea0 + bl LogMessageByIdWithPopupCheckUser + mov r0, r6 + mov r1, r6 + mov r2, #0 + bl ov29_0231662C +_023221C4: + ldr r0, [r4, #0x18c] + tst r0, #0x400000 + beq _02322200 + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0232229C ; =0x00000EA1 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r2, #1 + mov r0, r6 + mov r1, r6 + mov r3, r2 + bl LowerSpeed +_02322200: + ldr r0, [r4, #0x18c] + tst r0, #0x40000 + beq _0232223C + add r0, r4, #0x100 + ldrsh r1, [r0, #0x90] + mov r0, #0 + bl ov29_02344B9C + ldr r1, _023222A0 ; =0x00000EA2 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r2, #0 + mov r0, r5 + mov r1, r5 + mov r3, r2 + bl TryWarp +_0232223C: + mov r0, #0 + str r0, [r4, #0x18c] +_02322244: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232224C: .word 0x00000E8D +_02322250: .word 0x00000E8E +_02322254: .word 0x00000E8F +_02322258: .word 0x00000EA3 +_0232225C: .word 0x022C4724 +_02322260: .word 0x00000E91 +_02322264: .word 0x00000E92 +_02322268: .word 0x00000E93 +_0232226C: .word 0x00000E94 +_02322270: .word 0x022C4720 +_02322274: .word 0x00000E95 +_02322278: .word 0x00000E96 +_0232227C: .word 0x00000E98 +_02322280: .word 0x00000E99 +_02322284: .word 0x00000E9B +_02322288: .word 0x00000E9A +_0232228C: .word 0x00000E9C +_02322290: .word 0x00000E9D +_02322294: .word 0x00000E9E +_02322298: .word 0x00000E9F +_0232229C: .word 0x00000EA1 +_023222A0: .word 0x00000EA2 + arm_func_end ov29_02321CF0 + + arm_func_start ov29_023222A4 +ov29_023222A4: ; 0x023222A4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r2, #1 + mov r7, r0 + mov r6, r1 + mov r4, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x50 + mov r0, r7 + mov r1, r6 + mov r2, #1 + moveq r4, #0xa + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x80 + beq _02322304 + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x90 + bne _0232236C +_02322304: + mov r0, r7 + mov r1, r6 + mov r2, #1 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x90 + moveq r4, #2 + ldrh r0, [r6, #4] + movne r4, #1 + cmp r0, #0x97 + bne _02322340 + mov r0, r7 + bl GetApparentWeather + cmp r0, #1 + beq _0232236C +_02322340: + cmp r5, #0 + beq _0232236C + ldrh r0, [r6, #4] + bl Is2TurnsMove + cmp r0, #0 + beq _0232236C + mov r0, r7 + mov r1, r6 + bl ov29_023245A4 + cmp r0, #0 + moveq r4, #0 +_0232236C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_023222A4 + + arm_func_start ov29_02322374 +ov29_02322374: ; 0x02322374 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x13c + ldr sl, [sp, #0x164] + mov r6, r0 + mov r7, #0 + mov r0, #1 + str r1, [sp, #0xc] + mov r5, r2 + str r3, [sp, #0x10] + mov r8, sl + str r7, [sp, #0x38] + ldr r4, [sp, #0x160] + bl ov29_022E38E0 + mov r0, r6 + mov r1, sl + bl ov29_023245A4 + cmp r0, #0 + mov r0, r6 + mov r2, #1 + mov r1, sl + beq _023223D0 + bl ov29_02324BE8 + b _023223D4 +_023223D0: + bl CanMonsterUseMove +_023223D4: + mov sb, r0 + cmp sb, #0 + beq _023224C4 + ldrh r1, [sl, #4] + ldr r0, _02322D18 ; =0x0000014A + cmp r1, r0 + bne _02322460 + mov r0, #0xa8 + bl DungeonRandInt + mov r2, r0 + ldr r1, _02322D1C ; =0x0237CA88 + add r0, sp, #0x28 + str r2, [r1] + ldr r1, _02322D20 ; =0x022C5DDC + mov r2, r2, lsl #3 + ldrh r1, [r1, r2] + bl InitMove + ldrb r1, [sl] + ldr r0, _02322D24 ; =0x00000EA4 + strb r1, [sp, #0x28] + ldrh r1, [sl, #2] + strh r1, [sp, #0x2a] + bl StringFromMessageId + mov r2, r0 + str r5, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, r6 + mov r1, sl + add r3, sp, #0x38 + bl ov29_02322DDC + mov r0, #1 + bl ov29_022E38E0 + add r8, sp, #0x28 + b _023224C4 +_02322460: + cmp r1, #0x77 + bne _023224C4 + bl ov29_023280D4 + ldr r1, _02322D28 ; =0x022C4E40 + mov r0, r0, lsl #3 + ldrh r1, [r1, r0] + add r0, sp, #0x30 + bl InitMove + ldrb r1, [sl] + ldr r0, _02322D2C ; =0x00000EA5 + strb r1, [sp, #0x30] + ldrh r1, [sl, #2] + strh r1, [sp, #0x32] + bl StringFromMessageId + mov r2, r0 + str r5, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, r6 + mov r1, sl + add r3, sp, #0x38 + bl ov29_02322DDC + mov r0, #1 + bl ov29_022E38E0 + add r8, sp, #0x30 +_023224C4: + mov r0, r6 + mov r1, r8 + mov r2, #1 + bl ov29_023222A4 + and fp, r0, #0xff + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + ldr r2, [r6, #0xb4] + mov r3, r1 + bl ov29_0230040C + bl ov29_0234B034 + mov r1, #0 + mov r2, r8 + mov r3, r1 + bl FormatMoveStringMore + mov r0, r6 + mov r1, r8 + bl ov29_023245A4 + cmp r0, #0 + beq _02322554 + ldr r0, _02322D30 ; =0x00000EA6 + bl StringFromMessageId + cmp sb, #0 + ldr r1, [r6, #0xb4] + mov r2, #0 + str r0, [sp, #0x20] + strb r2, [r1, #0x10b] + cmpne sl, r8 + beq _02322598 + mov r0, r6 + mov r1, r8 + mov r2, #1 + bl ov29_02324BE8 + mov sb, r0 + b _02322598 +_02322554: + cmp r5, #0 + bne _0232256C + ldrh r0, [r8, #4] + bl GetMoveMessageFromId + str r0, [sp, #0x20] + b _02322578 +_0232256C: + ldr r0, _02322D34 ; =0x00000EA7 + bl StringFromMessageId + str r0, [sp, #0x20] +_02322578: + cmp sb, #0 + cmpne sl, r8 + beq _02322598 + mov r0, r6 + mov r1, r8 + mov r2, #1 + bl CanMonsterUseMove + mov sb, r0 +_02322598: + cmp sb, #0 + ldrne r0, [sp, #0xc] + cmpne r0, #0 + beq _023225D4 + ldrh r1, [sl, #4] + ldr r0, _02322D18 ; =0x0000014A + cmp r1, r0 + cmpne r1, #0x77 + mov r0, r6 + bne _023225CC + mov r1, sl + bl ov29_022FAA04 + b _023225D4 +_023225CC: + mov r1, r8 + bl ov29_022FAA04 +_023225D4: + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #0xf3] + cmp r0, #1 + bne _02322630 + ldrh r0, [r8, #4] + bl FailsWhileMuzzled + cmp r0, #0 + beq _02322630 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, [sp, #0x20] + mov r0, r6 + bl LogMessageWithPopupCheckUser + mov r0, #0xa + mov r1, #0x3f + bl ov29_022EA370 + ldr r1, _02322D38 ; =0x00000E7B + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + b _02322D10 +_02322630: + cmp sb, #0 + bne _023226D0 + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + ldr r2, [r6, #0xb4] + mov r3, r1 + bl ov29_0230040C + cmp r5, #0 + bne _02322694 + bl ov29_0234B034 + mov r1, #0 + mov r2, r8 + mov r3, r1 + bl FormatMoveStringMore + ldr r1, [sp, #0x20] + mov r0, r6 + bl LogMessageWithPopupCheckUser + mov r0, #0xa + mov r1, #0x3f + bl ov29_022EA370 + ldr r1, _02322D3C ; =0x00000E79 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + b _023226C8 +_02322694: + mov r0, r5, lsl #0x10 + mov r1, r0, asr #0x10 + mov r0, #0 + bl ov29_0234B084 + ldr r1, [sp, #0x20] + mov r0, r6 + bl LogMessageWithPopupCheckUser + mov r0, #0xa + mov r1, #0x3f + bl ov29_022EA370 + ldr r1, _02322D40 ; =0x00000E7A + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_023226C8: + mov r0, #0 + b _02322D10 +_023226D0: + ldr r0, _02322D44 ; =0x0237CA68 + mov r1, #0 + str r1, [r0, #0x10] + str r1, [r0, #0xc] + str r1, [r0, #0x14] + strb r1, [r0, #3] + strb r1, [r0, #2] + strb r1, [r0, #5] + str r1, [r0, #8] + strb r1, [r0, #1] + cmp r4, #0 + beq _02322714 + ldr r1, [r6, #0xb4] + ldrb r0, [r1, #0x15d] + cmp r0, #4 + addlo r0, r0, #1 + strlob r0, [r1, #0x15d] +_02322714: + ldrh r1, [r8, #4] + ldr r0, _02322D48 ; =0x00000163 + cmp r1, r0 + bne _02322768 + mov r0, r6 + mov r1, #0x2b + bl IqSkillIsEnabled + cmp r0, #0 + movne r7, #1 + bne _02322768 + mov r0, r6 + mov r1, #0x28 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02322768 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02322D4C ; =0x022C4584 + ldrsh r1, [r1] + cmp r0, r1 + movlt r7, #1 +_02322768: + cmp r7, #0 + movne r0, #2 + strne r0, [sp, #0x24] + bne _023227B0 + mov r0, r6 + mov r1, #0x5b + bl AbilityIsActive2 + cmp r0, #0 + mov r0, r8 + beq _023227A8 + bl GetMoveNbStrikes + str r0, [sp, #0x24] + cmp r0, #0 + moveq r0, #5 + streq r0, [sp, #0x24] + b _023227B0 +_023227A8: + bl ov29_02324514 + str r0, [sp, #0x24] +_023227B0: + ldr r0, _02322D50 ; =0x022C45B8 + mov r7, #0 + ldrsh r0, [r0] + str r0, [sp, #0x14] + b _02322C8C +_023227C4: + ldr r0, _02322D44 ; =0x0237CA68 + mov sb, #1 + ldrb r1, [r0, #1] + cmp r1, #0 + ldreqb r0, [r0, #4] + cmpeq r0, #0 + bne _02322C98 + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, sb + beq _02322D10 + bl IsFloorOver + cmp r0, #0 + movne r0, sb + bne _02322D10 + ldr r0, [sp, #0x10] + ldr sl, [r6, #0xb4] + cmp r0, #0 + bne _02322824 + ldrh r0, [r8, #4] + cmp r0, #0x19 + cmpne r0, #0xe3 + bne _0232284C +_02322824: + mov r0, r6 + bl ov29_023007A8 + cmp r0, #0 + bne _02322860 + mov r0, r6 + mov r1, #1 + bl ov29_02300DCC + cmp r0, #0 + bne _02322C98 + b _02322860 +_0232284C: + mov r0, r6 + mov r1, #0 + bl ov29_02300DCC + cmp r0, #0 + bne _02322C98 +_02322860: + mov r0, #0 + strb r0, [sl, #0x154] + bl GravityIsActive + cmp r0, #0 + beq _023228A4 + ldrh r1, [r8, #4] + cmp r1, #0xcc + cmpne r1, #0xcd + cmpne r1, #0xce + cmpne r1, #0x99 + cmpne r1, #0xfe + ldrne r0, _02322D54 ; =0x000001ED + cmpne r1, r0 + bne _023228A4 + mov r0, r6 + bl ov29_023383A8 + b _02322C98 +_023228A4: + ldrh r0, [r8, #4] + cmp r0, #9 + bne _023228CC + ldr sb, [r6, #0xb4] + mov r0, #8 + bl DungeonRandInt + strb r0, [sb, #0x4c] + mov r0, r6 + bl UpdateAiTargetPos + mov sb, #0 +_023228CC: + ldr r0, _02322D58 ; =0x0235370C + mov r1, #0 + str r1, [r0] + str r1, [sp, #0x38] + cmp fp, #1 + bhi _02322918 + add r0, sp, #0x38 + mov r1, r6 + mov r2, r8 + bl ov29_02324030 + add r0, sp, #0x38 + mov r1, r6 + bl ov29_02324C9C + cmp r7, #0 + cmpne sb, #0 + beq _02322918 + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _02322C98 +_02322918: + mov r0, #0 + str r0, [sp, #0x1c] + str r0, [sp, #0x18] + b _02322A54 +_02322928: + ldr r0, [sp, #0x18] + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x18] + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322A54 + ldr r0, [sl] + cmp r0, #1 + bne _02322A54 + mov r0, sl + mov r1, #0x24 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02322A54 + mov r0, sl + mov r1, r6 + mov r2, #0x1f + mov r3, #0 + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + bne _02322A54 + mov r0, r6 + mov r1, sl + bl ov29_022FB678 + cmp r0, #0 + beq _02322A54 + mov r0, r6 + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + mov r0, r6 + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf + cmp sb, #0x60 + cmpeq r0, #0 + beq _023229FC + cmp sb, #0 + cmpne sb, #0x10 + cmpne sb, #0x20 + cmpne sb, #0x40 + cmpne sb, #0x50 + cmpne sb, #0x70 + cmpne sb, #0x80 + cmpne sb, #0x90 + bne _02322A54 +_023229FC: + mov r0, #0x64 + bl DungeonRandInt + mov r1, r0, lsl #0x10 + ldr r0, [sp, #0x14] + cmp r0, r1, asr #16 + ble _02322A54 + mov r0, sl + bl ov29_022E5864 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, r6 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _02322D5C ; =0x00000EA9 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser + mov r0, #1 + str r0, [sp, #0x1c] + b _02322A68 +_02322A54: + ldr r0, [sp, #0x18] + add r1, sp, #0x38 + ldr sl, [r1, r0, lsl #2] + cmp sl, #0 + bne _02322928 +_02322A68: + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _02322C98 + cmp r7, #0 + moveq r2, #1 + movne r2, #0 + and r2, r2, #0xff + str r5, [sp] + str r2, [sp, #4] + ldr r2, [sp, #0x20] + add r3, sp, #0x38 + mov r0, r6 + mov r1, r8 + bl ov29_02322DDC + ldr r1, _02322D58 ; =0x0235370C + mov sb, r0 + ldr r0, [r1] + mov r1, #0 + str r1, [sp, #0x20] + cmp r0, #0 + beq _02322AC0 + bl ov29_022F9840 +_02322AC0: + ldr r1, [r6, #0xb4] + ldrb r0, [r1, #0xd0] + cmp r0, #2 + cmpne r0, #4 + addne r0, r1, #0x100 + movne r1, #0 + strneh r1, [r0, #0x7e] + strneh r1, [r0, #0x80] + ldr r0, _02322D44 ; =0x0237CA68 + cmp fp, #0 + ldr r1, [r0, #0x10] + add r1, r1, #1 + str r1, [r0, #0x10] + beq _02322B24 + ldrh r0, [r8, #4] + bl ov10_022BFD6C + mov r3, sb + str r5, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + mov r0, r6 + mov r1, r8 + mov r2, fp + bl ov29_023230FC + b _02322B54 +_02322B24: + ldrh r1, [r8, #4] + ldr r0, _02322D60 ; =0x000001F6 + mov r2, r8 + cmp r1, r0 + ldreq r0, [r6, #0xb4] + moveq r1, #1 + streqb r1, [r0, #0x170] + add r0, sp, #0x38 + mov r1, r6 + mov r3, r5 + str r4, [sp] + bl ExecuteMoveEffect +_02322B54: + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322C98 + mov r0, r6 + bl ov29_02304B14 + mov r0, r6 + bl IsMonster__02322DB8 + cmp r0, #0 + beq _02322BE8 + ldrb r0, [r6, #0x28] + cmp r0, #0 + beq _02322BD8 + mov sb, #0 + mov sl, #0x4a + b _02322BD0 +_02322B94: + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322BD8 + add r0, r6, #0x2c + bl sub_0201D1B0 + cmp r0, #0 + ldrneb r0, [r6, #0x28] + cmpne r0, #0 + beq _02322BD8 + mov r0, sl + bl AdvanceFrame + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_02322BD0: + cmp sb, #0x64 + blt _02322B94 +_02322BD8: + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322C98 +_02322BE8: + mov r0, r6 + mov r1, #0x2c + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r1, [r6, #0xb4] + ldrneb r0, [r1, #0x154] + cmpne r0, #0 + ldrneb r0, [r1, #0xd2] + cmpne r0, #1 + cmpne r0, #0xb + beq _02322C68 + mov r2, #0 + strb r2, [r1, #0xd3] + ldr r1, [r6, #0xb4] + ldr r0, _02322D44 ; =0x0237CA68 + strb r2, [r1, #0x154] + ldr r1, [r6, #0xb4] + sub r7, r7, #1 + strb r2, [r1, #0x10b] + ldr r1, [r0, #0x18] + mov r2, #0 + sub r1, r1, #1 + str r1, [r0, #0x18] + ldrb r0, [r8, #6] + mov r1, r8 + cmp r0, #0 + subne r0, r0, #1 + strneb r0, [r8, #6] + mov r0, r6 + bl ov29_023222A4 + and fp, r0, #0xff + b _02322C88 +_02322C68: + ldr r2, [r6, #0xb4] + ldrb r0, [r2, #0x154] + cmp r0, #0 + bne _02322C88 + mov r1, #0 + mov r0, r6 + strb r1, [r2, #0x154] + bl ov29_02318D58 +_02322C88: + add r7, r7, #1 +_02322C8C: + ldr r0, [sp, #0x24] + cmp r7, r0 + blt _023227C4 +_02322C98: + ldr r0, _02322D44 ; =0x0237CA68 + ldrb r0, [r0, #5] + cmp r0, #0 + beq _02322CC4 + mov r0, r6 + mov r1, r6 + mov r2, #1 + bl EndFrozenClassStatus + mov r0, r6 + mov r1, r6 + bl ov29_023068C4 +_02322CC4: + ldr r0, _02322D44 ; =0x0237CA68 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _02322D0C + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02322D0C + mov r2, #0 + ldr r4, [r6, #0xb4] + mov r0, r6 + mov r1, r6 + mov r3, r2 + bl TryInflictConfusedStatus + ldrb r0, [r4, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x108] +_02322D0C: + mov r0, #1 +_02322D10: + add sp, sp, #0x13c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02322D18: .word 0x0000014A +_02322D1C: .word 0x0237CA88 +_02322D20: .word 0x022C5DDC +_02322D24: .word 0x00000EA4 +_02322D28: .word 0x022C4E40 +_02322D2C: .word 0x00000EA5 +_02322D30: .word 0x00000EA6 +_02322D34: .word 0x00000EA7 +_02322D38: .word 0x00000E7B +_02322D3C: .word 0x00000E79 +_02322D40: .word 0x00000E7A +_02322D44: .word 0x0237CA68 +_02322D48: .word 0x00000163 +_02322D4C: .word 0x022C4584 +_02322D50: .word 0x022C45B8 +_02322D54: .word 0x000001ED +_02322D58: .word 0x0235370C +_02322D5C: .word 0x00000EA9 +_02322D60: .word 0x000001F6 + arm_func_end ov29_02322374 + + arm_func_start DefenderAbilityIsActive__02322D64 +DefenderAbilityIsActive__02322D64: ; 0x02322D64 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r7, r6 + beq _02322DA8 + bl IsMonster__02322DB8 + cmp r0, #0 + cmpne r4, #0 + beq _02322DA8 + mov r0, r7 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02322DA8: + mov r0, r6 + mov r1, r5 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end DefenderAbilityIsActive__02322D64 + + arm_func_start IsMonster__02322DB8 +IsMonster__02322DB8: ; 0x02322DB8 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__02322DB8 + + arm_func_start ov29_02322DDC +ov29_02322DDC: ; 0x02322DDC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + mov r8, r2 + mov r5, r4 + mov sl, r0 + mov sb, r1 + mov fp, r3 + ldr r7, [sp, #0x28] + bl ov29_022E272C + cmp r0, #0 + movne r5, #1 + cmp r8, #0 + beq _02322ED0 + mov r6, #0 + b _02322E38 +_02322E18: + ldr r0, [fp, r6, lsl #2] + cmp r0, #0 + beq _02322E40 + bl ov29_022E272C + cmp r0, #0 + movne r5, #1 + bne _02322E40 + add r6, r6, #1 +_02322E38: + cmp r6, #0x41 + blt _02322E18 +_02322E40: + cmp r5, #0 + beq _02322E94 + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + ldr r2, [sl, #0xb4] + mov r3, r1 + bl ov29_0230040C + cmp r7, #0 + bne _02322E80 + bl ov29_0234B034 + mov r1, #0 + mov r2, sb + mov r3, r1 + bl FormatMoveStringMore + b _02322EAC +_02322E80: + mov r0, r7, lsl #0x10 + mov r1, r0, asr #0x10 + mov r0, #0 + bl ov29_0234B084 + b _02322EAC +_02322E94: + cmp r7, #0 + beq _02322EAC + mov r0, r7, lsl #0x10 + mov r1, r0, asr #0x10 + mov r0, #0 + bl ov29_0234B084 +_02322EAC: + ldrh r1, [sb, #4] + ldr r0, _02322F74 ; =0x00000163 + cmp r1, r0 + mov r0, sl + mov r1, r8 + beq _02322ECC + bl LogMessageWithPopup + b _02322ED0 +_02322ECC: + bl LogMessageQuiet +_02322ED0: + cmp r5, #0 + beq _02322F5C + ldrb r0, [sp, #0x2c] + mov r1, sb + cmp r0, #0 + mov r0, sl + beq _02322EF8 + mov r2, #1 + bl ov29_02324E78 + b _02322F00 +_02322EF8: + mov r2, #0 + bl ov29_02324E78 +_02322F00: + mov r4, r0 + ldrh r0, [sb, #4] + cmp r0, #0xfe + bne _02322F24 + mov r0, sl + bl EntityIsValid__02321438 + cmp r0, #0 + movne r0, #0xff + strneb r0, [sl, #0xaf] +_02322F24: + ldrh r0, [sb, #4] + bl ov00_022BFDAC + cmp r0, #0 + beq _02322F4C + ldr r1, [sl, #0xb4] + mov r0, sl + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 + mov r0, #1 + bl ov29_022E38E0 +_02322F4C: + mov r0, sl + mov r1, sb + bl ov29_023250D4 + b _02322F6C +_02322F5C: + ldr r1, [sl, #0xb4] + mov r0, sl + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 +_02322F6C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02322F74: .word 0x00000163 + arm_func_end ov29_02322DDC + + arm_func_start ov29_02322F78 +ov29_02322F78: ; 0x02322F78 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x18 + ldr r4, _023230F4 ; =0x02353538 + mov r7, r0 + ldr r0, [r4] + mov r6, r1 + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + mov r5, r2 + mov r8, r3 + cmp r0, #0 + ldr r4, [r7, #0xb4] + mvnne r0, #0 + bne _023230EC + ldrsh r0, [r4, #4] + bl GetBodySize + cmp r0, #4 + blo _02322FC8 + cmp r8, #1 + beq _023230E8 +_02322FC8: + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r5, #4] + mov r2, #1 + bl GetMoveAnimationId + bl GetMoveAnimation + ldrsh r0, [r0, #6] + ldrsh r3, [r6, #2] + mov r1, #0x18 + ldrsh r2, [r6] + smulbb r3, r3, r1 + smulbb r2, r2, r1 + add r3, r3, #0x10 + add r2, r2, #0xc + mov r6, r3, lsl #8 + mov r2, r2, lsl #8 + mov r3, r2, asr #8 + mov r2, r6, asr #8 + strh r3, [sp] + strh r2, [sp, #2] + cmp r0, #0 + beq _023230E0 + mov r0, #0x5e + bl AdvanceFrame + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r5, #4] + mov r2, #1 + bl GetMoveAnimationId + mov r1, r0 + ldrsh r0, [r4, #4] + bl ov10_022BF01C + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + ldreq r0, _023230F8 ; =0x02352A54 + ldreqh r1, [r0] + streqh r1, [sp, #0xc] + ldreqh r0, [r0, #2] + streqh r0, [sp, #0xe] + beq _02323084 + add r0, sp, #0xc + add r1, r7, #0x2c + and r2, r2, #0xff + bl sub_0201CF90 +_02323084: + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r5, #4] + mov r2, #1 + bl GetMoveAnimationId + strh r0, [sp, #4] + ldrsh r2, [r4, #4] + add r0, sp, #4 + add r1, sp, #0 + strh r2, [sp, #6] + ldr r3, [r7, #0xc] + mov r2, #0 + mov r3, r3, asr #8 + strh r3, [sp, #8] + ldr r3, [r7, #0x10] + mov r3, r3, asr #8 + strh r3, [sp, #0xa] + ldrb r3, [r4, #0x4c] + str r3, [sp, #0x10] + str r2, [sp, #0x14] + bl ov10_022BE9E8 + b _023230EC +_023230E0: + sub r0, r1, #0x19 + b _023230EC +_023230E8: + mvn r0, #0 +_023230EC: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023230F4: .word 0x02353538 +_023230F8: .word 0x02352A54 + arm_func_end ov29_02322F78 + + arm_func_start ov29_023230FC +ov29_023230FC: ; 0x023230FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc0 + ldr r4, _023238F4 ; =0x02352A54 + mov r8, r0 + mov r0, #0 + str r0, [sp, #0x88] + ldr r0, [r4, #4] + mov r7, r1 + ldr r1, [r4, #8] + str r0, [sp, #0xb0] + str r1, [sp, #0xb4] + ldr r1, [sp, #0x88] + ldrh r0, [r7, #4] + mov r6, r2 + mov fp, r3 + str r1, [sp, #0x84] + mov r5, r1 + ldr sb, [r8, #0xb4] + bl GetMoveAnimationSpeed + cmp r0, #1 + moveq sl, #2 + beq _02323160 + cmp r0, #2 + moveq sl, #3 + movne sl, #6 +_02323160: + ldrsh r2, [r8, #4] + ldr r0, _023238F8 ; =0x0235171C + ldr r1, _023238FC ; =0x0235171E + strh r2, [sp, #0xbc] + ldrsh r2, [r8, #6] + mov r4, #0 + strh r2, [sp, #0xbe] + ldrb r2, [sb, #0x4c] + mov r2, r2, lsl #2 + ldrsh r0, [r0, r2] + str r0, [sp, #0x6c] + ldrsh r0, [r1, r2] + str r0, [sp, #0x68] + b _02323214 +_02323198: + ldrsh r2, [sp, #0xbc] + cmp r2, #0 + ldrgesh r1, [sp, #0xbe] + cmpge r1, #0 + blt _0232321C + cmp r2, #0x38 + cmplt r1, #0x20 + bge _0232321C + ldr r0, [sp, #0x6c] + add r0, r2, r0 + strh r0, [sp, #0xbc] + ldr r0, [sp, #0x68] + add r0, r1, r0 + strh r0, [sp, #0xbe] + ldr r0, [sp, #0x84] + ldrsh r1, [sp, #0xbe] + add r0, r0, #1 + str r0, [sp, #0x84] + ldrsh r0, [sp, #0xbc] + bl GetTile + ldrh r1, [r0] + tst r1, #3 + beq _0232321C + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _02323210 + ldr r0, [r1] + cmp r0, #1 + moveq r5, r1 + beq _0232321C +_02323210: + add r4, r4, #1 +_02323214: + cmp r4, r6 + blt _02323198 +_0232321C: + mov r0, r8 + ldrh r1, [r7, #4] + bl ov29_02324D60 + cmp r0, #0 + beq _02323250 + mov r0, r8 + mov r1, r7 + bl ov29_023245A4 + cmp r0, #0 + mvneq r0, #0 + streq r0, [sp, #0xb0] + streq r0, [sp, #0xb4] + beq _023232E4 +_02323250: + mov r0, r8 + add r1, sp, #0xbc + mov r2, r7 + mov r3, r6 + bl ov29_02322F78 + str r0, [sp, #0xb0] + ldrb r0, [sp, #0xf0] + cmp r0, #0 + beq _023232E4 + cmp r5, #0 + mvneq r0, #0 + streq r0, [sp, #0xb4] + beq _023232E4 + ldrsh r2, [r8, #4] + mov r0, r5 + add r1, sp, #0xb8 + strh r2, [sp, #0xb8] + ldrsh r4, [r8, #6] + mov r2, r7 + mov r3, r6 + strh r4, [sp, #0xba] + bl ov29_02322F78 + ldrsh r2, [r5, #4] + str r0, [sp, #0xb4] + ldr r0, _023238F8 ; =0x0235171C + strh r2, [sp, #0xb8] + ldrsh r2, [r5, #6] + ldr r1, _023238FC ; =0x0235171E + strh r2, [sp, #0xba] + ldrb r2, [sb, #0x4c] + add r2, r2, #4 + mov r2, r2, lsl #0x1d + mov r2, r2, lsr #0x1b + ldrsh r0, [r0, r2] + str r0, [sp, #0x64] + ldrsh r0, [r1, r2] + str r0, [sp, #0x60] +_023232E4: + ldrsh r0, [r8, #4] + ldr r5, _02323900 ; =0x0235175C + ldr r3, _023238F8 ; =0x0235171C + strh r0, [sp, #0xbc] + ldrsh r1, [r8, #6] + ldr r2, _023238FC ; =0x0235171E + mov r0, #0x18 + strh r1, [sp, #0xbe] + ldrb r1, [sb, #0x4c] + str r1, [sp, #0x1c] + ldr r4, [sp, #0x1c] + mov r1, sl + ldr r4, [r5, r4, lsl #2] + str r4, [sp, #0x7c] + ldr r4, [sp, #0x1c] + mov r4, r4, lsl #2 + ldrsh r3, [r3, r4] + ldrsh r2, [r2, r4] + str r3, [sp, #0x10] + str r2, [sp, #0xc] + bl DivideInt + ldr r2, [sp, #0x84] + str r0, [sp, #0x18] + mul r1, r2, r0 + cmp r6, #2 + blt _0232335C + add r4, r1, #8 + cmp r4, #0x40 + movge r4, #0x40 + b _02323360 +_0232335C: + mov r4, #0x20 +_02323360: + mov r0, #0x80000 + mov sb, #0 + bl DivideInt + str r0, [sp, #0x80] + mov r0, #1 + bl ov29_0234B4CC + mov r1, sb + str r1, [sp, #0x14] + ldr r1, [sp, #0x10] + mov r0, sl, lsl #8 + mul r2, r1, r0 + ldr r1, [sp, #0xc] + str r2, [sp, #0x2c] + mul r2, r1, r0 + ldr r1, [sp, #0x64] + str r2, [sp, #0x28] + mul r2, r1, r0 + ldr r1, [sp, #0x60] + str r2, [sp, #0x48] + mul r0, r1, r0 + str r0, [sp, #0x44] + ldr r0, [sp, #0x7c] + ldr r1, _02323904 ; =0x00000FFF + add r3, r0, #0xc00 + add r2, r0, #0x1400 + mov r0, r4, asr #1 + str r0, [sp, #0x3c] + and r0, r3, r1 + str r0, [sp, #0x40] + and r0, r2, r1 + str r0, [sp, #0x30] + rsb r0, r4, #0 + str r0, [sp, #0x34] + ldr r1, _02323908 ; =0x02352A6C + ldr r0, [sp, #0x1c] + ldr r5, [sp, #0xb4] + ldr r0, [r1, r0, lsl #2] + str r0, [sp, #0x38] + b _02323824 +_023233FC: + ldrsh r1, [sp, #0xbc] + cmp r1, #0 + ldrgesh r2, [sp, #0xbe] + cmpge r2, #0 + blt _02323830 + cmp r1, #0x38 + cmplt r2, #0x20 + bge _02323830 + ldr r0, [sp, #0x10] + ldrh r3, [sp, #0xbc] + add r1, r1, r0 + ldr r0, [sp, #0xc] + cmp r5, #0 + add r0, r2, r0 + ldrh r2, [sp, #0xbe] + strh r3, [sp, #0xa0] + strh r1, [sp, #0xbc] + strh r2, [sp, #0xa2] + strh r0, [sp, #0xbe] + blt _0232347C + ldrh r0, [sp, #0xba] + ldrh r2, [sp, #0xb8] + ldrsh r1, [sp, #0xb8] + strh r0, [sp, #0xa6] + ldr r0, [sp, #0x64] + strh r2, [sp, #0xa4] + add r0, r1, r0 + strh r0, [sp, #0xb8] + ldrsh r1, [sp, #0xba] + ldr r0, [sp, #0x60] + add r0, r1, r0 + strh r0, [sp, #0xba] +_0232347C: + add r0, sp, #0xbc + bl ov29_022E2CA0 + cmp r0, #0 + beq _02323740 + ldr r0, _0232390C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + bne _02323740 + ldrsh r0, [sp, #0xa0] + mov r1, #0x18 + ldrsh r2, [sp, #0xa2] + smulbb r0, r0, r1 + add r0, r0, #0xc + mov r0, r0, lsl #8 + str r0, [sp, #0x5c] + smulbb r0, r2, r1 + add r0, r0, #0x10 + cmp r5, #0 + mov sl, r0, lsl #8 + blt _0232350C + ldrsh r3, [sp, #0xa4] + ldr r0, [sp, #0x48] + ldrsh r2, [sp, #0xa6] + str r0, [sp, #0x24] + smulbb r0, r3, r1 + add r0, r0, #0xc + mov r0, r0, lsl #8 + smulbb r1, r2, r1 + str r0, [sp, #0x58] + add r0, r1, #0x10 + mov r0, r0, lsl #8 + str r0, [sp, #0x54] + ldr r0, [sp, #0x44] + str r0, [sp, #0x20] +_0232350C: + mov r0, #0 + str r0, [sp, #0x78] + ldr r0, [sp, #0xb0] + str r0, [sp, #0x8c] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x90] + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x94] + b _0232372C +_02323538: + ldr r0, [sp, #0x8c] + cmp r0, #0 + blt _02323600 + cmp fp, #1 + bne _02323564 + mov r0, sb, asr #8 + bl sub_020018D0 + mul r0, r4, r0 + str r0, [sp, #0x50] + mov r2, #0 + b _023235B4 +_02323564: + cmp fp, #2 + movne r0, #0 + strne r0, [sp, #0x50] + movne r2, r0 + bne _023235B4 + mov r0, sb, asr #8 + bl sub_020018D0 + ldr r1, [sp, #0x3c] + mul r0, r1, r0 + mov r0, r0, asr #8 + str r0, [sp, #0x74] + ldr r0, [sp, #0x40] + bl sub_020018D0 + ldr r1, [sp, #0x74] + mul r0, r1, r0 + str r0, [sp, #0x50] + ldr r0, [sp, #0x40] + bl sub_02001980 + ldr r1, [sp, #0x74] + mul r2, r1, r0 +_023235B4: + ldr r0, [sp, #0x5c] + add r1, sp, #0x9c + add r0, r0, r2 + mov r0, r0, asr #8 + strh r0, [sp, #0x9c] + ldr r0, [sp, #0x50] + ldr r2, _0232390C ; =0x02353538 + sub r0, sl, r0 + mov r0, r0, asr #8 + ldr r3, [r2] + strh r0, [sp, #0x9e] + ldr r2, _02323910 ; =0x0001A226 + ldr r0, [sp, #0x90] + ldrsh r2, [r3, r2] + rsb r2, r2, sl, asr #8 + add r3, r2, r2, lsr #31 + ldr r2, [sp, #0x38] + add r2, r2, r3, asr #1 + bl ov10_022BEB2C +_02323600: + cmp r5, #0 + blt _023236D0 + cmp fp, #1 + bne _0232362C + mov r0, sb, asr #8 + bl sub_020018D0 + ldr r1, [sp, #0x34] + mov r2, #0 + mul r0, r1, r0 + str r0, [sp, #0x4c] + b _0232367C +_0232362C: + cmp fp, #2 + movne r2, #0 + movne r0, r2 + strne r0, [sp, #0x4c] + bne _0232367C + mov r0, sb, asr #8 + bl sub_020018D0 + ldr r1, [sp, #0x3c] + mul r0, r1, r0 + mov r0, r0, asr #8 + str r0, [sp, #0x70] + ldr r0, [sp, #0x30] + bl sub_020018D0 + ldr r1, [sp, #0x70] + mul r0, r1, r0 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x30] + bl sub_02001980 + ldr r1, [sp, #0x70] + mul r2, r1, r0 +_0232367C: + ldr r0, [sp, #0x58] + ldr r1, [sp, #0x54] + add r0, r0, r2 + mov r0, r0, asr #8 + strh r0, [sp, #0x98] + ldr r0, [sp, #0x4c] + ldr r2, _0232390C ; =0x02353538 + sub r0, r1, r0 + mov r0, r0, asr #8 + ldr r3, [r2] + strh r0, [sp, #0x9a] + ldr r2, _02323910 ; =0x0001A226 + ldr r0, [sp, #0x94] + ldrsh r3, [r3, r2] + ldr r2, [sp, #0x54] + add r1, sp, #0x98 + rsb r2, r3, r2, asr #8 + add r3, r2, r2, lsr #31 + ldr r2, [sp, #0x38] + add r2, r2, r3, asr #1 + bl ov10_022BEB2C +_023236D0: + mov r0, #0x30 + bl AdvanceFrame + ldr r1, [sp, #0x5c] + ldr r0, [sp, #0x2c] + cmp r5, #0 + add r0, r1, r0 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x28] + add sl, sl, r0 + blt _02323718 + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x24] + add r0, r1, r0 + str r0, [sp, #0x58] + ldr r1, [sp, #0x54] + ldr r0, [sp, #0x20] + add r0, r1, r0 + str r0, [sp, #0x54] +_02323718: + ldr r0, [sp, #0x80] + add sb, sb, r0 + ldr r0, [sp, #0x78] + add r0, r0, #1 + str r0, [sp, #0x78] +_0232372C: + ldr r1, [sp, #0x78] + ldr r0, [sp, #0x18] + cmp r1, r0 + blt _02323538 + b _0232374C +_02323740: + ldr r1, [sp, #0x80] + ldr r0, [sp, #0x18] + mla sb, r1, r0, sb +_0232374C: + ldrsh r0, [sp, #0xbc] + ldrsh r1, [sp, #0xbe] + bl GetTile + mov sl, r0 + ldrh r0, [sl] + tst r0, #3 + beq _02323830 + ldr r0, [sl, #0xc] + cmp r0, #0 + beq _02323818 + ldr r0, [r0] + cmp r0, #1 + bne _02323818 + mov r0, r8 + mov r1, #0x2e + bl IqSkillIsEnabled + cmp r0, #0 + bne _023237A8 + mov r0, r8 + mov r1, #0x60 + bl ExclusiveItemEffectIsActive__02323918 + cmp r0, #0 + beq _023237BC +_023237A8: + mov r0, r8 + ldr r1, [sl, #0xc] + bl ov29_022FAFD4 + cmp r0, #0 + bne _02323818 +_023237BC: + ldr r0, [sl, #0xc] + mov r1, r7 + bl ov29_02324854 + cmp r0, #0 + bne _02323818 + mov r0, r8 + mov r1, #1 + bl ov29_023024E0 + mov r4, r0 + mov r0, r8 + mov r1, r7 + mov r2, #0 + bl GetEntityMoveTargetAndRange + ldr r1, [sl, #0xc] + mov r2, r0 + stmia sp, {r1, r7} + add r1, sp, #0xa8 + mov r0, #0 + mov r3, r8 + str r4, [sp, #8] + bl ov29_023243B4 + str r0, [sp, #0x88] + b _02323830 +_02323818: + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] +_02323824: + ldr r0, [sp, #0x14] + cmp r0, r6 + blt _023233FC +_02323830: + ldr r0, [sp, #0xb0] + cmp r0, #0 + blt _02323848 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BDE50 +_02323848: + cmp r5, #0 + blt _0232385C + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BDE50 +_0232385C: + mov r0, #0 + bl ov29_0234B4CC + ldrh r1, [r7, #4] + ldr r0, _02323914 ; =0x000001E5 + cmp r1, r0 + bne _0232387C + mov r0, #1 + bl ov29_022E38E0 +_0232387C: + ldr r0, [sp, #0x88] + cmp r0, #0 + ble _023238B4 + ldr r1, [sp, #0x88] + add r0, sp, #0xa8 + mov r2, #0 + str r2, [r0, r1, lsl #2] + ldr r4, [sp, #0xec] + ldr r3, [sp, #0xe8] + mov r1, r8 + mov r2, r7 + str r4, [sp] + bl ExecuteMoveEffect + b _023238EC +_023238B4: + cmp r6, #1 + bne _023238EC + add r0, sp, #0xbc + bl ov29_022E2CA0 + cmp r0, #0 + beq _023238EC + mov r0, #1 + mov r1, #0x4a + bl ov29_022EA370 + add r3, sp, #0xbc + mov r0, r8 + mov r2, r7 + mov r1, #0 + bl ov29_023256B4 +_023238EC: + add sp, sp, #0xc0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023238F4: .word 0x02352A54 +_023238F8: .word 0x0235171C +_023238FC: .word 0x0235171E +_02323900: .word 0x0235175C +_02323904: .word 0x00000FFF +_02323908: .word 0x02352A6C +_0232390C: .word 0x02353538 +_02323910: .word 0x0001A226 +_02323914: .word 0x000001E5 + arm_func_end ov29_023230FC + + arm_func_start ExclusiveItemEffectIsActive__02323918 +ExclusiveItemEffectIsActive__02323918: ; 0x02323918 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__02323918 + + arm_func_start ov29_0232393C +ov29_0232393C: ; 0x0232393C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x38 + ldr r0, [r0, #0xb4] + mov sb, r2 + str r0, [sp, #0x18] + mov sl, r1 + ldrh r0, [sb, #4] + ldr r1, [sp, #0x60] + str r3, [sp] + str r1, [sp, #0x60] + ldr r7, [sl, #0xb4] + bl GetMoveAnimationSpeed + cmp r0, #1 + moveq r6, #2 + beq _02323984 + cmp r0, #2 + moveq r6, #3 + movne r6, #6 +_02323984: + ldr r0, [sp, #0x18] + ldr r4, _02323C30 ; =0x0235171C + ldrb r1, [r0, #0x4c] + ldrsh r0, [sl, #4] + ldr r5, _02323C34 ; =0x0235171E + add r1, r1, #4 + strh r0, [sp, #0x34] + and r0, r1, #7 + mov r8, r0, lsl #2 + ldrsh r4, [r4, r8] + ldrsh r3, [sl, #6] + add r1, sp, #0x34 + str r4, [sp, #0x24] + ldrsh r4, [r5, r8] + strh r3, [sp, #0x36] + ldr r3, [sp] + mov r0, sl + mov r2, sb + str r4, [sp, #0x20] + bl ov29_02322F78 + mov r4, r0 + mov r1, r6 + mov r0, #0x18 + bl DivideInt + str r0, [sp, #4] + ldr r0, [sp] + cmp r0, #2 + mov r2, r0 + ldr r0, [sp, #4] + mul r1, r2, r0 + blt _02323A18 + add r0, r1, #8 + str r0, [sp, #0x14] + cmp r0, #0x40 + movge r0, #0x40 + strge r0, [sp, #0x14] + b _02323A20 +_02323A18: + mov r0, #0x20 + str r0, [sp, #0x14] +_02323A20: + mov r0, #0x80000 + mov r5, #0 + bl DivideInt + str r0, [sp, #0x1c] + ldrb r2, [r7, #0x4c] + ldr r1, _02323C38 ; =0x02352A8C + mov r0, #1 + ldr r1, [r1, r2, lsl #2] + str r1, [sp, #0x10] + bl ov29_0234B4CC + ldr r0, [sp, #0x24] + mov r2, r6, lsl #8 + mul r1, r0, r2 + ldr r0, [sp, #0x20] + str r1, [sp, #0xc] + mul r1, r0, r2 + mov fp, r5 + str r1, [sp, #8] + b _02323BC0 +_02323A6C: + ldrsh r2, [sp, #0x34] + cmp r2, #0 + ldrgesh r1, [sp, #0x36] + cmpge r1, #0 + blt _02323BCC + cmp r2, #0x38 + cmplt r1, #0x20 + bge _02323BCC + ldr r0, [sp, #0x24] + ldrh r6, [sp, #0x34] + add r2, r2, r0 + ldr r0, [sp, #0x20] + ldrh r3, [sp, #0x36] + add r1, r1, r0 + add r0, sp, #0x34 + strh r6, [sp, #0x30] + strh r3, [sp, #0x32] + strh r2, [sp, #0x34] + strh r1, [sp, #0x36] + bl ov29_022E2CA0 + cmp r0, #0 + beq _02323BB0 + ldr r0, _02323C3C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + bne _02323BB0 + ldrsh r2, [sp, #0x30] + ldrsh r1, [sp, #0x32] + mov r0, #0x18 + smulbb r2, r2, r0 + smulbb r0, r1, r0 + add r0, r0, #0x10 + mov r8, r0, lsl #8 + mov r0, r4, lsl #0x10 + add r1, r2, #0xc + mov r0, r0, asr #0x10 + mov r7, r1, lsl #8 + mov r6, #0 + str r0, [sp, #0x28] + b _02323BA0 +_02323B14: + cmp r4, #0 + blt _02323B7C + ldr r0, [sp, #0x60] + cmp r0, #1 + movne r0, #0 + bne _02323B3C + mov r0, r5, asr #8 + bl sub_020018D0 + ldr r1, [sp, #0x14] + mul r0, r1, r0 +_02323B3C: + sub r0, r8, r0 + ldr r2, _02323C3C ; =0x02353538 + mov r0, r0, asr #8 + strh r0, [sp, #0x2e] + mov r0, r7, asr #8 + ldr r3, [r2] + strh r0, [sp, #0x2c] + ldr r2, _02323C40 ; =0x0001A226 + ldr r0, [sp, #0x28] + ldrsh r2, [r3, r2] + add r1, sp, #0x2c + rsb r2, r2, r8, asr #8 + add r3, r2, r2, lsr #31 + ldr r2, [sp, #0x10] + add r2, r2, r3, asr #1 + bl ov10_022BEB2C +_02323B7C: + mov r0, #0x30 + bl AdvanceFrame + ldr r0, [sp, #0xc] + add r6, r6, #1 + add r7, r7, r0 + ldr r0, [sp, #8] + add r8, r8, r0 + ldr r0, [sp, #0x1c] + add r5, r5, r0 +_02323BA0: + ldr r0, [sp, #4] + cmp r6, r0 + blt _02323B14 + b _02323BBC +_02323BB0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #4] + mla r5, r1, r0, r5 +_02323BBC: + add fp, fp, #1 +_02323BC0: + ldr r0, [sp] + cmp fp, r0 + blt _02323A6C +_02323BCC: + cmp r4, #0 + blt _02323BE0 + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BDE50 +_02323BE0: + mov r0, #1 + bl ov29_022E38E0 + mov r0, #0 + bl ov29_0234B4CC + mov r0, #1 + mov r1, #0x4a + bl ov29_022EA370 + ldrh r1, [sb, #4] + ldr r0, _02323C44 ; =0x00000232 + add r3, sp, #0x34 + cmp r1, r0 + ldreq r0, [sp, #0x18] + moveq r1, #0 + streqb r1, [r0, #0x170] + mov r0, sl + mov r2, sb + mov r1, #0 + bl ov29_023256B4 + add sp, sp, #0x38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02323C30: .word 0x0235171C +_02323C34: .word 0x0235171E +_02323C38: .word 0x02352A8C +_02323C3C: .word 0x02353538 +_02323C40: .word 0x0001A226 +_02323C44: .word 0x00000232 + arm_func_end ov29_0232393C + + arm_func_start MoveHitCheck +MoveHitCheck: ; 0x02323C48 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov fp, r2 + mov r7, r0 + mov r6, r1 + mov r0, fp + mov r1, r3 + bl GetMoveAccuracyOrAiChance + mov r8, r0 + mov r0, #0x64 + bl DungeonRandInt + mov r1, #0 + str r1, [sp, #4] + ldr sb, [r7, #0xb4] + str r0, [sp, #8] + ldrsh r0, [sb, #2] + mov r1, r1 + str r1, [sp] + ldr r5, [r6, #0xb4] + bl GetMonsterGenderVeneer + cmp r0, #2 + moveq r0, #1 + streq r0, [sp, #4] + ldrsh r0, [r5, #2] + bl GetMonsterGenderVeneer + cmp r0, #2 + moveq r0, #1 + streq r0, [sp] + ldrb r0, [sp, #0x30] + mov sl, #0 + mov r4, sl + cmp r0, #0 + beq _02323CD8 + cmp r7, r6 + moveq r0, #1 + beq _02324008 +_02323CD8: + ldrh r1, [fp, #4] + ldr r0, _02324010 ; =0x00000163 + cmp r1, r0 + bne _02323D00 + mov r0, r7 + mov r1, #4 + bl IqSkillIsEnabled + cmp r0, #0 + movne r0, #1 + bne _02324008 +_02323D00: + ldrb r0, [sb, #0xec] + cmp r0, #1 + moveq r0, #1 + beq _02324008 + cmp r0, #2 + moveq r0, #0 + beq _02324008 + cmp r8, #0x64 + movgt r0, #1 + bgt _02324008 + mov r0, r6 + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _02323D4C + mov r0, r6 + mov r1, #0x2a + bl HasHeldItem +_02323D4C: + cmp r0, #0 + ldrne r0, _02324014 ; =0x022C47A8 + mov r1, #5 + ldrne r0, [r0] + subne r8, r8, r0 + mov r0, r6 + bl IqSkillIsEnabled + cmp r0, #0 + ldrne r0, _02324018 ; =0x022C4808 + mov r1, #0x33 + ldrne r0, [r0] + ldrsh sb, [sb, #0x2c] + subne r8, r8, r0 + mov r0, r7 + bl AbilityIsActive2 + cmp r0, #0 + ldrh r0, [fp, #4] + addne sl, sl, #2 + cmp r0, #0x40 + bne _02323DB8 + mov r0, r7 + bl GetApparentWeather + cmp r0, #4 + moveq r0, #1 + beq _02324008 + cmp r0, #1 + subeq sl, sl, #2 +_02323DB8: + ldrh r1, [fp, #4] + ldr r0, _0232401C ; =0x0000010E + cmp r1, r0 + bne _02323DDC + mov r0, r7 + bl GetApparentWeather + cmp r0, #5 + moveq r0, #1 + beq _02324008 +_02323DDC: + mov r0, r7 + mov r1, #0x30 + bl IqSkillIsEnabled + cmp r0, #0 + addne sl, sl, #1 + ldrb r0, [r5, #0xfe] + add sb, sb, sl + ldrsh sl, [r5, #0x2e] + cmp r0, #0 + mov r0, r6 + movne sl, #0xa + bl GetApparentWeather + cmp r0, #2 + bne _02323E30 + mov r0, r7 + mov r1, r6 + mov r2, #0x1d + mov r3, #1 + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + addne r4, r4, #2 +_02323E30: + mov r0, r7 + mov r1, #0x30 + bl AbilityIsActive2 + cmp r0, #0 + beq _02323E54 + ldrh r0, [fp, #4] + bl MoveIsNotPhysical + cmp r0, #0 + addeq r4, r4, #2 +_02323E54: + mov r0, r6 + mov r1, #0x3f + bl IqSkillIsEnabled + cmp r0, #0 + beq _02323E94 + ldrsh r2, [r5, #0x12] + ldrsh r1, [r5, #0x16] + ldr r0, _02324020 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r0 + movgt r2, r0 + mov r0, r2, asr #1 + ldrsh r1, [r5, #0x10] + add r0, r2, r0, lsr #30 + cmp r1, r0, asr #2 + addle r4, r4, #2 +_02323E94: + mov r0, r6 + mov r1, #0x30 + bl IqSkillIsEnabled + cmp r0, #0 + mov r0, r7 + mov r1, r6 + mov r2, #0x62 + mov r3, #1 + subne r4, r4, #1 + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + beq _02323ED8 + ldrb r0, [r5, #0xd0] + cmp r0, #2 + ldrneb r0, [r5, #0xf1] + cmpne r0, #2 + addeq r4, r4, #3 +_02323ED8: + mov r0, r7 + mov r1, r6 + mov r2, #0x77 + mov r3, #1 + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + beq _02323F18 + mov r0, r6 + bl GetApparentWeather + cmp r0, #5 + beq _02323F14 + mov r0, r6 + bl GetApparentWeather + cmp r0, #7 + bne _02323F18 +_02323F14: + add r4, r4, #2 +_02323F18: + mov r0, r6 + bl GetApparentWeather + ldr r2, _02324024 ; =0x02353710 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _02323F44 + ldrb r1, [r2, r0] + mov r0, r6 + bl ExclusiveItemEffectIsActive__02323918 + cmp r0, #0 + addne r4, r4, #1 +_02323F44: + mov r0, r7 + mov r1, #0x6a + add sl, sl, r4 + bl AbilityIsActive2 + cmp r0, #0 + movne sb, #0xa + mov r0, r7 + mov r1, r6 + mov r2, #0x6a + mov r3, #1 + movne sl, sb + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + movne sb, #0xa + movne sl, sb + cmp sb, #0 + movlt sb, #0 + blt _02323F94 + cmp sb, #0x14 + movgt sb, #0x14 +_02323F94: + ldr r2, _02324028 ; =0x022C540C + ldr r0, [sp, #4] + mov r1, #0xa8 + mla r1, r0, r1, r2 + ldr r3, [r1, sb, lsl #2] + cmp sl, #0 + movlt sl, #0 + cmp sl, #0x14 + movgt sl, #0x14 + cmp r3, #0 + movlt r3, #0 + cmp r3, #0x6400 + ldr r2, _0232402C ; =0x022C5460 + ldr r0, [sp] + mov r1, #0xa8 + mla r1, r0, r1, r2 + movgt r3, #0x6400 + mul r0, r8, r3 + ldr r1, [r1, sl, lsl #2] + mov r8, r0, asr #8 + cmp r1, #0 + movlt r1, #0 + cmp r1, #0x6400 + movgt r1, #0x6400 + mul r1, r8, r1 + ldr r0, [sp, #8] + cmp r0, r1, asr #8 + movlt r0, #1 + movge r0, #0 +_02324008: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02324010: .word 0x00000163 +_02324014: .word 0x022C47A8 +_02324018: .word 0x022C4808 +_0232401C: .word 0x0000010E +_02324020: .word 0x000003E7 +_02324024: .word 0x02353710 +_02324028: .word 0x022C540C +_0232402C: .word 0x022C5460 + arm_func_end MoveHitCheck + + arm_func_start ov29_02324030 +ov29_02324030: ; 0x02324030 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r1, #1 + mov r4, #0 + mov r8, r2 + bl ov29_023024E0 + mov r6, r0 + mov r0, sb + mov r1, r4 + bl ov29_023024E0 + str r0, [sp, #0x10] + mov r0, sb + mov r1, r8 + mov r2, r4 + bl GetEntityMoveTargetAndRange + mov r5, r0 + and r0, r5, #0xf + cmp r0, #4 + bne _023240C0 + mov r0, sb + mov r1, r8 + bl ov29_023245A4 + ldrh r1, [r8, #4] + mov r5, r0 + cmp r1, #0x97 + bne _023240B4 + mov r0, sb + bl GetApparentWeather + cmp r0, #1 + moveq r5, #1 +_023240B4: + cmp r5, #0 + movne r5, #0 + moveq r5, #0x73 +_023240C0: + ands r0, r5, #0xf0 + bne _023240FC + mov r0, sb + bl ov29_022F87C0 + cmp r0, #0 + beq _0232439C + stmia sp, {r0, r8} + mov r1, sl + mov r2, r5 + mov r3, sb + mov r0, #0 + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 + b _0232439C +_023240FC: + cmp r0, #0x10 + cmpne r0, #0x20 + bne _023241AC + cmp r0, #0x20 + ldr r0, [sb, #0xb4] + mov fp, #0 + ldreqb r7, [r0, #0x4c] + moveq r0, #8 + ldrneb r1, [r0, #0x4c] + streq r0, [sp, #0xc] + movne r0, #3 + strne r0, [sp, #0xc] + subne r7, r1, #1 + b _0232419C +_02324134: + and r7, r7, #7 + ldr r1, _023243AC ; =0x0235171C + mov r2, r7, lsl #2 + ldrsh r2, [r1, r2] + ldrsh r0, [sb, #4] + add r1, r1, r7, lsl #2 + ldrsh r1, [r1, #2] + add r0, r0, r2 + strh r0, [sp, #0x14] + ldrsh r2, [sb, #6] + add r0, sp, #0x14 + add r1, r2, r1 + strh r1, [sp, #0x16] + bl ov29_02337B68 + cmp r0, #0 + beq _02324194 + stmia sp, {r0, r8} + mov r0, r4 + mov r1, sl + mov r2, r5 + mov r3, sb + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 +_02324194: + add fp, fp, #1 + add r7, r7, #1 +_0232419C: + ldr r0, [sp, #0xc] + cmp fp, r0 + blt _02324134 + b _0232439C +_023241AC: + cmp r0, #0x30 + bne _02324248 + mov fp, #0 +_023241B8: + ldr r0, _023243B0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, fp, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02324238 + mov r0, sb + mov r1, r7 + bl ov29_022E28D4 + cmp r0, #0 + beq _02324238 + cmp r7, sb + stmia sp, {r7, r8} + mov r0, r4 + bne _02324220 + ldr r4, [sp, #0x10] + mov r1, sl + mov r2, r5 + mov r3, sb + str r4, [sp, #8] + bl ov29_023243B4 + mov r4, r0 + b _02324238 +_02324220: + mov r1, sl + mov r2, r5 + mov r3, sb + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 +_02324238: + add fp, fp, #1 + cmp fp, #0x14 + blt _023241B8 + b _0232439C +_02324248: + cmp r0, #0x40 + bne _023242C4 + mov r0, sb + mov r7, #0 + bl ov29_022F8830 + cmp r0, #0 + beq _02324288 + stmia sp, {r0, r8} + mov r1, sl + mov r2, r5 + mov r3, sb + mov r0, r7 + str r6, [sp, #8] + bl ov29_023243B4 + movs r4, r0 + movne r7, #1 +_02324288: + cmp r7, #0 + bne _0232439C + mov r0, sb + bl ov29_022F88C0 + cmp r0, #0 + beq _0232439C + stmia sp, {r0, r8} + mov r0, r4 + mov r1, sl + mov r2, r5 + mov r3, sb + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 + b _0232439C +_023242C4: + cmp r0, #0x50 + beq _0232439C + cmp r0, #0x80 + cmpne r0, #0x90 + bne _0232430C + mov r0, sb + bl ov29_022F8830 + cmp r0, #0 + beq _0232439C + stmia sp, {r0, r8} + mov r1, sl + mov r2, r5 + mov r3, sb + mov r0, #0 + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 + b _0232439C +_0232430C: + cmp r0, #0x60 + bne _02324370 + mov r7, #0 +_02324318: + ldr r0, _023243B0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr fp, [r0, #0xb78] + mov r0, fp + bl EntityIsValid__02321438 + cmp r0, #0 + beq _02324360 + str fp, [sp] + str r8, [sp, #4] + mov r0, r4 + mov r1, sl + mov r2, r5 + mov r3, sb + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 +_02324360: + add r7, r7, #1 + cmp r7, #0x14 + blt _02324318 + b _0232439C +_02324370: + cmp r0, #0x70 + bne _0232439C + str sb, [sp] + str r8, [sp, #4] + mov r1, sl + mov r2, r5 + mov r3, sb + mov r0, #0 + str r6, [sp, #8] + bl ov29_023243B4 + mov r4, r0 +_0232439C: + mov r0, #0 + str r0, [sl, r4, lsl #2] + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023243AC: .word 0x0235171C +_023243B0: .word 0x02353538 + arm_func_end ov29_02324030 + + arm_func_start ov29_023243B4 +ov29_023243B4: ; 0x023243B4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, [sp, #0x1c] + ldr r5, [sp, #0x18] + ldrh r4, [r4, #4] + mov r7, r1 + mov r8, r0 + cmp r4, #0xfc + mov r6, r3 + mov r4, #0 + ldr r1, [r5, #0xb4] + cmpeq r6, r5 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #9] + cmp r0, #1 + moveq r0, r8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r1, #0xbc] + cmp r0, #7 + moveq r0, r8 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [sp, #0x20] + cmp r0, #0 + movne r4, #1 + bne _023244C0 + ands r0, r2, #0xf + cmpne r0, #4 + bne _02324440 + mov r0, r6 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #1 + moveq r4, #1 + b _023244C0 +_02324440: + cmp r0, #1 + bne _02324468 + mov r0, r6 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #0 + moveq r4, #1 + b _023244C0 +_02324468: + cmp r0, #2 + moveq r4, #1 + beq _023244C0 + cmp r0, #5 + bne _02324488 + cmp r6, r5 + movne r4, #1 + b _023244C0 +_02324488: + cmp r0, #6 + bne _023244B8 + mov r0, r6 + mov r1, r5 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #0 + bne _023244C0 + cmp r6, r5 + movne r4, #1 + b _023244C0 +_023244B8: + cmp r0, #3 + moveq r4, #1 +_023244C0: + ldr r1, [sp, #0x1c] + mov r0, r5 + bl ov29_02324854 + cmp r0, #0 + movne r4, #0 + cmp r4, #0 + beq _02324508 + cmp r8, #0x40 + bge _02324508 + str r5, [r7, r8, lsl #2] + ldr r0, [r5, #0xb4] + add r8, r8, #1 + ldrb r0, [r0, #6] + cmp r0, #0 + ldreq r0, _02324510 ; =0x0235370C + ldreq r1, [r0] + cmpeq r1, #0 + streq r5, [r0] +_02324508: + mov r0, r8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02324510: .word 0x0235370C + arm_func_end ov29_023243B4 + + arm_func_start ov29_02324514 +ov29_02324514: ; 0x02324514 + stmdb sp!, {r3, lr} + bl GetMoveNbStrikes + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r0, #2 + mov r1, #6 + bl DungeonRandRange + ldmia sp!, {r3, pc} + arm_func_end ov29_02324514 + + arm_func_start ov29_02324534 +ov29_02324534: ; 0x02324534 + ldrh r2, [r0, #4] + cmp r2, #0xee + moveq r0, #1 + bxeq lr + cmp r2, #0xef + moveq r0, #1 + bxeq lr + cmp r2, #0xf2 + moveq r0, #1 + bxeq lr + cmp r2, #0x110 + moveq r0, #1 + bxeq lr + ldr r1, _023245A0 ; =0x000001C5 + cmp r2, r1 + moveq r0, #1 + bxeq lr + add r0, r1, #2 + cmp r2, r0 + moveq r0, #1 + bxeq lr + add r0, r1, #0x29 + cmp r2, r0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_023245A0: .word 0x000001C5 + arm_func_end ov29_02324534 + + arm_func_start ov29_023245A4 +ov29_023245A4: ; 0x023245A4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr ip, [r5, #0xb4] + mov lr, #0 + ldr r2, _02324618 ; =0x02352AAC + b _02324608 +_023245D0: + mov r3, lr, lsl #2 + ldrh r1, [r2, r3] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrh r0, [r4, #4] + cmp r0, r1 + addeq r0, r2, r3 + ldreqb r1, [ip, #0xd2] + ldreqb r0, [r0, #2] + cmpeq r1, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + add lr, lr, #1 +_02324608: + cmp lr, #0x64 + blt _023245D0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02324618: .word 0x02352AAC + arm_func_end ov29_023245A4 + + arm_func_start ov29_0232461C +ov29_0232461C: ; 0x0232461C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr ip, [r5, #0xb4] + mov r3, #0 + ldr r2, _02324694 ; =0x02352A60 + b _0232466C +_02324648: + ldrb r1, [r2, r3] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [ip, #0xd2] + cmp r0, r1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + add r3, r3, #1 +_0232466C: + cmp r3, #0x64 + blt _02324648 + cmp r4, #0 + beq _0232468C + ldrb r0, [ip, #0xd2] + cmp r0, #0xb + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_0232468C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02324694: .word 0x02352A60 + arm_func_end ov29_0232461C + + arm_func_start ov29_02324698 +ov29_02324698: ; 0x02324698 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x140 + mov r6, #0 + ldr fp, _02324740 ; =0x02353538 + mov r7, r6 + add r4, sp, #0 +_023246B0: + ldr r0, [fp] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb78] + mov r0, sb + bl EntityIsValid__02321438 + cmp r0, #0 + beq _0232470C + ldr r0, [sb, #0xb4] + mov r8, #0 + add r5, r0, #0x124 +_023246DC: + add sl, r5, r8, lsl #3 + mov r0, sb + mov r1, sl + bl ov29_02324748 + cmp r0, #0 + beq _02324700 + cmp r6, #0x50 + strlt sl, [r4, r6, lsl #2] + addlt r6, r6, #1 +_02324700: + add r8, r8, #1 + cmp r8, #4 + blt _023246DC +_0232470C: + add r7, r7, #1 + cmp r7, #0x14 + blt _023246B0 + cmp r6, #0 + ldreq r0, _02324744 ; =0x00000163 + beq _02324738 + mov r0, r6 + bl DungeonRandInt + add r1, sp, #0 + ldr r0, [r1, r0, lsl #2] + ldrh r0, [r0, #4] +_02324738: + add sp, sp, #0x140 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02324740: .word 0x02353538 +_02324744: .word 0x00000163 + arm_func_end ov29_02324698 + + arm_func_start ov29_02324748 +ov29_02324748: ; 0x02324748 + stmdb sp!, {r4, lr} + mov r4, r1 + ldrb r1, [r4] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _02324788 + ldrh r1, [r4, #4] + bl ov29_02324D60 + cmp r0, #0 + bne _02324788 + ldrh r0, [r4, #4] + bl IsCopyingMove + cmp r0, #0 + beq _02324790 +_02324788: + mov r0, #0 + ldmia sp!, {r4, pc} +_02324790: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end ov29_02324748 + + arm_func_start ov29_02324798 +ov29_02324798: ; 0x02324798 + stmdb sp!, {r3, lr} + bl GetMoveMaxGinsengBoost + cmp r0, #0x63 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02324798 + + arm_func_start ov29_023247B4 +ov29_023247B4: ; 0x023247B4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r8, r0 + ldr r0, [r8, #0xb4] + mov r7, #0 + mov r6, r7 + add r5, r0, #0x124 + add r4, sp, #0 +_023247D4: + add sb, r5, r6, lsl #3 + mov r0, r8 + mov r1, sb + bl ov29_02324748 + cmp r0, #0 + beq _02324814 + mov r0, sb + bl ov29_02324798 + cmp r0, #0 + beq _02324814 + ldrh r2, [sb, #4] + add r0, r7, #1 + mov r1, r7, lsl #1 + mov r0, r0, lsl #0x10 + strh r2, [r4, r1] + mov r7, r0, asr #0x10 +_02324814: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #4 + blt _023247D4 + cmp r7, #0 + movle r0, #0 + ble _0232484C + mov r0, r7 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + add r1, sp, #0 + mov r0, r0, asr #0xf + ldrh r0, [r1, r0] +_0232484C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_023247B4 + + arm_func_start ov29_02324854 +ov29_02324854: ; 0x02324854 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #0x10b] + cmp r0, #1 + bne _023248A4 + ldrh r0, [r1, #4] + cmp r0, #0x88 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0xa2 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0x39 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0x40 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} +_023248A4: + cmp r0, #2 + bne _02324928 + ldrb r0, [r2, #0xd2] + cmp r0, #9 + bne _023248D8 + ldrh r0, [r1, #4] + cmp r0, #0x20 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0xdb + bne _02324920 + mov r0, #0 + ldmia sp!, {r3, pc} +_023248D8: + cmp r0, #0xa + bne _02324920 + ldrh r0, [r1, #4] + cmp r0, #0x76 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0x128 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + cmp r0, #0x77 + bne _02324920 + bl ov29_023280D4 + ldr r1, _02324930 ; =0x022C4E40 + mov r0, r0, lsl #3 + ldrh r0, [r1, r0] + cmp r0, #0x76 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_02324920: + mov r0, #1 + ldmia sp!, {r3, pc} +_02324928: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02324930: .word 0x022C4E40 + arm_func_end ov29_02324854 + + arm_func_start DungeonRandOutcomeUserTargetInteraction +DungeonRandOutcomeUserTargetInteraction: ; 0x02324934 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl IsFloorOver + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0x162] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsh r0, [r1, #0x10] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r4, #0 + beq _023249DC + mov r0, r6 + mov r1, #0x26 + bl AbilityIsActive2 + cmp r0, #0 + beq _023249CC + mov r0, r4, lsl #1 + bl DungeonRandOutcome__022EAB50 + mov r4, r0 + b _023249E0 +_023249CC: + mov r0, r4 + bl DungeonRandOutcome__022EAB50 + mov r4, r0 + b _023249E0 +_023249DC: + mov r4, #1 +_023249E0: + cmp r4, #0 + cmpne r6, r5 + beq _02324A18 + mov r0, r6 + mov r1, r5 + mov r2, #0x4c + mov r3, #1 + bl DefenderAbilityIsActive__02322D64 + cmp r0, #0 + beq _02324A18 + mov r0, r5 + bl ov29_022E65A8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02324A18: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DungeonRandOutcomeUserTargetInteraction + + arm_func_start DungeonRandOutcomeUserAction +DungeonRandOutcomeUserAction: ; 0x02324A20 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02321438 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, #0x26 + bl AbilityIsActive2 + cmp r0, #0 + beq _02324A68 + mov r0, r4, lsl #1 + bl DungeonRandOutcome__022EAB50 + ldmia sp!, {r3, r4, r5, pc} +_02324A68: + mov r0, r4 + bl DungeonRandOutcome__022EAB50 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DungeonRandOutcomeUserAction + + arm_func_start CanAiUseMove +CanAiUseMove: ; 0x02324A74 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + ldr r3, [r6, #0xb4] + mov r5, r2 + add r0, r3, #0x124 + ldrb r2, [r0, r1, lsl #3] + add r4, r0, r1, lsl #3 + tst r2, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + tst r2, #2 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + tst r2, #0x20 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrh r0, [r4, #2] + tst r0, #1 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r8, #0 + add r7, r3, #0x144 + b _02324B14 +_02324ADC: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl CanMonsterUseMove + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r4, r4, #8 + cmp r4, r7 + bhs _02324B1C + ldrb r0, [r4] + tst r0, #2 + beq _02324B1C + add r8, r8, #1 +_02324B14: + cmp r8, #4 + blt _02324ADC +_02324B1C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end CanAiUseMove + + arm_func_start CanMonsterUseMove +CanMonsterUseMove: ; 0x02324B24 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + ldrh r3, [r5, #4] + ldr r1, _02324BE4 ; =0x00000163 + ldr r4, [r0, #0xb4] + cmp r3, r1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r5] + tst r0, #0x20 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrh r0, [r5, #2] + tst r0, #1 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + cmp r2, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r5, #6] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #5 + bne _02324BA0 + mov r0, r5 + bl IsAffectedByTaunt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_02324BA0: + ldrb r0, [r4, #0xd0] + cmp r0, #6 + bne _02324BDC + ldrh r0, [r5, #4] + cmp r0, #0x160 + bne _02324BCC + ldrb r0, [r4, #0x144] + tst r0, #0x10 + bne _02324BDC + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02324BCC: + ldrb r0, [r5] + tst r0, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_02324BDC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02324BE4: .word 0x00000163 + arm_func_end CanMonsterUseMove + + arm_func_start ov29_02324BE8 +ov29_02324BE8: ; 0x02324BE8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + ldrh r3, [r5, #4] + ldr r1, _02324C98 ; =0x00000163 + ldr r4, [r0, #0xb4] + cmp r3, r1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r5] + tst r0, #0x20 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldrh r0, [r5, #2] + tst r0, #1 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + cmp r2, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0xd0] + cmp r0, #5 + bne _02324C54 + mov r0, r5 + bl IsAffectedByTaunt + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_02324C54: + ldrb r0, [r4, #0xd0] + cmp r0, #6 + bne _02324C90 + ldrh r0, [r5, #4] + cmp r0, #0x160 + bne _02324C80 + ldrb r0, [r4, #0x144] + tst r0, #0x10 + bne _02324C90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02324C80: + ldrb r0, [r5] + tst r0, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_02324C90: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02324C98: .word 0x00000163 + arm_func_end ov29_02324BE8 + + arm_func_start ov29_02324C9C +ov29_02324C9C: ; 0x02324C9C + stmdb sp!, {lr} + sub sp, sp, #0x104 + mov ip, #0 + mov lr, ip + add r2, sp, #0 + b _02324CDC +_02324CB4: + ldr r3, [r0, lr, lsl #2] + cmp r3, #0 + beq _02324CE4 + cmp r3, r1 + beq _02324CD8 + cmp ip, #0x40 + bge _02324CE4 + str r3, [r2, ip, lsl #2] + add ip, ip, #1 +_02324CD8: + add lr, lr, #1 +_02324CDC: + cmp lr, #0x41 + blt _02324CB4 +_02324CE4: + mov lr, #0 + add r2, sp, #0 + b _02324D18 +_02324CF0: + ldr r3, [r0, lr, lsl #2] + cmp r3, #0 + beq _02324D20 + cmp r3, r1 + bne _02324D14 + cmp ip, #0x40 + bge _02324D20 + str r3, [r2, ip, lsl #2] + add ip, ip, #1 +_02324D14: + add lr, lr, #1 +_02324D18: + cmp lr, #0x41 + blt _02324CF0 +_02324D20: + mov r2, #0 + add r1, sp, #0 + b _02324D34 +_02324D2C: + str r2, [r1, ip, lsl #2] + add ip, ip, #1 +_02324D34: + cmp ip, #0x41 + blt _02324D2C + mov r3, #0 + add r2, sp, #0 +_02324D44: + ldr r1, [r2, r3, lsl #2] + str r1, [r0, r3, lsl #2] + add r3, r3, #1 + cmp r3, #0x41 + blt _02324D44 + add sp, sp, #0x104 + ldmia sp!, {pc} + arm_func_end ov29_02324C9C + + arm_func_start ov29_02324D60 +ov29_02324D60: ; 0x02324D60 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r4, #0x97 + bne _02324D80 + bl GetApparentWeather + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_02324D80: + mov r0, r4 + bl Is2TurnsMove + ldmia sp!, {r4, pc} + arm_func_end ov29_02324D60 + + arm_func_start UpdateMovePp +UpdateMovePp: ; 0x02324D8C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02321438 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0xb4] + mov r1, #0 +_02324DAC: + add r2, r0, #0x124 + ldrb r3, [r2, r1, lsl #3] + add r2, r2, r1, lsl #3 + tst r3, #1 + movne r3, #1 + moveq r3, #0 + tst r3, #0xff + beq _02324E34 + ldrh r3, [r2, #2] + mov lr, #1 + tst r3, #0x10 + bicne r3, r3, #0x10 + strneh r3, [r2, #2] + ldrh r3, [r2, #2] + movne lr, #2 + tst r3, #0x40 + bicne r3, r3, #0x40 + strneh r3, [r2, #2] + ldrh r3, [r2, #2] + movne lr, #4 + tst r3, #8 + bicne r3, r3, #8 + strneh r3, [r2, #2] + cmpne r4, #0 + beq _02324E34 + mov ip, #0 + b _02324E2C +_02324E18: + ldrb r3, [r2, #6] + add ip, ip, #1 + cmp r3, #0 + subne r3, r3, #1 + strneb r3, [r2, #6] +_02324E2C: + cmp ip, lr + blt _02324E18 +_02324E34: + add r1, r1, #1 + cmp r1, #4 + blt _02324DAC + ldmia sp!, {r3, r4, r5, pc} + arm_func_end UpdateMovePp + + arm_func_start ov29_02324E44 +ov29_02324E44: ; 0x02324E44 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl LowerSshort + mov r1, r0 + ldrh r0, [r4, #4] + bl GetDamageSource + ldmia sp!, {r4, pc} + arm_func_end ov29_02324E44 + + arm_func_start LowerSshort +LowerSshort: ; 0x02324E64 + cmp r0, #0 + moveq r0, #0 + movne r0, r0, lsl #0x10 + movne r0, r0, asr #0x10 + bx lr + arm_func_end LowerSshort + + arm_func_start ov29_02324E78 +ov29_02324E78: ; 0x02324E78 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r6, r1 + mov r8, r2 + bl ShouldMovePlayAlternativeAnimation + mov r4, r0 + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r6, #4] + mov r2, r4 + bl GetMoveAnimationId + bl ov10_022BFD58 + mov sl, r0 + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r6, #4] + mov r2, r4 + bl GetMoveAnimationId + bl GetMoveAnimation + ldrsh r5, [r0] + mov r0, r7 + bl ov29_022E5ED0 + cmp r0, #0 + moveq r0, sl + beq _023250C8 + mov r0, r7 + mov r1, r6 + bl ov29_02325D20 + cmp r0, #0 + movne r0, sl + bne _023250C8 + cmp r8, #0 + moveq r0, sl + beq _023250C8 + cmp r5, #0 + beq _023250C4 + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r6, #4] + mov r2, r4 + bl GetMoveAnimationId + mov r4, r0 + ldrh r0, [r6, #4] + ldr r5, [r7, #0xb4] + bl ov10_022BFD8C + mov sb, r0 + mov r0, r7 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r6, #4] + mov r2, #1 + bl GetMoveAnimationId + mov r1, r0 + ldrsh r0, [r5, #4] + bl ov10_022BF01C + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + ldreq r0, _023250D0 ; =0x02352AD8 + ldreqh r1, [r0, #8] + streqh r1, [sp, #8] + ldreqh r0, [r0, #0xa] + streqh r0, [sp, #0xa] + beq _02324F98 + add r0, sp, #8 + add r1, r7, #0x2c + and r2, r2, #0xff + bl sub_0201CF90 +_02324F98: + strh r4, [sp] + ldrsh r1, [r5, #4] + add r0, sp, #0 + mov r2, #0 + strh r1, [sp, #2] + ldr r3, [r7, #0xc] + mov r1, #1 + mov r3, r3, asr #8 + strh r3, [sp, #4] + ldr r3, [r7, #0x10] + mov r3, r3, asr #8 + strh r3, [sp, #6] + ldrb r3, [r5, #0x4c] + str r3, [sp, #0xc] + str r2, [sp, #0x10] + bl ov29_02325D7C + mov r0, #0x58 + bl AdvanceFrame + add r0, sp, #0 + bl ov10_022BFAA8 + mov r1, r7 + mov r2, #5 + mov r8, r0 + bl ov29_022E6D68 + mov r0, #1 + bl ov29_022DE5F0 + mov r7, r0 + cmp sb, #0 + bne _0232506C + ldrh r0, [r6, #4] + bl ov00_022BFDEC + cmp r0, #0 + beq _0232506C + mov r6, #0 + bl ov29_022ED0C4 + mov r5, r0 + mov r0, #1 + bl ov29_022E3560 + mov r4, #0xff + mov fp, #1 + b _02325064 +_0232503C: + add r0, r5, #0x20 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #0xff + movgt r5, r4 + mov r0, r5 + movgt r6, fp + bl ov29_022ED0D4 + mov r0, #0x26 + bl AdvanceFrame +_02325064: + cmp r6, #0 + beq _0232503C +_0232506C: + mov r0, r8, lsl #0x10 + mov r4, r0, asr #0x10 + mov r8, #0 + mov r6, #1 + mov r5, #0x26 + b _023250B0 +_02325084: + beq _023250A8 + cmp r7, #0x20 + subgt r7, r7, #0x20 + movle r7, r8 + mov r0, r7, lsl #0x10 + mov r1, r6 + mov r0, r0, asr #0x10 + movle sb, r8 + bl ov29_022DE5D8 +_023250A8: + mov r0, r5 + bl AdvanceFrame +_023250B0: + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + cmpne sb, #0 + bne _02325084 +_023250C4: + mov r0, sl +_023250C8: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023250D0: .word 0x02352AD8 + arm_func_end ov29_02324E78 + + arm_func_start ov29_023250D4 +ov29_023250D4: ; 0x023250D4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r0 + mov sb, r1 + bl ShouldMovePlayAlternativeAnimation + mov r8, r0 + ldr r7, [sl, #0xb4] + mov r1, #0 + mov r0, sl + str r1, [sp] + bl GetApparentWeather + mov r1, r0 + ldrh r0, [sb, #4] + mov r2, r8 + bl GetMoveAnimationId + mov r1, r0 + ldrsh r0, [r7, #4] + bl ov10_022BFA3C + mov r4, r0 + mov r0, sl + ldr r6, [sl, #0xb4] + bl GetApparentWeather + mov r1, r0 + ldrh r0, [sb, #4] + mov r2, r8 + bl GetMoveAnimationId + mov r5, r0 + bl GetMoveAnimation + ldrsh r0, [r0, #2] + cmp r0, #0 + beq _023251E0 + mov r0, sl + bl GetApparentWeather + mov r1, r0 + ldrh r0, [sb, #4] + mov r2, r8 + bl GetMoveAnimationId + mov r1, r0 + ldrsh r0, [r6, #4] + bl ov10_022BF01C + mov r2, r0 + mvn r0, #0 + cmp r2, r0 + ldreq r0, _02325608 ; =0x02352AD8 + ldreqh r1, [r0, #4] + streqh r1, [sp, #0xc] + ldreqh r0, [r0, #6] + streqh r0, [sp, #0xe] + beq _023251A8 + add r0, sp, #0xc + add r1, sl, #0x2c + and r2, r2, #0xff + bl sub_0201CF90 +_023251A8: + strh r5, [sp, #4] + ldrsh r1, [r6, #4] + mov r0, #0 + strh r1, [sp, #6] + ldr r1, [sl, #0xc] + mov r1, r1, asr #8 + strh r1, [sp, #8] + ldr r1, [sl, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0xa] + ldrb r1, [r6, #0x4c] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + b _023251E8 +_023251E0: + mov r0, #0 + strh r0, [sp, #4] +_023251E8: + add r0, sp, #4 + mov r1, #1 + bl ov10_022BF1FC + cmp r0, #0 + ldrne r0, _0232560C ; =0x02353538 + ldrne r0, [r0] + addne r0, r0, #0x1a000 + ldrne r5, [r0, #0x22c] + bne _02325228 + ldrh r0, [sb, #4] + cmp r0, #0x52 + ldreq r0, _0232560C ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x1a000 + ldreq r5, [r0, #0x22c] + movne r5, sl +_02325228: + mov r0, r5 + bl EntityIsValid__02325620 + cmp r0, #0 + moveq r5, sl + ldr r1, [r5, #0xc] + mov r0, r5 + mov r1, r1, asr #8 + strh r1, [sp, #8] + ldr r1, [r5, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0xa] + bl ov29_022E5ED0 + cmp r0, #0 + beq _02325600 + mov r0, sl + mov r1, sb + bl ov29_02325D20 + cmp r0, #0 + bne _02325600 + ldrh r0, [sb, #4] + cmp r0, #0x128 + bne _023252E4 + mov r0, #7 + bl DungeonRandInt + ldr r1, _0232560C ; =0x02353538 + ldr r6, _02325610 ; =0x02352B1C + ldr r3, [r1] + ldr r2, _02325614 ; =0x0237CA84 + ldr r6, [r6, r0, lsl #2] + str r0, [r2] + add r0, r3, #0x1a000 + str r6, [r0, #0x234] + ldr r1, [r1] + mov r0, #0 + add r1, r1, #0x1a000 + ldr r3, [r1, #0x234] + str r3, [r1, #0x238] + ldr r1, [r2] + add r1, r1, #4 + bl ov29_0234B09C + ldr r1, _02325618 ; =0x00000EAA + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, #0x214 + bl ov29_022E56A0 + b _0232531C +_023252E4: + cmp r0, #0x76 + bne _0232531C + ldr r2, _0232560C ; =0x02353538 + mov r3, #0xc + ldr r1, [r2] + mov r0, r5 + add r1, r1, #0x1a000 + str r3, [r1, #0x234] + ldr r2, [r2] + mov r1, #0x214 + add r2, r2, #0x1a000 + ldr r3, [r2, #0x234] + str r3, [r2, #0x238] + bl ov29_022E56A0 +_0232531C: + mov r0, sl + bl GetApparentWeather + mov r1, r0 + ldrh r0, [sb, #4] + mov r2, r8 + bl GetMoveAnimationId + mov r1, r0 + ldrsh r0, [r7, #4] + bl ov10_022BF0F4 + cmp r0, #0x3f00 + beq _02325354 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov29_022EACCC +_02325354: + cmp r4, #0x63 + bne _023253C8 + mov r0, r5 + bl ov29_022E5ED0 + cmp r0, #0 + beq _02325600 + mov r3, r8 + add r0, sp, #4 + mov r1, sl + mov r2, sb + ldrb r8, [r7, #0x4c] + bl ov29_02325644 + mov r7, #0 + mov r6, r7 + mov r5, #2 + mov r4, #0x15 +_02325394: + sub r0, r8, #1 + and r8, r0, #7 + mov r0, sl + mov r1, r6 + mov r2, r8 + bl ov29_023049A8 + mov r0, r5 + mov r1, r4 + bl ov29_022EA370 + add r7, r7, #1 + cmp r7, #8 + blt _02325394 + b _02325600 +_023253C8: + cmp r4, #0x62 + bne _0232543C + mov r0, r5 + bl ov29_022E5ED0 + cmp r0, #0 + beq _02325600 + add r0, sp, #4 + mov r1, sl + mov r2, sb + mov r3, r8 + ldrb r7, [r7, #0x4c] + bl ov29_02325644 + mov r8, #0 + mov r6, r8 + mov r5, #2 + mov r4, #0x15 +_02325408: + and r7, r7, #7 + mov r0, sl + mov r1, r6 + mov r2, r7 + bl ov29_023049A8 + mov r0, r5 + mov r1, r4 + bl ov29_022EA370 + add r8, r8, #1 + cmp r8, #8 + add r7, r7, #1 + ble _02325408 + b _02325600 +_0232543C: + ldrb r0, [r7, #0xd8] + mov fp, #0 + cmp r0, #2 + moveq fp, #1 + beq _02325470 + ldr r0, _0232560C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x1a000 + ldr r1, [r0, #0x22c] + cmp r1, sl + ldrneb r0, [r0, #0x245] + cmpne r0, #0 + movne fp, #1 +_02325470: + ldrb r0, [sl, #0x28] + cmp r0, #0 + bne _02325524 + mov r5, #0 +_02325480: + ldr r0, _0232560C ; =0x02353538 + ldr r0, [r0] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__02325620 + cmp r0, #0 + cmpne r6, sl + ldrneb r0, [r6, #0x28] + cmpne r0, #0 + beq _023254C8 + ldr r1, [r6, #0xb4] + mov r0, r6 + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 + mov r0, #0 + strb r0, [r6, #0x28] +_023254C8: + add r5, r5, #1 + cmp r5, #0x14 + blt _02325480 + mov r0, #0x59 + bl AdvanceFrame + cmp fp, #0 + beq _02325500 + ldr r0, _0232561C ; =0x00000229 + bl GetSpriteIndex__02052708 + mov r1, r0 + mov r0, #1 + bl ov29_022F6F68 + mov r5, r0 + b _02325530 +_02325500: + ldrsh r0, [r7, #4] + bl GetSpriteIndex__02052708 + mov r1, r0 + mov r0, #1 + bl ov29_022F6F68 + mov r1, #0xff + mov r5, r0 + strb r1, [sl, #0xaf] + b _02325530 +_02325524: + mov r0, #0x59 + bl AdvanceFrame + ldrsh r5, [sl, #0xa8] +_02325530: + ldrb r2, [r7, #0x4c] + mov r0, sl + mov r1, r4 + bl ov29_023049A8 + ldrb r1, [sl, #0xae] + mov r0, r5 + bl sub_0201DA80 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + strb r0, [sl, #0x28] + mov r7, #0 + strb r7, [sl, #0x21] + mov r5, #0x59 + add fp, sp, #4 + b _023255D8 +_02325570: + mov r0, r5 + bl AdvanceFrame + add r0, sl, #0x2c + bl sub_0201D1D4 + cmp r4, #0 + cmpne r4, #7 + mov r6, r0 + cmpne r4, #9 + orreq r6, r6, #2 + tst r6, #2 + beq _023255C4 + ldr r0, [sp] + cmp r0, #0 + bne _023255C4 + mov r0, fp + mov r1, sl + mov r2, sb + mov r3, r8 + bl ov29_02325644 + mov r0, #1 + str r0, [sp] +_023255C4: + tst r6, #1 + ldreqb r0, [sl, #0x21] + cmpeq r0, #0 + bne _023255E0 + add r7, r7, #1 +_023255D8: + cmp r7, #0x78 + blt _02325570 +_023255E0: + mov r0, #0 + strb r0, [sl, #0x21] + ldrh r0, [sb, #4] + bl ov10_022BFDCC + cmp r0, #0 + beq _02325600 + mov r0, #1 + bl ov29_022E38E0 +_02325600: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02325608: .word 0x02352AD8 +_0232560C: .word 0x02353538 +_02325610: .word 0x02352B1C +_02325614: .word 0x0237CA84 +_02325618: .word 0x00000EAA +_0232561C: .word 0x00000229 + arm_func_end ov29_023250D4 diff --git a/asm/overlay_29_02325644.s b/asm/overlay_29_02325644.s new file mode 100644 index 00000000..fd3d99fb --- /dev/null +++ b/asm/overlay_29_02325644.s @@ -0,0 +1,3244 @@ + .include "asm/macros.inc" + .include "overlay_29_02325644.inc" + + .text + + arm_func_start ov29_02325644 +ov29_02325644: ; 0x02325644 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r5, r2 + mov r0, r6 + mov r4, r3 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r5, #4] + mov r2, r4 + bl GetMoveAnimationId + bl GetMoveAnimation + ldrh r1, [r7] + ldrsh r0, [r0, #2] + cmp r1, #0 + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, #1 + bl ov29_02325D7C + mov r0, #0x5a + bl AdvanceFrame + mov r0, r7 + bl ov10_022BED90 + mov r1, r6 + mov r2, #1 + bl ov29_022E6D68 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02325644 + + arm_func_start ov29_023256B4 +ov29_023256B4: ; 0x023256B4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x18 + mov r8, r2 + mov sb, r1 + mov r1, r8 + mov sl, r0 + mov r7, r3 + bl ShouldMovePlayAlternativeAnimation + cmp r0, #0 + movne r4, #1 + mov r0, sl + moveq r4, #0 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [r8, #4] + mov r2, r4 + bl GetMoveAnimationId + mov r4, r0 + bl GetMoveAnimation + ldrsh r5, [r0, #4] + mov r0, sb + mov r6, #0 + bl EntityIsValid__02325620 + cmp r0, #0 + beq _02325730 + mov r0, sb + ldr r6, [sb, #0xb4] + bl ov29_022E5ED0 + cmp r0, #0 + bne _02325740 + b _023258E0 +_02325730: + mov r0, r7 + bl ov29_022E2CA0 + cmp r0, #0 + beq _023258E0 +_02325740: + cmp r6, #0 + cmpeq r4, #0x1f4 + beq _023258E0 + mov r0, sl + mov r1, r8 + bl ov29_02325D20 + cmp r0, #0 + bne _023258E0 + cmp r5, #0 + beq _023258E0 + ldr r1, _023258E8 ; =0x02352AD8 + mov r0, r5 + ldrh r2, [r1] + ldrh r1, [r1, #2] + strh r2, [sp] + strh r1, [sp, #2] + bl GetEffectAnimation + ldrsb r5, [r0, #0x19] + mvn r0, #0 + cmp r5, r0 + beq _023257C8 + mov r0, sb + bl EntityIsValid__02325620 + cmp r0, #0 + ldreqh r1, [sp] + ldreqh r0, [sp, #2] + streqh r1, [sp, #0xc] + streqh r0, [sp, #0xe] + beq _023257D8 + add r0, sp, #0xc + add r1, sb, #0x2c + and r2, r5, #0xff + bl sub_0201CF90 + b _023257D8 +_023257C8: + ldrh r1, [sp] + ldrh r0, [sp, #2] + strh r1, [sp, #0xc] + strh r0, [sp, #0xe] +_023257D8: + strh r4, [sp, #4] + cmp r6, #0 + beq _02325828 + ldrsh r1, [r6, #4] + cmp r4, #0x1f4 + mov r0, #0 + strh r1, [sp, #6] + ldr r1, [sb, #0xc] + cmpne r4, #0x50 + mov r1, r1, asr #8 + strh r1, [sp, #8] + ldr r1, [sb, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0xa] + str r0, [sp, #0x10] + ldreq r0, [sl, #0xb4] + ldreqb r0, [r0, #0x4c] + andeq r0, r0, #7 + streq r0, [sp, #0x10] + b _0232586C +_02325828: + mov r0, #1 + strh r0, [sp, #6] + ldrsh r2, [r7] + mov r0, #0x18 + mov r1, #0 + smulbb r2, r2, r0 + add r2, r2, #0xc + mov r2, r2, lsl #8 + mov r2, r2, asr #8 + strh r2, [sp, #8] + ldrsh r2, [r7, #2] + smulbb r0, r2, r0 + add r0, r0, #0x10 + mov r0, r0, lsl #8 + mov r0, r0, asr #8 + strh r0, [sp, #0xa] + str r1, [sp, #0x10] +_0232586C: + mov r1, #0 + add r0, sp, #4 + str r1, [sp, #0x14] + bl ov10_022BF160 + cmp r0, #0 + beq _02325894 + mov r0, #0x5d + bl ov29_0234BA54 + mov r0, #0x5d + bl AdvanceFrame +_02325894: + add r0, sp, #4 + bl ov10_022BFC5C + mov r4, r0 + mov r0, #0x5b + bl AdvanceFrame + mov r0, r4 + mov r1, sb + mov r2, #6 + bl ov29_022E6D68 + mov r0, r4, lsl #0x10 + mov r4, r0, asr #0x10 + mov r5, #0x28 + b _023258D0 +_023258C8: + mov r0, r5 + bl AdvanceFrame +_023258D0: + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + bne _023258C8 +_023258E0: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023258E8: .word 0x02352AD8 + arm_func_end ov29_023256B4 + + arm_func_start ov29_023258EC +ov29_023258EC: ; 0x023258EC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x2c + mov sl, r2 + mov r4, r1 + mov r1, sl + mov r5, r0 + bl ShouldMovePlayAlternativeAnimation + cmp r0, #0 + movne r6, #1 + mov r0, r5 + moveq r6, #0 + bl GetApparentWeather + mov r1, r0 + ldrh r0, [sl, #4] + mov r2, r6 + bl GetMoveAnimationId + mov r6, r0 + bl GetMoveAnimation + ldrsh r7, [r0, #4] + mov r0, r4 + bl EntityIsValid__02325620 + cmp r0, #0 + bne _02325958 + mov r0, r5 + bl EntityIsValid__02325620 + cmp r0, #0 + beq _02325B04 +_02325958: + mov r0, r5 + ldr r8, [r5, #0xb4] + ldr sb, [r4, #0xb4] + bl ov29_022E5ED0 + cmp r0, #0 + beq _02325B04 + mov r0, r4 + bl ov29_022E5ED0 + cmp r0, #0 + beq _02325B04 + mov r0, r5 + mov r1, sl + bl ov29_02325D20 + cmp r0, #0 + bne _02325B04 + cmp r8, #0 + cmpne sb, #0 + beq _02325B04 + cmp r7, #0 + beq _02325B04 + ldr r1, _02325B0C ; =0x02352AD8 + mov r0, r7 + ldrh r2, [r1, #0xc] + ldrh r1, [r1, #0xe] + strh r2, [sp] + strh r1, [sp, #2] + bl GetEffectAnimation + ldrsb ip, [r0, #0x19] + mov r0, #0 + add r7, sp, #0x18 + strh r6, [sp, #0x18] + sub r6, r0, #1 + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldmia r7!, {r0, r1, r2, r3} + cmp ip, r6 + ldr r6, [r7] + add r7, sp, #4 + stmia r7!, {r0, r1, r2, r3} + str r6, [r7] + beq _02325A24 + and r6, ip, #0xff + add r0, sp, #0x20 + mov r2, r6 + add r1, r4, #0x2c + bl sub_0201CF90 + add r0, sp, #0xc + mov r2, r6 + add r1, r5, #0x2c + bl sub_0201CF90 + b _02325A3C +_02325A24: + ldrh r1, [sp] + ldrh r0, [sp, #2] + strh r1, [sp, #0x20] + strh r0, [sp, #0x22] + strh r1, [sp, #0xc] + strh r0, [sp, #0xe] +_02325A3C: + ldrsh r1, [sb, #4] + add r0, sp, #0x18 + strh r1, [sp, #0x1a] + ldr r1, [r4, #0xc] + mov r1, r1, asr #8 + strh r1, [sp, #0x1c] + ldr r1, [r4, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0x1e] + ldrsh r1, [r8, #4] + strh r1, [sp, #6] + ldr r1, [r5, #0xc] + mov r1, r1, asr #8 + strh r1, [sp, #8] + ldr r1, [r5, #0x10] + mov r1, r1, asr #8 + strh r1, [sp, #0xa] + bl ov10_022BF160 + cmp r0, #0 + beq _02325A9C + mov r0, #0x5d + bl ov29_0234BA54 + mov r0, #0x5d + bl AdvanceFrame +_02325A9C: + add r0, sp, #0x18 + bl ov10_022BFC5C + mov r7, r0 + add r0, sp, #4 + bl ov10_022BFC5C + mov r6, r0 + mov r0, #0x5b + bl AdvanceFrame + mov r0, r7 + mov r1, r4 + mov r2, #6 + bl ov29_022E6D68 + mov r0, r6 + mov r1, r5 + mov r2, #6 + bl ov29_022E6D68 + mov r0, r7, lsl #0x10 + mov r4, r0, asr #0x10 + mov r5, #0x28 + b _02325AF4 +_02325AEC: + mov r0, r5 + bl AdvanceFrame +_02325AF4: + mov r0, r4 + bl AnimationHasMoreFrames + cmp r0, #0 + bne _02325AEC +_02325B04: + add sp, sp, #0x2c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02325B0C: .word 0x02352AD8 + arm_func_end ov29_023258EC + + arm_func_start GetMoveAnimationId +GetMoveAnimationId: ; 0x02325B10 + cmp r0, #0x1f + bne _02325B68 + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _02325B64 +_02325B24: ; jump table + b _02325B44 ; case 0 + b _02325B48 ; case 1 + b _02325B50 ; case 2 + b _02325B44 ; case 3 + b _02325B58 ; case 4 + b _02325B60 ; case 5 + b _02325B44 ; case 6 + b _02325B60 ; case 7 +_02325B44: + bx lr +_02325B48: + ldr r0, _02325C44 ; =0x0000021F + bx lr +_02325B50: + ldr r0, _02325C48 ; =0x00000222 + bx lr +_02325B58: + ldr r0, _02325C4C ; =0x00000221 + bx lr +_02325B60: + mov r0, #0x220 +_02325B64: + bx lr +_02325B68: + cmp r2, #0 + bxeq lr + cmp r0, #0x9c + bgt _02325BDC + cmp r0, #0x97 + blt _02325B98 + beq _02325C2C + cmp r0, #0x99 + beq _02325C34 + cmp r0, #0x9c + ldreq r0, _02325C50 ; =0x00000229 + bx lr +_02325B98: + cmp r0, #0x3c + bgt _02325BC0 + bge _02325C24 + cmp r0, #8 + bgt _02325BB4 + ldreq r0, _02325C54 ; =0x00000223 + bx lr +_02325BB4: + cmp r0, #0x19 + ldreq r0, _02325C58 ; =0x0000022D + bx lr +_02325BC0: + cmp r0, #0x4b + bgt _02325BD0 + ldreq r0, _02325C5C ; =0x00000225 + bx lr +_02325BD0: + cmp r0, #0x64 + ldreq r0, _02325C60 ; =0x00000226 + bx lr +_02325BDC: + cmp r0, #0xed + bgt _02325C04 + bge _02325C3C + cmp r0, #0xcd + bgt _02325BF8 + ldreq r0, _02325C64 ; =0x0000022A + bx lr +_02325BF8: + cmp r0, #0xe3 + ldreq r0, _02325C68 ; =0x0000022E + bx lr +_02325C04: + cmp r0, #0x15c + bgt _02325C14 + ldreq r0, _02325C6C ; =0x0000022B + bx lr +_02325C14: + ldr r1, _02325C70 ; =0x000001DD + cmp r0, r1 + moveq r0, #0x230 + bx lr +_02325C24: + mov r0, #0x224 + bx lr +_02325C2C: + ldr r0, _02325C74 ; =0x00000227 + bx lr +_02325C34: + mov r0, #0x228 + bx lr +_02325C3C: + mov r0, #0x22c + bx lr + .align 2, 0 +_02325C44: .word 0x0000021F +_02325C48: .word 0x00000222 +_02325C4C: .word 0x00000221 +_02325C50: .word 0x00000229 +_02325C54: .word 0x00000223 +_02325C58: .word 0x0000022D +_02325C5C: .word 0x00000225 +_02325C60: .word 0x00000226 +_02325C64: .word 0x0000022A +_02325C68: .word 0x0000022E +_02325C6C: .word 0x0000022B +_02325C70: .word 0x000001DD +_02325C74: .word 0x00000227 + arm_func_end GetMoveAnimationId + + arm_func_start ShouldMovePlayAlternativeAnimation +ShouldMovePlayAlternativeAnimation: ; 0x02325C78 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldrh r1, [r4, #4] + mov r5, r0 + cmp r1, #0xed + bne _02325CC8 + bl EntityIsValid__02325620 + cmp r0, #0 + beq _02325D04 + ldr r0, [r5] + cmp r0, #1 + bne _02325D04 + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0x5e] + cmp r0, #0xe + ldrneb r0, [r1, #0x5f] + cmpne r0, #0xe + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02325CC8: + cmp r1, #0x19 + cmpne r1, #0xe3 + bne _02325CEC + mov r0, r5 + bl ov29_023007A8 + cmp r0, #0 + movne r0, #0 + moveq r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_02325CEC: + cmp r1, #0x97 + bne _02325D04 + bl GetApparentWeather + cmp r0, #1 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_02325D04: + mov r0, r5 + mov r1, r4 + bl ov29_023245A4 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ShouldMovePlayAlternativeAnimation + + arm_func_start ov29_02325D20 +ov29_02325D20: ; 0x02325D20 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldrh r1, [r4, #4] + mov r5, r0 + cmp r1, #0x9c + bne _02325D4C + bl GetTileAtEntity + bl ov29_02337E2C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02325D4C: + ldrh r0, [r4, #4] + cmp r0, #8 + bne _02325D74 + mov r0, r5 + bl GetTileAtEntity + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02325D74: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02325D20 + + arm_func_start ov29_02325D7C +ov29_02325D7C: ; 0x02325D7C + stmdb sp!, {r4, lr} + mov r4, r1 + bl ov10_022BF160 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0x5d + bl ov29_0234BA54 + mov r0, #0x5d + bl AdvanceFrame + cmp r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #5 + mov r1, #0 + bl ov29_022EA428 + mov r0, #0x5c + bl AdvanceFrame + ldmia sp!, {r4, pc} + arm_func_end ov29_02325D7C + + arm_func_start ov29_02325DC0 +ov29_02325DC0: ; 0x02325DC0 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02325DC0 + + arm_func_start ov29_02325DE4 +ov29_02325DE4: ; 0x02325DE4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02325E50 + ldr r1, _02325E5C ; =0x022C4440 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02325E50 + ldr r0, _02325E60 ; =0x02352AEC + mov r3, r4 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat +_02325E50: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02325E5C: .word 0x022C4440 +_02325E60: .word 0x02352AEC + arm_func_end ov29_02325DE4 + + arm_func_start ov29_02325E64 +ov29_02325E64: ; 0x02325E64 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr ip, _02325EB8 ; =0x0237CA70 + str r3, [sp] + ldr ip, [ip] + ldr r3, _02325EBC ; =0x02352AF0 + mov r4, #0 + ldr r3, [r3, ip, lsl #2] + bl DealDamage + cmp r0, #0 + ldreq r0, _02325EC0 ; =0x0237CA69 + moveq r1, #1 + streqb r1, [r0] + ldr r1, _02325EB8 ; =0x0237CA70 + movne r4, #1 + ldr r2, [r1] + mov r0, r4 + add r2, r2, #1 + str r2, [r1] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02325EB8: .word 0x0237CA70 +_02325EBC: .word 0x02352AF0 +_02325EC0: .word 0x0237CA69 + arm_func_end ov29_02325E64 + + arm_func_start ov29_02325EC4 +ov29_02325EC4: ; 0x02325EC4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _02325EFC ; =0x022C4860 + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + add r2, r2, #1 + bl TryInflictYawningStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02325EFC: .word 0x022C4860 + arm_func_end ov29_02325EC4 + + arm_func_start ov29_02325F00 +ov29_02325F00: ; 0x02325F00 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _02325F38 ; =0x022C4720 + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + mov r3, #1 + bl TryInflictSleepStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02325F38: .word 0x022C4720 + arm_func_end ov29_02325F00 + + arm_func_start ov29_02325F3C +ov29_02325F3C: ; 0x02325F3C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _02325F70 ; =0x022C4724 + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl TryInflictNightmareStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02325F70: .word 0x022C4724 + arm_func_end ov29_02325F3C + + arm_func_start ov29_02325F74 +ov29_02325F74: ; 0x02325F74 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl GetApparentWeather + mov ip, #1 + ldr r1, _02325FB0 ; =0x022C4984 + mov r0, r0, lsl #1 + ldrsh r2, [r1, r0] + mov r0, r5 + mov r1, r4 + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02325FB0: .word 0x022C4984 + arm_func_end ov29_02325F74 + + arm_func_start ov29_02325FB4 +ov29_02325FB4: ; 0x02325FB4 + stmdb sp!, {r3, lr} + bl ov29_02319584 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02325FB4 + + arm_func_start ov29_02325FC4 +ov29_02325FC4: ; 0x02325FC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl GetTileAtEntity + mov sb, r0 + bl ov29_02337E2C + cmp r0, #0 + beq _02326000 + ldrh r0, [sb] + and r0, r0, #3 + cmp r0, #1 + beq _02326014 +_02326000: + ldr r2, _0232607C ; =0x00000EC4 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02326074 +_02326014: + mov r0, r8 + mov r1, r6 + bl ov29_023245A4 + cmp r0, #0 + beq _02326050 + ldr r1, _02326080 ; =0x022C47E4 + mov r0, r8 + ldr r3, [r1] + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + mov r0, r8 + bl ov29_02318D58 + b _02326070 +_02326050: + ldr r0, _02326084 ; =0x00000CD6 + bl StringFromMessageId + str r0, [sp] + mov r0, r8 + mov r1, r8 + mov r3, r6 + mov r2, #0xa + bl ov29_02318BBC +_02326070: + mov r4, #1 +_02326074: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0232607C: .word 0x00000EC4 +_02326080: .word 0x022C47E4 +_02326084: .word 0x00000CD6 + arm_func_end ov29_02325FC4 + + arm_func_start ov29_02326088 +ov29_02326088: ; 0x02326088 + stmdb sp!, {r3, lr} + ldr r2, _023260A4 ; =0x02352AE8 + mov r3, #1 + ldr r2, [r2] + bl LowerHitChanceStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023260A4: .word 0x02352AE8 + arm_func_end ov29_02326088 + + arm_func_start ov29_023260A8 +ov29_023260A8: ; 0x023260A8 + stmdb sp!, {r3, lr} + ldr r2, _023260CC ; =0x02352AEC + mov ip, #1 + ldr r2, [r2] + mov r3, #0x80 + str ip, [sp] + bl ApplyOffensiveStatMultiplier + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023260CC: .word 0x02352AEC + arm_func_end ov29_023260A8 + + arm_func_start ov29_023260D0 +ov29_023260D0: ; 0x023260D0 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _02326120 ; =0x022C4654 + ldr r2, _02326124 ; =0x02353538 + ldrsh r3, [r3] + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + add r2, r2, #0xcd00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x42] + bl ov29_023354C4 + cmp r0, #0 + bne _02326118 + ldr r2, _02326128 ; =0x00000EC5 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02326118: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02326120: .word 0x022C4654 +_02326124: .word 0x02353538 +_02326128: .word 0x00000EC5 + arm_func_end ov29_023260D0 + + arm_func_start ov29_0232612C +ov29_0232612C: ; 0x0232612C + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _0232617C ; =0x022C4654 + ldr r2, _02326180 ; =0x02353538 + ldrsh r3, [r3] + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + add r2, r2, #0xcd00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x44] + bl ov29_023354C4 + cmp r0, #0 + bne _02326174 + ldr r2, _02326184 ; =0x00000EC8 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02326174: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232617C: .word 0x022C4654 +_02326180: .word 0x02353538 +_02326184: .word 0x00000EC8 + arm_func_end ov29_0232612C + + arm_func_start ov29_02326188 +ov29_02326188: ; 0x02326188 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_02305C28 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02326188 + + arm_func_start ov29_023261A0 +ov29_023261A0: ; 0x023261A0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023261FC + ldr r1, _02326208 ; =0x022C462C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023261FC + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl LowerSpeed +_023261FC: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326208: .word 0x022C462C + arm_func_end ov29_023261A0 + + arm_func_start ov29_0232620C +ov29_0232620C: ; 0x0232620C + stmdb sp!, {r3, lr} + mov r2, #0 + bl ov29_02316720 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232620C + + arm_func_start ov29_02326220 +ov29_02326220: ; 0x02326220 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r0, _02326260 ; =0x00000CCF + mov r5, r1 + mov r4, r2 + bl StringFromMessageId + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #0xc + bl ov29_02318BBC + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326260: .word 0x00000CCF + arm_func_end ov29_02326220 + + arm_func_start ov29_02326264 +ov29_02326264: ; 0x02326264 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r7, r1 + ldr r5, [r7, #0xb4] + mov r4, #0 + ldrsh r5, [r5, #0x10] + mov r8, r0 + mov r6, r2 + add r2, r5, r5, lsr #31 + mov r5, r3 + strb r4, [sp, #0x1c] + movs sl, r2, asr #1 + beq _02326304 + mov r0, r6 + bl GetMoveType + mov r4, r0 + ldrh r0, [r6, #4] + bl GetMoveCategory + mov sb, r0 + mov r1, r5 + mov r0, r6 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r4, sb} + str r0, [sp, #0xc] + mov r5, #0 + str r5, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r7 + mov r2, sl + mov r0, r8 + str r5, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r5 + strb r0, [sp, #0x1c] + b _0232630C +_02326304: + ldr r2, _02326318 ; =0x00000EC9 + bl LogMessageByIdWithPopupCheckUserTarget +_0232630C: + ldrb r0, [sp, #0x1c] + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02326318: .word 0x00000EC9 + arm_func_end ov29_02326264 + + arm_func_start ov29_0232631C +ov29_0232631C: ; 0x0232631C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + ldr r4, [r6, #0xb4] + ldr r0, [r5, #0xb4] + ldrsh r3, [r4, #0x10] + ldrsh r2, [r0, #0x10] + ldr r1, _02326400 ; =0x000003E7 + add r2, r3, r2 + add r2, r2, r2, lsr #31 + mov r2, r2, lsl #0xf + mov r2, r2, asr #0x10 + strh r2, [r4, #0x10] + strh r2, [r0, #0x10] + ldrsh r3, [r4, #0x12] + ldrsh r2, [r4, #0x16] + add r3, r3, r2 + cmp r3, r1 + ldrsh r2, [r4, #0x10] + movle r1, r3 + cmp r2, r1 + ble _02326384 + ldr r1, _02326400 ; =0x000003E7 + cmp r3, r1 + movgt r3, r1 + strh r3, [r4, #0x10] +_02326384: + ldrsh r2, [r0, #0x12] + ldrsh r1, [r0, #0x16] + ldr r3, _02326400 ; =0x000003E7 + add r2, r2, r1 + cmp r2, r3 + ldrsh r1, [r0, #0x10] + movle r3, r2 + cmp r1, r3 + ble _023263B8 + ldr r1, _02326400 ; =0x000003E7 + cmp r2, r1 + movgt r2, r1 + strh r2, [r0, #0x10] +_023263B8: + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldrb r0, [r4, #0x108] + ldr r2, _02326404 ; =0x00000ECA + mov r1, r5 + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x108] + mov r0, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02326400: .word 0x000003E7 +_02326404: .word 0x00000ECA + arm_func_end ov29_0232631C + + arm_func_start ov29_02326408 +ov29_02326408: ; 0x02326408 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sb, r1 + ldr r8, [sb, #0xb4] + mov r7, #0 + mov sl, r0 + mov r6, r7 + add r5, r8, #0x124 + mov fp, #1 +_0232642C: + ldrb r0, [r5, r6, lsl #3] + mov r4, r6, lsl #3 + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _023264A0 + ldrb r0, [r5, r4] + tst r0, #0x20 + bne _02326494 + tst r0, #0x10 + beq _023264A0 + bl ov29_0234B034 + mov r1, #0 + add r2, r5, r4 + mov r3, r1 + bl FormatMoveStringMore + ldr r2, _02326548 ; =0x00000ECB + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r0, [r5, r4] + mov r7, #1 + orr r0, r0, #0x20 + strb r0, [r5, r4] + b _023264A0 +_02326494: + tst r0, #0x10 + biceq r0, r0, #0x20 + streqb r0, [r5, r4] +_023264A0: + add r6, r6, #1 + cmp r6, #4 + blt _0232642C + ldrb r0, [r8, #0x144] + tst r0, #0x20 + bne _02326504 + tst r0, #0x10 + beq _02326510 + add r0, sp, #0 + mov r1, #0x160 + bl InitMove + ldrb r0, [r8, #0x144] + mov r7, #1 + orr r0, r0, #0x20 + strb r0, [r8, #0x144] + bl ov29_0234B034 + mov r1, #0 + add r2, sp, #0 + mov r3, r1 + bl FormatMoveStringMore + ldr r2, _02326548 ; =0x00000ECB + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _02326510 +_02326504: + tst r0, #0x10 + biceq r0, r0, #0x20 + streqb r0, [r8, #0x144] +_02326510: + cmp r7, #0 + beq _0232652C + ldrb r0, [r8, #0xd2] + cmp r0, #1 + moveq r0, #0 + streqb r0, [r8, #0xd2] + b _0232653C +_0232652C: + ldr r2, _0232654C ; =0x00000ECC + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232653C: + mov r0, r7 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02326548: .word 0x00000ECB +_0232654C: .word 0x00000ECC + arm_func_end ov29_02326408 + + arm_func_start ov29_02326550 +ov29_02326550: ; 0x02326550 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, r2 + bl LowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02326550 + + arm_func_start ov29_02326568 +ov29_02326568: ; 0x02326568 + stmdb sp!, {r3, r4, r5, lr} + mov r2, #1 + mov r3, #0 + mov r5, r0 + mov r4, r1 + bl TryInflictConfusedStatus + ldr r1, _023265A0 ; =0x02352AEC + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023265A0: .word 0x02352AEC + arm_func_end ov29_02326568 + + arm_func_start ov29_023265A4 +ov29_023265A4: ; 0x023265A4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_023007A8 + cmp r0, #0 + beq _02326624 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02326634 + ldr r1, _02326640 ; =0x022C4600 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02326634 + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl TryInflictCringeStatus + b _02326634 +_02326624: + ldr r2, _02326644 ; =0x00000ECD + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02326634: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02326640: .word 0x022C4600 +_02326644: .word 0x00000ECD + arm_func_end ov29_023265A4 + + arm_func_start ov29_02326648 +ov29_02326648: ; 0x02326648 + stmdb sp!, {r3, lr} + ldr r2, _0232666C ; =0x02352AEC + mov ip, #1 + ldr r2, [r2] + mov r3, #0x40 + str ip, [sp] + bl ApplyDefensiveStatMultiplier + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232666C: .word 0x02352AEC + arm_func_end ov29_02326648 + + arm_func_start ov29_02326670 +ov29_02326670: ; 0x02326670 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023266CC + ldr r1, _023266D8 ; =0x022C444C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023266CC + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_023266CC: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023266D8: .word 0x022C444C + arm_func_end ov29_02326670 + + arm_func_start ov29_023266DC +ov29_023266DC: ; 0x023266DC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl GetApparentWeather + mov r4, r0 + mov r0, r8 + mov r1, r7 + bl ov29_02307C78 + ldr ip, _02326748 ; =0x022C4B54 + ldr r2, _0232674C ; =0x022C48DC + ldr ip, [ip, r4, lsl #2] + ldrb r2, [r2, r4] + str ip, [sp] + mov r0, r8 + mov r1, r7 + mov r3, r6 + str r5, [sp, #4] + bl ov29_02332CDC + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02326748: .word 0x022C4B54 +_0232674C: .word 0x022C48DC + arm_func_end ov29_023266DC + + arm_func_start ov29_02326750 +ov29_02326750: ; 0x02326750 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + ldr r1, [r5, #0xb4] + mov r6, r0 + ldrb r0, [r1, #0xd2] + mov r1, r5 + mov r4, #0 + cmp r0, #9 + moveq ip, #0x200 + movne ip, #0x100 + str r3, [sp] + mov r0, r6 + mov r3, ip + bl DealDamage + cmp r0, #0 + beq _023267C8 + ldr r1, _023267D4 ; =0x022C44A4 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023267C8 + mov r0, r6 + mov r1, r5 + mov r2, #0x3b + mov r3, #0 + bl TryInflictConstrictionStatus +_023267C8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023267D4: .word 0x022C44A4 + arm_func_end ov29_02326750 + + arm_func_start ov29_023267D8 +ov29_023267D8: ; 0x023267D8 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _02326808 ; =0x02352AE8 + mov ip, #1 + ldr r2, [r2] + str ip, [sp] + mov r3, #2 + str ip, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02326808: .word 0x02352AE8 + arm_func_end ov29_023267D8 + + arm_func_start ov29_0232680C +ov29_0232680C: ; 0x0232680C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r1 + ldr r1, [r5, #0xb4] + mov r4, #0 + add lr, r1, #0x124 + mov ip, #1 + mov r6, r0 + mov r7, r4 + mov r3, r4 + mov r1, r4 + mov r0, ip +_02326838: + ldrb r2, [lr, r7, lsl #3] + add r8, lr, r7, lsl #3 + tst r2, #1 + movne r2, ip + moveq r2, r3 + tst r2, #0xff + beq _02326864 + ldrb r2, [r8] + tst r2, #0x10 + movne r4, r0 + strneb r1, [r8, #6] +_02326864: + add r7, r7, #1 + cmp r7, #4 + blt _02326838 + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + cmp r4, #0 + beq _0232689C + ldr r2, _023268B4 ; =0x00000ECE + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _023268AC +_0232689C: + ldr r2, _023268B8 ; =0x00000ECF + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_023268AC: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023268B4: .word 0x00000ECE +_023268B8: .word 0x00000ECF + arm_func_end ov29_0232680C + + arm_func_start ov29_023268BC +ov29_023268BC: ; 0x023268BC + stmdb sp!, {r3, lr} + bl ov29_02315D84 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_023268BC + + arm_func_start ov29_023268CC +ov29_023268CC: ; 0x023268CC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _02326904 ; =0x022C47C4 + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + mov r3, #0 + bl ov29_02315C00 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02326904: .word 0x022C47C4 + arm_func_end ov29_023268CC + + arm_func_start ov29_02326908 +ov29_02326908: ; 0x02326908 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl ov29_02307C78 + mov r0, r5 + mov r1, r4 + bl ov29_02319418 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02326908 + + arm_func_start ov29_0232692C +ov29_0232692C: ; 0x0232692C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + ldr r5, [sb, #0xb4] + mov r6, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, sb + mov r1, r8 + mov r2, r7 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + beq _02326988 + mov r1, r4 + mov r0, sb + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + movne r0, r4 + strneb r0, [r5, #0x15f] +_02326988: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_0232692C + + arm_func_start ov29_02326990 +ov29_02326990: ; 0x02326990 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023269F8 + ldr r1, _02326A04 ; =0x022C4428 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023269F8 + ldr r0, _02326A08 ; =0x02352AEC + mov ip, #0 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + mov r3, #0x80 + str ip, [sp] + bl ApplyOffensiveStatMultiplier +_023269F8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326A04: .word 0x022C4428 +_02326A08: .word 0x02352AEC + arm_func_end ov29_02326990 + + arm_func_start ov29_02326A0C +ov29_02326A0C: ; 0x02326A0C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r2, _02326A6C ; =0x02352AEC + ldr r4, [r6, #0xb4] + mov ip, #1 + strh ip, [r4, #0x10] + ldr r2, [r2] + mov r3, #0x40 + mov r5, r1 + str ip, [sp] + bl ApplyOffensiveStatMultiplier + ldr r0, _02326A70 ; =0x02352AE8 + mov ip, #1 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + mov r3, #0x40 + str ip, [sp] + bl ApplyOffensiveStatMultiplier + mov r0, #1 + strb r0, [r4, #0x15e] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326A6C: .word 0x02352AEC +_02326A70: .word 0x02352AE8 + arm_func_end ov29_02326A0C + + arm_func_start ov29_02326A74 +ov29_02326A74: ; 0x02326A74 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02326AD4 + ldr r1, _02326AE0 ; =0x022C4500 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02326AD4 + ldr r1, _02326AE4 ; =0x02352AEC + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat +_02326AD4: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326AE0: .word 0x022C4500 +_02326AE4: .word 0x02352AEC + arm_func_end ov29_02326A74 + + arm_func_start ov29_02326AE8 +ov29_02326AE8: ; 0x02326AE8 + stmdb sp!, {r3, r4, r5, lr} + mov r2, #1 + mov r3, #0 + mov r5, r0 + mov r4, r1 + bl TryInflictConfusedStatus + ldr r1, _02326B20 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #1 + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02326B20: .word 0x02352AE8 + arm_func_end ov29_02326AE8 + + arm_func_start ov29_02326B24 +ov29_02326B24: ; 0x02326B24 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r5, r1 + bl ov29_02313C74 + movs r4, r0 + beq _02326B94 + ldr r3, [r5, #0xb4] + ldrb r0, [r3, #0x15c] + cmp r0, #0 + bne _02326BAC + mov r0, #1 + mov r1, r5 + mov r2, #0 + strb r0, [r3, #0x15c] + bl SubstitutePlaceholderStringTags + cmp r4, #1 + bne _02326B80 + ldr r2, _02326BB8 ; =0x00000CDD + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02326BAC +_02326B80: + ldr r2, _02326BBC ; =0x00000CDC + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02326BAC +_02326B94: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, #1 + str r2, [sp] + bl TryInflictBurnStatus +_02326BAC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326BB8: .word 0x00000CDD +_02326BBC: .word 0x00000CDC + arm_func_end ov29_02326B24 + + arm_func_start ov29_02326BC0 +ov29_02326BC0: ; 0x02326BC0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov sb, r0 + mov r4, r3 + mov r8, r1 + mov r7, r2 + ldr lr, [sb, #0xb4] + mov r6, #1 + mov ip, #0 + ldr r3, _02326C98 ; =0x022C4C0C + ldr r0, _02326C9C ; =0x000003E7 + b _02326C18 +_02326BF0: + mov r5, ip, lsl #2 + ldrsh r2, [r3, r5] + cmp r2, #0 + blt _02326C20 + ldrsh r1, [lr, #0xe] + cmp r1, r2 + ldrlt r0, _02326CA0 ; =0x022C4C0E + ldrltsh r6, [r0, r5] + blt _02326C20 + add ip, ip, #1 +_02326C18: + cmp ip, r0 + blt _02326BF0 +_02326C20: + mov r0, r7 + bl GetMoveType + mov r5, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r4 + mov r4, r0 + mov r0, r7 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r5} + str r4, [sp, #8] + mov r2, r6 + str r0, [sp, #0xc] + mov r6, #0 + str r6, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r8 + mov r0, sb + str r6, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r6 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02326C98: .word 0x022C4C0C +_02326C9C: .word 0x000003E7 +_02326CA0: .word 0x022C4C0E + arm_func_end ov29_02326BC0 + + arm_func_start ov29_02326CA4 +ov29_02326CA4: ; 0x02326CA4 + ldr ip, _02326CB0 ; =ov29_02314EB8 + mov r2, #1 + bx ip + .align 2, 0 +_02326CB0: .word ov29_02314EB8 + arm_func_end ov29_02326CA4 + + arm_func_start ov29_02326CB4 +ov29_02326CB4: ; 0x02326CB4 + stmdb sp!, {r3, lr} + mov r2, #4 + bl ov29_02318D98 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02326CB4 + + arm_func_start ov29_02326CC8 +ov29_02326CC8: ; 0x02326CC8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02326D40 + ldr r1, _02326D4C ; =0x022C4688 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02326D40 + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_02326D40: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02326D4C: .word 0x022C4688 + arm_func_end ov29_02326CC8 + + arm_func_start ov29_02326D50 +ov29_02326D50: ; 0x02326D50 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02326DC8 + ldr r1, _02326DD4 ; =0x022C4544 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02326DC8 + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_02326DC8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02326DD4: .word 0x022C4544 + arm_func_end ov29_02326D50 + + arm_func_start ov29_02326DD8 +ov29_02326DD8: ; 0x02326DD8 + stmdb sp!, {r3, lr} + ldrh r3, [r2, #4] + ldr r2, _02326E00 ; =0x0000013B + cmp r3, r2 + moveq r2, #0x7a + movne r2, #0x51 + mov r3, #0 + bl ov29_023174C8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02326E00: .word 0x0000013B + arm_func_end ov29_02326DD8 + + arm_func_start ov29_02326E04 +ov29_02326E04: ; 0x02326E04 + stmdb sp!, {r3, lr} + ldr r2, _02326E1C ; =0x02352AE8 + ldr r2, [r2] + bl BoostHitChanceStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02326E1C: .word 0x02352AE8 + arm_func_end ov29_02326E04 + + arm_func_start ov29_02326E20 +ov29_02326E20: ; 0x02326E20 + stmdb sp!, {r3, lr} + ldr ip, [r1, #0xb4] + mov lr, #1 + ldrb ip, [ip, #0xd2] + add ip, ip, #0xf9 + and ip, ip, #0xff + cmp ip, #1 + movls lr, #2 + str r3, [sp] + mov r3, lr, lsl #8 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02326E20 + + arm_func_start ov29_02326E60 +ov29_02326E60: ; 0x02326E60 + stmdb sp!, {r3, lr} + ldr r2, _02326E7C ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02326E7C: .word 0x02352AEC + arm_func_end ov29_02326E60 + + arm_func_start ov29_02326E80 +ov29_02326E80: ; 0x02326E80 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02326E80 + + arm_func_start ov29_02326E98 +ov29_02326E98: ; 0x02326E98 + stmdb sp!, {r3, lr} + ldr r2, _02326EB4 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02326EB4: .word 0x02352AEC + arm_func_end ov29_02326E98 + + arm_func_start ov29_02326EB8 +ov29_02326EB8: ; 0x02326EB8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl ov29_023245A4 + cmp r0, #0 + beq _02326F14 + ldr r1, _02326F40 ; =0x022C48B0 + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r7 + and r4, r1, #0xff + bl ov29_02318D58 + b _02326F38 +_02326F14: + ldr r0, _02326F44 ; =0x00000CCD + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r7 + mov r3, r5 + mov r2, #4 + bl ov29_02318BBC + mov r4, #1 +_02326F38: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02326F40: .word 0x022C48B0 +_02326F44: .word 0x00000CCD + arm_func_end ov29_02326EB8 + + arm_func_start ov29_02326F48 +ov29_02326F48: ; 0x02326F48 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r0, _02326F88 ; =0x00000CCE + mov r5, r1 + mov r4, r2 + bl StringFromMessageId + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #1 + bl ov29_02318BBC + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02326F88: .word 0x00000CCE + arm_func_end ov29_02326F48 + + arm_func_start ov29_02326F8C +ov29_02326F8C: ; 0x02326F8C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r3, #0 + mov r6, r0 + strb r3, [sp, #0x1c] + ldr r3, [r6, #0xb4] + ldr r0, _0232702C ; =0x000003E7 + ldr r3, [r3, #0xb8] + mov r8, r2 + mov r4, r3, lsl #1 + cmp r0, r3, lsl #1 + movlt r4, r0 + mov r0, r8 + mov r5, r1 + bl GetMoveType + mov r7, r0 + ldrh r0, [r8, #4] + bl GetMoveCategory + add r2, sp, #0x1c + stmia sp, {r2, r7} + str r0, [sp, #8] + ldr r1, _02327030 ; =0x0000023E + mov ip, #0 + str r1, [sp, #0xc] + str ip, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r0, r6 + mov r1, r5 + mov r2, r4 + str ip, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232702C: .word 0x000003E7 +_02327030: .word 0x0000023E + arm_func_end ov29_02326F8C + + arm_func_start ov29_02327034 +ov29_02327034: ; 0x02327034 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023270A0 + ldr r1, _023270AC ; =0x022C4450 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023270A0 + ldr r0, _023270B0 ; =0x02352AEC + mov r3, r4 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat +_023270A0: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023270AC: .word 0x022C4450 +_023270B0: .word 0x02352AEC + arm_func_end ov29_02327034 + + arm_func_start ov29_023270B4 +ov29_023270B4: ; 0x023270B4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327110 + ldr r1, _0232711C ; =0x022C4534 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327110 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_02327110: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232711C: .word 0x022C4534 + arm_func_end ov29_023270B4 + + arm_func_start ov29_02327120 +ov29_02327120: ; 0x02327120 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232717C + ldr r1, _02327188 ; =0x022C4658 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232717C + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_0232717C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327188: .word 0x022C4658 + arm_func_end ov29_02327120 + + arm_func_start ov29_0232718C +ov29_0232718C: ; 0x0232718C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r4, #0 + mov sb, r0 + strb r4, [sp, #0x1c] + mov r8, r1 + ldr r1, [r8, #0xb4] + ldr r0, [sb, #0xb4] + ldrsh r1, [r1, #0x10] + ldrsh r0, [r0, #0x10] + mov r7, r2 + mov r6, r3 + subs r5, r1, r0 + mov r0, r8 + movmi r5, r4 + bl ov29_02319748 + cmp r0, #0 + mov r0, r7 + movne r8, sb + bl GetMoveType + mov r4, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r6 + mov r6, r0 + mov r0, r7 + bl ov29_02324E44 + mov r2, r5 + add r5, sp, #0x1c + str r5, [sp] + stmib sp, {r4, r6} + str r0, [sp, #0xc] + mov r3, #0 + str r3, [sp, #0x10] + mov r4, #1 + str r4, [sp, #0x14] + mov r1, r8 + mov r0, sb + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, r4 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_0232718C + + arm_func_start ov29_0232724C +ov29_0232724C: ; 0x0232724C + stmdb sp!, {r3, lr} + ldr ip, [r0, #0xb4] + mov lr, #0x100 + ldrb ip, [ip, #0xbf] + cmp ip, #0 + ldrne ip, _02327288 ; =0x022C4718 + str r3, [sp] + ldrne lr, [ip] + mov r3, lr + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02327288: .word 0x022C4718 + arm_func_end ov29_0232724C + + arm_func_start ov29_0232728C +ov29_0232728C: ; 0x0232728C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023272E8 + ldr r1, _023272F4 ; =0x022C4514 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023272E8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl LowerSpeed +_023272E8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023272F4: .word 0x022C4514 + arm_func_end ov29_0232728C + + arm_func_start ov29_023272F8 +ov29_023272F8: ; 0x023272F8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + ldr r5, [r6, #0xb4] + mov r7, r0 + str r3, [sp] + mov r3, #0x100 + mov r4, #0 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, r4 + orr r0, r4, r0 + ands r4, r0, #0xff + beq _0232735C + ldrb r0, [r5, #0xd5] + cmp r0, #1 + cmpne r0, #3 + bne _0232735C + ldr r2, _02327364 ; =0x00000ED2 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r7 + mov r1, r6 + bl ov29_023064F4 +_0232735C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02327364: .word 0x00000ED2 + arm_func_end ov29_023272F8 + + arm_func_start ov29_02327368 +ov29_02327368: ; 0x02327368 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023273C0 + mov r2, r4 + mov r0, r6 + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023273C0 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl LowerSpeed +_023273C0: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_02327368 + + arm_func_start ov29_023273CC +ov29_023273CC: ; 0x023273CC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl ov29_023245A4 + cmp r0, #0 + beq _02327428 + ldr r1, _02327454 ; =0x022C48B4 + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r7 + and r4, r1, #0xff + bl ov29_02318D58 + b _0232744C +_02327428: + mov r0, #0xcd0 + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r7 + mov r3, r5 + mov r2, #5 + bl ov29_02318BBC + mov r4, #1 +_0232744C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02327454: .word 0x022C48B4 + arm_func_end ov29_023273CC + + arm_func_start ov29_02327458 +ov29_02327458: ; 0x02327458 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r8, r1 + mov r7, r2 + mov r5, r3 + cmp sb, r8 + mov r4, #0 + beq _023274B8 + cmp sb, #0 + moveq r0, r4 + beq _02327498 + ldr r0, [sb] + cmp r0, #1 + moveq r0, #1 + movne r0, r4 + and r0, r0, #0xff +_02327498: + cmp r0, #0 + beq _023274B8 + mov r0, sb + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r6, #0 + bne _023274C8 +_023274B8: + mov r0, r8 + mov r1, #0x3a + bl AbilityIsActive2 + mov r6, r0 +_023274C8: + mov r0, sb + mov r1, r8 + mov r2, r7 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + movs r5, r0 + movne r4, #1 + cmp r4, #0 + beq _02327590 + mov r0, sb + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _02327590 + ldr r1, [sb, #0xb4] + add r0, r5, r5, lsr #31 + mov r5, r0, asr #1 + ldrb r0, [r1, #0x108] + mov r4, #1 + cmp r5, #1 + movlt r5, r4 + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x108] + cmp r6, #0 + beq _0232754C + mov r2, #0xd + mov r0, sb + mov r1, r5 + add r3, r2, #0x22c + bl ov29_0230D11C + b _02327590 +_0232754C: + ldr r1, [sb, #0xb4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + bne _0232756C + add r0, r1, #0x228 + mov r1, #0x57 + bl ExclusiveItemEffectFlagTest +_0232756C: + cmp r0, #0 + movne r5, r5, lsl #1 + mov r6, #1 + mov r0, sb + mov r1, sb + mov r2, r5 + mov r3, #0 + str r6, [sp] + bl TryIncreaseHp +_02327590: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02327458 + + arm_func_start ov29_02327598 +ov29_02327598: ; 0x02327598 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [r0, #0xb4] + ldr r6, _02327644 ; =0x000003E7 + ldrsh r5, [ip, #0x12] + ldrsh r4, [ip, #0x16] + ldrsh ip, [ip, #0x10] + add lr, r5, r4 + cmp lr, r6 + movle r6, lr + mov r4, r6, asr #1 + add r4, r6, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #0 + ble _0232761C + ldr r4, _02327644 ; =0x000003E7 + cmp lr, r4 + movle r4, lr + mov r5, r4, lsl #1 + mov r4, r5, asr #1 + add r4, r5, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #1 + ble _0232761C + ldr r4, _02327644 ; =0x000003E7 + cmp lr, r4 + movgt lr, r4 + add r4, lr, lr, lsl #1 + mov lr, r4, asr #1 + add lr, r4, lr, lsr #30 + cmp ip, lr, asr #2 + movle r5, #2 + movgt r5, #3 +_0232761C: + ldr r4, _02327648 ; =0x022C4994 + str r3, [sp] + ldr r3, [r4, r5, lsl #2] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327644: .word 0x000003E7 +_02327648: .word 0x022C4994 + arm_func_end ov29_02327598 + + arm_func_start ov29_0232764C +ov29_0232764C: ; 0x0232764C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr ip, [r4, #0xb4] + mov r5, r0 + ldrb ip, [ip, #0xbf] + cmp ip, #4 + str r3, [sp] + bne _02327694 + mov r3, #0x200 + bl DealDamage + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r1, r4 + mov r0, r5 + and r4, r2, #0xff + bl ov29_023061A8 + b _023276AC +_02327694: + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r4, r0, #0xff +_023276AC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0232764C + + arm_func_start ov29_023276B4 +ov29_023276B4: ; 0x023276B4 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _023276E4 ; =0x02352AE8 + mov ip, #1 + ldr r2, [r2] + str ip, [sp] + mov r3, #3 + str ip, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_023276E4: .word 0x02352AE8 + arm_func_end ov29_023276B4 + + arm_func_start ov29_023276E8 +ov29_023276E8: ; 0x023276E8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r2, _02327740 ; =0x02352AE8 + mov r3, #1 + ldr r2, [r2, #4] + str r3, [sp] + mov r5, r0 + mov r4, r1 + str r2, [sp, #8] + str r3, [sp, #4] + bl LowerOffensiveStat + add r0, sp, #8 + mov r3, #1 + ldr r2, [r0] + str r3, [sp] + mov r0, r5 + mov r1, r4 + str r3, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02327740: .word 0x02352AE8 + arm_func_end ov29_023276E8 + + arm_func_start ov29_02327744 +ov29_02327744: ; 0x02327744 + stmdb sp!, {r3, lr} + mov r2, #0 + bl TryInflictShadowHoldStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327744 + + arm_func_start ov29_02327758 +ov29_02327758: ; 0x02327758 + stmdb sp!, {r3, lr} + mov r2, #1 + bl ov29_02319624 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327758 + + arm_func_start ov29_0232776C +ov29_0232776C: ; 0x0232776C + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023277AC + mov r1, r4 + mov r0, r5 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + ldrne r0, _023277B4 ; =0x0237CA6A + movne r1, r4 + strneb r1, [r0] +_023277AC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023277B4: .word 0x0237CA6A + arm_func_end ov29_0232776C + + arm_func_start ov29_023277B8 +ov29_023277B8: ; 0x023277B8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + ldr r1, [r6, #0xb4] + mov r7, r0 + ldrsh r0, [r1, #4] + mov r5, r2 + mov r4, r3 + bl GetLowKickMultiplier + mov r3, r0 + mov r0, r7 + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_023277B8 + + arm_func_start ov29_02327804 +ov29_02327804: ; 0x02327804 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023278D4 + ldr r1, _023278E0 ; =0x022C4488 + mov r0, r6 + ldrsh r1, [r1] + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _023278D4 + mov r0, r6 + mov r1, r6 + mov r2, #0 + mov r3, r4 + ldr r5, [r6, #0xb4] + bl BoostSpeedOneStage + ldr r1, _023278E4 ; =0x02352AE8 + mov r0, r6 + ldr r2, [r1, #4] + mov r1, r6 + mov r3, r4 + str r2, [sp, #8] + bl BoostOffensiveStat + ldr r1, _023278E4 ; =0x02352AE8 + mov r0, r6 + ldr r2, [r1] + mov r1, r6 + mov r3, r4 + str r2, [sp, #4] + bl BoostOffensiveStat + add r2, sp, #8 + ldr r2, [r2] + mov r0, r6 + mov r1, r6 + mov r3, r4 + bl BoostDefensiveStat + add r2, sp, #4 + ldr r2, [r2] + mov r0, r6 + mov r1, r6 + mov r3, r4 + bl BoostDefensiveStat + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x108] +_023278D4: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023278E0: .word 0x022C4488 +_023278E4: .word 0x02352AE8 + arm_func_end ov29_02327804 + + arm_func_start ov29_023278E8 +ov29_023278E8: ; 0x023278E8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl GetApparentWeather + mov ip, #1 + ldr r1, _02327924 ; =0x022C4954 + mov r0, r0, lsl #1 + ldrsh r2, [r1, r0] + mov r0, r5 + mov r1, r4 + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02327924: .word 0x022C4954 + arm_func_end ov29_023278E8 + + arm_func_start ov29_02327928 +ov29_02327928: ; 0x02327928 + stmdb sp!, {r3, lr} + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327928 + + arm_func_start ov29_02327940 +ov29_02327940: ; 0x02327940 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023279A0 + mov r1, r4 + mov r0, r5 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _023279A0 + ldr r0, [r5, #0xb4] + add r0, r0, #0x100 + ldrh r0, [r0, #0x92] + tst r0, #2 + ldrne r0, _023279A8 ; =0x0237CA6D + movne r1, #0 + strneb r1, [r0] + ldreq r0, _023279A8 ; =0x0237CA6D + moveq r1, r4 + streqb r1, [r0] +_023279A0: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023279A8: .word 0x0237CA6D + arm_func_end ov29_02327940 + + arm_func_start ov29_023279AC +ov29_023279AC: ; 0x023279AC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _023279E0 ; =0x022C4798 + mov r0, r4 + mov r2, #0 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl ov29_02315B70 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023279E0: .word 0x022C4798 + arm_func_end ov29_023279AC + + arm_func_start ov29_023279E4 +ov29_023279E4: ; 0x023279E4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02327A20 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + bl BoostDefensiveStat + ldr r1, _02327A24 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02327A20: .word 0x02352AEC +_02327A24: .word 0x02352AE8 + arm_func_end ov29_023279E4 + + arm_func_start ov29_02327A28 +ov29_02327A28: ; 0x02327A28 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r6, r2 + mov r7, r1 + mov r1, r6 + mov r8, r0 + mov r5, r3 + mov r4, #0 + bl ov29_023245A4 + cmp r0, #0 + beq _02327AB8 + ldr r1, _02327AE8 ; =0x022C48A8 + mov r0, r8 + ldr r3, [r1] + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02327AAC + ldr r1, _02327AEC ; =0x022C4538 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327AAC + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl TryInflictCringeStatus +_02327AAC: + mov r0, r8 + bl ov29_02318D58 + b _02327ADC +_02327AB8: + ldr r0, _02327AF0 ; =0x00000CD1 + bl StringFromMessageId + str r0, [sp] + mov r0, r8 + mov r1, r8 + mov r3, r6 + mov r2, #3 + bl ov29_02318BBC + mov r4, #1 +_02327ADC: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02327AE8: .word 0x022C48A8 +_02327AEC: .word 0x022C4538 +_02327AF0: .word 0x00000CD1 + arm_func_end ov29_02327A28 + + arm_func_start ov29_02327AF4 +ov29_02327AF4: ; 0x02327AF4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327B4C + ldr r1, _02327B58 ; =0x022C4634 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327B4C + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl TryInflictFrozenStatus +_02327B4C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327B58: .word 0x022C4634 + arm_func_end ov29_02327AF4 + + arm_func_start ov29_02327B5C +ov29_02327B5C: ; 0x02327B5C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327BCC + ldr r1, _02327BD8 ; =0x022C4604 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r6 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327BCC + ldr r0, _02327BDC ; =0x02352AEC + ldr r5, [r6, #0xb4] + ldr r2, [r0] + mov r0, r6 + mov r1, r6 + mov r3, r4 + bl BoostOffensiveStat + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x108] +_02327BCC: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327BD8: .word 0x022C4604 +_02327BDC: .word 0x02352AEC + arm_func_end ov29_02327B5C + + arm_func_start ov29_02327BE0 +ov29_02327BE0: ; 0x02327BE0 + stmdb sp!, {r3, lr} + bl ov29_02319378 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327BE0 + + arm_func_start ov29_02327BF0 +ov29_02327BF0: ; 0x02327BF0 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, r2 + bl LowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327BF0 + + arm_func_start ov29_02327C08 +ov29_02327C08: ; 0x02327C08 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327C64 + ldr r1, _02327C70 ; =0x022C4690 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327C64 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictConfusedStatus +_02327C64: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327C70: .word 0x022C4690 + arm_func_end ov29_02327C08 + + arm_func_start ov29_02327C74 +ov29_02327C74: ; 0x02327C74 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #0x80 + mov r1, #0x180 + mov r5, r2 + mov r4, r3 + bl DungeonRandRange + ldr r1, [r7, #0xb4] + mov r2, r5 + ldrb r1, [r1, #0xa] + mul r1, r0, r1 + movs r3, r1, asr #8 + movmi r3, #1 + cmp r3, #0xc7 + movgt r3, #0xc7 + mov r0, r7 + mov r1, r6 + str r4, [sp] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02327C74 + + arm_func_start ov29_02327CD8 +ov29_02327CD8: ; 0x02327CD8 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr ip, [sp, #0x30] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + str ip, [sp] + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327D4C + ldrsh r2, [sp, #0x2c] + mov r0, r6 + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02327D4C + add r0, sp, #0x24 + mov ip, r4 + ldr r2, [r0] + str ip, [sp] + mov ip, #0 + ldrsh r3, [sp, #0x28] + mov r0, r6 + mov r1, r5 + str ip, [sp, #4] + bl LowerDefensiveStat +_02327D4C: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + arm_func_end ov29_02327CD8 + + arm_func_start ov29_02327D60 +ov29_02327D60: ; 0x02327D60 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327DC0 + mov r1, r4 + mov r0, r5 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _02327DC0 + ldr r0, _02327DCC ; =0x02352AE8 + mov ip, #0 + ldr r2, [r0] + str ip, [sp] + mov r0, r5 + mov r1, r5 + mov r3, #2 + str ip, [sp, #4] + bl LowerOffensiveStat +_02327DC0: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02327DCC: .word 0x02352AE8 + arm_func_end ov29_02327D60 + + arm_func_start ov29_02327DD0 +ov29_02327DD0: ; 0x02327DD0 + stmdb sp!, {r3, lr} + bl TryInflictSleeplessStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02327DD0 + + arm_func_start ov29_02327DE0 +ov29_02327DE0: ; 0x02327DE0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [r0, #0xb4] + ldr r6, _02327E8C ; =0x000003E7 + ldrsh r5, [ip, #0x12] + ldrsh r4, [ip, #0x16] + ldrsh ip, [ip, #0x10] + add lr, r5, r4 + cmp lr, r6 + movle r6, lr + mov r4, r6, asr #1 + add r4, r6, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #0 + ble _02327E64 + ldr r4, _02327E8C ; =0x000003E7 + cmp lr, r4 + movle r4, lr + mov r5, r4, lsl #1 + mov r4, r5, asr #1 + add r4, r5, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #1 + ble _02327E64 + ldr r4, _02327E8C ; =0x000003E7 + cmp lr, r4 + movgt lr, r4 + add r4, lr, lr, lsl #1 + mov lr, r4, asr #1 + add lr, r4, lr, lsr #30 + cmp ip, lr, asr #2 + movle r5, #2 + movgt r5, #3 +_02327E64: + ldr r4, _02327E90 ; =0x022C49A4 + str r3, [sp] + ldr r3, [r4, r5, lsl #2] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02327E8C: .word 0x000003E7 +_02327E90: .word 0x022C49A4 + arm_func_end ov29_02327DE0 + + arm_func_start ov29_02327E94 +ov29_02327E94: ; 0x02327E94 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + ldr r5, [r7, #0xb4] + ldr r4, [r6, #0xb4] + bl ov29_022E5474 + mov r0, #0 +_02327EB4: + add lr, r4, r0, lsl #1 + ldrsh r1, [lr, #0x24] + add ip, r5, r0, lsl #1 + add r3, r4, r0, lsl #2 + strh r1, [ip, #0x24] + ldrsh r1, [lr, #0x28] + add r2, r5, r0, lsl #2 + add r0, r0, #1 + strh r1, [ip, #0x28] + ldrsh r1, [lr, #0x2c] + cmp r0, #2 + strh r1, [ip, #0x2c] + ldr r1, [r3, #0x34] + str r1, [r2, #0x34] + ldr r1, [r3, #0x3c] + str r1, [r2, #0x3c] + blt _02327EB4 + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _02327F30 ; =0x00000D62 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r5, #0x108] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02327F30: .word 0x00000D62 + arm_func_end ov29_02327E94 + + arm_func_start DealDamageWithRecoil +DealDamageWithRecoil: ; 0x02327F34 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x18 + str r3, [sp] + mov r3, #0x100 + mov r7, r0 + mov r6, r2 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02327FFC + mov r0, r7 + bl EntityIsValid__0232800C + cmp r0, #0 + beq _02327FFC + ldr r1, [r7, #0xb4] + ldr r0, _02328008 ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + mov r4, #1 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + movs r5, r0, asr #3 + mov r0, r7 + mov r1, #7 + moveq r5, #1 + bl AbilityIsActive2 + cmp r0, #0 + bne _02327FFC + mov r0, r7 + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _02327FFC + ldrh r1, [r6, #4] + mov r2, #0 + mov r0, #0x23c + stmia sp, {r1, r2} + str r0, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, r4 + str r0, [sp, #0x10] + mov r0, r7 + mov r1, r5 + mov r3, r2 + str r2, [sp, #0x14] + bl CalcRecoilDamageFixed +_02327FFC: + mov r0, r4 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02328008: .word 0x000003E7 + arm_func_end DealDamageWithRecoil diff --git a/asm/overlay_29_02328030.s b/asm/overlay_29_02328030.s new file mode 100644 index 00000000..cf67c935 --- /dev/null +++ b/asm/overlay_29_02328030.s @@ -0,0 +1,2742 @@ + .include "asm/macros.inc" + .include "overlay_29_02328030.inc" + + .text + + arm_func_start ov29_02328030 +ov29_02328030: ; 0x02328030 + stmdb sp!, {r3, lr} + ldr r3, [r1, #0xb4] + ldr r2, _02328070 ; =0x000003E7 + ldrsh ip, [r3, #0x12] + ldrsh r3, [r3, #0x16] + add r3, ip, r3 + cmp r3, r2 + movgt r3, r2 + add r2, r3, r3, lsr #31 + mov ip, #1 + mov r2, r2, asr #1 + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02328070: .word 0x000003E7 + arm_func_end ov29_02328030 + + arm_func_start ov29_02328074 +ov29_02328074: ; 0x02328074 + stmdb sp!, {r3, r4, r5, lr} + ldr lr, _023280D0 ; =0x02353538 + ldr r5, [r1, #0xb4] + ldr ip, [lr] + mov r4, #0xc + add ip, ip, #0x1a000 + str r4, [ip, #0x234] + ldr ip, [lr] + mov lr, #0 + add ip, ip, #0x1a000 + str lr, [ip, #0x238] + ldrb ip, [r5, #0xd2] + mov r4, #1 + cmp ip, #0xa + moveq r4, #2 + str r3, [sp] + mov r3, r4, lsl #8 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023280D0: .word 0x02353538 + arm_func_end ov29_02328074 + + arm_func_start ov29_023280D4 +ov29_023280D4: ; 0x023280D4 + ldr r0, _02328108 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r2, [r0, #0xd4] + mov r0, #0xc + cmp r2, #0 + movlt r2, #0 + cmp r2, #0xc7 + movge r2, #0xc6 + mul r1, r2, r0 + ldr r0, _0232810C ; =0x022C6324 + ldrsh r0, [r0, r1] + bx lr + .align 2, 0 +_02328108: .word 0x02353538 +_0232810C: .word 0x022C6324 + arm_func_end ov29_023280D4 + + arm_func_start ov29_02328110 +ov29_02328110: ; 0x02328110 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, r1 + mov r5, r3 + bl ov29_023280D4 + mov r4, r0 + ldr r0, _02328164 ; =0x022C4E40 + mov r1, r4, lsl #3 + ldrh r1, [r0, r1] + add r0, sp, #0 + bl InitMove + ldr ip, _02328168 ; =0x022C4E44 + mov r0, r7 + ldr ip, [ip, r4, lsl #3] + mov r1, r6 + mov r3, r5 + add r2, sp, #0 + blx ip + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02328164: .word 0x022C4E40 +_02328168: .word 0x022C4E44 + arm_func_end ov29_02328110 + + arm_func_start ov29_0232816C +ov29_0232816C: ; 0x0232816C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023281C8 + ldr r1, _023281D4 ; =0x022C4528 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023281C8 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_023281C8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023281D4: .word 0x022C4528 + arm_func_end ov29_0232816C + + arm_func_start ov29_023281D8 +ov29_023281D8: ; 0x023281D8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r6, r2 + mov r8, r0 + mov r5, r3 + mov r0, r6 + mov r7, r1 + bl GetMoveType + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl ov29_02324E44 + str r4, [sp] + str r0, [sp, #4] + mov r0, r8 + mov r1, r7 + add r2, r7, #4 + mov r3, #1 + bl ov29_02320448 + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_023281D8 + + arm_func_start ov29_02328230 +ov29_02328230: ; 0x02328230 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02328230 + + arm_func_start ov29_02328248 +ov29_02328248: ; 0x02328248 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023282B4 + ldr r1, _023282C0 ; =0x022C461C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023282B4 + ldr r0, _023282C4 ; =0x02352AE8 + mov r3, r4 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat +_023282B4: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023282C0: .word 0x022C461C +_023282C4: .word 0x02352AE8 + arm_func_end ov29_02328248 + + arm_func_start ov29_023282C8 +ov29_023282C8: ; 0x023282C8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r0, _02328320 ; =0x00000CD9 + mov r5, r1 + mov r4, r2 + bl StringFromMessageId + str r0, [sp] + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #0xb + bl ov29_02318BBC + ldr r2, _02328324 ; =0x02352AE8 + mov r0, r6 + mov r1, r5 + ldr r2, [r2] + mov r3, #1 + bl BoostDefensiveStat + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02328320: .word 0x00000CD9 +_02328324: .word 0x02352AE8 + arm_func_end ov29_023282C8 + + arm_func_start ov29_02328328 +ov29_02328328: ; 0x02328328 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02328384 + ldr r1, _02328390 ; =0x022C465C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328384 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_02328384: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02328390: .word 0x022C465C + arm_func_end ov29_02328328 + + arm_func_start ov29_02328394 +ov29_02328394: ; 0x02328394 + stmdb sp!, {r3, lr} + bl ov29_02318F10 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02328394 + + arm_func_start ov29_023283A4 +ov29_023283A4: ; 0x023283A4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r7, r2 + mov sb, r0 + mov r2, #0 + mov r0, r7 + mov r8, r1 + mov r6, r3 + strb r2, [sp, #0x1c] + mov r5, #1 + bl GetMoveType + mov r4, r0 + mov r0, sb + mov r1, #0x57 + bl AbilityIsActive2 + mov r3, r0 + mov r2, r4 + mov r0, sb + mov r1, r8 + bl ov29_0230D4A4 + cmp r0, #0 + mov r0, sb + mov r1, #0x53 + moveq r5, #0 + bl AbilityIsActive2 + cmp r0, #0 + bne _02328420 + mov r0, r8 + bl LevitateIsActive + cmp r0, #0 + movne r5, #0 +_02328420: + cmp r5, #0 + bne _0232843C + ldr r2, _023284B4 ; =0x00000ED3 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _023284A8 +_0232843C: + mov r0, r7 + bl GetMoveType + mov r5, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r4, r0 + mov r0, r7 + mov r1, r6 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r5} + str r4, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + ldr r2, _023284B8 ; =0x0000270F + mov r1, r8 + mov r0, sb + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] +_023284A8: + ldrb r0, [sp, #0x1c] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023284B4: .word 0x00000ED3 +_023284B8: .word 0x0000270F + arm_func_end ov29_023283A4 + + arm_func_start ov29_023284BC +ov29_023284BC: ; 0x023284BC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02328518 + ldr r1, _02328524 ; =0x022C4448 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328518 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_02328518: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02328524: .word 0x022C4448 + arm_func_end ov29_023284BC + + arm_func_start ov29_02328528 +ov29_02328528: ; 0x02328528 + stmdb sp!, {r3, lr} + bl ov29_02318E70 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02328528 + + arm_func_start ov29_02328538 +ov29_02328538: ; 0x02328538 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r2 + mov r6, r3 + mov r7, r0 + mov sb, r1 + mov r2, #0x3a + mov r3, #1 + mov r4, #0 + bl DefenderAbilityIsActive__02328634 + mov r5, r0 + mov r0, r7 + mov r1, sb + mov r2, r8 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + beq _0232862C + add r0, r0, r0, lsr #31 + mov r6, r0, asr #1 + cmp r6, #1 + mov r0, r7 + movlt r6, #1 + bl EntityIsValid__0232800C + cmp r0, #0 + beq _0232862C + ldr r1, [r7, #0xb4] + mov r4, #1 + ldrb r0, [r1, #0x108] + cmp r0, #1 + strlob r4, [r1, #0x108] + mov r0, r7 + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232862C + ldr r1, [r7, #0xb4] + ldrb r0, [r1, #6] + cmp r0, #0 + movne r0, #0 + bne _023285E8 + add r0, r1, #0x228 + mov r1, #0x57 + bl ExclusiveItemEffectFlagTest +_023285E8: + cmp r0, #0 + movne r6, r6, lsl #1 + cmp r5, #0 + beq _02328610 + mov r2, #0xd + mov r0, r7 + mov r1, r6 + add r3, r2, #0x22c + bl ov29_0230D11C + b _0232862C +_02328610: + mov r5, #1 + mov r0, r7 + mov r1, r7 + mov r2, r6 + mov r3, #0 + str r5, [sp] + bl TryIncreaseHp +_0232862C: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02328538 + + arm_func_start DefenderAbilityIsActive__02328634 +DefenderAbilityIsActive__02328634: ; 0x02328634 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _02328688 + cmp r0, #0 + moveq r1, #0 + beq _02328668 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_02328668: + cmp r1, #0 + cmpne r3, #0 + beq _02328688 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02328688: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__02328634 + + arm_func_start ov29_02328698 +ov29_02328698: ; 0x02328698 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r1 + mov r7, r0 + mov r1, #0x35 + ldr r4, [r7, #0xb4] + ldr r5, [r6, #0xb4] + bl AbilityIsActive2 + cmp r0, #0 + bne _023286D0 + mov r0, r6 + mov r1, #0x35 + bl AbilityIsActive2 + cmp r0, #0 + beq _023286E8 +_023286D0: + ldr r2, _02328784 ; =0x00000ED5 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023286E8: + mov r0, r7 + mov r1, #0x74 + bl AbilityIsActive2 + cmp r0, #0 + beq _02328714 + ldr r2, _02328788 ; =0x00000ED6 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02328714: + ldrb r8, [r5, #0x60] + ldrb lr, [r5, #0x61] + ldrb r0, [r4, #0x60] + ldr r1, _0232878C ; =0x02353538 + mov ip, #1 + strb r0, [r5, #0x60] + ldrb r3, [r4, #0x61] + ldr r2, _02328790 ; =0x00000ED4 + mov r0, r7 + strb r3, [r5, #0x61] + strb r8, [r4, #0x60] + strb lr, [r4, #0x61] + ldr r3, [r1] + mov r1, r6 + strb ip, [r3, #0xe] + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r0, [r4, #0x108] + mov r1, r7 + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x108] + mov r0, r7 + bl ov29_022FA7DC + mov r0, r7 + mov r1, r6 + bl ov29_022FA7DC + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02328784: .word 0x00000ED5 +_02328788: .word 0x00000ED6 +_0232878C: .word 0x02353538 +_02328790: .word 0x00000ED4 + arm_func_end ov29_02328698 + + arm_func_start ov29_02328794 +ov29_02328794: ; 0x02328794 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r4, #0 + mov sb, r1 + str r4, [sp] + ldr r6, [sb, #0xb4] + mov sl, r0 + add r0, r6, #0x124 + mov r8, r2 + mov fp, r4 + mov r7, r4 + ldr r5, [sl, #0xb4] + str r0, [sp, #4] + b _02328820 +_023287CC: + add r0, r6, r7, lsl #3 + ldrb r0, [r0, #0x124] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0232881C + ldr r1, [sp, #4] + add r0, r5, #0x124 + add r1, r1, r7, lsl #3 + bl IsSameMove + cmp r0, #0 + bne _0232881C + add r1, r6, r7, lsl #3 + ldrb r0, [r1, #0x124] + tst r0, #0x10 + addne r0, r1, #0x100 + ldrneh fp, [r0, #0x28] + movne r4, #1 + bne _02328828 +_0232881C: + add r7, r7, #1 +_02328820: + cmp r7, #4 + blt _023287CC +_02328828: + cmp r4, #0 + bne _02328848 + ldr r2, _023288BC ; =0x00000DB8 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _023288B4 +_02328848: + cmp fp, #0 + bne _02328864 + ldr r2, _023288BC ; =0x00000DB8 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _023288B0 +_02328864: + mov r0, r8 + mov r1, fp + bl InitMove + ldrh r1, [r8, #4] + mov r0, #0 + bl ov29_0234B084 + ldrh r1, [r8, #2] + ldr r2, _023288C0 ; =0x00000DB7 + mov r0, sl + orr r3, r1, #0x24 + mov r1, sb + strh r3, [r8, #2] + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r5, #0x108] + mov r0, #1 + str r0, [sp] +_023288B0: + ldr r0, [sp] +_023288B4: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023288BC: .word 0x00000DB8 +_023288C0: .word 0x00000DB7 + arm_func_end ov29_02328794 + + arm_func_start ov29_023288C4 +ov29_023288C4: ; 0x023288C4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02328920 + ldr r1, _0232892C ; =0x022C4498 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328920 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_02328920: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232892C: .word 0x022C4498 + arm_func_end ov29_023288C4 + + arm_func_start ov29_02328930 +ov29_02328930: ; 0x02328930 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r2 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023289E8 + mov r0, r6 + mov r1, #7 + mov r4, #1 + bl AbilityIsActive2 + cmp r0, #0 + bne _023289E8 + mov r0, r6 + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _023289E8 + ldr r1, [r6, #0xb4] + ldr r0, _023289F4 ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + ldrh r3, [r5, #4] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + movs r1, r0, asr #3 + mov r2, #0 + str r3, [sp] + mov r0, #0x23c + str r2, [sp, #4] + str r0, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + moveq r1, #1 + mov r0, r6 + mov r3, r2 + str r2, [sp, #0x14] + bl CalcRecoilDamageFixed +_023289E8: + mov r0, r4 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023289F4: .word 0x000003E7 + arm_func_end ov29_02328930 + + arm_func_start ov29_023289F8 +ov29_023289F8: ; 0x023289F8 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _02328A48 ; =0x022C4654 + ldr r2, _02328A4C ; =0x02353538 + ldrsh r3, [r3] + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + add r2, r2, #0xcd00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x3e] + bl ov29_023354C4 + cmp r0, #0 + bne _02328A40 + ldr r2, _02328A50 ; =0x00000EC6 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_02328A40: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02328A48: .word 0x022C4654 +_02328A4C: .word 0x02353538 +_02328A50: .word 0x00000EC6 + arm_func_end ov29_023289F8 + + arm_func_start ov29_02328A54 +ov29_02328A54: ; 0x02328A54 + stmdb sp!, {r3, lr} + ldr r2, _02328A70 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + bl LowerHitChanceStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02328A70: .word 0x02352AEC + arm_func_end ov29_02328A54 + + arm_func_start ov29_02328A74 +ov29_02328A74: ; 0x02328A74 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02328AD0 + ldr r1, _02328ADC ; =0x022C451C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328AD0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictPoisonedStatus +_02328AD0: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02328ADC: .word 0x022C451C + arm_func_end ov29_02328A74 + + arm_func_start ov29_02328AE0 +ov29_02328AE0: ; 0x02328AE0 + stmdb sp!, {r3, lr} + ldr r2, _02328AFC ; =0x02352AE8 + mov r3, #1 + ldr r2, [r2] + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02328AFC: .word 0x02352AE8 + arm_func_end ov29_02328AE0 + + arm_func_start ov29_02328B00 +ov29_02328B00: ; 0x02328B00 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02328B78 + ldr r1, _02328B84 ; =0x022C44A0 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328B78 + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_02328B78: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02328B84: .word 0x022C44A0 + arm_func_end ov29_02328B00 + + arm_func_start ov29_02328B88 +ov29_02328B88: ; 0x02328B88 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r7, r2 + mov sb, r0 + mov r2, #0 + mov r0, r7 + mov r8, r1 + mov r6, r3 + strb r2, [sp, #0x1c] + bl GetMoveType + mov r4, r0 + mov r0, sb + mov r1, #0x57 + bl AbilityIsActive2 + mov r2, r4 + mov r3, r0 + mov r0, sb + mov r1, r8 + bl ov29_0230D4A4 + cmp r0, #0 + bne _02328BF4 + ldr r2, _02328C6C ; =0x00000ED7 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _02328C64 +_02328BF4: + mov r0, r7 + bl GetMoveType + mov r5, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r4, r0 + mov r0, r7 + mov r1, r6 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r5} + str r4, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _02328C70 ; =0x0000270F + mov r1, r8 + mov r0, sb + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff +_02328C64: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02328C6C: .word 0x00000ED7 +_02328C70: .word 0x0000270F + arm_func_end ov29_02328B88 + + arm_func_start ov29_02328C74 +ov29_02328C74: ; 0x02328C74 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl GetApparentWeather + mov r8, r0 + cmp r8, #1 + moveq r0, #1 + beq _02328CAC + mov r0, r7 + mov r1, r5 + bl ov29_023245A4 +_02328CAC: + cmp r0, #0 + beq _02328D0C + ldr r0, _02328D3C ; =0x022C48A4 + cmp r8, #2 + ldr r3, [r0] + beq _02328CD4 + add r0, r8, #0xfc + and r0, r0, #0xff + cmp r0, #1 + bhi _02328CDC +_02328CD4: + add r0, r3, r3, lsr #31 + mov r3, r0, asr #1 +_02328CDC: + mov r0, r7 + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r7 + and r4, r1, #0xff + bl ov29_02318D58 + b _02328D30 +_02328D0C: + ldr r0, _02328D40 ; =0x00000CD2 + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r7 + mov r3, r5 + mov r2, #2 + bl ov29_02318BBC + mov r4, #1 +_02328D30: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02328D3C: .word 0x022C48A4 +_02328D40: .word 0x00000CD2 + arm_func_end ov29_02328C74 + + arm_func_start ov29_02328D44 +ov29_02328D44: ; 0x02328D44 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _02328DE0 ; =0x022C4568 + mov r1, r8 + ldrsh r2, [r2] + mov r0, r4 + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02328DE0: .word 0x022C4568 + arm_func_end ov29_02328D44 + + arm_func_start ov29_02328DE4 +ov29_02328DE4: ; 0x02328DE4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl ov29_023245A4 + cmp r0, #0 + beq _02328E40 + ldr r1, _02328E6C ; =0x022C48C0 + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r7 + and r4, r1, #0xff + bl ov29_02318D58 + b _02328E64 +_02328E40: + ldr r0, _02328E70 ; =0x00000CD3 + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r7 + mov r3, r5 + mov r2, #7 + bl ov29_02318BBC + mov r4, #1 +_02328E64: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02328E6C: .word 0x022C48C0 +_02328E70: .word 0x00000CD3 + arm_func_end ov29_02328DE4 + + arm_func_start ov29_02328E74 +ov29_02328E74: ; 0x02328E74 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r6, r2 + mov r8, r0 + mov r5, r3 + mov r0, r6 + mov r7, r1 + bl GetMoveType + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl ov29_02324E44 + str r4, [sp] + str r0, [sp, #4] + mov r0, r8 + mov r1, r7 + add r2, r7, #4 + mov r3, #2 + bl ov29_02320448 + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_02328E74 + + arm_func_start ov29_02328ECC +ov29_02328ECC: ; 0x02328ECC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl GetTileAtEntity + bl ov29_02337E2C + cmp r0, #0 + beq _02328F0C + ldr r2, _02328F88 ; =0x00000ED8 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + b _02328F7C +_02328F0C: + mov r0, r8 + mov r1, r6 + bl ov29_023245A4 + cmp r0, #0 + beq _02328F58 + ldr r1, _02328F8C ; =0x022C47E8 + mov r0, r8 + ldr r3, [r1] + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, r4 + mov r0, r8 + and r4, r1, #0xff + bl ov29_02318D58 + b _02328F7C +_02328F58: + ldr r0, _02328F90 ; =0x00000CD5 + bl StringFromMessageId + str r0, [sp] + mov r0, r8 + mov r1, r8 + mov r3, r6 + mov r2, #9 + bl ov29_02318BBC + mov r4, #1 +_02328F7C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02328F88: .word 0x00000ED8 +_02328F8C: .word 0x022C47E8 +_02328F90: .word 0x00000CD5 + arm_func_end ov29_02328ECC + + arm_func_start ov29_02328F94 +ov29_02328F94: ; 0x02328F94 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02328FF0 + ldr r1, _02328FFC ; =0x022C4424 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02328FF0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_02328FF0: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02328FFC: .word 0x022C4424 + arm_func_end ov29_02328F94 + + arm_func_start ov29_02329000 +ov29_02329000: ; 0x02329000 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02329060 + ldr r1, _0232906C ; =0x022C4484 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02329060 + ldr r1, _02329070 ; =0x02352AEC + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat +_02329060: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232906C: .word 0x022C4484 +_02329070: .word 0x02352AEC + arm_func_end ov29_02329000 + + arm_func_start ov29_02329074 +ov29_02329074: ; 0x02329074 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl ov29_023164D8 + cmp r0, #0 + beq _023290BC + ldr r1, _023290C4 ; =0x02352AEC + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat + ldr r1, _023290C8 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat +_023290BC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023290C4: .word 0x02352AEC +_023290C8: .word 0x02352AE8 + arm_func_end ov29_02329074 + + arm_func_start ov29_023290CC +ov29_023290CC: ; 0x023290CC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r1 + ldr r1, [r4, #0xb4] + mov r5, r0 + ldrb r0, [r1, #0xd2] + mov ip, #1 + mov r1, r4 + add r0, r0, #0xf9 + and r0, r0, #0xff + cmp r0, #1 + movls ip, #2 + str r3, [sp] + mov r0, r5 + mov r3, ip, lsl #8 + mov r6, #0 + bl DealDamage + cmp r0, #0 + beq _0232914C + ldr r1, _02329158 ; =0x022C4668 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + mov r6, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232914C + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictCringeStatus +_0232914C: + mov r0, r6 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02329158: .word 0x022C4668 + arm_func_end ov29_023290CC + + arm_func_start ov29_0232915C +ov29_0232915C: ; 0x0232915C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + ldrne r0, _023291E8 ; =0x0237CA6B + movne r4, #1 + strneb r4, [r0] + ldr r0, _023291E8 ; =0x0237CA6B + ldrb r0, [r0] + cmp r0, #0 + beq _023291DC + ldr r0, _023291EC ; =0x0237CA78 + ldr r0, [r0] + cmp r0, #2 + bne _023291DC + ldr r1, _023291F0 ; =0x022C4444 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023291DC + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictPoisonedStatus +_023291DC: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023291E8: .word 0x0237CA6B +_023291EC: .word 0x0237CA78 +_023291F0: .word 0x022C4444 + arm_func_end ov29_0232915C + + arm_func_start ov29_023291F4 +ov29_023291F4: ; 0x023291F4 + stmdb sp!, {r3, lr} + ldr r3, [r1, #0xb4] + ldr r2, _02329238 ; =0x000003E7 + ldrsh ip, [r3, #0x12] + ldrsh r3, [r3, #0x16] + add r3, ip, r3 + cmp r3, r2 + movgt r3, r2 + mov r2, r3, asr #1 + add r2, r3, r2, lsr #30 + mov ip, #1 + mov r2, r2, asr #2 + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02329238: .word 0x000003E7 + arm_func_end ov29_023291F4 + + arm_func_start ov29_0232923C +ov29_0232923C: ; 0x0232923C + stmdb sp!, {r3, lr} + ldr r2, _02329254 ; =0x02352AE8 + ldr r2, [r2] + bl BoostHitChanceStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02329254: .word 0x02352AE8 + arm_func_end ov29_0232923C + + arm_func_start ov29_02329258 +ov29_02329258: ; 0x02329258 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r4, #0 + mov r6, r0 + strb r4, [sp, #0x1c] + mov r5, r1 + ldr r1, [r6, #0xb4] + mov r0, r5 + mov r4, r2 + mov sl, r3 + ldr r7, [r5, #0xb4] + ldrb sb, [r1, #0xa] + bl ov29_022E5ED0 + cmp r0, #0 + beq _02329350 + ldrb r2, [r7, #0x4c] + mov r0, r5 + mov r1, #0xc + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #29 + add r2, r3, r2, ror #29 + bl ov29_023049A8 + mov r0, r5 + mov r1, #1 + bl ov29_02318A90 + ldr r1, _023293C8 ; =0x00000221 + mov r0, r5 + bl ov29_022E56A0 + mov r0, r5 + bl ov29_02318AD4 + mov r0, #0x10 + mov r1, #0x67 + bl ov29_022EA370 + mov r0, r5 + mov r1, #0 + bl ov29_02318A90 + ldrb r2, [r7, #0x4c] + mov r0, r5 + mov r1, #0xc + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #29 + add r2, r3, r2, ror #29 + bl ov29_023049A8 + mov r0, r5 + bl ov29_02318B48 + mov r0, r5 + mov r1, #0x210 + bl ov29_022E56A0 + mov r0, #5 + mov r1, #0x2000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 + mov r0, #4 + mov r1, #0x400 + mov r2, #0 + bl ov29_0234C668 + mov r0, #1 + bl ov29_022ECAFC + mov r0, #0 + bl ov29_0234C738 +_02329350: + mov r0, r4 + bl GetMoveType + mov r8, r0 + ldrh r0, [r4, #4] + bl GetMoveCategory + mov r7, r0 + mov r1, sl + mov r0, r4 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r8} + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r5 + mov r2, sb + mov r0, r6 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023293C8: .word 0x00000221 + arm_func_end ov29_02329258 + + arm_func_start ov29_023293CC +ov29_023293CC: ; 0x023293CC + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictConfusedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_023293CC + + arm_func_start ov29_023293E4 +ov29_023293E4: ; 0x023293E4 + stmdb sp!, {r3, lr} + mov r2, #0 + bl ov29_023163A8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_023293E4 + + arm_func_start ov29_023293F8 +ov29_023293F8: ; 0x023293F8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl GetApparentWeather + mov ip, #1 + ldr r1, _02329434 ; =0x022C4974 + mov r0, r0, lsl #1 + ldrsh r2, [r1, r0] + mov r0, r5 + mov r1, r4 + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02329434: .word 0x022C4974 + arm_func_end ov29_023293F8 + + arm_func_start ov29_02329438 +ov29_02329438: ; 0x02329438 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r7, r2 + mov sb, r0 + mov r2, #0 + mov r0, r7 + mov r8, r1 + mov r6, r3 + strb r2, [sp, #0x1c] + bl GetMoveType + mov r4, r0 + mov r0, sb + mov r1, #0x57 + bl AbilityIsActive2 + mov r2, r4 + mov r3, r0 + mov r0, sb + mov r1, r8 + bl ov29_0230D4A4 + cmp r0, #0 + bne _023294A4 + ldr r2, _0232952C ; =0x00000ED9 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _02329524 +_023294A4: + mov r0, r7 + bl GetMoveType + mov r5, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r4, r0 + mov r0, r7 + mov r1, r6 + bl ov29_02324E44 + add r2, sp, #0x1c + stmia sp, {r2, r5} + str r4, [sp, #8] + str r0, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r1, [sp, #0x18] + ldr r2, _02329530 ; =0x0000270F + mov r0, sb + mov r1, r8 + mov r3, #1 + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + mov r1, r8 + cmp r0, #0 + moveq r3, #1 + movne r3, #0 + mov r0, #0 + mov r2, r0 + strb r3, [sp, #0x1c] + bl SubstitutePlaceholderStringTags + ldrb r0, [sp, #0x1c] +_02329524: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0232952C: .word 0x00000ED9 +_02329530: .word 0x0000270F + arm_func_end ov29_02329438 + + arm_func_start ov29_02329534 +ov29_02329534: ; 0x02329534 + stmdb sp!, {r3, lr} + ldr r2, _02329550 ; =0x02352AEC + mov r3, #2 + ldr r2, [r2] + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02329550: .word 0x02352AEC + arm_func_end ov29_02329534 + + arm_func_start ov29_02329554 +ov29_02329554: ; 0x02329554 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r1, #0x25 + ldr r7, [sb, #0xb4] + mov r8, #0 + bl AbilityIsActive2 + cmp r0, #0 + beq _02329598 + ldr r2, _02329658 ; =0x00000DC3 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + b _02329650 +_02329598: + mov r5, r8 + add r4, r7, #0x124 + add fp, sp, #0 +_023295A4: + ldrb r0, [r4, r5, lsl #3] + add r6, r4, r5, lsl #3 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _023295D8 + mov r0, sb + mov r1, r6 + bl GetMoveTypeForMonster + cmp r0, #0 + strne r6, [fp, r8, lsl #2] + addne r8, r8, #1 +_023295D8: + add r5, r5, #1 + cmp r5, #4 + blt _023295A4 + cmp r8, #0 + bne _02329604 + ldr r2, _0232965C ; =0x00000DB6 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _02329650 +_02329604: + mov r0, r8 + bl DungeonRandInt + add r1, sp, #0 + ldr r4, [r1, r0, lsl #2] + mov r0, sb + mov r1, r4 + bl GetMoveTypeForMonster + strb r0, [r7, #0x5e] + mov r0, #0 + strb r0, [r7, #0x5f] + mov r1, #1 + strb r1, [r7, #0xff] + ldrh r1, [r4, #4] + bl ov29_0234B084 + ldr r2, _02329660 ; =0x00000DB5 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 +_02329650: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02329658: .word 0x00000DC3 +_0232965C: .word 0x00000DB6 +_02329660: .word 0x00000DB5 + arm_func_end ov29_02329554 + + arm_func_start ov29_02329664 +ov29_02329664: ; 0x02329664 + stmdb sp!, {r3, lr} + bl ov29_023194B8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02329664 + + arm_func_start ov29_02329674 +ov29_02329674: ; 0x02329674 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + cmp r6, r5 + mov r4, #0 + bne _02329698 + ldr r2, _023296CC ; =0x00000EDA + bl LogMessageByIdWithPopupCheckUserTarget + b _023296C4 +_02329698: + ldr r2, _023296D0 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + bl BoostOffensiveStat + ldr r1, _023296D4 ; =0x02352AE8 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #1 + bl BoostOffensiveStat + mov r4, #1 +_023296C4: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023296CC: .word 0x00000EDA +_023296D0: .word 0x02352AEC +_023296D4: .word 0x02352AE8 + arm_func_end ov29_02329674 + + arm_func_start ov29_023296D8 +ov29_023296D8: ; 0x023296D8 + stmdb sp!, {r3, lr} + ldr r2, _023296F4 ; =0x02352AEC + mov r3, #2 + ldr r2, [r2] + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023296F4: .word 0x02352AEC + arm_func_end ov29_023296D8 + + arm_func_start ov29_023296F8 +ov29_023296F8: ; 0x023296F8 + stmdb sp!, {r3, lr} + mov r2, #0 + mov r3, r2 + bl TryWarp + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_023296F8 + + arm_func_start ov29_02329710 +ov29_02329710: ; 0x02329710 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232976C + ldr r1, _02329778 ; =0x022C4490 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232976C + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_0232976C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02329778: .word 0x022C4490 + arm_func_end ov29_02329710 + + arm_func_start ov29_0232977C +ov29_0232977C: ; 0x0232977C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + bl GetMoveTypeForMonster + mov r4, r0 + mov r0, r5 + bl GetMoveType + cmp r4, r0 + bne _023297D4 + mov r0, r7 + mov r1, r6 + mov r2, #0x66 + mov r3, #1 + bl DefenderAbilityIsActive__02328634 + cmp r0, #0 + beq _023297D4 + mov r0, r6 + bl ov29_0231B060 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023297D4: + mov r0, r7 + mov r1, r6 + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0232977C + + arm_func_start ov29_023297F0 +ov29_023297F0: ; 0x023297F0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02329848 + mov r2, r4 + mov r0, r6 + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02329848 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_02329848: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_023297F0 + + arm_func_start ov29_02329854 +ov29_02329854: ; 0x02329854 + stmdb sp!, {r3, lr} + mov r2, #0 + bl TryInflictShadowHoldStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02329854 + + arm_func_start ov29_02329868 +ov29_02329868: ; 0x02329868 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictPoisonedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02329868 + + arm_func_start ov29_02329880 +ov29_02329880: ; 0x02329880 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictBadlyPoisonedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02329880 + + arm_func_start ov29_02329898 +ov29_02329898: ; 0x02329898 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _023298F4 + ldr r1, _02329900 ; =0x022C4644 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _023298F4 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictBadlyPoisonedStatus +_023298F4: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02329900: .word 0x022C4644 + arm_func_end ov29_02329898 + + arm_func_start ov29_02329904 +ov29_02329904: ; 0x02329904 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02329960 + ldr r1, _0232996C ; =0x022C463C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02329960 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictPoisonedStatus +_02329960: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232996C: .word 0x022C463C + arm_func_end ov29_02329904 + + arm_func_start ov29_02329970 +ov29_02329970: ; 0x02329970 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x30 + ldrb r4, [sp, #0x50] + mov r7, r0 + mov r6, r1 + mov r5, r2 + cmp r4, #0 + mov r4, #0 + bne _023299A8 + str r3, [sp] + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r4, #1 +_023299A8: + cmp r4, #0 + bne _02329A88 + mov r0, r7 + mov r1, r5 + bl GetMoveTypeForMonster + mov sb, r0 + mov r0, r7 + mov r1, r5 + bl GetMovePower + mov r8, r0 + mov r0, r5 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0x1c + str r1, [sp, #4] + mov r0, #0x100 + str r0, [sp, #8] + ldrh ip, [r5, #4] + mov r1, #0 + mov r2, sb + str ip, [sp, #0xc] + str r1, [sp, #0x10] + mov r3, r8 + mov r0, r7 + mov r1, r6 + bl CalcDamage + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + ldr r2, [r7, #0xb4] + mov r3, r1 + bl ov29_0230040C + ldr r2, _02329A94 ; =0x00000EDB + mov r1, r6 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, [sp, #0x1c] + mov r2, #0 + add r0, r0, r0, lsr #31 + movs r0, r0, asr #1 + str r0, [sp, #0x1c] + addeq r0, r0, #1 + streq r0, [sp, #0x1c] + ldrh r1, [r5, #4] + ldr r0, _02329A98 ; =0x00000236 + add r3, sp, #0x18 + stmia sp, {r1, r2} + str r0, [sp, #8] + mov r0, #0x13 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x1c] + mov r0, r7 + bl CalcRecoilDamageFixed +_02329A88: + mov r0, r4 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02329A94: .word 0x00000EDB +_02329A98: .word 0x00000236 + arm_func_end ov29_02329970 + + arm_func_start ov29_02329A9C +ov29_02329A9C: ; 0x02329A9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r6, r2 + mov r7, r1 + mov r1, r6 + mov r8, r0 + mov r5, r3 + mov r4, #0 + bl ov29_023245A4 + cmp r0, #0 + beq _02329B2C + ldr r1, _02329B5C ; =0x022C47EC + mov r0, r8 + ldr r3, [r1] + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _02329B20 + ldr r1, _02329B60 ; =0x022C4494 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02329B20 + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + bl TryInflictParalysisStatus +_02329B20: + mov r0, r8 + bl ov29_02318D58 + b _02329B50 +_02329B2C: + ldr r0, _02329B64 ; =0x00000CD4 + bl StringFromMessageId + str r0, [sp] + mov r0, r8 + mov r1, r8 + mov r3, r6 + mov r2, #8 + bl ov29_02318BBC + mov r4, #1 +_02329B50: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02329B5C: .word 0x022C47EC +_02329B60: .word 0x022C4494 +_02329B64: .word 0x00000CD4 + arm_func_end ov29_02329A9C + + arm_func_start ov29_02329B68 +ov29_02329B68: ; 0x02329B68 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x30 + ldrb r4, [sp, #0x50] + mov r7, r0 + mov r6, r1 + mov r5, r2 + cmp r4, #0 + mov r4, #0 + bne _02329BA0 + str r3, [sp] + mov r3, #0x200 + bl DealDamage + cmp r0, #0 + movne r4, #1 +_02329BA0: + cmp r4, #0 + bne _02329C80 + mov r0, r7 + mov r1, r5 + bl GetMoveTypeForMonster + mov sb, r0 + mov r0, r7 + mov r1, r5 + bl GetMovePower + mov r8, r0 + mov r0, r5 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0x1c + str r1, [sp, #4] + mov r0, #0x200 + str r0, [sp, #8] + ldrh ip, [r5, #4] + mov r1, #0 + mov r2, sb + str ip, [sp, #0xc] + str r1, [sp, #0x10] + mov r3, r8 + mov r0, r7 + mov r1, r6 + bl CalcDamage + bl ov29_0234B034 + mov r1, #0 + str r1, [sp] + ldr r2, [r7, #0xb4] + mov r3, r1 + bl ov29_0230040C + ldr r2, _02329C8C ; =0x00000EDB + mov r1, r6 + mov r0, r7 + bl LogMessageByIdWithPopupCheckUserTarget + ldr r0, [sp, #0x1c] + mov r2, #0 + add r0, r0, r0, lsr #31 + movs r0, r0, asr #1 + str r0, [sp, #0x1c] + addeq r0, r0, #1 + streq r0, [sp, #0x1c] + ldrh r1, [r5, #4] + ldr r0, _02329C90 ; =0x00000237 + add r3, sp, #0x18 + stmia sp, {r1, r2} + str r0, [sp, #8] + mov r0, #0x13 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x1c] + mov r0, r7 + bl CalcRecoilDamageFixed +_02329C80: + mov r0, r4 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02329C8C: .word 0x00000EDB +_02329C90: .word 0x00000237 + arm_func_end ov29_02329B68 + + arm_func_start ov29_02329C94 +ov29_02329C94: ; 0x02329C94 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _02329D40 + ldr r1, _02329D4C ; =0x022C4694 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _02329D40 + mov r0, #3 + bl DungeonRandInt + cmp r0, #0 + beq _02329CFC + cmp r0, #1 + beq _02329D14 + cmp r0, #2 + beq _02329D30 +_02329CFC: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus + b _02329D40 +_02329D14: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus + b _02329D40 +_02329D30: + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl TryInflictFrozenStatus +_02329D40: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02329D4C: .word 0x022C4694 + arm_func_end ov29_02329C94 + + arm_func_start ov29_02329D50 +ov29_02329D50: ; 0x02329D50 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r7, r0 + mov r8, #0 + mov r6, r1 + mov r0, r8 + mov r1, r7 + mov r2, r8 + ldr r4, [r7, #0xb4] + ldr r5, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r6 + mov r0, #1 + mov r2, r8 + bl SubstitutePlaceholderStringTags + mov r0, r7 + mov r1, r6 + mov r2, #0x2c + mov r3, #1 + bl DefenderAbilityIsActive__02329F14 + cmp r0, #0 + beq _02329DC0 + ldr r2, _02329F08 ; =0x00000EDE + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + b _02329F00 +_02329DC0: + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, r8 + tst r0, #0xff + ldrb r0, [r5, #0x62] + moveq r8, #1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r8, #1 + cmp r8, #0 + beq _02329E10 + ldr r2, _02329F0C ; =0x00000EDD + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _02329F00 +_02329E10: + ldrh r3, [r4, #0x62] + ldrh r2, [r4, #0x64] + ldrh r1, [r4, #0x66] + ldrb r0, [r4, #6] + strh r3, [sp] + strh r2, [sp, #2] + strh r1, [sp, #4] + cmp r0, #0 + bne _02329E3C + add r0, r4, #0x62 + bl RemoveEquivItemNoHole +_02329E3C: + ldrh r0, [r5, #0x62] + strh r0, [r4, #0x62] + ldrh r0, [r5, #0x64] + strh r0, [r4, #0x64] + ldrh r0, [r5, #0x66] + strh r0, [r4, #0x66] + ldrb r0, [r4, #6] + cmp r0, #0 + bne _02329E68 + mov r0, r4 + bl ov29_02346F14 +_02329E68: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _02329E7C + add r0, r5, #0x62 + bl RemoveEquivItemNoHole +_02329E7C: + ldrh r2, [sp] + ldrh r1, [sp, #2] + ldrh r0, [sp, #4] + strh r2, [r5, #0x62] + strh r1, [r5, #0x64] + strh r0, [r5, #0x66] + ldrb r0, [r5, #6] + cmp r0, #0 + bne _02329EA8 + mov r0, r5 + bl ov29_02346F14 +_02329EA8: + bl ov29_02347030 + ldrb r0, [r4, #6] + cmp r0, #0 + movne r0, #0 + strneb r0, [r4, #0x63] + ldrb r0, [r5, #6] + cmp r0, #0 + movne r0, #0 + strneb r0, [r5, #0x63] + mov r0, r7 + bl ov29_022F9EA0 + mov r0, r6 + bl ov29_022F9EA0 + ldrb r0, [r4, #0x108] + ldr r2, _02329F10 ; =0x00000EDC + mov r1, r6 + cmp r0, #1 + movlo r0, #1 + strlob r0, [r4, #0x108] + mov r0, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 +_02329F00: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02329F08: .word 0x00000EDE +_02329F0C: .word 0x00000EDD +_02329F10: .word 0x00000EDC + arm_func_end ov29_02329D50 + + arm_func_start DefenderAbilityIsActive__02329F14 +DefenderAbilityIsActive__02329F14: ; 0x02329F14 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _02329F68 + cmp r0, #0 + moveq r1, #0 + beq _02329F48 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_02329F48: + cmp r1, #0 + cmpne r3, #0 + beq _02329F68 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02329F68: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__02329F14 + + arm_func_start ov29_02329F78 +ov29_02329F78: ; 0x02329F78 + stmdb sp!, {r3, lr} + ldr ip, _02329FB0 ; =0x0237CA7C + ldr lr, [ip] + add lr, lr, #1 + str lr, [ip] + str r3, [sp] + ldr r3, [ip] + mov r3, r3, lsl #8 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02329FB0: .word 0x0237CA7C + arm_func_end ov29_02329F78 + + arm_func_start ov29_02329FB4 +ov29_02329FB4: ; 0x02329FB4 + stmdb sp!, {r3, lr} + ldrh r0, [r2, #4] + cmp r0, #0xd4 + bne _02329FD0 + mov r0, #0 + bl ov29_0233544C + b _02329FD8 +_02329FD0: + mov r0, #1 + bl ov29_0233544C +_02329FD8: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_02329FB4 + + arm_func_start ov29_02329FE0 +ov29_02329FE0: ; 0x02329FE0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232A03C + mov r2, r4 + mov r0, r6 + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232A03C + ldr r1, _0232A048 ; =0x02352AEC + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat +_0232A03C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232A048: .word 0x02352AEC + arm_func_end ov29_02329FE0 + + arm_func_start ov29_0232A04C +ov29_0232A04C: ; 0x0232A04C + ldr ip, _0232A054 ; =ov29_0232C310 + bx ip + .align 2, 0 +_0232A054: .word ov29_0232C310 + arm_func_end ov29_0232A04C + + arm_func_start ov29_0232A058 +ov29_0232A058: ; 0x0232A058 + stmdb sp!, {r3, lr} + ldr r2, _0232A074 ; =0x02352AE8 + mov r3, #2 + ldr r2, [r2] + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232A074: .word 0x02352AE8 + arm_func_end ov29_0232A058 + + arm_func_start ov01_0232A078 +ov01_0232A078: ; 0x0232A078 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r4, #0 + strb r4, [sp, #0x1c] + mov r6, r0 + mov r4, r2 + ldr r2, [r6, #0xb4] + mov r0, r4 + mov r5, r1 + mov r7, r3 + ldrb sb, [r2, #0xa] + bl GetMoveType + mov r8, r0 + ldrh r0, [r4, #4] + bl GetMoveCategory + mov r1, r7 + mov r7, r0 + mov r0, r4 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r8} + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r5 + mov r2, sb + mov r0, r6 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov01_0232A078 + + arm_func_start ov29_0232A118 +ov29_0232A118: ; 0x0232A118 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _0232A144 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + str r3, [sp] + str r3, [sp, #4] + bl LowerOffensiveStat + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232A144: .word 0x02352AEC + arm_func_end ov29_0232A118 + + arm_func_start ov29_0232A148 +ov29_0232A148: ; 0x0232A148 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr ip, [r1, #0xb4] + mov r4, #0 + ldrb ip, [ip, #0xd2] + cmp ip, #9 + moveq ip, #0x200 + movne ip, #0x100 + str r3, [sp] + mov r3, ip + bl DealDamage + cmp r0, #0 + movne r4, #1 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_0232A148 + + arm_func_start ov29_0232A188 +ov29_0232A188: ; 0x0232A188 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r2, #0x35 + mov r3, #1 + ldr r4, [r6, #0xb4] + ldr r7, [r5, #0xb4] + bl DefenderAbilityIsActive__02329F14 + cmp r0, #0 + beq _0232A1C8 + ldr r2, _0232A218 ; =0x00000EE1 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0232A1C8: + ldrb r2, [r7, #0x60] + ldr r0, _0232A21C ; =0x02353538 + mov r1, #1 + strb r2, [r4, #0x60] + ldrb r2, [r7, #0x61] + strb r2, [r4, #0x61] + ldr r0, [r0] + mov r2, #0xee0 + strb r1, [r0, #0xe] + ldrb r0, [r4, #0x108] + cmp r0, #1 + strlob r1, [r4, #0x108] + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r6 + bl ov29_022FA7DC + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232A218: .word 0x00000EE1 +_0232A21C: .word 0x02353538 + arm_func_end ov29_0232A188 + + arm_func_start ov29_0232A220 +ov29_0232A220: ; 0x0232A220 + stmdb sp!, {r3, r4, r5, lr} + ldr r3, _0232A270 ; =0x022C4654 + ldr r2, _0232A274 ; =0x02353538 + ldrsh r3, [r3] + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + add r2, r2, #0xcd00 + mov r0, #1 + mov r1, #0 + strh r3, [r2, #0x3c] + bl ov29_023354C4 + cmp r0, #0 + bne _0232A268 + ldr r2, _0232A278 ; =0x00000EC7 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_0232A268: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232A270: .word 0x022C4654 +_0232A274: .word 0x02353538 +_0232A278: .word 0x00000EC7 + arm_func_end ov29_0232A220 + + arm_func_start ov29_0232A27C +ov29_0232A27C: ; 0x0232A27C + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _0232A2A8 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + str r3, [sp] + str r3, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232A2A8: .word 0x02352AEC + arm_func_end ov29_0232A27C + + arm_func_start ov29_0232A2AC +ov29_0232A2AC: ; 0x0232A2AC + stmdb sp!, {r3, lr} + bl ov29_02318FAC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232A2AC + + arm_func_start ov29_0232A2BC +ov29_0232A2BC: ; 0x0232A2BC + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232A318 + ldr r1, _0232A324 ; =0x022C4670 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232A318 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus +_0232A318: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232A324: .word 0x022C4670 + arm_func_end ov29_0232A2BC + + arm_func_start ov29_0232A328 +ov29_0232A328: ; 0x0232A328 + stmdb sp!, {r3, lr} + ldr r2, _0232A33C ; =0x00000EE2 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232A33C: .word 0x00000EE2 + arm_func_end ov29_0232A328 + + arm_func_start ov29_0232A340 +ov29_0232A340: ; 0x0232A340 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232A3C8 + mov r1, r4 + mov r0, r6 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232A3C8 + mov r0, r5 + bl EntityIsValid__0232A3D8 + cmp r0, #0 + bne _0232A3C8 + ldr r3, _0232A3D4 ; =0x02352B18 + add r0, sp, #8 + ldrh ip, [r3] + mov r1, #0xb7 + mov r2, #2 + strh ip, [sp, #4] + ldrh r3, [r3, #2] + strh r3, [sp, #6] + bl ov29_02344BD0 + add r2, sp, #8 + add r3, sp, #4 + mov r0, r6 + mov r1, r5 + bl ov29_0232A834 +_0232A3C8: + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232A3D4: .word 0x02352B18 + arm_func_end ov29_0232A340 diff --git a/asm/overlay_29_0232A3FC.s b/asm/overlay_29_0232A3FC.s new file mode 100644 index 00000000..ba05db8a --- /dev/null +++ b/asm/overlay_29_0232A3FC.s @@ -0,0 +1,2530 @@ + .include "asm/macros.inc" + .include "overlay_29_0232A3FC.inc" + + .text + + arm_func_start ov29_0232A3FC +ov29_0232A3FC: ; 0x0232A3FC + stmdb sp!, {r3, lr} + ldr r2, _0232A410 ; =0x00000EE3 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232A410: .word 0x00000EE3 + arm_func_end ov29_0232A3FC + + arm_func_start ov29_0232A414 +ov29_0232A414: ; 0x0232A414 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + ldr r1, [r4, #0xb4] + mov r5, r0 + ldrb r0, [r1, #6] + cmp r0, #0 + beq _0232A454 + mov r0, #0x32 + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + movne r2, #1 + moveq r2, #2 + mov r0, r5 + mov r1, r4 + bl TryInflictNappingStatus + b _0232A474 +_0232A454: + ldr r1, _0232A47C ; =0x022C4748 + mov r0, r4 + mov r2, #0 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl TryInflictNappingStatus +_0232A474: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232A47C: .word 0x022C4748 + arm_func_end ov29_0232A414 + + arm_func_start ov29_0232A480 +ov29_0232A480: ; 0x0232A480 + stmdb sp!, {r3, lr} + bl TryInflictIngrainStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232A480 + + arm_func_start ov29_0232A490 +ov29_0232A490: ; 0x0232A490 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r4, [r1, #0xb4] + ldrb r3, [r4, #0x11e] + cmp r3, #0 + beq _0232A4CC + ldr r2, _0232A4E0 ; =0x022C49D4 + mov ip, #1 + ldr r2, [r2, r3, lsl #2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #0 + strb r0, [r4, #0x11e] + b _0232A4D4 +_0232A4CC: + ldr r2, _0232A4E4 ; =0x00000EE4 + bl LogMessageByIdWithPopupCheckUserTarget +_0232A4D4: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0232A4E0: .word 0x022C49D4 +_0232A4E4: .word 0x00000EE4 + arm_func_end ov29_0232A490 + + arm_func_start ov29_0232A4E8 +ov29_0232A4E8: ; 0x0232A4E8 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_023160DC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232A4E8 + + arm_func_start ov29_0232A500 +ov29_0232A500: ; 0x0232A500 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_0232A500 + + arm_func_start ov29_0232A524 +ov29_0232A524: ; 0x0232A524 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + str r3, [sp] + mov r3, #0x100 + mov r4, #0 + mov r5, r0 + bl DealDamage + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + beq _0232A59C + ldr r0, _0232A5A8 ; =0x02352AEC + mov ip, #0 + ldr r2, [r0] + str ip, [sp] + mov r0, r5 + mov r1, r5 + mov r3, #1 + str r2, [sp, #8] + str ip, [sp, #4] + bl LowerOffensiveStat + add r0, sp, #8 + mov ip, #0 + ldr r2, [r0] + str ip, [sp] + mov r0, r5 + mov r1, r5 + mov r3, #1 + str ip, [sp, #4] + bl LowerDefensiveStat +_0232A59C: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0232A5A8: .word 0x02352AEC + arm_func_end ov29_0232A524 + + arm_func_start ov29_0232A5AC +ov29_0232A5AC: ; 0x0232A5AC + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [sp, #0x28] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + str ip, [sp] + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232A628 + ldr r1, _0232A63C ; =0x022C44C4 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232A628 + add r0, sp, #0x24 + ldr r2, [r0] + ldr r5, [r6, #0xb4] + mov r0, r6 + mov r1, r6 + mov r3, r4 + bl BoostDefensiveStat + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x108] +_0232A628: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_0232A63C: .word 0x022C44C4 + arm_func_end ov29_0232A5AC + + arm_func_start ov29_0232A640 +ov29_0232A640: ; 0x0232A640 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r4, [r0, #0xb4] + ldrb ip, [r4, #0x11e] + cmp ip, #0 + beq _0232A670 + str r3, [sp] + mov r3, ip, lsl #8 + bl DealDamage + mov r0, #0 + strb r0, [r4, #0x11e] + b _0232A678 +_0232A670: + ldr r2, _0232A684 ; =0x00000EE5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232A678: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0232A684: .word 0x00000EE5 + arm_func_end ov29_0232A640 + + arm_func_start ov29_0232A688 +ov29_0232A688: ; 0x0232A688 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232A6E0 + mov r2, r4 + mov r0, r6 + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232A6E0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictConfusedStatus +_0232A6E0: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0232A688 + + arm_func_start ov29_0232A6EC +ov29_0232A6EC: ; 0x0232A6EC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + mov r6, r1 + mov r0, #0 + mov r1, r7 + mov r2, r0 + ldr r4, [r7, #0xb4] + ldr r5, [r6, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r6 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r7 + mov r1, r6 + mov r2, #0x2c + mov r3, #1 + bl DefenderAbilityIsActive__02329F14 + cmp r0, #0 + beq _0232A758 + ldr r2, _0232A820 ; =0x00000EE6 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _0232A818 +_0232A758: + ldrh r0, [r5, #0x62] + strh r0, [sp, #4] + ldrh r1, [r5, #0x64] + ldrb r0, [sp, #4] + strh r1, [sp, #6] + ldrh r1, [r5, #0x66] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + strh r1, [sp, #8] + tst r0, #0xff + bne _0232A7A0 + ldr r2, _0232A824 ; =0x00000EE8 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _0232A818 +_0232A7A0: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0232A7B4 + add r0, r5, #0x62 + bl RemoveEquivItem +_0232A7B4: + add r0, r5, #0x62 + bl ItemZInit + ldr r2, _0232A828 ; =0x00000EE7 + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + ldrb r1, [r4, #0x4c] + ldr r0, _0232A82C ; =0x0235171C + ldr r5, _0232A830 ; =0x0235171E + mov r1, r1, lsl #2 + ldrsh r1, [r0, r1] + add r2, sp, #4 + mov r0, r7 + strh r1, [sp] + ldrb r4, [r4, #0x4c] + mov r1, r6 + add r3, sp, #0 + mov r4, r4, lsl #2 + ldrsh r4, [r5, r4] + strh r4, [sp, #2] + bl ov29_0232A834 + mov r0, r7 + mov r1, r6 + bl ov29_02321164 + mov r0, #1 +_0232A818: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0232A820: .word 0x00000EE6 +_0232A824: .word 0x00000EE8 +_0232A828: .word 0x00000EE7 +_0232A82C: .word 0x0235171C +_0232A830: .word 0x0235171E + arm_func_end ov29_0232A6EC + + arm_func_start ov29_0232A834 +ov29_0232A834: ; 0x0232A834 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0xc0 + mov r5, #0 + mov r4, r2 + mov ip, #3 + mov r2, #1 + strb r2, [sp, #0x28] + str ip, [sp, #8] + strb r5, [sp, #0x2c] + strb r5, [sp, #0x2a] + str r4, [sp, #0xbc] + ldrsh lr, [r1, #4] + ldrsh ip, [r3] + mov r5, r0 + mov r2, #0x18 + add r0, lr, ip + strh r0, [sp, #0xc] + ldrsh ip, [r1, #6] + ldrsh r3, [r3, #2] + add r0, sp, #8 + add r3, ip, r3 + strh r3, [sp, #0xe] + ldrsh r3, [r1, #4] + ldrsh r1, [r1, #6] + smulbb r3, r3, r2 + smulbb r1, r1, r2 + add r2, r1, #4 + add r3, r3, #4 + mov r1, r3, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r0, #0 + add r1, sp, #8 + mov r2, r0 + strh r0, [sp, #0x2e] + bl SubstitutePlaceholderStringTags + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r0, r5 + mov r2, r4 + add r1, sp, #8 + mov r3, #1 + bl ov29_02345AD8 + add sp, sp, #0xc0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0232A834 + + arm_func_start ov29_0232A8EC +ov29_0232A8EC: ; 0x0232A8EC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov sb, r1 + ldrh r1, [sb, #4] + mov sl, r0 + mov r8, r2 + strh r1, [sp, #0x24] + ldrh r4, [sb, #6] + mov r0, sb + mov r1, #0xa + mov r2, #8 + mov r7, r3 + strh r4, [sp, #0x26] + bl ov29_023049A8 + mov r4, #3 + mov r5, #0 + mov fp, r4 + b _0232A990 +_0232A934: + mov r0, r4 + bl DungeonRandInt + mov r6, r0 + mov r0, fp + bl DungeonRandInt + subs r1, r6, #1 + bne _0232A958 + subs r1, r0, #1 + beq _0232A98C +_0232A958: + ldrsh r3, [sb, #4] + sub r1, r6, #1 + sub r2, r0, #1 + add r0, r3, r1 + strh r0, [sp, #0x24] + ldrsh r3, [sb, #6] + mov r0, sb + add r1, sp, #0x24 + add r2, r3, r2 + strh r2, [sp, #0x26] + bl ov29_022FFB90 + cmp r0, #0 + beq _0232A998 +_0232A98C: + add r5, r5, #1 +_0232A990: + cmp r5, #0x28 + blt _0232A934 +_0232A998: + cmp r5, #0x28 + bne _0232A9B8 + ldr r2, _0232AC38 ; =0x00000EEA + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _0232AC30 +_0232A9B8: + ldrsh r2, [sp, #0x24] + mov r0, #0x18 + ldr r1, [sb, #0xc] + smulbb r0, r2, r0 + add r0, r0, #0xc + rsb r0, r1, r0, lsl #8 + mov r1, #0xc + bl DivideInt + ldrsh r3, [sp, #0x26] + mov r1, #0x18 + ldr r2, [sb, #0x10] + smulbb r1, r3, r1 + add r1, r1, #0x10 + mov r5, r0 + rsb r0, r2, r1, lsl #8 + mov r1, #0xc + bl DivideInt + mov r4, r0 + add r0, sb, #4 + bl ov29_022E2CA0 + cmp r0, #0 + bne _0232AA20 + add r0, sp, #0x24 + bl ov29_022E2CA0 + cmp r0, #0 + beq _0232AA4C +_0232AA20: + mov r6, #0 + mov fp, #0x2c +_0232AA28: + mov r0, sb + mov r1, r5 + mov r2, r4 + bl ov29_022E1A90 + mov r0, fp + bl AdvanceFrame + add r6, r6, #1 + cmp r6, #0xc + blt _0232AA28 +_0232AA4C: + ldrsh r0, [sp, #0x24] + ldrsh r1, [sp, #0x26] + bl GetTileSafe + ldr r6, [r0, #0xc] + cmp r6, #0 + beq _0232ABC8 + ldr r0, [r6] + cmp r0, #1 + bne _0232AB5C + ldr r1, _0232AC3C ; =0x00000163 + add r0, sp, #0x1c + bl InitMove + add r1, sp, #0x1c + mov r0, r6 + bl ov29_02324854 + cmp r0, #0 + bne _0232AAD8 + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + mov r3, #0 + str r3, [sp] + ldr r1, _0232AC40 ; =0x022C44B4 + str r3, [sp, #4] + mov r2, #3 + str r2, [sp, #8] + str r0, [sp, #0xc] + ldrsh r2, [r1] + str r3, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, sl + mov r1, r6 + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper +_0232AAD8: + bl IsFloorOver + cmp r0, #0 + movne r0, #1 + bne _0232AC30 + mov r0, sl + bl EntityIsValid__0232A3D8 + cmp r0, #0 + moveq r0, #1 + beq _0232AC30 + mov r3, #0 + str r3, [sp] + ldr r0, _0232AC40 ; =0x022C44B4 + mov r1, #3 + str r3, [sp, #4] + str r1, [sp, #8] + rsb r1, r1, #0x240 + str r1, [sp, #0xc] + ldrsh r2, [r0] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + mov r0, sl + mov r1, sl + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper + bl IsFloorOver + cmp r0, #0 + movne r0, #1 + bne _0232AC30 + mov r0, sl + bl EntityIsValid__0232A3D8 + cmp r0, #0 + moveq r0, #1 + beq _0232AC30 +_0232AB5C: + mov r0, sb + bl EntityIsValid__0232A3D8 + cmp r0, #0 + moveq r0, #1 + beq _0232AC30 + add r0, sb, #4 + bl ov29_022E2CA0 + cmp r0, #0 + bne _0232AB90 + add r0, sp, #0x24 + bl ov29_022E2CA0 + cmp r0, #0 + beq _0232ABDC +_0232AB90: + rsb r6, r4, #0 + rsb r5, r5, #0 + mov r7, #0 + mov r4, #0x2c +_0232ABA0: + mov r0, sb + mov r1, r5 + mov r2, r6 + bl ov29_022E1A90 + mov r0, r4 + bl AdvanceFrame + add r7, r7, #1 + cmp r7, #0xc + blt _0232ABA0 + b _0232ABDC +_0232ABC8: + ldrsh r1, [sp, #0x24] + ldrsh r2, [sp, #0x26] + mov r0, sb + mov r3, #0 + bl ov29_022F85F0 +_0232ABDC: + mov r0, sb + bl EntityIsValid__0232A3D8 + cmp r0, #0 + moveq r0, #1 + beq _0232AC30 + mov r0, sb + mov r1, #0 + bl ov29_022E1A40 + mov r0, sb + mov r1, #0xe + bl AbilityIsActive2 + cmp r0, #0 + bne _0232AC24 + mov r0, sb + bl ov29_02321260 + mov r0, sl + mov r1, sb + bl ov29_02321164 +_0232AC24: + mov r0, sb + bl ov29_02321260 + mov r0, #1 +_0232AC30: + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232AC38: .word 0x00000EEA +_0232AC3C: .word 0x00000163 +_0232AC40: .word 0x022C44B4 + arm_func_end ov29_0232A8EC + + arm_func_start ov29_0232AC44 +ov29_0232AC44: ; 0x0232AC44 + stmdb sp!, {r3, lr} + bl ov29_02315CE8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232AC44 + + arm_func_start ov29_0232AC54 +ov29_0232AC54: ; 0x0232AC54 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r5, [r7, #0xb4] + sub r3, sp, #4 + add r0, r5, #0x100 + ldrh r2, [r0, #0x46] + mov r6, r1 + mov r4, #0 + strh r2, [r3] + ldrh r0, [r0, #0x48] + strh r0, [r3, #2] + ldr r0, [r3] + bl CeilFixedPoint + cmp r0, #1 + ble _0232ACD8 + ldr r1, _0232AD00 ; =0x02352AEC + mov r0, r7 + ldr r2, [r1] + mov r1, r6 + mov r3, #0x63 + bl BoostOffensiveStat + mov r0, #1 + bl sub_02050FF8 + strh r0, [sp] + mov r0, r0, lsr #0x10 + strh r0, [sp, #2] + ldrh r2, [sp] + add r0, r5, #0x100 + ldrh r1, [sp, #2] + strh r2, [r0, #0x46] + mov r4, #1 + strh r1, [r0, #0x48] + b _0232ACF8 +_0232ACD8: + mov r0, r4 + mov r1, r7 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232AD04 ; =0x00000EEB + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232ACF8: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232AD00: .word 0x02352AEC +_0232AD04: .word 0x00000EEB + arm_func_end ov29_0232AC54 + + arm_func_start ov29_0232AD08 +ov29_0232AD08: ; 0x0232AD08 + stmdb sp!, {r3, lr} + bl ov29_023190EC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232AD08 + + arm_func_start ov29_0232AD18 +ov29_0232AD18: ; 0x0232AD18 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232AED0 + ldr r1, _0232AEDC ; =0x022C454C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232AED0 + ldr r0, _0232AEE0 ; =0x02353538 + mov r1, #0xc + ldr r0, [r0] + ldr r2, _0232AEE4 ; =0x022C6321 + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + smulbb r0, r0, r1 + ldrb r0, [r2, r0] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0232AEBC +_0232AD8C: ; jump table + b _0232ADB4 ; case 0 + b _0232ADCC ; case 1 + b _0232ADF4 ; case 2 + b _0232AE0C ; case 3 + b _0232AE34 ; case 4 + b _0232AE5C ; case 5 + b _0232AE78 ; case 6 + b _0232AE90 ; case 7 + b _0232AEA8 ; case 8 + b _0232AEBC ; case 9 +_0232ADB4: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictPoisonedStatus + b _0232AED0 +_0232ADCC: + ldr r1, _0232AEE8 ; =0x022C4720 + mov r0, r5 + mov r2, r4 + bl CalcStatusDuration + mov r2, r0 + mov r0, r6 + mov r1, r5 + mov r3, #0 + bl TryInflictSleepStatus + b _0232AED0 +_0232ADF4: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl LowerSpeed + b _0232AED0 +_0232AE0C: + ldr r0, _0232AEEC ; =0x02352AEC + mov r3, r4 + ldr r2, [r0] + mov r1, r5 + mov r0, r6 + str r3, [sp] + mov r5, #0 + str r5, [sp, #4] + bl LowerOffensiveStat + b _0232AED0 +_0232AE34: + ldr r0, _0232AEEC ; =0x02352AEC + mov r3, r4 + ldr r2, [r0] + mov r1, r5 + mov r0, r6 + str r3, [sp] + mov r5, #0 + str r5, [sp, #4] + bl LowerDefensiveStat + b _0232AED0 +_0232AE5C: + ldr r1, _0232AEEC ; =0x02352AEC + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat + b _0232AED0 +_0232AE78: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictConfusedStatus + b _0232AED0 +_0232AE90: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictCringeStatus + b _0232AED0 +_0232AEA8: + mov r0, r6 + mov r1, r5 + mov r2, #0 + bl TryInflictFrozenStatus + b _0232AED0 +_0232AEBC: + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictParalysisStatus +_0232AED0: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232AEDC: .word 0x022C454C +_0232AEE0: .word 0x02353538 +_0232AEE4: .word 0x022C6321 +_0232AEE8: .word 0x022C4720 +_0232AEEC: .word 0x02352AEC + arm_func_end ov29_0232AD18 + + arm_func_start ov29_0232AEF0 +ov29_0232AEF0: ; 0x0232AEF0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232AF4C + ldr r1, _0232AF58 ; =0x022C4548 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232AF4C + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictConfusedStatus +_0232AF4C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232AF58: .word 0x022C4548 + arm_func_end ov29_0232AEF0 + + arm_func_start ov29_0232AF5C +ov29_0232AF5C: ; 0x0232AF5C + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232AF9C ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + str r2, [sp] + bl BoostOffensiveStat + add r1, sp, #0 + ldr r2, [r1] + mov r0, r5 + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232AF9C: .word 0x02352AEC + arm_func_end ov29_0232AF5C + + arm_func_start ov29_0232AFA0 +ov29_0232AFA0: ; 0x0232AFA0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r4, r1 + mov r5, r0 + ldr r1, _0232AFEC ; =0x022C471C + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, #1 + mov r3, r0 + mov r0, r5 + mov r1, r4 + str r2, [sp] + mov ip, #0 + str ip, [sp, #4] + bl TryInflictPausedStatus + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232AFEC: .word 0x022C471C + arm_func_end ov29_0232AFA0 + + arm_func_start ov29_0232AFF0 +ov29_0232AFF0: ; 0x0232AFF0 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _0232B020 ; =0x02352AEC + mov ip, #1 + ldr r2, [r2] + str ip, [sp] + mov r3, #2 + str ip, [sp, #4] + bl LowerOffensiveStat + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232B020: .word 0x02352AEC + arm_func_end ov29_0232AFF0 + + arm_func_start ov29_0232B024 +ov29_0232B024: ; 0x0232B024 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r8, [sl, #0xb4] + mov fp, r1 + ldrb r0, [r8, #6] + mov r4, #0 + mov r5, #0 + cmp r0, #0 + ldrne r0, _0232B110 ; =0x02353538 + movne r6, #0x10 + ldrne r0, [r0] + moveq r6, #4 + addne r0, r0, #0x338 + ldreq r0, _0232B110 ; =0x02353538 + ldreq r0, [r0] + addeq r0, r0, #0x328 + add r7, r0, #0x12800 + b _0232B0E8 +_0232B06C: + ldr sb, [r7, r5, lsl #2] + mov r0, sb + bl EntityIsValid__0232A3D8 + cmp r0, #0 + cmpne sl, sb + beq _0232B0E4 + mov r2, #0 + mov r0, sl + mov r1, sb + mov r3, r2 + bl ov29_0230175C + cmp r0, #0 + bne _0232B0E4 + ldr r0, [sb, #0xb4] + ldrb r1, [r0, #0xbc] + cmp r1, #7 + beq _0232B0E4 + bl IsExperienceLocked + cmp r0, #0 + bne _0232B0E4 + mov r0, sl + mov r1, sb + mov r2, #2 + add r3, fp, #4 + bl TryWarp + ldrb r0, [r8, #0x108] + mov r4, #1 + cmp r0, #1 + movlo r0, r4 + strlob r0, [r8, #0x108] +_0232B0E4: + add r5, r5, #1 +_0232B0E8: + cmp r5, r6 + blt _0232B06C + cmp r4, #0 + bne _0232B108 + ldr r2, _0232B114 ; =0x00000EEC + mov r0, sl + mov r1, fp + bl LogMessageByIdWithPopupCheckUserTarget +_0232B108: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232B110: .word 0x02353538 +_0232B114: .word 0x00000EEC + arm_func_end ov29_0232B024 + + arm_func_start ov29_0232B118 +ov29_0232B118: ; 0x0232B118 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x200 + str r5, [sp] + bl DealDamage + cmp r0, #0 + movne r4, #1 + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ov29_0232B118 + + arm_func_start ov29_0232B164 +ov29_0232B164: ; 0x0232B164 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232B1D0 + ldr r1, _0232B1DC ; =0x022C4608 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B1D0 + ldr r0, _0232B1E0 ; =0x02352AEC + mov r3, r4 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat +_0232B1D0: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232B1DC: .word 0x022C4608 +_0232B1E0: .word 0x02352AEC + arm_func_end ov29_0232B164 + + arm_func_start ov29_0232B1E4 +ov29_0232B1E4: ; 0x0232B1E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_02307C78 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + cmp r0, #0 + beq _0232B25C + ldr r1, _0232B268 ; =0x022C4540 + mov r0, r8 + ldrsh r2, [r1] + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B25C + mov r2, #0 + mov r0, r8 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_0232B25C: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232B268: .word 0x022C4540 + arm_func_end ov29_0232B1E4 + + arm_func_start ov29_0232B26C +ov29_0232B26C: ; 0x0232B26C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r0, #0x64 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl DungeonRandInt + cmp r0, #0xa + bge _0232B2BC + mov r0, r5 + mov r1, r4 + mov r2, r7 + mov r3, #0x4b + str r6, [sp] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0232B2BC: + cmp r0, #0x1e + bge _0232B30C + ldr r1, [r4, #0xb4] + ldr r0, _0232B364 ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + mov ip, #1 + mov r3, #0 + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #1 + add r2, r1, r0, lsr #30 + mov r0, r5 + mov r1, r4 + mov r2, r2, asr #2 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0232B30C: + cmp r0, #0x3c + mov r0, r5 + mov r1, r4 + bge _0232B340 + mov r2, r7 + mov r3, #0x32 + str r6, [sp] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0232B340: + mov r2, r7 + mov r3, #0x19 + str r6, [sp] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232B364: .word 0x000003E7 + arm_func_end ov29_0232B26C + + arm_func_start ov29_0232B368 +ov29_0232B368: ; 0x0232B368 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov29_02307C78 + ldr r2, [r7, #0xb4] + ldr r3, _0232B42C ; =0x000003E7 + ldrsh r1, [r2, #0x12] + ldrsh r0, [r2, #0x16] + add r1, r1, r0 + cmp r1, r3 + movle r3, r1 + ldrsh r0, [r2, #0x10] + mov r2, r3, asr #1 + add r2, r3, r2, lsr #30 + cmp r0, r2, asr #2 + movle r2, #0 + ble _0232B3FC + ldr r2, _0232B42C ; =0x000003E7 + cmp r1, r2 + movle r2, r1 + mov r3, r2, lsl #1 + mov r2, r3, asr #1 + add r2, r3, r2, lsr #30 + cmp r0, r2, asr #2 + movle r2, #1 + ble _0232B3FC + ldr r2, _0232B42C ; =0x000003E7 + cmp r1, r2 + movgt r1, r2 + add r2, r1, r1, lsl #1 + mov r1, r2, asr #1 + add r1, r2, r1, lsr #30 + cmp r0, r1, asr #2 + movle r2, #2 + movgt r2, #3 +_0232B3FC: + ldr r1, _0232B430 ; =0x022C49C4 + mov r0, r7 + ldr r3, [r1, r2, lsl #2] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232B42C: .word 0x000003E7 +_0232B430: .word 0x022C49C4 + arm_func_end ov29_0232B368 + + arm_func_start ov29_0232B434 +ov29_0232B434: ; 0x0232B434 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictParalysisStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B434 + + arm_func_start ov29_0232B44C +ov29_0232B44C: ; 0x0232B44C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl ov29_023361D4 + cmp r0, #0 + beq _0232B47C + ldr r2, _0232B490 ; =0x00000EED + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0232B47C: + mov r0, r5 + mov r1, r4 + bl ov29_0231721C + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232B490: .word 0x00000EED + arm_func_end ov29_0232B44C + + arm_func_start ov29_0232B494 +ov29_0232B494: ; 0x0232B494 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232B4F0 + ldr r1, _0232B4FC ; =0x022C448C + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B4F0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl TryInflictPoisonedStatus +_0232B4F0: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232B4FC: .word 0x022C448C + arm_func_end ov29_0232B494 + + arm_func_start ov29_0232B500 +ov29_0232B500: ; 0x0232B500 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r2, [r2, #0x4c] + bl TryBlowAway + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B500 + + arm_func_start ov29_0232B518 +ov29_0232B518: ; 0x0232B518 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r4, r1 + bl sub_02025888 + ldr r0, _0232B5B8 ; =0x02353538 + mov r2, #0xc + ldr r0, [r0] + ldr r3, _0232B5BC ; =0x022C6322 + add r0, r0, #0x4000 + ldrsh ip, [r0, #0xd4] + mov r0, r4 + mov r1, #0x25 + smulbb r2, ip, r2 + ldr r7, [r4, #0xb4] + ldrb r6, [r3, r2] + bl AbilityIsActive2 + cmp r0, #0 + beq _0232B578 + ldr r2, _0232B5C0 ; =0x00000DC3 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0232B578: + strb r6, [r7, #0x5e] + mov r2, #0 + mov r1, r4 + strb r2, [r7, #0x5f] + mov r0, #1 + strb r0, [r7, #0xff] + bl SubstitutePlaceholderStringTags + mov r1, r6 + mov r0, #0 + bl ov29_0234B084 + ldr r2, _0232B5C4 ; =0x00000EEE + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232B5B8: .word 0x02353538 +_0232B5BC: .word 0x022C6322 +_0232B5C0: .word 0x00000DC3 +_0232B5C4: .word 0x00000EEE + arm_func_end ov29_0232B518 + + arm_func_start ov29_0232B5C8 +ov29_0232B5C8: ; 0x0232B5C8 + stmdb sp!, {r3, lr} + ldr r2, _0232B5E4 ; =0x02352AE8 + mov r3, #2 + ldr r2, [r2] + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232B5E4: .word 0x02352AE8 + arm_func_end ov29_0232B5C8 + + arm_func_start ov29_0232B5E8 +ov29_0232B5E8: ; 0x0232B5E8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r5, r2 + ldrh ip, [r5, #4] + ldr r2, _0232B69C ; =0x00000123 + mov r7, r0 + cmp ip, r2 + mov r6, r1 + mov r4, r3 + mov r8, #0 + cmpne ip, #0x20c + bne _0232B628 + mov r0, r7 + mov r1, r6 + bl ov29_02307C78 + mov sb, #0x13c + b _0232B640 +_0232B628: + cmp ip, #0x45 + moveq sb, #0x75 + beq _0232B640 + cmp ip, #0x7d + moveq sb, #0x7e + movne sb, #0xf1 +_0232B640: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x100 + str r4, [sp] + bl DealDamage + cmp r0, #0 + beq _0232B694 + ldr r1, _0232B6A0 ; =0x022C44A4 + mov r0, r7 + ldrsh r2, [r1] + mov r1, r6 + mov r8, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B694 + mov r0, r7 + mov r1, r6 + mov r2, sb + mov r3, #0 + bl TryInflictConstrictionStatus +_0232B694: + mov r0, r8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0232B69C: .word 0x00000123 +_0232B6A0: .word 0x022C44A4 + arm_func_end ov29_0232B5E8 + + arm_func_start ov29_0232B6A4 +ov29_0232B6A4: ; 0x0232B6A4 + stmdb sp!, {r3, lr} + mov r2, #0 + bl ov29_0231662C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B6A4 + + arm_func_start ov29_0232B6B8 +ov29_0232B6B8: ; 0x0232B6B8 + stmdb sp!, {r3, lr} + bl TryInflictWrappedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B6B8 + + arm_func_start ov29_0232B6C8 +ov29_0232B6C8: ; 0x0232B6C8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl ov29_022ED868 + cmp r0, #0 + beq _0232B718 + mov r2, r5 + add r0, r7, #4 + mov r1, #0x13 + mov r3, #1 + bl ov29_022EDCBC + cmp r0, #0 + movne r4, #1 + bne _0232B728 +_0232B718: + ldr r2, _0232B734 ; =0x00000EEF + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232B728: + bl ov29_02336F4C + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232B734: .word 0x00000EEF + arm_func_end ov29_0232B6C8 + + arm_func_start ov29_0232B738 +ov29_0232B738: ; 0x0232B738 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r4, _0232B7B0 ; =0x0237CA84 + ldr r5, _0232B7B4 ; =0x02353538 + ldr ip, [r4] + ldr r6, _0232B7B8 ; =0x02352B1C + ldr r4, [r5] + ldr r6, [r6, ip, lsl #2] + ldr lr, [r1, #0xb4] + add r4, r4, #0x1a000 + str r6, [r4, #0x234] + ldr r4, [r5] + mov r5, #0 + add r4, r4, #0x1a000 + str r5, [r4, #0x238] + ldrb r4, [lr, #0xd2] + ldr r5, _0232B7BC ; =0x022C4924 + mov ip, ip, lsl #1 + cmp r4, #0xa + ldrsh r4, [r5, ip] + str r3, [sp] + moveq r4, r4, lsl #1 + mov r3, r4 + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232B7B0: .word 0x0237CA84 +_0232B7B4: .word 0x02353538 +_0232B7B8: .word 0x02352B1C +_0232B7BC: .word 0x022C4924 + arm_func_end ov29_0232B738 + + arm_func_start ov29_0232B7C0 +ov29_0232B7C0: ; 0x0232B7C0 + stmdb sp!, {r3, lr} + bl ov29_0231904C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B7C0 + + arm_func_start ov29_0232B7D0 +ov29_0232B7D0: ; 0x0232B7D0 + stmdb sp!, {r3, lr} + bl ov29_0231922C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B7D0 + + arm_func_start ov29_0232B7E0 +ov29_0232B7E0: ; 0x0232B7E0 + stmdb sp!, {r3, lr} + ldr r2, _0232B7FC ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232B7FC: .word 0x02352AEC + arm_func_end ov29_0232B7E0 + + arm_func_start ov29_0232B800 +ov29_0232B800: ; 0x0232B800 + stmdb sp!, {r3, lr} + mov r2, #1 + mov ip, #0 + mov r3, r2 + str ip, [sp] + bl ov29_02315E24 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B800 + + arm_func_start ov29_0232B820 +ov29_0232B820: ; 0x0232B820 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r6, r0 + mov r5, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232B88C + ldr r1, _0232B898 ; =0x022C44E0 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r5 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B88C + ldr r0, _0232B89C ; =0x02352AE8 + mov r3, r4 + ldr r2, [r0] + mov r0, r6 + mov r1, r5 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerOffensiveStat +_0232B88C: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232B898: .word 0x022C44E0 +_0232B89C: .word 0x02352AE8 + arm_func_end ov29_0232B820 + + arm_func_start ov29_0232B8A0 +ov29_0232B8A0: ; 0x0232B8A0 + stmdb sp!, {r3, lr} + bl TryInflictDestinyBond + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B8A0 + + arm_func_start ov29_0232B8B0 +ov29_0232B8B0: ; 0x0232B8B0 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B8B0 + + arm_func_start ov29_0232B8D4 +ov29_0232B8D4: ; 0x0232B8D4 + stmdb sp!, {r3, lr} + bl ov29_023192DC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B8D4 + + arm_func_start ov29_0232B8E4 +ov29_0232B8E4: ; 0x0232B8E4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232B924 ; =0x02352AE8 + mov r3, #1 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + str r2, [sp] + bl BoostOffensiveStat + add r1, sp, #0 + ldr r2, [r1] + mov r0, r5 + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232B924: .word 0x02352AE8 + arm_func_end ov29_0232B8E4 + + arm_func_start ov29_0232B928 +ov29_0232B928: ; 0x0232B928 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232B928 + + arm_func_start ov29_0232B940 +ov29_0232B940: ; 0x0232B940 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [sp, #0x28] + mov r3, #0x100 + mov r6, r0 + str ip, [sp] + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232B9B8 + ldr r1, _0232B9CC ; =0x022C4554 + mov r0, r6 + ldrsh r2, [r1] + mov r1, r6 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232B9B8 + add r0, sp, #0x24 + ldr r2, [r0] + ldr r5, [r6, #0xb4] + mov r0, r6 + mov r1, r6 + mov r3, r4 + bl BoostOffensiveStat + ldrb r0, [r5, #0x108] + cmp r0, #1 + movlo r0, r4 + strlob r0, [r5, #0x108] +_0232B9B8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + .align 2, 0 +_0232B9CC: .word 0x022C4554 + arm_func_end ov29_0232B940 + + arm_func_start ov29_0232B9D0 +ov29_0232B9D0: ; 0x0232B9D0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + ldr r0, [r6, #0xb4] + ldr r1, [r5, #0xb4] + ldrsh r0, [r0, #2] + ldrsh r1, [r1, #2] + mov r4, #0 + bl sub_02054EC8 + cmp r0, #0 + beq _0232BA14 + mov r4, #1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl TryInflictInfatuatedStatus +_0232BA14: + cmp r4, #0 + bne _0232BA3C + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + mov r1, r5 + mov r2, #0xf10 + bl LogMessageByIdWithPopupCheckUserTarget +_0232BA3C: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0232B9D0 + + arm_func_start ov29_0232BA44 +ov29_0232BA44: ; 0x0232BA44 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov r0, r1 + ldr r0, [r0, #0xb4] + mov r7, #0 + add r4, r0, #0x124 + ldr r0, _0232BB44 ; =0x0000020D + ldr sb, [sl, #0xb4] + str r1, [sp] + mov r6, r7 + mov r5, r7 + sub fp, r0, #0xc6 +_0232BA74: + ldrb r0, [r4, r5, lsl #3] + add r8, r4, r5, lsl #3 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0232BAE0 + ldrh r1, [r8, #4] + mov r0, sl + bl ov29_02324D60 + cmp r0, #0 + bne _0232BAE0 + ldrh r1, [r8, #4] + cmp r1, fp + cmpne r1, #0xe5 + cmpne r1, #0x8a + cmpne r1, #0x28 + cmpne r1, #0x11 + ldrne r0, _0232BB44 ; =0x0000020D + cmpne r1, r0 + beq _0232BAE0 + ldrb r0, [r8] + tst r0, #0x10 + addne r0, sb, r6, lsl #1 + addne r0, r0, #0x100 + strneh r1, [r0, #0x94] + addne r6, r6, #1 +_0232BAE0: + add r5, r5, #1 + cmp r5, #4 + blt _0232BA74 + mov r0, #0 + mov r1, sl + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _0232BB2C + ldrb r0, [sb, #0x108] + ldr r1, [sp] + mov r2, #0xef0 + cmp r0, #1 + movlo r0, #1 + strlob r0, [sb, #0x108] + mov r0, sl + bl LogMessageByIdWithPopupCheckUserTarget + mov r7, #1 + b _0232BB3C +_0232BB2C: + ldr r2, _0232BB48 ; =0x00000EF1 + ldr r1, [sp] + mov r0, sl + bl LogMessageByIdWithPopupCheckUserTarget +_0232BB3C: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232BB44: .word 0x0000020D +_0232BB48: .word 0x00000EF1 + arm_func_end ov29_0232BA44 + + arm_func_start ov29_0232BB4C +ov29_0232BB4C: ; 0x0232BB4C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r7, #0 + mov r6, r0 + strb r7, [sp, #0x1c] + mov sl, r3 + mov r5, r1 + mov r4, r2 + ldr ip, [r6, #0xb4] + mov sb, #1 + ldr r3, _0232BC28 ; =0x022C4C3C + ldr r0, _0232BC2C ; =0x000003E7 + b _0232BBA8 +_0232BB80: + mov r8, r7, lsl #2 + ldrsh r2, [r3, r8] + cmp r2, #0 + blt _0232BBB0 + ldrsh r1, [ip, #0xe] + cmp r1, r2 + ldrlt r0, _0232BC30 ; =0x022C4C3E + ldrltsh sb, [r0, r8] + blt _0232BBB0 + add r7, r7, #1 +_0232BBA8: + cmp r7, r0 + blt _0232BB80 +_0232BBB0: + mov r0, r4 + bl GetMoveType + mov r8, r0 + ldrh r0, [r4, #4] + bl GetMoveCategory + mov r7, r0 + mov r1, sl + mov r0, r4 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r8} + str r7, [sp, #8] + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r1, r5 + mov r2, sb + mov r0, r6 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0232BC28: .word 0x022C4C3C +_0232BC2C: .word 0x000003E7 +_0232BC30: .word 0x022C4C3E + arm_func_end ov29_0232BB4C + + arm_func_start ov29_0232BC34 +ov29_0232BC34: ; 0x0232BC34 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r2, #1 + mov r3, #0 + bl TryInflictLeechSeedStatus + ldr r1, [r4, #0xb4] + ldrb r0, [r1, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x108] + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end ov29_0232BC34 + + arm_func_start ov29_0232BC64 +ov29_0232BC64: ; 0x0232BC64 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + ldr r2, _0232BCB8 ; =0x0237CA88 + mov r5, r0 + ldr r6, [r2] + ldr r0, _0232BCBC ; =0x022C5DDC + mov r2, r6, lsl #3 + mov r4, r1 + ldrh r1, [r0, r2] + add r0, sp, #0 + mov r7, r3 + bl InitMove + ldr r0, _0232BCC0 ; =0x022C5DE0 + add r2, sp, #0 + ldr ip, [r0, r6, lsl #3] + mov r0, r5 + mov r1, r4 + mov r3, r7 + blx ip + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232BCB8: .word 0x0237CA88 +_0232BCBC: .word 0x022C5DDC +_0232BCC0: .word 0x022C5DE0 + arm_func_end ov29_0232BC64 + + arm_func_start ov29_0232BCC4 +ov29_0232BCC4: ; 0x0232BCC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r2 + mov r6, r3 + mov sb, r1 + mov r2, #0x3a + mov r3, #1 + mov r7, r0 + mov r4, #0 + bl DefenderAbilityIsActive__0232BDD0 + mov r5, r0 + mov r0, sb + bl ov29_023007A8 + cmp r0, #0 + beq _0232BDB4 + mov r0, #1 + bl ov29_022E38E0 + mov r0, r7 + mov r1, sb + mov r2, r8 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + beq _0232BDC4 + add r0, r0, r0, lsr #31 + mov r6, r0, asr #1 + mov r4, #1 + cmp r6, #1 + mov r0, r7 + mov r1, #0 + movlt r6, r4 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232BDC4 + ldr r1, [r7, #0xb4] + ldrb r0, [r1, #0x108] + cmp r0, #1 + movlo r0, #1 + strlob r0, [r1, #0x108] + mov r0, r7 + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232BDC4 + cmp r5, #0 + beq _0232BD94 + mov r2, #0xd + mov r0, r7 + mov r1, r6 + add r3, r2, #0x22c + bl ov29_0230D11C + b _0232BDC4 +_0232BD94: + mov r5, #1 + mov r0, r7 + mov r1, r7 + mov r2, r6 + mov r3, #0 + str r5, [sp] + bl TryIncreaseHp + b _0232BDC4 +_0232BDB4: + ldr r2, _0232BDCC ; =0x00000EF2 + mov r0, r7 + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232BDC4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0232BDCC: .word 0x00000EF2 + arm_func_end ov29_0232BCC4 + + arm_func_start DefenderAbilityIsActive__0232BDD0 +DefenderAbilityIsActive__0232BDD0: ; 0x0232BDD0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _0232BE24 + cmp r0, #0 + moveq r1, #0 + beq _0232BE04 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_0232BE04: + cmp r1, #0 + cmpne r3, #0 + beq _0232BE24 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0232BE24: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__0232BDD0 + + arm_func_start ov29_0232BE34 +ov29_0232BE34: ; 0x0232BE34 + stmdb sp!, {r3, lr} + bl ov29_02316280 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232BE34 + + arm_func_start ov29_0232BE44 +ov29_0232BE44: ; 0x0232BE44 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r5, r1 + ldr r1, [r5, #0xb4] + mov r6, r0 + ldrb r0, [r1, #6] + mov sb, #0 + cmp r0, #0 + bne _0232BF34 + ldr r7, _0232BF68 ; =0x02353538 + ldr r8, _0232BF6C ; =0x020AF6B8 + mov sl, sb + mov fp, #6 +_0232BE74: + mul r4, sl, fp + ldr r0, [r8] + ldr r0, [r0, #0x384] + ldrb r1, [r0, r4] + add r2, r0, r4 + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _0232BF28 + ldrb r1, [r2] + tst r1, #2 + ldreqsh r1, [r2, #4] + cmpeq r1, #0xbb + bne _0232BF28 + ldrh r1, [r2, #2] + add r1, r1, #0xbc + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + cmp r1, #0xfe + beq _0232BF28 + add r0, r0, r4 + mov r2, #0 + ldrb sb, [r0, #1] + bl InitStandardItem + ldr r0, [r8] + cmp sb, #0 + ldr r0, [r0, #0x384] + add r0, r0, r4 + strb sb, [r0, #1] + beq _0232BF24 + ldr r1, [r8] + ldr r2, [r7] + add r0, sb, sb, lsl #3 + add r0, r2, r0, lsl #6 + ldr r2, [r1, #0x384] + add r0, r0, #0x600 + ldrh r1, [r2, r4] + add r2, r2, r4 + strh r1, [r0, #0x16] + ldrh r1, [r2, #2] + strh r1, [r0, #0x18] + ldrh r1, [r2, #4] + strh r1, [r0, #0x1a] +_0232BF24: + mov sb, #1 +_0232BF28: + add sl, sl, #1 + cmp sl, #0x32 + blt _0232BE74 +_0232BF34: + cmp sb, #0 + beq _0232BF50 + ldr r2, _0232BF70 ; =0x00000EF3 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232BF60 +_0232BF50: + ldr r2, _0232BF74 ; =0x00000EF4 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232BF60: + mov r0, sb + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232BF68: .word 0x02353538 +_0232BF6C: .word 0x020AF6B8 +_0232BF70: .word 0x00000EF3 +_0232BF74: .word 0x00000EF4 + arm_func_end ov29_0232BE44 + + arm_func_start ov29_0232BF78 +ov29_0232BF78: ; 0x0232BF78 + stmdb sp!, {r3, lr} + bl ov29_0231918C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232BF78 + + arm_func_start ov29_0232BF88 +ov29_0232BF88: ; 0x0232BF88 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _0232C024 ; =0x022C46D4 + mov r1, r8 + ldrsh r2, [r2] + mov r0, r4 + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232C024: .word 0x022C46D4 + arm_func_end ov29_0232BF88 + + arm_func_start ov29_0232C028 +ov29_0232C028: ; 0x0232C028 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232C060 ; =0x02352AEC + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + mov r3, #1 + bl BoostOffensiveStat + mov r0, r5 + mov r1, r4 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232C060: .word 0x02352AEC + arm_func_end ov29_0232C028 + + arm_func_start ov29_0232C064 +ov29_0232C064: ; 0x0232C064 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl ov29_023245A4 + cmp r0, #0 + beq _0232C0C0 + ldr r1, _0232C0EC ; =0x022C48BC + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r7 + and r4, r1, #0xff + bl ov29_02318D58 + b _0232C0E4 +_0232C0C0: + ldr r0, _0232C0F0 ; =0x00000CEB + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r6 + mov r3, r5 + mov r2, #6 + bl ov29_02318BBC + mov r4, #1 +_0232C0E4: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232C0EC: .word 0x022C48BC +_0232C0F0: .word 0x00000CEB + arm_func_end ov29_0232C064 + + arm_func_start ov29_0232C0F4 +ov29_0232C0F4: ; 0x0232C0F4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #8 + mov r8, r2 + ldrh ip, [r8, #4] + ldr r2, _0232C198 ; =0x0000014F + mov r5, r0 + mov r4, r1 + mov r7, r3 + cmp ip, r2 + mov r6, #0 + bne _0232C128 + mov r0, #1 + bl ov29_022E38E0 +_0232C128: + mov r0, r5 + mov r1, r4 + mov r2, r8 + mov r3, #0x100 + str r7, [sp] + bl DealDamage + cmp r0, #0 + beq _0232C18C + ldr r1, _0232C19C ; =0x022C450C + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + mov r6, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232C18C + ldr r0, _0232C1A0 ; =0x02352AE8 + mov r3, r6 + ldr r2, [r0] + mov r1, r4 + mov r0, r5 + str r3, [sp] + mov r4, #0 + str r4, [sp, #4] + bl LowerDefensiveStat +_0232C18C: + mov r0, r6 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232C198: .word 0x0000014F +_0232C19C: .word 0x022C450C +_0232C1A0: .word 0x02352AE8 + arm_func_end ov29_0232C0F4 + + arm_func_start ov29_0232C1A4 +ov29_0232C1A4: ; 0x0232C1A4 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x1c + str r3, [sp] + mov r3, #0x100 + mov r7, r0 + mov r6, r2 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232C26C + mov r1, r4 + mov r0, r7 + mov r4, #1 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + beq _0232C26C + ldr r1, [r7, #0xb4] + ldr r0, _0232C278 ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + mov r5, r0, asr #2 + ldr r0, [r7, #0xb4] + cmp r5, #1 + ldrsh r0, [r0, #0x10] + movlt r5, #1 + cmp r0, #0 + moveq r0, #1 + beq _0232C270 + ldrh r0, [r6, #4] + bl GetMoveCategory + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r0, [sp, #8] + mov r0, #0x23c + str r0, [sp, #0xc] + mov r0, #4 + str r0, [sp, #0x10] + mov r0, #1 + str r0, [sp, #0x14] + mov r0, r7 + mov r1, r7 + mov r2, r5 + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper +_0232C26C: + mov r0, r4 +_0232C270: + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0232C278: .word 0x000003E7 + arm_func_end ov29_0232C1A4 + + arm_func_start ov29_0232C27C +ov29_0232C27C: ; 0x0232C27C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + add r0, sp, #0 + mov r5, r1 + mov r4, #0 + bl ov29_022F8FF8 + cmp r0, #0 + beq _0232C2B4 + ldr r2, _0232C2F4 ; =0x00000EF5 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C2E8 +_0232C2B4: + add r0, sp, #0 + bl ov29_02337B9C + movs r4, r0 + beq _0232C2D8 + ldr r2, _0232C2F8 ; =0x00000EF6 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C2E8 +_0232C2D8: + ldr r2, _0232C2FC ; =0x00000EF7 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232C2E8: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232C2F4: .word 0x00000EF5 +_0232C2F8: .word 0x00000EF6 +_0232C2FC: .word 0x00000EF7 + arm_func_end ov29_0232C27C + + arm_func_start ov29_0232C300 +ov29_0232C300: ; 0x0232C300 + stmdb sp!, {r3, lr} + bl ov29_022EF5D8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C300 + + arm_func_start ov29_0232C310 +ov29_0232C310: ; 0x0232C310 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r8, r0 + mov r7, r1 + mov r4, #0 + bl DealDamage + cmp r0, #0 + beq _0232C4DC + mov r2, r4 + mov r0, r8 + mov r1, r7 + mov r4, #1 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232C4BC + mov r0, #0 + mov r1, r8 + mov r2, r0 + ldr r5, [r8, #0xb4] + ldr r6, [r7, #0xb4] + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r8 + mov r1, r7 + mov r2, #0x2c + mov r3, r4 + bl DefenderAbilityIsActive__0232BDD0 + cmp r0, #0 + beq _0232C3B0 + ldr r2, _0232C4E8 ; =0x00000EFE + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r4 + b _0232C4E0 +_0232C3B0: + ldrb r0, [r5, #0x62] + tst r0, #1 + movne r0, r4 + moveq r0, #0 + tst r0, #0xff + beq _0232C3E0 + ldr r2, _0232C4EC ; =0x00000EFA + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C3E0: + ldrb r0, [r6, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0232C410 + ldr r2, _0232C4F0 ; =0x00000EFB + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C410: + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0232C440 + bl IsBagFull + cmp r0, #0 + beq _0232C440 + ldr r2, _0232C4F4 ; =0x00000EFC + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + b _0232C4E0 +_0232C440: + ldrh r0, [r6, #0x62] + strh r0, [r5, #0x62] + ldrh r0, [r6, #0x64] + strh r0, [r5, #0x64] + ldrh r0, [r6, #0x66] + strh r0, [r5, #0x66] + ldrb r0, [r5, #6] + cmp r0, #0 + bne _0232C46C + mov r0, r5 + bl ov29_02346F14 +_0232C46C: + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0232C480 + add r0, r6, #0x62 + bl RemoveEquivItem +_0232C480: + add r0, r6, #0x62 + bl ItemZInit + mov r0, r8 + bl ov29_022F9EA0 + mov r0, r7 + bl ov29_022F9EA0 + ldrb r0, [r5, #0x108] + ldr r2, _0232C4F8 ; =0x00000EF9 + mov r1, r7 + cmp r0, #1 + movlo r0, #1 + strlob r0, [r5, #0x108] + mov r0, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C4DC +_0232C4BC: + mov r0, r7 + bl EntityIsValid__0232C500 + cmp r0, #0 + beq _0232C4DC + ldr r2, _0232C4FC ; =0x00000EFD + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_0232C4DC: + mov r0, r4 +_0232C4E0: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232C4E8: .word 0x00000EFE +_0232C4EC: .word 0x00000EFA +_0232C4F0: .word 0x00000EFB +_0232C4F4: .word 0x00000EFC +_0232C4F8: .word 0x00000EF9 +_0232C4FC: .word 0x00000EFD + arm_func_end ov29_0232C310 diff --git a/asm/overlay_29_0232C524.s b/asm/overlay_29_0232C524.s new file mode 100644 index 00000000..c4e8bb7a --- /dev/null +++ b/asm/overlay_29_0232C524.s @@ -0,0 +1,2300 @@ + .include "asm/macros.inc" + .include "overlay_29_0232C524.inc" + + .text + + arm_func_start ov29_0232C524 +ov29_0232C524: ; 0x0232C524 + stmdb sp!, {r3, lr} + mov r2, #0xa + bl ov29_02318D98 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C524 + + arm_func_start ov29_0232C538 +ov29_0232C538: ; 0x0232C538 + stmdb sp!, {r3, lr} + ldr r3, [r0, #0xb4] + ldrb r2, [r3, #0x108] + cmp r2, #1 + movlo r2, #1 + strlob r2, [r3, #0x108] + mov r2, #1 + bl TrySwitchPlace + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C538 + + arm_func_start ov29_0232C560 +ov29_0232C560: ; 0x0232C560 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryWarp + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C560 + + arm_func_start ov29_0232C578 +ov29_0232C578: ; 0x0232C578 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r1 + ldr r1, [sb, #0xb4] + mov sl, r0 + ldrb r0, [r1, #6] + mov r6, #0 + cmp r0, #0 + bne _0232C66C + mov fp, #1 + ldr r4, _0232C6A8 ; =0x020AF6B8 + mov r2, r6 + mov r8, r6 + mov r5, fp + mov r3, #6 +_0232C5B0: + mul r0, r2, r3 + ldr r1, [r4] + ldr r1, [r1, #0x384] + ldrb r7, [r1, r0] + tst r7, #1 + movne r7, fp + moveq r7, r8 + tst r7, #0xff + beq _0232C5E8 + ldrb r7, [r1, r0] + tst r7, #8 + bicne r7, r7, #8 + movne r6, r5 + strneb r7, [r1, r0] +_0232C5E8: + add r2, r2, #1 + cmp r2, #0x32 + blt _0232C5B0 + mov r8, #0 + ldr r4, _0232C6AC ; =0x02353538 + mov fp, r8 + mov r5, #1 +_0232C604: + ldr r0, [r4] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0232C500 + cmp r0, #0 + beq _0232C660 + ldr r1, [r7, #0xb4] + ldrb r0, [r1, #0x62] + tst r0, #1 + movne r2, r5 + moveq r2, fp + tst r2, #0xff + beq _0232C660 + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrneb r0, [r1, #0x62] + movne r6, #1 + bicne r0, r0, #8 + strneb r0, [r1, #0x62] +_0232C660: + add r8, r8, #1 + cmp r8, #4 + blt _0232C604 +_0232C66C: + cmp r6, #0 + beq _0232C688 + ldr r2, _0232C6B0 ; =0x00000EFF + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + b _0232C698 +_0232C688: + mov r0, sl + mov r1, sb + mov r2, #0xf00 + bl LogMessageByIdWithPopupCheckUserTarget +_0232C698: + bl ov29_022E8104 + bl ov29_022E81F8 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232C6A8: .word 0x020AF6B8 +_0232C6AC: .word 0x02353538 +_0232C6B0: .word 0x00000EFF + arm_func_end ov29_0232C578 + + arm_func_start ov29_0232C6B4 +ov29_0232C6B4: ; 0x0232C6B4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + ldr r1, _0232C6EC ; =0x022C4720 + mov r0, r4 + mov r2, #1 + bl CalcStatusDuration + mov r2, r0 + mov r0, r5 + mov r1, r4 + mov r3, #1 + bl TryInflictSleepStatus + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232C6EC: .word 0x022C4720 + arm_func_end ov29_0232C6B4 + + arm_func_start ov29_0232C6F0 +ov29_0232C6F0: ; 0x0232C6F0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x20 + mov r4, #0 + mov sb, r1 + strb r4, [sp, #0x1d] + strb r4, [sp, #0x1c] + mov sl, r0 + ldr r1, [sb, #0xb4] + mov r8, r2 + ldrsh r0, [r1, #0x10] + mov r7, r3 + ldr r6, [sl, #0xb4] + subs r5, r0, #1 + ldrh r0, [r8, #4] + movmi r5, r4 + bl GetMoveCategory + mov r4, r0 + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + mov r2, r5 + add r5, sp, #0x1d + mov r3, #0 + str r5, [sp] + stmib sp, {r3, r4} + str r0, [sp, #0xc] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + mov r1, sb + str r3, [sp, #0x18] + mov r0, sl + bl CalcDamageFixedWrapper + ldrsh r0, [r6, #0x10] + add r0, r0, r0, lsr #31 + movs r5, r0, asr #1 + ldrh r0, [r8, #4] + movmi r5, #0 + bl GetMoveCategory + mov r4, r0 + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + add r1, sp, #0x1c + mov r3, #0 + stmia sp, {r1, r3, r4} + str r0, [sp, #0xc] + str r3, [sp, #0x10] + str r3, [sp, #0x14] + mov r0, sl + mov r1, sl + mov r2, r5 + str r3, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1d] + cmp r0, #0 + moveq r1, #1 + movne r1, #0 + ldrb r0, [sp, #0x1c] + strb r1, [sp, #0x1d] + cmp r0, #0 + moveq r1, #1 + movne r1, #0 + ldrb r0, [sp, #0x1d] + strb r1, [sp, #0x1c] + cmp r0, #0 + bne _0232C800 + tst r1, #0xff + beq _0232C808 +_0232C800: + mov r0, #1 + b _0232C80C +_0232C808: + mov r0, #0 +_0232C80C: + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_0232C6F0 + + arm_func_start ov29_0232C818 +ov29_0232C818: ; 0x0232C818 + stmdb sp!, {r3, lr} + mov r2, #0 + bl ov29_02317124 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C818 + + arm_func_start ov29_0232C82C +ov29_0232C82C: ; 0x0232C82C + stmdb sp!, {r3, lr} + bl ov29_02315610 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C82C + + arm_func_start ov29_0232C83C +ov29_0232C83C: ; 0x0232C83C + stmdb sp!, {r3, lr} + bl ov29_0231575C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232C83C + + arm_func_start ov29_0232C84C +ov29_0232C84C: ; 0x0232C84C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, r0 + mov r8, r1 + mov fp, #0 + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0232C890 + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C890: + ldr r7, [r8, #0xb4] + ldrb r0, [r7, #6] + cmp r0, #0 + beq _0232C9E4 + ldrsh r4, [r7, #2] + mov r0, fp + mov r1, r8 + mov r2, r0 + mov r5, r4 + bl SubstitutePlaceholderStringTags + ldrb r0, [r7, #0xbc] + cmp r0, #6 + bls _0232C8DC + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0232C8DC: + mov r6, fp + b _0232C970 +_0232C8E4: + mov r0, #0 + bl GetMonsterIdToSpawn + mov r1, #0 + mov r4, r0 + bl MewSpawnCheck + cmp r0, #0 + beq _0232C96C + mov r0, r7 + bl ov29_022FBDE0 + cmp r0, #0 + bne _0232C96C + ldrb r0, [r7, #6] + cmp r0, #0 + cmpne r5, r4 + beq _0232C96C + mov r0, r4 + bl GetBodySize + mov sl, r0 + mov r0, r5 + bl GetBodySize + cmp sl, r0 + bne _0232C96C + ldrb r1, [r8, #0xaa] + mov r0, r4 + bl ov29_022E1AAC + str r0, [sp] + mov r0, r8 + bl ov29_022E1AD4 + mov sl, r0 + bl ov29_022E1EF8 + add r1, sl, r0 + ldr r0, [sp] + cmp r1, r0 + bge _0232C978 +_0232C96C: + add r6, r6, #1 +_0232C970: + cmp r6, #0x1e + blt _0232C8E4 +_0232C978: + cmp r6, #0x1e + ldrnesh r0, [r7, #2] + cmpne r0, r4 + bne _0232C99C + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CA04 +_0232C99C: + mov r0, #1 + bl sub_02024FB8 + mov r5, r0 + mov r1, r4 + mov r2, #0x4e + bl GetNameWithGender + mov r1, r5 + mov r0, #1 + bl ov29_0234B0B4 + ldr r2, _0232CA10 ; =0x00000F01 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r8 + mov r1, r4 + bl ov29_022FD7A0 + mov fp, #1 + b _0232CA04 +_0232C9E4: + mov r0, fp + mov r1, r8 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232CA0C ; =0x00000F02 + mov r0, sb + mov r1, r8 + bl LogMessageByIdWithPopupCheckUserTarget +_0232CA04: + mov r0, fp + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232CA0C: .word 0x00000F02 +_0232CA10: .word 0x00000F01 + arm_func_end ov29_0232C84C + + arm_func_start ov29_0232CA14 +ov29_0232CA14: ; 0x0232CA14 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, r2 + bl LowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CA14 + + arm_func_start ov29_0232CA2C +ov29_0232CA2C: ; 0x0232CA2C + stmdb sp!, {r3, lr} + bl ov29_022E3430 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CA2C + + arm_func_start ov29_0232CA3C +ov29_0232CA3C: ; 0x0232CA3C + stmdb sp!, {r3, lr} + bl TryInflictPetrifiedStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CA3C + + arm_func_start ov29_0232CA4C +ov29_0232CA4C: ; 0x0232CA4C + stmdb sp!, {r3, lr} + mov r2, #8 + bl TryPounce + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CA4C + + arm_func_start ov29_0232CA60 +ov29_0232CA60: ; 0x0232CA60 + stmdb sp!, {r3, lr} + bl ov29_0231F6E4 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CA60 + + arm_func_start ov29_0232CA70 +ov29_0232CA70: ; 0x0232CA70 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0 + mov r4, r1 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, _0232CAFC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + beq _0232CAB4 + ldr r2, _0232CB00 ; =0x00000F04 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232CAF4 +_0232CAB4: + mov r0, r5 + bl ov29_022FBDF0 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _0232CAE8 + ldr r2, _0232CB04 ; =0x00000F03 + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0xa + bl ov29_0234BA54 +_0232CAE8: + mov r0, #1 + mov r1, r0 + bl ov29_022E09E8 +_0232CAF4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232CAFC: .word 0x02353538 +_0232CB00: .word 0x00000F04 +_0232CB04: .word 0x00000F03 + arm_func_end ov29_0232CA70 + + arm_func_start ov29_0232CB08 +ov29_0232CB08: ; 0x0232CB08 + stmdb sp!, {r3, lr} + bl ov29_0231F594 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CB08 + + arm_func_start ov29_0232CB18 +ov29_0232CB18: ; 0x0232CB18 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sb, r1 + mov sl, r0 + mov r0, sb + mov r7, #0 + bl GetTileAtEntity + mov r4, r0 + bl ov29_023361D4 + cmp r0, #0 + beq _0232CB58 + ldr r1, _0232CCB0 ; =0x00000F07 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, r7 + b _0232CCA8 +_0232CB58: + ldrb r0, [r4, #7] + cmp r0, #0xff + beq _0232CB74 + mov r0, sb + bl HasDropeyeStatus + cmp r0, #0 + beq _0232CB94 +_0232CB74: + bl ov29_022E333C + ldrsh r2, [sb, #4] + ldrsh r1, [sb, #6] + sub r8, r2, r0 + sub fp, r1, r0 + add r4, r2, r0 + add r5, r1, r0 + b _0232CBD0 +_0232CB94: + ldr r0, _0232CCB4 ; =0x02353538 + ldrb r2, [r4, #7] + ldr r0, [r0] + mov r1, #0x1c + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + mla r0, r2, r1, r0 + ldrsh r3, [r0, #2] + ldrsh r2, [r0, #4] + ldrsh r1, [r0, #6] + ldrsh r0, [r0, #8] + sub r8, r3, #1 + sub fp, r2, #1 + add r4, r1, #1 + add r5, r0, #1 +_0232CBD0: + ldr r0, _0232CCB8 ; =0x02352B38 + ldrh r1, [r0] + ldrh r0, [r0, #2] + strh r1, [sp, #4] + strh r0, [sp, #6] + b _0232CC68 +_0232CBE8: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + mov r6, fp + str r0, [sp] + b _0232CC5C +_0232CBFC: + mov r0, r8 + mov r1, r6 + bl GetTileSafe + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _0232CC58 + ldr r1, [r0] + cmp r1, #2 + bne _0232CC58 + bl ov29_022E1608 + ldrb r1, [r0, #2] + tst r1, #1 + bne _0232CC58 + ldrb r0, [r0] + cmp r0, #0x11 + beq _0232CC58 + ldr r2, [sp] + add r0, sp, #8 + mov r1, #0 + strh r2, [sp, #8] + strh r6, [sp, #0xa] + bl ov29_022EDE7C + mov r7, #1 +_0232CC58: + add r6, r6, #1 +_0232CC5C: + cmp r6, r5 + ble _0232CBFC + add r8, r8, #1 +_0232CC68: + cmp r8, r4 + ble _0232CBE8 + cmp r7, #0 + beq _0232CC94 + ldr r2, _0232CCBC ; =0x00000F05 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget + bl ov29_02339CE8 + bl ov29_02336F4C + b _0232CCA4 +_0232CC94: + ldr r2, _0232CCC0 ; =0x00000F06 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CCA4: + mov r0, r7 +_0232CCA8: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232CCB0: .word 0x00000F07 +_0232CCB4: .word 0x02353538 +_0232CCB8: .word 0x02352B38 +_0232CCBC: .word 0x00000F05 +_0232CCC0: .word 0x00000F06 + arm_func_end ov29_0232CB18 + + arm_func_start ov29_0232CCC4 +ov29_0232CCC4: ; 0x0232CCC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldr r0, [sl, #0xb4] + mov sb, r1 + ldrb r0, [r0, #6] + mov r6, #0 + mov r4, #0 + cmp r0, #0 + ldrne r0, _0232CD88 ; =0x02353538 + movne r5, #0x10 + ldrne r0, [r0] + moveq r5, #4 + addne r0, r0, #0x338 + ldreq r0, _0232CD88 ; =0x02353538 + mov fp, #1 + ldreq r0, [r0] + addeq r0, r0, #0x328 + add r7, r0, #0x12800 + b _0232CD60 +_0232CD10: + ldr r8, [r7, r4, lsl #2] + mov r0, r8 + bl EntityIsValid__0232C500 + cmp r0, #0 + cmpne sl, r8 + beq _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, fp + mov r3, #0 + bl ov29_0230175C + cmp r0, #0 + bne _0232CD5C + mov r0, sl + mov r1, r8 + mov r2, #2 + add r3, sl, #4 + bl TryWarp + mov r6, #1 +_0232CD5C: + add r4, r4, #1 +_0232CD60: + cmp r4, r5 + blt _0232CD10 + cmp r6, #0 + bne _0232CD80 + ldr r2, _0232CD8C ; =0x00000F08 + mov r0, sl + mov r1, sb + bl LogMessageByIdWithPopupCheckUserTarget +_0232CD80: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0232CD88: .word 0x02353538 +_0232CD8C: .word 0x00000F08 + arm_func_end ov29_0232CCC4 + + arm_func_start ov29_0232CD90 +ov29_0232CD90: ; 0x0232CD90 + stmdb sp!, {r3, lr} + mov r1, r0 + bl ov29_0231657C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CD90 + + arm_func_start ov29_0232CDA4 +ov29_0232CDA4: ; 0x0232CDA4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r7, r2 + mov r4, r0 + mov r0, r7 + mov r8, r1 + mov r5, r3 + bl GetMoveType + mov r6, r0 + ldrh r0, [r7, #4] + bl GetMoveCategory + mov r1, r5 + mov r5, r0 + mov r0, r7 + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r6} + str r5, [sp, #8] + str r0, [sp, #0xc] + mov r2, #0 + str r2, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, _0232CE3C ; =0x0000270F + mov r1, r8 + mov r0, r4 + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232CE3C: .word 0x0000270F + arm_func_end ov29_0232CDA4 + + arm_func_start ov29_0232CE40 +ov29_0232CE40: ; 0x0232CE40 + stmdb sp!, {r3, lr} + bl ov29_02317648 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CE40 + + arm_func_start ov29_0232CE50 +ov29_0232CE50: ; 0x0232CE50 + stmdb sp!, {r3, lr} + ldr ip, _0232CE78 ; =0x022C456C + str r3, [sp] + ldrsh r3, [ip] + bl ov29_02332F18 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_0232CE78: .word 0x022C456C + arm_func_end ov29_0232CE50 + + arm_func_start ov29_0232CE7C +ov29_0232CE7C: ; 0x0232CE7C + stmdb sp!, {r3, lr} + ldr r2, _0232CE90 ; =0x00000F09 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232CE90: .word 0x00000F09 + arm_func_end ov29_0232CE7C + + arm_func_start ov29_0232CE94 +ov29_0232CE94: ; 0x0232CE94 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl TryInflictCoweringStatus + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CE94 + + arm_func_start ov29_0232CEAC +ov29_0232CEAC: ; 0x0232CEAC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x20 + mov r5, #0 + strb r5, [sp, #0x1c] + mov r4, r1 + ldr r1, [r4, #0xb4] + mov r5, r0 + ldrsh r0, [r1, #4] + mov sb, r2 + mov r6, r3 + bl GetSize + mov r8, r0 + mov r0, sb + bl GetMoveType + mov r7, r0 + ldrh r0, [sb, #4] + bl GetMoveCategory + mov r1, r6 + mov r6, r0 + mov r0, sb + bl ov29_02324E44 + add r3, sp, #0x1c + stmia sp, {r3, r7} + str r6, [sp, #8] + mov r1, r4 + str r0, [sp, #0xc] + mov r4, #0 + str r4, [sp, #0x10] + mov r3, #1 + str r3, [sp, #0x14] + mov r2, r8 + mov r0, r5 + str r4, [sp, #0x18] + bl CalcDamageFixedWrapper + ldrb r0, [sp, #0x1c] + cmp r0, #0 + moveq r0, #1 + movne r0, r4 + strb r0, [sp, #0x1c] + and r0, r0, #0xff + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_0232CEAC + + arm_func_start ov29_0232CF54 +ov29_0232CF54: ; 0x0232CF54 + stmdb sp!, {r3, lr} + ldr r2, _0232CF70 ; =0x022C45BC + mov r3, #0 + ldrsh r2, [r2] + bl ov29_023168D8 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232CF70: .word 0x022C45BC + arm_func_end ov29_0232CF54 + + arm_func_start ov29_0232CF74 +ov29_0232CF74: ; 0x0232CF74 + stmdb sp!, {r3, lr} + bl ov29_0231EA40 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232CF74 + + arm_func_start ov29_0232CF84 +ov29_0232CF84: ; 0x0232CF84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r1 + mov r7, r0 + ldr r5, [r6, #0xb4] + mov r4, #0 + bl ov29_022E0880 + cmp r0, #0 + beq _0232CFB8 + ldr r1, _0232D0E0 ; =0x00000F0B + mov r0, r7 + bl LogMessageByIdWithPopupCheckUser + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0232CFB8: + ldrb r1, [r5, #0x4c] + ldr r0, _0232D0E4 ; =0x0235171C + ldrsh r3, [r6, #4] + mov r1, r1, lsl #2 + ldrsh r2, [r0, r1] + ldr r1, _0232D0E8 ; =0x0235171E + add r0, sp, #0 + add r2, r3, r2 + strh r2, [sp] + ldrb r2, [r5, #0x4c] + ldrsh r3, [r6, #6] + mov r2, r2, lsl #2 + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [sp, #2] + bl ov29_022E6770 + ldrsh r0, [sp] + ldrsh r1, [sp, #2] + bl GetTileSafe + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #2 + bne _0232D06C + ldrh r1, [r0] + mvn r4, #0 + mov r5, r4 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0232D034: + mov r8, r5 +_0232D038: + ldrsh r0, [sp] + ldrsh r1, [sp, #2] + add r0, r0, r8 + add r1, r1, r4 + bl ov29_02336694 + add r8, r8, #1 + cmp r8, #1 + ble _0232D038 + add r4, r4, #1 + cmp r4, #1 + ble _0232D034 + mov r4, #1 + bl ov29_02304B64 +_0232D06C: + mov r8, #0 + mov r5, r8 +_0232D074: + mov sb, r5 +_0232D078: + mov r0, sb + mov r1, r8 + bl ov29_02336A84 + add sb, sb, #1 + cmp sb, #0x38 + blt _0232D078 + add r8, r8, #1 + cmp r8, #0x20 + blt _0232D074 + cmp r4, #0 + beq _0232D0C0 + add r0, sp, #0 + bl ov29_022E6784 + ldr r2, _0232D0EC ; =0x00000F0A + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232D0D0 +_0232D0C0: + ldr r2, _0232D0E0 ; =0x00000F0B + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232D0D0: + bl ov29_02339CE8 + bl ov29_02336F4C + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0232D0E0: .word 0x00000F0B +_0232D0E4: .word 0x0235171C +_0232D0E8: .word 0x0235171E +_0232D0EC: .word 0x00000F0A + arm_func_end ov29_0232CF84 + + arm_func_start ov29_0232D0F0 +ov29_0232D0F0: ; 0x0232D0F0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl ov29_022ED868 + cmp r0, #0 + bne _0232D11C + ldr r1, _0232D144 ; =0x00000E7E + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0232D11C: + ldr r0, [r4, #0xb4] + mov r1, #0x19 + ldrb r0, [r0, #6] + cmp r0, #0 + movne r2, #2 + moveq r2, #1 + add r0, r4, #4 + bl ov29_022EDBD4 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D144: .word 0x00000E7E + arm_func_end ov29_0232D0F0 + + arm_func_start ov29_0232D148 +ov29_0232D148: ; 0x0232D148 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r4, r1 + ldrh r2, [r4, #4] + mov r5, r0 + strh r2, [sp, #6] + ldrh r2, [r4, #6] + strh r2, [sp, #8] + ldr r2, [r4, #0xb4] + ldrb r2, [r2, #0xbc] + cmp r2, #6 + bls _0232D188 + ldr r2, _0232D1D4 ; =0x00000F0C + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #0 + b _0232D1CC +_0232D188: + mov r0, #0 + strb r0, [r4, #0x20] + bl ov29_022E7AC4 + mov r1, r0 + add r0, sp, #0 + mov r2, #0 + bl ov29_02344BD0 + add r1, sp, #6 + add r2, sp, #0 + mov r0, r5 + mov r3, #0 + bl ov29_02345A3C + ldr r1, _0232D1D8 ; =0x00000257 + mov r0, r4 + mov r2, r5 + bl HandleFaint + mov r0, #1 +_0232D1CC: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0232D1D4: .word 0x00000F0C +_0232D1D8: .word 0x00000257 + arm_func_end ov29_0232D148 + + arm_func_start ov29_0232D1DC +ov29_0232D1DC: ; 0x0232D1DC + stmdb sp!, {r3, lr} + bl ov29_0231EDFC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D1DC + + arm_func_start ov29_0232D1EC +ov29_0232D1EC: ; 0x0232D1EC + stmdb sp!, {r3, lr} + bl ov29_0231740C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D1EC + + arm_func_start ov29_0232D1FC +ov29_0232D1FC: ; 0x0232D1FC + stmdb sp!, {r3, lr} + bl ov29_023156A0 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D1FC + + arm_func_start ov29_0232D20C +ov29_0232D20C: ; 0x0232D20C + stmdb sp!, {r3, lr} + bl ov29_023181A0 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D20C + + arm_func_start ov29_0232D21C +ov29_0232D21C: ; 0x0232D21C + stmdb sp!, {r3, lr} + bl ov29_02318210 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D21C + + arm_func_start ov29_0232D22C +ov29_0232D22C: ; 0x0232D22C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232D268 + mov r2, #1 + mov r0, r4 + mov r1, r4 + mov r3, r2 + bl LowerSpeed + mov r0, #1 +_0232D268: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_0232D22C + + arm_func_start ov29_0232D270 +ov29_0232D270: ; 0x0232D270 + stmdb sp!, {r3, lr} + bl ov29_0231845C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D270 + + arm_func_start ov29_0232D280 +ov29_0232D280: ; 0x0232D280 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_0231827C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D280 + + arm_func_start ov29_0232D298 +ov29_0232D298: ; 0x0232D298 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, r4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _0232D2E4 ; =0x022C46F4 + mov ip, #1 + ldrsh r2, [r2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r2, #1 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl ov29_02305C28 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D2E4: .word 0x022C46F4 + arm_func_end ov29_0232D298 + + arm_func_start ov29_0232D2E8 +ov29_0232D2E8: ; 0x0232D2E8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232D358 + ldr r0, _0232D360 ; =0x02352AEC + mov r3, #1 + ldr r2, [r0] + mov r0, r4 + mov r1, r4 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat + ldr r0, _0232D364 ; =0x02352AE8 + mov r3, #1 + ldr r2, [r0] + mov r0, r4 + mov r1, r4 + str r3, [sp] + mov ip, #0 + str ip, [sp, #4] + bl LowerDefensiveStat + mov r0, #1 +_0232D358: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0232D360: .word 0x02352AEC +_0232D364: .word 0x02352AE8 + arm_func_end ov29_0232D2E8 + + arm_func_start ov29_0232D368 +ov29_0232D368: ; 0x0232D368 + stmdb sp!, {r3, lr} + bl ov29_02318508 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D368 + + arm_func_start ov29_0232D378 +ov29_0232D378: ; 0x0232D378 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl ov29_0230D874 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230D8E8 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232D3D4 ; =0x00000F2E + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D3D4: .word 0x00000F2E + arm_func_end ov29_0232D378 + + arm_func_start ov29_0232D3D8 +ov29_0232D3D8: ; 0x0232D3D8 + stmdb sp!, {r3, lr} + ldr r2, _0232D3FC ; =0x022C44B8 + mov ip, #1 + ldrsh r2, [r2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232D3FC: .word 0x022C44B8 + arm_func_end ov29_0232D3D8 + + arm_func_start ov29_0232D400 +ov29_0232D400: ; 0x0232D400 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_023185A8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D400 + + arm_func_start ov29_0232D418 +ov29_0232D418: ; 0x0232D418 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D4A4 ; =0x022C452C + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D46C + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictParalysisStatus +_0232D46C: + ldr r1, _0232D4A8 ; =0x022C4678 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D49C + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictCringeStatus +_0232D49C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D4A4: .word 0x022C452C +_0232D4A8: .word 0x022C4678 + arm_func_end ov29_0232D418 + + arm_func_start ov29_0232D4AC +ov29_0232D4AC: ; 0x0232D4AC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r1 + mov r6, r0 + mov r0, r5 + ldr r4, [r5, #0xb4] + bl ov29_023197CC + cmp r0, #0 + bne _0232D4E0 + ldrb r0, [r4, #0xd5] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #2 + bhi _0232D4FC +_0232D4E0: + ldr r2, _0232D550 ; =0x00000ED2 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, r6 + mov r1, r5 + bl ov29_023064F4 +_0232D4FC: + ldr r1, _0232D554 ; =0x02352AE8 + mov r0, r6 + ldr r2, [r1] + mov r1, r5 + mov r3, #0 + bl LowerHitChanceStat + mov r0, r6 + bl GetApparentWeather + cmp r0, #6 + bne _0232D548 + ldr r1, _0232D558 ; =0x022C4654 + ldr r0, _0232D55C ; =0x02353538 + ldrsh r3, [r1] + ldr r1, [r0] + mov r0, #1 + add r2, r1, #0xcd00 + mov r1, #0 + strh r3, [r2, #0x3a] + bl ov29_023354C4 +_0232D548: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232D550: .word 0x00000ED2 +_0232D554: .word 0x02352AE8 +_0232D558: .word 0x022C4654 +_0232D55C: .word 0x02353538 + arm_func_end ov29_0232D4AC + + arm_func_start ov29_0232D560 +ov29_0232D560: ; 0x0232D560 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r6, r2 + ldrb r4, [r6, #6] + mov r8, r0 + mov r0, r6 + mov r7, r1 + mov r5, r3 + bl GetMaxPp + movs r1, r0 + mov r0, #0x64 + mul r0, r4, r0 + moveq r1, #1 + bl DivideInt + cmp r0, #0x19 + bgt _0232D5BC + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x140 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D5BC: + cmp r0, #0x32 + bgt _0232D5E0 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x100 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D5E0: + cmp r0, #0x4b + mov r0, r8 + mov r1, r7 + bgt _0232D604 + mov r2, r6 + mov r3, #0xc0 + str r5, [sp] + bl DealDamage + b _0232D614 +_0232D604: + mov r2, r6 + mov r3, #0x80 + str r5, [sp] + bl DealDamage +_0232D614: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ov29_0232D560 + + arm_func_start ov29_0232D620 +ov29_0232D620: ; 0x0232D620 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D6A8 ; =0x022C4518 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D670 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl TryInflictFrozenStatus +_0232D670: + ldr r1, _0232D6AC ; =0x022C453C + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D6A0 + mov r2, #0 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl TryInflictCringeStatus +_0232D6A0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D6A8: .word 0x022C4518 +_0232D6AC: .word 0x022C453C + arm_func_end ov29_0232D620 + + arm_func_start ov29_0232D6B0 +ov29_0232D6B0: ; 0x0232D6B0 + stmdb sp!, {r3, lr} + cmp r0, r1 + beq _0232D6C8 + mov r2, #0 + mov r3, r2 + bl ov29_02305C3C +_0232D6C8: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D6B0 + + arm_func_start ov29_0232D6D0 +ov29_0232D6D0: ; 0x0232D6D0 + stmdb sp!, {r3, lr} + mov r2, #1 + mov r3, #0 + bl ov29_0231872C + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D6D0 + + arm_func_start ov29_0232D6E8 +ov29_0232D6E8: ; 0x0232D6E8 + stmdb sp!, {r3, r4, r5, lr} + ldr r5, [r1, #0xb4] + ldr ip, _0232D734 ; =0x000003E7 + ldrsh r4, [r5, #0x12] + ldrsh lr, [r5, #0x16] + add r4, r4, lr + cmp r4, ip + movgt r4, ip + ldrsh ip, [r5, #0x10] + cmp r4, ip, lsl #1 + movge r4, #2 + movlt r4, #1 + str r3, [sp] + mov r3, r4, lsl #8 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D734: .word 0x000003E7 + arm_func_end ov29_0232D6E8 + + arm_func_start ov29_0232D738 +ov29_0232D738: ; 0x0232D738 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x14 + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrsh r0, [r0, #0x66] + mov r5, r2 + mov r4, r3 + cmp r0, #0 + beq _0232D7C8 + add r2, sp, #0xc + mov r3, r5 + mov r1, #4 +_0232D76C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0232D76C + mov r0, r7 + bl ov29_0231AE90 + cmp r0, #0 + beq _0232D7C8 + str r4, [sp] + ldrb r3, [r0, #2] + add r2, sp, #0xc + mov r1, r6 + str r3, [sp, #4] + ldrsh r4, [r0, #4] + mov r0, r7 + mov r3, #0x100 + str r4, [sp, #8] + bl ov29_02332BB8 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + b _0232D7F0 +_0232D7C8: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x100 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0232D7F0: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end ov29_0232D738 + + arm_func_start ov29_0232D7F8 +ov29_0232D7F8: ; 0x0232D7F8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + ldr ip, [r8, #0xb4] + mov r7, r1 + ldr ip, [ip, #0x110] + mov r6, r2 + cmp ip, #0 + mov r5, r3 + movne r4, #1 + bne _0232D830 + ldr r2, _0232D85C ; =0x00000F0D + mov r4, #2 + bl LogMessageByIdWithPopupCheckUserTarget +_0232D830: + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r4, lsl #8 + str r5, [sp] + bl DealDamage + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232D85C: .word 0x00000F0D + arm_func_end ov29_0232D7F8 + + arm_func_start ov29_0232D860 +ov29_0232D860: ; 0x0232D860 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl ov29_023245A4 + cmp r0, #0 + beq _0232D8CC + ldr r1, _0232D8F4 ; =0x022C47DC + mov r0, r7 + ldr r3, [r1] + mov r1, r6 + mov r2, r5 + str r4, [sp] + bl DealDamage + cmp r0, #0 + movne r4, #1 + moveq r4, #0 + mov r0, r7 + bl ov29_02318D58 + tst r4, #0xff + beq _0232D8EC + mov r0, r7 + mov r1, r6 + bl ov29_02307D18 + b _0232D8EC +_0232D8CC: + ldr r0, _0232D8F8 ; =0x00000CD7 + bl StringFromMessageId + str r0, [sp] + mov r0, r7 + mov r1, r6 + mov r3, r5 + mov r2, #0xd + bl ov29_02318BBC +_0232D8EC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232D8F4: .word 0x022C47DC +_0232D8F8: .word 0x00000CD7 + arm_func_end ov29_0232D860 + + arm_func_start ov29_0232D8FC +ov29_0232D8FC: ; 0x0232D8FC + stmdb sp!, {r3, lr} + bl ov29_023383BC + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232D8FC + + arm_func_start ov29_0232D90C +ov29_0232D90C: ; 0x0232D90C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl ov29_022ED868 + cmp r0, #0 + beq _0232D95C + mov r2, r5 + add r0, r7, #4 + mov r1, #0x14 + mov r3, #0 + bl ov29_022EDCBC + cmp r0, #0 + movne r4, #1 + bne _0232D96C +_0232D95C: + ldr r2, _0232D978 ; =0x00000EEF + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232D96C: + bl ov29_02336F4C + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232D978: .word 0x00000EEF + arm_func_end ov29_0232D90C + + arm_func_start ov29_0232D97C +ov29_0232D97C: ; 0x0232D97C + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _0232D9DC ; =0x022C44F0 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r4 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232D9D4 + ldr r1, _0232D9E0 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r5 + mov r3, #1 + bl BoostOffensiveStat +_0232D9D4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232D9DC: .word 0x022C44F0 +_0232D9E0: .word 0x02352AE8 + arm_func_end ov29_0232D97C + + arm_func_start ov29_0232D9E4 +ov29_0232D9E4: ; 0x0232D9E4 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0232DACC ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0232DAC4 + cmp r5, #0 + moveq r0, #0 + beq _0232DA3C + ldr r0, [r5] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0232DA3C: + cmp r0, #0 + beq _0232DAC4 + cmp r5, r4 + beq _0232DA8C + cmp r5, #0 + moveq r0, #0 + beq _0232DA6C + ldr r0, [r5] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_0232DA6C: + cmp r0, #0 + beq _0232DA8C + mov r0, r5 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0232DA98 +_0232DA8C: + mov r0, r4 + mov r1, #0x2c + bl AbilityIsActive2 +_0232DA98: + cmp r0, #0 + bne _0232DAC4 + ldr r1, [r5, #0xb4] + ldrb r0, [r1, #0xd8] + cmp r0, #6 + ldrneb r0, [r1, #0xf3] + cmpne r0, #1 + beq _0232DAC4 + mov r0, r5 + mov r1, r4 + bl ov29_022FB214 +_0232DAC4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232DACC: .word 0x02353538 + arm_func_end ov29_0232D9E4 + + arm_func_start ov29_0232DAD0 +ov29_0232DAD0: ; 0x0232DAD0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r4, r1 + ldr ip, [r4, #0xb4] + ldr r1, _0232DC44 ; =0x02352B3C + mov r5, r0 + add lr, sp, #0 + ldmia r1, {r0, r1, r2, r3} + stmia lr, {r0, r1, r2, r3} + ldrsh r1, [ip, #0x24] + mov r0, #0 + cmp r1, #0x14 + strlt r0, [sp] + ldrsh r1, [ip, #0x26] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #1 + strlt r2, [r1, r0, lsl #2] + ldrsh r1, [ip, #0x28] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #2 + strlt r2, [r1, r0, lsl #2] + ldrsh r1, [ip, #0x2a] + addlt r0, r0, #1 + cmp r1, #0x14 + addlt r1, sp, #0 + movlt r2, #3 + strlt r2, [r1, r0, lsl #2] + addlt r0, r0, #1 + cmp r0, #0 + bne _0232DB7C + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232DC48 ; =0x00000F0E + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232DC38 +_0232DB7C: + bl DungeonRandInt + add r1, sp, #0 + ldr r0, [r1, r0, lsl #2] + cmp r0, #0 + bne _0232DBAC + ldr r1, _0232DC4C ; =0x02352AEC + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostOffensiveStat + b _0232DC38 +_0232DBAC: + cmp r0, #2 + bne _0232DBD0 + ldr r1, _0232DC4C ; =0x02352AEC + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostDefensiveStat + b _0232DC38 +_0232DBD0: + cmp r0, #1 + bne _0232DBF4 + ldr r1, _0232DC50 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostOffensiveStat + b _0232DC38 +_0232DBF4: + cmp r0, #3 + bne _0232DC18 + ldr r1, _0232DC50 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #2 + bl BoostDefensiveStat + b _0232DC38 +_0232DC18: + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232DC48 ; =0x00000F0E + mov r0, r5 + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DC38: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232DC44: .word 0x02352B3C +_0232DC48: .word 0x00000F0E +_0232DC4C: .word 0x02352AEC +_0232DC50: .word 0x02352AE8 + arm_func_end ov29_0232DAD0 + + arm_func_start ov29_0232DC54 +ov29_0232DC54: ; 0x0232DC54 + stmdb sp!, {r3, lr} + bl ov29_02318984 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232DC54 + + arm_func_start ov29_0232DC64 +ov29_0232DC64: ; 0x0232DC64 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, r1 + ldrb r0, [r0, #6] + mov r4, #0 + cmp r0, #0 + movne r5, #2 + moveq r5, #1 + bl ov29_022ED868 + cmp r0, #0 + beq _0232DCB4 + mov r2, r5 + add r0, r7, #4 + mov r1, #0x15 + mov r3, #1 + bl ov29_022EDCBC + cmp r0, #0 + movne r4, #1 + bne _0232DCC4 +_0232DCB4: + ldr r2, _0232DCD0 ; =0x00000EEF + mov r0, r7 + mov r1, r6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DCC4: + bl ov29_02336F4C + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232DCD0: .word 0x00000EEF + arm_func_end ov29_0232DC64 + + arm_func_start ov29_0232DCD4 +ov29_0232DCD4: ; 0x0232DCD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, #0 + bl ov29_022FB0A8 + cmp r0, #0 + ble _0232DD10 + ldrb r1, [r6, #6] + cmp r1, #0 + subeq r0, r0, #1 + moveq r0, r0, lsl #0x10 + moveq r0, r0, asr #0x10 +_0232DD10: + cmp r0, #0 + ble _0232DD44 + ldr r1, _0232DD70 ; =0x022C4944 + sub r0, r0, #1 + ldr r3, [r1, r0, lsl #2] + mov r0, r8 + mov r1, r7 + mov r2, r6 + str r5, [sp] + bl DealDamage + cmp r0, #0 + movgt r4, #1 + b _0232DD64 +_0232DD44: + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232DD74 ; =0x00000EBC + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DD64: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0232DD70: .word 0x022C4944 +_0232DD74: .word 0x00000EBC + arm_func_end ov29_0232DCD4 + + arm_func_start ov29_0232DD78 +ov29_0232DD78: ; 0x0232DD78 + stmdb sp!, {r3, lr} + bl BoostOrLowerSpeed + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232DD78 + + arm_func_start ov29_0232DD88 +ov29_0232DD88: ; 0x0232DD88 + stmdb sp!, {r3, lr} + str r3, [sp] + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_0232DD88 + + arm_func_start ov29_0232DDAC +ov29_0232DDAC: ; 0x0232DDAC + stmdb sp!, {r4, r5, r6, lr} + mov r4, #1 + mov r3, r4 + mov r2, #0x2a + mov r6, r0 + mov r5, r1 + bl DefenderAbilityIsActive__0232DE20 + cmp r0, #0 + beq _0232DE00 + mov r4, #0 + mov r0, r4 + mov r1, r5 + mov r2, r4 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, #0x2a + bl ov29_0234B084 + ldr r2, _0232DE1C ; =0x00000F13 + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232DE00: + cmp r4, #0 + beq _0232DE14 + mov r0, r6 + mov r1, r5 + bl TryInflictSleeplessStatus +_0232DE14: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232DE1C: .word 0x00000F13 + arm_func_end ov29_0232DDAC + + arm_func_start DefenderAbilityIsActive__0232DE20 +DefenderAbilityIsActive__0232DE20: ; 0x0232DE20 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _0232DE74 + cmp r0, #0 + moveq r1, #0 + beq _0232DE54 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_0232DE54: + cmp r1, #0 + cmpne r3, #0 + beq _0232DE74 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0232DE74: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__0232DE20 + + arm_func_start ov29_0232DE84 +ov29_0232DE84: ; 0x0232DE84 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr ip, [r1, #0xb4] + ldr r6, _0232DF30 ; =0x000003E7 + ldrsh r5, [ip, #0x12] + ldrsh r4, [ip, #0x16] + ldrsh ip, [ip, #0x10] + add lr, r5, r4 + cmp lr, r6 + movle r6, lr + mov r4, r6, asr #1 + add r4, r6, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #0 + ble _0232DF08 + ldr r4, _0232DF30 ; =0x000003E7 + cmp lr, r4 + movle r4, lr + mov r5, r4, lsl #1 + mov r4, r5, asr #1 + add r4, r5, r4, lsr #30 + cmp ip, r4, asr #2 + movle r5, #1 + ble _0232DF08 + ldr r4, _0232DF30 ; =0x000003E7 + cmp lr, r4 + movgt lr, r4 + add r4, lr, lr, lsl #1 + mov lr, r4, asr #1 + add lr, r4, lr, lsr #30 + cmp ip, lr, asr #2 + movle r5, #2 + movgt r5, #3 +_0232DF08: + ldr r4, _0232DF34 ; =0x022C49B4 + str r3, [sp] + ldr r3, [r4, r5, lsl #2] + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232DF30: .word 0x000003E7 +_0232DF34: .word 0x022C49B4 + arm_func_end ov29_0232DE84 + + arm_func_start ov29_0232DF38 +ov29_0232DF38: ; 0x0232DF38 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl ov29_0230D95C + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230D9D0 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230D874 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230D8E8 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230DA44 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232DFC4 ; =0x00000F2F + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232DFC4: .word 0x00000F2F + arm_func_end ov29_0232DF38 + + arm_func_start ov29_0232DFC8 +ov29_0232DFC8: ; 0x0232DFC8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r0 + mov r6, r1 + ldr r4, [r5, #0xb4] + bl GetApparentWeather + mov r3, #1 + str r3, [sp] + ldr r1, _0232E07C ; =0x022C4964 + mov r0, r0, lsl #1 + ldrsh r2, [r1, r0] + mov r0, r5 + mov r1, r6 + mov r3, #0 + bl TryIncreaseHp + ldrb r0, [r4, #0x5e] + mov ip, #0 + mov r1, ip + strb r0, [r4, #0xaa] + ldrb r0, [r4, #0x5f] + strb r0, [r4, #0xab] + mov r0, #1 +_0232E020: + add r3, r4, ip + ldrb r2, [r3, #0x5e] + add ip, ip, #1 + cmp r2, #0xa + streqb r1, [r3, #0x5e] + streqb r0, [r4, #0xa9] + cmp ip, #2 + blt _0232E020 + ldrb r0, [r4, #0xa9] + cmp r0, #0 + mov r0, #0 + streqb r0, [r4, #0xaa] + streqb r0, [r4, #0xab] + beq _0232E070 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _0232E080 ; =0x00000CC9 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser +_0232E070: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0232E07C: .word 0x022C4964 +_0232E080: .word 0x00000CC9 + arm_func_end ov29_0232DFC8 + + arm_func_start ov29_0232E084 +ov29_0232E084: ; 0x0232E084 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r2, #0 + bl ov29_0230D95C + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0230D9D0 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r5 + mov r1, r4 + ldr r2, _0232E0E0 ; =0x00000F2B + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232E0E0: .word 0x00000F2B + arm_func_end ov29_0232E084 + + arm_func_start ov29_0232E0E4 +ov29_0232E0E4: ; 0x0232E0E4 + stmdb sp!, {r3, lr} + mov r2, #1 + bl ov29_0230DAB8 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232E0E4 + + arm_func_start ov29_0232E0F8 +ov29_0232E0F8: ; 0x0232E0F8 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r1 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl ov29_02307D18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0232E0F8 + + arm_func_start ov29_0232E130 +ov29_0232E130: ; 0x0232E130 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x18 + mov r5, r0 + mov r7, r1 + mov r4, r2 + mov r6, r3 + bl ov29_02307C78 + mov r0, r5 + mov r1, r7 + mov r2, r4 + mov r3, #0x100 + str r6, [sp] + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232E240 + mov r0, r5 + bl EntityIsValid__0232E250 + cmp r0, #0 + beq _0232E1B4 + ldr r1, _0232E248 ; =0x022C4684 + mov r0, r5 + ldrsh r2, [r1] + mov r1, r7 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232E1B4 + mov r2, #0 + mov r0, r5 + mov r1, r7 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_0232E1B4: + mov r0, r5 + bl EntityIsValid__0232E250 + cmp r0, #0 + beq _0232E23C + mov r0, r5 + mov r1, #7 + bl AbilityIsActive2 + cmp r0, #0 + bne _0232E23C + ldr r1, [r5, #0xb4] + ldr r0, _0232E24C ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + ldrh r3, [r4, #4] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + movs r1, r0, asr #3 + mov r2, #0 + str r3, [sp] + mov r0, #0x23c + str r2, [sp, #4] + str r0, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + moveq r1, #1 + mov r0, r5 + mov r3, r2 + str r2, [sp, #0x14] + bl CalcRecoilDamageFixed +_0232E23C: + mov r0, #1 +_0232E240: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232E248: .word 0x022C4684 +_0232E24C: .word 0x000003E7 + arm_func_end ov29_0232E130 diff --git a/asm/overlay_29_0232E274.s b/asm/overlay_29_0232E274.s new file mode 100644 index 00000000..c248bebb --- /dev/null +++ b/asm/overlay_29_0232E274.s @@ -0,0 +1,466 @@ + .include "asm/macros.inc" + .include "overlay_29_0232E274.inc" + + .text + + arm_func_start ov29_0232E274 +ov29_0232E274: ; 0x0232E274 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0232E2B0 ; =0x02352AEC + mov r3, #1 + ldr r2, [r2] + mov r5, r0 + mov r4, r1 + bl BoostDefensiveStat + ldr r1, _0232E2B4 ; =0x02352AE8 + mov r0, r5 + ldr r2, [r1] + mov r1, r4 + mov r3, #1 + bl BoostDefensiveStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232E2B0: .word 0x02352AEC +_0232E2B4: .word 0x02352AE8 + arm_func_end ov29_0232E274 + + arm_func_start ov29_0232E2B8 +ov29_0232E2B8: ; 0x0232E2B8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov29_02307C78 + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x100 + str r4, [sp] + bl DealDamage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, _0232E360 ; =0x022C4684 + mov r0, r7 + ldrsh r2, [r1] + mov r1, r6 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232E328 + mov r2, #0 + mov r0, r7 + mov r1, r6 + mov r3, r2 + str r2, [sp] + bl TryInflictBurnStatus +_0232E328: + ldr r1, _0232E364 ; =0x022C449C + mov r0, r7 + ldrsh r2, [r1] + mov r1, r6 + bl DungeonRandOutcomeUserTargetInteraction + cmp r0, #0 + beq _0232E358 + mov r2, #0 + mov r0, r7 + mov r1, r6 + mov r3, r2 + bl TryInflictCringeStatus +_0232E358: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0232E360: .word 0x022C4684 +_0232E364: .word 0x022C449C + arm_func_end ov29_0232E2B8 + + arm_func_start ov29_0232E368 +ov29_0232E368: ; 0x0232E368 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, r4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _0232E3C8 ; =0x022C46F4 + mov ip, #1 + ldrsh r2, [r2] + mov r3, #0 + str ip, [sp] + bl TryIncreaseHp + ldr r2, _0232E3CC ; =0x000003E7 + mov r0, r5 + mov r1, r4 + mov r3, #0 + bl RestoreMovePP + mov r2, #1 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl ov29_02305C28 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232E3C8: .word 0x022C46F4 +_0232E3CC: .word 0x000003E7 + arm_func_end ov29_0232E368 + + arm_func_start ov29_0232E3D0 +ov29_0232E3D0: ; 0x0232E3D0 + stmdb sp!, {r3, r4, r5, lr} + mov r2, #0 + mov r5, r0 + mov r4, r1 + bl ov29_02318850 + mov r2, #1 + mov r0, r5 + mov r1, r4 + mov r3, r2 + bl ResetHitChanceStat + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0232E3D0 + + arm_func_start ov29_0232E400 +ov29_0232E400: ; 0x0232E400 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r1 + ldr ip, [r5, #0xb4] + mov r6, r0 + ldrb ip, [ip, #0xbd] + cmp ip, #1 + cmpne ip, #3 + cmpne ip, #5 + str r3, [sp] + bne _0232E468 + mov r0, r6 + mov r1, r5 + mov r3, #0x200 + bl DealDamage + cmp r0, #0 + movne r4, #1 + moveq r4, #0 + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, #1 + str r2, [sp] + and r4, r4, #0xff + bl ov29_02305FDC + b _0232E480 +_0232E468: + mov r3, #0x100 + bl DealDamage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r4, r0, #0xff +_0232E480: + mov r0, r4 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0232E400 + + arm_func_start ov29_0232E48C +ov29_0232E48C: ; 0x0232E48C + stmdb sp!, {r3, lr} + mov r2, #0xf + bl ov29_02318D98 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232E48C + + arm_func_start ov29_0232E4A0 +ov29_0232E4A0: ; 0x0232E4A0 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x18 + str r3, [sp] + mov r3, #0x100 + mov r5, r0 + mov r4, r2 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232E554 + mov r0, r5 + bl EntityIsValid__0232E250 + cmp r0, #0 + beq _0232E550 + mov r0, r5 + mov r1, #7 + bl AbilityIsActive2 + cmp r0, #0 + bne _0232E550 + ldr r1, [r5, #0xb4] + ldr r0, _0232E55C ; =0x000003E7 + ldrsh r2, [r1, #0x12] + ldrsh r1, [r1, #0x16] + ldrh r3, [r4, #4] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + movs r1, r0, asr #2 + mov r2, #0 + str r3, [sp] + mov r0, #0x23c + str r2, [sp, #4] + str r0, [sp, #8] + mov r0, #0x14 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + moveq r1, #1 + mov r0, r5 + mov r3, r2 + str r2, [sp, #0x14] + bl CalcRecoilDamageFixed +_0232E550: + mov r0, #1 +_0232E554: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232E55C: .word 0x000003E7 + arm_func_end ov29_0232E4A0 + + arm_func_start ov29_0232E560 +ov29_0232E560: ; 0x0232E560 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + ldr r0, [r6, #0xb4] + ldr r1, [r5, #0xb4] + ldrsh r0, [r0, #2] + ldrsh r1, [r1, #2] + mov r4, #0 + bl sub_02054EC8 + cmp r0, #0 + beq _0232E5D4 + mov r0, r6 + mov r1, r5 + mov r2, #0x29 + mov r3, #1 + bl DefenderAbilityIsActive__0232DE20 + cmp r0, #0 + bne _0232E5D4 + ldr r0, _0232E61C ; =0x02352AE8 + mov ip, #1 + ldr r2, [r0] + str ip, [sp] + mov r0, r6 + mov r1, r5 + mov r3, #2 + str ip, [sp, #4] + bl LowerOffensiveStat + mov r4, #1 +_0232E5D4: + cmp r4, #0 + bne _0232E610 + mov r0, r5 + bl EntityIsValid__0232E250 + cmp r0, #0 + moveq r0, r4 + beq _0232E614 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r2, _0232E620 ; =0x00000F0F + mov r0, r6 + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_0232E610: + mov r0, r4 +_0232E614: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0232E61C: .word 0x02352AE8 +_0232E620: .word 0x00000F0F + arm_func_end ov29_0232E560 + + arm_func_start ov29_0232E624 +ov29_0232E624: ; 0x0232E624 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232E670 + ldr r0, _0232E678 ; =0x02352AE8 + mov ip, #0 + ldr r2, [r0] + str ip, [sp] + mov r0, r4 + mov r1, r4 + mov r3, #2 + str ip, [sp, #4] + bl LowerOffensiveStat + mov r0, #1 +_0232E670: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0232E678: .word 0x02352AE8 + arm_func_end ov29_0232E624 + + arm_func_start ov29_0232E67C +ov29_0232E67C: ; 0x0232E67C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + str r3, [sp] + mov r3, #0x100 + mov r4, r0 + bl DealDamage + cmp r0, #0 + moveq r0, #0 + beq _0232E6D4 + ldrsh r0, [sp, #0x10] + cmp r0, #0 + bne _0232E6D0 + ldr r0, _0232E6DC ; =0x02352AE8 + mov ip, #0 + ldr r2, [r0] + str ip, [sp] + mov r0, r4 + mov r1, r4 + mov r3, #2 + str ip, [sp, #4] + bl LowerOffensiveStat +_0232E6D0: + mov r0, #1 +_0232E6D4: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0232E6DC: .word 0x02352AE8 + arm_func_end ov29_0232E67C + + arm_func_start ov29_0232E6E0 +ov29_0232E6E0: ; 0x0232E6E0 + stmdb sp!, {r3, r4, r5, lr} + mov r2, #0 + mov r5, r0 + mov r4, r1 + mov r3, r2 + bl BoostSpeedOneStage + mov r0, r5 + mov r1, r4 + mov r2, #0 + mov r3, #1 + bl BoostSpeedOneStage + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0232E6E0 + + arm_func_start ov29_0232E714 +ov29_0232E714: ; 0x0232E714 + stmdb sp!, {r3, lr} + ldr r2, _0232E730 ; =0x02352AE8 + mov r3, #2 + ldr r2, [r2] + bl BoostOffensiveStat + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232E730: .word 0x02352AE8 + arm_func_end ov29_0232E714 + + arm_func_start ov29_0232E734 +ov29_0232E734: ; 0x0232E734 + stmdb sp!, {r3, lr} + bl ov29_02314E60 + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end ov29_0232E734 + + arm_func_start ov29_0232E744 +ov29_0232E744: ; 0x0232E744 + ldr ip, _0232E74C ; =ov29_0232CA70 + bx ip + .align 2, 0 +_0232E74C: .word ov29_0232CA70 + arm_func_end ov29_0232E744 + + arm_func_start ov29_0232E750 +ov29_0232E750: ; 0x0232E750 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + mov r0, #1 + bl ov29_0234AFFC + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl ov29_0232C578 + mov r4, r0 + mov r0, #0 + bl ov29_0234AFFC + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0232E750 + + arm_func_start ov29_0232E794 +ov29_0232E794: ; 0x0232E794 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r0, #1 + bl ov29_0234AFFC + mov r0, r5 + mov r1, r4 + mov r2, #1 + mov r3, #0 + bl ov29_02305C28 + ldr r2, _0232E808 ; =0x000003E7 + mov r0, r5 + mov r1, r4 + bl ov29_0231526C + mov r0, r5 + mov r1, r4 + ldr r2, _0232E808 ; =0x000003E7 + mov r3, #1 + bl RestoreMovePP + ldr r1, [r4, #0xb4] + mov r0, #0 + add r1, r1, #0x100 + ldrh r2, [r1, #0x4a] + strh r2, [r1, #0x46] + ldrh r2, [r1, #0x4c] + strh r2, [r1, #0x48] + bl ov29_0234AFFC + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0232E808: .word 0x000003E7 + arm_func_end ov29_0232E794 + + arm_func_start ov29_0232E80C +ov29_0232E80C: ; 0x0232E80C + stmdb sp!, {r3, lr} + ldr r0, _0232E83C ; =0x02353718 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrne r0, _0232E83C ; =0x02353718 + ldrne r0, [r0] + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0232E83C: .word 0x02353718 + arm_func_end ov29_0232E80C diff --git a/asm/overlay_29_0232E864.s b/asm/overlay_29_0232E864.s new file mode 100644 index 00000000..75448b5d --- /dev/null +++ b/asm/overlay_29_0232E864.s @@ -0,0 +1,7025 @@ + .include "asm/macros.inc" + .include "overlay_29_0232E864.inc" + + .text + + arm_func_start ExecuteMoveEffect +ExecuteMoveEffect: ; 0x0232E864 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xf0 + ldr fp, _0232F7AC ; =0x022C45F8 + str r0, [sp, #0x14] + ldrsh r0, [fp] + ldr r5, _0232F7B0 ; =0x02352AE8 + ldr sl, _0232F7B4 ; =0x022C483C + ldr r7, [r5] + str r0, [sp, #0x34] + ldr r0, [sl] + ldr r4, _0232F7B8 ; =0x02352AEC + mov r8, r2 + ldr r6, [r4] + mov r2, #0 + str r2, [sp, #0x78] + str r6, [sp, #0xa0] + ldr r5, _0232F7BC ; =0x022C4468 + str r0, [sp, #0x30] + ldrsh r0, [r5] + ldr r4, _0232F7C0 ; =0x022C460C + ldrh r6, [r8, #4] + str r0, [sp, #0x2c] + ldrsh r0, [r4] + ldr r2, _0232F7C4 ; =0x022C4480 + ldr ip, _0232F7C8 ; =0x022C4614 + str r0, [sp, #0x28] + ldrsh r0, [r2] + ldr lr, _0232F7CC ; =0x022C4508 + mov sb, r1 + str r0, [sp, #0x24] + ldrsh r0, [ip] + str r7, [sp, #0x9c] + ldr r1, _0232F7D0 ; =0x02353718 + str r0, [sp, #0x20] + ldrsh r0, [lr] + mov r7, r3 + str r0, [sp, #0x1c] + ldr r0, _0232F7D4 ; =0x022C4504 + ldrsh r0, [r0] + str r0, [sp, #0x18] + mov r0, #1 + str r0, [sp, #0x80] + ldr r0, [sp, #0x78] + str r0, [sp, #0x74] + ldr r0, [sp, #0x78] + str r0, [sp, #0x70] + ldr r0, [sp, #0x78] + str r0, [sp, #0x7c] + str r0, [r1] + b _02332824 +_0232E92C: + mov r0, #0 + str r0, [sp, #0x6c] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x7c] + mov fp, #1 + ldr r4, [r1, r0, lsl #2] + ldr r0, [sp, #0x6c] + cmp r4, #0 + str r0, [sp, #0x68] + str r0, [sp, #0x64] + str r0, [sp, #0x60] + str r0, [sp, #0x5c] + str r0, [sp, #0x58] + beq _02332830 + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _02332830 + mov r0, r4 + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _02332818 + mov r0, #0 + str r0, [sp, #0x80] + ldr sl, [r4, #0xb4] + cmp sb, r4 + str r0, [sp, #0x38] + strb r0, [sl, #0x164] + bne _0232E9B0 + mov r0, r6 + bl IsHealingWishOrLunarDance + cmp r0, #0 + bne _02332818 +_0232E9B0: + mov r0, #0 + mov r1, sb + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r0, r6 + bl CanBeSnatched + cmp r0, #0 + ldrne r0, _0232F7D8 ; =0x02353538 + ldrne r0, [r0] + addne r0, r0, #0x19000 + ldrne r5, [r0, #0x904] + cmpne r5, #0 + beq _0232EA2C + ldr r1, [r5] + cmp r1, #1 + bne _0232EE54 + cmp r5, sb + beq _0232EE54 + ldr r1, [r0, #0x90c] + ldr r0, [r5, #0xb4] + ldr r0, [r0, #0xb0] + cmp r1, r0 + ldreqb r0, [sl, #0x10b] + cmpeq r0, #0 + bne _0232EE54 + mov r0, sb + mov r1, r4 + ldr r2, _0232F7DC ; =0x00000EAB + bl LogMessageByIdWithPopupCheckUserTarget + mov r4, r5 + b _0232EE54 +_0232EA2C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, #0 + bl LightningRodStormDrainCheck + movs r5, r0 + beq _0232EA6C + bl ov29_022E6338 + ldr r2, _0232F7E0 ; =0x00000EAC + mov r0, sb + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + mov r4, r5 + str r0, [sp, #0x68] + b _0232EE54 +_0232EA6C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, #1 + bl LightningRodStormDrainCheck + movs r5, r0 + beq _0232EAAC + bl ov29_022E6388 + ldr r2, _0232F7E4 ; =0x00000EAD + mov r0, sb + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, #1 + mov r4, r5 + str r0, [sp, #0x64] + b _0232EE54 +_0232EAAC: + mov r0, r4 + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _0232EAD0 + mov r0, r4 + mov r1, #0x33 + bl HasHeldItem +_0232EAD0: + cmp r0, #0 + bne _0232EAEC + mov r0, r4 + mov r1, #0x2a + bl IqSkillIsEnabled + cmp r0, #0 + beq _0232ED9C +_0232EAEC: + mov r0, r4 + mov r1, #0 + bl ov29_02300DCC + cmp r0, #0 + bne _0232ED9C + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + tst r0, #0xf0 + bne _0232ED9C + add r0, sl, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + ldr r1, [sp, #0x34] + cmp r0, r1 + blt _0232ED9C + ldrb r0, [sl, #0x10b] + cmp r0, #0 + bne _0232EE54 + ldrb r5, [sl, #0x4c] + str r5, [sp, #0x50] + bl ov29_022E0880 + cmp r0, #0 + beq _0232EB78 + mov r0, sb + mov r1, r4 + mov r2, #0xeb0 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232EE54 +_0232EB78: + mov r0, #0 + str r0, [sp, #0x54] + b _0232ED54 +_0232EB84: + ldr r0, [sp, #0x50] + ldrsh r1, [r4, #4] + add r0, r0, #1 + and r0, r0, #7 + str r0, [sp, #0x50] + mov r2, r0, lsl #2 + ldr r0, _0232F7E8 ; =0x0235171C + ldr r3, _0232F7E8 ; =0x0235171C + ldrsh r0, [r0, r2] + ldr r2, [sp, #0x50] + ldrsh ip, [r4, #6] + add r2, r3, r2, lsl #2 + add r0, r1, r0 + ldrsh r1, [r2, #2] + add r1, ip, r1 + bl GetTile + ldr r0, [r0, #0xc] + str r0, [sp, #0x4c] + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _0232ED48 + ldr r0, [sp, #0x4c] + ldr r0, [r0] + cmp r0, #1 + bne _0232ED48 + ldrb r0, [sl, #6] + cmp r0, #0 + bne _0232EC0C + bne _0232ED48 + ldr r0, [sp, #0x4c] + ldr r0, [r0, #0xb4] + ldrb r0, [r0, #9] + cmp r0, #1 + beq _0232ED48 +_0232EC0C: + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0232ECA0 + mov r0, #0 + str r0, [sp, #0x48] +_0232EC24: + mov r0, r4 + mov r1, r5 + bl ov29_02304A48 + mov r0, #2 + mov r1, #0x43 + bl ov29_022EA370 + add r0, r5, #1 + and r5, r0, #7 + ldr r0, [sp, #0x48] + add r0, r0, #1 + str r0, [sp, #0x48] + cmp r0, #0x18 + blt _0232EC24 + b _0232EC7C +_0232EC5C: + mov r0, r4 + mov r1, r5 + bl ov29_02304A48 + mov r0, #2 + mov r1, #0x43 + bl ov29_022EA370 + add r0, r5, #1 + and r5, r0, #7 +_0232EC7C: + ldr r0, [sp, #0x50] + cmp r5, r0 + bne _0232EC5C + mov r1, r5 + mov r0, r4 + bl ov29_02304A48 + mov r0, #2 + mov r1, #0x43 + bl ov29_022EA370 +_0232ECA0: + ldr r0, [sp, #0x34] + bl sub_02050FF8 + strh r0, [sp, #0x98] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x9a] + add r0, sl, #0x100 + ldrh r5, [r0, #0x46] + sub r1, sp, #4 + ldrh r3, [sp, #0x98] + strh r5, [r1] + ldrh r0, [r0, #0x48] + ldrh r2, [sp, #0x9a] + strh r0, [r1, #2] + ldr r0, [r1] + strh r3, [r1] + strh r2, [r1, #2] + ldr r1, [r1] + bl SubFixedPoint + strh r0, [sp, #0x94] + mov r0, r0, lsr #0x10 + strh r0, [sp, #0x96] + ldrh r3, [sp, #0x94] + add r1, sl, #0x100 + ldrh r2, [sp, #0x96] + strh r3, [r1, #0x46] + ldr r0, _0232F7EC ; =0x00000163 + strh r2, [r1, #0x48] + ldrh r1, [r8, #4] + cmp r1, r0 + mov r0, sb + mov r1, r4 + bne _0232ED2C + ldr r2, _0232F7F0 ; =0x00000EB1 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232ED34 +_0232ED2C: + ldr r2, _0232F7F4 ; =0x00000EAE + bl LogMessageByIdWithPopupCheckUserTarget +_0232ED34: + str r4, [sp, #0x6c] + ldr r0, [sp, #0x6c] + ldr r4, [sp, #0x4c] + str r0, [sp, #0x38] + b _0232ED60 +_0232ED48: + ldr r0, [sp, #0x54] + add r0, r0, #1 + str r0, [sp, #0x54] +_0232ED54: + ldr r0, [sp, #0x54] + cmp r0, #8 + blt _0232EB84 +_0232ED60: + ldr r0, [sp, #0x54] + cmp r0, #8 + bne _0232EE54 + ldrh r1, [r8, #4] + ldr r0, _0232F7EC ; =0x00000163 + cmp r1, r0 + mov r0, sb + mov r1, r4 + bne _0232ED90 + ldr r2, _0232F7F8 ; =0x00000EB2 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232EE54 +_0232ED90: + ldr r2, _0232F7FC ; =0x00000EAF + bl LogMessageByIdWithPopupCheckUserTarget + b _0232EE54 +_0232ED9C: + ldr r0, [sp, #0x7c] + cmp r0, #0 + bne _0232EE54 + mov r0, r4 + bl HasLowHealth + cmp r0, #0 + beq _0232EE54 + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + ands r0, r0, #0xf0 + cmpne r0, #0x40 + cmpne r0, #0x50 + cmpne r0, #0x80 + cmpne r0, #0x90 + bne _0232EE54 + mov r0, r4 + mov r1, #0x20 + mov r2, #1 + bl ov29_023381C0 + movs r5, r0 + beq _0232EE54 + bl ov29_02300DC0 + cmp r0, #0 + ldreq r0, [r5, #0xb4] + ldreqb r0, [r0, #0x10b] + cmpeq r0, #0 + bne _0232EE54 + mov sl, r4 + mov r4, r5 + mov r0, r5 + mov r1, #3 + bl ov29_02304C3C + mov r1, sl + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, #2 + mov r1, r5 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r1, r5 + mov r0, sb + mov r2, #0xec0 + bl LogMessageByIdWithPopupCheckUserTarget +_0232EE54: + ldr r1, _0232F800 ; =0x0237CA80 + ldr r0, _0232F804 ; =0x0237CA74 + ldr r3, [r1] + ldr r2, [r0] + add r3, r3, #1 + str r3, [r1] + add r1, r2, #1 + str r1, [r0] + ldr r5, [r4, #0xb4] + mov r0, #0 + strb r0, [r5, #0x164] + ldrb r0, [r5, #6] + cmp r0, #0 + ldrneh r1, [sb, #4] + addne r0, r5, #0x100 + strneh r1, [r0, #0x7e] + ldrneh r1, [sb, #6] + strneh r1, [r0, #0x80] + mov r0, r4 + bl ov29_022F9840 + mov r0, sb + mov r1, r4 + bl ov29_02307BDC + ldr r0, [sp, #0x7c] + cmp r0, #0 + ldreq r0, _0232F7EC ; =0x00000163 + cmpeq r6, r0 + bne _0232EF48 + mov r0, sb + mov r1, #0x56 + bl AbilityIsActive2 + cmp r0, #0 + beq _0232EF28 + mov r0, sb + mov r1, r4 + mov r2, #1 + bl ov29_022FB10C + cmp r0, #0 + bne _0232EF00 + mov r0, r4 + bl ov29_022FB1A8 + cmp r0, #0 + beq _0232EF28 +_0232EF00: + mov r0, sb + bl ov29_022E4110 + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, sb + mov r1, r4 + ldr r2, _0232F808 ; =0x00000EB3 + bl LogMessageByIdWithPopupCheckUserTarget +_0232EF28: + mov r0, sb + mov r1, #0x52 + bl AbilityIsActive2 + cmp r0, #0 + beq _0232EF48 + mov r0, sb + mov r1, r4 + bl ov29_0231B0A4 +_0232EF48: + mov r0, sb + mov r1, r8 + bl ov29_023245A4 + cmp r0, #0 + bne _0232EF74 + ldrh r1, [r8, #4] + mov r0, sb + bl ov29_02324D60 + cmp r0, #0 + movne r0, #1 + bne _0232EF78 +_0232EF74: + mov r0, #0 +_0232EF78: + and sl, r0, #0xff + ldr r0, [sp, #0x68] + cmp r0, #0 + ldreq r0, [sp, #0x64] + cmpeq r0, #0 + bne _0232F188 + mov r0, #0 + str r0, [sp, #0x44] + str r0, [sp, #0x40] + ldrb r0, [r5, #0xd5] + cmp r0, #5 + moveq r0, #1 + streq r0, [sp, #0x44] + beq _0232EFDC + mov r0, r4 + mov r1, #0x21 + bl ExclusiveItemEffectIsActive__023329E8 + cmp r0, #0 + beq _0232EFDC + ldr r0, [sp, #0x30] + bl DungeonRandOutcome__022EAB20 + str r0, [sp, #0x40] + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x44] +_0232EFDC: + ldr r0, [sp, #0x44] + cmp r0, #0 + beq _0232F090 + mov r0, r6 + bl IsReflectedByMagicCoat + cmp r0, #0 + beq _0232F188 + mov r0, sb + mov r1, r4 + bl ov29_02332FC8 + cmp r0, #0 + beq _0232F188 + ldr r0, [sp, #0x40] + cmp r0, #0 + beq _0232F050 + mov r0, r4 + mov r1, #0x21 + add r2, sp, #0xac + bl ov29_0230F654 + cmp r0, #0 + beq _0232F060 + mov r0, #0 + add r1, sp, #0xac + bl ov29_02344B44 + ldr r2, _0232F80C ; =0x00000EB5 + mov r0, sb + mov r1, r4 + bl LogMessageByIdWithPopupCheckUserTarget + b _0232F060 +_0232F050: + mov r0, sb + mov r1, r4 + ldr r2, _0232F810 ; =0x00000EB4 + bl LogMessageByIdWithPopupCheckUserTarget +_0232F060: + mov r0, r4 + bl ov29_022E3FCC + mov r0, r4 + mov r1, sb + bl ov29_02333044 + ldr r5, [sb, #0xb4] + mov r0, #0 + strb r0, [r5, #0x164] + mov r0, #1 + mov r4, sb + str r0, [sp, #0x60] + b _0232F188 +_0232F090: + mov r0, r4 + bl ov29_02319748 + str r0, [sp, #0x3c] + cmp r0, #0 + beq _0232F188 + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + str r0, [sp, #0x84] + ldr r0, _0232F7EC ; =0x00000163 + cmp r6, r0 + addne r0, r0, #0x32 + cmpne r6, r0 + beq _0232F188 + cmp sl, #0 + bne _0232F188 + mov r0, r4 + mov r1, #1 + bl ov29_0232461C + cmp r0, #0 + bne _0232F188 + ldr r0, [sp, #0x84] + ands r0, r0, #0xf + cmpne r0, #4 + cmpne r0, #5 + cmpne r0, #2 + bne _0232F188 + mov r0, sb + mov r1, r4 + bl ov29_02332FC8 + cmp r0, #0 + beq _0232F188 + mov r0, r4 + bl ov29_02300D50 + cmp r0, #0 + bne _0232F188 + ldr r0, [sp, #0x3c] + str r4, [sp, #0x38] + cmp r0, #2 + mov r0, sb + mov r1, r4 + bne _0232F14C + ldr r2, _0232F814 ; =0x00000EB7 + mov r3, #0x25 + bl ov29_02314DC4 + b _0232F154 +_0232F14C: + ldr r2, _0232F818 ; =0x00000EB6 + bl LogMessageByIdWithPopupCheckUserTarget +_0232F154: + mov r0, r4 + bl ov29_022E4110 + mov r0, r4 + mov r1, sb + bl ov29_02333044 + ldr r5, [sb, #0xb4] + mov r0, #0 + strb r0, [r5, #0x164] + mov r0, #1 + mov r4, sb + cmp r6, #0x42 + ldreq r4, [sp, #0x38] + str r0, [sp, #0x60] +_0232F188: + ldr r0, [sp, #0x68] + cmp r0, #0 + ldreq r0, [sp, #0x64] + cmpeq r0, #0 + ldreqb r0, [r5, #0xd5] + cmpeq r0, #7 + bne _0232F204 + cmp r6, #0x204 + ldrne r0, _0232F81C ; =0x000001DD + cmpne r6, r0 + beq _0232F204 + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + ands r0, r0, #0xf + cmpne r0, #4 + cmpne r0, #5 + cmpne r0, #2 + bne _0232F204 + cmp sl, #0 + bne _0232F204 + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, sb + mov r1, r4 + ldr r2, _0232F820 ; =0x00000EB8 + bl LogMessageByIdWithPopupCheckUserTarget + mov fp, #0 +_0232F204: + mov r0, r4 + mov r1, r8 + bl ov29_02324854 + cmp r0, #0 + movne fp, #0 + cmp fp, #0 + beq _0232F270 + mov r0, sb + mov r1, r4 + mov r2, #0x3c + mov r3, #1 + bl DefenderAbilityIsActive__02332A0C + cmp r0, #0 + beq _0232F270 + mov r0, r8 + bl IsSoundMove + cmp r0, #0 + beq _0232F270 + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, sb + mov r1, r4 + ldr r2, _0232F824 ; =0x00000EB9 + bl LogMessageByIdWithPopupCheckUserTarget + mov fp, #0 +_0232F270: + cmp fp, #0 + beq _0232F350 + ldr r0, [sp, #0x60] + ldrh r1, [r8, #4] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and sl, r0, #0xff + cmp r1, #0x68 + ldrne r0, _0232F828 ; =0x00000131 + mov r2, #0x79 + cmpne r1, r0 + subne r0, r0, #4 + cmpne r1, r0 + mov r0, sb + mov r1, r4 + mov r3, #1 + moveq sl, #0 + bl DefenderAbilityIsActive__02332A0C + cmp r0, #0 + beq _0232F2F0 + mov r0, sb + mov r1, r8 + bl ov29_0231AD38 + cmp r0, #0 + bne _0232F2F0 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, [sp, #0x2c] + cmp r0, r1 + movlt r0, #1 + strlt r0, [sp, #0x5c] +_0232F2F0: + ldr r0, [sp, #0x5c] + cmp r0, #0 + beq _0232F330 + mov r0, #1 + mov r1, r4 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, #0x79 + str r0, [sp] + mov r0, sb + mov r1, r4 + ldr r2, _0232F82C ; =0x00000EBA + mov r3, #2 + bl ov29_0234B250 + mov fp, #0 + b _0232F350 +_0232F330: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, #0 + str sl, [sp] + bl MoveHitCheck + cmp r0, #0 + moveq fp, #0 +_0232F350: + cmp fp, #0 + beq _0232F370 + ldr r0, [sp, #0x68] + cmp r0, #0 + ldr r0, [sp, #0x64] + movne fp, #0 + cmp r0, #0 + movne fp, #0 +_0232F370: + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0232F40C + mov r0, #4 + mov r1, #0x4a + bl ov29_022EA370 + ldrh r0, [r8, #4] + bl ov10_022BFD6C + cmp r0, #0 + beq _0232F3B0 + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_023258EC + b _0232F40C +_0232F3B0: + ldrh r0, [r8, #4] + cmp r0, #0xad + bne _0232F3C4 + mov r0, #1 + bl ov29_022E38E0 +_0232F3C4: + ldr r0, [sp, #0x38] + cmp r0, #0 + beq _0232F3F8 + ldrh r0, [r8, #4] + cmp r0, #0x1f4 + cmpne r0, #0x50 + bne _0232F3F8 + ldr r1, [sp, #0x38] + mov r0, sb + mov r2, r8 + mov r3, #0 + bl ov29_023256B4 + b _0232F40C +_0232F3F8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, #0 + bl ov29_023256B4 +_0232F40C: + ldr r0, _0232F830 ; =0x000001F6 + cmp r6, r0 + bne _0232F498 + mov r3, r8 + add r2, sp, #0xa4 + mov r1, #4 +_0232F424: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0232F424 + ldr r0, [sp, #0x60] + mov sl, #1 + cmp r0, #0 + ldr r0, _0232F834 ; =0x00000232 + strh r0, [sp, #0xa8] + beq _0232F468 + mov r3, #0 + mov r0, sb + mov r1, r4 + add r2, sp, #0xa4 + str r3, [sp] + bl ov29_0232393C + b _0232F498 +_0232F468: + mov r0, sb + mov r1, r4 + bl ov29_022FB678 + cmp r0, #0 + moveq sl, #2 + mov r0, #0 + str r0, [sp] + mov r3, sl + mov r0, sb + mov r1, r4 + add r2, sp, #0xa4 + bl ov29_0232393C +_0232F498: + cmp fp, #0 + bne _0232F62C + ldrh r0, [r8, #4] + ldr r2, [sb, #0xb4] + cmp r0, #2 + cmpne r0, #0x69 + ldreq r0, _0232F838 ; =0x0237CA69 + moveq r1, #1 + streqb r1, [r0] + ldrh r1, [r8, #4] + ldr r0, _0232F7EC ; =0x00000163 + cmp r1, r0 + movne r0, #1 + strneb r0, [r2, #0x166] + ldrb r0, [r2, #7] + cmp r0, #0 + mov r0, sb + beq _0232F4EC + ldr r1, _0232F83C ; =0x00001307 + bl ov29_022E56A0 + b _0232F4F4 +_0232F4EC: + ldr r1, _0232F840 ; =0x00001306 + bl ov29_022E56A0 +_0232F4F4: + bl ov29_0234B034 + mov r3, #0 + str r3, [sp] + ldr r2, [r4, #0xb4] + mov r1, #1 + bl ov29_0230040C + cmp sb, r4 + mov r0, sb + mov r1, r4 + bne _0232F528 + ldr r2, _0232F844 ; =0x00000EBC + bl LogMessageByIdWithPopupCheckUserTarget + b _0232F598 +_0232F528: + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #0 + bne _0232F550 + mov r0, sb + mov r1, r4 + ldr r2, _0232F848 ; =0x00000EBD + bl LogMessageByIdWithPopupCheckUserTarget + b _0232F598 +_0232F550: + ldr r0, [sp, #0x68] + cmp r0, #0 + beq _0232F570 + mov r0, sb + mov r1, r4 + ldr r2, _0232F84C ; =0x00000EBE + bl LogMessageByIdWithPopupCheckUserTarget + b _0232F598 +_0232F570: + ldr r0, [sp, #0x64] + mov r1, r4 + cmp r0, #0 + mov r0, sb + beq _0232F590 + ldr r2, _0232F850 ; =0x00000EBF + bl LogMessageByIdWithPopupCheckUserTarget + b _0232F598 +_0232F590: + ldr r2, _0232F854 ; =0x00000EBB + bl LogMessageByIdWithPopupCheckUserTarget +_0232F598: + mov r0, r4 + bl ov29_022E272C + cmp r0, #0 + beq _0232F5BC + ldr r0, _0232F858 ; =0x0000270F + mov r1, r4 + mov r2, #1 + sub r3, r2, #2 + bl ov29_022EA718 +_0232F5BC: + cmp r6, #0xcc + beq _0232F5EC + cmp r6, #0xce + bne _0232F608 + mov r1, r4 + mov r0, #1 + str r0, [sp] + mov r0, sb + mov r2, r8 + mov r3, r7 + bl ov29_02329B68 + b _0232F608 +_0232F5EC: + mov r1, r4 + mov r0, #1 + str r0, [sp] + mov r0, sb + mov r2, r8 + mov r3, r7 + bl ov29_02329970 +_0232F608: + ldr r0, [sp, #0x70] + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x70] + bl IsFloorOver + cmp r0, #0 + bne _02332830 + b _02332818 +_0232F62C: + mov sl, #1 + ldrb fp, [r5, #0x108] + ldrb r0, [r5, #6] + cmp r0, #0 + beq _0232F670 + ldrh r1, [r8, #4] + rsb r0, sl, #0x164 + cmp r1, r0 + beq _0232F660 + cmp r7, #0 + bne _0232F660 + cmp fp, #1 + strlob sl, [r5, #0x108] +_0232F660: + ldr r0, [sp, #0x118] + cmp r0, #1 + moveq r0, #2 + streqb r0, [r5, #0x108] +_0232F670: + ldrb r0, [r5, #0x177] + cmp r0, #0xff + bne _0232F6A0 + mov r0, r4 + mov r1, #0xe3 + bl ov29_02301C2C + cmp r0, #0 + beq _0232F6A0 + add r0, r4, #4 + add r1, sb, #4 + bl GetDirectionTowardsPosition + strb r0, [r5, #0x177] +_0232F6A0: + ldrb r0, [r5, #0x178] + cmp r0, #0xff + bne _0232F6D0 + mov r0, r4 + mov r1, #0x19 + bl ov29_02301C2C + cmp r0, #0 + beq _0232F6D0 + add r0, r4, #4 + add r1, sb, #4 + bl GetDirectionTowardsPosition + strb r0, [r5, #0x178] +_0232F6D0: + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf + cmp r0, #4 + ldrne r2, [sb, #0xb4] + ldrneh r1, [r8, #4] + ldrneh r0, [r2, #0xac] + cmpne r1, r0 + beq _0232F708 + ldrb r0, [r2, #0x23f] + cmp r0, #0 + beq _0232F70C +_0232F708: + mov sl, #0 +_0232F70C: + cmp sl, #0 + beq _0232F87C + mov r0, sb + mov r1, r4 + mov r2, #0x39 + mov r3, #1 + bl DefenderAbilityIsActive__02332A0C + cmp r0, #0 + beq _0232F87C + mov r0, sb + mov r1, r4 + mov r2, #1 + mov r3, #0 + bl ov29_0230175C + cmp r0, #1 + bne _0232F87C + ldrh r1, [r8, #4] + ldr r0, _0232F7EC ; =0x00000163 + cmp r1, r0 + cmpne r1, #0x160 + beq _0232F87C + cmp r7, #0 + bne _0232F87C + ldrb r0, [r8, #6] + cmp r0, #0 + beq _0232F87C + mov r0, r4 + mov r1, #0x58 + bl ExclusiveItemEffectIsActive__023329E8 + cmp r0, #0 + ldrh r0, [r8, #2] + beq _0232F860 + tst r0, #0x40 + bne _0232F79C + mov r0, sb + bl ov29_022E6424 +_0232F79C: + ldrh r0, [r8, #2] + orr r0, r0, #0x40 + strh r0, [r8, #2] + b _0232F87C + .align 2, 0 +_0232F7AC: .word 0x022C45F8 +_0232F7B0: .word 0x02352AE8 +_0232F7B4: .word 0x022C483C +_0232F7B8: .word 0x02352AEC +_0232F7BC: .word 0x022C4468 +_0232F7C0: .word 0x022C460C +_0232F7C4: .word 0x022C4480 +_0232F7C8: .word 0x022C4614 +_0232F7CC: .word 0x022C4508 +_0232F7D0: .word 0x02353718 +_0232F7D4: .word 0x022C4504 +_0232F7D8: .word 0x02353538 +_0232F7DC: .word 0x00000EAB +_0232F7E0: .word 0x00000EAC +_0232F7E4: .word 0x00000EAD +_0232F7E8: .word 0x0235171C +_0232F7EC: .word 0x00000163 +_0232F7F0: .word 0x00000EB1 +_0232F7F4: .word 0x00000EAE +_0232F7F8: .word 0x00000EB2 +_0232F7FC: .word 0x00000EAF +_0232F800: .word 0x0237CA80 +_0232F804: .word 0x0237CA74 +_0232F808: .word 0x00000EB3 +_0232F80C: .word 0x00000EB5 +_0232F810: .word 0x00000EB4 +_0232F814: .word 0x00000EB7 +_0232F818: .word 0x00000EB6 +_0232F81C: .word 0x000001DD +_0232F820: .word 0x00000EB8 +_0232F824: .word 0x00000EB9 +_0232F828: .word 0x00000131 +_0232F82C: .word 0x00000EBA +_0232F830: .word 0x000001F6 +_0232F834: .word 0x00000232 +_0232F838: .word 0x0237CA69 +_0232F83C: .word 0x00001307 +_0232F840: .word 0x00001306 +_0232F844: .word 0x00000EBC +_0232F848: .word 0x00000EBD +_0232F84C: .word 0x00000EBE +_0232F850: .word 0x00000EBF +_0232F854: .word 0x00000EBB +_0232F858: .word 0x0000270F +_0232F85C: .word 0x0000021E +_0232F860: + tst r0, #0x10 + bne _0232F870 + mov r0, sb + bl ov29_022E6424 +_0232F870: + ldrh r0, [r8, #2] + orr r0, r0, #0x10 + strh r0, [r8, #2] +_0232F87C: + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + tst r0, #0xf + bne _0232F8A0 + mov r0, sb + mov r1, r4 + bl ov29_0230D440 +_0232F8A0: + ldr r0, _0232F85C ; =0x0000021E + mov r1, #1 + strb r1, [r5, #0x162] + cmp r6, r0 + addls pc, pc, r6, lsl #2 + b _023326C8 +_0232F8B8: ; jump table + b _023301E8 ; case 0 + b _02331300 ; case 1 + b _02330FE8 ; case 2 + b _02330990 ; case 3 + b _02330974 ; case 4 + b _02331290 ; case 5 + b _023312AC ; case 6 + b _023316F0 ; case 7 + b _02331760 ; case 8 + b _02330134 ; case 9 + b _0233177C ; case 10 + b _02331C70 ; case 11 + b _02331AB0 ; case 12 + b _02330A00 ; case 13 + b _02331CFC ; case 14 + b _023313C4 ; case 15 + b _02331C8C ; case 16 + b _02331B74 ; case 17 + b _02330134 ; case 18 + b _02330BC0 ; case 19 + b _02331568 ; case 20 + b _02330B18 ; case 21 + b _0233154C ; case 22 + b _02331CA8 ; case 23 + b _02330E28 ; case 24 + b _02331FDC ; case 25 + b _023313C4 ; case 26 + b _02330D64 ; case 27 + b _02330134 ; case 28 + b _02331CC4 ; case 29 + b _023307EC ; case 30 + b _02331B90 ; case 31 + b _02330484 ; case 32 + b _02330AE0 ; case 33 + b _02330974 ; case 34 + b _02331ACC ; case 35 + b _0233037C ; case 36 + b _02331A24 ; case 37 + b _02331138 ; case 38 + b _02330134 ; case 39 + b _02331EC4 ; case 40 + b _023314F8 ; case 41 + b _02330CD8 ; case 42 + b _02331004 ; case 43 + b _02330CBC ; case 44 + b _023314A4 ; case 45 + b _023307EC ; case 46 + b _02331338 ; case 47 + b _02331F50 ; case 48 + b _02331824 ; case 49 + b _023320D8 ; case 50 + b _02331138 ; case 51 + b _023302F0 ; case 52 + b _0233030C ; case 53 + b _02331D34 ; case 54 + b _02330BA4 ; case 55 + b _02331798 ; case 56 + b _023302B8 ; case 57 + b _023316B8 ; case 58 + b _023308CC ; case 59 + b _0233123C ; case 60 + b _02331154 ; case 61 + b _02330808 ; case 62 + b _023307B4 ; case 63 + b _02330958 ; case 64 + b _02330958 ; case 65 + b _023315BC ; case 66 + b ov29_023319B4 ; case 67 + b _0233037C ; case 68 + b ov29_02330468 ; case 69 + b _023316B8 ; case 70 + b ov29_02330680 ; case 71 + b ov29_0233169C ; case 72 + b ov29_02330AA8 ; case 73 + b ov29_02330360 ; case 74 + b ov29_02331258 ; case 75 + b ov29_02330DB8 ; case 76 + b ov29_02331944 ; case 77 + b ov29_02331434 ; case 78 + b _02330974 ; case 79 + b ov29_02330DB8 ; case 80 + b _0233037C ; case 81 + b ov29_0233069C ; case 82 + b ov29_02331530 ; case 83 + b _02330974 ; case 84 + b ov29_02331928 ; case 85 + b ov29_023304BC ; case 86 + b _0233037C ; case 87 + b ov29_023313E0 ; case 88 + b ov29_023304BC ; case 89 + b _0233037C ; case 90 + b ov29_02330ED0 ; case 91 + b ov29_023319D0 ; case 92 + b ov29_0233069C ; case 93 + b ov01_0233103C ; case 94 + b ov29_0233111C ; case 95 + b ov29_02331B3C ; case 96 + b ov29_02330AA8 ; case 97 + b ov29_023316D4 ; case 98 + b ov29_02330C84 ; case 99 + b ov29_02330E98 ; case 100 + b ov29_02330328 ; case 101 + b ov29_023318B0 ; case 102 + b ov29_02330878 ; case 103 + b ov29_02331C00 ; case 104 + b _02330FE8 ; case 105 + b ov29_02330D10 ; case 106 + b ov29_023306B8 ; case 107 + b ov29_02331370 ; case 108 + b ov29_023304F4 ; case 109 + b ov29_02330CF4 ; case 110 + b _02330974 ; case 111 + b ov29_02330F08 ; case 112 + b ov29_023319EC ; case 113 + b ov29_023306B8 ; case 114 + b ov29_02331FC0 ; case 115 + b ov29_02330DF0 ; case 116 + b ov29_02331090 ; case 117 + b ov29_0233029C ; case 118 + b ov29_02331E68 ; case 119 + b ov29_0233077C ; case 120 + b ov29_02331944 ; case 121 + b ov29_0233131C ; case 122 + b ov29_02331960 ; case 123 + b ov29_0233093C ; case 124 + b ov29_02330468 ; case 125 + b _02330134 ; case 126 + b ov29_02330824 ; case 127 + b ov29_02331998 ; case 128 + b ov29_023309AC ; case 129 + b ov29_02330FB0 ; case 130 + b ov29_02330414 ; case 131 + b _02330134 ; case 132 + b ov29_02330798 ; case 133 + b ov29_02330F94 ; case 134 + b ov29_02330E0C ; case 135 + b _02330134 ; case 136 + b ov29_02331EFC ; case 137 + b ov29_02331EA0 ; case 138 + b ov29_023307D0 ; case 139 + b ov29_02330DD4 ; case 140 + b ov29_02330F78 ; case 141 + b ov29_023314DC ; case 142 + b ov29_02330468 ; case 143 + b ov29_0233077C ; case 144 + b _02330134 ; case 145 + b ov29_023314DC ; case 146 + b ov29_02330728 ; case 147 + b ov29_02330C14 ; case 148 + b ov29_02330744 ; case 149 + b ov29_02330430 ; case 150 + b ov29_02330E7C ; case 151 + b ov29_02330904 ; case 152 + b ov29_0233170C ; case 153 + b _02330134 ; case 154 + b ov29_0233197C ; case 155 + b ov29_02331744 ; case 156 + b _0233030C ; case 157 + b ov29_02330280 ; case 158 + b ov29_02330CA0 ; case 159 + b ov29_02331A5C ; case 160 + b _02330134 ; case 161 + b ov29_02330664 ; case 162 + b _02330134 ; case 163 + b ov29_02330E60 ; case 164 + b ov29_02331020 ; case 165 + b _02330134 ; case 166 + b _02330134 ; case 167 + b _02330134 ; case 168 + b ov29_02330B50 ; case 169 + b ov29_02330D80 ; case 170 + b _02330A00 ; case 171 + b ov29_0233190C ; case 172 + b ov29_02331058 ; case 173 + b _02330134 ; case 174 + b _02330134 ; case 175 + b _02330134 ; case 176 + b ov29_023309E4 ; case 177 + b _02330134 ; case 178 + b _02330134 ; case 179 + b _02330134 ; case 180 + b ov29_02330BDC ; case 181 + b _02330134 ; case 182 + b ov29_02331F18 ; case 183 + b ov29_02332068 ; case 184 + b ov29_02331C1C ; case 185 + b ov29_02330C68 ; case 186 + b ov29_02331648 ; case 187 + b ov29_02330760 ; case 188 + b _02330134 ; case 189 + b _02330134 ; case 190 + b _02330A00 ; case 191 + b ov29_02330A38 ; case 192 + b ov29_02330A70 ; case 193 + b ov29_023309C8 ; case 194 + b _02330BA4 ; case 195 + b ov29_02330A1C ; case 196 + b ov29_02331514 ; case 197 + b ov29_02330F24 ; case 198 + b ov29_02330A1C ; case 199 + b ov29_023304D8 ; case 200 + b _02330134 ; case 201 + b ov29_02330C68 ; case 202 + b ov29_02330DF0 ; case 203 + b ov29_023318CC ; case 204 + b ov29_02331728 ; case 205 + b ov29_023311E0 ; case 206 + b ov29_0233085C ; case 207 + b _02330134 ; case 208 + b ov29_023310C8 ; case 209 + b ov29_02330E44 ; case 210 + b _02330134 ; case 211 + b ov29_023312E4 ; case 212 + b ov29_023314C0 ; case 213 + b ov29_02331100 ; case 214 + b ov29_02330C30 ; case 215 + b ov29_02330D9C ; case 216 + b ov29_02330D2C ; case 217 + b ov29_02331090 ; case 218 + b ov29_023304A0 ; case 219 + b ov29_02331EE0 ; case 220 + b _023307B4 ; case 221 + b _02330134 ; case 222 + b ov29_02331BAC ; case 223 + b ov29_0233131C ; case 224 + b ov29_02331488 ; case 225 + b ov29_023308E8 ; case 226 + b ov29_023311A8 ; case 227 + b ov29_02331BC8 ; case 228 + b ov29_0233185C ; case 229 + b _0233030C ; case 230 + b _02330974 ; case 231 + b ov29_02331074 ; case 232 + b ov29_02331354 ; case 233 + b ov29_023306B8 ; case 234 + b ov29_0233077C ; case 235 + b ov29_02331A94 ; case 236 + b ov29_023311C4 ; case 237 + b ov29_02330344 ; case 238 + b ov29_02330344 ; case 239 + b _02330134 ; case 240 + b _02330134 ; case 241 + b ov29_02330344 ; case 242 + b ov29_02330A8C ; case 243 + b ov29_02330624 ; case 244 + b ov29_02331A78 ; case 245 + b ov29_02330AC4 ; case 246 + b ov29_02330430 ; case 247 + b _02330134 ; case 248 + b ov29_023317B4 ; case 249 + b _02330134 ; case 250 + b _0233037C ; case 251 + b ov29_023315D8 ; case 252 + b ov29_02330ED0 ; case 253 + b ov29_02331D50 ; case 254 + b ov29_02330680 ; case 255 + b ov29_02331878 ; case 256 + b ov29_02331C38 ; case 257 + b ov29_02330C68 ; case 258 + b ov29_02330FCC ; case 259 + b _02330134 ; case 260 + b ov29_02330798 ; case 261 + b _0233030C ; case 262 + b ov29_02331E4C ; case 263 + b ov29_02330840 ; case 264 + b ov29_02330B88 ; case 265 + b ov29_02331DDC ; case 266 + b ov29_02330D48 ; case 267 + b ov29_02330AFC ; case 268 + b ov29_02331DA4 ; case 269 + b ov29_02330328 ; case 270 + b _023307B4 ; case 271 + b ov29_02331204 ; case 272 + b ov29_023314DC ; case 273 + b _02330A00 ; case 274 + b ov29_0233070C ; case 275 + b ov29_02330894 ; case 276 + b ov29_02330F40 ; case 277 + b ov29_02331A08 ; case 278 + b ov29_023304D8 ; case 279 + b ov29_023304D8 ; case 280 + b ov29_02330A54 ; case 281 + b ov29_02331CE0 ; case 282 + b ov29_02330648 ; case 283 + b ov29_02330AFC ; case 284 + b _02330134 ; case 285 + b ov29_02331F88 ; case 286 + b ov29_02331100 ; case 287 + b ov29_02330B34 ; case 288 + b ov29_02330798 ; case 289 + b _02330134 ; case 290 + b ov29_02330468 ; case 291 + b _0233030C ; case 292 + b ov29_02331B20 ; case 293 + b ov29_02330EEC ; case 294 + b ov29_023313A8 ; case 295 + b ov29_02331450 ; case 296 + b _02330134 ; case 297 + b ov29_02331274 ; case 298 + b ov29_02330AA8 ; case 299 + b _02330134 ; case 300 + b ov29_023318F0 ; case 301 + b ov29_02330C4C ; case 302 + b _023307B4 ; case 303 + b ov29_023318B0 ; case 304 + b ov29_023318F0 ; case 305 + b _02330134 ; case 306 + b ov29_023312E4 ; case 307 + b _02330134 ; case 308 + b ov29_023306D4 ; case 309 + b ov29_02330840 ; case 310 + b _02330134 ; case 311 + b _02330134 ; case 312 + b ov29_02331B58 ; case 313 + b ov29_02331584 ; case 314 + b _02331D34 ; case 315 + b ov29_02331B04 ; case 316 + b ov29_02331878 ; case 317 + b ov29_02331020 ; case 318 + b ov29_02330BF8 ; case 319 + b ov29_02330DB8 ; case 320 + b _02330134 ; case 321 + b _02330134 ; case 322 + b _02330134 ; case 323 + b ov29_02331220 ; case 324 + b ov29_02330600 ; case 325 + b ov29_023308B0 ; case 326 + b ov29_023320BC ; case 327 + b ov29_02331FA4 ; case 328 + b ov29_0233138C ; case 329 + b ov29_02332030 ; case 330 + b ov01_023315F4 ; case 331 + b ov29_023305A4 ; case 332 + b _02330BA4 ; case 333 + b ov29_02331F6C ; case 334 + b ov29_023306F0 ; case 335 + b _0233037C ; case 336 + b ov29_02331FF8 ; case 337 + b ov29_02330F5C ; case 338 + b _023313C4 ; case 339 + b _02331154 ; case 340 + b ov29_02330920 ; case 341 + b ov29_0233077C ; case 342 + b ov29_02330B6C ; case 343 + b ov29_02330328 ; case 344 + b ov29_02330328 ; case 345 + b _02330134 ; case 346 + b _02330134 ; case 347 + b ov29_0233146C ; case 348 + b ov29_023316D4 ; case 349 + b _02330134 ; case 350 + b ov29_02330D10 ; case 351 + b ov29_023302D4 ; case 352 + b _02330134 ; case 353 + b ov29_02330DF0 ; case 354 + b ov29_02330150 ; case 355 + b _023326C8 ; case 356 + b ov29_02331170 ; case 357 + b ov29_02331170 ; case 358 + b ov29_02331170 ; case 359 + b _02330134 ; case 360 + b _02331CC4 ; case 361 + b _02330134 ; case 362 + b ov29_02331A40 ; case 363 + b ov01_023310E4 ; case 364 + b ov29_02331DC0 ; case 365 + b _02330134 ; case 366 + b ov29_023315D8 ; case 367 + b ov29_02330AFC ; case 368 + b ov29_02331648 ; case 369 + b ov29_02331D6C ; case 370 + b ov29_02330EB4 ; case 371 + b ov29_0233111C ; case 372 + b ov29_02331610 ; case 373 + b ov29_02331840 ; case 374 + b ov29_02331D88 ; case 375 + b ov29_02332084 ; case 376 + b ov29_023320A0 ; case 377 + b ov29_02331F34 ; case 378 + b ov29_02331DDC ; case 379 + b ov29_023318B0 ; case 380 + b ov29_02331418 ; case 381 + b _02330A00 ; case 382 + b ov29_023315A0 ; case 383 + b ov29_02332014 ; case 384 + b ov29_02331E30 ; case 385 + b ov29_023310AC ; case 386 + b ov29_023313FC ; case 387 + b ov29_02331664 ; case 388 + b ov29_023317D0 ; case 389 + b ov29_02331DF8 ; case 390 + b ov29_02331AE8 ; case 391 + b ov29_0233044C ; case 392 + b ov29_0233204C ; case 393 + b ov29_023312C8 ; case 394 + b ov29_02331E14 ; case 395 + b ov29_02331894 ; case 396 + b ov29_023320F4 ; case 397 + b ov29_02331C54 ; case 398 + b ov29_02331BE4 ; case 399 + b ov29_0233162C ; case 400 + b ov29_0233118C ; case 401 + b _023326C8 ; case 402 + b ov29_02331E84 ; case 403 + b _023326C8 ; case 404 + b _023326C8 ; case 405 + b _023320D8 ; case 406 + b ov29_02331D18 ; case 407 + b _023326C8 ; case 408 + b ov29_02331680 ; case 409 + b ov29_023317EC ; case 410 + b _023326C8 ; case 411 + b ov29_02331808 ; case 412 + b _023326C8 ; case 413 + b _023326C8 ; case 414 + b _023326C8 ; case 415 + b _023326C8 ; case 416 + b _023326C8 ; case 417 + b _023326C8 ; case 418 + b _023326C8 ; case 419 + b _023326C8 ; case 420 + b ov29_02332674 ; case 421 + b ov29_02332690 ; case 422 + b ov29_023326AC ; case 423 + b ov29_02331648 ; case 424 + b ov29_02331840 ; case 425 + b ov29_0233111C ; case 426 + b ov29_02332658 ; case 427 + b ov29_02330360 ; case 428 + b ov29_02331DDC ; case 429 + b ov29_02332110 ; case 430 + b _023307EC ; case 431 + b _02330134 ; case 432 + b _02330134 ; case 433 + b ov29_0233212C ; case 434 + b _02330134 ; case 435 + b _023307EC ; case 436 + b ov29_0233069C ; case 437 + b ov29_02332148 ; case 438 + b ov29_02332164 ; case 439 + b ov29_02332180 ; case 440 + b ov29_02330DF0 ; case 441 + b _023307EC ; case 442 + b ov29_023306F0 ; case 443 + b ov29_0233111C ; case 444 + b _02330134 ; case 445 + b ov29_023306B8 ; case 446 + b ov29_0233219C ; case 447 + b ov29_023321B8 ; case 448 + b ov29_023321D4 ; case 449 + b ov29_023321F0 ; case 450 + b _02330134 ; case 451 + b ov29_0233220C ; case 452 + b ov29_02330344 ; case 453 + b ov29_023306F0 ; case 454 + b ov29_02330344 ; case 455 + b ov29_02332228 ; case 456 + b ov29_02332244 ; case 457 + b ov29_023319D0 ; case 458 + b ov29_02330728 ; case 459 + b _02330134 ; case 460 + b ov29_02332260 ; case 461 + b _02330134 ; case 462 + b _02330134 ; case 463 + b ov29_0233227C ; case 464 + b _023326C8 ; case 465 + b ov29_02332298 ; case 466 + b _02330134 ; case 467 + b ov29_023305D0 ; case 468 + b ov29_023322D0 ; case 469 + b _02330134 ; case 470 + b ov29_023322EC ; case 471 + b _02331138 ; case 472 + b _023307EC ; case 473 + b ov29_02332458 ; case 474 + b ov29_02332308 ; case 475 + b _02330134 ; case 476 + b ov29_02332324 ; case 477 + b ov29_02332340 ; case 478 + b _02330134 ; case 479 + b ov29_0233235C ; case 480 + b _02330134 ; case 481 + b ov29_023310C8 ; case 482 + b _02330974 ; case 483 + b ov29_02330520 ; case 484 + b ov29_02330728 ; case 485 + b _02330134 ; case 486 + b _02330134 ; case 487 + b ov29_023322D0 ; case 488 + b ov29_02332378 ; case 489 + b ov29_02332394 ; case 490 + b _02330134 ; case 491 + b ov29_023323B0 ; case 492 + b ov29_023323CC ; case 493 + b ov29_02330344 ; case 494 + b ov29_02330728 ; case 495 + b ov29_023323E8 ; case 496 + b ov29_02332420 ; case 497 + b _023307EC ; case 498 + b ov29_02332404 ; case 499 + b ov29_02330DB8 ; case 500 + b ov29_02330CA0 ; case 501 + b _02330134 ; case 502 + b _023320D8 ; case 503 + b ov29_0233243C ; case 504 + b ov29_02332458 ; case 505 + b ov29_02332474 ; case 506 + b _02330958 ; case 507 + b _02330134 ; case 508 + b ov29_02332490 ; case 509 + b _02330134 ; case 510 + b _02330134 ; case 511 + b _02330134 ; case 512 + b ov29_023324AC ; case 513 + b ov29_023324C8 ; case 514 + b _02330134 ; case 515 + b ov29_023324E4 ; case 516 + b ov29_02332500 ; case 517 + b ov29_02330DF0 ; case 518 + b _023302F0 ; case 519 + b ov29_0233251C ; case 520 + b _02330958 ; case 521 + b ov29_023322B4 ; case 522 + b _02330134 ; case 523 + b ov29_02330468 ; case 524 + b ov29_023320BC ; case 525 + b ov29_02332538 ; case 526 + b ov29_02330CA0 ; case 527 + b ov29_02332554 ; case 528 + b ov29_02332394 ; case 529 + b ov29_0233054C ; case 530 + b ov29_02332570 ; case 531 + b ov29_0233258C ; case 532 + b ov29_023325A8 ; case 533 + b ov29_023325C4 ; case 534 + b _02331154 ; case 535 + b ov29_02330578 ; case 536 + b ov29_023325E0 ; case 537 + b ov29_023325FC ; case 538 + b _02330134 ; case 539 + b ov29_02332620 ; case 540 + b ov29_023306B8 ; case 541 + b ov29_0233263C ; case 542 +_02330134: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325DC0 + mov sl, r0 + b _023326CC + arm_func_end ExecuteMoveEffect + + arm_func_start ov29_02330150 +ov29_02330150: ; 0x02330150 + mov r0, sb + mov r1, r8 + bl GetMoveTypeForMonster + mov sl, r0 + mov r0, sb + mov r1, r8 + bl GetMovePower + str r0, [sp, #0x88] + mov r0, r8 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0xdc + str r1, [sp, #4] + mov r0, #0x80 + str r0, [sp, #8] + mov r2, sl + ldrh sl, [r8, #4] + ldr r3, [sp, #0x88] + mov r1, #1 + str sl, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, sb + mov r1, r4 + bl CalcDamage + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + str r0, [sp] + mov r0, sb + mov r1, r4 + mov r2, r8 + add r3, sp, #0xdc + bl CalcDamageFinal + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and sl, r0, #0xff + b _023326CC +_023301E8: + mov r0, sb + mov r1, r8 + bl GetMoveTypeForMonster + mov sl, r0 + mov r0, sb + mov r1, r8 + bl GetMovePower + str r0, [sp, #0x8c] + mov r0, r8 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0xc8 + str r1, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + mov r2, sl + ldrh sl, [r8, #4] + ldr r3, [sp, #0x8c] + mov r1, #1 + str sl, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, sb + mov r1, r4 + bl CalcDamage + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + str r0, [sp] + mov r0, sb + mov r1, r4 + mov r2, r8 + add r3, sp, #0xc8 + bl CalcDamageFinal + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and sl, r0, #0xff + b _023326CC + arm_func_end ov29_02330150 + + arm_func_start ov29_02330280 +ov29_02330280: ; 0x02330280 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328F94 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330280 + + arm_func_start ov29_0233029C +ov29_0233029C: ; 0x0233029C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328074 + mov sl, r0 + b _023326CC +_023302B8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326E20 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233029C + + arm_func_start ov29_023302D4 +ov29_023302D4: ; 0x023302D4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C1A4 + mov sl, r0 + b _023326CC +_023302F0: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326CC8 + mov sl, r0 + b _023326CC +_0233030C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326D50 + mov sl, r0 + b _023326CC + arm_func_end ov29_023302D4 + + arm_func_start ov29_02330328 +ov29_02330328: ; 0x02330328 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327AF4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330328 + + arm_func_start ov29_02330344 +ov29_02330344: ; 0x02330344 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A500 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330344 + + arm_func_start ov29_02330360 +ov29_02330360: ; 0x02330360 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023268BC + mov sl, r0 + b _023326CC +_0233037C: + mov r0, sb + mov r1, r8 + bl GetMoveTypeForMonster + mov sl, r0 + mov r0, sb + mov r1, r8 + bl GetMovePower + str r0, [sp, #0x90] + mov r0, r8 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0xb4 + str r1, [sp, #4] + mov r0, #0x100 + str r0, [sp, #8] + mov r2, sl + ldrh sl, [r8, #4] + ldr r3, [sp, #0x90] + mov r1, #1 + str sl, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, sb + mov r1, r4 + bl CalcDamage + mov r0, r8 + mov r1, r7 + bl ov29_02324E44 + str r0, [sp] + mov r0, sb + mov r1, r4 + mov r2, r8 + add r3, sp, #0xb4 + bl CalcDamageFinal + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and sl, r0, #0xff + b _023326CC + arm_func_end ov29_02330360 + + arm_func_start ov29_02330414 +ov29_02330414: ; 0x02330414 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023283A4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330414 + + arm_func_start ov29_02330430 +ov29_02330430: ; 0x02330430 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328B88 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330430 + + arm_func_start ov29_0233044C +ov29_0233044C: ; 0x0233044C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CDA4 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233044C + + arm_func_start ov29_02330468 +ov29_02330468: ; 0x02330468 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B5E8 + mov sl, r0 + b _023326CC +_02330484: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326750 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330468 + + arm_func_start ov29_023304A0 +ov29_023304A0: ; 0x023304A0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A148 + mov sl, r0 + b _023326CC + arm_func_end ov29_023304A0 + + arm_func_start ov29_023304BC +ov29_023304BC: ; 0x023304BC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327744 + mov sl, r0 + b _023326CC + arm_func_end ov29_023304BC + + arm_func_start ov29_023304D8 +ov29_023304D8: ; 0x023304D8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329904 + mov sl, r0 + b _023326CC + arm_func_end ov29_023304D8 + + arm_func_start ov29_023304F4 +ov29_023304F4: ; 0x023304F4 + str r1, [sp] + ldr r0, [sp, #0x28] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023304F4 + + arm_func_start ov29_02330520 +ov29_02330520: ; 0x02330520 + str r1, [sp] + ldr r0, [sp, #0x24] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330520 + + arm_func_start ov29_0233054C +ov29_0233054C: ; 0x0233054C + str r1, [sp] + ldr r0, [sp, #0x20] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233054C + + arm_func_start ov29_02330578 +ov29_02330578: ; 0x02330578 + str r1, [sp] + ldr r0, [sp, #0x1c] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330578 + + arm_func_start ov29_023305A4 +ov29_023305A4: ; 0x023305A4 + str r1, [sp] + ldr r0, [sp, #0x28] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023305A4 + + arm_func_start ov29_023305D0 +ov29_023305D0: ; 0x023305D0 + mov r0, #2 + str r0, [sp] + ldr r0, [sp, #0x18] + add r3, sp, #0x9c + stmib sp, {r0, r7} + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_02327CD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023305D0 + + arm_func_start ov29_02330600 +ov29_02330600: ; 0x02330600 + add r3, sp, #0xa0 + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + str r7, [sp] + bl ov29_0232B940 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330600 + + arm_func_start ov29_02330624 +ov29_02330624: ; 0x02330624 + add r3, sp, #0xa0 + ldr r3, [r3] + mov r0, sb + mov r1, r4 + mov r2, r8 + str r7, [sp] + bl ov29_0232A5AC + mov sl, r0 + b _023326CC + arm_func_end ov29_02330624 + + arm_func_start ov29_02330648 +ov29_02330648: ; 0x02330648 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B494 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330648 + + arm_func_start ov29_02330664 +ov29_02330664: ; 0x02330664 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023290CC + mov sl, r0 + b _023326CC + arm_func_end ov29_02330664 + + arm_func_start ov29_02330680 +ov29_02330680: ; 0x02330680 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232728C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330680 + + arm_func_start ov29_0233069C +ov29_0233069C: ; 0x0233069C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327804 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233069C + + arm_func_start ov29_023306B8 +ov29_023306B8: ; 0x023306B8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327C08 + mov sl, r0 + b _023326CC + arm_func_end ov29_023306B8 + + arm_func_start ov29_023306D4 +ov29_023306D4: ; 0x023306D4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B820 + mov sl, r0 + b _023326CC + arm_func_end ov29_023306D4 + + arm_func_start ov29_023306F0 +ov29_023306F0: ; 0x023306F0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C0F4 + mov sl, r0 + b _023326CC + arm_func_end ov29_023306F0 + + arm_func_start ov29_0233070C +ov29_0233070C: ; 0x0233070C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B164 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233070C + + arm_func_start ov29_02330728 +ov29_02330728: ; 0x02330728 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328A74 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330728 + + arm_func_start ov29_02330744 +ov29_02330744: ; 0x02330744 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328B00 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330744 + + arm_func_start ov29_02330760 +ov29_02330760: ; 0x02330760 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329710 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330760 + + arm_func_start ov29_0233077C +ov29_0233077C: ; 0x0233077C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232816C + mov sl, r0 + b _023326CC + arm_func_end ov29_0233077C + + arm_func_start ov29_02330798 +ov29_02330798: ; 0x02330798 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023284BC + mov sl, r0 + b _023326CC +_023307B4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023270B4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330798 + + arm_func_start ov29_023307D0 +ov29_023307D0: ; 0x023307D0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023288C4 + mov sl, r0 + b _023326CC +_023307EC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326670 + mov sl, r0 + b _023326CC +_02330808: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327034 + mov sl, r0 + b _023326CC + arm_func_end ov29_023307D0 + + arm_func_start ov29_02330824 +ov29_02330824: ; 0x02330824 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328248 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330824 + + arm_func_start ov29_02330840 +ov29_02330840: ; 0x02330840 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AEF0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330840 + + arm_func_start ov29_0233085C +ov29_0233085C: ; 0x0233085C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329C94 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233085C + + arm_func_start ov29_02330878 +ov29_02330878: ; 0x02330878 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327B5C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330878 + + arm_func_start ov29_02330894 +ov29_02330894: ; 0x02330894 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B1E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330894 + + arm_func_start ov29_023308B0 +ov29_023308B0: ; 0x023308B0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B9D0 + mov sl, r0 + b _023326CC +_023308CC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326E80 + mov sl, r0 + b _023326CC + arm_func_end ov29_023308B0 + + arm_func_start ov29_023308E8 +ov29_023308E8: ; 0x023308E8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A2BC + mov sl, r0 + b _023326CC + arm_func_end ov29_023308E8 + + arm_func_start ov29_02330904 +ov29_02330904: ; 0x02330904 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328D44 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330904 + + arm_func_start ov29_02330920 +ov29_02330920: ; 0x02330920 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BF88 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330920 + + arm_func_start ov29_0233093C +ov29_0233093C: ; 0x0233093C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328230 + mov sl, r0 + b _023326CC +_02330958: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327120 + mov sl, r0 + b _023326CC +_02330974: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325F00 + mov sl, r0 + b _023326CC +_02330990: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325EC4 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233093C + + arm_func_start ov29_023309AC +ov29_023309AC: ; 0x023309AC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328328 + mov sl, r0 + b _023326CC + arm_func_end ov29_023309AC + + arm_func_start ov29_023309C8 +ov29_023309C8: ; 0x023309C8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329854 + mov sl, r0 + b _023326CC + arm_func_end ov29_023309C8 + + arm_func_start ov29_023309E4 +ov29_023309E4: ; 0x023309E4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329438 + mov sl, r0 + b _023326CC +_02330A00: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023293CC + mov sl, r0 + b _023326CC + arm_func_end ov29_023309E4 + + arm_func_start ov29_02330A1C +ov29_02330A1C: ; 0x02330A1C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329868 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330A1C + + arm_func_start ov29_02330A38 +ov29_02330A38: ; 0x02330A38 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232977C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330A38 + + arm_func_start ov29_02330A54 +ov29_02330A54: ; 0x02330A54 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B434 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330A54 + + arm_func_start ov29_02330A70 +ov29_02330A70: ; 0x02330A70 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023297F0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330A70 + + arm_func_start ov29_02330A8C +ov29_02330A8C: ; 0x02330A8C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A524 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330A8C + + arm_func_start ov29_02330AA8 +ov29_02330AA8: ; 0x02330AA8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327368 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330AA8 + + arm_func_start ov29_02330AC4 +ov29_02330AC4: ; 0x02330AC4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A688 + mov sl, r0 + b _023326CC +_02330AE0: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023267D8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330AC4 + + arm_func_start ov29_02330AFC +ov29_02330AFC: ; 0x02330AFC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B500 + mov sl, r0 + b _023326CC +_02330B18: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232631C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330AFC + + arm_func_start ov29_02330B34 +ov29_02330B34: ; 0x02330B34 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B5C8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330B34 + + arm_func_start ov29_02330B50 +ov29_02330B50: ; 0x02330B50 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232923C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330B50 + + arm_func_start ov29_02330B6C +ov29_02330B6C: ; 0x02330B6C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C028 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330B6C + + arm_func_start ov29_02330B88 +ov29_02330B88: ; 0x02330B88 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AF5C + mov sl, r0 + b _023326CC +_02330BA4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326E98 + mov sl, r0 + b _023326CC +_02330BC0: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326220 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330B88 + + arm_func_start ov29_02330BDC +ov29_02330BDC: ; 0x02330BDC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329534 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330BDC + + arm_func_start ov29_02330BF8 +ov29_02330BF8: ; 0x02330BF8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B8E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330BF8 + + arm_func_start ov29_02330C14 +ov29_02330C14: ; 0x02330C14 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328AE0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330C14 + + arm_func_start ov29_02330C30 +ov29_02330C30: ; 0x02330C30 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A058 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330C30 + + arm_func_start ov29_02330C4C +ov29_02330C4C: ; 0x02330C4C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B7E0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330C4C + + arm_func_start ov29_02330C68 +ov29_02330C68: ; 0x02330C68 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023296D8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330C68 + + arm_func_start ov29_02330C84 +ov29_02330C84: ; 0x02330C84 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023279E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330C84 + + arm_func_start ov29_02330CA0 +ov29_02330CA0: ; 0x02330CA0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329000 + mov sl, r0 + b _023326CC +_02330CBC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326A74 + mov sl, r0 + b _023326CC +_02330CD8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326990 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330CA0 + + arm_func_start ov29_02330CF4 +ov29_02330CF4: ; 0x02330CF4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327D60 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330CF4 + + arm_func_start ov29_02330D10 +ov29_02330D10: ; 0x02330D10 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327BF0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330D10 + + arm_func_start ov29_02330D2C +ov29_02330D2C: ; 0x02330D2C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A118 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330D2C + + arm_func_start ov29_02330D48 +ov29_02330D48: ; 0x02330D48 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AFF0 + mov sl, r0 + b _023326CC +_02330D64: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326648 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330D48 + + arm_func_start ov29_02330D80 +ov29_02330D80: ; 0x02330D80 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329258 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330D80 + + arm_func_start ov29_02330D9C +ov29_02330D9C: ; 0x02330D9C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov01_0232A078 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330D9C + + arm_func_start ov29_02330DB8 +ov29_02330DB8: ; 0x02330DB8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327458 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330DB8 + + arm_func_start ov29_02330DD4 +ov29_02330DD4: ; 0x02330DD4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328930 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330DD4 + + arm_func_start ov29_02330DF0 +ov29_02330DF0: ; 0x02330DF0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl DealDamageWithRecoil + mov sl, r0 + b _023326CC + arm_func_end ov29_02330DF0 + + arm_func_start ov29_02330E0C +ov29_02330E0C: ; 0x02330E0C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328538 + mov sl, r0 + b _023326CC +_02330E28: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326568 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330E0C + + arm_func_start ov29_02330E44 +ov29_02330E44: ; 0x02330E44 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329F78 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330E44 + + arm_func_start ov29_02330E60 +ov29_02330E60: ; 0x02330E60 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232915C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330E60 + + arm_func_start ov29_02330E7C +ov29_02330E7C: ; 0x02330E7C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328C74 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330E7C + + arm_func_start ov29_02330E98 +ov29_02330E98: ; 0x02330E98 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327A28 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330E98 + + arm_func_start ov29_02330EB4 +ov29_02330EB4: ; 0x02330EB4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA14 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330EB4 + + arm_func_start ov29_02330ED0 +ov29_02330ED0: ; 0x02330ED0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232776C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330ED0 + + arm_func_start ov29_02330EEC +ov29_02330EEC: ; 0x02330EEC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B6B8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330EEC + + arm_func_start ov29_02330F08 +ov29_02330F08: ; 0x02330F08 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327DD0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F08 + + arm_func_start ov29_02330F24 +ov29_02330F24: ; 0x02330F24 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329898 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F24 + + arm_func_start ov29_02330F40 +ov29_02330F40: ; 0x02330F40 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B26C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F40 + + arm_func_start ov29_02330F5C +ov29_02330F5C: ; 0x02330F5C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BF78 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F5C + + arm_func_start ov29_02330F78 +ov29_02330F78: ; 0x02330F78 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023289F8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F78 + + arm_func_start ov29_02330F94 +ov29_02330F94: ; 0x02330F94 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328528 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330F94 + + arm_func_start ov29_02330FB0 +ov29_02330FB0: ; 0x02330FB0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328394 + mov sl, r0 + b _023326CC + arm_func_end ov29_02330FB0 + + arm_func_start ov29_02330FCC +ov29_02330FCC: ; 0x02330FCC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AD08 + mov sl, r0 + b _023326CC +_02330FE8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325E64 + mov sl, r0 + b _023326CC +_02331004: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326A0C + mov sl, r0 + b _023326CC + arm_func_end ov29_02330FCC + + arm_func_start ov29_02331020 +ov29_02331020: ; 0x02331020 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023291F4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331020 + + arm_func_start ov29_0233103C +ov29_0233103C: ; 0x0233103C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023278E8 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233103C + + arm_func_start ov29_02331058 +ov29_02331058: ; 0x02331058 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023293F8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331058 + + arm_func_start ov29_02331074 +ov29_02331074: ; 0x02331074 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A414 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331074 + + arm_func_start ov29_02331090 +ov29_02331090: ; 0x02331090 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328030 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331090 + + arm_func_start ov29_023310AC +ov29_023310AC: ; 0x023310AC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C82C + mov sl, r0 + b _023326CC + arm_func_end ov29_023310AC + + arm_func_start ov29_023310C8 +ov29_023310C8: ; 0x023310C8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329D50 + mov sl, r0 + b _023326CC + arm_func_end ov29_023310C8 + + arm_func_start ov29_023310E4 +ov29_023310E4: ; 0x023310E4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C310 + mov sl, r0 + b _023326CC + arm_func_end ov29_023310E4 + + arm_func_start ov29_02331100 +ov29_02331100: ; 0x02331100 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A04C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331100 + + arm_func_start ov29_0233111C +ov29_0233111C: ; 0x0233111C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327928 + mov sl, r0 + b _023326CC +_02331138: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326CB4 + mov sl, r0 + b _023326CC +_02331154: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326F48 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233111C + + arm_func_start ov29_02331170 +ov29_02331170: ; 0x02331170 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326F8C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331170 + + arm_func_start ov29_0233118C +ov29_0233118C: ; 0x0233118C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D0F0 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233118C + + arm_func_start ov29_023311A8 +ov29_023311A8: ; 0x023311A8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A328 + mov sl, r0 + b _023326CC + arm_func_end ov29_023311A8 + + arm_func_start ov29_023311C4 +ov29_023311C4: ; 0x023311C4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A4E8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023311C4 + + arm_func_start ov29_023311E0 +ov29_023311E0: ; 0x023311E0 + mov r0, #0 + str r0, [sp] + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329B68 + mov sl, r0 + b _023326CC + arm_func_end ov29_023311E0 + + arm_func_start ov29_02331204 +ov29_02331204: ; 0x02331204 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B118 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331204 + + arm_func_start ov29_02331220 +ov29_02331220: ; 0x02331220 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B928 + mov sl, r0 + b _023326CC +_0233123C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326EB8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331220 + + arm_func_start ov29_02331258 +ov29_02331258: ; 0x02331258 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023273CC + mov sl, r0 + b _023326CC + arm_func_end ov29_02331258 + + arm_func_start ov29_02331274 +ov29_02331274: ; 0x02331274 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B7C0 + mov sl, r0 + b _023326CC +_02331290: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325F3C + mov sl, r0 + b _023326CC +_023312AC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325F74 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331274 + + arm_func_start ov29_023312C8 +ov29_023312C8: ; 0x023312C8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CE50 + mov sl, r0 + b _023326CC + arm_func_end ov29_023312C8 + + arm_func_start ov29_023312E4 +ov29_023312E4: ; 0x023312E4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329FB4 + mov sl, r0 + b _023326CC +_02331300: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325DE4 + mov sl, r0 + b _023326CC + arm_func_end ov29_023312E4 + + arm_func_start ov29_0233131C +ov29_0233131C: ; 0x0233131C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A27C + mov sl, r0 + b _023326CC +_02331338: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326B24 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233131C + + arm_func_start ov29_02331354 +ov29_02331354: ; 0x02331354 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A480 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331354 + + arm_func_start ov29_02331370 +ov29_02331370: ; 0x02331370 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327C74 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331370 + + arm_func_start ov29_0233138C +ov29_0233138C: ; 0x0233138C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BC34 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233138C + + arm_func_start ov29_023313A8 +ov29_023313A8: ; 0x023313A8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B6C8 + mov sl, r0 + b _023326CC +_023313C4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326188 + mov sl, r0 + b _023326CC + arm_func_end ov29_023313A8 + + arm_func_start ov29_023313E0 +ov29_023313E0: ; 0x023313E0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327758 + mov sl, r0 + b _023326CC + arm_func_end ov29_023313E0 + + arm_func_start ov29_023313FC +ov29_023313FC: ; 0x023313FC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C83C + mov sl, r0 + b _023326CC + arm_func_end ov29_023313FC + + arm_func_start ov29_02331418 +ov29_02331418: ; 0x02331418 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C6B4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331418 + + arm_func_start ov29_02331434 +ov29_02331434: ; 0x02331434 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232764C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331434 + + arm_func_start ov29_02331450 +ov29_02331450: ; 0x02331450 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B738 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331450 + + arm_func_start ov29_0233146C +ov29_0233146C: ; 0x0233146C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C064 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233146C + + arm_func_start ov29_02331488 +ov29_02331488: ; 0x02331488 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A2AC + mov sl, r0 + b _023326CC +_023314A4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326AE8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331488 + + arm_func_start ov29_023314C0 +ov29_023314C0: ; 0x023314C0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329FE0 + mov sl, r0 + b _023326CC + arm_func_end ov29_023314C0 + + arm_func_start ov29_023314DC +ov29_023314DC: ; 0x023314DC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328A54 + mov sl, r0 + b _023326CC +_023314F8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232692C + mov sl, r0 + b _023326CC + arm_func_end ov29_023314DC + + arm_func_start ov29_02331514 +ov29_02331514: ; 0x02331514 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329880 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331514 + + arm_func_start ov29_02331530 +ov29_02331530: ; 0x02331530 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023276B4 + mov sl, r0 + b _023326CC +_0233154C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326408 + mov sl, r0 + b _023326CC +_02331568: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326264 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331530 + + arm_func_start ov29_02331584 +ov29_02331584: ; 0x02331584 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B8B0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331584 + + arm_func_start ov29_023315A0 +ov29_023315A0: ; 0x023315A0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C6F0 + mov sl, r0 + b _023326CC +_023315BC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232718C + mov sl, r0 + b _023326CC + arm_func_end ov29_023315A0 + + arm_func_start ov29_023315D8 +ov29_023315D8: ; 0x023315D8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C538 + mov sl, r0 + b _023326CC + arm_func_end ov29_023315D8 + + arm_func_start ov29_023315F4 +ov29_023315F4: ; 0x023315F4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BCC4 + mov sl, r0 + b _023326CC + arm_func_end ov29_023315F4 + + arm_func_start ov29_02331610 +ov29_02331610: ; 0x02331610 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA2C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331610 + + arm_func_start ov29_0233162C +ov29_0233162C: ; 0x0233162C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CF84 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233162C + + arm_func_start ov29_02331648 +ov29_02331648: ; 0x02331648 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023296F8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331648 + + arm_func_start ov29_02331664 +ov29_02331664: ; 0x02331664 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CB08 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331664 + + arm_func_start ov29_02331680 +ov29_02331680: ; 0x02331680 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D1FC + mov sl, r0 + b _023326CC + arm_func_end ov29_02331680 + + arm_func_start ov29_0233169C +ov29_0233169C: ; 0x0233169C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023272F8 + mov sl, r0 + b _023326CC +_023316B8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326E60 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233169C + + arm_func_start ov29_023316D4 +ov29_023316D4: ; 0x023316D4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023279AC + mov sl, r0 + b _023326CC +_023316F0: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325FB4 + mov sl, r0 + b _023326CC + arm_func_end ov29_023316D4 + + arm_func_start ov29_0233170C +ov29_0233170C: ; 0x0233170C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328DE4 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233170C + + arm_func_start ov29_02331728 +ov29_02331728: ; 0x02331728 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329A9C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331728 + + arm_func_start ov29_02331744 +ov29_02331744: ; 0x02331744 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328ECC + mov sl, r0 + b _023326CC +_02331760: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02325FC4 + mov sl, r0 + b _023326CC +_0233177C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326088 + mov sl, r0 + b _023326CC +_02331798: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326E04 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331744 + + arm_func_start ov29_023317B4 +ov29_023317B4: ; 0x023317B4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A6EC + mov sl, r0 + b _023326CC + arm_func_end ov29_023317B4 + + arm_func_start ov29_023317D0 +ov29_023317D0: ; 0x023317D0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CB18 + mov sl, r0 + b _023326CC + arm_func_end ov29_023317D0 + + arm_func_start ov29_023317EC +ov29_023317EC: ; 0x023317EC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D20C + mov sl, r0 + b _023326CC + arm_func_end ov29_023317EC + + arm_func_start ov29_02331808 +ov29_02331808: ; 0x02331808 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D21C + mov sl, r0 + b _023326CC +_02331824: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326CA4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331808 + + arm_func_start ov29_02331840 +ov29_02331840: ; 0x02331840 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA3C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331840 + + arm_func_start ov29_0233185C +ov29_0233185C: ; 0x0233185C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A3FC + mov sl, r0 + b _023326CC + arm_func_end ov29_0233185C + + arm_func_start ov29_02331878 +ov29_02331878: ; 0x02331878 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AC44 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331878 + + arm_func_start ov29_02331894 +ov29_02331894: ; 0x02331894 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CE94 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331894 + + arm_func_start ov29_023318B0 +ov29_023318B0: ; 0x023318B0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B800 + mov sl, r0 + b _023326CC + arm_func_end ov29_023318B0 + + arm_func_start ov29_023318CC +ov29_023318CC: ; 0x023318CC + mov r0, #0 + str r0, [sp] + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329970 + mov sl, r0 + b _023326CC + arm_func_end ov29_023318CC + + arm_func_start ov29_023318F0 +ov29_023318F0: ; 0x023318F0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B7D0 + mov sl, r0 + b _023326CC + arm_func_end ov29_023318F0 + + arm_func_start ov29_0233190C +ov29_0233190C: ; 0x0233190C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023293E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233190C + + arm_func_start ov29_02331928 +ov29_02331928: ; 0x02331928 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023276E8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331928 + + arm_func_start ov29_02331944 +ov29_02331944: ; 0x02331944 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327598 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331944 + + arm_func_start ov29_02331960 +ov29_02331960: ; 0x02331960 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023281D8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331960 + + arm_func_start ov29_0233197C +ov29_0233197C: ; 0x0233197C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328E74 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233197C + + arm_func_start ov29_02331998 +ov29_02331998: ; 0x02331998 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023282C8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331998 + + arm_func_start ov29_023319B4 +ov29_023319B4: ; 0x023319B4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232724C + mov sl, r0 + b _023326CC + arm_func_end ov29_023319B4 + + arm_func_start ov29_023319D0 +ov29_023319D0: ; 0x023319D0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023277B8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023319D0 + + arm_func_start ov29_023319EC +ov29_023319EC: ; 0x023319EC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327DE0 + mov sl, r0 + b _023326CC + arm_func_end ov29_023319EC + + arm_func_start ov29_02331A08 +ov29_02331A08: ; 0x02331A08 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B368 + mov sl, r0 + b _023326CC +_02331A24: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023268CC + mov sl, r0 + b _023326CC + arm_func_end ov29_02331A08 + + arm_func_start ov29_02331A40 +ov29_02331A40: ; 0x02331A40 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C300 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331A40 + + arm_func_start ov29_02331A5C +ov29_02331A5C: ; 0x02331A5C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329074 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331A5C + + arm_func_start ov29_02331A78 +ov29_02331A78: ; 0x02331A78 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A640 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331A78 + + arm_func_start ov29_02331A94 +ov29_02331A94: ; 0x02331A94 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A490 + mov sl, r0 + b _023326CC +_02331AB0: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023260D0 + mov sl, r0 + b _023326CC +_02331ACC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232680C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331A94 + + arm_func_start ov29_02331AE8 +ov29_02331AE8: ; 0x02331AE8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CD90 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331AE8 + + arm_func_start ov29_02331B04 +ov29_02331B04: ; 0x02331B04 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B8D4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331B04 + + arm_func_start ov29_02331B20 +ov29_02331B20: ; 0x02331B20 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B6A4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331B20 + + arm_func_start ov29_02331B3C +ov29_02331B3C: ; 0x02331B3C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327940 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331B3C + + arm_func_start ov29_02331B58 +ov29_02331B58: ; 0x02331B58 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B8A0 + mov sl, r0 + b _023326CC +_02331B74: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232620C + mov sl, r0 + b _023326CC +_02331B90: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023266DC + mov sl, r0 + b _023326CC + arm_func_end ov29_02331B58 + + arm_func_start ov29_02331BAC +ov29_02331BAC: ; 0x02331BAC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A220 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331BAC + + arm_func_start ov29_02331BC8 +ov29_02331BC8: ; 0x02331BC8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A340 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331BC8 + + arm_func_start ov29_02331BE4 +ov29_02331BE4: ; 0x02331BE4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CF74 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331BE4 + + arm_func_start ov29_02331C00 +ov29_02331C00: ; 0x02331C00 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327BE0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331C00 + + arm_func_start ov29_02331C1C +ov29_02331C1C: ; 0x02331C1C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329674 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331C1C + + arm_func_start ov29_02331C38 +ov29_02331C38: ; 0x02331C38 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AC54 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331C38 + + arm_func_start ov29_02331C54 +ov29_02331C54: ; 0x02331C54 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CF54 + mov sl, r0 + b _023326CC +_02331C70: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023260A8 + mov sl, r0 + b _023326CC +_02331C8C: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023261A0 + mov sl, r0 + b _023326CC +_02331CA8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326550 + mov sl, r0 + b _023326CC +_02331CC4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C27C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331C54 + + arm_func_start ov29_02331CE0 +ov29_02331CE0: ; 0x02331CE0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B44C + mov sl, r0 + b _023326CC +_02331CFC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232612C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331CE0 + + arm_func_start ov29_02331D18 +ov29_02331D18: ; 0x02331D18 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D1EC + mov sl, r0 + b _023326CC +_02331D34: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326DD8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331D18 + + arm_func_start ov29_02331D50 +ov29_02331D50: ; 0x02331D50 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A8EC + mov sl, r0 + b _023326CC + arm_func_end ov29_02331D50 + + arm_func_start ov29_02331D6C +ov29_02331D6C: ; 0x02331D6C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C84C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331D6C + + arm_func_start ov29_02331D88 +ov29_02331D88: ; 0x02331D88 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C560 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331D88 + + arm_func_start ov29_02331DA4 +ov29_02331DA4: ; 0x02331DA4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B024 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331DA4 + + arm_func_start ov29_02331DC0 +ov29_02331DC0: ; 0x02331DC0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C524 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331DC0 + + arm_func_start ov29_02331DDC +ov29_02331DDC: ; 0x02331DDC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AFA0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331DDC + + arm_func_start ov29_02331DF8 +ov29_02331DF8: ; 0x02331DF8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CCC4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331DF8 + + arm_func_start ov29_02331E14 +ov29_02331E14: ; 0x02331E14 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CE7C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331E14 + + arm_func_start ov29_02331E30 +ov29_02331E30: ; 0x02331E30 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA70 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331E30 + + arm_func_start ov29_02331E4C +ov29_02331E4C: ; 0x02331E4C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232AD18 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331E4C + + arm_func_start ov29_02331E68 +ov29_02331E68: ; 0x02331E68 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328110 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331E68 + + arm_func_start ov29_02331E84 +ov29_02331E84: ; 0x02331E84 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D148 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331E84 + + arm_func_start ov29_02331EA0 +ov29_02331EA0: ; 0x02331EA0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328794 + movs sl, r0 + movne r0, #1 + strne r0, [sp, #0x58] + b _023326CC +_02331EC4: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326908 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331EA0 + + arm_func_start ov29_02331EE0 +ov29_02331EE0: ; 0x02331EE0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232A188 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331EE0 + + arm_func_start ov29_02331EFC +ov29_02331EFC: ; 0x02331EFC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02328698 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331EFC + + arm_func_start ov29_02331F18 +ov29_02331F18: ; 0x02331F18 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329554 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331F18 + + arm_func_start ov29_02331F34 +ov29_02331F34: ; 0x02331F34 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C578 + mov sl, r0 + b _023326CC +_02331F50: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02326BC0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331F34 + + arm_func_start ov29_02331F6C +ov29_02331F6C: ; 0x02331F6C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BE34 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331F6C + + arm_func_start ov29_02331F88 +ov29_02331F88: ; 0x02331F88 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232B518 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331F88 + + arm_func_start ov29_02331FA4 +ov29_02331FA4: ; 0x02331FA4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BB4C + mov sl, r0 + b _023326CC + arm_func_end ov29_02331FA4 + + arm_func_start ov29_02331FC0 +ov29_02331FC0: ; 0x02331FC0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02327E94 + mov sl, r0 + b _023326CC +_02331FDC: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_023265A4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331FC0 + + arm_func_start ov29_02331FF8 +ov29_02331FF8: ; 0x02331FF8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BE44 + mov sl, r0 + b _023326CC + arm_func_end ov29_02331FF8 + + arm_func_start ov29_02332014 +ov29_02332014: ; 0x02332014 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232C818 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332014 + + arm_func_start ov29_02332030 +ov29_02332030: ; 0x02332030 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BC64 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332030 + + arm_func_start ov29_0233204C +ov29_0233204C: ; 0x0233204C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CE40 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233204C + + arm_func_start ov29_02332068 +ov29_02332068: ; 0x02332068 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_02329664 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332068 + + arm_func_start ov29_02332084 +ov29_02332084: ; 0x02332084 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA4C + mov sl, r0 + b _023326CC + arm_func_end ov29_02332084 + + arm_func_start ov29_023320A0 +ov29_023320A0: ; 0x023320A0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CA60 + mov sl, r0 + b _023326CC + arm_func_end ov29_023320A0 + + arm_func_start ov29_023320BC +ov29_023320BC: ; 0x023320BC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232BA44 + mov sl, r0 + b _023326CC +_023320D8: + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D1DC + mov sl, r0 + b _023326CC + arm_func_end ov29_023320BC + + arm_func_start ov29_023320F4 +ov29_023320F4: ; 0x023320F4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232CEAC + mov sl, r0 + b _023326CC + arm_func_end ov29_023320F4 + + arm_func_start ov29_02332110 +ov29_02332110: ; 0x02332110 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D22C + mov sl, r0 + b _023326CC + arm_func_end ov29_02332110 + + arm_func_start ov29_0233212C +ov29_0233212C: ; 0x0233212C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D270 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233212C + + arm_func_start ov29_02332148 +ov29_02332148: ; 0x02332148 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D280 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332148 + + arm_func_start ov29_02332164 +ov29_02332164: ; 0x02332164 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D298 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332164 + + arm_func_start ov29_02332180 +ov29_02332180: ; 0x02332180 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D2E8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332180 + + arm_func_start ov29_0233219C +ov29_0233219C: ; 0x0233219C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D368 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233219C + + arm_func_start ov29_023321B8 +ov29_023321B8: ; 0x023321B8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D378 + mov sl, r0 + b _023326CC + arm_func_end ov29_023321B8 + + arm_func_start ov29_023321D4 +ov29_023321D4: ; 0x023321D4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D3D8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023321D4 + + arm_func_start ov29_023321F0 +ov29_023321F0: ; 0x023321F0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D400 + mov sl, r0 + b _023326CC + arm_func_end ov29_023321F0 + + arm_func_start ov29_0233220C +ov29_0233220C: ; 0x0233220C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D418 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233220C + + arm_func_start ov29_02332228 +ov29_02332228: ; 0x02332228 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D4AC + mov sl, r0 + b _023326CC + arm_func_end ov29_02332228 + + arm_func_start ov29_02332244 +ov29_02332244: ; 0x02332244 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D560 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332244 + + arm_func_start ov29_02332260 +ov29_02332260: ; 0x02332260 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D620 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332260 + + arm_func_start ov29_0233227C +ov29_0233227C: ; 0x0233227C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D6B0 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233227C + + arm_func_start ov29_02332298 +ov29_02332298: ; 0x02332298 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D6D0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332298 + + arm_func_start ov29_023322B4 +ov29_023322B4: ; 0x023322B4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E2B8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023322B4 + + arm_func_start ov29_023322D0 +ov29_023322D0: ; 0x023322D0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D6E8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023322D0 + + arm_func_start ov29_023322EC +ov29_023322EC: ; 0x023322EC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D738 + mov sl, r0 + b _023326CC + arm_func_end ov29_023322EC + + arm_func_start ov29_02332308 +ov29_02332308: ; 0x02332308 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D7F8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332308 + + arm_func_start ov29_02332324 +ov29_02332324: ; 0x02332324 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D860 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332324 + + arm_func_start ov29_02332340 +ov29_02332340: ; 0x02332340 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D8FC + mov sl, r0 + b _023326CC + arm_func_end ov29_02332340 + + arm_func_start ov29_0233235C +ov29_0233235C: ; 0x0233235C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D90C + mov sl, r0 + b _023326CC + arm_func_end ov29_0233235C + + arm_func_start ov29_02332378 +ov29_02332378: ; 0x02332378 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D97C + mov sl, r0 + b _023326CC + arm_func_end ov29_02332378 + + arm_func_start ov29_02332394 +ov29_02332394: ; 0x02332394 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232D9E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332394 + + arm_func_start ov29_023323B0 +ov29_023323B0: ; 0x023323B0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DAD0 + mov sl, r0 + b _023326CC + arm_func_end ov29_023323B0 + + arm_func_start ov29_023323CC +ov29_023323CC: ; 0x023323CC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DC54 + mov sl, r0 + b _023326CC + arm_func_end ov29_023323CC + + arm_func_start ov29_023323E8 +ov29_023323E8: ; 0x023323E8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DC64 + mov sl, r0 + b _023326CC + arm_func_end ov29_023323E8 + + arm_func_start ov29_02332404 +ov29_02332404: ; 0x02332404 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DD78 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332404 + + arm_func_start ov29_02332420 +ov29_02332420: ; 0x02332420 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DCD4 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332420 + + arm_func_start ov29_0233243C +ov29_0233243C: ; 0x0233243C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DDAC + mov sl, r0 + b _023326CC + arm_func_end ov29_0233243C + + arm_func_start ov29_02332458 +ov29_02332458: ; 0x02332458 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DE84 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332458 + + arm_func_start ov29_02332474 +ov29_02332474: ; 0x02332474 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DF38 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332474 + + arm_func_start ov29_02332490 +ov29_02332490: ; 0x02332490 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232DFC8 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332490 + + arm_func_start ov29_023324AC +ov29_023324AC: ; 0x023324AC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E084 + mov sl, r0 + b _023326CC + arm_func_end ov29_023324AC + + arm_func_start ov29_023324C8 +ov29_023324C8: ; 0x023324C8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E0E4 + mov sl, r0 + b _023326CC + arm_func_end ov29_023324C8 + + arm_func_start ov29_023324E4 +ov29_023324E4: ; 0x023324E4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E0F8 + mov sl, r0 + b _023326CC + arm_func_end ov29_023324E4 + + arm_func_start ov29_02332500 +ov29_02332500: ; 0x02332500 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E130 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332500 + + arm_func_start ov29_0233251C +ov29_0233251C: ; 0x0233251C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E274 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233251C + + arm_func_start ov29_02332538 +ov29_02332538: ; 0x02332538 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E368 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332538 + + arm_func_start ov29_02332554 +ov29_02332554: ; 0x02332554 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E3D0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332554 + + arm_func_start ov29_02332570 +ov29_02332570: ; 0x02332570 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E400 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332570 + + arm_func_start ov29_0233258C +ov29_0233258C: ; 0x0233258C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E48C + mov sl, r0 + b _023326CC + arm_func_end ov29_0233258C + + arm_func_start ov29_023325A8 +ov29_023325A8: ; 0x023325A8 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E4A0 + mov sl, r0 + b _023326CC + arm_func_end ov29_023325A8 + + arm_func_start ov29_023325C4 +ov29_023325C4: ; 0x023325C4 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E560 + mov sl, r0 + b _023326CC + arm_func_end ov29_023325C4 + + arm_func_start ov29_023325E0 +ov29_023325E0: ; 0x023325E0 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E624 + mov sl, r0 + b _023326CC + arm_func_end ov29_023325E0 + + arm_func_start ov29_023325FC +ov29_023325FC: ; 0x023325FC + ldr r0, [sp, #0x78] + mov r1, r4 + str r0, [sp] + mov r0, sb + mov r2, r8 + mov r3, r7 + bl ov29_0232E67C + mov sl, r0 + b _023326CC + arm_func_end ov29_023325FC + + arm_func_start ov29_02332620 +ov29_02332620: ; 0x02332620 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E6E0 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332620 + + arm_func_start ov29_0233263C +ov29_0233263C: ; 0x0233263C + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E714 + mov sl, r0 + b _023326CC + arm_func_end ov29_0233263C + + arm_func_start ov29_02332658 +ov29_02332658: ; 0x02332658 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E734 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332658 + + arm_func_start ov29_02332674 +ov29_02332674: ; 0x02332674 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E744 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332674 + + arm_func_start ov29_02332690 +ov29_02332690: ; 0x02332690 + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E750 + mov sl, r0 + b _023326CC + arm_func_end ov29_02332690 + + arm_func_start ov29_023326AC +ov29_023326AC: ; 0x023326AC + mov r0, sb + mov r1, r4 + mov r2, r8 + mov r3, r7 + bl ov29_0232E794 + mov sl, r0 + b _023326CC +_023326C8: + mov sl, #0 +_023326CC: + cmp sl, #0 + ldreq r0, [sp, #0x74] + addeq r0, r0, #1 + moveq r0, r0, lsl #0x10 + moveq r0, r0, asr #0x10 + streq r0, [sp, #0x74] + beq _02332704 + ldr r0, [sp, #0x78] + ldr r1, _023329D4 ; =0x02353718 + add r0, r0, #1 + mov r0, r0, lsl #0x10 + str r4, [r1] + mov r0, r0, asr #0x10 + str r0, [sp, #0x78] +_02332704: + bl IsFloorOver + cmp r0, #0 + bne _02332830 + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _02332738 + ldr r0, _023329D8 ; =0x000001F6 + cmp r6, r0 + bne _02332738 + bl IsFloorOver + cmp r0, #0 + bne _02332830 +_02332738: + ldr r0, [sp, #0x6c] + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _0233275C + ldr r0, [sp, #0x6c] + mov r1, r0 + ldr r1, [r1, #0xb4] + ldrb r1, [r1, #0x4c] + bl ov29_02304A48 +_0233275C: + cmp sl, #0 + bne _02332790 + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _023327C8 + mov r0, r4 + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrneb r0, [r5, #6] + cmpne r0, #0 + strneb fp, [r5, #0x108] + b _023327C8 +_02332790: + mov r0, r8 + bl ov29_02324534 + cmp r0, #0 + beq _023327C8 + ldr r0, [sp, #0x58] + cmp r0, #0 + bne _023327C8 + mov r0, sb + mov r1, #0 + bl DungeonRandOutcomeUserAction + cmp r0, #0 + ldrne r0, _023329DC ; =0x0237CA68 + movne r1, #1 + strneb r1, [r0] +_023327C8: + mov r0, r4 + bl EntityIsValid__0232E840 + cmp r0, #0 + movne r0, #1 + strneb r0, [r5, #0x162] + cmp r6, #0x89 + beq _02332818 + mov r0, sb + bl ov29_02321A78 + mov r0, sb + mov r1, r4 + bl ov29_02321CF0 + mov r0, sb + mov r1, r4 + mov r2, r8 + bl ov29_022F94F0 + mov r1, r4 + mov r0, sb + mov r2, r8 + bl ov29_022F9744 +_02332818: + ldr r0, [sp, #0x7c] + add r0, r0, #1 + str r0, [sp, #0x7c] +_02332824: + ldr r0, [sp, #0x7c] + cmp r0, #0x40 + blt _0232E92C +_02332830: + ldr r0, [sp, #0x80] + cmp r0, #0 + beq _02332858 + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrne r1, [sb, #0xb4] + movne r0, #0 + strneb r0, [r1, #0x166] + strneb r0, [r1, #0x167] +_02332858: + mov r0, r6 + bl IsHealingWishOrLunarDance + cmp r0, #0 + beq _0233289C + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _0233289C + ldr r0, [sb, #0xb4] + ldr r3, _023329E0 ; =0x0000023A + ldrsh r1, [r0, #0x10] + mov r0, sb + mov r2, #0x17 + sub r1, r1, #1 + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ov29_0230D11C +_0233289C: + ldr r0, [sp, #0x70] + cmp r0, #0 + ldrle r0, [sp, #0x74] + cmple r0, #0 + ble _02332930 + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _02332930 + cmp r7, #0 + bne _02332930 + ldr r0, [sb, #0xb4] + ldrb r0, [r0, #0xbd] + cmp r0, #1 + cmpne r6, #0xe3 + beq _02332930 + mov r0, sb + mov r1, #0x2d + bl IqSkillIsEnabled + cmp r0, #0 + beq _02332930 + mov r0, sb + mov r1, r8 + mov r2, #0 + bl GetEntityMoveTargetAndRange + and r0, r0, #0xf0 + cmp r0, #0x50 + beq _02332930 + ldrb r1, [sb, #0xb0] + ldr r3, _023329E4 ; =0x00000EC2 + mov r0, sb + add r1, r1, #4 + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #29 + add r1, r2, r1, ror #29 + mov r2, #1 + bl ov29_023201D0 +_02332930: + bl IsFloorOver + cmp r0, #0 + bne _023329CC + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrne r4, [sb, #0xb4] + ldrneb r0, [r4, #0x15e] + cmpne r0, #0 + beq _02332970 + mov r2, #0 + mov r0, sb + mov r1, sb + mov r3, r2 + strb r2, [r4, #0x15e] + bl TryWarp +_02332970: + mov r0, sb + bl EntityIsValid__0232E840 + cmp r0, #0 + beq _023329CC + ldr r4, [sb, #0xb4] + ldrb r0, [r4, #0x15f] + cmp r0, #0 + beq _023329B8 + add r0, sp, #0x9c + mov r5, #0 + strb r5, [r4, #0x15f] + ldr r2, [r0] + str r5, [sp] + mov r0, sb + mov r1, sb + mov r3, #2 + str r5, [sp, #4] + bl LowerOffensiveStat +_023329B8: + ldrh r1, [r8, #4] + ldr r0, _023329D8 ; =0x000001F6 + cmp r1, r0 + moveq r0, #0 + streqb r0, [r4, #0x170] +_023329CC: + add sp, sp, #0xf0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023329D4: .word 0x02353718 +_023329D8: .word 0x000001F6 +_023329DC: .word 0x0237CA68 +_023329E0: .word 0x0000023A +_023329E4: .word 0x00000EC2 + arm_func_end ov29_023326AC + + arm_func_start ExclusiveItemEffectIsActive__023329E8 +ExclusiveItemEffectIsActive__023329E8: ; 0x023329E8 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__023329E8 + + arm_func_start DefenderAbilityIsActive__02332A0C +DefenderAbilityIsActive__02332A0C: ; 0x02332A0C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + mov r4, r2 + cmp r0, r5 + beq _02332A60 + cmp r0, #0 + moveq r1, #0 + beq _02332A40 + ldr r1, [r0] + cmp r1, #1 + moveq r1, #1 + movne r1, #0 + and r1, r1, #0xff +_02332A40: + cmp r1, #0 + cmpne r3, #0 + beq _02332A60 + mov r1, #0x53 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_02332A60: + mov r0, r5 + mov r1, r4 + bl AbilityIsActive2 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DefenderAbilityIsActive__02332A0C + + arm_func_start ov29_02332A70 +ov29_02332A70: ; 0x02332A70 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x28 + mov r5, r2 + mov r6, r1 + mov r7, r0 + mov r1, r5 + mov r4, r3 + bl GetMoveTypeForMonster + mov sb, r0 + mov r0, r7 + mov r1, r5 + bl GetMovePower + mov r8, r0 + mov r0, r5 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0x14 + str r1, [sp, #4] + mov r0, #0x100 + str r0, [sp, #8] + ldrh ip, [r5, #4] + mov r1, #1 + mov r2, sb + str ip, [sp, #0xc] + str r1, [sp, #0x10] + mov r3, r8 + mov r0, r7 + mov r1, r6 + bl CalcDamage + mov r1, r4 + mov r0, r5 + bl ov29_02324E44 + str r0, [sp] + mov r1, r6 + mov r2, r5 + mov r0, r7 + add r3, sp, #0x14 + bl CalcDamageFinal + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02332A70 + + arm_func_start DealDamage +DealDamage: ; 0x02332B20 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x28 + mov r5, r2 + mov r6, r1 + mov r7, r0 + mov r1, r5 + mov r4, r3 + bl GetMoveTypeForMonster + mov sb, r0 + mov r0, r7 + mov r1, r5 + bl GetMovePower + mov r8, r0 + mov r0, r5 + bl GetMoveCritChance + str r0, [sp] + add r0, sp, #0x14 + stmib sp, {r0, r4} + ldrh r4, [r5, #4] + mov r2, sb + mov r3, r8 + mov ip, #1 + str r4, [sp, #0xc] + mov r0, r7 + mov r1, r6 + str ip, [sp, #0x10] + bl CalcDamage + ldr r1, [sp, #0x48] + mov r0, r5 + bl ov29_02324E44 + str r0, [sp] + mov r1, r6 + mov r2, r5 + mov r0, r7 + add r3, sp, #0x14 + bl CalcDamageFinal + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end DealDamage + + arm_func_start ov29_02332BB8 +ov29_02332BB8: ; 0x02332BB8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x28 + mov r5, r2 + mov r6, r1 + mov r1, r5 + mov r7, r0 + mov r4, r3 + bl GetMovePower + ldrsh r1, [sp, #0x48] + add r0, r1, r0 + mov r1, r0, lsl #0x10 + mov r0, r5 + mov r8, r1, asr #0x10 + bl GetMoveCritChance + str r0, [sp] + add r0, sp, #0x14 + stmib sp, {r0, r4} + ldrh r4, [r5, #4] + mov r2, #1 + mov r3, r8 + str r4, [sp, #0xc] + str r2, [sp, #0x10] + ldrb r2, [sp, #0x44] + mov r0, r7 + mov r1, r6 + bl CalcDamage + ldr r1, [sp, #0x40] + mov r0, r5 + bl ov29_02324E44 + str r0, [sp] + mov r1, r6 + mov r2, r5 + mov r0, r7 + add r3, sp, #0x14 + bl CalcDamageFinal + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_02332BB8 + + arm_func_start CalcDamageProjectile +CalcDamageProjectile: ; 0x02332C4C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x28 + mov r4, r2 + mov r5, r1 + mov r1, r4 + mov r6, r0 + mov r8, r3 + bl GetMoveTypeForMonster + mov r7, r0 + mov r0, r4 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0x14 + str r1, [sp, #4] + ldr r0, [sp, #0x40] + mov r1, #1 + str r0, [sp, #8] + ldrh ip, [r4, #4] + mov r2, r7 + mov r3, r8 + str ip, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, r6 + mov r1, r5 + bl CalcDamage + ldr r1, [sp, #0x44] + mov r0, r4 + bl ov29_02324E44 + str r0, [sp] + mov r1, r5 + mov r2, r4 + mov r0, r6 + add r3, sp, #0x14 + bl CalcDamageFinal + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end CalcDamageProjectile + + arm_func_start ov29_02332CDC +ov29_02332CDC: ; 0x02332CDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x28 + mov r4, r3 + mov r5, r1 + mov r1, r4 + mov r6, r0 + mov r8, r2 + bl GetMovePower + mov r7, r0 + mov r0, r4 + bl GetMoveCritChance + str r0, [sp] + add r1, sp, #0x14 + str r1, [sp, #4] + ldr r0, [sp, #0x40] + mov r1, #1 + str r0, [sp, #8] + ldrh ip, [r4, #4] + mov r2, r8 + mov r3, r7 + str ip, [sp, #0xc] + str r1, [sp, #0x10] + mov r0, r6 + mov r1, r5 + bl CalcDamage + ldr r1, [sp, #0x44] + mov r0, r4 + bl ov29_02324E44 + str r0, [sp] + mov r1, r5 + mov r2, r4 + mov r0, r6 + add r3, sp, #0x14 + bl CalcDamageFinal + add sp, sp, #0x28 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_02332CDC + + arm_func_start CalcDamageFinal +CalcDamageFinal: ; 0x02332D6C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r4, [r8, #0xb4] + mov r6, r3 + mov r3, #1 + mov r7, r1 + mov r5, r2 + str r3, [sp] + bl MoveHitCheck + cmp r0, #0 + beq _02332E3C + ldrh r1, [r5, #4] + ldr r0, _02332F04 ; =0x0000013A + mov r2, #0x2e + cmp r1, r0 + moveq r5, #1 + mov r0, r8 + mov r1, r7 + mov r3, #1 + movne r5, #0 + bl DefenderAbilityIsActive__02332A0C + cmp r0, #0 + beq _02332DFC + ldr r1, _02332F08 ; =0x02353538 + ldr r2, _02332F0C ; =0x000003E7 + ldr r0, [r1] + add r0, r0, #0x700 + strh r2, [r0, #0x82] + ldr r0, [r1] + add r0, r0, #0x19000 + str r7, [r0, #0x908] + ldr r0, [r1] + ldrh r1, [r7, #0x26] + add r0, r0, #0x19000 + str r1, [r0, #0x910] +_02332DFC: + ldrsh r0, [sp, #0x28] + mov ip, #1 + str ip, [sp] + str r0, [sp, #4] + mov r3, r5 + mov r0, r8 + mov r1, r7 + mov r2, r6 + str ip, [sp, #8] + mov r5, #0 + str r5, [sp, #0xc] + bl ov29_0230863C + mov r0, r5 + strb r0, [r4, #0x166] + strb r0, [r4, #0x167] + b _02332ED0 +_02332E3C: + bl ov29_0234B034 + mov r3, #0 + str r3, [sp] + ldr r2, [r7, #0xb4] + mov r1, #1 + bl ov29_0230040C + mov r0, r8 + bl ov29_022E272C + cmp r0, #0 + beq _02332EA8 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + beq _02332EA8 + mov r2, #1 + ldr r0, _02332F10 ; =0x0000270F + mov r1, r7 + sub r3, r2, #2 + bl ov29_022EA718 + ldr r2, _02332F14 ; =0x00000EC3 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdQuietCheckUserTarget + mov r0, r8 + mov r1, r7 + bl ov29_022E576C + b _02332EB8 +_02332EA8: + ldr r2, _02332F14 ; =0x00000EC3 + mov r0, r8 + mov r1, r7 + bl LogMessageByIdWithPopupCheckUserTarget +_02332EB8: + mov r2, #1 + strb r2, [r6, #0x10] + ldrh r1, [r5, #4] + rsb r0, r2, #0x164 + cmp r1, r0 + strneb r2, [r4, #0x166] +_02332ED0: + ldrb r0, [r6, #0x10] + cmp r0, #0 + movne r0, #0 + bne _02332EFC + mov r0, r7 + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrne r0, [r7, #0xb4] + movne r1, #1 + strneb r1, [r0, #0x164] + ldr r0, [r6] +_02332EFC: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02332F04: .word 0x0000013A +_02332F08: .word 0x02353538 +_02332F0C: .word 0x000003E7 +_02332F10: .word 0x0000270F +_02332F14: .word 0x00000EC3 + arm_func_end CalcDamageFinal + + arm_func_start ov29_02332F18 +ov29_02332F18: ; 0x02332F18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x24 + mov r6, r2 + mov r7, r1 + mov r1, r6 + mov r8, r0 + mov r5, r3 + bl GetMoveTypeForMonster + mov r4, r0 + ldrh r0, [r6, #4] + bl GetMoveCategory + mov r3, r0 + str r5, [sp] + add r1, sp, #0x10 + str r1, [sp, #4] + mov r2, r4 + mov r0, r8 + mov r1, r7 + bl ov29_0230D088 + ldr r1, [sp, #0x40] + mov r0, r6 + bl ov29_02324E44 + mov r1, #1 + str r1, [sp] + stmib sp, {r0, r1} + mov r3, #0 + mov r0, r8 + str r3, [sp, #0xc] + mov r1, r7 + add r2, sp, #0x10 + bl ov29_0230863C + ldrb r0, [sp, #0x20] + cmp r0, #0 + movne r0, #0 + bne _02332FC0 + mov r0, r7 + bl EntityIsValid__0232E840 + cmp r0, #0 + ldrne r0, [r7, #0xb4] + movne r1, #1 + strneb r1, [r0, #0x164] + ldr r0, [sp, #0x10] +_02332FC0: + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ov29_02332F18 + + arm_func_start ov29_02332FC8 +ov29_02332FC8: ; 0x02332FC8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, r4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsh r1, [r5, #4] + ldrsh r0, [r4, #4] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + bgt _02333010 + ldrsh r1, [r5, #6] + ldrsh r0, [r4, #6] + sub r0, r1, r0 + bl Abs + cmp r0, #1 + ble _02333018 +_02333010: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02333018: + add r0, r4, #4 + add r1, r5, #4 + bl GetDirectionTowardsPosition + mov r1, r0 + mov r0, r4 + bl CanAttackInDirection + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02332FC8 + + arm_func_start ov29_02333044 +ov29_02333044: ; 0x02333044 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + add r0, r5, #4 + add r1, r1, #4 + ldr r4, [r5, #0xb4] + bl GetDirectionTowardsPosition + mov r1, r0 + and r2, r1, #7 + mov r0, r5 + strb r2, [r4, #0x4c] + bl ov29_02304A48 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02333044 + + arm_func_start StatusCheckerCheck +StatusCheckerCheck: ; 0x02333074 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldrh r2, [r1, #4] + ldr r1, _02333F98 ; =0x00000109 + mov r4, r0 + cmp r2, r1 + ldr r3, [r4, #0xb4] + bgt _02333314 + cmp r2, r1 + bge _02333834 + cmp r2, #0x9c + bgt _023331F4 + bge _023339D8 + cmp r2, #0x4a + bgt _02333170 + bge _0233397C + cmp r2, #0x2b + bgt _02333114 + bge _02333BCC + cmp r2, #0x13 + bgt _023330F8 + bge _02333620 + sub r1, r2, #7 + cmp r1, #7 + addls pc, pc, r1, lsl #2 + b _02333F90 +_023330D8: ; jump table + b _02333BCC ; case 0 + b _023339F0 ; case 1 + b _02333F90 ; case 2 + b _02333F90 ; case 3 + b _02333F90 ; case 4 + b _02333918 ; case 5 + b _02333F90 ; case 6 + b _0233360C ; case 7 +_023330F8: + cmp r2, #0x26 + bgt _02333108 + beq _02333634 + b _02333F90 +_02333108: + cmp r2, #0x28 + beq _02333648 + b _02333F90 +_02333114: + cmp r2, #0x37 + bgt _0233313C + bge _02333660 + cmp r2, #0x31 + bgt _02333130 + beq _02333A84 + b _02333F90 +_02333130: + cmp r2, #0x33 + beq _02333634 + b _02333F90 +_0233313C: + cmp r2, #0x3d + bgt _02333164 + cmp r2, #0x38 + blt _02333F90 + beq _02333B00 + cmp r2, #0x3a + beq _023336B0 + cmp r2, #0x3d + beq _023336D8 + b _02333F90 +_02333164: + cmp r2, #0x46 + beq _023336B0 + b _02333F90 +_02333170: + cmp r2, #0x68 + bgt _023331B0 + bge _02333730 + cmp r2, #0x62 + bgt _02333194 + bge _02333700 + cmp r2, #0x5f + beq _023336EC + b _02333F90 +_02333194: + cmp r2, #0x63 + bgt _023331A4 + beq _02333714 + b _02333F90 +_023331A4: + cmp r2, #0x66 + beq _02333A98 + b _02333F90 +_023331B0: + cmp r2, #0x86 + bgt _023331D8 + bge _02333954 + cmp r2, #0x80 + bgt _023331CC + beq _02333744 + b _02333F90 +_023331CC: + cmp r2, #0x82 + beq _02333758 + b _02333F90 +_023331D8: + cmp r2, #0x8d + bgt _023331E8 + beq _0233392C + b _02333F90 +_023331E8: + cmp r2, #0x94 + beq _02333B14 + b _02333F90 +_023331F4: + cmp r2, #0xd7 + bgt _02333284 + bge _023336C4 + cmp r2, #0xb9 + bgt _02333240 + bge _02333BF4 + cmp r2, #0xa9 + bgt _02333224 + bge _02333780 + cmp r2, #0xa0 + beq _02333AB8 + b _02333F90 +_02333224: + cmp r2, #0xb5 + bgt _02333234 + beq _02333B28 + b _02333F90 +_02333234: + cmp r2, #0xb8 + beq _02333BE0 + b _02333F90 +_02333240: + cmp r2, #0xc3 + bgt _02333268 + bge _02333660 + cmp r2, #0xba + bgt _0233325C + beq _023336B0 + b _02333F90 +_0233325C: + cmp r2, #0xbb + beq _02333BCC + b _02333F90 +_02333268: + cmp r2, #0xca + bgt _02333278 + beq _023336B0 + b _02333F90 +_02333278: + cmp r2, #0xd4 + beq _02333A44 + b _02333F90 +_02333284: + cmp r2, #0xec + bgt _023332C4 + bge _023337D4 + cmp r2, #0xe1 + bgt _023332A8 + bge _02333B3C + cmp r2, #0xdf + beq _02333940 + b _02333F90 +_023332A8: + cmp r2, #0xe8 + bgt _023332B8 + beq _023339B0 + b _02333F90 +_023332B8: + cmp r2, #0xe9 + beq _02333794 + b _02333F90 +_023332C4: + sub r0, r1, #8 + cmp r2, r0 + bgt _023332F0 + bge _02333674 + cmp r2, #0xf5 + bgt _023332E4 + beq _0233380C + b _02333F90 +_023332E4: + cmp r2, #0x100 + beq _02333820 + b _02333F90 +_023332F0: + sub r0, r1, #7 + cmp r2, r0 + bgt _02333304 + beq _023336B0 + b _02333F90 +_02333304: + sub r0, r1, #6 + cmp r2, r0 + beq _0233376C + b _02333F90 +_02333314: + add r5, r1, #0x68 + cmp r2, r5 + bgt _023334B4 + bge _02333BCC + add r5, r1, #0x34 + cmp r2, r5 + bgt _02333414 + bge _02333820 + cmp r2, #0x120 + bgt _02333398 + bge _02333884 + add r4, r1, #0x11 + cmp r2, r4 + bgt _02333378 + mov r0, r4 + cmp r2, r0 + bge _02333B60 + add r0, r1, #4 + cmp r2, r0 + bgt _02333F90 + cmp r2, #0x10c + blt _02333F90 + cmpne r2, r0 + beq _02333BCC + b _02333F90 +_02333378: + cmp r2, #0x11c + bgt _02333388 + beq _02333BCC + b _02333F90 +_02333388: + add r1, r1, #0x15 + cmp r2, r1 + beq _02333850 + b _02333F90 +_02333398: + add r0, r1, #0x2a + cmp r2, r0 + bgt _023333F4 + add r0, r1, #0x24 + subs r0, r2, r0 + addpl pc, pc, r0, lsl #2 + b _023333D0 +_023333B4: ; jump table + b _02333904 ; case 0 + b _023336B0 ; case 1 + b _02333F90 ; case 2 + b _02333A98 ; case 3 + b _02333904 ; case 4 + b _02333F90 ; case 5 + b _02333A64 ; case 6 +_023333D0: + ldr r0, _02333F9C ; =0x00000127 + cmp r2, r0 + bgt _023333E4 + beq _02333B84 + b _02333F90 +_023333E4: + add r0, r0, #3 + cmp r2, r0 + beq _023338F0 + b _02333F90 +_023333F4: + add r0, r1, #0x30 + cmp r2, r0 + bgt _02333408 + beq _02333898 + b _02333F90 +_02333408: + cmp r2, #0x13c + beq _023338AC + b _02333F90 +_02333414: + cmp r2, #0x154 + bgt _02333464 + bge _023336D8 + add r0, r1, #0x44 + cmp r2, r0 + bgt _02333440 + bge _02333660 + add r0, r1, #0x36 + cmp r2, r0 + beq _02333B9C + b _02333F90 +_02333440: + add r0, r1, #0x45 + cmp r2, r0 + bgt _02333454 + beq _02333BB8 + b _02333F90 +_02333454: + add r0, r1, #0x49 + cmp r2, r0 + beq _023338C0 + b _02333F90 +_02333464: + cmp r2, #0x16c + bgt _02333494 + bge _02333990 + add r0, r1, #0x4e + cmp r2, r0 + bgt _02333484 + beq _023338D4 + b _02333F90 +_02333484: + add r0, r1, #0x54 + cmp r2, r0 + beq _02333700 + b _02333F90 +_02333494: + add r0, r1, #0x66 + cmp r2, r0 + bgt _023334A8 + beq _02333BCC + b _02333F90 +_023334A8: + cmp r2, #0x170 + beq _02333BCC + b _02333F90 +_023334B4: + cmp r2, #0x1d8 + bgt _02333578 + bge _02333634 + add r5, r1, #0x7e + cmp r2, r5 + bgt _02333520 + mov r4, r5 + cmp r2, r4 + bge _02333968 + add r4, r1, #0x71 + cmp r2, r4 + bgt _02333500 + mov r0, r4 + cmp r2, r0 + bge _02333ACC + add r0, r1, #0x6e + cmp r2, r0 + beq _02333BCC + b _02333F90 +_02333500: + cmp r2, #0x17c + bgt _02333510 + beq _02333A98 + b _02333F90 +_02333510: + add r1, r1, #0x7c + cmp r2, r1 + beq _02333A1C + b _02333F90 +_02333520: + cmp r2, #0x1bc + bgt _02333550 + bge _023336EC + add r0, r1, #0x8d + cmp r2, r0 + bgt _02333540 + beq _02333BCC + b _02333F90 +_02333540: + add r0, r1, #0xa9 + cmp r2, r0 + beq _02333CEC + b _02333F90 +_02333550: + add r5, r1, #0xb6 + cmp r2, r5 + bgt _0233356C + mov r0, r5 + cmp r2, r0 + beq _02333D00 + b _02333F90 +_0233356C: + cmp r2, #0x1d0 + beq _02333DE0 + b _02333F90 +_02333578: + add r0, r1, #0xea + cmp r2, r0 + bgt _023335C0 + bge _02333F24 + cmp r2, #0x1ec + bgt _023335A0 + bge _02333DF8 + cmp r2, #0x1e0 + beq _02333B84 + b _02333F90 +_023335A0: + add r0, r1, #0xe4 + cmp r2, r0 + bgt _023335B4 + beq _02333F10 + b _02333F90 +_023335B4: + cmp r2, #0x1f0 + beq _02333B84 + b _02333F90 +_023335C0: + rsb r0, r1, #0x320 + cmp r2, r0 + bgt _023335EC + bge _023336D8 + cmp r2, #0x208 + bgt _023335E0 + beq _02333F38 + b _02333F90 +_023335E0: + cmp r2, #0x214 + beq _02333F6C + b _02333F90 +_023335EC: + cmp r2, #0x21c + bgt _023335FC + beq _023336EC + b _02333F90 +_023335FC: + ldr r0, _02333FA0 ; =0x0000021E + cmp r2, r0 + beq _02333F80 + b _02333F90 +_0233360C: + bl GetApparentWeather + cmp r0, #5 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333620: + ldrb r0, [r3, #0xd2] + cmp r0, #0xc + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333634: + ldrb r0, [r3, #0xd5] + cmp r0, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333648: + mov r0, r4 + bl ov29_02319748 + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333660: + ldrsh r0, [r3, #0x24] + cmp r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333674: + ldrsh r0, [r3, #0x24] + cmp r0, #0x13 + bgt _023336A8 + add r0, r3, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #1 + bge _02333F90 +_023336A8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023336B0: + ldrsh r0, [r3, #0x28] + cmp r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023336C4: + ldrsh r0, [r3, #0x2a] + cmp r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023336D8: + ldrb r0, [r3, #0xd2] + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023336EC: + ldr r0, [r3, #0x110] + cmp r0, #3 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333700: + ldrb r0, [r3, #0xec] + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333714: + ldrsh r0, [r3, #0x28] + cmp r0, #0x13 + ldrgtsh r0, [r3, #0x2a] + cmpgt r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333730: + ldrb r0, [r3, #0xd5] + cmp r0, #9 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333744: + ldrb r0, [r3, #0xd2] + cmp r0, #0xb + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333758: + bl ov29_023197CC + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0233376C: + ldrb r0, [r3, #0xd5] + cmp r0, #3 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333780: + ldrsh r0, [r3, #0x2e] + cmp r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333794: + ldrb r0, [r3, #0xc4] + cmp r0, #5 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldrsh r4, [r3, #0x12] + ldrsh r2, [r3, #0x16] + rsb r0, r1, #0x4f0 + ldrsh r1, [r3, #0x10] + add r2, r4, r2 + cmp r2, r0 + movgt r2, r0 + add r0, r2, r2, lsr #31 + cmp r1, r0, asr #1 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023337D4: + ldrsh r4, [r3, #0x12] + ldrsh r2, [r3, #0x16] + rsb r0, r1, #0x4f0 + add r2, r4, r2 + cmp r2, r0 + movgt r2, r0 + ldrsh r0, [r3, #0x10] + cmp r2, r0 + ble _02333804 + ldrb r0, [r3, #0x11e] + cmp r0, #0 + bne _02333F90 +_02333804: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0233380C: + ldrb r0, [r3, #0x11e] + cmp r0, #0 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333820: + ldrb r0, [r3, #0xec] + cmp r0, #3 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333834: + ldrsh r0, [r3, #0x24] + cmp r0, #0x13 + ldrgtsh r0, [r3, #0x28] + cmpgt r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333850: + ldr r1, _02333FA4 ; =0x02353538 + mov r2, #0xc + ldr r1, [r1] + ldr r3, _02333FA8 ; =0x022C6322 + add r1, r1, #0x4000 + ldrsh r1, [r1, #0xd4] + smulbb r1, r1, r2 + ldrb r1, [r3, r1] + bl MonsterIsType + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333884: + ldrsh r0, [r3, #0x26] + cmp r0, #0x13 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333898: + ldrb r0, [r3, #0xe0] + cmp r0, #2 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023338AC: + ldrb r0, [r3, #0xd5] + cmp r0, #8 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023338C0: + ldrb r0, [r3, #0xd5] + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023338D4: + ldrsh r0, [r3, #0x24] + cmp r0, #0x13 + ldrgt r0, [r3, #0x110] + cmpgt r0, #3 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023338F0: + ldrb r0, [r3, #0xd5] + cmp r0, #5 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333904: + ldrb r0, [r3, #0xd5] + cmp r0, #7 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333918: + bl GetApparentWeather + cmp r0, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0233392C: + bl GetApparentWeather + cmp r0, #2 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333940: + bl GetApparentWeather + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333954: + ldrb r0, [r3, #0xd5] + cmp r0, #2 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333968: + ldrb r0, [r3, #0xef] + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0233397C: + ldrb r0, [r3, #0xec] + cmp r0, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333990: + ldrb r0, [r3, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023339B0: + bl ov29_023007DC + cmp r0, #0 + bne _02333F90 + mov r0, r4 + mov r1, #0 + bl ov29_02300634 + cmp r0, #0 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023339D8: + bl GetTileAtEntity + bl ov29_02337E2C + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_023339F0: + bl GetTileAtEntity + mov r4, r0 + bl ov29_02337E2C + cmp r0, #0 + beq _02333A14 + ldrh r0, [r4] + and r0, r0, #3 + cmp r0, #1 + beq _02333F90 +_02333A14: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333A1C: + bl GetTileAtEntity + ldr r0, [r0, #0x10] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r0] + cmp r0, #2 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333A44: + ldr r0, _02333FA4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd5b] + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333A64: + ldr r0, _02333FA4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd5c] + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333A84: + ldrb r0, [r3, #0xfd] + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333A98: + ldr r0, _02333FA4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3000 + ldrb r0, [r0, #0xe38] + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333AB8: + ldrb r0, [r3, #0x11e] + cmp r0, #3 + blo _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333ACC: + ldrb r0, [r3, #0x62] + tst r0, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _02333F90 + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B00: + ldrsh r0, [r3, #0x2e] + cmp r0, #0x14 + blt _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B14: + ldrsh r0, [r3, #0x26] + cmp r0, #0x14 + blt _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B28: + ldrsh r0, [r3, #0x24] + cmp r0, #0x14 + blt _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B3C: + ldrb r0, [r3, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [r3, #0xd5] + cmp r0, #6 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B60: + ldrb r0, [r3, #0xef] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl ov29_022E0880 + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B84: + add r0, r4, #4 + bl ov29_022EDC30 + cmp r0, #0 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333B9C: + ldrsh r0, [r3, #0x26] + cmp r0, #0x14 + ldrgesh r0, [r3, #0x2a] + cmpge r0, #0x14 + blt _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333BB8: + ldrb r0, [r3, #0xd8] + cmp r0, #3 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333BCC: + bl ov29_022E0880 + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333BE0: + bl Conversion2IsActive + cmp r0, #0 + beq _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333BF4: + ldrb r0, [r3, #6] + mov r5, #0 + cmp r0, #0 + beq _02333C78 + ldr r6, _02333FA4 ; =0x02353538 + b _02333C60 +_02333C0C: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333C5C + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + beq _02333C5C + ldr r1, [r7, #0xb4] + ldrsh r0, [r1, #0x24] + cmp r0, #0x14 + ldrltsh r0, [r1, #0x26] + cmplt r0, #0x14 + blt _02333C68 +_02333C5C: + add r5, r5, #1 +_02333C60: + cmp r5, #0x10 + blt _02333C0C +_02333C68: + cmp r5, #0x10 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333C78: + ldr r6, _02333FA4 ; =0x02353538 + b _02333CD4 +_02333C80: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333CD0 + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + beq _02333CD0 + ldr r1, [r7, #0xb4] + ldrsh r0, [r1, #0x24] + cmp r0, #0x14 + ldrltsh r0, [r1, #0x26] + cmplt r0, #0x14 + blt _02333CDC +_02333CD0: + add r5, r5, #1 +_02333CD4: + cmp r5, #4 + blt _02333C80 +_02333CDC: + cmp r5, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333CEC: + ldrb r0, [r3, #0xd5] + cmp r0, #0x10 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333D00: + ldrb r0, [r3, #6] + mov r5, #0 + cmp r0, #0 + beq _02333D78 + ldr r6, _02333FA4 ; =0x02353538 + b _02333D60 +_02333D18: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333D5C + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + ldrne r0, [r7, #0xb4] + ldrneb r0, [r0, #0xd5] + cmpne r0, #0x11 + bne _02333D68 +_02333D5C: + add r5, r5, #1 +_02333D60: + cmp r5, #0x10 + blt _02333D18 +_02333D68: + cmp r5, #0x10 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333D78: + ldr r6, _02333FA4 ; =0x02353538 + b _02333DC8 +_02333D80: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333DC4 + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + ldrne r0, [r7, #0xb4] + ldrneb r0, [r0, #0xd5] + cmpne r0, #0x11 + bne _02333DD0 +_02333DC4: + add r5, r5, #1 +_02333DC8: + cmp r5, #4 + blt _02333D80 +_02333DD0: + cmp r5, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333DE0: + mov r1, #0 + bl ov29_02300634 + cmp r0, #0 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333DF8: + ldrb r0, [r3, #6] + mov r5, #0 + cmp r0, #0 + beq _02333E8C + ldr r6, _02333FA4 ; =0x02353538 + b _02333E74 +_02333E10: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb38] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333E70 + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + beq _02333E70 + ldr r1, [r7, #0xb4] + ldrsh r0, [r1, #0x24] + cmp r0, #0x14 + ldrgesh r0, [r1, #0x28] + cmpge r0, #0x14 + ldrgesh r0, [r1, #0x26] + cmpge r0, #0x14 + ldrgesh r0, [r1, #0x2a] + cmpge r0, #0x14 + blt _02333E7C +_02333E70: + add r5, r5, #1 +_02333E74: + cmp r5, #0x10 + blt _02333E10 +_02333E7C: + cmp r5, #0x10 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333E8C: + ldr r6, _02333FA4 ; =0x02353538 + b _02333EF8 +_02333E94: + ldr r0, [r6] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__02333FAC + cmp r0, #0 + cmpne r7, r4 + beq _02333EF4 + mov r0, r4 + mov r1, r7 + bl ov29_022E274C + cmp r0, #0 + beq _02333EF4 + ldr r1, [r7, #0xb4] + ldrsh r0, [r1, #0x24] + cmp r0, #0x14 + ldrgesh r0, [r1, #0x28] + cmpge r0, #0x14 + ldrgesh r0, [r1, #0x26] + cmpge r0, #0x14 + ldrgesh r0, [r1, #0x2a] + cmpge r0, #0x14 + blt _02333F00 +_02333EF4: + add r5, r5, #1 +_02333EF8: + cmp r5, #4 + blt _02333E94 +_02333F00: + cmp r5, #4 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333F10: + ldrb r0, [r3, #0xf7] + cmp r0, #1 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333F24: + ldr r0, [r3, #0x110] + cmp r0, #1 + ble _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333F38: + mov r1, #0 + b _02333F54 +_02333F40: + add r0, r3, r1, lsl #1 + ldrsh r0, [r0, #0x28] + cmp r0, #0x14 + blt _02333F5C + add r1, r1, #1 +_02333F54: + cmp r1, #2 + blt _02333F40 +_02333F5C: + cmp r1, #2 + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333F6C: + ldrb r0, [r3, #0xd5] + cmp r0, #0xf + bne _02333F90 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02333F80: + ldrsh r0, [r3, #0x26] + cmp r0, #0x14 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_02333F90: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02333F98: .word 0x00000109 +_02333F9C: .word 0x00000127 +_02333FA0: .word 0x0000021E +_02333FA4: .word 0x02353538 +_02333FA8: .word 0x022C6322 + arm_func_end StatusCheckerCheck diff --git a/asm/overlay_29_02333FD0.s b/asm/overlay_29_02333FD0.s new file mode 100644 index 00000000..a9a6e3ab --- /dev/null +++ b/asm/overlay_29_02333FD0.s @@ -0,0 +1,1265 @@ + .include "asm/macros.inc" + .include "overlay_29_02333FD0.inc" + + .text + + arm_func_start ov29_02333FD0 +ov29_02333FD0: ; 0x02333FD0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r1 + ldr r5, [r6, #0xb4] + mov r7, r0 + ldrb r0, [r5, #0xc4] + mov r8, r2 + ldr r4, [r7, #0xb4] + cmp r0, #1 + bne _02334008 + mov r0, r8 + bl IsThawingMove + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02334008: + ldrh r1, [r8, #4] + ldr r0, _02334CA4 ; =0x0000010A + cmp r1, r0 + bgt _0233429C + bge _023349A4 + cmp r1, #0x8a + bgt _023341C8 + bge _023349F4 + cmp r1, #0x56 + bgt _02334164 + bge _023347B0 + cmp r1, #0x4f + bgt _02334140 + bge _023344D0 + cmp r1, #0x3b + bgt _02334134 + bge _0233473C + cmp r1, #0x36 + addls pc, pc, r1, lsl #2 + b _02334C9C +_02334058: ; jump table + b _02334C9C ; case 0 + b _02334C9C ; case 1 + b _02334C9C ; case 2 + b _023344E8 ; case 3 + b _023344D0 ; case 4 + b _02334510 ; case 5 + b _02334C9C ; case 6 + b _02334C9C ; case 7 + b _02334C9C ; case 8 + b _02334C9C ; case 9 + b _02334524 ; case 10 + b _02334538 ; case 11 + b _02334C9C ; case 12 + b _02334A74 ; case 13 + b _02334C9C ; case 14 + b _02334C9C ; case 15 + b _02334C9C ; case 16 + b _0233454C ; case 17 + b _02334C9C ; case 18 + b _02334C9C ; case 19 + b _02334574 ; case 20 + b _02334588 ; case 21 + b _023345A0 ; case 22 + b _02334618 ; case 23 + b _02334A74 ; case 24 + b _02334C9C ; case 25 + b _02334C9C ; case 26 + b _02334630 ; case 27 + b _02334C9C ; case 28 + b _02334C9C ; case 29 + b _02334C9C ; case 30 + b _02334C9C ; case 31 + b _02334C9C ; case 32 + b _02334644 ; case 33 + b _023344D0 ; case 34 + b _02334658 ; case 35 + b _02334C9C ; case 36 + b _023346C0 ; case 37 + b _02334C9C ; case 38 + b _02334C9C ; case 39 + b _02334C9C ; case 40 + b _02334C9C ; case 41 + b _02334C9C ; case 42 + b _023346D4 ; case 43 + b _02334C9C ; case 44 + b _02334A74 ; case 45 + b _02334C9C ; case 46 + b _023346F0 ; case 47 + b _02334C9C ; case 48 + b _02334C9C ; case 49 + b _02334C9C ; case 50 + b _02334C9C ; case 51 + b _02334C9C ; case 52 + b _02334C9C ; case 53 + b _02334704 ; case 54 +_02334134: + cmp r1, #0x42 + beq _02334750 + b _02334C9C +_02334140: + cmp r1, #0x54 + bgt _02334158 + bge _023344D0 + cmp r1, #0x53 + beq _02334780 + b _02334C9C +_02334158: + cmp r1, #0x55 + beq _02334794 + b _02334C9C +_02334164: + cmp r1, #0x6f + bgt _02334194 + bge _023344D0 + cmp r1, #0x59 + bgt _02334188 + bge _023347B0 + cmp r1, #0x58 + beq _023347C4 + b _02334C9C +_02334188: + cmp r1, #0x6a + beq _02334618 + b _02334C9C +_02334194: + cmp r1, #0x73 + bgt _023341AC + bge _02334830 + cmp r1, #0x70 + beq _0233481C + b _02334C9C +_023341AC: + cmp r1, #0x7a + bgt _023341BC + beq _0233476C + b _02334C9C +_023341BC: + cmp r1, #0x7c + beq _0233473C + b _02334C9C +_023341C8: + cmp r1, #0xc5 + bgt _02334238 + bge _02334A40 + cmp r1, #0xac + bgt _02334204 + bge _023348B8 + cmp r1, #0x92 + bgt _023341F8 + bge _023348A4 + cmp r1, #0x8e + beq _023348A4 + b _02334C9C +_023341F8: + cmp r1, #0xab + beq _02334A74 + b _02334C9C +_02334204: + cmp r1, #0xc0 + bgt _0233421C + bge _0233473C + cmp r1, #0xbf + beq _02334A74 + b _02334C9C +_0233421C: + cmp r1, #0xc2 + bgt _0233422C + beq _023347B0 + b _02334C9C +_0233422C: + cmp r1, #0xc4 + beq _02334A54 + b _02334C9C +_02334238: + cmp r1, #0xdc + bgt _02334268 + bge _0233493C + cmp r1, #0xd1 + bgt _0233425C + bge _023348CC + cmp r1, #0xc7 + beq _02334A54 + b _02334C9C +_0233425C: + cmp r1, #0xd9 + beq _02334928 + b _02334C9C +_02334268: + cmp r1, #0xe7 + bgt _02334280 + bge _023344D0 + cmp r1, #0xe0 + beq _0233476C + b _02334C9C +_02334280: + cmp r1, #0xed + bgt _02334290 + beq _02334960 + b _02334C9C +_02334290: + cmp r1, #0xf9 + beq _02334908 + b _02334C9C +_0233429C: + add r2, r0, #0xb5 + cmp r1, r2 + bgt _023343B8 + bge _02334AB0 + add r2, r0, #0x31 + cmp r1, r2 + bgt _0233432C + bge _02334704 + add r2, r0, #0xf + cmp r1, r2 + bgt _023342FC + bge _0233473C + add r2, r0, #7 + cmp r1, r2 + bgt _023342EC + bge _023348A4 + add r0, r0, #1 + cmp r1, r0 + beq _02334928 + b _02334C9C +_023342EC: + add r0, r0, #8 + cmp r1, r0 + beq _02334A74 + b _02334C9C +_023342FC: + add r2, r0, #0x1c + cmp r1, r2 + bgt _0233431C + bge _02334A20 + add r0, r0, #0x1b + cmp r1, r0 + beq _023349E0 + b _02334C9C +_0233431C: + add r0, r0, #0x30 + cmp r1, r0 + beq _023349B8 + b _02334C9C +_0233432C: + add r2, r0, #0x55 + cmp r1, r2 + bgt _0233436C + bge _02334618 + add r2, r0, #0x3d + cmp r1, r2 + bgt _0233435C + bge _023349F4 + add r0, r0, #0x3c + cmp r1, r0 + beq _02334A0C + b _02334C9C +_0233435C: + add r0, r0, #0x3f + cmp r1, r0 + beq _023349CC + b _02334C9C +_0233436C: + add r2, r0, #0x74 + cmp r1, r2 + bgt _0233438C + bge _02334A74 + add r0, r0, #0x71 + cmp r1, r0 + beq _023349A4 + b _02334C9C +_0233438C: + add r2, r0, #0xac + cmp r1, r2 + bgt _023343A8 + add r0, r0, #0xac + cmp r1, r0 + beq _02334A88 + b _02334C9C +_023343A8: + add r0, r0, #0xad + cmp r1, r0 + beq _02334A9C + b _02334C9C +_023343B8: + add r2, r0, #0xe3 + cmp r1, r2 + bgt _02334450 + bge _02334B64 + add r2, r0, #0xc8 + cmp r1, r2 + bgt _02334408 + bge _02334B00 + add r2, r0, #0xb8 + cmp r1, r2 + bgt _023343FC + add r0, r0, #0xb8 + cmp r1, r0 + bge _02334AEC + cmp r1, #0x1c0 + beq _02334AC4 + b _02334C9C +_023343FC: + cmp r1, #0x1c8 + beq _02334524 + b _02334C9C +_02334408: + add r2, r0, #0xd8 + cmp r1, r2 + bgt _02334428 + bge _023348CC + add r0, r0, #0xd4 + cmp r1, r0 + beq _02334B14 + b _02334C9C +_02334428: + add r2, r0, #0xd9 + cmp r1, r2 + bgt _02334444 + add r0, r0, #0xd9 + cmp r1, r0 + beq _023344D0 + b _02334C9C +_02334444: + cmp r1, #0x1ec + beq _02334B28 + b _02334C9C +_02334450: + add r2, r0, #0xf8 + cmp r1, r2 + bgt _02334494 + bge _02334C00 + add r2, r0, #0xf0 + cmp r1, r2 + bgt _02334484 + add r0, r0, #0xf0 + cmp r1, r0 + bge _02334B78 + cmp r1, #0x1f8 + beq _0233481C + b _02334C9C +_02334484: + add r0, r0, #0xf7 + cmp r1, r0 + beq _02334BD8 + b _02334C9C +_02334494: + cmp r1, #0x210 + bgt _023344B0 + bge _02334C18 + ldr r0, _02334CA8 ; =0x0000020D + cmp r1, r0 + beq _023349F4 + b _02334C9C +_023344B0: + cmp r1, #0x214 + bgt _023344C0 + beq _02334C60 + b _02334C9C +_023344C0: + add r0, r0, #0x10c + cmp r1, r0 + beq _02334C74 + b _02334C9C +_023344D0: + mov r0, r6 + bl ov29_023007A8 + cmp r0, #0 + beq _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023344E8: + ldrb r0, [r5, #0xbd] + cmp r0, #4 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r6 + bl ov29_023007A8 + cmp r0, #0 + beq _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334510: + ldrb r0, [r5, #0xbd] + cmp r0, #3 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334524: + ldrsh r0, [r5, #0x2e] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334538: + ldr r0, [r5, #0x34] + cmp r0, #0x3f + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0233454C: + ldrb r0, [r5, #0xd0] + cmp r0, #6 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r0, r5, #0x124 + bl ov29_02334CAC + cmp r0, #0 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334574: + ldrsh r0, [r5, #0x10] + cmp r0, #2 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334588: + ldrsh r1, [r5, #0x10] + ldrsh r0, [r4, #0x10] + cmp r1, r0 + bgt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023345A0: + mov r3, #0 + mov r0, r3 + mov r1, #1 + b _023345DC +_023345B0: + add r2, r5, r3, lsl #3 + ldrb r2, [r2, #0x124] + tst r2, #1 + movne r4, r1 + moveq r4, r0 + tst r4, #0xff + beq _023345D8 + tst r2, #0x20 + movne r0, #1 + bne _023345F4 +_023345D8: + add r3, r3, #1 +_023345DC: + cmp r3, #4 + blt _023345B0 + ldrb r0, [r5, #0x144] + tst r0, #0x20 + movne r0, #1 + moveq r0, #0 +_023345F4: + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + add r0, r5, #0x124 + bl ov29_02334CAC + cmp r0, #0 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334618: + ldr r0, [r6, #0xb4] + ldr r0, [r0, #0x110] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334630: + ldr r0, [r5, #0x3c] + cmp r0, #0x3f + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334644: + ldrsh r0, [r5, #0x2a] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334658: + mov r4, #0 + add r3, r5, #0x124 + mov r1, r4 + mov r2, #1 + b _023346A4 +_0233466C: + ldrb r5, [r3, r4, lsl #3] + add r0, r3, r4, lsl #3 + tst r5, #1 + movne r6, r2 + moveq r6, r1 + tst r6, #0xff + beq _023346A0 + tst r5, #0x10 + beq _023346A0 + ldrb r0, [r0, #6] + cmp r0, #0 + moveq r0, #1 + beq _023346B0 +_023346A0: + add r4, r4, #1 +_023346A4: + cmp r4, #4 + blt _0233466C + mov r0, #0 +_023346B0: + cmp r0, #0 + beq _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023346C0: + ldrb r0, [r5, #0xec] + cmp r0, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023346D4: + ldr r0, [r5, #0x34] + cmp r0, #0x3f + ldrlt r0, [r5, #0x38] + cmplt r0, #0x3f + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023346F0: + ldrb r0, [r5, #0xbf] + cmp r0, #1 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334704: + ldrb r0, [r5, #0x5e] + cmp r0, #0xe + ldrneb r0, [r5, #0x5f] + cmpne r0, #0xe + bne _02334728 + ldrb r0, [r5, #0xfe] + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_02334728: + ldrsh r0, [r5, #0x2e] + cmp r0, #0xa + bgt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0233473C: + ldrb r0, [r5, #0xbf] + cmp r0, #4 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334750: + ldrsh r1, [r5, #0x10] + ldrsh r0, [r4, #0x10] + sub r0, r1, r0 + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0233476C: + ldrsh r0, [r5, #0x28] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334780: + ldrsh r0, [r5, #0x2a] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334794: + ldrsh r0, [r5, #0x24] + cmp r0, #1 + ldrltsh r0, [r5, #0x28] + cmplt r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023347B0: + ldrb r0, [r5, #0xc4] + cmp r0, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023347C4: + mov r2, #0 + b _02334804 +_023347CC: + add r1, r5, r2, lsl #1 + ldrsh r0, [r1, #0x24] + cmp r0, #0xa + ldrgesh r0, [r1, #0x28] + cmpge r0, #0xa + ldrgesh r0, [r1, #0x2c] + cmpge r0, #0xa + addge r1, r5, r2, lsl #2 + ldrge r0, [r1, #0x34] + cmpge r0, #0x100 + ldrge r0, [r1, #0x3c] + cmpge r0, #0x100 + blt _0233480C + add r2, r2, #1 +_02334804: + cmp r2, #2 + blt _023347CC +_0233480C: + cmp r2, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0233481C: + ldrb r0, [r5, #0xbd] + cmp r0, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334830: + mov r0, #0 + b _0233488C +_02334838: + add r6, r4, r0, lsl #1 + add r3, r5, r0, lsl #1 + ldrsh r2, [r6, #0x24] + ldrsh r1, [r3, #0x24] + cmp r2, r1 + ldrgesh r2, [r6, #0x28] + ldrgesh r1, [r3, #0x28] + cmpge r2, r1 + ldrgesh r2, [r6, #0x2c] + ldrgesh r1, [r3, #0x2c] + cmpge r2, r1 + addge r6, r4, r0, lsl #2 + addge r3, r5, r0, lsl #2 + ldrge r2, [r6, #0x34] + ldrge r1, [r3, #0x34] + cmpge r2, r1 + ldrge r2, [r6, #0x3c] + ldrge r1, [r3, #0x3c] + cmpge r2, r1 + blt _02334894 + add r0, r0, #1 +_0233488C: + cmp r0, #2 + blt _02334838 +_02334894: + cmp r0, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023348A4: + ldrsh r0, [r5, #0x2c] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023348B8: + ldrb r0, [r5, #0xd0] + cmp r0, #5 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023348CC: + ldrb r0, [r4, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r0, [r5, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334908: + ldrb r0, [r5, #0x62] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334928: + ldrsh r0, [r5, #0x24] + cmp r0, #1 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_0233493C: + ldrb r1, [r4, #0x60] + ldrb r0, [r5, #0x60] + cmp r1, r0 + ldreqb r1, [r4, #0x61] + ldreqb r0, [r5, #0x61] + cmpeq r1, r0 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334960: + mov r0, r7 + mov r1, #0xe + bl MonsterIsType + cmp r0, #0 + beq _02334988 + ldrb r0, [r5, #0xd8] + cmp r0, #1 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334988: + ldrsh r0, [r4, #0x24] + cmp r0, #0x13 + ldrgtsh r0, [r4, #0x28] + cmpgt r0, #0x13 + ble _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023349A4: + ldrb r0, [r5, #0xd0] + cmp r0, #3 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023349B8: + ldrsh r0, [r5, #0x10] + cmp r0, #2 + bge _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023349CC: + ldrb r0, [r5, #0xe0] + cmp r0, #1 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023349E0: + ldrb r0, [r5, #0x106] + cmp r0, #0 + beq _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_023349F4: + add r0, r5, #0x124 + bl ov29_02334CAC + cmp r0, #0 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A0C: + ldrb r0, [r5, #0xd0] + cmp r0, #7 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A20: + ldrb r0, [r5, #0xc4] + cmp r0, #3 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r0, #4 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A40: + ldrb r0, [r5, #0xbf] + cmp r0, #3 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A54: + ldrb r0, [r5, #0xbf] + cmp r0, #2 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + cmp r0, #3 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A74: + ldrb r0, [r5, #0xd0] + cmp r0, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A88: + ldrb r0, [r5, #0xd8] + cmp r0, #4 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334A9C: + ldrb r0, [r5, #0xd8] + cmp r0, #4 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334AB0: + ldrb r0, [r5, #0xd5] + cmp r0, #0x11 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334AC4: + ldrsh r3, [r4, #0x28] + ldrsh r2, [r4, #0x2a] + ldrsh r1, [r5, #0x28] + ldrsh r0, [r5, #0x2a] + add r2, r3, r2 + add r0, r1, r0 + cmp r2, r0 + blt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334AEC: + ldrb r0, [r5, #0xd8] + cmp r0, #5 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334B00: + ldrb r0, [r5, #0xd8] + cmp r0, #6 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334B14: + bl GravityIsActive + cmp r0, #0 + beq _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334B28: + mov r2, #0 + b _02334B4C +_02334B30: + add r1, r5, r2, lsl #1 + ldrsh r0, [r1, #0x24] + cmp r0, #0x14 + ldrgesh r0, [r1, #0x28] + cmpge r0, #0x14 + blt _02334B54 + add r2, r2, #1 +_02334B4C: + cmp r2, #2 + blt _02334B30 +_02334B54: + cmp r2, #2 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334B64: + ldrb r0, [r5, #0xf7] + cmp r0, #1 + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334B78: + ldrsh r3, [r4, #0x28] + ldrsh r1, [r4, #0x2a] + ldrsh r2, [r5, #0x28] + ldrsh r0, [r5, #0x2a] + add r1, r3, r1 + mov r1, r1, lsl #0x10 + add r0, r2, r0 + mov r2, r0, lsl #0x10 + ldrsh r6, [r4, #0x24] + ldrsh r0, [r4, #0x26] + ldrsh r4, [r5, #0x24] + ldrsh r3, [r5, #0x26] + add r0, r6, r0 + mov r0, r0, lsl #0x10 + add r3, r4, r3 + mov r4, r1, asr #0x10 + mov r1, r3, lsl #0x10 + mov r2, r2, asr #0x10 + add r3, r4, r0, asr #16 + add r0, r2, r1, asr #16 + cmp r3, r0 + blt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334BD8: + ldrsh r3, [r4, #0x24] + ldrsh r2, [r4, #0x26] + ldrsh r1, [r5, #0x24] + ldrsh r0, [r5, #0x26] + add r2, r3, r2 + add r0, r1, r0 + cmp r2, r0 + blt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334C00: + ldrsh r1, [r4, #0x24] + ldrsh r0, [r4, #0x28] + cmp r1, r0 + blt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334C18: + ldrb r0, [r5, #0x5e] + cmp r0, #0x10 + ldrneb r0, [r5, #0x5f] + cmpne r0, #0x10 + bne _02334C4C + ldrb r0, [r5, #0xf5] + cmp r0, #1 + bne _02334C9C + ldrsh r0, [r5, #0x2e] + cmp r0, #0xa + bgt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334C4C: + ldrsh r0, [r5, #0x2e] + cmp r0, #0xa + bgt _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334C60: + ldrb r0, [r5, #0xd5] + cmp r0, #0xf + bne _02334C9C + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02334C74: + ldrsh r0, [r5, #0x26] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldrsh r0, [r4, #2] + ldrsh r1, [r5, #2] + bl GendersEqualNotGenderless + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} +_02334C9C: + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02334CA4: .word 0x0000010A +_02334CA8: .word 0x0000020D + arm_func_end ov29_02333FD0 + + arm_func_start ov29_02334CAC +ov29_02334CAC: ; 0x02334CAC + stmdb sp!, {r3, lr} + mov r3, #0 + mov r1, r3 + mov r2, #1 + b _02334CE8 +_02334CC0: + ldrb ip, [r0, r3, lsl #3] + tst ip, #1 + movne lr, r2 + moveq lr, r1 + tst lr, #0xff + beq _02334CE4 + tst ip, #0x10 + movne r0, #1 + ldmneia sp!, {r3, pc} +_02334CE4: + add r3, r3, #1 +_02334CE8: + cmp r3, #4 + blt _02334CC0 + ldrb r0, [r0, #0x20] + tst r0, #0x10 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02334CAC + + arm_func_start GetApparentWeather +GetApparentWeather: ; 0x02334D08 + stmdb sp!, {r4, lr} + movs r4, r0 + beq _02334D40 + mov r1, #0x6f + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + bne _02334D34 + mov r0, r4 + mov r1, #0x34 + bl HasHeldItem +_02334D34: + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} +_02334D40: + ldr r0, _02334D54 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd38] + ldmia sp!, {r4, pc} + .align 2, 0 +_02334D54: .word 0x02353538 + arm_func_end GetApparentWeather + + arm_func_start ov29_02334D58 +ov29_02334D58: ; 0x02334D58 + stmdb sp!, {r3, lr} + bl IsSecretFloor + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02334DA4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x28000 + ldrb r0, [r0, #0x6b6] + cmp r0, #8 + bne _02334D8C + mov r0, #8 + bl DungeonRandInt + and r0, r0, #0xff +_02334D8C: + bl ov29_02334DA8 + bl TryActivateArtificialWeatherAbilities + mov r0, #0 + mov r1, #1 + bl ov29_023354C4 + ldmia sp!, {r3, pc} + .align 2, 0 +_02334DA4: .word 0x02353538 + arm_func_end ov29_02334D58 + + arm_func_start ov29_02334DA8 +ov29_02334DA8: ; 0x02334DA8 + ldr r3, _02334E6C ; =0x02353538 + mov r1, #0 + ldr r2, [r3] + add r2, r2, #0xc000 + strb r0, [r2, #0xd39] + ldr r0, [r3] + add r0, r0, #0xc000 + ldrb r2, [r0, #0xd39] + strb r2, [r0, #0xd38] + ldr r0, [r3] + add r0, r0, #0xc000 + strb r1, [r0, #0xd5d] + mov r0, r1 +_02334DDC: + ldr r2, [r3] + add r2, r2, r1, lsl #1 + add r2, r2, #0xcd00 + strh r0, [r2, #0x3a] + ldr r2, [r3] + add r2, r2, r1, lsl #1 + add r2, r2, #0xcd00 + add r1, r1, #1 + strh r0, [r2, #0x4a] + cmp r1, #8 + blt _02334DDC + ldr r2, _02334E6C ; =0x02353538 + mov r3, #9 + ldr r1, [r2] + add r1, r1, #0xc000 + strb r3, [r1, #0xd5a] + ldr r1, [r2] + add r1, r1, #0xc000 + strb r0, [r1, #0xd5b] + ldr r1, [r2] + add r1, r1, #0xc000 + strb r0, [r1, #0xd5c] +_02334E34: + ldr r1, [r2] + and r3, r0, #0xff + add r1, r1, r0, lsl #2 + strb r3, [r1, #0x1e0] + ldr r1, [r2] + add r1, r1, r0, lsl #2 + strb r3, [r1, #0x1e1] + ldr r1, [r2] + add r1, r1, r0, lsl #2 + add r0, r0, #1 + strb r3, [r1, #0x1e2] + cmp r0, #0x100 + blt _02334E34 + bx lr + .align 2, 0 +_02334E6C: .word 0x02353538 + arm_func_end ov29_02334DA8 + + arm_func_start ov29_02334E70 +ov29_02334E70: ; 0x02334E70 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + str r0, [sp] + mov r0, #0 + bl GetApparentWeather + bl ov29_022DE620 + mov r5, r0 + mov r0, #0 + bl GetApparentWeather + ldr r1, [sp] + bl ov29_022E5FE8 + mov r0, #0x25 + bl AdvanceFrame + mov r0, #1 + bl ov29_022E38E0 + ldr r0, _0233503C ; =0x02353562 + mov r1, #1 + ldrb fp, [r0] + mov r4, #0 + strb r1, [r0] + b _0233500C +_02334EC0: + mov r0, #0x25 + mov r6, #0 + bl AdvanceFrame + mov r8, r6 +_02334ED0: + ldr r0, _02335040 ; =0x02353538 + ldrb r7, [r5, r8, lsl #2] + ldr sl, [r0] + add r0, sl, r8, lsl #2 + ldrb sb, [r0, #0x1e0] + sub r0, sb, r7 + bl Abs + cmp r0, #0xa + addlt r0, sl, r8, lsl #2 + strltb r7, [r0, #0x1e0] + blt _02334F28 + cmp sb, r7 + addlo r1, sl, r8, lsl #2 + ldrlob r0, [r1, #0x1e0] + mov r6, #1 + addlo r0, r0, #0xa + strlob r0, [r1, #0x1e0] + blo _02334F28 + addhi r1, sl, r8, lsl #2 + ldrhib r0, [r1, #0x1e0] + subhi r0, r0, #0xa + strhib r0, [r1, #0x1e0] +_02334F28: + ldr r0, _02335040 ; =0x02353538 + add r1, r5, r8, lsl #2 + ldr sl, [r0] + ldrb r7, [r1, #1] + add r0, sl, r8, lsl #2 + ldrb sb, [r0, #0x1e1] + sub r0, sb, r7 + bl Abs + cmp r0, #0xa + addlt r0, sl, r8, lsl #2 + strltb r7, [r0, #0x1e1] + blt _02334F84 + cmp sb, r7 + addlo r1, sl, r8, lsl #2 + ldrlob r0, [r1, #0x1e1] + mov r6, #1 + addlo r0, r0, #0xa + strlob r0, [r1, #0x1e1] + blo _02334F84 + addhi r1, sl, r8, lsl #2 + ldrhib r0, [r1, #0x1e1] + subhi r0, r0, #0xa + strhib r0, [r1, #0x1e1] +_02334F84: + ldr r0, _02335040 ; =0x02353538 + add r1, r5, r8, lsl #2 + ldr sl, [r0] + ldrb r7, [r1, #2] + add r0, sl, r8, lsl #2 + ldrb sb, [r0, #0x1e2] + sub r0, sb, r7 + bl Abs + cmp r0, #0xa + addlt r0, sl, r8, lsl #2 + strltb r7, [r0, #0x1e2] + blt _02334FE0 + cmp sb, r7 + addlo r1, sl, r8, lsl #2 + ldrlob r0, [r1, #0x1e2] + mov r6, #1 + addlo r0, r0, #0xa + strlob r0, [r1, #0x1e2] + blo _02334FE0 + addhi r1, sl, r8, lsl #2 + ldrhib r0, [r1, #0x1e2] + subhi r0, r0, #0xa + strhib r0, [r1, #0x1e2] +_02334FE0: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x100 + blt _02334ED0 + bl ov29_022DE608 + cmp r6, #0 + beq _02335014 + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_0233500C: + cmp r4, #0x40 + blt _02334EC0 +_02335014: + ldr r0, _02335040 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd38] + bl ov29_02338A4C + ldr r1, _0233503C ; =0x02353562 + ldr r0, [sp] + strb fp, [r1] + bl ov29_02335044 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233503C: .word 0x02353562 +_02335040: .word 0x02353538 + arm_func_end ov29_02334E70 + + arm_func_start ov29_02335044 +ov29_02335044: ; 0x02335044 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _023350D4 ; =0x02353538 + mov r5, r0 + ldr r0, [r1] + add r0, r0, #0x1a000 + ldr r4, [r0, #0x22c] + cmp r4, #0 + bne _0233506C + bl GetLeader + mov r4, r0 +_0233506C: + cmp r5, #0 + beq _02335094 + mov r0, #0 + bl GetApparentWeather + add r0, r0, #0x45 + add r0, r0, #0xa00 + mov r1, r0, lsl #0x10 + mov r0, r4 + mov r1, r1, lsr #0x10 + bl LogMessageByIdWithPopupCheckUser +_02335094: + ldr r4, _023350D4 ; =0x02353538 + mov r5, #0 +_0233509C: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__023350D8 + cmp r0, #0 + beq _023350C4 + mov r0, r6 + bl TryWeatherFormChange +_023350C4: + add r5, r5, #1 + cmp r5, #0x14 + blt _0233509C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023350D4: .word 0x02353538 + arm_func_end ov29_02335044 diff --git a/asm/overlay_29_023350FC.s b/asm/overlay_29_023350FC.s new file mode 100644 index 00000000..522d454c --- /dev/null +++ b/asm/overlay_29_023350FC.s @@ -0,0 +1,3166 @@ + .include "asm/macros.inc" + .include "overlay_29_023350FC.inc" + + .text + + arm_func_start ov29_023350FC +ov29_023350FC: ; 0x023350FC + stmdb sp!, {r3, lr} + mov r0, #0 + bl GetApparentWeather + bl ov29_022DE620 + ldr r2, _0233516C ; =0x02353538 + mov r1, #0 +_02335114: + ldr r3, [r2] + ldrb ip, [r0, r1, lsl #2] + add r3, r3, r1, lsl #2 + add lr, r0, r1, lsl #2 + strb ip, [r3, #0x1e0] + ldr r3, [r2] + ldrb ip, [lr, #1] + add r3, r3, r1, lsl #2 + strb ip, [r3, #0x1e1] + ldr r3, [r2] + ldrb ip, [lr, #2] + add r3, r3, r1, lsl #2 + strb ip, [r3, #0x1e2] + ldr r3, [r2] + ldrb ip, [lr, #3] + add r3, r3, r1, lsl #2 + add r1, r1, #1 + strb ip, [r3, #0x1e3] + cmp r1, #0x100 + blt _02335114 + bl ov29_022DE608 + ldmia sp!, {r3, pc} + .align 2, 0 +_0233516C: .word 0x02353538 + arm_func_end ov29_023350FC + + arm_func_start TryWeatherFormChange +TryWeatherFormChange: ; 0x02335170 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r5, #0 + mov sl, r0 + mov r6, r5 + bl EntityIsValid__023350D8 + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r7, [sl, #0xb4] + mov r0, sl + ldrsh r4, [r7, #4] + ldrb r8, [r7, #0x5e] + ldrb sb, [r7, #0x5f] + bl CalcSpeedStageWrapper + mov r0, sl + mov r1, #0x25 + bl AbilityIsActive2 + cmp r0, #0 + mov r0, sl + beq _023351E0 + bl GetApparentWeather + mov r1, #6 + mul r2, r0, r1 + ldr r1, _02335434 ; =0x022C4C6C + mov r0, r5 + ldrb r1, [r1, r2] + strb r1, [r7, #0x5e] + strb r0, [r7, #0x5f] + b _02335220 +_023351E0: + bl Conversion2IsActive + cmp r0, #0 + ldreqb r0, [r7, #0xff] + cmpeq r0, #0 + ldreqb r0, [r7, #0xa9] + cmpeq r0, #0 + bne _02335220 + ldrsh r0, [r7, #2] + mov r1, r5 + bl GetType + strb r0, [r7, #0x5e] + ldrsh r0, [r7, #2] + mov r1, #1 + bl GetType + strb r0, [r7, #0x5f] + mov r6, #1 +_02335220: + ldrb r0, [r7, #0x5e] + cmp r8, r0 + ldreqb r0, [r7, #0x5f] + cmpeq sb, r0 + beq _0233523C + cmp r6, #0 + moveq r5, #1 +_0233523C: + ldrsh r1, [r7, #2] + ldr r0, _02335438 ; =0x0000017B + cmp r1, r0 + blt _02335258 + add r0, r0, #3 + cmp r1, r0 + ble _02335270 +_02335258: + ldr r0, _0233543C ; =0x000003D3 + cmp r1, r0 + blt _023352FC + add r0, r0, #3 + cmp r1, r0 + bgt _023352FC +_02335270: + mov r0, sl + mov r1, #0x25 + bl AbilityIsActive2 + cmp r0, #0 + beq _02335298 + ldrsh r1, [r7, #2] + mov r0, sl + bl ov29_022F9408 + strh r0, [r7, #4] + b _023352C0 +_02335298: + ldrsh r2, [r7, #2] + ldr r1, _02335438 ; =0x0000017B + cmp r2, r1 + blt _023352B8 + add r0, r1, #3 + cmp r2, r0 + strleh r1, [r7, #4] + ble _023352C0 +_023352B8: + ldr r0, _0233543C ; =0x000003D3 + strh r0, [r7, #4] +_023352C0: + ldrsh r0, [r7, #4] + cmp r0, r4 + beq _02335420 + ldrsh r0, [r7, #4] + bl GetSpriteIndex__022F7388 + strh r0, [sl, #0xa8] + mov r0, sl + bl GetSleepAnimationId + mov r1, r0 + mov r0, sl + bl ov29_02304830 + mov r0, sl + bl ov29_02304BAC + mov r5, #1 + b _02335420 +_023352FC: + cmp r1, #0x1cc + blt _02335310 + ldr r0, _02335440 ; =0x000001CD + cmp r1, r0 + ble _02335328 +_02335310: + ldr r0, _02335444 ; =0x00000424 + cmp r1, r0 + blt _02335420 + add r0, r0, #1 + cmp r1, r0 + bgt _02335420 +_02335328: + mov r0, sl + bl GetApparentWeather + cmp r0, #1 + ldrsh r1, [r7, #2] + bne _02335394 + cmp r1, #0x1cc + ldreq r0, _02335440 ; =0x000001CD + streqh r0, [r7, #4] + beq _0233535C + ldr r0, _02335444 ; =0x00000424 + cmp r1, r0 + addeq r0, r0, #1 + streqh r0, [r7, #4] +_0233535C: + ldrsh r2, [r7, #2] + ldr r0, _02335440 ; =0x000001CD + cmp r2, r0 + ldreqsh r1, [r7, #4] + cmpeq r1, #0x1cc + streqh r0, [r7, #4] + beq _023353F0 + ldr r1, _02335448 ; =0x00000425 + cmp r2, r1 + ldreqsh r2, [r7, #4] + subeq r0, r1, #1 + cmpeq r2, r0 + streqh r1, [r7, #4] + b _023353F0 +_02335394: + ldr r0, _02335440 ; =0x000001CD + cmp r1, r0 + moveq r0, #0x1cc + streqh r0, [r7, #4] + beq _023353B8 + add r0, r0, #0x258 + cmp r1, r0 + ldreq r0, _02335444 ; =0x00000424 + streqh r0, [r7, #4] +_023353B8: + ldrsh r2, [r7, #2] + cmp r2, #0x1cc + ldreqsh r1, [r7, #4] + ldreq r0, _02335440 ; =0x000001CD + cmpeq r1, r0 + moveq r0, #0x1cc + streqh r0, [r7, #4] + beq _023353F0 + ldr r1, _02335444 ; =0x00000424 + cmp r2, r1 + ldreqsh r2, [r7, #4] + addeq r0, r1, #1 + cmpeq r2, r0 + streqh r1, [r7, #4] +_023353F0: + ldrsh r0, [r7, #4] + cmp r0, r4 + beq _02335420 + ldrsh r0, [r7, #4] + bl GetSpriteIndex__022F7388 + strh r0, [sl, #0xa8] + mov r0, sl + bl GetSleepAnimationId + mov r1, r0 + mov r0, sl + bl ov29_02304830 + mov r5, #1 +_02335420: + cmp r5, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, sl + bl ov29_022E65F4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02335434: .word 0x022C4C6C +_02335438: .word 0x0000017B +_0233543C: .word 0x000003D3 +_02335440: .word 0x000001CD +_02335444: .word 0x00000424 +_02335448: .word 0x00000425 + arm_func_end TryWeatherFormChange + + arm_func_start ov29_0233544C +ov29_0233544C: ; 0x0233544C + stmdb sp!, {r3, lr} + cmp r0, #0 + mov r0, #0 + bne _02335488 + ldr r1, _023354B4 ; =0x022C478C + mov r2, r0 + bl CalcStatusDuration + ldr r1, _023354B8 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0xc000 + strb r0, [r1, #0xd5b] + bl GetLeader + ldr r1, _023354BC ; =0x00000CDA + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, pc} +_02335488: + ldr r1, _023354B4 ; =0x022C478C + mov r2, r0 + bl CalcStatusDuration + ldr r1, _023354B8 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0xc000 + strb r0, [r1, #0xd5c] + bl GetLeader + ldr r1, _023354C0 ; =0x00000CDB + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, pc} + .align 2, 0 +_023354B4: .word 0x022C478C +_023354B8: .word 0x02353538 +_023354BC: .word 0x00000CDA +_023354C0: .word 0x00000CDB + arm_func_end ov29_0233544C + + arm_func_start ov29_023354C4 +ov29_023354C4: ; 0x023354C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + mov sl, r0 + mov r0, r4 + mov sb, r1 + mov r6, r4 + sub r5, r4, #1 + bl GetApparentWeather + ldr fp, _02335664 ; =0x02353538 + mov r7, r0 + mov r8, r4 +_023354F0: + ldr r3, [fp] + add r0, r3, r8, lsl #1 + add r0, r0, #0xcd00 + ldrh r2, [r0, #0x4a] + ldrh r1, [r0, #0x3a] + cmp r1, r2 + strloh r2, [r0, #0x3a] + blo _02335524 + bls _02335524 + add r0, r3, #0x3a + add r0, r0, #0xcd00 + add r0, r0, r8, lsl #1 + bl ov29_022E9A6C +_02335524: + ldr r1, [fp] + add r0, r1, r8, lsl #1 + add r0, r0, #0xcd00 + ldrh r0, [r0, #0x3a] + cmp r4, r0 + movlt r5, r8 + add r8, r8, #1 + movlt r4, r0 + cmp r8, #8 + blt _023354F0 + cmp r5, #0 + addge r0, r1, #0xc000 + strgeb r5, [r0, #0xd38] + bge _02335570 + ldr r0, _02335664 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r1, [r0, #0xd39] + strb r1, [r0, #0xd38] +_02335570: + ldr r0, _02335664 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r1, [r0, #0xd5d] + cmp r1, #0 + movne r1, #0 + strneb r1, [r0, #0xd38] + mov r0, #0 + bl GetApparentWeather + cmp r7, r0 + cmpeq sb, #0 + beq _023355AC + mov r0, sl + mov r6, #1 + bl ov29_02334E70 +_023355AC: + ldr r0, _02335664 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r1, [r0, #0xd5a] + cmp r1, #0 + subne r1, r1, #1 + moveq r1, #9 + strb r1, [r0, #0xd5a] + ldr r0, _02335664 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0xc000 + ldrb r0, [r0, #0xd5b] + cmp r0, #0 + beq _02335614 + add r0, r1, #0x5b + add r0, r0, #0xcd00 + bl TickStatusTurnCounter + ldr r0, _02335664 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd5b] + cmp r0, #0 + bne _02335614 + bl GetLeader + ldr r1, _02335668 ; =0x00000C93 + bl LogMessageByIdWithPopupCheckUser +_02335614: + ldr r0, _02335664 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0xc000 + ldrb r0, [r0, #0xd5c] + cmp r0, #0 + beq _0233565C + add r0, r1, #0x15c + add r0, r0, #0xcc00 + bl TickStatusTurnCounter + ldr r0, _02335664 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldrb r0, [r0, #0xd5c] + cmp r0, #0 + bne _0233565C + bl GetLeader + ldr r1, _0233566C ; =0x00000C92 + bl LogMessageByIdWithPopupCheckUser +_0233565C: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02335664: .word 0x02353538 +_02335668: .word 0x00000C93 +_0233566C: .word 0x00000C92 + arm_func_end ov29_023354C4 + + arm_func_start ov29_02335670 +ov29_02335670: ; 0x02335670 + stmdb sp!, {r3, r4, r5, lr} + cmp r0, #0 + rsblt r0, r0, #0 + movlt r0, r0, lsl #0x10 + movlt r0, r0, asr #0x10 + cmp r0, #0 + mov r5, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + mov r4, #0xa + b _023356B0 +_0233569C: + mov r1, r4 + bl DivideInt + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + add r5, r5, #1 +_023356B0: + cmp r0, #0 + bne _0233569C + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02335670 + + arm_func_start ov29_023356C0 +ov29_023356C0: ; 0x023356C0 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _02335750 ; =0x02352B4C + ldr r1, [r0, #4] + ldr r0, [r0] + str r1, [sp, #4] + str r0, [sp] + bl GetLanguage + ldr r1, _02335754 ; =0x0235371C + mov r0, r0, lsl #1 + ldrh r2, [r1, r0] + add r0, sp, #0 + mov r1, #4 + mov r3, #0x300 + bl LoadWteFromFileDirectory + ldr r0, [sp, #4] + mov r1, #0x1000 + mov r2, #2 + mov r3, #0 + bl ProcessWte + bl GetLanguage + mov r3, r0, lsl #1 + ldr r1, _02335758 ; =0x02353720 + mov r0, #4 + ldrh r1, [r1, r3] + mov r2, #0 + bl LoadWtuFromBin + ldr r1, _0233575C ; =0x0237CA8C + ldr r2, [sp, #4] + str r0, [r1, #4] + ldrh r2, [r2, #0xc] + ldr r0, [sp] + strh r2, [r1] + bl sub_0201E080 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02335750: .word 0x02352B4C +_02335754: .word 0x0235371C +_02335758: .word 0x02353720 +_0233575C: .word 0x0237CA8C + arm_func_end ov29_023356C0 + + arm_func_start ov29_02335760 +ov29_02335760: ; 0x02335760 + ldr ip, _0233576C ; =sub_0201E020 + ldr r0, _02335770 ; =0x0237CA90 + bx ip + .align 2, 0 +_0233576C: .word sub_0201E020 +_02335770: .word 0x0237CA90 + arm_func_end ov29_02335760 + + arm_func_start ov29_02335774 +ov29_02335774: ; 0x02335774 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r1, _023357F4 ; =0x02352B4C + ldr r2, _023357F8 ; =0x000003EF + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + str r3, [sp, #4] + add r0, sp, #0 + mov r1, #4 + mov r3, #0x300 + str ip, [sp] + bl LoadWteFromFileDirectory + mov r1, #0 + ldr r0, [sp, #4] + mov r2, r1 + mov r3, r1 + bl ProcessWte + ldr ip, [sp, #4] + ldr r2, _023357FC ; =0x0237CA96 + add r3, ip, #0x10 + mov r1, #4 +_023357C8: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _023357C8 + ldrh r2, [ip, #0xc] + ldr r1, _02335800 ; =0x0237CA8C + ldr r0, [sp] + strh r2, [r1, #8] + bl sub_0201E080 + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_023357F4: .word 0x02352B4C +_023357F8: .word 0x000003EF +_023357FC: .word 0x0237CA96 +_02335800: .word 0x0237CA8C + arm_func_end ov29_02335774 + + arm_func_start ov29_02335804 +ov29_02335804: ; 0x02335804 + bx lr + arm_func_end ov29_02335804 + + arm_func_start ov29_02335808 +ov29_02335808: ; 0x02335808 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl sub_0201E730 + mov r1, #0 + mov r0, r5, lsl #0x10 + strb r1, [r4, #0x3c] + mov r2, #0x28 + strh r2, [r4, #0x2a] + ldr r2, _02335860 ; =0x0237CA8C + strb r1, [r4, #0x3e] + ldrh r3, [r2] + mov r0, r0, asr #0x10 + mov r2, #0x1000 + strh r3, [r4, #0x14] + str r2, [r4, #0x20] + bl ov29_02335864 + ldr r1, _02335860 ; =0x0237CA8C + str r0, [r4, #0x24] + mov r0, #0 + strb r0, [r1, #0x12] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02335860: .word 0x0237CA8C + arm_func_end ov29_02335808 + + arm_func_start ov29_02335864 +ov29_02335864: ; 0x02335864 + ldr r2, _0233587C ; =0x020AFC70 + add r0, r1, r0, lsl #8 + ldr r1, [r2] + ldr r1, [r1, #0xe0] + add r0, r1, r0, lsl #1 + bx lr + .align 2, 0 +_0233587C: .word 0x020AFC70 + arm_func_end ov29_02335864 + + arm_func_start ov29_02335880 +ov29_02335880: ; 0x02335880 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x40 + ldr r4, _02335984 ; =0x0237CA8C + mov r5, r0 + ldr r4, [r4, #4] + mov fp, r1 + add r0, sp, #0 + mov sl, r2 + mov r1, #2 + ldr r4, [r4, #4] + mov r6, r3 + bl ov29_02335808 + mov r0, sl + bl ov29_02335670 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r6, #0 + movne sb, #0xa + ldrsh r0, [r4, #4] + sub r1, r8, #1 + moveq sb, #0 + mul r1, r0, r1 + mov r1, r1, lsl #0x10 + add r6, r5, r1, asr #16 + mov r5, #0 + b _02335968 +_023358E8: + smulbb r0, r0, r5 + sub r2, r6, r0 + mov r0, sl + mov r1, #0xa + strh r2, [sp] + strh fp, [sp, #2] + bl DivideInt + add r0, sb, r1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + mov r0, r7, lsl #3 + ldrsh r1, [r4, r0] + add r2, r4, r7, lsl #3 + add r0, sp, #0 + strh r1, [sp, #0x16] + ldrsh r1, [r2, #2] + strh r1, [sp, #0x18] + ldrsh r1, [r2, #4] + strh r1, [sp, #0x1a] + ldrsh r1, [r2, #6] + strh r1, [sp, #0x1c] + bl sub_0201F2A0 + mov r0, sl + mov r1, #0xa + bl DivideInt + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 + add r0, r4, r7, lsl #3 + add r1, r5, #1 + mov r1, r1, lsl #0x10 + ldrsh r0, [r0, #4] + mov r5, r1, asr #0x10 +_02335968: + cmp r5, r8 + blt _023358E8 + mul r1, r0, r8 + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02335984: .word 0x0237CA8C + arm_func_end ov29_02335880 + + arm_func_start ov29_02335988 +ov29_02335988: ; 0x02335988 + stmdb sp!, {r4, r5, r6, lr} + ldr r4, _023359F4 ; =0x0237CA8C + mov r6, r0 + ldr r0, [r4, #4] + mov r5, r3 + ldr r4, [r0, #4] + mov r0, #2 + strh r1, [r6] + ldrsh r1, [sp, #0x10] + strh r2, [r6, #2] + bl ov29_02335864 + str r0, [r6, #0x24] + mov r0, r5, lsl #3 + ldrsh r1, [r4, r0] + add r2, r4, r5, lsl #3 + mov r0, r6 + strh r1, [r6, #0x16] + ldrsh r1, [r2, #2] + strh r1, [r6, #0x18] + ldrsh r1, [r2, #4] + strh r1, [r6, #0x1a] + ldrsh r1, [r2, #6] + strh r1, [r6, #0x1c] + bl sub_0201F2A0 + add r0, r4, r5, lsl #3 + ldrsh r0, [r0, #4] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023359F4: .word 0x0237CA8C + arm_func_end ov29_02335988 + + arm_func_start ov29_023359F8 +ov29_023359F8: ; 0x023359F8 + ldr r1, _02335A08 ; =0x0237CA8C + ldr ip, _02335A0C ; =SetBothScreensWindowColorToDefault + strb r0, [r1, #0x12] + bx ip + .align 2, 0 +_02335A08: .word 0x0237CA8C +_02335A0C: .word SetBothScreensWindowColorToDefault + arm_func_end ov29_023359F8 + + arm_func_start ov29_02335A10 +ov29_02335A10: ; 0x02335A10 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + ldr r0, _02335F2C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x21c + add r5, r0, #0x1a000 + ldr r0, [r5, #0x10] + cmp r0, #0 + moveq r1, #0 + beq _02335A4C + ldr r1, [r0] + cmp r1, #0 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff +_02335A4C: + cmp r1, #0 + beq _02335F24 + ldr r1, _02335F30 ; =0x0237CA8C + ldrb r1, [r1, #0x12] + cmp r1, #0 + bne _02335F24 + ldr sl, [r0, #0xb4] + mov r6, #0 + ldrsh r3, [sl, #0x12] + ldrsh r2, [sl, #0x16] + ldr r1, _02335F34 ; =0x000003E7 + mov fp, r6 + add r4, r3, r2 + cmp r4, r1 + movgt r4, r1 + ldr r1, _02335F2C ; =0x02353538 + ldrsh r8, [sl, #0x10] + ldr r1, [r1] + ldrb sb, [sl, #0xa] + ldrb r2, [r1, #0x749] + ldrsh r1, [r1, #0x1e] + add r7, r2, r1 + bl HasLowHealth + cmp r0, #0 + add r0, sl, #0x100 + ldrh r1, [r0, #0x46] + sub r2, sp, #4 + movne r6, #1 + strh r1, [r2] + ldrh r0, [r0, #0x48] + strh r0, [r2, #2] + ldr r0, [r2] + bl CeilFixedPoint + cmp r0, #0 + moveq fp, #1 + cmp r6, #0 + beq _02335B18 + ldr r0, _02335F38 ; =0x0237C850 + ldr r0, [r0] + tst r0, #0x10 + beq _02335B04 + mov r0, #0 + mov r1, r0 + mov sl, #0x20 + bl SetScreenWindowsColor + b _02335B20 +_02335B04: + mov r0, #1 + mov r1, #0 + mov sl, #0x10 + bl SetScreenWindowsColor + b _02335B20 +_02335B18: + mov sl, #0x10 + bl SetBothScreensWindowColorToDefault +_02335B20: + cmp fp, #0 + beq _02335B5C + ldr r0, _02335F38 ; =0x0237C850 + ldr r0, [r0] + ands r0, r0, #0x10 + movne sl, #0x30 + cmp r6, #0 + bne _02335B5C + cmp r0, #0 + beq _02335B58 + mov r0, #3 + mov r1, #0 + bl SetScreenWindowsColor + b _02335B5C +_02335B58: + bl SetBothScreensWindowColorToDefault +_02335B5C: + add r0, sp, #4 + mov r1, #2 + bl ov29_02335808 + mov r6, #0 + bl ov29_022E0880 + cmp r0, #0 + addne r0, r6, #0x18 + movne r0, r0, lsl #0x10 + movne r6, r0, asr #0x10 + bne _02335C48 + ldr r0, _02335F2C ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl DungeonGoesUp + cmp r0, #0 + bne _02335BC0 + mov r1, r6 + add r0, sp, #4 + mov r2, r1 + mov r3, #0x18 + str sl, [sp] + bl ov29_02335988 + add r0, r6, r0 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_02335BC0: + cmp r7, #0xa + ldrb r0, [r5, #0x2f] + bge _02335BF4 + cmp r0, #0 + moveq r3, #1 + movne r3, #0 + mov r1, r7, lsl #0x10 + mov r2, r1, asr #0x10 + mov r0, r6 + and r3, r3, #0xff + mov r1, #0 + bl ov29_02335880 + b _02335C18 +_02335BF4: + cmp r0, #0 + moveq r3, #1 + movne r3, #0 + mov r1, r7, lsl #0x10 + mov r2, r1, asr #0x10 + mov r0, r6 + and r3, r3, #0xff + mov r1, #0 + bl ov29_02335880 +_02335C18: + add r0, r6, r0 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r0, sp, #4 + mov r1, r6 + mov r2, #0 + mov r3, #0x14 + str sl, [sp] + bl ov29_02335988 + add r0, r6, r0 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 +_02335C48: + add r0, sp, #4 + mov r1, r6 + str sl, [sp] + mov r2, #0 + mov r3, #0x15 + bl ov29_02335988 + ldrb r1, [r5, #0x2f] + add r0, r6, r0 + mov r0, r0, lsl #0x10 + cmp r1, #0 + moveq r3, #1 + mov r6, r0, asr #0x10 + movne r3, #0 + mov r1, sb, lsl #0x10 + mov r2, r1, asr #0x10 + mov r0, r6 + and r3, r3, #0xff + mov r1, #0 + bl ov29_02335880 + mov r6, #0x48 + add r0, sp, #4 + mov r1, r6 + str sl, [sp] + mov r2, #0 + mov r3, #0x16 + bl ov29_02335988 + ldrb r1, [r5, #0x2f] + add r0, r0, #0x48 + mov r0, r0, lsl #0x10 + cmp r1, #0 + moveq r3, #1 + mov r6, r0, asr #0x10 + movne r3, #0 + mov r1, r8, lsl #0x10 + mov r2, r1, asr #0x10 + mov r0, r6 + and r3, r3, #0xff + mov r1, #0 + bl ov29_02335880 + add r0, r6, r0 + mov r7, r0, lsl #0x10 + mov r6, r7, asr #0x10 + add r0, sp, #4 + mov r1, r6 + str sl, [sp] + mov r2, #0 + mov r3, #0x17 + bl ov29_02335988 + ldrb r1, [r5, #0x2f] + add r0, r0, r7, asr #16 + mov r0, r0, lsl #0x10 + cmp r1, #0 + moveq r3, #1 + mov r6, r0, asr #0x10 + movne r3, #0 + mov r1, r4, lsl #0x10 + mov r2, r1, asr #0x10 + mov r0, r6 + and r3, r3, #0xff + mov r1, #0 + bl ov29_02335880 + ldr r0, _02335F30 ; =0x0237CA8C + cmp r4, #0 + ldr r0, [r0, #4] + mov r5, #0x90 + ldr sb, [r0, #4] + mov r6, #0x10 + blt _02335F24 + add r0, sp, #4 + bl sub_0201E730 + ldr r0, _02335F30 ; =0x0237CA8C + mov fp, #5 + ldrh r3, [r0] + mov r0, r8, lsl #0x10 + mov sl, #0x28 + mov r2, #0x1000 + mov r7, r0, asr #0x10 + ldr r1, _02335F3C ; =0x020AFC70 + str r2, [sp, #0x24] + ldr r0, [r1] + cmp r7, #0x70 + strb fp, [sp, #0x40] + strb sl, [sp, #0x42] + strh r3, [sp, #0x18] + ldr r0, [r0, #0xe0] + mov r1, #0 + mov r2, #0x90 + add r0, r0, #0x400 + str r0, [sp, #0x28] + mov r0, r4, lsl #0x10 + mov r4, r0, asr #0x10 + movgt r7, #0x70 + cmp r4, #0x70 + movgt r4, #0x70 + add r0, r4, #0x90 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + strh r1, [sp, #6] + strh r3, [sp, #8] + strh r1, [sp, #0xa] + add r0, r6, #1 + mov r1, r0, lsl #0x10 + strh r2, [sp, #4] + strh r2, [sp, #0xc] + ldrsh r2, [sb, #0xce] + mov r6, r1, asr #0x10 + add r0, sp, #4 + strh r2, [sp, #0xe] + strh r3, [sp, #0x10] + ldrsh r3, [sb, #0xce] + mov r2, #0x10 + strh r3, [sp, #0x12] + ldrsh r3, [sb, #0xc8] + strh r3, [sp, #0x1a] + ldrsh r1, [sb, #0xca] + strh r1, [sp, #0x1c] + ldrsh r1, [sb, #0xcc] + strh r1, [sp, #0x1e] + ldrsh r1, [sb, #0xce] + strh r1, [sp, #0x20] + strh r2, [sp, #0x2e] + bl sub_0201F2A0 + cmp r8, #0 + ble _02335EA0 + add r0, r7, #0x90 + mov r0, r0, lsl #0x10 + mov r3, #0x90 + mov r2, r0, asr #0x10 + mov r1, #0 + strh r3, [sp, #4] + strh r2, [sp, #8] + strh r3, [sp, #0xc] + strh r1, [sp, #6] + strh r1, [sp, #0xa] + ldrsh r1, [sb, #0xe6] + add r0, sp, #4 + strh r2, [sp, #0x10] + strh r1, [sp, #0xe] + ldrsh r1, [sb, #0xe6] + strh r1, [sp, #0x12] + ldrsh r1, [sb, #0xe0] + strh r1, [sp, #0x1a] + ldrsh r1, [sb, #0xe2] + strh r1, [sp, #0x1c] + ldrsh r1, [sb, #0xe4] + strh r1, [sp, #0x1e] + ldrsh r1, [sb, #0xe6] + strh r1, [sp, #0x20] + strh r6, [sp, #0x2e] + bl sub_0201F2A0 +_02335EA0: + sub r0, r4, r7 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + cmp r1, #0 + ble _02335F24 + add r0, r5, r7 + mov r0, r0, lsl #0x10 + add r1, r1, r0, asr #16 + mov r1, r1, lsl #0x10 + mov r3, r0, asr #0x10 + mov r0, #0 + mov r2, r1, asr #0x10 + strh r3, [sp, #4] + strh r0, [sp, #6] + strh r0, [sp, #0xa] + strh r2, [sp, #8] + strh r3, [sp, #0xc] + ldrsh r1, [sb, #0xde] + add r0, sp, #4 + strh r2, [sp, #0x10] + strh r1, [sp, #0xe] + ldrsh r1, [sb, #0xde] + strh r1, [sp, #0x12] + ldrsh r1, [sb, #0xd8] + strh r1, [sp, #0x1a] + ldrsh r1, [sb, #0xda] + strh r1, [sp, #0x1c] + ldrsh r1, [sb, #0xdc] + strh r1, [sp, #0x1e] + ldrsh r1, [sb, #0xde] + strh r1, [sp, #0x20] + strh r6, [sp, #0x2e] + bl sub_0201F2A0 +_02335F24: + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02335F2C: .word 0x02353538 +_02335F30: .word 0x0237CA8C +_02335F34: .word 0x000003E7 +_02335F38: .word 0x0237C850 +_02335F3C: .word 0x020AFC70 + arm_func_end ov29_02335A10 + + arm_func_start ov29_02335F40 +ov29_02335F40: ; 0x02335F40 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x40 + mov r5, r0 + add r0, sp, #0 + mov sl, r1 + mov r4, r3 + ldr sb, [sp, #0x6c] + bl sub_0201E730 + mov r0, #0 + ldrh r1, [sp, #0x68] + mov r2, #0x21 + strb r2, [sp, #0x3e] + mov r1, r1, lsl #0x14 + mov r1, r1, asr #0x10 + strb r0, [sp, #0x3c] + str r0, [sp, #0x20] + bl ov29_02335864 + mov r3, #0x31 + ldr r2, _023360F8 ; =0x0237CA8C + rsb r1, r3, #0x2740 + ldrh r2, [r2, #8] + str r0, [sp, #0x24] + strb r4, [sp, #0x2f] + strh r2, [sp, #0x14] + strh r3, [sp, #0x2a] + cmp sb, r1 + bne _02335FF0 + mov r7, #0x10 + mov r6, #4 + mov r4, #0x60 + mov r3, #0 + mov r2, #0x20 + mov r1, #8 + add r0, sp, #0 + strh r5, [sp] + strh sl, [sp, #2] + strh r7, [sp, #8] + strh r6, [sp, #0xa] + strh r4, [sp, #0x16] + strh r3, [sp, #0x18] + strh r2, [sp, #0x1a] + strh r1, [sp, #0x1c] + bl sub_0201F2A0 + b _023360F0 +_02335FF0: + mov r0, sb + mov r4, #0 + bl ov29_02335670 + mov r7, r0 + mov r0, r7, lsl #3 + add r0, r0, r0, lsr #31 + mov r0, r0, lsl #0xf + ldrb r1, [sp, #0x70] + sub r0, r5, r0, asr #16 + mov r0, r0, lsl #0x10 + cmp r1, #0 + mov r5, r0, asr #0x10 + beq _02336064 + cmp sb, #0 + mov r1, #8 + movlt r2, #0x58 + movge r2, #0x50 + mov r3, r4 + add r0, sp, #0 + strh r5, [sp] + strh sl, [sp, #2] + strh r2, [sp, #0x16] + strh r3, [sp, #0x18] + strh r1, [sp, #0x1a] + strh r1, [sp, #0x1c] + bl sub_0201F2A0 + add r0, r4, #8 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_02336064: + cmp sb, #0 + rsblt r0, sb, #0 + movlt r0, r0, lsl #0x10 + movlt sb, r0, asr #0x10 + add r1, r5, r4 + mov r6, #0 + sub r0, r7, #1 + add r8, r1, r0, lsl #3 + mov r5, r6 + mov r4, r6 + mov fp, #8 + b _023360E8 +_02336094: + sub r2, r8, r6, lsl #3 + mov r0, sb + mov r1, #0xa + strh r2, [sp] + strh sl, [sp, #2] + strh r5, [sp, #8] + strh r5, [sp, #0xa] + bl DivideInt + mov r0, r1, lsl #3 + strh r0, [sp, #0x16] + add r0, sp, #0 + strh r4, [sp, #0x18] + strh fp, [sp, #0x1a] + strh fp, [sp, #0x1c] + bl sub_0201F2A0 + mov r0, sb + mov r1, #0xa + bl DivideInt + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + add r6, r6, #1 +_023360E8: + cmp r6, r7 + blt _02336094 +_023360F0: + add sp, sp, #0x40 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023360F8: .word 0x0237CA8C + arm_func_end ov29_02335F40 + + arm_func_start GetTile +GetTile: ; 0x023360FC + cmp r0, #0 + ldrlt r0, _0233615C ; =0x02353724 + ldrlt r0, [r0] + bxlt lr + cmp r1, #0 + ldrlt r0, _0233615C ; =0x02353724 + ldrlt r0, [r0] + bxlt lr + cmp r0, #0x38 + ldrge r0, _0233615C ; =0x02353724 + ldrge r0, [r0] + bxge lr + cmp r1, #0x20 + ldrge r0, _0233615C ; =0x02353724 + ldrge r0, [r0] + bxge lr + ldr r3, _02336160 ; =0x02353538 + mov r2, #0xe0 + ldr r3, [r3] + mla r2, r1, r2, r3 + add r0, r2, r0, lsl #2 + add r0, r0, #0xd000 + ldr r0, [r0, #0x2e4] + bx lr + .align 2, 0 +_0233615C: .word 0x02353724 +_02336160: .word 0x02353538 + arm_func_end GetTile + + arm_func_start GetTileSafe +GetTileSafe: ; 0x02336164 + stmdb sp!, {r4, lr} + cmp r0, #0 + cmpge r1, #0 + blt _02336180 + cmp r0, #0x38 + cmplt r1, #0x20 + blt _023361A8 +_02336180: + ldr r0, _023361C8 ; =0x02353724 + ldr lr, _023361CC ; =0x0237CAB8 + ldr r4, [r0] + mov ip, lr + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + ldr r1, [r4] + mov r0, ip + str r1, [lr] + ldmia sp!, {r4, pc} +_023361A8: + ldr r3, _023361D0 ; =0x02353538 + mov r2, #0xe0 + ldr r3, [r3] + mla r2, r1, r2, r3 + add r0, r2, r0, lsl #2 + add r0, r0, #0xd000 + ldr r0, [r0, #0x2e4] + ldmia sp!, {r4, pc} + .align 2, 0 +_023361C8: .word 0x02353724 +_023361CC: .word 0x0237CAB8 +_023361D0: .word 0x02353538 + arm_func_end GetTileSafe + + arm_func_start ov29_023361D4 +ov29_023361D4: ; 0x023361D4 + ldr r0, _02336200 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0 + beq _023361F8 + cmp r0, #0xa5 + movlo r0, #1 + bxlo lr +_023361F8: + mov r0, #0 + bx lr + .align 2, 0 +_02336200: .word 0x02353538 + arm_func_end ov29_023361D4 + + arm_func_start ov29_02336204 +ov29_02336204: ; 0x02336204 + ldr r0, _0233621C ; =0x02353538 + ldr ip, _02336220 ; =ov10_022C2574 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + bx ip + .align 2, 0 +_0233621C: .word 0x02353538 +_02336220: .word ov10_022C2574 + arm_func_end ov29_02336204 + + arm_func_start ov29_02336224 +ov29_02336224: ; 0x02336224 + stmdb sp!, {r3, lr} + bl IsGoldenChamber + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _0233625C ; =0x02353538 + mov r3, #0x3c + ldr r0, [r1] + mov r2, #0x6f + add r0, r0, #0x4000 + strh r3, [r0, #0xd4] + ldr r0, [r1] + add r0, r0, #0x4000 + strb r2, [r0, #0xda] + ldmia sp!, {r3, pc} + .align 2, 0 +_0233625C: .word 0x02353538 + arm_func_end ov29_02336224 + + arm_func_start ov29_02336260 +ov29_02336260: ; 0x02336260 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, #0 + strh r6, [sp, #2] + add r4, sp, #0 + mov r5, r6 + b _023362C0 +_0233627C: + strh r5, [sp] + b _023362A8 +_02336284: + mov r0, r4 + bl ov29_02337B2C + cmp r0, #0 + addne r0, r6, #1 + movne r0, r0, lsl #0x10 + movne r6, r0, asr #0x10 + ldrsh r0, [sp] + add r0, r0, #1 + strh r0, [sp] +_023362A8: + ldrsh r0, [sp] + cmp r0, #0x38 + blt _02336284 + ldrsh r0, [sp, #2] + add r0, r0, #1 + strh r0, [sp, #2] +_023362C0: + ldrsh r0, [sp, #2] + cmp r0, #0x20 + blt _0233627C + ldr r1, _023362E4 ; =0x02353538 + ldr r0, _023362E8 ; =0x00012AF8 + ldr r1, [r1] + strh r6, [r1, r0] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_023362E4: .word 0x02353538 +_023362E8: .word 0x00012AF8 + arm_func_end ov29_02336260 + + arm_func_start ov29_023362EC +ov29_023362EC: ; 0x023362EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov ip, #0 + ldr r8, _023363BC ; =0x02353538 + mov r2, ip + mov r5, #0x14 + mov r6, #0x460 + mov r7, #0xe0 +_02336308: + mul lr, ip, r6 + mul r4, ip, r7 + mov r3, r2 +_02336314: + ldr r1, [r8] + add r0, r1, #0xe0 + add r0, r0, #0x4000 + add r0, r0, lr + mla r0, r3, r5, r0 + add r1, r4, r1 + add r1, r1, r3, lsl #2 + add r1, r1, #0xd000 + add r3, r3, #1 + str r0, [r1, #0x2e4] + cmp r3, #0x38 + blt _02336314 + add ip, ip, #1 + cmp ip, #0x20 + blt _02336308 + ldr r1, _023363BC ; =0x02353538 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x4000 + strh r2, [r0, #0xd4] + ldr r0, [r1] + add r0, r0, #0x4000 + strh r2, [r0, #0xd6] + ldr r0, [r1] + add r0, r0, #0x12000 + strb r2, [r0, #0xaa8] + bl ov29_023369F8 + ldr r1, _023363BC ; =0x02353538 + mov r2, #0 + ldr r0, [r1] + add r0, r0, #0x4000 + str r2, [r0, #0xd0] + ldr r0, [r1] + add r0, r0, #0x4000 + strb r2, [r0, #0xc8] + ldr r0, [r1] + add r0, r0, #0x12000 + strb r2, [r0, #0xb24] + ldr r0, [r1] + add r0, r0, #0x12000 + strb r2, [r0, #0xb25] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023363BC: .word 0x02353538 + arm_func_end ov29_023362EC + + arm_func_start ov29_023363C0 +ov29_023363C0: ; 0x023363C0 + ldr r3, _023363E8 ; =0x02353538 + ldr r2, [r3] + add r2, r2, #0xcc00 + ldrsh r2, [r2, #0xe4] + strh r2, [r0] + ldr r0, [r3] + add r0, r0, #0xcc00 + ldrsh r0, [r0, #0xe6] + strh r0, [r1] + bx lr + .align 2, 0 +_023363E8: .word 0x02353538 + arm_func_end ov29_023363C0 + + arm_func_start ov29_023363EC +ov29_023363EC: ; 0x023363EC + ldr r2, _02336424 ; =0x02353538 + mov ip, #0 + ldr r2, [r2] + add r2, r2, #0xcc00 + ldrsh r3, [r2, #0xe4] + cmp r3, r0 + ldreqsh r0, [r2, #0xe6] + cmpeq r0, r1 + moveq ip, #1 + cmp ip, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02336424: .word 0x02353538 + arm_func_end ov29_023363EC + + arm_func_start GetStairsRoom +GetStairsRoom: ; 0x02336428 + stmdb sp!, {r3, lr} + ldr r0, _0233644C ; =0x02353538 + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe4] + ldrsh r1, [r1, #0xe6] + bl GetTile + ldrb r0, [r0, #7] + ldmia sp!, {r3, pc} + .align 2, 0 +_0233644C: .word 0x02353538 + arm_func_end GetStairsRoom + + arm_func_start ov29_02336450 +ov29_02336450: ; 0x02336450 + ldr r0, _0233645C ; =0x02353724 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_0233645C: .word 0x02353724 + arm_func_end ov29_02336450 + + arm_func_start ov29_02336460 +ov29_02336460: ; 0x02336460 + stmdb sp!, {r4, lr} + ldr r1, _02336598 ; =0x02353538 + ldr r0, _0233659C ; =0x0237CAAC + ldr r1, [r1] + mov r2, #0 + add r1, r1, #0x4000 + ldrsh r4, [r1, #0xd4] + mov r1, r4 + bl ov10_022C25EC + ldr r1, _023365A0 ; =0x0237CAA0 + mov r0, #0 + ldr ip, [r1, #0x14] + ldr r3, _023365A4 ; =0x02353724 + mov r2, r0 + mov r1, #1 + str ip, [r3, #4] + bl GetBgRegionArea + mov r1, r4 + mov r2, #0 + bl ov10_022C2588 + ldr r0, _02336598 ; =0x02353538 + mov r1, r4 + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x2a8 + add r0, r0, #0x10000 + bl ov10_022C26BC + ldr r1, _02336598 ; =0x02353538 + ldr r0, _023365A8 ; =0x00012162 + ldr r2, [r1] + mov r1, r4 + add r0, r2, r0 + mov r2, #0 + bl ov10_022C2720 + mov r0, #0 + mov r1, r0 + bl ov29_022E9F80 + ldr r0, _023365AC ; =0x0237CAA0 + mov r1, r4 + mov r2, #0 + bl ov10_022C2654 + ldr r0, _023365A0 ; =0x0237CAA0 + mov r1, #0x20 + ldr r0, [r0, #8] + bl ov29_022DE0EC + ldr r1, _023365B0 ; =0x0237C9B8 + mov r4, #0 + mov r3, #1 + strb r4, [r1] + strb r3, [r1, #1] + mov r0, #2 + strb r0, [r1, #2] + mov r0, #3 + strb r0, [r1, #3] + ldr r0, _02336598 ; =0x02353538 + ldr r2, _023365B4 ; =0x020A1AE8 + ldr ip, [r0] + add r0, ip, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r2, r0] + cmp r0, #1 + streqb r3, [r1, #4] + streqb r4, [r1, #5] + strneb r4, [r1, #4] + strneb r3, [r1, #5] + add r0, ip, #0x4000 + ldrsh r0, [r0, #0xd4] + sub r0, r0, #0x1a + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + ldrls r0, _023365B0 ; =0x0237C9B8 + movls r1, #0 + strlsb r1, [r0, #4] + strlsb r1, [r0, #5] + ldmia sp!, {r4, pc} + .align 2, 0 +_02336598: .word 0x02353538 +_0233659C: .word 0x0237CAAC +_023365A0: .word 0x0237CAA0 +_023365A4: .word 0x02353724 +_023365A8: .word 0x00012162 +_023365AC: .word 0x0237CAA0 +_023365B0: .word 0x0237C9B8 +_023365B4: .word 0x020A1AE8 + arm_func_end ov29_02336460 + + arm_func_start ov29_023365B8 +ov29_023365B8: ; 0x023365B8 + stmdb sp!, {r3, lr} + ldr r0, _023365DC ; =0x0237CAAC + bl ov10_022C2638 + ldr r0, _023365E0 ; =0x0237CAA0 + bl ov10_022C26A0 + ldr r0, _023365E4 ; =0x02353724 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_023365DC: .word 0x0237CAAC +_023365E0: .word 0x0237CAA0 +_023365E4: .word 0x02353724 + arm_func_end ov29_023365B8 + + arm_func_start ov29_023365E8 +ov29_023365E8: ; 0x023365E8 + stmdb sp!, {r3, lr} + ldr r0, _02336648 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + sub r1, r0, #0x1a + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + ldrls r1, _0233664C ; =0x02352B60 + ldrls r0, _02336650 ; =0x02353724 + strls r1, [r0] + ldmlsia sp!, {r3, pc} + bl ov29_022E0378 + cmp r0, #0 + ldrne r1, _02336654 ; =0x02352B88 + ldrne r0, _02336650 ; =0x02353724 + strne r1, [r0] + ldreq r1, _02336658 ; =0x02352B74 + ldreq r0, _02336650 ; =0x02353724 + streq r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02336648: .word 0x02353538 +_0233664C: .word 0x02352B60 +_02336650: .word 0x02353724 +_02336654: .word 0x02352B88 +_02336658: .word 0x02352B74 + arm_func_end ov29_023365E8 + + arm_func_start ov29_0233665C +ov29_0233665C: ; 0x0233665C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_02336668: + mov r5, r4 +_0233666C: + mov r0, r5 + mov r1, r6 + bl ov29_02336694 + add r5, r5, #1 + cmp r5, #0x38 + blt _0233666C + add r6, r6, #1 + cmp r6, #0x20 + blt _02336668 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0233665C + + arm_func_start ov29_02336694 +ov29_02336694: ; 0x02336694 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + movs sb, r0 + mov r8, r1 + bmi _023369E8 + cmp r8, #0 + blt _023369E8 + cmp sb, #0x38 + cmplt r8, #0x20 + bge _023369E8 + bl GetTile + ldr r1, _023369F0 ; =0x02353538 + ldrh r2, [r0] + ldr r4, [r1] + add r0, r4, #0x4000 + ldrsh r1, [r0, #0xd4] + and r0, r2, #3 + str r0, [sp, #4] + cmp r1, #0xaa + blt _02336728 + cmp sb, #0x20 + cmplt r8, #0x20 + mov r0, sb + bge _02336714 + mov r1, r8 + bl GetTileSafe + add r2, r4, r8, lsl #6 + ldr r1, _023369F4 ; =0x00012162 + add r2, r2, sb, lsl #1 + ldrh r1, [r2, r1] + strh r1, [r0, #4] + b _023369E8 +_02336714: + mov r1, r8 + bl GetTileSafe + mov r1, #0 + strh r1, [r0, #4] + b _023369E8 +_02336728: + mov r0, sb + add r1, r8, #1 + bl GetTile + ldrh r2, [r0] + add r0, sb, #1 + add r1, r8, #1 + and sl, r2, #3 + bl GetTile + ldrh r2, [r0] + mov r1, r8 + add r0, sb, #1 + and r2, r2, #3 + str r2, [sp] + bl GetTile + ldrh r2, [r0] + add r0, sb, #1 + sub r1, r8, #1 + and fp, r2, #3 + bl GetTile + ldrh r2, [r0] + mov r0, sb + sub r1, r8, #1 + and r4, r2, #3 + bl GetTile + ldrh r2, [r0] + sub r0, sb, #1 + sub r1, r8, #1 + and r5, r2, #3 + bl GetTile + ldrh r2, [r0] + sub r0, sb, #1 + mov r1, r8 + and r6, r2, #3 + bl GetTile + ldrh r2, [r0] + sub r0, sb, #1 + add r1, r8, #1 + and r7, r2, #3 + bl GetTile + ldrh r1, [r0] + ldr r0, [sp, #4] + cmp r0, #1 + and r0, r1, #3 + bne _02336828 + cmp sl, #0 + mov sl, #0xff + ldr r1, [sp] + biceq sl, sl, #1 + cmp r1, #0 + biceq sl, sl, #2 + cmp fp, #0 + biceq sl, sl, #4 + cmp r4, #0 + biceq sl, sl, #8 + cmp r5, #0 + biceq sl, sl, #0x10 + cmp r6, #0 + biceq sl, sl, #0x20 + cmp r7, #0 + biceq sl, sl, #0x40 + cmp r0, #0 + biceq sl, sl, #0x80 + orr sl, sl, #0x200 + b _0233699C +_02336828: + ldr r1, [sp, #4] + cmp r1, #2 + bne _02336884 + cmp sl, #2 + mov sl, #0xff + ldr r1, [sp] + bicne sl, sl, #1 + cmp r1, #2 + bicne sl, sl, #2 + cmp fp, #2 + bicne sl, sl, #4 + cmp r4, #2 + bicne sl, sl, #8 + cmp r5, #2 + bicne sl, sl, #0x10 + cmp r6, #2 + bicne sl, sl, #0x20 + cmp r7, #2 + bicne sl, sl, #0x40 + cmp r0, #2 + bicne sl, sl, #0x80 + orr sl, sl, #0x100 + b _0233699C +_02336884: + cmp r1, #3 + bne _02336954 + ldr r1, _023369F0 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x4000 + ldrsh r1, [r1, #0xd4] + sub r1, r1, #0x1a + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #1 + bhi _02336904 + cmp sl, #3 + mov sl, #0 + ldr r1, [sp] + orreq sl, sl, #1 + cmp r1, #3 + orreq sl, sl, #2 + cmp fp, #3 + orreq sl, sl, #4 + cmp r4, #3 + orreq sl, sl, #8 + cmp r5, #3 + orreq sl, sl, #0x10 + cmp r6, #3 + orreq sl, sl, #0x20 + cmp r7, #3 + orreq sl, sl, #0x40 + cmp r0, #3 + orreq sl, sl, #0x80 + b _0233699C +_02336904: + cmp sl, #3 + mov sl, #0xff + ldr r1, [sp] + bicne sl, sl, #1 + cmp r1, #3 + bicne sl, sl, #2 + cmp fp, #3 + bicne sl, sl, #4 + cmp r4, #3 + bicne sl, sl, #8 + cmp r5, #3 + bicne sl, sl, #0x10 + cmp r6, #3 + bicne sl, sl, #0x20 + cmp r7, #3 + bicne sl, sl, #0x40 + cmp r0, #3 + bicne sl, sl, #0x80 + orr sl, sl, #0x100 + b _0233699C +_02336954: + cmp sl, #0 + mov sl, #0 + ldr r1, [sp] + orreq sl, sl, #1 + cmp r1, #0 + orreq sl, sl, #2 + cmp fp, #0 + orreq sl, sl, #4 + cmp r4, #0 + orreq sl, sl, #8 + cmp r5, #0 + orreq sl, sl, #0x10 + cmp r6, #0 + orreq sl, sl, #0x20 + cmp r7, #0 + orreq sl, sl, #0x40 + cmp r0, #0 + orreq sl, sl, #0x80 +_0233699C: + mov r0, #4 + bl RandIntSafe + mov r4, r0 + cmp r4, #3 + moveq r4, #0 + bl ov29_022E0880 + cmp r0, #0 + mov r0, sb + mov r1, r8 + movne r4, #0 + bl GetTileSafe + ldr r1, _023369F0 ; =0x02353538 + add r2, sl, sl, lsl #1 + ldr r1, [r1] + add r1, r1, r2 + add r1, r1, r4 + add r1, r1, #0x12000 + ldrb r1, [r1, #0x162] + strh r1, [r0, #4] +_023369E8: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023369F0: .word 0x02353538 +_023369F4: .word 0x00012162 + arm_func_end ov29_02336694 + + arm_func_start ov29_023369F8 +ov29_023369F8: ; 0x023369F8 + ldr r1, _02336A48 ; =0x02353538 + mov ip, #0 + mvn r3, #0 + mov r2, #0xff +_02336A08: + ldr r0, [r1] + add r0, r0, ip, lsl #2 + add r0, r0, #0xcc00 + strh r3, [r0, #0xec] + ldr r0, [r1] + add r0, r0, ip, lsl #2 + add r0, r0, #0xcc00 + strh r3, [r0, #0xee] + ldr r0, [r1] + add r0, r0, ip + add r0, r0, #0xc000 + add ip, ip, #1 + strb r2, [r0, #0xd0c] + cmp ip, #8 + blt _02336A08 + bx lr + .align 2, 0 +_02336A48: .word 0x02353538 + arm_func_end ov29_023369F8 + + arm_func_start ov29_02336A4C +ov29_02336A4C: ; 0x02336A4C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_02336A58: + mov r5, r4 +_02336A5C: + mov r0, r5 + mov r1, r6 + bl ov29_02336A84 + add r5, r5, #1 + cmp r5, #0x38 + blt _02336A5C + add r6, r6, #1 + cmp r6, #0x20 + blt _02336A58 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_02336A4C + + arm_func_start ov29_02336A84 +ov29_02336A84: ; 0x02336A84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x28 + mov r4, r1 + mov r6, #0 + add r1, r4, #1 + mov r5, r0 + mov r7, r6 + mov r8, r6 + bl GetTile + ldrh r2, [r0] + add r0, r5, #1 + add r1, r4, #1 + and r2, r2, #3 + str r2, [sp, #8] + bl GetTile + ldrh r2, [r0] + mov r1, r4 + add r0, r5, #1 + and r2, r2, #3 + str r2, [sp, #0xc] + bl GetTile + ldrh r1, [r0] + sub sb, r4, #1 + add r0, r5, #1 + and r1, r1, #3 + str r1, [sp, #0x10] + mov r1, sb + bl GetTile + ldrh r2, [r0] + mov r0, r5 + mov r1, sb + and r2, r2, #3 + str r2, [sp, #0x14] + bl GetTile + ldrh r2, [r0] + mov r1, sb + sub sb, r5, #1 + and r2, r2, #3 + mov r0, sb + str r2, [sp, #0x18] + bl GetTile + ldrh r2, [r0] + mov r0, sb + mov r1, r4 + and r2, r2, #3 + str r2, [sp, #0x1c] + bl GetTile + ldrh r2, [r0] + mov r0, sb + add r1, r4, #1 + and r2, r2, #3 + str r2, [sp, #0x20] + bl GetTile + ldrh r1, [r0] + ldr r0, [sp, #8] + ldr r2, [sp, #0x10] + cmp r0, #1 + and r0, r1, #3 + orreq r6, r6, #1 + str r0, [sp, #0x24] + cmp r2, #1 + ldr r3, [sp, #0x18] + orreq r6, r6, #4 + cmp r3, #1 + ldr ip, [sp, #0x20] + orreq r6, r6, #0x10 + cmp ip, #1 + ldr r0, [sp, #8] + orreq r6, r6, #0x40 + cmp r0, #0 + beq _02336BB4 + ldr r0, [sp, #0xc] + cmp r0, #1 + bne _02336BB4 + cmp r2, #0 + orrne r6, r6, #2 +_02336BB4: + cmp r2, #0 + beq _02336BD0 + ldr r0, [sp, #0x14] + cmp r0, #1 + bne _02336BD0 + cmp r3, #0 + orrne r6, r6, #8 +_02336BD0: + cmp r3, #0 + beq _02336BEC + ldr r0, [sp, #0x1c] + cmp r0, #1 + bne _02336BEC + cmp ip, #0 + orrne r6, r6, #0x20 +_02336BEC: + cmp ip, #0 + beq _02336C0C + ldr r0, [sp, #0x24] + cmp r0, #1 + bne _02336C0C + ldr r0, [sp, #8] + cmp r0, #0 + orrne r6, r6, #0x80 +_02336C0C: + mov r1, #0 + mov fp, r1 + add lr, sp, #0 + mov sb, #1 + add r0, sp, #8 +_02336C20: + ldr sl, [r0, r1, lsl #2] + sub sl, sl, #1 + cmp sl, #1 + strlsb sb, [lr, r1] + strhib fp, [lr, r1] + add r1, r1, #1 + cmp r1, #8 + blt _02336C20 + ldrb r0, [sp] + mov sb, #0xff + mov r1, r4 + cmp r0, #0 + ldrb r0, [sp, #2] + orrne r7, r7, #1 + cmp r0, #0 + ldrb r0, [sp, #4] + orrne r7, r7, #4 + cmp r0, #0 + ldrb r0, [sp, #6] + orrne r7, r7, #0x10 + cmp r0, #0 + ldr r0, [sp, #8] + orrne r7, r7, #0x40 + cmp r0, #0 + ldrneb r0, [sp, #1] + cmpne r0, #0 + cmpne r2, #0 + orrne r7, r7, #2 + cmp r2, #0 + ldrneb r0, [sp, #3] + cmpne r0, #0 + cmpne r3, #0 + orrne r7, r7, #8 + cmp r3, #0 + ldrneb r0, [sp, #5] + cmpne r0, #0 + cmpne ip, #0 + orrne r7, r7, #0x20 + cmp ip, #0 + ldrneb r0, [sp, #7] + cmpne r0, #0 + ldrne r0, [sp, #8] + cmpne r0, #0 + ldr r0, [sp, #8] + orrne r7, r7, #0x80 + cmp r0, #0 + orrne r8, r8, #1 + cmp r2, #0 + orrne r8, r8, #4 + cmp r3, #0 + orrne r8, r8, #0x10 + cmp ip, #0 + ldr r0, [sp, #8] + orrne r8, r8, #0x40 + cmp r0, #0 + ldrne r0, [sp, #0xc] + cmpne r0, #0 + cmpne r2, #0 + orrne r8, r8, #2 + cmp r2, #0 + ldrne r0, [sp, #0x14] + cmpne r0, #0 + cmpne r3, #0 + orrne r8, r8, #8 + cmp r3, #0 + ldrne r0, [sp, #0x1c] + cmpne r0, #0 + cmpne ip, #0 + orrne r8, r8, #0x20 + cmp ip, #0 + ldrne r0, [sp, #0x24] + cmpne r0, #0 + ldrne r0, [sp, #8] + cmpne r0, #0 + orrne r8, r8, #0x80 + cmp r5, #1 + bicle sb, sb, #0xe0 + cmp r4, #1 + bicle sb, sb, #0x38 + cmp r5, #0x36 + bicge sb, sb, #0xe + cmp r4, #0x1e + mov r0, r5 + bicge sb, sb, #0x83 + bl GetTileSafe + strb r6, [r0, #8] + mov r0, r5 + mov r1, r4 + bl GetTileSafe + strb r7, [r0, #9] + mov r0, r5 + mov r1, r4 + bl GetTileSafe + strb r8, [r0, #0xa] + mov r0, r5 + mov r1, r4 + bl GetTileSafe + strb sb, [r0, #0xb] + add sp, sp, #0x28 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02336A84 + + arm_func_start ov29_02336DB0 +ov29_02336DB0: ; 0x02336DB0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, r1 + mov r1, r2 + mov r5, r3 + bl GetTile + mov r4, r0 + ldrh r0, [r4] + tst r0, #0x200 + beq _02336DE0 + ldr r0, _02336F48 ; =0x02352F14 + bl DebugPrint0__0200C1FC +_02336DE0: + ldrh r1, [r4] + tst r1, #0x1000 + bne _02336DF4 + tst r1, #0x2000 + beq _02336E04 +_02336DF4: + add r0, r6, #0x32 + add r0, r0, #0xe000 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336E04: + tst r1, #0x20 + addne r0, r6, #0x20 + addne r0, r0, #0xe000 + addne r0, r0, r5, lsl #1 + ldmneia sp!, {r4, r5, r6, pc} + ldrb r0, [sp, #0x14] + cmp r0, #0 + beq _02336E40 + ldrh r1, [r4, #4] + add r0, r6, #0x1e4 + add r2, r0, #0xc000 + mov r0, #0x12 + mla r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336E40: + ldrh r0, [r4, #2] + tst r0, #4 + addne r0, r6, #0x44 + addne r0, r0, #0xe000 + addne r0, r0, r5, lsl #1 + ldmneia sp!, {r4, r5, r6, pc} + ldr r2, [r4, #0x10] + cmp r2, #0 + beq _02336EFC + ldrb r0, [r2, #0x20] + cmp r0, #0 + ldreqb r0, [sp, #0x10] + cmpeq r0, #0 + movne r0, #1 + moveq r0, #0 + ands r1, r0, #0xff + beq _02336EB0 + ldr r0, [r2] + cmp r0, #2 + bne _02336EB0 + ldr r1, [r2, #0xb4] + add r0, r6, #0x204 + ldrb r1, [r1] + add r2, r0, #0xdc00 + mov r0, #0x12 + mla r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336EB0: + cmp r1, #0 + beq _02336EE0 + ldr r0, [r2] + cmp r0, #5 + bne _02336EE0 + ldrsh r1, [r6, #0x14] + add r0, r6, #0x204 + add r2, r0, #0xdc00 + mov r0, #0x12 + smlabb r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336EE0: + ldrh r1, [r4, #4] + add r0, r6, #0x1e4 + add r2, r0, #0xc000 + mov r0, #0x12 + mla r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336EFC: + ldrb r0, [sp, #0x18] + cmp r0, #0 + bne _02336F2C + tst r1, #0x200 + beq _02336F2C + ldrsh r1, [r6, #0x14] + add r0, r6, #0x204 + add r2, r0, #0xdc00 + mov r0, #0x12 + smlabb r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} +_02336F2C: + ldrh r1, [r4, #4] + add r0, r6, #0x1e4 + add r2, r0, #0xc000 + mov r0, #0x12 + mla r0, r1, r0, r2 + add r0, r0, r5, lsl #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02336F48: .word 0x02352F14 + arm_func_end ov29_02336DB0 + + arm_func_start ov29_02336F4C +ov29_02336F4C: ; 0x02336F4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x30 + ldr r0, _02337108 ; =0x02353538 + ldr sl, [r0] + add r1, sl, #0x1a000 + ldrb r0, [r1, #0x245] + str r0, [sp, #0x18] + ldrb fp, [r1, #0x244] + bl IsSecretBazaar__023385C4 + ldr r1, _0233710C ; =0x0001A224 + ldr r2, _02337110 ; =0x02352B9C + ldrsh r3, [sl, r1] + ldr r1, _02337114 ; =0x02352D58 + mov sb, r3, asr #3 + str r0, [sp, #0x14] + add r0, sb, #0x1e + mov r0, r0, lsl #1 + ldrsh r7, [r2, r0] + ldrsh r5, [r1, r0] + mov r0, #0 + str r0, [sp, #0x10] +_02336FA0: + ldr r0, _02337118 ; =0x0001A226 + add r1, sl, #0xc4 + ldrsh r3, [sl, r0] + ldr r0, _02337110 ; =0x02352B9C + mov r2, r5, lsl #0x10 + mov r3, r3, asr #3 + sub r4, r3, #1 + add r3, r0, r4, lsl #1 + ldr r0, _02337114 ; =0x02352D58 + ldrsh r8, [r3, #0x3c] + add r0, r0, r4, lsl #1 + ldrsh r6, [r0, #0x3c] + add r0, r1, #0x4000 + add r3, r8, r8, lsl #1 + mov r1, r2, asr #0x10 + add r2, r7, r3 + mov r2, r2, lsl #0x10 + str fp, [sp] + mov r3, r2, asr #0x10 + ldr r2, [sp, #0x18] + and sb, sb, #0x3f + str r2, [sp, #4] + ldr r2, [sp, #0x14] + str r2, [sp, #8] + mov r2, r6, lsl #0x10 + mov r2, r2, asr #0x10 + bl ov29_02336DB0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x24] + add r0, sl, #0xc4 + str r0, [sp, #0x2c] + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x28] + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x20] +_02337044: + mov r0, #0 + str r0, [sp] + ldr r3, [sp, #0x1c] + and r4, r4, #0x1f + ldrh r2, [r3], #6 + str r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + mov r1, r4 + mov r3, #1 + bl sub_02051D8C + add r8, r8, #1 + add r4, r4, #1 + cmp r8, #3 + bne _023370B8 + str fp, [sp] + ldr r0, [sp, #0x18] + add r6, r6, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + mov r2, r6, lsl #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x28] + add r0, r0, #0x4000 + mov r2, r2, asr #0x10 + mov r8, #0 + bl ov29_02336DB0 + str r0, [sp, #0x1c] +_023370B8: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0x1b + blt _02337044 + ldr r0, [sp, #0x10] + add r7, r7, #1 + add r0, r0, #1 + cmp r7, #3 + add sb, sb, #1 + addeq r5, r5, #1 + moveq r7, #0 + str r0, [sp, #0x10] + cmp r0, #0x21 + blt _02336FA0 + mov r0, #1 + mov r1, #0 + bl sub_02051E60 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337108: .word 0x02353538 +_0233710C: .word 0x0001A224 +_02337110: .word 0x02352B9C +_02337114: .word 0x02352D58 +_02337118: .word 0x0001A226 + arm_func_end ov29_02336F4C + + arm_func_start ov29_0233711C +ov29_0233711C: ; 0x0233711C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r2, _02337294 ; =0x02353538 + mov r4, r1 + ldr sl, [r2] + mov r5, r0 + add r1, sl, #0x1a000 + ldrb r0, [r1, #0x245] + str r0, [sp, #0x18] + ldrb fp, [r1, #0x244] + bl IsSecretBazaar__023385C4 + ldr r2, _02337298 ; =0x0001A224 + ldr r1, _0233729C ; =0x02352B9C + add r3, r2, #2 + ldrsh r6, [sl, r2] + ldrsh r2, [sl, r3] + add r3, r6, r5 + str r0, [sp, #0x14] + add r0, r2, r4 + mov r0, r0, asr #3 + sub sb, r0, #1 + add r0, sb, #0x1e + mov r2, r0, lsl #1 + str fp, [sp] + ldr r0, [sp, #0x18] + mov r8, r3, asr #3 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + ldrsh r7, [r1, r2] + str r0, [sp, #8] + add r0, r8, #0x1e + mov r3, r0, lsl #1 + ldrsh r6, [r1, r3] + ldr r1, _023372A0 ; =0x02352D58 + add r0, sl, #0xc4 + ldrsh r4, [r1, r3] + ldrsh r5, [r1, r2] + add r3, r7, r7, lsl #1 + add r3, r6, r3 + mov r1, r4, lsl #0x10 + mov r2, r5, lsl #0x10 + mov r3, r3, lsl #0x10 + add r0, r0, #0x4000 + mov r1, r1, asr #0x10 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + bl ov29_02336DB0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, r4, lsl #0x10 + mov r1, r6, lsl #0x10 + add r4, sl, #0xc4 + mov r6, r0, asr #0x10 + mov sl, r1, asr #0x10 +_023371F8: + mov r0, #0 + ldr r3, [sp, #0x10] + str r0, [sp] + ldrh r2, [r3], #6 + and r8, r8, #0x3f + and sb, sb, #0x1f + str r3, [sp, #0x10] + mov r0, r8 + mov r1, sb + mov r3, #1 + bl sub_02051D8C + add r7, r7, #1 + add sb, sb, #1 + cmp r7, #3 + bne _0233726C + str fp, [sp] + ldr r0, [sp, #0x18] + add r5, r5, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + mov r2, r5, lsl #0x10 + str r0, [sp, #8] + add r0, r4, #0x4000 + mov r1, r6 + mov r2, r2, asr #0x10 + mov r3, sl + mov r7, #0 + bl ov29_02336DB0 + str r0, [sp, #0x10] +_0233726C: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0x1b + blt _023371F8 + mov r0, #1 + mov r1, #0 + bl sub_02051E60 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337294: .word 0x02353538 +_02337298: .word 0x0001A224 +_0233729C: .word 0x02352B9C +_023372A0: .word 0x02352D58 + arm_func_end ov29_0233711C + + arm_func_start ov29_023372A4 +ov29_023372A4: ; 0x023372A4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + ldr r2, _02337418 ; =0x02353538 + mov r4, r1 + ldr sl, [r2] + mov r5, r0 + add r1, sl, #0x1a000 + ldrb r0, [r1, #0x245] + str r0, [sp, #0x18] + ldrb fp, [r1, #0x244] + bl IsSecretBazaar__023385C4 + ldr r2, _0233741C ; =0x0001A224 + ldr r1, _02337420 ; =0x02352B9C + add r3, r2, #2 + ldrsh r6, [sl, r2] + ldrsh r2, [sl, r3] + add r3, r6, r5 + str r0, [sp, #0x14] + add r0, r2, r4 + mov r8, r0, asr #3 + add r0, r8, #0x1e + mov r7, r3, asr #3 + str fp, [sp] + mov r2, r0, lsl #1 + ldr r0, [sp, #0x18] + ldr r3, _02337424 ; =0x02352D58 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + ldrsh r5, [r3, r2] + str r0, [sp, #8] + add r0, r7, #0x1e + mov r4, r0, lsl #1 + ldrsh r6, [r1, r4] + ldrsh r1, [r1, r2] + add r0, sl, #0xc4 + mov r2, r5, lsl #0x10 + ldrsh r4, [r3, r4] + add sb, r1, r1, lsl #1 + add r3, r6, sb + mov r1, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + add r0, r0, #0x4000 + mov r1, r1, asr #0x10 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + bl ov29_02336DB0 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0xc] + mov r0, r5, lsl #0x10 + mov r1, sb, lsl #0x10 + add r5, sl, #0xc4 + mov sb, r0, asr #0x10 + mov sl, r1, asr #0x10 +_0233737C: + mov r0, #0 + ldr r3, [sp, #0x10] + str r0, [sp] + ldrh r2, [r3], #2 + and r7, r7, #0x3f + and r8, r8, #0x1f + str r3, [sp, #0x10] + mov r0, r7 + mov r1, r8 + mov r3, #1 + bl sub_02051D8C + add r6, r6, #1 + add r7, r7, #1 + cmp r6, #3 + bne _023373F0 + str fp, [sp] + ldr r0, [sp, #0x18] + add r4, r4, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + mov r1, r4, lsl #0x10 + str r0, [sp, #8] + add r0, r5, #0x4000 + mov r1, r1, asr #0x10 + mov r2, sb + mov r3, sl + mov r6, #0 + bl ov29_02336DB0 + str r0, [sp, #0x10] +_023373F0: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0x21 + blt _0233737C + mov r0, #1 + mov r1, #0 + bl sub_02051E60 + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337418: .word 0x02353538 +_0233741C: .word 0x0001A224 +_02337420: .word 0x02352B9C +_02337424: .word 0x02352D58 + arm_func_end ov29_023372A4 + + arm_func_start ov29_02337428 +ov29_02337428: ; 0x02337428 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + ldr r5, _02337780 ; =0x02353538 + str r2, [sp, #4] + mov r4, r0 + mov r7, r1 + mov r6, r3 + ldr r5, [r5] + bl GetLeader + ldr r1, _02337784 ; =0x0001A224 + ldr r2, _02337780 ; =0x02353538 + ldrsh r8, [r5, r1] + ldr r1, [r2] + ldr r2, _02337788 ; =0x0235171C + add r1, r1, #0x1a000 + strb r6, [r1, #0x251] + mov r3, r7, lsl #2 + add r1, r2, r7, lsl #2 + ldrsh r3, [r2, r3] + ldrsh sl, [r1, #2] + ldrsh r6, [r4] + ldrsh r7, [r4, #2] + str r0, [sp, #0x20] + mov sb, r8, asr #3 + mov r2, #0 + add r1, sp, #0x2c +_02337490: + mov r0, r2, lsl #2 + strh r6, [r1, r0] + add r0, r1, r2, lsl #2 + add r2, r2, #1 + strh r7, [r0, #2] + cmp r2, #6 + add r6, r6, r3 + add r7, r7, sl + blt _02337490 + add r0, sb, #0x1e + mov r2, r0, lsl #1 + ldr r1, _0233778C ; =0x02352B9C + ldr r0, _02337790 ; =0x02352D58 + ldrsh r8, [r1, r2] + ldrsh r6, [r0, r2] + mov r0, #0 + str r0, [sp, #0xc] +_023374D4: + ldr r0, _02337794 ; =0x0001A226 + ldr r2, _0233778C ; =0x02352B9C + ldrsh r3, [r5, r0] + ldr r0, [sp, #4] + ldr r1, _02337790 ; =0x02352D58 + mov fp, r3, asr #3 + cmp r0, #0 + add r0, r2, fp, lsl #1 + add r1, r1, fp, lsl #1 + ldrsh r0, [r0, #0x3c] + ldrsh r7, [r1, #0x3c] + strh r6, [sp, #0x28] + str r0, [sp, #0x1c] + add r0, r0, r0, lsl #1 + strh r7, [sp, #0x2a] + add sl, r8, r0 + beq _02337544 + ldrsh r0, [r4] + cmp r6, r0 + ldreqsh r0, [r4, #2] + cmpeq r7, r0 + addeq r0, r5, #0x150 + addeq r0, r0, #0x12000 + addeq sl, r0, sl, lsl #1 + addne r0, r5, #0x12c + addne r0, r0, #0x12000 + addne sl, r0, sl, lsl #1 + b _023375E8 +_02337544: + ldr r0, [sp, #0x20] + add r1, sp, #0x28 + bl ov29_022FF958 + cmp r0, #0 + bne _023375DC + ldr r0, [sp, #0x20] + add r1, sp, #0x28 + bl ov29_022E2930 + cmp r0, #0 + beq _023375DC + mov r0, #0 + add r2, sp, #0x2c + b _02337598 +_02337578: + mov r3, r0, lsl #2 + ldrsh r1, [r2, r3] + cmp r6, r1 + addeq r1, r2, r3 + ldreqsh r1, [r1, #2] + cmpeq r7, r1 + beq _023375A0 + add r0, r0, #1 +_02337598: + cmp r0, #6 + blt _02337578 +_023375A0: + cmp r0, #6 + bne _023375CC + bl sub_0204AED0 + cmp r0, #0 + ldrne r0, _02337798 ; =0x0001213E + addne r0, r5, r0 + addne sl, r0, sl, lsl #1 + addeq r0, r5, #0x12c + addeq r0, r0, #0x12000 + addeq sl, r0, sl, lsl #1 + b _023375E8 +_023375CC: + add r0, r5, #0x150 + add r0, r0, #0x12000 + add sl, r0, sl, lsl #1 + b _023375E8 +_023375DC: + add r0, r5, #0x12c + add r0, r0, #0x12000 + add sl, r0, sl, lsl #1 +_023375E8: + add r0, r5, #0x150 + add r0, r0, #0x12000 + add r0, r0, r8, lsl #1 + ldr r1, _02337798 ; =0x0001213E + str r0, [sp, #0x18] + add r0, r5, r1 + add r0, r0, r8, lsl #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #8] + add r0, r5, #0x12c + add r0, r0, #0x12000 + add r0, r0, r8, lsl #1 + str r0, [sp, #0x14] + mov r0, r6, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x24] +_0233762C: + mov r0, #0 + str r0, [sp] + ldrh r2, [sl], #6 + and sb, sb, #0x3f + and fp, fp, #0x1f + mov r0, sb + mov r1, fp + mov r3, #0 + bl sub_02051D8C + ldr r0, [sp, #0x1c] + add fp, fp, #1 + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #3 + bne _02337730 + ldr r0, [sp, #0x24] + add r7, r7, #1 + strh r0, [sp, #0x28] + ldr r0, [sp, #4] + cmp r0, #0 + mov r0, #0 + str r0, [sp, #0x1c] + strh r7, [sp, #0x2a] + beq _023376A8 + ldrsh r0, [r4] + cmp r6, r0 + ldreqsh r0, [r4, #2] + cmpeq r7, r0 + ldreq sl, [sp, #0x18] + ldrne sl, [sp, #0x14] + b _02337730 +_023376A8: + ldr r0, [sp, #0x20] + add r1, sp, #0x28 + bl ov29_022FF958 + cmp r0, #0 + bne _0233772C + ldr r0, [sp, #0x20] + add r1, sp, #0x28 + bl ov29_022E2930 + cmp r0, #0 + beq _0233772C + mov r0, #0 + b _02337700 +_023376D8: + mov r2, r0, lsl #2 + add r1, sp, #0x2c + ldrsh r1, [r1, r2] + cmp r6, r1 + addeq r1, sp, #0x2c + addeq r1, r1, r2 + ldreqsh r1, [r1, #2] + cmpeq r7, r1 + beq _02337708 + add r0, r0, #1 +_02337700: + cmp r0, #6 + blt _023376D8 +_02337708: + cmp r0, #6 + bne _02337724 + bl sub_0204AED0 + cmp r0, #0 + ldrne sl, [sp, #0x10] + ldreq sl, [sp, #0x14] + b _02337730 +_02337724: + ldr sl, [sp, #0x18] + b _02337730 +_0233772C: + ldr sl, [sp, #0x14] +_02337730: + ldr r0, [sp, #8] + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #0x19 + blt _0233762C + ldr r0, [sp, #0xc] + add r8, r8, #1 + add r0, r0, #1 + cmp r8, #3 + add sb, sb, #1 + addeq r6, r6, #1 + moveq r8, #0 + str r0, [sp, #0xc] + cmp r0, #0x21 + blt _023374D4 + mov r0, #0 + mov r1, r0 + bl sub_02051E60 + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337780: .word 0x02353538 +_02337784: .word 0x0001A224 +_02337788: .word 0x0235171C +_0233778C: .word 0x02352B9C +_02337790: .word 0x02352D58 +_02337794: .word 0x0001A226 +_02337798: .word 0x0001213E + arm_func_end ov29_02337428 + + arm_func_start ov29_0233779C +ov29_0233779C: ; 0x0233779C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, #0 + mov r5, r8 + mov r6, r8 +_023377B0: + mov r0, r8, lsl #0x10 + mov r7, r6 + mov r4, r0, asr #0x10 +_023377BC: + mov r0, r7, lsl #0x10 + mov r1, r4 + mov r2, r5 + mov r3, r5 + mov r0, r0, asr #0x10 + str r5, [sp] + bl sub_02051D8C + add r7, r7, #1 + cmp r7, #0x20 + blt _023377BC + add r8, r8, #1 + cmp r8, #0x20 + blt _023377B0 + mov r0, #0 + mov r1, r0 + bl sub_02051E60 + ldr r0, _02337818 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x1a000 + strb r1, [r0, #0x251] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02337818: .word 0x02353538 + arm_func_end ov29_0233779C + + arm_func_start ov29_0233781C +ov29_0233781C: ; 0x0233781C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + mov r4, r7 + mov r5, r7 +_0233782C: + mov r6, r5 +_02337830: + mov r0, r6 + mov r1, r7 + bl GetTileSafe + add r6, r6, #1 + strh r4, [r0, #2] + cmp r6, #0x38 + blt _02337830 + add r7, r7, #1 + cmp r7, #0x20 + blt _0233782C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0233781C + + arm_func_start ov29_0233785C +ov29_0233785C: ; 0x0233785C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r1, _02337A34 ; =0x0000270F + mov r3, #0 + ldr r6, _02337A38 ; =0x02353538 + mov sb, r3 + rsb r0, r1, #0 + mov r4, #0x1c +_02337878: + mul r2, r3, r4 + ldr r5, [r6] + add r3, r3, #1 + add r5, r5, r2 + add r5, r5, #0xe000 + strb sb, [r5, #0xee8] + ldr r5, [r6] + cmp r3, #0x20 + add r5, r5, r2 + add r5, r5, #0xe000 + strb sb, [r5, #0xee9] + ldr r5, [r6] + add r5, r5, r2 + add r5, r5, #0xee00 + strh r1, [r5, #0xea] + ldr r5, [r6] + add r5, r5, r2 + add r5, r5, #0xee00 + strh r1, [r5, #0xec] + ldr r5, [r6] + add r5, r5, r2 + add r5, r5, #0xee00 + strh r0, [r5, #0xee] + ldr r5, [r6] + add r2, r5, r2 + add r2, r2, #0xee00 + strh r0, [r2, #0xf0] + blt _02337878 + mov sl, sb +_023378EC: + add r5, sl, #1 + mov r0, sl, lsl #0x10 + mov r1, r5, lsl #0x10 + ldr fp, _02337A38 ; =0x02353538 + mov r8, #0 + mov r6, r0, asr #0x10 + mov r4, r1, asr #0x10 + mov r7, #1 +_0233790C: + mov r0, r8 + mov r1, sl + bl GetTile + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0233797C + mov r0, #0x1c + mul r2, r1, r0 + ldr r0, [fp] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + strb r7, [r0, r2] + add r0, r0, r2 + ldrsh r2, [r0, #2] + cmp r2, r8 + strgth r8, [r0, #2] + ldrsh r2, [r0, #4] + cmp r2, sl + strgth r6, [r0, #4] + ldrsh r3, [r0, #6] + add r2, r8, #1 + cmp r3, r2 + strlth r2, [r0, #6] + ldrsh r2, [r0, #8] + cmp r2, r5 + strlth r4, [r0, #8] + cmp sb, r1 + andlt sb, r1, #0xff +_0233797C: + add r8, r8, #1 + cmp r8, #0x38 + blt _0233790C + add sl, sl, #1 + cmp sl, #0x20 + blt _023378EC + mov r2, #0x18 + ldr r7, _02337A38 ; =0x02353538 + mov r1, #0 + mov r3, r2 + mov r4, r2 + mov r5, r2 + mov r6, #0x1c +_023379B0: + mul sl, r1, r6 + ldr r0, [r7] + add r0, r0, #0x2e8 + add r0, r0, #0xec00 + ldrb r8, [r0, sl] + add r0, r0, sl + cmp r8, #0 + beq _02337A10 + ldrsh r8, [r0, #2] + sub r8, r8, #1 + mul sl, r8, r2 + str sl, [r0, #0xc] + ldrsh r8, [r0, #4] + sub r8, r8, #1 + mul sl, r8, r3 + str sl, [r0, #0x10] + ldrsh r8, [r0, #6] + add r8, r8, #1 + mul sl, r8, r4 + str sl, [r0, #0x14] + ldrsh r8, [r0, #8] + add r8, r8, #1 + mul sl, r8, r5 + str sl, [r0, #0x18] +_02337A10: + add r1, r1, #1 + cmp r1, #0x20 + blt _023379B0 + ldr r0, _02337A38 ; =0x02353538 + add r1, sb, #1 + ldr r0, [r0] + add r0, r0, #0xe000 + strb r1, [r0, #0xee4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337A34: .word 0x0000270F +_02337A38: .word 0x02353538 + arm_func_end ov29_0233785C + + arm_func_start ov29_02337A3C +ov29_02337A3C: ; 0x02337A3C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r5, r0 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl GetTile + ldrb r4, [r0, #7] + bl ov29_022E333C + ldr r1, _02337B28 ; =0x02353538 + ldr r3, [r1] + add r1, r3, #0x1a000 + ldrb r2, [r1, #0x23e] + cmp r2, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r1, [r1, #0x250] + cmp r1, #0 + bne _02337A84 + cmp r4, #0xff + bne _02337AA0 +_02337A84: + ldrsh r2, [r5] + ldrsh r1, [r5, #2] + sub r4, r2, r0 + sub r7, r1, r0 + add r5, r2, r0 + add r6, r1, r0 + b _02337B1C +_02337AA0: + add r0, r3, #0x2e8 + add r1, r0, #0xec00 + mov r0, #0x1c + mla r2, r4, r0, r1 + ldrb r0, [r2, #1] + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, #1 + strb r0, [r2, #1] + ldrsh r1, [r2, #2] + ldrsh r0, [r2, #4] + ldrsh r5, [r2, #6] + ldrsh r6, [r2, #8] + sub r4, r1, #1 + sub r7, r0, #1 + b _02337B1C +_02337AE0: + mov r8, r4 + b _02337B10 +_02337AE8: + mov r0, r8 + mov r1, r7 + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, r7 + orr r2, r2, #3 + strh r2, [r0, #2] + mov r0, r8 + bl ov29_023391EC + add r8, r8, #1 +_02337B10: + cmp r8, r5 + ble _02337AE8 + add r7, r7, #1 +_02337B1C: + cmp r7, r6 + ble _02337AE0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02337B28: .word 0x02353538 + arm_func_end ov29_02337A3C + + arm_func_start ov29_02337B2C +ov29_02337B2C: ; 0x02337B2C + stmdb sp!, {r3, lr} + mov r1, r0 + ldrsh r0, [r1] + ldrsh r1, [r1, #2] + arm_func_end ov29_02337B2C + + arm_func_start ov29_02337B3C +ov29_02337B3C: ; 0x02337B3C + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r0] + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02337B3C + + arm_func_start ov29_02337B68 +ov29_02337B68: ; 0x02337B68 + stmdb sp!, {r3, lr} + mov r1, r0 + ldrsh r0, [r1] + ldrsh r1, [r1, #2] + bl GetTile + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02337B94 + ldr r1, [r0] + cmp r1, #1 + ldmeqia sp!, {r3, pc} +_02337B94: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_02337B68 + + arm_func_start ov29_02337B9C +ov29_02337B9C: ; 0x02337B9C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + arm_func_end ov29_02337B9C + + arm_func_start ov29_02337BA0 +ov29_02337BA0: ; 0x02337BA0 + mov r8, r0 + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + mov r5, #0 + bl GetTileSafe + ldrh r1, [r0] + tst r1, #3 + bne _02337C4C + ldrh r1, [r0] + tst r1, #0x100 + bne _02337C4C + tst r1, #0x10 + bne _02337C4C + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + mov r5, #1 + sub r7, r5, #2 + orr r1, r1, #1 + strh r1, [r0] + mov r4, r7 +_02337BF4: + mov r6, r4 +_02337BF8: + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + add r0, r6, r0 + add r1, r7, r1 + bl ov29_02336694 + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + add r0, r6, r0 + add r1, r7, r1 + bl ov29_02336A84 + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + add r0, r6, r0 + add r1, r7, r1 + bl ov29_023391EC + add r6, r6, #1 + cmp r6, #1 + ble _02337BF8 + add r7, r7, #1 + cmp r7, #1 + ble _02337BF4 +_02337C4C: + cmp r5, #0 + beq _02337C9C + arm_func_end ov29_02337BA0 + + arm_func_start ov29_02337C54 +ov29_02337C54: ; 0x02337C54 + ldr r4, _02337CA4 ; =0x02353538 + mov r6, #0 +_02337C5C: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb78] + mov r0, r7 + bl EntityIsValid__02337CA8 + cmp r0, #0 + beq _02337C84 + mov r0, r7 + bl ov29_02304BAC +_02337C84: + add r6, r6, #1 + cmp r6, #0x14 + blt _02337C5C + bl ov29_02336F4C + mov r0, r8 + bl ov29_022E66C4 +_02337C9C: + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02337CA4: .word 0x02353538 + arm_func_end ov29_02337C54 diff --git a/asm/overlay_29_02337CCC.s b/asm/overlay_29_02337CCC.s new file mode 100644 index 00000000..f3c50597 --- /dev/null +++ b/asm/overlay_29_02337CCC.s @@ -0,0 +1,15098 @@ + .include "asm/macros.inc" + .include "overlay_29_02337CCC.inc" + + .text + + arm_func_start ov29_02337CCC +ov29_02337CCC: ; 0x02337CCC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + ldrsh r0, [r6] + ldrsh r1, [r6, #2] + mov r4, #0 + bl GetTileSafe + ldrh r1, [r0] + tst r1, #3 + bne _02337D60 + ldrh r1, [r0] + tst r1, #0x100 + bne _02337D60 + tst r1, #0x10 + bne _02337D60 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + mov r4, #1 + sub r5, r4, #2 + orr r1, r1, #1 + strh r1, [r0] + ldrh r1, [r0, #2] + mov r7, r5 + orr r1, r1, #0x10 + strh r1, [r0, #2] +_02337D30: + mov r8, r7 +_02337D34: + ldrsh r0, [r6] + ldrsh r1, [r6, #2] + add r0, r8, r0 + add r1, r5, r1 + bl ov29_02336A84 + add r8, r8, #1 + cmp r8, #1 + ble _02337D34 + add r5, r5, #1 + cmp r5, #1 + ble _02337D30 +_02337D60: + mov r0, r4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov29_02337CCC + + arm_func_start ov29_02337D68 +ov29_02337D68: ; 0x02337D68 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + bl GetTileSafe + ldrh r1, [r0, #2] + tst r1, #0x10 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bic r1, r1, #0x10 + mvn r6, #0 + strh r1, [r0, #2] + mov r4, r6 +_02337D98: + mov r5, r4 +_02337D9C: + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + add r0, r5, r0 + add r1, r6, r1 + bl ov29_02336694 + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + add r0, r5, r0 + add r1, r6, r1 + bl ov29_023391EC + add r5, r5, #1 + cmp r5, #1 + ble _02337D9C + add r6, r6, #1 + cmp r6, #1 + ble _02337D98 + ldr r4, _02337E28 ; =0x02353538 + mov r5, #0 +_02337DE4: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb78] + mov r0, r6 + bl EntityIsValid__02337CA8 + cmp r0, #0 + beq _02337E0C + mov r0, r6 + bl ov29_02304BAC + arm_func_end ov29_02337D68 +_02337E0C: + add r5, r5, #1 + cmp r5, #0x14 + blt _02337DE4 + bl ov29_02336F4C + mov r0, r7 + bl ov29_022E66C4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02337E28: .word 0x02353538 + + arm_func_start ov29_02337E2C +ov29_02337E2C: ; 0x02337E2C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + bl ov29_02337E94 + cmp r0, #0 + ldrh r0, [r5] + beq _02337E54 + tst r0, #3 + moveq r4, #1 + b _02337E84 +_02337E54: + and r0, r0, #3 + cmp r0, #2 + bne _02337E80 + ldr r0, _02337E8C ; =0x02353538 + ldr r1, _02337E90 ; =0x020A1AE8 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + ldrb r0, [r1, r0] + cmp r0, #1 + bne _02337E84 +_02337E80: + mov r4, #1 +_02337E84: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02337E8C: .word 0x02353538 +_02337E90: .word 0x020A1AE8 + arm_func_end ov29_02337E2C + + arm_func_start ov29_02337E94 +ov29_02337E94: ; 0x02337E94 + ldr r0, _02337EB8 ; =0x02353538 + mov r1, #0xc + ldr r0, [r0] + ldr r2, _02337EBC ; =0x022C6327 + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + smulbb r0, r0, r1 + ldrb r0, [r2, r0] + bx lr + .align 2, 0 +_02337EB8: .word 0x02353538 +_02337EBC: .word 0x022C6327 + arm_func_end ov29_02337E94 + + arm_func_start ov29_02337EC0 +ov29_02337EC0: ; 0x02337EC0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl GetTileSafe + ldr r1, [r0, #0xc] + cmp r1, r4 + moveq r1, #0 + streq r1, [r0, #0xc] + ldmia sp!, {r4, pc} + arm_func_end ov29_02337EC0 + + arm_func_start ov29_02337EE8 +ov29_02337EE8: ; 0x02337EE8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r0, _02337F8C ; =0x02353538 + ldr r4, _02337F90 ; =0x0000022A + ldr r0, [r0] + ldr r6, _02337F94 ; =0x000003D7 + add r0, r0, #0x6b0 + add r0, r0, #0x28000 + mov sl, #0 + add r0, r0, #0x2b4 + mov sb, sl + add r8, r0, #0x4000 + sub r5, r4, #1 + sub r7, r6, #0x258 + add fp, sp, #0 + b _02337F68 +_02337F28: + add r0, r8, sb, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r0, #0 + beq _02337F70 + cmp r0, r7 + cmpne r0, r6 + cmpne r0, r5 + cmpne r0, r4 + movne r2, sl, lsl #1 + addne r1, sl, #1 + strneh r0, [fp, r2] + add r0, sb, #1 + movne r1, r1, lsl #0x10 + mov r0, r0, lsl #0x10 + movne sl, r1, asr #0x10 + mov sb, r0, asr #0x10 +_02337F68: + cmp sb, #0x10 + blt _02337F28 +_02337F70: + mov r0, sl + bl RandInt + add r1, sp, #0 + mov r0, r0, lsl #1 + ldrsh r0, [r1, r0] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02337F8C: .word 0x02353538 +_02337F90: .word 0x0000022A +_02337F94: .word 0x000003D7 + arm_func_end ov29_02337EE8 + + arm_func_start ov29_02337F98 +ov29_02337F98: ; 0x02337F98 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r0, _02338040 ; =0x02353538 + ldr r4, _02338044 ; =0x0000022A + ldr r0, [r0] + ldr r6, _02338048 ; =0x000003D7 + add r0, r0, #0x6b0 + add r0, r0, #0x28000 + mov sl, #0 + add r0, r0, #0x2b4 + mov sb, sl + add r8, r0, #0x4000 + sub r5, r4, #1 + sub r7, r6, #0x258 + add fp, sp, #0 + b _0233801C +_02337FD8: + add r0, r8, sb, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r0, #0 + beq _02338024 + cmp r0, r7 + cmpne r0, r6 + cmpne r0, r5 + cmpne r0, r4 + cmpne r0, #0x84 + movne r2, sl, lsl #1 + addne r1, sl, #1 + strneh r0, [fp, r2] + add r0, sb, #1 + movne r1, r1, lsl #0x10 + mov r0, r0, lsl #0x10 + movne sl, r1, asr #0x10 + mov sb, r0, asr #0x10 +_0233801C: + cmp sb, #0x10 + blt _02337FD8 +_02338024: + mov r0, sl + bl DungeonRandInt + add r1, sp, #0 + mov r0, r0, lsl #1 + ldrsh r0, [r1, r0] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02338040: .word 0x02353538 +_02338044: .word 0x0000022A +_02338048: .word 0x000003D7 + arm_func_end ov29_02337F98 + + arm_func_start ov29_0233804C +ov29_0233804C: ; 0x0233804C + stmdb sp!, {r3, r4, r5, lr} + mov r0, #0x2d8 + mov r1, #0x10 + bl MemAlloc + mov r4, r0 + mov r0, #1 + mov r1, #0x16c + bl DungeonRandRange + mov r1, r0, lsl #0x10 + mov r0, #0 + mov r3, r1, asr #0x10 + ldr r5, _023380F4 ; =0x02353538 + ldr lr, _023380F8 ; =0x000286F2 + mov r2, r0 + mov r1, r0 +_02338088: + ldr ip, [r5] + cmp r3, #0x16c + movge r3, r1 + add ip, ip, r3, lsl #1 + ldrsh ip, [ip, lr] + add r2, r2, #1 + mov r2, r2, lsl #0x10 + cmp ip, #0 + addne ip, r0, #1 + movne r0, r0, lsl #1 + strneh r3, [r4, r0] + add r3, r3, #1 + movne ip, ip, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r2, r2, asr #0x10 + movne r0, ip, asr #0x10 + cmp r2, #0x16c + mov r3, r3, asr #0x10 + blt _02338088 + bl DungeonRandInt + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0xf + mov r0, r4 + ldrsh r4, [r4, r1] + bl MemFree + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023380F4: .word 0x02353538 +_023380F8: .word 0x000286F2 + arm_func_end ov29_0233804C + + arm_func_start ov29_023380FC +ov29_023380FC: ; 0x023380FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r0, [sb, #0xb4] + mov r6, #0 + ldrb r0, [r0, #6] + ldr r4, _023381BC ; =0x0235171C + mov r8, r1 + mov r7, r6 + cmp r0, #0 + movne r6, #1 + mov r5, #0 +_02338128: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh ip, [sb, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [sb, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _023381A0 + ldr r1, [r0] + cmp r1, #1 + bne _023381A0 + ldr r1, [r0, #0xb4] + cmp r6, #0 + ldrb r1, [r1, #6] + beq _0233818C + cmp r1, #0 + addeq r1, r7, #1 + moveq r1, r1, lsl #0x10 + streq r0, [r8, r7, lsl #2] + moveq r7, r1, asr #0x10 + b _023381A0 +_0233818C: + cmp r1, #0 + addne r1, r7, #1 + movne r1, r1, lsl #0x10 + strne r0, [r8, r7, lsl #2] + movne r7, r1, asr #0x10 +_023381A0: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #8 + blt _02338128 + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023381BC: .word 0x0235171C + arm_func_end ov29_023380FC + + arm_func_start ov29_023381C0 +ov29_023381C0: ; 0x023381C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0 + ldr r4, _02338284 ; =0x0235171C + b _02338274 +_023381DC: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh ip, [r8, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [r8, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr sb, [r0, #0xc] + cmp sb, #0 + beq _02338268 + ldr r0, [sb] + cmp r0, #1 + bne _02338268 + mov r0, sb + mov r1, r7 + bl IqSkillIsEnabled + cmp r0, #0 + beq _02338268 + cmp r6, #0 + beq _02338250 + mov r0, sb + mov r1, r8 + bl ov29_022FAFD4 + cmp r0, #0 + beq _02338268 + mov r0, sb + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02338250: + mov r0, r8 + mov r1, sb + bl ov29_022FAFD4 + cmp r0, #0 + movne r0, sb + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02338268: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_02338274: + cmp r5, #8 + blt _023381DC + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02338284: .word 0x0235171C + arm_func_end ov29_023381C0 + + arm_func_start ov29_02338288 +ov29_02338288: ; 0x02338288 + stmdb sp!, {r3, lr} + mov r2, #0 + bl ov29_023381C0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02338288 + + arm_func_start ov29_023382A8 +ov29_023382A8: ; 0x023382A8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0xb4] + mov r6, #0 + ldrb r0, [r0, #6] + mov r5, #0 + ldr r4, _0233834C ; =0x0235171C + cmp r0, #0 + movne r6, #1 + b _0233833C +_023382D0: + mov r1, r5, lsl #2 + add r0, r4, r5, lsl #2 + ldrsh ip, [r7, #4] + ldrsh r3, [r4, r1] + ldrsh r2, [r7, #6] + ldrsh r1, [r0, #2] + add r0, ip, r3 + add r1, r2, r1 + bl GetTile + ldr r0, [r0, #0xc] + cmp r0, #0 + beq _02338330 + ldr r1, [r0] + cmp r1, #1 + bne _02338330 + ldr r1, [r0, #0xb4] + cmp r6, #0 + ldrb r1, [r1, #6] + beq _02338328 + cmp r1, #0 + bne _02338330 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02338328: + cmp r1, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02338330: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_0233833C: + cmp r5, #8 + blt _023382D0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233834C: .word 0x0235171C + arm_func_end ov29_023382A8 + + arm_func_start ov29_02338350 +ov29_02338350: ; 0x02338350 + stmdb sp!, {r3, lr} + bl ov29_023382A8 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_02338350 + + arm_func_start ov29_0233836C +ov29_0233836C: ; 0x0233836C + ldr r0, _02338388 ; =0x02353538 + ldr ip, _0233838C ; =MemZero + ldr r0, [r0] + mov r1, #2 + add r0, r0, #0x2fc + add r0, r0, #0x12800 + bx ip + .align 2, 0 +_02338388: .word 0x02353538 +_0233838C: .word MemZero + arm_func_end ov29_0233836C + + arm_func_start GravityIsActive +GravityIsActive: ; 0x02338390 + ldr r0, _023383A4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x12000 + ldrb r0, [r0, #0xafc] + bx lr + .align 2, 0 +_023383A4: .word 0x02353538 + arm_func_end GravityIsActive + + arm_func_start ov29_023383A8 +ov29_023383A8: ; 0x023383A8 + ldr ip, _023383B4 ; =LogMessageByIdWithPopupCheckUser + ldr r1, _023383B8 ; =0x00000D8D + bx ip + .align 2, 0 +_023383B4: .word LogMessageByIdWithPopupCheckUser +_023383B8: .word 0x00000D8D + arm_func_end ov29_023383A8 + + arm_func_start ov29_023383BC +ov29_023383BC: ; 0x023383BC + stmdb sp!, {r4, lr} + mov r4, r0 + bl EntityIsValid__02337CA8 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _02338424 ; =0x02353538 + ldr r0, [r0] + add r2, r0, #0x12000 + ldrb r0, [r2, #0xafc] + cmp r0, #0 + beq _02338400 + ldr r1, _02338428 ; =0x00000C06 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, #0 + ldmia sp!, {r4, pc} +_02338400: + ldr r1, _0233842C ; =0x00000C05 + mov r3, #1 + mov r0, r4 + strb r3, [r2, #0xafc] + bl LogMessageByIdWithPopupCheckUser + mov r0, r4 + bl ov29_02306D54 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_02338424: .word 0x02353538 +_02338428: .word 0x00000C06 +_0233842C: .word 0x00000C05 + arm_func_end ov29_023383BC + + arm_func_start ov29_02338430 +ov29_02338430: ; 0x02338430 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, #1 + bl ov29_022EDEDC + mov r0, r4 + bl ov29_02338708 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, #1 + bl ov29_02338794 + ldmia sp!, {r4, pc} + arm_func_end ov29_02338430 + + arm_func_start ov29_0233845C +ov29_0233845C: ; 0x0233845C + ldr r1, _02338474 ; =0x02353538 + ldr r0, _02338478 ; =0x00012AFE + ldr r1, [r1] + mov r2, #0 + strh r2, [r1, r0] + bx lr + .align 2, 0 +_02338474: .word 0x02353538 +_02338478: .word 0x00012AFE + arm_func_end ov29_0233845C + + arm_func_start ov29_0233847C +ov29_0233847C: ; 0x0233847C + stmdb sp!, {r4, lr} + ldr r1, _023384B8 ; =0x02353538 + ldr r0, _023384BC ; =0x00012AFE + ldr r3, [r1] + ldrsh r2, [r3, r0] + add r2, r2, #1 + strh r2, [r3, r0] + ldr r1, [r1] + ldrsh r4, [r1, r0] + bl GetVictoriesOnOneFloor + cmp r4, r0 + ldmleia sp!, {r4, pc} + mov r0, r4 + bl SetVictoriesOnOneFloor + ldmia sp!, {r4, pc} + .align 2, 0 +_023384B8: .word 0x02353538 +_023384BC: .word 0x00012AFE + arm_func_end ov29_0233847C + + arm_func_start ov29_023384C0 +ov29_023384C0: ; 0x023384C0 + ldr r0, _023384D4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x12000 + ldrb r0, [r0, #0xb24] + bx lr + .align 2, 0 +_023384D4: .word 0x02353538 + arm_func_end ov29_023384C0 + + arm_func_start ov29_023384D8 +ov29_023384D8: ; 0x023384D8 + ldr r1, _023384EC ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x12000 + strb r0, [r1, #0xb24] + bx lr + .align 2, 0 +_023384EC: .word 0x02353538 + arm_func_end ov29_023384D8 + + arm_func_start ov29_023384F0 +ov29_023384F0: ; 0x023384F0 + stmdb sp!, {r3, lr} + ldr r0, _0233852C ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x5e + add r1, r1, #0x12000 + strb r2, [r1, #0xb24] + bl ov29_0230F840 + cmp r0, #0 + ldrne r0, _0233852C ; =0x02353538 + movne r1, #1 + ldrne r0, [r0] + addne r0, r0, #0x12000 + strneb r1, [r0, #0xb24] + ldmia sp!, {r3, pc} + .align 2, 0 +_0233852C: .word 0x02353538 + arm_func_end ov29_023384F0 + + arm_func_start ov29_02338530 +ov29_02338530: ; 0x02338530 + ldr r0, _02338544 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xc8] + bx lr + .align 2, 0 +_02338544: .word 0x02353538 + arm_func_end ov29_02338530 + + arm_func_start ov29_02338548 +ov29_02338548: ; 0x02338548 + ldr r1, _0233855C ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x4000 + strb r0, [r1, #0xc8] + bx lr + .align 2, 0 +_0233855C: .word 0x02353538 + arm_func_end ov29_02338548 + + arm_func_start ov29_02338560 +ov29_02338560: ; 0x02338560 + stmdb sp!, {r3, lr} + ldr r0, _023385BC ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xc8] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov29_023361D4 + cmp r0, #0 + bne _023385A4 + ldr r1, _023385C0 ; =0x02352B5C + add r0, sp, #0 + ldrh r2, [r1] + strh r2, [sp] + ldrh r1, [r1, #2] + strh r1, [sp, #2] + bl ov29_02344E88 +_023385A4: + ldr r0, _023385BC ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x4000 + strb r1, [r0, #0xc8] + ldmia sp!, {r3, pc} + .align 2, 0 +_023385BC: .word 0x02353538 +_023385C0: .word 0x02352B5C + arm_func_end ov29_02338560 + + arm_func_start IsSecretBazaar__023385C4 +IsSecretBazaar__023385C4: ; 0x023385C4 + ldr r0, _023385E8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0x70 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_023385E8: .word 0x02353538 + arm_func_end IsSecretBazaar__023385C4 + + arm_func_start ov29_023385EC +ov29_023385EC: ; 0x023385EC + ldr r0, _02338600 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x12000 + ldrb r0, [r0, #0xb25] + bx lr + .align 2, 0 +_02338600: .word 0x02353538 + arm_func_end ov29_023385EC + + arm_func_start ov29_02338604 +ov29_02338604: ; 0x02338604 + ldr r1, _02338618 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x12000 + strb r0, [r1, #0xb25] + bx lr + .align 2, 0 +_02338618: .word 0x02353538 + arm_func_end ov29_02338604 + + arm_func_start ov29_0233861C +ov29_0233861C: ; 0x0233861C + stmdb sp!, {r3, lr} + ldr r0, _02338658 ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x5f + add r1, r1, #0x12000 + strb r2, [r1, #0xb25] + bl ov29_0230F840 + cmp r0, #0 + ldrne r0, _02338658 ; =0x02353538 + movne r1, #1 + ldrne r0, [r0] + addne r0, r0, #0x12000 + strneb r1, [r0, #0xb25] + ldmia sp!, {r3, pc} + .align 2, 0 +_02338658: .word 0x02353538 + arm_func_end ov29_0233861C + + arm_func_start IsSecretRoom +IsSecretRoom: ; 0x0233865C + ldr r0, _02338680 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0x71 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02338680: .word 0x02353538 + arm_func_end IsSecretRoom + + arm_func_start IsSecretFloor +IsSecretFloor: ; 0x02338684 + stmdb sp!, {r3, lr} + bl IsSecretBazaar__023385C4 + cmp r0, #0 + bne _023386A0 + bl IsSecretRoom + cmp r0, #0 + beq _023386A8 +_023386A0: + mov r0, #1 + ldmia sp!, {r3, pc} +_023386A8: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsSecretFloor + + arm_func_start ov29_023386B0 +ov29_023386B0: ; 0x023386B0 + stmdb sp!, {r3, lr} + bl IsSecretBazaar__023385C4 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + bl IsSecretRoom + cmp r0, #0 + movne r0, #2 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov29_023386B0 + + arm_func_start ov29_023386D8 +ov29_023386D8: ; 0x023386D8 + ldr r0, _02338704 ; =0x02353538 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0xcc00 + ldrsh r2, [r0, #0xe8] + cmp r2, r1 + ldrnesh r0, [r0, #0xea] + cmpne r0, r1 + moveq r0, #0 + movne r0, #1 + bx lr + .align 2, 0 +_02338704: .word 0x02353538 + arm_func_end ov29_023386D8 + + arm_func_start ov29_02338708 +ov29_02338708: ; 0x02338708 + ldr r1, _02338738 ; =0x02353538 + ldrsh r2, [r0] + ldr r1, [r1] + add r1, r1, #0xcc00 + ldrsh r3, [r1, #0xe8] + cmp r3, r2 + ldreqsh r1, [r1, #0xea] + ldreqsh r0, [r0, #2] + cmpeq r1, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02338738: .word 0x02353538 + arm_func_end ov29_02338708 + + arm_func_start ov29_0233873C +ov29_0233873C: ; 0x0233873C + stmdb sp!, {r3, lr} + bl ov29_023386D8 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, _02338764 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xe8 + add r0, r0, #0xcc00 + bl ov29_02338768 + ldmia sp!, {r3, pc} + .align 2, 0 +_02338764: .word 0x02353538 + arm_func_end ov29_0233873C + + arm_func_start ov29_02338768 +ov29_02338768: ; 0x02338768 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl ov29_022E2418 + mov r4, r0 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl GetTileSafe + str r4, [r0, #0x10] + mov r0, #0 + strb r0, [r4, #0x20] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02338768 + + arm_func_start ov29_02338794 +ov29_02338794: ; 0x02338794 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl ov29_023386D8 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _02338848 ; =0x02353538 + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe8] + ldrsh r1, [r1, #0xea] + bl GetTileSafe + mov r4, r0 + ldr r0, [r4, #0x10] + ldrb r0, [r0, #0x20] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _02338848 ; =0x02353538 + ldr r2, [r0] + add r0, r2, #0x1a000 + ldrb r1, [r0, #0x246] + cmp r1, #0 + ldreqb r0, [r0, #0x244] + cmpeq r0, #0 + bne _0233881C + cmp r5, #0 + beq _0233881C + add r0, r2, #0xe8 + add r0, r0, #0xcc00 + mov r1, #0x41 + mov r2, #1 + bl ov29_022E37DC + bl GetLeader + ldr r1, _0233884C ; =0x00000F31 + bl LogMessageByIdWithPopupCheckUser +_0233881C: + ldr r1, [r4, #0x10] + mov r2, #1 + ldr r0, _02338848 ; =0x02353538 + strb r2, [r1, #0x20] + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe8] + ldrsh r1, [r1, #0xea] + bl ov29_023391EC + bl ov29_02336F4C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02338848: .word 0x02353538 +_0233884C: .word 0x00000F31 + arm_func_end ov29_02338794 + + arm_func_start ov29_02338850 +ov29_02338850: ; 0x02338850 + ldr r0, _02338864 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldr r0, [r0, #0xcc] + bx lr + .align 2, 0 +_02338864: .word 0x02353538 + arm_func_end ov29_02338850 + + arm_func_start ov29_02338868 +ov29_02338868: ; 0x02338868 + ldr r1, _0233887C ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x4000 + str r0, [r1, #0xcc] + bx lr + .align 2, 0 +_0233887C: .word 0x02353538 + arm_func_end ov29_02338868 + + arm_func_start GetDungeonGenInfoUnk0C +GetDungeonGenInfoUnk0C: ; 0x02338880 + ldr r0, _02338894 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldr r0, [r0, #0xd0] + bx lr + .align 2, 0 +_02338894: .word 0x02353538 + arm_func_end GetDungeonGenInfoUnk0C + + arm_func_start ov29_02338898 +ov29_02338898: ; 0x02338898 + ldr r1, _023388AC ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x4000 + str r0, [r1, #0xd0] + bx lr + .align 2, 0 +_023388AC: .word 0x02353538 + arm_func_end ov29_02338898 + + arm_func_start ov29_023388B0 +ov29_023388B0: ; 0x023388B0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + ldr r0, _02338974 ; =0x02352F1C + mov sl, #0 + ldr r1, [r0, #4] + ldr r0, [r0] + ldr r7, _02338978 ; =0x02352F40 + add r8, sp, #0 + str r1, [sp, #4] + str r0, [sp] + mov r6, #4 + mov r5, #0x300 + mov fp, sl + mov r4, #0x14 +_023388E8: + mul sb, sl, r4 + ldrh r2, [r7, sb] + mov r0, r8 + mov r1, r6 + mov r3, r5 + add sb, r7, sb + bl LoadWteFromFileDirectory + ldrsh r2, [sb, #8] + ldr r0, [sp, #4] + ldr r1, [sb, #4] + mov r3, fp + bl ProcessWte + mov r0, r8 + bl sub_0201E13C + add sl, sl, #1 + cmp sl, #3 + blt _023388E8 + ldr r0, _0233897C ; =0x0237CACC + mov r1, #0 + bl ov29_02338D94 + ldr r0, _02338980 ; =0x0237CD40 + mov r1, #1 + bl ov29_02338D94 + ldr r0, _02338984 ; =0x02352F7C + ldr r2, _0233897C ; =0x0237CACC + mov r1, #0 + ldr r4, [r0] + strb r1, [r2, #0x240] + ldr r3, [r0, #4] + str r4, [r2, #0x254] + ldr r0, _02338980 ; =0x0237CD40 + str r3, [r2, #0x258] + bl ov29_02338D34 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02338974: .word 0x02352F1C +_02338978: .word 0x02352F40 +_0233897C: .word 0x0237CACC +_02338980: .word 0x0237CD40 +_02338984: .word 0x02352F7C + arm_func_end ov29_023388B0 + + arm_func_start ov29_02338988 +ov29_02338988: ; 0x02338988 + stmdb sp!, {r3, lr} + ldr r0, _023389BC ; =0x0237CACC + bl ov29_02338D58 + cmp r0, #0 + bne _023389AC + ldr r0, _023389C0 ; =0x0237CD40 + bl ov29_02338D58 + cmp r0, #0 + beq _023389B4 +_023389AC: + mov r0, #1 + ldmia sp!, {r3, pc} +_023389B4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023389BC: .word 0x0237CACC +_023389C0: .word 0x0237CD40 + arm_func_end ov29_02338988 + + arm_func_start ov29_023389C4 +ov29_023389C4: ; 0x023389C4 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, #0xc + mul r2, r4, r0 + ldr r1, _02338A3C ; =0x022C6326 + ldr r0, _02338A40 ; =0x0237CACC + ldrb r1, [r1, r2] + bl ov29_02338D34 + cmp r4, #0xc3 + bne _02338A34 + ldr r1, _02338A44 ; =0x02352F1C + ldr r2, _02338A48 ; =0x000003EB + ldr r3, [r1, #0xc] + ldr ip, [r1, #8] + str r3, [sp, #4] + add r0, sp, #0 + mov r1, #4 + mov r3, #0 + str ip, [sp] + bl LoadWteFromFileDirectory + ldr r0, [sp, #4] + mov r1, #0xb000 + mov r2, #0x14 + mov r3, #0 + bl ProcessWte + add r0, sp, #0 + bl sub_0201E13C +_02338A34: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02338A3C: .word 0x022C6326 +_02338A40: .word 0x0237CACC +_02338A44: .word 0x02352F1C +_02338A48: .word 0x000003EB + arm_func_end ov29_023389C4 + + arm_func_start ov29_02338A4C +ov29_02338A4C: ; 0x02338A4C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r1, _02338AB4 ; =0x02353730 + mov r4, r0 + ldrb r1, [r1, r4, lsl #3] + ldr r0, _02338AB8 ; =0x0237CD40 + bl ov29_02338D34 + ldr r1, _02338ABC ; =0x0235372C + mov sb, #0 + ldr r7, [r1, r4, lsl #3] + ldr r0, _02338AC0 ; =0x0237CACC + ldr r5, _02338AB8 ; =0x0237CD40 + str r7, [r0, #0x4e4] + mov r6, sb + mov r4, #0xc0 +_02338A84: + mla sl, sb, r4, r5 + mov r8, r6 +_02338A8C: + mov r1, r7 + add r0, sl, r8, lsl #6 + bl ov29_02338E50 + add r8, r8, #1 + cmp r8, #3 + blt _02338A8C + add sb, sb, #1 + cmp sb, #3 + blt _02338A84 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02338AB4: .word 0x02353730 +_02338AB8: .word 0x0237CD40 +_02338ABC: .word 0x0235372C +_02338AC0: .word 0x0237CACC + arm_func_end ov29_02338A4C + + arm_func_start ov29_02338AC4 +ov29_02338AC4: ; 0x02338AC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r5, #0 +_02338ACC: + ldr r1, _02338D28 ; =0x0237CACC + mov r0, #0x274 + mla r6, r5, r0, r1 + ldrb r0, [r6, #0x240] + cmp r0, #0 + beq _02338D18 + bl ov29_022E3580 + cmp r0, #0 + movne r0, #0 + strneb r0, [r6, #0x26d] + bne _02338B04 + mov r0, r6 + mov r1, #1 + bl ov29_02338D6C +_02338B04: + mov r0, r6 + bl ov29_02338D58 + cmp r0, #0 + beq _02338D18 + ldr r4, [r6, #0x24c] + ldr fp, [r6, #0x250] + mov r7, #0 +_02338B20: + mov r0, #0xc0 + mla sl, r7, r0, r6 + mov r0, r7, lsl #7 + add sb, r0, fp, asr #8 + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + mov r8, #0 + str r0, [sp] +_02338B40: + cmp sb, #0xc0 + bge _02338B74 + mov r0, r8, lsl #7 + ldr r1, [r6, #0x244] + add r2, r0, r4, asr #8 + mov r0, r8, lsl #6 + strh r2, [sl, r0] + ldr r2, [sp] + add r0, sl, r8, lsl #6 + strh r2, [r0, #2] + mov r1, r1, asr #8 + strb r1, [r0, #0x2f] + bl sub_0201F2A0 +_02338B74: + add r8, r8, #1 + cmp r8, #3 + blt _02338B40 + add r7, r7, #1 + cmp r7, #3 + blt _02338B20 + ldrb r0, [r6, #0x240] + cmp r0, #9 + beq _02338BBC + ldr r1, [r6, #0x24c] + ldr r0, [r6, #0x254] + add r0, r1, r0 + str r0, [r6, #0x24c] + ldr r1, [r6, #0x250] + ldr r0, [r6, #0x258] + add r0, r1, r0 + str r0, [r6, #0x250] + b _02338C48 +_02338BBC: + ldr r0, [r6, #0x25c] + bl sub_020018D0 + ldr r3, [r6, #0x254] + mov r2, #0xa + mov r1, r0 + mul r0, r3, r2 + bl MultiplyByFixedPoint + ldr r1, [r6, #0x24c] + add r0, r1, r0 + str r0, [r6, #0x24c] + ldr r0, [r6, #0x260] + bl sub_020018D0 + ldr r3, [r6, #0x258] + mov r2, #0xa + mov r1, r0 + mul r0, r3, r2 + bl MultiplyByFixedPoint + ldr r2, [r6, #0x250] + ldr r1, _02338D2C ; =0x00000FFF + add r0, r2, r0 + str r0, [r6, #0x250] + ldr r2, [r6, #0x25c] + ldr r0, [r6, #0x264] + add r0, r2, r0 + str r0, [r6, #0x25c] + ldr r2, [r6, #0x260] + ldr r0, [r6, #0x268] + add r0, r2, r0 + str r0, [r6, #0x260] + ldr r0, [r6, #0x25c] + and r0, r0, r1 + str r0, [r6, #0x25c] + ldr r0, [r6, #0x260] + and r0, r0, r1 + str r0, [r6, #0x260] +_02338C48: + ldr r1, [r6, #0x24c] + cmp r1, #0 + subgt r0, r1, #0x8000 + strgt r0, [r6, #0x24c] + bgt _02338C70 + mov r0, #0x8000 + rsb r0, r0, #0 + cmp r1, r0 + addlt r0, r1, #0x8000 + strlt r0, [r6, #0x24c] +_02338C70: + ldr r1, [r6, #0x250] + cmp r1, #0 + subgt r0, r1, #0x8000 + strgt r0, [r6, #0x250] + bgt _02338C98 + mov r0, #0x8000 + rsb r0, r0, #0 + cmp r1, r0 + addlt r0, r1, #0x8000 + strlt r0, [r6, #0x250] +_02338C98: + ldrb r0, [r6, #0x26e] + cmp r0, #0 + beq _02338CC8 + ldr r0, [r6, #0x244] + add r0, r0, #0x400 + str r0, [r6, #0x244] + cmp r0, #0x4000 + movge r0, #1 + strgeb r0, [r6, #0x26c] + movge r0, #0 + strgeb r0, [r6, #0x26e] + b _02338D18 +_02338CC8: + ldrb r0, [r6, #0x26c] + ldr r1, [r6, #0x244] + cmp r0, #0 + ldr r0, [r6, #0x248] + bne _02338CFC + sub r0, r1, r0 + str r0, [r6, #0x244] + cmp r0, #0x4000 + movlt r0, #1 + strltb r0, [r6, #0x26c] + movlt r0, #0x4000 + strlt r0, [r6, #0x244] + b _02338D18 +_02338CFC: + add r0, r1, r0 + str r0, [r6, #0x244] + cmp r0, #0xc000 + movgt r0, #0 + strgtb r0, [r6, #0x26c] + movgt r0, #0xc000 + strgt r0, [r6, #0x244] +_02338D18: + add r5, r5, #1 + cmp r5, #2 + blt _02338ACC + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02338D28: .word 0x0237CACC +_02338D2C: .word 0x00000FFF + arm_func_end ov29_02338AC4 + + arm_func_start ov29_02338D30 +ov29_02338D30: ; 0x02338D30 + bx lr + arm_func_end ov29_02338D30 + + arm_func_start ov29_02338D34 +ov29_02338D34: ; 0x02338D34 + ldr r3, _02338D54 ; =0x02352F7C + strb r1, [r0, #0x240] + add r2, r3, r1, lsl #3 + ldr r3, [r3, r1, lsl #3] + ldr r1, [r2, #4] + str r3, [r0, #0x254] + str r1, [r0, #0x258] + bx lr + .align 2, 0 +_02338D54: .word 0x02352F7C + arm_func_end ov29_02338D34 + + arm_func_start ov29_02338D58 +ov29_02338D58: ; 0x02338D58 + ldrb r1, [r0, #0x240] + cmp r1, #0 + moveq r0, #0 + ldrneb r0, [r0, #0x26d] + bx lr + arm_func_end ov29_02338D58 + + arm_func_start ov29_02338D6C +ov29_02338D6C: ; 0x02338D6C + cmp r1, #0 + beq _02338D8C + ldrb r2, [r0, #0x26d] + cmp r2, #0 + moveq r2, #1 + streqb r2, [r0, #0x26e] + moveq r2, #0 + streq r2, [r0, #0x244] +_02338D8C: + strb r1, [r0, #0x26d] + bx lr + arm_func_end ov29_02338D6C + + arm_func_start ov29_02338D94 +ov29_02338D94: ; 0x02338D94 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov r0, #0x4000 + str r0, [sl, #0x244] + mov r0, #0 + str r0, [sl, #0x248] + strb r0, [sl, #0x26c] + str r0, [sl, #0x24c] + str r0, [sl, #0x250] + mov r0, #0x400 + mov sb, r1 + bl DungeonRandInt + str r0, [sl, #0x25c] + mov r0, #0x400 + bl DungeonRandInt + str r0, [sl, #0x260] + mov r0, #4 + str r0, [sl, #0x264] + mov r0, #1 + str r0, [sl, #0x268] + mov r5, #0 + strb r0, [sl, #0x26d] + strb r5, [sl, #0x26e] + str sb, [sl, #0x270] + mov fp, r5 +_02338DF8: + mov r0, #0xc0 + mla r8, r5, r0, sl + mov r6, #0 +_02338E04: + add r7, r8, r6, lsl #6 + mov r0, r7 + mov r4, r6, lsl #6 + bl sub_0201E730 + strb fp, [r7, #0x3c] + strh fp, [r8, r4] + strh fp, [r7, #2] + ldr r2, [sl, #0x244] + mov r0, r7 + mov r1, sb + strb r2, [r7, #0x2f] + bl ov29_02338E50 + add r6, r6, #1 + cmp r6, #3 + blt _02338E04 + add r5, r5, #1 + cmp r5, #3 + blt _02338DF8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02338D94 + + arm_func_start ov29_02338E50 +ov29_02338E50: ; 0x02338E50 + ldr r3, _02338F08 ; =0x02352F40 + mov r2, #0x14 + mla r2, r1, r2, r3 + ldr r3, [r2, #4] + mov r1, #0 + str r3, [r0, #0x20] + strh r1, [r0, #0x16] + strh r1, [r0, #0x18] + mov r1, #0x80 + strh r1, [r0, #0x1a] + strh r1, [r0, #0x1c] + ldrh r3, [r0, #0x14] + ldr r1, _02338F0C ; =0x020AFC70 + bic r3, r3, #7 + orr r3, r3, #4 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + bic r3, r3, #0x38 + orr r3, r3, #0x20 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + bic r3, r3, #0xc0 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + bic r3, r3, #0x700 + orr r3, r3, #0x300 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + bic r3, r3, #0x1800 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + bic r3, r3, #0x6000 + strh r3, [r0, #0x14] + ldrh r3, [r0, #0x14] + orr r3, r3, #0x8000 + strh r3, [r0, #0x14] + ldr r3, [r1] + ldrsh r1, [r2, #8] + ldr r3, [r3, #0xe0] + add r1, r3, r1, lsl #9 + str r1, [r0, #0x24] + ldr r1, [r2, #0xc] + strh r1, [r0, #0x2a] + ldr r1, [r2, #0x10] + strb r1, [r0, #0x3e] + bx lr + .align 2, 0 +_02338F08: .word 0x02352F40 +_02338F0C: .word 0x020AFC70 + arm_func_end ov29_02338E50 + + arm_func_start ov29_02338F10 +ov29_02338F10: ; 0x02338F10 + ldr r0, _02338F20 ; =0x0235376C + mov r1, #0x64 + strh r1, [r0, #2] + bx lr + .align 2, 0 +_02338F20: .word 0x0235376C + arm_func_end ov29_02338F10 + + arm_func_start ov29_02338F24 +ov29_02338F24: ; 0x02338F24 + ldr r2, _02338F34 ; =0x0235376C + strh r0, [r2, #2] + strh r1, [r2, #4] + bx lr + .align 2, 0 +_02338F34: .word 0x0235376C + arm_func_end ov29_02338F24 + + arm_func_start ov29_02338F38 +ov29_02338F38: ; 0x02338F38 + ldr r1, _02338F44 ; =0x0237CFB8 + strb r0, [r1, #2] + bx lr + .align 2, 0 +_02338F44: .word 0x0237CFB8 + arm_func_end ov29_02338F38 + + arm_func_start ov29_02338F48 +ov29_02338F48: ; 0x02338F48 + ldr r1, _02338F54 ; =0x0237CFB8 + strb r0, [r1] + bx lr + .align 2, 0 +_02338F54: .word 0x0237CFB8 + arm_func_end ov29_02338F48 + + arm_func_start ov29_02338F58 +ov29_02338F58: ; 0x02338F58 + ldr r1, _02338F64 ; =0x0235376C + strb r0, [r1, #1] + bx lr + .align 2, 0 +_02338F64: .word 0x0235376C + arm_func_end ov29_02338F58 + + arm_func_start ov29_02338F68 +ov29_02338F68: ; 0x02338F68 + stmdb sp!, {r3, lr} + ldr r1, _02338FBC ; =0x0000040B + ldr r2, _02338FC0 ; =0x02353784 + mov r0, #4 + mov r3, #0 + bl AllocAndLoadFileInPack + ldr r1, _02338FC4 ; =0x0235376C + add r0, sp, #0 + ldr r1, [r1, #0x18] + bl HandleSir0Translation + ldr r1, [sp] + ldr r0, _02338FC4 ; =0x0235376C + str r1, [r0, #8] + bl GetMinimapData + add r0, r0, #0xe000 + mov r2, #0 + ldr r1, _02338FC4 ; =0x0235376C + strb r2, [r0, #0x447] + str r2, [r1, #0xc] + strb r2, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_02338FBC: .word 0x0000040B +_02338FC0: .word 0x02353784 +_02338FC4: .word 0x0235376C + arm_func_end ov29_02338F68 + + arm_func_start ov29_02338FC8 +ov29_02338FC8: ; 0x02338FC8 + stmdb sp!, {r3, lr} + ldr r0, _02339000 ; =0x0235376C + ldr r0, [r0, #8] + cmp r0, #0 + beq _02338FF0 + ldr r0, _02339004 ; =0x02353784 + bl UnloadFile + ldr r0, _02339000 ; =0x0235376C + mov r1, #0 + str r1, [r0, #8] +_02338FF0: + ldr r0, _02339008 ; =0x0237CFB8 + mov r1, #0 + strb r1, [r0, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_02339000: .word 0x0235376C +_02339004: .word 0x02353784 +_02339008: .word 0x0237CFB8 + arm_func_end ov29_02338FC8 + + arm_func_start ov29_0233900C +ov29_0233900C: ; 0x0233900C + stmdb sp!, {r3, lr} + ldr r0, _02339044 ; =0x0235352C + ldr r0, [r0] + add r0, r0, #0x20 + bl ov29_022DE288 + ldr r1, _02339044 ; =0x0235352C + ldr r2, _02339048 ; =0x0235376C + ldr r1, [r1] + str r0, [r2, #0x10] + add r0, r1, #0x2c + bl ov29_022DE288 + ldr r1, _02339048 ; =0x0235376C + str r0, [r1, #0x14] + ldmia sp!, {r3, pc} + .align 2, 0 +_02339044: .word 0x0235352C +_02339048: .word 0x0235376C + arm_func_end ov29_0233900C + + arm_func_start ov29_0233904C +ov29_0233904C: ; 0x0233904C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov fp, r0 + bl GetMinimapData + mov r7, r0 + mov r6, #0 + add r4, r7, #0x7000 +_02339064: + mov r0, #0x700 + mul r1, r6, r0 + mov r0, #0x1c + mla sl, r6, r0, r7 + mov r5, #0 + add r8, r7, r1 + add sb, r4, r1 +_02339080: + add r0, r8, r5, lsl #6 + mov r1, #0x20 + bl MemZero + add r0, sb, r5, lsl #6 + mov r1, #0x20 + bl MemZero + add r0, sl, r5 + add r1, r0, #0xe000 + mov r0, #0 + add r5, r5, #1 + strb r0, [r1] + cmp r5, #0x1c + blt _02339080 + add r6, r6, #1 + cmp r6, #0x10 + blt _02339064 + cmp fp, #0 + ldreq r0, _02339110 ; =0x0235376C + moveq r1, #0x64 + streqh r1, [r0, #2] + streqh r1, [r0, #4] + add r0, r7, #0xe000 + mov r3, #0 + str r3, [r0, #0x440] + mov r2, #1 + strb r2, [r0, #0x444] + ldr r1, _02339114 ; =0x0237CFB8 + strb r3, [r0, #0x446] + strb r2, [r1, #3] + bl ov29_0233900C + bl ov29_022E7F7C + ldr r0, _02339114 ; =0x0237CFB8 + mov r1, #1 + strb r1, [r0, #2] + bl ov29_02339148 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02339110: .word 0x0235376C +_02339114: .word 0x0237CFB8 + arm_func_end ov29_0233904C + + arm_func_start GetMinimapData +GetMinimapData: ; 0x02339118 + ldr r0, _02339134 ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + addne r0, r0, #0x264 + addne r0, r0, #0x1a000 + moveq r0, #0 + bx lr + .align 2, 0 +_02339134: .word 0x02353538 + arm_func_end GetMinimapData + + arm_func_start ov29_02339138 +ov29_02339138: ; 0x02339138 + stmdb sp!, {r3, lr} + bl ov29_0233900C + bl ov29_022E7F7C + ldmia sp!, {r3, pc} + arm_func_end ov29_02339138 + + arm_func_start ov29_02339148 +ov29_02339148: ; 0x02339148 + stmdb sp!, {r4, lr} + ldr r0, _02339188 ; =0x02353538 + mov r2, #0xc + ldr r0, [r0] + ldr r3, _0233918C ; =0x022C631C + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + mov r1, #0 + smulbb r0, r0, r2 + ldr r4, [r3, r0] + mov r0, r4 + bl ov29_0233A548 + mov r0, r4 + mov r1, #1 + bl ov29_0233A548 + ldmia sp!, {r4, pc} + .align 2, 0 +_02339188: .word 0x02353538 +_0233918C: .word 0x022C631C + arm_func_end ov29_02339148 + + arm_func_start ov29_02339190 +ov29_02339190: ; 0x02339190 + stmdb sp!, {r3, lr} + ldr r2, _023391B8 ; =0x0235376C + ldr r2, [r2, #8] + cmp r2, #0 + ldrne r2, _023391BC ; =0x0237CFB8 + ldrneb r2, [r2, #2] + cmpne r2, #0 + ldmeqia sp!, {r3, pc} + bl ov29_0233A548 + ldmia sp!, {r3, pc} + .align 2, 0 +_023391B8: .word 0x0235376C +_023391BC: .word 0x0237CFB8 + arm_func_end ov29_02339190 + + arm_func_start ov29_023391C0 +ov29_023391C0: ; 0x023391C0 + ldr r0, _023391E4 ; =0x02353538 + mov r1, #0xc + ldr r0, [r0] + ldr r2, _023391E8 ; =0x022C631C + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + smulbb r0, r0, r1 + ldr r0, [r2, r0] + bx lr + .align 2, 0 +_023391E4: .word 0x02353538 +_023391E8: .word 0x022C631C + arm_func_end ov29_023391C0 + + arm_func_start ov29_023391EC +ov29_023391EC: ; 0x023391EC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x30 + mov sl, r0 + mov sb, r1 + bl GetMinimapData + ldr r2, _023398C4 ; =0x02352FCC + ldr r3, _023398C8 ; =0x02353538 + ldrh r4, [r2] + ldr r5, [r3] + ldrh r3, [r2, #2] + ldr r1, _023398CC ; =0x0235376C + mov r7, #1 + ldr r2, [r1, #8] + mov fp, r0 + cmp r2, #0 + ldrne r0, _023398D0 ; =0x0237CFB8 + str r7, [sp, #0x14] + ldrneb r0, [r0, #2] + add r1, r5, #0x21c + strh r4, [sp, #0x2c] + strh r3, [sp, #0x2e] + add r4, r1, #0x1a000 + cmpne r0, #0 + beq _023398BC + cmp sl, #0 + cmpge sb, #2 + blt _023398BC + cmp sl, #0x38 + cmplt sb, #0x20 + bge _023398BC + mov r0, sl + mov r1, sb + bl GetTile + mov r6, r0 + ldrb r1, [r4, #0x32] + ldrh r2, [r6] + ldrb r0, [r4, #0x29] + cmp r1, #0 + moveq r1, r7 + str r0, [sp, #0x24] + and r0, r2, #3 + str r0, [sp, #0x28] + ldrb r0, [r4, #0x22] + movne r1, #0 + and r1, r1, #0xff + str r0, [sp, #0x20] + ldrb r0, [r4, #0x28] + str r0, [sp, #0x18] + ldrb r0, [r4, #0x27] + str r0, [sp, #0x1c] + ldrb r0, [r4, #0x23] + ldrb r5, [r4, #0x25] + str r1, [sp, #0xc] + ldrb r1, [r4, #0x33] + cmp r1, #0 + movne r1, #0 + ldreq r1, _023398D0 ; =0x0237CFB8 + ldreqb r1, [r1, #3] + and r1, r1, #0xff + str r1, [sp, #8] + ldr r1, [sp, #0x20] + cmp r1, #0 + ldrneh r1, [r6, #2] + movne r0, #0 + strne r0, [sp, #0x10] + andne r8, r1, #1 + bne _02339344 + ldrb r1, [r4, #0x34] + cmp r1, #0 + bne _02339310 + cmp r0, #0 + movne r8, #1 + bne _02339318 +_02339310: + ldrh r0, [r6, #2] + and r8, r0, #1 +_02339318: + bl GetFloorType + cmp r0, #0 + ldreqb r0, [r4, #0x2a] + streq r0, [sp, #0x10] + movne r0, #0 + strne r0, [sp, #0x10] + cmp r5, #0 + beq _02339344 + cmp r8, #0 + streq r8, [sp, #0x14] + moveq r8, #1 +_02339344: + bl sub_0204AF30 + cmp r0, #0 + ldreq r0, _023398CC ; =0x0235376C + ldreqb r1, [r0, #1] + cmpeq r1, #0 + beq _02339788 + ldr r0, [sp, #0x20] + mov r5, #0 + cmp r0, #0 + bne _0233946C + ldr r0, [r6, #0xc] + str r0, [sp, #4] + cmp r0, #0 + ldrne r0, _023398D0 ; =0x0237CFB8 + ldrneb r0, [r0, #3] + cmpne r0, #0 + beq _0233946C + ldr r0, [sp, #4] + ldr r0, [r0] + cmp r0, #1 + bne _0233946C + ldr r0, [sp, #4] + bl ov29_022E2498 + cmp r0, #0 + beq _0233946C + ldr r0, [sp, #4] + mov r7, r5 + ldr r0, [r0, #0xb4] + str r0, [sp] + bl IsExperienceLocked + cmp r0, #0 + bne _023393D4 + ldr r0, [sp] + ldrb r0, [r0, #0xbc] + cmp r0, #7 + bne _023393DC +_023393D4: + mov r5, #0xa + b _0233946C +_023393DC: + ldr r0, [sp] + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0233943C + ldr r0, [sp, #8] + cmp r0, #0 + beq _02339434 + ldr r0, [sp] + ldrb r0, [r0, #0xbc] + cmp r0, #2 + moveq r0, r5 + beq _02339410 + bl ov29_022EFAE8 +_02339410: + cmp r0, #0 + movne r5, #0xc + bne _0233946C + ldr r0, [sp] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r5, #0xa + moveq r5, #2 + b _0233946C +_02339434: + mov r7, #1 + b _0233946C +_0233943C: + ldr r0, [sp] + ldrb r0, [r0, #7] + cmp r0, #0 + beq _02339468 + ldr r0, _023398CC ; =0x0235376C + strh sl, [r0, #2] + strh sb, [r0, #4] + ldrb r0, [r4, #0x2d] + cmp r0, #0 + movne r5, #8 + b _0233946C +_02339468: + mov r5, #0xa +_0233946C: + cmp r7, #0 + beq _0233963C + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _0233963C + ldr r0, [r6, #0x10] + cmp r0, #0 + beq _023395D0 + cmp r8, #0 + ldr r1, [r0] + bne _023394F4 + ldr r0, [sp, #0xc] + mov r5, #0 + cmp r0, #0 + beq _023394D8 + cmp r1, #3 + bne _023394D8 + ldr r0, [sp, #0x1c] + cmp r0, #0 + bne _023394C8 + ldrh r0, [r6, #2] + tst r0, #2 + beq _023394EC +_023394C8: + ldr r0, [sp, #0x28] + cmp r0, #0 + movne r5, #3 + b _023394EC +_023394D8: + cmp r1, #5 + bne _023394EC + ldr r0, [sp, #0x10] + cmp r0, #0 + movne r5, #0xd +_023394EC: + mov r7, #0 + b _0233963C +_023394F4: + cmp r7, #0 + beq _0233963C + cmp r1, #2 + bne _0233953C + ldr r2, [sp, #0x14] + cmp r2, #0 + beq _0233953C + ldrb r2, [r0, #0x20] + cmp r2, #0 + ldreq r2, [sp, #0x18] + cmpeq r2, #0 + beq _0233953C + bl ov29_022E1608 + ldrb r1, [r0] + ldr r0, _023398D4 ; =0x02352FF4 + mov r7, #0 + ldrb r5, [r0, r1] + b _0233963C +_0233953C: + ldr r2, [sp, #0xc] + cmp r2, #0 + beq _0233957C + cmp r1, #3 + bne _0233957C + ldr r2, [sp, #0x1c] + cmp r2, #0 + bne _02339568 + ldrh r2, [r6, #2] + tst r2, #2 + beq _0233957C +_02339568: + ldr r2, [sp, #0x28] + cmp r2, #0 + movne r5, #3 + movne r7, #0 + bne _0233963C +_0233957C: + cmp r1, #5 + bne _023395BC + ldr r1, [sp, #0x10] + cmp r1, #0 + bne _023395B0 + ldr r1, [sp, #0x14] + cmp r1, #0 + beq _0233963C + ldr r1, [sp, #0x18] + cmp r1, #0 + ldreqb r0, [r0, #0x20] + cmpeq r0, #0 + beq _0233963C +_023395B0: + mov r5, #0xd + mov r7, #0 + b _0233963C +_023395BC: + ldr r0, [sp, #0x28] + cmp r0, #1 + movne r5, #0 + movne r7, r5 + b _0233963C +_023395D0: + cmp r8, #0 + bne _02339608 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0233963C + ldrh r0, [r6] + tst r0, #0x200 + beq _0233963C + bl GetFloorType + cmp r0, #0 + moveq r5, #6 + movne r5, #5 + mov r7, #0 + b _0233963C +_02339608: + ldrh r0, [r6] + tst r0, #0x200 + beq _0233963C + ldr r0, [sp, #0x10] + cmp r0, #0 + ldreq r0, [sp, #0x14] + cmpeq r0, #0 + beq _0233963C + bl GetFloorType + cmp r0, #0 + moveq r5, #6 + movne r5, #5 + mov r7, #0 +_0233963C: + cmp r7, #0 + bne _02339654 + ldr r0, [sp, #0x24] + cmp r0, #0 + cmpne r5, #0 + movne r5, #0xb +_02339654: + cmp r5, #0 + bne _02339734 + cmp r8, #0 + moveq r5, #1 + beq _02339734 + ldr r0, [sp, #0x28] + cmp r0, #1 + movne r5, #1 + bne _02339734 + cmp sb, #0x1f + mov r4, #0xf + bge _023396A0 + mov r0, sl + add r1, sb, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + biceq r4, r4, #1 +_023396A0: + cmp sb, #1 + blt _023396C4 + mov r0, sl + sub r1, sb, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + biceq r4, r4, #4 +_023396C4: + cmp sl, #0x37 + bge _023396E8 + mov r1, sb + add r0, sl, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + biceq r4, r4, #2 +_023396E8: + cmp sl, #1 + blt _0233970C + mov r1, sb + sub r0, sl, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + biceq r4, r4, #8 +_0233970C: + ldrh r1, [r6, #2] + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + tst r1, #2 + addne r0, r0, #0x10 + movne r0, r0, lsl #0x10 + movne r5, r0, asr #0x10 + addeq r0, r0, #0x20 + moveq r0, r0, lsl #0x10 + moveq r5, r0, asr #0x10 +_02339734: + bl sub_0204AEA0 + cmp r0, #3 + addeq r0, r5, #0x80 + streqh r0, [sp, #0x2e] + bl sub_0204AEC0 + cmp r0, #0 + bne _02339770 + ldr r0, _023398CC ; =0x0235376C + ldrb r0, [r0, #1] + cmp r0, #0 + addne r0, r5, #0x40 + strneh r0, [sp, #0x2c] + moveq r0, #1 + streqh r0, [sp, #0x2c] + b _0233979C +_02339770: + bl sub_0204AEC0 + cmp r0, #1 + addeq r0, r5, #0x40 + streqh r0, [sp, #0x2c] + strneh r5, [sp, #0x2c] + b _0233979C +_02339788: + mov r2, #1 + mov r1, #0x64 + strh r2, [sp, #0x2c] + strh r2, [sp, #0x2e] + strh r1, [r0, #2] +_0233979C: + sub r3, sb, #2 + add r0, r3, r3, lsr #31 + mov r5, r0, asr #1 + mov r0, #0x700 + mul r7, r5, r0 + ldr r0, _023398CC ; =0x0235376C + mov r2, sl, lsr #0x1f + mov r4, r3, lsr #0x1f + rsb r1, r2, sl, lsl #31 + rsb r3, r4, r3, lsl #31 + ldr sb, [r0, #8] + add r0, sl, sl, lsr #31 + ldrsh r6, [sp, #0x2c] + add r2, r2, r1, ror #31 + add r1, r4, r3, ror #31 + add r8, r2, r1, lsl #1 + ldr r2, [sb] + add r1, r8, r6, lsl #2 + mov r4, r0, asr #1 + add r0, fp, r7 + add r6, r0, r4, lsl #6 + ldr r1, [r2, r1, lsl #2] + mov r0, r6 + bl ov29_0233A2F0 + ldr r0, _023398CC ; =0x0235376C + ldrsh r1, [sp, #0x2e] + ldr r0, [r0, #8] + add r2, fp, #0x7000 + add r2, r2, r7 + add r7, r2, r4, lsl #6 + ldr r2, [r0] + add r0, r8, r1, lsl #2 + ldr r1, [r2, r0, lsl #2] + mov r0, r7 + bl ov29_0233A2F0 + add r0, fp, #0xe000 + ldrb r1, [r0, #0x445] + cmp r1, #0 + bne _023398BC + mov r1, #0x1c + mul r8, r5, r1 + add r1, r0, r8 + ldrb r2, [r1, r4] + add r1, r1, r4 + cmp r2, #0 + bne _023398BC + mov r3, #1 + strb r3, [r1] + ldr r2, [r0, #0x440] + cmp r2, #0x28 + strgeb r3, [r0, #0x445] + bge _023398BC + add r3, r4, r8 + add r2, fp, r2, lsl #4 + mov r3, r3, lsl #6 + add r2, r2, #0xe000 + str r3, [r2, #0x1c0] + ldr r2, [r0, #0x440] + add r2, fp, r2, lsl #4 + add r2, r2, #0xe000 + str r6, [r2, #0x1c4] + ldr r2, [r0, #0x440] + add r2, fp, r2, lsl #4 + add r2, r2, #0xe000 + str r7, [r2, #0x1c8] + ldr r2, [r0, #0x440] + add r2, fp, r2, lsl #4 + add r2, r2, #0xe000 + str r1, [r2, #0x1cc] + ldr r1, [r0, #0x440] + add r1, r1, #1 + str r1, [r0, #0x440] +_023398BC: + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023398C4: .word 0x02352FCC +_023398C8: .word 0x02353538 +_023398CC: .word 0x0235376C +_023398D0: .word 0x0237CFB8 +_023398D4: .word 0x02352FF4 + arm_func_end ov29_023391EC + + arm_func_start ov29_023398D8 +ov29_023398D8: ; 0x023398D8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r2, #0x7000 + mla r6, r1, r2, r0 + add r0, r0, #0xe000 + mov r5, #0 + ldr r2, _02339928 ; =0x0235377C + strb r5, [r0, #0x445] + ldr r7, [r2, r1, lsl #2] + mov r4, #0x200 + b _0233991C +_02339900: + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl Memcpy32 + add r7, r7, #0x200 + add r6, r6, #0x200 + add r5, r5, #8 +_0233991C: + cmp r5, #0x1c0 + blo _02339900 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02339928: .word 0x0235377C + arm_func_end ov29_023398D8 + + arm_func_start ov29_0233992C +ov29_0233992C: ; 0x0233992C + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02339A1C ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r4, #0 + mov r5, r4 + bl ov29_022EA408 + ldr r1, _02339A20 ; =0x0237CFB8 + ldrb r1, [r1] + cmp r1, #0 + beq _0233996C + cmp r0, #0 + cmpne r0, #3 + cmpne r0, #0xc + moveq r4, #1 +_0233996C: + bl sub_0204AEA0 + cmp r0, #3 + moveq r5, #1 + bl GetMinimapData + mov r6, r0 + add r0, r6, #0xe000 + ldrb r0, [r0, #0x444] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl ov10_022BFD20 + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + add r0, r6, #0xe000 + ldrb r0, [r0, #0x445] + cmp r0, #0 + bne _023399D8 + cmp r4, #0 + beq _023399C0 + mov r0, r6 + mov r1, #0 + bl ov29_0233A470 +_023399C0: + cmp r5, #0 + beq _02339A0C + mov r0, r6 + mov r1, #1 + bl ov29_0233A470 + b _02339A0C +_023399D8: + cmp r4, #0 + beq _023399EC + mov r0, r6 + mov r1, #0 + bl ov29_023398D8 +_023399EC: + cmp r5, #0 + beq _02339A00 + mov r0, r6 + mov r1, #1 + bl ov29_023398D8 +_02339A00: + add r0, r6, #0xe000 + mov r1, #1 + strb r1, [r0, #0x446] +_02339A0C: + add r0, r6, #0xe000 + mov r1, #0 + str r1, [r0, #0x440] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02339A1C: .word 0x02353538 +_02339A20: .word 0x0237CFB8 + arm_func_end ov29_0233992C + + arm_func_start ov29_02339A24 +ov29_02339A24: ; 0x02339A24 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r1, _02339CB8 ; =0x02353538 + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x249] + cmp r0, #0 + bne _02339CB0 + ldr r0, _02339CBC ; =0x0235376C + ldrsh r0, [r0, #2] + cmp r0, #0x64 + bge _02339CB0 + ldr r0, _02339CC0 ; =0x0237CFB8 + ldrb r1, [r0, #1] + add r2, r1, #1 + and r1, r2, #0xff + strb r2, [r0, #1] + tst r1, #8 + bne _02339CB0 + add r0, sp, #0 + mov r1, #8 + bl MemZero + ldrh r2, [sp] + ldrh r0, [sp, #6] + ldrh r1, [sp, #2] + bic r2, r2, #0x100 + strh r2, [sp] + ldrh r2, [sp] + bic r0, r0, #1 + strh r0, [sp, #6] + bic r2, r2, #0x200 + strh r2, [sp] + ldrh r2, [sp] + bic r1, r1, #0x3e00 + strh r1, [sp, #2] + bic r0, r2, #0xc00 + strh r0, [sp] + ldrh r0, [sp] + ldrh r2, [sp, #2] + ldrh r1, [sp, #4] + bic r0, r0, #0x1000 + strh r0, [sp] + ldrh r3, [sp] + ldrh r0, [sp, #6] + bic r2, r2, #0xc000 + bic r3, r3, #0xc000 + bic r1, r1, #0xc00 + bic r0, r0, #2 + strh r3, [sp] + strh r2, [sp, #2] + strh r1, [sp, #4] + strh r0, [sp, #6] + bl GetMinimapData + add r0, r0, #0xe000 + ldrb r0, [r0, #0x448] + cmp r0, #0 + beq _02339BC0 + bl sub_0204AEA0 + cmp r0, #3 + bne _02339BC0 + ldrh r0, [sp, #4] + mov r2, #0x400 + rsb r2, r2, #0 + and r0, r0, r2 + strh r0, [sp, #4] + ldrh r0, [sp, #4] + ldr ip, _02339CBC ; =0x0235376C + ldrh r3, [sp, #2] + orr r5, r0, #0x70 + add r0, r2, #0x200 + and r0, r3, r0 + strh r0, [sp, #2] + ldrsh r1, [ip, #2] + bic r5, r5, #0xf000 + strh r5, [sp, #4] + mov r0, r1, lsl #2 + ldrh r1, [sp] + add r5, r0, #0x10 + and r2, r5, r2, lsr #23 + ldrh r6, [sp, #2] + ldrh r3, [sp, #4] + bic r1, r1, #0x2000 + orr r6, r6, r2 + orr r0, r3, #0xc000 + ldr r3, _02339CC4 ; =0x020AFC4C + ldrh r5, [sp, #6] + ldr r2, _02339CC8 ; =0xFFFF000F + strh r1, [sp] + and r1, r5, r2 + strh r1, [sp, #6] + strh r6, [sp, #2] + strh r0, [sp, #4] + ldrsh r0, [ip, #4] + ldrh r2, [sp, #6] + ldr r3, [r3] + mov r0, r0, lsl #0x16 + orr r5, r2, r0, lsr #16 + ldr r2, _02339CCC ; =0x0000013F + add r1, sp, #0 + add r0, r3, #0x70 + strh r5, [sp, #6] + bl sub_0201B9F8 +_02339BC0: + cmp r4, #0 + bne _02339CB0 + ldr r0, _02339CC0 ; =0x0237CFB8 + ldrb r0, [r0] + cmp r0, #0 + beq _02339CB0 + bl GetMinimapData + add r0, r0, #0xe000 + ldrb r0, [r0, #0x447] + cmp r0, #0 + beq _02339CB0 + bl sub_0204AEC0 + cmp r0, #0 + beq _02339CB0 + ldrh r0, [sp, #4] + mov r2, #0x400 + rsb r2, r2, #0 + and r0, r0, r2 + strh r0, [sp, #4] + ldrh r0, [sp, #4] + ldrh r4, [sp] + ldrh r6, [sp, #2] + add r2, r2, #0x200 + orr r1, r0, #0xdd + ldr ip, _02339CBC ; =0x0235376C + and r2, r6, r2 + strh r2, [sp, #2] + ldrsh r0, [ip, #2] + orr r1, r1, #0x100 + bic r4, r4, #0x2000 + strh r4, [sp] + strh r1, [sp, #4] + mov r5, r0, lsl #2 + ldrh r0, [sp, #4] + ldrh r1, [sp] + ldrh lr, [sp, #6] + ldr r2, _02339CC8 ; =0xFFFF000F + bic r0, r0, #0xf000 + and r2, lr, r2 + orr r1, r1, #0x2000 + ldr r3, _02339CD0 ; =0x000001DD + strh r2, [sp, #6] + ldrh r6, [sp, #2] + add r5, r5, #8 + add r2, r3, #0x22 + and r2, r5, r2 + orr r2, r6, r2 + strh r2, [sp, #2] + strh r0, [sp, #4] + strh r1, [sp] + ldrsh r1, [ip, #4] + ldr r4, _02339CC4 ; =0x020AFC4C + ldrh r2, [sp, #6] + ldr r0, [r4] + mov r1, r1, lsl #0x16 + orr r4, r2, r1, lsr #16 + add r1, sp, #0 + sub r2, r3, #0x9e + strh r4, [sp, #6] + bl sub_0201B9F8 +_02339CB0: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02339CB8: .word 0x02353538 +_02339CBC: .word 0x0235376C +_02339CC0: .word 0x0237CFB8 +_02339CC4: .word 0x020AFC4C +_02339CC8: .word 0xFFFF000F +_02339CCC: .word 0x0000013F +_02339CD0: .word 0x000001DD + arm_func_end ov29_02339A24 + + arm_func_start ov29_02339CD4 +ov29_02339CD4: ; 0x02339CD4 + ldr r0, _02339CE4 ; =0x0237CFB8 + mov r1, #0 + strb r1, [r0, #1] + bx lr + .align 2, 0 +_02339CE4: .word 0x0237CFB8 + arm_func_end ov29_02339CD4 + + arm_func_start ov29_02339CE8 +ov29_02339CE8: ; 0x02339CE8 + stmdb sp!, {r4, r5, r6, lr} + bl GetMinimapData + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r6, #0 + add r0, r0, #0xe000 + mov r1, #1 + strb r1, [r0, #0x445] + mov r4, r6 +_02339D0C: + mov r5, r4 +_02339D10: + mov r0, r5 + mov r1, r6 + bl ov29_023391EC + add r5, r5, #1 + cmp r5, #0x38 + blt _02339D10 + add r6, r6, #1 + cmp r6, #0x20 + blt _02339D0C + bl sub_0204AEC0 + cmp r0, #0 + beq _02339D54 + bl GetMinimapData + add r0, r0, #0xe000 + mov r1, #1 + strb r1, [r0, #0x447] + ldmia sp!, {r4, r5, r6, pc} +_02339D54: + ldr r0, _02339D78 ; =0x0235376C + ldrb r0, [r0, #1] + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + bl GetMinimapData + add r0, r0, #0xe000 + mov r1, #1 + strb r1, [r0, #0x447] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02339D78: .word 0x0235376C + arm_func_end ov29_02339CE8 + + arm_func_start ov29_02339D7C +ov29_02339D7C: ; 0x02339D7C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + cmp r0, #1 + mov r5, #0x10 + moveq r6, #0 + beq _02339D9C + cmp r1, #0 + movne r6, #0 + moveq r6, #5 +_02339D9C: + cmp r0, #1 + mov sl, #0x1140 + mov r8, #1 + bne _02339E6C + mov sb, #0 + mov fp, sb + b _02339E00 +_02339DB8: + mov r0, r8, lsl #0x10 + mov r7, fp + mov r4, r0, asr #0x10 +_02339DC4: + add r0, r7, #2 + add r1, sl, #1 + mov ip, r0, lsl #0x10 + mov r0, r1, lsl #0x10 + mov r2, sl + mov sl, r0, lsr #0x10 + mov r1, r4 + mov r3, #1 + mov r0, ip, asr #0x10 + bl ov29_02339F2C + add r7, r7, #1 + cmp r7, #0x1c + blt _02339DC4 + add r8, r8, #1 + add sb, sb, #1 +_02339E00: + cmp sb, r5 + blt _02339DB8 + mov sb, #0 + mov r4, #0x1000 + mov fp, #1 + mov r7, sb + b _02339E58 +_02339E1C: + mov r0, r8, lsl #0x10 + mov sl, r7 + mov r5, r0, asr #0x10 +_02339E28: + add r0, sl, #2 + mov r0, r0, lsl #0x10 + mov r1, r5 + mov r2, r4 + mov r3, fp + mov r0, r0, asr #0x10 + bl ov29_02339F2C + add sl, sl, #1 + cmp sl, #0x1c + blt _02339E28 + add r8, r8, #1 + add sb, sb, #1 +_02339E58: + cmp sb, r6 + blt _02339E1C + mov r0, #1 + bl ov29_02339F64 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02339E6C: + mov r7, #0 + mov fp, r7 + b _02339EC0 +_02339E78: + mov r0, r8, lsl #0x10 + mov sb, fp + mov r4, r0, asr #0x10 +_02339E84: + add r0, sb, #1 + add r1, sl, #1 + mov ip, r0, lsl #0x10 + mov r0, r1, lsl #0x10 + mov r2, sl + mov sl, r0, lsr #0x10 + mov r1, r4 + mov r3, #0 + mov r0, ip, asr #0x10 + bl ov29_02339F2C + add sb, sb, #1 + cmp sb, #0x1c + blt _02339E84 + add r8, r8, #1 + add r7, r7, #1 +_02339EC0: + cmp r7, r5 + blt _02339E78 + mov sb, #0 + mov r4, #0x1000 + mov fp, sb + mov r7, sb + b _02339F18 +_02339EDC: + mov r0, r8, lsl #0x10 + mov sl, r7 + mov r5, r0, asr #0x10 +_02339EE8: + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r1, r5 + mov r2, r4 + mov r3, fp + mov r0, r0, asr #0x10 + bl ov29_02339F2C + add sl, sl, #1 + cmp sl, #0x1c + blt _02339EE8 + add r8, r8, #1 + add sb, sb, #1 +_02339F18: + cmp sb, r6 + blt _02339EDC + mov r0, #0 + bl ov29_02339F64 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02339D7C + + arm_func_start ov29_02339F2C +ov29_02339F2C: ; 0x02339F2C + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr ip, _02339F60 ; =0x0235352C + str r1, [sp, #4] + ldr ip, [ip] + mov r1, #0xc + mla r1, r3, r1, ip + str r0, [sp] + ldr r0, [r1, #0x24] + add r1, sp, #0 + bl sub_0200B3FC + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02339F60: .word 0x0235352C + arm_func_end ov29_02339F2C + + arm_func_start ov29_02339F64 +ov29_02339F64: ; 0x02339F64 + ldr r2, _02339F80 ; =0x0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _02339F84 ; =sub_0200B330 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_02339F80: .word 0x0235352C +_02339F84: .word sub_0200B330 + arm_func_end ov29_02339F64 + + arm_func_start ov29_02339F88 +ov29_02339F88: ; 0x02339F88 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0204AEC0 + cmp r0, #0 + beq _02339FAC + mov r1, r4 + mov r0, #0 + bl ov29_02339D7C + ldmia sp!, {r4, pc} +_02339FAC: + ldr r0, _02339FCC ; =0x0235376C + ldrb r0, [r0, #1] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r1, r4 + mov r0, #0 + bl ov29_02339D7C + ldmia sp!, {r4, pc} + .align 2, 0 +_02339FCC: .word 0x0235376C + arm_func_end ov29_02339F88 + + arm_func_start ov29_02339FD0 +ov29_02339FD0: ; 0x02339FD0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0204AEA0 + cmp r0, #3 + ldmneia sp!, {r4, pc} + mov r1, r4 + mov r0, #1 + bl ov29_02339D7C + ldmia sp!, {r4, pc} + arm_func_end ov29_02339FD0 + + arm_func_start ov29_02339FF4 +ov29_02339FF4: ; 0x02339FF4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_02339F88 + bl sub_0204AEA0 + cmp r0, #3 + ldmneia sp!, {r4, pc} + mov r1, r4 + mov r0, #1 + bl ov29_02339D7C + ldmia sp!, {r4, pc} + arm_func_end ov29_02339FF4 + + arm_func_start ov29_0233A01C +ov29_0233A01C: ; 0x0233A01C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + cmp r0, #0 + movne r6, #0 + mov sb, #0 + mov sl, r1 + mov r5, #0x10 + moveq r6, #5 + mov r8, #1 + mov fp, sb + b _0233A080 +_0233A044: + mov r0, r8, lsl #0x10 + mov r7, fp + mov r4, r0, asr #0x10 +_0233A050: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r1, r4 + mov r2, #0x1000 + mov r3, sl + mov r0, r0, asr #0x10 + bl ov29_02339F2C + add r7, r7, #1 + cmp r7, #0x1c + blt _0233A050 + add r8, r8, #1 + add sb, sb, #1 +_0233A080: + cmp sb, r5 + blt _0233A044 + mov r7, #0 + mov fp, #0x1000 + mov r5, r7 + b _0233A0D4 +_0233A098: + mov r0, r8, lsl #0x10 + mov sb, r5 + mov r4, r0, asr #0x10 +_0233A0A4: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov r1, r4 + mov r2, fp + mov r3, sl + mov r0, r0, asr #0x10 + bl ov29_02339F2C + add sb, sb, #1 + cmp sb, #0x1c + blt _0233A0A4 + add r8, r8, #1 + add r7, r7, #1 +_0233A0D4: + cmp r7, r6 + blt _0233A098 + mov r0, sl + bl ov29_02339F64 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_0233A01C + + arm_func_start ov29_0233A0E8 +ov29_0233A0E8: ; 0x0233A0E8 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #1 + bne _0233A114 + bl sub_0204AEA0 + cmp r0, #3 + ldmneia sp!, {r4, pc} + mov r0, r4 + mov r1, #1 + bl ov29_0233A01C + ldmia sp!, {r4, pc} +_0233A114: + cmp r1, #0 + ldmneia sp!, {r4, pc} + bl sub_0204AEC0 + cmp r0, #0 + beq _0233A138 + mov r0, r4 + mov r1, #0 + bl ov29_0233A01C + ldmia sp!, {r4, pc} +_0233A138: + ldr r0, _0233A158 ; =0x0235376C + ldrb r0, [r0, #1] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0 + bl ov29_0233A01C + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A158: .word 0x0235376C + arm_func_end ov29_0233A0E8 + + arm_func_start ov29_0233A15C +ov29_0233A15C: ; 0x0233A15C + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0204AEA0 + cmp r0, #3 + bne _0233A17C + mov r0, r4 + mov r1, #1 + bl ov29_0233A01C +_0233A17C: + bl sub_0204AEC0 + cmp r0, #0 + beq _0233A198 + mov r0, r4 + mov r1, #0 + bl ov29_0233A01C + ldmia sp!, {r4, pc} +_0233A198: + ldr r0, _0233A1B8 ; =0x0235376C + ldrb r0, [r0, #1] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0 + bl ov29_0233A01C + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A1B8: .word 0x0235376C + arm_func_end ov29_0233A15C + + arm_func_start ov29_0233A1BC +ov29_0233A1BC: ; 0x0233A1BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, #0 + mov r7, r0 + mov r8, #0x1000 + mov r4, r6 +_0233A1D0: + mov r0, r6, lsl #0x10 + mov r5, r4 + mov sb, r0, asr #0x10 +_0233A1DC: + mov r0, r5, lsl #0x10 + mov r1, sb + mov r2, r8 + mov r3, r7 + mov r0, r0, asr #0x10 + bl ov29_02339F2C + add r5, r5, #1 + cmp r5, #0x1c + blt _0233A1DC + add r6, r6, #1 + cmp r6, #0x20 + blt _0233A1D0 + mov r0, r7 + bl ov29_02339F64 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_0233A1BC + + arm_func_start SetMinimapDataE447 +SetMinimapDataE447: ; 0x0233A218 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetMinimapData + add r0, r0, #0xe000 + strb r4, [r0, #0x447] + ldmia sp!, {r4, pc} + arm_func_end SetMinimapDataE447 + + arm_func_start SetMinimapDataE448 +SetMinimapDataE448: ; 0x0233A230 + stmdb sp!, {r4, lr} + mov r4, r0 + bl GetMinimapData + add r0, r0, #0xe000 + strb r4, [r0, #0x448] + ldmia sp!, {r4, pc} + arm_func_end SetMinimapDataE448 + + arm_func_start ov29_0233A248 +ov29_0233A248: ; 0x0233A248 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #0 + bl ov29_0233A0E8 + cmp r4, #0 + bne _0233A274 + bl GetMinimapData + add r0, r0, #0xe000 + mov r1, #0 + strb r1, [r0, #0x447] +_0233A274: + cmp r4, #1 + ldmneia sp!, {r4, pc} + bl GetMinimapData + add r0, r0, #0xe000 + mov r1, #0 + strb r1, [r0, #0x448] + ldmia sp!, {r4, pc} + arm_func_end ov29_0233A248 + + arm_func_start ov29_0233A290 +ov29_0233A290: ; 0x0233A290 + stmdb sp!, {r3, r4, r5, lr} + bl GetMinimapData + add r1, r0, #0xe000 + ldrb r1, [r1, #0x446] + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r4, #0 + mov r3, r4 + mov ip, r4 + mov r2, #0x1c +_0233A2B8: + mla r5, r4, r2, r0 + mov lr, ip +_0233A2C0: + add r1, r5, lr + add r1, r1, #0xe000 + add lr, lr, #1 + strb r3, [r1] + cmp lr, #0x38 + blt _0233A2C0 + add r4, r4, #1 + cmp r4, #0x20 + blt _0233A2B8 + add r0, r0, #0xe000 + strb r3, [r0, #0x446] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0233A290 + + arm_func_start ov29_0233A2F0 +ov29_0233A2F0: ; 0x0233A2F0 + ldr r3, [r0] + ldmia r1, {r2, ip} + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0] + ldr r3, [r0, #4] + ldr r2, [r1, #8] + ldr ip, [r1, #0xc] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #4] + ldr r3, [r0, #8] + ldr r2, [r1, #0x10] + ldr ip, [r1, #0x14] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #8] + ldr r3, [r0, #0xc] + ldr r2, [r1, #0x18] + ldr ip, [r1, #0x1c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0xc] + ldr r3, [r0, #0x10] + ldr r2, [r1, #0x20] + ldr ip, [r1, #0x24] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x10] + ldr r3, [r0, #0x14] + ldr r2, [r1, #0x28] + ldr ip, [r1, #0x2c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x14] + ldr r3, [r0, #0x18] + ldr r2, [r1, #0x30] + ldr ip, [r1, #0x34] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x18] + ldr r3, [r0, #0x1c] + ldr r2, [r1, #0x38] + ldr ip, [r1, #0x3c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x1c] + ldr r3, [r0, #0x20] + ldr r2, [r1, #0x40] + ldr ip, [r1, #0x44] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x20] + ldr r3, [r0, #0x24] + ldr r2, [r1, #0x48] + ldr ip, [r1, #0x4c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x24] + ldr r3, [r0, #0x28] + ldr r2, [r1, #0x50] + ldr ip, [r1, #0x54] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x28] + ldr r3, [r0, #0x2c] + ldr r2, [r1, #0x58] + ldr ip, [r1, #0x5c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x2c] + ldr r3, [r0, #0x30] + ldr r2, [r1, #0x60] + ldr ip, [r1, #0x64] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x30] + ldr r3, [r0, #0x34] + ldr r2, [r1, #0x68] + ldr ip, [r1, #0x6c] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x34] + ldr r3, [r0, #0x38] + ldr r2, [r1, #0x70] + ldr ip, [r1, #0x74] + and r2, r3, r2 + orr r2, ip, r2 + str r2, [r0, #0x38] + ldr r3, [r0, #0x3c] + ldr r2, [r1, #0x78] + ldr ip, [r1, #0x7c] + and r1, r3, r2 + orr r1, ip, r1 + str r1, [r0, #0x3c] + bx lr + arm_func_end ov29_0233A2F0 + + arm_func_start ov29_0233A470 +ov29_0233A470: ; 0x0233A470 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r4, #0 + add r2, r0, #0x21c0 + add r5, r0, #0xe000 + add ip, r2, #0xc000 + ldr r0, _0233A544 ; =0x0235377C + mov r6, r4 + b _0233A534 +_0233A490: + add lr, ip, r4, lsl #4 + add r2, lr, r1, lsl #2 + ldr r3, [r2, #4] + ldr sb, [ip, r4, lsl #4] + ldr r8, [r0, r1, lsl #2] + ldr r7, [r3] + add r2, sb, r8 + str r7, [sb, r8] + ldr r7, [r3, #4] + add r4, r4, #1 + str r7, [r2, #4] + ldr r7, [r3, #8] + str r7, [r2, #8] + ldr r7, [r3, #0xc] + str r7, [r2, #0xc] + ldr r7, [r3, #0x10] + str r7, [r2, #0x10] + ldr r7, [r3, #0x14] + str r7, [r2, #0x14] + ldr r7, [r3, #0x18] + str r7, [r2, #0x18] + ldr r7, [r3, #0x1c] + str r7, [r2, #0x1c] + ldr r7, [r3, #0x20] + str r7, [r2, #0x20] + ldr r7, [r3, #0x24] + str r7, [r2, #0x24] + ldr r7, [r3, #0x28] + str r7, [r2, #0x28] + ldr r7, [r3, #0x2c] + str r7, [r2, #0x2c] + ldr r7, [r3, #0x30] + str r7, [r2, #0x30] + ldr r7, [r3, #0x34] + str r7, [r2, #0x34] + ldr r7, [r3, #0x38] + str r7, [r2, #0x38] + ldr r3, [r3, #0x3c] + str r3, [r2, #0x3c] + ldr r2, [lr, #0xc] + strb r6, [r2] +_0233A534: + ldr r2, [r5, #0x440] + cmp r4, r2 + blt _0233A490 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0233A544: .word 0x0235377C + arm_func_end ov29_0233A470 + + arm_func_start ov29_0233A548 +ov29_0233A548: ; 0x0233A548 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _0233A5E0 ; =0x02352FD0 + ldr r7, _0233A5E4 ; =0x0235376C + mov r6, r1 + add r5, r2, r0, lsl #2 + mov r4, #0 +_0233A560: + cmp r4, #7 + bne _0233A5B0 + cmp r6, #0 + bne _0233A58C + add r0, r4, #0x100 + mov r1, r0, lsl #0x10 + mov r0, r5 + mov r2, r6 + mov r1, r1, asr #0x10 + bl ov29_0233A5E8 + b _0233A5D0 +_0233A58C: + ldr r1, [r7, #8] + add r0, r4, #0x100 + ldr r3, [r1, #4] + mov r1, r0, lsl #0x10 + mov r2, r6 + add r0, r3, r4, lsl #2 + mov r1, r1, asr #0x10 + bl ov29_0233A5E8 + b _0233A5D0 +_0233A5B0: + ldr r1, [r7, #8] + add r0, r4, #0x100 + ldr r3, [r1, #4] + mov r1, r0, lsl #0x10 + mov r2, r6 + add r0, r3, r4, lsl #2 + mov r1, r1, asr #0x10 + bl ov29_0233A5E8 +_0233A5D0: + add r4, r4, #1 + cmp r4, #0x10 + blt _0233A560 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233A5E0: .word 0x02352FD0 +_0233A5E4: .word 0x0235376C + arm_func_end ov29_0233A548 + + arm_func_start ov29_0233A5E8 +ov29_0233A5E8: ; 0x0233A5E8 + stmdb sp!, {r4, lr} + ldr ip, _0233A620 ; =0x0235352C + mov r3, #0xc + ldr ip, [ip] + mov lr, r0 + add r0, ip, #0x20 + mla r4, r2, r3, r0 + ldr r0, [r4, #8] + mov r2, r1 + mov r1, lr + bl sub_0200C008 + ldr r0, [r4, #8] + bl sub_0200A174 + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A620: .word 0x0235352C + arm_func_end ov29_0233A5E8 + + arm_func_start LoadFixedRoomDataVeneer +LoadFixedRoomDataVeneer: ; 0x0233A624 + ldr ip, _0233A62C ; =LoadFixedRoomData + bx ip + .align 2, 0 +_0233A62C: .word LoadFixedRoomData + arm_func_end LoadFixedRoomDataVeneer + + arm_func_start ov29_0233A630 +ov29_0233A630: ; 0x0233A630 + stmdb sp!, {r3, lr} + bl ov29_02343DD8 + ldr r0, _0233A650 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x12000 + str r1, [r0, #0xaa4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0233A650: .word 0x02353538 + arm_func_end ov29_0233A630 + + arm_func_start IsNormalFloor +IsNormalFloor: ; 0x0233A654 + stmdb sp!, {r3, lr} + bl IsHiddenStairsFloor + cmp r0, #0 + bne _0233A6C4 + bl IsGoldenChamber + cmp r0, #0 + bne _0233A6C4 + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + bne _0233A6C4 + mov r0, #0xa + mov r1, #6 + bl IsCurrentMissionTypeExact + cmp r0, #0 + bne _0233A6C4 + mov r0, #0xc + bl IsCurrentMissionType + cmp r0, #0 + bne _0233A6C4 + ldr r0, _0233A6D4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0 + beq _0233A6CC + cmp r0, #0xa5 + bhs _0233A6CC +_0233A6C4: + mov r0, #0 + ldmia sp!, {r3, pc} +_0233A6CC: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0233A6D4: .word 0x02353538 + arm_func_end IsNormalFloor + + arm_func_start GenerateFloor +GenerateFloor: ; 0x0233A6D8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x54 + ldr r2, _0233AE64 ; =0x02353538 + mov r8, #0 + ldr r3, [r2] + ldr r0, _0233AE68 ; =0x000286B2 + add r1, r3, #0x12000 + str r8, [r1, #0xaa4] + ldr r1, [r2] + add sb, r3, r0 + add r0, r1, #0x3f00 + strh r8, [r0, #0xc2] + bl LoadFixedRoomDataVeneer + bl ov29_02343DC4 + ldr r1, _0233AE64 ; =0x02353538 + ldr r2, _0233AE6C ; =0x0237CFBC + ldr r1, [r1] + mov r3, r8 + add r1, r1, #0x12000 + str r0, [r1, #0xaa4] + strb r3, [r2, #3] + strb r3, [r2, #1] + strb r3, [r2, #7] + bl ov29_02342F08 + bl IsOutlawMonsterHouseFloor + ldr r1, _0233AE64 ; =0x02353538 + ldr r3, _0233AE6C ; =0x0237CFBC + ldr r2, [r1] + mov r1, sb + add r2, r2, #0xc4 + strb r0, [r3, #8] + add r0, r2, #0x4000 + bl ov29_02342D9C + ldr r1, _0233AE64 ; =0x02353538 + ldr r2, _0233AE6C ; =0x0237CFBC + ldr r1, [r1] + str r0, [r2, #0x2c] + add r0, r1, #0x4000 + ldrsh r1, [r0, #0xd4] + ldr r0, _0233AE70 ; =0x020A1AE8 + ldrb r0, [r0, r1] + mov r1, #0xff + cmp r0, #2 + moveq r2, #1 + ldr r0, _0233AE6C ; =0x0237CFBC + movne r2, r8 + strb r2, [r0, #4] + strb r1, [r0, #2] + mov r1, #0 + strb r1, [r0, #6] + ldrb r0, [sb, #7] + bl ov29_02342EBC + ldr r1, _0233AE6C ; =0x0237CFBC + strh r0, [r1, #0xc] + ldrb r0, [sb, #8] + strh r0, [r1, #0x10] + ldrb r0, [r1, #8] + cmp r0, #0 + movne r0, #0x64 + strneh r0, [r1, #0x10] + ldr r0, _0233AE6C ; =0x0237CFBC + mov r1, #1 + strb r1, [r0] + sub r1, r1, #2 + str r1, [r0, #0x30] + str r1, [r0, #0x38] + str r1, [r0, #0x34] + str r1, [r0, #0x3c] + bl ResetFloor + bl IsNormalFloor + cmp r0, #0 + bne _0233A810 + ldr r0, _0233AE64 ; =0x02353538 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x700 + strh r1, [r0, #0x86] + b _0233A828 +_0233A810: + ldrb r0, [sb, #6] + bl Abs + ldr r1, _0233AE64 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x700 + strh r0, [r1, #0x86] +_0233A828: + ldr r3, _0233AE64 ; =0x02353538 + mov r7, #0 + ldr r0, [r3] + ldr r1, _0233AE74 ; =0x00012AFA + add r0, r0, #0x4000 + strb r7, [r0, #0xc5] + ldr r0, [r3] + ldr r2, _0233AE6C ; =0x0237CFBC + add r0, r0, #0x4000 + strb r7, [r0, #0xc6] + ldr r0, [r3] + strh r7, [r0, r1] + ldr r0, [r3] + add r0, r0, #0x4000 + str r7, [r0, #0xcc] + ldrb r0, [sb, #0xc] + str r0, [r2, #0x18] + b _0233AD3C +_0233A870: + ldr r1, _0233AE64 ; =0x02353538 + mov r0, #0 + str r0, [sp] + ldr r0, [r1] + add r0, r0, #0xc4 + add r0, r0, #0x4000 + bl ov29_02342C68 + mov r6, #0 + mvn r5, #0 + ldr r4, _0233AE64 ; =0x02353538 + b _0233AC50 +_0233A89C: + ldr r0, [sp] + cmp r0, #0 + beq _0233A8C8 + ldr r0, [r4] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + bl IsNotFullFloorFixedRoom + cmp r0, #0 + beq _0233AC58 + mov r0, #0 + str r0, [sp] +_0233A8C8: + ldr r0, [r4] + cmp r6, #1 + add r0, r0, #0x4000 + strh r6, [r0, #0xde] + ldrge r0, _0233AE6C ; =0x0237CFBC + movge r1, #0 + strge r1, [r0, #0x18] + ldr r0, _0233AE6C ; =0x0237CFBC + mov r1, #0 + strb r1, [r0, #5] + strh r5, [r0, #0x20] + strh r5, [r0, #0x22] + bl ResetFloor + ldr r0, [r4] + add r0, r0, #0xcc00 + strh r5, [r0, #0xe0] + ldr r0, [r4] + add r0, r0, #0xcc00 + strh r5, [r0, #0xe2] + ldr r0, [r4] + add r1, r0, #0x4000 + mov r0, #0 + strb r0, [r1, #0xc4] + ldr r0, [r4] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xda] + cmp r0, #0 + beq _0233A954 + mov r1, sb + bl GenerateFixedRoom + cmp r0, #0 + bne _0233AC58 + mov r0, #1 + str r0, [sp] + b _0233AB78 +_0233A954: + mov r0, #2 + ldrb sl, [sb] + mov fp, #0x20 + str r0, [sp, #4] + str r0, [sp, #8] + b _0233A9DC +_0233A96C: + cmp sl, #8 + mov r0, #2 + beq _0233A998 + mov r1, #9 + bl DungeonRandRange + str r0, [sp, #8] + mov r0, #2 + mov r1, #8 + bl DungeonRandRange + str r0, [sp, #4] + b _0233A9B4 +_0233A998: + mov r1, #5 + bl DungeonRandRange + str r0, [sp, #8] + mov r0, #2 + mov r1, #4 + bl DungeonRandRange + str r0, [sp, #4] +_0233A9B4: + ldr r0, [sp, #8] + cmp r0, #6 + ldrle r0, [sp, #4] + cmple r0, #4 + ble _0233A9E4 + subs fp, fp, #1 + moveq r0, #4 + streq r0, [sp, #8] + streq r0, [sp, #4] + beq _0233A9E4 +_0233A9DC: + cmp fp, #0 + bne _0233A96C +_0233A9E4: + ldr r1, [sp, #8] + mov r0, #0x38 + bl DivideInt + cmp r0, #7 + movle r0, #1 + strle r0, [sp, #8] + ldr r1, [sp, #4] + mov r0, #0x20 + bl DivideInt + ldr r1, [r4] + cmp r0, #7 + add r2, r1, #0x4000 + mov r1, #0 + strb r1, [r2, #0xc4] + ldr r1, [r4] + movle r0, #1 + add r2, r1, #0x4000 + mov r1, #0xff + strb r1, [r2, #0xc9] + ldr r1, _0233AE6C ; =0x0237CFBC + strle r0, [sp, #4] + and r0, sl, #0xf + cmp r0, #0xb + str sl, [r1, #0x28] + addls pc, pc, r0, lsl #2 + b _0233AAD4 +_0233AA4C: ; jump table + b _0233AAD4 ; case 0 + b _0233AA7C ; case 1 + b _0233AAEC ; case 2 + b _0233AB04 ; case 3 + b _0233AB14 ; case 4 + b _0233AB24 ; case 5 + b _0233AB3C ; case 6 + b _0233AB4C ; case 7 + b _0233AAD4 ; case 8 + b _0233AB58 ; case 9 + b _0233AB64 ; case 10 + b _0233AAA8 ; case 11 +_0233AA7C: + mov r0, #2 + bl DungeonRandInt + ldr r1, _0233AE6C ; =0x0237CFBC + mov r2, #1 + strb r2, [r1, #6] + add r1, r0, #2 + mov r0, #4 + mov r2, sb + bl GenerateStandardFloor + mov r8, #1 + b _0233AB78 +_0233AAA8: + mov r0, #2 + bl DungeonRandInt + ldr r1, _0233AE6C ; =0x0237CFBC + mov r2, #2 + strb r2, [r1, #6] + add r1, r0, #2 + mov r0, #4 + mov r2, sb + bl GenerateStandardFloor + mov r8, #1 + b _0233AB78 +_0233AAD4: + ldr r0, [sp, #8] + ldr r1, [sp, #4] + mov r2, sb + bl GenerateStandardFloor + mov r8, #1 + b _0233AB78 +_0233AAEC: + bl GenerateOneRoomMonsterHouseFloor + ldr r0, [r4] + add r1, r0, #0x4000 + mov r0, #1 + strb r0, [r1, #0xc4] + b _0233AB78 +_0233AB04: + mov r0, sb + bl GenerateOuterRingFloor + mov r8, #1 + b _0233AB78 +_0233AB14: + mov r0, sb + bl GenerateCrossroadsFloor + mov r8, #1 + b _0233AB78 +_0233AB24: + bl GenerateTwoRoomsWithMonsterHouseFloor + ldr r0, [r4] + add r1, r0, #0x4000 + mov r0, #1 + strb r0, [r1, #0xc4] + b _0233AB78 +_0233AB3C: + mov r0, sb + bl GenerateLineFloor + mov r8, #1 + b _0233AB78 +_0233AB4C: + mov r0, sb + bl GenerateCrossFloor + b _0233AB78 +_0233AB58: + mov r0, sb + bl GenerateBeetleFloor + b _0233AB78 +_0233AB64: + ldr r0, [sp, #8] + ldr r1, [sp, #4] + mov r2, sb + bl GenerateOuterRoomsFloor + mov r8, #1 +_0233AB78: + bl ResetInnerBoundaryTileRows + bl EnsureImpassableTilesAreWalls + ldr r0, _0233AE6C ; =0x0237CFBC + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0233AC4C + mov sl, #0 + mov r2, sl +_0233AB98: + mov r1, #0 + add r0, sp, #0x14 + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x40 + blt _0233AB98 + mov r0, r1 + str r0, [sp, #0xc] +_0233ABB8: + mov fp, #0 +_0233ABBC: + ldr r0, [sp, #0xc] + mov r1, fp + bl GetTile + str r0, [sp, #0x10] + bl GetTileTerrain + cmp r0, #1 + bne _0233ABFC + ldr r0, [sp, #0x10] + ldrb r2, [r0, #7] + cmp r2, #0xf0 + bhi _0233ABFC + cmp r2, #0x40 + movlo r1, #1 + addlo r0, sp, #0x14 + add sl, sl, #1 + strlob r1, [r0, r2] +_0233ABFC: + add fp, fp, #1 + cmp fp, #0x20 + blt _0233ABBC + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0x38 + blt _0233ABB8 + mov r1, #0 + mov r2, r1 +_0233AC24: + add r0, sp, #0x14 + ldrb r0, [r0, r2] + add r2, r2, #1 + cmp r0, #0 + addne r1, r1, #1 + cmp r2, #0x40 + blt _0233AC24 + cmp sl, #0x1e + cmpge r1, #2 + bge _0233AC58 +_0233AC4C: + add r6, r6, #1 +_0233AC50: + cmp r6, #0xa + blt _0233A89C +_0233AC58: + cmp r6, #0xa + bne _0233AC88 + ldr r0, _0233AE6C ; =0x0237CFBC + mvn r1, #0 + strh r1, [r0, #0x20] + strh r1, [r0, #0x22] + bl GenerateOneRoomMonsterHouseFloor + ldr r0, _0233AE64 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x4000 + strb r1, [r0, #0xc4] +_0233AC88: + bl FinalizeJunctions + cmp r8, #0 + beq _0233ACA0 + mov r1, sb + mov r0, #1 + bl GenerateSecondaryTerrainFormations +_0233ACA0: + bl DungeonRand100 + ldrb r1, [sb, #0x19] + cmp r0, r1 + movlt r0, #1 + movge r0, #0 + and r4, r0, #0xff + mov r0, sb + mov r1, r4 + bl SpawnNonEnemies + mov r0, sb + mov r1, r4 + bl SpawnEnemies + bl ResolveInvalidSpawns + ldr r0, _0233AE64 ; =0x02353538 + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0xcc00 + ldrsh r2, [r0, #0xe0] + cmp r2, r1 + ldrnesh r0, [r0, #0xe2] + cmpne r0, r1 + beq _0233AD38 + bl GetFloorType + cmp r0, #1 + beq _0233AD44 + ldr r0, _0233AE64 ; =0x02353538 + mvn r2, #0 + ldr r0, [r0] + add r1, r0, #0xcc00 + ldrsh r0, [r1, #0xe4] + cmp r0, r2 + ldrnesh r1, [r1, #0xe6] + cmpne r1, r2 + beq _0233AD38 + mov r2, #0 + bl StairsAlwaysReachable + cmp r0, #0 + bne _0233AD44 +_0233AD38: + add r7, r7, #1 +_0233AD3C: + cmp r7, #0xa + blt _0233A870 +_0233AD44: + cmp r7, #0xa + bne _0233AD98 + ldr r0, _0233AE6C ; =0x0237CFBC + mvn r1, #0 + strh r1, [r0, #0x20] + strh r1, [r0, #0x22] + bl ResetFloor + bl GenerateOneRoomMonsterHouseFloor + ldr r0, _0233AE64 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x4000 + strb r1, [r0, #0xc4] + bl FinalizeJunctions + mov r0, sb + mov r1, #0 + bl SpawnNonEnemies + mov r0, sb + mov r1, #0 + bl SpawnEnemies + bl ResolveInvalidSpawns +_0233AD98: + ldr r0, _0233AE6C ; =0x0237CFBC + ldrsh r1, [r0, #0x20] + cmp r1, #0 + ldrgesh r0, [r0, #0x22] + cmpge r0, #0 + blt _0233ADCC + bl GetKecleonIdToSpawnByFloor + ldr r1, _0233AE6C ; =0x0237CFBC + mov r2, r0 + ldrsh r0, [r1, #0x20] + ldrsh r1, [r1, #0x22] + mov r3, #0 + bl ov29_022FE198 +_0233ADCC: + ldr r0, _0233AE6C ; =0x0237CFBC + ldr r0, [r0, #0x30] + cmp r0, #0 + ldrlt r0, _0233AE64 ; =0x02353538 + movlt r1, #0 + blt _0233ADF4 + mov r0, sb + bl ov29_023427E4 + ldr r0, _0233AE64 ; =0x02353538 + mov r1, #1 +_0233ADF4: + ldr r0, [r0] + mov r2, #0x38 + add r0, r0, #0x4000 + strb r1, [r0, #0xc6] + mov r0, #0 + mov r1, r0 + mov r3, #0x20 + bl FlagHallwayJunctions + ldr r0, _0233AE6C ; =0x0237CFBC + ldrb r0, [r0, #4] + cmp r0, #0 + beq _0233AE28 + bl ConvertSecondaryTerrainToChasms +_0233AE28: + ldr r0, _0233AE64 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + sub r0, r0, #0x1a + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _0233AE58 + bl ConvertWallsToChasms +_0233AE58: + bl ov29_0233A630 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233AE64: .word 0x02353538 +_0233AE68: .word 0x000286B2 +_0233AE6C: .word 0x0237CFBC +_0233AE70: .word 0x020A1AE8 +_0233AE74: .word 0x00012AFA + arm_func_end GenerateFloor + + arm_func_start GetTileTerrain +GetTileTerrain: ; 0x0233AE78 + ldrh r0, [r0] + and r0, r0, #3 + bx lr + arm_func_end GetTileTerrain + + arm_func_start DungeonRand100 +DungeonRand100: ; 0x0233AE84 + ldr ip, _0233AE90 ; =DungeonRandInt + mov r0, #0x64 + bx ip + .align 2, 0 +_0233AE90: .word DungeonRandInt + arm_func_end DungeonRand100 + + arm_func_start ov29_0233AE94 +ov29_0233AE94: ; 0x0233AE94 + stmdb sp!, {r3, lr} + ldr r0, _0233AF04 ; =0x0235378C + ldrb r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _0233AF08 ; =0x0237CFBC + mvn r2, #0 + ldrsh r0, [r1, #0x1c] + cmp r0, r2 + ldrnesh r1, [r1, #0x1e] + cmpne r1, r2 + beq _0233AEFC + bl GetTileSafe + mov r2, #0 + strh r2, [r0] + ldr r1, _0233AF08 ; =0x0237CFBC + strh r2, [r0, #2] + ldrsh r0, [r1, #0x1c] + ldrsh r1, [r1, #0x1e] + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0233AEFC: + bl ov29_02342F08 + ldmia sp!, {r3, pc} + .align 2, 0 +_0233AF04: .word 0x0235378C +_0233AF08: .word 0x0237CFBC + arm_func_end ov29_0233AE94 + + arm_func_start FlagHallwayJunctions +FlagHallwayJunctions: ; 0x0233AF0C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov fp, r1 + mov sb, r2 + mov r8, r3 + b _0233B01C +_0233AF24: + mov r7, fp + sub r6, sl, #1 + b _0233B010 +_0233AF30: + mov r0, sl + mov r1, r7 + mov r4, #0 + bl GetTileSafe + mov r5, r0 + ldrh r0, [r5] + bic r0, r0, #4 + strh r0, [r5] + ldrb r0, [r5, #7] + cmp r0, #0xff + ldreqh r0, [r5] + andeq r0, r0, #3 + cmpeq r0, #1 + bne _0233B00C + cmp sl, #0 + ble _0233AF90 + mov r0, r6 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + moveq r0, r4 + addeq r4, r0, #1 +_0233AF90: + cmp r7, #0 + ble _0233AFB4 + mov r0, sl + sub r1, r7, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + addeq r4, r4, #1 +_0233AFB4: + cmp sl, #0x36 + bge _0233AFD8 + mov r1, r7 + add r0, sl, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + addeq r4, r4, #1 +_0233AFD8: + cmp sl, #0x1e + bge _0233AFFC + mov r0, sl + add r1, r7, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + addeq r4, r4, #1 +_0233AFFC: + cmp r4, #3 + ldrgeh r0, [r5] + orrge r0, r0, #8 + strgeh r0, [r5] +_0233B00C: + add r7, r7, #1 +_0233B010: + cmp r7, r8 + blt _0233AF30 + add sl, sl, #1 +_0233B01C: + cmp sl, sb + blt _0233AF24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end FlagHallwayJunctions + + arm_func_start GenerateStandardFloor +GenerateStandardFloor: ; 0x0233B028 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0xae0 + sub sp, sp, #0x1000 + mov r5, r1 + mov r6, r0 + mov r4, r2 + add r0, sp, #0x44 + add r1, sp, #8 + mov r2, r6 + mov r3, r5 + bl GetGridPositions + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl InitDungeonGrid + ldrsb r3, [r4, #1] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl AssignRooms + add r1, sp, #8 + str r1, [sp] + ldrb r3, [r4, #0xd] + add r0, sp, #0x80 + mov r1, r6 + str r3, [sp, #4] + mov r2, r5 + add r3, sp, #0x44 + bl CreateRoomsAndAnchors + mov r0, r6 + bl DungeonRandInt + mov r7, r0 + mov r0, r5 + bl DungeonRandInt + stmia sp, {r0, r4} + mov r3, r7 + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl AssignGridCellConnections + add r1, sp, #8 + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + add r3, sp, #0x44 + bl CreateGridCellConnections + add r1, sp, #8 + str r1, [sp] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + add r3, sp, #0x44 + bl EnsureConnectedGrid + ldrb r3, [r4, #9] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateMazeRoom + ldr r3, _0233B18C ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r3, #0xc] + mov r1, r6 + mov r2, r5 + bl GenerateKecleonShop + ldr r3, _0233B18C ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r3, #0x10] + mov r1, r6 + mov r2, r5 + bl GenerateMonsterHouse + ldrb r3, [r4, #0x13] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateExtraHallways + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateRoomImperfections + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateSecondaryStructures + add sp, sp, #0xae0 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233B18C: .word 0x0237CFBC + arm_func_end GenerateStandardFloor + + arm_func_start GenerateOuterRingFloor +GenerateOuterRingFloor: ; 0x0233B190 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2f4 + sub sp, sp, #0x1800 + mov r1, #5 + mov r2, #0x1c + add r3, r2, #0x33 + add r3, r3, r3, lsr #31 + mov r8, r3, asr #1 + mov fp, #0x33 + mov sl, #0x38 + mov r7, #2 + mov r6, #7 + mov r5, #0x10 + mov r3, #0x1e + str r2, [sp, #0x64] + add r4, r1, #0x1c + str r0, [sp, #8] + add r0, r4, r4, lsr #31 + mov sb, r0, asr #1 + mov r0, #0 + mov r4, #0x19 + str r0, [sp, #0x58] + str r1, [sp, #0x5c] + add r0, sp, #0x94 + mov r1, #6 + mov r2, #4 + str fp, [sp, #0x6c] + str sl, [sp, #0x70] + str sb, [sp, #0x60] + str r8, [sp, #0x68] + str r7, [sp, #0x1c] + str r6, [sp, #0x20] + str r5, [sp, #0x24] + str r4, [sp, #0x28] + str r3, [sp, #0x2c] + bl InitDungeonGrid + mov r3, #0 + ldr r0, _0233B614 ; =0x000001C2 + add r1, sp, #0x94 + mov r4, r3 +_0233B230: + mla r2, r3, r0, r1 + strb r4, [r2, #0xa] + add r3, r3, #1 + strb r4, [r2, #0x64] + cmp r3, #6 + blt _0233B230 + add r2, sp, #0x94 + mov r1, #0 + mov r0, #0x1e +_0233B254: + mla r3, r4, r0, r2 + strb r1, [r3, #0xa] + add r4, r4, #1 + strb r1, [r3, #0x8d4] + cmp r4, #4 + blt _0233B254 + mov r7, #1 + ldr r1, _0233B614 ; =0x000001C2 + mov r3, r7 + mov r5, r7 + add r4, sp, #0x94 + mov r0, #0x1e +_0233B284: + mla r6, r7, r1, r4 + mov r8, r5 +_0233B28C: + mla r2, r8, r0, r6 + add r8, r8, #1 + strb r3, [r2, #0xa] + cmp r8, #3 + blt _0233B28C + add r7, r7, #1 + cmp r7, #5 + blt _0233B284 + mov sl, #0 + str sl, [sp, #0xc] +_0233B2B4: + add r1, sp, #0x94 + mov r0, #0x1e + mla r7, sl, r0, r1 + add r0, sp, #0x1c + add r0, r0, sl, lsl #2 + mov sb, #0 + str r0, [sp, #0x10] +_0233B2D0: + ldr r0, _0233B614 ; =0x000001C2 + mla r0, sb, r0, r7 + ldrb r0, [r0, #0xa] + cmp r0, #0 + add r0, sp, #0x58 + add r1, r0, sb, lsl #2 + beq _0233B3F8 + ldr r8, [r0, sb, lsl #2] + add r0, sp, #0x1c + ldr r1, [r1, #4] + ldr r4, [r0, sl, lsl #2] + sub r0, r1, r8 + sub r5, r0, #3 + ldr r0, [sp, #0x10] + ldr r1, [r0, #4] + mov r0, #5 + sub r1, r1, r4 + sub r6, r1, #3 + mov r1, r5 + bl DungeonRandRange + mov fp, r0 + mov r0, #4 + mov r1, r6 + bl DungeonRandRange + str r0, [sp, #0x14] + sub r0, r5, fp + bl DungeonRandInt + add r1, r8, #2 + add r8, r1, r0 + ldr r0, [sp, #0x14] + sub r0, r6, r0 + bl DungeonRandInt + add r1, r4, #2 + add r4, r1, r0 + ldr r0, [sp, #0x14] + add fp, r8, fp + add r5, r4, r0 + ldr r0, _0233B614 ; =0x000001C2 + mul r0, sb, r0 + strh r8, [r7, r0] + add r0, r7, r0 + strh fp, [r0, #4] + strh r4, [r0, #2] + strh r5, [r0, #6] + ldr r0, [sp, #0xc] + and r0, r0, #0xff + str r0, [sp, #0x18] + b _0233B3E0 +_0233B390: + mov r6, r4 + b _0233B3D4 +_0233B398: + mov r0, r8 + mov r1, r6 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r6 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r8 + bl GetTileSafe + ldr r1, [sp, #0x18] + add r6, r6, #1 + strb r1, [r0, #7] +_0233B3D4: + cmp r6, r5 + blt _0233B398 + add r8, r8, #1 +_0233B3E0: + cmp r8, fp + blt _0233B390 + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + b _0233B4A0 +_0233B3F8: + ldr r2, [r0, sb, lsl #2] + ldr r1, [r1, #4] + add r0, r2, #1 + sub r1, r1, r2 + add r2, sp, #0x1c + ldr r3, [r2, sl, lsl #2] + ldr r2, [sp, #0x10] + sub r1, r1, #3 + ldr r2, [r2, #4] + add r1, r0, r1 + sub r2, r2, r3 + add r4, r3, #1 + sub r5, r2, #3 + bl DungeonRandRange + add r1, r4, r5 + mov r5, r0 + mov r0, r4 + bl DungeonRandRange + mov r4, r0 + ldr r0, _0233B614 ; =0x000001C2 + mul r0, sb, r0 + strh r5, [r7, r0] + add r1, r7, r0 + add r0, r5, #1 + strh r0, [r1, #4] + strh r4, [r1, #2] + add r0, r4, #1 + strh r0, [r1, #6] + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r4 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r5 + bl GetTileSafe + mov r1, #0xff + strb r1, [r0, #7] +_0233B4A0: + add sb, sb, #1 + cmp sb, #6 + blt _0233B2D0 + add sl, sl, #1 + cmp sl, #4 + blt _0233B2B4 + mov r1, #1 + mov r0, #6 + strb r1, [sp, #0xaa] + strb r1, [sp, #0x26b] + strb r1, [sp, #0x26c] + strb r1, [sp, #0x42d] + strb r1, [sp, #0x42e] + strb r1, [sp, #0x5ef] + strb r1, [sp, #0x5f0] + strb r1, [sp, #0x7b1] + strb r1, [sp, #0x7b2] + strb r1, [sp, #0x973] + strb r1, [sp, #0xa8] + strb r1, [sp, #0xc5] + strb r1, [sp, #0xc6] + strb r1, [sp, #0xe3] + strb r1, [sp, #0xe4] + strb r1, [sp, #0x101] + strb r1, [sp, #0x104] + strb r1, [sp, #0x2c5] + strb r1, [sp, #0x2c6] + strb r1, [sp, #0x487] + strb r1, [sp, #0x488] + strb r1, [sp, #0x649] + strb r1, [sp, #0x64a] + strb r1, [sp, #0x80b] + strb r1, [sp, #0x80c] + strb r1, [sp, #0x9cd] + strb r1, [sp, #0x972] + strb r1, [sp, #0x98f] + strb r1, [sp, #0x990] + strb r1, [sp, #0x9ad] + strb r1, [sp, #0x9ae] + strb r1, [sp, #0x9cb] + bl DungeonRandInt + mov r4, r0 + mov r0, #4 + bl DungeonRandInt + mov r3, r4 + str r0, [sp] + ldr r4, [sp, #8] + add r0, sp, #0x94 + mov r1, #6 + mov r2, #4 + str r4, [sp, #4] + bl AssignGridCellConnections + add r1, sp, #0x1c + str r1, [sp] + mov r0, #0 + str r0, [sp, #4] + add r0, sp, #0x94 + mov r1, #6 + mov r2, #4 + add r3, sp, #0x58 + bl CreateGridCellConnections + add r1, sp, #0x1c + str r1, [sp] + add r0, sp, #0x94 + mov r1, #6 + mov r2, #4 + add r3, sp, #0x58 + bl EnsureConnectedGrid + ldr r1, _0233B618 ; =0x0237CFBC + add r0, sp, #0x94 + ldrsh r3, [r1, #0xc] + mov r1, #6 + mov r2, #4 + bl GenerateKecleonShop + ldr r1, _0233B618 ; =0x0237CFBC + add r0, sp, #0x94 + ldrsh r3, [r1, #0x10] + mov r1, #6 + mov r2, #4 + bl GenerateMonsterHouse + ldr r0, [sp, #8] + mov r1, #6 + ldrb r3, [r0, #0x13] + add r0, sp, #0x94 + mov r2, #4 + bl GenerateExtraHallways + add r0, sp, #0x94 + mov r1, #6 + mov r2, #4 + bl GenerateRoomImperfections + add sp, sp, #0x2f4 + add sp, sp, #0x1800 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233B614: .word 0x000001C2 +_0233B618: .word 0x0237CFBC + arm_func_end GenerateOuterRingFloor + + arm_func_start GenerateCrossroadsFloor +GenerateCrossroadsFloor: ; 0x0233B61C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2f8 + sub sp, sp, #0x1800 + mov r1, #0 + mov r2, #0xb + str r0, [sp, #8] + mov fp, #0x16 + mov sl, #0x21 + mov sb, #0x2c + mov r8, #0x38 + mov r7, #1 + mov r6, #9 + mov r5, #0x10 + mov r4, #0x17 + mov r3, #0x1f + str r1, [sp, #0x5c] + str r2, [sp, #0x60] + add r0, sp, #0x98 + mov r1, #5 + mov r2, #4 + str fp, [sp, #0x64] + str sl, [sp, #0x68] + str sb, [sp, #0x6c] + str r8, [sp, #0x70] + str r7, [sp, #0x20] + str r6, [sp, #0x24] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + str r3, [sp, #0x30] + bl InitDungeonGrid + ldr r0, _0233BA74 ; =0x000001C2 + mov r4, #0 + add r2, sp, #0x98 + mov r1, r7 +_0233B6A4: + mla r3, r4, r0, r2 + strb r1, [r3, #0xa] + add r4, r4, #1 + strb r1, [r3, #0x64] + cmp r4, #5 + blt _0233B6A4 + mov r3, #0 + add r1, sp, #0x98 + mov r7, #1 + mov r0, #0x1e +_0233B6CC: + mla r2, r3, r0, r1 + strb r7, [r2, #0xa] + add r3, r3, #1 + strb r7, [r2, #0x712] + cmp r3, #4 + blt _0233B6CC + ldr r1, _0233BA74 ; =0x000001C2 + mov r4, #0 + mov r5, #1 + add r3, sp, #0x98 + mov r0, #0x1e +_0233B6F8: + mla r6, r7, r1, r3 + mov r8, r5 +_0233B700: + mla r2, r8, r0, r6 + add r8, r8, #1 + strb r4, [r2, #0xa] + cmp r8, #3 + blt _0233B700 + add r7, r7, #1 + cmp r7, #4 + blt _0233B6F8 + mov r0, #1 + mov sl, r4 + strb r0, [sp, #0xa0] + strb r0, [sp, #0x7a8] + strb r0, [sp, #0xfa] + strb r0, [sp, #0x802] +_0233B738: + add r1, sp, #0x98 + mov r0, #0x1e + mla r7, sl, r0, r1 + add r0, sp, #0x20 + add r0, r0, sl, lsl #2 + mov sb, #0 + str r0, [sp, #0x10] +_0233B754: + ldr r0, _0233BA74 ; =0x000001C2 + mla r1, sb, r0, r7 + ldrb r0, [r1, #8] + cmp r0, #0 + bne _0233B938 + ldrb r0, [r1, #0xa] + cmp r0, #0 + add r0, sp, #0x5c + add r1, r0, sb, lsl #2 + beq _0233B890 + ldr r8, [r0, sb, lsl #2] + add r0, sp, #0x20 + ldr r1, [r1, #4] + ldr r5, [r0, sl, lsl #2] + sub r0, r1, r8 + sub r6, r0, #3 + ldr r0, [sp, #0x10] + ldr r1, [r0, #4] + mov r0, #5 + sub r1, r1, r5 + sub fp, r1, #3 + mov r1, r6 + bl DungeonRandRange + str r0, [sp, #0x14] + mov r0, #4 + mov r1, fp + bl DungeonRandRange + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + sub r0, r6, r0 + bl DungeonRandInt + add r1, r8, #2 + add r8, r1, r0 + ldr r0, [sp, #0x18] + sub r0, fp, r0 + bl DungeonRandInt + add r1, r5, #2 + add r5, r1, r0 + ldr r0, [sp, #0x14] + add r0, r8, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + add fp, r5, r0 + ldr r0, _0233BA74 ; =0x000001C2 + mul r0, sb, r0 + strh r8, [r7, r0] + add r1, r7, r0 + ldr r0, [sp, #0xc] + strh r0, [r1, #4] + strh r5, [r1, #2] + and r0, r4, #0xff + strh fp, [r1, #6] + str r0, [sp, #0x1c] + b _0233B87C +_0233B82C: + mov r6, r5 + b _0233B870 +_0233B834: + mov r0, r8 + mov r1, r6 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r6 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r8 + bl GetTileSafe + ldr r1, [sp, #0x1c] + add r6, r6, #1 + strb r1, [r0, #7] +_0233B870: + cmp r6, fp + blt _0233B834 + add r8, r8, #1 +_0233B87C: + ldr r0, [sp, #0xc] + cmp r8, r0 + blt _0233B82C + add r4, r4, #1 + b _0233B938 +_0233B890: + ldr r2, [r0, sb, lsl #2] + ldr r1, [r1, #4] + add r0, r2, #1 + sub r1, r1, r2 + add r2, sp, #0x20 + ldr r3, [r2, sl, lsl #2] + ldr r2, [sp, #0x10] + sub r1, r1, #3 + ldr r2, [r2, #4] + add r1, r0, r1 + sub r2, r2, r3 + add r5, r3, #1 + sub r6, r2, #3 + bl DungeonRandRange + add r1, r5, r6 + mov r6, r0 + mov r0, r5 + bl DungeonRandRange + mov r5, r0 + ldr r0, _0233BA74 ; =0x000001C2 + mul r0, sb, r0 + strh r6, [r7, r0] + add r1, r7, r0 + add r0, r6, #1 + strh r0, [r1, #4] + strh r5, [r1, #2] + add r0, r5, #1 + strh r0, [r1, #6] + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r5 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r6 + bl GetTileSafe + mov r1, #0xff + strb r1, [r0, #7] +_0233B938: + add sb, sb, #1 + cmp sb, #5 + blt _0233B754 + add sl, sl, #1 + cmp sl, #4 + blt _0233B738 + mov r7, #1 + ldr r2, _0233BA74 ; =0x000001C2 + mov r0, r7 + mov r5, #0 + add r4, sp, #0x98 + mov r1, #0x1e +_0233B968: + mla r6, r7, r2, r4 + mov r8, r5 +_0233B970: + mla r3, r8, r1, r6 + strb r0, [r3, #0x14] + add r8, r8, #1 + strb r0, [r3, #0x31] + cmp r8, #3 + blt _0233B970 + add r7, r7, #1 + cmp r7, #4 + blt _0233B968 + ldr r1, _0233BA74 ; =0x000001C2 + mov r4, #1 + mov r6, #0 + add r5, sp, #0x98 + mov r2, #0x1e +_0233B9A8: + mla r7, r0, r2, r5 + mov r8, r6 +_0233B9B0: + mla r3, r8, r1, r7 + strb r4, [r3, #0x16] + add r8, r8, #1 + strb r4, [r3, #0x1d7] + cmp r8, #4 + blt _0233B9B0 + add r0, r0, #1 + cmp r0, #3 + blt _0233B9A8 + add r1, sp, #0x20 + str r1, [sp] + add r0, sp, #0x98 + add r3, sp, #0x5c + mov r1, #5 + mov r2, #4 + str r4, [sp, #4] + bl CreateGridCellConnections + add r4, sp, #0x20 + add r0, sp, #0x98 + add r3, sp, #0x5c + mov r1, #5 + mov r2, #4 + str r4, [sp] + bl EnsureConnectedGrid + ldr r1, _0233BA78 ; =0x0237CFBC + add r0, sp, #0x98 + ldrsh r3, [r1, #0xc] + mov r1, #5 + mov r2, #4 + bl GenerateKecleonShop + ldr r1, _0233BA78 ; =0x0237CFBC + add r0, sp, #0x98 + ldrsh r3, [r1, #0x10] + mov r1, #5 + mov r2, #4 + bl GenerateMonsterHouse + ldr r0, [sp, #8] + mov r1, #5 + ldrb r3, [r0, #0x13] + add r0, sp, #0x98 + mov r2, #4 + bl GenerateExtraHallways + add r0, sp, #0x98 + mov r1, #5 + mov r2, #4 + bl GenerateRoomImperfections + add sp, sp, #0x2f8 + add sp, sp, #0x1800 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233BA74: .word 0x000001C2 +_0233BA78: .word 0x0237CFBC + arm_func_end GenerateCrossroadsFloor + + arm_func_start GenerateLineFloor +GenerateLineFloor: ; 0x0233BA7C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0xae0 + sub sp, sp, #0x1000 + mov r7, #0 + mov r6, #0xb + mov lr, #0x16 + mov ip, #0x21 + mov r5, #0x2c + mov r3, #0x38 + mov r2, #4 + mov r1, #0xf + mov r4, r0 + str r2, [sp, #8] + str r1, [sp, #0xc] + add r0, sp, #0x80 + str r7, [sp, #0x44] + str r6, [sp, #0x48] + str lr, [sp, #0x4c] + str ip, [sp, #0x50] + str r5, [sp, #0x54] + str r3, [sp, #0x58] + mov r1, #5 + mov r2, #1 + bl InitDungeonGrid + ldrsb r3, [r4, #1] + add r0, sp, #0x80 + mov r1, #5 + mov r2, #1 + bl AssignRooms + add r1, sp, #8 + str r1, [sp] + ldrb r2, [r4, #0xd] + add r0, sp, #0x80 + add r3, sp, #0x44 + str r2, [sp, #4] + mov r1, #5 + mov r2, #1 + bl CreateRoomsAndAnchors + mov r0, #5 + bl DungeonRandInt + mov r5, r0 + mov r0, #1 + bl DungeonRandInt + stmia sp, {r0, r4} + mov r3, r5 + add r0, sp, #0x80 + mov r1, #5 + mov r2, #1 + bl AssignGridCellConnections + add r0, sp, #8 + mov r2, #1 + stmia sp, {r0, r2} + add r0, sp, #0x80 + mov r1, #5 + add r3, sp, #0x44 + bl CreateGridCellConnections + add r1, sp, #8 + str r1, [sp] + add r0, sp, #0x80 + mov r1, #5 + mov r2, #1 + add r3, sp, #0x44 + bl EnsureConnectedGrid + ldr r3, _0233BBD8 ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r3, #0xc] + mov r1, #5 + mov r2, #1 + bl GenerateKecleonShop + ldr r1, _0233BBD8 ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r1, #0x10] + mov r1, #5 + mov r2, #1 + bl GenerateMonsterHouse + ldrb r3, [r4, #0x13] + add r0, sp, #0x80 + mov r1, #5 + mov r2, #1 + bl GenerateExtraHallways + add r0, sp, #0x80 + mov r1, #5 + mov r2, #1 + bl GenerateRoomImperfections + add sp, sp, #0xae0 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233BBD8: .word 0x0237CFBC + arm_func_end GenerateLineFloor + + arm_func_start GenerateCrossFloor +GenerateCrossFloor: ; 0x0233BBDC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xae0 + sub sp, sp, #0x1000 + mov r1, #3 + mov r8, #0xb + mov r4, r0 + mov r7, #0x16 + mov r6, #0x21 + mov r5, #0x2c + mov lr, #2 + mov ip, #0x14 + mov r3, #0x1e + add r0, sp, #0x80 + mov r2, r1 + str r8, [sp, #0x44] + str r7, [sp, #0x48] + str r6, [sp, #0x4c] + str r5, [sp, #0x50] + str lr, [sp, #8] + str r8, [sp, #0xc] + str ip, [sp, #0x10] + str r3, [sp, #0x14] + bl InitDungeonGrid + mov r5, #0 + ldr r1, _0233BD6C ; =0x000001C2 + mov r3, #1 + mov lr, r5 + add ip, sp, #0x80 + mov r0, #0x1e +_0233BC50: + mla r7, r5, r1, ip + mov r6, lr +_0233BC58: + mla r2, r6, r0, r7 + add r6, r6, #1 + strb r3, [r2, #0xa] + cmp r6, #3 + blt _0233BC58 + add r5, r5, #1 + cmp r5, #3 + blt _0233BC50 + add r0, sp, #8 + strb r3, [sp, #0x88] + strb r3, [sp, #0x40c] + mov r1, #3 + strb r3, [sp, #0xc4] + strb r3, [sp, #0x448] + str r0, [sp] + ldrb ip, [r4, #0xd] + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r2, r1 + str ip, [sp, #4] + bl CreateRoomsAndAnchors + mov ip, #1 + mov r1, #3 + add r0, sp, #8 + strb ip, [sp, #0xb4] + strb ip, [sp, #0x275] + strb ip, [sp, #0x276] + strb ip, [sp, #0x437] + strb ip, [sp, #0x256] + strb ip, [sp, #0x273] + strb ip, [sp, #0x274] + strb ip, [sp, #0x291] + str r0, [sp] + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r2, r1 + str ip, [sp, #4] + bl CreateGridCellConnections + mov r1, #3 + add ip, sp, #8 + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r2, r1 + str ip, [sp] + bl EnsureConnectedGrid + ldr r1, _0233BD70 ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r1, #0xc] + mov r1, #3 + mov r2, r1 + bl GenerateKecleonShop + ldr r3, _0233BD70 ; =0x0237CFBC + mov r1, #3 + ldrsh r3, [r3, #0x10] + add r0, sp, #0x80 + mov r2, r1 + bl GenerateMonsterHouse + mov r1, #3 + ldrb r3, [r4, #0x13] + add r0, sp, #0x80 + mov r2, r1 + bl GenerateExtraHallways + mov r1, #3 + add r0, sp, #0x80 + mov r2, r1 + bl GenerateRoomImperfections + add sp, sp, #0xae0 + add sp, sp, #0x1000 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0233BD6C: .word 0x000001C2 +_0233BD70: .word 0x0237CFBC + arm_func_end GenerateCrossFloor + + arm_func_start GenerateBeetleFloor +GenerateBeetleFloor: ; 0x0233BD74 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xae0 + sub sp, sp, #0x1000 + mov r1, #3 + mov r4, r0 + mov sb, #5 + mov r8, #0xf + mov r7, #0x23 + mov r6, #0x32 + mov r5, #2 + mov lr, #0xb + mov ip, #0x14 + mov r3, #0x1e + add r0, sp, #0x80 + mov r2, r1 + str sb, [sp, #0x44] + str r8, [sp, #0x48] + str r7, [sp, #0x4c] + str r6, [sp, #0x50] + str r5, [sp, #8] + str lr, [sp, #0xc] + str ip, [sp, #0x10] + str r3, [sp, #0x14] + bl InitDungeonGrid + mov r5, #0 + ldr r1, _0233BF28 ; =0x000001C2 + mov r3, #1 + mov lr, r5 + add ip, sp, #0x80 + mov r0, #0x1e +_0233BDEC: + mla r7, r5, r1, ip + mov r6, lr +_0233BDF4: + mla r2, r6, r0, r7 + add r6, r6, #1 + strb r3, [r2, #0xa] + cmp r6, #3 + blt _0233BDF4 + add r5, r5, #1 + cmp r5, #3 + blt _0233BDEC + add r0, sp, #8 + str r0, [sp] + ldrb ip, [r4, #0xd] + mov r1, #3 + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r2, r1 + str ip, [sp, #4] + bl CreateRoomsAndAnchors + mov r3, #0 + add r0, sp, #0x80 + mov ip, #1 + mov r1, #0x1e +_0233BE48: + mla r2, r3, r1, r0 + strb ip, [r2, #0x16] + strb ip, [r2, #0x1d7] + strb ip, [r2, #0x1d8] + add r3, r3, #1 + strb ip, [r2, #0x399] + cmp r3, #3 + blt _0233BE48 + add r2, sp, #8 + str r2, [sp] + mov r1, #3 + add r3, sp, #0x44 + mov r2, r1 + str ip, [sp, #4] + bl CreateGridCellConnections + mov r0, #1 + add r3, sp, #0x80 + mov r2, r0 + mov r1, #0 + bl MergeRoomsVertically + add r3, sp, #0x80 + mov r0, #1 + mov r1, #0 + mov r2, #2 + bl MergeRoomsVertically + add r1, sp, #8 + str r1, [sp] + mov r1, #3 + add r0, sp, #0x80 + mov r2, r1 + add r3, sp, #0x44 + bl EnsureConnectedGrid + ldr r3, _0233BF2C ; =0x0237CFBC + mov r1, #3 + ldrsh r3, [r3, #0xc] + add r0, sp, #0x80 + mov r2, r1 + bl GenerateKecleonShop + ldr r3, _0233BF2C ; =0x0237CFBC + mov r1, #3 + ldrsh r3, [r3, #0x10] + add r0, sp, #0x80 + mov r2, r1 + bl GenerateMonsterHouse + mov r1, #3 + ldrb r3, [r4, #0x13] + add r0, sp, #0x80 + mov r2, r1 + bl GenerateExtraHallways + mov r1, #3 + add r0, sp, #0x80 + mov r2, r1 + bl GenerateRoomImperfections + add sp, sp, #0xae0 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0233BF28: .word 0x000001C2 +_0233BF2C: .word 0x0237CFBC + arm_func_end GenerateBeetleFloor + + arm_func_start MergeRoomsVertically +MergeRoomsVertically: ; 0x0233BF30 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1c + mov r5, #0x1e + add r4, r5, #0x1a4 + add r2, r1, r2 + mul r7, r0, r4 + mov sl, r3 + mul r8, r2, r5 + add fp, sl, r7 + ldrsh r0, [fp, r8] + mul r6, r1, r5 + str r0, [sp] + ldrsh r0, [fp, r6] + ldr r1, [sp] + cmp r0, r1 + add r1, sl, #4 + add r1, r1, r7 + strlt r0, [sp] + str r1, [sp, #0x14] + ldrsh r2, [r1, r8] + ldrsh sb, [r1, r6] + add r1, sl, #2 + add r1, r1, r7 + str r1, [sp, #0x10] + ldrsh r1, [r1, r6] + cmp sb, r2 + movle sb, r2 + str r1, [sp, #8] + add r1, sl, #6 + add r1, r1, r7 + str r1, [sp, #4] + ldr r2, [sp, #4] + ldr r1, [sp, #8] + ldrsh r2, [r2, r8] + str r2, [sp, #0xc] + bl GetTile + ldrb r0, [r0, #7] + ldr r5, [sp] + and r0, r0, #0xff + str r0, [sp, #0x18] + b _0233C01C +_0233BFD4: + ldr r4, [sp, #8] + b _0233C00C +_0233BFDC: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + ldr r1, [sp, #0x18] + strb r1, [r0, #7] +_0233C00C: + ldr r0, [sp, #0xc] + cmp r4, r0 + blt _0233BFDC + add r5, r5, #1 +_0233C01C: + cmp r5, sb + blt _0233BFD4 + ldr r0, [sp] + add r3, sl, #0x12 + strh r0, [fp, r6] + ldr r0, [sp, #0x14] + add r2, sl, r7 + strh sb, [r0, r6] + ldr r1, [sp, #8] + ldr r0, [sp, #0x10] + strh r1, [r0, r6] + ldr r1, [sp, #0xc] + ldr r0, [sp, #4] + strh r1, [r0, r6] + add r0, r3, r7 + mov r3, #1 + strb r3, [r0, r8] + strb r3, [r0, r6] + add r0, r2, r8 + mov r1, #0 + strb r1, [r0, #0xb] + strb r3, [r0, #0x11] + add sp, sp, #0x1c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end MergeRoomsVertically + + arm_func_start GenerateOuterRoomsFloor +GenerateOuterRoomsFloor: ; 0x0233C07C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xae0 + sub sp, sp, #0x1000 + mov r5, r1 + mov r6, r0 + mov r4, r2 + add r0, sp, #0x44 + add r1, sp, #8 + mov r2, r6 + mov r3, r5 + bl GetGridPositions + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl InitDungeonGrid + mov sb, #0 + mov r3, #1 + mov r8, sb + add r7, sp, #0x80 + mov r0, #0x1e + ldr r1, _0233C308 ; =0x000001C2 + b _0233C0F8 +_0233C0D4: + mla fp, sb, r1, r7 + mov sl, r8 + b _0233C0EC +_0233C0E0: + mla r2, sl, r0, fp + strb r3, [r2, #0xa] + add sl, sl, #1 +_0233C0EC: + cmp sl, r5 + blt _0233C0E0 + add sb, sb, #1 +_0233C0F8: + cmp sb, r6 + blt _0233C0D4 + mov fp, #1 + sub r3, r5, #1 + sub r2, r6, #1 + mov r8, fp + mov lr, fp + add sb, sp, #0x80 + mov r0, #0x1e + ldr r1, _0233C308 ; =0x000001C2 + b _0233C148 +_0233C124: + mla sl, fp, r1, sb + mov ip, lr + b _0233C13C +_0233C130: + mla r7, ip, r0, sl + strb r8, [r7, #8] + add ip, ip, #1 +_0233C13C: + cmp ip, r3 + blt _0233C130 + add fp, fp, #1 +_0233C148: + cmp fp, r2 + blt _0233C124 + add r1, sp, #8 + str r1, [sp] + ldrb r7, [r4, #0xd] + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r1, r6 + mov r2, r5 + str r7, [sp, #4] + bl CreateRoomsAndAnchors + mov r2, #1 + add r3, sp, #0x80 + sub r1, r5, #1 + mov r0, #0x1e + mla r7, r1, r0, r3 + mov r8, #0 + sub r1, r6, #2 + sub r0, r6, #1 + mov fp, r2 + ldr sb, _0233C308 ; =0x000001C2 + b _0233C1D4 +_0233C1A0: + cmp r8, #0 + mulne ip, r8, sb + addne sl, r3, ip + strneb r2, [sl, #0x16] + addne sl, r7, ip + strneb r2, [sl, #0x16] + cmp r8, r1 + mullt ip, r8, sb + addlt sl, r3, ip + strltb fp, [sl, #0x1d7] + addlt sl, r7, ip + strltb fp, [sl, #0x1d7] + add r8, r8, #1 +_0233C1D4: + cmp r8, r0 + blt _0233C1A0 + ldr r2, _0233C308 ; =0x000001C2 + add r1, sp, #0x80 + mla r2, r0, r2, r1 + mov r0, #1 + mov ip, #0x1e + mov r3, #0 + sub sl, r5, #2 + sub lr, r5, #1 + mov r8, r0 + mov fp, ip + b _0233C23C +_0233C208: + cmp r3, #0 + mulne sb, r3, ip + addne r7, r1, sb + strneb r0, [r7, #0x13] + addne r7, r2, sb + strneb r0, [r7, #0x13] + cmp r3, sl + mullt sb, r3, fp + addlt r7, r1, sb + strltb r8, [r7, #0x14] + addlt r7, r2, sb + strltb r8, [r7, #0x14] + add r3, r3, #1 +_0233C23C: + cmp r3, lr + blt _0233C208 + add r7, sp, #8 + str r7, [sp] + mov r7, #0 + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r1, r6 + mov r2, r5 + str r7, [sp, #4] + bl CreateGridCellConnections + add r7, sp, #8 + add r0, sp, #0x80 + add r3, sp, #0x44 + mov r1, r6 + mov r2, r5 + str r7, [sp] + bl EnsureConnectedGrid + ldrb r3, [r4, #9] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateMazeRoom + ldr r3, _0233C30C ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r3, #0xc] + mov r1, r6 + mov r2, r5 + bl GenerateKecleonShop + ldr r3, _0233C30C ; =0x0237CFBC + add r0, sp, #0x80 + ldrsh r3, [r3, #0x10] + mov r1, r6 + mov r2, r5 + bl GenerateMonsterHouse + ldrb r3, [r4, #0x13] + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateExtraHallways + add r0, sp, #0x80 + mov r1, r6 + mov r2, r5 + bl GenerateRoomImperfections + mov r1, r6 + mov r2, r5 + add r0, sp, #0x80 + bl GenerateSecondaryStructures + add sp, sp, #0xae0 + add sp, sp, #0x1000 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233C308: .word 0x000001C2 +_0233C30C: .word 0x0237CFBC + arm_func_end GenerateOuterRoomsFloor + + arm_func_start IsNotFullFloorFixedRoom +IsNotFullFloorFixedRoom: ; 0x0233C310 + cmp r0, #0 + ble _0233C324 + cmp r0, #0xa5 + movlt r0, #0 + bxlt lr +_0233C324: + mov r0, #1 + bx lr + arm_func_end IsNotFullFloorFixedRoom + + arm_func_start GenerateFixedRoom +GenerateFixedRoom: ; 0x0233C32C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2f8 + sub sp, sp, #0x1800 + ldr r2, _0233C764 ; =0x02353538 + str r1, [sp, #0x10] + ldr r2, [r2] + mov sl, r0 + add r1, r2, #0x12000 + ldr r1, [r1, #0xaa4] + ldr r1, [r1, sl, lsl #2] + ldrh r4, [r1] + ldrh r5, [r1, #2] + cmp r4, #0 + cmpne r5, #0 + bne _0233C374 + bl GenerateOneRoomMonsterHouseFloor + mov r0, #0 + b _0233C758 +_0233C374: + bl IsNotFullFloorFixedRoom + cmp r0, #0 + bne _0233C590 + ldr r0, _0233C764 ; =0x02353538 + ldr r4, _0233C768 ; =0x0235378C + ldr r0, [r0] + ldr r3, _0233C76C ; =0x0237CFBC + add r2, r0, #0x12000 + ldr r5, [r2, #0xaa4] + add r1, r0, #0xcd00 + ldr r6, [r5, sl, lsl #2] + add r0, r0, #0xcc00 + ldrh r7, [r6] + ldrh r6, [r6, #2] + mov r5, #0 + mov sb, #5 + strh r7, [r1, #0x34] + strh r6, [r1, #0x36] + ldr r1, [r2, #0xaa4] + add fp, r6, #5 + ldr r1, [r1, sl, lsl #2] + str r0, [sp, #0x1c] + add r1, r1, #6 + str r1, [r4, #4] + strh r5, [r3, #0xa] + add r4, r7, #5 + b _0233C450 +_0233C3E0: + mov r0, sb, lsl #0x10 + mov r8, #5 + mov r5, r0, asr #0x10 + b _0233C444 +_0233C3F0: + bl ov29_023424D0 + str r0, [sp, #0x18] + mov r0, r8 + mov r1, sb + bl GetTileSafe + ldrh ip, [r0] + ldr r1, [sp, #0x18] + mov r2, r8 + orr ip, ip, #0x100 + strh ip, [r0] + mov ip, #0 + strb ip, [r0, #6] + mov ip, #1 + mov r3, sb + str ip, [sp] + bl ov29_02342F30 + cmp r0, #0 + ldrne r0, [sp, #0x1c] + strneh r8, [r0, #0xe4] + strneh r5, [r0, #0xe6] + add r8, r8, #1 +_0233C444: + cmp r8, r4 + blt _0233C3F0 + add sb, sb, #1 +_0233C450: + cmp sb, fp + blt _0233C3E0 + mov r8, #0 + add r4, r6, #5 + ldr sb, _0233C76C ; =0x0237CFBC + add r5, r7, #5 + mov r6, r8 +_0233C46C: + mov r7, r6 +_0233C470: + cmp r7, #5 + blt _0233C490 + cmp r7, r5 + bge _0233C490 + cmp r8, #5 + blt _0233C490 + cmp r8, r4 + blt _0233C4D4 +_0233C490: + mov r0, r7 + mov r1, r8 + bl GetTileSafe + ldrh r1, [r0] + orr r1, r1, #0x10 + strh r1, [r0] + ldrb r1, [sb, #4] + cmp r1, #0 + ldrh r1, [r0] + biceq r1, r1, #3 + streqh r1, [r0] + beq _0233C4D4 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #3 + strh r1, [r0] +_0233C4D4: + add r7, r7, #1 + cmp r7, #0x38 + blt _0233C470 + add r8, r8, #1 + cmp r8, #0x20 + blt _0233C46C + cmp sl, #4 + bne _0233C534 + mov r5, #5 + mov r4, #2 +_0233C4FC: + mov r6, r4 +_0233C500: + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + add r6, r6, #1 + cmp r6, #5 + orr r1, r1, #0x10 + bic r1, r1, #3 + strh r1, [r0] + blt _0233C500 + add r5, r5, #1 + cmp r5, #0x10 + ble _0233C4FC +_0233C534: + bl ov29_02336204 + cmp r0, #0 + beq _0233C584 + mov r6, #0 + mov r4, r6 +_0233C548: + mov r5, r4 +_0233C54C: + mov r0, r5 + mov r1, r6 + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + tst r1, #3 + ldreqh r1, [r0] + orreq r1, r1, #0x10 + streqh r1, [r0] + cmp r5, #0x38 + blt _0233C54C + add r6, r6, #1 + cmp r6, #0x20 + blt _0233C548 +_0233C584: + bl FinalizeJunctions + mov r0, #1 + b _0233C758 +_0233C590: + add r1, r4, #4 + mov r0, #0x38 + bl DivideInt + mov r6, r0 + cmp r6, #2 + add r1, r5, #4 + mov r0, #0x20 + movlt r6, #1 + bl DivideInt + mov r7, r0 + cmp r7, #2 + movlt r7, #1 + mov r1, #0 + str r1, [sp, #0x14] + add r0, sp, #0x20 + add r1, sp, #0x5c + mov r2, r6 + mov r3, r7 + ldr r8, [sp, #0x14] + bl GetGridPositions + add r0, sp, #0x98 + mov r1, r6 + mov r2, r7 + bl InitDungeonGrid + ldr r3, [sp, #0x10] + add r0, sp, #0x98 + ldrsb r3, [r3, #1] + mov r1, r6 + mov r2, r7 + bl AssignRooms + mov sb, #0 + mov r3, #1 + mov lr, sb + add fp, sp, #0x98 + mov r0, #0x1e + ldr r1, _0233C770 ; =0x000001C2 + b _0233C648 +_0233C624: + mla ip, sb, r1, fp + mov r8, lr + b _0233C63C +_0233C630: + mla r2, r8, r0, ip + strb r3, [r2, #0x1b] + add r8, r8, #1 +_0233C63C: + cmp r8, r7 + blt _0233C630 + add sb, sb, #1 +_0233C648: + cmp sb, r6 + blt _0233C624 + mov fp, #0 + b _0233C69C +_0233C658: + mov r0, r6 + bl DungeonRandInt + mov sb, r0 + mov r0, r7 + bl DungeonRandInt + mov r8, r0 + ldr r1, _0233C770 ; =0x000001C2 + add r0, sp, #0x98 + mla r1, sb, r1, r0 + mov r0, #0x1e + mla r0, r8, r0, r1 + ldrb r1, [r0, #0xa] + mla r0, r6, r8, sb + str r0, [sp, #0x14] + cmp r1, #0 + bne _0233C6A4 + add fp, fp, #1 +_0233C69C: + cmp fp, #0x40 + blt _0233C658 +_0233C6A4: + add r1, sp, #0x5c + str r1, [sp] + ldr r1, [sp, #0x14] + add r0, sp, #0x98 + stmib sp, {r1, r4} + add r3, sp, #0x20 + mov r1, r6 + mov r2, r7 + str r5, [sp, #0xc] + bl ov29_0234217C + cmp r6, #1 + cmpeq r7, #1 + beq _0233C738 + ldr r4, [sp, #0x10] + str r8, [sp] + add r0, sp, #0x98 + mov r1, r6 + mov r2, r7 + mov r3, sb + str r4, [sp, #4] + bl AssignGridCellConnections + add r4, sp, #0x5c + str r4, [sp] + mov r4, #1 + add r0, sp, #0x98 + add r3, sp, #0x20 + mov r1, r6 + mov r2, r7 + str r4, [sp, #4] + bl CreateGridCellConnections + add r0, sp, #0x5c + str r0, [sp] + mov r1, r6 + add r0, sp, #0x98 + mov r2, r7 + add r3, sp, #0x20 + bl EnsureConnectedGrid +_0233C738: + ldr r0, _0233C770 ; =0x000001C2 + add r2, sp, #0x98 + mla r0, sb, r0, r2 + mov r1, #0x1e + mla r0, r8, r1, r0 + mov r1, sl + bl ov29_02342594 + mov r0, #0 +_0233C758: + add sp, sp, #0x2f8 + add sp, sp, #0x1800 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233C764: .word 0x02353538 +_0233C768: .word 0x0235378C +_0233C76C: .word 0x0237CFBC +_0233C770: .word 0x000001C2 + arm_func_end GenerateFixedRoom + + arm_func_start GenerateOneRoomMonsterHouseFloor +GenerateOneRoomMonsterHouseFloor: ; 0x0233C774 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0xa60 + sub sp, sp, #0x1000 + mov r1, #1 + add r0, sp, #0 + mov r2, r1 + bl InitDungeonGrid + mov r5, #2 + mov r1, #1 + mov r0, #0 + mov r3, #0x36 + mov r2, #0x1e + strh r5, [sp] + strh r3, [sp, #4] + strh r5, [sp, #2] + strh r2, [sp, #6] + strb r1, [sp, #0xa] + strb r1, [sp, #0xb] + strb r0, [sp, #8] + mov r6, r0 + b _0233C818 +_0233C7C8: + ldrsh r4, [sp, #2] + b _0233C808 +_0233C7D0: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r4 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r5 + bl GetTileSafe + strb r6, [r0, #7] + add r4, r4, #1 +_0233C808: + ldrsh r0, [sp, #6] + cmp r4, r0 + blt _0233C7D0 + add r5, r5, #1 +_0233C818: + ldrsh r0, [sp, #4] + cmp r5, r0 + blt _0233C7C8 + mov r1, #1 + add r0, sp, #0 + mov r2, r1 + rsb r3, r1, #0x3e8 + bl GenerateMonsterHouse + add sp, sp, #0xa60 + add sp, sp, #0x1000 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end GenerateOneRoomMonsterHouseFloor + + arm_func_start GenerateTwoRoomsWithMonsterHouseFloor +GenerateTwoRoomsWithMonsterHouseFloor: ; 0x0233C844 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2e4 + sub sp, sp, #0x1800 + mov r1, #2 + mov r5, #0x1c + mov r4, #0x36 + mov r3, #0x1e + str r5, [sp, #0x4c] + add r0, sp, #0x84 + mov r2, #1 + str r1, [sp, #0x48] + str r4, [sp, #0x50] + str r1, [sp, #0xc] + str r3, [sp, #0x10] + mov r5, #0 + bl InitDungeonGrid + mov r6, r5 +_0233C888: + add r1, sp, #0x48 + add r0, r1, r6, lsl #2 + ldr sb, [r1, r6, lsl #2] + ldr r1, [r0, #4] + ldr sl, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r1, r1, sb + sub r7, r1, #3 + sub r0, r0, sl + sub r8, r0, #3 + mov r1, r7 + mov r0, #0xa + bl DungeonRandRange + mov r4, r0 + mov r1, r8 + mov r0, #0x10 + bl DungeonRandRange + mov fp, r0 + sub r0, r7, r4 + bl DungeonRandInt + add r1, sb, #1 + add r7, r1, r0 + sub r0, r8, fp + bl DungeonRandInt + ldr r1, _0233C9E4 ; =0x000001C2 + add r2, sl, #1 + add r8, r2, r0 + mul r1, r6, r1 + add r0, sp, #0x84 + add r2, r0, r1 + mov r0, #1 + strb r0, [r2, #0xa] + add r0, sp, #0x84 + strh r7, [r0, r1] + add r0, r7, r4 + strh r0, [r2, #4] + strh r8, [r2, #2] + add sb, r8, fp + str r0, [sp, #8] + strh sb, [r2, #6] + and r4, r5, #0xff + b _0233C97C +_0233C930: + mov sl, r8 + b _0233C970 +_0233C938: + mov r0, r7 + mov r1, sl + bl GetTileSafe + ldrh r2, [r0] + mov r1, sl + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r7 + bl GetTileSafe + strb r4, [r0, #7] + add sl, sl, #1 +_0233C970: + cmp sl, sb + blt _0233C938 + add r7, r7, #1 +_0233C97C: + ldr r0, [sp, #8] + cmp r7, r0 + blt _0233C930 + add r6, r6, #1 + cmp r6, #2 + add r5, r5, #1 + blt _0233C888 + mov r2, #1 + add r1, sp, #0xc + strb r2, [sp, #0x9a] + strb r2, [sp, #0x25b] + str r1, [sp] + mov r4, #0 + add r0, sp, #0x84 + add r3, sp, #0x48 + mov r1, #2 + str r4, [sp, #4] + bl CreateGridCellConnections + mov r2, #1 + add r0, sp, #0x84 + rsb r3, r2, #0x3e8 + mov r1, #2 + bl GenerateMonsterHouse + add sp, sp, #0x2e4 + add sp, sp, #0x1800 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233C9E4: .word 0x000001C2 + arm_func_end GenerateTwoRoomsWithMonsterHouseFloor + + arm_func_start GenerateExtraHallways +GenerateExtraHallways: ; 0x0233C9E8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + movs sl, r3 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + beq _0233CF70 + mov r5, #0 + b _0233CF68 +_0233CA0C: + ldr r0, [sp, #4] + bl DungeonRandInt + mov r4, r0 + ldr r0, [sp, #8] + bl DungeonRandInt + mov sb, r0 + ldr r1, _0233CF78 ; =0x000001C2 + ldr r0, [sp] + mla r1, r4, r1, r0 + mov r0, #0x1e + mla r6, sb, r0, r1 + ldrb r0, [r6, #0xa] + cmp r0, #0 + ldrneb r0, [r6, #0xb] + cmpne r0, #0 + beq _0233CF64 + ldrb r0, [r6, #8] + cmp r0, #0 + ldreqb r0, [r6, #0x10] + cmpeq r0, #0 + bne _0233CF64 + ldrsh r0, [r6] + ldrsh r1, [r6, #4] + bl DungeonRandRange + mov r8, r0 + ldrsh r0, [r6, #2] + ldrsh r1, [r6, #6] + bl DungeonRandRange + mov r7, r0 + mov r0, #4 + bl DungeonRandInt + mov r6, r0, lsl #1 + ldr r0, [sp, #8] + mov ip, #0 + sub fp, r0, #1 + ldr r0, [sp, #4] + mov r3, #2 + sub r2, r0, #1 + mov r1, #4 + arm_func_end GenerateExtraHallways + + arm_func_start ov29_0233CAA8 +ov29_0233CAA8: ; 0x0233CAA8 + mov r0, #6 + mov lr, ip +_0233CAB0: + cmp r6, #0 + bne _0233CAC0 + cmp sb, fp + movge r6, r3 +_0233CAC0: + cmp r6, #2 + bne _0233CAD0 + cmp r4, r2 + movge r6, r1 +_0233CAD0: + cmp r6, #4 + bne _0233CAE0 + arm_func_end ov29_0233CAA8 + + arm_func_start ov29_0233CAD8 +ov29_0233CAD8: ; 0x0233CAD8 + cmp sb, #0 + movle r6, r0 +_0233CAE0: + cmp r6, #6 + bne _0233CAF0 + cmp r4, #0 + movle r6, lr +_0233CAF0: + add ip, ip, #1 + cmp ip, #3 + blt _0233CAB0 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrb sb, [r0, #7] + ldr r0, _0233CF7C ; =0x0235171C + arm_func_end ov29_0233CAD8 + + arm_func_start ov29_0233CB10 +ov29_0233CB10: ; 0x0233CB10 + mov r4, r6, lsl #2 + add fp, r0, r6, lsl #2 +_0233CB18: + mov r0, r8 + mov r1, r7 + bl GetTile + ldrb r0, [r0, #7] + cmp sb, r0 + ldreq r0, _0233CF7C ; =0x0235171C + ldreqsh r1, [r0, r4] + ldreqsh r0, [fp, #2] + addeq r8, r8, r1 + arm_func_end ov29_0233CB10 + + arm_func_start ov29_0233CB3C +ov29_0233CB3C: ; 0x0233CB3C + addeq r7, r7, r0 + beq _0233CB18 + ldr fp, _0233CF7C ; =0x0235171C + mov sb, r6, lsl #2 + add r4, fp, r6, lsl #2 +_0233CB50: + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + ldreqsh r1, [fp, sb] + ldreqsh r0, [r4, #2] + addeq r8, r8, r1 + addeq r7, r7, r0 + beq _0233CB50 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _0233CF64 + sub sb, r8, #2 + mov r4, #0 + add r1, r7, #2 + sub r3, r7, #2 + add r0, r8, #2 + mov r2, #1 + b _0233CBFC +_0233CBB4: + mov fp, r3 + b _0233CBE8 +_0233CBBC: + cmp sb, #0 + blt _0233CBDC + cmp sb, #0x38 + bge _0233CBDC + cmp fp, #0 + blt _0233CBDC + cmp fp, #0x20 + blt _0233CBE4 +_0233CBDC: + mov r4, r2 + b _0233CBF0 +_0233CBE4: + add fp, fp, #1 +_0233CBE8: + cmp fp, r1 + ble _0233CBBC +_0233CBF0: + cmp r4, #0 + bne _0233CC04 + add sb, sb, #1 +_0233CBFC: + cmp sb, r0 + ble _0233CBB4 +_0233CC04: + cmp r4, #0 + bne _0233CF64 + add r0, r6, #2 + and r0, r0, #6 + ldr r1, _0233CF7C ; =0x0235171C + mov r2, r0, lsl #2 + add r0, r1, r0, lsl #2 + ldrsh r2, [r1, r2] + ldrsh r1, [r0, #2] + add r0, r8, r2 + add r1, r7, r1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233CF64 + sub r0, r6, #2 + and r0, r0, #6 + ldr r1, _0233CF7C ; =0x0235171C + mov r2, r0, lsl #2 + add r0, r1, r0, lsl #2 + ldrsh r2, [r1, r2] + ldrsh r1, [r0, #2] + add r0, r8, r2 + add r1, r7, r1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233CF64 + mov r0, #3 + bl DungeonRandInt + ldr r4, _0233CF7C ; =0x0235171C + add sb, r0, #3 +_0233CC8C: + cmp r8, #1 + cmpgt r7, #1 + ble _0233CF64 + cmp r8, #0x37 + cmplt r7, #0x1f + bge _0233CF64 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233CF64 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + tst r0, #0x10 + bne _0233CF64 + mov r0, #1 + str r0, [sp, #0xc] + add r0, r8, #1 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CD38 + add r0, r8, #1 + add r1, r7, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CD38 + mov r0, r8 + add r1, r7, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + moveq r0, #0 + streq r0, [sp, #0xc] +_0233CD38: + add r0, r8, #1 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CD94 + sub fp, r7, #1 + add r0, r8, #1 + mov r1, fp + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CD94 + mov r1, fp + mov r0, r8 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + moveq r0, #0 + streq r0, [sp, #0xc] +_0233CD94: + sub fp, r8, #1 + mov r0, fp + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CDF0 + mov r0, fp + add r1, r7, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + arm_func_end ov29_0233CB3C + + arm_func_start ov29_0233CDC8 +ov29_0233CDC8: ; 0x0233CDC8 + cmp r0, #1 + bne _0233CDF0 + mov r0, r8 + add r1, r7, #1 + arm_func_end ov29_0233CDC8 + + arm_func_start ov29_0233CDD8 +ov29_0233CDD8: ; 0x0233CDD8 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + arm_func_end ov29_0233CDD8 + + arm_func_start ov29_0233CDE4 +ov29_0233CDE4: ; 0x0233CDE4 + cmp r0, #1 + moveq r0, #0 + streq r0, [sp, #0xc] +_0233CDF0: + mov r0, fp + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CE4C + mov r0, fp + sub fp, r7, #1 + mov r1, fp + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233CE4C + mov r1, fp + mov r0, r8 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + moveq r0, #0 + streq r0, [sp, #0xc] +_0233CE4C: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0233CE7C + mov r0, r8 + mov r1, r7 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0233CE7C: + add r0, r6, #2 + and r1, r0, #6 + mov r0, r1, lsl #2 + ldrsh r2, [r4, r0] + add r0, r4, r1, lsl #2 + ldrsh r1, [r0, #2] + add r0, r8, r2 + add r1, r7, r1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233CF64 + sub r0, r6, #2 + and r1, r0, #6 + mov r0, r1, lsl #2 + ldrsh r2, [r4, r0] + add r0, r4, r1, lsl #2 + ldrsh r1, [r0, #2] + add r0, r8, r2 + add r1, r7, r1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233CF64 + subs sb, sb, #1 + bne _0233CF48 + mov r0, #3 + bl DungeonRandInt + add sb, r0, #3 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + addlt r6, r6, #2 + subge r6, r6, #2 + cmp r8, #0x20 + and r6, r6, #6 + blt _0233CF2C + ldr r0, _0233CF80 ; =0x0237CFBC + ldrb r0, [r0, #6] + cmp r0, #1 + cmpeq r6, #2 + beq _0233CF64 +_0233CF2C: + cmp r8, #0x30 + blt _0233CF48 + ldr r0, _0233CF80 ; =0x0237CFBC + ldrb r0, [r0, #6] + cmp r0, #2 + cmpeq r6, #2 + beq _0233CF64 +_0233CF48: + mov r0, r6, lsl #2 + ldrsh r1, [r4, r0] + add r0, r4, r6, lsl #2 + ldrsh r0, [r0, #2] + add r8, r8, r1 + add r7, r7, r0 + b _0233CC8C +_0233CF64: + add r5, r5, #1 +_0233CF68: + cmp r5, sl + blt _0233CA0C +_0233CF70: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233CF78: .word 0x000001C2 +_0233CF7C: .word 0x0235171C +_0233CF80: .word 0x0237CFBC + arm_func_end ov29_0233CDE4 + + arm_func_start GetGridPositions +GetGridPositions: ; 0x0233CF84 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r4, #0 + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + mov r6, r4 + mov r5, #0x38 + b _0233CFC0 +_0233CFA8: + mov r0, r5 + mov r1, r8 + str r4, [sl, r6, lsl #2] + bl DivideInt + add r4, r4, r0 + add r6, r6, #1 +_0233CFC0: + cmp r6, r8 + blt _0233CFA8 + mov r6, #0 + str r4, [sl, r8, lsl #2] + mov r5, r6 + mov r4, #0x20 + b _0233CFF4 +_0233CFDC: + mov r0, r4 + mov r1, r7 + str r6, [sb, r5, lsl #2] + bl DivideInt + add r6, r6, r0 + add r5, r5, #1 +_0233CFF4: + cmp r5, r7 + blt _0233CFDC + str r6, [sb, r7, lsl #2] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end GetGridPositions + + arm_func_start InitDungeonGrid +InitDungeonGrid: ; 0x0233D004 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + add r5, r1, r1, lsl #1 + mov r4, r5, asr #1 + add r3, r1, r1, lsr #31 + add ip, r5, r4, lsr #30 + mov r7, #0 + b _0233D0F0 +_0233D020: + ldr r4, _0233D0FC ; =0x000001C2 + mov r8, #0 + mla sb, r7, r4, r0 + mov r5, #1 + mov r4, r8 + mov r6, r5 + mov lr, r8 + b _0233D0E4 +_0233D040: + ldr sl, _0233D100 ; =0x0237CFBC + ldrb sl, [sl, #6] + cmp sl, #1 + bne _0233D064 + cmp r7, r3, asr #1 + movge sl, #0x1e + mlage sl, r8, sl, sb + strgeb r6, [sl, #8] + bge _0233D08C +_0233D064: + cmp sl, #2 + bne _0233D080 + cmp r7, ip, asr #2 + movge sl, #0x1e + mlage sl, r8, sl, sb + strgeb r5, [sl, #8] + bge _0233D08C +_0233D080: + mov sl, #0x1e + mla sl, r8, sl, sb + strb r4, [sl, #8] +_0233D08C: + mov fp, #1 + strb fp, [sl, #0xa] + strb lr, [sl, #0xb] + strb lr, [sl, #0xf] + and fp, lr, #0xff + strb fp, [sl, #0xe] + strb fp, [sl, #0xc] + strb lr, [sl, #0x16] + strb fp, [sl, #0x15] + strb fp, [sl, #0x14] + strb fp, [sl, #0x13] + strb lr, [sl, #0x1a] + strb fp, [sl, #0x19] + strb fp, [sl, #0x18] + strb fp, [sl, #0x17] + strb lr, [sl, #9] + strb lr, [sl, #0x11] + strb lr, [sl, #0x10] + strb lr, [sl, #0x12] + strb lr, [sl, #0x1c] + strb lr, [sl, #0x1d] + add r8, r8, #1 +_0233D0E4: + cmp r8, r2 + blt _0233D040 + add r7, r7, #1 +_0233D0F0: + cmp r7, r1 + blt _0233D020 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233D0FC: .word 0x000001C2 +_0233D100: .word 0x0237CFBC + arm_func_end InitDungeonGrid + + arm_func_start AssignRooms +AssignRooms: ; 0x0233D104 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x104 + mov sl, r0 + mov r4, r3 + mov r0, #3 + mov sb, r1 + mov r8, r2 + bl DungeonRandInt + cmp r4, #0 + rsblt r4, r4, #0 + addge r4, r4, r0 + mov r2, #0 + mov r1, #1 + add r0, sp, #4 + b _0233D148 +_0233D140: + strb r1, [r0, r2] + add r2, r2, #1 +_0233D148: + cmp r2, r4 + blt _0233D140 + mov r1, #0 + add r0, sp, #4 + b _0233D164 +_0233D15C: + strb r1, [r0, r2] + add r2, r2, #1 +_0233D164: + cmp r2, #0x100 + blt _0233D15C + mul r7, sb, r8 + mov r6, #0 + add r4, sp, #4 +_0233D178: + mov r0, r7 + bl DungeonRandInt + mov r5, r0 + mov r0, r7 + bl DungeonRandInt + add r6, r6, #1 + ldrb r2, [r4, r5] + ldrb r1, [r4, r0] + cmp r6, #0x40 + strb r1, [r4, r5] + strb r2, [r4, r0] + blt _0233D178 + ldr r0, _0233D310 ; =0x0237CFBC + mov fp, #0 + sub r1, sb, #1 + str fp, [r0, #0x14] + mov r3, fp + and r5, sb, #1 + add r0, r1, r1, lsr #31 + mov r2, fp + add lr, sp, #4 + b _0233D25C +_0233D1D0: + ldr r1, _0233D314 ; =0x000001C2 + mov r4, #0 + mla r6, r3, r1, sl + ldr r1, _0233D310 ; =0x0237CFBC + b _0233D250 +_0233D1E4: + mov r7, #0x1e + mla r7, r4, r7, r6 + ldrb ip, [r7, #8] + cmp ip, #0 + bne _0233D24C + ldr ip, [r1, #0x14] + cmp ip, #0x20 + strgeb r2, [r7, #0xa] + ldrb ip, [lr, fp] + cmp ip, #0 + beq _0233D240 + mov ip, #1 + strb ip, [r7, #0xa] + ldr ip, [r1, #0x14] + cmp r5, #0 + add ip, ip, #1 + str ip, [r1, #0x14] + beq _0233D248 + cmp r3, r0, asr #1 + cmpeq r4, #1 + moveq ip, #0 + streqb ip, [r7, #0xa] + b _0233D248 +_0233D240: + mov ip, #0 + strb ip, [r7, #0xa] +_0233D248: + add fp, fp, #1 +_0233D24C: + add r4, r4, #1 +_0233D250: + cmp r4, r8 + blt _0233D1E4 + add r3, r3, #1 +_0233D25C: + cmp r3, sb + blt _0233D1D0 + ldr r0, _0233D310 ; =0x0237CFBC + ldr r0, [r0, #0x14] + cmp r0, #2 + bge _0233D308 + mov r4, #0 + b _0233D2F4 +_0233D27C: + mov r0, #0 + str r0, [sp] + mov r6, r0 + b _0233D2DC +_0233D28C: + ldr r0, _0233D314 ; =0x000001C2 + mov r7, #0 + mla fp, r6, r0, sl + b _0233D2D0 +_0233D29C: + mov r0, #0x1e + mla r5, r7, r0, fp + ldrb r0, [r5, #8] + cmp r0, #0 + bne _0233D2CC + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x3c + movlt r0, #1 + strlt r0, [sp] + strltb r0, [r5, #0xa] + blt _0233D2E4 +_0233D2CC: + add r7, r7, #1 +_0233D2D0: + cmp r7, r8 + blt _0233D29C + add r6, r6, #1 +_0233D2DC: + cmp r6, sb + blt _0233D28C +_0233D2E4: + ldr r0, [sp] + cmp r0, #0 + bne _0233D2FC + add r4, r4, #1 +_0233D2F4: + cmp r4, #0xc8 + blt _0233D27C +_0233D2FC: + ldr r0, _0233D310 ; =0x0237CFBC + mov r1, #0 + strb r1, [r0] +_0233D308: + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233D310: .word 0x0237CFBC +_0233D314: .word 0x000001C2 + arm_func_end AssignRooms + + arm_func_start CreateRoomsAndAnchors +CreateRoomsAndAnchors: ; 0x0233D318 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x30 + ldr r5, [sp, #0x5c] + str r0, [sp] + and r0, r5, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x58] + mov r4, #0 + str r4, [sp, #0x1c] + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + str r0, [sp, #0x58] + b _0233D658 +_0233D350: + ldr r0, [sp] + mov r1, #0x1e + mla sb, r4, r1, r0 + ldr r0, [sp, #4] + mov sl, #0 + sub r0, r0, #1 + str r0, [sp, #0x28] + ldr r0, [sp, #8] + sub r0, r0, #1 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + add r0, r0, r4, lsl #2 + str r0, [sp, #0x20] + b _0233D648 +_0233D388: + ldr r0, [sp, #0xc] + ldr r3, [r0, sl, lsl #2] + ldr r0, [sp, #0x58] + add fp, r3, #2 + ldr r2, [r0, r4, lsl #2] + add r0, r2, #2 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r0, r0, sl, lsl #2 + ldr r1, [r0, #4] + ldr r0, [sp, #0x20] + sub r1, r1, r3 + ldr r0, [r0, #4] + sub r5, r1, #4 + sub r0, r0, r2 + sub r6, r0, #3 + ldr r0, _0233D66C ; =0x000001C2 + mla r0, sl, r0, sb + str r0, [sp, #0x10] + ldrb r0, [r0, #8] + cmp r0, #0 + bne _0233D644 + ldr r0, [sp, #0x10] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _0233D580 + mov r0, #5 + mov r1, r5 + bl DungeonRandRange + mov r7, r0 + mov r0, #4 + mov r1, r6 + bl DungeonRandRange + mov r8, r0 + orr r0, r7, #1 + cmp r0, r5 + movlt r7, r0 + orr r0, r8, #1 + cmp r0, r6 + movlt r8, r0 + add r0, r8, r8, lsl #1 + add r0, r0, r0, lsr #31 + cmp r7, r0, asr #1 + mov r0, r0, asr #1 + movgt r7, r0 + add r0, r7, r7, lsl #1 + add r0, r0, r0, lsr #31 + cmp r8, r0, asr #1 + mov r0, r0, asr #1 + movgt r8, r0 + sub r0, r5, r7 + bl DungeonRandInt + add r5, fp, r0 + sub r0, r6, r8 + bl DungeonRandInt + ldr r1, [sp, #0x18] + add fp, r5, r7 + add r6, r1, r0 + ldr r0, _0233D66C ; =0x000001C2 + add r7, r6, r8 + mul r0, sl, r0 + strh r5, [sb, r0] + add r0, sb, r0 + strh fp, [r0, #4] + strh r6, [r0, #2] + strh r7, [r0, #6] + ldr r0, [sp, #0x1c] + and r0, r0, #0xff + str r0, [sp, #0x24] + b _0233D4F0 +_0233D4A0: + mov r8, r6 + b _0233D4E4 +_0233D4A8: + mov r0, r5 + mov r1, r8 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r8 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r5 + bl GetTileSafe + ldr r1, [sp, #0x24] + add r8, r8, #1 + strb r1, [r0, #7] +_0233D4E4: + cmp r8, r7 + blt _0233D4A8 + add r5, r5, #1 +_0233D4F0: + cmp r5, fp + blt _0233D4A0 + mov r5, #1 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x50 + movlt r0, r5 + movge r0, #0 + and r6, r0, #0xff + ldr r0, _0233D670 ; =0x0237CFBC + ldr r0, [r0, #0x18] + cmp r0, #0 + ldr r0, [sp, #0x14] + moveq r6, #0 + cmp r0, #0 + moveq r5, #0 + cmp r5, #0 + cmpne r6, #0 + beq _0233D550 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + movlt r5, #0 + movge r6, #0 +_0233D550: + cmp r5, #0 + ldrne r0, [sp, #0x10] + movne r1, #1 + strneb r1, [r0, #0x1c] + cmp r6, #0 + ldrne r0, [sp, #0x10] + movne r1, #1 + strneb r1, [r0, #0x1d] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0233D644 +_0233D580: + mov r2, #2 + ldr r0, [sp, #0x28] + mov r8, r2 + cmp sl, #0 + moveq r2, #1 + cmp r4, #0 + moveq r8, #1 + cmp sl, r0 + mov r1, #4 + mov r7, r1 + ldr r0, [sp, #0x2c] + moveq r1, #2 + cmp r4, r0 + add r0, fp, r2 + add r2, fp, r5 + sub r1, r2, r1 + moveq r7, #2 + bl DungeonRandRange + ldr r1, [sp, #0x18] + add r1, r1, r6 + mov r6, r0 + ldr r0, [sp, #0x18] + sub r1, r1, r7 + add r0, r0, r8 + bl DungeonRandRange + mov r5, r0 + ldr r0, _0233D66C ; =0x000001C2 + mul r0, sl, r0 + strh r6, [sb, r0] + add r1, sb, r0 + add r0, r6, #1 + strh r0, [r1, #4] + strh r5, [r1, #2] + add r0, r5, #1 + strh r0, [r1, #6] + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r5 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r6 + bl GetTileSafe + mov r1, #0xfe + strb r1, [r0, #7] +_0233D644: + add sl, sl, #1 +_0233D648: + ldr r0, [sp, #4] + cmp sl, r0 + blt _0233D388 + add r4, r4, #1 +_0233D658: + ldr r0, [sp, #8] + cmp r4, r0 + blt _0233D350 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233D66C: .word 0x000001C2 +_0233D670: .word 0x0237CFBC + arm_func_end CreateRoomsAndAnchors + + arm_func_start GenerateSecondaryStructures +GenerateSecondaryStructures: ; 0x0233D674 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + mov sl, r0 + mov r0, #0 + str r1, [sp] + str r2, [sp, #4] + str r0, [sp, #0x20] + b _0233E03C +_0233D694: + ldr r0, [sp, #0x20] + mov r1, #0x1e + mul r7, r0, r1 + mov r0, #0 + add r6, sl, r7 + str r0, [sp, #0x24] + b _0233E020 +_0233D6B0: + ldr r1, [sp, #0x24] + ldr r0, _0233E054 ; =0x000001C2 + mul sb, r1, r0 + add r8, r6, sb + ldrb r0, [r8, #8] + cmp r0, #0 + ldreqb r0, [r8, #0xe] + cmpeq r0, #0 + ldreqb r0, [r8, #0x12] + cmpeq r0, #0 + bne _0233E014 + ldrb r0, [r8, #0xa] + cmp r0, #0 + beq _0233E014 + ldrb r0, [r8, #0x1c] + cmp r0, #0 + bne _0233E014 + ldrb r0, [r8, #0x1d] + cmp r0, #0 + beq _0233E014 + mov r0, #6 + bl DungeonRandInt + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0233E014 +_0233D714: ; jump table + b _0233E014 ; case 0 + b _0233DE94 ; case 1 + b _0233DDC8 ; case 2 + b _0233DC9C ; case 3 + b _0233D938 ; case 4 + b _0233D72C ; case 5 +_0233D72C: + ldr r0, _0233E058 ; =0x0237CFBC + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0233E014 + sub r1, r0, #1 + ldr r0, _0233E058 ; =0x0237CFBC + str r1, [r0, #0x18] + add r0, sl, sb + add r0, r0, r7 + bl SetSpawnFlag5 + mov r0, #2 + bl DungeonRandInt + cmp r0, #0 + mov r0, #0 + beq _0233D850 + str r0, [sp, #0x10] + mov r4, r8 + ldrsh r1, [r6, sb] + ldrsh r0, [r4, #4] + ldrsh r5, [r4, #2] + add r0, r1, r0 + add r0, r0, r0, lsr #31 + mov fp, r0, asr #1 + b _0233D7AC +_0233D78C: + mov r0, fp + mov r1, r5 + bl IsNextToHallway + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x10] + bne _0233D7B8 + add r5, r5, #1 +_0233D7AC: + ldrsh r0, [r4, #6] + cmp r5, r0 + blt _0233D78C +_0233D7B8: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0233E014 + ldrsh r5, [r4, #2] + b _0233D7F4 +_0233D7CC: + mov r0, fp + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] +_0233D7F4: + ldrsh r0, [r4, #6] + cmp r5, r0 + blt _0233D7CC + ldrsh sb, [r4] + b _0233D83C +_0233D808: + ldrsh r5, [r4, #2] + b _0233D82C +_0233D810: + mov r0, sb + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + orr r1, r1, #0x80 + strh r1, [r0] +_0233D82C: + ldrsh r0, [r4, #6] + cmp r5, r0 + blt _0233D810 + add sb, sb, #1 +_0233D83C: + cmp sb, fp + blt _0233D808 + mov r0, #1 + strb r0, [r8, #9] + b _0233E014 +_0233D850: + str r0, [sp, #0x14] + mov r4, r8 + ldrsh r1, [r4, #2] + ldrsh r0, [r4, #6] + ldrsh r5, [r6, sb] + add r0, r1, r0 + add r0, r0, r0, lsr #31 + mov fp, r0, asr #1 + b _0233D894 +_0233D874: + mov r0, r5 + mov r1, fp + bl IsNextToHallway + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + bne _0233D8A0 + add r5, r5, #1 +_0233D894: + ldrsh r0, [r4, #4] + cmp r5, r0 + blt _0233D874 +_0233D8A0: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _0233E014 + ldrsh r5, [r4] + b _0233D8DC +_0233D8B4: + mov r0, r5 + mov r1, fp + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] +_0233D8DC: + ldrsh r0, [r4, #4] + cmp r5, r0 + blt _0233D8B4 + ldrsh sb, [r4, #2] + b _0233D924 +_0233D8F0: + ldrsh r5, [r4] + b _0233D914 +_0233D8F8: + mov r0, r5 + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + orr r1, r1, #0x80 + strh r1, [r0] +_0233D914: + ldrsh r0, [r4, #4] + cmp r5, r0 + blt _0233D8F8 + add sb, sb, #1 +_0233D924: + cmp sb, fp + blt _0233D8F0 + mov r0, #1 + strb r0, [r8, #9] + b _0233E014 +_0233D938: + mov r1, r8 + ldrsh r4, [r6, sb] + ldrsh r3, [r1, #4] + sub r0, r3, r4 + cmp r0, #6 + ldrgesh r2, [r1, #2] + ldrgesh r1, [r1, #6] + subge r0, r1, r2 + cmpge r0, #6 + blt _0233E014 + add r0, r4, r3 + add r0, r0, r0, lsr #31 + mov r5, r0, asr #1 + ldr r0, _0233E058 ; =0x0237CFBC + add r1, r2, r1 + ldr r0, [r0, #0x18] + add r1, r1, r1, lsr #31 + mov r4, r1, asr #1 + cmp r0, #0 + beq _0233E014 + sub r1, r0, #1 + ldr r0, _0233E058 ; =0x0237CFBC + str r1, [r0, #0x18] + add r0, sl, sb + add r0, r0, r7 + bl SetSpawnFlag5 + sub r0, r4, #2 + str r0, [sp, #0xc] + sub r0, r5, #2 + ldr r1, [sp, #0xc] + str r0, [sp, #8] + bl GetTileSafe + ldrh r2, [r0] + sub fp, r5, #1 + ldr r1, [sp, #0xc] + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0] + ldr r1, [sp, #0xc] + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + mov r0, r5 + bl GetTileSafe + ldrh r2, [r0] + ldr r1, [sp, #0xc] + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + add r0, r5, #1 + bl GetTileSafe + ldrh r1, [r0] + sub sb, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #6 + strh r1, [r0] + ldr r0, [sp, #8] + mov r1, sb + bl GetTileSafe + ldrh r2, [r0] + mov r1, r4 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + ldr r0, [sp, #8] + bl GetTileSafe + ldrh r2, [r0] + add r1, r4, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + ldr r0, [sp, #8] + bl GetTileSafe + ldrh r2, [r0] + add r1, r4, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + ldr r0, [sp, #8] + bl GetTileSafe + ldrh r2, [r0] + add r1, r4, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + mov r0, fp + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] + ldrh r2, [r0] + add r1, r4, #1 + orr r2, r2, #4 + strh r2, [r0] + mov r0, r5 + bl GetTileSafe + ldrh r2, [r0] + ldr r1, [sp, #0xc] + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + add r0, r5, #1 + bl GetTileSafe + ldrh r2, [r0] + mov r1, sb + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + add r0, r5, #1 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r4 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + add r0, r5, #1 + bl GetTileSafe + ldrh r2, [r0] + add r1, r4, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #6 + strh r2, [r0] + add r0, r5, #1 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r2, [r0] + mov r1, sb + orr r2, r2, #6 + strh r2, [r0] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, sb + orr r2, r2, #4 + strh r2, [r0, #2] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, sb + orr r2, r2, #0x40 + strh r2, [r0, #2] + mov r0, r5 + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, r4 + orr r2, r2, #2 + strh r2, [r0, #2] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, r4 + orr r2, r2, #2 + strh r2, [r0, #2] + mov r0, r5 + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, sb + orr r2, r2, #2 + strh r2, [r0, #2] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, sb + orr r2, r2, #0x10 + strh r2, [r0, #2] + mov r0, r5 + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, r4 + orr r2, r2, #0x10 + strh r2, [r0, #2] + mov r0, fp + bl GetTileSafe + ldrh r2, [r0, #2] + mov r1, r4 + orr r2, r2, #0x10 + strh r2, [r0, #2] + mov r0, r5 + bl GetTileSafe + ldrh r1, [r0, #2] + orr r1, r1, #0x10 + strh r1, [r0, #2] + mov r0, #1 + strb r0, [r8, #9] + b _0233E014 +_0233DC9C: + mov r4, r8 + ldrsh r3, [r6, sb] + ldrsh r2, [r4, #4] + sub r0, r2, r3 + cmp r0, #5 + ldrgesh r1, [r4, #6] + ldrgesh r0, [r4, #2] + subge r0, r1, r0 + cmpge r0, #5 + blt _0233E014 + add r0, r3, #2 + sub r1, r2, #3 + bl DungeonRandRange + ldrsh r1, [r4, #6] + str r0, [sp, #0x28] + mov r5, r0 + ldrsh r0, [r4, #2] + sub r1, r1, #3 + add r0, r0, #2 + bl DungeonRandRange + str r0, [sp, #0x18] + ldrsh r0, [r4] + ldrsh r1, [r4, #4] + add r0, r0, #2 + sub r1, r1, #3 + bl DungeonRandRange + str r0, [sp, #0x1c] + ldrsh r0, [r4, #2] + ldrsh r1, [r4, #6] + add r0, r0, #2 + sub r1, r1, #3 + bl DungeonRandRange + mov fp, r0 + ldr r0, _0233E058 ; =0x0237CFBC + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0233E014 + sub r1, r0, #1 + ldr r0, _0233E058 ; =0x0237CFBC + str r1, [r0, #0x18] + add r0, sl, sb + add r0, r0, r7 + bl SetSpawnFlag5 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x1c] + cmp r1, r0 + movgt r5, r0 + movgt r0, r1 + strgt r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + cmp r0, fp + strgt fp, [sp, #0x18] + movgt fp, r0 + b _0233DDB0 +_0233DD74: + ldr r4, [sp, #0x18] + b _0233DDA4 +_0233DD7C: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] +_0233DDA4: + cmp r4, fp + ble _0233DD7C + add r5, r5, #1 +_0233DDB0: + ldr r0, [sp, #0x1c] + cmp r5, r0 + ble _0233DD74 + mov r0, #1 + strb r0, [r8, #9] + b _0233E014 +_0233DDC8: + mov r2, r8 + ldrsh r1, [r2, #4] + ldrsh r0, [r6, sb] + sub r0, r1, r0 + tst r0, #1 + beq _0233E014 + ldrsh r1, [r2, #6] + ldrsh r0, [r2, #2] + sub r0, r1, r0 + tst r0, #1 + ldrne r0, _0233E058 ; =0x0237CFBC + ldrne r0, [r0, #0x18] + cmpne r0, #0 + beq _0233E014 + sub r1, r0, #1 + ldr r0, _0233E058 ; =0x0237CFBC + str r1, [r0, #0x18] + add r0, sl, sb + add r0, r0, r7 + bl SetSpawnFlag5 + mov r5, #0 +_0233DE1C: + ldrsh r1, [r8, #4] + ldrsh r0, [r8] + sub r0, r1, r0 + bl DungeonRandInt + mov r4, r0 + ldrsh r1, [r8, #6] + ldrsh r0, [r8, #2] + sub r0, r1, r0 + bl DungeonRandInt + mov r2, r0 + add r0, r4, r2 + tst r0, #1 + beq _0233DE7C + ldrsh r0, [r8] + ldrsh r1, [r8, #2] + add r0, r0, r4 + add r1, r1, r2 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] +_0233DE7C: + add r5, r5, #1 + cmp r5, #0x40 + blt _0233DE1C + mov r0, #1 + strb r0, [r8, #9] + b _0233E014 +_0233DE94: + ldr r0, _0233E058 ; =0x0237CFBC + ldr r0, [r0, #0x18] + cmp r0, #0 + beq _0233E014 + sub r1, r0, #1 + ldr r0, _0233E058 ; =0x0237CFBC + str r1, [r0, #0x18] + mov r0, r8 + ldrsh r2, [r0, #4] + ldrsh r1, [r6, sb] + sub r3, r2, r1 + tst r3, #1 + beq _0233DEDC + ldrsh r2, [r0, #6] + ldrsh r1, [r0, #2] + sub r1, r2, r1 + tst r1, #1 + bne _0233DFF4 +_0233DEDC: + cmp r3, #5 + ldrsh r4, [r0] + ldrsh r3, [r0, #4] + ldrsh r2, [r0, #6] + ldrsh r1, [r0, #2] + add r0, r4, r3 + add r0, r0, r0, lsr #31 + mov r4, r0, asr #1 + add r0, r1, r2 + add r0, r0, r0, lsr #31 + mov r5, r0, asr #1 + subge r0, r2, r1 + cmpge r0, #5 + blt _0233DFCC + add r0, r4, #1 + mov r1, r5 + bl GetTileSafe + ldrh r2, [r0] + add r1, r5, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #2 + strh r2, [r0] + mov r0, r4 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r5 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #2 + strh r2, [r0] + sub r0, r4, #1 + bl GetTileSafe + ldrh r2, [r0] + sub r1, r5, #1 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #2 + strh r2, [r0] + mov r0, r4 + bl GetTileSafe + mov r1, r5 + ldrh r2, [r0] + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #2 + strh r2, [r0] + mov r0, r4 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] + b _0233E00C +_0233DFCC: + mov r0, r4 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] + b _0233E00C +_0233DFF4: + add r4, sl, sb + add r0, r4, r7 + bl SetSpawnFlag5 + add r0, r4, r7 + mov r1, #1 + bl GenerateMaze +_0233E00C: + mov r0, #1 + strb r0, [r8, #9] +_0233E014: + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] +_0233E020: + ldr r1, [sp, #0x24] + ldr r0, [sp] + cmp r1, r0 + blt _0233D6B0 + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] +_0233E03C: + ldr r1, [sp, #0x20] + ldr r0, [sp, #4] + cmp r1, r0 + blt _0233D694 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233E054: .word 0x000001C2 +_0233E058: .word 0x0237CFBC + arm_func_end GenerateSecondaryStructures + + arm_func_start AssignGridCellConnections +AssignGridCellConnections: ; 0x0233E05C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r4, [sp, #0x3c] + mov r8, r1 + mov r1, r4 + ldrb r1, [r1, #5] + mov sb, r0 + mov r0, #4 + str r4, [sp, #0x3c] + mov fp, r2 + mov r7, r3 + ldr r5, [sp, #0x38] + str r1, [sp, #4] + bl DungeonRandInt + mov r6, r0 + mov sl, #0 + b _0233E208 +_0233E0A0: + mov r0, #8 + bl DungeonRandInt + mov r4, r0 + mov r0, #4 + bl DungeonRandInt + mov lr, #1 + cmp r4, #4 + movlt r6, r0 + sub r1, r8, #1 + sub r0, fp, #1 + mov ip, lr + mov r3, #0 +_0233E0D0: + and r2, r6, #3 + mov r4, r3 + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _0233E130 +_0233E0E4: ; jump table + b _0233E0F4 ; case 0 + b _0233E104 ; case 1 + b _0233E114 ; case 2 + b _0233E124 ; case 3 +_0233E0F4: + cmp r7, r1 + movlt r4, ip + addge r6, r6, #1 + b _0233E130 +_0233E104: + cmp r5, #0 + movgt r4, lr + addle r6, r6, #1 + b _0233E130 +_0233E114: + cmp r7, #0 + movgt r4, #1 + addle r6, r6, #1 + b _0233E130 +_0233E124: + cmp r5, r0 + movlt r4, #1 + addge r6, r6, #1 +_0233E130: + cmp r4, #0 + beq _0233E0D0 + and r0, r6, #3 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0233E204 +_0233E148: ; jump table + b _0233E158 ; case 0 + b _0233E184 ; case 1 + b _0233E1B0 ; case 2 + b _0233E1DC ; case 3 +_0233E158: + ldr r0, _0233E438 ; =0x000001C2 + mov r1, #0x1e + mla r0, r7, r0, sb + mla r1, r5, r1, r0 + ldrb r0, [r1, #0x1ca] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r1, #0x16] + streqb r0, [r1, #0x1d7] + addeq r7, r7, #1 + b _0233E204 +_0233E184: + ldr r0, _0233E438 ; =0x000001C2 + mov r1, #0x1e + mla r0, r7, r0, sb + mla r1, r5, r1, r0 + ldrb r0, [r1, #-0x16] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r1, #0x13] + streqb r0, [r1, #-0xa] + subeq r5, r5, #1 + b _0233E204 +_0233E1B0: + ldr r0, _0233E438 ; =0x000001C2 + mov r1, #0x1e + mla r0, r7, r0, sb + mla r1, r5, r1, r0 + ldrb r0, [r1, #-0x1ba] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r1, #0x15] + streqb r0, [r1, #-0x1ac] + subeq r7, r7, #1 + b _0233E204 +_0233E1DC: + ldr r0, _0233E438 ; =0x000001C2 + mov r1, #0x1e + mla r0, r7, r0, sb + mla r1, r5, r1, r0 + ldrb r0, [r1, #0x26] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r1, #0x14] + streqb r0, [r1, #0x31] + addeq r5, r5, #1 +_0233E204: + add sl, sl, #1 +_0233E208: + ldr r0, [sp, #4] + cmp sl, r0 + blt _0233E0A0 + ldr r0, [sp, #0x3c] + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _0233E430 +_0233E224: + sub r0, r8, #1 + mov r6, #0 + str r0, [sp, #8] + sub r0, fp, #1 + str r6, [sp] + str r0, [sp, #0xc] + b _0233E41C +_0233E240: + ldr r0, _0233E438 ; =0x000001C2 + mov r7, #0 + mla sl, r6, r0, sb + b _0233E410 +_0233E250: + mov r1, #0x1e + mla r5, r7, r1, sl + ldrb r1, [r5, #8] + mov r0, #0 + cmp r1, #0 + ldreqb r1, [r5, #0xa] + cmpeq r1, #0 + bne _0233E40C + ldrb r1, [r5, #0x13] + cmp r1, #0 + ldrb r1, [r5, #0x14] + addne r0, r0, #1 + cmp r1, #0 + ldrb r1, [r5, #0x15] + addne r0, r0, #1 + cmp r1, #0 + ldrb r1, [r5, #0x16] + addne r0, r0, #1 + cmp r1, #0 + addne r0, r0, #1 + cmp r0, #1 + bne _0233E40C + mov r4, #0 + mov r0, #4 + bl DungeonRandInt + mov r1, r4 + b _0233E370 +_0233E2BC: + and r2, r0, #3 + mov r4, #0 + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _0233E364 +_0233E2D0: ; jump table + b _0233E2E0 ; case 0 + b _0233E304 ; case 1 + b _0233E324 ; case 2 + b _0233E344 ; case 3 +_0233E2E0: + ldr r2, [sp, #8] + cmp r6, r2 + bge _0233E2FC + ldrb r2, [r5, #0x16] + cmp r2, #0 + moveq r4, #1 + beq _0233E364 +_0233E2FC: + add r0, r0, #1 + b _0233E364 +_0233E304: + cmp r7, #0 + ble _0233E31C + ldrb r2, [r5, #0x13] + cmp r2, #0 + moveq r4, #1 + beq _0233E364 +_0233E31C: + add r0, r0, #1 + b _0233E364 +_0233E324: + cmp r6, #0 + ble _0233E33C + ldrb r2, [r5, #0x15] + cmp r2, #0 + moveq r4, #1 + beq _0233E364 +_0233E33C: + add r0, r0, #1 + b _0233E364 +_0233E344: + ldr r2, [sp, #0xc] + cmp r7, r2 + bge _0233E360 + ldrb r2, [r5, #0x14] + cmp r2, #0 + moveq r4, #1 + beq _0233E364 +_0233E360: + add r0, r0, #1 +_0233E364: + cmp r4, #0 + bne _0233E378 + add r1, r1, #1 +_0233E370: + cmp r1, #8 + blt _0233E2BC +_0233E378: + cmp r4, #0 + beq _0233E40C + and r0, r0, #3 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0233E40C +_0233E390: ; jump table + b _0233E3A0 ; case 0 + b _0233E3BC ; case 1 + b _0233E3D8 ; case 2 + b _0233E3F4 ; case 3 +_0233E3A0: + ldrb r0, [r5, #0x1ca] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r5, #0x16] + streqb r0, [r5, #0x1d7] + streq r0, [sp] + b _0233E40C +_0233E3BC: + ldrb r0, [r5, #0x1ca] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r5, #0x13] + streqb r0, [r5, #-0xa] + streq r0, [sp] + b _0233E40C +_0233E3D8: + ldrb r0, [r5, #0x1ca] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r5, #0x15] + streqb r0, [r5, #-0x1ac] + streq r0, [sp] + b _0233E40C +_0233E3F4: + ldrb r0, [r5, #0x1ca] + cmp r0, #0 + moveq r0, #1 + streqb r0, [r5, #0x14] + streqb r0, [r5, #0x31] + streq r0, [sp] +_0233E40C: + add r7, r7, #1 +_0233E410: + cmp r7, fp + blt _0233E250 + add r6, r6, #1 +_0233E41C: + cmp r6, r8 + blt _0233E240 + ldr r0, [sp] + cmp r0, #0 + bne _0233E224 +_0233E430: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233E438: .word 0x000001C2 + arm_func_end AssignGridCellConnections + + arm_func_start CreateGridCellConnections +CreateGridCellConnections: ; 0x0233E43C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x48 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + str r2, [sp, #0x14] + mov sb, r3 + ldr r8, [sp, #0x70] + mov r5, #0 + b _0233E510 +_0233E460: + ldr r1, _0233ED30 ; =0x000001C2 + ldr r0, [sp, #0xc] + mov r6, #0 + mla r7, r5, r1, r0 + ldr r0, [sp, #0x10] + mov r3, r6 + sub r1, r0, #1 + ldr r0, [sp, #0x14] + mov r2, r6 + sub r0, r0, #1 + mov ip, r6 + mov lr, r6 + mov r4, r6 + b _0233E500 +_0233E498: + mov sl, #0x1e + mla sl, r6, sl, r7 + ldrb fp, [sl, #8] + cmp fp, #0 + strneb r4, [sl, #0x17] + strneb r4, [sl, #0x18] + strneb r4, [sl, #0x19] + strneb r4, [sl, #0x1a] + bne _0233E4FC + cmp r5, #0 + strleb r3, [sl, #0x15] + cmp r6, #0 + strleb r2, [sl, #0x13] + cmp r5, r1 + strgeb ip, [sl, #0x16] + cmp r6, r0 + strgeb lr, [sl, #0x14] + ldrb fp, [sl, #0x13] + strb fp, [sl, #0x17] + ldrb fp, [sl, #0x14] + strb fp, [sl, #0x18] + ldrb fp, [sl, #0x15] + strb fp, [sl, #0x19] + ldrb fp, [sl, #0x16] + strb fp, [sl, #0x1a] +_0233E4FC: + add r6, r6, #1 +_0233E500: + ldr sl, [sp, #0x14] + cmp r6, sl + blt _0233E498 + add r5, r5, #1 +_0233E510: + ldr r0, [sp, #0x10] + cmp r5, r0 + blt _0233E460 + mov r6, #0 + b _0233E800 +_0233E524: + ldr r1, _0233ED30 ; =0x000001C2 + ldr r0, [sp, #0xc] + mov r7, #0 + mla r4, r6, r1, r0 + add r0, sb, r6, lsl #2 + str r0, [sp, #0x2c] + b _0233E7F0 +_0233E540: + mov r0, #0x1e + mla r5, r7, r0, r4 + ldrb r0, [r5, #8] + cmp r0, #0 + bne _0233E7EC + ldrb r0, [r5, #0xa] + cmp r0, #0 + ldreqsh fp, [r5] + ldreqsh sl, [r5, #2] + beq _0233E598 + ldrsh r0, [r5] + ldrsh r1, [r5, #4] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + mov fp, r0 + ldrsh r0, [r5, #2] + ldrsh r1, [r5, #6] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + mov sl, r0 +_0233E598: + ldrb r0, [r5, #0x17] + cmp r0, #0 + beq _0233E624 + ldrb r0, [r5, #-0x16] + cmp r0, #0 + bne _0233E60C + ldrb r0, [r5, #-0x14] + cmp r0, #0 + ldreqsh r2, [r5, #-0x1e] + beq _0233E5D8 + ldrsh r0, [r5, #-0x1e] + ldrsh r1, [r5, #-0x1a] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + mov r2, r0 +_0233E5D8: + mov r0, #1 + str r0, [sp] + mov r0, #0x1e + mla r3, r7, r0, r4 + ldr r1, [sb, r6, lsl #2] + mov r0, fp + str r1, [sp, #4] + ldr r1, [r8, r7, lsl #2] + str r1, [sp, #8] + ldrsh r1, [r3, #2] + ldrsh r3, [r3, #-0x18] + sub r3, r3, #1 + bl CreateHallway +_0233E60C: + mov r0, #0 + strb r0, [r5, #0x17] + strb r0, [r5, #-6] + mov r0, #1 + strb r0, [r5, #0xb] + strb r0, [r5, #-0x13] +_0233E624: + ldrb r0, [r5, #0x18] + cmp r0, #0 + beq _0233E6B8 + ldrb r0, [r5, #0x26] + cmp r0, #0 + bne _0233E6A0 + ldrb r0, [r5, #0x28] + cmp r0, #0 + ldreqsh r2, [r5, #0x1e] + beq _0233E664 + ldrsh r0, [r5, #0x1e] + ldrsh r1, [r5, #0x22] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + mov r2, r0 +_0233E664: + mov r1, #1 + str r1, [sp] + mov r0, fp + mov r1, #0x1e + ldr fp, [sb, r6, lsl #2] + mla r1, r7, r1, r4 + add r3, r8, r7, lsl #2 + str fp, [sp, #4] + ldr r3, [r3, #4] + sub r3, r3, #1 + str r3, [sp, #8] + ldrsh fp, [r1, #6] + ldrsh r3, [r1, #0x20] + sub r1, fp, #1 + bl CreateHallway +_0233E6A0: + mov r0, #0 + strb r0, [r5, #0x18] + strb r0, [r5, #0x35] + mov r0, #1 + strb r0, [r5, #0xb] + strb r0, [r5, #0x29] +_0233E6B8: + ldrb r0, [r5, #0x19] + cmp r0, #0 + beq _0233E750 + ldrb r0, [r5, #-0x1ba] + cmp r0, #0 + bne _0233E738 + ldrb r0, [r5, #-0x1b8] + cmp r0, #0 + sub r0, r5, #0x100 + ldreqsh r3, [r0, #-0xc0] + beq _0233E6FC + ldrsh r1, [r0, #-0xbc] + ldrsh r2, [r0, #-0xc0] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + mov r3, r0 +_0233E6FC: + mov r0, #0 + str r0, [sp] + mov r0, #0x1e + mul r0, r7, r0 + ldr fp, [sb, r6, lsl #2] + add r1, r4, r0 + str fp, [sp, #4] + ldr fp, [r8, r7, lsl #2] + sub r2, r1, #0x100 + str fp, [sp, #8] + ldrsh r2, [r2, #-0xc2] + ldrsh r0, [r4, r0] + mov r1, sl + sub r2, r2, #1 + bl CreateHallway +_0233E738: + mov r0, #0 + strb r0, [r5, #0x19] + strb r0, [r5, #-0x1a8] + mov r0, #1 + strb r0, [r5, #0xb] + strb r0, [r5, #-0x1b7] +_0233E750: + ldrb r0, [r5, #0x1a] + cmp r0, #0 + beq _0233E7EC + ldrb r0, [r5, #0x1ca] + cmp r0, #0 + bne _0233E7D4 + ldrb r0, [r5, #0x1cc] + cmp r0, #0 + add r0, r5, #0x100 + ldreqsh r3, [r0, #0xc4] + beq _0233E794 + ldrsh r1, [r0, #0xc8] + ldrsh r2, [r0, #0xc4] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + mov r3, r0 +_0233E794: + mov r0, #0 + str r0, [sp] + mov r0, #0x1e + ldr r2, [sp, #0x2c] + mov r1, sl + ldr sl, [r2, #4] + mla r0, r7, r0, r4 + sub sl, sl, #1 + str sl, [sp, #4] + ldr sl, [r8, r7, lsl #2] + add r2, r0, #0x100 + str sl, [sp, #8] + ldrsh r0, [r0, #4] + ldrsh r2, [r2, #0xc2] + sub r0, r0, #1 + bl CreateHallway +_0233E7D4: + mov r0, #0 + strb r0, [r5, #0x1a] + strb r0, [r5, #0x1db] + mov r0, #1 + strb r0, [r5, #0xb] + strb r0, [r5, #0x1cd] +_0233E7EC: + add r7, r7, #1 +_0233E7F0: + ldr r0, [sp, #0x14] + cmp r7, r0 + blt _0233E540 + add r6, r6, #1 +_0233E800: + ldr r0, [sp, #0x10] + cmp r6, r0 + blt _0233E524 + ldrb r0, [sp, #0x74] + cmp r0, #0 + bne _0233ED28 + mov r7, #0 + b _0233ED1C +_0233E820: + ldr r1, _0233ED30 ; =0x000001C2 + ldr r0, [sp, #0xc] + mov r8, #0 + mla r0, r7, r1, r0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + sub r0, r0, #2 + str r0, [sp, #0x40] + ldr r0, [sp, #0x10] + sub r0, r0, #2 + str r0, [sp, #0x38] + b _0233ED0C +_0233E850: + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #5 + bge _0233ED08 + ldr r0, [sp, #0x20] + mov r1, #0x1e + mla r6, r8, r1, r0 + ldrb r0, [r6, #8] + cmp r0, #0 + bne _0233ED08 + ldrb r0, [r6, #0xb] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #0x12] + cmp r0, #0 + ldreqb r0, [r6, #9] + cmpeq r0, #0 + bne _0233ED08 + ldrb r0, [r6, #0xa] + cmp r0, #0 + beq _0233ED08 + mov r0, #4 + bl DungeonRandInt + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0233ED08 +_0233E8B8: ; jump table + b _0233E8C8 ; case 0 + b _0233E9DC ; case 1 + b _0233EAE4 ; case 2 + b _0233EBFC ; case 3 +_0233E8C8: + cmp r7, #1 + blt _0233ED08 + ldrb r0, [r6, #-0x1b7] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #-0x1ba] + cmp r0, #0 + bne _0233ED08 + ldrb r0, [r6, #-0x1b8] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #-0x1b9] + cmp r0, #0 + ldreqb r0, [r6, #-0x1b0] + cmpeq r0, #0 + bne _0233ED08 + sub r1, r6, #0x100 + ldrsh r0, [r1, #-0xc2] + ldrsh fp, [r1, #-0xc0] + ldrsh r1, [r6, #2] + str r0, [sp, #0x28] + sub r0, r6, #0x100 + ldrsh sb, [r0, #-0xbc] + ldrsh r2, [r6, #6] + cmp fp, r1 + movge fp, r1 + cmp sb, r2 + ldrsh r0, [r6] + ldrsh sl, [r6, #4] + movle sb, r2 + bl GetTile + ldrb r0, [r0, #7] + ldr r5, [sp, #0x28] + and r0, r0, #0xff + str r0, [sp, #0x30] + b _0233E99C +_0233E958: + mov r4, fp + b _0233E990 +_0233E960: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + ldr r1, [sp, #0x30] + strb r1, [r0, #7] +_0233E990: + cmp r4, sb + blt _0233E960 + add r5, r5, #1 +_0233E99C: + cmp r5, sl + blt _0233E958 + ldr r0, [sp, #0x28] + sub r1, r6, #0x100 + strh r0, [r1, #-0xc2] + strh sl, [r1, #-0xbe] + strh fp, [r1, #-0xc0] + strh sb, [r1, #-0xbc] + mov r0, #1 + strb r0, [r6, #0x12] + strb r0, [r6, #-0x1b0] + mov r0, #0 + strb r0, [r6, #0xb] + mov r0, #1 + strb r0, [r6, #0x11] + b _0233ED08 +_0233E9DC: + cmp r8, #1 + blt _0233ED08 + ldrb r0, [r6, #-0x13] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #-0x16] + cmp r0, #0 + bne _0233ED08 + ldrb r0, [r6, #-0x14] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #-0x15] + cmp r0, #0 + ldreqb r0, [r6, #-0xc] + cmpeq r0, #0 + bne _0233ED08 + ldrsh r1, [r6, #-0x1c] + ldrsh r0, [r6] + ldrsh fp, [r6, #-0x1e] + str r1, [sp, #0x24] + ldrsh r1, [r6, #4] + ldrsh sb, [r6, #-0x1a] + cmp fp, r0 + movge fp, r0 + cmp sb, r1 + movle sb, r1 + ldrsh r1, [r6, #2] + ldrsh sl, [r6, #6] + bl GetTile + ldrb r0, [r0, #7] + mov r5, fp + and r0, r0, #0xff + str r0, [sp, #0x34] + b _0233EAA8 +_0233EA64: + ldr r4, [sp, #0x24] + b _0233EA9C +_0233EA6C: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + ldr r1, [sp, #0x34] + strb r1, [r0, #7] +_0233EA9C: + cmp r4, sl + blt _0233EA6C + add r5, r5, #1 +_0233EAA8: + cmp r5, sb + blt _0233EA64 + strh fp, [r6, #-0x1e] + ldr r0, [sp, #0x24] + strh sb, [r6, #-0x1a] + strh r0, [r6, #-0x1c] + strh sl, [r6, #-0x18] + mov r0, #1 + strb r0, [r6, #0x12] + strb r0, [r6, #-0xc] + mov r0, #0 + strb r0, [r6, #0xb] + mov r0, #1 + strb r0, [r6, #0x11] + b _0233ED08 +_0233EAE4: + ldr r0, [sp, #0x38] + cmp r7, r0 + bgt _0233ED08 + ldrb r0, [r6, #0x1cd] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #0x1ca] + cmp r0, #0 + bne _0233ED08 + ldrb r0, [r6, #0x1cc] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #0x1cb] + cmp r0, #0 + ldreqb r0, [r6, #0x1d4] + cmpeq r0, #0 + bne _0233ED08 + add r0, r6, #0x100 + ldrsh sl, [r6] + ldrsh r0, [r0, #0xc4] + str r0, [sp, #0x1c] + ldrsh r1, [r6, #2] + mov r0, r0 + cmp r1, r0 + strlt r1, [sp, #0x1c] + add r0, r6, #0x100 + ldrsh fp, [r0, #0xc6] + ldrsh r0, [r0, #0xc8] + ldrsh sb, [r6, #6] + cmp sb, r0 + movle sb, r0 + mov r0, sl + bl GetTile + ldrb r0, [r0, #7] + mov r5, sl + and r0, r0, #0xff + str r0, [sp, #0x3c] + b _0233EBC0 +_0233EB7C: + ldr r4, [sp, #0x1c] + b _0233EBB4 +_0233EB84: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + ldr r1, [sp, #0x3c] + strb r1, [r0, #7] +_0233EBB4: + cmp r4, sb + blt _0233EB84 + add r5, r5, #1 +_0233EBC0: + cmp r5, fp + blt _0233EB7C + strh sl, [r6] + strh fp, [r6, #4] + ldr r0, [sp, #0x1c] + strh r0, [r6, #2] + strh sb, [r6, #6] + mov r0, #1 + strb r0, [r6, #0x1d4] + strb r0, [r6, #0x12] + mov r0, #0 + strb r0, [r6, #0x1cd] + mov r0, #1 + strb r0, [r6, #0x1d3] + b _0233ED08 +_0233EBFC: + ldr r0, [sp, #0x40] + cmp r8, r0 + bgt _0233ED08 + ldrb r0, [r6, #0x29] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #0x26] + cmp r0, #0 + bne _0233ED08 + ldrb r0, [r6, #0x28] + cmp r0, #0 + beq _0233ED08 + ldrb r0, [r6, #0x27] + cmp r0, #0 + ldreqb r0, [r6, #0x30] + cmpeq r0, #0 + bne _0233ED08 + ldrsh r0, [r6, #0x1e] + str r0, [sp, #0x18] + ldrsh r0, [r6] + ldr r1, [sp, #0x18] + cmp r0, r1 + strlt r0, [sp, #0x18] + ldrsh sl, [r6, #2] + ldrsh r1, [r6, #0x22] + ldrsh sb, [r6, #4] + ldrsh fp, [r6, #0x24] + cmp sb, r1 + movle sb, r1 + mov r1, sl + bl GetTile + ldrb r0, [r0, #7] + ldr r5, [sp, #0x18] + and r0, r0, #0xff + str r0, [sp, #0x44] + b _0233ECD0 +_0233EC8C: + mov r4, sl + b _0233ECC4 +_0233EC94: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + ldr r1, [sp, #0x44] + strb r1, [r0, #7] +_0233ECC4: + cmp r4, fp + blt _0233EC94 + add r5, r5, #1 +_0233ECD0: + cmp r5, sb + blt _0233EC8C + ldr r0, [sp, #0x18] + strh r0, [r6] + strh sb, [r6, #4] + strh sl, [r6, #2] + strh fp, [r6, #6] + mov r0, #1 + strb r0, [r6, #0x30] + strb r0, [r6, #0x12] + mov r0, #0 + strb r0, [r6, #0x29] + mov r0, #1 + strb r0, [r6, #0x2f] +_0233ED08: + add r8, r8, #1 +_0233ED0C: + ldr r0, [sp, #0x14] + cmp r8, r0 + blt _0233E850 + add r7, r7, #1 +_0233ED1C: + ldr r0, [sp, #0x10] + cmp r7, r0 + blt _0233E820 +_0233ED28: + add sp, sp, #0x48 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233ED30: .word 0x000001C2 + arm_func_end CreateGridCellConnections + + arm_func_start GenerateRoomImperfections +GenerateRoomImperfections: ; 0x0233ED34 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + str r0, [sp] + str r1, [sp, #4] + str r2, [sp, #8] + mov fp, #0 + b _0233F100 +_0233ED50: + ldr r1, _0233F114 ; =0x000001C2 + ldr r0, [sp] + mov sl, #0 + mla r0, fp, r1, r0 + str r0, [sp, #0xc] + mvn r0, #0 + str r0, [sp, #0x30] + b _0233F0F0 +_0233ED70: + ldr r0, [sp, #0xc] + mov r1, #0x1e + mla sb, sl, r1, r0 + ldrb r0, [sb, #8] + cmp r0, #0 + ldreqb r0, [sb, #0x11] + cmpeq r0, #0 + ldreqb r0, [sb, #0x12] + cmpeq r0, #0 + bne _0233F0EC + ldrb r0, [sb, #0xb] + cmp r0, #0 + ldrneb r0, [sb, #0xa] + cmpne r0, #0 + beq _0233F0EC + ldrb r0, [sb, #9] + cmp r0, #0 + ldreqb r0, [sb, #0x10] + cmpeq r0, #0 + bne _0233F0EC + ldrb r0, [sb, #0x1c] + cmp r0, #0 + beq _0233F0EC + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x3c + blt _0233F0EC + ldrsh r3, [sb, #4] + ldrsh r2, [sb] + ldrsh r1, [sb, #6] + ldrsh r0, [sb, #2] + sub r2, r3, r2 + sub r0, r1, r0 + add r1, r2, r0 + mov r0, r1, asr #1 + add r0, r1, r0, lsr #30 + movs r0, r0, asr #2 + str r0, [sp, #0x24] + moveq r0, #1 + streq r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x2c] + b _0233F0DC +_0233EE1C: + mov r4, #0 +_0233EE20: + mov r0, #4 + bl DungeonRandInt + str r0, [sp, #0x20] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0233EE48 +_0233EE38: ; jump table + b _0233EE48 ; case 0 + b _0233EE70 ; case 1 + b _0233EE9C ; case 2 + b _0233EECC ; case 3 +_0233EE48: + cmp r4, #0 + movne r0, #1 + strne r0, [sp, #0x28] + movne r5, #0 + moveq r0, #0 + ldrsh r8, [sb] + ldrsh r7, [sb, #2] + streq r0, [sp, #0x28] + moveq r5, #1 + b _0233EEF4 +_0233EE70: + ldrsh r0, [sb, #4] + cmp r4, #0 + movne r5, #1 + sub r8, r0, #1 + movne r0, #0 + strne r0, [sp, #0x28] + ldreq r0, [sp, #0x30] + ldrsh r7, [sb, #2] + streq r0, [sp, #0x28] + moveq r5, #0 + b _0233EEF4 +_0233EE9C: + ldrsh r0, [sb, #6] + cmp r4, #0 + ldrsh r1, [sb, #4] + sub r7, r0, #1 + ldrne r0, [sp, #0x30] + movne r5, #0 + strne r0, [sp, #0x28] + moveq r0, #0 + sub r8, r1, #1 + streq r0, [sp, #0x28] + ldreq r5, [sp, #0x30] + b _0233EEF4 +_0233EECC: + ldrsh r0, [sb, #6] + cmp r4, #0 + ldrne r5, [sp, #0x30] + sub r7, r0, #1 + movne r0, #0 + strne r0, [sp, #0x28] + moveq r0, #1 + ldrsh r8, [sb] + streq r0, [sp, #0x28] + moveq r5, #0 +_0233EEF4: + mov r6, #0 + b _0233F0BC +_0233EEFC: + ldrsh r0, [sb] + cmp r8, r0 + blt _0233F0C4 + ldrsh r0, [sb, #4] + cmp r8, r0 + bge _0233F0C4 + ldrsh r0, [sb, #2] + cmp r7, r0 + blt _0233F0C4 + ldrsh r0, [sb, #6] + cmp r7, r0 + bge _0233F0C4 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233F0AC + mov r5, #0 + b _0233F014 +_0233EF50: + ldr r0, _0233F118 ; =0x0235171C + mov r1, r5, lsl #2 + ldrsh r2, [r0, r1] + add r0, r0, r5, lsl #2 + ldrsh r1, [r0, #2] + add r0, r8, r2 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x10] + add r0, r7, r1 + str r0, [sp, #0x18] + ldr r6, [sp, #0x30] + b _0233EFFC +_0233EF84: + ldr r0, [sp, #0x30] + str r0, [sp, #0x14] + b _0233EFE0 +_0233EF90: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + add r0, r1, r0 + ldr r1, [sp, #0x18] + add r1, r1, r6 + bl GetTile + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #1 + bne _0233EFD4 + ldrb r0, [r0, #7] + cmp r0, #0xff + moveq r0, #1 + streq r0, [sp, #0x10] + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0233EFEC +_0233EFD4: + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] +_0233EFE0: + ldr r0, [sp, #0x14] + cmp r0, #1 + ble _0233EF90 +_0233EFEC: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0233F004 + add r6, r6, #1 +_0233EFFC: + cmp r6, #1 + ble _0233EF84 +_0233F004: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0233F01C + add r5, r5, #1 +_0233F014: + cmp r5, #8 + blt _0233EF50 +_0233F01C: + cmp r5, #8 + bne _0233F0C4 + ldr r1, _0233F11C ; =0x02353010 + ldr r0, [sp, #0x20] + mov r5, #0 + add r6, r1, r0, lsl #3 + b _0233F080 +_0233F038: + ldr r0, _0233F118 ; =0x0235171C + mov r1, r5, lsl #2 + ldrsh r2, [r0, r1] + add r0, r0, r5, lsl #2 + ldrsh r1, [r0, #2] + add r0, r8, r2 + add r1, r7, r1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r1, r0, #0xff + ldrb r0, [r5, r6] + cmp r1, r0 + bne _0233F088 + add r5, r5, #2 +_0233F080: + cmp r5, #8 + blt _0233F038 +_0233F088: + cmp r5, #8 + bne _0233F0C4 + mov r0, r8 + mov r1, r7 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + b _0233F0C4 +_0233F0AC: + ldr r0, [sp, #0x28] + add r7, r7, r5 + add r8, r8, r0 + add r6, r6, #1 +_0233F0BC: + cmp r6, #0xa + blt _0233EEFC +_0233F0C4: + add r4, r4, #1 + cmp r4, #2 + blt _0233EE20 + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] +_0233F0DC: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x24] + cmp r1, r0 + blt _0233EE1C +_0233F0EC: + add sl, sl, #1 +_0233F0F0: + ldr r0, [sp, #8] + cmp sl, r0 + blt _0233ED70 + add fp, fp, #1 +_0233F100: + ldr r0, [sp, #4] + cmp fp, r0 + blt _0233ED50 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233F114: .word 0x000001C2 +_0233F118: .word 0x0235171C +_0233F11C: .word 0x02353010 + arm_func_end GenerateRoomImperfections + + arm_func_start CreateHallway +CreateHallway: ; 0x0233F120 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldrb r6, [sp, #0x28] + mov sl, r0 + ldr r0, [sp, #0x30] + mov sb, r1 + cmp r6, #0 + mov r8, r2 + mov r7, r3 + mov r4, sl + mov r5, sb + ldr fp, [sp, #0x2c] + str r0, [sp, #0x30] + mov r6, #0 + beq _0233F328 + b _0233F1C4 +_0233F15C: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F1AC + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F1B4 +_0233F1AC: + cmp sb, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F1B4: + ldr r0, [sp, #0x30] + cmp sb, r0 + addlt sb, sb, #1 + subge sb, sb, #1 +_0233F1C4: + ldr r0, [sp, #0x30] + cmp sb, r0 + bne _0233F15C + mov r6, #0 + b _0233F240 +_0233F1D8: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F228 + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F234 +_0233F228: + cmp sl, r4 + cmpeq sb, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F234: + cmp sl, r8 + addlt sl, sl, #1 + subge sl, sl, #1 +_0233F240: + cmp sl, r8 + bne _0233F1D8 + mov r6, #0 + b _0233F2B8 +_0233F250: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F2A0 + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F2AC +_0233F2A0: + cmp sl, r4 + cmpeq sb, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F2AC: + cmp sb, r7 + addlt sb, sb, #1 + subge sb, sb, #1 +_0233F2B8: + cmp sb, r7 + bne _0233F250 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F2C4: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F314 + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F31C +_0233F314: + cmp sl, r4 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F31C: + cmp sl, fp + addlt sl, sl, #1 + subge sl, sl, #1 +_0233F328: + cmp sl, fp + bne _0233F2C4 + mov r6, #0 + b _0233F3A0 +_0233F338: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F388 + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F394 +_0233F388: + cmp sl, r4 + cmpeq sb, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F394: + cmp sb, r7 + addlt sb, sb, #1 + subge sb, sb, #1 +_0233F3A0: + cmp sb, r7 + bne _0233F338 + mov r6, #0 + b _0233F418 +_0233F3B0: + cmp r6, #0x38 + add r6, r6, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _0233F400 + mov r0, sl + mov r1, sb + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233F40C +_0233F400: + cmp sl, r4 + cmpeq sb, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0233F40C: + cmp sl, r8 + addlt sl, sl, #1 + subge sl, sl, #1 +_0233F418: + cmp sl, r8 + bne _0233F3B0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end CreateHallway + + arm_func_start EnsureConnectedGrid +EnsureConnectedGrid: ; 0x0233F424 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x2c + str r0, [sp, #0xc] + mov r7, r1 + mov fp, r2 + mov r6, r3 + ldr r5, [sp, #0x50] + mov r8, #0 + b _0233F818 +_0233F448: + ldr r1, _0233F8FC ; =0x000001C2 + ldr r0, [sp, #0xc] + mov r4, #0 + mla sb, r8, r1, r0 + sub r0, fp, #1 + str r0, [sp, #0x20] + add r0, r6, r8, lsl #2 + str r0, [sp, #0x28] + sub r0, r7, #1 + str r0, [sp, #0x24] + b _0233F80C +_0233F474: + mov r0, #0x1e + mla sl, r4, r0, sb + ldrb r0, [sl, #8] + cmp r0, #0 + ldreqb r0, [sl, #0x11] + cmpeq r0, #0 + ldreqb r0, [sl, #0xb] + cmpeq r0, #0 + bne _0233F808 + ldrb r0, [sl, #0xa] + cmp r0, #0 + beq _0233F7CC + ldrb r0, [sl, #9] + cmp r0, #0 + bne _0233F7CC + ldrsh r0, [sl] + ldrsh r1, [sl, #4] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + str r0, [sp, #0x1c] + ldrsh r0, [sl, #2] + ldrsh r1, [sl, #6] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + str r0, [sp, #0x18] + cmp r4, #0 + ble _0233F590 + ldrb r0, [sl, #-0x16] + cmp r0, #0 + ldreqb r0, [sl, #-0xc] + cmpeq r0, #0 + bne _0233F590 + ldrb r0, [sl, #-0x13] + cmp r0, #0 + beq _0233F590 + ldrb r0, [sl, #-0x14] + cmp r0, #0 + ldrsh r0, [sl, #-0x1e] + streq r0, [sp, #0x14] + beq _0233F544 + ldrsh r1, [sl, #-0x1a] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + str r0, [sp, #0x14] + ldrsh r0, [sl, #-0x1c] + ldrsh r1, [sl, #-0x18] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange +_0233F544: + mov r1, #1 + str r1, [sp] + mov r1, #0x1e + mla sl, r4, r1, sb + ldr r1, [r6, r8, lsl #2] + ldr r0, [sp, #0x1c] + str r1, [sp, #4] + ldr r1, [r5, r4, lsl #2] + ldr r2, [sp, #0x14] + str r1, [sp, #8] + ldrsh r3, [sl, #-0x18] + ldrsh r1, [sl, #2] + sub r3, r3, #1 + bl CreateHallway + mov r0, #1 + strb r0, [sl, #0xb] + strb r0, [sl, #0x13] + strb r0, [sl, #-0xa] + b _0233F808 +_0233F590: + ldr r0, [sp, #0x20] + cmp r4, r0 + bge _0233F64C + ldrb r0, [sl, #0x26] + cmp r0, #0 + ldreqb r0, [sl, #0x30] + cmpeq r0, #0 + bne _0233F64C + ldrb r0, [sl, #0x29] + cmp r0, #0 + beq _0233F64C + ldrb r0, [sl, #0x28] + cmp r0, #0 + ldrsh r0, [sl, #0x1e] + streq r0, [sp, #0x10] + beq _0233F5F8 + ldrsh r1, [sl, #0x22] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange + str r0, [sp, #0x10] + ldrsh r0, [sl, #0x20] + ldrsh r1, [sl, #0x24] + add r0, r0, #1 + sub r1, r1, #1 + bl DungeonRandRange +_0233F5F8: + mov r1, #1 + str r1, [sp] + mov r1, #0x1e + mla sl, r4, r1, sb + ldr r3, [r6, r8, lsl #2] + add r1, r5, r4, lsl #2 + str r3, [sp, #4] + ldr r1, [r1, #4] + ldr r0, [sp, #0x1c] + sub r1, r1, #1 + str r1, [sp, #8] + ldrsh r1, [sl, #6] + ldrsh r3, [sl, #0x20] + ldr r2, [sp, #0x10] + sub r1, r1, #1 + bl CreateHallway + mov r0, #1 + strb r0, [sl, #0xb] + strb r0, [sl, #0x14] + strb r0, [sl, #0x31] + b _0233F808 +_0233F64C: + cmp r8, #0 + ble _0233F708 + ldrb r0, [sl, #-0x1ba] + cmp r0, #0 + ldreqb r0, [sl, #-0x1b0] + cmpeq r0, #0 + bne _0233F708 + ldrb r0, [sl, #-0x1b7] + cmp r0, #0 + beq _0233F708 + ldrb r0, [sl, #-0x1b8] + cmp r0, #0 + sub r0, sl, #0x100 + ldreqsh r3, [r0, #-0xc0] + beq _0233F6B8 + ldrsh r1, [r0, #-0xbe] + ldrsh r2, [r0, #-0xc2] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + sub r0, sl, #0x100 + ldrsh r1, [r0, #-0xbc] + ldrsh r2, [r0, #-0xc0] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + mov r3, r0 +_0233F6B8: + mov r0, #0 + str r0, [sp] + mov r0, #0x1e + mul r0, r4, r0 + ldr ip, [r6, r8, lsl #2] + add sl, sb, r0 + str ip, [sp, #4] + ldr ip, [r5, r4, lsl #2] + sub r2, sl, #0x100 + str ip, [sp, #8] + ldrsh r2, [r2, #-0xc2] + ldrsh r0, [sb, r0] + ldr r1, [sp, #0x18] + sub r2, r2, #1 + bl CreateHallway + mov r0, #1 + strb r0, [sl, #0xb] + strb r0, [sl, #0x15] + strb r0, [sl, #-0x1ac] + b _0233F808 +_0233F708: + ldr r0, [sp, #0x24] + cmp r8, r0 + bge _0233F808 + ldrb r0, [sl, #0x1ca] + cmp r0, #0 + ldreqb r0, [sl, #0x1d4] + cmpeq r0, #0 + bne _0233F808 + ldrb r0, [sl, #0x1cd] + cmp r0, #0 + beq _0233F808 + ldrb r0, [sl, #0x1cc] + cmp r0, #0 + add r0, sl, #0x100 + ldreqsh r3, [r0, #0xc4] + beq _0233F778 + ldrsh r1, [r0, #0xc6] + ldrsh r2, [r0, #0xc2] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + add r0, sl, #0x100 + ldrsh r1, [r0, #0xc8] + ldrsh r2, [r0, #0xc4] + sub r1, r1, #1 + add r0, r2, #1 + bl DungeonRandRange + mov r3, r0 +_0233F778: + mov r0, #0 + str r0, [sp] + mov r0, #0x1e + mla sl, r4, r0, sb + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x18] + ldr r2, [r0, #4] + add r0, sl, #0x100 + sub r2, r2, #1 + str r2, [sp, #4] + ldr r2, [r5, r4, lsl #2] + str r2, [sp, #8] + ldrsh r2, [r0, #0xc2] + ldrsh r0, [sl, #4] + sub r0, r0, #1 + bl CreateHallway + mov r0, #1 + strb r0, [sl, #0xb] + strb r0, [sl, #0x16] + strb r0, [sl, #0x1d7] + b _0233F808 +_0233F7CC: + ldrsh r0, [sl] + ldrsh r1, [sl, #2] + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r1, #1 + strh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #2 + strh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #4 + strh r1, [r0, #2] +_0233F808: + add r4, r4, #1 +_0233F80C: + cmp r4, fp + blt _0233F474 + add r8, r8, #1 +_0233F818: + cmp r8, r7 + blt _0233F448 + mov r8, #0 + b _0233F8EC +_0233F828: + ldr r1, _0233F8FC ; =0x000001C2 + ldr r0, [sp, #0xc] + mov sb, #0 + mla sl, r8, r1, r0 + b _0233F8E0 +_0233F83C: + mov r0, #0x1e + mla r5, sb, r0, sl + ldrb r0, [r5, #8] + cmp r0, #0 + ldreqb r0, [r5, #0x11] + cmpeq r0, #0 + ldreqb r0, [r5, #0xb] + cmpeq r0, #0 + ldreqb r0, [r5, #0xf] + cmpeq r0, #0 + bne _0233F8DC + ldrsh r6, [r5] + b _0233F8D0 +_0233F870: + ldrsh r4, [r5, #2] + b _0233F8C0 +_0233F878: + mov r0, r6 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r1, #2 + strh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #1 + strh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #4 + strh r1, [r0, #2] + mov r1, #0xff + strb r1, [r0, #7] +_0233F8C0: + ldrsh r0, [r5, #6] + cmp r4, r0 + blt _0233F878 + add r6, r6, #1 +_0233F8D0: + ldrsh r0, [r5, #4] + cmp r6, r0 + blt _0233F870 +_0233F8DC: + add sb, sb, #1 +_0233F8E0: + cmp sb, fp + blt _0233F83C + add r8, r8, #1 +_0233F8EC: + cmp r8, r7 + blt _0233F828 + add sp, sp, #0x2c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233F8FC: .word 0x000001C2 + arm_func_end EnsureConnectedGrid + + arm_func_start SetTerrainObstacleChecked +SetTerrainObstacleChecked: ; 0x0233F900 + ldrh r3, [r0] + cmp r1, #0 + bic r1, r3, #3 + strh r1, [r0] + bxeq lr + ldrb r1, [r0, #7] + cmp r1, r2 + bxne lr + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] + bx lr + arm_func_end SetTerrainObstacleChecked + + arm_func_start FinalizeJunctions +FinalizeJunctions: ; 0x0233F93C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 +_0233F944: + sub r5, r4, #1 + mov r6, #0 + mov r7, #0xff +_0233F950: + mov r0, r4 + mov r1, r6 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _0233FAFC + mov r0, r4 + mov r1, r6 + bl GetTile + ldrb r0, [r0, #7] + cmp r0, #0xff + bne _0233FAD4 + cmp r4, #0 + ble _0233F9D4 + mov r0, r5 + mov r1, r6 + bl GetTileSafe + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0233F9D4 + ldrh r1, [r0] + orr r2, r1, #8 + and r1, r2, #3 + strh r2, [r0] + cmp r1, #2 + bne _0233F9D4 + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0233F9D4: + cmp r6, #0 + ble _0233FA28 + mov r0, r4 + sub r1, r6, #1 + bl GetTileSafe + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0233FA28 + ldrh r1, [r0] + orr r1, r1, #8 + orr r2, r1, #8 + and r1, r2, #3 + strh r2, [r0] + cmp r1, #2 + bne _0233FA28 + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0233FA28: + cmp r6, #0x1f + bge _0233FA7C + mov r0, r4 + add r1, r6, #1 + bl GetTileSafe + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0233FA7C + ldrh r1, [r0] + orr r1, r1, #8 + orr r2, r1, #8 + and r1, r2, #3 + strh r2, [r0] + cmp r1, #2 + bne _0233FA7C + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] +_0233FA7C: + cmp r4, #0x37 + bge _0233FAFC + mov r1, r6 + add r0, r4, #1 + bl GetTileSafe + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0233FAFC + ldrh r1, [r0] + orr r1, r1, #8 + orr r2, r1, #8 + and r1, r2, #3 + strh r2, [r0] + cmp r1, #2 + bne _0233FAFC + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _0233FAFC +_0233FAD4: + mov r0, r4 + mov r1, r6 + bl GetTile + ldrb r0, [r0, #7] + cmp r0, #0xfe + bne _0233FAFC + mov r0, r4 + mov r1, r6 + bl GetTileSafe + strb r7, [r0, #7] +_0233FAFC: + add r6, r6, #1 + cmp r6, #0x20 + blt _0233F950 + add r4, r4, #1 + cmp r4, #0x38 + blt _0233F944 + bl ov29_0233FB1C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end FinalizeJunctions + + arm_func_start ov29_0233FB1C +ov29_0233FB1C: ; 0x0233FB1C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _0233FBE4 ; =0x02353538 + mov r1, #0 + ldr r6, [r0] + mov r7, r1 +_0233FB30: + add r0, r6, r1, lsl #1 + add r0, r0, #0xf200 + add r1, r1, #1 + strh r7, [r0, #0x68] + cmp r1, #0x20 + blt _0233FB30 +_0233FB48: + mov r0, r7, lsl #0x10 + mov r5, #0 + mov r4, r0, asr #0x10 +_0233FB54: + mov r0, r7 + mov r1, r5 + bl GetTile + ldrh r0, [r0] + tst r0, #8 + beq _0233FBC8 + mov r0, r7 + mov r1, r5 + bl GetTile + ldrb r2, [r0, #7] + cmp r2, #0 + blt _0233FBC8 + cmp r2, #0x20 + addlt r0, r6, r2, lsl #1 + addlt r1, r0, #0xf200 + ldrltsh r0, [r1, #0x68] + cmplt r0, #0x20 + bge _0233FBC8 + add r2, r6, r2, lsl #7 + add r0, r2, r0, lsl #2 + add r0, r0, #0xf200 + strh r4, [r0, #0xa8] + ldrsh r0, [r1, #0x68] + add r0, r2, r0, lsl #2 + add r0, r0, #0xf200 + strh r5, [r0, #0xaa] + ldrsh r0, [r1, #0x68] + add r0, r0, #1 + strh r0, [r1, #0x68] +_0233FBC8: + add r5, r5, #1 + cmp r5, #0x20 + blt _0233FB54 + add r7, r7, #1 + cmp r7, #0x38 + blt _0233FB48 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233FBE4: .word 0x02353538 + arm_func_end ov29_0233FB1C + + arm_func_start GenerateKecleonShop +GenerateKecleonShop: ; 0x0233FBE8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + ldr r5, _0233FF8C ; =0x02353538 + ldr r4, _0233FF90 ; =0x0237CFBC + mvn r7, #0 + ldr r6, [r5] + strh r7, [r4, #0x20] + strh r7, [r4, #0x22] + ldrb r4, [r4, #1] + mov sl, r0 + str r1, [sp] + str r2, [sp, #4] + mov r5, r3 + cmp r4, #0 + bne _0233FF84 + bl GetFloorType + cmp r0, #2 + cmpne r5, #0 + beq _0233FF84 + mov r0, #0x64 + bl DungeonRandInt + cmp r5, r0 + ble _0233FF84 + mov r4, #0 + add r2, sp, #0x26 + add r1, sp, #8 +_0233FC50: + mov r0, r4, lsl #0x10 + mov r3, r4, lsl #1 + mov r0, r0, asr #0x10 + add r4, r4, #1 + strh r0, [r2, r3] + strh r0, [r1, r3] + cmp r4, #0xf + blt _0233FC50 + mov r7, #0xf + mov r8, #0 + mov r5, r7 + add r4, sp, #0x26 +_0233FC80: + mov r0, r7 + bl DungeonRandInt + mov sb, r0 + mov r0, r5 + bl DungeonRandInt + mov r3, sb, lsl #1 + mov r1, r0, lsl #1 + add r8, r8, #1 + ldrsh r2, [r4, r3] + ldrsh r0, [r4, r1] + cmp r8, #0xc8 + strh r0, [r4, r3] + strh r2, [r4, r1] + blt _0233FC80 + mov r7, #0xf + mov r8, #0 + mov r5, r7 + add r4, sp, #8 +_0233FCC8: + mov r0, r7 + bl DungeonRandInt + mov sb, r0 + mov r0, r5 + bl DungeonRandInt + mov r3, sb, lsl #1 + mov r1, r0, lsl #1 + add r8, r8, #1 + ldrsh r2, [r4, r3] + ldrsh r0, [r4, r1] + cmp r8, #0xc8 + strh r0, [r4, r3] + strh r2, [r4, r1] + blt _0233FCC8 + mov r4, #0 + b _0233FF7C +_0233FD08: + add r0, sp, #0x26 + mov r1, r4, lsl #1 + ldrsh r1, [r0, r1] + ldr r0, [sp] + cmp r1, r0 + bge _0233FF78 + ldr r0, _0233FF94 ; =0x000001C2 + mov r5, #0 + mul fp, r1, r0 + add sb, sl, fp + b _0233FF70 +_0233FD34: + mov r1, r5, lsl #1 + add r0, sp, #8 + ldrsh r1, [r0, r1] + ldr r0, [sp, #4] + cmp r1, r0 + bge _0233FF6C + mov r0, #0x1e + mul r7, r1, r0 + add r8, sb, r7 + ldrb r0, [r8, #8] + cmp r0, #0 + ldreqb r0, [r8, #0x11] + cmpeq r0, #0 + ldreqb r0, [r8, #0x12] + cmpeq r0, #0 + bne _0233FF6C + ldrb r0, [r8, #0xb] + cmp r0, #0 + ldrneb r0, [r8, #0xa] + cmpne r0, #0 + beq _0233FF6C + ldrb r0, [r8, #9] + cmp r0, #0 + ldreqb r0, [r8, #0x10] + cmpeq r0, #0 + ldreqb r0, [r8, #0x1d] + cmpeq r0, #0 + bne _0233FF6C + ldrsh r1, [r8, #4] + ldrsh r0, [r8] + sub r0, r1, r0 + bl Abs + cmp r0, #5 + blt _0233FF6C + ldrsh r1, [r8, #6] + ldrsh r0, [r8, #2] + sub r0, r1, r0 + bl Abs + cmp r0, #4 + blt _0233FF6C + ldr r0, _0233FF90 ; =0x0237CFBC + add r1, sl, fp + mov r3, #1 + strb r3, [r0, #3] + add r2, r1, r7 + strb r3, [r2, #0xc] + ldrsh r1, [sb, r7] + add r1, r1, #1 + str r1, [r0, #0x30] + ldrsh r1, [r2, #4] + sub r1, r1, #1 + str r1, [r0, #0x38] + ldrsh r1, [r2, #2] + add r3, r1, #1 + str r3, [r0, #0x34] + ldrsh r1, [r2, #6] + sub r2, r1, #1 + sub r1, r2, r3 + cmp r1, #3 + str r2, [r0, #0x3c] + addlt r1, r2, #1 + strlt r1, [r0, #0x3c] + ldr r1, _0233FF98 ; =0x0000270F + add r0, r6, #0xc000 + str r1, [r0, #0xd14] + str r1, [r0, #0xd18] + rsb r2, r1, #0 + str r2, [r0, #0xd1c] + ldr r1, _0233FF90 ; =0x0237CFBC + str r2, [r0, #0xd20] + ldr r4, [r1, #0x30] + b _0233FED8 +_0233FE54: + ldr sl, _0233FF90 ; =0x0237CFBC + add r8, r6, #0xc000 + ldr r5, [sl, #0x34] + b _0233FEC8 +_0233FE64: + mov r0, r4 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + orr r1, r1, #0x20 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r1, #8 + strh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #1 + strh r1, [r0, #2] + ldr r0, [r8, #0xd14] + cmp r0, r4 + strgt r4, [r8, #0xd14] + ldr r0, [r8, #0xd18] + cmp r0, r5 + strgt r5, [r8, #0xd18] + ldr r0, [r8, #0xd1c] + cmp r0, r4 + strlt r4, [r8, #0xd1c] + ldr r0, [r8, #0xd20] + cmp r0, r5 + strlt r5, [r8, #0xd20] + add r5, r5, #1 +_0233FEC8: + ldr r0, [sl, #0x3c] + cmp r5, r0 + blt _0233FE64 + add r4, r4, #1 +_0233FED8: + ldr r0, _0233FF90 ; =0x0237CFBC + ldr r0, [r0, #0x38] + cmp r4, r0 + blt _0233FE54 + add r4, sb, r7 + ldrsh r5, [sb, r7] + b _0233FF28 +_0233FEF4: + ldrsh r6, [r4, #2] + b _0233FF18 +_0233FEFC: + mov r0, r5 + mov r1, r6 + bl GetTileSafe + ldrh r1, [r0, #2] + add r6, r6, #1 + orr r1, r1, #0x10 + strh r1, [r0, #2] +_0233FF18: + ldrsh r0, [r4, #6] + cmp r6, r0 + blt _0233FEFC + add r5, r5, #1 +_0233FF28: + ldrsh r0, [r4, #4] + cmp r5, r0 + blt _0233FEF4 + ldr r1, _0233FF90 ; =0x0237CFBC + ldr r2, [r1, #0x30] + ldr r0, [r1, #0x38] + add r0, r2, r0 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + strh r0, [r1, #0x20] + ldr r2, [r1, #0x34] + ldr r0, [r1, #0x3c] + add r0, r2, r0 + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + strh r0, [r1, #0x22] + b _0233FF84 +_0233FF6C: + add r5, r5, #1 +_0233FF70: + cmp r5, #0xf + blt _0233FD34 +_0233FF78: + add r4, r4, #1 +_0233FF7C: + cmp r4, #0xf + blt _0233FD08 +_0233FF84: + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0233FF8C: .word 0x02353538 +_0233FF90: .word 0x0237CFBC +_0233FF94: .word 0x000001C2 +_0233FF98: .word 0x0000270F + arm_func_end GenerateKecleonShop + + arm_func_start GenerateMonsterHouse +GenerateMonsterHouse: ; 0x0233FF9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x100 + ldr r4, _02340218 ; =0x02353538 + movs r5, r3 + mov sl, r0 + mov sb, r1 + mov r8, r2 + ldr r6, [r4] + beq _02340210 + mov r0, #0x64 + bl DungeonRandInt + cmp r5, r0 + ble _02340210 + ldr r0, _0234021C ; =0x0237CFBC + ldrb r0, [r0, #3] + cmp r0, #0 + bne _02340210 + bl IsOutlawMonsterHouseFloor + cmp r0, #0 + bne _0233FFF8 + bl IsDestinationFloorWithMonster + cmp r0, #0 + bne _02340210 +_0233FFF8: + bl GetFloorType + cmp r0, #0 + bne _02340210 + mov r5, #0 + mov r2, r5 + mov r1, r5 + b _02340088 +_02340014: + ldr r0, _02340220 ; =0x000001C2 + mov r3, r1 + mla r4, r2, r0, sl + mov r7, #0x1e + b _0234007C +_02340028: + mla r0, r3, r7, r4 + ldrb fp, [r0, #8] + cmp fp, #0 + ldreqb fp, [r0, #0x11] + cmpeq fp, #0 + bne _02340078 + ldrb fp, [r0, #0xb] + cmp fp, #0 + ldrneb fp, [r0, #0xa] + cmpne fp, #0 + beq _02340078 + ldrb fp, [r0, #0xc] + cmp fp, #0 + ldreqb fp, [r0, #0xf] + cmpeq fp, #0 + ldreqb fp, [r0, #0x10] + cmpeq fp, #0 + ldreqb r0, [r0, #9] + cmpeq r0, #0 + addeq r5, r5, #1 +_02340078: + add r3, r3, #1 +_0234007C: + cmp r3, r8 + blt _02340028 + add r2, r2, #1 +_02340088: + cmp r2, sb + blt _02340014 + cmp r5, #0 + beq _02340210 + mov r1, #0 + mov r7, r1 + add r0, sp, #0 +_023400A4: + strb r7, [r0, r1] + add r1, r1, #1 + cmp r1, #0x100 + blt _023400A4 + mov r0, #1 + strb r0, [sp] + add fp, sp, #0 +_023400C0: + mov r0, r5 + bl DungeonRandInt + mov r4, r0 + mov r0, r5 + bl DungeonRandInt + add r7, r7, #1 + ldrb r2, [fp, r4] + ldrb r1, [fp, r0] + cmp r7, #0x40 + strb r1, [fp, r4] + strb r2, [fp, r0] + blt _023400C0 + mov r7, #0 + mov r4, r7 + add fp, sp, #0 + b _02340208 +_02340100: + ldr r0, _02340220 ; =0x000001C2 + mov r5, #0 + mul r3, r4, r0 + add r2, sl, r3 + mov lr, #0x1e + b _023401FC +_02340118: + mul r1, r5, lr + add r0, r2, r1 + ldrb ip, [r0, #8] + cmp ip, #0 + ldreqb ip, [r0, #0x11] + cmpeq ip, #0 + bne _023401F8 + ldrb ip, [r0, #0xb] + cmp ip, #0 + ldrneb ip, [r0, #0xa] + cmpne ip, #0 + beq _023401F8 + ldrb ip, [r0, #0xc] + cmp ip, #0 + ldreqb ip, [r0, #0xf] + cmpeq ip, #0 + ldreqb ip, [r0, #0x10] + cmpeq ip, #0 + ldreqb r0, [r0, #9] + cmpeq r0, #0 + bne _023401F8 + ldrb r0, [fp, r7] + cmp r0, #0 + beq _023401F4 + ldr r0, _0234021C ; =0x0237CFBC + add r2, sl, r3 + mov r3, #1 + strb r3, [r0, #1] + add r7, r2, r1 + strb r3, [r7, #0xe] + ldrsh r5, [r2, r1] + add r6, r6, #0x4000 + b _023401E4 +_0234019C: + ldrsh r4, [r7, #2] + b _023401D4 +_023401A4: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r4 + orr r2, r2, #0x40 + strh r2, [r0] + mov r0, r5 + bl GetTile + ldrb r0, [r0, #7] + add r4, r4, #1 + strb r0, [r6, #0xc9] +_023401D4: + ldrsh r0, [r7, #6] + cmp r4, r0 + blt _023401A4 + add r5, r5, #1 +_023401E4: + ldrsh r0, [r7, #4] + cmp r5, r0 + blt _0234019C + b _02340210 +_023401F4: + add r7, r7, #1 +_023401F8: + add r5, r5, #1 +_023401FC: + cmp r5, r8 + blt _02340118 + add r4, r4, #1 +_02340208: + cmp r4, sb + blt _02340100 +_02340210: + add sp, sp, #0x100 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02340218: .word 0x02353538 +_0234021C: .word 0x0237CFBC +_02340220: .word 0x000001C2 + arm_func_end GenerateMonsterHouse + + arm_func_start GenerateMazeRoom +GenerateMazeRoom: ; 0x02340224 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x100 + ldr r7, _02340450 ; =0x02353538 + movs r8, r3 + mov r6, r0 + mov r5, r1 + mov r4, r2 + ldr r7, [r7] + beq _02340448 + mov r0, #0x64 + bl DungeonRandInt + cmp r8, r0 + ble _02340448 + add r0, r7, #0x4000 + ldrsh r0, [r0, #0xde] + cmp r0, #0 + bge _02340448 + mov sb, #0 + mov r1, sb + b _02340310 +_02340274: + ldr r0, _02340454 ; =0x000001C2 + mov r2, #0 + mla r3, r1, r0, r6 + mov r7, #0x1e + b _02340304 +_02340288: + mla r0, r2, r7, r3 + ldrb r8, [r0, #8] + cmp r8, #0 + ldreqb r8, [r0, #0x11] + cmpeq r8, #0 + bne _02340300 + ldrb r8, [r0, #0xb] + cmp r8, #0 + ldrneb r8, [r0, #0xa] + cmpne r8, #0 + beq _02340300 + ldrb r8, [r0, #0xc] + cmp r8, #0 + ldreqb r8, [r0, #0xf] + cmpeq r8, #0 + ldreqb r8, [r0, #0xe] + cmpeq r8, #0 + ldreqb r8, [r0, #9] + cmpeq r8, #0 + bne _02340300 + ldrsh sl, [r0, #4] + ldrsh r8, [r0] + sub r8, sl, r8 + tst r8, #1 + beq _02340300 + ldrsh r8, [r0, #6] + ldrsh r0, [r0, #2] + sub r0, r8, r0 + tst r0, #1 + addne sb, sb, #1 +_02340300: + add r2, r2, #1 +_02340304: + cmp r2, r4 + blt _02340288 + add r1, r1, #1 +_02340310: + cmp r1, r5 + blt _02340274 + cmp sb, #0 + beq _02340448 + mov r1, #0 + mov sl, r1 + add r0, sp, #0 +_0234032C: + strb sl, [r0, r1] + add r1, r1, #1 + cmp r1, #0x100 + blt _0234032C + mov r0, #1 + strb r0, [sp] + add r7, sp, #0 +_02340348: + mov r0, sb + bl DungeonRandInt + mov r8, r0 + mov r0, sb + bl DungeonRandInt + add sl, sl, #1 + ldrb r2, [r7, r8] + ldrb r1, [r7, r0] + cmp sl, #0x40 + strb r1, [r7, r8] + strb r2, [r7, r0] + blt _02340348 + mov r7, #0 + mov r2, r7 + b _02340440 +_02340384: + ldr r0, _02340454 ; =0x000001C2 + mov r3, #0 + mla r1, r2, r0, r6 + add sl, sp, #0 + mov r8, #0x1e + b _02340434 +_0234039C: + mla r0, r3, r8, r1 + ldrb sb, [r0, #8] + cmp sb, #0 + ldreqb sb, [r0, #0x11] + cmpeq sb, #0 + bne _02340430 + ldrb sb, [r0, #0xb] + cmp sb, #0 + ldrneb sb, [r0, #0xa] + cmpne sb, #0 + beq _02340430 + ldrb sb, [r0, #0xc] + cmp sb, #0 + ldreqb sb, [r0, #0xf] + cmpeq sb, #0 + ldreqb sb, [r0, #0xe] + cmpeq sb, #0 + ldreqb sb, [r0, #9] + cmpeq sb, #0 + bne _02340430 + ldrsh ip, [r0, #4] + ldrsh sb, [r0] + sub sb, ip, sb + tst sb, #1 + beq _02340430 + ldrsh ip, [r0, #6] + ldrsh sb, [r0, #2] + sub sb, ip, sb + tst sb, #1 + beq _02340430 + ldrb sb, [sl, r7] + cmp sb, #0 + beq _0234042C + mov r1, #0 + bl GenerateMaze + b _02340448 +_0234042C: + add r7, r7, #1 +_02340430: + add r3, r3, #1 +_02340434: + cmp r3, r4 + blt _0234039C + add r2, r2, #1 +_02340440: + cmp r2, r5 + blt _02340384 +_02340448: + add sp, sp, #0x100 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02340450: .word 0x02353538 +_02340454: .word 0x000001C2 + arm_func_end GenerateMazeRoom + + arm_func_start GenerateMaze +GenerateMaze: ; 0x02340458 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + ldr r2, _023406D0 ; =0x0237CFBC + mov r3, #1 + mov r5, r0 + strb r3, [r2, #7] + strb r3, [r5, #0x10] + mov r4, r1 + ldrsh r0, [r5] + ldrsh r1, [r5, #2] + bl GetTile + ldrsh r1, [r5] + ldrb r7, [r0, #7] + add r6, r1, #1 + b _023404DC +_02340494: + ldrsh r1, [r5, #2] + mov r0, r6 + sub r1, r1, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _023404D8 + ldrsh r3, [r5, #2] + ldrsh r2, [r5, #4] + mov r0, r6 + sub r1, r3, #1 + str r2, [sp] + ldrsh r2, [r5, #6] + stmib sp, {r2, r4, r7} + ldrsh r2, [r5] + bl GenerateMazeLine +_023404D8: + add r6, r6, #2 +_023404DC: + ldrsh r0, [r5, #4] + sub r0, r0, #1 + cmp r6, r0 + blt _02340494 + ldrsh r0, [r5, #2] + add r6, r0, #1 + b _02340538 +_023404F8: + ldrsh r0, [r5, #4] + mov r1, r6 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _02340534 + ldrsh r0, [r5, #4] + mov r1, r6 + str r0, [sp] + ldrsh r2, [r5, #6] + stmib sp, {r2, r4, r7} + ldrsh r2, [r5] + ldrsh r3, [r5, #2] + bl GenerateMazeLine +_02340534: + add r6, r6, #2 +_02340538: + ldrsh r0, [r5, #6] + sub r0, r0, #1 + cmp r6, r0 + blt _023404F8 + ldrsh r0, [r5] + add r6, r0, #1 + b _02340594 +_02340554: + ldrsh r1, [r5, #6] + mov r0, r6 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _02340590 + ldrsh r1, [r5, #6] + ldrsh r2, [r5, #4] + mov r0, r6 + str r2, [sp] + stmib sp, {r1, r4, r7} + ldrsh r2, [r5] + ldrsh r3, [r5, #2] + bl GenerateMazeLine +_02340590: + add r6, r6, #2 +_02340594: + ldrsh r0, [r5, #4] + sub r0, r0, #1 + cmp r6, r0 + blt _02340554 + ldrsh r0, [r5, #2] + add r6, r0, #1 + b _023405F8 +_023405B0: + ldrsh r0, [r5] + mov r1, r6 + sub r0, r0, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _023405F4 + ldrsh r2, [r5] + ldrsh r3, [r5, #4] + mov r1, r6 + sub r0, r2, #1 + str r3, [sp] + ldrsh r3, [r5, #6] + stmib sp, {r3, r4, r7} + ldrsh r3, [r5, #2] + bl GenerateMazeLine +_023405F4: + add r6, r6, #2 +_023405F8: + ldrsh r0, [r5, #6] + sub r0, r0, #1 + cmp r6, r0 + blt _023405B0 + ldrsh r0, [r5] + add r8, r0, #3 + b _023406B8 +_02340614: + ldrsh r0, [r5, #2] + sub r6, r8, #1 + add sb, r0, #3 + b _023406A4 +_02340624: + mov r0, r8 + mov r1, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _023406A0 + cmp r4, #0 + mov r0, r6 + mov r1, sb + beq _0234066C + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + b _02340678 +_0234066C: + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 +_02340678: + strh r1, [r0] + ldrsh r2, [r5, #4] + mov r0, r8 + mov r1, sb + str r2, [sp] + ldrsh r2, [r5, #6] + stmib sp, {r2, r4, r7} + ldrsh r2, [r5] + ldrsh r3, [r5, #2] + bl GenerateMazeLine +_023406A0: + add sb, sb, #2 +_023406A4: + ldrsh r0, [r5, #6] + sub r0, r0, #3 + cmp sb, r0 + blt _02340624 + add r8, r8, #2 +_023406B8: + ldrsh r0, [r5, #4] + sub r0, r0, #3 + cmp r8, r0 + blt _02340614 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023406D0: .word 0x0237CFBC + arm_func_end GenerateMaze + + arm_func_start GenerateMazeLine +GenerateMazeLine: ; 0x023406D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + ldr r4, [sp, #0x34] + ldr fp, [sp, #0x30] + ldr r7, [sp, #0x38] + ldr r6, [sp, #0x3c] + str r4, [sp, #0x34] + mov sb, r0 + mov r8, r1 + str r2, [sp] + str r3, [sp, #4] +_02340700: + mov r0, #4 + bl DungeonRandInt + mov r4, r0 + mov r0, sb + mov r1, r8 + mov sl, #0 + bl GetTileSafe + mov r1, r7 + and r2, r6, #0xff + bl SetTerrainObstacleChecked + mvn r0, #1 + str r0, [sp, #8] +_02340730: + and r5, r4, #3 + cmp r5, #3 + addls pc, pc, r5, lsl #2 + b _02340774 +_02340740: ; jump table + b _02340750 ; case 0 + b _0234075C ; case 1 + b _02340768 ; case 2 + b _02340774 ; case 3 +_02340750: + mov r0, #2 + mov r2, #0 + b _0234077C +_0234075C: + mov r0, #0 + ldr r2, [sp, #8] + b _0234077C +_02340768: + ldr r0, [sp, #8] + mov r2, #0 + b _0234077C +_02340774: + mov r0, #0 + mov r2, #2 +_0234077C: + ldr r1, [sp] + add r0, sb, r0 + cmp r1, r0 + bgt _023407C4 + cmp fp, r0 + ble _023407C4 + add r1, r8, r2 + ldr r2, [sp, #4] + cmp r2, r1 + bgt _023407C4 + ldr r2, [sp, #0x34] + cmp r2, r1 + ble _023407C4 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + beq _023407D8 +_023407C4: + add r4, r4, #1 + add sl, sl, #1 + cmp sl, #4 + blt _02340730 + b _02340874 +_023407D8: + cmp r5, #3 + addls pc, pc, r5, lsl #2 + b _02340700 +_023407E4: ; jump table + b _023407F4 ; case 0 + b _02340814 ; case 1 + b _02340834 ; case 2 + b _02340854 ; case 3 +_023407F4: + mov r1, r8 + add r0, sb, #1 + bl GetTileSafe + mov r1, r7 + and r2, r6, #0xff + bl SetTerrainObstacleChecked + add sb, sb, #2 + b _02340700 +_02340814: + mov r0, sb + sub r1, r8, #1 + bl GetTileSafe + mov r1, r7 + and r2, r6, #0xff + bl SetTerrainObstacleChecked + sub r8, r8, #2 + b _02340700 +_02340834: + mov r1, r8 + sub r0, sb, #1 + bl GetTileSafe + mov r1, r7 + and r2, r6, #0xff + bl SetTerrainObstacleChecked + sub sb, sb, #2 + b _02340700 +_02340854: + mov r0, sb + add r1, r8, #1 + bl GetTileSafe + mov r1, r7 + and r2, r6, #0xff + bl SetTerrainObstacleChecked + add r8, r8, #2 + b _02340700 +_02340874: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end GenerateMazeLine + + arm_func_start SetSpawnFlag5 +SetSpawnFlag5: ; 0x0234087C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrsh r5, [r6] + b _023408C0 +_0234088C: + ldrsh r4, [r6, #2] + b _023408B0 +_02340894: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0, #2] + add r4, r4, #1 + orr r1, r1, #0x20 + strh r1, [r0, #2] +_023408B0: + ldrsh r0, [r6, #6] + cmp r4, r0 + blt _02340894 + add r5, r5, #1 +_023408C0: + ldrsh r0, [r6, #4] + cmp r5, r0 + blt _0234088C + ldmia sp!, {r4, r5, r6, pc} + arm_func_end SetSpawnFlag5 + + arm_func_start IsNextToHallway +IsNextToHallway: ; 0x023408D0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mvn r5, #0 + mov sl, r0 + mov sb, r1 + mov r4, r5 + b _02340964 +_023408E8: + adds r8, sl, r5 + bmi _02340960 + cmp r8, #0x38 + bge _0234096C + mov r6, r4 + b _02340958 +_02340900: + adds r7, sb, r6 + bmi _02340954 + cmp r7, #0x20 + bge _02340960 + cmp r5, #0 + cmpne r6, #0 + bne _02340954 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #1 + bne _02340954 + mov r0, r8 + mov r1, r7 + bl GetTile + ldrb r0, [r0, #7] + cmp r0, #0xff + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02340954: + add r6, r6, #1 +_02340958: + cmp r6, #1 + ble _02340900 +_02340960: + add r5, r5, #1 +_02340964: + cmp r5, #1 + ble _023408E8 +_0234096C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end IsNextToHallway + + arm_func_start ResolveInvalidSpawns +ResolveInvalidSpawns: ; 0x02340974 + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 +_0234097C: + mov r4, #0 +_02340980: + mov r0, r5 + mov r1, r4 + bl GetTileSafe + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #1 + beq _023409BC + ldrh r1, [r0] + tst r1, #0x110 + ldrneh r1, [r0, #2] + bicne r1, r1, #2 + strneh r1, [r0, #2] + ldrh r1, [r0, #2] + bic r1, r1, #4 + strh r1, [r0, #2] +_023409BC: + ldrh r1, [r0, #2] + tst r1, #1 + beq _023409E0 + ldrh r1, [r0] + orr r1, r1, #0x200 + strh r1, [r0] + ldrh r1, [r0, #2] + bic r1, r1, #4 + strh r1, [r0, #2] +_023409E0: + ldrh r1, [r0, #2] + add r4, r4, #1 + tst r1, #2 + bicne r1, r1, #4 + strneh r1, [r0, #2] + cmp r4, #0x20 + blt _02340980 + add r5, r5, #1 + cmp r5, #0x38 + blt _0234097C + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ResolveInvalidSpawns + + arm_func_start ConvertSecondaryTerrainToChasms +ConvertSecondaryTerrainToChasms: ; 0x02340A0C + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_02340A18: + mov r5, r4 +_02340A1C: + mov r0, r6 + mov r1, r5 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + bne _02340A5C + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #3 + strh r1, [r0] +_02340A5C: + add r5, r5, #1 + cmp r5, #0x20 + blt _02340A1C + add r6, r6, #1 + cmp r6, #0x38 + blt _02340A18 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ConvertSecondaryTerrainToChasms + + arm_func_start EnsureImpassableTilesAreWalls +EnsureImpassableTilesAreWalls: ; 0x02340A78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_02340A84: + mov r5, r4 +_02340A88: + mov r0, r6 + mov r1, r5 + bl GetTile + ldrh r0, [r0] + tst r0, #0x10 + beq _02340AB8 + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] +_02340AB8: + add r5, r5, #1 + cmp r5, #0x20 + blt _02340A88 + add r6, r6, #1 + cmp r6, #0x38 + blt _02340A84 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end EnsureImpassableTilesAreWalls + + arm_func_start InitializeTile +InitializeTile: ; 0x02340AD4 + mov r2, #0 + strh r2, [r0] + strh r2, [r0, #2] + mov r1, #0xff + strb r1, [r0, #7] + strh r2, [r0, #4] + strb r2, [r0, #8] + strb r2, [r0, #9] + strb r2, [r0, #0xa] + strb r2, [r0, #0xb] + strb r2, [r0, #6] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + arm_func_end InitializeTile + + arm_func_start ResetFloor +ResetFloor: ; 0x02340B0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r6, #0 + mov r4, r6 +_02340B18: + mov r5, r4 + sub r7, r6, #1 +_02340B20: + mov r0, r6 + mov r1, r5 + bl GetTileSafe + bl InitializeTile + sub r8, r5, #1 + mov r0, r6 + mov r1, r8 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r1, r8 + add r0, r6, #1 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r1, r8 + add r0, r6, #1 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + add r0, r6, #1 + add r1, r5, #1 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r0, r6 + add r1, r5, #1 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r0, r7 + add r1, r5, #1 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r0, r7 + mov r1, r5 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02340BD4 + mov r0, r7 + mov r1, r8 + bl PosIsOutOfBounds + cmp r0, #0 + beq _02340BEC +_02340BD4: + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + orr r1, r1, #0x10 + strh r1, [r0] +_02340BEC: + add r5, r5, #1 + cmp r5, #0x20 + blt _02340B20 + add r6, r6, #1 + cmp r6, #0x38 + blt _02340B18 + ldr r6, _02340CA8 ; =0x02353538 + mov sb, #0 + ldr r0, [r6] + mvn r1, #0 + add r0, r0, #0xcc00 + strh r1, [r0, #0xe4] + ldr r0, [r6] + mov r7, sb + add r0, r0, #0xcc00 + strh r1, [r0, #0xe6] + mov r4, #0x14 + mov r5, #0xa0 +_02340C34: + mul r8, sb, r5 + mov sl, r7 +_02340C3C: + ldr r0, [r6] + add r0, r0, #0xd60 + add r0, r0, #0xc000 + add r0, r0, r8 + mla r0, sl, r4, r0 + bl InitializeTile + add sl, sl, #1 + cmp sl, #8 + blt _02340C3C + add sb, sb, #1 + cmp sb, #8 + blt _02340C34 + ldr r1, _02340CA8 ; =0x02353538 + mov r3, #0 + ldr r0, [r1] + mov r2, r3 + add r0, r0, #0x3f00 + strh r3, [r0, #0xc0] +_02340C84: + ldr r0, [r1] + add r0, r0, r3, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xcc8] + add r3, r3, #1 + str r2, [r0] + cmp r3, #0x40 + blt _02340C84 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02340CA8: .word 0x02353538 + arm_func_end ResetFloor + + arm_func_start PosIsOutOfBounds +PosIsOutOfBounds: ; 0x02340CAC + cmp r0, #0 + movlt r0, #1 + bxlt lr + cmp r1, #0 + movlt r0, #1 + bxlt lr + cmp r0, #0x38 + movge r0, #1 + bxge lr + cmp r1, #0x20 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end PosIsOutOfBounds + + arm_func_start ShuffleSpawnPositions +ShuffleSpawnPositions: ; 0x02340CE4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, #0 + b _02340D40 +_02340CF8: + mov r0, r6 + bl DungeonRandInt + mov r4, r0 + mov r0, r6 + bl DungeonRandInt + add lr, r7, r4, lsl #1 + ldrb ip, [r7, r4, lsl #1] + ldrb r3, [lr, #1] + ldrb r1, [r7, r0, lsl #1] + add r2, r7, r0, lsl #1 + strb ip, [sp] + strb r1, [r7, r4, lsl #1] + ldrb r1, [r2, #1] + strb r3, [sp, #1] + add r5, r5, #1 + strb r1, [lr, #1] + strb ip, [r7, r0, lsl #1] + strb r3, [r2, #1] +_02340D40: + cmp r5, r6, lsl #1 + blt _02340CF8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ShuffleSpawnPositions + + arm_func_start SpawnNonEnemies +SpawnNonEnemies: ; 0x02340D4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xe00 + ldr r3, _02341458 ; =0x02353538 + mov sl, r0 + ldr r5, [r3] + mvn r2, #0 + add r0, r5, #0xcc00 + ldrsh r3, [r0, #0xe4] + mov sb, r1 + cmp r3, r2 + ldrnesh r0, [r0, #0xe6] + cmpne r0, r2 + bne _02340EC8 + mov r6, #0 + mov r8, r6 + add fp, sp, #0 +_02340D8C: + mov r7, #0 + and r4, r8, #0xff +_02340D94: + mov r0, r8 + mov r1, r7 + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _02340DF4 + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _02340DF4 + tst r2, #0x20 + bne _02340DF4 + ldrh r0, [r0, #2] + tst r0, #8 + bne _02340DF4 + tst r0, #0x10 + bne _02340DF4 + tst r2, #8 + bne _02340DF4 + tst r2, #0x100 + streqb r4, [fp, r6, lsl #1] + addeq r0, fp, r6, lsl #1 + streqb r7, [r0, #1] + addeq r6, r6, #1 +_02340DF4: + add r7, r7, #1 + cmp r7, #0x20 + blt _02340D94 + add r8, r8, #1 + cmp r8, #0x38 + blt _02340D8C + cmp r6, #0 + beq _02340EC8 + mov r0, r6 + bl DungeonRandInt + add r1, r5, #0xc4 + add r2, sp, #0 + mov r4, r0 + add r0, r2, r4, lsl #1 + add r1, r1, #0x4000 + mov r2, #0 + bl SpawnStairs + ldr r0, _0234145C ; =0x0237CFBC + ldr r0, [r0, #0x2c] + cmp r0, #0 + beq _02340EC8 + sub r0, r6, #1 + add r3, sp, #0 + b _02340E6C +_02340E54: + add r2, r3, r4, lsl #1 + ldrb r1, [r2, #2] + strb r1, [r3, r4, lsl #1] + ldrb r1, [r2, #3] + add r4, r4, #1 + strb r1, [r2, #1] +_02340E6C: + cmp r4, r0 + blt _02340E54 + ldr r0, _02341458 ; =0x02353538 + ldr r1, _0234145C ; =0x0237CFBC + ldr r2, [r0] + ldr r4, [r1, #0x2c] + add r0, r2, #0x2c000 + ldrb r1, [r2, #0x749] + ldrb r0, [r0, #0xaf4] + add r1, r1, #1 + cmp r1, r0 + bge _02340EC8 + mov r0, #3 + bl DungeonRngSetSecondary + sub r0, r6, #1 + bl DungeonRandInt + add r3, sp, #0 + add r1, r5, #0xc4 + mov r2, r4 + add r0, r3, r0, lsl #1 + add r1, r1, #0x4000 + bl SpawnStairs + bl DungeonRngSetPrimary +_02340EC8: + mov r6, #0 + mov r7, r6 + add fp, sp, #0 +_02340ED4: + mov r8, #0 + and r4, r7, #0xff +_02340EDC: + mov r0, r7 + mov r1, r8 + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _02340F30 + ldrb r0, [r0, #7] + cmp r0, #0xff + beq _02340F30 + tst r2, #0x20 + bne _02340F30 + tst r2, #0x40 + bne _02340F30 + tst r2, #8 + bne _02340F30 + tst r2, #0x100 + streqb r4, [fp, r6, lsl #1] + addeq r0, fp, r6, lsl #1 + streqb r8, [r0, #1] + addeq r6, r6, #1 +_02340F30: + add r8, r8, #1 + cmp r8, #0x20 + blt _02340EDC + add r7, r7, #1 + cmp r7, #0x38 + blt _02340ED4 + cmp r6, #0 + beq _02340FFC + ldrb r4, [sl, #0xf] + cmp r4, #0 + beq _02340F74 + sub r0, r4, #2 + add r1, r4, #2 + bl DungeonRandRange + mov r4, r0 + cmp r4, #1 + movlt r4, #1 +_02340F74: + ldr r1, _02341458 ; =0x02353538 + ldr r0, _02341460 ; =0x0002C9E8 + ldr r2, [r1] + ldrsh r0, [r2, r0] + cmp r0, #0 + addne r4, r4, #1 + add r1, r4, #1 + ldr r0, _02341464 ; =0x00012AFA + cmp r1, #0 + strh r1, [r2, r0] + ble _02340FFC + add r0, sp, #0 + mov r1, r6 + bl ShuffleSpawnPositions + mov r0, r6 + bl DungeonRandInt + mov r8, r0 + mov r7, #0 + add r4, r4, #1 + add fp, sp, #0 + b _02340FF4 +_02340FC8: + add r1, fp, r8, lsl #1 + ldrb r0, [fp, r8, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + ldrh r1, [r0, #2] + add r8, r8, #1 + cmp r8, r6 + orr r1, r1, #2 + strh r1, [r0, #2] + moveq r8, #0 + add r7, r7, #1 +_02340FF4: + cmp r7, r4 + blt _02340FC8 +_02340FFC: + mov r6, #0 + mov r7, r6 + add fp, sp, #0 +_02341008: + mov r8, #0 + and r4, r7, #0xff +_02341010: + mov r0, r7 + mov r1, r8 + bl GetTile + ldrh r0, [r0] + tst r0, #3 + streqb r4, [fp, r6, lsl #1] + addeq r0, fp, r6, lsl #1 + streqb r8, [r0, #1] + add r8, r8, #1 + addeq r6, r6, #1 + cmp r8, #0x20 + blt _02341010 + add r7, r7, #1 + cmp r7, #0x38 + blt _02341008 + cmp r6, #0 + beq _023410D0 + ldrb r7, [sl, #0x14] + cmp r7, #0 + beq _02341070 + sub r0, r7, #2 + add r1, r7, #2 + bl DungeonRandRange + mov r7, r0 +_02341070: + cmp r7, #0 + ble _023410D0 + add r0, sp, #0 + mov r1, r6 + bl ShuffleSpawnPositions + mov r0, r6 + bl DungeonRandInt + mov r4, r0 + mov r8, #0 + add fp, sp, #0 + b _023410C8 +_0234109C: + add r1, fp, r4, lsl #1 + ldrb r0, [fp, r4, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + ldrh r1, [r0, #2] + add r4, r4, #1 + cmp r4, r6 + orr r1, r1, #2 + strh r1, [r0, #2] + moveq r4, #0 + add r8, r8, #1 +_023410C8: + cmp r8, r7 + blt _0234109C +_023410D0: + cmp sb, #0 + mov r6, #0 + bne _0234113C + mov r8, r6 + add r4, sp, #0 + mov fp, r6 +_023410E8: + mov sb, fp + and r7, r8, #0xff +_023410F0: + mov r0, r8 + mov r1, sb + bl GetTile + ldrh r0, [r0] + tst r0, #0x20 + bne _02341124 + tst r0, #0x40 + beq _02341124 + tst r0, #8 + streqb r7, [r4, r6, lsl #1] + addeq r0, r4, r6, lsl #1 + streqb sb, [r0, #1] + addeq r6, r6, #1 +_02341124: + add sb, sb, #1 + cmp sb, #0x20 + blt _023410F0 + add r8, r8, #1 + cmp r8, #0x38 + blt _023410E8 +_0234113C: + cmp r6, #0 + beq _02341228 + add r0, r6, r6, lsl #2 + mov r1, #0xa + bl DivideInt + mov r4, r0 + mov r0, r6, lsl #3 + mov r1, #0xa + bl DivideInt + mov r1, r0 + mov r0, r4 + bl DungeonRandRange + mov r8, r0 + ldr r0, _02341468 ; =0x022C44AC + cmp r8, #6 + ldrsh r0, [r0] + movlt r8, #6 + mov r1, r6 + cmp r8, r0 + movge r8, r0 + add r0, sp, #0 + bl ShuffleSpawnPositions + mov r0, r6 + bl DungeonRandInt + ldr r1, _0234146C ; =0x022C440C + mov r7, r0 + ldrb fp, [r1] + mov sb, #0 + b _02341220 +_023411B0: + add r0, sp, #0 + add r1, r0, r7, lsl #1 + ldrb r0, [r0, r7, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + mov r4, r0 + mov r0, #2 + bl DungeonRandInt + cmp r0, #0 + ldrneh r0, [r4, #2] + orrne r0, r0, #2 + strneh r0, [r4, #2] + bne _02341210 + ldr r0, _02341458 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x75c] + cmp r0, #0 + bne _02341204 + ldrb r0, [r1, #0x748] + cmp r0, fp + blo _02341210 +_02341204: + ldrh r0, [r4, #2] + orr r0, r0, #4 + strh r0, [r4, #2] +_02341210: + add r7, r7, #1 + cmp r7, r6 + moveq r7, #0 + add sb, sb, #1 +_02341220: + cmp sb, r8 + blt _023411B0 +_02341228: + mov r7, #0 + mov r8, r7 + add r4, sp, #0 + mov fp, r7 +_02341238: + mov sb, fp + and r6, r8, #0xff +_02341240: + mov r0, r8 + mov r1, sb + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _02341298 + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _02341298 + tst r2, #0x20 + bne _02341298 + ldrh r0, [r0, #2] + tst r0, #2 + bne _02341298 + tst r2, #8 + bne _02341298 + tst r2, #0x100 + streqb r6, [r4, r7, lsl #1] + addeq r0, r4, r7, lsl #1 + streqb sb, [r0, #1] + addeq r7, r7, #1 +_02341298: + add sb, sb, #1 + cmp sb, #0x20 + blt _02341240 + add r8, r8, #1 + cmp r8, #0x38 + blt _02341238 + cmp r7, #0 + beq _02341334 + ldrb r1, [sl, #0x10] + mov r0, r1, lsr #1 + bl DungeonRandRange + mov r8, r0 + cmp r8, #0 + ble _02341334 + add r0, sp, #0 + cmp r8, #0x38 + mov r1, r7 + movge r8, #0x38 + bl ShuffleSpawnPositions + mov r0, r7 + bl DungeonRandInt + mov sb, #0 + mov r6, r0 + mov sl, sb + add r4, sp, #0 + b _0234132C +_02341300: + add r1, r4, r6, lsl #1 + ldrb r0, [r4, r6, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + ldrh r1, [r0, #2] + add r6, r6, #1 + cmp r6, r7 + orr r1, r1, #4 + strh r1, [r0, #2] + moveq r6, sl + add sb, sb, #1 +_0234132C: + cmp sb, r8 + blt _02341300 +_02341334: + bl GetFloorType + cmp r0, #2 + add r0, r5, #0xcc00 + moveq r3, #1 + movne r3, #0 + ldrsh r2, [r0, #0xe0] + mvn r1, #0 + and r7, r3, #0xff + cmp r2, r1 + ldrnesh r0, [r0, #0xe2] + cmpne r0, r1 + bne _02341450 + mov r8, #0 + mov sb, r8 +_0234136C: + mov sl, #0 + and r6, sb, #0xff + add r4, r5, #0x4000 + add fp, sp, #0 +_0234137C: + mov r0, sb + mov r1, sl + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _0234140C + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0234140C + tst r2, #0x20 + bne _0234140C + tst r2, #8 + bne _0234140C + tst r2, #0x100 + bne _0234140C + ldrh r0, [r0, #2] + tst r0, #2 + bne _0234140C + tst r0, #8 + bne _0234140C + tst r0, #4 + bne _0234140C + cmp r7, #0 + beq _023413E8 + tst r0, #1 + bne _0234140C +_023413E8: + ldr r0, _0234145C ; =0x0237CFBC + ldrb r0, [r0, #8] + cmp r0, #0 + ldrneb r0, [r4, #0xc9] + cmpne r0, r1 + streqb r6, [fp, r8, lsl #1] + addeq r0, fp, r8, lsl #1 + streqb sl, [r0, #1] + addeq r8, r8, #1 +_0234140C: + add sl, sl, #1 + cmp sl, #0x20 + blt _0234137C + add sb, sb, #1 + cmp sb, #0x38 + blt _0234136C + cmp r8, #0 + beq _02341450 + mov r0, r8 + bl DungeonRandInt + add r2, sp, #0 + ldrb r3, [r2, r0, lsl #1] + add r1, r5, #0xcc00 + add r2, sp, #1 + strh r3, [r1, #0xe0] + ldrb r0, [r2, r0, lsl #1] + strh r0, [r1, #0xe2] +_02341450: + add sp, sp, #0xe00 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02341458: .word 0x02353538 +_0234145C: .word 0x0237CFBC +_02341460: .word 0x0002C9E8 +_02341464: .word 0x00012AFA +_02341468: .word 0x022C44AC +_0234146C: .word 0x022C440C + arm_func_end SpawnNonEnemies + + arm_func_start SpawnEnemies +SpawnEnemies: ; 0x02341470 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x204 + sub sp, sp, #0xc00 + str r1, [sp] + ldrb r1, [r0, #6] + ldr r0, _02341760 ; =0x02353538 + cmp r1, #1 + ldr sb, [r0] + blt _023414B0 + add r0, r1, r1, lsr #31 + mov r0, r0, asr #1 + bl DungeonRandRange + mov r8, r0 + cmp r8, #1 + movlt r8, #1 + b _023414BC +_023414B0: + mov r0, r1 + bl Abs + mov r8, r0 +_023414BC: + mov r6, #0 + mov sl, r6 +_023414C4: + mov r7, #0 + and r5, sl, #0xff + add r4, sb, #0xcc00 + add fp, sb, #0x4000 +_023414D4: + mov r0, sl + mov r1, r7 + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _0234156C + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _0234156C + tst r2, #0x20 + bne _0234156C + ldrh r0, [r0, #2] + tst r0, #2 + bne _0234156C + tst r0, #1 + bne _0234156C + tst r2, #8 + bne _0234156C + tst r2, #0x100 + bne _0234156C + ldrsh r0, [r4, #0xe0] + cmp sl, r0 + ldreqsh r0, [r4, #0xe2] + cmpeq r7, r0 + beq _0234156C + ldr r0, _02341764 ; =0x0237CFBC + ldrb r0, [r0, #8] + cmp r0, #0 + beq _02341558 + ldrb r0, [fp, #0xc9] + cmp r0, r1 + beq _0234156C +_02341558: + add r0, sp, #4 + strb r5, [r0, r6, lsl #1] + add r0, r0, r6, lsl #1 + strb r7, [r0, #1] + add r6, r6, #1 +_0234156C: + add r7, r7, #1 + cmp r7, #0x20 + blt _023414D4 + add sl, sl, #1 + cmp sl, #0x38 + blt _023414C4 + cmp r6, #0 + beq _023415F4 + adds r0, r8, #1 + beq _023415F4 + add r0, sp, #4 + mov r1, r6 + bl ShuffleSpawnPositions + mov r0, r6 + bl DungeonRandInt + mov r5, #0 + mov r7, r0 + add r8, r8, #1 + mov sl, r5 + add r4, sp, #4 + b _023415EC +_023415C0: + add r1, r4, r7, lsl #1 + ldrb r0, [r4, r7, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + ldrh r1, [r0, #2] + add r7, r7, #1 + cmp r7, r6 + orr r1, r1, #8 + strh r1, [r0, #2] + moveq r7, sl + add r5, r5, #1 +_023415EC: + cmp r5, r8 + blt _023415C0 +_023415F4: + add r0, sb, #0x4000 + ldrb r2, [r0, #0xc4] + cmp r2, #0 + beq _02341754 + ldr r1, _02341768 ; =0x022C4660 + ldr r0, [sp] + ldrsh r6, [r1] + cmp r0, #0 + mov r7, #0 + movne r6, #3 + cmp r2, #0 + addne r0, r6, r6, lsl #1 + addne r0, r0, r0, lsr #31 + movne r6, r0, asr #1 + mov r8, #0 + add fp, sp, #4 +_02341634: + mov sl, #0 + and r5, r8, #0xff + add r4, sb, #0xcc00 +_02341640: + mov r0, r8 + mov r1, sl + bl GetTile + ldrh r2, [r0] + and r1, r2, #3 + cmp r1, #1 + bne _023416A0 + ldrb r0, [r0, #7] + cmp r0, #0xff + beq _023416A0 + tst r2, #0x20 + bne _023416A0 + tst r2, #0x100 + bne _023416A0 + tst r2, #0x40 + beq _023416A0 + ldrsh r0, [r4, #0xe0] + cmp r8, r0 + ldreqsh r0, [r4, #0xe2] + cmpeq sl, r0 + strneb r5, [fp, r7, lsl #1] + addne r0, fp, r7, lsl #1 + strneb sl, [r0, #1] + addne r7, r7, #1 +_023416A0: + add sl, sl, #1 + cmp sl, #0x20 + blt _02341640 + add r8, r8, #1 + cmp r8, #0x38 + blt _02341634 + cmp r7, #0 + beq _02341754 + rsb r0, r7, r7, lsl #3 + mov r1, #0xa + bl DivideInt + mov r4, r0 + mov r0, r7, lsl #3 + mov r1, #0xa + bl DivideInt + mov r1, r0 + mov r0, r4 + bl DungeonRandRange + movs r5, r0 + moveq r5, #1 + cmp r5, r6 + add r0, sp, #4 + mov r1, r7 + movge r5, r6 + bl ShuffleSpawnPositions + mov r0, r7 + bl DungeonRandInt + mov r8, #0 + mov r6, r0 + mov sb, r8 + add r4, sp, #4 + b _0234174C +_02341720: + add r1, r4, r6, lsl #1 + ldrb r0, [r4, r6, lsl #1] + ldrb r1, [r1, #1] + bl GetTileSafe + ldrh r1, [r0, #2] + add r6, r6, #1 + cmp r6, r7 + orr r1, r1, #8 + strh r1, [r0, #2] + moveq r6, sb + add r8, r8, #1 +_0234174C: + cmp r8, r5 + blt _02341720 +_02341754: + add sp, sp, #0x204 + add sp, sp, #0xc00 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02341760: .word 0x02353538 +_02341764: .word 0x0237CFBC +_02341768: .word 0x022C4660 + arm_func_end SpawnEnemies + + arm_func_start SetSecondaryTerrainOnWall +SetSecondaryTerrainOnWall: ; 0x0234176C + ldrh r1, [r0] + mov r2, #1 + tst r1, #3 + ldrh r1, [r0] + movne r2, #0 + tst r1, #0x10 + movne r2, #0 + cmp r2, #0 + bxeq lr + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #2 + strh r1, [r0] + bx lr + arm_func_end SetSecondaryTerrainOnWall + + arm_func_start GenerateSecondaryTerrainFormations +GenerateSecondaryTerrainFormations: ; 0x023417AC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x90 + str r1, [sp] + ldrb r1, [r1, #0xd] + tst r1, r0 + beq _02341E60 + mov r0, #8 + bl DungeonRandInt + ldr r1, _02341E68 ; =0x02353030 + ldr r0, [r1, r0, lsl #2] + str r0, [sp, #0x28] + b _02341C20 +_023417DC: + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + movge r6, #0 + movge r0, #1 + strge r6, [sp, #0x18] + strge r0, [sp, #0x1c] + bge _02341810 + mov r6, #0x1f + sub r0, r6, #0x20 + str r0, [sp, #0x1c] + mov r0, #1 + str r0, [sp, #0x18] +_02341810: + mov r0, #0x32 + bl DungeonRandInt + add r0, r0, #0xa + str r0, [sp, #0x14] + mov r0, #2 + mov r1, #0x36 + bl DungeonRandRange + mov r5, r0 + mov r0, #0 + str r0, [sp, #0x20] + mvn r4, #2 +_0234183C: + mov r0, #6 + bl DungeonRandInt + add r0, r0, #2 + str r0, [sp, #0x24] + b _02341BA4 +_02341850: + cmp r5, #0 + blt _023418A0 + cmp r5, #0x38 + bge _023418A0 + mov r0, r5 + mov r1, r6 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341C14 + mov r0, r5 + mov r1, r6 + bl PosIsOutOfBounds + cmp r0, #0 + bne _023418A0 + mov r0, r5 + mov r1, r6 + bl GetTileSafe + bl SetSecondaryTerrainOnWall +_023418A0: + ldr r0, [sp, #0x24] + sub r0, r0, #1 + str r0, [sp, #0x24] + ldr r0, [sp, #0x20] + add r5, r5, r0 + ldr r0, [sp, #0x1c] + adds r6, r6, r0 + bmi _02341BB0 + cmp r6, #0x20 + bge _02341BB0 + ldr r0, [sp, #0x14] + subs r0, r0, #1 + str r0, [sp, #0x14] + bne _02341BA4 + mov fp, #0 +_023418DC: + mov r0, #7 + bl DungeonRandInt + sub r7, r0, #3 + mov r0, #7 + bl DungeonRandInt + add sb, r7, r5 + sub r8, r0, #3 + cmp sb, #2 + blt _02341A2C + cmp sb, #0x36 + bge _02341A2C + add sl, r8, r6 + cmp sl, #2 + blt _02341A2C + cmp sl, #0x1e + bge _02341A2C + add r0, sb, #1 + add r1, sl, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + add r0, sb, #1 + mov r1, sl + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + sub r0, sl, #1 + str r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r0, sb, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + mov r0, sb + add r1, sl, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + ldr r1, [sp, #0xc] + mov r0, sb + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + sub r0, sb, #1 + add r1, sl, #1 + str r0, [sp, #8] + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + ldr r0, [sp, #8] + mov r1, sl + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + beq _02341A08 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + bne _02341A2C +_02341A08: + add r0, r5, r7 + add r1, r6, r8 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02341A2C + mov r0, sb + mov r1, sl + bl GetTileSafe + bl SetSecondaryTerrainOnWall +_02341A2C: + add fp, fp, #1 + cmp fp, #0x40 + blt _023418DC + mov fp, r4 +_02341A3C: + add sb, fp, r5 + sub r0, sb, #1 + mov r7, r4 + str r0, [sp, #0x10] +_02341A4C: + cmp sb, #2 + mov r8, #0 + blt _02341B8C + cmp sb, #0x36 + bge _02341B8C + add sl, r7, r6 + cmp sl, #2 + blt _02341B8C + cmp sl, #0x1e + bge _02341B8C + add r0, sb, #1 + add r1, sl, #1 + bl GetTile + ldrh r0, [r0] + mov r1, sl + and r0, r0, #3 + cmp r0, #2 + moveq r0, r8 + addeq r8, r0, #1 + add r0, sb, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + sub r0, sl, #1 + str r0, [sp, #4] + ldr r1, [sp, #4] + add r0, sb, #1 + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + add r1, sl, #1 + and r0, r0, #3 + cmp r0, #2 + mov r0, sb + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + ldr r1, [sp, #4] + and r0, r0, #3 + cmp r0, #2 + mov r0, sb + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + add r1, sl, #1 + and r0, r0, #3 + cmp r0, #2 + ldr r0, [sp, #0x10] + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + mov r1, sl + and r0, r0, #3 + cmp r0, #2 + ldr r0, [sp, #0x10] + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + ldr r1, [sp, #4] + and r0, r0, #3 + cmp r0, #2 + ldr r0, [sp, #0x10] + addeq r8, r8, #1 + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #2 + addeq r8, r8, #1 + cmp r8, #4 + blt _02341B8C + mov r0, sb + add r1, r6, r7 + bl PosIsOutOfBounds + cmp r0, #0 + bne _02341B8C + mov r1, sl + mov r0, sb + bl GetTileSafe + bl SetSecondaryTerrainOnWall +_02341B8C: + add r7, r7, #1 + cmp r7, #3 + ble _02341A4C + add fp, fp, #1 + cmp fp, #3 + ble _02341A3C +_02341BA4: + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _02341850 +_02341BB0: + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _02341BE0 + ldr r0, [sp, #0x18] + cmp r0, #0 + addne r0, r4, #2 + strne r0, [sp, #0x1c] + moveq r0, #1 + streq r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + b _02341C04 +_02341BE0: + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + addlt r0, r4, #2 + strlt r0, [sp, #0x20] + movge r0, #1 + strge r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x1c] +_02341C04: + cmp r6, #0 + blt _02341C14 + cmp r6, #0x20 + blt _0234183C +_02341C14: + ldr r0, [sp, #0x28] + sub r0, r0, #1 + str r0, [sp, #0x28] +_02341C20: + ldr r0, [sp, #0x28] + cmp r0, #0 + bne _023417DC + mov r4, #0 + b _02341DB0 +_02341C34: + mov r6, #0 + mov r5, r6 + mov sl, r6 + mov sb, r6 + mov r8, #0x38 + mov r7, r6 + mov fp, #0x20 + b _02341C98 +_02341C54: + mov r0, sb + mov r1, r8 + bl DungeonRandRange + mov r5, r0 + mov r0, r7 + mov r1, fp + bl DungeonRandRange + mov r6, r0 + cmp r5, #1 + blt _02341C94 + cmp r5, #0x37 + bge _02341C94 + cmp r6, #1 + blt _02341C94 + cmp r6, #0x1f + blt _02341CA0 +_02341C94: + add sl, sl, #1 +_02341C98: + cmp sl, #0xc8 + blt _02341C54 +_02341CA0: + cmp sl, #0xc8 + beq _02341DAC + mov r8, #0 + mov r1, r8 + mov r2, #1 + mov r7, r8 + add r3, sp, #0x2c + mov r0, #0xa +_02341CC0: + mla sl, r8, r0, r3 + mov sb, r7 +_02341CC8: + cmp r8, #0 + cmpne r8, #9 + cmpne sb, #0 + cmpne sb, #9 + streqb r2, [sl, sb] + strneb r1, [sl, sb] + add sb, sb, #1 + cmp sb, #0xa + blt _02341CC8 + add r8, r8, #1 + cmp r8, #0xa + blt _02341CC0 + mov sb, #0 + mov r7, #1 + add r8, sp, #0x2c + mov fp, #0xa +_02341D08: + mov r0, #8 + bl DungeonRandInt + add sl, r0, #1 + mov r0, #8 + bl DungeonRandInt + mla r1, sl, fp, r8 + add r0, r0, #1 + add r1, r1, r0 + ldrb r0, [r1, #-0xa] + add sb, sb, #1 + cmp r0, #0 + ldreqb r0, [r1, #0xa] + cmpeq r0, #0 + ldreqb r0, [r1, #-1] + cmpeq r0, #0 + ldreqb r0, [r1, #1] + cmpeq r0, #0 + strneb r7, [r1] + cmp sb, #0x50 + blt _02341D08 + mov sb, #0 + add fp, sp, #0x2c +_02341D60: + mov r0, #0xa + mla r7, sb, r0, fp + add r0, sb, r5 + mov sl, #0 + sub r8, r0, #5 +_02341D74: + ldrb r0, [r7, sl] + cmp r0, #0 + bne _02341D94 + add r1, sl, r6 + mov r0, r8 + sub r1, r1, #5 + bl GetTileSafe + bl SetSecondaryTerrainOnWall +_02341D94: + add sl, sl, #1 + cmp sl, #0xa + blt _02341D74 + add sb, sb, #1 + cmp sb, #0xa + blt _02341D60 +_02341DAC: + add r4, r4, #1 +_02341DB0: + ldr r0, [sp] + ldrb r0, [r0, #0x15] + cmp r4, r0 + blt _02341C34 + mov r6, #0 + mov r4, r6 +_02341DC8: + mov r5, r4 +_02341DCC: + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + and r1, r1, #3 + cmp r1, #2 + bne _02341E48 + ldrh r1, [r0] + tst r1, #0x160 + bne _02341E00 + ldrh r1, [r0, #2] + tst r1, #1 + beq _02341E1C +_02341E00: + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] + ldrh r1, [r0] + orr r1, r1, #1 + strh r1, [r0] + b _02341E48 +_02341E1C: + cmp r6, #1 + ble _02341E3C + cmp r6, #0x37 + bge _02341E3C + cmp r5, #1 + ble _02341E3C + cmp r5, #0x1f + blt _02341E48 +_02341E3C: + ldrh r1, [r0] + bic r1, r1, #3 + strh r1, [r0] +_02341E48: + add r5, r5, #1 + cmp r5, #0x20 + blt _02341DCC + add r6, r6, #1 + cmp r6, #0x38 + blt _02341DC8 +_02341E60: + add sp, sp, #0x90 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02341E68: .word 0x02353030 + arm_func_end GenerateSecondaryTerrainFormations + + arm_func_start StairsAlwaysReachable +StairsAlwaysReachable: ; 0x02341E6C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x700 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, #0 +_02341E84: + mov sl, #0 + add r0, sp, #0 + mov r8, sl + add sb, r0, r4, lsl #5 +_02341E94: + mov r0, r4 + mov r1, sl + bl GetTileSafe + ldrh r1, [r0] + cmp r5, #0 + strb r8, [sb, sl] + ldrneh r2, [r0] + and r1, r1, #3 + bicne r2, r2, #0x8000 + strneh r2, [r0] + cmp r1, #1 + beq _02341ED8 + ldrh r2, [r0] + tst r2, #4 + ldreqb r2, [sb, sl] + orreq r2, r2, #1 + streqb r2, [sb, sl] +_02341ED8: + cmp r1, #2 + bne _02341EF4 + ldrh r0, [r0] + tst r0, #4 + ldreqb r0, [sb, sl] + orreq r0, r0, #2 + streqb r0, [sb, sl] +_02341EF4: + add sl, sl, #1 + cmp sl, #0x20 + blt _02341E94 + add r4, r4, #1 + cmp r4, #0x38 + blt _02341E84 + add r1, sp, #0 + ldr r0, _02342174 ; =0x02353538 + add r2, r1, r7, lsl #5 + ldrb r1, [r2, r6] + ldr r0, [r0] + orr r1, r1, #0x50 + add r0, r0, #0xcc00 + strb r1, [r2, r6] + ldrsh r1, [r0, #0xe4] + cmp r1, r7 + ldreqsh r0, [r0, #0xe6] + cmpeq r0, r6 + movne r0, #0 + bne _0234216C + ldr r0, _02342178 ; =0x0237CFBC + mov r4, #0 + str r4, [r0, #0x24] +_02341F50: + mov r3, #0 + mov r7, r3 + add r4, r4, #1 + add r0, sp, #0 + mov r2, r3 +_02341F64: + mov r8, r2 + add r1, r0, r7, lsl #5 +_02341F6C: + ldrb sb, [r1, r8] + add r6, r1, r8 + tst sb, #0x80 + bne _023420D0 + tst sb, #0x40 + beq _023420D0 + bic sl, sb, #0x40 + and sb, sl, #0xff + orr sb, sb, #0x80 + strb sb, [r6] + cmp r7, #0 + add r3, r3, #1 + ble _02341FB0 + ldrb sb, [r6, #-0x20] + tst sb, #0x83 + orreq sb, sb, #0x40 + streqb sb, [r6, #-0x20] +_02341FB0: + cmp r8, #0 + ble _02341FC8 + ldrb sb, [r6, #-1] + tst sb, #0x83 + orreq sb, sb, #0x40 + streqb sb, [r6, #-1] +_02341FC8: + cmp r7, #0x37 + bge _02341FE0 + ldrb sb, [r6, #0x20] + tst sb, #0x83 + orreq sb, sb, #0x40 + streqb sb, [r6, #0x20] +_02341FE0: + cmp r8, #0x1f + bge _02341FF8 + ldrb sb, [r6, #1] + tst sb, #0x83 + orreq sb, sb, #0x40 + streqb sb, [r6, #1] +_02341FF8: + cmp r7, #0 + cmpgt r8, #0 + ble _0234202C + ldrb sl, [r6, #-0x21] + tst sl, #0x87 + bne _0234202C + ldrb sb, [r6, #-0x20] + tst sb, #1 + bne _0234202C + ldrb sb, [r6, #-1] + tst sb, #1 + orreq sb, sl, #0x40 + streqb sb, [r6, #-0x21] +_0234202C: + cmp r7, #0x37 + bge _02342064 + cmp r8, #0 + ble _02342064 + ldrb sl, [r6, #0x1f] + tst sl, #0x87 + bne _02342064 + ldrb sb, [r6, #0x20] + tst sb, #1 + bne _02342064 + ldrb sb, [r6, #-1] + tst sb, #1 + orreq sb, sl, #0x40 + streqb sb, [r6, #0x1f] +_02342064: + cmp r7, #0 + ble _0234209C + cmp r8, #0x1f + bge _0234209C + ldrb sl, [r6, #-0x1f] + tst sl, #0x87 + bne _0234209C + ldrb sb, [r6, #-0x20] + tst sb, #1 + bne _0234209C + ldrb sb, [r6, #1] + tst sb, #1 + orreq sb, sl, #0x40 + streqb sb, [r6, #-0x1f] +_0234209C: + cmp r7, #0x37 + cmplt r8, #0x1f + bge _023420D0 + ldrb sl, [r6, #0x21] + tst sl, #0x87 + bne _023420D0 + ldrb sb, [r6, #0x20] + tst sb, #1 + bne _023420D0 + ldrb sb, [r6, #1] + tst sb, #1 + orreq sb, sl, #0x40 + streqb sb, [r6, #0x21] +_023420D0: + add r8, r8, #1 + cmp r8, #0x20 + blt _02341F6C + add r7, r7, #1 + cmp r7, #0x38 + blt _02341F64 + cmp r3, #0 + bne _02341F50 + ldr r0, _02342178 ; =0x0237CFBC + mov r8, #0 + str r4, [r0, #0x24] + add r6, sp, #0 + mov r7, r8 + b _02342160 +_02342108: + mov sb, r7 + add r4, r6, r8, lsl #5 + b _02342154 +_02342114: + mov r0, r8 + mov r1, sb + bl GetTileSafe + ldrb r1, [sb, r4] + tst r1, #0x87 + bne _02342150 + cmp r5, #0 + ldrneh r1, [r0] + orrne r1, r1, #0x8000 + strneh r1, [r0] + bne _02342150 + ldrh r0, [r0] + tst r0, #0x100 + moveq r0, #0 + beq _0234216C +_02342150: + add sb, sb, #1 +_02342154: + cmp sb, #0x20 + blt _02342114 + add r8, r8, #1 +_02342160: + cmp r8, #0x38 + blt _02342108 + mov r0, #1 +_0234216C: + add sp, sp, #0x700 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02342174: .word 0x02353538 +_02342178: .word 0x0237CFBC + arm_func_end StairsAlwaysReachable + + arm_func_start ov29_0234217C +ov29_0234217C: ; 0x0234217C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x30 + mov r4, #0 + str r0, [sp] + mov r0, r4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x58] + str r4, [sp, #0x1c] + str r0, [sp, #0x58] + ldr r0, [sp, #0x5c] + str r1, [sp, #4] + str r0, [sp, #0x5c] + ldr r0, [sp, #0x60] + str r2, [sp, #8] + str r0, [sp, #0x60] + ldr r0, [sp, #0x64] + str r3, [sp, #0xc] + str r0, [sp, #0x64] + b _023424B8 +_023421C8: + ldr r0, [sp] + mov r1, #0x1e + mla r8, r4, r1, r0 + ldr r0, [sp, #0x58] + mov sl, #0 + add r0, r0, r4, lsl #2 + str r0, [sp, #0x20] + ldr r0, [sp, #4] + sub r0, r0, #1 + str r0, [sp, #0x28] + ldr r0, [sp, #8] + sub r0, r0, #1 + str r0, [sp, #0x2c] + b _023424A8 +_02342200: + ldr r0, [sp, #4] + cmp r0, #2 + ldr r0, [sp, #0xc] + ldr r2, [r0, sl, lsl #2] + ldr r0, [sp, #0x58] + add sb, r2, #2 + ldr r3, [r0, r4, lsl #2] + ldr r0, [sp, #0xc] + add r5, r3, #2 + add r0, r0, sl, lsl #2 + ldr r1, [r0, #4] + ldr r0, [sp, #0x20] + sub r2, r1, r2 + ldr r0, [r0, #4] + sub r1, r0, r3 + sub r0, r2, #4 + str r0, [sp, #0x14] + sub fp, r1, #4 + movle r1, #0xe + strle r1, [sp, #0x14] + mov r0, #5 + mov r7, r0 + ldr r1, [sp, #8] + movle r0, #0xa + cmp r1, #1 + ldr r1, _023424CC ; =0x000001C2 + moveq r7, #0x10 + mla r1, sl, r1, r8 + str r1, [sp, #0x10] + ldrb r1, [r1, #0xa] + moveq fp, #0x18 + cmp r1, #0 + beq _023423D8 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x5c] + cmp r2, r1 + beq _0234231C + ldr r1, [sp, #0x14] + bl DungeonRandRange + mov r6, r0 + mov r0, r7 + mov r1, fp + bl DungeonRandRange + mov r7, r0 + ldr r0, [sp, #0x14] + orr r1, r6, #1 + cmp r1, r0 + orr r0, r7, #1 + movlt r6, r1 + cmp r0, fp + movlt r7, r0 + add r0, r7, r7, lsl #1 + add r0, r0, r0, lsr #31 + cmp r6, r0, asr #1 + mov r0, r0, asr #1 + movgt r6, r0 + add r0, r6, r6, lsl #1 + add r0, r0, r0, lsr #31 + cmp r7, r0, asr #1 + mov r0, r0, asr #1 + movgt r7, r0 + ldr r0, [sp, #0x14] + sub r0, r0, r6 + bl DungeonRandInt + add sb, sb, r0 + sub r0, fp, r7 + bl DungeonRandInt + add r5, r5, r0 + add fp, sb, r6 + add r6, r5, r7 + b _0234232C +_0234231C: + ldr r0, [sp, #0x60] + add fp, sb, r0 + ldr r0, [sp, #0x64] + add r6, r5, r0 +_0234232C: + ldr r0, _023424CC ; =0x000001C2 + mul r0, sl, r0 + strh sb, [r8, r0] + add r0, r8, r0 + strh fp, [r0, #4] + strh r5, [r0, #2] + strh r6, [r0, #6] + ldr r0, [sp, #0x1c] + and r0, r0, #0xff + str r0, [sp, #0x24] + b _023423A8 +_02342358: + mov r7, r5 + b _0234239C +_02342360: + mov r0, sb + mov r1, r7 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r7 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, sb + bl GetTileSafe + ldr r1, [sp, #0x24] + add r7, r7, #1 + strb r1, [r0, #7] +_0234239C: + cmp r7, r6 + blt _02342360 + add sb, sb, #1 +_023423A8: + cmp sb, fp + blt _02342358 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x5c] + cmp r1, r0 + ldrne r0, [sp, #0x10] + movne r1, #1 + strneb r1, [r0, #0x1d] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _02342498 +_023423D8: + mov r2, #2 + ldr r0, [sp, #0x28] + mov r7, r2 + cmp sl, #0 + moveq r2, #1 + cmp r4, #0 + moveq r7, #1 + cmp sl, r0 + mov r1, #4 + mov r6, r1 + ldr r0, [sp, #0x2c] + moveq r1, #2 + cmp r4, r0 + add r0, sb, r2 + ldr r2, [sp, #0x14] + moveq r6, #2 + add r2, sb, r2 + sub r1, r2, r1 + bl DungeonRandRange + add r1, r5, fp + sub r1, r1, r6 + mov r6, r0 + add r0, r5, r7 + bl DungeonRandRange + mov r5, r0 + ldr r0, _023424CC ; =0x000001C2 + mul r0, sl, r0 + strh r6, [r8, r0] + add r1, r8, r0 + add r0, r6, #1 + strh r0, [r1, #4] + strh r5, [r1, #2] + add r0, r5, #1 + strh r0, [r1, #6] + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r2, [r0] + mov r1, r5 + bic r2, r2, #3 + strh r2, [r0] + ldrh r2, [r0] + orr r2, r2, #1 + strh r2, [r0] + mov r0, r6 + bl GetTileSafe + mov r1, #0xff + strb r1, [r0, #7] +_02342498: + ldr r0, [sp, #0x18] + add sl, sl, #1 + add r0, r0, #1 + str r0, [sp, #0x18] +_023424A8: + ldr r0, [sp, #4] + cmp sl, r0 + blt _02342200 + add r4, r4, #1 +_023424B8: + ldr r0, [sp, #8] + cmp r4, r0 + blt _023421C8 + add sp, sp, #0x30 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023424CC: .word 0x000001C2 + arm_func_end ov29_0234217C + + arm_func_start ov29_023424D0 +ov29_023424D0: ; 0x023424D0 + ldr r1, _02342510 ; =0x0237CFBC + ldrh r0, [r1, #0xa] + cmp r0, #0 + subne r0, r0, #1 + bne _02342504 + ldr r0, _02342514 ; =0x0235378C + ldr ip, [r0, #4] + ldrh r3, [ip] + add r2, ip, #2 + add r2, r2, #2 + strh r3, [r1, #0xe] + str r2, [r0, #4] + ldrh r0, [ip, #2] +_02342504: + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xe] + bx lr + .align 2, 0 +_02342510: .word 0x0237CFBC +_02342514: .word 0x0235378C + arm_func_end ov29_023424D0 + + arm_func_start ov29_02342518 +ov29_02342518: ; 0x02342518 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldrh r4, [r0] + ldrb ip, [sp, #0x10] + mov lr, #0 + orr r4, r4, #0x100 + strh r4, [r0] + strb lr, [r0, #6] + str ip, [sp] + bl ov29_02342F30 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ov29_02342518 + + arm_func_start ConvertWallsToChasms +ConvertWallsToChasms: ; 0x02342548 + stmdb sp!, {r4, r5, r6, lr} + mov r6, #0 + mov r4, r6 +_02342554: + mov r5, r4 +_02342558: + mov r0, r5 + mov r1, r6 + bl GetTileSafe + ldrh r1, [r0] + add r5, r5, #1 + tst r1, #3 + ldreqh r1, [r0] + orreq r1, r1, #3 + streqh r1, [r0] + cmp r5, #0x38 + blt _02342558 + add r6, r6, #1 + cmp r6, #0x20 + blt _02342554 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ConvertWallsToChasms + + arm_func_start ov29_02342594 +ov29_02342594: ; 0x02342594 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + ldr r2, _023427D8 ; =0x02353538 + ldr r4, _023427DC ; =0x0235378C + ldr sb, [r2] + ldr r3, _023427E0 ; =0x0237CFBC + add r2, sb, #0x12000 + ldr r5, [r2, #0xaa4] + mov r6, #0 + ldr r5, [r5, r1, lsl #2] + mov sl, r0 + add r0, r5, #6 + str r0, [r4, #4] + strh r6, [r3, #0xa] + ldr r0, [r2, #0xaa4] + ldr r0, [r0, r1, lsl #2] + ldrh r0, [r0, #4] + tst r0, #1 + beq _0234274C + ldrsh r1, [sl] + add r0, sb, #0xc000 + str r1, [r0, #0xd24] + ldrsh r1, [sl, #2] + str r1, [r0, #0xd28] + ldrsh r1, [sl, #4] + str r1, [r0, #0xd2c] + ldrsh r1, [sl, #6] + str r1, [r0, #0xd30] + ldrsh r8, [sl, #2] + b _0234273C +_0234260C: + mov r0, #0x14 + mul r0, r6, r0 + str r0, [sp, #4] + add r0, sb, r0 + str r0, [sp, #8] + add r0, sb, r6, lsl #1 + add r1, sb, #0xd60 + str r0, [sp, #0xc] + add r0, r1, #0xc000 + str r0, [sp, #0x10] + add r0, sb, #0xd000 + ldrsh r4, [sl] + mov r5, #0 + str r0, [sp, #0x14] + b _02342728 +_02342648: + bl ov29_023424D0 + mov fp, r0 + mov r0, r4 + mov r1, r8 + bl GetTileSafe + mov r7, r0 + ldr r0, [sp, #0xc] + mov r1, fp + add r0, r0, r5, lsl #4 + add r0, r0, #0xd200 + strh fp, [r0, #0x60] + mov r0, #0 + str r0, [sp] + mov r0, #0xa0 + mul fp, r5, r0 + ldr r0, [sp, #0x10] + mov r3, r8 + add r2, r0, fp + ldr r0, [sp, #4] + add r0, r2, r0 + mov r2, r4 + bl ov29_02342518 + ldr r0, [sp, #8] + ldrb ip, [r7, #7] + add r0, r0, fp + add r0, r0, #0xd60 + add fp, r0, #0xc000 + ldmia fp!, {r0, r1, r2, r3} + mov lr, r7 + stmia lr!, {r0, r1, r2, r3} + ldr r0, [fp] + str r0, [lr] + ldrsh r0, [sl] + add r0, r0, #2 + cmp r4, r0 + blt _02342714 + ldrsh r0, [sl, #4] + sub r0, r0, #2 + cmp r4, r0 + bge _02342714 + ldrsh r0, [sl, #2] + add r0, r0, #2 + cmp r8, r0 + blt _02342714 + ldrsh r0, [sl, #6] + sub r0, r0, #2 + cmp r8, r0 + movlt r0, #0x110 + strlth r0, [r7] + movlt r0, #0xe + strltb r0, [r7, #6] +_02342714: + ldr r0, [sp, #0x14] + strb ip, [r7, #7] + strb ip, [r0, #0x2e0] + add r5, r5, #1 + add r4, r4, #1 +_02342728: + ldrsh r0, [sl, #4] + cmp r4, r0 + blt _02342648 + add r6, r6, #1 + add r8, r8, #1 +_0234273C: + ldrsh r0, [sl, #6] + cmp r8, r0 + blt _0234260C + b _023427D0 +_0234274C: + ldrsh r8, [sl, #2] + add r4, sb, #0xd000 + mov r5, r6 + mov fp, #1 + b _023427C4 +_02342760: + ldrsh sb, [sl] + b _023427B4 +_02342768: + bl ov29_023424D0 + mov r6, r0 + mov r0, sb + mov r1, r8 + bl GetTileSafe + mov r1, r6 + mov r6, r0 + ldrb r7, [r6, #7] + ldrh ip, [r6] + mov r2, sb + mov r3, r8 + orr ip, ip, #0x100 + strh ip, [r6] + strb r5, [r6, #6] + str fp, [sp] + bl ov29_02342F30 + strb r7, [r6, #7] + strb r7, [r4, #0x2e0] + add sb, sb, #1 +_023427B4: + ldrsh r0, [sl, #4] + cmp sb, r0 + blt _02342768 + add r8, r8, #1 +_023427C4: + ldrsh r0, [sl, #6] + cmp r8, r0 + blt _02342760 +_023427D0: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023427D8: .word 0x02353538 +_023427DC: .word 0x0235378C +_023427E0: .word 0x0237CFBC + arm_func_end ov29_02342594 + + arm_func_start ov29_023427E4 +ov29_023427E4: ; 0x023427E4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r6, #3 + str r0, [sp] + mov r7, r6 + mov r5, #0 + mov sb, r6 + mov r4, r6 + ldr r8, _02342B74 ; =0x0237CFBC + b _0234283C +_0234280C: + ldr r2, [r8, #0x38] + ldr r1, [r8, #0x30] + mov r0, r4 + sub r1, r2, r1 + sub r1, r1, #2 + bl DungeonRandRange + mov r6, r0 + cmp r6, #3 + movlt r6, sb + cmp r6, #3 + bge _02342844 + add r5, r5, #1 +_0234283C: + cmp r5, #0x14 + blt _0234280C +_02342844: + mov sb, #3 + mov r5, #0 + mov r4, sb + ldr r8, _02342B74 ; =0x0237CFBC + b _02342888 +_02342858: + ldr r2, [r8, #0x3c] + ldr r1, [r8, #0x34] + mov r0, r4 + sub r1, r2, r1 + sub r1, r1, #2 + bl DungeonRandRange + mov r7, r0 + cmp r7, #3 + movlt r7, sb + cmp r7, #3 + bge _02342890 + add r5, r5, #1 +_02342888: + cmp r5, #0x14 + blt _02342858 +_02342890: + mov r0, #2 + mov r1, #4 + bl DungeonRandRange + mov r5, r0 + mov r4, #0 + b _0234295C +_023428A8: + ldr r0, _02342B74 ; =0x0237CFBC + ldr r1, [r0, #0x38] + ldr r0, [r0, #0x30] + sub r0, r1, r0 + cmp r0, r6 + ble _02342964 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + bge _02342918 + ldr sb, _02342B74 ; =0x0237CFBC + ldr r8, [sb, #0x34] + b _023428F8 +_023428DC: + ldr r0, [sb, #0x30] + mov r1, r8 + bl GetTileSafe + ldrh r1, [r0] + add r8, r8, #1 + bic r1, r1, #0x20 + strh r1, [r0] +_023428F8: + ldr r0, [sb, #0x3c] + cmp r8, r0 + blt _023428DC + ldr r0, _02342B74 ; =0x0237CFBC + ldr r1, [r0, #0x30] + add r1, r1, #1 + str r1, [r0, #0x30] + b _02342958 +_02342918: + ldr sb, _02342B74 ; =0x0237CFBC + ldr r0, [sb, #0x38] + sub r0, r0, #1 + str r0, [sb, #0x38] + ldr r8, [sb, #0x34] + b _0234294C +_02342930: + ldr r0, [sb, #0x38] + mov r1, r8 + bl GetTileSafe + ldrh r1, [r0] + add r8, r8, #1 + bic r1, r1, #0x20 + strh r1, [r0] +_0234294C: + ldr r0, [sb, #0x3c] + cmp r8, r0 + blt _02342930 +_02342958: + add r4, r4, #1 +_0234295C: + cmp r4, r5 + blt _023428A8 +_02342964: + mov r6, #0 + b _02342A20 +_0234296C: + ldr r0, _02342B74 ; =0x0237CFBC + ldr r1, [r0, #0x3c] + ldr r0, [r0, #0x34] + sub r0, r1, r0 + cmp r0, r7 + ble _02342A28 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + bge _023429DC + ldr r8, _02342B74 ; =0x0237CFBC + ldr r4, [r8, #0x30] + b _023429BC +_023429A0: + ldr r1, [r8, #0x34] + mov r0, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #0x20 + strh r1, [r0] +_023429BC: + ldr r0, [r8, #0x38] + cmp r4, r0 + blt _023429A0 + ldr r0, _02342B74 ; =0x0237CFBC + ldr r1, [r0, #0x34] + add r1, r1, #1 + str r1, [r0, #0x34] + b _02342A1C +_023429DC: + ldr r8, _02342B74 ; =0x0237CFBC + ldr r0, [r8, #0x3c] + sub r0, r0, #1 + str r0, [r8, #0x3c] + ldr r4, [r8, #0x30] + b _02342A10 +_023429F4: + ldr r1, [r8, #0x3c] + mov r0, r4 + bl GetTileSafe + ldrh r1, [r0] + add r4, r4, #1 + bic r1, r1, #0x20 + strh r1, [r0] +_02342A10: + ldr r0, [r8, #0x38] + cmp r4, r0 + blt _023429F4 +_02342A1C: + add r6, r6, #1 +_02342A20: + cmp r6, r5 + blt _0234296C +_02342A28: + ldr r4, _02342B74 ; =0x0237CFBC + ldr r6, [r4, #0x30] + b _02342A74 +_02342A34: + ldr r5, [r4, #0x34] + b _02342A64 +_02342A3C: + mov r0, r6 + mov r1, r5 + bl GetTileSafe + ldrh r1, [r0] + tst r1, #0x20 + beq _02342A60 + tst r1, #8 + bicne r1, r1, #0x20 + strneh r1, [r0] +_02342A60: + add r5, r5, #1 +_02342A64: + ldr r0, [r4, #0x3c] + cmp r5, r0 + blt _02342A3C + add r6, r6, #1 +_02342A74: + ldr r3, [r4, #0x38] + cmp r6, r3 + blt _02342A34 + ldr r0, _02342B74 ; =0x0237CFBC + mov r7, #0 + ldr r1, [r0, #0x30] + ldr r2, [r0, #0x34] + add r3, r1, r3 + ldr r1, [r0, #0x3c] + add r0, r3, r3, lsr #31 + mov r0, r0, asr #1 + sub r6, r0, #1 + add r0, r2, r1 + add r0, r0, r0, lsr #31 + mov r1, r0, asr #1 + add r0, r6, #3 + cmp r6, r0 + sub r0, r1, #1 + mov sb, r6 + str r0, [sp, #4] + bge _02342B6C +_02342AC8: + ldr r0, [sp, #4] + mov r8, #0 + add r5, r0, #3 + mov sl, r0 + cmp r0, r5 + bge _02342B58 + ldr r0, _02342B78 ; =0x022C52EC + add fp, r0, r7, lsl #1 +_02342AE8: + mov r0, sb + mov r1, sl + bl GetTileSafe + mov r4, r0 + ldrh r0, [r4] + tst r0, #0x20 + beq _02342B48 + tst r0, #0x40 + bne _02342B48 + tst r0, #8 + bne _02342B48 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, [sp] + mov r2, #6 + mul r3, r8, r2 + ldrb r1, [r1, #0x18] + mov r2, #0x12 + mla r2, r1, r2, fp + ldrsh r1, [r3, r2] + cmp r1, r0 + ldrgth r0, [r4, #2] + orrgt r0, r0, #2 + strgth r0, [r4, #2] +_02342B48: + add sl, sl, #1 + cmp sl, r5 + add r8, r8, #1 + blt _02342AE8 +_02342B58: + add sb, sb, #1 + add r0, r6, #3 + cmp sb, r0 + add r7, r7, #1 + blt _02342AC8 +_02342B6C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02342B74: .word 0x0237CFBC +_02342B78: .word 0x022C52EC + arm_func_end ov29_023427E4 + + arm_func_start ResetInnerBoundaryTileRows +ResetInnerBoundaryTileRows: ; 0x02342B7C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r5, #0x1e + mov r6, #1 +_02342B8C: + mov r0, r4 + mov r1, r6 + bl GetTileSafe + mov r7, r0 + bl InitializeTile + cmp r4, #0 + cmpne r4, #0x37 + ldreqh r0, [r7] + mov r1, r5 + orreq r0, r0, #0x10 + streqh r0, [r7] + mov r0, r4 + bl GetTileSafe + mov r7, r0 + bl InitializeTile + cmp r4, #0 + cmpne r4, #0x37 + ldreqh r0, [r7] + add r4, r4, #1 + orreq r0, r0, #0x10 + streqh r0, [r7] + cmp r4, #0x38 + blt _02342B8C + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ResetInnerBoundaryTileRows + + arm_func_start ov29_02342BEC +ov29_02342BEC: ; 0x02342BEC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldrh r5, [r0] + ldrh r6, [r0, #2] + add r4, r0, #6 + mov r0, r5, lsl #1 + mul r0, r6, r0 + ldr r3, _02342C60 ; =0x0235378C + ldr r2, _02342C64 ; =0x0237CFBC + mov r1, #0 + str r4, [r3, #4] + strh r1, [r2, #0xa] + bl MemAlloc + mov r7, r0 + mov r8, #0 + mov sl, r7 + mov r4, r8 + b _02342C50 +_02342C30: + mov sb, r4 + b _02342C44 +_02342C38: + bl ov29_023424D0 + strh r0, [sl], #2 + add sb, sb, #1 +_02342C44: + cmp sb, r5 + blt _02342C38 + add r8, r8, #1 +_02342C50: + cmp r8, r6 + blt _02342C30 + mov r0, r7 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02342C60: .word 0x0235378C +_02342C64: .word 0x0237CFBC + arm_func_end ov29_02342BEC + + arm_func_start ov29_02342C68 +ov29_02342C68: ; 0x02342C68 + add r0, r0, #0x8c00 + mvn r1, #0 + strh r1, [r0, #0x1c] + strh r1, [r0, #0x1e] + strh r1, [r0, #0x20] + strh r1, [r0, #0x22] + strh r1, [r0, #0x24] + strh r1, [r0, #0x26] + bx lr + arm_func_end ov29_02342C68 + + arm_func_start SpawnStairs +SpawnStairs: ; 0x02342C8C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + mov r8, r1 + ldrb r0, [r6] + ldrb r1, [r6, #1] + mov r5, r2 + bl GetTileSafe + mov r4, r0 + ldrh r0, [r4, #2] + cmp r5, #0 + orr r0, r0, #1 + bic r0, r0, #2 + strh r0, [r4, #2] + beq _02342D00 + ldr r0, _02342D94 ; =0x0235378C + ldrb r1, [r6] + ldrb r0, [r0] + cmp r0, #0 + ldrne r0, _02342D98 ; =0x0237CFBC + strneh r1, [r0, #0x1c] + ldrneb r1, [r6, #1] + strneh r1, [r0, #0x1e] + bne _02342D20 + add r0, r8, #0x8c00 + strh r1, [r0, #0x24] + ldrb r1, [r6, #1] + strh r1, [r0, #0x26] + str r5, [r8, #8] + b _02342D20 +_02342D00: + ldrb r2, [r6] + add r0, r8, #0x8c00 + ldr r1, _02342D98 ; =0x0237CFBC + strh r2, [r0, #0x20] + ldrb r2, [r6, #1] + strh r2, [r0, #0x22] + ldrb r0, [r4, #7] + strb r0, [r1, #2] +_02342D20: + cmp r5, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + bl GetFloorType + cmp r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrb r5, [r4, #7] + mov r7, #0 + mov r4, r7 +_02342D40: + mov r6, r4 +_02342D44: + mov r0, r7 + mov r1, r6 + bl GetTileSafe + ldrh r1, [r0] + add r6, r6, #1 + and r1, r1, #3 + cmp r1, #1 + ldreqb r1, [r0, #7] + cmpeq r1, r5 + ldreqh r1, [r0] + orreq r1, r1, #0x40 + streqh r1, [r0] + ldreqb r0, [r0, #7] + streqb r0, [r8, #5] + cmp r6, #0x20 + blt _02342D44 + add r7, r7, #1 + cmp r7, #0x38 + blt _02342D40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02342D94: .word 0x0235378C +_02342D98: .word 0x0237CFBC + arm_func_end SpawnStairs + + arm_func_start ov29_02342D9C +ov29_02342D9C: ; 0x02342D9C + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02342EB0 ; =0x02353538 + mov r5, r0 + ldr r0, [r2] + mov r6, r1 + ldr r0, [r0, #0x7cc] + mov r4, #0 + cmp r0, #1 + cmpne r0, #2 + beq _02342EA8 + mov r0, #4 + bl DungeonRngSetSecondary + ldrb r0, [r5, #0x16] + cmp r0, #0 + bne _02342EA4 + ldrb r0, [r6, #0x1a] + cmp r0, #0xff + bne _02342DFC + bl DungeonRand16Bit + and r0, r0, #8 + tst r0, #8 + movne r4, #1 + moveq r4, #2 + b _02342E00 +_02342DFC: + add r4, r0, #1 +_02342E00: + ldr r0, _02342EB0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r0, [r0, #0x98] + cmp r0, #2 + beq _02342E24 + bl ov29_02349208 + cmp r0, #0 + beq _02342E2C +_02342E24: + mov r0, #1 + b _02342E30 +_02342E2C: + mov r0, #0 +_02342E30: + tst r0, #0xff + ldrne r0, _02342EB4 ; =0x0235378C + movne r1, #1 + strneb r1, [r0] + bne _02342EA4 + cmp r4, #0 + beq _02342EA4 + bl DungeonRand16Bit + mov r1, #0x64 + bl DivideInt + mov r5, r1 + ldrb r6, [r6, #0x1b] + bl ov29_023385EC + cmp r0, #0 + beq _02342E94 + ldr r1, _02342EB8 ; =0x022C4850 + mov r0, r6, lsl #8 + ldr r1, [r1] + bl MultiplyByFixedPoint + mov r6, r0 + mov r0, #0 + bl ov29_02338604 + mov r0, r6, asr #7 + add r0, r6, r0, lsr #24 + mov r6, r0, asr #8 +_02342E94: + cmp r5, r6 + ldrhs r0, _02342EB4 ; =0x0235378C + movhs r1, #1 + strhsb r1, [r0] +_02342EA4: + bl DungeonRngSetPrimary +_02342EA8: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02342EB0: .word 0x02353538 +_02342EB4: .word 0x0235378C +_02342EB8: .word 0x022C4850 + arm_func_end ov29_02342D9C + + arm_func_start ov29_02342EBC +ov29_02342EBC: ; 0x02342EBC + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_023384C0 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, pc} + ldr r1, _02342F04 ; =0x022C484C + mov r0, r4, lsl #8 + ldr r1, [r1] + bl MultiplyByFixedPoint + mov r4, r0 + mov r0, #0 + bl ov29_023384D8 + mov r0, r4, asr #7 + add r0, r4, r0, lsr #24 + mov r0, r0, lsl #8 + mov r0, r0, asr #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02342F04: .word 0x022C484C + arm_func_end ov29_02342EBC + + arm_func_start ov29_02342F08 +ov29_02342F08: ; 0x02342F08 + ldr r1, _02342F28 ; =0x0237CFBC + mvn r2, #0 + strh r2, [r1, #0x1c] + ldr r0, _02342F2C ; =0x0235378C + strh r2, [r1, #0x1e] + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_02342F28: .word 0x0237CFBC +_02342F2C: .word 0x0235378C + arm_func_end ov29_02342F08 + + arm_func_start ov29_02342F30 +ov29_02342F30: ; 0x02342F30 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + ldr r4, _02343928 ; =0x00000FFF + mov sb, r1 + and r1, sb, r4 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r6, r0 + mov r5, r2 + mov r4, r3 + cmp r1, #0x10 + blo _02342F78 + ldrh r0, [r6] + bic r0, r0, #3 + strh r0, [r6] + ldrh r0, [r6] + orr r0, r0, #1 + strh r0, [r6] +_02342F78: + cmp r1, #0x62 + bgt _02342FE8 + bge _0234334C + cmp r1, #0x60 + bgt _02342FDC + bge _0234334C + cmp r1, #0xf + addls pc, pc, r1, lsl #2 + b _023433B8 +_02342F9C: ; jump table + b _0234304C ; case 0 + b _02343070 ; case 1 + b _02343094 ; case 2 + b _0234391C ; case 3 + b _023430B8 ; case 4 + b _0234313C ; case 5 + b _02343160 ; case 6 + b _02343184 ; case 7 + b _023431B8 ; case 8 + b _02343244 ; case 9 + b _02343194 ; case 10 + b _02343268 ; case 11 + b _02343290 ; case 12 + b _023432DC ; case 13 + b _02343328 ; case 14 + b _0234391C ; case 15 +_02342FDC: + cmp r1, #0x61 + beq _0234334C + b _023433B8 +_02342FE8: + cmp r1, #0x6b + bgt _02343000 + bge _023431B8 + cmp r1, #0x63 + beq _0234334C + b _023433B8 +_02343000: + cmp r1, #0x6c + bgt _02343010 + beq _02343208 + b _023433B8 +_02343010: + cmp r1, #0x6d + bne _023433B8 + ldr r3, _0234392C ; =0x02353538 + mov r1, r5 + ldr r0, [r3] + mov r2, r4 + add r0, r0, #0x700 + strh r5, [r0, #0xa4] + ldr r0, [r3] + mov r3, #0 + add r0, r0, #0x700 + strh r4, [r0, #0xa6] + mov r0, #0xb + str r3, [sp] + bl ov29_022ED970 +_0234304C: + ldrh r1, [r6] + mov r0, #0 + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #1 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343070: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + bic r1, r1, #0x100 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343094: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x10 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_023430B8: + ldrh r2, [r6] + mov r0, r5, lsl #0x10 + mov r1, r4, lsl #0x10 + bic r2, r2, #3 + strh r2, [r6] + ldrh r4, [r6] + mov r3, sb, asr #0xc + ldr r2, _0234392C ; =0x02353538 + orr r4, r4, #1 + strh r4, [r6] + ldr r4, [r2] + mov r5, r0, asr #0x10 + add r0, r4, #0xcc00 + strh r5, [r0, #0xe0] + ldr r0, [r2] + mov r4, r1, asr #0x10 + add r0, r0, #0xcc00 + strh r4, [r0, #0xe2] + ldr r1, [r2] + and r0, r3, #0xff + add r1, r1, #0xcc00 + strh r5, [r1, #0xec] + ldr r1, [r2] + add r1, r1, #0xcc00 + strh r4, [r1, #0xee] + bl ov29_0234396C + ldr r1, _0234392C ; =0x02353538 + mov r2, #0 + ldr r1, [r1] + add r1, r1, #0xc000 + strb r0, [r1, #0xd0c] + strb r2, [r6, #7] + b _0234391C +_0234313C: + ldrh r1, [r6] + mov r0, #0 + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #2 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343160: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #3 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343184: + ldr r0, _02343930 ; =0x0237CFC0 + mov r1, #1 + strb r1, [r0] + bl ov29_023365E8 +_02343194: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x13 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_023431B8: + ldrh r2, [r6] + ldr r1, _0234392C ; =0x02353538 + mov r0, #0 + bic r2, r2, #3 + strh r2, [r6] + ldrh r2, [r6] + orr r2, r2, #1 + strh r2, [r6] + ldrh r2, [r6, #2] + orr r2, r2, #1 + bic r2, r2, #2 + strh r2, [r6, #2] + strb r0, [r6, #7] + ldr r0, [r1] + add r0, r0, #0xcc00 + strh r5, [r0, #0xe4] + ldr r0, [r1] + add r0, r0, #0xcc00 + strh r4, [r0, #0xe6] + b _0234391C +_02343208: + ldrh r1, [r6] + mov r0, #0 + orr r1, r1, #0x800 + strh r1, [r6] + ldrh r1, [r6] + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #1 + strh r1, [r6] + ldrh r1, [r6, #2] + bic r1, r1, #2 + strh r1, [r6, #2] + strb r0, [r6, #7] + b _0234391C +_02343244: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #1 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343268: + ldrh r1, [r6] + mov r0, #0 + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #1 + orr r1, r1, #0x800 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343290: + bl ov29_023361D4 + ldrh r1, [r6] + cmp r0, #0 + moveq r2, #1 + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + movne r2, #0 + mov r0, #0 + orr r1, r1, r2 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x1000 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x810 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_023432DC: + bl ov29_023361D4 + ldrh r1, [r6] + cmp r0, #0 + moveq r2, #1 + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + movne r2, #0 + mov r0, #0 + orr r1, r1, r2 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x810 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x2000 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_02343328: + ldrh r1, [r6] + mov r0, #0xff + bic r1, r1, #3 + strh r1, [r6] + ldrh r1, [r6] + orr r1, r1, #0x10 + strh r1, [r6] + strb r0, [r6, #7] + b _0234391C +_0234334C: + ldr r2, _0234392C ; =0x02353538 + mov r3, sb, asr #0xc + ldr r0, [r2] + sub r7, r1, #0x5f + add r0, r0, r7, lsl #2 + add r0, r0, #0xcc00 + strh r5, [r0, #0xec] + ldr r1, [r2] + and r0, r3, #0xff + add r1, r1, r7, lsl #2 + add r1, r1, #0xcc00 + strh r4, [r1, #0xee] + bl ov29_0234396C + ldr r1, _0234392C ; =0x02353538 + mov r2, #0 + ldr r1, [r1] + add r1, r1, r7 + add r1, r1, #0xc000 + strb r0, [r1, #0xd0c] + ldrh r0, [r6] + bic r0, r0, #3 + strh r0, [r6] + ldrh r0, [r6] + orr r0, r0, #1 + strh r0, [r6] + strb r2, [r6, #7] + b _0234391C +_023433B8: + cmp r1, #0x10 + blo _0234391C + ldr r0, _02343934 ; =0x000001FF + cmp r1, r0 + bhi _0234391C + sub r1, r1, #0x10 + mov r0, #0xc + smulbb r2, r1, r0 + ldr r0, _02343938 ; =0x023502F4 + ldr r1, _0234393C ; =0x023502EC + ldr r8, [r0, r2] + ldr sl, [r1, r2] + ldrb r0, [r8, #2] + ldr r1, _02343940 ; =0x023502F0 + strb r0, [r6, #7] + ldrsh r0, [sl] + ldr r7, [r1, r2] + cmp r0, #0 + ldrneb r1, [sp, #0x58] + cmpne r1, #0 + beq _02343678 + cmp r0, #0xb2 + bne _02343468 + ldr r0, _0234392C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r0, [r0, #0x98] + cmp r0, #2 + cmpne r0, #3 + beq _02343678 + mov r0, #0x17 + bl GetPerformanceFlagWithChecks + cmp r0, #0 + bne _02343678 + ldr r1, [sl, #4] + mov r0, #0 + str r1, [sp] + str r0, [sp, #4] + ldrsh r0, [sl] + ldrsh r3, [sl, #2] + mov r1, r5 + mov r2, r4 + bl ov29_02344430 + b _02343678 +_02343468: + bl IsTreasureBox + cmp r0, #0 + ldrsh r0, [sl] + beq _02343548 + str r0, [sp, #0x14] + mov r0, r0 + ldr sl, [sl, #4] + bl IsTreasureBox + cmp r0, #0 + bne _023434B0 + mov r1, r5 + mov r2, r4 + str sl, [sp] + mov r3, #0 + mov r0, #0x49 + str r3, [sp, #4] + bl ov29_02344430 + b _02343678 +_023434B0: + ldr r0, _0234392C ; =0x02353538 + ldr r0, [r0] + ldrb fp, [r0, #0x748] + bl IsGoldenChamber + cmp r0, #0 + beq _023434D8 + ldr r0, _02343944 ; =0x022C4B34 + bl ov29_023442B8 + mov r3, r0 + b _02343528 +_023434D8: + bl IsSecretRoom + cmp r0, #0 + beq _023434F0 + bl ov29_022E7BD0 + mov r3, r0 + b _02343528 +_023434F0: + ldr r0, _02343948 ; =0x02353050 + b _02343504 +_023434F8: + cmp fp, r1 + beq _02343510 + add r0, r0, #8 +_02343504: + ldrb r1, [r0] + cmp r1, #0 + bne _023434F8 +_02343510: + cmp r1, #0 + moveq r3, #0x49 + beq _02343528 + ldr r0, [r0, #4] + bl ov29_023442B8 + mov r3, r0 +_02343528: + ldr r0, [sp, #0x14] + mov r1, r5 + str sl, [sp] + mov sl, #0 + mov r2, r4 + str sl, [sp, #4] + bl ov29_02344430 + b _02343678 +_02343548: + ldr r2, _0234394C ; =0x00000578 + cmp r0, r2 + bne _02343580 + bl GetSpecialTargetItem + ldr r2, [sl, #4] + mov r1, #0 + orr r2, r2, #0x80 + str r2, [sp] + str r1, [sp, #4] + ldrsh r3, [sl, #2] + mov r1, r5 + mov r2, r4 + bl ov29_02344430 + b _02343678 +_02343580: + add r1, r2, #1 + cmp r0, r1 + bne _023435BC + bl GetSpecialTargetItem + ldr r1, [sl, #4] + mov r3, r0 + orr r2, r1, #0x80 + ldr r0, _02343950 ; =0x00000181 + mov r1, r5 + str r2, [sp] + mov r2, #0 + str r2, [sp, #4] + mov r2, r4 + bl ov29_02344430 + b _02343678 +_023435BC: + add r1, r2, #0xa + cmp r0, r1 + blt _02343658 + add r1, r2, #0x13 + cmp r0, r1 + bgt _02343658 + mov r0, #0xc + bl DungeonRandInt + mov r0, r0, lsl #0x10 + ldrsh r2, [sl] + ldr r1, _02343954 ; =0xFFFFFA7E + str r0, [sp, #0x20] + add r0, r2, r1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + str r0, [sp, #0x18] + mov r0, #4 + bl DungeonRandInt + mov fp, r0, lsl #0x10 + ldr r0, [sp, #0x18] + mov r1, #0xa + bl DivideInt + ldr r3, [sl, #4] + ldr r0, [sp, #0x20] + str r3, [sp] + mov r2, r0, asr #0xf + mov sl, fp, asr #0xf + mov r0, #1 + mov r3, r1 + str r0, [sp, #4] + ldr fp, _02343958 ; =0x023534F0 + ldr r0, _0234395C ; =0x0234FDFC + ldr r3, [fp, r3, lsl #2] + ldrsh r0, [r0, r2] + ldrsh r3, [r3, sl] + mov r1, r5 + mov r2, r4 + bl ov29_02344430 + b _02343678 +_02343658: + ldr r2, [sl, #4] + mov r1, #1 + str r2, [sp] + str r1, [sp, #4] + ldrsh r3, [sl, #2] + mov r1, r5 + mov r2, r4 + bl ov29_02344430 +_02343678: + ldrsh r0, [r7] + bl ov29_02344190 + movs fp, r0 + beq _023438BC + mov r0, sb, asr #0xc + and r0, r0, #0xff + bl ov29_0234396C + mov r1, #0 + str r1, [sp, #8] + ldrb r1, [r7, #2] + str r1, [sp, #0x10] + str r0, [sp, #0xc] + ldrb sb, [r7, #3] + ldr r0, [sp, #0x10] + mov r1, #0xc + smulbb r0, r0, r1 + ldr sl, [sp, #8] + str r0, [sp, #0x1c] + ldrsh r7, [r7] + b _023436FC +_023436C8: + mov r0, sl + bl GetExplorerMazeMonster + ldrb r0, [r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #1 + strne r0, [sp, #8] + bne _02343704 + add r0, sl, #1 + mov r0, r0, lsl #0x10 + mov sl, r0, asr #0x10 +_023436FC: + cmp sl, #4 + blt _023436C8 +_02343704: + ldr r0, _02343960 ; =0x00000229 + cmp fp, r0 + bne _023437C8 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02343790 + mov r0, #0 + cmp sb, #0xb + cmp sb, #0xc + moveq r0, #1 + cmp sb, #0xd + moveq r0, #2 + cmp sb, #0xe + moveq r0, #3 + bl GetExplorerMazeMonster + ldrb r1, [r0] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _023438BC + ldrsh r3, [r0, #4] + mov r2, #0 + mov r1, #1 + strh r3, [sp, #0x24] + ldrb r3, [r0, #1] + add r0, sp, #0x24 + strh r3, [sp, #0x2c] + strb sb, [sp, #0x26] + str r2, [sp, #0x28] + strb r2, [sp, #0x32] + strh r5, [sp, #0x2e] + strh r4, [sp, #0x30] + bl SpawnMonster + b _023438BC +_02343790: + mov r0, #0x3c + strh r0, [sp, #0x24] + bl GetMonsterLevelToSpawn + mov r2, #0 + strh r0, [sp, #0x2c] + add r0, sp, #0x24 + mov r1, #1 + strb sb, [sp, #0x26] + str r2, [sp, #0x28] + strb r2, [sp, #0x32] + strh r5, [sp, #0x2e] + strh r4, [sp, #0x30] + bl SpawnMonster + b _023438BC +_023437C8: + cmp fp, #0 + beq _023438BC + mov r1, #0 + cmp sb, #6 + cmpne sb, #0xa + str r1, [sp, #0x28] + strb r1, [sp, #0x32] + ldreq r1, _02343964 ; =0x022C5938 + ldreq r0, [sp, #0x1c] + strh fp, [sp, #0x24] + ldreqsh r0, [r1, r0] + strb sb, [sp, #0x26] + strh r5, [sp, #0x2e] + strh r4, [sp, #0x30] + streqh r0, [sp, #0x2c] + beq _02343898 + cmp sb, #1 + bne _0234382C + ldr r0, _0234392C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawLevel + strh r0, [sp, #0x2c] + b _02343898 +_0234382C: + cmp sb, #4 + bne _02343850 + ldr r0, _0234392C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawLeaderLevel + strh r0, [sp, #0x2c] + b _02343898 +_02343850: + cmp sb, #5 + bne _02343874 + ldr r0, _0234392C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawMinionLevel + strh r0, [sp, #0x2c] + b _02343898 +_02343874: + add r0, r0, #0x25c + cmp r7, r0 + strneh r1, [sp, #0x2c] + bne _02343898 + ldr r1, _0234392C ; =0x02353538 + ldr r0, _02343968 ; =0x0002C9E6 + ldr r1, [r1] + ldrsh r0, [r1, r0] + strh r0, [sp, #0x2c] +_02343898: + add r0, sp, #0x24 + mov r1, #1 + bl SpawnMonster + cmp sb, #6 + cmpne sb, #0xa + bne _023438BC + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + bl ov29_022FBE58 +_023438BC: + ldrb r0, [r8] + cmp r0, #0x19 + ldrneb r1, [sp, #0x58] + cmpne r1, #0 + beq _023438F8 + ldrb r1, [r8, #3] + mov r2, r4 + tst r1, #1 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff + str r1, [sp] + ldrb r3, [r8, #1] + mov r1, r5 + bl ov29_022ED970 +_023438F8: + ldrb r0, [r8, #3] + tst r0, #8 + beq _0234391C + ldrh r0, [r6] + bic r0, r0, #3 + strh r0, [r6] + ldrh r0, [r6] + orr r0, r0, #2 + strh r0, [r6] +_0234391C: + mov r0, #0 + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02343928: .word 0x00000FFF +_0234392C: .word 0x02353538 +_02343930: .word 0x0237CFC0 +_02343934: .word 0x000001FF +_02343938: .word 0x023502F4 +_0234393C: .word 0x023502EC +_02343940: .word 0x023502F0 +_02343944: .word 0x022C4B34 +_02343948: .word 0x02353050 +_0234394C: .word 0x00000578 +_02343950: .word 0x00000181 +_02343954: .word 0xFFFFFA7E +_02343958: .word 0x023534F0 +_0234395C: .word 0x0234FDFC +_02343960: .word 0x00000229 +_02343964: .word 0x022C5938 +_02343968: .word 0x0002C9E6 + arm_func_end ov29_02342F30 + + arm_func_start ov29_0234396C +ov29_0234396C: ; 0x0234396C + cmp r0, #0 + moveq r0, #0xff + subne r0, r0, #1 + andne r0, r0, #0xff + bx lr + arm_func_end ov29_0234396C + + arm_func_start ov29_02343980 +ov29_02343980: ; 0x02343980 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + mov r4, r7 + mov r5, r7 +_02343990: + mov r6, r5 +_02343994: + mov r0, r6 + mov r1, r7 + bl GetTileSafe + ldrb r1, [r0, #6] + cmp r1, #0x10 + blo _023439BC + mov r2, r6 + mov r3, r7 + str r4, [sp] + bl ov29_02342F30 +_023439BC: + add r6, r6, #1 + cmp r6, #0x38 + blt _02343994 + add r7, r7, #1 + cmp r7, #0x20 + blt _02343990 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_02343980 + + arm_func_start ov29_023439D8 +ov29_023439D8: ; 0x023439D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r4, _02343CD0 ; =0x02353538 + mov sb, r1 + ldr r4, [r4] + mov sl, r0 + add r1, r4, #0x4000 + ldrb r1, [r1, #0xc5] + str r2, [sp, #4] + cmp r1, #0 + bne _02343CC0 + bl ov29_023361D4 + ldrsh r1, [sl, #4] + cmp r0, #0 + str r0, [sp, #8] + strh r1, [sp, #0xc] + ldrsh r0, [sl, #6] + sub r0, r0, #1 + strh r0, [sp, #0xe] + ldrb fp, [sl, #0x25] + bne _02343C24 + ldrsh r0, [sl, #6] + sub r8, r0, #0x15 + b _02343B68 +_02343A38: + ldrsh r0, [sl, #4] + sub r4, r0, #0x14 + b _02343B54 +_02343A44: + ldr r0, _02343CD0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0xc000 + ldr r1, [r0, #0xd24] + ldr r2, [r0, #0xd28] + subs r5, r4, r1 + sub r6, r8, r2 + bmi _02343B50 + cmp r6, #0 + blt _02343B50 + cmp r5, #8 + cmplt r6, #8 + bge _02343B50 + add r1, r1, #1 + cmp r4, r1 + addge r1, r2, #1 + cmpge r8, r1 + blt _02343B50 + ldr r1, [r0, #0xd2c] + sub r1, r1, #1 + cmp r4, r1 + ldrlt r0, [r0, #0xd30] + sublt r0, r0, #1 + cmplt r8, r0 + bge _02343B50 + mov r0, r4 + mov r1, r8 + bl GetTileSafe + mov r7, r0 + ldrh r0, [r7] + tst r0, #0x100 + beq _02343B0C + mov r0, #0xa0 + mul r1, r5, r0 + mov r0, #0x14 + ldr r2, _02343CD0 ; =0x02353538 + mul r0, r6, r0 + ldr r2, [r2] + add r2, r2, r1 + add r2, r0, r2 + add r2, r2, #0xcd00 + ldrh r2, [r2, #0x60] + strh r2, [r7] + ldr r2, _02343CD0 ; =0x02353538 + ldr r2, [r2] + add r1, r2, r1 + add r0, r0, r1 + add r0, r0, #0xcd00 + ldrh r0, [r0, #0x62] + strh r0, [r7, #2] +_02343B0C: + mov r0, #1 + str r0, [sp] + ldr r1, _02343CD0 ; =0x02353538 + mov r0, r7 + ldr r1, [r1] + mov r2, r4 + add r1, r1, r5, lsl #4 + add r1, r1, r6, lsl #1 + add r1, r1, #0xd200 + ldrh r1, [r1, #0x60] + mov r3, r8 + bl ov29_02342F30 + ldrh r0, [r7, #2] + cmp fp, #0xff + orr r0, r0, #3 + strh r0, [r7, #2] + strneb fp, [r7, #7] +_02343B50: + add r4, r4, #1 +_02343B54: + ldrsh r0, [sl, #4] + add r0, r0, #0x14 + cmp r4, r0 + ble _02343A44 + add r8, r8, #1 +_02343B68: + ldrsh r1, [sl, #6] + add r0, r1, #0x13 + cmp r8, r0 + ble _02343A38 + sub r4, r1, #0x15 + b _02343C14 +_02343B80: + ldrsh r0, [sl, #4] + ldr r6, _02343CD0 ; =0x02353538 + sub r5, r0, #0x14 + b _02343C00 +_02343B90: + ldr r0, [r6] + add r0, r0, #0xc000 + ldr r7, [r0, #0xd24] + ldr r2, [r0, #0xd28] + subs r3, r5, r7 + sub r1, r4, r2 + bmi _02343BFC + cmp r1, #0 + blt _02343BFC + cmp r3, #8 + cmplt r1, #8 + bge _02343BFC + add r1, r7, #1 + cmp r5, r1 + addge r1, r2, #1 + cmpge r4, r1 + blt _02343BFC + ldr r1, [r0, #0xd2c] + sub r1, r1, #1 + cmp r5, r1 + ldrlt r0, [r0, #0xd30] + sublt r0, r0, #1 + cmplt r4, r0 + bge _02343BFC + mov r0, r5 + mov r1, r4 + bl ov29_02336694 +_02343BFC: + add r5, r5, #1 +_02343C00: + ldrsh r0, [sl, #4] + add r0, r0, #0x14 + cmp r5, r0 + ble _02343B90 + add r4, r4, #1 +_02343C14: + ldrsh r0, [sl, #6] + add r0, r0, #0x13 + cmp r4, r0 + ble _02343B80 +_02343C24: + ldr r0, _02343CD0 ; =0x02353538 + mov r2, #1 + ldr r0, [r0] + ldr r1, _02343CD4 ; =0xFFFFCFEF + add r0, r0, #0x4000 + strb r2, [r0, #0xc5] + ldr r0, [sp, #8] + ldrh r2, [sb] + cmp r0, #0 + and r0, r2, r1 + strh r0, [sb] + beq _02343C6C + ldrh r0, [sb] + bic r0, r0, #3 + strh r0, [sb] + ldrh r0, [sb] + orr r0, r0, #1 + strh r0, [sb] +_02343C6C: + ldrsh r1, [sl, #6] + ldrsh r0, [sl, #4] + sub r1, r1, #1 + bl ov29_02336694 + bl ov29_02336A4C + bl ov29_02336F4C + mov r0, #0xc + bl IsCurrentMissionType + cmp r0, #0 + moveq r1, #1 + movne r1, #0 + add r0, sp, #0xc + and r1, r1, #0xff + bl ov29_022E6694 + ldr r1, [sp, #4] + mov r0, sl + bl LogMessageByIdWithPopupCheckUser + mov r0, #0x14 + mov r1, #0x3c + bl ov29_022EA370 + b _02343CC8 +_02343CC0: + mov r1, r3 + bl LogMessageByIdWithPopupCheckUser +_02343CC8: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02343CD0: .word 0x02353538 +_02343CD4: .word 0xFFFFCFEF + arm_func_end ov29_023439D8 + + arm_func_start ov29_02343CD8 +ov29_02343CD8: ; 0x02343CD8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r1, [r4, #6] + ldrsh r0, [r4, #4] + sub r1, r1, #1 + bl GetTileSafe + mov r1, r0 + ldrh r0, [r1] + tst r0, #0x1000 + bne _02343D10 + ldr r1, _02343D28 ; =0x00000B94 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r4, pc} +_02343D10: + ldr r2, _02343D2C ; =0x00000B93 + mov r0, r4 + add r3, r2, #1 + bl ov29_023439D8 + bl ov29_02339CE8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02343D28: .word 0x00000B94 +_02343D2C: .word 0x00000B93 + arm_func_end ov29_02343CD8 + + arm_func_start ov29_02343D30 +ov29_02343D30: ; 0x02343D30 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldrsh r1, [r5, #6] + ldrsh r0, [r5, #4] + sub r1, r1, #1 + bl GetTileSafe + mov r4, r0 + ldrh r0, [r4] + tst r0, #0x2000 + bne _02343D68 + ldr r1, _02343D88 ; =0x00000B95 + mov r0, r5 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, r4, r5, pc} +_02343D68: + bl ov29_02348BE8 + ldr r2, _02343D8C ; =0x00000B93 + mov r0, r5 + mov r1, r4 + add r3, r2, #2 + bl ov29_023439D8 + bl ov29_02339CE8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02343D88: .word 0x00000B95 +_02343D8C: .word 0x00000B93 + arm_func_end ov29_02343D30 + + arm_func_start LoadFixedRoomData +LoadFixedRoomData: ; 0x02343D90 + stmdb sp!, {r3, lr} + ldr r0, _02343DBC ; =0x02353794 + ldr r1, _02343DC0 ; =0x02353110 + ldr r0, [r0] + mov r2, #0 + bl LoadFileFromRom__02008C3C + ldr r0, _02343DBC ; =0x02353794 + ldr r0, [r0] + ldr r1, [r0], #8 + bl HandleSir0Translation + ldmia sp!, {r3, pc} + .align 2, 0 +_02343DBC: .word 0x02353794 +_02343DC0: .word 0x02353110 + arm_func_end LoadFixedRoomData + + arm_func_start ov29_02343DC4 +ov29_02343DC4: ; 0x02343DC4 + ldr r0, _02343DD4 ; =0x02353794 + ldr r0, [r0] + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_02343DD4: .word 0x02353794 + arm_func_end ov29_02343DC4 + + arm_func_start ov29_02343DD8 +ov29_02343DD8: ; 0x02343DD8 + stmdb sp!, {r3, lr} + ldr r0, _02343E1C ; =0x02353794 + ldr r0, [r0] + bl PointsToZero + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02343E1C ; =0x02353794 + ldr r0, [r0] + bl UnloadFile + ldr r0, _02343E1C ; =0x02353794 + ldr r0, [r0] + bl ZInit8 + ldr r0, _02343E1C ; =0x02353794 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02343E1C: .word 0x02353794 + arm_func_end ov29_02343DD8 + + arm_func_start ov29_02343E20 +ov29_02343E20: ; 0x02343E20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + movs r4, r2 + mov sl, r0 + str r1, [sp] + str r3, [sp, #4] + moveq r0, #0 + beq _0234402C + bl LoadFixedRoomData + ldr r0, _02344034 ; =0x02353794 + ldr r0, [r0] + ldr r0, [r0, #8] + ldr r0, [r0, r4, lsl #2] + ldrh r4, [r0] + ldrh r5, [r0, #2] + bl ov29_02342BEC + mul fp, r4, r5 + mov sb, #0 + str r0, [sp, #8] + mov r4, r0 + mov r5, sb + b _02344014 +_02343E78: + ldrh r2, [r4] + ldr r1, _02344038 ; =0x00000FFF + ldr r0, [sp] + and r2, r2, r1 + cmp sb, r0 + bge _0234401C + cmp r2, #0x10 + blt _0234400C + sub r0, r1, #0xe00 + cmp r2, r0 + bgt _0234400C + ldr r1, _0234403C ; =0x023502EC + sub r2, r2, #0x10 + mov r0, #0xc + smlabb r0, r2, r0, r1 + ldr r6, [r0, #4] + ldrsh r0, [r6] + cmp r0, #0 + ldrne r1, _02344040 ; =0x00000229 + cmpne r0, r1 + ldrne r1, _02344044 ; =0x00000483 + cmpne r0, r1 + beq _0234400C + bl ov29_02344190 + movs r8, r0 + beq _0234400C + mov r7, #0 + b _02343EFC +_02343EE8: + add r0, sl, r7, lsl #3 + bl GetMonsterIdFromSpawnEntry + cmp r8, r0 + beq _02343F04 + add r7, r7, #1 +_02343EFC: + cmp r7, sb + blt _02343EE8 +_02343F04: + cmp r7, sb + bne _0234400C + ldrb r0, [r6, #3] + cmp r0, #1 + bne _02343F40 + ldr r0, _02344048 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawLevel + mov r1, r0 + add r0, sp, #0xc + mov r2, r8 + bl SetMonsterLevelAndId + b _02343FE8 +_02343F40: + cmp r0, #4 + bne _02343F70 + ldr r0, _02344048 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawLeaderLevel + mov r1, r0 + add r0, sp, #0xc + mov r2, r8 + bl SetMonsterLevelAndId + b _02343FE8 +_02343F70: + cmp r0, #5 + bne _02343FA0 + ldr r0, _02344048 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r0, r0, #0x400 + bl GetOutlawMinionLevel + mov r1, r0 + add r0, sp, #0xc + mov r2, r8 + bl SetMonsterLevelAndId + b _02343FE8 +_02343FA0: + ldrb r3, [r6, #2] + cmp r3, #0 + ldrnesh r1, [r6] + ldrne r0, _0234404C ; =0x00000485 + cmpne r1, r0 + bne _02343FCC + ldr r1, [sp, #4] + add r0, sp, #0xc + mov r2, r8 + bl SetMonsterLevelAndId + b _02343FE8 +_02343FCC: + mov r0, #0xc + mul r2, r3, r0 + ldr r1, _02344050 ; =0x022C5938 + add r0, sp, #0xc + ldrsh r1, [r1, r2] + mov r2, r8 + bl SetMonsterLevelAndId +_02343FE8: + mov r0, sb, lsl #3 + add r3, sp, #0xc + add sb, sb, #1 + add r2, sl, r0 + mov r1, #4 +_02343FFC: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _02343FFC +_0234400C: + add r5, r5, #1 + add r4, r4, #2 +_02344014: + cmp r5, fp + blt _02343E78 +_0234401C: + ldr r0, [sp, #8] + bl MemFree + bl ov29_02343DD8 + mov r0, sb +_0234402C: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02344034: .word 0x02353794 +_02344038: .word 0x00000FFF +_0234403C: .word 0x023502EC +_02344040: .word 0x00000229 +_02344044: .word 0x00000483 +_02344048: .word 0x02353538 +_0234404C: .word 0x00000485 +_02344050: .word 0x022C5938 + arm_func_end ov29_02343E20 + + arm_func_start ov29_02344054 +ov29_02344054: ; 0x02344054 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #0 + bl MemAlloc + ldr r2, _02344084 ; =0x02353794 + mov r1, #0xc + str r0, [r2] + bl MemZero + ldr r0, _02344084 ; =0x02353794 + ldr r0, [r0] + bl ZInit8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02344084: .word 0x02353794 + arm_func_end ov29_02344054 + + arm_func_start ov29_02344088 +ov29_02344088: ; 0x02344088 + stmdb sp!, {r3, lr} + ldr r0, _023440A8 ; =0x02353794 + ldr r0, [r0] + bl MemFree + ldr r0, _023440A8 ; =0x02353794 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_023440A8: .word 0x02353794 + arm_func_end ov29_02344088 + + arm_func_start ov29_023440AC +ov29_023440AC: ; 0x023440AC + cmp r0, #0 + beq _023440BC + cmp r0, #0xa5 + blo _023440C4 +_023440BC: + mov r0, #1 + bx lr +_023440C4: + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _023440D8 ; =0x022C6C77 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_023440D8: .word 0x022C6C77 + arm_func_end ov29_023440AC + + arm_func_start ov29_023440DC +ov29_023440DC: ; 0x023440DC + cmp r0, #0 + beq _023440EC + cmp r0, #0xa5 + blo _023440F4 +_023440EC: + mov r0, #1 + bx lr +_023440F4: + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _02344108 ; =0x022C6C78 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_02344108: .word 0x022C6C78 + arm_func_end ov29_023440DC + + arm_func_start ov29_0234410C +ov29_0234410C: ; 0x0234410C + cmp r0, #0 + beq _0234411C + cmp r0, #0xa5 + blo _02344124 +_0234411C: + mov r0, #1 + bx lr +_02344124: + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _02344138 ; =0x022C6C79 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_02344138: .word 0x022C6C79 + arm_func_end ov29_0234410C + + arm_func_start ov29_0234413C +ov29_0234413C: ; 0x0234413C + ldr ip, _02344144 ; =ov29_023440AC + bx ip + .align 2, 0 +_02344144: .word ov29_023440AC + arm_func_end ov29_0234413C + + arm_func_start ov29_02344148 +ov29_02344148: ; 0x02344148 + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _0234415C ; =0x022C6C75 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_0234415C: .word 0x022C6C75 + arm_func_end ov29_02344148 + + arm_func_start ov29_02344160 +ov29_02344160: ; 0x02344160 + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _02344174 ; =0x022C6C76 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_02344174: .word 0x022C6C76 + arm_func_end ov29_02344160 + + arm_func_start ov29_02344178 +ov29_02344178: ; 0x02344178 + mov r1, #0xc + mul r1, r0, r1 + ldr r0, _0234418C ; =0x022C6C74 + ldrb r0, [r0, r1] + bx lr + .align 2, 0 +_0234418C: .word 0x022C6C74 + arm_func_end ov29_02344178 + + arm_func_start ov29_02344190 +ov29_02344190: ; 0x02344190 + stmdb sp!, {r4, lr} + cmp r0, #0 + ldrne r2, _023442A4 ; =0x00000483 + mov r4, #0 + cmpne r0, r2 + beq _0234429C + add r1, r2, #1 + cmp r0, r1 + bne _023441C0 + bl GetMissionTargetEnemy + mov r4, r0 + b _0234429C +_023441C0: + add r1, r2, #2 + cmp r0, r1 + bne _023441DC + mov r0, r4 + bl GetMissionEnemyMinionGroup + mov r4, r0 + b _0234429C +_023441DC: + add r1, r2, #3 + cmp r0, r1 + bne _023441F4 + bl GetMissionTargetEnemy + mov r4, r0 + b _0234429C +_023441F4: + add r1, r2, #4 + cmp r0, r1 + bne _02344210 + mov r0, r4 + bl GetMissionEnemyMinionGroup + mov r4, r0 + b _0234429C +_02344210: + add r1, r2, #5 + cmp r0, r1 + bne _0234422C + mov r0, #1 + bl GetMissionEnemyMinionGroup + mov r4, r0 + b _0234429C +_0234422C: + sub r1, r2, #0x274 + cmp r0, r1 + bne _02344254 + mov r0, r4 + mov r1, #0x5d + bl LoadScriptVariableValue + tst r0, #0xff + ldrne r4, _023442A8 ; =0x00000467 + ldreq r4, _023442AC ; =0x0000020F + b _0234429C +_02344254: + rsb r1, r2, #0x690 + cmp r0, r1 + bne _02344298 + ldr r0, _023442B0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r1, [r0, #0x98] + cmp r1, #0 + bne _02344288 + ldrsh r0, [r0, #0x4c] + bl GetDungeonMode + cmp r0, #1 + moveq r4, #1 +_02344288: + cmp r4, #0 + movne r4, #0x228 + ldreq r4, _023442B4 ; =0x0000020D + b _0234429C +_02344298: + mov r4, r0 +_0234429C: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_023442A4: .word 0x00000483 +_023442A8: .word 0x00000467 +_023442AC: .word 0x0000020F +_023442B0: .word 0x02353538 +_023442B4: .word 0x0000020D + arm_func_end ov29_02344190 + + arm_func_start ov29_023442B8 +ov29_023442B8: ; 0x023442B8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r2, r4 + mov r0, #0 + b _023442DC +_023442CC: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + add r2, r2, #2 + mov r0, r0, asr #0x10 +_023442DC: + ldrsh r1, [r2] + cmp r1, #0 + bne _023442CC + bl DungeonRandInt + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r0, r5, lsl #1 + ldrsh r0, [r4, r0] + cmp r0, #0 + moveq r0, #0x49 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _023443B0 ; =0x00000579 + cmp r0, r1 + ldmltia sp!, {r3, r4, r5, pc} + add r1, r1, #3 + cmp r0, r1 + ldmgtia sp!, {r3, r4, r5, pc} + bl sub_02056880 + bl GetActiveTeamMember + mov r1, r5, lsl #1 + ldrsh r3, [r4, r1] + ldr r2, _023443B0 ; =0x00000579 + mov r4, r0 + cmp r3, r2 + mov r1, #0 + bne _02344354 + ldrsh r0, [r4, #0xc] + bl GetExclusiveItem + mov r1, r0 + b _02344390 +_02344354: + add r0, r2, #1 + cmp r3, r0 + bne _02344374 + ldrsh r0, [r4, #0xc] + mov r1, #1 + bl GetExclusiveItem + mov r1, r0 + b _02344390 +_02344374: + add r0, r2, #2 + cmp r3, r0 + bne _02344390 + ldrsh r0, [r4, #0xc] + mov r1, #2 + bl GetExclusiveItem + mov r1, r0 +_02344390: + cmp r1, #0 + bne _023443A8 + ldrsh r0, [r4, #0xc] + mov r1, #3 + bl GetExclusiveItem + mov r1, r0 +_023443A8: + mov r0, r1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023443B0: .word 0x00000579 + arm_func_end ov29_023442B8 + + arm_func_start ov29_023443B4 +ov29_023443B4: ; 0x023443B4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + mov r4, r3 + bl GetItemCategoryVeneer + cmp r0, #6 + bne _02344400 + cmp r5, #0 + mov r0, r7 + mov r1, r6 + ble _023443F8 + mov r2, #0 + bl InitStandardItem + strh r5, [r7, #2] + b _02344420 +_023443F8: + bl ov29_02344BE4 + b _02344420 +_02344400: + mov r0, r7 + mov r1, r6 + mov r2, #0 + bl InitStandardItem + cmp r5, #0 + strgth r5, [r7, #2] + movle r0, #0 + strleh r0, [r7, #2] +_02344420: + ldrb r0, [r7] + orr r0, r0, r4 + strb r0, [r7] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_023443B4 + + arm_func_start ov29_02344430 +ov29_02344430: ; 0x02344430 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldrb ip, [sp, #0x1c] + mov r5, r0 + mov r4, r3 + strh r1, [sp] + strh r2, [sp, #2] + cmp ip, #0 + beq _0234448C + bl IsItemInBag + cmp r0, #0 + add r0, sp, #4 + beq _02344478 + ldr r3, [sp, #0x18] + mov r2, r4 + mov r1, #0x49 + bl ov29_023443B4 + b _023444A0 +_02344478: + ldr r3, [sp, #0x18] + mov r1, r5 + mov r2, r4 + bl ov29_023443B4 + b _023444A0 +_0234448C: + ldr r3, [sp, #0x18] + add r0, sp, #4 + mov r1, r5 + mov r2, r4 + bl ov29_023443B4 +_023444A0: + add r0, sp, #0 + add r1, sp, #4 + mov r2, #1 + bl ov29_02345538 + ldr r0, _023444D0 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3f00 + ldrsh r1, [r0, #0xc2] + add r1, r1, #1 + strh r1, [r0, #0xc2] + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_023444D0: .word 0x02353538 + arm_func_end ov29_02344430 + + arm_func_start ov29_023444D4 +ov29_023444D4: ; 0x023444D4 + stmdb sp!, {r3, lr} + ldr r0, _02344508 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x7e + add r0, r0, #0x700 + bl MemZero + bl IsSecretBazaar__023385C4 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0 + bl ov29_022F07D8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02344508: .word 0x02353538 + arm_func_end ov29_023444D4 + + arm_func_start IsHiddenStairsFloor +IsHiddenStairsFloor: ; 0x0234450C + stmdb sp!, {r3, lr} + bl IsSecretBazaar__023385C4 + cmp r0, #0 + bne _02344528 + bl IsSecretRoom + cmp r0, #0 + beq _02344530 +_02344528: + mov r0, #1 + ldmia sp!, {r3, pc} +_02344530: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsHiddenStairsFloor + + arm_func_start IsSecretBazaar__02344538 +IsSecretBazaar__02344538: ; 0x02344538 + ldr ip, _02344540 ; =IsSecretBazaar__023385C4 + bx ip + .align 2, 0 +_02344540: .word IsSecretBazaar__023385C4 + arm_func_end IsSecretBazaar__02344538 + + arm_func_start ov29_02344544 +ov29_02344544: ; 0x02344544 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r1 + bl EntityIsValid__02344AF8 + cmp r0, #0 + beq _02344A58 + mov r0, r4 + bl EntityIsValid__02344AF8 + cmp r0, #0 + beq _02344A58 + ldr r6, [r4, #0xb4] + mov r0, #1 + bl ov29_022EFB20 + mov r0, r5 + mov r1, r4 + mov r2, #1 + bl ov29_022F05B4 + ldrb r0, [r6, #0xbc] + sub r0, r0, #0x10 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02344A34 +_023445A0: ; jump table + b _023445B4 ; case 0 + b _023445E0 ; case 1 + b _0234471C ; case 2 + b _0234485C ; case 3 + b _02344950 ; case 4 +_023445B4: + ldr r2, _02344A60 ; =0x0237CFFC + mov r3, #0 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl ov29_022F0654 + ldr r0, _02344A64 ; =0x00000F32 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023445E0: + ldr r2, _02344A60 ; =0x0237CFFC + mov r3, #1 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl ov29_022F0654 + ldr r0, _02344A68 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x77e] + cmp r0, #0 + beq _02344620 + ldr r0, _02344A6C ; =0x00000F4C + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344620: + mov r0, #0 + mov r1, #0x64 + bl ov29_0234B09C + ldr r0, _02344A70 ; =0x00000F4A + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + ldr r1, _02344A74 ; =0x02353798 + ldr r0, _02344A78 ; =0x00000F4B + ldr r3, [r1, #4] + mov r1, r4 + mov r2, #0 + bl ov29_022F062C + cmp r0, #0 + bne _02344670 + ldr r0, _02344A7C ; =0x00000F4D + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344670: + bl GetGold + cmp r0, #0x64 + bge _02344690 + ldr r0, _02344A80 ; =0x00000F4E + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344690: + mov r0, #0x64 + bl ov29_022F07BC + ldr r0, _02344A84 ; =0x00000F4F + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + bl ov29_022F05E4 + mov r0, #4 + mov r1, #0x4000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 + mov r0, #4 + mov r1, #0x4000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 + mov r0, r4 + mov r1, #0 + ldr r2, _02344A88 ; =0x000001A7 + bl ov29_022F067C + bl ov29_022F05E4 + ldr r0, _02344A8C ; =0x00000F51 + bl ov29_022F0780 + mov r3, #1 + ldr r1, _02344A68 ; =0x02353538 + mov r0, #0xf50 + ldr r2, [r1] + mov r1, r4 + strb r3, [r2, #0x77e] + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_0234471C: + ldr r2, _02344A60 ; =0x0237CFFC + mov r3, #2 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl ov29_022F0654 + mov r0, #0 + mov r1, #0x64 + bl ov29_0234B09C + ldr r0, _02344A90 ; =0x00000F33 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + ldr r0, _02344A94 ; =0x00000F34 + mov r1, r4 + mov r2, #0 + ldr r3, _02344A74 ; =0x02353798 + ldr r3, [r3, #8] + bl ov29_022F062C + cmp r0, #0 + bne _02344784 + ldr r0, _02344A98 ; =0x00000F35 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344784: + bl IsBagFull + cmp r0, #0 + beq _023447A4 + ldr r0, _02344A9C ; =0x00000F37 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023447A4: + bl GetGold + cmp r0, #0x64 + bge _023447C4 + ldr r0, _02344AA0 ; =0x00000F36 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023447C4: + mov r0, #0x64 + bl ov29_022F07BC + ldr r0, _02344AA4 ; =0x00000F38 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + bl ov29_022F05E4 + mov r0, #0x64 + bl DungeonRandInt + cmp r0, #0x32 + movlt r6, #0x46 + blt _023447FC + bl ov29_022E7BB8 + mov r6, r0 +_023447FC: + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r1, r6 + mov r0, #0 + bl ov29_02344B9C + add r0, sp, #0 + mov r1, r6 + mov r2, #2 + bl ov29_02344BD0 + add r0, sp, #0 + bl ov29_02345004 + ldr r0, _02344AA8 ; =0x00000F3A + bl ov29_022F0780 + ldr r0, _02344AAC ; =0x00000F3B + bl ov29_022F0780 + ldr r0, _02344AB0 ; =0x00000F3C + bl ov29_022F0780 + ldr r0, _02344AB4 ; =0x00000F39 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_0234485C: + ldr r2, _02344A60 ; =0x0237CFFC + mov r3, #3 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl ov29_022F0654 + mov r0, #0 + mov r1, #0x64 + bl ov29_0234B09C + ldr r0, _02344AB8 ; =0x00000F54 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + ldr r0, _02344ABC ; =0x00000F55 + mov r1, r4 + mov r2, #0 + ldr r3, _02344A74 ; =0x02353798 + ldr r3, [r3, #0xc] + bl ov29_022F062C + cmp r0, #0 + bne _023448C4 + ldr r0, _02344AC0 ; =0x00000F56 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023448C4: + bl sub_0200F940 + cmp r0, #0 + bne _023448E4 + ldr r0, _02344AC4 ; =0x00000F58 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023448E4: + bl GetGold + cmp r0, #0x64 + bge _02344904 + ldr r0, _02344AC8 ; =0x00000F57 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344904: + mov r0, #0x64 + bl ov29_022F07BC + ldr r0, _02344ACC ; =0x00000F59 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + bl ov29_022F05E4 + ldr r2, _02344AD0 ; =0x000001A6 + mov r0, r4 + mov r1, r5 + bl ov29_022F067C + bl ov29_022F05E4 + ldr r0, _02344AD4 ; =0x00000F5D + bl ov29_022F0780 + ldr r0, _02344AD8 ; =0x00000F5A + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344950: + ldr r2, _02344A60 ; =0x0237CFFC + mov r3, #4 + mov r0, r4 + mov r1, r5 + str r3, [r2] + bl ov29_022F0654 + mov r0, #0 + mov r1, #0x64 + bl ov29_0234B09C + ldr r0, _02344ADC ; =0x00000F3F + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + mov r0, #0xf40 + mov r1, r4 + mov r2, #0 + ldr r3, _02344A74 ; =0x02353798 + ldr r3, [r3, #0x10] + bl ov29_022F062C + cmp r0, #0 + bne _023449B8 + ldr r0, _02344AE0 ; =0x00000F41 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_023449B8: + bl GetGold + cmp r0, #0x64 + mov r2, #0 + bge _023449D8 + ldr r0, _02344AE4 ; =0x00000F42 + mov r1, r4 + bl ov29_022F0604 + b _02344A34 +_023449D8: + ldr r1, _02344A74 ; =0x02353798 + ldr r0, _02344AE8 ; =0x00000F43 + ldr r3, [r1, #0x14] + mov r1, r4 + bl ov29_022F0618 + cmp r0, #0 + bne _02344A08 + ldr r0, _02344AEC ; =0x00000F44 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + b _02344A34 +_02344A08: + mov r0, #0x64 + bl ov29_022F07BC + ldr r0, _02344AF0 ; =0x00000F45 + mov r1, r4 + mov r2, #0 + bl ov29_022F0604 + bl ov29_022F05E4 + ldr r2, _02344AF4 ; =0x000001A5 + mov r0, r4 + mov r1, r5 + bl ov29_022F067C +_02344A34: + mov r0, #1 + bl ov29_0234B1A4 + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_022F05B4 + mov r0, #0 + bl ov29_022EFB84 + bl ov29_022F0848 +_02344A58: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02344A60: .word 0x0237CFFC +_02344A64: .word 0x00000F32 +_02344A68: .word 0x02353538 +_02344A6C: .word 0x00000F4C +_02344A70: .word 0x00000F4A +_02344A74: .word 0x02353798 +_02344A78: .word 0x00000F4B +_02344A7C: .word 0x00000F4D +_02344A80: .word 0x00000F4E +_02344A84: .word 0x00000F4F +_02344A88: .word 0x000001A7 +_02344A8C: .word 0x00000F51 +_02344A90: .word 0x00000F33 +_02344A94: .word 0x00000F34 +_02344A98: .word 0x00000F35 +_02344A9C: .word 0x00000F37 +_02344AA0: .word 0x00000F36 +_02344AA4: .word 0x00000F38 +_02344AA8: .word 0x00000F3A +_02344AAC: .word 0x00000F3B +_02344AB0: .word 0x00000F3C +_02344AB4: .word 0x00000F39 +_02344AB8: .word 0x00000F54 +_02344ABC: .word 0x00000F55 +_02344AC0: .word 0x00000F56 +_02344AC4: .word 0x00000F58 +_02344AC8: .word 0x00000F57 +_02344ACC: .word 0x00000F59 +_02344AD0: .word 0x000001A6 +_02344AD4: .word 0x00000F5D +_02344AD8: .word 0x00000F5A +_02344ADC: .word 0x00000F3F +_02344AE0: .word 0x00000F41 +_02344AE4: .word 0x00000F42 +_02344AE8: .word 0x00000F43 +_02344AEC: .word 0x00000F44 +_02344AF0: .word 0x00000F45 +_02344AF4: .word 0x000001A5 + arm_func_end ov29_02344544 diff --git a/asm/overlay_29_02344B1C.s b/asm/overlay_29_02344B1C.s new file mode 100644 index 00000000..6ee634db --- /dev/null +++ b/asm/overlay_29_02344B1C.s @@ -0,0 +1,848 @@ + .include "asm/macros.inc" + .include "overlay_29_02344B1C.inc" + + .text + + arm_func_start ov29_02344B1C +ov29_02344B1C: ; 0x02344B1C + ldr r0, _02344B2C ; =0x023537B0 + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_02344B2C: .word 0x023537B0 + arm_func_end ov29_02344B1C + + arm_func_start ov29_02344B30 +ov29_02344B30: ; 0x02344B30 + ldr r0, _02344B40 ; =0x023537B0 + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_02344B40: .word 0x023537B0 + arm_func_end ov29_02344B30 + + arm_func_start ov29_02344B44 +ov29_02344B44: ; 0x02344B44 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + orr r1, r5, #0x40000 + bl ov29_0234B084 + ldr r2, _02344B6C ; =0x023531BC + mov r0, r5 + mov r1, r4 + bl sub_02024FE8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02344B6C: .word 0x023531BC + arm_func_end ov29_02344B44 + + arm_func_start ov29_02344B70 +ov29_02344B70: ; 0x02344B70 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + orr r1, r5, #0x40000 + bl ov29_0234B084 + ldr r2, _02344B98 ; =0x023531A4 + mov r0, r5 + mov r1, r4 + bl sub_02024FE8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02344B98: .word 0x023531A4 + arm_func_end ov29_02344B70 + + arm_func_start ov29_02344B9C +ov29_02344B9C: ; 0x02344B9C + ldr ip, _02344BA4 ; =ov29_0234B084 + bx ip + .align 2, 0 +_02344BA4: .word ov29_0234B084 + arm_func_end ov29_02344B9C + + arm_func_start ov29_02344BA8 +ov29_02344BA8: ; 0x02344BA8 + stmdb sp!, {r3, lr} + add r3, r0, r1, lsl #2 + orr ip, r1, #0x40000 + mov r0, r1 + mov r1, r2 + ldr r2, _02344BCC ; =0x023531BC + str ip, [r3, #0x10] + bl sub_02024FE8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02344BCC: .word 0x023531BC + arm_func_end ov29_02344BA8 + + arm_func_start ov29_02344BD0 +ov29_02344BD0: ; 0x02344BD0 + ldr ip, _02344BE0 ; =ov29_023472C4 + mov r3, r2 + mov r2, #0 + bx ip + .align 2, 0 +_02344BE0: .word ov29_023472C4 + arm_func_end ov29_02344BD0 + + arm_func_start ov29_02344BE4 +ov29_02344BE4: ; 0x02344BE4 + ldr ip, _02344BF4 ; =ov29_023472C4 + mov r2, #0 + mov r3, #2 + bx ip + .align 2, 0 +_02344BF4: .word ov29_023472C4 + arm_func_end ov29_02344BE4 + + arm_func_start ov29_02344BF8 +ov29_02344BF8: ; 0x02344BF8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x48 + ldr r3, _02344C48 ; =0x023531CC + add r2, sp, #0 + mov r4, r0 + mov r1, #0x24 +_02344C10: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _02344C10 + bl DungeonRand16Bit + mov r1, #0xc + bl DivideInt + add r2, sp, #0 + mov r0, #6 + smlabb r0, r1, r0, r2 + mov r1, r4, lsl #1 + ldrsh r0, [r1, r0] + add sp, sp, #0x48 + ldmia sp!, {r4, pc} + .align 2, 0 +_02344C48: .word 0x023531CC + arm_func_end ov29_02344BF8 + + arm_func_start ov29_02344C4C +ov29_02344C4C: ; 0x02344C4C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + mov sb, #0 + str sb, [sp, #8] + mov r8, sb + bl IsDestinationFloorWithItem + cmp r0, #0 + ldr r1, _02344E7C ; =0x02353538 + ldr r0, _02344E80 ; =0x0002C9E8 + ldr r1, [r1] + movne sb, #1 + ldrsh r0, [r1, r0] + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #8] + mov r0, #0x38 + bl DungeonRandInt + mov r6, r0 + mov r0, #0x20 + bl DungeonRandInt + ldr r1, _02344E7C ; =0x02353538 + mov r5, #0 + ldr r1, [r1] + ldr r2, _02344E84 ; =0x023531A0 + add r1, r1, #0x3f00 + strh r5, [r1, #0xc0] + ldrh r3, [r2] + ldrh r1, [r2, #2] + mov r7, r0 + strh r3, [sp, #0x10] + strh r1, [sp, #0x12] +_02344CC8: + add r7, r7, #1 + cmp r7, #0x20 + moveq r7, #0 + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + mov r4, #0 + str r0, [sp, #0xc] +_02344CE4: + add r6, r6, #1 + cmp r6, #0x38 + mov r0, #0 + moveq r6, #0 + str r0, [sp, #4] + mov r0, r6 + mov r1, r7 + bl GetTile + ldrh r1, [r0] + tst r1, #0x200 + bne _02344E40 + ldrh r1, [r0, #2] + tst r1, #2 + beq _02344E40 + ldr r1, [sp, #0xc] + strh r6, [sp, #0x1a] + strh r1, [sp, #0x1c] + ldrh r0, [r0] + tst r0, #0x20 + movne r0, #1 + strne r0, [sp] + movne sl, r0 + bne _02344D80 + tst r0, #3 + moveq r0, #0 + streq r0, [sp] + moveq sl, #3 + beq _02344D80 + tst r0, #0x40 + mov r0, #0 + strne r0, [sp] + movne sl, #2 + bne _02344D80 + cmp sb, #0 + cmpeq r8, #0 + str r0, [sp] + mov sl, r0 + addeq r8, r8, #1 + beq _02344E40 +_02344D80: + cmp sl, #0 + bne _02344DB0 + cmp sb, #0 + beq _02344DB0 + cmp r8, #0 + bne _02344DB0 + bl GetItemToRetrieve + mov fp, r0 + mov r0, #2 + mov sb, #0 + str r0, [sp, #4] + b _02344DEC +_02344DB0: + cmp sl, #0 + bne _02344DE0 + ldr r0, [sp, #8] + cmp r0, #0 + beq _02344DE0 + ldr r0, _02344E7C ; =0x02353538 + ldr r1, [r0] + mov r0, #0 + str r0, [sp, #8] + ldr r0, _02344E80 ; =0x0002C9E8 + ldrsh fp, [r1, r0] + b _02344DEC +_02344DE0: + mov r0, sl + bl ov29_022E7AC4 + mov fp, r0 +_02344DEC: + mov r0, fp + bl sub_0200CCE0 + cmp r0, #0 + moveq r0, #0 + streq r0, [sp] + ldr r3, [sp, #4] + mov r1, fp + add r0, sp, #0x14 + mov r2, #0 + bl ov29_023472C4 + ldr r0, [sp] + add r1, sp, #0x14 + cmp r0, #0 + ldrneb r0, [sp, #0x14] + mov r2, #1 + orrne r0, r0, #2 + strneb r0, [sp, #0x14] + add r0, sp, #0x1a + bl ov29_02345538 + cmp sl, #0 + addeq r8, r8, #1 +_02344E40: + add r4, r4, #1 + cmp r4, #0x38 + blt _02344CE4 + add r5, r5, #1 + cmp r5, #0x20 + blt _02344CC8 + ldr r0, _02344E7C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3f00 + ldrsh r2, [r0, #0xc0] + ldrsh r1, [r0, #0xc2] + add r1, r2, r1 + strh r1, [r0, #0xc0] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02344E7C: .word 0x02353538 +_02344E80: .word 0x0002C9E8 +_02344E84: .word 0x023531A0 + arm_func_end ov29_02344C4C + + arm_func_start ov29_02344E88 +ov29_02344E88: ; 0x02344E88 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r4, r0 + mov r0, #2 + bl DungeonRngSetSecondary + ldrsh r0, [r4] + ldrsh r1, [r4, #2] + bl DungeonRandRange + mov r8, r0 + cmp r8, #0 + ble _02344FF8 + mov r4, #0 + mov r1, r4 + mov r0, #0x1c00 + bl MemAlloc + mov sl, r0 + mov sb, r4 + mov r6, r4 +_02344ED0: + mov r0, sb, lsl #0x10 + mov r7, r6 + mov r5, r0, asr #0x10 +_02344EDC: + mov r0, r7 + mov r1, sb + bl GetTile + ldrb r1, [r0, #7] + cmp r1, #0xff + beq _02344F2C + ldrh r1, [r0] + tst r1, #0x200 + bne _02344F2C + tst r1, #1 + beq _02344F2C + ldr r1, [r0, #0xc] + cmp r1, #0 + ldreq r0, [r0, #0x10] + cmpeq r0, #0 + moveq r1, r4, lsl #2 + addeq r0, sl, r4, lsl #2 + streqh r7, [sl, r1] + streqh r5, [r0, #2] + addeq r4, r4, #1 +_02344F2C: + add r7, r7, #1 + cmp r7, #0x38 + blt _02344EDC + add sb, sb, #1 + cmp sb, #0x20 + blt _02344ED0 + sub r6, r4, #1 + mov r5, #0 + b _02344F9C +_02344F50: + mov r0, r4 + bl DungeonRandInt + mov fp, r5, lsl #2 + add r1, sl, r5, lsl #2 + mov sb, r0, lsl #2 + ldrh r7, [sl, fp] + ldrh r3, [r1, #2] + ldrh r2, [sl, sb] + strh r7, [sp] + strh r3, [sp, #2] + strh r2, [sl, fp] + add r7, sl, r0, lsl #2 + ldrh r3, [r7, #2] + ldrh r2, [sp] + ldrh r0, [sp, #2] + strh r3, [r1, #2] + strh r2, [sl, sb] + strh r0, [r7, #2] + add r5, r5, #1 +_02344F9C: + cmp r5, r6 + blt _02344F50 + mov sb, #0 + add r7, sp, #4 + mov r6, #0xb7 + mov r5, sb + mov r4, #2 + mov fp, #1 + b _02344FE8 +_02344FC0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl ov29_023472C4 + mov r1, r7 + mov r2, fp + add r0, sl, sb, lsl #2 + bl ov29_02345538 + add sb, sb, #1 +_02344FE8: + cmp sb, r8 + blt _02344FC0 + mov r0, sl + bl MemFree +_02344FF8: + bl DungeonRngSetPrimary + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov29_02344E88 + + arm_func_start ov29_02345004 +ov29_02345004: ; 0x02345004 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldrb r0, [r5] + mov r4, #0 + tst r0, #0x80 + bicne r0, r0, #0x80 + strneb r0, [r5] + mov r0, r5 + movne r4, #1 + bl AddItemToBagNoHeld + cmp r0, #0 + beq _02345050 + cmp r4, #0 + ldrneb r0, [r5] + orrne r0, r0, #0x80 + strneb r0, [r5] + bl ov29_022FB920 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02345050: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02345004 + + arm_func_start ov29_02345058 +ov29_02345058: ; 0x02345058 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x198 + mov sl, r0 + mov sb, r1 + bl GetLeader + mov r4, r0 + ldrsh r0, [sl] + ldrsh r1, [sl, #2] + ldr r7, [r4, #0xb4] + bl GetTile + ldr r0, [r0, #0x10] + cmp r0, #0 + beq _02345508 + ldr r1, [r0] + cmp r1, #3 + bne _02345508 + bl ov29_022E1610 + ldrb r1, [r7, #0x4e] + mov r5, r0 + mov r0, r4 + cmp r1, #0 + bne _02345108 + mov r1, r5 + mov r2, sb + bl ov29_02348DD8 + cmp r0, #0 + bne _02345508 + cmp sb, #0 + beq _02345508 + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02345514 ; =0x00000BD2 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _02345508 +_02345108: + mov r1, #1 + bl ShouldMonsterRunAwayVariation + cmp r0, #0 + beq _0234515C + cmp sb, #0 + beq _02345508 + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02345518 ; =0x00000BD3 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _02345508 +_0234515C: + ldrsh r0, [r5, #4] + bl GetItemCategoryVeneer + cmp r0, #6 + bne _023451EC + mov r0, r4 + mov r1, #0x1b + bl IqSkillIsEnabled + cmp r0, #0 + ldrneb r0, [r5] + orrne r0, r0, #0x20 + strneb r0, [r5] + mov r0, r5 + bl sub_0200D8AC + mov r6, r0 + ldr r0, _0234551C ; =0x00001308 + bl ov29_022EACCC + mov r0, #0x62 + bl AdvanceFrame + mov r0, r6 + bl AddMoneyCarried + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r0, #0 + mov r1, r5 + bl sub_02024FE8 + mov r0, sl + mov r1, #1 + bl ov29_023456BC + ldr r1, _02345520 ; =0x00000BD6 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + ldrsh r0, [r5, #4] + bl ov29_0234CCB4 + b _02345508 +_023451EC: + ldr r0, _02345524 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x75b] + cmp r0, #0 + beq _02345238 + mov r8, #0 + add r6, sp, #0 + add fp, sp, #0xcc +_0234520C: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + str r0, [r6, r8, lsl #2] + str r8, [fp, r8, lsl #2] + add r8, r8, #1 + cmp r8, #0x32 + blt _0234520C + bl GetCurrentBagCapacity + mov r6, r0 + b _0234524C +_02345238: + add r1, r7, #0x62 + mvn r0, #0 + str r1, [sp] + str r0, [sp, #0xcc] + mov r6, #1 +_0234524C: + ldrsh ip, [r5, #4] + cmp ip, #0xb + bge _02345378 + ldrb r0, [r5] + tst r0, #2 + bne _02345378 + mvn r8, #0 + mov fp, r8 + mov lr, #0 + and r0, r0, #8 + b _023452D8 +_02345278: + add r1, sp, #0 + ldr r1, [r1, lr, lsl #2] + ldrb r1, [r1] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + beq _023452D4 + add r1, sp, #0 + ldr r3, [r1, lr, lsl #2] + ldrb r2, [r3] + tst r2, #2 + ldreqsh r1, [r3, #4] + cmpeq ip, r1 + andeq r1, r2, #8 + cmpeq r0, r1 + bne _023452D4 + ldrh r1, [r3, #2] + cmp r1, #0x63 + beq _023452D4 + cmp fp, r1 + movlt fp, r1 + movlt r8, lr +_023452D4: + add lr, lr, #1 +_023452D8: + cmp lr, r6 + blt _02345278 + mvn r0, #0 + cmp r8, r0 + beq _02345378 + add r1, sp, #0 + ldr r2, [r1, r8, lsl #2] + ldrh r0, [r5, #2] + ldrh r1, [r2, #2] + add r0, r1, r0 + cmp r0, #0x63 + movge r0, #0x63 + strh r0, [r2, #2] + bl ov29_02347040 + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, sl + mov r1, #1 + bl ov29_023456BC + ldr r0, _02345528 ; =0x00001304 + bl ov29_022EACCC + add r0, sp, #0xcc + ldr r0, [r0, r8, lsl #2] + cmp r0, #0 + bge _02345360 + ldr r1, _0234552C ; =0x00000BD4 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _0234536C +_02345360: + ldr r1, _02345530 ; =0x00000BD5 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser +_0234536C: + ldrsh r0, [r5, #4] + bl ov29_0234CCB4 + b _02345508 +_02345378: + mov r8, #0 + add r3, sp, #0 + mov r0, r8 + mov r1, #1 + b _023453AC +_0234538C: + ldr r2, [r3, r8, lsl #2] + ldrb r2, [r2] + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + beq _023453B4 + add r8, r8, #1 +_023453AC: + cmp r8, r6 + blt _0234538C +_023453B4: + mov r0, r4 + mov r1, r5 + mov r2, sb + bl ov29_02348DD8 + cmp r0, #0 + bne _02345508 + cmp r8, r6 + bne _02345418 + cmp sb, #0 + beq _02345508 + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, #0 + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02345514 ; =0x00000BD2 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _02345508 +_02345418: + ldr r0, _02345528 ; =0x00001304 + bl ov29_022EACCC + add r0, sp, #0xcc + ldr r0, [r0, r8, lsl #2] + cmp r0, #0 + bge _02345480 + ldrh r2, [r5] + mov r0, #0 + mov r1, #0x40000 + strh r2, [r7, #0x62] + ldrh r2, [r5, #2] + strh r2, [r7, #0x64] + ldrh r2, [r5, #4] + strh r2, [r7, #0x66] + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, sl + mov r1, #1 + bl ov29_023456BC + ldr r1, _0234552C ; =0x00000BD4 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _02345500 +_02345480: + mov r0, r5 + bl ov29_02348D3C + mov r6, r0 + mov r0, r5 + bl ov29_02345004 + cmp r0, #0 + mov r0, #0 + beq _023454BC + mov r1, r4 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, _02345534 ; =0x00000BD7 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + b _02345500 +_023454BC: + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345510 ; =0x023531BC + mov r1, r5 + mov r0, #0 + bl sub_02024FE8 + mov r0, sl + mov r1, #1 + bl ov29_023456BC + ldr r1, _02345530 ; =0x00000BD5 + mov r0, r4 + bl LogMessageByIdWithPopupCheckUser + mov r0, r5 + mov r1, r6 + bl ov29_02348ECC + cmp r0, #0 + bne _02345508 +_02345500: + ldrsh r0, [r5, #4] + bl ov29_0234CCB4 +_02345508: + add sp, sp, #0x198 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02345510: .word 0x023531BC +_02345514: .word 0x00000BD2 +_02345518: .word 0x00000BD3 +_0234551C: .word 0x00001308 +_02345520: .word 0x00000BD6 +_02345524: .word 0x02353538 +_02345528: .word 0x00001304 +_0234552C: .word 0x00000BD4 +_02345530: .word 0x00000BD5 +_02345534: .word 0x00000BD7 + arm_func_end ov29_02345058 + + arm_func_start ov29_02345538 +ov29_02345538: ; 0x02345538 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl ov29_022E2314 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r6] + ldr r1, [r4, #0xb4] + strh r0, [r1] + ldrh r0, [r6, #2] + strh r0, [r1, #2] + ldrh r0, [r6, #4] + strh r0, [r1, #4] + ldr r1, [r4, #0xb4] + ldrb r0, [r1] + bic r0, r0, #0x10 + strb r0, [r1] + ldr r1, [r4, #0xb4] + ldrb r0, [r1] + bic r0, r0, #0x20 + strb r0, [r1] + ldrb r0, [r6, #1] + cmp r0, #0 + beq _023455A8 + mov r0, r6 + bl RemoveEquivItemNoHole +_023455A8: + mov r0, #1 + strb r0, [r4, #0x20] + ldrsh r0, [r7] + ldrsh r1, [r7, #2] + bl GetTileSafe + ldr r1, _02345690 ; =0x023537B0 + str r4, [r0, #0x10] + ldrb r1, [r1] + cmp r1, #0 + bne _0234563C + ldrh r0, [r0] + tst r0, #0x20 + beq _0234563C + ldrsh r0, [r6, #4] + bl sub_0200CCE0 + cmp r0, #0 + beq _0234563C + ldrb r0, [r6] + tst r0, #2 + beq _02345620 + cmp r5, #0 + beq _0234563C + mov r0, r6 + bl GetActualBuyPrice + ldr r1, _02345694 ; =0x02353538 + ldr r2, [r1] + ldr r1, [r2, #0x7bc] + add r0, r1, r0 + str r0, [r2, #0x7bc] + b _0234563C +_02345620: + mov r0, r6 + bl GetActualSellPrice + ldr r1, _02345694 ; =0x02353538 + ldr r2, [r1] + ldr r1, [r2, #0x7c0] + add r0, r1, r0 + str r0, [r2, #0x7c0] +_0234563C: + mov r4, #0 + ldr r5, _02345694 ; =0x02353538 + mov r6, r4 +_02345648: + ldr r0, [r5] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xbc8] + bl EntityIsValid__02345698 + cmp r0, #0 + addne r4, r6, #1 + add r6, r6, #1 + cmp r6, #0x40 + blt _02345648 + ldr r0, _02345694 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x3f00 + strh r4, [r0, #0xc0] + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02345690: .word 0x023537B0 +_02345694: .word 0x02353538 + arm_func_end ov29_02345538 diff --git a/asm/overlay_29_023456BC.s b/asm/overlay_29_023456BC.s new file mode 100644 index 00000000..03506e91 --- /dev/null +++ b/asm/overlay_29_023456BC.s @@ -0,0 +1,2677 @@ + .include "asm/macros.inc" + .include "overlay_29_023456BC.inc" + + .text + + arm_func_start ov29_023456BC +ov29_023456BC: ; 0x023456BC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r2, r0 + mov r7, r1 + ldrsh r0, [r2] + ldrsh r1, [r2, #2] + bl GetTileSafe + mov r5, r0 + ldr r6, [r5, #0x10] + cmp r6, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r6] + cmp r0, #3 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r6 + bl ov29_022E1610 + ldrh r1, [r5] + mov r4, r0 + tst r1, #0x20 + beq _02345770 + ldrsh r0, [r4, #4] + bl sub_0200CCE0 + cmp r0, #0 + beq _02345770 + ldrb r0, [r4] + tst r0, #2 + beq _02345754 + cmp r7, #0 + beq _02345770 + mov r0, r4 + bl GetActualBuyPrice + ldr r1, _023457C4 ; =0x02353538 + ldr r2, [r1] + ldr r1, [r2, #0x7bc] + sub r0, r1, r0 + str r0, [r2, #0x7bc] + b _02345770 +_02345754: + mov r0, r4 + bl GetActualSellPrice + ldr r1, _023457C4 ; =0x02353538 + ldr r2, [r1] + ldr r1, [r2, #0x7c0] + sub r0, r1, r0 + str r0, [r2, #0x7c0] +_02345770: + mov r4, #0 + str r4, [r5, #0x10] + ldr r5, _023457C4 ; =0x02353538 + mov r7, r4 + str r4, [r6] +_02345784: + ldr r0, [r5] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xbc8] + bl EntityIsValid__02345698 + cmp r0, #0 + addne r4, r7, #1 + add r7, r7, #1 + cmp r7, #0x40 + blt _02345784 + ldr r1, _023457C4 ; =0x02353538 + mov r0, #1 + ldr r1, [r1] + add r1, r1, #0x3f00 + strh r4, [r1, #0xc0] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023457C4: .word 0x02353538 + arm_func_end ov29_023456BC + + arm_func_start ov29_023457C8 +ov29_023457C8: ; 0x023457C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r7, r0 + mov r6, r1 + mov r8, r2 + mov r5, r3 + mov r4, #0 + bl EntityIsValid__02345698 + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r8, #0 + beq _02345830 + ldrsh r0, [r7, #4] + ldrsh r1, [r7, #6] + bl GetTile + ldrh r0, [r0] + ands r0, r0, #3 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r0, #2 + moveq r4, #1 + mov r0, r7 + bl ov29_022E272C + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02345830: + ldr r0, _02345A20 ; =0x02353538 + ldr r3, _02345A24 ; =0x0001A224 + ldr r2, [r0] + add r0, r3, #2 + ldrsh r1, [r2, r0] + add r0, r2, #0x1a000 + ldr sl, [r7, #0x10] + ldr sb, [r7, #0x1c] + ldr r0, [r0, #0x230] + rsb r8, r1, sl, asr #8 + add r8, r0, r8 + sub sb, sl, sb + ldrsh r3, [r2, r3] + rsb sb, r1, sb, asr #8 + add r8, r8, #8 + add r1, r8, r8, lsr #31 + ldr r8, [r7, #0xc] + mvn r2, #0x1f + rsb r8, r3, r8, asr #8 + add sb, r0, sb + cmp r8, r2 + mov sl, r1, asr #1 + cmpge sb, r2 + blt _02345A18 + rsb r0, r2, #0xff + cmp r8, r0 + cmple sb, #0xe0 + bgt _02345A18 + ldr r0, _02345A28 ; =0x0237C864 + cmp r6, #0 + ldrh r1, [r0, #2] + bic r1, r1, #0x3e00 + strh r1, [r0, #2] + beq _023458D8 + ldrh r1, [r0, #4] + mov r6, #0x17 + bic r1, r1, #0xf000 + strh r1, [r0, #4] + ldrh r1, [r0, #4] + orr r1, r1, #0xa000 + strh r1, [r0, #4] + b _02345958 +_023458D8: + ldr r0, [r7, #0xb4] + ldrsh r0, [r0, #4] + bl GetItemSpriteId + mov r6, r0 + cmp r5, #0xff + beq _0234592C + cmp r6, #0 + cmpne r6, #0x3b + bne _0234592C + ldr r0, _02345A28 ; =0x0237C864 + ldr r1, _02345A2C ; =0x023537BC + ldrh r2, [r0, #2] + ldrb r1, [r1, r5] + ldr r3, _02345A30 ; =0x023537B4 + bic r2, r2, #0x3e00 + strh r2, [r0, #2] + ldrh r2, [r0, #2] + mov r1, r1, lsl #0x1e + ldrb r6, [r3, r5] + orr r1, r2, r1, lsr #18 + strh r1, [r0, #2] +_0234592C: + ldr r0, [r7, #0xb4] + ldrsh r0, [r0, #4] + bl sub_0200D1FC + ldr r1, _02345A28 ; =0x0237C864 + mov r0, r0, lsl #0x1c + ldrh r2, [r1, #4] + bic r2, r2, #0xf000 + strh r2, [r1, #4] + ldrh r2, [r1, #4] + orr r0, r2, r0, lsr #16 + strh r0, [r1, #4] +_02345958: + ldr r1, _02345A28 ; =0x0237C864 + mov r2, r6, lsl #1 + ldrh r5, [r1, #6] + ldr r0, _02345A34 ; =0xFFFF000F + add r3, r2, #0x110 + and r2, r5, r0 + strh r2, [r1, #6] + ldrh r6, [r1, #6] + mov r5, sb, lsl #0x14 + ldrb r2, [sp, #0x20] + orr r5, r6, r5, lsr #16 + strh r5, [r1, #6] + ldrh r6, [r1, #2] + cmp r2, #0 + and r5, r8, r0, lsr #23 + and r6, r6, r0, asr #7 + strh r6, [r1, #2] + ldrh r6, [r1, #2] + mov r4, r4, lsl #0x1e + and r3, r3, r0, lsr #22 + orr r2, r6, r5 + strh r2, [r1, #2] + ldrh r2, [r1] + moveq sl, #1 + bic r2, r2, #0xc00 + strh r2, [r1] + ldrh r2, [r1] + orr r2, r2, r4, lsr #20 + strh r2, [r1] + ldrh r2, [r1, #4] + bic r2, r2, #0xc00 + strh r2, [r1, #4] + ldrh r2, [r1, #4] + orr r2, r2, #0xc00 + strh r2, [r1, #4] + ldrh r2, [r1, #4] + and r0, r2, r0, asr #6 + strh r0, [r1, #4] + ldrh r0, [r1, #4] + mov r2, sl + orr r0, r0, r3 + strh r0, [r1, #4] + ldr r0, _02345A38 ; =0x020AFC4C + ldr r1, _02345A28 ; =0x0237C864 + ldr r0, [r0] + bl sub_0201B9F8 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_02345A18: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02345A20: .word 0x02353538 +_02345A24: .word 0x0001A224 +_02345A28: .word 0x0237C864 +_02345A2C: .word 0x023537BC +_02345A30: .word 0x023537B4 +_02345A34: .word 0xFFFF000F +_02345A38: .word 0x020AFC4C + arm_func_end ov29_023457C8 + + arm_func_start ov29_02345A3C +ov29_02345A3C: ; 0x02345A3C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0xc0 + mov r5, r2 + mov r4, #0 + mov r6, #3 + mov r2, #1 + str r6, [sp, #8] + strb r2, [sp, #0x28] + str r5, [sp, #0xbc] + strb r4, [sp, #0x2c] + strb r4, [sp, #0x2a] + ldrh r4, [r1] + mov r6, r0 + mov r2, #0x18 + strh r4, [sp, #0xc] + ldrh ip, [r1, #2] + mov r4, r3 + add r0, sp, #8 + strh ip, [sp, #0xe] + ldrsh r3, [r1] + ldrsh r1, [r1, #2] + smulbb r3, r3, r2 + smulbb r1, r1, r2 + add r2, r1, #4 + add r3, r3, #4 + mov r1, r3, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r0, #0 + strh r0, [sp, #0x2e] + str r0, [sp] + add r1, sp, #8 + mov r0, r6 + mov r2, r5 + mov r3, #1 + str r4, [sp, #4] + bl ov29_02345AD8 + add sp, sp, #0xc0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_02345A3C + + arm_func_start ov29_02345AD8 +ov29_02345AD8: ; 0x02345AD8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r8, r1 + mov sb, r0 + ldrsh r0, [r8, #4] + ldrsh r1, [r8, #6] + mov r7, r2 + mov r4, r3 + ldr r6, [sp, #0x38] + bl GetTile + ldr r0, [r0, #0x10] + mov r5, #0 + cmp r0, #0 + beq _02345B5C + ldr r0, [r0] + cmp r0, #2 + bne _02345B5C + ldrb r2, [sp, #0x3c] + mov r0, r8 + add r1, r8, #4 + bl ov29_02347378 + add r0, r8, #4 + bl ov29_02338430 + ldr r1, _02345D64 ; =0x00000BD8 + mov r0, sb + bl LogMessageByIdWithPopupCheckUser + ldrb r0, [r7] + tst r0, #1 + movne r0, #1 + moveq r0, r5 + tst r0, #0xff + moveq r0, #0 + beq _02345D5C +_02345B5C: + ldrsh r0, [r8, #4] + cmp r4, #0 + movne r4, #0 + strh r0, [sp, #0xc] + ldrsh r0, [r8, #6] + ldrh r1, [sp, #0xc] + ldr fp, _02345D68 ; =0x02351844 + strh r0, [sp, #0xe] + ldrh r0, [sp, #0xe] + strh r1, [sp, #8] + moveq r4, #1 + strh r0, [sp, #0xa] +_02345B8C: + mov r0, r4, lsl #2 + ldrsh r3, [fp, r0] + cmp r3, #0x63 + moveq r5, #0 + beq _02345C44 + ldrsh r2, [r8, #4] + add r0, fp, r0 + ldrsh r1, [r0, #2] + add r0, r2, r3 + strh r0, [sp, #0xc] + ldrsh r2, [r8, #6] + ldrsh r0, [sp, #0xc] + add r1, r2, r1 + strh r1, [sp, #0xe] + ldrsh r1, [sp, #0xe] + bl GetTile + mov sl, r0 + ldrh r0, [sl] + tst r0, #3 + beq _02345C3C + tst r0, #0x200 + ldreq r0, [sl, #0x10] + cmpeq r0, #0 + bne _02345C3C + ldrb r2, [sp, #0x3c] + add r1, sp, #0xc + mov r0, r8 + bl ov29_02347378 + ldrh r0, [sl] + ldrh r2, [sp, #0xc] + ldrh r1, [sp, #0xe] + and r0, r0, #3 + cmp r0, #3 + strh r2, [sp, #8] + strh r1, [sp, #0xa] + moveq r5, #1 + beq _02345C44 + add r0, sp, #0xc + mov r1, r7 + mov r2, #1 + bl ov29_02345538 + cmp r0, #0 + movne r5, #1 + b _02345C44 +_02345C3C: + add r4, r4, #1 + b _02345B8C +_02345C44: + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02345D6C ; =0x023531BC + mov r1, r7 + mov r0, #0 + bl sub_02024FE8 + cmp r5, #0 + beq _02345CF4 + ldrsh r0, [sp, #0xc] + ldrsh r1, [sp, #0xe] + bl ov29_023391EC + ldrsh r0, [sp, #0xc] + ldrsh r1, [sp, #0xe] + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02345D58 +_02345C94: ; jump table + b _02345CCC ; case 0 + b _02345CA4 ; case 1 + b _02345CB8 ; case 2 + b _02345CE0 ; case 3 +_02345CA4: + ldr r2, _02345D70 ; =0x00000BD9 + add r1, sp, #0xc + mov r0, sb + bl LogMessageByIdWithPopupCheckUserUnknown + b _02345D58 +_02345CB8: + ldr r2, _02345D74 ; =0x00000BDA + add r1, sp, #0xc + mov r0, sb + bl LogMessageByIdWithPopupCheckUserUnknown + b _02345D58 +_02345CCC: + ldr r2, _02345D78 ; =0x00000BDB + add r1, sp, #0xc + mov r0, sb + bl LogMessageByIdWithPopupCheckUserUnknown + b _02345D58 +_02345CE0: + ldr r2, _02345D7C ; =0x00000BDF + add r1, sp, #0xc + mov r0, sb + bl LogMessageByIdWithPopupCheckUserUnknown + b _02345D58 +_02345CF4: + ldrsh r2, [sp, #8] + ldrsh r1, [sp, #0xa] + mov r0, #0x18 + smulbb r2, r2, r0 + smulbb r0, r1, r0 + add r1, r2, #0xc + add r0, r0, #0xc + mov r2, r1, lsl #8 + mov r1, r0, lsl #8 + str r2, [sp] + str r1, [sp, #4] + cmp r6, #0 + beq _02345D40 + ldrsh r0, [r6] + add r0, r2, r0, lsl #8 + str r0, [sp] + ldrsh r0, [r6, #2] + add r0, r1, r0, lsl #8 + str r0, [sp, #4] +_02345D40: + add r0, sp, #0 + bl ov29_022E563C + ldr r2, _02345D80 ; =0x00000BDC + add r1, sp, #0xc + mov r0, sb + bl LogMessageByIdWithPopupCheckUserUnknown +_02345D58: + mov r0, r5 +_02345D5C: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02345D64: .word 0x00000BD8 +_02345D68: .word 0x02351844 +_02345D6C: .word 0x023531BC +_02345D70: .word 0x00000BD9 +_02345D74: .word 0x00000BDA +_02345D78: .word 0x00000BDB +_02345D7C: .word 0x00000BDF +_02345D80: .word 0x00000BDC + arm_func_end ov29_02345AD8 + + arm_func_start ov29_02345D84 +ov29_02345D84: ; 0x02345D84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r1 + ldrsh r0, [sl, #4] + ldrsh r1, [sl, #6] + str r2, [sp, #4] + mov sb, r3 + bl GetTile + ldr r0, _02346048 ; =0x02353538 + mov r4, #0 + ldr r0, [r0] + ldr r1, _0234604C ; =0x020A1AE8 + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd4] + mov r7, r4 + mov r8, r4 + ldrb r0, [r1, r0] + mov r6, #1 + mov fp, #0 + cmp r0, #1 + ldrsh r0, [sl, #4] + moveq r7, #1 + ldr r5, _02346050 ; =0x023518AC + strh r0, [sp, #0x14] + ldrsh r0, [sl, #6] + ldrh r1, [sp, #0x14] + strh r0, [sp, #0x16] + ldrh r0, [sp, #0x16] + strh r1, [sp, #0x10] + strh r0, [sp, #0x12] + b _02345F74 +_02345E00: + mov r0, r6, lsl #2 + ldrsh r0, [r5, r0] + ldrsh r3, [sl, #4] + cmp r0, #0x63 + moveq r6, fp + mov r0, r6, lsl #2 + ldrsh r2, [r5, r0] + add r0, r5, r6, lsl #2 + ldrsh r1, [r0, #2] + add r0, r3, r2 + strh r0, [sp, #0x14] + ldrsh r2, [sl, #6] + ldrsh r0, [sp, #0x14] + moveq r8, #1 + add r1, r2, r1 + strh r1, [sp, #0x16] + ldrsh r1, [sp, #0x16] + bl GetTile + ldrh r1, [r0] + ands r2, r1, #3 + beq _02345F70 + tst r1, #0x200 + bne _02345F70 + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _02345F64 + ldrh r1, [sp, #0x14] + ldrh r0, [sp, #0x16] + cmp r2, #3 + strh r1, [sp, #0x10] + strh r0, [sp, #0x12] + beq _02345F70 + cmp r7, #0 + beq _02345E90 + cmp r2, #2 + beq _02345F70 +_02345E90: + ldr r0, _02346048 ; =0x02353538 + ldrsh r2, [sp, #0x14] + ldr r3, [r0] + mov r0, #0x18 + ldrsh r1, [sp, #0x16] + smulbb r2, r2, r0 + smulbb r1, r1, r0 + add r0, r3, #0x1a000 + add r2, r2, #4 + add r1, r1, #4 + ldrb fp, [r0, #0x245] + mov r5, #0x10000 + mov r7, r2, lsl #8 + mov r8, r1, lsl #8 + mov r0, sl + mov r1, r7 + mov r2, r8 + str r5, [sl, #0x1c] + bl ov29_022E1A84 + mov r6, #0 +_02345EE0: + sub r5, r5, #0x800 + mov r2, #0 + str r5, [sl, #0x1c] + mov r0, sl + mov r1, fp + mov r3, r2 + str r2, [sp] + bl ov29_023457C8 + mov r0, #0x13 + bl AdvanceFrame + add r6, r6, #1 + cmp r6, #0x20 + blt _02345EE0 + mov r0, sl + mov r1, r7 + mov r2, r8 + bl ov29_022E1A84 + mov r2, #0 + str r2, [sl, #0x1c] + mov r0, sl + mov r1, fp + mov r3, r2 + str r2, [sp] + bl ov29_023457C8 + mov r0, #0x13 + bl AdvanceFrame + ldr r1, [sp, #4] + add r0, sp, #0x14 + mov r2, #1 + bl ov29_02345538 + cmp r0, #0 + movne r4, #1 + b _02345F7C +_02345F64: + cmp r8, #0 + movne r4, #0 + bne _02345F7C +_02345F70: + add r6, r6, #1 +_02345F74: + cmp r8, #0 + beq _02345E00 +_02345F7C: + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _02346054 ; =0x023531BC + ldr r1, [sp, #4] + mov r0, #0 + bl sub_02024FE8 + cmp r4, #0 + beq _02345FC4 + bl ov29_022EACBC + ldr r1, _02346058 ; =0x00000B74 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldr r1, _02346058 ; =0x00000B74 + mov r0, #0 + bl LogMessageByIdQuiet + b _0234603C +_02345FC4: + ldrsh r2, [sp, #0x10] + ldrsh r1, [sp, #0x12] + mov r0, #0x18 + smulbb r2, r2, r0 + smulbb r0, r1, r0 + add r1, r2, #0xc + add r0, r0, #0xc + mov r2, r1, lsl #8 + mov r1, r0, lsl #8 + str r2, [sp, #8] + str r1, [sp, #0xc] + cmp sb, #0 + beq _02346010 + ldrsh r0, [sb] + add r0, r2, r0, lsl #8 + str r0, [sp, #8] + ldrsh r0, [sb, #2] + add r0, r1, r0, lsl #8 + str r0, [sp, #0xc] +_02346010: + add r0, sp, #8 + bl ov29_022E563C + ldr r1, _0234605C ; =0x00000B75 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldr r1, _0234605C ; =0x00000B75 + mov r0, #0 + bl LogMessageByIdQuiet + mov r0, #0 + b _02346040 +_0234603C: + mov r0, #1 +_02346040: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02346048: .word 0x02353538 +_0234604C: .word 0x020A1AE8 +_02346050: .word 0x023518AC +_02346054: .word 0x023531BC +_02346058: .word 0x00000B74 +_0234605C: .word 0x00000B75 + arm_func_end ov29_02345D84 + + arm_func_start ov29_02346060 +ov29_02346060: ; 0x02346060 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl ov29_022E08A0 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl IsUnown + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _023460D8 ; =0x022C4474 + ldrsh r0, [r0] + bl DungeonRandOutcome__022EAB20 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + sub r0, r5, #0xc9 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + add r0, r0, #0x190 + mov r1, r0, lsl #0x10 + mov r0, r4 + mov r1, r1, asr #0x10 + mov r2, #0 + mov r3, #2 + bl ov29_023472C4 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023460D8: .word 0x022C4474 + arm_func_end ov29_02346060 + + arm_func_start ov29_023460DC +ov29_023460DC: ; 0x023460DC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x18 + mov r7, r0 + mov r4, r1 + mov r6, r2 + mov r5, r3 + bl ov29_022FB51C + cmp r0, #0 + beq _02346134 + bl ov29_022E0880 + cmp r0, #0 + bne _02346134 + bl ov29_022E08A0 + cmp r0, #0 + bne _02346134 + mov r0, r4 + bl EntityIsValid__02345698 + cmp r0, #0 + beq _02346134 + ldr r0, [r4] + cmp r0, #1 + beq _0234613C +_02346134: + mov r0, #0 + b _02346330 +_0234613C: + ldr r4, [r4, #0xb4] + add r1, sp, #0 + ldrsh r0, [r4, #2] + bl GetTreasureBoxChances + cmp r5, #0 + ble _02346184 + ldr r1, _02346338 ; =0x022C48EC + mov lr, #0 + add r3, sp, #0 +_02346160: + mov ip, lr, lsl #1 + ldrsh r2, [r3, ip] + add lr, lr, #1 + cmp r2, #0 + ldrnesh r0, [r1, ip] + mlane r0, r5, r0, r2 + strneh r0, [r3, ip] + cmp lr, #4 + blt _02346160 +_02346184: + mov r2, #0 + mov r1, r2 + add r0, sp, #8 +_02346190: + str r1, [r0, r2, lsl #2] + add r2, r2, #1 + cmp r2, #4 + blt _02346190 + ldrsh r0, [sp] + mov ip, #1 + add r5, sp, #0 + str r0, [sp, #8] + add r2, sp, #8 +_023461B4: + mov r3, ip, lsl #1 + add r1, r2, ip, lsl #2 + ldrsh r3, [r5, r3] + ldr r1, [r1, #-4] + add r1, r1, r3 + str r1, [r2, ip, lsl #2] + add ip, ip, #1 + cmp ip, #4 + add r0, r0, r3 + blt _023461B4 + bl DungeonRandInt + ldr r1, [sp, #8] + cmp r1, #0 + beq _023461F4 + cmp r0, r1 + bge _023461FC +_023461F4: + mov r0, #0 + b _02346330 +_023461FC: + ldr r1, [sp, #0xc] + cmp r0, r1 + bge _0234626C + mov r5, #0 + mov r4, r5 + cmp r6, #0 + beq _02346230 + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _0234633C ; =0x022C44C8 + ldrsh r1, [r1] + cmp r1, r0 + movlt r5, #1 +_02346230: + cmp r5, #0 + movne r5, #0x67 + bne _02346310 + ldr r0, _02346340 ; =0x02353538 + ldr r0, [r0] + add r5, r0, #0x348 + add r0, r5, #0x400 + bl sub_0204F7A8 + mov r1, r0 + cmp r1, #0xf + movgt r1, #0xf + add r0, r5, #0x400 + bl RetrieveFromItemList1 + mov r5, r0 + b _02346310 +_0234626C: + ldr r1, [sp, #0x10] + cmp r0, r1 + ldrsh r0, [r4, #2] + bge _023462C8 + mov r1, #0 + bl GetExclusiveItem + movs r5, r0 + mov r4, #1 + bne _02346310 + ldr r0, _02346340 ; =0x02353538 + ldr r0, [r0] + ldr r0, [r0, #0x7cc] + cmp r0, #0 + moveq r0, #0x6e + movne r0, #0x6a + bl DungeonRandInt + mov r0, r0, lsl #0x12 + mov r0, r0, asr #0x10 + add r0, r0, #0x3e + add r0, r0, #0x200 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + b _02346310 +_023462C8: + mov r1, #1 + bl GetExclusiveItem + movs r5, r0 + mov r4, #2 + bne _02346310 + ldr r0, _02346340 ; =0x02353538 + ldr r0, [r0] + ldr r0, [r0, #0x7cc] + cmp r0, #0 + moveq r0, #0x6e + movne r0, #0x6a + bl DungeonRandInt + mov r0, r0, lsl #0x12 + mov r0, r0, asr #0x10 + add r0, r0, #0x3f + add r0, r0, #0x200 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_02346310: + mov r0, r4 + bl ov29_02344BF8 + mov r1, r0 + mov r0, r7 + mov r2, r5 + mov r3, #2 + bl ov29_023472C4 + mov r0, #1 +_02346330: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02346338: .word 0x022C48EC +_0234633C: .word 0x022C44C8 +_02346340: .word 0x02353538 + arm_func_end ov29_023460DC + + arm_func_start ov29_02346344 +ov29_02346344: ; 0x02346344 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x3ec + sub sp, sp, #0x400 + mov r4, #0 + str r0, [sp, #4] + str r1, [sp, #8] + ldr sb, [sp, #0x810] + ldr r8, [sp, #0x814] + ldr r7, [sp, #0x818] + mov fp, r2 + mov sl, r3 + mov r1, r4 + mov r6, r4 + add r0, sp, #0x24 +_0234637C: + strb r6, [r0, r1] + add r1, r1, #1 + cmp r1, #0x1e + blt _0234637C + b _0234647C +_02346390: + ldrsh r1, [fp] + ldrsh r0, [fp, #2] + mov r5, #0 + strh r1, [sp, #0x20] + str r5, [sp, #0x14] + strh r0, [sp, #0x22] +_023463A8: + cmp r5, #0x1e + bge _02346454 + mov r2, r5, lsl #2 + ldrsh r0, [r8, r2] + cmp r0, #0x63 + beq _02346454 + add r1, sp, #0x24 + ldrb r1, [r1, r5] + cmp r1, #0 + bne _0234644C + add r1, r8, r2 + ldrsh r1, [r1, #2] + ldrsh r3, [fp] + ldrsh r2, [fp, #2] + add r3, r3, r0 + add r0, r2, r1 + strh r3, [sp, #0x20] + strh r0, [sp, #0x22] + ldrsh r0, [sp, #0x20] + ldrsh r1, [sp, #0x22] + bl GetTile + ldrh r1, [r0] + tst r1, #3 + beq _0234644C + tst r1, #0x200 + ldreq r0, [r0, #0x10] + cmpeq r0, #0 + bne _0234644C + ldrh r1, [sp, #0x20] + add r0, sp, #0x42 + mov r2, r6, lsl #2 + strh r1, [r0, r2] + mov r1, #1 + ldrh r3, [sp, #0x22] + str r1, [sp, #0x14] + mov r2, r1 + add r1, sp, #0x24 + add r0, r0, r6, lsl #2 + strb r2, [r1, r5] + strh r3, [r0, #2] + b _02346454 +_0234644C: + add r5, r5, #1 + b _023463A8 +_02346454: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _02346478 + add r0, sp, #0x42 + mov r1, r6, lsl #2 + mvn r2, #0 + strh r2, [r0, r1] + add r0, r0, r6, lsl #2 + strh r2, [r0, #2] +_02346478: + add r6, r6, #1 +_0234647C: + cmp r6, sb + blt _02346390 + mov r1, #0 + mov r5, r1 + mov r8, r1 + add fp, sp, #0x42 + b _023465B4 +_02346498: + mov r0, r8, lsl #2 + ldrsh r2, [fp, r0] + cmp r2, #0 + bge _023464C4 + mov r0, #0xb8 + mul r3, r8, r0 + mov r2, #0 + add r0, sp, #0xbc + str r2, [r0, r3] + mov r5, #1 + b _023465B0 +_023464C4: + mov r1, #0xb8 + mul r3, r8, r1 + add r1, sp, #0xbc + mov r2, #3 + str r2, [r1, r3] + add r6, r1, r3 + mov r1, #0 + strb r1, [r6, #0x24] + mov r1, #1 + strb r1, [r6, #0x20] + mov r1, #0 + strb r1, [r6, #0x22] + mov r1, #6 + mla r1, r8, r1, sl + str r1, [r6, #0xb4] + add r1, fp, r0 + ldrh r2, [fp, r0] + ldrh r1, [r1, #2] + mov r0, r6 + strh r2, [r6, #4] + strh r1, [r6, #6] + ldr r1, [sp, #8] + ldrsh r2, [r1] + ldrsh r3, [r1, #2] + mov r1, #0x18 + smulbb r1, r2, r1 + mov r2, #0x18 + smulbb r2, r3, r2 + add r1, r1, #4 + add r2, r2, #4 + mov r1, r1, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r0, #0 + strh r0, [r6, #0x26] + mov r0, r8, lsl #2 + ldrsh r3, [fp, r0] + mov r1, #0x18 + mov r0, r1 + smulbb r0, r3, r0 + ldr r2, [r6, #0xc] + add r0, r0, #4 + rsb r0, r2, r0, lsl #8 + bl DivideInt + add r1, sp, #0x6c + str r0, [r1, r8, lsl #3] + add r0, fp, r8, lsl #2 + ldrsh r3, [r0, #2] + mov r1, #0x18 + mov r0, r1 + smulbb r0, r3, r0 + ldr r2, [r6, #0x10] + add r0, r0, #4 + rsb r0, r2, r0, lsl #8 + bl DivideInt + add r1, sp, #0x6c + add r1, r1, r8, lsl #3 + str r0, [r1, #4] + mov r1, #1 +_023465B0: + add r8, r8, #1 +_023465B4: + cmp r8, sb + blt _02346498 + cmp r1, #0 + bne _02346614 + cmp r7, #0 + beq _0234660C + cmp sb, #2 + blt _023465E4 + ldr r1, _023467D0 ; =0x00000BDD + ldr r0, [sp, #4] + bl LogMessageByIdWithPopupCheckUser + b _0234660C +_023465E4: + mov r0, #0 + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _023467D4 ; =0x023531BC + mov r1, sl + mov r0, #0 + bl sub_02024FE8 + ldr r1, _023467D8 ; =0x00000BDC + ldr r0, [sp, #4] + bl LogMessageByIdWithPopupCheckUser +_0234660C: + mov r0, #0 + b _023467C4 +_02346614: + cmp r5, #0 + cmpne r7, #0 + beq _0234662C + ldr r1, _023467DC ; =0x00000BDE + ldr r0, [sp, #4] + bl LogMessageByIdWithPopupCheckUser +_0234662C: + ldr r0, _023467E0 ; =0x02353538 + mov r6, #0 + ldr r0, [r0] + mov fp, r6 + add r0, r0, #0x1a000 + ldrb r0, [r0, #0x245] + mov r5, r6 + str r0, [sp, #0x10] +_0234664C: + and r0, r6, #0xff + mov r8, #0 + str r0, [sp, #0x1c] + b _023466E4 +_0234665C: + mov r0, #0xb8 + mul r0, r8, r0 + add r1, sp, #0xbc + str r0, [sp, #0x18] + add r0, r1, r0 + bl EntityIsValid__02345698 + cmp r0, #0 + beq _023466E0 + mov r1, #0xb8 + add r0, sp, #0xbc + mla r0, r8, r1, r0 + add r2, sp, #0x6c + add r1, sp, #0x6c + add r2, r2, r8, lsl #3 + ldr r1, [r1, r8, lsl #3] + ldr r2, [r2, #4] + str r0, [sp, #0xc] + bl ov29_022E1A90 + mov r0, fp + bl sub_020018D0 + mov r1, #0xc + mul r1, r0, r1 + ldr r0, [sp, #0xc] + ldr r3, [sp, #0x1c] + str r1, [r0, #0x1c] + ldr r0, [sp, #0x18] + add r1, sp, #0xbc + add r0, r1, r0 + mov r1, #0 + str r1, [sp] + ldr r1, [sp, #0x10] + mov r2, #1 + bl ov29_023457C8 +_023466E0: + add r8, r8, #1 +_023466E4: + cmp r8, sb + blt _0234665C + mov r0, #0x13 + bl AdvanceFrame + tst r5, #3 + addeq r6, r6, #1 + add r5, r5, #1 + add fp, fp, #0x55 + and r6, r6, #7 + cmp r5, #0x18 + blt _0234664C + mov r8, #0 + add r6, sp, #0x42 + mov fp, r8 + mov r5, #6 + b _023467B8 +_02346724: + mov r1, r8, lsl #2 + ldrsh r0, [r6, r1] + cmp r0, #0 + blt _023467B4 + add r1, r6, r1 + ldrsh r1, [r1, #2] + bl GetTile + ldrh r0, [r0] + and r0, r0, #3 + cmp r0, #3 + bne _02346784 + cmp r7, #0 + beq _023467B4 + mov r0, fp + mov r1, #0x40000 + bl ov29_0234B084 + ldr r2, _023467D4 ; =0x023531BC + mov r0, #0 + mov r1, sl + bl sub_02024FE8 + ldr r0, [sp, #4] + ldr r1, _023467D8 ; =0x00000BDC + bl LogMessageByIdWithPopupCheckUser + b _023467B4 +_02346784: + mla r1, r8, r5, sl + add r0, r6, r8, lsl #2 + mov r2, #1 + bl ov29_02345538 + mov r0, r8, lsl #2 + add r1, r6, r8, lsl #2 + ldrsh r0, [r6, r0] + ldrsh r1, [r1, #2] + bl ov29_023391EC + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 +_023467B4: + add r8, r8, #1 +_023467B8: + cmp r8, sb + blt _02346724 + mov r0, r4 +_023467C4: + add sp, sp, #0x3ec + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023467D0: .word 0x00000BDD +_023467D4: .word 0x023531BC +_023467D8: .word 0x00000BDC +_023467DC: .word 0x00000BDE +_023467E0: .word 0x02353538 + arm_func_end ov29_02346344 + + arm_func_start HasHeldItem +HasHeldItem: ; 0x023467E4 + ldr r0, [r0, #0xb4] + ldrb r2, [r0, #0x62] + tst r2, #1 + movne r3, #1 + moveq r3, #0 + tst r3, #0xff + moveq r0, #0 + bxeq lr + tst r2, #8 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + movne r0, #0 + bxne lr + ldrsh r0, [r0, #0x66] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end HasHeldItem + + arm_func_start ov29_02346834 +ov29_02346834: ; 0x02346834 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #0x64 + mov r4, r1 + bl DungeonRandInt + mov r3, #0 + ldr r2, _02346884 ; =0x020A1F20 + b _02346870 +_02346854: + ldr r1, [r2, r0, lsl #2] + cmp r1, r4 + strleh r0, [r5, #2] + ldmleia sp!, {r3, r4, r5, pc} + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + add r3, r3, #1 +_02346870: + cmp r3, #0xc8 + blt _02346854 + mov r0, #1 + strh r0, [r5, #2] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02346884: .word 0x020A1F20 + arm_func_end ov29_02346834 + + arm_func_start ov29_02346888 +ov29_02346888: ; 0x02346888 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r1, _023468F8 ; =0x02353538 + mov r0, #7 + ldr r1, [r1] + ldrb r4, [r1, #0xc] + bl IsCurrentMissionType + ldr r1, _023468F8 ; =0x02353538 + mov r0, #0 + ldr r2, [r1] + strb r0, [r2, #0xc] + ldr r1, [r1] + ldrb r1, [r1, #0xc] + cmp r1, #1 + cmpeq r4, #0 + bne _023468F0 + mov r2, r0 + mov r3, r0 + mov r1, #0xbe0 + str r0, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _023468F0 + mov r0, #2 + mov r1, #1 + bl ov29_022E09E8 +_023468F0: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_023468F8: .word 0x02353538 + arm_func_end ov29_02346888 + + arm_func_start ov29_023468FC +ov29_023468FC: ; 0x023468FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r0 + ldrsh r0, [r4, #4] + bl GetItemCategoryVeneer + cmp r0, #5 + bne _023469D4 + ldrsh r0, [r4, #4] + bl GetItemMoveId16 + mov r8, r0 + ldrsh r0, [r4, #4] + bl IsHM + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r7, #0 + mov r6, r7 + mov r5, r7 + mov fp, r7 + ldr r4, _023469DC ; =0x02353538 + b _023469C4 +_0234694C: + ldr r0, [r4] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr sl, [r0, #0xb28] + mov r0, sl + bl EntityIsValid__02345698 + cmp r0, #0 + beq _023469C0 + ldr r1, [sl, #0xb4] + mov r0, r8 + ldrsh r1, [r1, #2] + bl sub_02053D1C + mov sb, r0 + mov r0, sl + bl ov29_023009A0 + cmp r0, #0 + movne sb, r6 + mov r0, sl + mov r1, r8 + bl ov29_022FBA54 + cmp r0, #0 + movne sb, r5 + mov r0, sl + bl ov29_022FBA70 + cmp r0, #0 + movne sb, fp + cmp sb, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023469C0: + add r7, r7, #1 +_023469C4: + cmp r7, #4 + blt _0234694C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023469D4: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023469DC: .word 0x02353538 + arm_func_end ov29_023468FC + + arm_func_start ov29_023469E0 +ov29_023469E0: ; 0x023469E0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, #0 + ldr r5, _02346A60 ; =0x020AF6B8 + mov sl, r0 + mov r6, r8 + mov r7, #1 + mov fp, r8 + mov r4, #6 +_02346A00: + mul r1, r8, r4 + ldr r0, [r5] + ldr r2, [r0, #0x384] + ldrb r0, [r2, r1] + add sb, r2, r1 + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _02346A48 + ldrb r0, [sb] + tst r0, sl + beq _02346A48 + ldrb r0, [sb, #1] + mov r1, fp + bl ClearItem + mov r0, sb + bl ItemZInit +_02346A48: + add r8, r8, #1 + cmp r8, #0x32 + blt _02346A00 + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02346A60: .word 0x020AF6B8 + arm_func_end ov29_023469E0 + + arm_func_start ov29_02346A64 +ov29_02346A64: ; 0x02346A64 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + ldr r5, _02346BD0 ; =0x02353538 + mov r7, #0x55 + mov r6, r4 +_02346A78: + ldr r0, [r5] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr r8, [r0, #0xb28] + mov r0, r8 + bl EntityIsValid__02345698 + cmp r0, #0 + beq _02346AC4 + ldr sb, [r8, #0xb4] + add r0, sb, #0x62 + bl sub_0200CC38 + cmp r0, #0 + beq _02346AC4 + mov r1, r7 + mov r2, r6 + add r0, sb, #0x62 + ldrb r8, [sb, #0x63] + bl InitStandardItem + strb r8, [sb, #0x63] +_02346AC4: + add r4, r4, #1 + cmp r4, #4 + blt _02346A78 + mov sb, #0 + mov r7, #1 + mov r6, sb + mov r4, sb + mov r5, r7 + mov fp, #0x55 +_02346AE8: + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetActiveTeamMember + mov r8, r0 + ldrb r0, [r8] + tst r0, #1 + movne r1, r7 + moveq r1, r6 + tst r1, #0xff + beq _02346B5C + tst r0, #2 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _02346B5C + ldrsh r0, [r8, #8] + bl IsMonsterIdInNormalRange__02056294 + cmp r0, #0 + beq _02346B5C + add r0, r8, #0x3e + bl sub_0200CC38 + cmp r0, #0 + beq _02346B5C + mov r1, fp + mov r2, #0 + add r0, r8, #0x3e + ldrb sl, [r8, #0x3f] + bl InitStandardItem + strb sl, [r8, #0x3f] +_02346B5C: + add sb, sb, #1 + cmp sb, #4 + blt _02346AE8 + mov r4, #0 + ldr r6, _02346BD4 ; =0x020AF6B8 + mov r8, #0x55 + mov r7, r4 + mov r5, #6 +_02346B7C: + ldr r0, [r6] + ldr r0, [r0, #0x384] + mla sb, r4, r5, r0 + mov r0, sb + bl sub_0200CC38 + cmp r0, #0 + beq _02346BB8 + mov r0, sb + mov r1, r8 + mov r2, r7 + ldrb sl, [sb, #1] + bl InitStandardItem + mov r0, sb + bl SetItemAcquired + strb sl, [sb, #1] +_02346BB8: + add r4, r4, #1 + cmp r4, #0x32 + blt _02346B7C + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02346BD0: .word 0x02353538 +_02346BD4: .word 0x020AF6B8 + arm_func_end ov29_02346A64 + + arm_func_start ov29_02346BD8 +ov29_02346BD8: ; 0x02346BD8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _02346CB4 ; =0x020AF6B8 + mov r7, #0 + mov r5, r0 + ldr r8, [r1] + mov r2, r7 + mov r3, #1 + mov r0, #6 + b _02346C30 +_02346BFC: + mul r4, r7, r0 + ldr r6, [r8, #0x384] + ldrb r1, [r6, r4] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _02346C2C + ldrb r1, [r6, r4] + tst r1, r5 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02346C2C: + add r7, r7, #1 +_02346C30: + cmp r7, #0x32 + blt _02346BFC + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + mov r4, #0 + mov r7, r4 + mov r8, #1 + ldr r6, _02346CB8 ; =0x02353538 + b _02346CA4 +_02346C54: + ldr r0, [r6] + add r0, r0, r4, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb28] + mov r0, sb + bl EntityIsValid__02345698 + cmp r0, #0 + beq _02346CA0 + ldr r1, [sb, #0xb4] + ldrb r0, [r1, #0x62] + tst r0, #1 + movne r0, r8 + moveq r0, r7 + tst r0, #0xff + beq _02346CA0 + ldrb r0, [r1, #0x62] + tst r0, r5 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02346CA0: + add r4, r4, #1 +_02346CA4: + cmp r4, #4 + blt _02346C54 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02346CB4: .word 0x020AF6B8 +_02346CB8: .word 0x02353538 + arm_func_end ov29_02346BD8 + + arm_func_start ov29_02346CBC +ov29_02346CBC: ; 0x02346CBC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sb, #0 + mov r8, #1 + ldr r5, _02346DA0 ; =0x020AF6B8 + mov r7, sb + mov fp, sb + mov r6, r8 + mov r4, #6 +_02346CDC: + mul r1, sb, r4 + ldr r0, [r5] + ldr r2, [r0, #0x384] + ldrb r0, [r2, r1] + add sl, r2, r1 + tst r0, #1 + movne r0, r8 + moveq r0, r7 + tst r0, #0xff + beq _02346D8C + ldrb r0, [sl] + bic r0, r0, #8 + strb r0, [sl] + ldrsh r0, [sl, #4] + cmp r0, #0xb7 + bne _02346D78 + mov r0, sl + bl sub_0200D8AC + bl AddMoneyCarried + ldrb r0, [sl, #1] + cmp r0, #0 + beq _02346D70 + sub r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetActiveTeamMember + ldrb r1, [r0, #0x3e] + tst r1, #1 + movne r1, r6 + moveq r1, fp + tst r1, #0xff + beq _02346D70 + ldrsh r1, [r0, #0x42] + cmp r1, #0xb7 + bne _02346D70 + add r0, r0, #0x3e + bl ItemZInit +_02346D70: + mov r0, sl + bl ItemZInit +_02346D78: + ldrb r0, [sl] + tst r0, #2 + beq _02346D8C + mov r0, sl + bl ItemZInit +_02346D8C: + add sb, sb, #1 + cmp sb, #0x32 + blt _02346CDC + bl RemoveEmptyItemsInBag + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02346DA0: .word 0x020AF6B8 + arm_func_end ov29_02346CBC + + arm_func_start ov29_02346DA4 +ov29_02346DA4: ; 0x02346DA4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + bl ov29_02346CBC + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + mov r8, #0 + mov r7, #1 + mov r6, r8 + mov r4, r8 + mov r5, r7 +_02346DC8: + mov r0, r8 + bl GetActiveTeamMember + mov sb, r0 + ldrb r0, [sb] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _02346E30 + ldrb r0, [sb, #0x3e] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _02346E30 + ldrb r0, [sb, #0x3e] + bic r0, r0, #8 + strb r0, [sb, #0x3e] + ldrsh r0, [sb, #0x42] + cmp r0, #0xb7 + bne _02346E30 + add r0, sb, #0x3e + bl sub_0200D8AC + bl AddMoneyCarried + add r0, sb, #0x3e + bl ItemZInit +_02346E30: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _02346DC8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end ov29_02346DA4 + + arm_func_start ov29_02346E48 +ov29_02346E48: ; 0x02346E48 + stmdb sp!, {r3, lr} + bl ov29_02346CBC + bl sub_02057CE8 + bl sub_0200F910 + ldmia sp!, {r3, pc} + arm_func_end ov29_02346E48 + + arm_func_start ov29_02346E5C +ov29_02346E5C: ; 0x02346E5C + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + ldr r1, _02346EB8 ; =0x020AF6B8 + mov r3, r5 + mov ip, #1 + mov r0, #6 +_02346E74: + mul lr, r5, r0 + ldr r2, [r1] + ldr r4, [r2, #0x384] + ldrb r2, [r4, lr] + tst r2, #1 + movne r2, ip + moveq r2, r3 + tst r2, #0xff + beq _02346EA8 + ldrb r2, [r4, lr] + tst r2, #4 + bicne r2, r2, #4 + strneb r2, [r4, lr] +_02346EA8: + add r5, r5, #1 + cmp r5, #0x32 + blt _02346E74 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02346EB8: .word 0x020AF6B8 + arm_func_end ov29_02346E5C + + arm_func_start ov29_02346EBC +ov29_02346EBC: ; 0x02346EBC + ldrb r1, [r0, #6] + cmp r1, #0 + bne _02346F04 + ldr r1, _02346F0C ; =0x02353538 + mov r3, #0 + ldr r1, [r1] + add r1, r1, #0x3f4 + add r2, r1, #0x400 + b _02346EFC +_02346EE0: + add r1, r3, r3, lsl #3 + add r1, r2, r1, lsl #6 + cmp r1, r0 + ldreq r0, _02346F10 ; =0x023531C8 + ldreqb r0, [r0, r3] + bxeq lr + add r3, r3, #1 +_02346EFC: + cmp r3, #4 + blt _02346EE0 +_02346F04: + mov r0, #0 + bx lr + .align 2, 0 +_02346F0C: .word 0x02353538 +_02346F10: .word 0x023531C8 + arm_func_end ov29_02346EBC + + arm_func_start ov29_02346F14 +ov29_02346F14: ; 0x02346F14 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + bl GetCurrentBagCapacity + ldr r1, _02346FB4 ; =0x020AF6B8 + mov lr, #0 + ldr r6, [r1] + mov r2, lr + mov r3, #1 + mov r1, #6 + b _02346FA4 +_02346F3C: + mul r4, lr, r1 + ldr ip, [r6, #0x384] + ldrb ip, [ip, r4] + tst ip, #1 + movne ip, r3 + moveq ip, r2 + tst ip, #0xff + bne _02346FA0 + mov r0, r5 + bl ov29_02346EBC + strb r0, [r5, #0x63] + ldr r0, _02346FB4 ; =0x020AF6B8 + ldrh r1, [r5, #0x62] + ldr r2, [r0] + add r0, r5, #0x62 + ldr r2, [r2, #0x384] + strh r1, [r2, r4] + ldrh r1, [r5, #0x64] + add r2, r2, r4 + strh r1, [r2, #2] + ldrh r1, [r5, #0x66] + strh r1, [r2, #4] + bl SetItemAcquired + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02346FA0: + add lr, lr, #1 +_02346FA4: + cmp lr, r0 + blt _02346F3C + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02346FB4: .word 0x020AF6B8 + arm_func_end ov29_02346F14 + + arm_func_start ov29_02346FB8 +ov29_02346FB8: ; 0x02346FB8 + ldr r1, _02346FFC ; =0x02353538 + mov r3, #0 + ldr r1, [r1] + add r1, r1, #0x56 + add r2, r1, #0x800 + b _02346FE4 +_02346FD0: + add r1, r3, r3, lsl #3 + add r1, r2, r1, lsl #6 + cmp r1, r0 + beq _02346FEC + add r3, r3, #1 +_02346FE4: + cmp r3, #4 + blt _02346FD0 +_02346FEC: + cmp r3, #4 + mvneq r0, #0 + movne r0, r3 + bx lr + .align 2, 0 +_02346FFC: .word 0x02353538 + arm_func_end ov29_02346FB8 + + arm_func_start ov29_02347000 +ov29_02347000: ; 0x02347000 + ldr r1, _0234702C ; =0x022C4CD8 + b _02347018 +_02347008: + cmp r0, r2 + moveq r0, #1 + bxeq lr + add r1, r1, #2 +_02347018: + ldrsh r2, [r1] + cmp r2, #0 + bne _02347008 + mov r0, #0 + bx lr + .align 2, 0 +_0234702C: .word 0x022C4CD8 + arm_func_end ov29_02347000 + + arm_func_start ov29_02347030 +ov29_02347030: ; 0x02347030 + stmdb sp!, {r3, lr} + bl RemoveEmptyItemsInBag + bl ov29_022FB920 + ldmia sp!, {r3, pc} + arm_func_end ov29_02347030 + + arm_func_start ov29_02347040 +ov29_02347040: ; 0x02347040 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, #0 + ldr r5, _023470F8 ; =0x02353538 + ldr r6, _023470FC ; =0x020AF6B8 + mov fp, r8 + mov r7, #1 + mov r4, #6 +_0234705C: + mul sl, r8, r4 + ldr r0, [r6] + ldr r1, [r0, #0x384] + ldrb r0, [r1, sl] + add r1, r1, sl + tst r0, #1 + movne r0, r7 + moveq r0, fp + tst r0, #0xff + ldrneb r1, [r1, #1] + cmpne r1, #0 + beq _023470E8 + ldr r0, [r5] + add r0, r0, r1, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb24] + mov r0, sb + bl EntityIsValid__02345698 + cmp r0, #0 + bne _023470C0 + ldr r0, [r6] + ldr r0, [r0, #0x384] + add r0, r0, sl + bl sub_0200D894 + b _023470E8 +_023470C0: + ldr r1, [r6] + ldr r0, [sb, #0xb4] + ldr r2, [r1, #0x384] + ldrh r1, [r2, sl] + add r2, r2, sl + strh r1, [r0, #0x62] + ldrh r1, [r2, #2] + strh r1, [r0, #0x64] + ldrh r1, [r2, #4] + strh r1, [r0, #0x66] +_023470E8: + add r8, r8, #1 + cmp r8, #0x32 + blt _0234705C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023470F8: .word 0x02353538 +_023470FC: .word 0x020AF6B8 + arm_func_end ov29_02347040 + + arm_func_start ov29_02347100 +ov29_02347100: ; 0x02347100 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetLeader + mov r4, r0 + bl ov29_022EBB8C + mov r1, r0 + mov r0, r4 + mov r2, #0xa + bl ov29_022EB44C + mov r4, r0 + bl ov29_022EBB98 + cmp r0, #0x90 + bhs _0234717C + mov r0, r4 + bl ov29_022EB5D8 + cmp r0, #0 + beq _0234717C + ldrb r0, [r4] + tst r0, #8 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl ov29_023468FC + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl ov29_023186CC + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} +_0234717C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02347100 + + arm_func_start ov29_02347184 +ov29_02347184: ; 0x02347184 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc8 + mov sb, #0 + mov r7, #1 + mov sl, r0 + mov r8, sb + mov r6, sb + mov fp, sb + mov r5, r7 + add r4, sp, #0 +_023471AC: + mov r0, r8 + bl GetItemAtIdx + cmp sl, #0 + beq _023471F4 + mov r2, sl + b _023471E0 +_023471C4: + ldrsh r1, [r0, #4] + cmp r3, r1 + bne _023471DC + ldrb r1, [r0, #1] + cmp r1, #0 + bne _023471EC +_023471DC: + add r2, r2, #2 +_023471E0: + ldrsh r3, [r2] + cmp r3, #0 + bne _023471C4 +_023471EC: + cmp r3, #0 + bne _02347224 +_023471F4: + ldrb r1, [r0] + tst r1, #1 + movne r2, r7 + moveq r2, r6 + tst r2, #0xff + beq _02347224 + tst r1, #8 + movne r1, r5 + moveq r1, fp + tst r1, #0xff + streq r0, [r4, sb, lsl #2] + addeq sb, sb, #1 +_02347224: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x32 + blt _023471AC + cmp sb, #0 + moveq r0, #0 + beq _023472B8 + bl DungeonRand16Bit + mov r1, sb + bl DivideInt + mov r0, r1, lsl #0x10 + add r1, sp, #0 + mov r0, r0, asr #0x10 + ldr r3, [r1, r0, lsl #2] + ldrb r0, [r3] + orr r0, r0, #8 + strb r0, [r3] + ldrb r1, [r3, #1] + cmp r1, #0 + beq _023472B4 + ldr r0, _023472C0 ; =0x02353538 + sub r1, r1, #1 + ldr r0, [r0] + add r1, r1, r1, lsl #3 + add r0, r0, #0x56 + add r2, r0, #0x800 + ldrb r0, [r2, r1, lsl #6] + mov r1, r1, lsl #6 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrneb r0, [r2, r1] + orrne r0, r0, #8 + strneb r0, [r2, r1] +_023472B4: + ldrsh r0, [r3, #4] +_023472B8: + add sp, sp, #0xc8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023472C0: .word 0x02353538 + arm_func_end ov29_02347184 + + arm_func_start ov29_023472C4 +ov29_023472C4: ; 0x023472C4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r3 + mov r4, r1 + mov r3, #0 + mov r5, r0 + bl sub_0200CF6C + mov r0, r4 + mov r6, #0 + bl IsNotMoney + cmp r0, #0 + beq _02347324 + cmp r7, #0 + bne _0234731C + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _02347374 ; =0x02353538 + ldr r1, [r1] + add r1, r1, #0x28000 + ldrb r1, [r1, #0x6bc] + cmp r0, r1 + movlt r6, #1 + b _02347324 +_0234731C: + cmp r7, #1 + moveq r6, #1 +_02347324: + cmp r6, #0 + ldrneb r0, [r5] + orrne r0, r0, #8 + strneb r0, [r5] + mov r0, r4 + bl GetItemCategoryVeneer + cmp r0, #6 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _02347374 ; =0x02353538 + ldr r1, [r0] + ldr r0, [r1, #0x7cc] + cmp r0, #0 + add r0, r1, #0x28000 + ldrb r2, [r0, #0x6c9] + moveq r3, #5 + movne r3, #0x28 + mul r1, r2, r3 + mov r0, r5 + bl ov29_02346834 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02347374: .word 0x02353538 + arm_func_end ov29_023472C4 + + arm_func_start ov29_02347378 +ov29_02347378: ; 0x02347378 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r3, _02347514 ; =0x02353538 + mov sl, r0 + ldr r0, [r3] + cmp r2, #0 + add r0, r0, #0x1a000 + ldrb fp, [r0, #0x245] + beq _023473B0 + cmp r2, #0 + beq _023473B8 + ldrb r0, [r0, #0x23e] + cmp r0, #0 + bne _023473B8 +_023473B0: + mov r3, #1 + b _023473BC +_023473B8: + mov r3, #0 +_023473BC: + ldrsh r2, [r1] + ldrsh r1, [r1, #2] + mov r0, #0x18 + smulbb r2, r2, r0 + smulbb r0, r1, r0 + add r1, r2, #4 + add r0, r0, #4 + ands r4, r3, #0xff + mov r8, r1, lsl #8 + mov sb, r0, lsl #8 + beq _023474CC + ldr r5, [sl, #0xc] + sub r0, r5, r8 + bl Abs + cmp r0, #0xc + bge _02347410 + ldr r0, [sl, #0x10] + sub r0, r0, sb + bl Abs + cmp r0, #0xc + blt _023474CC +_02347410: + str r5, [sp, #0xc] + ldr r0, [sl, #0x10] + mov r6, #0 + str r0, [sp, #0x10] + sub r0, r8, r5 + mov r1, #0x18 + mov r7, r6 + bl DivideInt + ldr r1, [sp, #0x10] + str r0, [sp, #8] + sub r0, sb, r1 + mov r1, #0x18 + bl DivideInt + str r0, [sp, #4] + mov r5, r6 +_0234744C: + ldr r2, [sp, #0xc] + ldr r0, [sp, #8] + ldr r1, [sp, #0x10] + add r0, r2, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, r7 + bl sub_020018D0 + mov r1, #0xc + mul r1, r0, r1 + str r1, [sl, #0x1c] + mov r0, sl + add r1, sp, #0xc + bl ov29_022E1A40 + mov r0, #0 + str r0, [sp] + mov r0, sl + mov r1, fp + mov r2, #0 + and r3, r6, #0xff + bl ov29_023457C8 + mov r0, #0x13 + bl AdvanceFrame + tst r5, #3 + addeq r6, r6, #1 + add r5, r5, #1 + add r7, r7, #0x55 + and r6, r6, #7 + cmp r5, #0x18 + blt _0234744C +_023474CC: + mov r0, sl + mov r1, r8 + mov r2, sb + bl ov29_022E1A84 + mov r5, #0 + str r5, [sl, #0x1c] + cmp r4, #0 + beq _02347504 + mov r0, sl + mov r1, fp + mov r2, #1 + mov r3, #0xff + str r5, [sp] + bl ov29_023457C8 +_02347504: + mov r0, #0x13 + bl AdvanceFrame + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02347514: .word 0x02353538 + arm_func_end ov29_02347378 + + arm_func_start ov29_02347518 +ov29_02347518: ; 0x02347518 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x248 + ldr r4, _02347B3C ; =0x02353538 + mov sl, r0 + ldr r4, [r4] + mov r6, #3 + add r0, r4, #0x1a000 + ldrb r0, [r0, #0x245] + mov r5, #0 + mov sb, r3 + str r0, [sp, #0x20] + str r6, [r4, #0xcc] + mov r0, #1 + strb r5, [r4, #0xf0] + strb r0, [r4, #0xec] + strb r5, [r4, #0xee] + mov r0, r1 + str r0, [r4, #0x180] + str r5, [r4, #0xe8] + ldrh r6, [r2] + str r1, [sp, #8] + mov r1, #0x18 + strh r6, [r4, #0xd0] + ldrh r6, [r2, #2] + add r0, r4, #0xcc + ldr r8, [sp, #0x270] + strh r6, [r4, #0xd2] + ldrsh r3, [r2] + ldrsh r2, [r2, #2] + smulbb r3, r3, r1 + smulbb r2, r2, r1 + add r1, r3, #4 + mov r1, r1, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r0, r5 + str r0, [sp, #0x1c] + strh r0, [r4, #0xf2] + ldr r0, [sl] + cmp r0, #1 + bne _023475D4 + mov r0, sl + mov r1, #0x31 + bl ItemIsActive__02347B50 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x1c] +_023475D4: + ldrsh r1, [r8, #2] + mov r0, #1 + mov r6, #0 + str r1, [sp, #0x24] + bl ov29_0234B4CC +_023475E8: + ldrh r2, [r4, #0xd0] + ldrh r1, [r4, #0xd2] + ldrb r0, [r8, #1] + strh r2, [sp, #0x44] + strh r1, [sp, #0x46] + cmp r0, #0 + beq _023476BC + ldrb r0, [r8] + cmp r0, #0 + bne _023476BC + ldr r1, _02347B40 ; =0x0235171C + mov r2, sb, lsl #2 + add r0, r1, sb, lsl #2 + ldrsh r7, [r4, #0xd0] + ldrsh r3, [r1, r2] + ldrsh r2, [r4, #0xd2] + ldrsh r1, [r0, #2] + add r0, r7, r3 + add r1, r2, r1 + bl GetTile + ldrh r0, [r0] + tst r0, #3 + bne _023476BC + ldrsh r0, [sp, #0x46] + mov r7, #0 + str r0, [sp, #0x10] + ldrsh r0, [sp, #0x44] + str r0, [sp, #0xc] + ldr r0, _02347B44 ; =0x023516FC + add r0, r0, sb, lsl #2 + str r0, [sp, #0x28] + b _023476B4 +_02347668: + ldr r0, [sp, #0x28] + ldrb fp, [r7, r0] + cmp fp, #8 + bge _023476B0 + ldr r0, _02347B40 ; =0x0235171C + mov r1, fp, lsl #2 + ldrsh r1, [r0, r1] + add r0, r0, fp, lsl #2 + ldrsh r2, [r0, #2] + ldr r0, [sp, #0xc] + add r0, r0, r1 + ldr r1, [sp, #0x10] + add r1, r1, r2 + bl GetTile + ldrh r0, [r0] + tst r0, #3 + movne sb, fp + bne _023476BC +_023476B0: + add r7, r7, #1 +_023476B4: + cmp r7, #4 + blt _02347668 +_023476BC: + mov r0, sb, lsl #0x10 + mov r1, r0, lsr #0x10 + ldr r0, _02347B40 ; =0x0235171C + mov r2, r1, lsl #2 + ldrh r2, [r0, r2] + add r1, r0, r1, lsl #2 + ldrsh r3, [r4, #0xd0] + strh r2, [sp, #0x3c] + ldrsh r2, [sp, #0x3c] + ldrh r1, [r1, #2] + add r2, r3, r2 + strh r1, [sp, #0x3e] + strh r2, [r4, #0xd0] + ldrsh r1, [sp, #0x3e] + ldrsh r2, [r4, #0xd2] + add r1, r2, r1 + strh r1, [r4, #0xd2] + ldrsh r2, [r4, #0xd0] + cmp r2, #0 + ldrgesh r1, [r4, #0xd2] + cmpge r1, #0 + blt _02347720 + cmp r2, #0x38 + cmplt r1, #0x20 + blt _02347728 +_02347720: + mov r7, #2 + b _02347978 +_02347728: + mov r2, sb, lsl #2 + add r1, r0, sb, lsl #2 + ldrsh r0, [r0, r2] + ldrsh r1, [r1, #2] + mov r7, #0 + mov r0, r0, lsl #0xa + str r0, [sp, #0x14] + and r0, sb, #0xff + mov fp, r1, lsl #0xa + str r0, [sp, #0x2c] +_02347750: + mov r0, #0 + str r0, [sp, #0x18] + ldr r1, [sp, #0x14] + add r0, r4, #0xcc + mov r2, fp + bl ov29_022E1A90 + bl ov29_02337E94 + cmp r0, #0 + ldr r0, [r4, #0xd8] + ldr r1, [r4, #0xdc] + movne r2, #3 + mov r0, r0, asr #8 + mov r1, r1, asr #8 + moveq r2, #0 + add r0, r0, #8 + add r1, r1, #0x10 + bl ov29_022E9488 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x18] + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x20] + ldr r3, [sp, #0x2c] + add r0, r4, #0xcc + mov r2, #0 + bl ov29_023457C8 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x18] + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _023477DC + mov r0, #0x12 + bl AdvanceFrame +_023477DC: + add r7, r7, #1 + cmp r7, #6 + blt _02347750 + ldrsh r0, [r4, #0xd0] + ldrsh r1, [r4, #0xd2] + bl GetTile + mov r7, r0 + ldrh r0, [r7] + tst r0, #3 + ldreqb r0, [r8] + cmpeq r0, #0 + bne _02347824 + ldrh r1, [sp, #0x44] + ldrh r0, [sp, #0x46] + mov r7, #1 + strh r1, [r4, #0xd0] + strh r0, [r4, #0xd2] + b _02347978 +_02347824: + ldr r0, [r7, #0xc] + cmp r0, #0 + beq _02347960 + ldrb r1, [r8] + mov fp, #0 + cmp r1, #0 + ldreq r1, [r0] + cmpeq r1, #1 + bne _02347870 + mov r1, #0x2d + bl ItemIsActive__02347B50 + cmp r0, #0 + bne _0234786C + ldr r0, [r7, #0xc] + mov r1, #0x54 + bl ExclusiveItemEffectIsActive__02347B80 + cmp r0, #0 + beq _02347870 +_0234786C: + mov fp, #1 +_02347870: + cmp fp, #0 + beq _02347894 + add r5, r5, #1 + cmp r5, #2 + movge r7, #1 + bge _02347978 + add r0, sb, #4 + and sb, r0, #7 + b _02347960 +_02347894: + ldr r0, [r7, #0xc] + mov fp, #1 + ldr r0, [r0] + cmp r0, #1 + bne _0234791C + add r0, sp, #0x34 + add r1, fp, #0x194 + bl InitMove + ldr r0, [r7, #0xc] + add r1, sp, #0x34 + bl ov29_02324854 + cmp r0, #0 + ldr r0, [sp, #8] + mov r1, #1 + ldrsh r0, [r0, #4] + movne fp, #0 + bl TestItemAiFlag + cmp r0, #0 + bne _0234791C + mov r0, sl + mov r1, #0x2e + bl IqSkillIsEnabled + cmp r0, #0 + bne _02347908 + mov r0, sl + mov r1, #0x60 + bl ExclusiveItemEffectIsActive__02347B80 + cmp r0, #0 + beq _0234791C +_02347908: + ldr r1, [r7, #0xc] + mov r0, sl + bl ov29_022FAFD4 + cmp r0, #0 + movne fp, #0 +_0234791C: + cmp fp, #0 + beq _02347960 + cmp r6, #0x40 + bge _02347950 + ldr r1, [r7, #0xc] + add r2, sp, #0x48 + mov r0, sl + str r1, [r2, r6, lsl #3] + bl ov29_02348020 + add r1, sp, #0x48 + add r1, r1, r6, lsl #3 + strb r0, [r1, #4] + add r6, r6, #1 +_02347950: + ldrb r0, [r8] + cmp r0, #0 + moveq r7, #0 + beq _02347978 +_02347960: + ldr r0, [sp, #0x24] + sub r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #0 + bgt _023475E8 + mov r7, #1 +_02347978: + mov r0, #0 + bl ov29_0234B4CC + mov r5, #0 + b _02347A94 +_02347988: + mov r0, sl + bl EntityIsValid__02347BA4 + cmp r0, #0 + beq _02347A9C + add r0, sp, #0x48 + ldr fp, [r0, r5, lsl #3] + mov r0, fp + bl EntityIsValid__02347BA4 + cmp r0, #0 + beq _02347A90 + add r0, sp, #0x48 + add r0, r0, r5, lsl #3 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _02347A38 + mov r0, #0 + mov r1, fp + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r1, [sp, #8] + mov r0, #0 + bl ov29_02344B70 + ldr r2, _02347B48 ; =0x00000BE1 + mov r0, sl + mov r1, fp + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sl + mov r1, fp + bl ov29_02307BDC + mov r2, r0 + ldr r0, [sp, #0x1c] + mov r3, sl + cmp r0, #0 + ldreqb r0, [r8] + cmpeq r0, #0 + movne r0, #1 + moveq r0, #0 + and r1, r0, #0xff + ldr r0, [sp, #8] + str fp, [sp] + str r0, [sp, #4] + mov r0, #1 + bl ApplyItemEffect + b _02347A90 +_02347A38: + ldrb r0, [r8] + mov r1, fp + cmp r0, #0 + mov r0, #0 + cmpeq r6, #1 + mov r2, r0 + moveq r7, #1 + bl SubstitutePlaceholderStringTags + ldr r1, [sp, #8] + mov r0, #0 + bl ov29_02344B44 + ldrb r0, [r8] + mov r1, fp + ldr r2, _02347B48 ; =0x00000BE1 + cmp r0, #0 + mov r0, sl + beq _02347A88 + add r2, r2, #1 + bl LogMessageByIdWithPopupCheckUserTarget + b _02347A90 +_02347A88: + add r2, r2, #2 + bl LogMessageByIdWithPopupCheckUserTarget +_02347A90: + add r5, r5, #1 +_02347A94: + cmp r5, r6 + blt _02347988 +_02347A9C: + mov r0, sb, lsl #0x10 + mov r0, r0, lsr #0x10 + ldr r1, _02347B40 ; =0x0235171C + mov r2, r0, lsl #2 + add r0, r1, r0, lsl #2 + ldrh r1, [r1, r2] + ldrh r0, [r0, #2] + cmp r7, #0 + strh r1, [sp, #0x30] + strh r0, [sp, #0x32] + ldrsh r1, [sp, #0x30] + ldrsh r0, [sp, #0x32] + mov r1, r1, lsl #3 + mov r0, r0, lsl #3 + strh r1, [sp, #0x40] + strh r0, [sp, #0x42] + beq _02347B34 + cmp r7, #1 + beq _02347AF4 + cmp r7, #2 + beq _02347B1C + b _02347B34 +_02347AF4: + add r1, sp, #0x40 + str r1, [sp] + mov r5, #0 + ldr r2, [sp, #8] + mov r0, sl + add r1, r4, #0xcc + mov r3, #1 + str r5, [sp, #4] + bl ov29_02345AD8 + b _02347B34 +_02347B1C: + ldr r1, [sp, #8] + mov r0, #0 + bl ov29_02344B70 + ldr r1, _02347B4C ; =0x00000BE5 + mov r0, sl + bl LogMessageByIdWithPopupCheckUser +_02347B34: + add sp, sp, #0x248 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02347B3C: .word 0x02353538 +_02347B40: .word 0x0235171C +_02347B44: .word 0x023516FC +_02347B48: .word 0x00000BE1 +_02347B4C: .word 0x00000BE5 + arm_func_end ov29_02347518 + + arm_func_start ItemIsActive__02347B50 +ItemIsActive__02347B50: ; 0x02347B50 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r1, #0x6f + mov r5, r0 + bl AbilityIsActive2 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl HasHeldItem + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ItemIsActive__02347B50 + + arm_func_start ExclusiveItemEffectIsActive__02347B80 +ExclusiveItemEffectIsActive__02347B80: ; 0x02347B80 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__02347B80 diff --git a/asm/overlay_29_02347BC8.s b/asm/overlay_29_02347BC8.s new file mode 100644 index 00000000..998365a9 --- /dev/null +++ b/asm/overlay_29_02347BC8.s @@ -0,0 +1,2274 @@ + .include "asm/macros.inc" + .include "overlay_29_02347BC8.inc" + + .text + + arm_func_start ov29_02347BC8 +ov29_02347BC8: ; 0x02347BC8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + ldr r4, _0234800C ; =0x02353538 + mov sl, r0 + ldr r4, [r4] + mov r6, #3 + add r0, r4, #0x1a000 + ldrb r0, [r0, #0x245] + mov r5, #0 + mov sb, r3 + str r0, [sp, #0x30] + str r6, [r4, #0xcc] + mov r0, #1 + strb r5, [r4, #0xf0] + strb r0, [r4, #0xec] + strb r5, [r4, #0xee] + mov r0, r1 + str r0, [r4, #0x180] + mov r6, r2 + str r5, [r4, #0xe8] + ldrh r2, [r6] + str r1, [sp, #8] + mov r1, #0x18 + strh r2, [r4, #0xd0] + ldrh r2, [r6, #2] + add r0, r4, #0xcc + strh r2, [r4, #0xd2] + ldrsh r3, [r6] + ldrsh r2, [r6, #2] + smulbb r3, r3, r1 + smulbb r1, r2, r1 + add r2, r1, #4 + add r3, r3, #4 + mov r1, r3, lsl #8 + mov r2, r2, lsl #8 + bl ov29_022E1A84 + mov r0, r5 + str r0, [sp, #0x2c] + strh r0, [r4, #0xf2] + ldr r0, [sl] + mov r5, #1 + cmp r0, #1 + bne _02347C8C + mov r0, sl + mov r1, #0x31 + bl ItemIsActive__02347B50 + cmp r0, #0 + movne r0, r5 + strne r0, [sp, #0x2c] +_02347C8C: + mov r0, r6 + mov r7, #0 + bl ov29_022E2CA0 + cmp r0, #0 + movne r7, #1 + mov r0, sb + bl ov29_022E2CA0 + cmp r0, #0 + movne r7, #1 + mov r0, #1 + bl ov29_0234B4CC + cmp r7, #0 + beq _02347E58 + ldrsh r0, [sb] + ldrsh r1, [r4, #0xd0] + str r0, [sp, #0x10] + ldrsh r0, [sb, #2] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r0, r1, r0 + bl Abs + mov r7, r0 + ldrsh r1, [r4, #0xd2] + ldr r0, [sp, #0xc] + sub r0, r1, r0 + bl Abs + add r1, r7, r0 + mov r0, #0xc + mul fp, r1, r0 + add r0, fp, #0xc + str r0, [sp, #0x24] + cmp r0, #0x40 + movge r0, #0x40 + strge r0, [sp, #0x24] + mov r1, fp + mov r0, #0x80000 + mov r8, #0 + bl DivideInt + str r0, [sp, #0x18] + ldrsh r0, [r6, #2] + mov r1, #0x1800 + ldrsh r2, [r6] + smulbb r7, r0, r1 + ldr r0, [sp, #0x10] + smulbb r6, r2, r1 + mul r1, r0, r1 + sub r0, r1, r6 + mov r1, fp + bl DivideInt + str r0, [sp, #0x20] + ldr r0, [sp, #0xc] + mov r1, #0x1800 + mul r1, r0, r1 + sub r0, r1, r7 + mov r1, fp + bl DivideInt + str r0, [sp, #0x1c] + mov r0, r8 + str r0, [sp, #0x28] + sub r0, fp, #3 + str r0, [sp, #0x38] + b _02347E48 +_02347D84: + mov r0, #0 + str r0, [sp, #0x14] + mov r0, r8, asr #8 + bl sub_020018D0 + ldr r1, [sp, #0x24] + add r2, r7, #0x400 + mul r0, r1, r0 + str r0, [r4, #0xe8] + mov r0, r7, asr #8 + str r0, [sp, #0x34] + ldr r0, [sp, #0x18] + add r1, r6, #0x400 + add r8, r8, r0 + add r0, r4, #0xcc + mov fp, r6, asr #8 + bl ov29_022E1A84 + bl ov29_02337E94 + cmp r0, #0 + ldr r1, [sp, #0x34] + movne r2, #3 + moveq r2, #0 + add r0, fp, #8 + add r1, r1, #0x10 + bl ov29_022E9488 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + mov r0, #1 + str r0, [sp] + ldr r1, [sp, #0x30] + add r0, r4, #0xcc + mov r2, #0 + mov r3, #0xff + bl ov29_023457C8 + cmp r0, #0 + movne r0, #1 + strne r0, [sp, #0x14] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02347E2C + mov r0, #0x17 + bl AdvanceFrame +_02347E2C: + ldr r0, [sp, #0x20] + add r6, r6, r0 + ldr r0, [sp, #0x1c] + add r7, r7, r0 + ldr r0, [sp, #0x28] + add r0, r0, #1 + str r0, [sp, #0x28] +_02347E48: + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x38] + cmp r1, r0 + blt _02347D84 +_02347E58: + ldrh r1, [sb] + mov r0, #0 + strh r1, [r4, #0xd0] + ldrh r1, [sb, #2] + strh r1, [r4, #0xd2] + bl ov29_0234B4CC + ldrsh r0, [sb] + ldrsh r1, [sb, #2] + bl GetTile + mov r6, r0 + ldr r0, [r6, #0xc] + cmp r0, #0 + beq _02347FD0 + ldr r1, [r0] + mov r7, #1 + cmp r1, #1 + mov r8, #0 + bne _02347EE8 + mov r1, #0x2d + bl ItemIsActive__02347B50 + cmp r0, #0 + bne _02347EC4 + ldr r0, [r6, #0xc] + mov r1, #0x54 + bl ExclusiveItemEffectIsActive__02347B80 + cmp r0, #0 + beq _02347EC8 +_02347EC4: + mov r8, #1 +_02347EC8: + ldr r1, _02348010 ; =0x00000195 + add r0, sp, #0x3c + bl InitMove + ldr r0, [r6, #0xc] + add r1, sp, #0x3c + bl ov29_02324854 + cmp r0, #0 + movne r7, #0 +_02347EE8: + cmp r7, #0 + beq _02347FD0 + cmp r8, #0 + ldr r5, [r6, #0xc] + movne r6, #0 + bne _02347F10 + mov r0, sl + mov r1, r5 + bl ov29_02348020 + mov r6, r0 +_02347F10: + ldr r1, [sp, #8] + mov r0, #0 + bl ov29_02344B70 + mov r0, #0 + mov r1, r5 + mov r2, r0 + bl SubstitutePlaceholderStringTags + cmp r6, #0 + beq _02347FA0 + mov r0, r5 + mov r1, #8 + bl ov29_02304A84 + ldr r2, _02348014 ; =0x00000BE1 + mov r0, sl + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + mov r0, sl + mov r1, r5 + bl ov29_02307BDC + mov r2, r0 + ldr r0, [sp, #0x2c] + mov r3, sl + cmp r0, #0 + ldreq r0, [sp, #0x68] + ldreqb r0, [r0] + cmpeq r0, #0 + movne r0, #1 + moveq r0, #0 + str r5, [sp] + ldr r5, [sp, #8] + and r1, r0, #0xff + mov r0, #1 + str r5, [sp, #4] + bl ApplyItemEffect + mov r5, #0 + b _02347FD0 +_02347FA0: + cmp r8, #0 + beq _02347FBC + ldr r2, _02348018 ; =0x00000BE4 + mov r0, sl + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget + b _02347FCC +_02347FBC: + ldr r2, _0234801C ; =0x00000BE3 + mov r0, sl + mov r1, r5 + bl LogMessageByIdWithPopupCheckUserTarget +_02347FCC: + mov r5, #1 +_02347FD0: + cmp r5, #0 + beq _02348004 + cmp r5, #1 + beq _02347FE8 + cmp r5, #2 + b _02348004 +_02347FE8: + mov r3, #0 + str r3, [sp] + ldr r2, [sp, #8] + mov r0, sl + add r1, r4, #0xcc + str r3, [sp, #4] + bl ov29_02345AD8 +_02348004: + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234800C: .word 0x02353538 +_02348010: .word 0x00000195 +_02348014: .word 0x00000BE1 +_02348018: .word 0x00000BE4 +_0234801C: .word 0x00000BE3 + arm_func_end ov29_02347BC8 + + arm_func_start ov29_02348020 +ov29_02348020: ; 0x02348020 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r1 + ldr r1, [r4, #0xb4] + mov r5, r0 + ldrb r0, [r1, #9] + cmp r0, #1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrb r0, [r1, #0xbc] + cmp r0, #7 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, #0x64 + bl DungeonRandInt + ldr r1, _023480F8 ; =0x022C46B0 + ldrsh r1, [r1] + cmp r0, r1 + movlt r1, #1 + movge r1, #0 + ldr r0, [r5] + and r6, r1, #0xff + cmp r0, #1 + bne _023480A8 + mov r0, r5 + mov r1, #0x2f + bl ItemIsActive__02347B50 + cmp r0, #0 + movne r6, #0 + bne _023480A8 + mov r0, r5 + mov r1, #0x31 + bl ItemIsActive__02347B50 + cmp r0, #0 + movne r6, #1 +_023480A8: + ldr r0, [r4] + cmp r0, #1 + bne _023480F0 + mov r0, r4 + bl ov29_022FB9BC + cmp r0, #0 + bne _023480EC + mov r0, r4 + mov r1, #0x2c + bl ItemIsActive__02347B50 + cmp r0, #0 + bne _023480EC + mov r0, r4 + mov r1, #0x53 + bl ExclusiveItemEffectIsActive__02347B80 + cmp r0, #0 + beq _023480F0 +_023480EC: + mov r6, #0 +_023480F0: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023480F8: .word 0x022C46B0 + arm_func_end ov29_02348020 + + arm_func_start ov29_023480FC +ov29_023480FC: ; 0x023480FC + bx lr + arm_func_end ov29_023480FC + + arm_func_start ov29_02348100 +ov29_02348100: ; 0x02348100 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + movs r4, r0 + moveq r0, #0 + beq _02348124 + ldr r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_02348124: + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + ldr r7, [r4, #0xb4] + ldrb r0, [r7, #6] + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldrsh r1, [r7, #4] + ldrb r2, [r7, #0x5e] + ldrb r3, [r7, #0x5f] + add r0, r7, #0x224 + bl sub_02011220 + mov r0, r4 + mov r1, #0x4c + bl ExclusiveItemEffectIsActive__023482B0 + cmp r0, #0 + ldrne r0, _023482AC ; =0x020A1878 + ldrnesh r1, [r7, #0x16] + ldrnesh r0, [r0] + addne r0, r1, r0 + strneh r0, [r7, #0x16] + mov r0, r4 + mov r1, #0x4d + bl ExclusiveItemEffectIsActive__023482B0 + cmp r0, #0 + ldrne r0, _023482AC ; =0x020A1878 + ldrnesh r1, [r7, #0x16] + ldrnesh r0, [r0] + addne r0, r1, r0, lsl #1 + strneh r0, [r7, #0x16] + mov r0, r4 + mov r1, #0x4e + bl ExclusiveItemEffectIsActive__023482B0 + cmp r0, #0 + beq _023481C4 + ldr r0, _023482AC ; =0x020A1878 + ldrsh r1, [r7, #0x16] + ldrsh r0, [r0] + add r0, r0, r0, lsl #1 + add r0, r1, r0 + strh r0, [r7, #0x16] +_023481C4: + mov r5, #0 + mov r0, r4 + mov r1, #0x4a + mov r6, r5 + bl ExclusiveItemEffectIsActive__023482B0 + cmp r0, #0 + mov r0, r4 + mov r1, #0x4b + movne r5, #1 + bl ExclusiveItemEffectIsActive__023482B0 + cmp r0, #0 + movne r6, #1 + mov r8, #0 + add r4, r7, #0x124 +_023481FC: + add r0, r7, r8, lsl #3 + cmp r5, #0 + addne r0, r0, #0x100 + ldrneh r1, [r0, #0x26] + orrne r1, r1, #0x200 + strneh r1, [r0, #0x26] + bne _02348248 + add r1, r0, #0x100 + ldrh r2, [r1, #0x26] + add r0, r4, r8, lsl #3 + bic r2, r2, #0x200 + strh r2, [r1, #0x26] + bl GetMaxPp + add r2, r7, r8, lsl #3 + mov r0, r0, lsl #0x10 + ldrb r1, [r2, #0x12a] + mov r3, r0, asr #0x10 + cmp r1, r0, asr #16 + strgtb r3, [r2, #0x12a] +_02348248: + add r0, r7, r8, lsl #3 + cmp r6, #0 + addne r0, r0, #0x100 + ldrneh r1, [r0, #0x26] + orrne r1, r1, #0x400 + strneh r1, [r0, #0x26] + bne _02348294 + add r1, r0, #0x100 + ldrh r2, [r1, #0x26] + add r0, r4, r8, lsl #3 + bic r2, r2, #0x400 + strh r2, [r1, #0x26] + bl GetMaxPp + add r2, r7, r8, lsl #3 + mov r0, r0, lsl #0x10 + ldrb r1, [r2, #0x12a] + mov r3, r0, asr #0x10 + cmp r1, r0, asr #16 + strgtb r3, [r2, #0x12a] +_02348294: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _023481FC + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023482AC: .word 0x020A1878 + arm_func_end ov29_02348100 + + arm_func_start ExclusiveItemEffectIsActive__023482B0 +ExclusiveItemEffectIsActive__023482B0: ; 0x023482B0 + stmdb sp!, {r3, lr} + ldr r2, [r0, #0xb4] + ldrb r0, [r2, #6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + add r0, r2, #0x228 + bl ExclusiveItemEffectFlagTest + ldmia sp!, {r3, pc} + arm_func_end ExclusiveItemEffectIsActive__023482B0 + + arm_func_start ov29_023482D4 +ov29_023482D4: ; 0x023482D4 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02348308 ; =0x02353538 + mov r5, r0 + ldr r4, [r1] + bl ov29_023386B0 + mov r3, r0 + ldrb ip, [r4, #0x749] + ldrsh r1, [r4, #0x1e] + ldrb r0, [r4, #0x748] + mov r2, r5 + add r1, ip, r1 + bl ov29_0234830C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02348308: .word 0x02353538 + arm_func_end ov29_023482D4 + + arm_func_start ov29_0234830C +ov29_0234830C: ; 0x0234830C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov r7, r0 + mov r6, r1 + mov r0, #4 + mov r1, #0 + mov r5, r2 + mov r4, r3 + bl MemAlloc + ldr r2, _02348498 ; =0x023537C4 + mov r1, #4 + str r0, [r2] + bl MemZero + mov r0, #1 + mov r1, #0 + bl ov29_022E0DD8 + mov r0, #3 + mov r1, #0 + bl ov29_022E0DD8 + mov r0, #4 + mov r1, #0 + bl ov29_022E0DD8 + bl ov29_022E0DFC + mov r0, #1 + mov r1, #0x1000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl sub_02051EB8 + mov sb, r0 + mov r0, #0 + mov r1, r0 + bl sub_02051DFC + mov r8, r0 + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl GetBgRegionArea + mov r1, r8 + mov r2, sb + mov r3, #0 + str r3, [sp] + mov ip, #0xe + str ip, [sp, #4] + str r3, [sp, #8] + bl sub_02015328 + bl sub_02015588 + cmp r4, #1 + bne _023483D8 + bl sub_02017A00 + b _023483F8 +_023483D8: + cmp r4, #2 + bne _023483E8 + bl sub_02017A20 + b _023483F8 +_023483E8: + mov r1, r6, lsl #0x10 + mov r0, r7 + mov r1, r1, asr #0x10 + bl sub_020178A8 +_023483F8: + mov r0, #0 + bl ov29_0234C738 + mov r6, #2 + ldr r4, _0234849C ; =0x0237C694 + b _02348424 +_0234840C: + mov r0, r6 + bl AdvanceFrame + ldrh r0, [r4, #2] + tst r0, #1 + bne _0234842C + sub r5, r5, #1 +_02348424: + cmp r5, #0 + bgt _0234840C +_0234842C: + mov r0, #2 + mov r1, #0x1000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 + mov r0, #1 + mov r1, #0 + bl ov29_022E0DE4 + mov r0, #3 + mov r1, #0 + bl ov29_022E0DE4 + mov r0, #4 + mov r1, #0 + bl ov29_022E0DE4 + bl ov29_022E0E44 + bl sub_0201551C + ldr r0, _02348498 ; =0x023537C4 + ldr r0, [r0] + cmp r0, #0 + beq _02348490 + bl MemFree + ldr r0, _02348498 ; =0x023537C4 + mov r1, #0 + str r1, [r0] +_02348490: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02348498: .word 0x023537C4 +_0234849C: .word 0x0237C694 + arm_func_end ov29_0234830C + + arm_func_start ov29_023484A0 +ov29_023484A0: ; 0x023484A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _02348804 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x348 + add r7, r0, #0x400 + add r0, r7, #0x18 + bl ov29_023496EC + ldr r0, _02348804 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsb r0, [r0, #0x98] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r8, #0 + mov fp, #0x6f + mov sl, #0xa5 + mov r5, #3 + mov r6, #1 + ldr r4, _02348804 ; =0x02353538 + b _02348798 +_023484FC: + mov r0, r7 + mov r1, r8 + bl ov29_02349790 + movs sb, r0 + moveq r0, #0 + beq _02348784 + strb r6, [r7, #0x18] + ldrb r0, [sb, #1] + strb r0, [r7, #0x19] + ldrb r0, [sb, #2] + strb r0, [r7, #0x1a] + ldrsh r0, [sb, #0xe] + strh r0, [r7, #0x22] + ldr r0, [r4] + strb r6, [r0] + ldrb r0, [r7, #0x19] + cmp r0, #0xe + addls pc, pc, r0, lsl #2 + b _0234877C +_02348548: ; jump table + b _02348584 ; case 0 + b _02348590 ; case 1 + b _0234859C ; case 2 + b _023485AC ; case 3 + b _02348608 ; case 4 + b _02348618 ; case 5 + b _02348628 ; case 6 + b _02348648 ; case 7 + b _0234865C ; case 8 + b _02348668 ; case 9 + b _0234869C ; case 10 + b _02348718 ; case 11 + b _0234876C ; case 12 + b _0234877C ; case 13 + b _0234877C ; case 14 +_02348584: + ldrsh r0, [sb, #0x10] + strh r0, [r7, #0x24] + b _0234877C +_02348590: + ldrsh r0, [sb, #0x10] + strh r0, [r7, #0x24] + b _0234877C +_0234859C: + ldrsh r0, [sb, #0x10] + strh r0, [r7, #0x24] + strb r6, [r7, #0x30] + b _0234877C +_023485AC: + ldrb r0, [sb, #2] + cmp r0, #0 + ldreq r0, [r4] + streqb r5, [r0] + beq _0234877C + cmp r0, #1 + ldreqsh r0, [sb, #0x14] + streqh r0, [r7, #0x20] + streqb sl, [r7, #0x2e] + beq _0234877C + cmp r0, #2 + bne _0234877C + mov r0, #4 + bl DungeonRandInt + mov r1, r0, lsl #1 + ldr r0, _02348808 ; =0x022C48E4 + strb fp, [r7, #0x2e] + ldrsh r0, [r0, r1] + strh r0, [r7, #0x1c] + ldr r1, [r4] + mov r0, #2 + strb r0, [r1] + b _0234877C +_02348608: + ldrsh r0, [sb, #0x14] + strh r0, [r7, #0x1c] + strb r6, [r7, #0x2f] + b _0234877C +_02348618: + ldr r1, [r4] + mov r0, #3 + strb r0, [r1] + b _0234877C +_02348628: + ldrb r0, [sb, #2] + cmp r0, #4 + moveq r0, #0 + streqh r0, [r7, #0x1c] + ldrnesh r0, [sb, #0x14] + strneh r0, [r7, #0x1c] + strneb r6, [r7, #0x2f] + b _0234877C +_02348648: + ldrsh r0, [sb, #0x14] + strh r0, [r7, #0x1e] + ldrsh r0, [sb, #0x10] + strh r0, [r7, #0x24] + b _0234877C +_0234865C: + ldrsh r0, [sb, #0x10] + strh r0, [r7, #0x24] + b _0234877C +_02348668: + ldrb r0, [sb, #2] + cmp r0, #1 + beq _02348680 + cmp r0, #2 + moveq r0, #0x64 + streqb r0, [r7, #0x34] +_02348680: + add r0, r7, #0x18 + add r1, sb, #0x10 + mov r2, #1 + bl ov29_023497C8 + ldrsh r0, [sb, #0x14] + strh r0, [r7, #0x1c] + b _0234877C +_0234869C: + ldrb r0, [sb, #2] + cmp r0, #4 + bne _023486BC + add r1, sb, #0x10 + add r0, r7, #0x18 + mov r2, r6 + bl ov29_023497C8 + b _0234877C +_023486BC: + cmp r0, #5 + bne _023486E0 + add r1, sb, #0x10 + add r0, r7, #0x18 + mov r2, r6 + bl ov29_023497C8 + mov r0, #0x64 + strb r0, [r7, #0x34] + b _0234877C +_023486E0: + cmp r0, #6 + bne _02348704 + add r0, r7, #0x18 + add r1, sb, #0x10 + mov r2, #2 + bl ov29_023497C8 + ldrb r0, [sb, #0xc] + strb r0, [r7, #0x2e] + b _0234877C +_02348704: + add r1, sb, #0x10 + add r0, r7, #0x18 + mov r2, r6 + bl ov29_023497C8 + b _0234877C +_02348718: + ldrb r0, [sb, #0xc] + strb r0, [r7, #0x2e] + ldrb r0, [r7, #0x1a] + cmp r0, #0 + bne _02348744 + ldrsh r1, [sb, #0xe] + add r0, r7, #0x18 + add r2, sb, #0x10 + mov r3, #3 + bl ov29_02349818 + b _0234877C +_02348744: + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #4 + bhi _0234877C + ldrsh r1, [sb, #0xe] + add r0, r7, #0x18 + mov r2, #0 + mov r3, #3 + bl ov29_02349818 + b _0234877C +_0234876C: + ldrb r0, [sb, #0xc] + strb r0, [r7, #0x2e] + ldrsh r0, [sb, #0x14] + strh r0, [r7, #0x20] +_0234877C: + strb r8, [r7, #0x1b] + mov r0, #1 +_02348784: + cmp r0, #0 + bne _023487A0 + add r0, r8, #1 + mov r0, r0, lsl #0x18 + mov r8, r0, asr #0x18 +_02348798: + cmp r8, #8 + blt _023484FC +_023487A0: + ldr r0, _02348804 ; =0x02353538 + ldr r4, [r0] + ldrb r0, [r4, #0x760] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsDestinationFloorWithFixedRoom + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl IsGoldenChamber + cmp r0, #0 + beq _023487D4 + bl ov29_02336224 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023487D4: + ldr r1, _02348804 ; =0x02353538 + ldrb r2, [r4, #0x776] + ldr r0, [r1] + add r0, r0, #0x4000 + strb r2, [r0, #0xda] + ldr r0, [r1] + add r0, r0, #0x4000 + ldrb r1, [r0, #0xda] + cmp r1, #0x95 + moveq r1, #0xc6 + streqh r1, [r0, #0xd4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02348804: .word 0x02353538 +_02348808: .word 0x022C48E4 + arm_func_end ov29_023484A0 + + arm_func_start ov29_0234880C +ov29_0234880C: ; 0x0234880C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + b _02348840 +_0234881C: + mov r0, r5 + mov r1, r4 + bl ov29_02349790 + cmp r0, #0 + movne r0, r4 + ldmneia sp!, {r3, r4, r5, pc} + add r0, r4, #1 + mov r0, r0, lsl #0x18 + mov r4, r0, asr #0x18 +_02348840: + cmp r4, #8 + blt _0234881C + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234880C + + arm_func_start ov29_02348850 +ov29_02348850: ; 0x02348850 + stmdb sp!, {r3, lr} + ldr r0, _02348884 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x760] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x348 + add r0, r0, #0x400 + bl ov29_0234880C + ldr r1, _02348884 ; =0x02353538 + ldr r1, [r1] + strb r0, [r1, #0x763] + ldmia sp!, {r3, pc} + .align 2, 0 +_02348884: .word 0x02353538 + arm_func_end ov29_02348850 + + arm_func_start ov29_02348888 +ov29_02348888: ; 0x02348888 + ldr ip, _02348890 ; =ov29_02349AD4 + bx ip + .align 2, 0 +_02348890: .word ov29_02349AD4 + arm_func_end ov29_02348888 + + arm_func_start ov29_02348894 +ov29_02348894: ; 0x02348894 + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + mov r4, #8 +_023488A0: + mov r0, r5, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r1, [r0] + add r5, r5, #1 + cmp r1, #7 + streqb r4, [r0] + cmp r5, #8 + blt _023488A0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02348894 + + arm_func_start ov29_023488C8 +ov29_023488C8: ; 0x023488C8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, #0 + mov r5, #5 +_023488D4: + mov r0, r4, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r1, [r0] + cmp r1, #7 + ldreqb r1, [r0, #1] + cmpeq r1, #0xb + bne _02348908 + ldrb r1, [r0, #2] + add r1, r1, #0xff + and r1, r1, #0xff + cmp r1, #4 + strlsb r5, [r0] +_02348908: + add r4, r4, #1 + cmp r4, #8 + blt _023488D4 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_023488C8 + + arm_func_start ov29_02348918 +ov29_02348918: ; 0x02348918 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02348990 ; =0x02353538 + ldr r0, [r0] + add r5, r0, #0x348 + bl GetForcedLossReason + cmp r0, #4 + ldmeqia sp!, {r4, r5, r6, pc} + mov r4, #0 + mov r6, #7 +_0234893C: + mov r0, r4, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r1, [r0] + cmp r1, #5 + ldreqb r2, [r5, #0x400] + ldreqb r1, [r0, #4] + cmpeq r2, r1 + ldreqb r1, [r0, #1] + cmpeq r1, #3 + ldreqb r1, [r0, #2] + cmpeq r1, #3 + streqb r6, [r0] + ldreqb r1, [r0, #0x16] + cmpeq r1, #5 + bne _02348980 + bl ov29_023498A0 +_02348980: + add r4, r4, #1 + cmp r4, #8 + blt _0234893C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02348990: .word 0x02353538 + arm_func_end ov29_02348918 + + arm_func_start ov29_02348994 +ov29_02348994: ; 0x02348994 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02348A14 ; =0x02353538 + mov r4, #0 + ldr r0, [r0] + add r6, r0, #0x348 +_023489A8: + mov r0, r4, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r5, r0 + ldrb r0, [r5] + cmp r0, #5 + ldreqb r1, [r6, #0x400] + ldreqb r0, [r5, #4] + cmpeq r1, r0 + bne _02348A04 + ldrb r0, [r5, #1] + cmp r0, #6 + cmpne r0, #4 + bne _02348A04 + ldrsh r0, [r5, #0x14] + bl IsItemInBag + cmp r0, #0 + beq _02348A04 + ldrb r0, [r5, #0x16] + cmp r0, #5 + bne _02348A04 + mov r0, r5 + bl ov29_023498A0 +_02348A04: + add r4, r4, #1 + cmp r4, #8 + blt _023489A8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02348A14: .word 0x02353538 + arm_func_end ov29_02348994 + + arm_func_start ov29_02348A18 +ov29_02348A18: ; 0x02348A18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r7, #0 + mov r5, #1 + ldr r6, _02348AB8 ; =0x00000E24 + mov sl, r0 + mov r4, r7 + mov fp, r5 + mov sb, r7 + mov r8, r5 +_02348A3C: + mov r0, sb + mov r1, sl + mov r2, sb + mov r3, r8 + str sb, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _02348A90 + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r5 + str r7, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _02348A3C + mov r0, #2 + mov r1, #1 + bl ov29_022E09E8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02348A90: + mov r0, r4 + mov r2, fp + mov r3, fp + add r1, r6, #1 + str r4, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _02348A3C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02348AB8: .word 0x00000E24 + arm_func_end ov29_02348A18 + + arm_func_start ov29_02348ABC +ov29_02348ABC: ; 0x02348ABC + stmdb sp!, {r3, lr} + bl GetItemToRetrieve + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GetItemToRetrieve + mov r1, r0 + mov r0, #1 + bl ov29_02344B9C + ldr r1, _02348B20 ; =0x02353538 + ldr r0, _02348B24 ; =0x00000E22 + ldr r1, [r1] + mov r2, #0 + strb r2, [r1, #0x777] + bl ov29_02348A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl GetItemToRetrieve + mov r1, r0 + mov r0, #0 + bl ov29_02349AD4 + ldr r0, _02348B20 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x77a] + ldmia sp!, {r3, pc} + .align 2, 0 +_02348B20: .word 0x02353538 +_02348B24: .word 0x00000E22 + arm_func_end ov29_02348ABC + + arm_func_start ov29_02348B28 +ov29_02348B28: ; 0x02348B28 + stmdb sp!, {r4, lr} + ldr r1, _02348B94 ; =0x02353538 + mov r4, r0 + ldr r1, [r1] + mov r0, #0 + add r1, r1, #0x700 + ldrsh r1, [r1, #0x6a] + bl ov29_0234B06C + mov r1, r4 + mov r0, #1 + bl ov29_02344B44 + ldr r1, _02348B98 ; =0x00000E17 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + ldr r0, _02348B9C ; =0x00000E44 + bl ov29_02348A18 + mov r1, #1 + ldr r0, _02348B94 ; =0x02353538 + ldr r0, [r0] + strb r1, [r0, #0x77a] + ldmia sp!, {r4, pc} + .align 2, 0 +_02348B94: .word 0x02353538 +_02348B98: .word 0x00000E17 +_02348B9C: .word 0x00000E44 + arm_func_end ov29_02348B28 + + arm_func_start ov29_02348BA0 +ov29_02348BA0: ; 0x02348BA0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl ov29_02349A70 + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl ov29_023009CC + cmp r0, #0 + beq _02348BD8 + mov r0, r5 + mov r1, r4 + bl ov29_022E274C + cmp r0, #0 + bne _02348BE0 +_02348BD8: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02348BE0: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_02348BA0 + + arm_func_start ov29_02348BE8 +ov29_02348BE8: ; 0x02348BE8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + bl ov29_02349A70 + movs r4, r0 + beq _02348C50 + ldr r1, [r4, #0xb4] + add r0, sp, #0 + ldrsh r1, [r1, #4] + mov r2, #0 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _02348C58 ; =0x00000E3B + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _02348C5C ; =0x00000E3C + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _02348C60 ; =0x00000E3D + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage2 +_02348C50: + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_02348C58: .word 0x00000E3B +_02348C5C: .word 0x00000E3C +_02348C60: .word 0x00000E3D + arm_func_end ov29_02348BE8 + + arm_func_start ov29_02348C64 +ov29_02348C64: ; 0x02348C64 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x40 + ldr r1, _02348CFC ; =0x02353538 + mov r5, r0 + ldr r0, [r1] + mov r4, #0 + add r6, r0, #0x348 + b _02348CEC +_02348C84: + mov r0, r4, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + ldrb r1, [r0] + cmp r1, #5 + ldreqb r2, [r6, #0x400] + ldreqb r1, [r0, #4] + cmpeq r2, r1 + ldreqb r1, [r0, #1] + cmpeq r1, #2 + bne _02348CE8 + ldrsh r1, [r0, #0x10] + add r0, sp, #0 + mov r2, #0x4e + bl GetName + mov r0, r5 + bl sub_02024FB8 + add r1, sp, #0 + bl Strcpy + mov r0, r5 + bl sub_02024FB8 + mov r1, r0 + mov r0, r5 + bl ov29_0234B0B4 + b _02348CF4 +_02348CE8: + add r4, r4, #1 +_02348CEC: + cmp r4, #8 + blt _02348C84 +_02348CF4: + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02348CFC: .word 0x02353538 + arm_func_end ov29_02348C64 + + arm_func_start ov29_02348D00 +ov29_02348D00: ; 0x02348D00 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrsh r0, [r4, #4] + cmp r0, #0 + beq _02348D34 + bl GetSpecialTargetItem + ldrsh r1, [r4, #4] + cmp r1, r0 + bne _02348D34 + ldrb r0, [r4] + tst r0, #0x80 + movne r0, #1 + ldmneia sp!, {r4, pc} +_02348D34: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_02348D00 + + arm_func_start ov29_02348D3C +ov29_02348D3C: ; 0x02348D3C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, #9 + mov r4, #0 + bl IsCurrentMissionType + cmp r0, #0 + beq _02348D78 + bl GetItemToRetrieve + ldrsh r1, [r5, #4] + cmp r1, r0 + bne _02348DCC + ldrb r0, [r5] + tst r0, #0x80 + movne r4, #1 + b _02348DCC +_02348D78: + mov r0, #0xc + bl IsCurrentMissionType + cmp r0, #0 + beq _02348DA8 + bl GetSpecialTargetItem + ldrh r1, [r5, #2] + cmp r1, r0 + bne _02348DCC + ldrb r0, [r5] + tst r0, #0x80 + movne r4, #3 + b _02348DCC +_02348DA8: + ldr r0, _02348DD4 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x777] + cmp r0, #0 + beq _02348DCC + bl GetItemToRetrieve + ldrsh r1, [r5, #4] + cmp r1, r0 + moveq r4, #2 +_02348DCC: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02348DD4: .word 0x02353538 + arm_func_end ov29_02348D3C + + arm_func_start ov29_02348DD8 +ov29_02348DD8: ; 0x02348DD8 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GetSpecialTargetItem + cmp r0, #0 + beq _02348E04 + mov r0, r6 + bl EntityIsValid__0234987C + cmp r0, #0 + bne _02348E0C +_02348E04: + mov r0, #0 + b _02348E64 +_02348E0C: + ldr r0, [r6, #0xb4] + ldrb r0, [r0, #6] + cmp r0, #0 + movne r0, #0 + bne _02348E64 + ldrsh r0, [r5, #4] + cmp r0, #0 + beq _02348E60 + bl GetSpecialTargetItem + ldrsh r1, [r5, #4] + cmp r1, r0 + bne _02348E60 + ldrb r0, [r5] + tst r0, #0x80 + beq _02348E60 + mov r0, r6 + bl ov29_02348BA0 + cmp r0, #0 + moveq r0, #1 + movne r0, #2 + b _02348E64 +_02348E60: + mov r0, #0 +_02348E64: + cmp r0, #1 + bne _02348EAC + cmp r4, #0 + beq _02348E9C + mov r0, #0 + mov r1, r6 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r5 + mov r0, #0 + bl ov29_02344B44 + ldr r1, _02348EC8 ; =0x00000BD2 + mov r0, r6 + bl LogMessageByIdWithPopupCheckUser +_02348E9C: + mov r0, r6 + bl ov29_0234A244 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02348EAC: + cmp r0, #2 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, pc} + mov r0, r6 + bl ov29_0234AA98 + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02348EC8: .word 0x00000BD2 + arm_func_end ov29_02348DD8 + + arm_func_start ov29_02348ECC +ov29_02348ECC: ; 0x02348ECC + stmdb sp!, {r3, lr} + cmp r1, #1 + mov r2, #0 + bne _02348EF4 + ldrb r1, [r0] + tst r1, #2 + bne _02348F18 + bl ov29_02348B28 + mov r2, #1 + b _02348F18 +_02348EF4: + cmp r1, #2 + bne _02348F08 + bl ov29_02348ABC + mov r2, #1 + b _02348F18 +_02348F08: + cmp r1, #3 + bne _02348F18 + bl ov29_0234AC8C + mov r2, #1 +_02348F18: + mov r0, r2 + ldmia sp!, {r3, pc} + arm_func_end ov29_02348ECC + + arm_func_start ov29_02348F20 +ov29_02348F20: ; 0x02348F20 + stmdb sp!, {r3, lr} + bl MissionTargetEnemyIsDefeated + cmp r0, #0 + ldrne r0, _02348FD4 ; =0x02353538 + ldrne r0, [r0] + ldrneb r0, [r0, #1] + cmpne r0, #0 + beq _02348FCC + mov r0, #0xa + bl IsCurrentMissionType + cmp r0, #0 + beq _02348F68 + ldr r0, _02348FD4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x6e] + bl ov29_0234A790 + b _02348FB4 +_02348F68: + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _02348F90 + ldr r0, _02348FD4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x6e] + bl ov29_0234A8BC + b _02348FB4 +_02348F90: + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + beq _02348FB4 + ldr r0, _02348FD4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x6e] + bl ov29_0234ABB0 +_02348FB4: + ldr r0, _02348FD4 ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + mov r0, #1 + strb r2, [r1, #1] + ldmia sp!, {r3, pc} +_02348FCC: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02348FD4: .word 0x02353538 + arm_func_end ov29_02348F20 + + arm_func_start ov29_02348FD8 +ov29_02348FD8: ; 0x02348FD8 + stmdb sp!, {r4, lr} + mov r4, #0 + bl IsDestinationFloorWithItem + cmp r0, #0 + beq _02349014 + ldr r0, _02349088 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x77a] + cmp r0, #0 + bne _02349014 + bl GetItemToRetrieve + bl IsItemInBag + cmp r0, #0 + movne r4, #1 + b _02349058 +_02349014: + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _02349050 + ldr r0, _02349088 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x77a] + cmp r0, #0 + bne _02349050 + bl GetItemToRetrieve + mov r1, #0x40 + bl IsItemWithFlagsInBag + cmp r0, #0 + movne r4, #1 + b _02349058 +_02349050: + mov r0, #0 + ldmia sp!, {r4, pc} +_02349058: + cmp r4, #0 + beq _02349080 + bl GetItemToRetrieve + mov r1, r0 + mov r0, #0 + bl ov29_02349AD4 + ldr r0, _02349088 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x77a] +_02349080: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02349088: .word 0x02353538 + arm_func_end ov29_02348FD8 + + arm_func_start ov29_0234908C +ov29_0234908C: ; 0x0234908C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + bl IsDestinationFloorWithItem + cmp r0, #0 + beq _023490CC + ldr r0, _02349148 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x77a] + cmp r0, #0 + bne _023490CC + bl GetItemToRetrieve + ldrsh r1, [r5, #4] + cmp r1, r0 + moveq r4, #1 + b _02349118 +_023490CC: + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _02349110 + ldr r0, _02349148 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x77a] + cmp r0, #0 + bne _02349110 + bl GetItemToRetrieve + ldrsh r1, [r5, #4] + cmp r1, r0 + bne _02349118 + ldrb r0, [r5] + tst r0, #0x40 + movne r4, #1 + b _02349118 +_02349110: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_02349118: + cmp r4, #0 + beq _02349140 + bl GetItemToRetrieve + mov r1, r0 + mov r0, #0 + bl ov29_02349AD4 + ldr r0, _02349148 ; =0x02353538 + mov r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x77a] +_02349140: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02349148: .word 0x02353538 + arm_func_end ov29_0234908C + + arm_func_start ov29_0234914C +ov29_0234914C: ; 0x0234914C + stmdb sp!, {r3, lr} + ldr r0, _02349184 ; =0x02353538 + mov r1, #5 + ldr r0, [r0] + strb r1, [sp] + ldrb r2, [r0, #0x748] + add r1, sp, #0 + mov r0, #0xb + bl CheckAcceptedMissionByTypeAndDungeon + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02349184: .word 0x02353538 + arm_func_end ov29_0234914C + + arm_func_start ov29_02349188 +ov29_02349188: ; 0x02349188 + ldr r0, _0234919C ; =0x02353538 + ldr ip, _023491A0 ; =ov29_023496EC + ldr r0, [r0] + add r0, r0, #0x760 + bx ip + .align 2, 0 +_0234919C: .word 0x02353538 +_023491A0: .word ov29_023496EC + arm_func_end ov29_02349188 + + arm_func_start ov29_023491A4 +ov29_023491A4: ; 0x023491A4 + ldr r0, _023491B4 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x760 + bx lr + .align 2, 0 +_023491B4: .word 0x02353538 + arm_func_end ov29_023491A4 + + arm_func_start ov29_023491B8 +ov29_023491B8: ; 0x023491B8 + ldr ip, _023491C0 ; =ov29_02349A70 + bx ip + .align 2, 0 +_023491C0: .word ov29_02349A70 + arm_func_end ov29_023491B8 + + arm_func_start IsOutlawOrChallengeRequestFloor +IsOutlawOrChallengeRequestFloor: ; 0x023491C4 + stmdb sp!, {r3, lr} + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + bne _023491F8 + mov r0, #0xa + bl IsCurrentMissionType + cmp r0, #0 + bne _023491F8 + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + beq _02349200 +_023491F8: + mov r0, #1 + ldmia sp!, {r3, pc} +_02349200: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end IsOutlawOrChallengeRequestFloor + + arm_func_start ov29_02349208 +ov29_02349208: ; 0x02349208 + ldr r0, _02349218 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x760] + bx lr + .align 2, 0 +_02349218: .word 0x02353538 + arm_func_end ov29_02349208 + + arm_func_start IsCurrentMissionType +IsCurrentMissionType: ; 0x0234921C + ldr r1, _0234924C ; =0x02353538 + ldr r2, [r1] + ldrb r1, [r2, #0x760] + cmp r1, #0 + beq _0234923C + ldrb r1, [r2, #0x761] + cmp r1, r0 + beq _02349244 +_0234923C: + mov r0, #0 + bx lr +_02349244: + mov r0, #1 + bx lr + .align 2, 0 +_0234924C: .word 0x02353538 + arm_func_end IsCurrentMissionType + + arm_func_start IsCurrentMissionTypeExact +IsCurrentMissionTypeExact: ; 0x02349250 + ldr r2, _02349288 ; =0x02353538 + ldr r3, [r2] + ldrb r2, [r3, #0x760] + cmp r2, #0 + beq _02349278 + ldrb r2, [r3, #0x761] + cmp r2, r0 + ldreqb r0, [r3, #0x762] + cmpeq r0, r1 + beq _02349280 +_02349278: + mov r0, #0 + bx lr +_02349280: + mov r0, #1 + bx lr + .align 2, 0 +_02349288: .word 0x02353538 + arm_func_end IsCurrentMissionTypeExact + + arm_func_start IsOutlawMonsterHouseFloor +IsOutlawMonsterHouseFloor: ; 0x0234928C + stmdb sp!, {r3, lr} + mov r0, #0xa + mov r1, #7 + bl IsCurrentMissionTypeExact + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsOutlawMonsterHouseFloor + + arm_func_start IsGoldenChamber +IsGoldenChamber: ; 0x023492B0 + stmdb sp!, {r3, lr} + mov r0, #3 + mov r1, #2 + bl IsCurrentMissionTypeExact + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsGoldenChamber + + arm_func_start IsLegendaryChallengeFloor +IsLegendaryChallengeFloor: ; 0x023492D4 + stmdb sp!, {r3, lr} + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + beq _02349308 + ldr r0, _02349310 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x762] + add r0, r0, #0xff + and r0, r0, #0xff + cmp r0, #4 + movls r0, #1 + ldmlsia sp!, {r3, pc} +_02349308: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02349310: .word 0x02353538 + arm_func_end IsLegendaryChallengeFloor + + arm_func_start IsJirachiChallengeFloor +IsJirachiChallengeFloor: ; 0x02349314 + stmdb sp!, {r3, lr} + mov r0, #0xb + bl IsCurrentMissionType + cmp r0, #0 + beq _02349340 + ldr r0, _02349348 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x762] + cmp r0, #5 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_02349340: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02349348: .word 0x02353538 + arm_func_end IsJirachiChallengeFloor + + arm_func_start IsDestinationFloorWithMonster +IsDestinationFloorWithMonster: ; 0x0234934C + stmdb sp!, {r3, lr} + ldr r0, _02349374 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x760 + bl FloorHasMissionMonster + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02349374: .word 0x02353538 + arm_func_end IsDestinationFloorWithMonster + + arm_func_start ov29_02349378 +ov29_02349378: ; 0x02349378 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _023493F4 ; =0x02353538 + ldr r0, [r0] + add r6, r0, #0x760 + mov r0, r6 + bl FloorHasMissionMonster + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsh r0, [r6, #0xc] + mov r4, #0 + mov r5, r4 + cmp r0, #0 + beq _023493E0 + bl GetSpriteFileSize + add r4, r4, r0 + b _023493E0 +_023493BC: + add r0, r6, r5, lsl #1 + ldrsh r0, [r0, #0xe] + cmp r0, #0 + beq _023493D4 + bl GetSpriteFileSize + add r4, r4, r0 +_023493D4: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_023493E0: + ldrsh r0, [r6, #0x14] + cmp r5, r0 + blt _023493BC + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023493F4: .word 0x02353538 + arm_func_end ov29_02349378 + + arm_func_start LoadMissionMonsterSprites +LoadMissionMonsterSprites: ; 0x023493F8 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _0234946C ; =0x02353538 + ldr r0, [r0] + add r6, r0, #0x760 + mov r0, r6 + bl FloorHasMissionMonster + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsh r0, [r6, #0xc] + cmp r0, #0 + beq _0234942C + mov r1, #1 + bl LoadMonsterSprite +_0234942C: + mov r5, #0 + mov r4, #1 + b _0234945C +_02349438: + add r0, r6, r5, lsl #1 + ldrsh r0, [r0, #0xe] + cmp r0, #0 + beq _02349450 + mov r1, r4 + bl LoadMonsterSprite +_02349450: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_0234945C: + ldrsh r0, [r6, #0x14] + cmp r5, r0 + blt _02349438 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0234946C: .word 0x02353538 + arm_func_end LoadMissionMonsterSprites + + arm_func_start MissionTargetEnemyIsDefeated +MissionTargetEnemyIsDefeated: ; 0x02349470 + ldr r0, _0234948C ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x760] + cmp r0, #0 + ldrneb r0, [r1, #0x77b] + moveq r0, #0 + bx lr + .align 2, 0 +_0234948C: .word 0x02353538 + arm_func_end MissionTargetEnemyIsDefeated + + arm_func_start SetMissionTargetEnemyDefeated +SetMissionTargetEnemyDefeated: ; 0x02349490 + ldr r1, _023494A0 ; =0x02353538 + ldr r1, [r1] + strb r0, [r1, #0x77b] + bx lr + .align 2, 0 +_023494A0: .word 0x02353538 + arm_func_end SetMissionTargetEnemyDefeated + + arm_func_start IsDestinationFloorWithFixedRoom +IsDestinationFloorWithFixedRoom: ; 0x023494A4 + ldr r0, _023494C8 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x760] + cmp r0, #0 + ldrneb r0, [r1, #0x776] + cmpne r0, #0 + moveq r0, #0 + movne r0, #1 + bx lr + .align 2, 0 +_023494C8: .word 0x02353538 + arm_func_end IsDestinationFloorWithFixedRoom + + arm_func_start GetItemToRetrieve +GetItemToRetrieve: ; 0x023494CC + ldr r0, _023494EC ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x760] + add r1, r1, #0x760 + cmp r0, #0 + ldrnesh r0, [r1, #4] + moveq r0, #0 + bx lr + .align 2, 0 +_023494EC: .word 0x02353538 + arm_func_end GetItemToRetrieve + + arm_func_start GetItemToDeliver +GetItemToDeliver: ; 0x023494F0 + stmdb sp!, {r4, lr} + ldr r1, _02349518 ; =0x02353538 + mov r0, #7 + ldr r1, [r1] + add r4, r1, #0x760 + bl IsCurrentMissionType + cmp r0, #0 + ldrnesh r0, [r4, #6] + moveq r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02349518: .word 0x02353538 + arm_func_end GetItemToDeliver + + arm_func_start GetSpecialTargetItem +GetSpecialTargetItem: ; 0x0234951C + stmdb sp!, {r4, lr} + ldr r1, _02349560 ; =0x02353538 + mov r0, #3 + ldr r2, [r1] + mov r1, #1 + add r4, r2, #0x760 + bl IsCurrentMissionTypeExact + cmp r0, #0 + bne _02349550 + mov r0, #0xc + bl IsCurrentMissionType + cmp r0, #0 + beq _02349558 +_02349550: + ldrsh r0, [r4, #8] + ldmia sp!, {r4, pc} +_02349558: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02349560: .word 0x02353538 + arm_func_end GetSpecialTargetItem + + arm_func_start IsDestinationFloorWithItem +IsDestinationFloorWithItem: ; 0x02349564 + stmdb sp!, {r4, lr} + ldr r0, _023495C0 ; =0x02353538 + ldr r1, [r0] + ldrb r0, [r1, #0x760] + add r4, r1, #0x760 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, #9 + bl IsCurrentMissionType + cmp r0, #0 + bne _023495B0 + mov r0, #7 + bl IsCurrentMissionType + cmp r0, #0 + bne _023495B0 + ldrsh r0, [r4, #4] + cmp r0, #0 + bne _023495B8 +_023495B0: + mov r0, #0 + ldmia sp!, {r4, pc} +_023495B8: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_023495C0: .word 0x02353538 + arm_func_end IsDestinationFloorWithItem + + arm_func_start IsDestinationFloorWithHiddenOutlaw +IsDestinationFloorWithHiddenOutlaw: ; 0x023495C4 + stmdb sp!, {r3, lr} + mov r0, #9 + mov r1, #1 + bl IsCurrentMissionTypeExact + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsDestinationFloorWithHiddenOutlaw + + arm_func_start IsDestinationFloorWithFleeingOutlaw +IsDestinationFloorWithFleeingOutlaw: ; 0x023495E8 + stmdb sp!, {r3, lr} + mov r0, #0xa + mov r1, #5 + bl IsCurrentMissionTypeExact + cmp r0, #0 + bne _02349618 + mov r0, #9 + mov r1, #2 + bl IsCurrentMissionTypeExact + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_02349618: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end IsDestinationFloorWithFleeingOutlaw + + arm_func_start GetMissionTargetEnemy +GetMissionTargetEnemy: ; 0x02349620 + ldr r0, _02349634 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x6e] + bx lr + .align 2, 0 +_02349634: .word 0x02353538 + arm_func_end GetMissionTargetEnemy + + arm_func_start GetMissionEnemyMinionGroup +GetMissionEnemyMinionGroup: ; 0x02349638 + ldr r1, _02349654 ; =0x02353538 + add r0, r0, #1 + ldr r1, [r1] + add r0, r1, r0, lsl #1 + add r0, r0, #0x700 + ldrsh r0, [r0, #0x6e] + bx lr + .align 2, 0 +_02349654: .word 0x02353538 + arm_func_end GetMissionEnemyMinionGroup + + arm_func_start ov29_02349658 +ov29_02349658: ; 0x02349658 + ldr r0, _02349684 ; =0x02353538 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1] + ldr r1, [r0] + strb r2, [r1, #1] + ldr r1, [r0] + strb r2, [r1, #2] + ldr r0, [r0] + strb r2, [r0, #3] + bx lr + .align 2, 0 +_02349684: .word 0x02353538 + arm_func_end ov29_02349658 + + arm_func_start ov29_02349688 +ov29_02349688: ; 0x02349688 + ldr r1, _02349698 ; =0x02353538 + ldr r1, [r1] + strb r0, [r1, #1] + bx lr + .align 2, 0 +_02349698: .word 0x02353538 + arm_func_end ov29_02349688 + + arm_func_start ov29_0234969C +ov29_0234969C: ; 0x0234969C + ldr r1, _023496AC ; =0x02353538 + ldr r1, [r1] + strb r0, [r1, #2] + bx lr + .align 2, 0 +_023496AC: .word 0x02353538 + arm_func_end ov29_0234969C + + arm_func_start ov29_023496B0 +ov29_023496B0: ; 0x023496B0 + ldr r0, _023496C0 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #2] + bx lr + .align 2, 0 +_023496C0: .word 0x02353538 + arm_func_end ov29_023496B0 + + arm_func_start SetTargetMonsterNotFoundFlag +SetTargetMonsterNotFoundFlag: ; 0x023496C4 + ldr r1, _023496D4 ; =0x02353538 + ldr r1, [r1] + strb r0, [r1, #3] + bx lr + .align 2, 0 +_023496D4: .word 0x02353538 + arm_func_end SetTargetMonsterNotFoundFlag + + arm_func_start GetTargetMonsterNotFoundFlag +GetTargetMonsterNotFoundFlag: ; 0x023496D8 + ldr r0, _023496E8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #3] + bx lr + .align 2, 0 +_023496E8: .word 0x02353538 + arm_func_end GetTargetMonsterNotFoundFlag + + arm_func_start ov29_023496EC +ov29_023496EC: ; 0x023496EC + mov ip, #0 + strb ip, [r0] + strb ip, [r0, #0x18] + strb ip, [r0, #0x17] + strb ip, [r0, #0x1a] + strh ip, [r0, #4] + strh ip, [r0, #6] + strh ip, [r0, #8] + strb ip, [r0, #0x16] + strh ip, [r0, #0xa] + strb ip, [r0, #0x1b] + strb ip, [r0, #0x1c] + strh ip, [r0, #0xc] + mov r3, ip +_02349724: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + add r2, r0, ip, lsl #1 + mov ip, r1, asr #0x10 + strh r3, [r2, #0xe] + cmp ip, #3 + blt _02349724 + strh r3, [r0, #0x14] + bx lr + arm_func_end ov29_023496EC + + arm_func_start FloorHasMissionMonster +FloorHasMissionMonster: ; 0x02349748 + ldrb r1, [r0] + cmp r1, #0 + moveq r0, #0 + bxeq lr + ldrb r0, [r0, #1] + cmp r0, #7 + cmpne r0, #0 + cmpne r0, #2 + cmpne r0, #1 + beq _02349780 + add r0, r0, #0xf8 + and r0, r0, #0xff + cmp r0, #3 + bhi _02349788 +_02349780: + mov r0, #1 + bx lr +_02349788: + mov r0, #0 + bx lr + arm_func_end FloorHasMissionMonster + + arm_func_start ov29_02349790 +ov29_02349790: ; 0x02349790 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl GetAcceptedMission + ldrb r1, [r0] + cmp r1, #5 + ldreqb r2, [r4] + ldreqb r1, [r0, #4] + cmpeq r2, r1 + ldreqb r2, [r4, #1] + ldreqb r1, [r0, #5] + cmpeq r2, r1 + movne r0, #0 + ldmia sp!, {r4, pc} + arm_func_end ov29_02349790 + + arm_func_start ov29_023497C8 +ov29_023497C8: ; 0x023497C8 + stmdb sp!, {r4, lr} + mov ip, #0 + mov r4, ip + b _02349804 +_023497D8: + mov r3, r4, lsl #1 + ldrsh lr, [r1, r3] + cmp lr, #0 + addne r3, ip, #1 + addne ip, r0, ip, lsl #1 + movne r3, r3, lsl #0x10 + strneh lr, [ip, #0xe] + movne ip, r3, asr #0x10 + add r3, r4, #1 + mov r3, r3, lsl #0x10 + mov r4, r3, asr #0x10 +_02349804: + cmp r4, #2 + cmplt ip, r2 + blt _023497D8 + strh ip, [r0, #0x14] + ldmia sp!, {r4, pc} + arm_func_end ov29_023497C8 + + arm_func_start ov29_02349818 +ov29_02349818: ; 0x02349818 + stmdb sp!, {r4, lr} + mov r4, #0 + add ip, r4, #1 + mov ip, ip, lsl #0x10 + strh r1, [r0, #0xe] + cmp r2, #0 + mov ip, ip, asr #0x10 + beq _02349874 + b _02349868 +_0234983C: + mov r1, r4, lsl #1 + ldrsh lr, [r2, r1] + cmp lr, #0 + addne r1, ip, #1 + addne ip, r0, ip, lsl #1 + movne r1, r1, lsl #0x10 + strneh lr, [ip, #0xe] + movne ip, r1, asr #0x10 + add r1, r4, #1 + mov r1, r1, lsl #0x10 + mov r4, r1, asr #0x10 +_02349868: + cmp r4, #2 + cmplt ip, r3 + blt _0234983C +_02349874: + strh ip, [r0, #0x14] + ldmia sp!, {r4, pc} + arm_func_end ov29_02349818 diff --git a/asm/overlay_29_023498A0.s b/asm/overlay_29_023498A0.s new file mode 100644 index 00000000..a906f793 --- /dev/null +++ b/asm/overlay_29_023498A0.s @@ -0,0 +1,5314 @@ + .include "asm/macros.inc" + .include "overlay_29_023498A0.inc" + + .text + + arm_func_start ov29_023498A0 +ov29_023498A0: ; 0x023498A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + str r0, [sp] + ldrb r0, [r0, #0x16] + cmp r0, #5 + bne _02349A54 + bl ov29_02337F98 + mov sb, r0 + bl IsCastform + cmp r0, #0 + mov r0, sb + beq _023498E4 + bl GetMonsterGenderVeneer + cmp r0, #1 + ldreq sb, _02349A5C ; =0x0000017B + ldrne sb, _02349A60 ; =0x000003D3 + b _02349904 +_023498E4: + bl IsCherrim + cmp r0, #0 + beq _02349904 + mov r0, sb + bl GetMonsterGenderVeneer + cmp r0, #1 + moveq sb, #0x1cc + ldrne sb, _02349A64 ; =0x00000424 +_02349904: + ldr r0, _02349A68 ; =0x000001C1 + sub r0, r0, #2 + str r0, [sp, #8] + ldr r0, _02349A6C ; =0x00000418 + sub r0, r0, #1 + str r0, [sp, #4] + ldr r0, _02349A68 ; =0x000001C1 + add r7, r0, #0x10 + ldr r0, _02349A6C ; =0x00000418 + add r6, r0, #0x10 + add r5, r0, #0x11 + ldr r0, _02349A68 ; =0x000001C1 + add r4, r0, #1 + add fp, r0, #2 + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, _02349A68 ; =0x000001C1 + add r8, r0, #6 +_0234994C: + cmp sb, r8 + ldreq r0, _02349A6C ; =0x00000418 + addeq sl, r0, #6 + beq _02349A44 + cmp sb, #0x1d0 + ldreq r0, _02349A68 ; =0x000001C1 + addeq sl, r0, #0xd + beq _02349A44 + cmp sb, r7 + ldreq r0, _02349A68 ; =0x000001C1 + addeq sl, r0, #0xe + beq _02349A44 + cmp sb, r6 + ldreq r0, _02349A6C ; =0x00000418 + addeq sl, r0, #0xe + beq _02349A44 + cmp sb, r5 + ldreq r0, _02349A6C ; =0x00000418 + addeq sl, r0, #0xf + beq _02349A44 + cmp sb, r4 + ldreq sl, [sp, #4] + beq _02349A44 + cmp sb, fp + ldreq sl, _02349A6C ; =0x00000418 + beq _02349A44 + cmp sb, #0x1c4 + ldreq r0, _02349A68 ; =0x000001C1 + addeq sl, r0, #0x258 + beq _02349A44 + ldr r0, [sp, #0xc] + cmp sb, r0 + bne _023499F4 + mov r0, #3 + bl DungeonRandInt + cmp r0, #0 + ldreq sl, [sp, #8] + beq _02349A44 + cmp r0, #1 + moveq sl, #0x1c0 + ldrne sl, _02349A68 ; =0x000001C1 + b _02349A44 +_023499F4: + mov r0, sb + bl GetMonsterPreEvolution + mov sl, r0 + add r0, sp, #0x10 + mov r1, sb + bl GetEvoParameters + ldrh r0, [sp, #0x16] + cmp r0, #0xa + bne _02349A28 + mov r0, sl + bl FemaleToMaleForm + mov sl, r0 + b _02349A3C +_02349A28: + cmp r0, #0xb + bne _02349A3C + mov r0, sl + bl GetSecondFormIfValid + mov sl, r0 +_02349A3C: + cmp sl, #0 + beq _02349A4C +_02349A44: + mov sb, sl + b _0234994C +_02349A4C: + ldr r0, [sp] + strh sb, [r0, #0x18] +_02349A54: + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02349A5C: .word 0x0000017B +_02349A60: .word 0x000003D3 +_02349A64: .word 0x00000424 +_02349A68: .word 0x000001C1 +_02349A6C: .word 0x00000418 + arm_func_end ov29_023498A0 + + arm_func_start ov29_02349A70 +ov29_02349A70: ; 0x02349A70 + stmdb sp!, {r4, r5, r6, lr} + mov r5, #0 + ldr r4, _02349AD0 ; =0x02353538 + b _02349AC0 +_02349A80: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r6, [r0, #0xb28] + mov r0, r6 + bl EntityIsValid__0234987C + cmp r0, #0 + beq _02349AB4 + ldr r0, [r6, #0xb4] + bl IsExperienceLocked + cmp r0, #0 + movne r0, r6 + ldmneia sp!, {r4, r5, r6, pc} +_02349AB4: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_02349AC0: + cmp r5, #4 + blt _02349A80 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02349AD0: .word 0x02353538 + arm_func_end ov29_02349A70 + + arm_func_start ov29_02349AD4 +ov29_02349AD4: ; 0x02349AD4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02349C80 ; =0x02353538 + mov r5, r0 + ldr r2, [r2] + mov r4, r1 + ldrb r0, [r2, #0x760] + add r1, r2, #0x760 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsb r0, [r1, #3] + bl GetAcceptedMission + ldrb r1, [r0] + cmp r1, #5 + bne _02349C78 + ldrb r1, [r0, #1] + cmp r1, #0 + cmpne r1, #7 + cmpne r1, #2 + cmpne r1, #1 + cmpne r1, #8 + bne _02349B3C + ldrsh r1, [r0, #0x10] + cmp r5, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349B3C: + cmp r1, #6 + cmpne r1, #4 + bne _02349B5C + ldrsh r1, [r0, #0x14] + cmp r4, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349B5C: + cmp r1, #9 + bne _02349B90 + ldrsh r1, [r0, #0x10] + cmp r5, r1 + moveq r1, #7 + streqb r1, [r0] + beq _02349C60 + cmp r5, #0 + ldreqsh r1, [r0, #0x14] + cmpeq r4, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349B90: + cmp r1, #3 + bne _02349BE8 + ldrb r1, [r0, #2] + cmp r1, #0 + moveq r1, #7 + streqb r1, [r0] + beq _02349C60 + cmp r1, #1 + bne _02349BC8 + ldrsh r1, [r0, #0x14] + cmp r4, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349BC8: + cmp r1, #2 + moveq r1, #7 + streqb r1, [r0] + beq _02349C60 + cmp r1, #3 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349BE8: + cmp r1, #4 + bne _02349C04 + ldrsh r1, [r0, #0x14] + cmp r4, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349C04: + cmp r1, #5 + moveq r1, #7 + streqb r1, [r0] + beq _02349C60 + cmp r1, #0xa + bne _02349C30 + ldrsh r1, [r0, #0x10] + cmp r5, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349C30: + cmp r1, #0xb + bne _02349C4C + ldrsh r1, [r0, #0xe] + cmp r5, r1 + moveq r1, #7 + streqb r1, [r0] + b _02349C60 +_02349C4C: + cmp r1, #0xc + ldreqsh r1, [r0, #0x14] + cmpeq r4, r1 + moveq r1, #7 + streqb r1, [r0] +_02349C60: + ldrb r1, [r0] + cmp r1, #7 + ldreqb r1, [r0, #0x16] + cmpeq r1, #5 + bne _02349C78 + bl ov29_023498A0 +_02349C78: + bl ov29_022E8244 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02349C80: .word 0x02353538 + arm_func_end ov29_02349AD4 + + arm_func_start ov29_02349C84 +ov29_02349C84: ; 0x02349C84 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0xa0 + bl ov29_02349208 + cmp r0, #0 + moveq r0, #0 + beq _0234A1F8 + bl ov29_023491A4 + ldr r1, _0234A200 ; =0x023537C8 + mov r2, #0 + mov r4, r0 + str r2, [r1] + bl GetTargetMonsterNotFoundFlag + cmp r0, #0 + beq _02349CD4 + bl ov29_022EAC8C + ldr r1, _0234A204 ; =0x00000E11 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_02349CD4: + ldrb r0, [r4, #1] + cmp r0, #0xe + addls pc, pc, r0, lsl #2 + b _0234A1D4 +_02349CE4: ; jump table + b _02349D20 ; case 0 + b _02349D20 ; case 1 + b _02349D20 ; case 2 + b _02349D38 ; case 3 + b _02349D20 ; case 4 + b _02349E6C ; case 5 + b _02349D20 ; case 6 + b _02349D20 ; case 7 + b _02349D20 ; case 8 + b _0234A1A4 ; case 9 + b _0234A134 ; case 10 + b _02349F1C ; case 11 + b _0234A120 ; case 12 + b _0234A1D4 ; case 13 + b _0234A1D4 ; case 14 +_02349D20: + bl ov29_022EAC8C + ldr r1, _0234A208 ; =0x00000E04 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_02349D38: + ldrb r0, [r4, #2] + cmp r0, #3 + beq _0234A1D4 + bl ov29_022EAC8C + ldr r1, _0234A208 ; =0x00000E04 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldrb r0, [r4, #2] + cmp r0, #2 + bne _02349DC8 + bl ov29_023491B8 + mov r1, r0 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _0234A20C ; =0x00000E34 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldrsh r5, [r4, #0xa] + add r0, sp, #0x10 + mov r2, #0 + mov r1, r5 + bl ov29_0234BAC0 + mov r1, r5 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A210 ; =0x00000E35 + add r0, sp, #0x10 + mov r2, #1 + bl DisplayMessage + ldrsh r0, [r4, #0xa] + mov r1, #0 + bl ov29_02348888 + b _0234A1D4 +_02349DC8: + cmp r0, #0 + bne _0234A1D4 + bl ov29_023491B8 + mov r5, r0 + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, #0 + mov r1, #0xe30 + mov r2, #1 + bl DisplayMessage + ldrsh r4, [r4, #0xa] + add r0, sp, #0 + mov r2, #0 + mov r1, r4 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A214 ; =0x00000E31 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A218 ; =0x00000E32 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r0, [r5, #0xb4] + mov r1, #0 + ldrsh r0, [r0, #2] + bl ov29_02348888 + ldr r2, _0234A21C ; =0x02353538 + ldr r3, _0234A220 ; =0x00000E33 + ldr r2, [r2] + mov r0, r5 + add r2, r2, #0x348 + mov r1, #0 + add r2, r2, #0x400 + bl ov29_0234AF34 + b _0234A1D4 +_02349E6C: + bl ov29_022EAC8C + ldr r1, _0234A208 ; =0x00000E04 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + bl ov29_023491B8 + mov r5, r0 + mov r0, #1 + mov r1, r5 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, #0 + mov r1, #0xe30 + mov r2, #1 + bl DisplayMessage + ldrsh r4, [r4, #0xa] + add r0, sp, #0x20 + mov r2, #0 + mov r1, r4 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A214 ; =0x00000E31 + add r0, sp, #0x20 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A218 ; =0x00000E32 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r0, [r5, #0xb4] + mov r1, #0 + ldrsh r0, [r0, #2] + bl ov29_02348888 + ldr r2, _0234A21C ; =0x02353538 + ldr r3, _0234A220 ; =0x00000E33 + ldr r2, [r2] + mov r0, r5 + add r2, r2, #0x348 + mov r1, #0 + add r2, r2, #0x400 + bl ov29_0234AF34 + b _0234A1D4 +_02349F1C: + mov r0, #4 + bl ov29_022FBBEC + add r0, r0, #4 + bl ov29_022FA3D4 + mov r0, #1 + bl ov29_022EAF34 + bl GetMissionTargetEnemy + mov r1, r0 + mov r0, #1 + bl ov29_0234B0CC + mov r0, #0 + ldr r1, _0234A224 ; =0x00000E0A + mov r2, #1 + bl DisplayMessage + ldrb r0, [r4, #2] + cmp r0, #0 + bne _02349FA4 + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x80 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x80 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A228 ; =0x00000E0B + add r0, sp, #0x80 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_02349FA4: + cmp r0, #1 + bne _02349FF0 + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x70 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x70 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A22C ; =0x00000E0C + add r0, sp, #0x70 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_02349FF0: + cmp r0, #2 + bne _0234A03C + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x60 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x60 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A230 ; =0x00000E0D + add r0, sp, #0x60 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_0234A03C: + cmp r0, #3 + bne _0234A088 + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x50 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x50 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A234 ; =0x00000E0E + add r0, sp, #0x50 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_0234A088: + cmp r0, #4 + bne _0234A0D4 + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x40 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x40 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A238 ; =0x00000E0F + add r0, sp, #0x40 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_0234A0D4: + cmp r0, #5 + bne _0234A1D4 + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x30 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + add r0, sp, #0x30 + mov r1, #0x12 + bl SetPortraitUnknownAttr + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + add r0, sp, #0x30 + mov r1, #0xe10 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_0234A120: + ldr r1, _0234A23C ; =0x00000E09 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + b _0234A1D4 +_0234A134: + ldrb r0, [r4, #2] + cmp r0, #5 + bne _0234A148 + bl ov29_0234AE40 + b _0234A1D4 +_0234A148: + cmp r0, #7 + bne _0234A198 + mov r0, #1 + bl ov29_0234ADCC + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0x90 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A240 ; =0x00000E07 + add r0, sp, #0x90 + mov r2, #1 + bl DisplayMessage + mov r0, #2 + bl ov29_022EAF34 + b _0234A1D4 +_0234A198: + mov r0, #0 + bl ov29_0234ADCC + b _0234A1D4 +_0234A1A4: + ldrb r0, [r4, #2] + cmp r0, #2 + bne _0234A1B8 + bl ov29_0234AE40 + b _0234A1D4 +_0234A1B8: + cmp r0, #1 + bne _0234A1CC + mov r0, #3 + bl ov29_0234ADCC + b _0234A1D4 +_0234A1CC: + mov r0, #0 + bl ov29_0234ADCC +_0234A1D4: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + ldr r0, _0234A200 ; =0x023537C8 + ldr r0, [r0] + cmp r0, #0 + beq _0234A1F4 + blx r0 +_0234A1F4: + mov r0, #1 +_0234A1F8: + add sp, sp, #0xa0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234A200: .word 0x023537C8 +_0234A204: .word 0x00000E11 +_0234A208: .word 0x00000E04 +_0234A20C: .word 0x00000E34 +_0234A210: .word 0x00000E35 +_0234A214: .word 0x00000E31 +_0234A218: .word 0x00000E32 +_0234A21C: .word 0x02353538 +_0234A220: .word 0x00000E33 +_0234A224: .word 0x00000E0A +_0234A228: .word 0x00000E0B +_0234A22C: .word 0x00000E0C +_0234A230: .word 0x00000E0D +_0234A234: .word 0x00000E0E +_0234A238: .word 0x00000E0F +_0234A23C: .word 0x00000E09 +_0234A240: .word 0x00000E07 + arm_func_end ov29_02349C84 + + arm_func_start ov29_0234A244 +ov29_0234A244: ; 0x0234A244 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl ov29_023491B8 + movs r4, r0 + bne _0234A26C + ldr r1, _0234A2C8 ; =0x00000E2D + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldmia sp!, {r3, r4, r5, pc} +_0234A26C: + mov r1, r4 + mov r0, #2 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r4 + bl ov29_023009CC + cmp r0, #0 + bne _0234A2A0 + ldr r1, _0234A2CC ; =0x00000E2F + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldmia sp!, {r3, r4, r5, pc} +_0234A2A0: + mov r0, r5 + mov r1, r4 + bl ov29_022E274C + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _0234A2D0 ; =0x00000E2C + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234A2C8: .word 0x00000E2D +_0234A2CC: .word 0x00000E2F +_0234A2D0: .word 0x00000E2C + arm_func_end ov29_0234A244 + + arm_func_start ov29_0234A2D4 +ov29_0234A2D4: ; 0x0234A2D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov sl, r0 + ldr sb, [sl, #0xb4] + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, sl + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, sl + bl ov29_023009CC + cmp r0, #0 + bne _0234A32C + ldr r1, _0234A5B0 ; =0x00000E27 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234A5A8 +_0234A32C: + mov r0, #7 + bl IsCurrentMissionType + cmp r0, #0 + mov r0, #0 + mov r3, #1 + beq _0234A504 + ldr r1, _0234A5B4 ; =0x00000E21 + mov r2, r0 + str r0, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _0234A5A8 + mov r7, #0 + mov fp, r7 + mov r6, #1 + ldr r5, _0234A5B8 ; =0x020AF6B8 + mov r4, #6 + b _0234A3D8 +_0234A374: + mul r0, r7, r4 + ldr r1, [r5] + ldr r1, [r1, #0x384] + ldrb r2, [r1, r0] + add r8, r1, r0 + tst r2, #1 + movne r0, r6 + moveq r0, fp + tst r0, #0xff + beq _0234A3D4 + ldrb r0, [r8] + tst r0, #2 + bne _0234A3D4 + tst r0, #0x10 + beq _0234A3C4 + tst r2, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0234A3D4 +_0234A3C4: + bl GetItemToDeliver + ldrsh r1, [r8, #4] + cmp r1, r0 + beq _0234A3E0 +_0234A3D4: + add r7, r7, #1 +_0234A3D8: + cmp r7, #0x32 + blt _0234A374 +_0234A3E0: + cmp r7, #0x32 + bne _0234A40C + bl GetItemToDeliver + mov r1, r0 + mov r0, #0 + bl ov29_02344B9C + ldr r1, _0234A5BC ; =0x00000E26 + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234A5A8 +_0234A40C: + mov r0, #6 + ldr r1, _0234A5B8 ; =0x020AF6B8 + mul r4, r7, r0 + ldr r0, [r1] + ldr r0, [r0, #0x384] + add r0, r0, r4 + ldrb r1, [r0, #1] + cmp r1, #0 + beq _0234A47C + ldr r0, _0234A5C0 ; =0x02353538 + sub r1, r1, #1 + ldr r0, [r0] + add r0, r0, r1, lsl #2 + add r0, r0, #0x12000 + ldr r1, [r0, #0xb28] + cmp r1, #0 + moveq r0, #0 + beq _0234A468 + ldr r0, [r1] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0234A468: + cmp r0, #0 + beq _0234A47C + ldr r0, [r1, #0xb4] + add r0, r0, #0x62 + bl ItemZInit +_0234A47C: + ldr r0, _0234A5B8 ; =0x020AF6B8 + ldr r0, [r0] + ldr r0, [r0, #0x384] + add r0, r0, r4 + bl ItemZInit + bl ov29_02347030 + ldr r1, _0234A5C4 ; =0x00000E1D + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A5B8 ; =0x020AF6B8 + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1, #0x384] + add r1, r1, r4 + bl ov29_02344B44 + ldrsh r4, [sb, #4] + add r0, sp, #0x14 + mov r2, #0 + mov r1, r4 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A5C8 ; =0x00000E1E + add r0, sp, #0x14 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A5CC ; =0x00000E1F + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r4, _0234A5D0 ; =0x00000E44 + b _0234A570 +_0234A504: + mov r2, r0 + mov r1, #0xe20 + str r0, [sp] + bl ov29_0234D518 + cmp r0, #1 + bne _0234A5A8 + ldr r1, _0234A5D4 ; =0x00000E1A + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldrsh r4, [sb, #4] + add r0, sp, #4 + mov r2, #0 + mov r1, r4 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A5D8 ; =0x00000E1B + add r0, sp, #4 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A5DC ; =0x00000E1C + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r4, _0234A5E0 ; =0x00000E23 +_0234A570: + ldrsh r0, [sb, #2] + mov r1, #0 + bl ov29_02348888 + ldr r1, _0234A5C0 ; =0x02353538 + mov r0, sl + ldr r1, [r1] + mov r3, r4 + add r1, r1, #0x348 + add r2, r1, #0x400 + mov r1, #0 + bl ov29_0234AF34 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234A5A8: + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234A5B0: .word 0x00000E27 +_0234A5B4: .word 0x00000E21 +_0234A5B8: .word 0x020AF6B8 +_0234A5BC: .word 0x00000E26 +_0234A5C0: .word 0x02353538 +_0234A5C4: .word 0x00000E1D +_0234A5C8: .word 0x00000E1E +_0234A5CC: .word 0x00000E1F +_0234A5D0: .word 0x00000E44 +_0234A5D4: .word 0x00000E1A +_0234A5D8: .word 0x00000E1B +_0234A5DC: .word 0x00000E1C +_0234A5E0: .word 0x00000E23 + arm_func_end ov29_0234A2D4 + + arm_func_start ov29_0234A5E4 +ov29_0234A5E4: ; 0x0234A5E4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r0 + ldr r6, [r7, #0xb4] + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r7 + bl ov29_023009CC + cmp r0, #0 + bne _0234A63C + ldr r1, _0234A740 ; =0x00000E2E + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234A738 +_0234A63C: + bl ov29_023491B8 + movs r4, r0 + bne _0234A65C + ldr r1, _0234A744 ; =0x00000E2D + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234A738 +_0234A65C: + mov r1, r4 + mov r0, #2 + mov r2, #0 + bl SubstitutePlaceholderStringTags + mov r0, r4 + bl ov29_023009CC + cmp r0, #0 + bne _0234A690 + ldr r1, _0234A748 ; =0x00000E2F + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234A738 +_0234A690: + mov r0, r7 + mov r1, r4 + bl ov29_022E274C + cmp r0, #0 + mov r0, #0 + mov r2, #1 + bne _0234A6B8 + ldr r1, _0234A74C ; =0x00000E2C + bl DisplayMessage2 + b _0234A738 +_0234A6B8: + ldr r1, _0234A750 ; =0x00000E28 + bl DisplayMessage + ldrsh r5, [r6, #4] + add r0, sp, #0 + mov r2, #0 + mov r1, r5 + bl ov29_0234BAC0 + mov r1, r5 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A754 ; =0x00000E29 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234A758 ; =0x00000E2A + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldrsh r0, [r6, #2] + mov r1, #0 + bl ov29_02348888 + ldr r2, _0234A75C ; =0x02353538 + ldr r3, _0234A760 ; =0x00000E2B + ldr r2, [r2] + mov r0, r4 + add r2, r2, #0x348 + mov r1, r7 + add r2, r2, #0x400 + bl ov29_0234AF34 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234A738: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234A740: .word 0x00000E2E +_0234A744: .word 0x00000E2D +_0234A748: .word 0x00000E2F +_0234A74C: .word 0x00000E2C +_0234A750: .word 0x00000E28 +_0234A754: .word 0x00000E29 +_0234A758: .word 0x00000E2A +_0234A75C: .word 0x02353538 +_0234A760: .word 0x00000E2B + arm_func_end ov29_0234A5E4 + + arm_func_start ov29_0234A764 +ov29_0234A764: ; 0x0234A764 + stmdb sp!, {r3, lr} + bl GetLeader + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl GetForcedLossReason + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov29_0234A764 + + arm_func_start ov29_0234A790 +ov29_0234A790: ; 0x0234A790 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r0 + bl ov29_0234A764 + cmp r0, #0 + bne _0234A8A4 + mov r0, #0xa + mov r1, #4 + bl IsCurrentMissionTypeExact + movs r4, r0 + mov r5, #0 + beq _0234A7CC + bl ov29_023491B8 + movs r5, r0 + beq _0234A8A4 +_0234A7CC: + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r7 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A8AC ; =0x00000E14 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + bl ov29_0234AEE8 + cmp r4, #0 + beq _0234A84C + ldr r1, [r5, #0xb4] + mov r0, #1 + ldrsh r1, [r1, #2] + bl ov29_0234B0CC + ldr r1, [r5, #0xb4] + add r0, sp, #0 + ldrsh r6, [r1, #2] + mov r2, #0 + mov r1, r6 + bl ov29_0234BAC0 + mov r1, r6 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A8B0 ; =0x00000E18 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage +_0234A84C: + mov r1, r7 + mov r0, #1 + bl ov29_0234B0CC + mov r0, r7 + mov r1, #0 + bl ov29_02348888 + cmp r4, #0 + beq _0234A890 + ldr r0, _0234A8B4 ; =0x02353538 + ldr r3, _0234A8B8 ; =0x00000E44 + ldr r1, [r0] + mov r0, r5 + add r1, r1, #0x348 + add r2, r1, #0x400 + mov r1, #0 + bl ov29_0234AF34 + b _0234A898 +_0234A890: + ldr r0, _0234A8B8 ; =0x00000E44 + bl ov29_02348A18 +_0234A898: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234A8A4: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234A8AC: .word 0x00000E14 +_0234A8B0: .word 0x00000E18 +_0234A8B4: .word 0x02353538 +_0234A8B8: .word 0x00000E44 + arm_func_end ov29_0234A790 + + arm_func_start ov29_0234A8BC +ov29_0234A8BC: ; 0x0234A8BC + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_0234A764 + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl IsDestinationFloorWithHiddenOutlaw + cmp r0, #0 + beq _0234A928 + bl ov29_023496B0 + cmp r0, #0 + beq _0234A918 + bl GetItemToRetrieve + mov r1, r0 + mov r0, #0 + bl ov29_02344B9C + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A978 ; =0x00000E16 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + b _0234A958 +_0234A918: + mov r0, r4 + mov r1, #0 + bl ov29_02348888 + ldmia sp!, {r4, pc} +_0234A928: + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234A97C ; =0x00000E15 + mov r0, #0 + mov r2, #1 + bl DisplayMessage +_0234A958: + bl ov29_0234AEE8 + mov r0, r4 + mov r1, #0 + bl ov29_02348888 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + ldmia sp!, {r4, pc} + .align 2, 0 +_0234A978: .word 0x00000E16 +_0234A97C: .word 0x00000E15 + arm_func_end ov29_0234A8BC + + arm_func_start ov29_0234A980 +ov29_0234A980: ; 0x0234A980 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + bl ov29_023491B8 + movs r5, r0 + beq _0234AA78 + bl ov29_023009CC + cmp r0, #0 + bne _0234A9DC + mov r0, r5 + bl ov29_022E550C + mov r0, r5 + mov r1, r5 + mov r2, #0 + mov r3, #1 + bl ov29_02305C28 + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _0234AA80 ; =0x00000E39 + mov r0, #0 + mov r2, #1 + bl DisplayMessage +_0234A9DC: + mov r1, r5 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + ldr r1, _0234AA84 ; =0x00000E36 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, [r5, #0xb4] + add r0, sp, #0 + ldrsh r4, [r1, #4] + mov r2, #0 + mov r1, r4 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234AA88 ; =0x00000E37 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234AA8C ; =0x00000E38 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + mov r0, #0 + mov r1, r0 + bl ov29_02348888 + ldr r2, _0234AA90 ; =0x02353538 + ldr r3, _0234AA94 ; =0x00000E3A + ldr r2, [r2] + mov r0, r5 + add r2, r2, #0x348 + mov r1, #0 + add r2, r2, #0x400 + bl ov29_0234AF34 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234AA78: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234AA80: .word 0x00000E39 +_0234AA84: .word 0x00000E36 +_0234AA88: .word 0x00000E37 +_0234AA8C: .word 0x00000E38 +_0234AA90: .word 0x02353538 +_0234AA94: .word 0x00000E3A + arm_func_end ov29_0234A980 + + arm_func_start ov29_0234AA98 +ov29_0234AA98: ; 0x0234AA98 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r0 + bl ov29_023491B8 + movs r4, r0 + bne _0234AAC4 + ldr r1, _0234AB9C ; =0x00000E2D + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + b _0234AB94 +_0234AAC4: + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl SubstitutePlaceholderStringTags + bl GetSpecialTargetItem + mov r1, r0 + mov r0, #1 + bl ov29_0234B084 + ldr r1, _0234ABA0 ; =0x00000E3F + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, [r4, #0xb4] + add r0, sp, #0 + ldrsh r5, [r1, #4] + mov r2, #0 + mov r1, r5 + bl ov29_0234BAC0 + mov r1, r5 + mov r0, #1 + bl ov29_0234B0CC + add r0, sp, #0 + mov r1, #0xe40 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234ABA4 ; =0x00000E41 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + add r0, r6, #4 + mov r1, #1 + bl ov29_023456BC + bl GetSpecialTargetItem + mov r1, r0 + mov r0, #0 + bl ov29_02348888 + ldr r2, _0234ABA8 ; =0x02353538 + ldr r3, _0234ABAC ; =0x00000E42 + ldr r2, [r2] + mov r0, r4 + add r2, r2, #0x348 + mov r1, #0 + add r2, r2, #0x400 + bl ov29_0234AF34 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234AB94: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0234AB9C: .word 0x00000E2D +_0234ABA0: .word 0x00000E3F +_0234ABA4: .word 0x00000E41 +_0234ABA8: .word 0x02353538 +_0234ABAC: .word 0x00000E42 + arm_func_end ov29_0234AA98 + + arm_func_start ov29_0234ABB0 +ov29_0234ABB0: ; 0x0234ABB0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_0234A764 + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl GetLeader + mov r1, r0 + mov r0, #0 + mov r2, r0 + bl SubstitutePlaceholderStringTags + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234AC80 ; =0x00000E13 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + bl IsJirachiChallengeFloor + cmp r0, #0 + bne _0234AC40 + ldr r0, _0234AC84 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + bne _0234AC38 + bl ov29_022EAEFC + cmp r0, #0 + beq _0234AC38 + ldr r0, _0234AC84 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd6] + bl ov29_022EAD00 + bl ov29_022EAE14 +_0234AC38: + mov r0, #0 + bl ov29_022EAF34 +_0234AC40: + mov r0, r4 + mov r1, #0 + bl ov29_02348888 + bl IsJirachiChallengeFloor + cmp r0, #0 + beq _0234AC68 + mov r0, #2 + mov r1, #1 + bl ov29_022E09E8 + b _0234AC70 +_0234AC68: + ldr r0, _0234AC88 ; =0x00000E43 + bl ov29_02348A18 +_0234AC70: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + ldmia sp!, {r4, pc} + .align 2, 0 +_0234AC80: .word 0x00000E13 +_0234AC84: .word 0x02353538 +_0234AC88: .word 0x00000E43 + arm_func_end ov29_0234ABB0 + + arm_func_start ov29_0234AC8C +ov29_0234AC8C: ; 0x0234AC8C + stmdb sp!, {r3, r4, r5, lr} + bl GetSpecialTargetItem + mov r1, r0 + mov r0, #0 + bl ov29_02348888 + bl ov29_0234D630 + bl ov29_0234B034 + mov r1, r0 + mov r0, #1 + str r0, [sp] + mov r2, #0 + ldr r0, _0234AD08 ; =0x00000E12 + mov r3, r2 + bl ov29_0234D70C + mov r0, #9 + bl ov29_022EACE4 + mov r5, #0x62 + mov r4, #9 + b _0234ACE0 +_0234ACD8: + mov r0, r5 + bl AdvanceFrame +_0234ACE0: + mov r0, r4 + bl sub_02017C10 + cmp r0, #0 + bne _0234ACD8 + bl ov29_0234D838 + mov r0, #0 + bl ov29_0234D8A0 + ldr r0, _0234AD0C ; =0x00000E43 + bl ov29_02348A18 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234AD08: .word 0x00000E12 +_0234AD0C: .word 0x00000E43 + arm_func_end ov29_0234AC8C + + arm_func_start ov29_0234AD10 +ov29_0234AD10: ; 0x0234AD10 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl IsDestinationFloorWithFleeingOutlaw + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r4, #0 + moveq r0, #0 + beq _0234AD44 + ldr r0, [r4] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff +_0234AD44: + cmp r0, #0 + ldrne r1, [r4, #0xb4] + ldrneb r0, [r1, #6] + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r1, #0xbc] + cmp r0, #3 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r4 + bl ov29_02300B04 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsh r0, [r4, #4] + ldrsh r1, [r4, #6] + bl ov29_023363EC + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r4, #0xb4] + ldr r1, _0234ADC4 ; =0x0000025B + ldrsh r5, [r0, #2] + mov r0, r4 + mov r2, #0 + bl HandleFaint + mov r1, r5 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234ADC8 ; =0x00000E19 + mov r0, #0 + mov r2, #1 + bl LogMessageById + bl ov29_0234AEE8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234ADC4: .word 0x0000025B +_0234ADC8: .word 0x00000E19 + arm_func_end ov29_0234AD10 + + arm_func_start ov29_0234ADCC +ov29_0234ADCC: ; 0x0234ADCC + stmdb sp!, {r3, lr} + cmp r0, #3 + bne _0234ADF0 + bl ov29_022EAC8C + ldr r1, _0234AE38 ; =0x00000E04 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldmia sp!, {r3, pc} +_0234ADF0: + cmp r0, #2 + bne _0234AE0C + mov r0, #3 + bl ov29_022FBBEC + add r0, r0, #4 + bl ov29_022FA3D4 + b _0234AE1C +_0234AE0C: + mov r0, #1 + bl ov29_022FBBEC + add r0, r0, #4 + bl ov29_022FA3D4 +_0234AE1C: + mov r0, #1 + bl ov29_022EAF34 + ldr r1, _0234AE3C ; =0x00000E05 + mov r0, #0 + mov r2, #1 + bl DisplayMessage + ldmia sp!, {r3, pc} + .align 2, 0 +_0234AE38: .word 0x00000E04 +_0234AE3C: .word 0x00000E05 + arm_func_end ov29_0234ADCC + + arm_func_start ov29_0234AE40 +ov29_0234AE40: ; 0x0234AE40 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r0, #2 + bl ov29_0234ADCC + bl GetMissionTargetEnemy + mov r4, r0 + add r0, sp, #0 + mov r1, r4 + mov r2, #0 + bl ov29_0234BAC0 + mov r1, r4 + mov r0, #1 + bl ov29_0234B0CC + ldr r1, _0234AE98 ; =0x00000E06 + add r0, sp, #0 + mov r2, #1 + bl DisplayMessage + ldr r1, _0234AE9C ; =ov29_0234AEA4 + ldr r0, _0234AEA0 ; =0x023537C8 + str r1, [r0] + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_0234AE98: .word 0x00000E06 +_0234AE9C: .word ov29_0234AEA4 +_0234AEA0: .word 0x023537C8 + arm_func_end ov29_0234AE40 + + arm_func_start ov29_0234AEA4 +ov29_0234AEA4: ; 0x0234AEA4 + stmdb sp!, {r4, lr} + mov r0, #3 + bl ov29_022FBBEC + mov r4, r0 + bl ShouldMonsterHeadToStairs + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, r4 + mov r1, #0xbb + bl ov29_022FBA54 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #0xbb + mov r2, #0 + bl ov29_0231AF24 + ldmia sp!, {r4, pc} + arm_func_end ov29_0234AEA4 + + arm_func_start ov29_0234AEE8 +ov29_0234AEE8: ; 0x0234AEE8 + stmdb sp!, {r3, lr} + ldr r0, _0234AF30 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x790] + cmp r0, #0 + bne _0234AF24 + bl ov29_022EAEFC + cmp r0, #0 + beq _0234AF24 + ldr r0, _0234AF30 ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x4000 + ldrsh r0, [r0, #0xd6] + bl ov29_022EAD00 + bl ov29_022EAE14 +_0234AF24: + mov r0, #0 + bl ov29_022EAF34 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234AF30: .word 0x02353538 + arm_func_end ov29_0234AEE8 + + arm_func_start ov29_0234AF34 +ov29_0234AF34: ; 0x0234AF34 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldrb ip, [r2] + ldr r2, [r6, #0xb4] + mov r5, r1 + mov r4, r3 + strb ip, [r2, #0x48] + bl ov29_022E68F0 + cmp r5, #0 + beq _0234AF64 + mov r0, r5 + bl ov29_022E68F0 +_0234AF64: + ldr r1, _0234AFA0 ; =0x0000025B + mov r0, r6 + mov r2, #0 + bl HandleFaint + cmp r5, #0 + beq _0234AF8C + ldr r1, _0234AFA0 ; =0x0000025B + mov r0, r5 + mov r2, #0 + bl HandleFaint +_0234AF8C: + mov r0, #1 + bl ov29_022E38E0 + mov r0, r4 + bl ov29_02348A18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0234AFA0: .word 0x0000025B + arm_func_end ov29_0234AF34 + + arm_func_start ov29_0234AFA4 +ov29_0234AFA4: ; 0x0234AFA4 + stmdb sp!, {r3, lr} + mov r0, #0xcf0 + mov r1, #0 + bl MemAlloc + ldr r2, _0234AFCC ; =0x023537CC + mov r1, #0xcf0 + str r0, [r2, #4] + bl MemZero + bl ov29_0234B130 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234AFCC: .word 0x023537CC + arm_func_end ov29_0234AFA4 + + arm_func_start ov29_0234AFD0 +ov29_0234AFD0: ; 0x0234AFD0 + stmdb sp!, {r3, lr} + ldr r0, _0234AFF8 ; =0x023537CC + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0234AFF8 ; =0x023537CC + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234AFF8: .word 0x023537CC + arm_func_end ov29_0234AFD0 + + arm_func_start ov29_0234AFFC +ov29_0234AFFC: ; 0x0234AFFC + ldr r1, _0234B00C ; =0x023537CC + ldr r1, [r1, #4] + strb r0, [r1, #0xced] + bx lr + .align 2, 0 +_0234B00C: .word 0x023537CC + arm_func_end ov29_0234AFFC + + arm_func_start ov29_0234B010 +ov29_0234B010: ; 0x0234B010 + ldr r1, _0234B020 ; =0x023537CC + ldr r1, [r1, #4] + strb r0, [r1, #0xcee] + bx lr + .align 2, 0 +_0234B020: .word 0x023537CC + arm_func_end ov29_0234B010 + + arm_func_start ov29_0234B024 +ov29_0234B024: ; 0x0234B024 + ldr r1, _0234B030 ; =0x023537CC + strb r0, [r1] + bx lr + .align 2, 0 +_0234B030: .word 0x023537CC + arm_func_end ov29_0234B024 + + arm_func_start ov29_0234B034 +ov29_0234B034: ; 0x0234B034 + ldr r0, _0234B048 ; =0x023537CC + ldr r0, [r0, #4] + add r0, r0, #0x9c + add r0, r0, #0xc00 + bx lr + .align 2, 0 +_0234B048: .word 0x023537CC + arm_func_end ov29_0234B034 + + arm_func_start ov29_0234B04C +ov29_0234B04C: ; 0x0234B04C + ldr r0, _0234B064 ; =0x023537CC + ldr ip, _0234B068 ; =InitPreprocessorArgs + ldr r0, [r0, #4] + add r0, r0, #0x9c + add r0, r0, #0xc00 + bx ip + .align 2, 0 +_0234B064: .word 0x023537CC +_0234B068: .word InitPreprocessorArgs + arm_func_end ov29_0234B04C + + arm_func_start ov29_0234B06C +ov29_0234B06C: ; 0x0234B06C + ldr r2, _0234B080 ; =0x023537CC + ldr r2, [r2, #4] + add r0, r2, r0, lsl #2 + str r1, [r0, #0xc9c] + bx lr + .align 2, 0 +_0234B080: .word 0x023537CC + arm_func_end ov29_0234B06C + + arm_func_start ov29_0234B084 +ov29_0234B084: ; 0x0234B084 + ldr r2, _0234B098 ; =0x023537CC + ldr r2, [r2, #4] + add r0, r2, r0, lsl #2 + str r1, [r0, #0xcac] + bx lr + .align 2, 0 +_0234B098: .word 0x023537CC + arm_func_end ov29_0234B084 + + arm_func_start ov29_0234B09C +ov29_0234B09C: ; 0x0234B09C + ldr r2, _0234B0B0 ; =0x023537CC + ldr r2, [r2, #4] + add r0, r2, r0, lsl #2 + str r1, [r0, #0xcc0] + bx lr + .align 2, 0 +_0234B0B0: .word 0x023537CC + arm_func_end ov29_0234B09C + + arm_func_start ov29_0234B0B4 +ov29_0234B0B4: ; 0x0234B0B4 + ldr r2, _0234B0C8 ; =0x023537CC + ldr r2, [r2, #4] + add r0, r2, r0, lsl #2 + str r1, [r0, #0xcd4] + bx lr + .align 2, 0 +_0234B0C8: .word 0x023537CC + arm_func_end ov29_0234B0B4 + + arm_func_start ov29_0234B0CC +ov29_0234B0CC: ; 0x0234B0CC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + bl sub_02024FB8 + mov r1, r4 + mov r2, #0x4e + mov r4, r0 + bl GetName + ldr r0, _0234B100 ; =0x023537CC + ldr r0, [r0, #4] + add r0, r0, r5, lsl #2 + str r4, [r0, #0xcd4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234B100: .word 0x023537CC + arm_func_end ov29_0234B0CC + + arm_func_start ov29_0234B104 +ov29_0234B104: ; 0x0234B104 + ldr r1, _0234B114 ; =0x023537CC + ldr r1, [r1, #4] + str r0, [r1, #0xce8] + bx lr + .align 2, 0 +_0234B114: .word 0x023537CC + arm_func_end ov29_0234B104 + + arm_func_start ov29_0234B118 +ov29_0234B118: ; 0x0234B118 + ldr r1, _0234B12C ; =0x023537CC + orr r2, r0, #0x30000 + ldr r0, [r1, #4] + str r2, [r0, #0xce8] + bx lr + .align 2, 0 +_0234B12C: .word 0x023537CC + arm_func_end ov29_0234B118 + + arm_func_start ov29_0234B130 +ov29_0234B130: ; 0x0234B130 + stmdb sp!, {r3, lr} + mov r3, #0 + ldr r1, _0234B1A0 ; =0x023537CC + mov r0, r3 +_0234B140: + ldr r2, [r1, #4] + add r2, r2, r3 + add r3, r3, #1 + strb r0, [r2, #0xc80] + cmp r3, #0xa + blt _0234B140 + ldr r1, _0234B1A0 ; =0x023537CC + mvn ip, #1 + ldr r3, [r1, #4] + mov r2, #1 + strb ip, [r3, #0xcec] + ldr r3, [r1, #4] + strb r0, [r3, #0xcee] + ldr r3, [r1, #4] + strb r0, [r3, #0xced] + str r0, [r1, #8] + strb r2, [r1] + bl ov29_0234B1A4 + ldr r0, _0234B1A0 ; =0x023537CC + ldr r0, [r0, #4] + add r0, r0, #0x9c + add r0, r0, #0xc00 + bl InitPreprocessorArgs + ldmia sp!, {r3, pc} + .align 2, 0 +_0234B1A0: .word 0x023537CC + arm_func_end ov29_0234B130 + + arm_func_start ov29_0234B1A4 +ov29_0234B1A4: ; 0x0234B1A4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_022E9FC0 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov ip, #0 + ldr r2, _0234B24C ; =0x023537CC + mov r0, ip +_0234B1C4: + ldr r3, [r2, #4] + add r1, ip, ip, lsl #2 + add ip, ip, #1 + strb r0, [r3, r1, lsl #6] + cmp ip, #0xa + blt _0234B1C4 + ldr r2, _0234B24C ; =0x023537CC + mov r3, #4 + ldr r1, [r2, #4] + strb r0, [r1, #0xc8b] + ldr r1, [r2, #4] + add r1, r1, #0xc00 + strh r0, [r1, #0x8c] + ldr r1, [r2, #4] + add r1, r1, #0xc00 + strh r0, [r1, #0x8e] + ldr r1, [r2, #4] + add r1, r1, #0xc00 + strh r0, [r1, #0x90] + ldr r1, [r2, #4] + add r1, r1, #0xc00 + strh r3, [r1, #0x92] + ldr r1, [r2, #4] + str r0, [r1, #0xc98] + bl ov29_0234B768 + cmp r0, #0 + cmpne r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + mov r0, #0xb + bl AdvanceFrame + ldmia sp!, {r4, pc} + .align 2, 0 +_0234B24C: .word 0x023537CC + arm_func_end ov29_0234B1A4 + + arm_func_start ov29_0234B250 +ov29_0234B250: ; 0x0234B250 + stmdb sp!, {r3, lr} + ldr ip, _0234B290 ; =0x023537CC + cmp r1, #0 + ldr ip, [ip, #4] + ldrsh lr, [sp, #8] + add r3, ip, r3, lsl #2 + cmpne r0, #0 + str lr, [r3, #0xcac] + beq _0234B27C + bl LogMessageByIdWithPopupCheckUserTarget + ldmia sp!, {r3, pc} +_0234B27C: + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r1, r2 + bl LogMessageByIdWithPopupCheckUser + ldmia sp!, {r3, pc} + .align 2, 0 +_0234B290: .word 0x023537CC + arm_func_end ov29_0234B250 + + arm_func_start ov29_0234B294 +ov29_0234B294: ; 0x0234B294 + ldr ip, _0234B2A0 ; =ov29_0234BA18 + mov r0, #0x50 + bx ip + .align 2, 0 +_0234B2A0: .word ov29_0234BA18 + arm_func_end ov29_0234B294 + + arm_func_start LogMessageByIdWithPopupCheckUser +LogMessageByIdWithPopupCheckUser: ; 0x0234B2A4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, #0 + mov r6, r0 + mov r5, r1 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + bl StringFromMessageId + mov r1, r0 + mov r0, r6 + mov r2, #1 + bl LogMessage + ldmia sp!, {r4, r5, r6, pc} + arm_func_end LogMessageByIdWithPopupCheckUser + + arm_func_start LogMessageWithPopupCheckUser +LogMessageWithPopupCheckUser: ; 0x0234B2E4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, #0 + mov r6, r0 + mov r5, r1 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r5 + mov r2, #1 + bl LogMessage + ldmia sp!, {r4, r5, r6, pc} + arm_func_end LogMessageWithPopupCheckUser + + arm_func_start LogMessageByIdQuiet +LogMessageByIdQuiet: ; 0x0234B31C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + mov r2, #0 + bl LogMessage + ldmia sp!, {r4, pc} + arm_func_end LogMessageByIdQuiet + + arm_func_start LogMessageQuiet +LogMessageQuiet: ; 0x0234B340 + ldr ip, _0234B34C ; =LogMessage + mov r2, #0 + bx ip + .align 2, 0 +_0234B34C: .word LogMessage + arm_func_end LogMessageQuiet + + arm_func_start LogMessageByIdWithPopupCheckUserTarget +LogMessageByIdWithPopupCheckUserTarget: ; 0x0234B350 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r4, #0 + mov r7, r0 + mov r5, r2 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + mov r0, r6 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl StringFromMessageId + mov r1, r0 + mov r0, r7 + mov r2, #1 + bl LogMessage + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LogMessageByIdWithPopupCheckUserTarget + + arm_func_start LogMessageWithPopupCheckUserTarget +LogMessageWithPopupCheckUserTarget: ; 0x0234B3A4 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r4, #0 + mov r7, r0 + mov r5, r2 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + mov r0, r6 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r7 + mov r1, r5 + mov r2, #1 + bl LogMessage + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LogMessageWithPopupCheckUserTarget + + arm_func_start LogMessageByIdQuietCheckUserTarget +LogMessageByIdQuietCheckUserTarget: ; 0x0234B3F0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r4, #0 + mov r7, r0 + mov r5, r2 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + mov r0, r6 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl StringFromMessageId + mov r1, r0 + mov r0, r7 + mov r2, #0 + bl LogMessage + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LogMessageByIdQuietCheckUserTarget + + arm_func_start LogMessageByIdWithPopupCheckUserUnknown +LogMessageByIdWithPopupCheckUserUnknown: ; 0x0234B444 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + mov r4, #0 + mov r7, r0 + mov r5, r2 + bl ov29_022E272C + cmp r0, #0 + movne r4, #1 + mov r0, r6 + bl ov29_022E2CA0 + cmp r0, #0 + movne r4, #1 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl StringFromMessageId + mov r1, r0 + mov r0, r7 + mov r2, #1 + bl LogMessage + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end LogMessageByIdWithPopupCheckUserUnknown + + arm_func_start LogMessageByIdWithPopup +LogMessageByIdWithPopup: ; 0x0234B498 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl StringFromMessageId + mov r1, r0 + mov r0, r4 + mov r2, #1 + bl LogMessage + ldmia sp!, {r4, pc} + arm_func_end LogMessageByIdWithPopup + + arm_func_start LogMessageWithPopup +LogMessageWithPopup: ; 0x0234B4BC + ldr ip, _0234B4C8 ; =LogMessage + mov r2, #1 + bx ip + .align 2, 0 +_0234B4C8: .word LogMessage + arm_func_end LogMessageWithPopup + + arm_func_start ov29_0234B4CC +ov29_0234B4CC: ; 0x0234B4CC + ldr r1, _0234B4DC ; =0x023537CC + ldr r1, [r1, #4] + strb r0, [r1, #0xc8a] + bx lr + .align 2, 0 +_0234B4DC: .word 0x023537CC + arm_func_end ov29_0234B4CC + + arm_func_start ov29_0234B4E0 +ov29_0234B4E0: ; 0x0234B4E0 + ldr r0, _0234B4F0 ; =0x023537CC + ldr r0, [r0, #4] + ldrb r0, [r0, #0xc8b] + bx lr + .align 2, 0 +_0234B4F0: .word 0x023537CC + arm_func_end ov29_0234B4E0 + + arm_func_start ov29_0234B4F4 +ov29_0234B4F4: ; 0x0234B4F4 + ldr r0, _0234B504 ; =0x023537CC + ldr r0, [r0, #4] + ldr r0, [r0, #0xc98] + bx lr + .align 2, 0 +_0234B504: .word 0x023537CC + arm_func_end ov29_0234B4F4 + + arm_func_start LogMessage +LogMessage: ; 0x0234B508 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x284 + ldr r4, _0234B708 ; =0x023537CC + mov fp, r2 + ldr r3, [r4, #4] + ldrb r2, [r3, #0xced] + cmp r2, #0 + ldreqb r2, [r3, #0xcee] + cmpeq r2, #0 + bne _0234B700 + ldr r3, _0234B70C ; =0x02353538 + mov r7, #0 + ldr r2, [r3] + mvn r5, #0 + add r2, r2, #0x100 + strh r5, [r2, #0xd8] + ldr r2, [r3] + mov r3, #0x400 + add r2, r2, #0x100 + strh r5, [r2, #0xda] + ldr r2, [r4, #8] + mov r8, r7 + cmp r2, r0 + movne sl, #1 + ldreqb sl, [r4] + ldr r2, _0234B708 ; =0x023537CC + mov r6, #1 + str r0, [r2, #8] + strb r7, [r2] + ldr r2, [r2, #4] + add r0, sp, #0x144 + add r2, r2, #0x9c + add r4, r2, #0xc00 + mov r2, r1 + mov r1, #0x140 + str r4, [sp] + bl PreprocessString + ldr r4, _0234B708 ; =0x023537CC + add r5, sp, #0x144 +_0234B5A4: + ldr r0, [r4, #4] + add r1, r0, #0xc00 + ldrsh sb, [r1, #0x8c] + add r1, r0, #0xc00 + ldrsh r2, [r1, #0x8e] + add r3, sb, #1 + cmp r3, #0xa + moveq r3, #0 + cmp r3, r2 + bne _0234B5D8 + mov r0, #0 + bl AdvanceFrame + b _0234B5A4 +_0234B5D8: + ldrb r2, [r5, r8] + cmp r2, #0 + beq _0234B6D4 + add r0, r0, sb + strb sl, [r0, #0xc80] + ldr r1, [r4, #4] + add r0, sp, #4 + add r1, r1, #0x9c + add r1, r1, #0xc00 + str r1, [sp] + mov r1, #0x140 + add r2, r5, r8 + mov r3, #0x440 + bl PreprocessString + add r8, r8, r0 + ldrb sb, [r5, r8] + mov r2, #0 + add r1, sp, #4 + strb r2, [r1, r0] + cmp sb, #0 + beq _0234B660 + ldr r1, _0234B710 ; =0x02353214 + add r0, r5, r8 + mov r2, #3 + bl Strncmp + cmp r0, #0 + bne _0234B654 + ldr r0, _0234B710 ; =0x02353214 + bl Strlen + add r8, r8, r0 + b _0234B660 +_0234B654: + cmp sb, #0xd + cmpne sb, #0xa + addeq r8, r8, #1 +_0234B660: + add r0, sp, #4 + mov r1, sl + mov r2, r6 + bl ov29_0234BB44 + mov sl, #0 + cmp fp, #0 + mov r6, sl + beq _0234B5A4 + ldr sb, [r4, #4] + mov r2, #0x140 + add r0, sb, #0xc00 + ldrsh r3, [r0, #0x8c] + mov r0, r2 + add r1, sp, #4 + smlabb r0, r3, r0, sb + mov r7, #1 + bl Strncpy + ldr r0, [r4, #4] + add r0, r0, #0xc00 + ldrsh r1, [r0, #0x8c] + add r1, r1, #1 + strh r1, [r0, #0x8c] + ldr r0, [r4, #4] + add r1, r0, #0xc00 + ldrsh r0, [r1, #0x8c] + cmp r0, #0xa + moveq r0, sl + streqh r0, [r1, #0x8c] + b _0234B5A4 +_0234B6D4: + cmp r7, #0 + beq _0234B700 + ldr r0, _0234B708 ; =0x023537CC + mov r2, #0xf0 + strh r2, [r1, #0x90] + ldr r1, [r0, #4] + ldr r0, [r1, #0xc98] + cmp r0, #0 + moveq r0, #1 + streq r0, [r1, #0xc98] + bl ov29_022F2FE4 +_0234B700: + add sp, sp, #0x284 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234B708: .word 0x023537CC +_0234B70C: .word 0x02353538 +_0234B710: .word 0x02353214 + arm_func_end LogMessage + + arm_func_start LogMessageById +LogMessageById: ; 0x0234B714 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + mov r0, r1 + bl StringFromMessageId + mov r1, r0 + mov r0, r5 + mov r2, r4 + bl LogMessage + ldmia sp!, {r3, r4, r5, pc} + arm_func_end LogMessageById + + arm_func_start ov29_0234B73C +ov29_0234B73C: ; 0x0234B73C + ldr r0, _0234B764 ; =0x023537CC + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0234B764: .word 0x023537CC + arm_func_end ov29_0234B73C + + arm_func_start ov29_0234B768 +ov29_0234B768: ; 0x0234B768 + stmdb sp!, {r3, lr} + ldr r0, _0234B7E8 ; =0x023537CC + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + cmp r0, r1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_0202836C + ldr r0, _0234B7E8 ; =0x023537CC + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + bl sub_02030214 + ldr r0, _0234B7E8 ; =0x023537CC + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + bl sub_02030044 + ldr r0, _0234B7E8 ; =0x023537CC + mvn r3, #1 + ldr r1, [r0, #4] + mov r2, #0 + strb r3, [r1, #0xcec] + ldr r1, [r0, #4] + mov r0, #1 + str r2, [r1, #0xc98] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234B7E8: .word 0x023537CC + arm_func_end ov29_0234B768 + + arm_func_start ov29_0234B7EC +ov29_0234B7EC: ; 0x0234B7EC + stmdb sp!, {r3, lr} + ldr r0, _0234B850 ; =0x023537CC + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + cmp r0, r1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r1, _0234B850 ; =0x023537CC + ldr r1, [r1, #4] + add r1, r1, #0xc00 + ldrsh r2, [r1, #0x8c] + ldrsh r1, [r1, #0x8e] + cmp r2, r1 + bne _0234B848 + bl sub_020301F4 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_0234B848: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234B850: .word 0x023537CC + arm_func_end ov29_0234B7EC + + arm_func_start ov29_0234B854 +ov29_0234B854: ; 0x0234B854 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _0234BA14 ; =0x023537CC + ldr r1, [r0, #4] + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r1, #0xced] + cmp r0, #0 + movne r0, #0 + strne r0, [r1, #0xc98] + ldr r0, _0234BA14 ; =0x023537CC + ldr r4, [r0, #4] + ldr r0, [r4, #0xc98] + cmp r0, #0 + beq _0234B9C8 + cmp r0, #1 + beq _0234B8A0 + cmp r0, #2 + beq _0234B908 + b _0234B9C8 +_0234B8A0: + bl ov10_022BFD20 + cmp r0, #0 + bne _0234B9C8 + bl sub_02001808 + cmp r0, #0x3000 + blt _0234B9C8 + ldr r0, _0234BA14 ; =0x023537CC + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0xec] + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _0234B900 + mov r0, #0 + bl sub_0202FFB0 + ldr r1, _0234BA14 ; =0x023537CC + mov r2, #0 + ldr r3, [r1, #4] + strb r0, [r3, #0xcec] + ldr r0, [r1, #4] + str r2, [r0, #0xce8] +_0234B900: + mov r0, #2 + str r0, [r4, #0xc98] +_0234B908: + ldr r0, _0234BA14 ; =0x023537CC + mvn r2, #1 + ldr r1, [r0, #4] + add r0, r1, #0xc00 + ldrsb r0, [r0, #0xec] + cmp r0, r2 + movne r2, #1 + moveq r2, #0 + tst r2, #0xff + moveq r0, #1 + beq _0234B9BC + ldr r3, _0234BA14 ; =0x023537CC + mov r2, #0x140 + ldr r5, [r3, #4] + add r3, r5, #0xc00 + ldrsh ip, [r3, #0x8e] + ldrsh r3, [r3, #0x8c] + smulbb lr, ip, r2 + cmp r3, ip + bne _0234B96C + bl ov29_0234B7EC + cmp r0, #0 + bne _0234B9B8 + mov r0, #1 + b _0234B9BC +_0234B96C: + add r2, r5, ip + ldrb ip, [r2, #0xc80] + add r1, r1, #0x9c + add r3, r1, #0xc00 + add r2, r5, lr + mov r1, #0x400 + str ip, [sp] + bl sub_0203010C + cmp r0, #0 + moveq r0, #0 + beq _0234B9BC + add r0, r5, #0xc00 + ldrsh r1, [r0, #0x8e] + add r1, r1, #1 + strh r1, [r0, #0x8e] + ldrsh r1, [r0, #0x8e] + cmp r1, #0xa + moveq r1, #0 + streqh r1, [r0, #0x8e] +_0234B9B8: + mov r0, #0 +_0234B9BC: + cmp r0, #0 + movne r0, #0 + strne r0, [r4, #0xc98] +_0234B9C8: + ldrb r0, [r4, #0xc8a] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + add r0, r4, #0xc00 + ldrsh r1, [r0, #0x90] + cmp r1, #0 + ldmeqia sp!, {r3, r4, r5, pc} + sub r1, r1, #1 + strh r1, [r0, #0x90] + ldrsh r0, [r0, #0x90] + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #0 + str r0, [r4, #0xc98] + bl ov29_0234B768 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234BA14: .word 0x023537CC + arm_func_end ov29_0234B854 + + arm_func_start ov29_0234BA18 +ov29_0234BA18: ; 0x0234BA18 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0234BA50 ; =0x023537CC + mov r5, r0 + ldr r4, [r1, #4] +_0234BA28: + ldr r0, [r4, #0xc98] + cmp r0, #0 + bne _0234BA40 + bl ov29_0234B7EC + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +_0234BA40: + mov r0, r5 + bl AdvanceFrame + b _0234BA28 +_0234BA4C: + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234BA50: .word 0x023537CC + arm_func_end ov29_0234BA18 + + arm_func_start ov29_0234BA54 +ov29_0234BA54: ; 0x0234BA54 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _0234BAB8 ; =0x023537CC + mov r5, r0 + ldr r6, [r1, #4] + bl ov29_0234BA18 + mov r4, #0 + add r6, r6, #0xc00 + ldr r7, _0234BABC ; =0x0237C694 + b _0234BAAC +_0234BA78: + ldrsh r0, [r6, #0x90] + cmp r0, #0xb4 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r7] + and r0, r0, #3 + cmp r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r7, #2] + tst r0, #0xf0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + bl AdvanceFrame + add r4, r4, #1 +_0234BAAC: + cmp r4, #0xf0 + blt _0234BA78 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234BAB8: .word 0x023537CC +_0234BABC: .word 0x0237C694 + arm_func_end ov29_0234BA54 + + arm_func_start ov29_0234BAC0 +ov29_0234BAC0: ; 0x0234BAC0 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl InitPortraitBox + strh r5, [r6] + strb r4, [r6, #2] + mov r2, #0 + strb r2, [r6, #3] + mov r0, #2 + str r0, [r6, #4] + mov r0, #9 + str r0, [r6, #8] + strb r2, [r6, #0xc] + strb r2, [r6, #0xd] + mov r0, r6 + mov r1, #1 + strb r2, [r6, #0xe] + bl sub_0204D894 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0234BAC0 + + arm_func_start ov29_0234BB10 +ov29_0234BB10: ; 0x0234BB10 + ldr ip, _0234BB1C ; =sub_02047FFC + mov r0, #0 + bx ip + .align 2, 0 +_0234BB1C: .word sub_02047FFC + arm_func_end ov29_0234BB10 + + arm_func_start ov29_0234BB20 +ov29_0234BB20: ; 0x0234BB20 + ldr ip, _0234BB28 ; =sub_0204804C + bx ip + .align 2, 0 +_0234BB28: .word sub_0204804C + arm_func_end ov29_0234BB20 + + arm_func_start ov29_0234BB2C +ov29_0234BB2C: ; 0x0234BB2C + ldr ip, _0234BB34 ; =sub_020480CC + bx ip + .align 2, 0 +_0234BB34: .word sub_020480CC + arm_func_end ov29_0234BB2C + + arm_func_start ov29_0234BB38 +ov29_0234BB38: ; 0x0234BB38 + ldr ip, _0234BB40 ; =sub_02048134 + bx ip + .align 2, 0 +_0234BB40: .word sub_02048134 + arm_func_end ov29_0234BB38 + + arm_func_start ov29_0234BB44 +ov29_0234BB44: ; 0x0234BB44 + ldr ip, _0234BB4C ; =sub_02048150 + bx ip + .align 2, 0 +_0234BB4C: .word sub_02048150 + arm_func_end ov29_0234BB44 + + arm_func_start ov29_0234BB50 +ov29_0234BB50: ; 0x0234BB50 + ldr ip, _0234BB58 ; =sub_02048240 + bx ip + .align 2, 0 +_0234BB58: .word sub_02048240 + arm_func_end ov29_0234BB50 + + arm_func_start OpenMessageLog +OpenMessageLog: ; 0x0234BB5C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + mov r0, #6 + mov r1, #0 + bl ov29_022EA428 + cmp r4, #0 + bne _0234BB84 + mov r0, #0 + bl ov29_0233A248 +_0234BB84: + mov r0, #0x62 + bl AdvanceFrame + mov r0, #0x62 + bl AdvanceFrame + bl sub_0204833C + mov r4, #0x62 +_0234BB9C: + mov r0, r4 + bl AdvanceFrame + bl sub_02048360 + movs r5, r0 + beq _0234BB9C + mov r0, #0x62 + bl AdvanceFrame + cmp r6, #0 + beq _0234BBCC + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234BBCC: + cmp r5, #1 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end OpenMessageLog + + arm_func_start ov29_0234BBDC +ov29_0234BBDC: ; 0x0234BBDC + ldr ip, _0234BBE4 ; =ov29_022E0B60 + bx ip + .align 2, 0 +_0234BBE4: .word ov29_022E0B60 + arm_func_end ov29_0234BBDC + + arm_func_start ov29_0234BBE8 +ov29_0234BBE8: ; 0x0234BBE8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _0234BED4 ; =0x023537D8 + mov sl, #0 + ldr r6, [r0, #4] + bl ov29_022DC61C + ldrb r0, [r6, #0x14] + cmp r0, #0 + beq _0234BC8C + bl ov29_022DEBA4 + bl ov29_0234CB00 + bl ov29_0234CA68 + mov r5, r0 + bl ov29_0234CA7C + mov r4, r0 + bl sub_0204AFF8 + mov r2, r0 + mov r1, r4 + mov r0, r5 + bl ov30_02382820 + b _0234BC3C +_0234BC38: + bl ov29_022DDEF8 +_0234BC3C: + bl ov30_02382874 + cmp r0, #0 + bne _0234BC38 + bl ov30_0238298C + mov r4, r0 + bl ov30_023829A0 + cmp r4, #0 + beq _0234BC68 + ldr r0, _0234BED8 ; =0x000F1208 + bl sub_02048DC4 + b _0234BC70 +_0234BC68: + ldr r0, _0234BEDC ; =0x000F1209 + bl sub_02048DC4 +_0234BC70: + bl ov29_022DEBB0 + cmp r4, #0 + bne _0234BC8C + mov r0, #5 + str r0, [r6, #0xc0] + mov sl, #1 + bl ov29_022DDEF8 +_0234BC8C: + mov sb, #1 + mov r8, #0 + mov r7, r8 + mov r6, sb + mov r5, sb + mov fp, r8 + ldr r4, _0234BED4 ; =0x023537D8 + b _0234BD70 +_0234BCAC: + bl ov29_022DDEF8 + ldrb r0, [r4] + cmp r0, #0 + bne _0234BD70 + ldr r0, [r4, #4] + ldr r0, [r0, #8] + cmp r0, #1 + beq _0234BCD8 + cmp r0, #2 + moveq sl, #1 + b _0234BD70 +_0234BCD8: + mov r0, #0 + mov r1, r0 + bl sub_02051DD0 + mov r0, sb + mov r1, r8 + bl sub_02051DD0 + mov r0, r7 + mov r1, r6 + bl sub_02051DD0 + mov r0, #1 + mov r1, r0 + bl sub_02051DD0 + mov r0, #0 + mov r1, r0 + bl sub_02051E60 + mov r0, r5 + mov r1, fp + bl sub_02051E60 + mov r0, #0 + mov r1, #1 + bl sub_02051E60 + mov r0, #1 + mov r1, r0 + bl sub_02051E60 + mov r0, #0 + bl ov29_0234BEE0 + mov r0, #1 + bl ov29_0234BEE0 + mov r0, #0 + bl ov29_0234BF04 + mov r0, #1 + bl ov29_0234BF04 + bl GetDungeonPtrMaster + mov r1, r0 + ldr r0, [r4, #4] + add r0, r0, #0x10 + bl RunDungeon + mov sl, #1 +_0234BD70: + cmp sl, #0 + beq _0234BCAC + ldr r0, _0234BED4 ; =0x023537D8 + ldr r0, [r0, #4] + adds r4, r0, #0x10 + beq _0234BEB8 + ldr r1, [r4, #0xb0] + mvn r0, #1 + cmp r1, r0 + bne _0234BDA0 + add r0, r4, #0xb8 + bl sub_0205BAB0 +_0234BDA0: + ldr r1, [r4, #0xb0] + cmp r1, #3 + mvnne r0, #1 + cmpne r1, r0 + bne _0234BEB8 + ldr r0, _0234BED4 ; =0x023537D8 + ldr r4, [r0, #4] + bl ov29_022DE418 + mov r0, #0 + mov r1, r0 + bl sub_020091B0 + mov r0, #1 + mov r1, #0 + bl sub_020091B0 + mov r0, #2 + mov r1, #0 + bl sub_02009194 + mov r0, #3 + mov r1, #0 + bl sub_02009194 + mov r0, #4 + mov r1, #0 + bl sub_020091B0 + mov r0, #1 + mov r1, #0x4000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 + add r0, r4, #0xc4 + bl SetAdventureLogDungeonFloor + bl sub_02017B70 + ldr r1, [r4, #0xc0] + mvn r0, #1 + cmp r1, r0 + beq _0234BE40 + bl sub_0204AFF8 + cmp r0, #0 + movne r5, #1 + bne _0234BE44 +_0234BE40: + mov r5, #0 +_0234BE44: + bl ov29_0234CA68 + mov r4, r0 + bl ov29_0234CA7C + mov r1, r0 + mov r0, r4 + mov r2, r5 + bl ov30_023829CC + mov r0, #0x10 + bl ov29_022DDE00 + ldr r4, _0234BED4 ; =0x023537D8 + mov r1, #1 + ldr r0, [r4, #4] + strb r1, [r0, #0x1bc] + b _0234BE80 +_0234BE7C: + bl ov29_022DDEF8 +_0234BE80: + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1bc] + cmp r0, #0 + bne _0234BE7C + bl ov30_02382C30 + bl ov29_0234CACC + mov r0, #2 + bl ov29_022DDE00 + mov r0, #2 + mov r1, #0x4000 + mov r2, #0 + bl ov29_0234C668 + mov r0, #0 + bl ov29_0234C738 +_0234BEB8: + bl ov29_022DC65C + ldr r0, _0234BED4 ; =0x023537D8 + mov r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #0x1bd] +_0234BECC: + bl ov29_022DDEF8 + b _0234BECC + .align 2, 0 +_0234BED4: .word 0x023537D8 +_0234BED8: .word 0x000F1208 +_0234BEDC: .word 0x000F1209 + arm_func_end ov29_0234BBE8 + + arm_func_start ov29_0234BEE0 +ov29_0234BEE0: ; 0x0234BEE0 + ldr r2, _0234BEFC ; =0x0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _0234BF00 ; =sub_0200B3D4 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_0234BEFC: .word 0x0235352C +_0234BF00: .word sub_0200B3D4 + arm_func_end ov29_0234BEE0 + + arm_func_start ov29_0234BF04 +ov29_0234BF04: ; 0x0234BF04 + ldr r2, _0234BF20 ; =0x0235352C + mov r1, #0xc + ldr r2, [r2] + ldr ip, _0234BF24 ; =sub_0200B330 + mla r1, r0, r1, r2 + ldr r0, [r1, #0x24] + bx ip + .align 2, 0 +_0234BF20: .word 0x0235352C +_0234BF24: .word sub_0200B330 + arm_func_end ov29_0234BF04 + + arm_func_start RunDungeonMode +RunDungeonMode: ; 0x0234BF28 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r4, r1 + bl sub_02017BEC + bl sub_02028E2C + mov r0, #0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl sub_020091F8 + mov r0, #0 + mov r1, r0 + mov r2, r0 + mov r3, #1 + bl sub_020091F8 + bl ov29_022E0E8C + bl sub_02027148 + mov r0, #0xf000 + mov r1, #0 + bl sub_0201D7E0 + mov r0, #0x1c0 + mov r1, #0 + bl MemAlloc + ldr r2, _0234C1C8 ; =0x023537D8 + mov r1, #0x1c0 + str r0, [r2, #4] + bl MemZero + ldr r0, _0234C1C8 ; =0x023537D8 + mov r2, #0 + ldr r1, [r0, #4] + strb r2, [r1, #0x1bc] + ldr r1, [r0, #4] + str r4, [r1, #8] + ldr r0, [r0, #4] + str r4, [r0, #0xc] + bl DungeonAlloc + ldr r1, _0234C1C8 ; =0x023537D8 + ldr r1, [r1, #4] + str r0, [r1, #4] + bl DungeonZInit + bl ov29_022DDFF0 + bl ov29_022DDFFC + bl ov29_022DE300 + ldr r0, _0234C1C8 ; =0x023537D8 + mov ip, r5 + ldr r0, [r0, #4] + mov r4, #0x1a + add r6, r0, #0x10 +_0234BFE8: + ldmia ip!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0234BFE8 + ldmia ip, {r0, r1, r2} + stmia r6, {r0, r1, r2} + bl ov29_0234C9FC + ldr r0, _0234C1CC ; =0x0234BBDC + bl sub_02006EC4 + bl sub_02017A68 + bl ov29_022E0CFC + bl ov29_0234C4F8 + cmp r5, #0 + beq _0234C04C + ldrsb r0, [r5, #0xe] + cmp r0, #1 + mov r0, #0 + bne _0234C040 + bl ov29_0234C5EC + mov r0, #1 + bl ov29_0234C584 + b _0234C04C +_0234C040: + bl ov29_0234C584 + mov r0, #1 + bl ov29_0234C584 +_0234C04C: + bl ov29_022DDC00 + ldr r1, _0234C1C8 ; =0x023537D8 + mov r2, #1 + ldr r0, _0234C1D0 ; =ov29_0234C1D8 + strb r2, [r1] + bl sub_0200383C + mov r1, #0 + ldr r0, _0234C1D4 ; =ov29_0234BBE8 + mov r2, r1 + bl ov29_022DDD50 + ldr r4, _0234C1C8 ; =0x023537D8 + mov r6, #0 +_0234C07C: + bl sub_020038E8 + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1bd] + cmp r0, #0 + bne _0234C0C0 + bl sub_020039E4 + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1bc] + cmp r0, #0 + beq _0234C07C +_0234C0A4: + bl ov30_02382A34 + cmp r0, #2 + cmpne r0, #3 + bne _0234C0A4 + ldr r0, [r4, #4] + strb r6, [r0, #0x1bc] + b _0234C07C +_0234C0C0: + ldr r0, _0234C1D4 ; =ov29_0234BBE8 + bl ov29_022DDDA4 + mov r0, #0 + bl sub_0200383C + bl sub_02034710 + bl ov29_0234CA2C + cmp r5, #0 + beq _0234C108 + ldr r0, _0234C1C8 ; =0x023537D8 + mov r4, #0x1a + ldr r0, [r0, #4] + add ip, r0, #0x10 +_0234C0F0: + ldmia ip!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs r4, r4, #1 + bne _0234C0F0 + ldmia ip, {r0, r1, r2} + stmia r5, {r0, r1, r2} +_0234C108: + bl ov29_022DE498 + bl ov29_022DE0A0 + bl ov29_0234C544 + mov r0, #0 + bl sub_02006EC4 + ldr r0, _0234C1C8 ; =0x023537D8 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0234C154 + bl DungeonFree + ldr r0, _0234C1C8 ; =0x023537D8 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #4] + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0234C1C8 ; =0x023537D8 + mov r1, #0 + str r1, [r0, #4] +_0234C154: + bl sub_0201D804 + bl sub_0202715C + bl ov29_022DDCA0 + bl sub_02017B70 + bl sub_02017BEC + mov r0, #0 + sub r1, r0, #0x100 + bl sub_02008F3C + mov r0, #1 + mvn r1, #0xff + bl sub_02008F3C + mov r0, #0 + bl sub_02009120 + mov r0, #1 + bl sub_02009120 + mov r0, #0 + bl sub_02009514 + mov r0, #1 + bl sub_02009514 + mov r0, #0 + bl sub_020091CC + mov r0, #1 + bl sub_020091CC + mov r0, #0 + bl sub_020093BC + mov r0, #1 + bl sub_020093BC + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0234C1C8: .word 0x023537D8 +_0234C1CC: .word 0x0234BBDC +_0234C1D0: .word ov29_0234C1D8 +_0234C1D4: .word ov29_0234BBE8 + arm_func_end RunDungeonMode + + arm_func_start ov29_0234C1D8 +ov29_0234C1D8: ; 0x0234C1D8 + stmdb sp!, {r4, lr} + bl sub_0201BF64 + bl sub_02028E40 + bl sub_020038D8 + cmp r0, #0 + beq _0234C1F4 + bl sub_02003990 +_0234C1F4: + bl ov29_022E0A64 + bl ov29_022DDE24 + bl ov29_022E9F9C + bl ov29_0234C9E4 + bl sub_02034A80 + bl ov29_022EA008 + ldr r0, _0234C2EC ; =0x02353538 + ldr r0, [r0] + cmp r0, #0 + beq _0234C230 + add r0, r0, #0x224 + add r0, r0, #0x1a000 + bl ov10_022BF764 + bl ov29_022E6DD0 + b _0234C238 +_0234C230: + mov r0, #0 + bl ov10_022BF764 +_0234C238: + bl sub_02028848 + bl ov29_022DE868 + ldr r0, _0234C2F0 ; =0x023537D8 + ldr r0, [r0, #4] + ldr r0, [r0] + cmp r0, #0 + beq _0234C258 + blx r0 +_0234C258: + bl ov29_022DC670 + bl sub_0201F464 + ldr r0, _0234C2F0 ; =0x023537D8 + ldrb r0, [r0] + cmp r0, #0 + bne _0234C274 + bl sub_0201DDFC +_0234C274: + bl sub_02008F84 + bl ov29_022EAFB0 + bl sub_02017A80 + mov r0, #1 + bl sub_02028A64 + bl sub_0201BE28 + bl sub_0201BE5C + bl sub_0201BE84 + bl sub_0204F9CC + bl sub_02003A40 + ldr r1, _0234C2F0 ; =0x023537D8 + mov r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0234C2B8 + mov r0, #0 + bl sub_02008ED0 +_0234C2B8: + bl sub_020778D0 + bl sub_02008F88 + bl sub_0201DE10 + bl ov10_022BF7D4 + bl ov29_0233992C + bl sub_02028E88 + bl ov29_022DE0CC + bl sub_0201BF4C + ldr r1, _0234C2F0 ; =0x023537D8 + mov r2, #0 + mov r0, r4 + strb r2, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0234C2EC: .word 0x02353538 +_0234C2F0: .word 0x023537D8 + arm_func_end ov29_0234C1D8 + + arm_func_start ov29_0234C2F4 +ov29_0234C2F4: ; 0x0234C2F4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r1 + mov r5, r0 + mov r1, #0x9c + bl MemZero + add r0, r5, #0x48 + strb r4, [r5, #0x88] + bl sub_0201E730 + mov r0, #0x100 + strh r0, [r5, #0x4c] + mov r0, #0xc0 + strh r0, [r5, #0x4e] + mov r0, #1 + strh r0, [r5, #0x72] + strb r0, [r5, #0x86] + mov r0, #2 + strb r0, [r5, #0x84] + mov r0, #0 + strb r0, [r5, #0x77] + strb r0, [r5, #0x74] + strb r0, [r5, #0x75] + strb r0, [r5, #0x76] + strb r0, [r5, #0x99] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234C2F4 + + arm_func_start ov29_0234C354 +ov29_0234C354: ; 0x0234C354 + stmdb sp!, {r3, lr} + mov r3, #0 + str r3, [r0, #0x90] + str r3, [r0, #0x8c] + str r3, [r0, #0x94] + strb r3, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C384 + ldr r0, [r0, #0x90] + bl ov29_022E0F14 + ldmia sp!, {r3, pc} +_0234C384: + ldrb r2, [r0, #0x99] + cmp r2, #0 + strneb r3, [r0, #0x77] + ldmneia sp!, {r3, pc} + ldr r0, [r0, #0x90] + bl ov29_022E0F14 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234C354 + + arm_func_start ov29_0234C3A0 +ov29_0234C3A0: ; 0x0234C3A0 + stmdb sp!, {r4, lr} + mov r4, r0 + ldrb r1, [r4, #0x88] + cmp r1, #1 + bne _0234C3C8 + ldr r0, [r4, #0x90] + mov r0, r0, asr #0xc + bl ov29_022E0F14 + ldr r0, [r4, #0x90] + ldmia sp!, {r4, pc} +_0234C3C8: + ldrb r0, [r4, #0x99] + cmp r0, #0 + ldr r0, [r4, #0x90] + beq _0234C3F8 + cmp r0, #0 + rsblt r0, r0, #0 + mov r0, r0, asr #0xc + mov r0, r0, lsl #4 + cmp r0, #0x100 + moveq r0, #0xff + strb r0, [r4, #0x77] + ldmia sp!, {r4, pc} +_0234C3F8: + mov r0, r0, asr #0xc + bl ov29_022E0F14 + ldr r0, [r4, #0x90] + ldmia sp!, {r4, pc} + arm_func_end ov29_0234C3A0 + + arm_func_start ov29_0234C408 +ov29_0234C408: ; 0x0234C408 + stmdb sp!, {r3, lr} + str r2, [r0, #0x8c] + str r1, [r0, #0x94] + mov r1, #1 + strb r1, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C464 + cmp r2, #5 + cmpne r2, #3 + moveq r1, #0 + streq r1, [r0, #0x90] + beq _0234C45C + cmp r2, #4 + moveq r1, #0x10000 + streq r1, [r0, #0x90] + beq _0234C45C + cmp r2, #2 + moveq r1, #0x10000 + rsbeq r1, r1, #0 + streq r1, [r0, #0x90] +_0234C45C: + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C464: + cmp r2, #5 + bne _0234C488 + mov r1, #0 + str r1, [r0, #0x90] + mov r1, #0xff + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C488: + cmp r2, #3 + bne _0234C4A8 + mov r1, #0 + str r1, [r0, #0x90] + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C4A8: + cmp r2, #4 + bne _0234C4CC + mov r1, #0x10000 + str r1, [r0, #0x90] + mov r1, #0xff + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] + b _0234C4F0 +_0234C4CC: + cmp r2, #2 + bne _0234C4F0 + mov r1, #0x10000 + rsb r1, r1, #0 + str r1, [r0, #0x90] + mov r1, #0 + strb r1, [r0, #0x74] + strb r1, [r0, #0x75] + strb r1, [r0, #0x76] +_0234C4F0: + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234C408 + + arm_func_start ov29_0234C4F8 +ov29_0234C4F8: ; 0x0234C4F8 + stmdb sp!, {r3, lr} + mov r0, #0x144 + mov r1, #0 + bl MemAlloc + ldr r2, _0234C540 ; =0x023537E0 + mov r1, #0x144 + str r0, [r2] + bl MemZero + ldr r0, _0234C540 ; =0x023537E0 + mov r1, #0 + ldr r0, [r0] + bl ov29_0234C2F4 + ldr r0, _0234C540 ; =0x023537E0 + mov r1, #1 + ldr r0, [r0] + add r0, r0, #0x9c + bl ov29_0234C2F4 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C540: .word 0x023537E0 + arm_func_end ov29_0234C4F8 + + arm_func_start ov29_0234C544 +ov29_0234C544: ; 0x0234C544 + stmdb sp!, {r3, lr} + ldr r0, _0234C580 ; =0x023537E0 + ldr r0, [r0] + bl ov29_0234C354 + ldr r0, _0234C580 ; =0x023537E0 + ldr r0, [r0] + add r0, r0, #0x9c + bl ov29_0234C354 + ldr r0, _0234C580 ; =0x023537E0 + ldr r0, [r0] + bl MemFree + ldr r0, _0234C580 ; =0x023537E0 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C580: .word 0x023537E0 + arm_func_end ov29_0234C544 + + arm_func_start ov29_0234C584 +ov29_0234C584: ; 0x0234C584 + stmdb sp!, {r3, lr} + ldr r1, _0234C5E8 ; =0x023537E0 + mov r2, #0x10000 + ldr r3, [r1] + mov r1, #0x9c + mla r0, r1, r0, r3 + rsb r2, r2, #0 + str r2, [r0, #0x90] + mov r1, #1 + str r1, [r0, #0x8c] + mov r2, #0 + str r2, [r0, #0x94] + strb r1, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C5CC + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C5CC: + ldrb r1, [r0, #0x99] + cmp r1, #0 + strneb r2, [r0, #0x74] + strneb r2, [r0, #0x75] + strneb r2, [r0, #0x76] + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C5E8: .word 0x023537E0 + arm_func_end ov29_0234C584 + + arm_func_start ov29_0234C5EC +ov29_0234C5EC: ; 0x0234C5EC + stmdb sp!, {r3, lr} + ldr r2, _0234C650 ; =0x023537E0 + mov r1, #0x9c + ldr r3, [r2] + mov r2, #0x10000 + mla r0, r1, r0, r3 + str r2, [r0, #0x90] + mov r2, #1 + str r2, [r0, #0x8c] + mov r1, #0 + str r1, [r0, #0x94] + strb r2, [r0, #0x98] + ldrb r1, [r0, #0x88] + cmp r1, #1 + bne _0234C630 + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} +_0234C630: + ldrb r1, [r0, #0x99] + cmp r1, #0 + movne r1, #0xff + strneb r1, [r0, #0x74] + strneb r1, [r0, #0x75] + strneb r1, [r0, #0x76] + bl ov29_0234C3A0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C650: .word 0x023537E0 + arm_func_end ov29_0234C5EC + + arm_func_start ov29_0234C654 +ov29_0234C654: ; 0x0234C654 + ldr r1, _0234C664 ; =0x023537E0 + ldr r1, [r1] + strh r0, [r1, #0x72] + bx lr + .align 2, 0 +_0234C664: .word 0x023537E0 + arm_func_end ov29_0234C654 + + arm_func_start ov29_0234C668 +ov29_0234C668: ; 0x0234C668 + stmdb sp!, {r3, lr} + ldr r3, _0234C708 ; =0x023537E0 + mov ip, #0 + ldr lr, [r3] + add lr, lr, r2, lsl #2 + str r0, [lr, #0x138] + ldr r0, [r3] + add r0, r0, r2 + strb ip, [r0, #0x140] + ldr ip, [r3] + add r0, ip, r2, lsl #2 + ldr r0, [r0, #0x138] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0234C6E0 +_0234C6A4: ; jump table + b _0234C6E0 ; case 0 + b _0234C6C0 ; case 1 + b _0234C6C8 ; case 2 + b _0234C6C8 ; case 3 + b _0234C6D0 ; case 4 + b _0234C6D8 ; case 5 + b _0234C6D8 ; case 6 +_0234C6C0: + mov r3, #2 + b _0234C6E4 +_0234C6C8: + mov r3, #3 + b _0234C6E4 +_0234C6D0: + mov r3, #4 + b _0234C6E4 +_0234C6D8: + mov r3, #5 + b _0234C6E4 +_0234C6E0: + mov r3, #0 +_0234C6E4: + mov r0, #0x9c + mla r0, r2, r0, ip + cmp r3, #0 + bne _0234C6FC + bl ov29_0234C354 + ldmia sp!, {r3, pc} +_0234C6FC: + mov r2, r3 + bl ov29_0234C408 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234C708: .word 0x023537E0 + arm_func_end ov29_0234C668 + + arm_func_start ov29_0234C70C +ov29_0234C70C: ; 0x0234C70C + ldr r2, _0234C734 ; =0x023537E0 + mov r1, #0x9c + ldr r2, [r2] + mla r1, r0, r1, r2 + ldr r0, [r1, #0x8c] + cmp r0, #1 + cmpne r0, #0 + moveq r0, #0 + movne r0, #1 + bx lr + .align 2, 0 +_0234C734: .word 0x023537E0 + arm_func_end ov29_0234C70C + + arm_func_start ov29_0234C738 +ov29_0234C738: ; 0x0234C738 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r0 + mov r0, #0x9c + mul r4, r5, r0 + ldr r6, _0234C7D0 ; =0x023537E0 + mov r7, #5 +_0234C750: + ldr r1, [r6] + add r0, r1, r5, lsl #2 + ldr r0, [r0, #0x138] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0234C7C0 +_0234C768: ; jump table + b _0234C7C0 ; case 0 + b _0234C784 ; case 1 + b _0234C784 ; case 2 + b _0234C79C ; case 3 + b _0234C784 ; case 4 + b _0234C784 ; case 5 + b _0234C79C ; case 6 +_0234C784: + add r0, r4, r1 + ldr r0, [r0, #0x8c] + cmp r0, #1 + cmpne r0, #0 + bne _0234C7C0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0234C79C: + add r0, r5, r1 + ldrb r0, [r0, #0x140] + cmp r0, #1 + bne _0234C7C0 + add r0, r4, r1 + ldr r0, [r0, #0x8c] + cmp r0, #1 + cmpne r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0234C7C0: + mov r0, r7 + bl AdvanceFrame + b _0234C750 +_0234C7CC: + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234C7D0: .word 0x023537E0 + arm_func_end ov29_0234C738 + + arm_func_start ov29_0234C7D4 +ov29_0234C7D4: ; 0x0234C7D4 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0234C9E0 ; =0x023537E0 + mov r5, r0 + ldr r4, [r1] + add r0, r4, r5, lsl #2 + ldr r2, [r0, #0x138] + cmp r2, #6 + addls pc, pc, r2, lsl #2 + b _0234C8B8 +_0234C7F8: ; jump table + b _0234C8B8 ; case 0 + b _0234C814 ; case 1 + b _0234C8B8 ; case 2 + b _0234C830 ; case 3 + b _0234C814 ; case 4 + b _0234C8B8 ; case 5 + b _0234C830 ; case 6 +_0234C814: + mov r0, #0x9c + mla r0, r5, r0, r4 + ldr r1, [r0, #0x8c] + cmp r1, #1 + bne _0234C8B8 + bl ov29_0234C354 + ldmia sp!, {r3, r4, r5, pc} +_0234C830: + adds r0, r4, #0x140 + mov r0, #0x9c + bne _0234C888 + mla r0, r5, r0, r4 + ldr r1, [r0, #0x8c] + cmp r1, #1 + bne _0234C8B8 + cmp r2, #3 + ldr r1, [r0, #0x94] + bne _0234C864 + mov r2, #2 + bl ov29_0234C408 + b _0234C86C +_0234C864: + mov r2, #4 + bl ov29_0234C408 +_0234C86C: + ldr r0, _0234C9E0 ; =0x023537E0 + ldr r0, [r0] + add r1, r0, #0x140 + ldrb r0, [r1, r5] + add r0, r0, #1 + strb r0, [r1, r5] + b _0234C8B8 +_0234C888: + mul r3, r5, r0 + add r0, r4, r3 + ldr r0, [r0, #0x8c] + cmp r0, #1 + bne _0234C8B8 + add r0, r4, r5 + mov r2, #0 + strb r2, [r0, #0x140] + ldr r0, [r1] + add r0, r0, r3 + bl ov29_0234C354 + ldmia sp!, {r3, r4, r5, pc} +_0234C8B8: + ldr r1, _0234C9E0 ; =0x023537E0 + mov r0, #0x9c + ldr r1, [r1] + mla r4, r5, r0, r1 + ldrb r0, [r4, #0x98] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrb r0, [r4, #0x88] + cmp r0, #1 + bne _0234C8EC + mov r0, r4 + bl ov29_0234C3A0 + b _0234C918 +_0234C8EC: + ldrb r0, [r4, #0x99] + cmp r0, #0 + mov r0, r4 + beq _0234C914 + bl ov29_0234C3A0 + cmp r0, #0 + beq _0234C918 + add r0, r4, #0x48 + bl sub_0201F2A0 + b _0234C918 +_0234C914: + bl ov29_0234C3A0 +_0234C918: + ldr r0, [r4, #0x8c] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, r4, r5, pc} +_0234C928: ; jump table + ldmia sp!, {r3, r4, r5, pc} ; case 0 + ldmia sp!, {r3, r4, r5, pc} ; case 1 + b _0234C9BC ; case 2 + b _0234C968 ; case 3 + b _0234C994 ; case 4 + b _0234C940 ; case 5 +_0234C940: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + add r0, r1, r0 + str r0, [r4, #0x90] + cmp r0, #0x10000 + movge r0, #0x10000 + strge r0, [r4, #0x90] + movge r0, #1 + strge r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C968: + ldr r2, [r4, #0x90] + ldr r1, [r4, #0x94] + mov r0, #0x10000 + sub r1, r2, r1 + rsb r0, r0, #0 + str r1, [r4, #0x90] + cmp r1, r0 + strle r0, [r4, #0x90] + movle r0, #1 + strle r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C994: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + sub r0, r1, r0 + str r0, [r4, #0x90] + cmp r0, #0 + movle r0, #0 + strle r0, [r4, #0x90] + movle r0, #1 + strle r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} +_0234C9BC: + ldr r1, [r4, #0x90] + ldr r0, [r4, #0x94] + adds r0, r1, r0 + str r0, [r4, #0x90] + movpl r0, #0 + strpl r0, [r4, #0x90] + movpl r0, #1 + strpl r0, [r4, #0x8c] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234C9E0: .word 0x023537E0 + arm_func_end ov29_0234C7D4 + + arm_func_start ov29_0234C9E4 +ov29_0234C9E4: ; 0x0234C9E4 + stmdb sp!, {r3, lr} + mov r0, #0 + bl ov29_0234C7D4 + mov r0, #1 + bl ov29_0234C7D4 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234C9E4 + + arm_func_start ov29_0234C9FC +ov29_0234C9FC: ; 0x0234C9FC + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, #0 + bl MemAlloc + ldr r1, _0234CA28 ; =0x023537E4 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r0, [r1] + str r2, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CA28: .word 0x023537E4 + arm_func_end ov29_0234C9FC + + arm_func_start ov29_0234CA2C +ov29_0234CA2C: ; 0x0234CA2C + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CA48 + mov r0, #0x21 + bl UnloadOverlay +_0234CA48: + ldr r0, _0234CA64 ; =0x023537E4 + ldr r0, [r0] + bl MemFree + ldr r0, _0234CA64 ; =0x023537E4 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CA64: .word 0x023537E4 + arm_func_end ov29_0234CA2C + + arm_func_start ov29_0234CA68 +ov29_0234CA68: ; 0x0234CA68 + ldr r0, _0234CA78 ; =0x023537E4 + ldr r0, [r0] + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_0234CA78: .word 0x023537E4 + arm_func_end ov29_0234CA68 + + arm_func_start ov29_0234CA7C +ov29_0234CA7C: ; 0x0234CA7C + mov r0, #0x5800 + bx lr + arm_func_end ov29_0234CA7C + + arm_func_start ov29_0234CA84 +ov29_0234CA84: ; 0x0234CA84 + stmdb sp!, {r3, lr} + ldr r0, _0234CAC4 ; =0x023537E4 + mov r3, #1 + ldr r1, [r0] + ldr r2, _0234CAC8 ; =0x0237D000 + str r3, [r1] + ldr r1, [r0] + mov r0, #0x21 + str r2, [r1, #4] + bl LoadOverlay + ldr r0, _0234CAC4 ; =0x023537E4 + mov r1, #0x5800 + ldr r0, [r0] + ldr r0, [r0, #4] + bl ov30_02382C68 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAC4: .word 0x023537E4 +_0234CAC8: .word 0x0237D000 + arm_func_end ov29_0234CA84 + + arm_func_start ov29_0234CACC +ov29_0234CACC: ; 0x0234CACC + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CAE8 + mov r0, #0x21 + bl UnloadOverlay +_0234CAE8: + ldr r0, _0234CAFC ; =0x023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CAFC: .word 0x023537E4 + arm_func_end ov29_0234CACC + + arm_func_start ov29_0234CB00 +ov29_0234CB00: ; 0x0234CB00 + ldr r0, _0234CB28 ; =0x023537E4 + mov r3, #2 + ldr r1, [r0] + ldr r2, _0234CB2C ; =0x0237D000 + str r3, [r1] + ldr r1, [r0] + ldr ip, _0234CB30 ; =LoadOverlay + mov r0, #0x21 + str r2, [r1, #4] + bx ip + .align 2, 0 +_0234CB28: .word 0x023537E4 +_0234CB2C: .word 0x0237D000 +_0234CB30: .word LoadOverlay + arm_func_end ov29_0234CB00 + + arm_func_start ov29_0234CB34 +ov29_0234CB34: ; 0x0234CB34 + ldr r0, _0234CB4C ; =0x023537E4 + ldr ip, _0234CB50 ; =ov30_023842F4 + ldr r0, [r0] + mov r1, #0x5800 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0234CB4C: .word 0x023537E4 +_0234CB50: .word ov30_023842F4 + arm_func_end ov29_0234CB34 + + arm_func_start ov29_0234CB54 +ov29_0234CB54: ; 0x0234CB54 + stmdb sp!, {r3, lr} + mov r0, #0x21 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234CB70 + mov r0, #0x21 + bl UnloadOverlay +_0234CB70: + ldr r0, _0234CB84 ; =0x023537E4 + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CB84: .word 0x023537E4 + arm_func_end ov29_0234CB54 + + arm_func_start ov29_0234CB88 +ov29_0234CB88: ; 0x0234CB88 + stmdb sp!, {r3, lr} + bl GetLeader + ldr r2, _0234CC88 ; =0x02353538 + mvn r3, #0 + ldr r1, [r2] + ldr r0, _0234CC8C ; =0x023532C0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r2, [r2] + mov r1, #1 + add r2, r2, #0x100 + strh r3, [r2, #0xda] + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC90 ; =0x023532B8 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC94 ; =0x023532B0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC98 ; =0x02353240 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldreq r0, _0234CC88 ; =0x02353538 + ldreq r0, [r0] + ldreqb r0, [r0, #0x748] + cmpeq r0, #3 + ldmneia sp!, {r3, pc} + ldr r0, _0234CC9C ; =0x023532A0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA0 ; =0x02353298 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA4 ; =0x02353290 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCA8 ; =0x02353278 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCAC ; =0x02353238 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0234CCB0 ; =0x023532E0 + mov r1, #1 + bl DisplayDungeonTip + cmp r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CC88: .word 0x02353538 +_0234CC8C: .word 0x023532C0 +_0234CC90: .word 0x023532B8 +_0234CC94: .word 0x023532B0 +_0234CC98: .word 0x02353240 +_0234CC9C: .word 0x023532A0 +_0234CCA0: .word 0x02353298 +_0234CCA4: .word 0x02353290 +_0234CCA8: .word 0x02353278 +_0234CCAC: .word 0x02353238 +_0234CCB0: .word 0x023532E0 + arm_func_end ov29_0234CB88 + + arm_func_start ov29_0234CCB4 +ov29_0234CCB4: ; 0x0234CCB4 + stmdb sp!, {r4, lr} + ldr r2, _0234CEA4 ; =0x02353538 + mvn r3, #0 + ldr r1, [r2] + mov r4, r0 + add r1, r1, #0x100 + strh r3, [r1, #0xd8] + ldr r1, [r2] + add r1, r1, #0x100 + strh r3, [r1, #0xda] + bl GetItemCategoryVeneer + cmp r0, #3 + bne _0234CCF8 + ldr r0, _0234CEA8 ; =0x023532F0 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CCF8: + cmp r4, #0x46 + bne _0234CD10 + ldr r0, _0234CEAC ; =0x023532F8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD10: + cmp r4, #0x52 + bne _0234CD28 + ldr r0, _0234CEB0 ; =0x023532D8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD28: + cmp r4, #0x57 + bne _0234CD40 + ldr r0, _0234CEB4 ; =0x023532C8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD40: + cmp r4, #8 + bne _0234CD58 + ldr r0, _0234CEB8 ; =0x02353250 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD58: + cmp r4, #0x51 + bne _0234CD70 + ldr r0, _0234CEBC ; =0x02353248 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD70: + cmp r4, #0x54 + bne _0234CD88 + ldr r0, _0234CEC0 ; =0x02353270 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CD88: + cmp r4, #0xb7 + bne _0234CDA0 + ldr r0, _0234CEC4 ; =0x02353280 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDA0: + cmp r4, #0x63 + bne _0234CDB8 + ldr r0, _0234CEC8 ; =0x023532A8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDB8: + cmp r4, #0x45 + bne _0234CDD0 + ldr r0, _0234CECC ; =0x02353300 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDD0: + cmp r4, #0x5b + bne _0234CDE8 + ldr r0, _0234CED0 ; =0x02353258 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CDE8: + cmp r4, #0x56 + bne _0234CE00 + ldr r0, _0234CED4 ; =0x02353268 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE00: + cmp r4, #0x5e + bne _0234CE18 + ldr r0, _0234CED8 ; =0x02353288 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE18: + cmp r4, #0x4c + bne _0234CE30 + ldr r0, _0234CEDC ; =0x023532E8 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE30: + cmp r4, #0x60 + bne _0234CE48 + ldr r0, _0234CEE0 ; =0x02353260 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE48: + cmp r4, #0x75 + bne _0234CE60 + ldr r0, _0234CEE4 ; =0x02353308 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} +_0234CE60: + ldr r0, _0234CEA4 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + cmp r0, #0x7b + ldmneia sp!, {r4, pc} + ldr r0, _0234CEE8 ; =0xFFFFFED2 + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + ldmhiia sp!, {r4, pc} + ldr r0, _0234CEEC ; =0x02353310 + mov r1, #0 + bl DisplayDungeonTip + ldmia sp!, {r4, pc} + .align 2, 0 +_0234CEA4: .word 0x02353538 +_0234CEA8: .word 0x023532F0 +_0234CEAC: .word 0x023532F8 +_0234CEB0: .word 0x023532D8 +_0234CEB4: .word 0x023532C8 +_0234CEB8: .word 0x02353250 +_0234CEBC: .word 0x02353248 +_0234CEC0: .word 0x02353270 +_0234CEC4: .word 0x02353280 +_0234CEC8: .word 0x023532A8 +_0234CECC: .word 0x02353300 +_0234CED0: .word 0x02353258 +_0234CED4: .word 0x02353268 +_0234CED8: .word 0x02353288 +_0234CEDC: .word 0x023532E8 +_0234CEE0: .word 0x02353260 +_0234CEE4: .word 0x02353308 +_0234CEE8: .word 0xFFFFFED2 +_0234CEEC: .word 0x02353310 + arm_func_end ov29_0234CCB4 + + arm_func_start DisplayDungeonTip +DisplayDungeonTip: ; 0x0234CEF0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + mov r4, r1 + bl GetDungeonTipShown + cmp r0, #0 + bne _0234CF58 + ldrh r0, [r5, #4] + bl StringFromMessageId + ldrb r0, [r0] + cmp r0, #0 + beq _0234CF58 + ldr r0, [r5] + bl SetDungeonTipShown + bl ov29_022EACBC + ldrh r1, [r5, #4] + mov r0, #0 + mov r2, #1 + bl DisplayMessage2 + cmp r4, #0 + beq _0234CF50 + bl GetLeader + ldrh r1, [r5, #4] + bl LogMessageByIdQuiet +_0234CF50: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0234CF58: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DisplayDungeonTip + + arm_func_start SetBothScreensWindowColorToDefault +SetBothScreensWindowColorToDefault: ; 0x0234CF60 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + bne _0234CF7C + mov r0, #2 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF7C: + bl ov29_022F42D8 + cmp r0, #1 + bne _0234CF94 + mov r0, #0 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} +_0234CF94: + mov r0, #1 + bl SetBothScreensWindowsColor + ldmia sp!, {r3, pc} + arm_func_end SetBothScreensWindowColorToDefault + + arm_func_start ov29_0234CFA0 +ov29_0234CFA0: ; 0x0234CFA0 + stmdb sp!, {r3, lr} + bl ov29_023361D4 + cmp r0, #0 + movne r0, #2 + ldmneia sp!, {r3, pc} + ldr r0, _0234CFE8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #0x748] + bl IsFutureDungeon + cmp r0, #0 + bne _0234CFD8 + bl IsSecretFloor + cmp r0, #0 + beq _0234CFE0 +_0234CFD8: + mov r0, #1 + ldmia sp!, {r3, pc} +_0234CFE0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234CFE8: .word 0x02353538 + arm_func_end ov29_0234CFA0 + + arm_func_start ov29_0234CFEC +ov29_0234CFEC: ; 0x0234CFEC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldrb r0, [r5, #0x48] + cmp r0, #0xd8 + cmpne r0, #0xf9 + cmpne r0, #0xf7 + cmpne r0, #0xf8 + beq _0234D1D4 + cmp r0, #0xd6 + blo _0234D1D4 + cmp r0, #0xd7 + bne _0234D04C + mov r0, #0 + mov r1, #0x43 + bl LoadScriptVariableValue + cmp r0, #1 + moveq r4, #0x4b0 + beq _0234D1E0 + cmp r0, #2 + ldreq r4, _0234D1E8 ; =0x000004B1 + beq _0234D1E0 + cmp r0, #3 + ldreq r4, _0234D1EC ; =0x000004B2 + b _0234D1E0 +_0234D04C: + cmp r0, #0xd6 + bne _0234D0A0 + ldrsh r2, [r5, #2] + ldr r1, _0234D1F0 ; =0x000001B2 + cmp r2, r1 + ldreq r4, _0234D1F4 ; =0x000004CD + beq _0234D1E0 + cmp r2, #0xae + addeq r4, r1, #0x31c + beq _0234D1E0 + add r0, r1, #0x27c + cmp r2, r0 + ldreq r4, _0234D1F8 ; =0x000004CF + beq _0234D1E0 + sub r0, r1, #0x99 + cmp r2, r0 + moveq r4, #0x4d0 + beq _0234D1E0 + cmp r2, #0x318 + ldreq r4, _0234D1FC ; =0x000004D1 + b _0234D1E0 +_0234D0A0: + cmp r0, #0xda + ldreq r4, _0234D200 ; =0x000004B3 + beq _0234D1E0 + cmp r0, #0xed + bne _0234D148 + ldr r0, _0234D204 ; =0x02353538 + ldr r0, [r0] + ldrb r1, [r0, #0x748] + add r0, r1, #0x7b + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D208 ; =0x000004C4 + bls _0234D1E0 + cmp r1, #0x88 + ldreq r4, _0234D20C ; =0x000004C6 + beq _0234D1E0 + add r0, r1, #0x77 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D210 ; =0x000004C7 + bls _0234D1E0 + add r0, r1, #0x75 + and r0, r0, #0xff + cmp r0, #1 + ldrls r4, _0234D214 ; =0x000004C8 + bls _0234D1E0 + cmp r1, #0x8d + ldreq r4, _0234D218 ; =0x000004C9 + beq _0234D1E0 + add r0, r1, #0x72 + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D21C ; =0x000004CA + bls _0234D1E0 + cmp r1, #0x91 + ldreq r4, _0234D220 ; =0x000004CB + beq _0234D1E0 + add r0, r1, #0x6e + and r0, r0, #0xff + cmp r0, #2 + ldrls r4, _0234D224 ; =0x000004CC + b _0234D1E0 +_0234D148: + cmp r0, #0xe2 + bne _0234D170 + mov r0, #0x1a + bl GetPerformanceFlagWithChecks + cmp r0, #0 + beq _0234D170 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D170: + ldr r1, _0234D228 ; =0x023537E8 + b _0234D1C4 +_0234D178: + ldrb r0, [r5, #0x48] + cmp r0, r2 + bne _0234D1C0 + ldrsh r4, [r1, #2] + ldr r0, _0234D22C ; =0x000004B8 + cmp r4, r0 + bne _0234D1A8 + ldrsh r0, [r5, #2] + cmp r0, #0x1f8 + cmpne r0, #0x51 + ldreq r4, _0234D230 ; =0x000004D3 + beq _0234D1E0 +_0234D1A8: + cmp r4, #0 + bne _0234D1E0 + ldrsh r0, [r5, #2] + bl sub_02025784 + mov r4, r0 + b _0234D1E0 +_0234D1C0: + add r1, r1, #4 +_0234D1C4: + ldrb r2, [r1] + cmp r2, #0xff + bne _0234D178 + b _0234D1E0 +_0234D1D4: + ldrsh r0, [r5, #4] + bl sub_02025784 + mov r4, r0 +_0234D1E0: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234D1E8: .word 0x000004B1 +_0234D1EC: .word 0x000004B2 +_0234D1F0: .word 0x000001B2 +_0234D1F4: .word 0x000004CD +_0234D1F8: .word 0x000004CF +_0234D1FC: .word 0x000004D1 +_0234D200: .word 0x000004B3 +_0234D204: .word 0x02353538 +_0234D208: .word 0x000004C4 +_0234D20C: .word 0x000004C6 +_0234D210: .word 0x000004C7 +_0234D214: .word 0x000004C8 +_0234D218: .word 0x000004C9 +_0234D21C: .word 0x000004CA +_0234D220: .word 0x000004CB +_0234D224: .word 0x000004CC +_0234D228: .word 0x023537E8 +_0234D22C: .word 0x000004B8 +_0234D230: .word 0x000004D3 + arm_func_end ov29_0234CFEC + + arm_func_start ov29_0234D234 +ov29_0234D234: ; 0x0234D234 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr lr, [sp, #0x10] + ldrb ip, [sp, #0x14] + str lr, [sp] + str ip, [sp, #4] + bl ov29_0234D5D0 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234D234 + + arm_func_start DisplayMessage +DisplayMessage: ; 0x0234D258 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #0 + str r3, [sp, #4] + bl DisplayMessageInternal + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage + + arm_func_start DisplayMessage2 +DisplayMessage2: ; 0x0234D2AC + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, #0xa + bl ov29_0234BA54 + bl ov29_0234D558 + bl ov29_0234B034 + mov r1, r4 + mov r2, r6 + str r0, [sp] + mov r0, r5 + mov r3, #1 + str r3, [sp, #4] + mov r3, #0 + bl DisplayMessageInternal + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessage2 + + arm_func_start ov29_0234D304 +ov29_0234D304: ; 0x0234D304 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x58 + ldr r4, _0234D454 ; =0x02353563 + mov r8, r0 + ldrb r0, [r4] + mov r7, r1 + mov r6, r2 + mov r5, r3 + cmp r0, #0 + beq _0234D334 + mov r0, #0xa + bl ov29_0234BA54 +_0234D334: + bl ov29_0234D558 + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D41C + mov r0, r8 + bl IsMonster__0234D460 + cmp r0, #0 + beq _0234D3F8 + ldr r4, [r8, #0xb4] + bl FixedRoomIsSubstituteRoom + cmp r0, #0 + beq _0234D3BC + bl ov29_022F99EC + cmp r0, #0 + moveq r1, #0 + beq _0234D38C + ldr r1, [r0] + cmp r1, #0 + movne r1, #1 + moveq r1, #0 + and r1, r1, #0xff +_0234D38C: + cmp r1, #0 + moveq r0, #0 + streq r0, [sp, #8] + beq _0234D3D0 + ldr r1, [r0, #0xb4] + ldr r0, _0234D458 ; =0x02353368 + ldrb r1, [r1, #0xbc] + sub r1, r1, #0xb + orr r1, r1, #0x90000 + str r1, [sp, #8] + bl DebugPrint0__0200C1FC + b _0234D3D0 +_0234D3BC: + bl ov29_02337EE8 + mov r1, r0 + ldr r0, _0234D45C ; =0x02353380 + str r1, [sp, #8] + bl DebugPrint0__0200C1FC +_0234D3D0: + ldrsh r0, [r4, #4] + str r0, [sp, #0xc] + bl ov29_0233804C + str r0, [sp, #0x18] + mov r0, r8 + bl ov29_0231ADA8 + str r0, [sp, #0x1c] + ldrsh r0, [r4, #0xc] + orr r0, r0, #0x30000 + str r0, [sp, #0x54] +_0234D3F8: + add r3, sp, #8 + str r3, [sp] + mov r3, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + str r3, [sp, #4] + bl ov29_0234D5D0 + b _0234D440 +_0234D41C: + bl ov29_0234B034 + str r0, [sp] + mov r4, #1 + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0 + str r4, [sp, #4] + bl ov29_0234D5D0 +_0234D440: + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 + add sp, sp, #0x58 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0234D454: .word 0x02353563 +_0234D458: .word 0x02353368 +_0234D45C: .word 0x02353380 + arm_func_end ov29_0234D304 + + arm_func_start IsMonster__0234D460 +IsMonster__0234D460: ; 0x0234D460 + cmp r0, #0 + moveq r0, #0 + bxeq lr + ldr r0, [r0] + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsMonster__0234D460 + + arm_func_start ov29_0234D484 +ov29_0234D484: ; 0x0234D484 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r0, r1 + bl StringFromMessageId + mov r4, r0 + mov r0, #0 + mov r1, r0 + mov r2, r4 + mov r3, #1 + bl ov29_0234D304 + mov r0, r5 + mov r1, r4 + bl LogMessageQuiet + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234D484 + + arm_func_start ov29_0234D4BC +ov29_0234D4BC: ; 0x0234D4BC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov29_0234D558 + bl ov29_0234D630 + bl ov29_0234B034 + mov r1, r0 + mov r2, r7 + mov r3, r5 + mov r0, r6 + str r4, [sp] + bl ov29_0234D750 + mov r4, r0 + ldrb r0, [sp, #0x18] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bl ov29_0234D8A0 + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234D4BC + + arm_func_start ov29_0234D518 +ov29_0234D518: ; 0x0234D518 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r0, r1 + mov r5, r2 + mov r4, r3 + bl StringFromMessageId + ldrb ip, [sp, #0x18] + mov r1, r0 + mov r0, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl ov29_0234D4BC + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0234D518 + + arm_func_start ov29_0234D558 +ov29_0234D558: ; 0x0234D558 + stmdb sp!, {r4, lr} + bl ov29_0234B73C + mov r4, r0 + mov r0, #2 + mov r1, #0 + bl ov29_022EA428 + cmp r4, #0 + ldmeqia sp!, {r4, pc} + mov r0, #0 + bl ov29_0234B1A4 + mov r0, #0xa + mov r1, r0 + bl ov29_022EA370 + ldmia sp!, {r4, pc} + arm_func_end ov29_0234D558 + + arm_func_start DisplayMessageInternal +DisplayMessageInternal: ; 0x0234D590 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl StringFromMessageId + ldr r1, [sp, #0x18] + ldrb ip, [sp, #0x1c] + str r1, [sp] + mov r1, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp, #4] + bl ov29_0234D5D0 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DisplayMessageInternal + + arm_func_start ov29_0234D5D0 +ov29_0234D5D0: ; 0x0234D5D0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r0, #2 + mov r1, #0 + mov r5, r2 + mov r4, r3 + bl ov29_022EA428 + mov r0, #1 + bl ov29_0234B4CC + bl ov29_0234DB58 + mov r0, r5 + bl ov29_0234DBE0 + mov r0, r7 + mov r3, r4 + str r6, [sp] + ldr r1, [sp, #0x18] + mov r2, #0 + bl ov29_0234DC3C + bl ov29_0234D9C0 + mov r0, r6 + ldrb r1, [sp, #0x1c] + bl ov29_0234D8B4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234D5D0 + + arm_func_start ov29_0234D630 +ov29_0234D630: ; 0x0234D630 + stmdb sp!, {r3, lr} + mov r0, #2 + mov r1, #0 + bl ov29_022EA428 + mov r0, #1 + bl ov29_0234B4CC + bl ov29_0234DB58 + ldmia sp!, {r3, pc} + arm_func_end ov29_0234D630 + + arm_func_start ov29_0234D650 +ov29_0234D650: ; 0x0234D650 + ldr ip, _0234D658 ; =ov29_0234D9C0 + bx ip + .align 2, 0 +_0234D658: .word ov29_0234D9C0 + arm_func_end ov29_0234D650 + + arm_func_start ov29_0234D65C +ov29_0234D65C: ; 0x0234D65C + ldr ip, _0234D664 ; =ov29_0234DBE0 + bx ip + .align 2, 0 +_0234D664: .word ov29_0234DBE0 + arm_func_end ov29_0234D65C + + arm_func_start ov29_0234D668 +ov29_0234D668: ; 0x0234D668 + stmdb sp!, {r3, lr} + ldr r0, _0234D68C ; =0x02382800 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x12] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl HidePortraitBox + ldmia sp!, {r3, pc} + .align 2, 0 +_0234D68C: .word 0x02382800 + arm_func_end ov29_0234D668 + + arm_func_start ov29_0234D690 +ov29_0234D690: ; 0x0234D690 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl StringFromMessageId + ldrb ip, [sp, #0x18] + mov r1, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl ov29_0234DC3C + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0234D690 + + arm_func_start ov29_0234D6C8 +ov29_0234D6C8: ; 0x0234D6C8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r0, r2 + mov r5, r1 + mov r4, r3 + bl ov29_0234DBE0 + ldrb ip, [sp, #0x18] + mov r0, r6 + mov r1, r5 + mov r3, r4 + mov r2, #0 + str ip, [sp] + bl ov29_0234DC3C + bl ov29_0234D9C0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ov29_0234D6C8 + + arm_func_start ov29_0234D70C +ov29_0234D70C: ; 0x0234D70C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r2 + mov r7, r1 + mov r5, r3 + bl StringFromMessageId + mov r4, r0 + mov r0, r6 + bl ov29_0234DBE0 + mov r0, r4 + mov r1, r7 + mov r3, r5 + ldrb ip, [sp, #0x18] + mov r2, #0 + str ip, [sp] + bl ov29_0234DC3C + bl ov29_0234D9C0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234D70C + + arm_func_start ov29_0234D750 +ov29_0234D750: ; 0x0234D750 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + ldrb ip, [sp, #0x20] + mov r4, r2 + mov r6, r0 + mov r5, r1 + mov r2, #0 + mov r1, r3 + add r0, sp, #4 + mov r3, r2 + str ip, [sp] + bl ov29_0234D860 + mov r0, r4 + bl ov29_0234DBE0 + mov r2, #1 + str r2, [sp] + mov r0, r6 + mov r1, r5 + add r2, sp, #4 + mov r3, #0 + bl ov29_0234DC3C + bl ov29_0234D9C0 + ldr r0, _0234D7BC ; =0x02382800 + ldr r0, [r0] + ldr r0, [r0, #0x46c] + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0234D7BC: .word 0x02382800 + arm_func_end ov29_0234D750 + + arm_func_start ov29_0234D7C0 +ov29_0234D7C0: ; 0x0234D7C0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl StringFromMessageId + ldrb r1, [sp, #0x20] + mov r2, #0 + mov r4, r0 + str r1, [sp] + add r0, sp, #4 + mov r1, r5 + mov r3, r2 + bl ov29_0234D860 + mov r0, r6 + bl ov29_0234DBE0 + mov r2, #1 + str r2, [sp] + mov r0, r4 + mov r1, r7 + add r2, sp, #4 + mov r3, #0 + bl ov29_0234DC3C + bl ov29_0234D9C0 + ldr r0, _0234D834 ; =0x02382800 + ldr r0, [r0] + ldr r0, [r0, #0x46c] + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0234D834: .word 0x02382800 + arm_func_end ov29_0234D7C0 + + arm_func_start ov29_0234D838 +ov29_0234D838: ; 0x0234D838 + stmdb sp!, {r3, lr} + ldr r0, _0234D85C ; =0x02382800 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x10] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202F334 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234D85C: .word 0x02382800 + arm_func_end ov29_0234D838 + + arm_func_start ov29_0234D860 +ov29_0234D860: ; 0x0234D860 + ldrb ip, [sp] + strb r3, [r0] + strb ip, [r0, #1] + strh r1, [r0, #2] + str r2, [r0, #4] + bx lr + arm_func_end ov29_0234D860 + + arm_func_start ov29_0234D878 +ov29_0234D878: ; 0x0234D878 + ldr r1, _0234D888 ; =0x02382800 + ldr r1, [r1] + str r0, [r1, #0x474] + bx lr + .align 2, 0 +_0234D888: .word 0x02382800 + arm_func_end ov29_0234D878 + + arm_func_start ov29_0234D88C +ov29_0234D88C: ; 0x0234D88C + ldr r0, _0234D89C ; =0x02382800 + ldr r0, [r0] + ldr r0, [r0, #0x46c] + bx lr + .align 2, 0 +_0234D89C: .word 0x02382800 + arm_func_end ov29_0234D88C + + arm_func_start ov29_0234D8A0 +ov29_0234D8A0: ; 0x0234D8A0 + ldr ip, _0234D8B0 ; =ov29_0234D8B4 + mov r1, r0 + mov r0, #0 + bx ip + .align 2, 0 +_0234D8B0: .word ov29_0234D8B4 + arm_func_end ov29_0234D8A0 + + arm_func_start ov29_0234D8B4 +ov29_0234D8B4: ; 0x0234D8B4 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0234D9BC ; =0x02382800 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + beq _0234D970 + ldrsb r0, [r0, #0x12] + mvn r1, #1 + cmp r0, r1 + beq _0234D8E4 + bl HidePortraitBox +_0234D8E4: + ldr r0, _0234D9BC ; =0x02382800 + ldr r0, [r0] + ldrsb r0, [r0, #0x10] + bl sub_0202F334 + mov r0, #8 + mov r1, #0x62 + bl ov29_022EA370 + ldr r0, _0234D9BC ; =0x02382800 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x11] + cmp r0, r1 + beq _0234D91C + bl sub_0202AABC +_0234D91C: + ldr r0, _0234D9BC ; =0x02382800 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x12] + cmp r0, r1 + beq _0234D948 + bl FreePortraitBox + ldr r0, _0234D9BC ; =0x02382800 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x12] +_0234D948: + ldr r0, _0234D9BC ; =0x02382800 + ldr r0, [r0] + ldrsb r0, [r0, #0x10] + bl FreeDBox + ldr r0, _0234D9BC ; =0x02382800 + ldr r0, [r0] + bl MemFree + ldr r0, _0234D9BC ; =0x02382800 + mov r1, #0 + str r1, [r0] +_0234D970: + mov r0, #0x62 + bl AdvanceFrame + cmp r5, #0 + beq _0234D994 + bl ov29_022F2FE4 + bl ov29_02339148 + mov r0, #8 + mov r1, #9 + bl ov29_022EA370 +_0234D994: + cmp r4, #0 + beq _0234D9A8 + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234D9A8: + bl sub_02006B70 + bl ov29_022E0B44 + mov r0, #0 + bl ov29_0234B4CC + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234D9BC: .word 0x02382800 + arm_func_end ov29_0234D8B4 + + arm_func_start ov29_0234D9C0 +ov29_0234D9C0: ; 0x0234D9C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mvn r8, #1 + mov r7, #0 + ldr r6, _0234DB50 ; =0x02382800 + sub r5, r8, #3 + sub r4, r8, #2 + mov sb, #1 + mov fp, r7 +_0234D9E0: + mov r0, #0x62 + bl AdvanceFrame + ldr r1, [r6] + ldrb r0, [r1, #0x466] + cmp r0, #0 + beq _0234DB2C + add r0, r1, #0x400 + ldrsh r0, [r0, #0x6a] + mov sl, #0 + cmp r0, #0 + bne _0234DA90 + ldrsb r0, [r1, #0x10] + bl IsDBoxActive + cmp r0, #0 + bne _0234DB44 + ldr r0, [r6] + add r0, r0, #0x400 + strh sb, [r0, #0x6a] + ldr r0, [r6] + ldr r3, [r0, #0x470] + ldrb r0, [r0, #0x467] + cmp r3, #0 + ldreq r3, _0234DB54 ; =0x02353398 + cmp r0, #0 + movne r1, #0x11 + mov r0, #0 + moveq r1, #0x13 + mov r2, r0 + bl sub_0202A5CC + ldr r1, [r6] + strb r0, [r1, #0x11] + ldr r1, [r6] + ldrsb r0, [r1, #0x11] + add r1, r1, #0x400 + ldrsh r1, [r1, #0x68] + bl sub_0202AB94 + ldr r0, [r6] + ldr r0, [r0, #0x474] + cmp r0, #0 + beq _0234DB44 + blx r0 + ldr r0, [r6] + str fp, [r0, #0x474] + b _0234DB44 +_0234DA90: + ldrsb r0, [r1, #0x11] + bl sub_020282F4 + ldr r2, [r6] + ldrb r1, [r2, #0x467] + cmp r1, #0 + cmpeq r0, r5 + moveq r0, #2 + streq r0, [r2, #0x46c] + moveq sl, #1 + beq _0234DAD4 + cmp r0, r4 + bne _0234DAD4 + ldrsb r0, [r2, #0x11] + bl sub_0202ABB0 + ldr r1, [r6] + mov sl, #1 + str r0, [r1, #0x46c] +_0234DAD4: + cmp sl, #0 + beq _0234DB44 + ldr r0, [r6] + ldrsb r0, [r0, #0x11] + cmp r0, r8 + beq _0234DAF8 + bl sub_0202AABC + ldr r0, [r6] + strb r8, [r0, #0x11] +_0234DAF8: + ldr r0, [r6] + add r0, r0, #0x400 + strh r7, [r0, #0x6a] + ldr r0, [r6] + strb r7, [r0, #0x466] + ldr r0, [r6] + strb r7, [r0, #0x467] + ldr r0, [r6] + add r0, r0, #0x400 + strh r7, [r0, #0x68] + ldr r0, [r6] + str r7, [r0, #0x470] + b _0234DB44 +_0234DB2C: + ldrsb r0, [r1, #0x10] + bl IsDBoxActive + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and sl, r0, #0xff +_0234DB44: + cmp sl, #0 + beq _0234D9E0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234DB50: .word 0x02382800 +_0234DB54: .word 0x02353398 + arm_func_end ov29_0234D9C0 + + arm_func_start ov29_0234DB58 +ov29_0234DB58: ; 0x0234DB58 + stmdb sp!, {r3, lr} + ldr r0, _0234DBD8 ; =0x00000478 + mov r1, #8 + bl MemAlloc + ldr r2, _0234DBDC ; =0x02382800 + ldr r1, _0234DBD8 ; =0x00000478 + str r0, [r2] + bl MemZero + ldr r0, _0234DBDC ; =0x02382800 + mvn r2, #0 + ldr r1, [r0] + str r2, [r1, #0x46c] + ldr r0, [r0] + add r0, r0, #0x14 + bl InitPreprocessorArgs + ldr r1, _0234DBDC ; =0x02382800 + mov r3, #0 + ldr r0, [r1] + sub r2, r3, #2 + strb r3, [r0, #0x466] + ldr r0, [r1] + add r0, r0, #0x400 + strh r3, [r0, #0x6a] + ldr r0, [r1] + strb r2, [r0, #0x12] + ldr r0, [r1] + strb r2, [r0, #0x11] + ldr r0, [r1] + strb r2, [r0, #0x10] + ldr r0, [r1] + str r3, [r0, #0x474] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234DBD8: .word 0x00000478 +_0234DBDC: .word 0x02382800 + arm_func_end ov29_0234DB58 + + arm_func_start ov29_0234DBE0 +ov29_0234DBE0: ; 0x0234DBE0 + stmdb sp!, {r4, lr} + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r1, _0234DC38 ; =0x02382800 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x12] + cmp r1, r0 + bne _0234DC20 + mov r0, #0 + mov r1, #3 + mov r2, #1 + bl CreatePortraitBox + ldr r1, _0234DC38 ; =0x02382800 + ldr r1, [r1] + strb r0, [r1, #0x12] +_0234DC20: + ldr r0, _0234DC38 ; =0x02382800 + mov r1, r4 + ldr r0, [r0] + ldrsb r0, [r0, #0x12] + bl ShowPortraitBox + ldmia sp!, {r4, pc} + .align 2, 0 +_0234DC38: .word 0x02382800 + arm_func_end ov29_0234DBE0 + + arm_func_start ov29_0234DC3C +ov29_0234DC3C: ; 0x0234DC3C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0234DD88 ; =0x02382800 + mvn ip, #1 + ldr r4, [r4] + mov r7, r0 + ldrsb r0, [r4, #0x10] + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r0, ip + bne _0234DC8C + mov r0, #0 + bl CreateDBox + ldr r2, _0234DD88 ; =0x02382800 + mov r1, #0 + ldr r3, [r2] + strb r0, [r3, #0x10] + ldr r0, [r2] + ldrsb r0, [r0, #0x10] + bl sub_0202F474 +_0234DC8C: + ldr r0, _0234DD88 ; =0x02382800 + mov r8, r6 + ldr sb, [r0] + mov ip, #5 + add lr, sb, #0x14 +_0234DCA0: + ldmia r8!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0234DCA0 + ldr r1, _0234DD8C ; =0x00001004 + add r0, sb, #0x400 + strh r1, [r0, #0x64] + cmp r4, #0 + beq _0234DCDC + ldr r0, _0234DD88 ; =0x02382800 + ldr r0, [r0] + add r0, r0, #0x400 + ldrh r1, [r0, #0x64] + orr r1, r1, #0x2000 + strh r1, [r0, #0x64] +_0234DCDC: + ldrb r0, [sp, #0x20] + cmp r0, #0 + beq _0234DD24 + cmp r5, #0 + beq _0234DD0C + ldr r0, _0234DD88 ; =0x02382800 + ldr r0, [r0] + add r0, r0, #0x400 + ldrh r1, [r0, #0x64] + orr r1, r1, #8 + strh r1, [r0, #0x64] + b _0234DD24 +_0234DD0C: + ldr r0, _0234DD88 ; =0x02382800 + ldr r0, [r0] + add r0, r0, #0x400 + ldrh r1, [r0, #0x64] + orr r1, r1, #0x18 + strh r1, [r0, #0x64] +_0234DD24: + cmp r5, #0 + beq _0234DD64 + ldr r1, _0234DD88 ; =0x02382800 + mov r2, #1 + ldr r0, [r1] + strb r2, [r0, #0x466] + ldrb r2, [r5, #1] + ldr r0, [r1] + strb r2, [r0, #0x467] + ldr r0, [r1] + ldrsh r2, [r5, #2] + add r0, r0, #0x400 + strh r2, [r0, #0x68] + ldr r2, [r5, #4] + ldr r0, [r1] + str r2, [r0, #0x470] +_0234DD64: + ldr r0, _0234DD88 ; =0x02382800 + mov r2, r7 + ldr r0, [r0] + mov r3, r6 + add r1, r0, #0x400 + ldrsb r0, [r0, #0x10] + ldrh r1, [r1, #0x64] + bl sub_0202F23C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0234DD88: .word 0x02382800 +_0234DD8C: .word 0x00001004 + arm_func_end ov29_0234DC3C + + arm_func_start ov29_0234DD90 +ov29_0234DD90: ; 0x0234DD90 + ldr ip, _0234DD9C ; =LoadOverlay + mov r0, #0x22 + bx ip + .align 2, 0 +_0234DD9C: .word LoadOverlay + arm_func_end ov29_0234DD90 + + arm_func_start ov29_0234DDA0 +ov29_0234DDA0: ; 0x0234DDA0 + ldr ip, _0234DDAC ; =OverlayIsLoaded + mov r0, #0x22 + bx ip + .align 2, 0 +_0234DDAC: .word OverlayIsLoaded + arm_func_end ov29_0234DDA0 + + arm_func_start ov29_0234DDB0 +ov29_0234DDB0: ; 0x0234DDB0 + stmdb sp!, {r3, lr} + mov r0, #0x22 + bl OverlayIsLoaded + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x22 + bl UnloadOverlay + ldmia sp!, {r3, pc} + arm_func_end ov29_0234DDB0 diff --git a/asm/overlay_29_0234DDF4.s b/asm/overlay_29_0234DDF4.s new file mode 100644 index 00000000..9b8aa715 --- /dev/null +++ b/asm/overlay_29_0234DDF4.s @@ -0,0 +1,1029 @@ + .include "asm/macros.inc" + .include "overlay_29_0234DDF4.inc" + + .text + + arm_func_start ov29_0234DDF4 +ov29_0234DDF4: ; 0x0234DDF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x38 + mov r0, #0x22 + mov sl, r2 + bl LoadOverlay + ldr r0, _0234E8E8 ; =0x02353538 + mov r6, #0 + ldr r1, [r0] + mov r4, #0xa + ldr r5, [r1, #0x614] + sub r0, r4, #0xb + cmp r5, #4 + moveq r2, #1 + movne r2, r6 + cmp r5, #0 + movge r4, r5 + str r0, [r1, #0x614] + and fp, r2, #0xff + cmp sl, #0 + beq _0234DE74 + mov r5, #1 + mov r0, r5 + mov r4, r5 + bl ov29_0234B1A4 + mov r0, #0x1d + bl AdvanceFrame + mov r0, #2 + mov r1, #0 + bl ov29_022EA428 + mov r0, #2 + mov r1, #0x1d + bl ov29_022EA370 +_0234DE74: + bl ov29_022FB920 +_0234DE78: + mvn r0, #0 + cmp r5, r0 + bne _0234DEE8 + mov r0, #0 + bl ov29_0234B1A4 + mov r0, #2 + mov r1, #0 + bl ov29_022EA428 + mov r0, #1 + bl ov29_022EB398 + ldr r0, _0234E8EC ; =0x02382804 + mvn r1, #0 + str r1, [r0, #4] + bl GetLeader + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + cmp sl, #0 + mvnne r4, #0 + bne _0234DEE8 + bl ov30_02382820 + mov r5, #0x1d +_0234DED0: + mov r0, r5 + bl AdvanceFrame + bl ov30_02382E08 + mov r4, r0 + cmp r4, #0xa + beq _0234DED0 +_0234DEE8: + mov r5, r4 + mvn r7, #0 + mov r8, #0 + mov sb, #1 +_0234DEF8: + cmp r4, #1 + bne _0234E150 + mov r0, #1 + bl ov29_022EB398 + strb r8, [sp, #0x14] + strb sb, [sp, #0x15] + strb r8, [sp, #0x16] + strb r8, [sp, #0x17] + str r8, [sp, #0x18] + bl GetLeader + add r1, sp, #0x14 + bl ov30_023838E4 + cmp r0, #0 + add r0, sp, #0x14 + movne r5, r7 + bl ov29_0234E934 + cmp r0, #0 + beq _0234DF5C + bl GetLeader + add r1, sp, #0x14 + bl ov30_023838E4 + cmp r0, #0 + beq _0234DF5C + mov r0, #1 + bl ov29_022EB398 +_0234DF5C: + bl ov29_022F0B9C + cmp r0, #0xc + bne _0234DF9C + bl GetLeader + mov r1, #0 + mov r2, #0xc + bl ov29_022EB54C + ldrb r1, [r0] + orr r1, r1, #4 + strb r1, [r0] + bl ov29_022F0B8C + bl ov30_0238367C + mov r0, #1 + bl ov29_022EB398 + mov r4, #1 + b _0234DEF8 +_0234DF9C: + cmp r0, #0x35 + bne _0234DFD8 + bl GetLeader + mov r1, #0 + mov r2, #0xd + bl ov29_022EB54C + mov r7, r0 + bl GetLeader + mov r1, r7 + bl ov29_0231DBF0 + cmp r0, #0 + bne _0234E140 + mov r0, #1 + bl ov29_022EB398 + b _0234E140 +_0234DFD8: + cmp r0, #0x10 + bne _0234E014 + bl GetLeader + mov r1, #0 + mov r2, #0xe + bl ov29_022EB54C + mov r7, r0 + bl GetLeader + mov r1, r7 + bl ov29_0231DA80 + cmp r0, #0 + bne _0234E140 + mov r0, #1 + bl ov29_022EB398 + b _0234E140 +_0234E014: + cmp r0, #0x2c + bne _0234E050 + bl GetLeader + mov r1, #0 + mov r2, #0xf + bl ov29_022EB54C + mov r7, r0 + bl GetLeader + mov r1, r7 + bl ov29_0231DD60 + cmp r0, #0 + bne _0234E140 + mov r0, #1 + bl ov29_022EB398 + b _0234E140 +_0234E050: + cmp r0, #0x3c + bne _0234E084 + bl GetLeader + mov r1, #1 + bl ov29_022F4370 + mov r0, #1 + bl ov29_022EB398 + mov r0, #0x78 + mov r1, #0x4d + bl ov29_022EA370 + mov r0, #0 + bl ov29_0234B1A4 + b _0234E890 +_0234E084: + cmp r0, #0x3d + bne _0234E0B8 + bl GetLeader + mov r1, #1 + bl ov29_022F44F0 + mov r0, #1 + bl ov29_022EB398 + mov r0, #0x78 + mov r1, #0x4d + bl ov29_022EA370 + mov r0, #0 + bl ov29_0234B1A4 + b _0234E890 +_0234E0B8: + cmp r0, #0xb + cmpne r0, #0x27 + cmpne r0, #0x41 + bne _0234E0EC + bl sub_0204AF20 + cmp r0, #0 + beq _0234E140 + bl ov29_022F0B8C + bl GetLeader + bl ov29_022F0C1C + cmp r0, #0 + beq _0234DE78 + b _0234E140 +_0234E0EC: + cmp r0, #0x31 + bne _0234E140 + bl sub_0204AF20 + cmp r0, #0 + beq _0234E140 + bl ov29_022F0B8C + bl GetLeader + mov r1, #0 + mov r2, #0x15 + mov r7, r0 + bl ov29_022EB54C + ldrsh r0, [r0, #4] + bl GetItemMoveId16 + mov r1, r0 + add r0, sp, #0x1c + bl InitMove + mov r0, r7 + add r1, sp, #0x1c + bl ov29_022F0C3C + cmp r0, #0 + beq _0234DE78 +_0234E140: + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + b _0234E86C +_0234E150: + cmp r4, #2 + bne _0234E2C4 + mvn r0, #0 + mov sb, #1 + str r0, [sp, #0x10] + b _0234E2AC +_0234E168: + mov r0, #1 + bl ov29_022EB398 + bl GetLeader + bl ov31_0238704C + cmp r0, #0 + ldrne r5, [sp, #0x10] + bl ov29_022F0B9C + cmp r0, #0x30 + bgt _0234E1B0 + bge _0234E1F0 + sub r1, r0, #0x19 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0234E288 +_0234E1A0: ; jump table + b _0234E200 ; case 0 + b _0234E1E4 ; case 1 + b _0234E1BC ; case 2 + b _0234E1CC ; case 3 +_0234E1B0: + cmp r0, #0x34 + beq _0234E1D8 + b _0234E288 +_0234E1BC: + bl ov29_022F0B8C + mov r1, #0 + bl ov31_02387688 + b _0234E28C +_0234E1CC: + bl ov29_022F0B8C + bl ov29_022F5A0C + b _0234E28C +_0234E1D8: + bl ov29_022F0B8C + bl ov29_022F5DC0 + b _0234E28C +_0234E1E4: + bl ov29_022F0B8C + bl ov31_02387660 + b _0234E28C +_0234E1F0: + bl ov29_022F0B8C + mov r1, #1 + bl ov31_02387688 + b _0234E28C +_0234E200: + bl ov29_022F0B8C + bl ov30_023851C0 + mov r7, #0 + mov r8, r7 + b _0234E27C +_0234E214: + ldr r0, _0234E8E8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r8, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + str r0, [sp, #4] + bl EntityIsValid__0234DDD0 + cmp r0, #0 + beq _0234E278 + bl ov29_022F0B8C + ldrb r0, [r0, #4] + cmp r8, r0 + bne _0234E274 + ldr r0, _0234E8EC ; =0x02382804 + str r7, [r0, #4] + bl ov29_022F0B9C + cmp r0, #0 + beq _0234E28C + ldr r0, [sp, #4] + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + mov sb, #0 + b _0234E28C +_0234E274: + add r7, r7, #1 +_0234E278: + add r8, r8, #1 +_0234E27C: + cmp r8, #4 + blt _0234E214 + b _0234E28C +_0234E288: + mov sb, #0 +_0234E28C: + ldr r0, _0234E8F0 ; =0x0235352C + ldr r0, [r0] + ldr r0, [r0, #0x24] + bl sub_0200B3D4 + ldr r0, _0234E8F0 ; =0x0235352C + ldr r0, [r0] + ldr r0, [r0, #0x24] + bl sub_0200B330 +_0234E2AC: + cmp sb, #0 + bne _0234E168 + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + b _0234E86C +_0234E2C4: + cmp r4, #0 + bne _0234E4F0 + mov r0, #1 + mov r8, #0 + bl ov29_022EB398 + mov r7, r8 + b _0234E318 +_0234E2E0: + ldr r0, _0234E8E8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, r7, lsl #2 + add r0, r0, #0x12000 + ldr sb, [r0, #0xb28] + mov r0, sb + bl EntityIsValid__0234DDD0 + cmp r0, #0 + ldrne r0, [sb, #0xb4] + ldrneb r0, [r0, #7] + cmpne r0, #0 + movne r8, r7 + bne _0234E320 + add r7, r7, #1 +_0234E318: + cmp r7, #4 + blt _0234E2E0 +_0234E320: + mov r7, #0 + mov r0, r7 + str r7, [sp, #8] + mov sb, r7 + str r0, [sp, #0x24] +_0234E334: + ldr r0, _0234E8E8 ; =0x02353538 + ldr r0, [r0] + add r0, r0, sb, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + str r0, [sp, #0xc] + bl ov29_02302388 + cmp r0, #0 + beq _0234E36C + cmp sb, r8 + ldreq r0, [sp, #0xc] + streq r7, [sp, #8] + streq r0, [sp, #0x24] + add r7, r7, #1 +_0234E36C: + add sb, sb, #1 + cmp sb, #4 + blt _0234E334 + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _0234E38C + bl GetLeader + str r0, [sp, #0x24] +_0234E38C: + ldr r0, [sp, #0x24] + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + ldr r0, [sp, #0x24] + mov r2, #1 + add r0, r0, #4 + mov r1, #0 + mov r3, r2 + bl ov29_02337428 + bl ov29_022E9618 + strb r8, [r0, #0x4e] + mov r0, #0 + bl ov29_022EB398 + ldr sb, _0234E8E8 ; =0x02353538 + mvn r8, #0 +_0234E3CC: + mov r0, #0 + bl ov29_022EB398 + ldr r3, [sp, #8] + add r0, sp, #0x24 + mov r1, #0 + mov r2, #1 + str r7, [sp] + bl ov30_023853BC + cmp r0, #0 + movne r5, r8 + bl ov29_022F0B9C + cmp r0, #0x1d + bne _0234E40C + bl ov29_022F0B8C + bl ov30_02385FE0 + b _0234E3CC +_0234E40C: + bl ov29_022F0B9C + cmp r0, #0x1e + bne _0234E428 + bl ov29_022F0B8C + mov r1, #0 + bl ov31_023860A4 + b _0234E3CC +_0234E428: + bl ov29_022F0B9C + cmp r0, #0x33 + bne _0234E444 + bl ov29_022F0B8C + mov r1, #0 + bl ov31_023860A4 + b _0234E3CC +_0234E444: + bl ov29_022F0B9C + cmp r0, #0x1f + bne _0234E45C + bl ov29_022F0B8C + bl ov31_0238619C + b _0234E3CC +_0234E45C: + bl ov29_022F0B9C + cmp r0, #0x20 + beq _0234E3CC + bl ov29_022F0B9C + cmp r0, #0x21 + beq _0234E3CC + bl ov29_022F0B9C + cmp r0, #0x14 + beq _0234E48C + bl ov29_022F0B9C + cmp r0, #0x15 + bne _0234E4CC +_0234E48C: + bl sub_0204AF20 + cmp r0, #0 + beq _0234E4CC + bl ov29_022F0B8C + ldrb r2, [r0, #4] + ldr r3, [sb] + ldrb r1, [r0, #0xa] + add r0, r3, r2, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + ldr r2, [r0, #0xb4] + add r2, r2, #0x124 + add r1, r2, r1, lsl #3 + bl ov29_022F0C3C + cmp r0, #0 + beq _0234E3CC +_0234E4CC: + bl GetLeader + mov r1, #0 + mov r2, #1 + bl ov29_022F98B4 + bl ov29_0233779C + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + b _0234E86C +_0234E4F0: + cmp r4, #4 + bne _0234E800 + bl GetLeader + mov r1, r0 + ldrsh r0, [r1, #4] + ldrsh r1, [r1, #6] + bl GetTile + ldr r1, [r0, #0x10] + cmp r1, #0 + beq _0234E78C + ldr r0, [r1] + cmp r0, #3 + bne _0234E734 + mov r0, #1 + bl ov29_0234B1A4 + mov r0, #0x1d + bl AdvanceFrame + mov r0, #0x1d + bl AdvanceFrame + mov r0, #1 + bl ov29_022EB398 + mov r0, #0 + strb r0, [sp, #0x28] + mov r0, #1 + strb r0, [sp, #0x29] + strb r0, [sp, #0x2a] + strb r0, [sp, #0x2b] + mov r0, #0 + str r0, [sp, #0x2c] + bl GetLeader + add r1, sp, #0x28 + bl ov30_023838E4 + cmp r0, #0 + add r0, sp, #0x28 + movne r5, r7 + bl ov29_0234E934 + cmp r0, #0 + beq _0234E5A4 + bl GetLeader + add r1, sp, #0x28 + bl ov30_023838E4 + cmp r0, #0 + beq _0234E5A4 + mov r0, #1 + bl ov29_022EB398 +_0234E5A4: + bl ov29_022F0B9C + cmp r0, #0xc + bne _0234E5E4 + bl GetLeader + mov r1, #0 + mov r2, #0x10 + bl ov29_022EB54C + ldrb r1, [r0] + orr r1, r1, #4 + strb r1, [r0] + bl ov29_022F0B8C + bl ov30_0238367C + mov r0, #1 + bl ov29_022EB398 + mov r4, #4 + b _0234DEF8 +_0234E5E4: + cmp r0, #0x35 + bne _0234E620 + bl GetLeader + mov r1, #0 + mov r2, #0x11 + bl ov29_022EB54C + mov r5, r0 + bl GetLeader + mov r1, r5 + bl ov29_0231DBF0 + cmp r0, #0 + bne _0234E720 + mov r0, #1 + bl ov29_022EB398 + b _0234E720 +_0234E620: + cmp r0, #0x10 + bne _0234E65C + bl GetLeader + mov r1, #0 + mov r2, #0x12 + bl ov29_022EB54C + mov r5, r0 + bl GetLeader + mov r1, r5 + bl ov29_0231DA80 + cmp r0, #0 + bne _0234E720 + mov r0, #1 + bl ov29_022EB398 + b _0234E720 +_0234E65C: + cmp r0, #0x2c + bne _0234E698 + bl GetLeader + mov r1, #0 + mov r2, #0x13 + bl ov29_022EB54C + mov r5, r0 + bl GetLeader + mov r1, r5 + bl ov29_0231DD60 + cmp r0, #0 + bne _0234E720 + mov r0, #1 + bl ov29_022EB398 + b _0234E720 +_0234E698: + cmp r0, #0xb + cmpne r0, #0x27 + cmpne r0, #0x41 + bne _0234E6CC + bl sub_0204AF20 + cmp r0, #0 + beq _0234E720 + bl ov29_022F0B8C + bl GetLeader + bl ov29_022F0C1C + cmp r0, #0 + beq _0234DE78 + b _0234E720 +_0234E6CC: + cmp r0, #0x31 + bne _0234E720 + bl sub_0204AF20 + cmp r0, #0 + beq _0234E720 + bl ov29_022F0B8C + bl GetLeader + mov r1, #0 + mov r2, #0x15 + mov r7, r0 + bl ov29_022EB54C + ldrsh r0, [r0, #4] + bl GetItemMoveId16 + mov r1, r0 + add r0, sp, #0x30 + bl InitMove + mov r0, r7 + add r1, sp, #0x30 + bl ov29_022F0C3C + cmp r0, #0 + beq _0234DE78 +_0234E720: + bl ov29_022FB920 + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + b _0234E7F8 +_0234E734: + cmp r0, #2 + bne _0234E75C + mov r0, #1 + bl ov29_022EB398 + bl GetLeader + bl ov31_02386C6C + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + b _0234E7F8 +_0234E75C: + cmp r0, #5 + bne _0234E7F8 + mov r0, #1 + bl ov29_022EB398 + bl GetLeader + mov r1, #1 + bl ov30_02382E18 + bl ov29_022F0B9C + cmp r0, #0 + beq _0234E7F8 + mov r6, #1 + b _0234E890 +_0234E78C: + ldrh r0, [r0] + tst r0, #0x200 + beq _0234E7C0 + mov r0, #1 + bl ov29_022EB398 + bl GetLeader + mov r1, #1 + bl ov30_02382E18 + bl ov29_022F0B9C + cmp r0, #0 + beq _0234E7F8 + mov r6, #1 + b _0234E890 +_0234E7C0: + bl GetLeader + mov r7, r0 + bl sub_02025888 + mov r5, r0 + bl ov29_0234B034 + mov r1, r7 + str r5, [r0, #0x38] + mov r0, r5 + mov r2, #0 + bl ov29_022E2A78 + mov r0, #0 + ldr r1, _0234E8F4 ; =0x00000B6A + mov r2, #1 + bl DisplayMessage +_0234E7F8: + mvn r5, #0 + b _0234E86C +_0234E800: + cmp r4, #3 + bne _0234E834 + mov r0, #2 + mov r1, #0 + bl ov29_022EA428 + bl ov29_0234FA24 + cmp r0, #0 + bne _0234E890 + bl ov29_022F0B9C + cmp r0, #0 + bne _0234E890 + mvn r5, #0 + b _0234E86C +_0234E834: + cmp r4, #5 + bne _0234E86C + bl ov31_0238878C + ldr r0, _0234E8E8 ; =0x02353538 + ldr r0, [r0] + ldrb r0, [r0, #8] + cmp r0, #0 + movne r6, #1 + bne _0234E890 + bl ov29_022F0B9C + cmp r0, #0 + movne r6, #1 + bne _0234E890 + mvn r5, #0 +_0234E86C: + cmp sl, #0 + mvnne r0, #0 + cmpne r4, r0 + bne _0234DE78 + cmp fp, #0 + bne _0234E890 + mvn r0, #0 + cmp r4, r0 + bne _0234DE78 +_0234E890: + cmp r6, #0 + mov r0, #0x64 + beq _0234E8B0 + bl AdvanceFrame + mov r0, #0xb + mov r1, #0 + bl ov29_022EA428 + b _0234E8C0 +_0234E8B0: + bl AdvanceFrame + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234E8C0: + bl ov29_022FB920 + bl ov29_022E0B44 + mov r0, #0x22 + bl OverlayIsLoaded + cmp r0, #0 + beq _0234E8E0 + mov r0, #0x22 + bl UnloadOverlay +_0234E8E0: + add sp, sp, #0x38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234E8E8: .word 0x02353538 +_0234E8EC: .word 0x02382804 +_0234E8F0: .word 0x0235352C +_0234E8F4: .word 0x00000B6A + arm_func_end ov29_0234DDF4 + + arm_func_start ov29_0234E8F8 +ov29_0234E8F8: ; 0x0234E8F8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r0, #0x22 + bl LoadOverlay + mov r0, r5 + mov r1, r4 + bl ov30_02382E18 + mov r0, #0x22 + bl OverlayIsLoaded + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0x22 + bl UnloadOverlay + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234E8F8 + + arm_func_start ov29_0234E934 +ov29_0234E934: ; 0x0234E934 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ov29_022F0B9C + mov r2, #0 + strb r2, [r4] + strb r2, [r4, #1] + strb r2, [r4, #2] + cmp r0, #0xa + strb r2, [r4, #3] + moveq r1, #1 + streqb r1, [r4] + streqb r2, [r4, #1] + streqb r1, [r4, #3] + cmp r0, #0x3e + moveq r1, #1 + streqb r1, [r4] + moveq r0, #0 + streqb r0, [r4, #1] + streqb r1, [r4, #3] + ldrb r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end ov29_0234E934 + + arm_func_start ov29_0234E988 +ov29_0234E988: ; 0x0234E988 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldrsb r0, [r7] + mvn r1, #1 + cmp r0, r1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_0202AAE8 + cmp r0, #0 + beq _0234E9D4 + mvn r4, #3 + sub r5, r4, #1 + mov r6, #0x62 +_0234E9B8: + mov r0, r6 + bl AdvanceFrame + ldrsb r0, [r7] + bl sub_020282F4 + cmp r0, r5 + cmpne r0, r4 + bne _0234E9B8 +_0234E9D4: + ldrsb r0, [r7] + bl sub_0202AABC + mvn r0, #1 + strb r0, [r7] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234E988 + + arm_func_start ov29_0234E9E8 +ov29_0234E9E8: ; 0x0234E9E8 + str r1, [r0] + mov ip, #0 + str ip, [r0, #0x88] + mov r3, ip + mov r1, #0x44 +_0234E9FC: + add r2, r0, ip, lsl #5 + strb r3, [r2, #0x14] + add ip, ip, #1 + strb r1, [r2, #0x1e] + cmp ip, #4 + blt _0234E9FC + bx lr + arm_func_end ov29_0234E9E8 + + arm_func_start ov29_0234EA18 +ov29_0234EA18: ; 0x0234EA18 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sb, r1 + mov sl, r0 + mov r8, r2 + mov r7, r3 + ldr r6, [sp, #0x30] + bl ov29_0234E9E8 + cmp sb, #1 + moveq r5, #4 + beq _0234EA50 + cmp sb, #0 + moveq r5, #4 + bne _0234EB1C +_0234EA50: + mov r4, #0 + ldr fp, _0234EB24 ; =0x02353538 + b _0234EAE4 +_0234EA5C: + cmp sb, #1 + bne _0234EA98 + str r7, [sp] + str r6, [sp, #4] + ldr r1, [fp] + mov r0, sl + add r1, r1, r4, lsl #2 + add r1, r1, #0x12000 + ldr r1, [r1, #0xb28] + mov r2, r4 + mov r3, r8 + bl ov29_0234EC38 + cmp r0, #0 + beq _0234EAE0 + b _0234EACC +_0234EA98: + cmp sb, #0 + bne _0234EACC + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetActiveTeamMember + mov r1, r0 + mov r0, sl + str r6, [sp] + mov r2, r4 + mov r3, r7 + bl ov29_0234ED30 + cmp r0, #0 + beq _0234EAE0 +_0234EACC: + ldr r0, [sl, #0x88] + add r0, r0, #1 + str r0, [sl, #0x88] + cmp r0, #4 + bge _0234EAEC +_0234EAE0: + add r4, r4, #1 +_0234EAE4: + cmp r4, r5 + blt _0234EA5C +_0234EAEC: + ldr r4, [sl, #0x88] + mvn r3, #0 + mov r1, #0 + b _0234EB14 +_0234EAFC: + add r2, sl, r4, lsl #5 + str r3, [r2, #4] + add r0, sl, r4 + str r1, [r2, #0x20] + strb r1, [r0, #0x84] + add r4, r4, #1 +_0234EB14: + cmp r4, #4 + blt _0234EAFC +_0234EB1C: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234EB24: .word 0x02353538 + arm_func_end ov29_0234EA18 + + arm_func_start ov29_0234EB28 +ov29_0234EB28: ; 0x0234EB28 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + ldr ip, [r4, #0x88] + cmp ip, #4 + mvnge r0, #0 + bge _0234EBA4 + ldr ip, [r4] + cmp ip, #1 + bne _0234EB74 + ldrb lr, [sp, #0x10] + ldrb ip, [sp, #0x14] + str lr, [sp] + str ip, [sp, #4] + bl ov29_0234EC38 + cmp r0, #0 + bne _0234EB98 + mvn r0, #0 + b _0234EBA4 +_0234EB74: + cmp ip, #0 + bne _0234EB98 + ldrb ip, [sp, #0x14] + ldrb r3, [sp, #0x10] + str ip, [sp] + bl ov29_0234ED30 + cmp r0, #0 + mvneq r0, #0 + beq _0234EBA4 +_0234EB98: + ldr r0, [r4, #0x88] + add r1, r0, #1 + str r1, [r4, #0x88] +_0234EBA4: + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end ov29_0234EB28 + + arm_func_start ov29_0234EBAC +ov29_0234EBAC: ; 0x0234EBAC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + add r0, r5, #0x10 + mov r2, #0xa + bl StrncpySimple + strb r4, [r5, #0x1a] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov29_0234EBAC + + arm_func_start ov29_0234EBCC +ov29_0234EBCC: ; 0x0234EBCC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _0234EC10 ; =0x02353538 + mov r6, #0 + mov r5, #1 +_0234EBDC: + ldr r0, [r4] + add r0, r0, r6, lsl #2 + add r0, r0, #0x12000 + ldr r7, [r0, #0xb28] + mov r0, r7 + bl EntityIsValid__0234EC14 + cmp r0, #0 + ldrne r0, [r7, #0xb4] + add r6, r6, #1 + strneb r5, [r0, #0x161] + cmp r6, #4 + blt _0234EBDC + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234EC10: .word 0x02353538 + arm_func_end ov29_0234EBCC diff --git a/asm/overlay_29_0234EC38.s b/asm/overlay_29_0234EC38.s new file mode 100644 index 00000000..a4814f5b --- /dev/null +++ b/asm/overlay_29_0234EC38.s @@ -0,0 +1,2248 @@ + .include "asm/macros.inc" + .include "overlay_29_0234EC38.inc" + + .text + + arm_func_start ov29_0234EC38 +ov29_0234EC38: ; 0x0234EC38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + mov r7, r1 + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl EntityIsValid__0234EC14 + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r0, [sp, #0x20] + ldr r4, [r7, #0xb4] + cmp r0, #0 + ldrneb r0, [r4, #7] + cmpne r0, #0 + bne _0234EC9C + bl StoryRestrictionsEnabled + cmp r0, #0 + ldrneb r0, [sp, #0x20] + cmpne r0, #0 + beq _0234ECA4 + ldrb r0, [r4, #0x48] + bl JoinedAtRangeCheck2Veneer + cmp r0, #0 + beq _0234ECA4 +_0234EC9C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0234ECA4: + ldrb r0, [sp, #0x24] + cmp r0, #0 + beq _0234ECCC + ldrsh r0, [r4, #0xc] + bl GetActiveTeamMember + ldrsh r0, [r0, #8] + bl sub_02056264 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0234ECCC: + cmp r5, #0 + beq _0234ECE4 + mov r0, r7 + ldr r5, [r7, #0xb4] + bl ov29_02347100 + strb r0, [r5, #0x161] +_0234ECE4: + ldrsh r0, [r4, #0xc] + ldr r5, [r8, #0x88] + add sb, r8, #4 + add sl, sb, r5, lsl #5 + bl GetActiveTeamMember + ldrsh r0, [r0, #8] + bl CheckTeamMemberIdx__022F9C34 + strb r0, [sl, #4] + str r7, [sl, #0x1c] + str r6, [sb, r5, lsl #5] + ldrb r0, [r4, #0x161] + ldr r1, [r8, #0x88] + cmp r0, #0 + movne r2, #0 + moveq r2, #3 + add r1, r8, r1 + mov r0, #1 + strb r2, [r1, #0x84] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov29_0234EC38 + + arm_func_start ov29_0234ED30 +ov29_0234ED30: ; 0x0234ED30 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r1 + ldrb r1, [r6] + mov r7, r0 + mov r5, r2 + tst r1, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + mov r4, r3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r4, #0 + beq _0234ED84 + ldrb r0, [r6, #1] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_0234ED84: + ldrb r0, [sp, #0x18] + cmp r0, #0 + beq _0234EDA4 + ldrsh r0, [r6, #8] + bl sub_02056264 + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_0234EDA4: + bl StoryRestrictionsEnabled + cmp r0, #0 + cmpne r4, #0 + beq _0234EDE4 + ldrb r0, [r6, #3] + bl JoinedAtRangeCheck2 + cmp r0, #0 + bne _0234EDDC + ldrb r0, [r6, #3] + cmp r0, #0xd6 + moveq r0, #1 + movne r0, #0 + tst r0, #0xff + beq _0234EDE4 +_0234EDDC: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0234EDE4: + ldr r0, [r7, #0x88] + add r1, r7, #4 + add r2, r1, r0, lsl #5 + str r6, [r2, #0x1c] + str r5, [r1, r0, lsl #5] + ldr r0, [r7, #0x88] + mov r1, #0 + add r0, r7, r0 + strb r1, [r0, #0x84] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234ED30 + + arm_func_start ov29_0234EE10 +ov29_0234EE10: ; 0x0234EE10 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x98 + mov r7, r0 + mov r6, r1 + mov r4, #0 + bl ov29_0234DD90 + mov r3, #1 + ldr r1, [r7, #0xb4] + rsb r0, r3, #0x3e8 + strb r3, [r1, #0x161] + ldr ip, [r7, #0xb4] + ldrsh r2, [ip, #0x12] + ldrsh r1, [ip, #0x16] + add r1, r2, r1 + cmp r1, r0 + movgt r1, r0 + strh r1, [ip, #0x10] + bl ov29_0234EBCC + mov r1, #1 + add r0, sp, #0xc + mov r3, r1 + mov r2, #0 + str r1, [sp] + bl ov29_0234EA18 + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + add r0, sp, #0xc + mov r1, r7 + rsb r2, r2, #0x3e8 + mov r3, #0 + bl ov29_0234EB28 + cmp r0, #0 + blt _0234EEAC + add r2, sp, #0x10 + add r0, r2, r0, lsl #5 + mov r1, r6 + mov r2, #0x4e + bl ov29_0234EBAC +_0234EEAC: + mov r2, #0 + add r0, sp, #0xc + mov r3, r2 + mov r1, #2 + bl ov31_02388114 + ldr r1, _0234EF20 ; =0x023533B0 + str r0, [sp, #8] + bl ov31_02388444 + ldr r0, [sp, #8] + bl ov31_02388534 + ldr r0, [sp, #8] + bl ov31_023886D4 + cmp r0, #1 + moveq r4, #1 + beq _0234EEFC + cmp r0, #3 + bne _0234EEFC + ldr r0, [sp, #8] + bl ov31_023886DC + mov r5, r0 +_0234EEFC: + add r0, sp, #8 + bl ov31_02388714 + bl ov29_0234DDB0 + cmp r4, #0 + movne r0, #0 + addeq r0, sp, #0x2c + ldreq r0, [r0, r5, lsl #5] + add sp, sp, #0x98 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0234EF20: .word 0x023533B0 + arm_func_end ov29_0234EE10 + + arm_func_start ov29_0234EF24 +ov29_0234EF24: ; 0x0234EF24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x98 + mov r6, #0 + mov sl, r0 + mov sb, r1 + bl ov29_0234DD90 + add r0, sp, #0xc + mov r1, r6 + bl ov29_0234E9E8 + mov r7, r6 + mov r5, #1 + mov r4, r6 + add fp, sp, #0xc + b _0234EF7C +_0234EF5C: + str r5, [sp] + str r4, [sp, #4] + ldr r1, [sl, r7, lsl #2] + mov r0, fp + mov r2, r7 + mov r3, r4 + bl ov29_0234EB28 + add r7, r7, #1 +_0234EF7C: + cmp r7, sb + blt _0234EF5C + mov r2, #0 + add r0, sp, #0xc + mov r3, r2 + mov r1, #2 + bl ov31_02388114 + ldr r1, _0234F004 ; =0x023533B0 + str r0, [sp, #8] + bl ov31_02388444 + ldr r0, [sp, #8] + bl ov31_02388534 + ldr r0, [sp, #8] + bl ov31_023886D4 + cmp r0, #1 + moveq r6, #1 + beq _0234EFD4 + cmp r0, #3 + bne _0234EFD4 + ldr r0, [sp, #8] + bl ov31_023886DC + mov r8, r0 +_0234EFD4: + add r0, sp, #8 + bl ov31_02388714 + bl ov29_0234DDB0 + mov r0, #0xa + mov r1, #0x62 + bl ov29_022EA370 + cmp r6, #0 + movne r0, #0 + addeq r0, sp, #0x2c + ldreq r0, [r0, r8, lsl #5] + add sp, sp, #0x98 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234F004: .word 0x023533B0 + arm_func_end ov29_0234EF24 + + arm_func_start ov29_0234F008 +ov29_0234F008: ; 0x0234F008 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + mov r4, #0 + mov r7, r0 + mov r6, r1 + mov r1, r4 + mov r0, #8 + mov r5, r2 + bl ov29_022EA428 + ldr r0, _0234F1D8 ; =0x0235352C + ldr r0, [r0] + ldr r0, [r0, #0x24] + bl sub_0200B3D4 + mov r0, #0xe + bl AdvanceFrame + b _0234F1A0 +_0234F048: + mov r0, #1 + bl ov29_022E8834 + bl ov29_022E8768 + mov r8, #0xe + b _0234F064 +_0234F05C: + mov r0, r8 + bl AdvanceFrame +_0234F064: + bl ov29_022E8848 + cmp r0, #0 + beq _0234F05C + mov r1, r7 + mov r3, r6 + mov r0, #2 + mov r2, #0 + bl ShowKeyboard + mov r0, #0 + bl ov29_022E8834 + mov r8, #0xe +_0234F090: + bl GetKeyboardStatus + cmp r0, #3 + bne _0234F0C0 + mov r0, r7 + mov r1, #0xa + bl MemZero + bl GetKeyboardStringResult + mov r1, r0 + mov r0, r7 + mov r2, #0xa + bl StrncpySimple + b _0234F0CC +_0234F0C0: + mov r0, r8 + bl AdvanceFrame + b _0234F090 +_0234F0CC: + mov r0, #1 + bl ov29_022E87FC + bl ov29_022E8708 + mov r8, #0xe + b _0234F0E8 +_0234F0E0: + mov r0, r8 + bl AdvanceFrame +_0234F0E8: + bl ov29_022E8810 + cmp r0, #0 + beq _0234F0E0 + mov r8, #0xe +_0234F0F8: + bl sub_02037468 + cmp r0, #0 + bne _0234F110 + mov r0, r8 + bl AdvanceFrame + b _0234F0F8 +_0234F110: + mov r0, #0xe + bl AdvanceFrame + mov r0, #0xe + bl AdvanceFrame + mov r0, #0 + bl ov29_022E87FC + mov r8, #0xe +_0234F12C: + bl ov29_022E87DC + cmp r0, #0 + bne _0234F144 + mov r0, r8 + bl AdvanceFrame + b _0234F12C +_0234F144: + add r0, sp, #0 + mov r1, #0x40 + bl MemZero + add r0, sp, #0 + mov r1, r7 + mov r2, #0xa + bl StrncpySimpleNoPadSafe + add r0, sp, #0 + bl sub_0203909C + mov r8, #0xe +_0234F16C: + mov r0, r8 + bl AdvanceFrame + bl sub_0203931C + cmp r0, #0 + moveq r4, #1 + beq _0234F18C + cmp r0, #1 + bne _0234F16C +_0234F18C: + bl sub_02039218 + cmp r0, #0 + beq _0234F18C + mov r0, #0xe + bl AdvanceFrame +_0234F1A0: + cmp r4, #0 + beq _0234F048 + mov r0, #0xe + bl AdvanceFrame + mov r0, #0xe + bl AdvanceFrame + cmp r5, #0 + beq _0234F1CC + mov r0, #0 + mov r1, r0 + bl ov29_022EA428 +_0234F1CC: + mov r0, #1 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0234F1D8: .word 0x0235352C + arm_func_end ov29_0234F008 + + arm_func_start ov29_0234F1DC +ov29_0234F1DC: ; 0x0234F1DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _0234F214 ; =0x023533D0 + mov r4, r1 + bl sub_020348E4 + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + mov r2, #0 + bl ov29_0234F2CC + ldr r1, _0234F218 ; =0x02353834 + str r0, [r1] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234F214: .word 0x023533D0 +_0234F218: .word 0x02353834 + arm_func_end ov29_0234F1DC + + arm_func_start ov29_0234F21C +ov29_0234F21C: ; 0x0234F21C + stmdb sp!, {r3, lr} + ldr r0, _0234F244 ; =0x02353834 + ldr r0, [r0] + bl ov29_0234F304 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl ov29_0234F77C + mov r0, #4 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234F244: .word 0x02353834 + arm_func_end ov29_0234F21C + + arm_func_start ov29_0234F248 +ov29_0234F248: ; 0x0234F248 + ldr ip, _0234F254 ; =ov29_0234F3F4 + ldr r0, _0234F258 ; =0x02353834 + bx ip + .align 2, 0 +_0234F254: .word ov29_0234F3F4 +_0234F258: .word 0x02353834 + arm_func_end ov29_0234F248 + + arm_func_start ov29_0234F25C +ov29_0234F25C: ; 0x0234F25C + stmdb sp!, {r3, lr} + mov r2, #1 + bl ov29_0234F2CC + ldr r1, _0234F274 ; =0x02353834 + str r0, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234F274: .word 0x02353834 + arm_func_end ov29_0234F25C + + arm_func_start ov29_0234F278 +ov29_0234F278: ; 0x0234F278 + ldr r0, _0234F288 ; =0x02353834 + ldr ip, _0234F28C ; =ov29_0234F304 + ldr r0, [r0, #4] + bx ip + .align 2, 0 +_0234F288: .word 0x02353834 +_0234F28C: .word ov29_0234F304 + arm_func_end ov29_0234F278 + + arm_func_start ov29_0234F290 +ov29_0234F290: ; 0x0234F290 + stmdb sp!, {r3, lr} + ldr r0, _0234F2B4 ; =0x02353834 + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0203083C + ldmia sp!, {r3, pc} + .align 2, 0 +_0234F2B4: .word 0x02353834 + arm_func_end ov29_0234F290 + + arm_func_start ov29_0234F2B8 +ov29_0234F2B8: ; 0x0234F2B8 + ldr ip, _0234F2C4 ; =ov29_0234F3F4 + ldr r0, _0234F2C8 ; =0x02353838 + bx ip + .align 2, 0 +_0234F2C4: .word ov29_0234F3F4 +_0234F2C8: .word 0x02353838 + arm_func_end ov29_0234F2B8 + + arm_func_start ov29_0234F2CC +ov29_0234F2CC: ; 0x0234F2CC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r0, #0xc + mov r1, #8 + mov r4, r2 + bl MemAlloc + strb r6, [r0] + strb r5, [r0, #1] + mvn r1, #1 + strb r1, [r0, #2] + mov r1, #0 + stmib r0, {r1, r4} + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov29_0234F2CC + + arm_func_start ov29_0234F304 +ov29_0234F304: ; 0x0234F304 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xa4 + mov r4, r0 + ldr r0, [r4, #4] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0234F3D4 +_0234F320: ; jump table + b _0234F334 ; case 0 + b _0234F398 ; case 1 + b _0234F3CC ; case 2 + b _0234F3D4 ; case 3 + b _0234F3D4 ; case 4 +_0234F334: + ldr r0, _0234F3E0 ; =0x000008DD + mov r1, #0x10 + str r1, [sp, #0x18] + strh r0, [sp, #0x14] + ldr r0, [r4, #8] + cmp r0, #0 + movne r1, #4 + strne r1, [r4, #4] + ldrne r0, _0234F3E4 ; =0x023533E0 + movne r1, #0x800 + bne _0234F374 + ldr r0, [r4, #4] + ldr r1, _0234F3E8 ; =0x00001813 + add r0, r0, #1 + str r0, [r4, #4] + ldr r0, _0234F3EC ; =0x023533C0 +_0234F374: + str r4, [sp] + mov ip, #0 + str ip, [sp, #4] + ldr r3, _0234F3F0 ; =ov29_0234F430 + add r2, sp, #0xc + str ip, [sp, #8] + bl sub_020305E4 + strb r0, [r4, #2] + b _0234F3D4 +_0234F398: + ldrsb r0, [r4, #2] + bl sub_020282F4 + add r0, r0, #5 + cmp r0, #1 + bhi _0234F3D4 + ldrsb r0, [r4, #2] + bl sub_020308A0 + mvn r0, #1 + strb r0, [r4, #2] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0234F3D4 +_0234F3CC: + mov r0, #1 + b _0234F3D8 +_0234F3D4: + mov r0, #0 +_0234F3D8: + add sp, sp, #0xa4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0234F3E0: .word 0x000008DD +_0234F3E4: .word 0x023533E0 +_0234F3E8: .word 0x00001813 +_0234F3EC: .word 0x023533C0 +_0234F3F0: .word ov29_0234F430 + arm_func_end ov29_0234F304 + + arm_func_start ov29_0234F3F4 +ov29_0234F3F4: ; 0x0234F3F4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldrsb r0, [r0, #2] + mvn r1, #1 + cmp r0, r1 + beq _0234F41C + bl sub_020308A0 +_0234F41C: + ldr r0, [r4] + bl MemFree + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end ov29_0234F3F4 + + arm_func_start ov29_0234F430 +ov29_0234F430: ; 0x0234F430 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xbc + mov r4, r1 + ldrb r1, [r4] + mov r5, r0 + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0234F718 +_0234F450: ; jump table + b _0234F718 ; case 0 + b _0234F508 ; case 1 + b _0234F460 ; case 2 + b _0234F6F8 ; case 3 +_0234F460: + add r0, sp, #4 + bl sub_0204F1B4 + ldrsb r0, [sp, #4] + bl sub_0205B77C + mov r6, r0 + ldr r3, _0234F764 ; =0x023533F0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + ldrb r0, [r4, #1] + bl DungeonGoesUp + cmp r0, #0 + movne r2, #1 + ldrb r1, [r6, #5] + mvneq r2, #0 + add r4, sp, #8 + mul r2, r1, r2 + str r2, [sp, #0x2c] + ldr r2, _0234F768 ; =0x023533F8 + add r0, sp, #0x58 + mov r1, #0x64 + mov r3, #0 + str r4, [sp] + bl PreprocessString + add r3, sp, #0x58 + mov r0, r5 + mov r1, #0x15 + mov r2, #0x13 + bl sub_02026214 + mov r2, #0 + add r0, sp, #0x58 + mov r3, r2 + mov r1, #0x64 + str r2, [sp] + bl sub_02061DC8 + add r3, sp, #0x58 + mov r0, r5 + mov r1, #0x3c + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F508: + ldrb r0, [r4, #1] + bl DungeonRequestsDoneWrapper + cmp r0, #0 + bne _0234F598 + ldrb r0, [r4, #1] + cmp r0, #0x49 + blo _0234F578 + cmp r0, #0x56 + bhi _0234F578 + ldr r0, _0234F76C ; =0x02353538 + ldr r0, [r0] + add r0, r0, #0x700 + ldrsh r0, [r0, #0x4c] + bl GetDungeonMode + cmp r0, #1 + beq _0234F578 + ldrb r0, [r4, #1] + add r0, r0, #0x278 + add r0, r0, #0x800 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromMessageId + mov r3, r0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F578: + ldr r0, _0234F770 ; =0x000008DE + bl StringFromMessageId + mov r3, r0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F598: + mov sb, #0 + mov r8, sb + mov r7, #0x13 + mvn r6, #0 + add fp, sp, #8 +_0234F5AC: + mov r0, r8, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov sl, r0 + ldrb r1, [sl, #4] + ldrb r0, [r4, #1] + cmp r1, r0 + bne _0234F6BC + ldrb r1, [sl] + cmp r1, #0 + cmpne r1, #4 + cmpne r1, #6 + beq _0234F6BC + ldrb r0, [sl, #1] + cmp r0, #0xc + moveq sb, #1 + beq _0234F6BC + cmp r1, #7 + mov r0, r5 + mov r1, #0xa + mov r2, r7 + bne _0234F610 + ldr r3, _0234F774 ; =0x02353404 + bl sub_02026214 + b _0234F618 +_0234F610: + ldr r3, _0234F764 ; =0x023533F0 + bl sub_02026214 +_0234F618: + ldrb r1, [sl, #1] + cmp r1, #3 + ldreqb r0, [sl, #2] + cmpeq r0, #3 + beq _0234F694 + cmp r1, #6 + ldreqb r0, [sl, #2] + cmpeq r0, #4 + beq _0234F694 + cmp r1, #8 + cmpne r1, #5 + beq _0234F694 + ldrb r0, [r4, #1] + bl DungeonGoesUp + cmp r0, #0 + movne r3, #1 + ldrb r2, [sl, #5] + moveq r3, r6 + add r0, sp, #0x58 + mul r3, r2, r3 + str r3, [sp, #0x2c] + ldr r2, _0234F768 ; =0x023533F8 + mov r1, #0x64 + mov r3, #0 + str fp, [sp] + bl PreprocessString + mov r0, r5 + mov r1, #0x15 + mov r2, r7 + add r3, sp, #0x58 + bl sub_02026214 +_0234F694: + mov r2, sl + add r0, sp, #0x58 + mov r1, #0x64 + bl sub_02061F44 + mov r0, r5 + mov r1, #0x3c + mov r2, r7 + add r3, sp, #0x58 + bl sub_02026214 + add r7, r7, #0xe +_0234F6BC: + add r8, r8, #1 + cmp r8, #8 + blt _0234F5AC + cmp sb, #0 + beq _0234F75C + cmp r7, #0x13 + bne _0234F75C + ldr r0, _0234F770 ; =0x000008DE + bl StringFromMessageId + mov r3, r0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F6F8: + ldr r0, _0234F770 ; =0x000008DE + bl StringFromMessageId + mov r3, r0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F718: + add r0, sp, #6 + bl sub_0204F10C + cmp r0, #0 + beq _0234F748 + ldrsh r0, [sp, #6] + bl sub_0204E114 + mov r3, r0 + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 + b _0234F75C +_0234F748: + ldr r3, _0234F778 ; =0x0235340C + mov r0, r5 + mov r1, #0xa + mov r2, #0x13 + bl sub_02026214 +_0234F75C: + add sp, sp, #0xbc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234F764: .word 0x023533F0 +_0234F768: .word 0x023533F8 +_0234F76C: .word 0x02353538 +_0234F770: .word 0x000008DE +_0234F774: .word 0x02353404 +_0234F778: .word 0x0235340C + arm_func_end ov29_0234F430 + + arm_func_start ov29_0234F77C +ov29_0234F77C: ; 0x0234F77C + stmdb sp!, {r3, lr} + ldr r0, _0234F7B8 ; =0x0235342C + bl sub_020348E4 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x10 + mov r1, #8 + bl MemAlloc + ldr r1, _0234F7BC ; =0x0235383C + mov r2, #0 + str r0, [r1, #4] + str r2, [r0, #0xc] + mov r0, #9 + str r0, [r1, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234F7B8: .word 0x0235342C +_0234F7BC: .word 0x0235383C + arm_func_end ov29_0234F77C + + arm_func_start ov29_0234F7C0 +ov29_0234F7C0: ; 0x0234F7C0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x98 + ldr r0, _0234F9C8 ; =0x0235383C + ldr r2, [r0, #4] + ldr r1, [r2, #0xc] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _0234F9BC +_0234F7E0: ; jump table + b _0234F7F0 ; case 0 + b _0234F8A0 ; case 1 + b _0234F8E8 ; case 2 + b _0234F9BC ; case 3 +_0234F7F0: + mov r3, #0 + mov r2, r3 +_0234F7F8: + ldr r1, [r0, #4] + add r1, r1, r3 + add r3, r3, #1 + strb r2, [r1, #1] + cmp r3, #8 + blt _0234F7F8 + mov r0, #0x1d + bl GetPerformanceFlagWithChecks + cmp r0, #0 + ldreq r4, _0234F9CC ; =0x0235343C + beq _0234F840 + ldr r4, _0234F9D0 ; =0x02353474 + bl ov29_023361D4 + cmp r0, #0 + ldrne r0, _0234F9C8 ; =0x0235383C + movne r1, #3 + ldrne r0, [r0, #4] + strneb r1, [r0, #6] +_0234F840: + ldr r1, _0234F9C8 ; =0x0235383C + mov r0, #1 + ldr r1, [r1, #4] + add r1, r1, #1 + str r1, [sp, #0x60] + bl Arm9LoadUnkFieldNa0x2029EC8 + str r0, [sp] + ldr lr, _0234F9D4 ; =0x000008B9 + mov ip, #0x10 + ldr r0, _0234F9D8 ; =0x0235341C + ldr r1, _0234F9DC ; =0x00001A33 + add r2, sp, #0 + mov r3, r4 + strh lr, [sp, #8] + str ip, [sp, #0xc] + bl sub_0202A5CC + ldr r1, _0234F9C8 ; =0x0235383C + ldr r2, [r1, #4] + strb r0, [r2] + ldr r1, [r1, #4] + ldr r0, [r1, #0xc] + add r0, r0, #1 + str r0, [r1, #0xc] + b _0234F9BC +_0234F8A0: + ldrsb r0, [r2] + bl sub_0202AB40 + cmp r0, #0 + beq _0234F8D0 + ldr r0, _0234F9C8 ; =0x0235383C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl sub_0202AB80 + and r1, r0, #0xff + mov r0, #1 + bl Arm9StoreUnkFieldNa0x2029ED8 + b _0234F9BC +_0234F8D0: + ldr r0, _0234F9C8 ; =0x0235383C + ldr r1, [r0, #4] + ldr r0, [r1, #0xc] + add r0, r0, #1 + str r0, [r1, #0xc] + b _0234F9BC +_0234F8E8: + add r1, r1, #1 + str r1, [r2, #0xc] + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl sub_0202ABB0 + ldr r1, _0234F9C8 ; =0x0235383C + cmp r0, #8 + str r0, [r1, #8] + addls pc, pc, r0, lsl #2 + b _0234F9B4 +_0234F910: ; jump table + b _0234F934 ; case 0 + b _0234F940 ; case 1 + b _0234F94C ; case 2 + b _0234F95C ; case 3 + b _0234F96C ; case 4 + b _0234F988 ; case 5 + b _0234F990 ; case 6 + b _0234F998 ; case 7 + b _0234F9A4 ; case 8 +_0234F934: + ldr r0, _0234F9E0 ; =ov29_0234F77C + bl ov30_023833D8 + b _0234F9B4 +_0234F940: + ldr r0, _0234F9E0 ; =ov29_0234F77C + bl ov30_02383434 + b _0234F9B4 +_0234F94C: + mov r0, #2 + str r0, [r1] + mov r0, #4 + b _0234F9C0 +_0234F95C: + mov r0, #3 + str r0, [r1] + mov r0, #4 + b _0234F9C0 +_0234F96C: + ldr r0, _0234F9E4 ; =0x02353538 + ldr r1, [r0] + add r0, r1, #0x700 + ldrsb r0, [r0, #0x98] + ldrb r1, [r1, #0x748] + bl ov29_0234F1DC + b _0234F9B4 +_0234F988: + bl ov31_02388E88 + b _0234F9B4 +_0234F990: + bl ov31_0238941C + b _0234F9B4 +_0234F998: + mov r0, #7 + str r0, [r1] + b _0234F9B4 +_0234F9A4: + bl ov30_02382820 + ldr r0, _0234F9C8 ; =0x0235383C + mov r1, #8 + str r1, [r0] +_0234F9B4: + mov r0, #3 + b _0234F9C0 +_0234F9BC: + mov r0, #1 +_0234F9C0: + add sp, sp, #0x98 + ldmia sp!, {r4, pc} + .align 2, 0 +_0234F9C8: .word 0x0235383C +_0234F9CC: .word 0x0235343C +_0234F9D0: .word 0x02353474 +_0234F9D4: .word 0x000008B9 +_0234F9D8: .word 0x0235341C +_0234F9DC: .word 0x00001A33 +_0234F9E0: .word ov29_0234F77C +_0234F9E4: .word 0x02353538 + arm_func_end ov29_0234F7C0 + + arm_func_start ov29_0234F9E8 +ov29_0234F9E8: ; 0x0234F9E8 + stmdb sp!, {r3, lr} + ldr r0, _0234FA20 ; =0x0235383C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl sub_0202AABC + ldr r0, _0234FA20 ; =0x0235383C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0234FA20 ; =0x0235383C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0234FA20: .word 0x0235383C + arm_func_end ov29_0234F9E8 + + arm_func_start ov29_0234FA24 +ov29_0234FA24: ; 0x0234FA24 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _0234FAE4 ; =0x0235383C + mov r1, #9 + str r1, [r0] + bl ov29_0234F77C + mov r0, #0 + ldr r5, _0234FAE8 ; =0x0238280C + mov r7, #9 + ldr r4, _0234FAE4 ; =0x0235383C + strh r0, [r5] + mov sb, r0 + mov fp, #1 + mov r8, r0 + mov r6, r7 + mov sl, #0x62 +_0234FA60: + mov r0, sl + bl AdvanceFrame + ldrh r0, [r5] + cmp r0, #0 + beq _0234FA8C + ldrh r1, [r5] + mov r0, sb + mov r2, fp + bl DisplayMessage + strh r8, [r5] + bl ov29_0234F77C +_0234FA8C: + ldr r0, [r4] + cmp r0, #8 + beq _0234FADC + cmp r0, #3 + bne _0234FAB8 + mov r0, #0 + mov r1, r0 + bl OpenMessageLog + bl ov29_0234F77C + str r7, [r4] + b _0234FA60 +_0234FAB8: + cmp r0, #2 + bne _0234FA60 + mov r0, #1 + bl ov29_022F0C98 + mov r0, #0x62 + bl AdvanceFrame + bl ov29_0234F77C + str r6, [r4] + b _0234FA60 +_0234FADC: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0234FAE4: .word 0x0235383C +_0234FAE8: .word 0x0238280C + arm_func_end ov29_0234FA24 + + arm_func_start ov29_0234FAEC +ov29_0234FAEC: ; 0x0234FAEC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov29_0234DDA0 + cmp r0, #0 + bne _0234FB30 + bl ov29_0234DD90 + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl ov31_0238647C + mov r4, r0 + bl ov29_0234DDB0 + b _0234FB48 +_0234FB30: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl ov31_0238647C + mov r4, r0 +_0234FB48: + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov29_0234FAEC + + arm_func_start ov29_0234FB50 +ov29_0234FB50: ; 0x0234FB50 + ldr ip, _0234FB5C ; =ov29_02300818 + mov r1, #1 + bx ip + .align 2, 0 +_0234FB5C: .word ov29_02300818 + arm_func_end ov29_0234FB50 + + arm_func_start ov29_0234FB60 +ov29_0234FB60: ; 0x0234FB60 + stmdb sp!, {r4, lr} + movs r4, r0 + moveq r0, #0 + beq _0234FB84 + ldr r0, [r4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff +_0234FB84: + cmp r0, #0 + beq _0234FBC4 + ldr r0, [r4, #0xb4] + ldrb r1, [r0, #7] + cmp r1, #0 + ldreqb r1, [r0, #6] + cmpeq r1, #0 + bne _0234FBC4 + bl IsExperienceLocked + cmp r0, #0 + bne _0234FBC4 + mov r0, r4 + mov r1, #1 + bl ov29_02300818 + cmp r0, #0 + beq _0234FBCC +_0234FBC4: + mov r0, #0 + ldmia sp!, {r4, pc} +_0234FBCC: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end ov29_0234FB60 + + arm_func_start ov29_0234FBD4 +ov29_0234FBD4: ; 0x0234FBD4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + ldr r4, _0234FC18 ; =0x02353538 + b _0234FC08 +_0234FBE4: + ldr r0, [r4] + add r0, r0, r5, lsl #2 + add r0, r0, #0x12000 + ldr r0, [r0, #0xb28] + bl ov29_0234FB60 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + add r5, r5, #1 +_0234FC08: + cmp r5, #4 + blt _0234FBE4 + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0234FC18: .word 0x02353538 + arm_func_end ov29_0234FBD4 + + arm_func_start ov29_0234FC1C +ov29_0234FC1C: ; 0x0234FC1C + stmdb sp!, {r4, lr} + ldr r1, _0234FC4C ; =0x02353848 + mov r4, r0 + ldr r0, [r1] + ldrh r0, [r0, #2] + bl StringFromMessageId + mov r3, r0 + mov r0, r4 + mov r1, #4 + mov r2, #0 + bl sub_02026214 + ldmia sp!, {r4, pc} + .align 2, 0 +_0234FC4C: .word 0x02353848 + arm_func_end ov29_0234FC1C + + arm_func_start ov29_0234FC50 +ov29_0234FC50: ; 0x0234FC50 + stmdb sp!, {r4, lr} + ldr r1, _0234FC9C ; =0x02353848 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #4 + mov r1, #8 + bl MemAlloc + ldr r2, _0234FC9C ; =0x02353848 + ldr r1, _0234FCA0 ; =ov29_0234FC1C + str r0, [r2] + strh r4, [r0, #2] + ldr r0, _0234FCA4 ; =0x023534B4 + bl sub_0202F8C4 + ldr r1, _0234FC9C ; =0x02353848 + ldr r1, [r1] + strb r0, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_0234FC9C: .word 0x02353848 +_0234FCA0: .word ov29_0234FC1C +_0234FCA4: .word 0x023534B4 + arm_func_end ov29_0234FC50 + + arm_func_start ov29_0234FCA8 +ov29_0234FCA8: ; 0x0234FCA8 + stmdb sp!, {r3, lr} + ldr r0, _0234FCF8 ; =0x02353848 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl sub_0202F954 + ldr r0, _0234FCF8 ; =0x02353848 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F8FC + ldr r0, _0234FCF8 ; =0x02353848 + ldr r0, [r0] + bl MemFree + ldr r0, _0234FCF8 ; =0x02353848 + mov r1, #0 + str r1, [r0] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0234FCF8: .word 0x02353848 + arm_func_end ov29_0234FCA8 + ; 0x0234FCFC + + .byte 0x00, 0x00, 0x00, 0x00, 0x40, 0xFC, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF + .byte 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x64, 0x69, 0x63, 0x20, 0x66, 0x69, 0x6C, 0x65 + .byte 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00, 0x46, 0x4F, 0x4E, 0x54 + .byte 0x2F, 0x74, 0x65, 0x5F, 0x64, 0x69, 0x63, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x46, 0x4F, 0x4E, 0x54 + .byte 0x2F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x6B, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0xFF + .byte 0x08, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x4F, 0x4E, 0x54 + .byte 0x2F, 0x74, 0x65, 0x73, 0x74, 0x5F, 0x73, 0x6B, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00 + .byte 0x46, 0x4F, 0x4E, 0x54, 0x2F, 0x74, 0x65, 0x5F, 0x73, 0x64, 0x69, 0x63, 0x2E, 0x62, 0x69, 0x6E + .byte 0x00, 0x00, 0x00, 0x00, 0xF9, 0x01, 0xEC, 0x01, 0xED, 0x01, 0x88, 0x00, 0xE0, 0x01, 0xE8, 0x01 + .byte 0xF3, 0x01, 0x88, 0x00, 0xEA, 0x01, 0xF7, 0x01, 0xEE, 0x01, 0x88, 0x00, 0xEB, 0x01, 0xF2, 0x01 + .byte 0xE2, 0x01, 0x88, 0x00, 0xE3, 0x01, 0xE4, 0x01, 0xE5, 0x01, 0xF5, 0x01, 0xE9, 0x01, 0xF4, 0x01 + .byte 0xF6, 0x01, 0x88, 0x00, 0xEF, 0x01, 0xF0, 0x01, 0xF1, 0x01, 0x88, 0x00, 0xD8, 0x01, 0xD9, 0x01 + .byte 0xDA, 0x01, 0x88, 0x00, 0xDD, 0x01, 0xDE, 0x01, 0xDF, 0x01, 0xE1, 0x01, 0xDB, 0x01, 0xDC, 0x01 + .byte 0xE6, 0x01, 0xE7, 0x01, 0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x00, 0x01 + .byte 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 + .byte 0x19, 0x00, 0x00, 0x08, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 + .byte 0x6C, 0x01, 0x6F, 0x01, 0x72, 0x01, 0x75, 0x01, 0x78, 0x01, 0x7B, 0x01, 0x7E, 0x01, 0x81, 0x01 + .byte 0x84, 0x01, 0x87, 0x01, 0x8A, 0x01, 0x8D, 0x01, 0x00, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 + .byte 0x48, 0x49, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x4C, 0x4D, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x06 + .byte 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x29, 0x02, 0x00, 0x0B + .byte 0x29, 0x02, 0x00, 0x0C, 0x29, 0x02, 0x00, 0x0D, 0x29, 0x02, 0x00, 0x0E, 0x84, 0x04, 0x00, 0x01 + .byte 0x85, 0x04, 0x00, 0x09, 0x86, 0x04, 0x00, 0x04, 0x87, 0x04, 0x00, 0x05, 0x88, 0x04, 0x00, 0x05 + .byte 0x83, 0x04, 0x00, 0x09, 0x5E, 0x00, 0x00, 0x09, 0x35, 0x01, 0x00, 0x10, 0xE1, 0x01, 0x00, 0x11 + .byte 0x59, 0x01, 0x00, 0x12, 0xF9, 0x01, 0x00, 0x13, 0x40, 0x01, 0x00, 0x14, 0x29, 0x00, 0x01, 0x06 + .byte 0x6D, 0x00, 0x02, 0x06, 0x9F, 0x01, 0x04, 0x06, 0x52, 0x01, 0x05, 0x06, 0x51, 0x01, 0x06, 0x06 + .byte 0xE4, 0x01, 0x07, 0x06, 0x8D, 0x00, 0x08, 0x06, 0x8B, 0x00, 0x09, 0x06, 0x07, 0x02, 0x0A, 0x06 + .byte 0x4A, 0x01, 0x0B, 0x06, 0x28, 0x02, 0x0C, 0x06, 0x0D, 0x02, 0x0C, 0x06, 0x28, 0x00, 0x0D, 0x06 + .byte 0xE3, 0x01, 0x0E, 0x06, 0x18, 0x03, 0x0F, 0x06, 0x71, 0x01, 0x10, 0x06, 0xDE, 0x03, 0x11, 0x06 + .byte 0xEF, 0x01, 0x12, 0x06, 0x42, 0x01, 0x13, 0x06, 0x33, 0x00, 0x14, 0x06, 0x32, 0x00, 0x15, 0x06 + .byte 0x08, 0x02, 0x16, 0x06, 0x82, 0x00, 0x17, 0x06, 0x9A, 0x01, 0x18, 0x06, 0x99, 0x01, 0x19, 0x06 + .byte 0x9B, 0x01, 0x1A, 0x06, 0x10, 0x02, 0x1B, 0x06, 0x0E, 0x02, 0x1C, 0x06, 0x15, 0x02, 0x1D, 0x06 + .byte 0x18, 0x00, 0x1F, 0x06, 0xFA, 0x01, 0x20, 0x06, 0xFD, 0x01, 0x21, 0x06, 0x4E, 0x01, 0x22, 0x06 + .byte 0xF6, 0x00, 0x23, 0x06, 0xD7, 0x01, 0x24, 0x06, 0x6A, 0x00, 0x25, 0x06, 0xDF, 0x01, 0x26, 0x06 + .byte 0x0B, 0x02, 0x27, 0x06, 0x19, 0x01, 0x28, 0x06, 0x9E, 0x01, 0x29, 0x06, 0xE6, 0x01, 0x2A, 0x06 + .byte 0x83, 0x04, 0x1E, 0x06, 0x0A, 0x02, 0x31, 0x06, 0x0C, 0x02, 0x32, 0x06, 0xA8, 0x03, 0x33, 0x0A + .byte 0x8E, 0x03, 0x34, 0x0A, 0x2E, 0x04, 0x35, 0x0A, 0x60, 0x00, 0x03, 0x06, 0x9F, 0x01, 0x2B, 0x06 + .byte 0x90, 0x00, 0x2C, 0x06, 0x0F, 0x02, 0x2E, 0x06, 0x11, 0x02, 0x2F, 0x06, 0xA0, 0x01, 0x2D, 0x06 + .byte 0x97, 0x00, 0x30, 0x06, 0xF1, 0x01, 0x36, 0x06, 0x58, 0x00, 0x37, 0x06, 0xF5, 0x01, 0x38, 0x06 + .byte 0xEA, 0x00, 0x39, 0x06, 0x93, 0x01, 0x3A, 0x06, 0xA1, 0x01, 0x3B, 0x06, 0x4A, 0x01, 0x3C, 0x06 + .byte 0x03, 0x02, 0x3D, 0x06, 0x8A, 0x01, 0x3E, 0x06, 0x28, 0x02, 0x3F, 0x06, 0x4E, 0x01, 0x40, 0x06 + .byte 0x4D, 0x01, 0x41, 0x06, 0x4F, 0x04, 0x42, 0x06, 0x18, 0x00, 0x43, 0x06, 0xEE, 0x01, 0x44, 0x06 + .byte 0x59, 0x00, 0x45, 0x06, 0x5D, 0x00, 0x46, 0x06, 0x5D, 0x00, 0x47, 0x06, 0x5D, 0x00, 0x48, 0x06 + .byte 0xC7, 0x01, 0x49, 0x06, 0x06, 0x02, 0x4A, 0x06, 0x43, 0x01, 0x4B, 0x06, 0x74, 0x01, 0x4C, 0x06 + .byte 0xFF, 0x01, 0x4D, 0x06, 0x5F, 0x01, 0x4E, 0x06, 0x9F, 0x01, 0x4F, 0x06, 0x9F, 0x01, 0x50, 0x06 + .byte 0x9F, 0x01, 0x51, 0x06, 0x9F, 0x01, 0x52, 0x06, 0x9F, 0x01, 0x53, 0x06, 0x9F, 0x01, 0x54, 0x06 + .byte 0x9F, 0x01, 0x55, 0x06, 0x28, 0x00, 0x56, 0x0A, 0xE3, 0x01, 0x57, 0x0A, 0x18, 0x03, 0x58, 0x0A + .byte 0x71, 0x01, 0x59, 0x0A, 0xDE, 0x03, 0x5A, 0x0A, 0xEF, 0x01, 0x5B, 0x0A, 0x42, 0x01, 0x5C, 0x0A + .byte 0x33, 0x00, 0x5D, 0x0A, 0x32, 0x00, 0x5E, 0x0A, 0x42, 0x01, 0x5F, 0x0A, 0x43, 0x00, 0x60, 0x0A + .byte 0xA3, 0x03, 0x61, 0x0A, 0x3A, 0x01, 0x62, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x78, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x81, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x12, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x3A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x16, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x2E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x1E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x36, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xB7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x83, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x85, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x87, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x89, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xF4, 0x00, 0x35, 0x02, 0x4C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x68, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x6C, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x70, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x74, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x78, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x7C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x80, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x84, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x84, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x88, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x40, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x44, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x48, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x38, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x3C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x90, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x94, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x98, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x9C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xA0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xAC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xB0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xBC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xC0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xCC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xDC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xE0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xEC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xF0, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xF4, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xF8, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xFC, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x00, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x04, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x08, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x10, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x18, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x1C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x20, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x24, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x28, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x2C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x30, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x34, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x38, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x3C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x18, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x1C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x20, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x24, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD8, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xDC, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xE0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xE4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xE8, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xEC, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xF0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xF4, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xF8, 0xFD, 0x34, 0x02, 0xFC, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x04, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x0C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x14, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x1C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x24, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x2C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x34, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x28, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x2C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x30, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x34, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x44, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x4C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x54, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x5C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x64, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x14, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x6C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x74, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x7C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x84, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x8C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x94, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x9C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xA4, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xAC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xB4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xBC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xC4, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xCC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xD4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xDC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xE4, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xEC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xFC, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x3C, 0x01, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x04, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x0C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x14, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x1C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x24, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x2C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x34, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x3C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x44, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x4C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x54, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x5C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x64, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x6C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x74, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x7C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x84, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x8C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0x94, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0x9C, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xA4, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xAC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xB4, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xBC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xC4, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xCC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xD4, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xDC, 0x02, 0x35, 0x02, 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xE4, 0x02, 0x35, 0x02 + .byte 0x14, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x40, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x44, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x48, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x54, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x58, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x5C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x60, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x64, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x68, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x6C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x70, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x74, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x78, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x4C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x50, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x7C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x50, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x54, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x58, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x60, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x64, 0xFF, 0x34, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x5C, 0xFF, 0x34, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x80, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x84, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x88, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x8C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0x90, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0x94, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x98, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0x9C, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xA0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xA4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xA8, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xAC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xB0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xB4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xB8, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xBC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xC0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xC4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xC8, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xCC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xD0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xD4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xD8, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xDC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xE0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02 + .byte 0xE4, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xE8, 0x00, 0x35, 0x02 + .byte 0xD0, 0xFD, 0x34, 0x02, 0xF4, 0x00, 0x35, 0x02, 0xEC, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02 + .byte 0xF4, 0x00, 0x35, 0x02, 0xF0, 0x00, 0x35, 0x02, 0xD0, 0xFD, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4D, 0x2F, 0x6D, 0x61, 0x6E, 0x70 + .byte 0x75, 0x5F, 0x73, 0x75, 0x2E, 0x73, 0x6D, 0x61, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xA2, 0x01, 0xA3, 0x01, 0xA4, 0x01, 0xA5, 0x01, 0x44, 0x47, 0x5F, 0x56 + .byte 0x52, 0x41, 0x4D, 0x5F, 0x53, 0x50, 0x52, 0x49, 0x54, 0x45, 0x5F, 0x4E, 0x41, 0x4D, 0x45, 0x3A + .byte 0x25, 0x64, 0x0A, 0x00, 0xD0, 0x01, 0x20, 0x00, 0xD1, 0x01, 0x40, 0x00, 0xD2, 0x01, 0x80, 0x00 + .byte 0xD4, 0x01, 0x20, 0x00, 0xD5, 0x01, 0x40, 0x00, 0xD6, 0x01, 0x00, 0x01, 0xDA, 0x01, 0x20, 0x00 + .byte 0xDB, 0x01, 0x20, 0x00, 0xDC, 0x01, 0x20, 0x00, 0xDD, 0x01, 0x20, 0x00, 0xDE, 0x01, 0x80, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x06, 0x03 + .byte 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x11, 0x03, 0x00, 0x3F, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x3F + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x01, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x10, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x01, 0x00, 0x00, 0xEF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xB8, 0x01, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x79, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7A, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7B, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x7C, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x7D, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x7E, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7F, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xBA, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBB, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C + .byte 0x41, 0x4E, 0x43, 0x45, 0x2F, 0x6D, 0x61, 0x70, 0x70, 0x61, 0x5F, 0x74, 0x2E, 0x62, 0x69, 0x6E + .byte 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45 + .byte 0x2F, 0x6D, 0x61, 0x70, 0x70, 0x61, 0x5F, 0x79, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00 + .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45, 0x2F, 0x6D, 0x61, 0x70 + .byte 0x70, 0x61, 0x5F, 0x73, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x00, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14 + .byte 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFC, 0xFF + .byte 0xF8, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xFC, 0xFF + .byte 0xF0, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF + .byte 0xF0, 0xFF, 0xF8, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xD0, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xD1, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xD2, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0xE8, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xE8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD5, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0xD6, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xEA, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xEA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x7C, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0xA8, 0x00, 0x00, 0x00, 0xA9, 0x00, 0x00, 0x00 + .byte 0x02, 0x06, 0x04, 0x00, 0x02, 0x00, 0x04, 0x06, 0x04, 0x00, 0x06, 0x02, 0x04, 0x02, 0x06, 0x00 + .byte 0x06, 0x02, 0x00, 0x04, 0x06, 0x04, 0x02, 0x00, 0x00, 0x04, 0x02, 0x06, 0x00, 0x06, 0x02, 0x04 + .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF + .byte 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00 + .byte 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF + .byte 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x01 + .byte 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00 + .byte 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00 + .byte 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00 + .byte 0x74, 0x19, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1B, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00 + .byte 0x94, 0x1C, 0x35, 0x02, 0x01, 0x00, 0x01, 0x00, 0x00, 0x1B, 0x35, 0x02, 0x01, 0x00, 0xFF, 0xFF + .byte 0x74, 0x19, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1B, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x94, 0x1C, 0x35, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1B, 0x35, 0x02, 0xFF, 0xFF, 0x01, 0x00 + .byte 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00 + .byte 0x02, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFE, 0xFF + .byte 0xFF, 0xFF, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF + .byte 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0xFE, 0xFF + .byte 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFE, 0xFF + .byte 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00 + .byte 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x63, 0x00, 0x63, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00 + .byte 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0xFE, 0xFF, 0x01, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x03, 0x00 + .byte 0x01, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFE, 0xFF + .byte 0xFE, 0xFF, 0x02, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x01, 0x00, 0x01, 0x00, 0xFD, 0xFF + .byte 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0xFF + .byte 0x03, 0x00, 0x01, 0x00, 0xFE, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFE, 0xFF + .byte 0xFD, 0xFF, 0x02, 0x00, 0x02, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFE, 0xFF + .byte 0x03, 0x00, 0x02, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00, 0xFD, 0xFF + .byte 0x03, 0x00, 0x03, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00 + .byte 0xFF, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00 + .byte 0x01, 0x00, 0x04, 0x00, 0xFF, 0xFF, 0x04, 0x00, 0x02, 0x00, 0x04, 0x00, 0xFE, 0xFF, 0x04, 0x00 + .byte 0x03, 0x00, 0x04, 0x00, 0xFD, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x01, 0x00, 0x05, 0x00 + .byte 0xFF, 0xFF, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0xFE, 0xFF, 0x05, 0x00, 0x03, 0x00, 0x05, 0x00 + .byte 0xFD, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0xFC, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00 + .byte 0x01, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0x06, 0x00, 0x02, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0x06, 0x00 + .byte 0x03, 0x00, 0x06, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x04, 0x00, 0x06, 0x00, 0xFC, 0xFF, 0x06, 0x00 + .byte 0x05, 0x00, 0x06, 0x00, 0xFB, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x01, 0x00, 0x07, 0x00 + .byte 0xFF, 0xFF, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00 + .byte 0xFD, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x05, 0x00, 0x07, 0x00 + .byte 0xFB, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x07, 0x00, 0xFA, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00 + .byte 0x01, 0x00, 0x08, 0x00, 0xFF, 0xFF, 0x08, 0x00, 0x02, 0x00, 0x08, 0x00, 0xFE, 0xFF, 0x08, 0x00 + .byte 0x03, 0x00, 0x08, 0x00, 0xFD, 0xFF, 0x08, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFC, 0xFF, 0x08, 0x00 + .byte 0x05, 0x00, 0x08, 0x00, 0xFB, 0xFF, 0x08, 0x00, 0x06, 0x00, 0x08, 0x00, 0xFA, 0xFF, 0x08, 0x00 + .byte 0x07, 0x00, 0x08, 0x00, 0xF9, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x01, 0x00, 0x09, 0x00 + .byte 0xFF, 0xFF, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0xFE, 0xFF, 0x09, 0x00, 0x03, 0x00, 0x09, 0x00 + .byte 0xFD, 0xFF, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0xFC, 0xFF, 0x09, 0x00, 0x05, 0x00, 0x09, 0x00 + .byte 0xFB, 0xFF, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0xFA, 0xFF, 0x09, 0x00, 0x07, 0x00, 0x09, 0x00 + .byte 0xF9, 0xFF, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0xF8, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00 + .byte 0x01, 0x00, 0x0A, 0x00, 0xFF, 0xFF, 0x0A, 0x00, 0x02, 0x00, 0x0A, 0x00, 0xFE, 0xFF, 0x0A, 0x00 + .byte 0x03, 0x00, 0x0A, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x04, 0x00, 0x0A, 0x00, 0xFC, 0xFF, 0x0A, 0x00 + .byte 0x05, 0x00, 0x0A, 0x00, 0xFB, 0xFF, 0x0A, 0x00, 0x06, 0x00, 0x0A, 0x00, 0xFA, 0xFF, 0x0A, 0x00 + .byte 0x07, 0x00, 0x0A, 0x00, 0xF9, 0xFF, 0x0A, 0x00, 0x08, 0x00, 0x0A, 0x00, 0xF8, 0xFF, 0x0A, 0x00 + .byte 0x63, 0x00, 0x63, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x06, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x06, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x07, 0x00 + .byte 0x07, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x07, 0x00 + .byte 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, 0x00, 0x02, 0x00, 0x02, 0x00, 0x07, 0x00 + .byte 0x07, 0x00, 0x01, 0x00, 0x01, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x07, 0x00 + .byte 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x06, 0x00, 0x06, 0x00, 0x08, 0x00, 0x08, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x08, 0x00, 0x08, 0x00, 0x02, 0x00, 0x02, 0x00, 0x08, 0x00, 0x08, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x08, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x07, 0x00, 0x07, 0x00, 0x09, 0x00, 0x09, 0x00, 0x06, 0x00, 0x06, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x09, 0x00, 0x09, 0x00, 0x04, 0x00, 0x04, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 0x09, 0x00, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x01, 0x00, 0x01, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x08, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x07, 0x00 + .byte 0x07, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00 + .byte 0x05, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x04, 0x00, 0x04, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00 + .byte 0x03, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x02, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x0A, 0x00, 0x63, 0x00, 0x63, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0xFF, 0xFF + .byte 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0xFF, 0xFF, 0x04, 0x00, 0x01, 0x00, 0x04, 0x00, 0xFE, 0xFF, 0x04, 0x00, 0x02, 0x00 + .byte 0x04, 0x00, 0xFD, 0xFF, 0x04, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x05, 0x00, 0xFF, 0xFF + .byte 0x05, 0x00, 0x01, 0x00, 0x05, 0x00, 0xFE, 0xFF, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0xFD, 0xFF + .byte 0x05, 0x00, 0x03, 0x00, 0x05, 0x00, 0xFC, 0xFF, 0x05, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0xFF, 0xFF, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0xFE, 0xFF, 0x06, 0x00, 0x02, 0x00 + .byte 0x06, 0x00, 0xFD, 0xFF, 0x06, 0x00, 0x03, 0x00, 0x06, 0x00, 0xFC, 0xFF, 0x06, 0x00, 0x04, 0x00 + .byte 0x06, 0x00, 0xFB, 0xFF, 0x06, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0xFF, 0xFF + .byte 0x07, 0x00, 0x01, 0x00, 0x07, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x02, 0x00, 0x07, 0x00, 0xFD, 0xFF + .byte 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x07, 0x00, 0xFB, 0xFF + .byte 0x07, 0x00, 0x05, 0x00, 0x07, 0x00, 0xFA, 0xFF, 0x07, 0x00, 0x06, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0xFF, 0xFF, 0x08, 0x00, 0x01, 0x00, 0x08, 0x00, 0xFE, 0xFF, 0x08, 0x00, 0x02, 0x00 + .byte 0x08, 0x00, 0xFD, 0xFF, 0x08, 0x00, 0x03, 0x00, 0x08, 0x00, 0xFC, 0xFF, 0x08, 0x00, 0x04, 0x00 + .byte 0x08, 0x00, 0xFB, 0xFF, 0x08, 0x00, 0x05, 0x00, 0x08, 0x00, 0xFA, 0xFF, 0x08, 0x00, 0x06, 0x00 + .byte 0x08, 0x00, 0xF9, 0xFF, 0x08, 0x00, 0x07, 0x00, 0x09, 0x00, 0x00, 0x00, 0x09, 0x00, 0xFF, 0xFF + .byte 0x09, 0x00, 0x01, 0x00, 0x09, 0x00, 0xFE, 0xFF, 0x09, 0x00, 0x02, 0x00, 0x09, 0x00, 0xFD, 0xFF + .byte 0x09, 0x00, 0x03, 0x00, 0x09, 0x00, 0xFC, 0xFF, 0x09, 0x00, 0x04, 0x00, 0x09, 0x00, 0xFB, 0xFF + .byte 0x09, 0x00, 0x05, 0x00, 0x09, 0x00, 0xFA, 0xFF, 0x09, 0x00, 0x06, 0x00, 0x09, 0x00, 0xF9, 0xFF + .byte 0x09, 0x00, 0x07, 0x00, 0x09, 0x00, 0xF8, 0xFF, 0x09, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0xFF, 0xFF, 0x0A, 0x00, 0x01, 0x00, 0x0A, 0x00, 0xFE, 0xFF, 0x0A, 0x00, 0x02, 0x00 + .byte 0x0A, 0x00, 0xFD, 0xFF, 0x0A, 0x00, 0x03, 0x00, 0x0A, 0x00, 0xFC, 0xFF, 0x0A, 0x00, 0x04, 0x00 + .byte 0x0A, 0x00, 0xFB, 0xFF, 0x0A, 0x00, 0x05, 0x00, 0x0A, 0x00, 0xFA, 0xFF, 0x0A, 0x00, 0x06, 0x00 + .byte 0x0A, 0x00, 0xF9, 0xFF, 0x0A, 0x00, 0x07, 0x00, 0x0A, 0x00, 0xF8, 0xFF, 0x0A, 0x00, 0x08, 0x00 + .byte 0x0A, 0x00, 0xF7, 0xFF, 0x0A, 0x00, 0x09, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF + .byte 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x01, 0x00 + .byte 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0x00, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFE, 0xFF + .byte 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0x02, 0x00 + .byte 0xFD, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x01, 0x00, 0x01, 0x00, 0xFD, 0xFF, 0x01, 0x00, 0x03, 0x00 + .byte 0x02, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x01, 0x00 + .byte 0xFE, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0x03, 0x00, 0xFD, 0xFF, 0xFE, 0xFF, 0xFD, 0xFF, 0x02, 0x00 + .byte 0x02, 0x00, 0xFD, 0xFF, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x02, 0x00 + .byte 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0x03, 0x00 + .byte 0xFC, 0xFF, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x04, 0x00 + .byte 0xFC, 0xFF, 0x01, 0x00, 0x04, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00 + .byte 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xFC, 0xFF, 0x01, 0x00, 0x04, 0x00 + .byte 0xFC, 0xFF, 0x02, 0x00, 0x04, 0x00, 0x02, 0x00, 0xFE, 0xFF, 0xFC, 0xFF, 0xFE, 0xFF, 0x04, 0x00 + .byte 0xFC, 0xFF, 0xFE, 0xFF, 0x04, 0x00, 0xFE, 0xFF, 0x02, 0x00, 0xFC, 0xFF, 0x02, 0x00, 0x04, 0x00 + .byte 0xFC, 0xFF, 0x03, 0x00, 0x04, 0x00, 0x03, 0x00, 0xFD, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0x04, 0x00 + .byte 0xFC, 0xFF, 0xFD, 0xFF, 0x04, 0x00, 0xFD, 0xFF, 0x03, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x04, 0x00 + .byte 0xFC, 0xFF, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0x04, 0x00 + .byte 0xFB, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0x00, 0x00, 0x05, 0x00 + .byte 0xFB, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0x05, 0x00 + .byte 0xFB, 0xFF, 0x01, 0x00, 0x05, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFB, 0xFF, 0x01, 0x00, 0x05, 0x00 + .byte 0xFB, 0xFF, 0xFE, 0xFF, 0x05, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0xFE, 0xFF, 0x05, 0x00 + .byte 0xFB, 0xFF, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x02, 0x00, 0xFB, 0xFF, 0x02, 0x00, 0x05, 0x00 + .byte 0xFB, 0xFF, 0xFD, 0xFF, 0x05, 0x00, 0xFD, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0xFD, 0xFF, 0x05, 0x00 + .byte 0xFB, 0xFF, 0x03, 0x00, 0x05, 0x00, 0x03, 0x00, 0x03, 0x00, 0xFB, 0xFF, 0x03, 0x00, 0x05, 0x00 + .byte 0xFB, 0xFF, 0xFC, 0xFF, 0x05, 0x00, 0xFC, 0xFF, 0xFC, 0xFF, 0xFB, 0xFF, 0xFC, 0xFF, 0x05, 0x00 + .byte 0xFB, 0xFF, 0x04, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0xFB, 0xFF, 0x04, 0x00, 0x05, 0x00 + .byte 0xFB, 0xFF, 0xFB, 0xFF, 0x05, 0x00, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0x05, 0x00 + .byte 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00 + .byte 0x00, 0x00, 0x12, 0x00, 0x12, 0x00, 0x31, 0x00, 0x2C, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x8B, 0x08, 0x8C, 0x08, 0x8D, 0x08, 0x8E, 0x08, 0x8F, 0x08, 0x90, 0x08 + .byte 0x91, 0x08, 0x92, 0x08, 0x93, 0x08, 0x94, 0x08, 0x95, 0x08, 0x96, 0x08, 0x97, 0x08, 0x98, 0x08 + .byte 0x99, 0x08, 0x9A, 0x08, 0x9B, 0x08, 0x9C, 0x08, 0x9D, 0x08, 0x9E, 0x08, 0x9F, 0x08, 0xA0, 0x08 + .byte 0xA1, 0x08, 0xA2, 0x08, 0xA3, 0x08, 0xA4, 0x08, 0xA5, 0x08, 0xA6, 0x08, 0xA7, 0x08, 0xA8, 0x08 + .byte 0xA9, 0x08, 0xAA, 0x08, 0x58, 0x00, 0x00, 0x00, 0x87, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x88, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x89, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x8A, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8B, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x8C, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8D, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x8E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x8F, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x90, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x91, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x92, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x93, 0x09, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00 + .byte 0x94, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x95, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x96, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x97, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x98, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x99, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x9A, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9B, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x9C, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9D, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0x9E, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x9F, 0x09, 0x00, 0x00, 0xE7, 0x03, 0x00, 0x00 + .byte 0xA0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xA2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xA4, 0x09, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0xA5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xA6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xA8, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xA9, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xAA, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xAB, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xAC, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xAD, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xAE, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xAF, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xB0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xB2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xB4, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xB6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xB8, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xB9, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xBA, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBB, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xBC, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBD, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xBE, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xBF, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xC0, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC1, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xC2, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC3, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xC4, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC5, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xC6, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xC7, 0x09, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00 + .byte 0xC8, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00 + .byte 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00 + .byte 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00 + .byte 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x00, 0x00 + .byte 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x21, 0x00, 0x00, 0x00 + .byte 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x00, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x00, 0x00 + .byte 0x28, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00 + .byte 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00 + .byte 0x38, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00 + .byte 0x40, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 + .byte 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF + .byte 0x03, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF + .byte 0x05, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF + .byte 0x07, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF + .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x16, 0x02, 0x08, 0x05, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0x43, 0x53, 0x3A + .byte 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01 + .byte 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x01, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00 + .byte 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xDA, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0xDB, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xDC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xDB, 0x01, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xDA, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xDB, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00 + .byte 0xDC, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0xDB, 0x01, 0x00, 0x00 + .byte 0x01, 0x01, 0x00, 0x00, 0x6D, 0x6F, 0x76, 0x65, 0x3A, 0x00, 0x00, 0x00, 0x81, 0x45, 0x81, 0x45 + .byte 0x81, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 + .byte 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 + .byte 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x01, 0x02, 0x04, 0x08 + .byte 0x10, 0x20, 0x40, 0x80, 0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x00, 0x02, 0x00, 0x02, 0x01, 0x02 + .byte 0x01, 0x02, 0x00, 0x02, 0x00, 0x02, 0x01, 0x02, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01 + .byte 0x01, 0x02, 0x00, 0x02, 0x5B, 0x43, 0x53, 0x3A, 0x46, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D + .byte 0x00, 0x00, 0x00, 0x00, 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52 + .byte 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x5B, 0x4B, 0x5D, 0x0A + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x05, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07 + .byte 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07 + .byte 0x07, 0x07, 0x07, 0x05, 0x06, 0x07, 0x07, 0x07, 0x07, 0x0B, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00 + .byte 0x0B, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00 + .byte 0x07, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00 + .byte 0x0A, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00, 0x7B, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00 + .byte 0x12, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x46, 0x4C, 0x56, 0x20, 0x3A, 0x20, 0x25, 0x64 + .byte 0x0A, 0x00, 0x00, 0x00, 0x41, 0x54, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .byte 0x44, 0x45, 0x46, 0x20, 0x3A, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xC4, 0x29, 0x35, 0x02 + .byte 0xC4, 0x29, 0x35, 0x02, 0xEC, 0x29, 0x35, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x01, 0x00, 0x63, 0x00, 0x63, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00 + .byte 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00 + .byte 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0xFF, 0xFF, 0x02, 0x00, 0xFE, 0xFF + .byte 0x01, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF + .byte 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0xFE, 0xFF, 0x02, 0x00 + .byte 0xFF, 0xFF, 0x02, 0x00, 0x63, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0D, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x97, 0x00, 0x02, 0x00, 0x64, 0x00, 0x03, 0x00, 0x3C, 0x00, 0x04, 0x00, 0x4B, 0x00, 0x05, 0x00 + .byte 0x5C, 0x01, 0x06, 0x00, 0x99, 0x00, 0x07, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x9C, 0x00, 0x09, 0x00 + .byte 0x08, 0x00, 0x0A, 0x00, 0xDD, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x19, 0x01, 0x00, 0x00, 0x33, 0x01, 0x00, 0x00 + .byte 0x4C, 0x01, 0x00, 0x00, 0x66, 0x01, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x99, 0x01, 0x00, 0x00 + .byte 0xB3, 0x01, 0x00, 0x00, 0xCC, 0x01, 0x00, 0x00, 0xE6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x18, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xFF + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0xF7, 0xFF, 0xF7, 0xFF + .byte 0xF7, 0xFF, 0xF6, 0xFF, 0xF6, 0xFF, 0xF6, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, 0xF9, 0xFF + .byte 0xF9, 0xFF, 0xF9, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF, 0xFA, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF, 0xFB, 0xFF + .byte 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF + .byte 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00 + .byte 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x06, 0x00, 0x06, 0x00 + .byte 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x09, 0x00 + .byte 0x09, 0x00, 0x09, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00 + .byte 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0E, 0x00 + .byte 0x0E, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x11, 0x00 + .byte 0x11, 0x00, 0x11, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00 + .byte 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x16, 0x00, 0x16, 0x00 + .byte 0x16, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x19, 0x00 + .byte 0x19, 0x00, 0x19, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00 + .byte 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1E, 0x00 + .byte 0x1E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x21, 0x00 + .byte 0x21, 0x00, 0x21, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00 + .byte 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x26, 0x00, 0x26, 0x00 + .byte 0x26, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x29, 0x00 + .byte 0x29, 0x00, 0x29, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00 + .byte 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2E, 0x00 + .byte 0x2E, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x31, 0x00 + .byte 0x31, 0x00, 0x31, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00 + .byte 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x36, 0x00, 0x36, 0x00 + .byte 0x36, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, 0x00 + .byte 0x39, 0x00, 0x39, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00 + .byte 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3E, 0x00 + .byte 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x00, 0x73, 0x74, 0x61, 0x69, 0x72, 0x0A, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xEB, 0x03, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00 + .byte 0x23, 0x00, 0x00, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x32, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0xED, 0x03, 0x00, 0x00, 0x00, 0xD0, 0x00, 0x00 + .byte 0x15, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0xE9, 0x03, 0x00, 0x00 + .byte 0x00, 0xF0, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 + .byte 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x60, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF + .byte 0xA0, 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xFF, 0xA0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00 + .byte 0xA0, 0xFF, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00 + .byte 0x80, 0x00, 0xFF, 0x00, 0xFF, 0x80, 0xC0, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + .byte 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04 + .byte 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0x03, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x60, 0x47, 0x2C, 0x02, 0x57, 0x00, 0x00, 0x00 + .byte 0x34, 0x4A, 0x2C, 0x02, 0x58, 0x00, 0x00, 0x00, 0xE4, 0x49, 0x2C, 0x02, 0x59, 0x00, 0x00, 0x00 + .byte 0xF8, 0x49, 0x2C, 0x02, 0x5A, 0x00, 0x00, 0x00, 0x0C, 0x4A, 0x2C, 0x02, 0x5B, 0x00, 0x00, 0x00 + .byte 0x48, 0x4A, 0x2C, 0x02, 0x5C, 0x00, 0x00, 0x00, 0x20, 0x4A, 0x2C, 0x02, 0x46, 0x00, 0x00, 0x00 + .byte 0x88, 0x4A, 0x2C, 0x02, 0x48, 0x00, 0x00, 0x00, 0x98, 0x4B, 0x2C, 0x02, 0x5D, 0x00, 0x00, 0x00 + .byte 0xA0, 0x4A, 0x2C, 0x02, 0x5E, 0x00, 0x00, 0x00, 0xB8, 0x4A, 0x2C, 0x02, 0x5F, 0x00, 0x00, 0x00 + .byte 0xD0, 0x4A, 0x2C, 0x02, 0x60, 0x00, 0x00, 0x00, 0xE8, 0x4A, 0x2C, 0x02, 0x61, 0x00, 0x00, 0x00 + .byte 0x00, 0x4B, 0x2C, 0x02, 0x62, 0x00, 0x00, 0x00, 0x70, 0x4A, 0x2C, 0x02, 0x64, 0x00, 0x00, 0x00 + .byte 0xC4, 0x48, 0x2C, 0x02, 0x65, 0x00, 0x00, 0x00, 0xCC, 0x48, 0x2C, 0x02, 0x66, 0x00, 0x00, 0x00 + .byte 0xD4, 0x48, 0x2C, 0x02, 0x67, 0x00, 0x00, 0x00, 0xF4, 0x48, 0x2C, 0x02, 0x6B, 0x00, 0x00, 0x00 + .byte 0x0C, 0x49, 0x2C, 0x02, 0x6C, 0x00, 0x00, 0x00, 0x18, 0x49, 0x2C, 0x02, 0x6D, 0x00, 0x00, 0x00 + .byte 0x34, 0x49, 0x2C, 0x02, 0x6E, 0x00, 0x00, 0x00, 0x14, 0x48, 0x2C, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x42, 0x41, 0x4C, 0x41, 0x4E, 0x43, 0x45 + .byte 0x2F, 0x66, 0x69, 0x78, 0x65, 0x64, 0x2E, 0x62, 0x69, 0x6E, 0x00, 0x00, 0x5B, 0x0F, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x5C, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x49, 0x0F, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x0F, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x47, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x0F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3E, 0x0F, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x0F, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x53, 0x0F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04 + .byte 0x6C, 0x01, 0x6D, 0x01, 0x6E, 0x01, 0x6F, 0x01, 0x70, 0x01, 0x71, 0x01, 0x72, 0x01, 0x73, 0x01 + .byte 0x74, 0x01, 0x75, 0x01, 0x76, 0x01, 0x77, 0x01, 0x78, 0x01, 0x79, 0x01, 0x7A, 0x01, 0x7B, 0x01 + .byte 0x7C, 0x01, 0x7D, 0x01, 0x7E, 0x01, 0x7F, 0x01, 0x80, 0x01, 0x81, 0x01, 0x82, 0x01, 0x83, 0x01 + .byte 0x84, 0x01, 0x85, 0x01, 0x86, 0x01, 0x87, 0x01, 0x88, 0x01, 0x89, 0x01, 0x8A, 0x01, 0x8B, 0x01 + .byte 0x8C, 0x01, 0x8D, 0x01, 0x8E, 0x01, 0x8F, 0x01, 0x5B, 0x52, 0x5D, 0x00, 0x33, 0x0B, 0x34, 0x0B + .byte 0x2F, 0x0B, 0x30, 0x0B, 0x3D, 0x0B, 0x3E, 0x0B, 0x37, 0x0B, 0x38, 0x0B, 0x31, 0x0B, 0x32, 0x0B + .byte 0x39, 0x0B, 0x3A, 0x0B, 0x35, 0x0B, 0x36, 0x0B, 0x3B, 0x0B, 0x3C, 0x0B, 0x08, 0x00, 0x00, 0x00 + .byte 0xD6, 0x3F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xD1, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00 + .byte 0xDD, 0x3F, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xDC, 0x3F, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0xE2, 0x3F, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xE6, 0x3F, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 + .byte 0xE3, 0x3F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xDE, 0x3F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .byte 0xD5, 0x3F, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0xDF, 0x3F, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 + .byte 0xE4, 0x3F, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xD4, 0x3F, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .byte 0xD3, 0x3F, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xD2, 0x3F, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00 + .byte 0xE0, 0x3F, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD0, 0x3F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xCF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x3F, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00 + .byte 0xDB, 0x3F, 0x00, 0x00, 0x48, 0x0B, 0x49, 0x0B, 0x4A, 0x0B, 0x4B, 0x0B, 0x0C, 0x00, 0x00, 0x00 + .byte 0xDA, 0x3F, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xD7, 0x3F, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 + .byte 0xE5, 0x3F, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0xD8, 0x3F, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .byte 0xD9, 0x3F, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0xE1, 0x3F, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00 + .byte 0xE7, 0x3F, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0xE8, 0x3F, 0x00, 0x00, 0x3F, 0x0B, 0x40, 0x0B + .byte 0x41, 0x0B, 0x42, 0x0B, 0x43, 0x0B, 0x00, 0x00, 0x4C, 0x0B, 0x4D, 0x0B, 0x4E, 0x0B, 0x4F, 0x0B + .byte 0x50, 0x0B, 0x00, 0x00, 0x78, 0x0B, 0x79, 0x0B, 0x7A, 0x0B, 0x7B, 0x0B, 0x7C, 0x0B, 0x7D, 0x0B + .byte 0x7E, 0x0B, 0x7F, 0x0B, 0x80, 0x0B, 0x81, 0x0B, 0x82, 0x0B, 0x83, 0x0B, 0x84, 0x0B, 0x85, 0x0B + .byte 0x00, 0x00, 0x86, 0x0B, 0x87, 0x0B, 0x88, 0x0B, 0x89, 0x0B, 0x8A, 0x0B, 0x8B, 0x0B, 0x8D, 0x0B + .byte 0x8C, 0x0B, 0x8E, 0x0B, 0x8F, 0x0B, 0x90, 0x0B, 0x91, 0x0B, 0x00, 0x00, 0x30, 0x3A, 0x83, 0x82 + .byte 0x83, 0x93, 0x83, 0x58, 0x83, 0x5E, 0x81, 0x5B, 0x2D, 0x49, 0x44, 0x81, 0x79, 0x25, 0x64, 0x81 + .byte 0x7A, 0x00, 0x00, 0x00, 0x31, 0x3A, 0x83, 0x82, 0x83, 0x93, 0x83, 0x58, 0x83, 0x5E, 0x81, 0x5B + .byte 0x2D, 0x49, 0x44, 0x81, 0x79, 0x25, 0x64, 0x81, 0x7A, 0x00, 0x00, 0x00, 0xAB, 0x08, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0xAC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x0F, 0x00, 0x00, 0xFF, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x00, 0xFF, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF2, 0x34, 0x02 + .byte 0x1C, 0xF2, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x01, 0xFF, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x5B, 0x4D, 0x3A, 0x52, 0x34, 0x5D, 0x00, 0x00, 0x5B, 0x66, 0x6C, 0x6F + .byte 0x6F, 0x72, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x5B, 0x4D, 0x3A, 0x53, 0x32, 0x5D, 0x00, 0x00 + .byte 0x5B, 0x43, 0x53, 0x3A, 0x57, 0x5D, 0x3F, 0x3F, 0x3F, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xF9, 0x34, 0x02, 0xC0, 0xF7, 0x34, 0x02 + .byte 0xBA, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0xBC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xBD, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .byte 0xBE, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xBB, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xBC, 0x08, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xBD, 0x08, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBE, 0x08, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0xBF, 0x08, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xC0, 0x08, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + + .data + .global ov29_023534E0 +ov29_023534E0: + .byte 0x6C, 0xFD, 0x34, 0x02, 0x28, 0xFD, 0x34, 0x02, 0x58, 0xFD, 0x34, 0x02 + .byte 0x38, 0xFD, 0x34, 0x02, 0xB8, 0xFD, 0x34, 0x02, 0xC8, 0xFD, 0x34, 0x02, 0xC0, 0xFD, 0x34, 0x02 + .byte 0x88, 0xFD, 0x34, 0x02, 0xB0, 0xFD, 0x34, 0x02, 0x98, 0xFD, 0x34, 0x02, 0xA0, 0xFD, 0x34, 0x02 + .byte 0xA8, 0xFD, 0x34, 0x02, 0x90, 0xFD, 0x34, 0x02, 0x80, 0xFD, 0x34, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x00, 0x2F, 0x30, 0x31, 0x32 + .byte 0x33, 0x34, 0x35, 0x00, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x00, 0xE0, 0x27, 0x35, 0x02 + .byte 0xE8, 0x27, 0x35, 0x02, 0xE4, 0x27, 0x35, 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x0F, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x38, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x12, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x6C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x15, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x16, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x17, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x0C, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD7, 0x30, 0x02, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x3D, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xF4, 0x03, 0xF4, 0x03, 0xF5, 0x03, 0xF5, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x64, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x88, 0x31, 0x35, 0x02, 0x70, 0x31, 0x35, 0x02, 0x28, 0x31, 0x35, 0x02, 0x58, 0x31, 0x35, 0x02 + .byte 0x40, 0x31, 0x35, 0x02, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x16, 0x00, 0x15, 0x00, 0x16, 0x00 + .byte 0x02, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0x00, 0xB8, 0x04 + .byte 0xD9, 0x00, 0xB5, 0x04, 0xDB, 0x00, 0xB6, 0x04, 0xDC, 0x00, 0xB4, 0x04, 0xDD, 0x00, 0xB7, 0x04 + .byte 0xDE, 0x00, 0xBE, 0x04, 0xDF, 0x00, 0xC0, 0x04, 0xE0, 0x00, 0xC1, 0x04, 0xE1, 0x00, 0xD2, 0x04 + .byte 0xE2, 0x00, 0xBD, 0x04, 0xEC, 0x00, 0xBF, 0x04, 0xEE, 0x00, 0xC5, 0x04, 0xEF, 0x00, 0xC2, 0x04 + .byte 0xF0, 0x00, 0xC3, 0x04, 0xE3, 0x00, 0xC4, 0x04, 0xF1, 0x00, 0x00, 0x00, 0xF2, 0x00, 0x00, 0x00 + .byte 0xF3, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + + .bss + .global ov29_02353860 +ov29_02353860: + .space 0x2EFC0 diff --git a/include/LICENSE.txt b/include/LICENSE.txt new file mode 100644 index 00000000..fba5620c --- /dev/null +++ b/include/LICENSE.txt @@ -0,0 +1,23 @@ +NOTE: The following license applies only to the files within this directory. + +MIT License + +Copyright (c) 2022 UsernameFodder + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/include/dungeon_mode.h b/include/dungeon_mode.h new file mode 100644 index 00000000..8d60214c --- /dev/null +++ b/include/dungeon_mode.h @@ -0,0 +1,71 @@ +#ifndef PMDSKY_DUNGEON_MODE_H +#define PMDSKY_DUNGEON_MODE_H + +#include "graphics.h" + +// Used in various contexts, like with entity positions in the dungeon +struct position { + s16 x; + s16 y; +}; + +// Used to indicate the pixel position of an entity. Values are shifted 8 bits to the left, so they +// are probably decimal numbers instead. +struct pixel_position { + u32 x; + u32 y; +}; + +// Entity type. This is used to tag generic entity pointers. +enum entity_type { + ENTITY_NOTHING = 0, + ENTITY_MONSTER = 1, + ENTITY_TRAP = 2, + ENTITY_ITEM = 3, + ENTITY_HIDDEN_STAIRS = 5, + // Used when a temporary instance of this struct is created to pass it to some + // function that requires it as a parameter + ENTITY_TEMPORARY = 6, +}; + +// Generic entity data +struct entity { + enum entity_type type; // 0x0 + struct position pos; // 0x4 + struct position prev_pos; // 0x8 + struct pixel_position pixel_pos; // 0xC + struct pixel_position pixel_pos_mirror; // 0x14: Monsters only? + // 0x1C: Graphical parameter for evelation above the ground. Last byte behaves weirdly. + s32 elevation; + u8 is_visible; // 0x20: For traps/hidden stairs + u8 field_0x21; + // 0x22: If true, the sprite will be shown with a certain degree of transparency + u8 transparent; + // 0x23: Seems to be the animation frame counter for the 10-frame "shuffle" animation that + // plays at the end of a walk sequence + u8 end_walk_anim_frame; + u8 field_0x24; + u8 room_idx; // 0x25: Index of the room a monster is in. 0xFF for hall + // 0x26: Unique index for each monster that spawns. Starts at 0xA for the leader, and each + // subsequent monster to spawn is assigned the next number (0xB, 0xC, ...) + u16 spawn_genid; + u8 field_0x28; + u8 field_0x29; + u8 field_0x2a; + u8 field_0x2b; + struct animation_control anim_ctrl; + u16 sprite_index; // 0xA8 + u8 field_0xaa; + u8 field_0xab; + u8 field_0xac; + u8 field_0xad; + u8 animation_group_id; // 0xAE + u8 animation_group_id_mirror; // 0xAF + u8 animation_id; // 0xB0 + u8 animation_id_mirror0; // 0xB1 + u8 field_0xb2; + u8 field_0xb3; + void* info; // 0xB4: Points to info struct for monster/item/trap +}; + +#endif //PMDSKY_DUNGEON_MODE_H \ No newline at end of file diff --git a/include/graphics.h b/include/graphics.h new file mode 100644 index 00000000..4ec03154 --- /dev/null +++ b/include/graphics.h @@ -0,0 +1,89 @@ +#ifndef PMDSKY_GRAPHICS_H +#define PMDSKY_GRAPHICS_H + +#include "util.h" +#include "wan.h" + +struct wan_offset { + struct uvec2_16 head; + struct uvec2_16 hand_left; + struct uvec2_16 hand_right; + struct uvec2_16 center; +}; + +struct wan_palettes { + struct rgba* palette_bytes; + u16 unk1; + u16 nb_color; + u16 unk2; + u16 unk3; + s32 unk4; // Normally always 0 +}; + +// Contains data relating to animation. +// Mentioned under the name of "AnimeCtrl" in a debug message. +struct animation_control { + u16 some_bitfield; + u16 field1_0x2; + u16 field2_0x4; + u16 anim_frame_duration; + u16 field4_0x8; + u16 field5_0xa; + u16 field6_0xc; // (from struct entity) animation frame counter for the idle animation? + u8 field7_0xe; + u8 field8_0xf; + // appears to be a structure used for unknown purpose with 6 2-byte value + u16 field9_0x10[6]; + u16 field10_0x1c; + u16 field11_0x1e; + struct vec2_16 anim_frame_offset; + struct vec2_16 anim_frame_shadow_offset; + s32 anim_frame_flag; + s32 anim_frame_flag_sum; // ORed from the current WAN animation frame flag + u16 animations_or_group_len; // number of animation group Chara sprites, other number of + // animation in the first animation group + u16 field19_0x32; + u8 field20_0x34; + u8 field21_0x35; + u16 field22_0x36; // seems to be an index into the wan fragments table + u16 field23_0x38; + u16 anim_frame_frame_id; + u16 field25_0x3c; + u8 field26_0x3e; + u8 field27_0x3f; + // Used to determine where to store the palette's colors. Multiplied by 0x100 + u8 palette_pos_high; + u8 palette_pos_low; // Used to determine where to store the palette's colors + u8 field30_0x42; + u8 field31_0x43; + u8 field32_0x44; + u8 field33_0x45; + u8 field34_0x46; + u8 field35_0x47; + struct wan_animation_frame* first_animation_frame; // first frame in animation group + struct wan_animation_frame* next_animation_frame; + struct wan_offset* wan_offsets; + u8* wan_frames; + void** wan_fragments_byte_store; + struct wan_palettes* wan_palettes; + u16 wan_is_256_color; + u16 loop_start; // same meaning as in struct wan_animation_frame + u8 field44_0x64; + u8 field45_0x65; + u8 field46_0x66; + u8 field47_0x67; + // seems to point to a SIRO file containing another sprite, that is sometimes used instead of + // the one specified in loaded_sprite_id (maybe it is loaded_sprite_id but looked up?) + u8* sprite_override; + u32 field49_0x6c; + u16 loaded_sprite_id; // id in the WAN_TABLE static list + u16 field51_0x72; + u8 field52_0x74; + u8 field53_0x75; + u16 animation_group_id; + u16 animation_id; + u8 palette_bank; + u8 field57_0x7b; +}; + +#endif //PMDSKY_GRAPHICS_H \ No newline at end of file diff --git a/include/overlay_29_022E0354.h b/include/overlay_29_022E0354.h index 3d98d03e..4ee09003 100644 --- a/include/overlay_29_022E0354.h +++ b/include/overlay_29_022E0354.h @@ -1,6 +1,8 @@ #ifndef PMDSKY_OVERLAY_29_022E0354_H #define PMDSKY_OVERLAY_29_022E0354_H -u8 EntityIsValid__022E0354(s32 *entity); +#include "dungeon_mode.h" + +u8 EntityIsValid__022E0354(struct entity *entity); #endif //PMDSKY_OVERLAY_29_022E0354_H diff --git a/include/overlay_29_022E1A1C.h b/include/overlay_29_022E1A1C.h new file mode 100644 index 00000000..a65c9c21 --- /dev/null +++ b/include/overlay_29_022E1A1C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022E1A1C_H +#define PMDSKY_OVERLAY_29_022E1A1C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022E1A1C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022E1A1C_H diff --git a/include/overlay_29_022E32E8.h b/include/overlay_29_022E32E8.h new file mode 100644 index 00000000..a19a81e6 --- /dev/null +++ b/include/overlay_29_022E32E8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022E32E8_H +#define PMDSKY_OVERLAY_29_022E32E8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022E32E8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022E32E8_H diff --git a/include/overlay_29_022E37B8.h b/include/overlay_29_022E37B8.h new file mode 100644 index 00000000..edcc10cf --- /dev/null +++ b/include/overlay_29_022E37B8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022E37B8_H +#define PMDSKY_OVERLAY_29_022E37B8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022E37B8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022E37B8_H diff --git a/include/overlay_29_022E95F4.h b/include/overlay_29_022E95F4.h new file mode 100644 index 00000000..21820aaf --- /dev/null +++ b/include/overlay_29_022E95F4.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022E95F4_H +#define PMDSKY_OVERLAY_29_022E95F4_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022E95F4(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022E95F4_H diff --git a/include/overlay_29_022EC608.h b/include/overlay_29_022EC608.h new file mode 100644 index 00000000..571ced24 --- /dev/null +++ b/include/overlay_29_022EC608.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022EC608_H +#define PMDSKY_OVERLAY_29_022EC608_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022EC608(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022EC608_H diff --git a/include/overlay_29_022ECDC0.h b/include/overlay_29_022ECDC0.h new file mode 100644 index 00000000..95be16b0 --- /dev/null +++ b/include/overlay_29_022ECDC0.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022ECDC0_H +#define PMDSKY_OVERLAY_29_022ECDC0_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022ECDC0(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022ECDC0_H diff --git a/include/overlay_29_022EE348.h b/include/overlay_29_022EE348.h new file mode 100644 index 00000000..c8bfd6d5 --- /dev/null +++ b/include/overlay_29_022EE348.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022EE348_H +#define PMDSKY_OVERLAY_29_022EE348_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022EE348(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022EE348_H diff --git a/include/overlay_29_022EF7A0.h b/include/overlay_29_022EF7A0.h new file mode 100644 index 00000000..c9cfedc7 --- /dev/null +++ b/include/overlay_29_022EF7A0.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022EF7A0_H +#define PMDSKY_OVERLAY_29_022EF7A0_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022EF7A0(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022EF7A0_H diff --git a/include/overlay_29_022F0590.h b/include/overlay_29_022F0590.h new file mode 100644 index 00000000..602c2d4a --- /dev/null +++ b/include/overlay_29_022F0590.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022F0590_H +#define PMDSKY_OVERLAY_29_022F0590_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022F0590(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022F0590_H diff --git a/include/overlay_29_022F528C.h b/include/overlay_29_022F528C.h new file mode 100644 index 00000000..08da5704 --- /dev/null +++ b/include/overlay_29_022F528C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022F528C_H +#define PMDSKY_OVERLAY_29_022F528C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022F528C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022F528C_H diff --git a/include/overlay_29_022F62A8.h b/include/overlay_29_022F62A8.h new file mode 100644 index 00000000..12a413da --- /dev/null +++ b/include/overlay_29_022F62A8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022F62A8_H +#define PMDSKY_OVERLAY_29_022F62A8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022F62A8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022F62A8_H diff --git a/include/overlay_29_022F7364.h b/include/overlay_29_022F7364.h new file mode 100644 index 00000000..04bcd792 --- /dev/null +++ b/include/overlay_29_022F7364.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022F7364_H +#define PMDSKY_OVERLAY_29_022F7364_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022F7364(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022F7364_H diff --git a/include/overlay_29_022FC99C.h b/include/overlay_29_022FC99C.h new file mode 100644 index 00000000..4c379b5e --- /dev/null +++ b/include/overlay_29_022FC99C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022FC99C_H +#define PMDSKY_OVERLAY_29_022FC99C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022FC99C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022FC99C_H diff --git a/include/overlay_29_022FED98.h b/include/overlay_29_022FED98.h new file mode 100644 index 00000000..1ca227d7 --- /dev/null +++ b/include/overlay_29_022FED98.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_022FED98_H +#define PMDSKY_OVERLAY_29_022FED98_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__022FED98(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_022FED98_H diff --git a/include/overlay_29_023000E4.h b/include/overlay_29_023000E4.h new file mode 100644 index 00000000..89befc0e --- /dev/null +++ b/include/overlay_29_023000E4.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_023000E4_H +#define PMDSKY_OVERLAY_29_023000E4_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__023000E4(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_023000E4_H diff --git a/include/overlay_29_02302A38.h b/include/overlay_29_02302A38.h new file mode 100644 index 00000000..d9c23026 --- /dev/null +++ b/include/overlay_29_02302A38.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02302A38_H +#define PMDSKY_OVERLAY_29_02302A38_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02302A38(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02302A38_H diff --git a/include/overlay_29_023047B8.h b/include/overlay_29_023047B8.h new file mode 100644 index 00000000..4499f37b --- /dev/null +++ b/include/overlay_29_023047B8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_023047B8_H +#define PMDSKY_OVERLAY_29_023047B8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__023047B8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_023047B8_H diff --git a/include/overlay_29_0230558C.h b/include/overlay_29_0230558C.h new file mode 100644 index 00000000..9bae3d1a --- /dev/null +++ b/include/overlay_29_0230558C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0230558C_H +#define PMDSKY_OVERLAY_29_0230558C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0230558C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0230558C_H diff --git a/include/overlay_29_02305C04.h b/include/overlay_29_02305C04.h new file mode 100644 index 00000000..5a4cfdef --- /dev/null +++ b/include/overlay_29_02305C04.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02305C04_H +#define PMDSKY_OVERLAY_29_02305C04_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02305C04(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02305C04_H diff --git a/include/overlay_29_02307EF8.h b/include/overlay_29_02307EF8.h new file mode 100644 index 00000000..2a3714dc --- /dev/null +++ b/include/overlay_29_02307EF8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02307EF8_H +#define PMDSKY_OVERLAY_29_02307EF8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02307EF8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02307EF8_H diff --git a/include/overlay_29_0230827C.h b/include/overlay_29_0230827C.h new file mode 100644 index 00000000..eef5dd08 --- /dev/null +++ b/include/overlay_29_0230827C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0230827C_H +#define PMDSKY_OVERLAY_29_0230827C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0230827C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0230827C_H diff --git a/include/overlay_29_02308FBC.h b/include/overlay_29_02308FBC.h new file mode 100644 index 00000000..71c3d1b5 --- /dev/null +++ b/include/overlay_29_02308FBC.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02308FBC_H +#define PMDSKY_OVERLAY_29_02308FBC_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02308FBC(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02308FBC_H diff --git a/include/overlay_29_0230E8F0.h b/include/overlay_29_0230E8F0.h new file mode 100644 index 00000000..8dfda95e --- /dev/null +++ b/include/overlay_29_0230E8F0.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0230E8F0_H +#define PMDSKY_OVERLAY_29_0230E8F0_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0230E8F0(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0230E8F0_H diff --git a/include/overlay_29_0230F008.h b/include/overlay_29_0230F008.h new file mode 100644 index 00000000..37a59cc3 --- /dev/null +++ b/include/overlay_29_0230F008.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0230F008_H +#define PMDSKY_OVERLAY_29_0230F008_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0230F008(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0230F008_H diff --git a/include/overlay_29_02311010.h b/include/overlay_29_02311010.h new file mode 100644 index 00000000..824183f9 --- /dev/null +++ b/include/overlay_29_02311010.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02311010_H +#define PMDSKY_OVERLAY_29_02311010_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02311010(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02311010_H diff --git a/include/overlay_29_023118B4.h b/include/overlay_29_023118B4.h new file mode 100644 index 00000000..ef2fbaab --- /dev/null +++ b/include/overlay_29_023118B4.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_023118B4_H +#define PMDSKY_OVERLAY_29_023118B4_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__023118B4(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_023118B4_H diff --git a/include/overlay_29_02315118.h b/include/overlay_29_02315118.h new file mode 100644 index 00000000..a1e746b6 --- /dev/null +++ b/include/overlay_29_02315118.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02315118_H +#define PMDSKY_OVERLAY_29_02315118_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02315118(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02315118_H diff --git a/include/overlay_29_02318D34.h b/include/overlay_29_02318D34.h new file mode 100644 index 00000000..a07b4752 --- /dev/null +++ b/include/overlay_29_02318D34.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02318D34_H +#define PMDSKY_OVERLAY_29_02318D34_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02318D34(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02318D34_H diff --git a/include/overlay_29_02318E4C.h b/include/overlay_29_02318E4C.h new file mode 100644 index 00000000..b704c4d6 --- /dev/null +++ b/include/overlay_29_02318E4C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02318E4C_H +#define PMDSKY_OVERLAY_29_02318E4C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02318E4C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02318E4C_H diff --git a/include/overlay_29_02319F8C.h b/include/overlay_29_02319F8C.h new file mode 100644 index 00000000..a9d9fb31 --- /dev/null +++ b/include/overlay_29_02319F8C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02319F8C_H +#define PMDSKY_OVERLAY_29_02319F8C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02319F8C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02319F8C_H diff --git a/include/overlay_29_0231B194.h b/include/overlay_29_0231B194.h new file mode 100644 index 00000000..20e13ab4 --- /dev/null +++ b/include/overlay_29_0231B194.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0231B194_H +#define PMDSKY_OVERLAY_29_0231B194_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0231B194(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0231B194_H diff --git a/include/overlay_29_0231CBC8.h b/include/overlay_29_0231CBC8.h new file mode 100644 index 00000000..d1627c1f --- /dev/null +++ b/include/overlay_29_0231CBC8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0231CBC8_H +#define PMDSKY_OVERLAY_29_0231CBC8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0231CBC8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0231CBC8_H diff --git a/include/overlay_29_0231EDD8.h b/include/overlay_29_0231EDD8.h new file mode 100644 index 00000000..e7e40b46 --- /dev/null +++ b/include/overlay_29_0231EDD8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0231EDD8_H +#define PMDSKY_OVERLAY_29_0231EDD8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0231EDD8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0231EDD8_H diff --git a/include/overlay_29_0231F570.h b/include/overlay_29_0231F570.h new file mode 100644 index 00000000..5828eff1 --- /dev/null +++ b/include/overlay_29_0231F570.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0231F570_H +#define PMDSKY_OVERLAY_29_0231F570_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0231F570(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0231F570_H diff --git a/include/overlay_29_0231FBFC.h b/include/overlay_29_0231FBFC.h new file mode 100644 index 00000000..ebd3fd6a --- /dev/null +++ b/include/overlay_29_0231FBFC.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0231FBFC_H +#define PMDSKY_OVERLAY_29_0231FBFC_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0231FBFC(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0231FBFC_H diff --git a/include/overlay_29_0232017C.h b/include/overlay_29_0232017C.h new file mode 100644 index 00000000..f07692e5 --- /dev/null +++ b/include/overlay_29_0232017C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232017C_H +#define PMDSKY_OVERLAY_29_0232017C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232017C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232017C_H diff --git a/include/overlay_29_02320764.h b/include/overlay_29_02320764.h new file mode 100644 index 00000000..bc2f784e --- /dev/null +++ b/include/overlay_29_02320764.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02320764_H +#define PMDSKY_OVERLAY_29_02320764_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02320764(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02320764_H diff --git a/include/overlay_29_02321438.h b/include/overlay_29_02321438.h new file mode 100644 index 00000000..2b1ad77c --- /dev/null +++ b/include/overlay_29_02321438.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02321438_H +#define PMDSKY_OVERLAY_29_02321438_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02321438(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02321438_H diff --git a/include/overlay_29_02325620.h b/include/overlay_29_02325620.h new file mode 100644 index 00000000..4613e422 --- /dev/null +++ b/include/overlay_29_02325620.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02325620_H +#define PMDSKY_OVERLAY_29_02325620_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02325620(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02325620_H diff --git a/include/overlay_29_0232800C.h b/include/overlay_29_0232800C.h new file mode 100644 index 00000000..d8afae92 --- /dev/null +++ b/include/overlay_29_0232800C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232800C_H +#define PMDSKY_OVERLAY_29_0232800C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232800C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232800C_H diff --git a/include/overlay_29_0232A3D8.h b/include/overlay_29_0232A3D8.h new file mode 100644 index 00000000..90414755 --- /dev/null +++ b/include/overlay_29_0232A3D8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232A3D8_H +#define PMDSKY_OVERLAY_29_0232A3D8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232A3D8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232A3D8_H diff --git a/include/overlay_29_0232C500.h b/include/overlay_29_0232C500.h new file mode 100644 index 00000000..4591ddd4 --- /dev/null +++ b/include/overlay_29_0232C500.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232C500_H +#define PMDSKY_OVERLAY_29_0232C500_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232C500(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232C500_H diff --git a/include/overlay_29_0232E250.h b/include/overlay_29_0232E250.h new file mode 100644 index 00000000..5444c3c6 --- /dev/null +++ b/include/overlay_29_0232E250.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232E250_H +#define PMDSKY_OVERLAY_29_0232E250_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232E250(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232E250_H diff --git a/include/overlay_29_0232E840.h b/include/overlay_29_0232E840.h new file mode 100644 index 00000000..4cc083a9 --- /dev/null +++ b/include/overlay_29_0232E840.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0232E840_H +#define PMDSKY_OVERLAY_29_0232E840_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0232E840(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0232E840_H diff --git a/include/overlay_29_02333FAC.h b/include/overlay_29_02333FAC.h new file mode 100644 index 00000000..7d474937 --- /dev/null +++ b/include/overlay_29_02333FAC.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02333FAC_H +#define PMDSKY_OVERLAY_29_02333FAC_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02333FAC(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02333FAC_H diff --git a/include/overlay_29_023350D8.h b/include/overlay_29_023350D8.h new file mode 100644 index 00000000..2b2f9b51 --- /dev/null +++ b/include/overlay_29_023350D8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_023350D8_H +#define PMDSKY_OVERLAY_29_023350D8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__023350D8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_023350D8_H diff --git a/include/overlay_29_02337CA8.h b/include/overlay_29_02337CA8.h new file mode 100644 index 00000000..24118af3 --- /dev/null +++ b/include/overlay_29_02337CA8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02337CA8_H +#define PMDSKY_OVERLAY_29_02337CA8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02337CA8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02337CA8_H diff --git a/include/overlay_29_02344AF8.h b/include/overlay_29_02344AF8.h new file mode 100644 index 00000000..671bd854 --- /dev/null +++ b/include/overlay_29_02344AF8.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02344AF8_H +#define PMDSKY_OVERLAY_29_02344AF8_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02344AF8(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02344AF8_H diff --git a/include/overlay_29_02345698.h b/include/overlay_29_02345698.h new file mode 100644 index 00000000..9b5ece5a --- /dev/null +++ b/include/overlay_29_02345698.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02345698_H +#define PMDSKY_OVERLAY_29_02345698_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02345698(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02345698_H diff --git a/include/overlay_29_02347BA4.h b/include/overlay_29_02347BA4.h new file mode 100644 index 00000000..7b31abd8 --- /dev/null +++ b/include/overlay_29_02347BA4.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_02347BA4_H +#define PMDSKY_OVERLAY_29_02347BA4_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__02347BA4(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_02347BA4_H diff --git a/include/overlay_29_0234987C.h b/include/overlay_29_0234987C.h new file mode 100644 index 00000000..394e3cc9 --- /dev/null +++ b/include/overlay_29_0234987C.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0234987C_H +#define PMDSKY_OVERLAY_29_0234987C_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0234987C(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0234987C_H diff --git a/include/overlay_29_0234DDD0.h b/include/overlay_29_0234DDD0.h new file mode 100644 index 00000000..02cef4bd --- /dev/null +++ b/include/overlay_29_0234DDD0.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0234DDD0_H +#define PMDSKY_OVERLAY_29_0234DDD0_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0234DDD0(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0234DDD0_H diff --git a/include/overlay_29_0234EC14.h b/include/overlay_29_0234EC14.h new file mode 100644 index 00000000..ace66ba7 --- /dev/null +++ b/include/overlay_29_0234EC14.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_OVERLAY_29_0234EC14_H +#define PMDSKY_OVERLAY_29_0234EC14_H + +#include "dungeon_mode.h" + +u8 EntityIsValid__0234EC14(struct entity *entity); + +#endif //PMDSKY_OVERLAY_29_0234EC14_H diff --git a/include/util.h b/include/util.h new file mode 100644 index 00000000..602a0ab6 --- /dev/null +++ b/include/util.h @@ -0,0 +1,24 @@ +#ifndef PMDSKY_UTIL_H +#define PMDSKY_UTIL_H + +// RGBA8 structure. Sometimes alpha is ignored and only used for padding +struct rgba { + u8 r; + u8 b; + u8 g; + u8 a; // Sometimes used only for padding +}; + +// a 2d short (16bit) vector +struct vec2_16 { + s16 x; + s16 y; +}; + +// a 2d ushort (16bit) vector +struct uvec2_16 { + u16 x; + u16 y; +}; + +#endif //PMDSKY_UTIL_H \ No newline at end of file diff --git a/include/wan.h b/include/wan.h new file mode 100644 index 00000000..8f686ddc --- /dev/null +++ b/include/wan.h @@ -0,0 +1,14 @@ +#ifndef PMDSKY_WAN_H +#define PMDSKY_WAN_H + +#include "util.h" + +struct wan_animation_frame { + u8 duration; + u8 flag; + u16 frame_id; + struct vec2_16 offset; + struct vec2_16 shadow_offset; +}; + +#endif //PMDSKY_WAN_H \ No newline at end of file diff --git a/main.lsf b/main.lsf index f4b39b95..a2669bc1 100644 --- a/main.lsf +++ b/main.lsf @@ -174,8 +174,114 @@ Overlay OVY_29 Object asm/overlay_29_022DC240.o Object src/overlay_29_022E0354.o Object asm/overlay_29_022E0378.o + Object src/overlay_29_022E1A1C.o + Object asm/overlay_29_022E1A40.o + Object src/overlay_29_022E32E8.o + Object asm/overlay_29_022E330C.o + Object src/overlay_29_022E37B8.o + Object asm/overlay_29_022E37DC.o + Object src/overlay_29_022E95F4.o + Object asm/overlay_29_022E9618.o Object src/dungeon_random.o Object asm/overlay_29_022EAB50.o + Object src/overlay_29_022EC608.o + Object asm/overlay_29_022EC62C.o + Object src/overlay_29_022ECDC0.o + Object asm/overlay_29_022ECDE4.o + Object src/overlay_29_022EE348.o + Object asm/overlay_29_022EE36C.o + Object src/overlay_29_022EF7A0.o + Object asm/overlay_29_022EF7C4.o + Object src/overlay_29_022F0590.o + Object asm/overlay_29_022F05B4.o + Object src/overlay_29_022F528C.o + Object asm/overlay_29_022F52B0.o + Object src/overlay_29_022F62A8.o + Object asm/overlay_29_022F62CC.o + Object src/overlay_29_022F7364.o + Object asm/overlay_29_022F7388.o + Object src/overlay_29_022FC99C.o + Object asm/overlay_29_022FC9C0.o + Object src/overlay_29_022FED98.o + Object asm/overlay_29_022FEDBC.o + Object src/overlay_29_023000E4.o + Object asm/overlay_29_02300108.o + Object src/overlay_29_02302A38.o + Object asm/overlay_29_02302A5C.o + Object src/overlay_29_023047B8.o + Object asm/overlay_29_023047DC.o + Object src/overlay_29_0230558C.o + Object asm/overlay_29_023055B0.o + Object src/overlay_29_02305C04.o + Object asm/overlay_29_02305C28.o + Object src/overlay_29_02307EF8.o + Object asm/overlay_29_02307F1C.o + Object src/overlay_29_0230827C.o + Object asm/overlay_29_023082A0.o + Object src/overlay_29_02308FBC.o + Object asm/overlay_29_02308FE0.o + Object src/overlay_29_0230E8F0.o + Object asm/overlay_29_0230E914.o + Object src/overlay_29_0230F008.o + Object asm/overlay_29_0230F02C.o + Object src/overlay_29_02311010.o + Object asm/overlay_29_02311034.o + Object src/overlay_29_023118B4.o + Object asm/overlay_29_023118D8.o + Object src/overlay_29_02315118.o + Object asm/overlay_29_0231513C.o + Object src/overlay_29_02318D34.o + Object asm/overlay_29_02318D58.o + Object src/overlay_29_02318E4C.o + Object asm/overlay_29_02318E70.o + Object src/overlay_29_02319F8C.o + Object asm/overlay_29_02319FB0.o + Object src/overlay_29_0231B194.o + Object asm/overlay_29_0231B1B8.o + Object src/overlay_29_0231CBC8.o + Object asm/overlay_29_0231CBEC.o + Object src/overlay_29_0231EDD8.o + Object asm/overlay_29_0231EDFC.o + Object src/overlay_29_0231F570.o + Object asm/overlay_29_0231F594.o + Object src/overlay_29_0231FBFC.o + Object asm/overlay_29_0231FC20.o + Object src/overlay_29_0232017C.o + Object asm/overlay_29_023201A0.o + Object src/overlay_29_02320764.o + Object asm/overlay_29_02320788.o + Object src/overlay_29_02321438.o + Object asm/overlay_29_0232145C.o + Object src/overlay_29_02325620.o + Object asm/overlay_29_02325644.o + Object src/overlay_29_0232800C.o + Object asm/overlay_29_02328030.o + Object src/overlay_29_0232A3D8.o + Object asm/overlay_29_0232A3FC.o + Object src/overlay_29_0232C500.o + Object asm/overlay_29_0232C524.o + Object src/overlay_29_0232E250.o + Object asm/overlay_29_0232E274.o + Object src/overlay_29_0232E840.o + Object asm/overlay_29_0232E864.o + Object src/overlay_29_02333FAC.o + Object asm/overlay_29_02333FD0.o + Object src/overlay_29_023350D8.o + Object asm/overlay_29_023350FC.o + Object src/overlay_29_02337CA8.o + Object asm/overlay_29_02337CCC.o + Object src/overlay_29_02344AF8.o + Object asm/overlay_29_02344B1C.o + Object src/overlay_29_02345698.o + Object asm/overlay_29_023456BC.o + Object src/overlay_29_02347BA4.o + Object asm/overlay_29_02347BC8.o + Object src/overlay_29_0234987C.o + Object asm/overlay_29_023498A0.o + Object src/overlay_29_0234DDD0.o + Object asm/overlay_29_0234DDF4.o + Object src/overlay_29_0234EC14.o + Object asm/overlay_29_0234EC38.o } Overlay OVY_30 { diff --git a/src/overlay_29_022E0354.c b/src/overlay_29_022E0354.c index 124f7df9..220d6690 100644 --- a/src/overlay_29_022E0354.c +++ b/src/overlay_29_022E0354.c @@ -1,10 +1,10 @@ #include "overlay_29_022E0354.h" -u8 EntityIsValid__022E0354(s32 *entity) +u8 EntityIsValid__022E0354(struct entity *entity) { if (entity == NULL) { return FALSE; } - return *entity != 0; + return entity->type != ENTITY_NOTHING; } diff --git a/src/overlay_29_022E1A1C.c b/src/overlay_29_022E1A1C.c new file mode 100644 index 00000000..b121ac69 --- /dev/null +++ b/src/overlay_29_022E1A1C.c @@ -0,0 +1,10 @@ +#include "overlay_29_022E1A1C.h" + +u8 EntityIsValid__022E1A1C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022E32E8.c b/src/overlay_29_022E32E8.c new file mode 100644 index 00000000..30d3caf1 --- /dev/null +++ b/src/overlay_29_022E32E8.c @@ -0,0 +1,10 @@ +#include "overlay_29_022E32E8.h" + +u8 EntityIsValid__022E32E8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022E37B8.c b/src/overlay_29_022E37B8.c new file mode 100644 index 00000000..45082fc6 --- /dev/null +++ b/src/overlay_29_022E37B8.c @@ -0,0 +1,10 @@ +#include "overlay_29_022E37B8.h" + +u8 EntityIsValid__022E37B8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022E95F4.c b/src/overlay_29_022E95F4.c new file mode 100644 index 00000000..bf24e66c --- /dev/null +++ b/src/overlay_29_022E95F4.c @@ -0,0 +1,10 @@ +#include "overlay_29_022E95F4.h" + +u8 EntityIsValid__022E95F4(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022EC608.c b/src/overlay_29_022EC608.c new file mode 100644 index 00000000..6214c28c --- /dev/null +++ b/src/overlay_29_022EC608.c @@ -0,0 +1,10 @@ +#include "overlay_29_022EC608.h" + +u8 EntityIsValid__022EC608(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022ECDC0.c b/src/overlay_29_022ECDC0.c new file mode 100644 index 00000000..7e200b0a --- /dev/null +++ b/src/overlay_29_022ECDC0.c @@ -0,0 +1,10 @@ +#include "overlay_29_022ECDC0.h" + +u8 EntityIsValid__022ECDC0(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022EE348.c b/src/overlay_29_022EE348.c new file mode 100644 index 00000000..070fc03f --- /dev/null +++ b/src/overlay_29_022EE348.c @@ -0,0 +1,10 @@ +#include "overlay_29_022EE348.h" + +u8 EntityIsValid__022EE348(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022EF7A0.c b/src/overlay_29_022EF7A0.c new file mode 100644 index 00000000..f9c4aace --- /dev/null +++ b/src/overlay_29_022EF7A0.c @@ -0,0 +1,10 @@ +#include "overlay_29_022EF7A0.h" + +u8 EntityIsValid__022EF7A0(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022F0590.c b/src/overlay_29_022F0590.c new file mode 100644 index 00000000..3ae00244 --- /dev/null +++ b/src/overlay_29_022F0590.c @@ -0,0 +1,10 @@ +#include "overlay_29_022F0590.h" + +u8 EntityIsValid__022F0590(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022F528C.c b/src/overlay_29_022F528C.c new file mode 100644 index 00000000..bec1e970 --- /dev/null +++ b/src/overlay_29_022F528C.c @@ -0,0 +1,10 @@ +#include "overlay_29_022F528C.h" + +u8 EntityIsValid__022F528C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022F62A8.c b/src/overlay_29_022F62A8.c new file mode 100644 index 00000000..074990f9 --- /dev/null +++ b/src/overlay_29_022F62A8.c @@ -0,0 +1,10 @@ +#include "overlay_29_022F62A8.h" + +u8 EntityIsValid__022F62A8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022F7364.c b/src/overlay_29_022F7364.c new file mode 100644 index 00000000..ef924596 --- /dev/null +++ b/src/overlay_29_022F7364.c @@ -0,0 +1,10 @@ +#include "overlay_29_022F7364.h" + +u8 EntityIsValid__022F7364(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022FC99C.c b/src/overlay_29_022FC99C.c new file mode 100644 index 00000000..7d45fabe --- /dev/null +++ b/src/overlay_29_022FC99C.c @@ -0,0 +1,10 @@ +#include "overlay_29_022FC99C.h" + +u8 EntityIsValid__022FC99C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_022FED98.c b/src/overlay_29_022FED98.c new file mode 100644 index 00000000..bbc49b26 --- /dev/null +++ b/src/overlay_29_022FED98.c @@ -0,0 +1,10 @@ +#include "overlay_29_022FED98.h" + +u8 EntityIsValid__022FED98(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_023000E4.c b/src/overlay_29_023000E4.c new file mode 100644 index 00000000..2ca25b34 --- /dev/null +++ b/src/overlay_29_023000E4.c @@ -0,0 +1,10 @@ +#include "overlay_29_023000E4.h" + +u8 EntityIsValid__023000E4(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02302A38.c b/src/overlay_29_02302A38.c new file mode 100644 index 00000000..7aea9af8 --- /dev/null +++ b/src/overlay_29_02302A38.c @@ -0,0 +1,10 @@ +#include "overlay_29_02302A38.h" + +u8 EntityIsValid__02302A38(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_023047B8.c b/src/overlay_29_023047B8.c new file mode 100644 index 00000000..64785af8 --- /dev/null +++ b/src/overlay_29_023047B8.c @@ -0,0 +1,10 @@ +#include "overlay_29_023047B8.h" + +u8 EntityIsValid__023047B8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0230558C.c b/src/overlay_29_0230558C.c new file mode 100644 index 00000000..2e0351a0 --- /dev/null +++ b/src/overlay_29_0230558C.c @@ -0,0 +1,10 @@ +#include "overlay_29_0230558C.h" + +u8 EntityIsValid__0230558C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02305C04.c b/src/overlay_29_02305C04.c new file mode 100644 index 00000000..76f5d6b2 --- /dev/null +++ b/src/overlay_29_02305C04.c @@ -0,0 +1,10 @@ +#include "overlay_29_02305C04.h" + +u8 EntityIsValid__02305C04(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02307EF8.c b/src/overlay_29_02307EF8.c new file mode 100644 index 00000000..91bd02a2 --- /dev/null +++ b/src/overlay_29_02307EF8.c @@ -0,0 +1,10 @@ +#include "overlay_29_02307EF8.h" + +u8 EntityIsValid__02307EF8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0230827C.c b/src/overlay_29_0230827C.c new file mode 100644 index 00000000..2a38b4ea --- /dev/null +++ b/src/overlay_29_0230827C.c @@ -0,0 +1,10 @@ +#include "overlay_29_0230827C.h" + +u8 EntityIsValid__0230827C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02308FBC.c b/src/overlay_29_02308FBC.c new file mode 100644 index 00000000..c77be3cf --- /dev/null +++ b/src/overlay_29_02308FBC.c @@ -0,0 +1,10 @@ +#include "overlay_29_02308FBC.h" + +u8 EntityIsValid__02308FBC(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0230E8F0.c b/src/overlay_29_0230E8F0.c new file mode 100644 index 00000000..d2d00ce4 --- /dev/null +++ b/src/overlay_29_0230E8F0.c @@ -0,0 +1,10 @@ +#include "overlay_29_0230E8F0.h" + +u8 EntityIsValid__0230E8F0(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0230F008.c b/src/overlay_29_0230F008.c new file mode 100644 index 00000000..02060a1b --- /dev/null +++ b/src/overlay_29_0230F008.c @@ -0,0 +1,10 @@ +#include "overlay_29_0230F008.h" + +u8 EntityIsValid__0230F008(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02311010.c b/src/overlay_29_02311010.c new file mode 100644 index 00000000..78fde3c3 --- /dev/null +++ b/src/overlay_29_02311010.c @@ -0,0 +1,10 @@ +#include "overlay_29_02311010.h" + +u8 EntityIsValid__02311010(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_023118B4.c b/src/overlay_29_023118B4.c new file mode 100644 index 00000000..5373b1d5 --- /dev/null +++ b/src/overlay_29_023118B4.c @@ -0,0 +1,10 @@ +#include "overlay_29_023118B4.h" + +u8 EntityIsValid__023118B4(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02315118.c b/src/overlay_29_02315118.c new file mode 100644 index 00000000..700e7b2d --- /dev/null +++ b/src/overlay_29_02315118.c @@ -0,0 +1,10 @@ +#include "overlay_29_02315118.h" + +u8 EntityIsValid__02315118(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02318D34.c b/src/overlay_29_02318D34.c new file mode 100644 index 00000000..d29c9872 --- /dev/null +++ b/src/overlay_29_02318D34.c @@ -0,0 +1,10 @@ +#include "overlay_29_02318D34.h" + +u8 EntityIsValid__02318D34(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02318E4C.c b/src/overlay_29_02318E4C.c new file mode 100644 index 00000000..73e71f9f --- /dev/null +++ b/src/overlay_29_02318E4C.c @@ -0,0 +1,10 @@ +#include "overlay_29_02318E4C.h" + +u8 EntityIsValid__02318E4C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02319F8C.c b/src/overlay_29_02319F8C.c new file mode 100644 index 00000000..c5ddce39 --- /dev/null +++ b/src/overlay_29_02319F8C.c @@ -0,0 +1,10 @@ +#include "overlay_29_02319F8C.h" + +u8 EntityIsValid__02319F8C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0231B194.c b/src/overlay_29_0231B194.c new file mode 100644 index 00000000..bd8e4d8e --- /dev/null +++ b/src/overlay_29_0231B194.c @@ -0,0 +1,10 @@ +#include "overlay_29_0231B194.h" + +u8 EntityIsValid__0231B194(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0231CBC8.c b/src/overlay_29_0231CBC8.c new file mode 100644 index 00000000..70b1007d --- /dev/null +++ b/src/overlay_29_0231CBC8.c @@ -0,0 +1,10 @@ +#include "overlay_29_0231CBC8.h" + +u8 EntityIsValid__0231CBC8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0231EDD8.c b/src/overlay_29_0231EDD8.c new file mode 100644 index 00000000..5ebbd0d7 --- /dev/null +++ b/src/overlay_29_0231EDD8.c @@ -0,0 +1,10 @@ +#include "overlay_29_0231EDD8.h" + +u8 EntityIsValid__0231EDD8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0231F570.c b/src/overlay_29_0231F570.c new file mode 100644 index 00000000..6a7504e6 --- /dev/null +++ b/src/overlay_29_0231F570.c @@ -0,0 +1,10 @@ +#include "overlay_29_0231F570.h" + +u8 EntityIsValid__0231F570(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0231FBFC.c b/src/overlay_29_0231FBFC.c new file mode 100644 index 00000000..40aa70f9 --- /dev/null +++ b/src/overlay_29_0231FBFC.c @@ -0,0 +1,10 @@ +#include "overlay_29_0231FBFC.h" + +u8 EntityIsValid__0231FBFC(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232017C.c b/src/overlay_29_0232017C.c new file mode 100644 index 00000000..56ec4e72 --- /dev/null +++ b/src/overlay_29_0232017C.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232017C.h" + +u8 EntityIsValid__0232017C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02320764.c b/src/overlay_29_02320764.c new file mode 100644 index 00000000..38004755 --- /dev/null +++ b/src/overlay_29_02320764.c @@ -0,0 +1,10 @@ +#include "overlay_29_02320764.h" + +u8 EntityIsValid__02320764(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02321438.c b/src/overlay_29_02321438.c new file mode 100644 index 00000000..9e44743b --- /dev/null +++ b/src/overlay_29_02321438.c @@ -0,0 +1,10 @@ +#include "overlay_29_02321438.h" + +u8 EntityIsValid__02321438(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02325620.c b/src/overlay_29_02325620.c new file mode 100644 index 00000000..713f66b8 --- /dev/null +++ b/src/overlay_29_02325620.c @@ -0,0 +1,10 @@ +#include "overlay_29_02325620.h" + +u8 EntityIsValid__02325620(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232800C.c b/src/overlay_29_0232800C.c new file mode 100644 index 00000000..af284b97 --- /dev/null +++ b/src/overlay_29_0232800C.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232800C.h" + +u8 EntityIsValid__0232800C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232A3D8.c b/src/overlay_29_0232A3D8.c new file mode 100644 index 00000000..5ff8cab3 --- /dev/null +++ b/src/overlay_29_0232A3D8.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232A3D8.h" + +u8 EntityIsValid__0232A3D8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232C500.c b/src/overlay_29_0232C500.c new file mode 100644 index 00000000..1b8133de --- /dev/null +++ b/src/overlay_29_0232C500.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232C500.h" + +u8 EntityIsValid__0232C500(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232E250.c b/src/overlay_29_0232E250.c new file mode 100644 index 00000000..57757102 --- /dev/null +++ b/src/overlay_29_0232E250.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232E250.h" + +u8 EntityIsValid__0232E250(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0232E840.c b/src/overlay_29_0232E840.c new file mode 100644 index 00000000..28862ade --- /dev/null +++ b/src/overlay_29_0232E840.c @@ -0,0 +1,10 @@ +#include "overlay_29_0232E840.h" + +u8 EntityIsValid__0232E840(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02333FAC.c b/src/overlay_29_02333FAC.c new file mode 100644 index 00000000..405822c8 --- /dev/null +++ b/src/overlay_29_02333FAC.c @@ -0,0 +1,10 @@ +#include "overlay_29_02333FAC.h" + +u8 EntityIsValid__02333FAC(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_023350D8.c b/src/overlay_29_023350D8.c new file mode 100644 index 00000000..0b6c4163 --- /dev/null +++ b/src/overlay_29_023350D8.c @@ -0,0 +1,10 @@ +#include "overlay_29_023350D8.h" + +u8 EntityIsValid__023350D8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02337CA8.c b/src/overlay_29_02337CA8.c new file mode 100644 index 00000000..adedfbca --- /dev/null +++ b/src/overlay_29_02337CA8.c @@ -0,0 +1,10 @@ +#include "overlay_29_02337CA8.h" + +u8 EntityIsValid__02337CA8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02344AF8.c b/src/overlay_29_02344AF8.c new file mode 100644 index 00000000..7f770602 --- /dev/null +++ b/src/overlay_29_02344AF8.c @@ -0,0 +1,10 @@ +#include "overlay_29_02344AF8.h" + +u8 EntityIsValid__02344AF8(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02345698.c b/src/overlay_29_02345698.c new file mode 100644 index 00000000..0ef6d541 --- /dev/null +++ b/src/overlay_29_02345698.c @@ -0,0 +1,10 @@ +#include "overlay_29_02345698.h" + +u8 EntityIsValid__02345698(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_02347BA4.c b/src/overlay_29_02347BA4.c new file mode 100644 index 00000000..47007c05 --- /dev/null +++ b/src/overlay_29_02347BA4.c @@ -0,0 +1,10 @@ +#include "overlay_29_02347BA4.h" + +u8 EntityIsValid__02347BA4(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0234987C.c b/src/overlay_29_0234987C.c new file mode 100644 index 00000000..02f5c88c --- /dev/null +++ b/src/overlay_29_0234987C.c @@ -0,0 +1,10 @@ +#include "overlay_29_0234987C.h" + +u8 EntityIsValid__0234987C(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0234DDD0.c b/src/overlay_29_0234DDD0.c new file mode 100644 index 00000000..557da947 --- /dev/null +++ b/src/overlay_29_0234DDD0.c @@ -0,0 +1,10 @@ +#include "overlay_29_0234DDD0.h" + +u8 EntityIsValid__0234DDD0(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +} diff --git a/src/overlay_29_0234EC14.c b/src/overlay_29_0234EC14.c new file mode 100644 index 00000000..fec7ca9e --- /dev/null +++ b/src/overlay_29_0234EC14.c @@ -0,0 +1,10 @@ +#include "overlay_29_0234EC14.h" + +u8 EntityIsValid__0234EC14(struct entity *entity) +{ + if (entity == NULL) + { + return FALSE; + } + return entity->type != ENTITY_NOTHING; +}