From 789278dab496e0a4323647054aa742a17ff27b46 Mon Sep 17 00:00:00 2001 From: Chesyon <55322011+Chesyon@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:08:32 -0400 Subject: [PATCH] Decomped DexNumbersEqual --- asm/include/main_02054C24.inc | 76 - asm/include/main_02054E4C.inc | 77 + asm/main_02054C24.s | 5201 --------------------------------- asm/main_02054E4C.s | 5166 ++++++++++++++++++++++++++++++++ include/main_02054DC4.h | 8 + main.lsf | 2 + src/main_02054DC4.c | 17 + 7 files changed, 5270 insertions(+), 5277 deletions(-) create mode 100644 asm/include/main_02054E4C.inc create mode 100644 asm/main_02054E4C.s create mode 100644 include/main_02054DC4.h create mode 100644 src/main_02054DC4.c diff --git a/asm/include/main_02054C24.inc b/asm/include/main_02054C24.inc index bddb8db2..360e27e4 100644 --- a/asm/include/main_02054C24.inc +++ b/asm/include/main_02054C24.inc @@ -1,82 +1,6 @@ #pragma once -.public _020A190C -.public _020A333C -.public _020A3340 -.public _020A3350 -.public _020A336C -.public _020A3398 -.public _020A33B8 -.public _020A33D4 -.public _020A340C -.public _020A343C -.public _020A344C -.public _020A3450 -.public _020A3468 -.public _020AFC28 -.public _020AFC4C -.public _020B0A4C -.public _022B5788 -.public _022B578C -.public AddMoneyCarried -.public CleanStickyItemsInBag -.public CopyAndInterleaveWrapper -.public CopyTacticString -.public Debug_Print0 -.public DirectoryFileMngr_OpenDirectoryFile .public FemaleToMaleForm -.public GetBaseDefensiveStat .public GetBaseFormBurmyWormadamShellosGastrodonCherrim -.public GetBaseFormCastformCherrimDeoxys -.public GetBaseHp -.public GetBaseOffensiveStat -.public GetBodySize .public GetDexNumber -.public GetGameMode -.public GetIqGroup -.public GetItemAtIdx -.public GetItemMoveId16 -.public GetMaxMembersAllowed -.public GetMaxPp -.public GetMonsterGender -.public GetNameRaw -.public GetPerformanceFlagWithChecks -.public GetShadowSize -.public GroundToDungeonMoveset -.public HandleSir0Translation -.public IQ_GROUP_SKILLS -.public IQ_SKILL_RESTRICTIONS -.public IQ_SKILLS -.public IqSkillFlagTest .public IsDeoxys -.public IsLevelResetDungeon -.public IsSkyExclusiveDungeon .public IsUnown -.public ItemZInit -.public MemZero -.public RemoveHolderForItemInBag -.public RemovePokeItemsInBag -.public SetHolderForItemInBag -.public SetPokemonJoined -.public ShuffleHiddenPower -.public SprintfStatic__02054A60 -.public StrcmpMonsterName -.public StrncpyName -.public StrncpySimple -.public StrncpySimpleNoPadSafe -.public sub_0200D8AC -.public sub_0200FA0C -.public sub_0201B43C -.public sub_0201B9F8 -.public sub_0201F598 -.public sub_0204E584 -.public sub_02052CF4 -.public sub_02052E2C -.public sub_020530D4 -.public sub_02053174 -.public sub_0205349C -.public sub_020534BC -.public sub_02053D1C -.public sub_02053F10 -.public TACTICS_UNLOCK_LEVEL_TABLE -.public TEAM_MEMBER_TABLE_PTR -.public UnloadFile diff --git a/asm/include/main_02054E4C.inc b/asm/include/main_02054E4C.inc new file mode 100644 index 00000000..d102867c --- /dev/null +++ b/asm/include/main_02054E4C.inc @@ -0,0 +1,77 @@ +#pragma once +.public AddMoneyCarried +.public CleanStickyItemsInBag +.public CopyAndInterleaveWrapper +.public CopyTacticString +.public Debug_Print0 +.public DirectoryFileMngr_OpenDirectoryFile +.public GetBaseDefensiveStat +.public GetBaseFormCastformCherrimDeoxys +.public GetBaseHp +.public GetBaseOffensiveStat +.public GetBodySize +.public GetGameMode +.public GetIqGroup +.public GetItemAtIdx +.public GetItemMoveId16 +.public GetMaxMembersAllowed +.public GetMaxPp +.public GetMonsterGender +.public GetNameRaw +.public GetPerformanceFlagWithChecks +.public GetShadowSize +.public GroundToDungeonMoveset +.public HandleSir0Translation +.public IQ_GROUP_SKILLS +.public IQ_SKILLS +.public IQ_SKILL_RESTRICTIONS +.public IqSkillFlagTest +.public IsLevelResetDungeon +.public IsSkyExclusiveDungeon +.public ItemZInit +.public MemZero +.public RemoveHolderForItemInBag +.public RemovePokeItemsInBag +.public SetHolderForItemInBag +.public SetPokemonJoined +.public ShuffleHiddenPower +.public SprintfStatic__02054A60 +.public StrcmpMonsterName +.public StrncpyName +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.public TACTICS_UNLOCK_LEVEL_TABLE +.public TEAM_MEMBER_TABLE_PTR +.public UnloadFile +.public _020A190C +.public _020A333C +.public _020A3340 +.public _020A3350 +.public _020A336C +.public _020A3398 +.public _020A33B8 +.public _020A33D4 +.public _020A340C +.public _020A343C +.public _020A344C +.public _020A3450 +.public _020A3468 +.public _020AFC28 +.public _020AFC4C +.public _020B0A4C +.public _022B5788 +.public _022B578C +.public sub_0200D8AC +.public sub_0200FA0C +.public sub_0201B43C +.public sub_0201B9F8 +.public sub_0201F598 +.public sub_0204E584 +.public sub_02052CF4 +.public sub_02052E2C +.public sub_020530D4 +.public sub_02053174 +.public sub_0205349C +.public sub_020534BC +.public sub_02053D1C +.public sub_02053F10 diff --git a/asm/main_02054C24.s b/asm/main_02054C24.s index ee393848..8f101238 100644 --- a/asm/main_02054C24.s +++ b/asm/main_02054C24.s @@ -119,5204 +119,3 @@ _02054DB8: .word 0x000001BF _02054DBC: .word 0x000001C2 _02054DC0: .word 0x000001CE arm_func_end BaseFormsEqual - - arm_func_start DexNumbersEqual -DexNumbersEqual: ; 0x02054DC4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r1 - bl FemaleToMaleForm - mov r5, r0 - mov r0, r4 - bl FemaleToMaleForm - mov r4, r0 - mov r0, r5 - bl GetBaseFormCastformDeoxysCherrim - mov r5, r0 - mov r0, r4 - bl GetBaseFormCastformDeoxysCherrim - mov r6, r0 - cmp r5, r6 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - bl IsUnown - cmp r0, #0 - beq _02054E28 - mov r0, r6 - bl IsUnown - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, pc} -_02054E28: - mov r0, r5 - bl GetDexNumber - mov r4, r0 - mov r0, r6 - bl GetDexNumber - cmp r4, r0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DexNumbersEqual - - arm_func_start GendersEqual -GendersEqual: ; 0x02054E4C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl GetMonsterGender - mov r4, r0 - mov r0, r5 - bl GetMonsterGender - cmp r4, r0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GendersEqual - - arm_func_start GendersEqualNotGenderless -GendersEqualNotGenderless: ; 0x02054E78 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl GetMonsterGender - cmp r0, #3 - beq _02054EC0 - mov r0, r5 - bl GetMonsterGender - cmp r0, #3 - beq _02054EC0 - mov r0, r4 - bl GetMonsterGender - mov r4, r0 - mov r0, r5 - bl GetMonsterGender - cmp r4, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_02054EC0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GendersEqualNotGenderless - - arm_func_start GendersNotEqualNotGenderless -GendersNotEqualNotGenderless: ; 0x02054EC8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl GetMonsterGender - cmp r0, #3 - beq _02054F10 - mov r0, r5 - bl GetMonsterGender - cmp r0, #3 - beq _02054F10 - mov r0, r4 - bl GetMonsterGender - mov r4, r0 - mov r0, r5 - bl GetMonsterGender - cmp r4, r0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02054F10: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end GendersNotEqualNotGenderless - - arm_func_start sub_02054F18 -sub_02054F18: ; 0x02054F18 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add r0, r0, #0xea - add r0, r0, #0xfd00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #2 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end sub_02054F18 - - arm_func_start sub_02054F44 -sub_02054F44: ; 0x02054F44 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r4, r2 - add r0, sp, #0 - mov r2, #0xa - bl StrncpySimpleNoPadSafe - cmp r4, #0 - bne _02054F7C - ldr r1, _02054F98 ; =_020A333C - add r2, sp, #0 - mov r0, r5 - bl SprintfStatic__02054A60 - b _02054F90 -_02054F7C: - ldr r1, _02054F9C ; =_020A3340 - add r3, sp, #0 - mov r0, r5 - mov r2, r4 - bl SprintfStatic__02054A60 -_02054F90: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02054F98: .word _020A333C -_02054F9C: .word _020A3340 - arm_func_end sub_02054F44 - - arm_func_start sub_02054FA0 -sub_02054FA0: ; 0x02054FA0 - ldr ip, _02054FB4 ; =sub_02054F44 - cmp r2, #0 - movne r2, #0x59 - moveq r2, #0x46 - bx ip - .align 2, 0 -_02054FB4: .word sub_02054F44 - arm_func_end sub_02054FA0 - - arm_func_start sub_02054FB8 -sub_02054FB8: ; 0x02054FB8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrsh r3, [r4] - mov r2, #1 - add r0, sp, #0 - str r3, [sp] - rsb r3, r2, #0x3e8 - bl sub_02055088 - ldr r1, [sp] - strh r1, [r4] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_02054FB8 - - arm_func_start sub_02054FEC -sub_02054FEC: ; 0x02054FEC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrb r3, [r4] - add r0, sp, #0 - mov r2, #1 - str r3, [sp] - mov r3, #0xff - bl sub_02055088 - ldr r1, [sp] - strb r1, [r4] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_02054FEC - - arm_func_start sub_02055020 -sub_02055020: ; 0x02055020 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrb r3, [r4] - add r0, sp, #0 - mov r2, #1 - str r3, [sp] - mov r3, #0xff - bl sub_02055088 - ldr r1, [sp] - strb r1, [r4] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_02055020 - - arm_func_start sub_02055054 -sub_02055054: ; 0x02055054 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldrsh r3, [r4] - mov r2, #1 - add r0, sp, #0 - str r3, [sp] - rsb r3, r2, #0x3e8 - bl sub_02055088 - ldr r1, [sp] - strh r1, [r4] - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end sub_02055054 - - arm_func_start sub_02055088 -sub_02055088: ; 0x02055088 - cmp r1, #0 - ble _020550B4 - ldr r2, [r0] - cmp r2, r3 - moveq r0, #0 - bxeq lr - add r1, r2, r1 - str r1, [r0] - cmp r1, r3 - strgt r3, [r0] - b _020550D4 -_020550B4: - ldr r3, [r0] - cmp r3, r2 - moveq r0, #0 - bxeq lr - add r1, r3, r1 - str r1, [r0] - cmp r1, r2 - strlt r2, [r0] -_020550D4: - mov r0, #1 - bx lr - arm_func_end sub_02055088 - - arm_func_start sub_020550DC -sub_020550DC: ; 0x020550DC - bx lr - arm_func_end sub_020550DC - - arm_func_start sub_020550E0 -sub_020550E0: ; 0x020550E0 - ldr r0, _0205510C ; =TEAM_MEMBER_TABLE_PTR - mov r3, #0 - ldr r2, [r0] - ldr r0, _02055110 ; =0x0000022B - mov r1, r3 -_020550F4: - add r3, r3, #1 - cmp r3, r0 - strb r1, [r2], #0x44 - blt _020550F4 - ldr ip, _02055114 ; =sub_0205523C - bx ip - .align 2, 0 -_0205510C: .word TEAM_MEMBER_TABLE_PTR -_02055110: .word 0x0000022B -_02055114: .word sub_0205523C - arm_func_end sub_020550E0 - - arm_func_start sub_02055118 -sub_02055118: ; 0x02055118 - ldr r0, _02055140 ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0 - ldr r1, [r0] - ldr ip, _02055144 ; =sub_0205523C - strb r2, [r1, #0x88] - ldr r1, [r0] - strb r2, [r1, #0xcc] - ldr r0, [r0] - strb r2, [r0, #0x110] - bx ip - .align 2, 0 -_02055140: .word TEAM_MEMBER_TABLE_PTR -_02055144: .word sub_0205523C - arm_func_end sub_02055118 - - arm_func_start IsMonsterOnTeam -IsMonsterOnTeam: ; 0x02055148 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - bl GetGameMode - cmp r0, #3 -#ifdef JAPAN - mov r6, #1 - bne _020554FC -#else - bne _020551C0 -#endif - ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR - mov r8, #0 - ldr r7, [r0] - mov r5, r8 -#ifndef JAPAN - mov r6, #1 -#endif - ldr r4, _02055234 ; =_020B0A4C - b _020551B8 -_0205517C: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _020551B0 - ldrsh r0, [r7, #4] - ldr r2, [r4, sb, lsl #2] - mov r1, sl - blx r2 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_020551B0: - add r8, r8, #1 - add r7, r7, #0x44 -_020551B8: - cmp r8, #2 - blt _0205517C -#ifdef JAPAN - b _020551C0 -_020554FC: - ldr r0, _02055230 ; =_020B0A48 - mov r8, #2 - ldr r0, [r0] - mov r5, #0 - add r7, r0, #0x88 - ldr r4, _02055234 ; =_020B0A4C - b _02055554 -_02055518: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _0205554C - ldrsh r0, [r7, #4] - ldr r2, [r4, sb, lsl #2] - mov r1, sl - blx r2 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0205554C: - add r8, r8, #1 - add r7, r7, #0x44 -_02055554: - cmp r8, #5 - blt _02055518 -#endif -_020551C0: - ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR - mov r8, #5 - ldr r0, [r0] - mov fp, #0 - add r7, r0, #0x154 - mov r6, #1 - ldr r5, _02055234 ; =_020B0A4C - ldr r4, _02055238 ; =0x0000022B - b _02055220 -_020551E4: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, fp - tst r0, #0xff - beq _02055218 - ldrsh r0, [r7, #4] - ldr r2, [r5, sb, lsl #2] - mov r1, sl - blx r2 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02055218: - add r8, r8, #1 - add r7, r7, #0x44 -_02055220: - cmp r8, r4 - blt _020551E4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02055230: .word TEAM_MEMBER_TABLE_PTR -_02055234: .word _020B0A4C -_02055238: .word 0x0000022B - arm_func_end IsMonsterOnTeam - - arm_func_start sub_0205523C -sub_0205523C: ; 0x0205523C - stmdb sp!, {r3, lr} - mov r0, #0x214 - mov r1, #0 - bl IsMonsterOnTeam - cmp r0, #0 - ldrne r1, _02055268 ; =0x0000022B - ldrne r0, _0205526C ; =_022B5788 - ldreq r1, _02055270 ; =0x0000022A - ldreq r0, _0205526C ; =_022B5788 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02055268: .word 0x0000022B -_0205526C: .word _022B5788 -_02055270: .word 0x0000022A - arm_func_end sub_0205523C - - arm_func_start GetNbRecruited -GetNbRecruited: ; 0x02055274 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _02055384 ; =0x00000906 - mov r4, r0 - bl MemZero - bl GetGameMode - cmp r0, #3 - mov r3, #1 - bne _020552E0 - ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR - mov lr, #0 - ldr ip, [r0] - mov r2, lr -_020552A4: - ldrb r0, [ip] - add lr, lr, #1 - tst r0, #1 - movne r0, r3 - moveq r0, r2 - tst r0, #0xff - ldrnesh r0, [ip, #4] - add ip, ip, #0x44 - movne r1, r0, lsl #1 - ldrnesh r0, [r4, r1] - addne r0, r0, #1 - strneh r0, [r4, r1] - cmp lr, #2 - blt _020552A4 - b _0205532C -_020552E0: - ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR - mov r5, #2 - ldr r0, [r0] - mov r2, #0 - add ip, r0, #0x88 -_020552F4: - ldrb r0, [ip] - add r5, r5, #1 - tst r0, #1 - movne r0, r3 - moveq r0, r2 - tst r0, #0xff - ldrnesh r0, [ip, #4] - add ip, ip, #0x44 - movne r1, r0, lsl #1 - ldrnesh r0, [r4, r1] - addne r0, r0, #1 - strneh r0, [r4, r1] - cmp r5, #5 - blt _020552F4 -_0205532C: - ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR - mov r5, #5 - ldr r0, [r0] - mov r3, #0 - add lr, r0, #0x154 - ldr r0, _0205538C ; =0x0000022B - mov ip, #1 -_02055348: - ldrb r1, [lr] - add r5, r5, #1 - tst r1, #1 - movne r1, ip - moveq r1, r3 - tst r1, #0xff - ldrnesh r1, [lr, #4] - add lr, lr, #0x44 - movne r2, r1, lsl #1 - ldrnesh r1, [r4, r2] - addne r1, r1, #1 - strneh r1, [r4, r2] - cmp r5, r0 - blt _02055348 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02055384: .word 0x00000906 -_02055388: .word TEAM_MEMBER_TABLE_PTR -_0205538C: .word 0x0000022B - arm_func_end GetNbRecruited - - arm_func_start IsValidTeamMember -IsValidTeamMember: ; 0x02055390 - stmdb sp!, {r4, lr} - ldr r1, _0205540C ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mov r0, #0x44 - smulbb r0, r4, r0 - ldr r1, [r1] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02055404 - cmp r4, #5 - bge _020553FC - bl GetGameMode - cmp r0, #3 - bne _020553EC - cmp r4, #2 - cmpne r4, #3 - cmpne r4, #4 - beq _020553FC - mov r0, #0 - ldmia sp!, {r4, pc} -_020553EC: - cmp r4, #0 - cmpne r4, #1 - movne r0, #0 - ldmneia sp!, {r4, pc} -_020553FC: - mov r0, #1 - ldmia sp!, {r4, pc} -_02055404: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0205540C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end IsValidTeamMember - - arm_func_start sub_02055410 -sub_02055410: ; 0x02055410 - stmdb sp!, {r4, lr} - ldr r1, _02055470 ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mov r0, #0x44 - smulbb r0, r4, r0 - ldr r1, [r1] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02055468 - bl GetGameMode - cmp r0, #3 - bne _0205545C - cmp r4, #2 - bne _02055468 - mov r0, #1 - ldmia sp!, {r4, pc} -_0205545C: - cmp r4, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_02055468: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02055470: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02055410 - - arm_func_start sub_02055474 -sub_02055474: ; 0x02055474 - stmdb sp!, {r4, lr} - ldr r1, _020554D4 ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mov r0, #0x44 - smulbb r0, r4, r0 - ldr r1, [r1] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _020554CC - bl GetGameMode - cmp r0, #3 - bne _020554C0 - cmp r4, #3 - bne _020554CC - mov r0, #1 - ldmia sp!, {r4, pc} -_020554C0: - cmp r4, #1 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_020554CC: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020554D4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02055474 - - arm_func_start sub_020554D8 -sub_020554D8: ; 0x020554D8 - stmdb sp!, {r4, lr} - ldr r1, _02055524 ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mov r0, #0x44 - smulbb r0, r4, r0 - ldr r1, [r1] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0205551C - bl GetGameMode - cmp r0, #3 - cmpeq r4, #4 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_0205551C: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02055524: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020554D8 - - arm_func_start IsMainCharacter -IsMainCharacter: ; 0x02055528 - stmdb sp!, {r4, lr} - ldr r1, _020555A4 ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mov r0, #0x44 - smulbb r0, r4, r0 - ldr r1, [r1] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0205559C - cmp r4, #5 - bge _0205559C - bl GetGameMode - cmp r0, #3 - bne _02055584 - cmp r4, #2 - cmpne r4, #3 - cmpne r4, #4 - beq _02055594 - mov r0, #0 - ldmia sp!, {r4, pc} -_02055584: - cmp r4, #0 - cmpne r4, #1 - movne r0, #0 - ldmneia sp!, {r4, pc} -_02055594: - mov r0, #1 - ldmia sp!, {r4, pc} -_0205559C: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020555A4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end IsMainCharacter - - arm_func_start GetTeamMember -GetTeamMember: ; 0x020555A8 - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - bxeq lr - ldr r2, _020555CC ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - bx lr - .align 2, 0 -_020555CC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetTeamMember - - arm_func_start sub_020555D0 -sub_020555D0: ; 0x020555D0 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02055648 ; =TEAM_MEMBER_TABLE_PTR - mov r5, #0 - ldr r2, [r2] - mov r6, #5 - add r4, r2, #0x154 - mov ip, r5 - mov lr, #1 - ldr r2, _0205564C ; =0x0000022B - b _02055638 -_020555F8: - ldrb r3, [r4] - tst r3, #1 - movne r3, lr - moveq r3, ip - tst r3, #0xff - beq _02055630 - ldrsh r3, [r4, #4] - cmp r3, r0 - bne _02055630 - cmp r5, r1 - moveq r0, r6, lsl #0x10 - moveq r0, r0, asr #0x10 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 -_02055630: - add r6, r6, #1 - add r4, r4, #0x44 -_02055638: - cmp r6, r2 - blt _020555F8 - mvn r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02055648: .word TEAM_MEMBER_TABLE_PTR -_0205564C: .word 0x0000022B - arm_func_end sub_020555D0 - - arm_func_start GetHeroMemberIdx -GetHeroMemberIdx: ; 0x02055650 - ldr r0, _02055678 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldrb r0, [r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #0 - mvneq r0, #0 - bx lr - .align 2, 0 -_02055678: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetHeroMemberIdx - - arm_func_start GetPartnerMemberIdx -GetPartnerMemberIdx: ; 0x0205567C - ldr r0, _020556A4 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x44] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #1 - mvneq r0, #0 - bx lr - .align 2, 0 -_020556A4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetPartnerMemberIdx - - arm_func_start GetMainCharacter1MemberIdx -GetMainCharacter1MemberIdx: ; 0x020556A8 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - moveq r0, #2 - ldr r2, _020556E8 ; =TEAM_MEMBER_TABLE_PTR - movne r0, #0 - mov r1, #0x44 - smulbb r1, r0, r1 - ldr r2, [r2] - ldrb r1, [r2, r1] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - mvneq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020556E8: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter1MemberIdx - - arm_func_start GetMainCharacter2MemberIdx -GetMainCharacter2MemberIdx: ; 0x020556EC - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - moveq r0, #3 - ldr r2, _0205572C ; =TEAM_MEMBER_TABLE_PTR - movne r0, #1 - mov r1, #0x44 - smulbb r1, r0, r1 - ldr r2, [r2] - ldrb r1, [r2, r1] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - mvneq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0205572C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter2MemberIdx - - arm_func_start GetMainCharacter3MemberIdx -GetMainCharacter3MemberIdx: ; 0x02055730 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0205576C ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldrb r0, [r0, #0x110] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - movne r0, #4 - mvneq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0205576C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter3MemberIdx - - arm_func_start GetHero -GetHero: ; 0x02055770 - ldr r0, _02055794 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldrb r1, [r0] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - moveq r0, #0 - bx lr - .align 2, 0 -_02055794: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetHero - - arm_func_start GetPartner -GetPartner: ; 0x02055798 - ldr r0, _020557C0 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r0] - ldrb r0, [r1, #0x44] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r0, r1, #0x44 - moveq r0, #0 - bx lr - .align 2, 0 -_020557C0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetPartner - - arm_func_start GetMainCharacter1 -GetMainCharacter1: ; 0x020557C4 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - moveq r2, #2 - ldr r1, _02055808 ; =TEAM_MEMBER_TABLE_PTR - movne r2, #0 - mov r0, #0x44 - smulbb r2, r2, r0 - ldr r1, [r1] - ldrb r0, [r1, r2] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r0, r1, r2 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02055808: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter1 - - arm_func_start GetMainCharacter2 -GetMainCharacter2: ; 0x0205580C - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - moveq r2, #3 - ldr r1, _02055850 ; =TEAM_MEMBER_TABLE_PTR - movne r2, #1 - mov r0, #0x44 - smulbb r2, r2, r0 - ldr r1, [r1] - ldrb r0, [r1, r2] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r0, r1, r2 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02055850: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter2 - - arm_func_start GetMainCharacter3 -GetMainCharacter3: ; 0x02055854 - stmdb sp!, {r3, lr} - bl GetGameMode - cmp r0, #3 - movne r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02055890 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r0] - ldrb r0, [r1, #0x110] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r0, r1, #0x110 - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02055890: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetMainCharacter3 - - arm_func_start sub_02055894 -sub_02055894: ; 0x02055894 - ldr r1, _020558EC ; =TEAM_MEMBER_TABLE_PTR - mov r3, #0 - ldr r2, [r1] - ldr r1, _020558F0 ; =0x0000022B - b _020558DC -_020558A8: - cmp r2, r0 - bne _020558D4 - ldrb r0, [r2] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _020558E4 - mov r0, r3, lsl #0x10 - mov r0, r0, asr #0x10 - bx lr -_020558D4: - add r3, r3, #1 - add r2, r2, #0x44 -_020558DC: - cmp r3, r1 - blt _020558A8 -_020558E4: - mvn r0, #0 - bx lr - .align 2, 0 -_020558EC: .word TEAM_MEMBER_TABLE_PTR -_020558F0: .word 0x0000022B - arm_func_end sub_02055894 - - arm_func_start GetFirstMatchingMemberIdx -GetFirstMatchingMemberIdx: ; 0x020558F4 - stmdb sp!, {r4, lr} - ldr r1, _0205595C ; =TEAM_MEMBER_TABLE_PTR - mov r4, #5 - ldr r1, [r1] - mov r3, #0 - add lr, r1, #0x154 - mov ip, #1 - ldr r1, _02055960 ; =0x0000022B - b _0205594C -_02055918: - ldrb r2, [lr] - tst r2, #1 - movne r2, ip - moveq r2, r3 - tst r2, #0xff - beq _02055944 - ldrsh r2, [lr, #4] - cmp r2, r0 - moveq r0, r4, lsl #0x10 - moveq r0, r0, asr #0x10 - ldmeqia sp!, {r4, pc} -_02055944: - add r4, r4, #1 - add lr, lr, #0x44 -_0205594C: - cmp r4, r1 - blt _02055918 - mvn r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0205595C: .word TEAM_MEMBER_TABLE_PTR -_02055960: .word 0x0000022B - arm_func_end GetFirstMatchingMemberIdx - - arm_func_start GetFirstEmptyMemberIdx -GetFirstEmptyMemberIdx: ; 0x02055964 - stmdb sp!, {r3, lr} - ldr r1, _020559CC ; =TEAM_MEMBER_TABLE_PTR - cmp r0, #0x214 - ldr r0, [r1] - ldreq lr, _020559D0 ; =0x0000022B - add r3, r0, #0x154 - ldrne r0, _020559D4 ; =_022B5788 - mov ip, #5 - ldrne lr, [r0] - mov r0, #0 - mov r1, #1 - b _020559BC -_02055994: - ldrb r2, [r3] - tst r2, #1 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - moveq r0, ip, lsl #0x10 - moveq r0, r0, asr #0x10 - ldmeqia sp!, {r3, pc} - add ip, ip, #1 - add r3, r3, #0x44 -_020559BC: - cmp ip, lr - blt _02055994 - mvn r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_020559CC: .word TEAM_MEMBER_TABLE_PTR -_020559D0: .word 0x0000022B -_020559D4: .word _022B5788 - arm_func_end GetFirstEmptyMemberIdx - - arm_func_start sub_020559D8 -sub_020559D8: ; 0x020559D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r1, _02055B18 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0 - ldr lr, [r1] - mov r8, r0 - mov r2, r4 - mov r3, #1 - mvn r1, #0 -_020559F8: - ldrb r0, [lr] - add lr, lr, #0x44 - tst r0, #1 - movne r0, r3 - moveq r0, r2 - tst r0, #0xff - mov r0, r4, lsl #1 - strneh r4, [r8, r0] - add r4, r4, #1 - streqh r1, [r8, r0] - cmp r4, #5 - blt _020559F8 - mov r2, #0 - mov r3, #1 - ldr r0, _02055B1C ; =0x0000022B - b _02055B0C -_02055A38: - ldrb r1, [lr] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - bne _02055AFC - mvn ip, #0 - mov r0, r4, lsl #1 - mov r7, lr - mov r6, r4 - strh ip, [r8, r0] - add lr, lr, #0x44 - add r4, r4, #1 - add sb, ip, #0x22c - b _02055AD4 -_02055A74: - ldrb r0, [lr] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02055AC4 - mov r5, r7 - mov fp, lr - add r7, r7, #0x44 - mov sl, #4 -_02055A9C: - ldmia fp!, {r0, r1, r2, r3} - stmia r5!, {r0, r1, r2, r3} - subs sl, sl, #1 - bne _02055A9C - ldr r0, [fp] - str r0, [r5] - mov r0, r4, lsl #1 - strh r6, [r8, r0] - add r6, r6, #1 - b _02055ACC -_02055AC4: - mov r0, r4, lsl #1 - strh ip, [r8, r0] -_02055ACC: - add r4, r4, #1 - add lr, lr, #0x44 -_02055AD4: - cmp r4, sb - blt _02055A74 - mov r1, #0 - ldr r0, _02055B1C ; =0x0000022B - b _02055AF0 -_02055AE8: - strb r1, [r7], #0x44 - add r6, r6, #1 -_02055AF0: - cmp r6, r0 - blt _02055AE8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02055AFC: - mov r1, r4, lsl #1 - strh r4, [r8, r1] - add r4, r4, #1 - add lr, lr, #0x44 -_02055B0C: - cmp r4, r0 - blt _02055A38 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02055B18: .word TEAM_MEMBER_TABLE_PTR -_02055B1C: .word 0x0000022B - arm_func_end sub_020559D8 - - arm_func_start sub_02055B20 -sub_02055B20: ; 0x02055B20 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02055B74 ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x44 - smulbb r4, r0, r1 - cmp r0, #5 - ldr r5, [r2] - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - ldrb r1, [r5, r4] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - bl sub_020564B0 - cmp r0, #0 - mov r0, #0 - streqb r0, [r5, r4] - moveq r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02055B74: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02055B20 - - arm_func_start sub_02055B78 -sub_02055B78: ; 0x02055B78 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x58 - ldr r4, _02055CC4 ; =TEAM_MEMBER_TABLE_PTR - mov lr, #1 - mov r6, r1 - mov r7, r0 - mov ip, #0 - ldr r4, [r4] - mov r1, #0x44 - mov r0, r6 - mov r5, r3 - strb lr, [sp, #0x14] - strb r2, [sp, #0x16] - strb ip, [sp, #0x17] - strb lr, [sp, #0x15] - smlabb r4, r7, r1, r4 - bl GetBaseHp - strh r0, [sp, #0x1e] - mov r0, r6 - mov r1, #0 - bl GetBaseOffensiveStat - strb r0, [sp, #0x20] - mov r0, r6 - mov r1, #1 - bl GetBaseOffensiveStat - strb r0, [sp, #0x21] - mov r0, r6 - mov r1, #0 - bl GetBaseDefensiveStat - strb r0, [sp, #0x22] - mov r0, r6 - mov r1, #1 - bl GetBaseDefensiveStat - strb r0, [sp, #0x23] - mov r0, #0 - mov r2, #1 - strb r0, [sp, #0x1a] - strb r0, [sp, #0x1b] - add r0, sp, #0x28 - mov r1, r6 - strh r2, [sp, #0x1c] - bl EnableAllLearnableIqSkills - mov r2, #0 - add r0, sp, #0x36 - mov r1, r6 - strh r6, [sp, #0x18] - str r2, [sp, #0x24] - strb r2, [sp, #0x34] - bl sub_02053F10 - cmp r5, #0 - beq _02055C58 - add r0, sp, #0x4e - mov r1, r5 - mov r2, #0xa - bl StrncpySimple - b _02055C74 -_02055C58: - add r0, sp, #0 - mov r1, r6 - bl GetNameRaw - add r0, sp, #0x4e - add r1, sp, #0 - mov r2, #0xa - bl StrncpyName -_02055C74: - add r6, sp, #0x14 - mov r5, #4 -_02055C7C: - ldmia r6!, {r0, r1, r2, r3} - stmia r4!, {r0, r1, r2, r3} - subs r5, r5, #1 - bne _02055C7C - ldr r0, [r6] - cmp r7, #0 - str r0, [r4] - cmpne r7, #2 - mov r0, r7 - bne _02055CAC - bl TryAddMonsterToActiveTeam - b _02055CB0 -_02055CAC: - bl sub_02056554 -_02055CB0: - ldr r0, _02055CC8 ; =_020A3350 - mov r1, r7 - bl Debug_Print0 - add sp, sp, #0x58 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02055CC4: .word TEAM_MEMBER_TABLE_PTR -_02055CC8: .word _020A3350 - arm_func_end sub_02055B78 - - arm_func_start sub_02055CCC -sub_02055CCC: ; 0x02055CCC - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - ldrsh r0, [r5, #4] - bl GetFirstEmptyMemberIdx - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - beq _02055D38 - ldr r1, _02055D40 ; =TEAM_MEMBER_TABLE_PTR - mov r0, #0x44 - ldr r1, [r1] - mov r6, r5 - smlabb lr, r4, r0, r1 - mov ip, #4 -_02055D04: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02055D04 - ldr r0, [r6] - str r0, [lr] - ldrsh r0, [r5, #4] - bl SetPokemonJoined - ldrsh r0, [r5, #4] - cmp r0, #0x214 - ldreq r1, _02055D44 ; =0x0000022B - ldreq r0, _02055D48 ; =_022B5788 - streq r1, [r0] -_02055D38: - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02055D40: .word TEAM_MEMBER_TABLE_PTR -_02055D44: .word 0x0000022B -_02055D48: .word _022B5788 - arm_func_end sub_02055CCC - - arm_func_start sub_02055D4C -sub_02055D4C: ; 0x02055D4C - stmdb sp!, {r3, lr} - bl sub_02055CCC - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldr r2, _02055D78 ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - smlabb r0, r0, r1, r2 - ldmia sp!, {r3, pc} - .align 2, 0 -_02055D78: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02055D4C - - arm_func_start sub_02055D7C -sub_02055D7C: ; 0x02055D7C - stmdb sp!, {r3, r4, r5, lr} - mvn r2, #0 - mov r5, r1 - cmp r0, r2 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r2, _02055DCC ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - mov r4, r5 - smlabb lr, r0, r1, r2 - mov ip, #4 -_02055DA8: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02055DA8 - ldr r0, [r4] - str r0, [lr] - ldrsh r0, [r5, #4] - bl SetPokemonJoined - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02055DCC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02055D7C - - arm_func_start sub_02055DD0 -sub_02055DD0: ; 0x02055DD0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x4c - ldrb ip, [sp, #0x58] - mov r5, r0 - mov r4, r1 - mov lr, r2 - str r3, [sp] - add r0, sp, #8 - mov r1, r5 - mov r2, r4 - mov r3, lr - str ip, [sp, #4] - bl sub_02052CF4 - add r0, sp, #8 - bl sub_02055D4C - add sp, sp, #0x4c - ldmia sp!, {r4, r5, pc} - arm_func_end sub_02055DD0 - - arm_func_start sub_02055E14 -sub_02055E14: ; 0x02055E14 - stmdb sp!, {r4, r5, r6, lr} - mov r3, r1 - ldrb r1, [r3] - mov r4, r0 - add r0, r3, #0x14 - and r1, r1, #1 - strh r1, [r4] - ldrb r1, [r3, #1] - add r6, r4, #0x18 - add r5, r3, #0x22 - strb r1, [r4, #4] - ldrb r1, [r3, #2] - add lr, r4, #0x2a - mov ip, #0xc - strb r1, [r4, #5] - ldrb r1, [r3, #3] - strb r1, [r4, #6] - ldrsh r1, [r3, #4] - strh r1, [r4, #8] - ldrb r1, [r3, #6] - strb r1, [r4, #0xa] - ldrb r1, [r3, #7] - strb r1, [r4, #0xb] - ldrsh r1, [r3, #8] - strh r1, [r4, #0xc] - ldrsh r1, [r3, #0xa] - strh r1, [r4, #0xe] - ldrb r1, [r3, #0xc] - strb r1, [r4, #0x10] - ldrb r1, [r3, #0xd] - strb r1, [r4, #0x11] - ldrb r1, [r3, #0xe] - strb r1, [r4, #0x12] - ldrb r1, [r3, #0xf] - strb r1, [r4, #0x13] - ldmia r0, {r0, r1, r2} - stmia r6, {r0, r1, r2} - ldr r0, [r3, #0x10] - str r0, [r4, #0x14] - ldrb r0, [r3, #0x20] - strb r0, [r4, #0x24] -_02055EB8: - ldrh r0, [r5], #2 - subs ip, ip, #1 - strh r0, [lr], #2 - bne _02055EB8 - add r0, r4, #0x42 - add r1, r3, #0x3a - mov r2, #0xa - bl StrncpySimple - mov r2, #0 - mov r1, r2 -_02055EE0: - add r0, r4, r2 - add r2, r2, #1 - strb r1, [r0, #2] - cmp r2, #2 - blt _02055EE0 - strb r1, [r4, #0x25] - strh r1, [r4, #0x26] - strh r1, [r4, #0x28] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02055E14 - - arm_func_start sub_02055F04 -sub_02055F04: ; 0x02055F04 - stmdb sp!, {r4, r5, r6, lr} - mov r3, r1 - ldrh r1, [r3] - mov ip, r0 - add r0, r3, #0x18 - and r1, r1, #1 - strb r1, [ip] - ldrb r1, [r3, #4] - add r6, ip, #0x14 - add r5, r3, #0x2a - strb r1, [ip, #1] - ldrb r1, [r3, #5] - add r4, ip, #0x22 - mov lr, #0xc - strb r1, [ip, #2] - ldrb r1, [r3, #6] - strb r1, [ip, #3] - ldrsh r1, [r3, #8] - strh r1, [ip, #4] - ldrb r1, [r3, #0xa] - strb r1, [ip, #6] - ldrb r1, [r3, #0xb] - strb r1, [ip, #7] - ldrsh r1, [r3, #0xc] - strh r1, [ip, #8] - ldrsh r1, [r3, #0xe] - strh r1, [ip, #0xa] - ldrb r1, [r3, #0x10] - strb r1, [ip, #0xc] - ldrb r1, [r3, #0x11] - strb r1, [ip, #0xd] - ldrb r1, [r3, #0x12] - strb r1, [ip, #0xe] - ldrb r1, [r3, #0x13] - strb r1, [ip, #0xf] - ldmia r0, {r0, r1, r2} - stmia r6, {r0, r1, r2} - ldr r0, [r3, #0x14] - str r0, [ip, #0x10] - ldrb r0, [r3, #0x24] - strb r0, [ip, #0x20] -_02055FA8: - ldrh r0, [r5], #2 - subs lr, lr, #1 - strh r0, [r4], #2 - bne _02055FA8 - add r0, ip, #0x3a - add r1, r3, #0x42 - mov r2, #0xa - bl StrncpySimple - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02055F04 - - arm_func_start sub_02055FCC -sub_02055FCC: ; 0x02055FCC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl IsValidTeamMember - cmp r0, #0 - beq _02056068 - mov r0, r4 - bl GetItemMoveId16 - mov r4, r0 - mov r0, r5 - bl GetTeamMember - mov lr, #0 - mov r3, lr - mov ip, #1 - mov r2, #6 - b _02056040 -_0205600C: - smlabb r5, lr, r2, r0 - ldrb r1, [r5, #0x22] - tst r1, #1 - movne r1, ip - moveq r1, r3 - tst r1, #0xff - beq _02056034 - ldrh r1, [r5, #0x24] - cmp r4, r1 - beq _02056048 -_02056034: - add r1, lr, #1 - mov r1, r1, lsl #0x10 - mov lr, r1, asr #0x10 -_02056040: - cmp lr, #4 - blt _0205600C -_02056048: - cmp lr, #4 - blt _02056068 - ldrsh r1, [r0, #4] - mov r0, r4 - bl sub_02053D1C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_02056068: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02055FCC - - arm_func_start IsMonsterNotNicknamed -IsMonsterNotNicknamed: ; 0x02056070 - ldr ip, _02056080 ; =StrcmpMonsterName - ldrsh r1, [r0, #4] - add r0, r0, #0x3a - bx ip - .align 2, 0 -_02056080: .word StrcmpMonsterName - arm_func_end IsMonsterNotNicknamed - - arm_func_start sub_02056084 -sub_02056084: ; 0x02056084 - ldr ip, _02056090 ; =sub_02054F44 - add r1, r1, #0x3a - bx ip - .align 2, 0 -_02056090: .word sub_02054F44 - arm_func_end sub_02056084 - - arm_func_start sub_02056094 -sub_02056094: ; 0x02056094 - ldr ip, _020560A0 ; =sub_02054FA0 - add r1, r1, #0x3a - bx ip - .align 2, 0 -_020560A0: .word sub_02054FA0 - arm_func_end sub_02056094 - - arm_func_start sub_020560A4 -sub_020560A4: ; 0x020560A4 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end sub_020560A4 - - arm_func_start sub_020560B8 -sub_020560B8: ; 0x020560B8 - ldr ip, _020560C4 ; =SetActiveTeam - mov r0, #0 - bx ip - .align 2, 0 -_020560C4: .word SetActiveTeam - arm_func_end sub_020560B8 - - arm_func_start RemoveActiveMembersFromAllTeams -RemoveActiveMembersFromAllTeams: ; 0x020560C8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov lr, #0 - ldr r7, _02056154 ; =TEAM_MEMBER_TABLE_PTR - mov r1, lr - mvn r0, #0 - mov r2, lr - mov r4, #0x68 - mov r6, #0x1a0 -_020560E8: - mul ip, lr, r6 - mov r3, r2 -_020560F0: - ldr r5, [r7] - add r5, ip, r5 - mla r5, r3, r4, r5 - add r5, r5, #0x9000 - strb r1, [r5, #0x36c] - ldr r5, [r7] - add r5, r5, lr, lsl #3 - add r5, r5, r3, lsl #1 - add r5, r5, #0x9800 - add r3, r3, #1 - strh r0, [r5, #0x56] - cmp r3, #4 - blt _020560F0 - ldr r3, [r7] - add r3, r3, lr, lsl #1 - add r3, r3, #0x9800 - strh r0, [r3, #0x50] - ldr r3, [r7] - add r3, r3, lr - add r3, r3, #0x9000 - add lr, lr, #1 - strb r1, [r3, #0x874] - cmp lr, #3 - blt _020560E8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02056154: .word TEAM_MEMBER_TABLE_PTR - arm_func_end RemoveActiveMembersFromAllTeams - - arm_func_start RemoveActiveMembersFromSpecialEpisodeTeam -RemoveActiveMembersFromSpecialEpisodeTeam: ; 0x02056158 - stmdb sp!, {r3, lr} - mov lr, #0 - ldr r3, _020561BC ; =TEAM_MEMBER_TABLE_PTR - mov r0, lr - mvn ip, #0 - mov r1, #0x68 -_02056170: - ldr r2, [r3] - mla r2, lr, r1, r2 - add r2, r2, #0x9000 - strb r0, [r2, #0x50c] - ldr r2, [r3] - add r2, r2, lr, lsl #1 - add r2, r2, #0x9800 - add lr, lr, #1 - strh ip, [r2, #0x5e] - cmp lr, #4 - blt _02056170 - ldr r2, _020561BC ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r2] - add r1, r1, #0x9800 - strh ip, [r1, #0x52] - ldr r1, [r2] - add r1, r1, #0x9000 - strb r0, [r1, #0x875] - ldmia sp!, {r3, pc} - .align 2, 0 -_020561BC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end RemoveActiveMembersFromSpecialEpisodeTeam - - arm_func_start RemoveActiveMembersFromRescueTeam -RemoveActiveMembersFromRescueTeam: ; 0x020561C0 - stmdb sp!, {r3, lr} - mov lr, #0 - ldr r3, _02056224 ; =TEAM_MEMBER_TABLE_PTR - mov r0, lr - mvn ip, #0 - mov r1, #0x68 -_020561D8: - ldr r2, [r3] - mla r2, lr, r1, r2 - add r2, r2, #0x9000 - strb r0, [r2, #0x6ac] - ldr r2, [r3] - add r2, r2, lr, lsl #1 - add r2, r2, #0x9800 - add lr, lr, #1 - strh ip, [r2, #0x66] - cmp lr, #4 - blt _020561D8 - ldr r2, _02056224 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r2] - add r1, r1, #0x9800 - strh ip, [r1, #0x54] - ldr r1, [r2] - add r1, r1, #0x9000 - strb r0, [r1, #0x876] - ldmia sp!, {r3, pc} - .align 2, 0 -_02056224: .word TEAM_MEMBER_TABLE_PTR - arm_func_end RemoveActiveMembersFromRescueTeam - - arm_func_start sub_02056228 -sub_02056228: ; 0x02056228 - ldr r1, _0205625C ; =0x000055AA - cmp r0, r1 - moveq r0, #1 - bxeq lr - ldr r1, _02056260 ; =0x00005AA5 - cmp r0, r1 - moveq r0, #1 - bxeq lr - cmp r0, #0 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205625C: .word 0x000055AA -_02056260: .word 0x00005AA5 - arm_func_end sub_02056228 - - arm_func_start CheckTeamMemberIdx -CheckTeamMemberIdx: ; 0x02056264 - ldr r1, _0205628C ; =0x000055AA - cmp r0, r1 - moveq r0, #1 - bxeq lr - ldr r1, _02056290 ; =0x00005AA5 - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205628C: .word 0x000055AA -_02056290: .word 0x00005AA5 - arm_func_end CheckTeamMemberIdx - - arm_func_start IsMonsterIdInNormalRange -IsMonsterIdInNormalRange: ; 0x02056294 - cmp r0, #0 - blt _020562AC - ldr r1, _020562B4 ; =0x0000022B - cmp r0, r1 - movlt r0, #1 - bxlt lr -_020562AC: - mov r0, #0 - bx lr - .align 2, 0 -_020562B4: .word 0x0000022B - arm_func_end IsMonsterIdInNormalRange - - arm_func_start sub_020562B8 -sub_020562B8: ; 0x020562B8 - cmp r0, #0 - movlt r0, #1 - movge r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end sub_020562B8 - - arm_func_start SetActiveTeam -SetActiveTeam: ; 0x020562CC - ldr r3, _02056314 ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0x1a0 - ldr r1, [r3] - add r1, r1, #0x9000 - strb r0, [r1, #0x877] - ldr ip, [r3] - add r1, ip, #0x36c - add r1, r1, #0x9000 - mla r2, r0, r2, r1 - add r1, ip, #0x9000 - str r2, [r1, #0x84c] - ldr r2, [r3] - add r1, r2, #0x56 - add r1, r1, #0x9800 - add r1, r1, r0, lsl #3 - add r0, r2, #0x9000 - str r1, [r0, #0x870] - bx lr - .align 2, 0 -_02056314: .word TEAM_MEMBER_TABLE_PTR - arm_func_end SetActiveTeam - - arm_func_start sub_02056318 -sub_02056318: ; 0x02056318 - ldr r1, _02056338 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r1] - add r1, r2, #0x9000 - ldrb r1, [r1, #0x877] - add r1, r2, r1 - add r1, r1, #0x9000 - strb r0, [r1, #0x874] - bx lr - .align 2, 0 -_02056338: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056318 - - arm_func_start sub_0205633C -sub_0205633C: ; 0x0205633C - ldr r0, _0205635C ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r0] - add r0, r1, #0x9000 - ldrb r0, [r0, #0x877] - add r0, r1, r0 - add r0, r0, #0x9000 - ldrb r0, [r0, #0x874] - bx lr - .align 2, 0 -_0205635C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_0205633C - - arm_func_start sub_02056360 -sub_02056360: ; 0x02056360 - ldr r0, _02056388 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r1, [r0, #0x874] - cmp r1, #0 - ldreqb r0, [r0, #0x875] - cmpeq r0, #0 - movne r0, #1 - moveq r0, #0 - bx lr - .align 2, 0 -_02056388: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056360 - - arm_func_start GetActiveTeamMember -GetActiveTeamMember: ; 0x0205638C - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - bxeq lr - ldr r1, _020563B8 ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0x68 - ldr r1, [r1] - add r1, r1, #0x9000 - ldr r1, [r1, #0x84c] - smlabb r0, r0, r2, r1 - bx lr - .align 2, 0 -_020563B8: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetActiveTeamMember - - arm_func_start GetActiveRosterIndex -GetActiveRosterIndex: ; 0x020563BC - mvn r1, #0 - cmp r0, r1 - beq _02056404 - ldr r1, _0205640C ; =TEAM_MEMBER_TABLE_PTR - mov ip, #0 - ldr r1, [r1] - add r1, r1, #0x9000 - b _020563FC -_020563DC: - ldr r3, [r1, #0x870] - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r0, r2 - moveq r0, ip, lsl #0x10 - moveq r0, r0, asr #0x10 - bxeq lr - add ip, ip, #1 -_020563FC: - cmp ip, #4 - blt _020563DC -_02056404: - mvn r0, #0 - bx lr - .align 2, 0 -_0205640C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetActiveRosterIndex - - arm_func_start sub_02056410 -sub_02056410: ; 0x02056410 - mvn r1, #0 - cmp r0, r1 - beq _02056454 - ldr r1, _0205645C ; =TEAM_MEMBER_TABLE_PTR - mov ip, #0 - ldr r1, [r1] - add r1, r1, #0x9000 - b _0205644C -_02056430: - ldr r3, [r1, #0x870] - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r0, r2 - moveq r0, #1 - bxeq lr - add ip, ip, #1 -_0205644C: - cmp ip, #4 - blt _02056430 -_02056454: - mov r0, #0 - bx lr - .align 2, 0 -_0205645C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056410 - - arm_func_start sub_02056460 -sub_02056460: ; 0x02056460 - mvn r2, #0 - cmp r0, r2 - beq _020564A4 - ldr r2, _020564AC ; =TEAM_MEMBER_TABLE_PTR - mov r3, #0 - ldr r2, [r2] - add r2, r2, r1, lsl #3 - b _0205649C -_02056480: - add r1, r2, r3, lsl #1 - add r1, r1, #0x9800 - ldrsh r1, [r1, #0x56] - cmp r0, r1 - moveq r0, #1 - bxeq lr - add r3, r3, #1 -_0205649C: - cmp r3, #4 - blt _02056480 -_020564A4: - mov r0, #0 - bx lr - .align 2, 0 -_020564AC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056460 - - arm_func_start sub_020564B0 -sub_020564B0: ; 0x020564B0 - mvn r3, #0 - cmp r0, r3 - beq _020564F8 - ldr r1, _02056500 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, [r1] - add r1, ip, #0x9000 - ldrb r2, [r1, #0x877] - add r2, ip, r2, lsl #1 - add r2, r2, #0x9800 - ldrsh ip, [r2, #0x50] - cmp ip, r3 - beq _020564F8 - ldr r2, [r1, #0x870] - mov r1, ip, lsl #1 - ldrsh r1, [r2, r1] - cmp r0, r1 - moveq r0, #1 - bxeq lr -_020564F8: - mov r0, #0 - bx lr - .align 2, 0 -_02056500: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020564B0 - - arm_func_start sub_02056504 -sub_02056504: ; 0x02056504 - mvn r3, #0 - cmp r0, r3 - beq _02056548 - ldr r2, _02056550 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, [r2] - add r2, ip, r1, lsl #1 - add r2, r2, #0x9800 - ldrsh r2, [r2, #0x50] - cmp r2, r3 - beq _02056548 - add r1, ip, r1, lsl #3 - add r1, r1, r2, lsl #1 - add r1, r1, #0x9800 - ldrsh r1, [r1, #0x56] - cmp r0, r1 - moveq r0, #1 - bxeq lr -_02056548: - mov r0, #0 - bx lr - .align 2, 0 -_02056550: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056504 - - arm_func_start sub_02056554 -sub_02056554: ; 0x02056554 - stmdb sp!, {r4, lr} - mvn r1, #0 - cmp r0, r1 - beq _020565E8 - ldr r1, _020565F0 ; =TEAM_MEMBER_TABLE_PTR - mov ip, #0 - ldr lr, [r1] - add r1, lr, #0x9000 - b _02056598 -_02056578: - ldr r3, [r1, #0x870] - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r0, r2 - moveq r0, ip, lsl #0x10 - moveq r0, r0, asr #0x10 - ldmeqia sp!, {r4, pc} - add ip, ip, #1 -_02056598: - cmp ip, #4 - blt _02056578 - mov r4, #0 - add r1, lr, #0x9000 - mvn r2, #0 - b _020565E0 -_020565B0: - ldr r3, [r1, #0x870] - mov ip, r4, lsl #1 - ldrsh r3, [r3, ip] - cmp r3, r2 - bne _020565DC - add r1, lr, #0x9000 - ldr r2, [r1, #0x870] - mov r1, r4, lsl #0x10 - strh r0, [r2, ip] - mov r0, r1, asr #0x10 - ldmia sp!, {r4, pc} -_020565DC: - add r4, r4, #1 -_020565E0: - cmp r4, #4 - blt _020565B0 -_020565E8: - mvn r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_020565F0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056554 - - arm_func_start sub_020565F4 -sub_020565F4: ; 0x020565F4 - stmdb sp!, {r4, lr} - mvn r2, #0 - cmp r0, r2 - beq _0205668C - ldr r2, _02056694 ; =TEAM_MEMBER_TABLE_PTR - mov ip, #0 - ldr lr, [r2] - add r3, lr, r1, lsl #3 - b _02056638 -_02056618: - add r2, r3, ip, lsl #1 - add r2, r2, #0x9800 - ldrsh r2, [r2, #0x56] - cmp r0, r2 - moveq r0, ip, lsl #0x10 - moveq r0, r0, asr #0x10 - ldmeqia sp!, {r4, pc} - add ip, ip, #1 -_02056638: - cmp ip, #4 - blt _02056618 - mov r4, #0 - add ip, lr, r1, lsl #3 - mvn r3, #0 - b _02056684 -_02056650: - add r2, ip, r4, lsl #1 - add r2, r2, #0x9800 - ldrsh r2, [r2, #0x56] - cmp r2, r3 - bne _02056680 - add r1, lr, r1, lsl #3 - add r1, r1, r4, lsl #1 - add r1, r1, #0x9800 - mov r2, r4, lsl #0x10 - strh r0, [r1, #0x56] - mov r0, r2, asr #0x10 - ldmia sp!, {r4, pc} -_02056680: - add r4, r4, #1 -_02056684: - cmp r4, #4 - blt _02056650 -_0205668C: - mvn r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02056694: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020565F4 - - arm_func_start sub_02056698 -sub_02056698: ; 0x02056698 - mvn r2, #0 - cmp r1, r2 - bxeq lr - ldr r2, _020566C0 ; =TEAM_MEMBER_TABLE_PTR - mov r3, r0, lsl #1 - ldr r0, [r2] - add r0, r0, #0x9000 - ldr r0, [r0, #0x870] - strh r1, [r0, r3] - bx lr - .align 2, 0 -_020566C0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056698 - - arm_func_start sub_020566C4 -sub_020566C4: ; 0x020566C4 - stmdb sp!, {r3, lr} - mvn r1, #0 - cmp r0, r1 - beq _02056748 - ldr r2, _02056750 ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0 - ldr lr, [r2] - add r2, lr, #0x9000 - b _02056740 -_020566E8: - ldr r3, [r2, #0x870] - mov ip, r1, lsl #1 - ldrsh r3, [r3, ip] - cmp r0, r3 - bne _0205673C - add r0, lr, #0x9000 - ldr r2, [r0, #0x870] - mvn r3, #0 - ldr r0, _02056750 ; =TEAM_MEMBER_TABLE_PTR - strh r3, [r2, ip] - ldr r2, [r0] - add r0, r2, #0x9000 - ldrb r0, [r0, #0x877] - add r0, r2, r0, lsl #1 - add r0, r0, #0x9800 - ldrsh r2, [r0, #0x50] - cmp r1, r2 - streqh r3, [r0, #0x50] - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} -_0205673C: - add r1, r1, #1 -_02056740: - cmp r1, #4 - blt _020566E8 -_02056748: - mvn r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02056750: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020566C4 - - arm_func_start TryAddMonsterToActiveTeam -TryAddMonsterToActiveTeam: ; 0x02056754 - stmdb sp!, {r4, lr} - mvn r1, #0 - cmp r0, r1 - beq _02056824 - ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR - mov ip, #0 - ldr lr, [r1] - add r1, lr, #0x9000 - b _020567B8 -_02056778: - ldr r3, [r1, #0x870] - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r0, r2 - bne _020567B4 - ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR - mov r0, ip, lsl #0x10 - ldr r2, [r1] - mov r0, r0, asr #0x10 - add r1, r2, #0x9000 - ldrb r1, [r1, #0x877] - add r1, r2, r1, lsl #1 - add r1, r1, #0x9800 - strh r0, [r1, #0x50] - ldmia sp!, {r4, pc} -_020567B4: - add ip, ip, #1 -_020567B8: - cmp ip, #4 - blt _02056778 - mov r4, #0 - add r1, lr, #0x9000 - mvn r2, #0 - b _0205681C -_020567D0: - ldr r3, [r1, #0x870] - mov ip, r4, lsl #1 - ldrsh r3, [r3, ip] - cmp r3, r2 - bne _02056818 - add r1, lr, #0x9000 - ldr r2, [r1, #0x870] - ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR - strh r0, [r2, ip] - ldr r2, [r1] - mov r0, r4, lsl #0x10 - add r1, r2, #0x9000 - ldrb r1, [r1, #0x877] - mov r0, r0, asr #0x10 - add r1, r2, r1, lsl #1 - add r1, r1, #0x9800 - strh r0, [r1, #0x50] - ldmia sp!, {r4, pc} -_02056818: - add r4, r4, #1 -_0205681C: - cmp r4, #4 - blt _020567D0 -_02056824: - mvn r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_0205682C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end TryAddMonsterToActiveTeam - - arm_func_start sub_02056830 -sub_02056830: ; 0x02056830 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - mov r6, r7 - mov r4, r7 - mov r5, #1 -_02056844: - mov r0, r6 - bl GetActiveTeamMember - ldrb r0, [r0] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - addeq r7, r7, #1 - cmp r6, #4 - blt _02056844 - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02056830 - - arm_func_start sub_02056880 -sub_02056880: ; 0x02056880 - ldr r0, _020568A0 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r0] - add r0, r1, #0x9000 - ldrb r0, [r0, #0x877] - add r0, r1, r0, lsl #1 - add r0, r0, #0x9800 - ldrsh r0, [r0, #0x50] - bx lr - .align 2, 0 -_020568A0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056880 - - arm_func_start sub_020568A4 -sub_020568A4: ; 0x020568A4 - ldr r1, _020568D8 ; =TEAM_MEMBER_TABLE_PTR - mvn r0, #0 - ldr r3, [r1] - add r1, r3, #0x9000 - ldrb r2, [r1, #0x877] - add r2, r3, r2, lsl #1 - add r2, r2, #0x9800 - ldrsh r2, [r2, #0x50] - cmp r2, r0 - ldrne r1, [r1, #0x870] - movne r0, r2, lsl #1 - ldrnesh r0, [r1, r0] - bx lr - .align 2, 0 -_020568D8: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020568A4 - - arm_func_start sub_020568DC -sub_020568DC: ; 0x020568DC - ldr r1, _02056910 ; =TEAM_MEMBER_TABLE_PTR - mvn r3, #0 - ldr r2, [r1] - add r1, r2, r0, lsl #1 - add r1, r1, #0x9800 - ldrsh r1, [r1, #0x50] - cmp r1, r3 - addne r0, r2, r0, lsl #3 - addne r0, r0, r1, lsl #1 - addne r0, r0, #0x9800 - ldrnesh r3, [r0, #0x56] - mov r0, r3 - bx lr - .align 2, 0 -_02056910: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020568DC - - arm_func_start sub_02056914 -sub_02056914: ; 0x02056914 - ldr r0, _0205695C ; =TEAM_MEMBER_TABLE_PTR - mvn r2, #0 - ldr ip, [r0] - add r0, ip, #0x9000 - ldrb r1, [r0, #0x877] - add r1, ip, r1, lsl #1 - add r1, r1, #0x9800 - ldrsh r3, [r1, #0x50] - cmp r3, r2 - ldrne r1, [r0, #0x870] - movne r0, r3, lsl #1 - ldrnesh r1, [r1, r0] - cmpne r1, r2 - moveq r0, #0 - bxeq lr - mov r0, #0x44 - smlabb r0, r1, r0, ip - bx lr - .align 2, 0 -_0205695C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056914 - - arm_func_start RemoveActiveMembersFromMainTeam -RemoveActiveMembersFromMainTeam: ; 0x02056960 - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0 - ldr r2, _020569C8 ; =TEAM_MEMBER_TABLE_PTR - mov r5, r0 - mvn ip, #0 - mov r3, #1 -_02056978: - ldr r1, [r2] - mov lr, r5, lsl #1 - add r1, r1, #0x9000 - ldr r4, [r1, #0x870] - add r5, r5, #1 - ldrsh r1, [r4, lr] - cmp r1, ip - movne r0, r3 - strneh ip, [r4, lr] - cmp r5, #4 - blt _02056978 - ldr r1, _020569C8 ; =TEAM_MEMBER_TABLE_PTR - mvn r2, #0 - ldr r3, [r1] - add r1, r3, #0x9000 - ldrb r1, [r1, #0x877] - add r1, r3, r1, lsl #1 - add r1, r1, #0x9800 - strh r2, [r1, #0x50] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020569C8: .word TEAM_MEMBER_TABLE_PTR - arm_func_end RemoveActiveMembersFromMainTeam - - arm_func_start SetTeamSetupHeroAndPartnerOnly -SetTeamSetupHeroAndPartnerOnly: ; 0x020569CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bl GetMainCharacter1MemberIdx - mov r5, r0 - bl GetMainCharacter2MemberIdx - mov r6, r0 - bl GetMainCharacter3MemberIdx -#ifdef JAPAN - mov sl, #0 - ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR - mov r7, r0 - ldr r0, [r1] - mov fp, sl - add r0, r0, #0x9000 - ldr sb, [r0, #0x84c] -#else - mov r8, #0 - ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR - mov r7, r0 - ldr r1, [r1] - mov sl, r8 - add r0, r1, #0x9000 - ldr sb, [r0, #0x84c] - mov fp, r8 -#endif - mov r4, #1 -_02056A08: - ldrb r0, [sb] - tst r0, #1 - movne r0, r4 - moveq r0, fp - tst r0, #0xff - ldrnesh r0, [sb, #8] - cmpne r0, r5 - cmpne r0, r6 - cmpne r0, r7 - beq _02056A40 - mov r0, sl, lsl #0x10 - mov r0, r0, asr #0x10 - mov r8, #1 - bl sub_02058138 -_02056A40: - add sl, sl, #1 - cmp sl, #4 - add sb, sb, #0x68 - blt _02056A08 - bl RemoveActiveMembersFromMainTeam - mvn r0, #0 - cmp r5, r0 - beq _02056A68 - mov r0, r5 - bl TryAddMonsterToActiveTeam -_02056A68: - mvn r0, #0 - cmp r6, r0 - beq _02056A7C - mov r0, r6 - bl sub_02056554 -_02056A7C: - mvn r0, #0 - cmp r7, r0 - beq _02056A90 - mov r0, r7 - bl sub_02056554 -_02056A90: - ldr r0, _02056AAC ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bl sub_02057464 - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02056AAC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end SetTeamSetupHeroAndPartnerOnly - - arm_func_start SetTeamSetupHeroOnly -SetTeamSetupHeroOnly: ; 0x02056AB0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - bl sub_020568A4 - ldr r1, _02056B54 ; =TEAM_MEMBER_TABLE_PTR - mov r7, r0 -#ifdef JAPAN - ldr r0, [r1] - mov sl, #0 - add r0, r0, #0x9000 - mov r6, #1 - ldr sb, [r0, #0x84c] - mov r5, sl -#else - mov r8, #0 - ldr r1, [r1] - mov r6, #1 - add r0, r1, #0x9000 - ldr sb, [r0, #0x84c] - mov sl, r8 - mov r5, r8 -#endif - mov r4, r6 -_02056AE0: - ldrb r0, [sb] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - ldrnesh r0, [sb, #8] - cmpne r0, r7 - beq _02056B10 - mov r0, sl, lsl #0x10 - mov r0, r0, asr #0x10 - mov r8, r4 - bl sub_02058138 -_02056B10: - add sl, sl, #1 - cmp sl, #4 - add sb, sb, #0x68 - blt _02056AE0 - bl RemoveActiveMembersFromMainTeam - mvn r0, #0 - cmp r7, r0 - beq _02056B38 - mov r0, r7 - bl TryAddMonsterToActiveTeam -_02056B38: - ldr r0, _02056B54 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bl sub_02057464 - mov r0, r8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02056B54: .word TEAM_MEMBER_TABLE_PTR - arm_func_end SetTeamSetupHeroOnly - - arm_func_start sub_02056B58 -sub_02056B58: ; 0x02056B58 - stmdb sp!, {r3, lr} - ldr r2, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, [r2] - add r0, ip, #0x9000 - ldrb r3, [r0, #0x877] - cmp r3, #2 - ldmneia sp!, {r3, pc} - add r0, ip, #0x9800 - ldrsh r1, [r0, #0x50] - add r0, ip, r3, lsl #1 - add r0, r0, #0x9800 - strh r1, [r0, #0x50] - mov lr, #0 -_02056B8C: - ldr r1, [r2] - mov ip, lr, lsl #1 - add r0, r1, lr, lsl #1 - add r0, r0, #0x9800 - add r1, r1, #0x9000 - ldrsh r3, [r0, #0x56] - ldr r0, [r1, #0x870] - add lr, lr, #1 - strh r3, [r0, ip] - cmp lr, #4 - blt _02056B8C - ldr r0, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bl sub_02057464 - ldmia sp!, {r3, pc} - .align 2, 0 -_02056BD0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056B58 - - arm_func_start sub_02056BD4 -sub_02056BD4: ; 0x02056BD4 - stmdb sp!, {r3, lr} - ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - cmp r0, #2 - ldmneia sp!, {r3, pc} - bl RemoveActiveMembersFromMainTeam - bl GetHeroMemberIdx - bl TryAddMonsterToActiveTeam - bl GetPartnerMemberIdx - bl sub_02056554 - ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bl sub_02057464 - ldmia sp!, {r3, pc} - .align 2, 0 -_02056C1C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056BD4 - - arm_func_start GetPartyMembers -GetPartyMembers: ; 0x02056C20 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r5, r0 - bl sub_020568A4 - mov r6, r0 - bl GetMainCharacter1MemberIdx - mov r7, r0 - bl GetMainCharacter2MemberIdx - mov r8, r0 - bl GetMainCharacter3MemberIdx - mov sb, r0 - cmp r5, #0 - mvn r0, #0 - addeq r5, sp, #0 - cmp r6, r0 - mov r4, #0 - mvn r0, #0 - strneh r6, [r5] - addne r4, r4, #1 - cmp r7, r0 - beq _02056C90 - mov r0, r7 - bl sub_02056410 - cmp r0, #0 - cmpne r7, r6 - movne r0, r4, lsl #1 - strneh r7, [r5, r0] - addne r4, r4, #1 -_02056C90: - mvn r0, #0 - cmp r8, r0 - beq _02056CB8 - mov r0, r8 - bl sub_02056410 - cmp r0, #0 - cmpne r8, r6 - movne r0, r4, lsl #1 - strneh r8, [r5, r0] - addne r4, r4, #1 -_02056CB8: - mvn r0, #0 - cmp sb, r0 - beq _02056CE0 - mov r0, sb - bl sub_02056410 - cmp r0, #0 - cmpne sb, r6 - movne r0, r4, lsl #1 - strneh sb, [r5, r0] - addne r4, r4, #1 -_02056CE0: - ldr r0, _02056D6C ; =TEAM_MEMBER_TABLE_PTR - mov r8, #0 - ldr r0, [r0] - mov r6, r8 - add r0, r0, #0x9000 - ldr sb, [r0, #0x84c] - mov r7, #1 - b _02056D58 -_02056D00: - ldrb r0, [sb] - tst r0, #2 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _02056D50 - ldrsh sl, [sb, #8] - mov r0, sl - bl sub_020564B0 - cmp r0, #0 - bne _02056D50 - mov r0, sl - bl IsMainCharacter - cmp r0, #0 - bne _02056D50 - mov r0, r4, lsl #1 - add r4, r4, #1 - strh sl, [r5, r0] - cmp r4, #4 - bge _02056D60 -_02056D50: - add r8, r8, #1 - add sb, sb, #0x68 -_02056D58: - cmp r8, #4 - blt _02056D00 -_02056D60: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02056D6C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end GetPartyMembers - - arm_func_start sub_02056D70 -sub_02056D70: ; 0x02056D70 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - movs sl, r0 - ldr r0, _02056E00 ; =TEAM_MEMBER_TABLE_PTR - mov r6, #0 - ldr r0, [r0] - mov sb, #0 - add r0, r0, #0x9000 - ldr r7, [r0, #0x84c] - addeq sl, sp, #0 - mov r4, r6 - mov r5, #1 -_02056DA0: - ldrb r0, [r7] - tst r0, #2 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _02056DE4 - ldrsh r8, [r7, #8] - mov r0, r8 - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _02056DE4 - mov r0, r8 - bl sub_020564B0 - cmp r0, #0 - moveq r0, sb, lsl #1 - streqh r8, [sl, r0] - addeq sb, sb, #1 -_02056DE4: - add r6, r6, #1 - cmp r6, #4 - add r7, r7, #0x68 - blt _02056DA0 - mov r0, sb - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02056E00: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056D70 - - arm_func_start sub_02056E04 -sub_02056E04: ; 0x02056E04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - movs sl, r0 - ldr r0, _02056EB4 ; =TEAM_MEMBER_TABLE_PTR - mov r6, #0 - ldr r0, [r0] - mov sb, #0 - add r0, r0, #0x9000 - ldr r7, [r0, #0x84c] - addeq sl, sp, #0 - mov r4, r6 - mov r5, #1 -_02056E34: - ldrb r0, [r7] - tst r0, #2 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _02056E98 - ldrsh r8, [r7, #8] - mov r0, r8 - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _02056E98 - mov r0, r8 - bl sub_02055410 - cmp r0, #0 - bne _02056E98 - mov r0, r8 - bl sub_02055474 - cmp r0, #0 - bne _02056E98 - mov r0, r8 - bl sub_020554D8 - cmp r0, #0 - moveq r0, sb, lsl #1 - streqh r8, [sl, r0] - addeq sb, sb, #1 -_02056E98: - add r6, r6, #1 - cmp r6, #4 - add r7, r7, #0x68 - blt _02056E34 - mov r0, sb - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02056EB4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056E04 - - arm_func_start sub_02056EB8 -sub_02056EB8: ; 0x02056EB8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r1, _02056F5C ; =TEAM_MEMBER_TABLE_PTR - mov r5, #0 - ldr r1, [r1] - mov r8, r0 - add r0, r1, #0x9000 - ldr r4, [r0, #0x84c] - mov r6, r5 - mov r7, r5 - mov sb, r5 - mov sl, #1 -_02056EE4: - ldrb r0, [r4] - tst r0, #1 - movne r0, sl - moveq r0, sb - tst r0, #0xff - beq _02056F1C - ldrsh r0, [r4, #8] - bl sub_02056410 - cmp r0, #0 - beq _02056F1C - ldrsh r0, [r4, #0xc] - bl GetBodySize - add r6, r6, r0 - add r5, r5, #1 -_02056F1C: - add r7, r7, #1 - cmp r7, #4 - add r4, r4, #0x68 - blt _02056EE4 - cmp r5, #4 - movge r0, #0 - ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - cmp r8, #0 - beq _02056F4C - mov r0, r8 - bl GetBodySize - add r6, r6, r0 -_02056F4C: - cmp r6, #6 - movgt r0, #0 - movle r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02056F5C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056EB8 - - arm_func_start sub_02056F60 -sub_02056F60: ; 0x02056F60 - stmdb sp!, {r3, lr} - mvn r1, #0 - cmp r0, r1 - beq _02057000 - ldr r1, _0205700C ; =TEAM_MEMBER_TABLE_PTR - ldr r3, [r1] - add r1, r3, #0x9000 - ldrb r1, [r1, #0x877] - cmp r1, #0 - bne _02056FB8 - mov r2, #0 - b _02056FAC -_02056F90: - add r1, r3, r2, lsl #1 - add r1, r1, #0x9800 - ldrsh r1, [r1, #0x5e] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r2, r2, #1 -_02056FAC: - cmp r2, #4 - blt _02056F90 - b _02056FEC -_02056FB8: - cmp r1, #1 - bne _02056FEC - mov r2, #0 - b _02056FE4 -_02056FC8: - add r1, r3, r2, lsl #1 - add r1, r1, #0x9800 - ldrsh r1, [r1, #0x56] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r2, r2, #1 -_02056FE4: - cmp r2, #4 - blt _02056FC8 -_02056FEC: - mov r1, #0x44 - smlabb r0, r0, r1, r3 - ldrsh r0, [r0, #4] - bl sub_02056EB8 - ldmia sp!, {r3, pc} -_02057000: - mov r0, #0 - bl sub_02056EB8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0205700C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02056F60 - - arm_func_start sub_02057010 -sub_02057010: ; 0x02057010 - ldr r1, _02057028 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, _0205702C ; =sub_02057030 - ldr r1, [r1] - add r1, r1, #0x9000 - ldrb r1, [r1, #0x877] - bx ip - .align 2, 0 -_02057028: .word TEAM_MEMBER_TABLE_PTR -_0205702C: .word sub_02057030 - arm_func_end sub_02057010 - - arm_func_start sub_02057030 -sub_02057030: ; 0x02057030 - 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 - bl sub_020568DC - mov r4, r0 - cmp sl, #0 - mvn r0, #0 - addeq sl, sp, #0 - mov r8, #0 - cmp r4, r0 - beq _0205707C - mov r0, r4 - bl IsValidTeamMember - cmp r0, #0 - strneh r4, [sl] - addne r8, r8, #1 - mvneq r4, #0 -_0205707C: - mov r7, #0 - mvn fp, #0 -_02057084: - ldr r0, _0205717C ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r0] - add r0, r2, sb, lsl #3 - add r0, r0, r7, lsl #1 - add r0, r0, #0x9800 - ldrsh r5, [r0, #0x56] - cmp r5, fp - cmpne r4, r5 - beq _020570F8 - mov r1, #0x44 - mov r0, r5 - smlabb r6, r5, r1, r2 - bl sub_02055410 - cmp r0, #0 - bne _020570EC - mov r0, r5 - bl sub_02055474 - cmp r0, #0 - bne _020570EC - mov r0, r5 - bl sub_020554D8 - cmp r0, #0 - bne _020570EC - ldrsh r0, [r6, #4] - cmp r0, #0x214 - bne _020570F8 -_020570EC: - mov r0, r8, lsl #1 - strh r5, [sl, r0] - add r8, r8, #1 -_020570F8: - add r7, r7, #1 - cmp r7, #4 - blt _02057084 - mov r0, #0 - ldr r3, _0205717C ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - mvn r2, #0 -_02057114: - ldr r1, [r3] - add r1, r1, sb, lsl #3 - add r1, r1, r0, lsl #1 - add r1, r1, #0x9800 - ldrsh r6, [r1, #0x56] - cmp r6, r2 - beq _02057164 - mov r5, r4 - b _0205714C -_02057138: - mov r1, r5, lsl #1 - ldrsh r1, [sl, r1] - cmp r6, r1 - beq _02057154 - add r5, r5, #1 -_0205714C: - cmp r5, r8 - blt _02057138 -_02057154: - cmp r5, r8 - movge r1, r8, lsl #1 - strgeh r6, [sl, r1] - addge r8, r8, #1 -_02057164: - add r0, r0, #1 - cmp r0, #4 - blt _02057114 - mov r0, r8 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0205717C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057030 - - arm_func_start sub_02057180 -sub_02057180: ; 0x02057180 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x58 - sub sp, sp, #0x400 - add r0, sp, #0 - bl sub_020559D8 - mov r8, #0 - ldr fp, _020572E0 ; =_020A3398 - ldr r5, _020572E4 ; =TEAM_MEMBER_TABLE_PTR - add r6, sp, #0 - mov r7, r8 - mvn r4, #0 -_020571AC: - mov sb, r7 -_020571B0: - ldr r0, [r5] - add r0, r0, r8, lsl #3 - add r0, r0, sb, lsl #1 - add r0, r0, #0x9800 - ldrsh sl, [r0, #0x56] - cmp sl, r4 - beq _02057200 - mov r0, sl, lsl #1 - ldrsh r3, [r6, r0] - mov r0, fp - mov r1, r8 - mov r2, sl - bl Debug_Print0 - ldr r0, [r5] - mov r1, sl, lsl #1 - add r0, r0, r8, lsl #3 - add r0, r0, sb, lsl #1 - ldrsh r1, [r6, r1] - add r0, r0, #0x9800 - strh r1, [r0, #0x56] -_02057200: - add sb, sb, #1 - cmp sb, #4 - blt _020571B0 - add r8, r8, #1 - cmp r8, #3 - blt _020571AC - mov sb, #0 -_0205721C: - ldr r0, _020572E4 ; =TEAM_MEMBER_TABLE_PTR - mov sl, #0 - ldr r0, [r0] - mov r1, #0x1a0 - add r0, r0, #0x36c - add r0, r0, #0x9000 - mla r8, sb, r1, r0 - mov fp, #1 - add r7, sp, #0 - mov r5, sl - mov r6, sl - mvn r4, #0 -_0205724C: - ldrb r0, [r8] - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _020572B0 - ldrsh r2, [r8, #8] - ldr r0, _020572E8 ; =_020A33B8 - mov r1, sb - mov r3, r2, lsl #1 - ldrsh r3, [r7, r3] - bl Debug_Print0 - ldrsh r0, [r8, #8] - mov r1, r0, lsl #1 - ldrsh r1, [r7, r1] - cmp r1, r4 - streqb r6, [r8] - beq _020572B0 - bl IsMonsterIdInNormalRange - cmp r0, #0 - ldrnesh r0, [r8, #8] - movne r0, r0, lsl #1 - ldrnesh r0, [r7, r0] - strneh r0, [r8, #8] - streqb r5, [r8] -_020572B0: - add sl, sl, #1 - cmp sl, #4 - add r8, r8, #0x68 - blt _0205724C - and r0, sb, #0xff - bl sub_02057464 - add sb, sb, #1 - cmp sb, #3 - blt _0205721C - add sp, sp, #0x58 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020572E0: .word _020A3398 -_020572E4: .word TEAM_MEMBER_TABLE_PTR -_020572E8: .word _020A33B8 - arm_func_end sub_02057180 - - arm_func_start sub_020572EC -sub_020572EC: ; 0x020572EC - ldr r0, _02057304 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, _02057308 ; =sub_0205730C - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bx ip - .align 2, 0 -_02057304: .word TEAM_MEMBER_TABLE_PTR -_02057308: .word sub_0205730C - arm_func_end sub_020572EC - - arm_func_start sub_0205730C -sub_0205730C: ; 0x0205730C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _0205739C ; =TEAM_MEMBER_TABLE_PTR - mov r4, r0 - ldr r0, [r1] - mov r8, #0 - add r0, r0, #0x36c - mov r1, #0x1a0 - add r0, r0, #0x9000 - mla r7, r4, r1, r0 - mov r5, r8 - mov r6, #1 -_02057338: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _02057388 - ldrsh r0, [r7, #8] - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _02057388 - ldrsh r0, [r7, #8] - bl IsValidTeamMember - cmp r0, #0 - beq _02057388 - ldrsh r1, [r7, #8] - mov r2, r8, lsl #0x10 - mov r0, r7 - mov r3, r4 - mov r2, r2, asr #0x10 - bl sub_02053174 -_02057388: - add r8, r8, #1 - cmp r8, #4 - add r7, r7, #0x68 - blt _02057338 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0205739C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_0205730C - - arm_func_start sub_020573A0 -sub_020573A0: ; 0x020573A0 - ldr r0, _020573B8 ; =TEAM_MEMBER_TABLE_PTR - ldr ip, _020573BC ; =sub_020573C0 - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bx ip - .align 2, 0 -_020573B8: .word TEAM_MEMBER_TABLE_PTR -_020573BC: .word sub_020573C0 - arm_func_end sub_020573A0 - - arm_func_start sub_020573C0 -sub_020573C0: ; 0x020573C0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _02057440 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0 - ldr r1, [r1] - mov r2, #0x1a0 - add r1, r1, #0x36c - add r1, r1, #0x9000 - mla r7, r0, r2, r1 - mov r5, r4 - mov r6, #1 -_020573E8: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _0205742C - ldrsh r0, [r7, #8] - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _0205742C - ldrsh r0, [r7, #8] - bl IsValidTeamMember - cmp r0, #0 - beq _0205742C - ldrsh r0, [r7, #8] - mov r1, r7 - bl sub_0205349C -_0205742C: - add r4, r4, #1 - cmp r4, #4 - add r7, r7, #0x68 - blt _020573E8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02057440: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020573C0 - - arm_func_start sub_02057444 -sub_02057444: ; 0x02057444 - ldr r0, _0205745C ; =TEAM_MEMBER_TABLE_PTR - ldr ip, _02057460 ; =sub_02057464 - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bx ip - .align 2, 0 -_0205745C: .word TEAM_MEMBER_TABLE_PTR -_02057460: .word sub_02057464 - arm_func_end sub_02057444 - - arm_func_start sub_02057464 -sub_02057464: ; 0x02057464 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x8c - ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR - mov sl, #0 - ldr r2, [r1] - mov r5, r0 - add r0, r2, r5, lsl #1 - add r0, r0, #0x9800 - ldrsh r1, [r0, #0x50] - mvn r4, #0 - mov fp, sl - cmp r1, r4 - addne r0, r2, r5, lsl #3 - addne r0, r0, r1, lsl #1 - addne r0, r0, #0x9800 - ldrnesh r4, [r0, #0x56] - add r0, r2, #0x36c - add r1, r0, #0x9000 - mov r0, #0x1a0 - mla sb, r5, r0, r1 - mov r6, #1 - add r7, sp, #0x1c - mvn r8, #0 -_020574C0: - ldrb r0, [sb] - mov r1, sl, lsl #1 - strh r8, [r7, r1] - tst r0, #1 - movne r0, r6 - moveq r0, fp - tst r0, #0xff - beq _02057514 - ldrsh r0, [sb, #8] - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _02057514 - ldrsh r0, [sb, #8] - bl IsValidTeamMember - cmp r0, #0 - ldrnesh r1, [sb, #8] - movne r0, sl, lsl #1 - strneh r1, [r7, r0] - bne _02057514 - ldrsh r0, [sb, #8] - bl sub_020566C4 -_02057514: - add sl, sl, #1 - cmp sl, #4 - add sb, sb, #0x68 - blt _020574C0 - add r0, sp, #0x14 - mov r1, r5 - bl sub_02057030 - str r0, [sp, #0xc] - ldr r0, _020577B8 ; =_020A33D4 - ldr r2, [sp, #0xc] - mov r1, r5 - bl Debug_Print0 - mov r0, #0x1a0 - ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR - mov r7, #0 - mul r2, r5, r0 - ldr r1, [r1] - mov sl, r7 - add r0, r1, #0x36c - add r0, r0, #0x9000 - add r8, r0, r2 - add r0, r1, r2 - str r0, [sp, #8] - b _0205767C -_02057574: - add r0, sp, #0x14 - mov r1, sl, lsl #1 - ldrsh r0, [r0, r1] - mov sb, r8 - mov r6, #0 - str r0, [sp] - mov r0, r0 - cmp r4, r0 - moveq r0, sl, lsl #0x10 - moveq r7, r0, asr #0x10 - add r2, sp, #0x1c - b _020575C0 -_020575A4: - mov r0, r6, lsl #1 - ldrsh r1, [r2, r0] - ldr r0, [sp] - cmp r1, r0 - beq _020575C8 - add r6, r6, #1 - add sb, sb, #0x68 -_020575C0: - cmp r6, #4 - blt _020575A4 -_020575C8: - cmp r6, #4 - bge _02057678 - cmp sl, r6 - beq _02057678 - ldr r0, [sp, #8] - mov r1, #0x68 - mla r0, sl, r1, r0 - str r0, [sp, #4] - add r0, r0, #0x36c - add ip, sp, #0x24 - add lr, r0, #0x9000 - mov fp, #6 -_020575F8: - subs fp, fp, #1 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - bne _020575F8 - ldr r0, [sp, #4] - add r2, r0, #0x36c - ldmia lr, {r0, r1} - stmia ip, {r0, r1} - mov ip, sb - add fp, r2, #0x9000 - mov lr, #6 -_02057624: - ldmia ip!, {r0, r1, r2, r3} - stmia fp!, {r0, r1, r2, r3} - subs lr, lr, #1 - bne _02057624 - ldmia ip, {r0, r1} - stmia fp, {r0, r1} - add fp, sp, #0x24 - mov ip, #6 -_02057644: - ldmia fp!, {r0, r1, r2, r3} - stmia sb!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02057644 - add r3, sp, #0x1c - mov ip, sl, lsl #1 - ldrsh r2, [r3, ip] - mov r6, r6, lsl #1 - ldmia fp, {r0, r1} - stmia sb, {r0, r1} - ldr r0, [sp] - strh r2, [r3, r6] - strh r0, [r3, ip] -_02057678: - add sl, sl, #1 -_0205767C: - ldr r0, [sp, #0xc] - cmp sl, r0 - blt _02057574 - mov r1, #0 - mov sl, r1 - add r0, sp, #0x10 -_02057694: - strb sl, [r0, r1] - add r1, r1, #1 - cmp r1, #4 - blt _02057694 - add sb, sp, #0x14 - add r6, sp, #0x1c - add r4, sp, #0x10 - mov fp, #1 - b _0205774C -_020576B8: - ldr r0, _020577B4 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r0] - mov r0, sl, lsl #1 - add r1, r1, r5, lsl #3 - add r1, r1, sl, lsl #1 - ldrsh r3, [sb, r0] - add r1, r1, #0x9800 - ldrsh r2, [r6, r0] - strh r3, [r1, #0x56] - ldrsh r1, [sb, r0] - cmp r2, r1 - beq _020576FC - mov r0, r8 - mov r2, sl, lsl #0x10 - mov r2, r2, asr #0x10 - bl sub_020530D4 - b _02057724 -_020576FC: - ldrb r0, [r8, #0x3e] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - addne r1, sl, #1 - ldrneb r0, [r8, #0x3f] - andne r1, r1, #0xff - strneb r1, [r4, r0] - strneb r1, [r8, #0x3f] -_02057724: - strh sl, [r8, #0xa] - ldrb r0, [r8] - cmp r7, sl - add sl, sl, #1 - orr r0, r0, #2 - strb r0, [r8] - streqb fp, [r8, #1] - movne r0, #0 - strneb r0, [r8, #1] - add r8, r8, #0x68 -_0205774C: - ldr r0, [sp, #0xc] - cmp sl, r0 - blt _020576B8 - mvn r3, #0 - mov r2, #0 - ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR - b _02057784 -_02057768: - ldr r0, [r1] - add r0, r0, r5, lsl #3 - add r0, r0, sl, lsl #1 - add r0, r0, #0x9800 - strh r3, [r0, #0x56] - strb r2, [r8], #0x68 - add sl, sl, #1 -_02057784: - cmp sl, #4 - blt _02057768 - ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR - add r0, sp, #0x10 - ldr r2, [r1] - mov r1, r5 - add r2, r2, r5, lsl #1 - add r2, r2, #0x9800 - strh r7, [r2, #0x50] - bl sub_0200FA0C - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020577B4: .word TEAM_MEMBER_TABLE_PTR -_020577B8: .word _020A33D4 - arm_func_end sub_02057464 - - arm_func_start sub_020577BC -sub_020577BC: ; 0x020577BC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x4c - mov sl, r0 - ldr r0, _02057A24 ; =_020A340C - bl Debug_Print0 - cmp sl, #0xff - beq _02057904 - mov r0, sl - bl IsLevelResetDungeon - cmp r0, #0 - beq _020578E0 - ldr r4, _02057A28 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, _02057A2C ; =_020A336C - ldr r3, [r4] - ldrb r2, [r0] - ldrb r1, [r0, #1] - add r0, r3, #0x9000 - ldr r8, [r0, #0x84c] - strb r2, [sp, #4] - strb r1, [sp, #5] - mov sb, #0 - and r7, r2, #0xff - and r6, r1, #0xff - add r5, sp, #0x1c - mov fp, #0x44 -_02057820: - ldrb r0, [r8] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _020578D0 - strb r7, [sp, #6] - strb r6, [sp, #7] - mov r0, #0 - str r0, [sp] - ldrsh r1, [r8, #8] - ldr ip, [r4] - add r0, sp, #8 - smlabb r1, r1, fp, ip - ldrsh r1, [r1, #4] - mov r2, #0 - add r3, sp, #6 - bl sub_02052E2C - ldrb r0, [sp, #9] - add r3, r8, #0x4c - strb r0, [r8, #2] - ldrsh r0, [sp, #0x10] - strh r0, [r8, #6] - ldrsh r0, [sp, #0x12] - strh r0, [r8, #0xe] - ldrsh r0, [sp, #0x12] - strh r0, [r8, #0x10] - ldrb r0, [sp, #0x14] - strb r0, [r8, #0x12] - ldrb r0, [sp, #0x15] - strb r0, [r8, #0x13] - ldrb r0, [sp, #0x16] - strb r0, [r8, #0x14] - ldrb r0, [sp, #0x17] - strb r0, [r8, #0x15] - ldr r0, [sp, #0x18] - str r0, [r8, #0x18] - ldmia r5, {r0, r1, r2} - stmia r3, {r0, r1, r2} - ldrb r2, [sp, #0x28] - add r0, r8, #0x1c - add r1, sp, #0x2a - strb r2, [r8, #0x58] - bl GroundToDungeonMoveset -_020578D0: - add sb, sb, #1 - cmp sb, #4 - add r8, r8, #0x68 - blt _02057820 -_020578E0: - ldr r0, _02057A28 ; =TEAM_MEMBER_TABLE_PTR - mov r2, sb, lsl #1 - ldr r1, [r0] - ldr r0, _02057A30 ; =_020A343C - add r1, r1, #0x9000 - ldr r3, [r1, #0x870] - mov r1, sb - ldrsh r2, [r3, r2] - bl Debug_Print0 -_02057904: - ldr r0, _02057A34 ; =_020A344C - bl Debug_Print0 - mov r0, sl - bl GetMaxMembersAllowed - mov r8, #0 - ldr r1, _02057A28 ; =TEAM_MEMBER_TABLE_PTR - mov r6, #1 - ldr r1, [r1] - mov r7, r0 - add r0, r1, #0x9000 - ldr sl, [r0, #0x84c] - mov sb, r8 - mov fp, sl - mov r5, r8 - mov r3, r8 - mov r4, r6 - mov r0, r8 - mov r1, r6 - b _020579A4 -_02057950: - ldrb r2, [fp] - tst r2, #1 - movne ip, r6 - moveq ip, r5 - tst ip, #0xff - beq _0205799C - tst r2, #2 - movne r2, r4 - moveq r2, r3 - tst r2, #0xff - beq _0205799C - ldrb r2, [fp, #1] - cmp r2, #0 - movne r2, r1 - moveq r2, r0 - tst r2, #0xff - movne r0, sb, lsl #0x10 - movne r8, r0, asr #0x10 - bne _020579AC -_0205799C: - add sb, sb, #1 - add fp, fp, #0x68 -_020579A4: - cmp sb, #4 - blt _02057950 -_020579AC: - mov sb, #0 - mov r6, #1 - mov fp, sb - mov r5, r6 - mov r4, sb -_020579C0: - ldrb r0, [sl] - tst r0, #1 - movne r1, r5 - moveq r1, fp - tst r1, #0xff - beq _02057A08 - tst r0, #2 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - cmpne r8, sb - beq _02057A08 - cmp r6, r7 - addlt r6, r6, #1 - blt _02057A08 - strb r4, [sl] - ldrsh r0, [sl, #8] - bl sub_020566C4 -_02057A08: - add sb, sb, #1 - cmp sb, #4 - add sl, sl, #0x68 - blt _020579C0 - bl sub_02058064 - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02057A24: .word _020A340C -_02057A28: .word TEAM_MEMBER_TABLE_PTR -_02057A2C: .word _020A336C -_02057A30: .word _020A343C -_02057A34: .word _020A344C - arm_func_end sub_020577BC - - arm_func_start sub_02057A38 -sub_02057A38: ; 0x02057A38 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mvn r0, #0 - cmp r6, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_020568A4 - ldr r1, _02057AC0 ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0x68 - ldr r1, [r1] - mov r4, r6, lsl #1 - add r1, r1, #0x9000 - ldr r5, [r1, #0x870] - ldr r3, [r1, #0x84c] - ldrsh r4, [r5, r4] - sub r1, r2, #0x69 - mla r5, r6, r2, r3 - mov r7, r0 - cmp r4, r1 - beq _02057AB4 - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl sub_020530D4 - strh r6, [r5, #0xa] - ldrb r0, [r5] - cmp r4, r7 - orr r0, r0, #2 - strb r0, [r5] - moveq r0, #1 - streqb r0, [r5, #1] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02057AB4: - mov r0, #0 - strb r0, [r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02057AC0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057A38 - - arm_func_start sub_02057AC4 -sub_02057AC4: ; 0x02057AC4 - stmdb sp!, {r4, lr} - mov r4, #0 -_02057ACC: - mov r0, r4 - bl sub_02057A38 - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #4 - blt _02057ACC - ldmia sp!, {r4, pc} - arm_func_end sub_02057AC4 - - arm_func_start sub_02057AEC -sub_02057AEC: ; 0x02057AEC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, r0 - bl IsLevelResetDungeon - cmp r4, #0xff - moveq sl, #0 - beq _02057B10 - mov r0, r4 - bl IsLevelResetDungeon - mov sl, r0 -_02057B10: - bl GetGameMode - cmp r0, #5 - movne r0, #1 - moveq r0, #0 - and r7, r0, #0xff - bl sub_02057C40 - bl RemoveActiveMembersFromMainTeam - mov sb, #0 - ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR - mov r6, #1 - ldr r0, [r0] - mov r5, sb - add r0, r0, #0x9000 - ldr r8, [r0, #0x84c] - mov fp, sb - mov r4, r6 -_02057B50: - ldrb r0, [r8] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _02057C14 - ldrsh r0, [r8, #8] - bl CheckTeamMemberIdx - cmp r0, #0 - bne _02057C14 - ldrsh r0, [r8, #0xc] - bl GetBaseFormCastformCherrimDeoxys - strh r0, [r8, #0xc] - ldrsh r0, [r8, #8] - bl IsMonsterIdInNormalRange - cmp r0, #0 - beq _02057C14 - ldrb r0, [r8, #1] - cmp r0, #0 - movne r0, r4 - moveq r0, fp - tst r0, #0xff - ldrsh r0, [r8, #8] - beq _02057BB8 - bl TryAddMonsterToActiveTeam - b _02057BBC -_02057BB8: - bl sub_02056554 -_02057BBC: - cmp sl, #0 - beq _02057BE8 - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02058138 - mov r2, sb, lsl #0x10 - ldrsh r1, [r8, #8] - mov r0, r8 - mov r2, r2, asr #0x10 - bl sub_020530D4 - b _02057C14 -_02057BE8: - cmp r7, #0 - beq _02057C00 - ldrsh r0, [r8, #8] - mov r1, r8 - bl sub_0205349C - b _02057C14 -_02057C00: - ldrsh r1, [r8, #8] - mov r2, sb, lsl #0x10 - mov r0, r8 - mov r2, r2, asr #0x10 - bl sub_020530D4 -_02057C14: - add sb, sb, #1 - cmp sb, #4 - add r8, r8, #0x68 - blt _02057B50 - ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - add r0, r0, #0x9000 - ldrb r0, [r0, #0x877] - bl sub_02057464 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02057C3C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057AEC - - arm_func_start sub_02057C40 -sub_02057C40: ; 0x02057C40 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _02057CE4 ; =TEAM_MEMBER_TABLE_PTR - mov sb, #0 - ldr r0, [r0] - mov r7, #1 - add r0, r0, #0x9000 - ldr r8, [r0, #0x84c] - mov r6, sb - mov r4, sb - mov r5, r7 -_02057C68: - ldrb r0, [r8] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _02057CC8 - ldrb r0, [r8, #0x3e] - tst r0, #1 - movne r0, r5 - moveq r0, r4 - tst r0, #0xff - beq _02057CC8 - ldrb r0, [r8, #0x3e] - bic r0, r0, #8 - strb r0, [r8, #0x3e] - ldrsh r0, [r8, #0x42] - cmp r0, #0xb7 - bne _02057CC8 - add r0, r8, #0x3e - bl sub_0200D8AC - bl AddMoneyCarried - mov r0, sb, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02058138 -_02057CC8: - add sb, sb, #1 - cmp sb, #4 - add r8, r8, #0x68 - blt _02057C68 - bl CleanStickyItemsInBag - bl RemovePokeItemsInBag - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02057CE4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057C40 - - arm_func_start sub_02057CE8 -sub_02057CE8: ; 0x02057CE8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r8, #0 - mov r7, #1 - mov r6, r8 - mov r4, r8 - mov r5, r7 -_02057D00: - mov r0, r8 - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r1, r7 - moveq r1, r6 - tst r1, #0xff - beq _02057D40 - ldrb r1, [r0, #0x3e] - tst r1, #1 - movne r1, r5 - moveq r1, r4 - tst r1, #0xff - ldrneb r1, [r0, #0x3e] - bicne r1, r1, #8 - strneb r1, [r0, #0x3e] -_02057D40: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _02057D00 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_02057CE8 - - arm_func_start RefillTeam -RefillTeam: ; 0x02057D58 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r0, _02057DF8 ; =TEAM_MEMBER_TABLE_PTR - mov r5, #0 - ldr r0, [r0] - add r0, r0, #0x9000 - ldr r4, [r0, #0x84c] -_02057D70: - ldrb r0, [r4] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02057DE4 - ldrsh r1, [r4, #0x10] - mov r0, r4 - strh r1, [r4, #0xe] - bl sub_02058810 - mov r6, #0 - add r7, r4, #0x1c - mov r8, r6 - mov sb, #1 -_02057DA8: - add r0, r4, r6, lsl #3 - ldrb r0, [r0, #0x1c] - tst r0, #1 - movne r0, sb - moveq r0, r8 - tst r0, #0xff - beq _02057DD4 - add r0, r7, r6, lsl #3 - bl GetMaxPp - add r1, r4, r6, lsl #3 - strb r0, [r1, #0x22] -_02057DD4: - add r6, r6, #1 - cmp r6, #4 - blt _02057DA8 - strh r5, [r4, #0xa] -_02057DE4: - add r5, r5, #1 - cmp r5, #4 - add r4, r4, #0x68 - blt _02057D70 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02057DF8: .word TEAM_MEMBER_TABLE_PTR - arm_func_end RefillTeam - -#ifndef JAPAN - arm_func_start sub_02057DFC -sub_02057DFC: ; 0x02057DFC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _02057E8C ; =TEAM_MEMBER_TABLE_PTR - mov r0, #0 - ldr r1, [r1] - mov ip, #1 - add r1, r1, #0x9000 - ldr r6, [r1, #0x84c] - mov r3, r0 - mov r4, r0 - mov r5, ip - mov lr, r0 -_02057E28: - ldrb r1, [r6] - tst r1, #1 - movne r1, r5 - moveq r1, r4 - tst r1, #0xff - beq _02057E78 - mov r7, lr -_02057E44: - add r1, r6, r7, lsl #3 - ldrb r1, [r1, #0x1c] - tst r1, #1 - movne r1, ip - moveq r1, r3 - tst r1, #0xff - addne r2, r6, r7, lsl #3 - ldrneb r1, [r2, #0x1c] - add r7, r7, #1 - andne r1, r1, #0xf - strneb r1, [r2, #0x1c] - cmp r7, #4 - blt _02057E44 -_02057E78: - add r0, r0, #1 - cmp r0, #4 - add r6, r6, #0x68 - blt _02057E28 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02057E8C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057DFC -#endif - - arm_func_start sub_02057E90 -sub_02057E90: ; 0x02057E90 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r0, _02057EF0 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0 - ldr r0, [r0] - mov r6, r4 - add r0, r0, #0x9000 - ldr r8, [r0, #0x84c] - mov r7, #1 - mov r5, r4 -_02057EB4: - ldrb r0, [r8] - tst r0, #1 - movne r0, r7 - moveq r0, r6 - tst r0, #0xff - beq _02057EDC - ldrsh r0, [r8, #8] - bl CheckTeamMemberIdx - cmp r0, #0 - strneb r5, [r8] -_02057EDC: - add r4, r4, #1 - cmp r4, #4 - add r8, r8, #0x68 - blt _02057EB4 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02057EF0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057E90 - - arm_func_start sub_02057EF4 -sub_02057EF4: ; 0x02057EF4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r0, _02058060 ; =TEAM_MEMBER_TABLE_PTR - mov r8, #0 - ldr r0, [r0] - add r0, r0, #0x9000 - ldr r7, [r0, #0x84c] -_02057F0C: - ldrb r0, [r7] - tst r0, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - bne _02057F38 - tst r0, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0205804C -_02057F38: - ldrsh sb, [r7, #8] - ldrsh r1, [r7, #0x10] - mov r0, r7 - strh r1, [r7, #0xe] - bl sub_02058810 - mov sl, #0 - add r5, r7, #0x1c - mov fp, sl - mov r6, #1 - mov r4, sl -_02057F60: - add r0, r7, sl, lsl #3 - ldrb r0, [r0, #0x1c] - tst r0, #1 - movne r0, r6 - moveq r0, fp - tst r0, #0xff - beq _02057F90 - add r0, r5, sl, lsl #3 - bl GetMaxPp - add r1, r7, sl, lsl #3 - strb r0, [r1, #0x22] - strh r4, [r1, #0x1e] -_02057F90: - add sl, sl, #1 - cmp sl, #4 - blt _02057F60 - strh r8, [r7, #0xa] - ldrb r1, [r7] - mov r0, sb - bic r2, r1, #8 - and r1, r2, #0xff - orr r1, r1, #1 - strb r1, [r7] - bl CheckTeamMemberIdx - cmp r0, #0 - mov r0, sb - mov r1, #0 - bne _02058048 - bl sub_02056460 - cmp r0, #0 - beq _02057FE4 - mov r0, sb - mov r1, #0 - bl sub_020565F4 -_02057FE4: - mov r0, sb - mov r1, #2 - bl sub_02056460 - cmp r0, #0 - beq _02058004 - mov r0, sb - mov r1, #2 - bl sub_020565F4 -_02058004: - mov r0, sb - mov r1, #0 - bl sub_02056504 - cmp r0, #0 - beq _02058024 - mov r0, sb - mov r1, #0 - bl sub_020565F4 -_02058024: - mov r0, sb - mov r1, #2 - bl sub_02056504 - cmp r0, #0 - beq _0205804C - mov r0, sb - mov r1, #2 - bl sub_020565F4 - b _0205804C -_02058048: - bl sub_020565F4 -_0205804C: - add r8, r8, #1 - cmp r8, #4 - add r7, r7, #0x68 - blt _02057F0C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02058060: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02057EF4 - - arm_func_start sub_02058064 -sub_02058064: ; 0x02058064 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _020580C0 ; =TEAM_MEMBER_TABLE_PTR - mov r4, #0 - ldr r0, [r0] - mov r5, r4 - add r0, r0, #0x9000 - ldr r7, [r0, #0x84c] - mov r6, #1 -_02058084: - ldrb r0, [r7] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _020580A4 - add r0, r7, #0x5a - bl ShuffleHiddenPower -_020580A4: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #4 - add r7, r7, #0x68 - blt _02058084 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020580C0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02058064 - - arm_func_start sub_020580C4 -sub_020580C4: ; 0x020580C4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02058134 ; =TEAM_MEMBER_TABLE_PTR - mov r5, #0 - ldr r1, [r1] - add r2, r5, #1 - add r1, r1, #0x9000 - ldr r4, [r1, #0x84c] - and r6, r2, #0xff - strb r5, [r0] - mov ip, r5 - mov lr, #1 - mov r3, r5 -_020580F4: - ldrb r1, [r4] - add r4, r4, #0x68 - tst r1, #1 - movne r1, lr - moveq r1, ip - tst r1, #0xff - addeq r1, r0, r5 - streqb r3, [r1, #1] - addne r1, r0, r5 - addne r2, r6, #1 - strneb r6, [r1, #1] - add r5, r5, #1 - andne r6, r2, #0xff - cmp r5, #4 - blt _020580F4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02058134: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020580C4 - - arm_func_start sub_02058138 -sub_02058138: ; 0x02058138 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _020581EC ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x68 - ldr r2, [r2] - smulbb r1, r0, r1 - add r0, r2, #0x9000 - ldr r2, [r0, #0x84c] - ldrb r0, [r2, r1] - add r3, r2, r1 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _020581E0 - ldrb r1, [r3, #0x3e] - tst r1, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrneb r0, [r3, #0x3f] - cmpne r0, #0 - beq _020581E0 - tst r1, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _020581E0 - ldrh r1, [r3, #0x3e] - add r0, r3, #0x3e - strh r1, [sp] - ldrh r2, [r3, #0x40] - ldrb r1, [sp] - strh r2, [sp, #2] - ldrh r2, [r3, #0x42] - bic r1, r1, #0x10 - strh r2, [sp, #4] - strb r1, [sp] - bl ItemZInit - add r0, sp, #0 - bl RemoveHolderForItemInBag - b _020581E4 -_020581E0: - mov r0, #0 -_020581E4: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_020581EC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02058138 - - arm_func_start ClearItem -ClearItem: ; 0x020581F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - ldr r2, _020582DC ; =TEAM_MEMBER_TABLE_PTR - cmp r0, #0 - ldr r2, [r2] - add r2, r2, #0x9000 - ldr r2, [r2, #0x84c] - beq _020582D0 - mov r8, #0 - mov r7, #1 - mov r6, r8 - mov r4, r8 - mov r5, r7 - mov r3, r8 - mov ip, r7 - b _020582C8 -_02058230: - ldrb lr, [r2] - tst lr, #1 - movne sb, r7 - moveq sb, r6 - tst sb, #0xff - beq _020582C0 - ldrb sb, [r2, #0x3e] - tst sb, #1 - movne lr, r5 - moveq lr, r4 - tst lr, #0xff - beq _020582C0 - ldrb lr, [r2, #0x3f] - cmp lr, r0 - bne _020582C0 - cmp r1, #0 - beq _02058288 - tst sb, #8 - movne sb, ip - moveq sb, r3 - tst sb, #0xff - bne _020582C0 -_02058288: - ldrh r1, [r2, #0x3e] - add r0, r2, #0x3e - strh r1, [sp] - ldrh r3, [r2, #0x40] - ldrb r1, [sp] - strh r3, [sp, #2] - ldrh r2, [r2, #0x42] - bic r1, r1, #0x10 - strh r2, [sp, #4] - strb r1, [sp] - bl ItemZInit - add r0, sp, #0 - bl RemoveHolderForItemInBag - b _020582D4 -_020582C0: - add r8, r8, #1 - add r2, r2, #0x68 -_020582C8: - cmp r8, #4 - blt _02058230 -_020582D0: - mov r0, #0 -_020582D4: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_020582DC: .word TEAM_MEMBER_TABLE_PTR - arm_func_end ClearItem - - arm_func_start sub_020582E0 -sub_020582E0: ; 0x020582E0 - ldr ip, _020582EC ; =ClearItem - mov r1, #1 - bx ip - .align 2, 0 -_020582EC: .word ClearItem - arm_func_end sub_020582E0 - - arm_func_start sub_020582F0 -sub_020582F0: ; 0x020582F0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r3, _0205845C ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0x68 - ldr r3, [r3] - smulbb r2, r0, r2 - add r0, r3, #0x9000 - ldr r3, [r0, #0x84c] - mov r5, r1 - ldrb r0, [r3, r2] - add r4, r3, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02058450 - mov r0, r5 - bl GetItemAtIdx - ldrb r2, [r4, #0x3e] - mov r1, r0 - tst r2, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _02058404 - ldrb r0, [r4, #0x3f] - cmp r0, #0 - bne _02058374 - tst r2, #8 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - bne _02058448 -_02058374: - ldrh r2, [r4, #0x3e] - add r0, sp, #6 - strh r2, [sp, #6] - ldrh r3, [r4, #0x40] - ldrb r2, [sp, #6] - strh r3, [sp, #8] - ldrh ip, [r4, #0x42] - bic r3, r2, #0x10 - strh ip, [sp, #0xa] - ldrh r2, [r1] - strh r2, [sp] - ldrh ip, [r1, #2] - ldrb r2, [sp] - strh ip, [sp, #2] - ldrh ip, [r1, #4] - bic r1, r2, #0x10 - strh ip, [sp, #4] - ldrsh r2, [r4, #0xa] - add r2, r2, #1 - strb r2, [sp, #1] - strb r1, [sp] - strb r3, [sp, #6] - bl RemoveHolderForItemInBag - ldrh r2, [sp] - add r1, sp, #0 - mov r0, r5 - strh r2, [r4, #0x3e] - ldrh r2, [sp, #2] - strh r2, [r4, #0x40] - ldrh r2, [sp, #4] - strh r2, [r4, #0x42] - ldrsh r2, [r4, #0xa] - add r2, r2, #1 - and r2, r2, #0xff - bl SetHolderForItemInBag - b _02058448 -_02058404: - ldrh r2, [r1] - mov r0, r5 - strh r2, [r4, #0x3e] - ldrh r2, [r1, #2] - strh r2, [r4, #0x40] - ldrh r2, [r1, #4] - strh r2, [r4, #0x42] - ldrsh r2, [r4, #0xa] - add r2, r2, #1 - strb r2, [r4, #0x3f] - ldrb r2, [r4, #0x3e] - bic r2, r2, #0x10 - strb r2, [r4, #0x3e] - ldrsh r2, [r4, #0xa] - add r2, r2, #1 - and r2, r2, #0xff - bl SetHolderForItemInBag -_02058448: - mov r0, #1 - b _02058454 -_02058450: - mov r0, #0 -_02058454: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0205845C: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_020582F0 - - arm_func_start sub_02058460 -sub_02058460: ; 0x02058460 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r2, r0 - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _020584F4 ; =TEAM_MEMBER_TABLE_PTR - sub r1, r1, #1 - mov ip, r1, lsl #0x10 - ldr r1, [r0] - mov r0, #0 - add r1, r1, #0x9000 - mov r4, r0 - mov r5, #1 - mov r3, #0x68 - b _020584E4 -_0205849C: - smulbb r6, r0, r3 - ldr r7, [r1, #0x84c] - ldrb lr, [r7, r6] - add r6, r7, r6 - tst lr, #1 - movne r7, r5 - moveq r7, r4 - tst r7, #0xff - beq _020584D8 - ldrsh lr, [r6, #0xa] - cmp lr, ip, asr #16 - bne _020584D8 - mov r1, r2 - bl sub_020582F0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_020584D8: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -_020584E4: - cmp r0, #4 - blt _0205849C - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_020584F4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end sub_02058460 - - arm_func_start sub_020584F8 -sub_020584F8: ; 0x020584F8 - bx lr - arm_func_end sub_020584F8 - - arm_func_start sub_020584FC -sub_020584FC: ; 0x020584FC - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl GetActiveTeamMember - mov r1, r0 - ldrb r0, [r1, #1] - add r1, r1, #0x5e - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r4 - and r2, r2, #0xff - bl sub_02054FA0 - ldmia sp!, {r4, pc} - arm_func_end sub_020584FC - - arm_func_start sub_02058534 -sub_02058534: ; 0x02058534 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r2 - mov r0, r1 - bl GetActiveTeamMember - mov r1, r0 - cmp r4, #0x44 - bne _02058578 - ldrb r0, [r1, #1] - add r1, r1, #0x5e - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - mov r0, r5 - and r2, r2, #0xff - bl sub_02054FA0 - ldmia sp!, {r3, r4, r5, pc} -_02058578: - mov r0, r5 - mov r2, r4 - add r1, r1, #0x5e - bl sub_02054F44 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02058534 - - arm_func_start sub_0205858C -sub_0205858C: ; 0x0205858C - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl GetActiveTeamMember - mov r1, r0 - mov r0, r4 - add r1, r1, #0x5e - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldmia sp!, {r4, pc} - arm_func_end sub_0205858C - - arm_func_start sub_020585B4 -sub_020585B4: ; 0x020585B4 - ldrb r2, [r1, #1] - ldr ip, _020585D4 ; =sub_02054FA0 - add r1, r1, #0x5e - cmp r2, #0 - movne r2, #1 - moveq r2, #0 - and r2, r2, #0xff - bx ip - .align 2, 0 -_020585D4: .word sub_02054FA0 - arm_func_end sub_020585B4 - - arm_func_start ChangeGiratinaFormIfSkyDungeon -ChangeGiratinaFormIfSkyDungeon: ; 0x020585D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - bl IsSkyExclusiveDungeon - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r8, #0 - ldr r4, _02058640 ; =0x00000211 - mov r6, r8 - mov r7, #1 - mov r5, #0x218 -_020585FC: - mov r0, r8 - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r1, r7 - moveq r1, r6 - tst r1, #0xff - beq _02058628 - ldrsh r1, [r0, #0xc] - cmp r1, r4 - streqh r5, [r0, #0xc] -_02058628: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #4 - blt _020585FC - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02058640: .word 0x00000211 - arm_func_end ChangeGiratinaFormIfSkyDungeon - - arm_func_start sub_02058644 -sub_02058644: ; 0x02058644 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 -_02058650: - mov r0, r4 - mov r1, r5 - bl RevertGiratinaAndShaymin - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #4 - blt _02058650 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02058644 - - arm_func_start RevertGiratinaAndShaymin -RevertGiratinaAndShaymin: ; 0x02058674 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl sub_02056228 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl GetActiveTeamMember - ldrb r1, [r0] - tst r1, #1 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - ldmeqia sp!, {r3, r4, r5, pc} - tst r4, #2 - beq _020586C8 - ldrsh r1, [r0, #0xc] - cmp r1, #0x218 - ldreq r1, _020586E8 ; =0x00000211 - streqh r1, [r0, #0xc] - ldmeqia sp!, {r3, r4, r5, pc} -_020586C8: - tst r4, #1 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsh r2, [r0, #0xc] - ldr r1, _020586EC ; =0x00000217 - cmp r2, r1 - subeq r1, r1, #1 - streqh r1, [r0, #0xc] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020586E8: .word 0x00000211 -_020586EC: .word 0x00000217 - arm_func_end RevertGiratinaAndShaymin - - arm_func_start sub_020586F0 -sub_020586F0: ; 0x020586F0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - bl GetActiveTeamMember - mov r4, r0 - ldrb r0, [r4] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0205878C - mov r0, r5 - bl GetItemMoveId16 - mov ip, #0 - mov r2, ip - mov r3, #1 - b _02058768 -_02058730: - add r1, r4, ip, lsl #3 - ldrb r1, [r1, #0x1c] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _0205875C - add r1, r4, ip, lsl #3 - ldrh r1, [r1, #0x20] - cmp r0, r1 - beq _02058770 -_0205875C: - add r1, ip, #1 - mov r1, r1, lsl #0x10 - mov ip, r1, asr #0x10 -_02058768: - cmp ip, #4 - blt _02058730 -_02058770: - cmp ip, #4 - blt _0205878C - ldrsh r1, [r4, #0xc] - bl sub_02053D1C - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} -_0205878C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020586F0 - - arm_func_start sub_02058794 -sub_02058794: ; 0x02058794 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_0204E584 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl GetActiveTeamMember - mov r4, r0 - ldrsh r0, [r4, #8] - bl GetTeamMember - mov r1, r4 - bl sub_020534BC - ldmia sp!, {r4, pc} - arm_func_end sub_02058794 - - arm_func_start sub_020587C8 -sub_020587C8: ; 0x020587C8 - stmdb sp!, {r3, lr} - bl sub_02057E90 - mvn r0, #0 - bl sub_02058644 - bl RefillTeam - ldmia sp!, {r3, pc} - arm_func_end sub_020587C8 - - arm_func_start sub_020587E0 -sub_020587E0: ; 0x020587E0 - stmdb sp!, {r4, lr} - mov r4, r0 -#ifndef JAPAN - bl sub_02057DFC -#endif - bl sub_02057E90 - mvn r0, #0 - bl sub_02058644 - bl RefillTeam - mov r0, r4 - bl sub_02057AEC - mov r0, #0 - bl sub_02056318 - ldmia sp!, {r4, pc} - arm_func_end sub_020587E0 - - arm_func_start sub_02058810 -sub_02058810: ; 0x02058810 - mov r2, #0x64 - strh r2, [r0, #0x48] - mov r1, #0 - strh r2, [r0, #0x44] - strh r1, [r0, #0x4a] - strh r1, [r0, #0x46] - bx lr - arm_func_end sub_02058810 - - arm_func_start sub_0205882C -sub_0205882C: ; 0x0205882C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x30 - ldr r1, _02058AA4 ; =0x000003E3 - mov r4, r0 - mov r3, #0 - add r2, sp, #0x14 - mov r0, #4 - str r3, [sp, #0x1c] - bl DirectoryFileMngr_OpenDirectoryFile - ldr r1, [sp, #0x14] - add r0, sp, #0x1c - bl HandleSir0Translation - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0 - bl sub_02058ABC - mov r0, r4, lsl #0x10 - ldr r5, [sp, #0x1c] - mov r0, r0, asr #0x10 - mov r1, #0 - bl sub_02058ABC - add r1, r5, #4 - mov r2, #0x40 - mov r3, #9 - bl CopyAndInterleaveWrapper - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0 - bl sub_02058ABC - add r1, r5, #0x24 - mov r2, #0x80 - mov r3, #9 - bl CopyAndInterleaveWrapper - add r0, r4, #2 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #0 - bl sub_02058ABC - add r1, r5, #0x64 - mov r2, #0x100 - mov r3, #9 - bl CopyAndInterleaveWrapper - add r0, sp, #0x14 - bl UnloadFile - mov lr, #0 -_020588E4: - ldr r3, _02058AA8 ; =_020A3468 - ldr r5, _02058AAC ; =_022B578C - add r2, r3, lr, lsl #4 - ldr r1, [r2, #8] - ldr r0, _02058AB0 ; =0x000003FF - add r1, r4, r1 - add r7, r5, lr, lsl #4 - mov sb, #0x400 - ldr r3, [r3, lr, lsl #4] - and r8, r1, r0 - ldr r2, [r2, #4] - mov r1, r3, lsl #0x1e - mov r5, #0 - mov r0, r2, lsl #0x1e - rsb sb, sb, #0 - mov r2, r5 - mov r3, #1 -_02058928: - mov ip, r5, lsl #3 - ldrh sl, [r7, ip] - add r6, r7, r5, lsl #3 - cmp r5, #1 - bic sl, sl, #0x100 - strh sl, [r7, ip] - ldrh sl, [r7, ip] - add r5, r5, #1 - bic sl, sl, #0x200 - strh sl, [r7, ip] - ldrh sl, [r6] - moveq ip, r3 - movne ip, r2 - bic sl, sl, #0xc00 - strh sl, [r6] - ldrh sl, [r6] - mov ip, ip, lsl #0x1e - cmp r5, #2 - orr sl, sl, ip, lsr #20 - strh sl, [r6] - ldrh ip, [r6] - bic ip, ip, #0x1000 - strh ip, [r6] - ldrh ip, [r6] - bic ip, ip, #0x2000 - strh ip, [r6] - ldrh ip, [r6] - orr ip, ip, #0x2000 - strh ip, [r6] - ldrh ip, [r6] - bic ip, ip, #0xc000 - strh ip, [r6] - ldrh ip, [r6] - orr ip, ip, r1, lsr #16 - strh ip, [r6] - ldrh ip, [r6, #2] - bic ip, ip, #0x3e00 - strh ip, [r6, #2] - ldrh ip, [r6, #2] - bic ip, ip, #0xc000 - strh ip, [r6, #2] - ldrh ip, [r6, #2] - orr ip, ip, r0, lsr #16 - strh ip, [r6, #2] - ldrh ip, [r6, #4] - and ip, ip, sb - strh ip, [r6, #4] - ldrh ip, [r6, #4] - orr ip, ip, r8 - strh ip, [r6, #4] - ldrh ip, [r6, #4] - bic ip, ip, #0xc00 - strh ip, [r6, #4] - ldrh ip, [r6, #4] - orr ip, ip, #0xc00 - strh ip, [r6, #4] - ldrh ip, [r6, #4] - bic ip, ip, #0xf000 - strh ip, [r6, #4] - ldrh ip, [r6, #6] - bic ip, ip, #1 - strh ip, [r6, #6] - ldrh ip, [r6, #6] - bic ip, ip, #2 - strh ip, [r6, #6] - blt _02058928 - add lr, lr, #1 - cmp lr, #3 - blt _020588E4 - ldr r1, _02058AB4 ; =0x000003E5 - add r2, sp, #0xc - mov r0, #4 - mov r3, #0 - bl DirectoryFileMngr_OpenDirectoryFile - ldr r1, [sp, #0xc] - add r0, sp, #8 - bl HandleSir0Translation - mov r0, #0x90 - str r0, [sp] - mov r0, #0xff - str r0, [sp, #4] - ldr r1, [sp, #8] - add r0, sp, #0x20 - mov r2, #1 - mov r3, #0x20 - bl sub_0201F598 - ldr r0, _02058AB8 ; =_020AFC4C - add r1, sp, #0x20 - ldr r0, [r0] - mov r2, #0 - bl sub_0201B43C - add r0, sp, #0xc - bl UnloadFile - add sp, sp, #0x30 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02058AA4: .word 0x000003E3 -_02058AA8: .word _020A3468 -_02058AAC: .word _022B578C -_02058AB0: .word 0x000003FF -_02058AB4: .word 0x000003E5 -_02058AB8: .word _020AFC4C - arm_func_end sub_0205882C - - arm_func_start sub_02058ABC -sub_02058ABC: ; 0x02058ABC - ldr r3, _02058AF4 ; =_020AFC4C - mov r2, #0x70 - ldr ip, [r3] - ldr r3, _02058AF8 ; =_020AFC28 - mla r2, r1, r2, ip - ldrh r1, [r2, #0xc] - ldr ip, [r2, #0x64] - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #30 - add r1, r2, r1, ror #30 - mov r1, r1, lsl #1 - ldrsh r1, [r3, r1] - smlabb r0, r0, r1, ip - bx lr - .align 2, 0 -_02058AF4: .word _020AFC4C -_02058AF8: .word _020AFC28 - arm_func_end sub_02058ABC - - arm_func_start sub_02058AFC -sub_02058AFC: ; 0x02058AFC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - cmp r0, #0x32 - mov r6, r1 - mov r5, r2 - mov r4, r3 - cmpne r0, #0x33 - beq _02058B38 - ldr r1, _02058C08 ; =0xFFFFFD76 - 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 _02058B40 -_02058B38: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02058B40: - bl GetShadowSize - ldrb r1, [sp, #0x24] - mov r7, #0x200 - ldrsh lr, [r6] - cmp r1, #0 - ldr r1, _02058C0C ; =_022B578C - movne r2, #1 - moveq r2, #0 - add r1, r1, r0, lsl #4 - add r1, r1, r2, lsl #3 - ldr sb, _02058C10 ; =_020A3450 - ldrh r8, [r1, #2] - ldrsh ip, [r5, #0x24] - ldrsh r3, [r6, #2] - ldrsh r2, [r5, #0x26] - rsb r7, r7, #0 - and r5, r8, r7 - strh r5, [r1, #2] - ldr r0, [sb, r0, lsl #2] - add r5, lr, ip - add r0, r5, r0 - ldrh r5, [r1, #2] - and r0, r0, r7, lsr #23 - add r2, r3, r2 - orr r0, r5, r0 - strh r0, [r1, #2] - sub r0, r2, #2 - sub r2, r0, #2 - mov r3, r2, lsl #0x14 - ldrh r5, [r1, #6] - ldr r0, _02058C14 ; =0xFFFF000F - ldr r2, [sp, #0x20] - and r0, r5, r0 - strh r0, [r1, #6] - ldrh r5, [r1, #6] - ldr r0, _02058C18 ; =_020AFC4C - orr r3, r5, r3, lsr #16 - strh r3, [r1, #6] - ldrh r5, [r1, #4] - mov r3, r2, lsl #0x1e - ldr r0, [r0] - bic r2, r5, #0xc00 - strh r2, [r1, #4] - ldrh r5, [r1, #4] - mov r2, r4 - orr r3, r5, r3, lsr #20 - strh r3, [r1, #4] - bl sub_0201B9F8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02058C08: .word 0xFFFFFD76 -_02058C0C: .word _022B578C -_02058C10: .word _020A3450 -_02058C14: .word 0xFFFF000F -_02058C18: .word _020AFC4C - arm_func_end sub_02058AFC - - arm_func_start GetIqSkillStringId -GetIqSkillStringId: ; 0x02058C1C -#if defined(EUROPE) - add r0, r0, #0xe7 - add r0, r0, #0x2600 -#elif defined(JAPAN) - add r0, r0, #0x13 - add r0, r0, #0x3f00 -#else - add r0, r0, #0xe5 - add r0, r0, #0x2600 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end GetIqSkillStringId - - arm_func_start sub_02058C30 -sub_02058C30: ; 0x02058C30 - ldr ip, _02058C38 ; =CopyTacticString - bx ip - .align 2, 0 -_02058C38: .word CopyTacticString - arm_func_end sub_02058C30 - - arm_func_start DoesTacticFollowLeader -DoesTacticFollowLeader: ; 0x02058C3C - ldr r1, _02058C48 ; =_020A190C - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_02058C48: .word _020A190C - arm_func_end DoesTacticFollowLeader - - arm_func_start GetUnlockedTactics -GetUnlockedTactics: ; 0x02058C4C - stmdb sp!, {r3, lr} - mov lr, #0 - ldr r3, _02058C98 ; =TACTICS_UNLOCK_LEVEL_TABLE - mov ip, lr -_02058C5C: - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r2, r1 - strleb ip, [r0, lr] - add ip, ip, #1 - addle lr, lr, #1 - cmp ip, #0xc - blt _02058C5C - mov r1, #0xb - b _02058C8C -_02058C84: - strb r1, [r0, lr] - add lr, lr, #1 -_02058C8C: - cmp lr, #0xc - blt _02058C84 - ldmia sp!, {r3, pc} - .align 2, 0 -_02058C98: .word TACTICS_UNLOCK_LEVEL_TABLE - arm_func_end GetUnlockedTactics - - arm_func_start GetUnlockedTacticFlags -GetUnlockedTacticFlags: ; 0x02058C9C - stmdb sp!, {r4, lr} - mov r4, #0 - ldr lr, _02058CD4 ; =TACTICS_UNLOCK_LEVEL_TABLE - mov r2, r4 - mov r3, #1 -_02058CB0: - mov ip, r4, lsl #1 - ldrsh ip, [lr, ip] - cmp ip, r1 - strleb r3, [r0, r4] - strgtb r2, [r0, r4] - add r4, r4, #1 - cmp r4, #0xc - blt _02058CB0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE - arm_func_end GetUnlockedTacticFlags - - arm_func_start CanLearnIqSkill -CanLearnIqSkill: ; 0x02058CD8 - cmp r1, #0 - moveq r0, #0 - bxeq lr - ldr r2, _02058D00 ; =IQ_SKILLS - ldr r1, [r2, r1, lsl #2] - cmp r1, r0 - movle r0, #1 - movgt r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02058D00: .word IQ_SKILLS - arm_func_end CanLearnIqSkill - - arm_func_start GetLearnableIqSkills -GetLearnableIqSkills: ; 0x02058D04 - 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, r6 - ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS - mov fp, #0x19 - b _02058D74 -_02058D28: - mov r0, sb - bl GetIqGroup - mla r1, r0, fp, r4 - and r0, r5, #0xff - ldrb r7, [r0, r1] - cmp r7, #0xff - beq _02058D7C - cmp r7, #0x18 - bne _02058D58 - mov r0, #3 - bl GetPerformanceFlagWithChecks - b _02058D64 -_02058D58: - mov r0, r8 - mov r1, r7 - bl CanLearnIqSkill -_02058D64: - cmp r0, #0 - strneb r7, [sl, r6] - addne r6, r6, #1 - add r5, r5, #1 -_02058D74: - cmp r5, #0x19 - blt _02058D28 -_02058D7C: - mov r1, r6 - mov r0, #0 - b _02058D90 -_02058D88: - strb r0, [sl, r1] - add r1, r1, #1 -_02058D90: - cmp r1, #0x45 - blt _02058D88 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02058DA0: .word IQ_GROUP_SKILLS - arm_func_end GetLearnableIqSkills - - arm_func_start DisableIqSkill -DisableIqSkill: ; 0x02058DA4 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl IqSkillFlagTest - cmp r0, #0 - beq _02058DE4 - mov r0, r5, asr #4 - add r0, r5, r0, lsr #27 - mov r2, r0, asr #5 - sub r0, r5, r2, lsl #5 - mov r1, #1 - mvn r0, r1, lsl r0 - ldr r1, [r4, r2, lsl #2] - and r0, r1, r0 - str r0, [r4, r2, lsl #2] - ldmia sp!, {r3, r4, r5, pc} -_02058DE4: - mov r0, r4 - mov r1, r5 - bl EnableIqSkill - ldmia sp!, {r3, r4, r5, pc} - arm_func_end DisableIqSkill - - arm_func_start EnableIqSkill -EnableIqSkill: ; 0x02058DF4 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _02058E64 ; =IQ_SKILL_RESTRICTIONS - mov r3, r1, lsl #1 - ldrsh ip, [r2, r3] - mov r3, #0 - mov r4, #1 -_02058E0C: - mov r5, r3, lsl #1 - ldrsh r5, [r2, r5] - cmp ip, r5 - bne _02058E3C - mov lr, r3, asr #4 - add lr, r3, lr, lsr #27 - mov r6, lr, asr #5 - sub lr, r3, r6, lsl #5 - mvn lr, r4, lsl lr - ldr r5, [r0, r6, lsl #2] - and r5, r5, lr - str r5, [r0, r6, lsl #2] -_02058E3C: - add r3, r3, #1 - cmp r3, #0x45 - blt _02058E0C - mov ip, r1, lsr #5 - ldr r3, [r0, ip, lsl #2] - sub r1, r1, ip, lsl #5 - mov r2, #1 - orr r1, r3, r2, lsl r1 - str r1, [r0, ip, lsl #2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02058E64: .word IQ_SKILL_RESTRICTIONS - arm_func_end EnableIqSkill - - arm_func_start GetSpeciesIqSkill -GetSpeciesIqSkill: ; 0x02058E68 - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetIqGroup - ldr r2, _02058E88 ; =IQ_GROUP_SKILLS - mov r1, #0x19 - mla r1, r0, r1, r2 - ldrb r0, [r4, r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_02058E88: .word IQ_GROUP_SKILLS - arm_func_end GetSpeciesIqSkill - - arm_func_start DisableAllIqSkills -DisableAllIqSkills: ; 0x02058E8C - mov r3, #0 - mov r2, r3 -_02058E94: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - str r2, [r0, r3, lsl #2] - mov r3, r1, asr #0x10 - cmp r3, #3 - blt _02058E94 - bx lr - arm_func_end DisableAllIqSkills - - arm_func_start EnableAllLearnableIqSkills -EnableAllLearnableIqSkills: ; 0x02058EB0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - mov r6, r0 - add r0, sp, #0 - bl GetLearnableIqSkills - mov r0, r6 - bl DisableAllIqSkills - mov r5, #0 - add r4, sp, #0 - b _02058EF4 -_02058ED8: - ldrb r0, [r4, r5] - cmp r0, #0 - beq _02058EFC - ldrb r1, [r4, r5] - mov r0, r6 - bl EnableIqSkill - add r5, r5, #1 -_02058EF4: - cmp r5, #0x45 - blt _02058ED8 -_02058EFC: - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end EnableAllLearnableIqSkills diff --git a/asm/main_02054E4C.s b/asm/main_02054E4C.s new file mode 100644 index 00000000..d80379d7 --- /dev/null +++ b/asm/main_02054E4C.s @@ -0,0 +1,5166 @@ + .include "asm/macros.inc" + .include "main_02054E4C.inc" + + .text + + arm_func_start GendersEqual +GendersEqual: ; 0x02054E4C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + bl GetMonsterGender + mov r4, r0 + mov r0, r5 + bl GetMonsterGender + cmp r4, r0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GendersEqual + + arm_func_start GendersEqualNotGenderless +GendersEqualNotGenderless: ; 0x02054E78 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl GetMonsterGender + cmp r0, #3 + beq _02054EC0 + mov r0, r5 + bl GetMonsterGender + cmp r0, #3 + beq _02054EC0 + mov r0, r4 + bl GetMonsterGender + mov r4, r0 + mov r0, r5 + bl GetMonsterGender + cmp r4, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_02054EC0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GendersEqualNotGenderless + + arm_func_start GendersNotEqualNotGenderless +GendersNotEqualNotGenderless: ; 0x02054EC8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl GetMonsterGender + cmp r0, #3 + beq _02054F10 + mov r0, r5 + bl GetMonsterGender + cmp r0, #3 + beq _02054F10 + mov r0, r4 + bl GetMonsterGender + mov r4, r0 + mov r0, r5 + bl GetMonsterGender + cmp r4, r0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02054F10: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end GendersNotEqualNotGenderless + + arm_func_start sub_02054F18 +sub_02054F18: ; 0x02054F18 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add r0, r0, #0xea + add r0, r0, #0xfd00 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #2 + movls r0, #1 + movhi r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end sub_02054F18 + + arm_func_start sub_02054F44 +sub_02054F44: ; 0x02054F44 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r4, r2 + add r0, sp, #0 + mov r2, #0xa + bl StrncpySimpleNoPadSafe + cmp r4, #0 + bne _02054F7C + ldr r1, _02054F98 ; =_020A333C + add r2, sp, #0 + mov r0, r5 + bl SprintfStatic__02054A60 + b _02054F90 +_02054F7C: + ldr r1, _02054F9C ; =_020A3340 + add r3, sp, #0 + mov r0, r5 + mov r2, r4 + bl SprintfStatic__02054A60 +_02054F90: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02054F98: .word _020A333C +_02054F9C: .word _020A3340 + arm_func_end sub_02054F44 + + arm_func_start sub_02054FA0 +sub_02054FA0: ; 0x02054FA0 + ldr ip, _02054FB4 ; =sub_02054F44 + cmp r2, #0 + movne r2, #0x59 + moveq r2, #0x46 + bx ip + .align 2, 0 +_02054FB4: .word sub_02054F44 + arm_func_end sub_02054FA0 + + arm_func_start sub_02054FB8 +sub_02054FB8: ; 0x02054FB8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldrsh r3, [r4] + mov r2, #1 + add r0, sp, #0 + str r3, [sp] + rsb r3, r2, #0x3e8 + bl sub_02055088 + ldr r1, [sp] + strh r1, [r4] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_02054FB8 + + arm_func_start sub_02054FEC +sub_02054FEC: ; 0x02054FEC + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldrb r3, [r4] + add r0, sp, #0 + mov r2, #1 + str r3, [sp] + mov r3, #0xff + bl sub_02055088 + ldr r1, [sp] + strb r1, [r4] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_02054FEC + + arm_func_start sub_02055020 +sub_02055020: ; 0x02055020 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldrb r3, [r4] + add r0, sp, #0 + mov r2, #1 + str r3, [sp] + mov r3, #0xff + bl sub_02055088 + ldr r1, [sp] + strb r1, [r4] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_02055020 + + arm_func_start sub_02055054 +sub_02055054: ; 0x02055054 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldrsh r3, [r4] + mov r2, #1 + add r0, sp, #0 + str r3, [sp] + rsb r3, r2, #0x3e8 + bl sub_02055088 + ldr r1, [sp] + strh r1, [r4] + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end sub_02055054 + + arm_func_start sub_02055088 +sub_02055088: ; 0x02055088 + cmp r1, #0 + ble _020550B4 + ldr r2, [r0] + cmp r2, r3 + moveq r0, #0 + bxeq lr + add r1, r2, r1 + str r1, [r0] + cmp r1, r3 + strgt r3, [r0] + b _020550D4 +_020550B4: + ldr r3, [r0] + cmp r3, r2 + moveq r0, #0 + bxeq lr + add r1, r3, r1 + str r1, [r0] + cmp r1, r2 + strlt r2, [r0] +_020550D4: + mov r0, #1 + bx lr + arm_func_end sub_02055088 + + arm_func_start sub_020550DC +sub_020550DC: ; 0x020550DC + bx lr + arm_func_end sub_020550DC + + arm_func_start sub_020550E0 +sub_020550E0: ; 0x020550E0 + ldr r0, _0205510C ; =TEAM_MEMBER_TABLE_PTR + mov r3, #0 + ldr r2, [r0] + ldr r0, _02055110 ; =0x0000022B + mov r1, r3 +_020550F4: + add r3, r3, #1 + cmp r3, r0 + strb r1, [r2], #0x44 + blt _020550F4 + ldr ip, _02055114 ; =sub_0205523C + bx ip + .align 2, 0 +_0205510C: .word TEAM_MEMBER_TABLE_PTR +_02055110: .word 0x0000022B +_02055114: .word sub_0205523C + arm_func_end sub_020550E0 + + arm_func_start sub_02055118 +sub_02055118: ; 0x02055118 + ldr r0, _02055140 ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0 + ldr r1, [r0] + ldr ip, _02055144 ; =sub_0205523C + strb r2, [r1, #0x88] + ldr r1, [r0] + strb r2, [r1, #0xcc] + ldr r0, [r0] + strb r2, [r0, #0x110] + bx ip + .align 2, 0 +_02055140: .word TEAM_MEMBER_TABLE_PTR +_02055144: .word sub_0205523C + arm_func_end sub_02055118 + + arm_func_start IsMonsterOnTeam +IsMonsterOnTeam: ; 0x02055148 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov sb, r1 + bl GetGameMode + cmp r0, #3 +#ifdef JAPAN + mov r6, #1 + bne _020554FC +#else + bne _020551C0 +#endif + ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR + mov r8, #0 + ldr r7, [r0] + mov r5, r8 +#ifndef JAPAN + mov r6, #1 +#endif + ldr r4, _02055234 ; =_020B0A4C + b _020551B8 +_0205517C: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _020551B0 + ldrsh r0, [r7, #4] + ldr r2, [r4, sb, lsl #2] + mov r1, sl + blx r2 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_020551B0: + add r8, r8, #1 + add r7, r7, #0x44 +_020551B8: + cmp r8, #2 + blt _0205517C +#ifdef JAPAN + b _020551C0 +_020554FC: + ldr r0, _02055230 ; =_020B0A48 + mov r8, #2 + ldr r0, [r0] + mov r5, #0 + add r7, r0, #0x88 + ldr r4, _02055234 ; =_020B0A4C + b _02055554 +_02055518: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _0205554C + ldrsh r0, [r7, #4] + ldr r2, [r4, sb, lsl #2] + mov r1, sl + blx r2 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0205554C: + add r8, r8, #1 + add r7, r7, #0x44 +_02055554: + cmp r8, #5 + blt _02055518 +#endif +_020551C0: + ldr r0, _02055230 ; =TEAM_MEMBER_TABLE_PTR + mov r8, #5 + ldr r0, [r0] + mov fp, #0 + add r7, r0, #0x154 + mov r6, #1 + ldr r5, _02055234 ; =_020B0A4C + ldr r4, _02055238 ; =0x0000022B + b _02055220 +_020551E4: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, fp + tst r0, #0xff + beq _02055218 + ldrsh r0, [r7, #4] + ldr r2, [r5, sb, lsl #2] + mov r1, sl + blx r2 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02055218: + add r8, r8, #1 + add r7, r7, #0x44 +_02055220: + cmp r8, r4 + blt _020551E4 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02055230: .word TEAM_MEMBER_TABLE_PTR +_02055234: .word _020B0A4C +_02055238: .word 0x0000022B + arm_func_end IsMonsterOnTeam + + arm_func_start sub_0205523C +sub_0205523C: ; 0x0205523C + stmdb sp!, {r3, lr} + mov r0, #0x214 + mov r1, #0 + bl IsMonsterOnTeam + cmp r0, #0 + ldrne r1, _02055268 ; =0x0000022B + ldrne r0, _0205526C ; =_022B5788 + ldreq r1, _02055270 ; =0x0000022A + ldreq r0, _0205526C ; =_022B5788 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02055268: .word 0x0000022B +_0205526C: .word _022B5788 +_02055270: .word 0x0000022A + arm_func_end sub_0205523C + + arm_func_start GetNbRecruited +GetNbRecruited: ; 0x02055274 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _02055384 ; =0x00000906 + mov r4, r0 + bl MemZero + bl GetGameMode + cmp r0, #3 + mov r3, #1 + bne _020552E0 + ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR + mov lr, #0 + ldr ip, [r0] + mov r2, lr +_020552A4: + ldrb r0, [ip] + add lr, lr, #1 + tst r0, #1 + movne r0, r3 + moveq r0, r2 + tst r0, #0xff + ldrnesh r0, [ip, #4] + add ip, ip, #0x44 + movne r1, r0, lsl #1 + ldrnesh r0, [r4, r1] + addne r0, r0, #1 + strneh r0, [r4, r1] + cmp lr, #2 + blt _020552A4 + b _0205532C +_020552E0: + ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR + mov r5, #2 + ldr r0, [r0] + mov r2, #0 + add ip, r0, #0x88 +_020552F4: + ldrb r0, [ip] + add r5, r5, #1 + tst r0, #1 + movne r0, r3 + moveq r0, r2 + tst r0, #0xff + ldrnesh r0, [ip, #4] + add ip, ip, #0x44 + movne r1, r0, lsl #1 + ldrnesh r0, [r4, r1] + addne r0, r0, #1 + strneh r0, [r4, r1] + cmp r5, #5 + blt _020552F4 +_0205532C: + ldr r0, _02055388 ; =TEAM_MEMBER_TABLE_PTR + mov r5, #5 + ldr r0, [r0] + mov r3, #0 + add lr, r0, #0x154 + ldr r0, _0205538C ; =0x0000022B + mov ip, #1 +_02055348: + ldrb r1, [lr] + add r5, r5, #1 + tst r1, #1 + movne r1, ip + moveq r1, r3 + tst r1, #0xff + ldrnesh r1, [lr, #4] + add lr, lr, #0x44 + movne r2, r1, lsl #1 + ldrnesh r1, [r4, r2] + addne r1, r1, #1 + strneh r1, [r4, r2] + cmp r5, r0 + blt _02055348 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02055384: .word 0x00000906 +_02055388: .word TEAM_MEMBER_TABLE_PTR +_0205538C: .word 0x0000022B + arm_func_end GetNbRecruited + + arm_func_start IsValidTeamMember +IsValidTeamMember: ; 0x02055390 + stmdb sp!, {r4, lr} + ldr r1, _0205540C ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mov r0, #0x44 + smulbb r0, r4, r0 + ldr r1, [r1] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02055404 + cmp r4, #5 + bge _020553FC + bl GetGameMode + cmp r0, #3 + bne _020553EC + cmp r4, #2 + cmpne r4, #3 + cmpne r4, #4 + beq _020553FC + mov r0, #0 + ldmia sp!, {r4, pc} +_020553EC: + cmp r4, #0 + cmpne r4, #1 + movne r0, #0 + ldmneia sp!, {r4, pc} +_020553FC: + mov r0, #1 + ldmia sp!, {r4, pc} +_02055404: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0205540C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end IsValidTeamMember + + arm_func_start sub_02055410 +sub_02055410: ; 0x02055410 + stmdb sp!, {r4, lr} + ldr r1, _02055470 ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mov r0, #0x44 + smulbb r0, r4, r0 + ldr r1, [r1] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02055468 + bl GetGameMode + cmp r0, #3 + bne _0205545C + cmp r4, #2 + bne _02055468 + mov r0, #1 + ldmia sp!, {r4, pc} +_0205545C: + cmp r4, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_02055468: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02055470: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02055410 + + arm_func_start sub_02055474 +sub_02055474: ; 0x02055474 + stmdb sp!, {r4, lr} + ldr r1, _020554D4 ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mov r0, #0x44 + smulbb r0, r4, r0 + ldr r1, [r1] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _020554CC + bl GetGameMode + cmp r0, #3 + bne _020554C0 + cmp r4, #3 + bne _020554CC + mov r0, #1 + ldmia sp!, {r4, pc} +_020554C0: + cmp r4, #1 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_020554CC: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_020554D4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02055474 + + arm_func_start sub_020554D8 +sub_020554D8: ; 0x020554D8 + stmdb sp!, {r4, lr} + ldr r1, _02055524 ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mov r0, #0x44 + smulbb r0, r4, r0 + ldr r1, [r1] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0205551C + bl GetGameMode + cmp r0, #3 + cmpeq r4, #4 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_0205551C: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02055524: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020554D8 + + arm_func_start IsMainCharacter +IsMainCharacter: ; 0x02055528 + stmdb sp!, {r4, lr} + ldr r1, _020555A4 ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mov r0, #0x44 + smulbb r0, r4, r0 + ldr r1, [r1] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0205559C + cmp r4, #5 + bge _0205559C + bl GetGameMode + cmp r0, #3 + bne _02055584 + cmp r4, #2 + cmpne r4, #3 + cmpne r4, #4 + beq _02055594 + mov r0, #0 + ldmia sp!, {r4, pc} +_02055584: + cmp r4, #0 + cmpne r4, #1 + movne r0, #0 + ldmneia sp!, {r4, pc} +_02055594: + mov r0, #1 + ldmia sp!, {r4, pc} +_0205559C: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_020555A4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end IsMainCharacter + + arm_func_start GetTeamMember +GetTeamMember: ; 0x020555A8 + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + bxeq lr + ldr r2, _020555CC ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + bx lr + .align 2, 0 +_020555CC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetTeamMember + + arm_func_start sub_020555D0 +sub_020555D0: ; 0x020555D0 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02055648 ; =TEAM_MEMBER_TABLE_PTR + mov r5, #0 + ldr r2, [r2] + mov r6, #5 + add r4, r2, #0x154 + mov ip, r5 + mov lr, #1 + ldr r2, _0205564C ; =0x0000022B + b _02055638 +_020555F8: + ldrb r3, [r4] + tst r3, #1 + movne r3, lr + moveq r3, ip + tst r3, #0xff + beq _02055630 + ldrsh r3, [r4, #4] + cmp r3, r0 + bne _02055630 + cmp r5, r1 + moveq r0, r6, lsl #0x10 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 +_02055630: + add r6, r6, #1 + add r4, r4, #0x44 +_02055638: + cmp r6, r2 + blt _020555F8 + mvn r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02055648: .word TEAM_MEMBER_TABLE_PTR +_0205564C: .word 0x0000022B + arm_func_end sub_020555D0 + + arm_func_start GetHeroMemberIdx +GetHeroMemberIdx: ; 0x02055650 + ldr r0, _02055678 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + ldrb r0, [r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #0 + mvneq r0, #0 + bx lr + .align 2, 0 +_02055678: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetHeroMemberIdx + + arm_func_start GetPartnerMemberIdx +GetPartnerMemberIdx: ; 0x0205567C + ldr r0, _020556A4 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x44] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #1 + mvneq r0, #0 + bx lr + .align 2, 0 +_020556A4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetPartnerMemberIdx + + arm_func_start GetMainCharacter1MemberIdx +GetMainCharacter1MemberIdx: ; 0x020556A8 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + moveq r0, #2 + ldr r2, _020556E8 ; =TEAM_MEMBER_TABLE_PTR + movne r0, #0 + mov r1, #0x44 + smulbb r1, r0, r1 + ldr r2, [r2] + ldrb r1, [r2, r1] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + mvneq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_020556E8: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter1MemberIdx + + arm_func_start GetMainCharacter2MemberIdx +GetMainCharacter2MemberIdx: ; 0x020556EC + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + moveq r0, #3 + ldr r2, _0205572C ; =TEAM_MEMBER_TABLE_PTR + movne r0, #1 + mov r1, #0x44 + smulbb r1, r0, r1 + ldr r2, [r2] + ldrb r1, [r2, r1] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + mvneq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0205572C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter2MemberIdx + + arm_func_start GetMainCharacter3MemberIdx +GetMainCharacter3MemberIdx: ; 0x02055730 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + mvnne r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0205576C ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + ldrb r0, [r0, #0x110] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + movne r0, #4 + mvneq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0205576C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter3MemberIdx + + arm_func_start GetHero +GetHero: ; 0x02055770 + ldr r0, _02055794 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + ldrb r1, [r0] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + moveq r0, #0 + bx lr + .align 2, 0 +_02055794: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetHero + + arm_func_start GetPartner +GetPartner: ; 0x02055798 + ldr r0, _020557C0 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r0] + ldrb r0, [r1, #0x44] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r0, r1, #0x44 + moveq r0, #0 + bx lr + .align 2, 0 +_020557C0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetPartner + + arm_func_start GetMainCharacter1 +GetMainCharacter1: ; 0x020557C4 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + moveq r2, #2 + ldr r1, _02055808 ; =TEAM_MEMBER_TABLE_PTR + movne r2, #0 + mov r0, #0x44 + smulbb r2, r2, r0 + ldr r1, [r1] + ldrb r0, [r1, r2] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r0, r1, r2 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02055808: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter1 + + arm_func_start GetMainCharacter2 +GetMainCharacter2: ; 0x0205580C + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + moveq r2, #3 + ldr r1, _02055850 ; =TEAM_MEMBER_TABLE_PTR + movne r2, #1 + mov r0, #0x44 + smulbb r2, r2, r0 + ldr r1, [r1] + ldrb r0, [r1, r2] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r0, r1, r2 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02055850: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter2 + + arm_func_start GetMainCharacter3 +GetMainCharacter3: ; 0x02055854 + stmdb sp!, {r3, lr} + bl GetGameMode + cmp r0, #3 + movne r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02055890 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r0] + ldrb r0, [r1, #0x110] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r0, r1, #0x110 + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02055890: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetMainCharacter3 + + arm_func_start sub_02055894 +sub_02055894: ; 0x02055894 + ldr r1, _020558EC ; =TEAM_MEMBER_TABLE_PTR + mov r3, #0 + ldr r2, [r1] + ldr r1, _020558F0 ; =0x0000022B + b _020558DC +_020558A8: + cmp r2, r0 + bne _020558D4 + ldrb r0, [r2] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _020558E4 + mov r0, r3, lsl #0x10 + mov r0, r0, asr #0x10 + bx lr +_020558D4: + add r3, r3, #1 + add r2, r2, #0x44 +_020558DC: + cmp r3, r1 + blt _020558A8 +_020558E4: + mvn r0, #0 + bx lr + .align 2, 0 +_020558EC: .word TEAM_MEMBER_TABLE_PTR +_020558F0: .word 0x0000022B + arm_func_end sub_02055894 + + arm_func_start GetFirstMatchingMemberIdx +GetFirstMatchingMemberIdx: ; 0x020558F4 + stmdb sp!, {r4, lr} + ldr r1, _0205595C ; =TEAM_MEMBER_TABLE_PTR + mov r4, #5 + ldr r1, [r1] + mov r3, #0 + add lr, r1, #0x154 + mov ip, #1 + ldr r1, _02055960 ; =0x0000022B + b _0205594C +_02055918: + ldrb r2, [lr] + tst r2, #1 + movne r2, ip + moveq r2, r3 + tst r2, #0xff + beq _02055944 + ldrsh r2, [lr, #4] + cmp r2, r0 + moveq r0, r4, lsl #0x10 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, pc} +_02055944: + add r4, r4, #1 + add lr, lr, #0x44 +_0205594C: + cmp r4, r1 + blt _02055918 + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0205595C: .word TEAM_MEMBER_TABLE_PTR +_02055960: .word 0x0000022B + arm_func_end GetFirstMatchingMemberIdx + + arm_func_start GetFirstEmptyMemberIdx +GetFirstEmptyMemberIdx: ; 0x02055964 + stmdb sp!, {r3, lr} + ldr r1, _020559CC ; =TEAM_MEMBER_TABLE_PTR + cmp r0, #0x214 + ldr r0, [r1] + ldreq lr, _020559D0 ; =0x0000022B + add r3, r0, #0x154 + ldrne r0, _020559D4 ; =_022B5788 + mov ip, #5 + ldrne lr, [r0] + mov r0, #0 + mov r1, #1 + b _020559BC +_02055994: + ldrb r2, [r3] + tst r2, #1 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + moveq r0, ip, lsl #0x10 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r3, pc} + add ip, ip, #1 + add r3, r3, #0x44 +_020559BC: + cmp ip, lr + blt _02055994 + mvn r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_020559CC: .word TEAM_MEMBER_TABLE_PTR +_020559D0: .word 0x0000022B +_020559D4: .word _022B5788 + arm_func_end GetFirstEmptyMemberIdx + + arm_func_start sub_020559D8 +sub_020559D8: ; 0x020559D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r1, _02055B18 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0 + ldr lr, [r1] + mov r8, r0 + mov r2, r4 + mov r3, #1 + mvn r1, #0 +_020559F8: + ldrb r0, [lr] + add lr, lr, #0x44 + tst r0, #1 + movne r0, r3 + moveq r0, r2 + tst r0, #0xff + mov r0, r4, lsl #1 + strneh r4, [r8, r0] + add r4, r4, #1 + streqh r1, [r8, r0] + cmp r4, #5 + blt _020559F8 + mov r2, #0 + mov r3, #1 + ldr r0, _02055B1C ; =0x0000022B + b _02055B0C +_02055A38: + ldrb r1, [lr] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + bne _02055AFC + mvn ip, #0 + mov r0, r4, lsl #1 + mov r7, lr + mov r6, r4 + strh ip, [r8, r0] + add lr, lr, #0x44 + add r4, r4, #1 + add sb, ip, #0x22c + b _02055AD4 +_02055A74: + ldrb r0, [lr] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02055AC4 + mov r5, r7 + mov fp, lr + add r7, r7, #0x44 + mov sl, #4 +_02055A9C: + ldmia fp!, {r0, r1, r2, r3} + stmia r5!, {r0, r1, r2, r3} + subs sl, sl, #1 + bne _02055A9C + ldr r0, [fp] + str r0, [r5] + mov r0, r4, lsl #1 + strh r6, [r8, r0] + add r6, r6, #1 + b _02055ACC +_02055AC4: + mov r0, r4, lsl #1 + strh ip, [r8, r0] +_02055ACC: + add r4, r4, #1 + add lr, lr, #0x44 +_02055AD4: + cmp r4, sb + blt _02055A74 + mov r1, #0 + ldr r0, _02055B1C ; =0x0000022B + b _02055AF0 +_02055AE8: + strb r1, [r7], #0x44 + add r6, r6, #1 +_02055AF0: + cmp r6, r0 + blt _02055AE8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02055AFC: + mov r1, r4, lsl #1 + strh r4, [r8, r1] + add r4, r4, #1 + add lr, lr, #0x44 +_02055B0C: + cmp r4, r0 + blt _02055A38 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02055B18: .word TEAM_MEMBER_TABLE_PTR +_02055B1C: .word 0x0000022B + arm_func_end sub_020559D8 + + arm_func_start sub_02055B20 +sub_02055B20: ; 0x02055B20 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02055B74 ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x44 + smulbb r4, r0, r1 + cmp r0, #5 + ldr r5, [r2] + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + ldrb r1, [r5, r4] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + bl sub_020564B0 + cmp r0, #0 + mov r0, #0 + streqb r0, [r5, r4] + moveq r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02055B74: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02055B20 + + arm_func_start sub_02055B78 +sub_02055B78: ; 0x02055B78 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x58 + ldr r4, _02055CC4 ; =TEAM_MEMBER_TABLE_PTR + mov lr, #1 + mov r6, r1 + mov r7, r0 + mov ip, #0 + ldr r4, [r4] + mov r1, #0x44 + mov r0, r6 + mov r5, r3 + strb lr, [sp, #0x14] + strb r2, [sp, #0x16] + strb ip, [sp, #0x17] + strb lr, [sp, #0x15] + smlabb r4, r7, r1, r4 + bl GetBaseHp + strh r0, [sp, #0x1e] + mov r0, r6 + mov r1, #0 + bl GetBaseOffensiveStat + strb r0, [sp, #0x20] + mov r0, r6 + mov r1, #1 + bl GetBaseOffensiveStat + strb r0, [sp, #0x21] + mov r0, r6 + mov r1, #0 + bl GetBaseDefensiveStat + strb r0, [sp, #0x22] + mov r0, r6 + mov r1, #1 + bl GetBaseDefensiveStat + strb r0, [sp, #0x23] + mov r0, #0 + mov r2, #1 + strb r0, [sp, #0x1a] + strb r0, [sp, #0x1b] + add r0, sp, #0x28 + mov r1, r6 + strh r2, [sp, #0x1c] + bl EnableAllLearnableIqSkills + mov r2, #0 + add r0, sp, #0x36 + mov r1, r6 + strh r6, [sp, #0x18] + str r2, [sp, #0x24] + strb r2, [sp, #0x34] + bl sub_02053F10 + cmp r5, #0 + beq _02055C58 + add r0, sp, #0x4e + mov r1, r5 + mov r2, #0xa + bl StrncpySimple + b _02055C74 +_02055C58: + add r0, sp, #0 + mov r1, r6 + bl GetNameRaw + add r0, sp, #0x4e + add r1, sp, #0 + mov r2, #0xa + bl StrncpyName +_02055C74: + add r6, sp, #0x14 + mov r5, #4 +_02055C7C: + ldmia r6!, {r0, r1, r2, r3} + stmia r4!, {r0, r1, r2, r3} + subs r5, r5, #1 + bne _02055C7C + ldr r0, [r6] + cmp r7, #0 + str r0, [r4] + cmpne r7, #2 + mov r0, r7 + bne _02055CAC + bl TryAddMonsterToActiveTeam + b _02055CB0 +_02055CAC: + bl sub_02056554 +_02055CB0: + ldr r0, _02055CC8 ; =_020A3350 + mov r1, r7 + bl Debug_Print0 + add sp, sp, #0x58 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02055CC4: .word TEAM_MEMBER_TABLE_PTR +_02055CC8: .word _020A3350 + arm_func_end sub_02055B78 + + arm_func_start sub_02055CCC +sub_02055CCC: ; 0x02055CCC + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + ldrsh r0, [r5, #4] + bl GetFirstEmptyMemberIdx + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + beq _02055D38 + ldr r1, _02055D40 ; =TEAM_MEMBER_TABLE_PTR + mov r0, #0x44 + ldr r1, [r1] + mov r6, r5 + smlabb lr, r4, r0, r1 + mov ip, #4 +_02055D04: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02055D04 + ldr r0, [r6] + str r0, [lr] + ldrsh r0, [r5, #4] + bl SetPokemonJoined + ldrsh r0, [r5, #4] + cmp r0, #0x214 + ldreq r1, _02055D44 ; =0x0000022B + ldreq r0, _02055D48 ; =_022B5788 + streq r1, [r0] +_02055D38: + mov r0, r4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02055D40: .word TEAM_MEMBER_TABLE_PTR +_02055D44: .word 0x0000022B +_02055D48: .word _022B5788 + arm_func_end sub_02055CCC + + arm_func_start sub_02055D4C +sub_02055D4C: ; 0x02055D4C + stmdb sp!, {r3, lr} + bl sub_02055CCC + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldr r2, _02055D78 ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + smlabb r0, r0, r1, r2 + ldmia sp!, {r3, pc} + .align 2, 0 +_02055D78: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02055D4C + + arm_func_start sub_02055D7C +sub_02055D7C: ; 0x02055D7C + stmdb sp!, {r3, r4, r5, lr} + mvn r2, #0 + mov r5, r1 + cmp r0, r2 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r2, _02055DCC ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + mov r4, r5 + smlabb lr, r0, r1, r2 + mov ip, #4 +_02055DA8: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02055DA8 + ldr r0, [r4] + str r0, [lr] + ldrsh r0, [r5, #4] + bl SetPokemonJoined + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02055DCC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02055D7C + + arm_func_start sub_02055DD0 +sub_02055DD0: ; 0x02055DD0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x4c + ldrb ip, [sp, #0x58] + mov r5, r0 + mov r4, r1 + mov lr, r2 + str r3, [sp] + add r0, sp, #8 + mov r1, r5 + mov r2, r4 + mov r3, lr + str ip, [sp, #4] + bl sub_02052CF4 + add r0, sp, #8 + bl sub_02055D4C + add sp, sp, #0x4c + ldmia sp!, {r4, r5, pc} + arm_func_end sub_02055DD0 + + arm_func_start sub_02055E14 +sub_02055E14: ; 0x02055E14 + stmdb sp!, {r4, r5, r6, lr} + mov r3, r1 + ldrb r1, [r3] + mov r4, r0 + add r0, r3, #0x14 + and r1, r1, #1 + strh r1, [r4] + ldrb r1, [r3, #1] + add r6, r4, #0x18 + add r5, r3, #0x22 + strb r1, [r4, #4] + ldrb r1, [r3, #2] + add lr, r4, #0x2a + mov ip, #0xc + strb r1, [r4, #5] + ldrb r1, [r3, #3] + strb r1, [r4, #6] + ldrsh r1, [r3, #4] + strh r1, [r4, #8] + ldrb r1, [r3, #6] + strb r1, [r4, #0xa] + ldrb r1, [r3, #7] + strb r1, [r4, #0xb] + ldrsh r1, [r3, #8] + strh r1, [r4, #0xc] + ldrsh r1, [r3, #0xa] + strh r1, [r4, #0xe] + ldrb r1, [r3, #0xc] + strb r1, [r4, #0x10] + ldrb r1, [r3, #0xd] + strb r1, [r4, #0x11] + ldrb r1, [r3, #0xe] + strb r1, [r4, #0x12] + ldrb r1, [r3, #0xf] + strb r1, [r4, #0x13] + ldmia r0, {r0, r1, r2} + stmia r6, {r0, r1, r2} + ldr r0, [r3, #0x10] + str r0, [r4, #0x14] + ldrb r0, [r3, #0x20] + strb r0, [r4, #0x24] +_02055EB8: + ldrh r0, [r5], #2 + subs ip, ip, #1 + strh r0, [lr], #2 + bne _02055EB8 + add r0, r4, #0x42 + add r1, r3, #0x3a + mov r2, #0xa + bl StrncpySimple + mov r2, #0 + mov r1, r2 +_02055EE0: + add r0, r4, r2 + add r2, r2, #1 + strb r1, [r0, #2] + cmp r2, #2 + blt _02055EE0 + strb r1, [r4, #0x25] + strh r1, [r4, #0x26] + strh r1, [r4, #0x28] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02055E14 + + arm_func_start sub_02055F04 +sub_02055F04: ; 0x02055F04 + stmdb sp!, {r4, r5, r6, lr} + mov r3, r1 + ldrh r1, [r3] + mov ip, r0 + add r0, r3, #0x18 + and r1, r1, #1 + strb r1, [ip] + ldrb r1, [r3, #4] + add r6, ip, #0x14 + add r5, r3, #0x2a + strb r1, [ip, #1] + ldrb r1, [r3, #5] + add r4, ip, #0x22 + mov lr, #0xc + strb r1, [ip, #2] + ldrb r1, [r3, #6] + strb r1, [ip, #3] + ldrsh r1, [r3, #8] + strh r1, [ip, #4] + ldrb r1, [r3, #0xa] + strb r1, [ip, #6] + ldrb r1, [r3, #0xb] + strb r1, [ip, #7] + ldrsh r1, [r3, #0xc] + strh r1, [ip, #8] + ldrsh r1, [r3, #0xe] + strh r1, [ip, #0xa] + ldrb r1, [r3, #0x10] + strb r1, [ip, #0xc] + ldrb r1, [r3, #0x11] + strb r1, [ip, #0xd] + ldrb r1, [r3, #0x12] + strb r1, [ip, #0xe] + ldrb r1, [r3, #0x13] + strb r1, [ip, #0xf] + ldmia r0, {r0, r1, r2} + stmia r6, {r0, r1, r2} + ldr r0, [r3, #0x14] + str r0, [ip, #0x10] + ldrb r0, [r3, #0x24] + strb r0, [ip, #0x20] +_02055FA8: + ldrh r0, [r5], #2 + subs lr, lr, #1 + strh r0, [r4], #2 + bne _02055FA8 + add r0, ip, #0x3a + add r1, r3, #0x42 + mov r2, #0xa + bl StrncpySimple + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02055F04 + + arm_func_start sub_02055FCC +sub_02055FCC: ; 0x02055FCC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl IsValidTeamMember + cmp r0, #0 + beq _02056068 + mov r0, r4 + bl GetItemMoveId16 + mov r4, r0 + mov r0, r5 + bl GetTeamMember + mov lr, #0 + mov r3, lr + mov ip, #1 + mov r2, #6 + b _02056040 +_0205600C: + smlabb r5, lr, r2, r0 + ldrb r1, [r5, #0x22] + tst r1, #1 + movne r1, ip + moveq r1, r3 + tst r1, #0xff + beq _02056034 + ldrh r1, [r5, #0x24] + cmp r4, r1 + beq _02056048 +_02056034: + add r1, lr, #1 + mov r1, r1, lsl #0x10 + mov lr, r1, asr #0x10 +_02056040: + cmp lr, #4 + blt _0205600C +_02056048: + cmp lr, #4 + blt _02056068 + ldrsh r1, [r0, #4] + mov r0, r4 + bl sub_02053D1C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_02056068: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02055FCC + + arm_func_start IsMonsterNotNicknamed +IsMonsterNotNicknamed: ; 0x02056070 + ldr ip, _02056080 ; =StrcmpMonsterName + ldrsh r1, [r0, #4] + add r0, r0, #0x3a + bx ip + .align 2, 0 +_02056080: .word StrcmpMonsterName + arm_func_end IsMonsterNotNicknamed + + arm_func_start sub_02056084 +sub_02056084: ; 0x02056084 + ldr ip, _02056090 ; =sub_02054F44 + add r1, r1, #0x3a + bx ip + .align 2, 0 +_02056090: .word sub_02054F44 + arm_func_end sub_02056084 + + arm_func_start sub_02056094 +sub_02056094: ; 0x02056094 + ldr ip, _020560A0 ; =sub_02054FA0 + add r1, r1, #0x3a + bx ip + .align 2, 0 +_020560A0: .word sub_02054FA0 + arm_func_end sub_02056094 + + arm_func_start sub_020560A4 +sub_020560A4: ; 0x020560A4 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end sub_020560A4 + + arm_func_start sub_020560B8 +sub_020560B8: ; 0x020560B8 + ldr ip, _020560C4 ; =SetActiveTeam + mov r0, #0 + bx ip + .align 2, 0 +_020560C4: .word SetActiveTeam + arm_func_end sub_020560B8 + + arm_func_start RemoveActiveMembersFromAllTeams +RemoveActiveMembersFromAllTeams: ; 0x020560C8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov lr, #0 + ldr r7, _02056154 ; =TEAM_MEMBER_TABLE_PTR + mov r1, lr + mvn r0, #0 + mov r2, lr + mov r4, #0x68 + mov r6, #0x1a0 +_020560E8: + mul ip, lr, r6 + mov r3, r2 +_020560F0: + ldr r5, [r7] + add r5, ip, r5 + mla r5, r3, r4, r5 + add r5, r5, #0x9000 + strb r1, [r5, #0x36c] + ldr r5, [r7] + add r5, r5, lr, lsl #3 + add r5, r5, r3, lsl #1 + add r5, r5, #0x9800 + add r3, r3, #1 + strh r0, [r5, #0x56] + cmp r3, #4 + blt _020560F0 + ldr r3, [r7] + add r3, r3, lr, lsl #1 + add r3, r3, #0x9800 + strh r0, [r3, #0x50] + ldr r3, [r7] + add r3, r3, lr + add r3, r3, #0x9000 + add lr, lr, #1 + strb r1, [r3, #0x874] + cmp lr, #3 + blt _020560E8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02056154: .word TEAM_MEMBER_TABLE_PTR + arm_func_end RemoveActiveMembersFromAllTeams + + arm_func_start RemoveActiveMembersFromSpecialEpisodeTeam +RemoveActiveMembersFromSpecialEpisodeTeam: ; 0x02056158 + stmdb sp!, {r3, lr} + mov lr, #0 + ldr r3, _020561BC ; =TEAM_MEMBER_TABLE_PTR + mov r0, lr + mvn ip, #0 + mov r1, #0x68 +_02056170: + ldr r2, [r3] + mla r2, lr, r1, r2 + add r2, r2, #0x9000 + strb r0, [r2, #0x50c] + ldr r2, [r3] + add r2, r2, lr, lsl #1 + add r2, r2, #0x9800 + add lr, lr, #1 + strh ip, [r2, #0x5e] + cmp lr, #4 + blt _02056170 + ldr r2, _020561BC ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r2] + add r1, r1, #0x9800 + strh ip, [r1, #0x52] + ldr r1, [r2] + add r1, r1, #0x9000 + strb r0, [r1, #0x875] + ldmia sp!, {r3, pc} + .align 2, 0 +_020561BC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end RemoveActiveMembersFromSpecialEpisodeTeam + + arm_func_start RemoveActiveMembersFromRescueTeam +RemoveActiveMembersFromRescueTeam: ; 0x020561C0 + stmdb sp!, {r3, lr} + mov lr, #0 + ldr r3, _02056224 ; =TEAM_MEMBER_TABLE_PTR + mov r0, lr + mvn ip, #0 + mov r1, #0x68 +_020561D8: + ldr r2, [r3] + mla r2, lr, r1, r2 + add r2, r2, #0x9000 + strb r0, [r2, #0x6ac] + ldr r2, [r3] + add r2, r2, lr, lsl #1 + add r2, r2, #0x9800 + add lr, lr, #1 + strh ip, [r2, #0x66] + cmp lr, #4 + blt _020561D8 + ldr r2, _02056224 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r2] + add r1, r1, #0x9800 + strh ip, [r1, #0x54] + ldr r1, [r2] + add r1, r1, #0x9000 + strb r0, [r1, #0x876] + ldmia sp!, {r3, pc} + .align 2, 0 +_02056224: .word TEAM_MEMBER_TABLE_PTR + arm_func_end RemoveActiveMembersFromRescueTeam + + arm_func_start sub_02056228 +sub_02056228: ; 0x02056228 + ldr r1, _0205625C ; =0x000055AA + cmp r0, r1 + moveq r0, #1 + bxeq lr + ldr r1, _02056260 ; =0x00005AA5 + cmp r0, r1 + moveq r0, #1 + bxeq lr + cmp r0, #0 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0205625C: .word 0x000055AA +_02056260: .word 0x00005AA5 + arm_func_end sub_02056228 + + arm_func_start CheckTeamMemberIdx +CheckTeamMemberIdx: ; 0x02056264 + ldr r1, _0205628C ; =0x000055AA + cmp r0, r1 + moveq r0, #1 + bxeq lr + ldr r1, _02056290 ; =0x00005AA5 + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_0205628C: .word 0x000055AA +_02056290: .word 0x00005AA5 + arm_func_end CheckTeamMemberIdx + + arm_func_start IsMonsterIdInNormalRange +IsMonsterIdInNormalRange: ; 0x02056294 + cmp r0, #0 + blt _020562AC + ldr r1, _020562B4 ; =0x0000022B + cmp r0, r1 + movlt r0, #1 + bxlt lr +_020562AC: + mov r0, #0 + bx lr + .align 2, 0 +_020562B4: .word 0x0000022B + arm_func_end IsMonsterIdInNormalRange + + arm_func_start sub_020562B8 +sub_020562B8: ; 0x020562B8 + cmp r0, #0 + movlt r0, #1 + movge r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end sub_020562B8 + + arm_func_start SetActiveTeam +SetActiveTeam: ; 0x020562CC + ldr r3, _02056314 ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0x1a0 + ldr r1, [r3] + add r1, r1, #0x9000 + strb r0, [r1, #0x877] + ldr ip, [r3] + add r1, ip, #0x36c + add r1, r1, #0x9000 + mla r2, r0, r2, r1 + add r1, ip, #0x9000 + str r2, [r1, #0x84c] + ldr r2, [r3] + add r1, r2, #0x56 + add r1, r1, #0x9800 + add r1, r1, r0, lsl #3 + add r0, r2, #0x9000 + str r1, [r0, #0x870] + bx lr + .align 2, 0 +_02056314: .word TEAM_MEMBER_TABLE_PTR + arm_func_end SetActiveTeam + + arm_func_start sub_02056318 +sub_02056318: ; 0x02056318 + ldr r1, _02056338 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r1] + add r1, r2, #0x9000 + ldrb r1, [r1, #0x877] + add r1, r2, r1 + add r1, r1, #0x9000 + strb r0, [r1, #0x874] + bx lr + .align 2, 0 +_02056338: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056318 + + arm_func_start sub_0205633C +sub_0205633C: ; 0x0205633C + ldr r0, _0205635C ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r0] + add r0, r1, #0x9000 + ldrb r0, [r0, #0x877] + add r0, r1, r0 + add r0, r0, #0x9000 + ldrb r0, [r0, #0x874] + bx lr + .align 2, 0 +_0205635C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_0205633C + + arm_func_start sub_02056360 +sub_02056360: ; 0x02056360 + ldr r0, _02056388 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r1, [r0, #0x874] + cmp r1, #0 + ldreqb r0, [r0, #0x875] + cmpeq r0, #0 + movne r0, #1 + moveq r0, #0 + bx lr + .align 2, 0 +_02056388: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056360 + + arm_func_start GetActiveTeamMember +GetActiveTeamMember: ; 0x0205638C + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + bxeq lr + ldr r1, _020563B8 ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0x68 + ldr r1, [r1] + add r1, r1, #0x9000 + ldr r1, [r1, #0x84c] + smlabb r0, r0, r2, r1 + bx lr + .align 2, 0 +_020563B8: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetActiveTeamMember + + arm_func_start GetActiveRosterIndex +GetActiveRosterIndex: ; 0x020563BC + mvn r1, #0 + cmp r0, r1 + beq _02056404 + ldr r1, _0205640C ; =TEAM_MEMBER_TABLE_PTR + mov ip, #0 + ldr r1, [r1] + add r1, r1, #0x9000 + b _020563FC +_020563DC: + ldr r3, [r1, #0x870] + mov r2, ip, lsl #1 + ldrsh r2, [r3, r2] + cmp r0, r2 + moveq r0, ip, lsl #0x10 + moveq r0, r0, asr #0x10 + bxeq lr + add ip, ip, #1 +_020563FC: + cmp ip, #4 + blt _020563DC +_02056404: + mvn r0, #0 + bx lr + .align 2, 0 +_0205640C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetActiveRosterIndex + + arm_func_start sub_02056410 +sub_02056410: ; 0x02056410 + mvn r1, #0 + cmp r0, r1 + beq _02056454 + ldr r1, _0205645C ; =TEAM_MEMBER_TABLE_PTR + mov ip, #0 + ldr r1, [r1] + add r1, r1, #0x9000 + b _0205644C +_02056430: + ldr r3, [r1, #0x870] + mov r2, ip, lsl #1 + ldrsh r2, [r3, r2] + cmp r0, r2 + moveq r0, #1 + bxeq lr + add ip, ip, #1 +_0205644C: + cmp ip, #4 + blt _02056430 +_02056454: + mov r0, #0 + bx lr + .align 2, 0 +_0205645C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056410 + + arm_func_start sub_02056460 +sub_02056460: ; 0x02056460 + mvn r2, #0 + cmp r0, r2 + beq _020564A4 + ldr r2, _020564AC ; =TEAM_MEMBER_TABLE_PTR + mov r3, #0 + ldr r2, [r2] + add r2, r2, r1, lsl #3 + b _0205649C +_02056480: + add r1, r2, r3, lsl #1 + add r1, r1, #0x9800 + ldrsh r1, [r1, #0x56] + cmp r0, r1 + moveq r0, #1 + bxeq lr + add r3, r3, #1 +_0205649C: + cmp r3, #4 + blt _02056480 +_020564A4: + mov r0, #0 + bx lr + .align 2, 0 +_020564AC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056460 + + arm_func_start sub_020564B0 +sub_020564B0: ; 0x020564B0 + mvn r3, #0 + cmp r0, r3 + beq _020564F8 + ldr r1, _02056500 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, [r1] + add r1, ip, #0x9000 + ldrb r2, [r1, #0x877] + add r2, ip, r2, lsl #1 + add r2, r2, #0x9800 + ldrsh ip, [r2, #0x50] + cmp ip, r3 + beq _020564F8 + ldr r2, [r1, #0x870] + mov r1, ip, lsl #1 + ldrsh r1, [r2, r1] + cmp r0, r1 + moveq r0, #1 + bxeq lr +_020564F8: + mov r0, #0 + bx lr + .align 2, 0 +_02056500: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020564B0 + + arm_func_start sub_02056504 +sub_02056504: ; 0x02056504 + mvn r3, #0 + cmp r0, r3 + beq _02056548 + ldr r2, _02056550 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, [r2] + add r2, ip, r1, lsl #1 + add r2, r2, #0x9800 + ldrsh r2, [r2, #0x50] + cmp r2, r3 + beq _02056548 + add r1, ip, r1, lsl #3 + add r1, r1, r2, lsl #1 + add r1, r1, #0x9800 + ldrsh r1, [r1, #0x56] + cmp r0, r1 + moveq r0, #1 + bxeq lr +_02056548: + mov r0, #0 + bx lr + .align 2, 0 +_02056550: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056504 + + arm_func_start sub_02056554 +sub_02056554: ; 0x02056554 + stmdb sp!, {r4, lr} + mvn r1, #0 + cmp r0, r1 + beq _020565E8 + ldr r1, _020565F0 ; =TEAM_MEMBER_TABLE_PTR + mov ip, #0 + ldr lr, [r1] + add r1, lr, #0x9000 + b _02056598 +_02056578: + ldr r3, [r1, #0x870] + mov r2, ip, lsl #1 + ldrsh r2, [r3, r2] + cmp r0, r2 + moveq r0, ip, lsl #0x10 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, pc} + add ip, ip, #1 +_02056598: + cmp ip, #4 + blt _02056578 + mov r4, #0 + add r1, lr, #0x9000 + mvn r2, #0 + b _020565E0 +_020565B0: + ldr r3, [r1, #0x870] + mov ip, r4, lsl #1 + ldrsh r3, [r3, ip] + cmp r3, r2 + bne _020565DC + add r1, lr, #0x9000 + ldr r2, [r1, #0x870] + mov r1, r4, lsl #0x10 + strh r0, [r2, ip] + mov r0, r1, asr #0x10 + ldmia sp!, {r4, pc} +_020565DC: + add r4, r4, #1 +_020565E0: + cmp r4, #4 + blt _020565B0 +_020565E8: + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_020565F0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056554 + + arm_func_start sub_020565F4 +sub_020565F4: ; 0x020565F4 + stmdb sp!, {r4, lr} + mvn r2, #0 + cmp r0, r2 + beq _0205668C + ldr r2, _02056694 ; =TEAM_MEMBER_TABLE_PTR + mov ip, #0 + ldr lr, [r2] + add r3, lr, r1, lsl #3 + b _02056638 +_02056618: + add r2, r3, ip, lsl #1 + add r2, r2, #0x9800 + ldrsh r2, [r2, #0x56] + cmp r0, r2 + moveq r0, ip, lsl #0x10 + moveq r0, r0, asr #0x10 + ldmeqia sp!, {r4, pc} + add ip, ip, #1 +_02056638: + cmp ip, #4 + blt _02056618 + mov r4, #0 + add ip, lr, r1, lsl #3 + mvn r3, #0 + b _02056684 +_02056650: + add r2, ip, r4, lsl #1 + add r2, r2, #0x9800 + ldrsh r2, [r2, #0x56] + cmp r2, r3 + bne _02056680 + add r1, lr, r1, lsl #3 + add r1, r1, r4, lsl #1 + add r1, r1, #0x9800 + mov r2, r4, lsl #0x10 + strh r0, [r1, #0x56] + mov r0, r2, asr #0x10 + ldmia sp!, {r4, pc} +_02056680: + add r4, r4, #1 +_02056684: + cmp r4, #4 + blt _02056650 +_0205668C: + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02056694: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020565F4 + + arm_func_start sub_02056698 +sub_02056698: ; 0x02056698 + mvn r2, #0 + cmp r1, r2 + bxeq lr + ldr r2, _020566C0 ; =TEAM_MEMBER_TABLE_PTR + mov r3, r0, lsl #1 + ldr r0, [r2] + add r0, r0, #0x9000 + ldr r0, [r0, #0x870] + strh r1, [r0, r3] + bx lr + .align 2, 0 +_020566C0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056698 + + arm_func_start sub_020566C4 +sub_020566C4: ; 0x020566C4 + stmdb sp!, {r3, lr} + mvn r1, #0 + cmp r0, r1 + beq _02056748 + ldr r2, _02056750 ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0 + ldr lr, [r2] + add r2, lr, #0x9000 + b _02056740 +_020566E8: + ldr r3, [r2, #0x870] + mov ip, r1, lsl #1 + ldrsh r3, [r3, ip] + cmp r0, r3 + bne _0205673C + add r0, lr, #0x9000 + ldr r2, [r0, #0x870] + mvn r3, #0 + ldr r0, _02056750 ; =TEAM_MEMBER_TABLE_PTR + strh r3, [r2, ip] + ldr r2, [r0] + add r0, r2, #0x9000 + ldrb r0, [r0, #0x877] + add r0, r2, r0, lsl #1 + add r0, r0, #0x9800 + ldrsh r2, [r0, #0x50] + cmp r1, r2 + streqh r3, [r0, #0x50] + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} +_0205673C: + add r1, r1, #1 +_02056740: + cmp r1, #4 + blt _020566E8 +_02056748: + mvn r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02056750: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020566C4 + + arm_func_start TryAddMonsterToActiveTeam +TryAddMonsterToActiveTeam: ; 0x02056754 + stmdb sp!, {r4, lr} + mvn r1, #0 + cmp r0, r1 + beq _02056824 + ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR + mov ip, #0 + ldr lr, [r1] + add r1, lr, #0x9000 + b _020567B8 +_02056778: + ldr r3, [r1, #0x870] + mov r2, ip, lsl #1 + ldrsh r2, [r3, r2] + cmp r0, r2 + bne _020567B4 + ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR + mov r0, ip, lsl #0x10 + ldr r2, [r1] + mov r0, r0, asr #0x10 + add r1, r2, #0x9000 + ldrb r1, [r1, #0x877] + add r1, r2, r1, lsl #1 + add r1, r1, #0x9800 + strh r0, [r1, #0x50] + ldmia sp!, {r4, pc} +_020567B4: + add ip, ip, #1 +_020567B8: + cmp ip, #4 + blt _02056778 + mov r4, #0 + add r1, lr, #0x9000 + mvn r2, #0 + b _0205681C +_020567D0: + ldr r3, [r1, #0x870] + mov ip, r4, lsl #1 + ldrsh r3, [r3, ip] + cmp r3, r2 + bne _02056818 + add r1, lr, #0x9000 + ldr r2, [r1, #0x870] + ldr r1, _0205682C ; =TEAM_MEMBER_TABLE_PTR + strh r0, [r2, ip] + ldr r2, [r1] + mov r0, r4, lsl #0x10 + add r1, r2, #0x9000 + ldrb r1, [r1, #0x877] + mov r0, r0, asr #0x10 + add r1, r2, r1, lsl #1 + add r1, r1, #0x9800 + strh r0, [r1, #0x50] + ldmia sp!, {r4, pc} +_02056818: + add r4, r4, #1 +_0205681C: + cmp r4, #4 + blt _020567D0 +_02056824: + mvn r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_0205682C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end TryAddMonsterToActiveTeam + + arm_func_start sub_02056830 +sub_02056830: ; 0x02056830 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + mov r6, r7 + mov r4, r7 + mov r5, #1 +_02056844: + mov r0, r6 + bl GetActiveTeamMember + ldrb r0, [r0] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + addeq r7, r7, #1 + cmp r6, #4 + blt _02056844 + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02056830 + + arm_func_start sub_02056880 +sub_02056880: ; 0x02056880 + ldr r0, _020568A0 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r0] + add r0, r1, #0x9000 + ldrb r0, [r0, #0x877] + add r0, r1, r0, lsl #1 + add r0, r0, #0x9800 + ldrsh r0, [r0, #0x50] + bx lr + .align 2, 0 +_020568A0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056880 + + arm_func_start sub_020568A4 +sub_020568A4: ; 0x020568A4 + ldr r1, _020568D8 ; =TEAM_MEMBER_TABLE_PTR + mvn r0, #0 + ldr r3, [r1] + add r1, r3, #0x9000 + ldrb r2, [r1, #0x877] + add r2, r3, r2, lsl #1 + add r2, r2, #0x9800 + ldrsh r2, [r2, #0x50] + cmp r2, r0 + ldrne r1, [r1, #0x870] + movne r0, r2, lsl #1 + ldrnesh r0, [r1, r0] + bx lr + .align 2, 0 +_020568D8: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020568A4 + + arm_func_start sub_020568DC +sub_020568DC: ; 0x020568DC + ldr r1, _02056910 ; =TEAM_MEMBER_TABLE_PTR + mvn r3, #0 + ldr r2, [r1] + add r1, r2, r0, lsl #1 + add r1, r1, #0x9800 + ldrsh r1, [r1, #0x50] + cmp r1, r3 + addne r0, r2, r0, lsl #3 + addne r0, r0, r1, lsl #1 + addne r0, r0, #0x9800 + ldrnesh r3, [r0, #0x56] + mov r0, r3 + bx lr + .align 2, 0 +_02056910: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020568DC + + arm_func_start sub_02056914 +sub_02056914: ; 0x02056914 + ldr r0, _0205695C ; =TEAM_MEMBER_TABLE_PTR + mvn r2, #0 + ldr ip, [r0] + add r0, ip, #0x9000 + ldrb r1, [r0, #0x877] + add r1, ip, r1, lsl #1 + add r1, r1, #0x9800 + ldrsh r3, [r1, #0x50] + cmp r3, r2 + ldrne r1, [r0, #0x870] + movne r0, r3, lsl #1 + ldrnesh r1, [r1, r0] + cmpne r1, r2 + moveq r0, #0 + bxeq lr + mov r0, #0x44 + smlabb r0, r1, r0, ip + bx lr + .align 2, 0 +_0205695C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056914 + + arm_func_start RemoveActiveMembersFromMainTeam +RemoveActiveMembersFromMainTeam: ; 0x02056960 + stmdb sp!, {r3, r4, r5, lr} + mov r0, #0 + ldr r2, _020569C8 ; =TEAM_MEMBER_TABLE_PTR + mov r5, r0 + mvn ip, #0 + mov r3, #1 +_02056978: + ldr r1, [r2] + mov lr, r5, lsl #1 + add r1, r1, #0x9000 + ldr r4, [r1, #0x870] + add r5, r5, #1 + ldrsh r1, [r4, lr] + cmp r1, ip + movne r0, r3 + strneh ip, [r4, lr] + cmp r5, #4 + blt _02056978 + ldr r1, _020569C8 ; =TEAM_MEMBER_TABLE_PTR + mvn r2, #0 + ldr r3, [r1] + add r1, r3, #0x9000 + ldrb r1, [r1, #0x877] + add r1, r3, r1, lsl #1 + add r1, r1, #0x9800 + strh r2, [r1, #0x50] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020569C8: .word TEAM_MEMBER_TABLE_PTR + arm_func_end RemoveActiveMembersFromMainTeam + + arm_func_start SetTeamSetupHeroAndPartnerOnly +SetTeamSetupHeroAndPartnerOnly: ; 0x020569CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + bl GetMainCharacter1MemberIdx + mov r5, r0 + bl GetMainCharacter2MemberIdx + mov r6, r0 + bl GetMainCharacter3MemberIdx +#ifdef JAPAN + mov sl, #0 + ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR + mov r7, r0 + ldr r0, [r1] + mov fp, sl + add r0, r0, #0x9000 + ldr sb, [r0, #0x84c] +#else + mov r8, #0 + ldr r1, _02056AAC ; =TEAM_MEMBER_TABLE_PTR + mov r7, r0 + ldr r1, [r1] + mov sl, r8 + add r0, r1, #0x9000 + ldr sb, [r0, #0x84c] + mov fp, r8 +#endif + mov r4, #1 +_02056A08: + ldrb r0, [sb] + tst r0, #1 + movne r0, r4 + moveq r0, fp + tst r0, #0xff + ldrnesh r0, [sb, #8] + cmpne r0, r5 + cmpne r0, r6 + cmpne r0, r7 + beq _02056A40 + mov r0, sl, lsl #0x10 + mov r0, r0, asr #0x10 + mov r8, #1 + bl sub_02058138 +_02056A40: + add sl, sl, #1 + cmp sl, #4 + add sb, sb, #0x68 + blt _02056A08 + bl RemoveActiveMembersFromMainTeam + mvn r0, #0 + cmp r5, r0 + beq _02056A68 + mov r0, r5 + bl TryAddMonsterToActiveTeam +_02056A68: + mvn r0, #0 + cmp r6, r0 + beq _02056A7C + mov r0, r6 + bl sub_02056554 +_02056A7C: + mvn r0, #0 + cmp r7, r0 + beq _02056A90 + mov r0, r7 + bl sub_02056554 +_02056A90: + ldr r0, _02056AAC ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bl sub_02057464 + mov r0, r8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02056AAC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end SetTeamSetupHeroAndPartnerOnly + + arm_func_start SetTeamSetupHeroOnly +SetTeamSetupHeroOnly: ; 0x02056AB0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + bl sub_020568A4 + ldr r1, _02056B54 ; =TEAM_MEMBER_TABLE_PTR + mov r7, r0 +#ifdef JAPAN + ldr r0, [r1] + mov sl, #0 + add r0, r0, #0x9000 + mov r6, #1 + ldr sb, [r0, #0x84c] + mov r5, sl +#else + mov r8, #0 + ldr r1, [r1] + mov r6, #1 + add r0, r1, #0x9000 + ldr sb, [r0, #0x84c] + mov sl, r8 + mov r5, r8 +#endif + mov r4, r6 +_02056AE0: + ldrb r0, [sb] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + ldrnesh r0, [sb, #8] + cmpne r0, r7 + beq _02056B10 + mov r0, sl, lsl #0x10 + mov r0, r0, asr #0x10 + mov r8, r4 + bl sub_02058138 +_02056B10: + add sl, sl, #1 + cmp sl, #4 + add sb, sb, #0x68 + blt _02056AE0 + bl RemoveActiveMembersFromMainTeam + mvn r0, #0 + cmp r7, r0 + beq _02056B38 + mov r0, r7 + bl TryAddMonsterToActiveTeam +_02056B38: + ldr r0, _02056B54 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bl sub_02057464 + mov r0, r8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02056B54: .word TEAM_MEMBER_TABLE_PTR + arm_func_end SetTeamSetupHeroOnly + + arm_func_start sub_02056B58 +sub_02056B58: ; 0x02056B58 + stmdb sp!, {r3, lr} + ldr r2, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, [r2] + add r0, ip, #0x9000 + ldrb r3, [r0, #0x877] + cmp r3, #2 + ldmneia sp!, {r3, pc} + add r0, ip, #0x9800 + ldrsh r1, [r0, #0x50] + add r0, ip, r3, lsl #1 + add r0, r0, #0x9800 + strh r1, [r0, #0x50] + mov lr, #0 +_02056B8C: + ldr r1, [r2] + mov ip, lr, lsl #1 + add r0, r1, lr, lsl #1 + add r0, r0, #0x9800 + add r1, r1, #0x9000 + ldrsh r3, [r0, #0x56] + ldr r0, [r1, #0x870] + add lr, lr, #1 + strh r3, [r0, ip] + cmp lr, #4 + blt _02056B8C + ldr r0, _02056BD0 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bl sub_02057464 + ldmia sp!, {r3, pc} + .align 2, 0 +_02056BD0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056B58 + + arm_func_start sub_02056BD4 +sub_02056BD4: ; 0x02056BD4 + stmdb sp!, {r3, lr} + ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + cmp r0, #2 + ldmneia sp!, {r3, pc} + bl RemoveActiveMembersFromMainTeam + bl GetHeroMemberIdx + bl TryAddMonsterToActiveTeam + bl GetPartnerMemberIdx + bl sub_02056554 + ldr r0, _02056C1C ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bl sub_02057464 + ldmia sp!, {r3, pc} + .align 2, 0 +_02056C1C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056BD4 + + arm_func_start GetPartyMembers +GetPartyMembers: ; 0x02056C20 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r5, r0 + bl sub_020568A4 + mov r6, r0 + bl GetMainCharacter1MemberIdx + mov r7, r0 + bl GetMainCharacter2MemberIdx + mov r8, r0 + bl GetMainCharacter3MemberIdx + mov sb, r0 + cmp r5, #0 + mvn r0, #0 + addeq r5, sp, #0 + cmp r6, r0 + mov r4, #0 + mvn r0, #0 + strneh r6, [r5] + addne r4, r4, #1 + cmp r7, r0 + beq _02056C90 + mov r0, r7 + bl sub_02056410 + cmp r0, #0 + cmpne r7, r6 + movne r0, r4, lsl #1 + strneh r7, [r5, r0] + addne r4, r4, #1 +_02056C90: + mvn r0, #0 + cmp r8, r0 + beq _02056CB8 + mov r0, r8 + bl sub_02056410 + cmp r0, #0 + cmpne r8, r6 + movne r0, r4, lsl #1 + strneh r8, [r5, r0] + addne r4, r4, #1 +_02056CB8: + mvn r0, #0 + cmp sb, r0 + beq _02056CE0 + mov r0, sb + bl sub_02056410 + cmp r0, #0 + cmpne sb, r6 + movne r0, r4, lsl #1 + strneh sb, [r5, r0] + addne r4, r4, #1 +_02056CE0: + ldr r0, _02056D6C ; =TEAM_MEMBER_TABLE_PTR + mov r8, #0 + ldr r0, [r0] + mov r6, r8 + add r0, r0, #0x9000 + ldr sb, [r0, #0x84c] + mov r7, #1 + b _02056D58 +_02056D00: + ldrb r0, [sb] + tst r0, #2 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _02056D50 + ldrsh sl, [sb, #8] + mov r0, sl + bl sub_020564B0 + cmp r0, #0 + bne _02056D50 + mov r0, sl + bl IsMainCharacter + cmp r0, #0 + bne _02056D50 + mov r0, r4, lsl #1 + add r4, r4, #1 + strh sl, [r5, r0] + cmp r4, #4 + bge _02056D60 +_02056D50: + add r8, r8, #1 + add sb, sb, #0x68 +_02056D58: + cmp r8, #4 + blt _02056D00 +_02056D60: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02056D6C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end GetPartyMembers + + arm_func_start sub_02056D70 +sub_02056D70: ; 0x02056D70 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + movs sl, r0 + ldr r0, _02056E00 ; =TEAM_MEMBER_TABLE_PTR + mov r6, #0 + ldr r0, [r0] + mov sb, #0 + add r0, r0, #0x9000 + ldr r7, [r0, #0x84c] + addeq sl, sp, #0 + mov r4, r6 + mov r5, #1 +_02056DA0: + ldrb r0, [r7] + tst r0, #2 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _02056DE4 + ldrsh r8, [r7, #8] + mov r0, r8 + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _02056DE4 + mov r0, r8 + bl sub_020564B0 + cmp r0, #0 + moveq r0, sb, lsl #1 + streqh r8, [sl, r0] + addeq sb, sb, #1 +_02056DE4: + add r6, r6, #1 + cmp r6, #4 + add r7, r7, #0x68 + blt _02056DA0 + mov r0, sb + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02056E00: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056D70 + + arm_func_start sub_02056E04 +sub_02056E04: ; 0x02056E04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + movs sl, r0 + ldr r0, _02056EB4 ; =TEAM_MEMBER_TABLE_PTR + mov r6, #0 + ldr r0, [r0] + mov sb, #0 + add r0, r0, #0x9000 + ldr r7, [r0, #0x84c] + addeq sl, sp, #0 + mov r4, r6 + mov r5, #1 +_02056E34: + ldrb r0, [r7] + tst r0, #2 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _02056E98 + ldrsh r8, [r7, #8] + mov r0, r8 + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _02056E98 + mov r0, r8 + bl sub_02055410 + cmp r0, #0 + bne _02056E98 + mov r0, r8 + bl sub_02055474 + cmp r0, #0 + bne _02056E98 + mov r0, r8 + bl sub_020554D8 + cmp r0, #0 + moveq r0, sb, lsl #1 + streqh r8, [sl, r0] + addeq sb, sb, #1 +_02056E98: + add r6, r6, #1 + cmp r6, #4 + add r7, r7, #0x68 + blt _02056E34 + mov r0, sb + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02056EB4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056E04 + + arm_func_start sub_02056EB8 +sub_02056EB8: ; 0x02056EB8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r1, _02056F5C ; =TEAM_MEMBER_TABLE_PTR + mov r5, #0 + ldr r1, [r1] + mov r8, r0 + add r0, r1, #0x9000 + ldr r4, [r0, #0x84c] + mov r6, r5 + mov r7, r5 + mov sb, r5 + mov sl, #1 +_02056EE4: + ldrb r0, [r4] + tst r0, #1 + movne r0, sl + moveq r0, sb + tst r0, #0xff + beq _02056F1C + ldrsh r0, [r4, #8] + bl sub_02056410 + cmp r0, #0 + beq _02056F1C + ldrsh r0, [r4, #0xc] + bl GetBodySize + add r6, r6, r0 + add r5, r5, #1 +_02056F1C: + add r7, r7, #1 + cmp r7, #4 + add r4, r4, #0x68 + blt _02056EE4 + cmp r5, #4 + movge r0, #0 + ldmgeia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + cmp r8, #0 + beq _02056F4C + mov r0, r8 + bl GetBodySize + add r6, r6, r0 +_02056F4C: + cmp r6, #6 + movgt r0, #0 + movle r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02056F5C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056EB8 + + arm_func_start sub_02056F60 +sub_02056F60: ; 0x02056F60 + stmdb sp!, {r3, lr} + mvn r1, #0 + cmp r0, r1 + beq _02057000 + ldr r1, _0205700C ; =TEAM_MEMBER_TABLE_PTR + ldr r3, [r1] + add r1, r3, #0x9000 + ldrb r1, [r1, #0x877] + cmp r1, #0 + bne _02056FB8 + mov r2, #0 + b _02056FAC +_02056F90: + add r1, r3, r2, lsl #1 + add r1, r1, #0x9800 + ldrsh r1, [r1, #0x5e] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r2, r2, #1 +_02056FAC: + cmp r2, #4 + blt _02056F90 + b _02056FEC +_02056FB8: + cmp r1, #1 + bne _02056FEC + mov r2, #0 + b _02056FE4 +_02056FC8: + add r1, r3, r2, lsl #1 + add r1, r1, #0x9800 + ldrsh r1, [r1, #0x56] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r2, r2, #1 +_02056FE4: + cmp r2, #4 + blt _02056FC8 +_02056FEC: + mov r1, #0x44 + smlabb r0, r0, r1, r3 + ldrsh r0, [r0, #4] + bl sub_02056EB8 + ldmia sp!, {r3, pc} +_02057000: + mov r0, #0 + bl sub_02056EB8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0205700C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02056F60 + + arm_func_start sub_02057010 +sub_02057010: ; 0x02057010 + ldr r1, _02057028 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, _0205702C ; =sub_02057030 + ldr r1, [r1] + add r1, r1, #0x9000 + ldrb r1, [r1, #0x877] + bx ip + .align 2, 0 +_02057028: .word TEAM_MEMBER_TABLE_PTR +_0205702C: .word sub_02057030 + arm_func_end sub_02057010 + + arm_func_start sub_02057030 +sub_02057030: ; 0x02057030 + 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 + bl sub_020568DC + mov r4, r0 + cmp sl, #0 + mvn r0, #0 + addeq sl, sp, #0 + mov r8, #0 + cmp r4, r0 + beq _0205707C + mov r0, r4 + bl IsValidTeamMember + cmp r0, #0 + strneh r4, [sl] + addne r8, r8, #1 + mvneq r4, #0 +_0205707C: + mov r7, #0 + mvn fp, #0 +_02057084: + ldr r0, _0205717C ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r0] + add r0, r2, sb, lsl #3 + add r0, r0, r7, lsl #1 + add r0, r0, #0x9800 + ldrsh r5, [r0, #0x56] + cmp r5, fp + cmpne r4, r5 + beq _020570F8 + mov r1, #0x44 + mov r0, r5 + smlabb r6, r5, r1, r2 + bl sub_02055410 + cmp r0, #0 + bne _020570EC + mov r0, r5 + bl sub_02055474 + cmp r0, #0 + bne _020570EC + mov r0, r5 + bl sub_020554D8 + cmp r0, #0 + bne _020570EC + ldrsh r0, [r6, #4] + cmp r0, #0x214 + bne _020570F8 +_020570EC: + mov r0, r8, lsl #1 + strh r5, [sl, r0] + add r8, r8, #1 +_020570F8: + add r7, r7, #1 + cmp r7, #4 + blt _02057084 + mov r0, #0 + ldr r3, _0205717C ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + mvn r2, #0 +_02057114: + ldr r1, [r3] + add r1, r1, sb, lsl #3 + add r1, r1, r0, lsl #1 + add r1, r1, #0x9800 + ldrsh r6, [r1, #0x56] + cmp r6, r2 + beq _02057164 + mov r5, r4 + b _0205714C +_02057138: + mov r1, r5, lsl #1 + ldrsh r1, [sl, r1] + cmp r6, r1 + beq _02057154 + add r5, r5, #1 +_0205714C: + cmp r5, r8 + blt _02057138 +_02057154: + cmp r5, r8 + movge r1, r8, lsl #1 + strgeh r6, [sl, r1] + addge r8, r8, #1 +_02057164: + add r0, r0, #1 + cmp r0, #4 + blt _02057114 + mov r0, r8 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0205717C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057030 + + arm_func_start sub_02057180 +sub_02057180: ; 0x02057180 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x58 + sub sp, sp, #0x400 + add r0, sp, #0 + bl sub_020559D8 + mov r8, #0 + ldr fp, _020572E0 ; =_020A3398 + ldr r5, _020572E4 ; =TEAM_MEMBER_TABLE_PTR + add r6, sp, #0 + mov r7, r8 + mvn r4, #0 +_020571AC: + mov sb, r7 +_020571B0: + ldr r0, [r5] + add r0, r0, r8, lsl #3 + add r0, r0, sb, lsl #1 + add r0, r0, #0x9800 + ldrsh sl, [r0, #0x56] + cmp sl, r4 + beq _02057200 + mov r0, sl, lsl #1 + ldrsh r3, [r6, r0] + mov r0, fp + mov r1, r8 + mov r2, sl + bl Debug_Print0 + ldr r0, [r5] + mov r1, sl, lsl #1 + add r0, r0, r8, lsl #3 + add r0, r0, sb, lsl #1 + ldrsh r1, [r6, r1] + add r0, r0, #0x9800 + strh r1, [r0, #0x56] +_02057200: + add sb, sb, #1 + cmp sb, #4 + blt _020571B0 + add r8, r8, #1 + cmp r8, #3 + blt _020571AC + mov sb, #0 +_0205721C: + ldr r0, _020572E4 ; =TEAM_MEMBER_TABLE_PTR + mov sl, #0 + ldr r0, [r0] + mov r1, #0x1a0 + add r0, r0, #0x36c + add r0, r0, #0x9000 + mla r8, sb, r1, r0 + mov fp, #1 + add r7, sp, #0 + mov r5, sl + mov r6, sl + mvn r4, #0 +_0205724C: + ldrb r0, [r8] + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _020572B0 + ldrsh r2, [r8, #8] + ldr r0, _020572E8 ; =_020A33B8 + mov r1, sb + mov r3, r2, lsl #1 + ldrsh r3, [r7, r3] + bl Debug_Print0 + ldrsh r0, [r8, #8] + mov r1, r0, lsl #1 + ldrsh r1, [r7, r1] + cmp r1, r4 + streqb r6, [r8] + beq _020572B0 + bl IsMonsterIdInNormalRange + cmp r0, #0 + ldrnesh r0, [r8, #8] + movne r0, r0, lsl #1 + ldrnesh r0, [r7, r0] + strneh r0, [r8, #8] + streqb r5, [r8] +_020572B0: + add sl, sl, #1 + cmp sl, #4 + add r8, r8, #0x68 + blt _0205724C + and r0, sb, #0xff + bl sub_02057464 + add sb, sb, #1 + cmp sb, #3 + blt _0205721C + add sp, sp, #0x58 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020572E0: .word _020A3398 +_020572E4: .word TEAM_MEMBER_TABLE_PTR +_020572E8: .word _020A33B8 + arm_func_end sub_02057180 + + arm_func_start sub_020572EC +sub_020572EC: ; 0x020572EC + ldr r0, _02057304 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, _02057308 ; =sub_0205730C + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bx ip + .align 2, 0 +_02057304: .word TEAM_MEMBER_TABLE_PTR +_02057308: .word sub_0205730C + arm_func_end sub_020572EC + + arm_func_start sub_0205730C +sub_0205730C: ; 0x0205730C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _0205739C ; =TEAM_MEMBER_TABLE_PTR + mov r4, r0 + ldr r0, [r1] + mov r8, #0 + add r0, r0, #0x36c + mov r1, #0x1a0 + add r0, r0, #0x9000 + mla r7, r4, r1, r0 + mov r5, r8 + mov r6, #1 +_02057338: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _02057388 + ldrsh r0, [r7, #8] + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _02057388 + ldrsh r0, [r7, #8] + bl IsValidTeamMember + cmp r0, #0 + beq _02057388 + ldrsh r1, [r7, #8] + mov r2, r8, lsl #0x10 + mov r0, r7 + mov r3, r4 + mov r2, r2, asr #0x10 + bl sub_02053174 +_02057388: + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #0x68 + blt _02057338 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0205739C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_0205730C + + arm_func_start sub_020573A0 +sub_020573A0: ; 0x020573A0 + ldr r0, _020573B8 ; =TEAM_MEMBER_TABLE_PTR + ldr ip, _020573BC ; =sub_020573C0 + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bx ip + .align 2, 0 +_020573B8: .word TEAM_MEMBER_TABLE_PTR +_020573BC: .word sub_020573C0 + arm_func_end sub_020573A0 + + arm_func_start sub_020573C0 +sub_020573C0: ; 0x020573C0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _02057440 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0 + ldr r1, [r1] + mov r2, #0x1a0 + add r1, r1, #0x36c + add r1, r1, #0x9000 + mla r7, r0, r2, r1 + mov r5, r4 + mov r6, #1 +_020573E8: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _0205742C + ldrsh r0, [r7, #8] + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _0205742C + ldrsh r0, [r7, #8] + bl IsValidTeamMember + cmp r0, #0 + beq _0205742C + ldrsh r0, [r7, #8] + mov r1, r7 + bl sub_0205349C +_0205742C: + add r4, r4, #1 + cmp r4, #4 + add r7, r7, #0x68 + blt _020573E8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02057440: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020573C0 + + arm_func_start sub_02057444 +sub_02057444: ; 0x02057444 + ldr r0, _0205745C ; =TEAM_MEMBER_TABLE_PTR + ldr ip, _02057460 ; =sub_02057464 + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bx ip + .align 2, 0 +_0205745C: .word TEAM_MEMBER_TABLE_PTR +_02057460: .word sub_02057464 + arm_func_end sub_02057444 + + arm_func_start sub_02057464 +sub_02057464: ; 0x02057464 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x8c + ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR + mov sl, #0 + ldr r2, [r1] + mov r5, r0 + add r0, r2, r5, lsl #1 + add r0, r0, #0x9800 + ldrsh r1, [r0, #0x50] + mvn r4, #0 + mov fp, sl + cmp r1, r4 + addne r0, r2, r5, lsl #3 + addne r0, r0, r1, lsl #1 + addne r0, r0, #0x9800 + ldrnesh r4, [r0, #0x56] + add r0, r2, #0x36c + add r1, r0, #0x9000 + mov r0, #0x1a0 + mla sb, r5, r0, r1 + mov r6, #1 + add r7, sp, #0x1c + mvn r8, #0 +_020574C0: + ldrb r0, [sb] + mov r1, sl, lsl #1 + strh r8, [r7, r1] + tst r0, #1 + movne r0, r6 + moveq r0, fp + tst r0, #0xff + beq _02057514 + ldrsh r0, [sb, #8] + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _02057514 + ldrsh r0, [sb, #8] + bl IsValidTeamMember + cmp r0, #0 + ldrnesh r1, [sb, #8] + movne r0, sl, lsl #1 + strneh r1, [r7, r0] + bne _02057514 + ldrsh r0, [sb, #8] + bl sub_020566C4 +_02057514: + add sl, sl, #1 + cmp sl, #4 + add sb, sb, #0x68 + blt _020574C0 + add r0, sp, #0x14 + mov r1, r5 + bl sub_02057030 + str r0, [sp, #0xc] + ldr r0, _020577B8 ; =_020A33D4 + ldr r2, [sp, #0xc] + mov r1, r5 + bl Debug_Print0 + mov r0, #0x1a0 + ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR + mov r7, #0 + mul r2, r5, r0 + ldr r1, [r1] + mov sl, r7 + add r0, r1, #0x36c + add r0, r0, #0x9000 + add r8, r0, r2 + add r0, r1, r2 + str r0, [sp, #8] + b _0205767C +_02057574: + add r0, sp, #0x14 + mov r1, sl, lsl #1 + ldrsh r0, [r0, r1] + mov sb, r8 + mov r6, #0 + str r0, [sp] + mov r0, r0 + cmp r4, r0 + moveq r0, sl, lsl #0x10 + moveq r7, r0, asr #0x10 + add r2, sp, #0x1c + b _020575C0 +_020575A4: + mov r0, r6, lsl #1 + ldrsh r1, [r2, r0] + ldr r0, [sp] + cmp r1, r0 + beq _020575C8 + add r6, r6, #1 + add sb, sb, #0x68 +_020575C0: + cmp r6, #4 + blt _020575A4 +_020575C8: + cmp r6, #4 + bge _02057678 + cmp sl, r6 + beq _02057678 + ldr r0, [sp, #8] + mov r1, #0x68 + mla r0, sl, r1, r0 + str r0, [sp, #4] + add r0, r0, #0x36c + add ip, sp, #0x24 + add lr, r0, #0x9000 + mov fp, #6 +_020575F8: + subs fp, fp, #1 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + bne _020575F8 + ldr r0, [sp, #4] + add r2, r0, #0x36c + ldmia lr, {r0, r1} + stmia ip, {r0, r1} + mov ip, sb + add fp, r2, #0x9000 + mov lr, #6 +_02057624: + ldmia ip!, {r0, r1, r2, r3} + stmia fp!, {r0, r1, r2, r3} + subs lr, lr, #1 + bne _02057624 + ldmia ip, {r0, r1} + stmia fp, {r0, r1} + add fp, sp, #0x24 + mov ip, #6 +_02057644: + ldmia fp!, {r0, r1, r2, r3} + stmia sb!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02057644 + add r3, sp, #0x1c + mov ip, sl, lsl #1 + ldrsh r2, [r3, ip] + mov r6, r6, lsl #1 + ldmia fp, {r0, r1} + stmia sb, {r0, r1} + ldr r0, [sp] + strh r2, [r3, r6] + strh r0, [r3, ip] +_02057678: + add sl, sl, #1 +_0205767C: + ldr r0, [sp, #0xc] + cmp sl, r0 + blt _02057574 + mov r1, #0 + mov sl, r1 + add r0, sp, #0x10 +_02057694: + strb sl, [r0, r1] + add r1, r1, #1 + cmp r1, #4 + blt _02057694 + add sb, sp, #0x14 + add r6, sp, #0x1c + add r4, sp, #0x10 + mov fp, #1 + b _0205774C +_020576B8: + ldr r0, _020577B4 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r0] + mov r0, sl, lsl #1 + add r1, r1, r5, lsl #3 + add r1, r1, sl, lsl #1 + ldrsh r3, [sb, r0] + add r1, r1, #0x9800 + ldrsh r2, [r6, r0] + strh r3, [r1, #0x56] + ldrsh r1, [sb, r0] + cmp r2, r1 + beq _020576FC + mov r0, r8 + mov r2, sl, lsl #0x10 + mov r2, r2, asr #0x10 + bl sub_020530D4 + b _02057724 +_020576FC: + ldrb r0, [r8, #0x3e] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + addne r1, sl, #1 + ldrneb r0, [r8, #0x3f] + andne r1, r1, #0xff + strneb r1, [r4, r0] + strneb r1, [r8, #0x3f] +_02057724: + strh sl, [r8, #0xa] + ldrb r0, [r8] + cmp r7, sl + add sl, sl, #1 + orr r0, r0, #2 + strb r0, [r8] + streqb fp, [r8, #1] + movne r0, #0 + strneb r0, [r8, #1] + add r8, r8, #0x68 +_0205774C: + ldr r0, [sp, #0xc] + cmp sl, r0 + blt _020576B8 + mvn r3, #0 + mov r2, #0 + ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR + b _02057784 +_02057768: + ldr r0, [r1] + add r0, r0, r5, lsl #3 + add r0, r0, sl, lsl #1 + add r0, r0, #0x9800 + strh r3, [r0, #0x56] + strb r2, [r8], #0x68 + add sl, sl, #1 +_02057784: + cmp sl, #4 + blt _02057768 + ldr r1, _020577B4 ; =TEAM_MEMBER_TABLE_PTR + add r0, sp, #0x10 + ldr r2, [r1] + mov r1, r5 + add r2, r2, r5, lsl #1 + add r2, r2, #0x9800 + strh r7, [r2, #0x50] + bl sub_0200FA0C + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020577B4: .word TEAM_MEMBER_TABLE_PTR +_020577B8: .word _020A33D4 + arm_func_end sub_02057464 + + arm_func_start sub_020577BC +sub_020577BC: ; 0x020577BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x4c + mov sl, r0 + ldr r0, _02057A24 ; =_020A340C + bl Debug_Print0 + cmp sl, #0xff + beq _02057904 + mov r0, sl + bl IsLevelResetDungeon + cmp r0, #0 + beq _020578E0 + ldr r4, _02057A28 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, _02057A2C ; =_020A336C + ldr r3, [r4] + ldrb r2, [r0] + ldrb r1, [r0, #1] + add r0, r3, #0x9000 + ldr r8, [r0, #0x84c] + strb r2, [sp, #4] + strb r1, [sp, #5] + mov sb, #0 + and r7, r2, #0xff + and r6, r1, #0xff + add r5, sp, #0x1c + mov fp, #0x44 +_02057820: + ldrb r0, [r8] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _020578D0 + strb r7, [sp, #6] + strb r6, [sp, #7] + mov r0, #0 + str r0, [sp] + ldrsh r1, [r8, #8] + ldr ip, [r4] + add r0, sp, #8 + smlabb r1, r1, fp, ip + ldrsh r1, [r1, #4] + mov r2, #0 + add r3, sp, #6 + bl sub_02052E2C + ldrb r0, [sp, #9] + add r3, r8, #0x4c + strb r0, [r8, #2] + ldrsh r0, [sp, #0x10] + strh r0, [r8, #6] + ldrsh r0, [sp, #0x12] + strh r0, [r8, #0xe] + ldrsh r0, [sp, #0x12] + strh r0, [r8, #0x10] + ldrb r0, [sp, #0x14] + strb r0, [r8, #0x12] + ldrb r0, [sp, #0x15] + strb r0, [r8, #0x13] + ldrb r0, [sp, #0x16] + strb r0, [r8, #0x14] + ldrb r0, [sp, #0x17] + strb r0, [r8, #0x15] + ldr r0, [sp, #0x18] + str r0, [r8, #0x18] + ldmia r5, {r0, r1, r2} + stmia r3, {r0, r1, r2} + ldrb r2, [sp, #0x28] + add r0, r8, #0x1c + add r1, sp, #0x2a + strb r2, [r8, #0x58] + bl GroundToDungeonMoveset +_020578D0: + add sb, sb, #1 + cmp sb, #4 + add r8, r8, #0x68 + blt _02057820 +_020578E0: + ldr r0, _02057A28 ; =TEAM_MEMBER_TABLE_PTR + mov r2, sb, lsl #1 + ldr r1, [r0] + ldr r0, _02057A30 ; =_020A343C + add r1, r1, #0x9000 + ldr r3, [r1, #0x870] + mov r1, sb + ldrsh r2, [r3, r2] + bl Debug_Print0 +_02057904: + ldr r0, _02057A34 ; =_020A344C + bl Debug_Print0 + mov r0, sl + bl GetMaxMembersAllowed + mov r8, #0 + ldr r1, _02057A28 ; =TEAM_MEMBER_TABLE_PTR + mov r6, #1 + ldr r1, [r1] + mov r7, r0 + add r0, r1, #0x9000 + ldr sl, [r0, #0x84c] + mov sb, r8 + mov fp, sl + mov r5, r8 + mov r3, r8 + mov r4, r6 + mov r0, r8 + mov r1, r6 + b _020579A4 +_02057950: + ldrb r2, [fp] + tst r2, #1 + movne ip, r6 + moveq ip, r5 + tst ip, #0xff + beq _0205799C + tst r2, #2 + movne r2, r4 + moveq r2, r3 + tst r2, #0xff + beq _0205799C + ldrb r2, [fp, #1] + cmp r2, #0 + movne r2, r1 + moveq r2, r0 + tst r2, #0xff + movne r0, sb, lsl #0x10 + movne r8, r0, asr #0x10 + bne _020579AC +_0205799C: + add sb, sb, #1 + add fp, fp, #0x68 +_020579A4: + cmp sb, #4 + blt _02057950 +_020579AC: + mov sb, #0 + mov r6, #1 + mov fp, sb + mov r5, r6 + mov r4, sb +_020579C0: + ldrb r0, [sl] + tst r0, #1 + movne r1, r5 + moveq r1, fp + tst r1, #0xff + beq _02057A08 + tst r0, #2 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + cmpne r8, sb + beq _02057A08 + cmp r6, r7 + addlt r6, r6, #1 + blt _02057A08 + strb r4, [sl] + ldrsh r0, [sl, #8] + bl sub_020566C4 +_02057A08: + add sb, sb, #1 + cmp sb, #4 + add sl, sl, #0x68 + blt _020579C0 + bl sub_02058064 + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02057A24: .word _020A340C +_02057A28: .word TEAM_MEMBER_TABLE_PTR +_02057A2C: .word _020A336C +_02057A30: .word _020A343C +_02057A34: .word _020A344C + arm_func_end sub_020577BC + + arm_func_start sub_02057A38 +sub_02057A38: ; 0x02057A38 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mvn r0, #0 + cmp r6, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_020568A4 + ldr r1, _02057AC0 ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0x68 + ldr r1, [r1] + mov r4, r6, lsl #1 + add r1, r1, #0x9000 + ldr r5, [r1, #0x870] + ldr r3, [r1, #0x84c] + ldrsh r4, [r5, r4] + sub r1, r2, #0x69 + mla r5, r6, r2, r3 + mov r7, r0 + cmp r4, r1 + beq _02057AB4 + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl sub_020530D4 + strh r6, [r5, #0xa] + ldrb r0, [r5] + cmp r4, r7 + orr r0, r0, #2 + strb r0, [r5] + moveq r0, #1 + streqb r0, [r5, #1] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02057AB4: + mov r0, #0 + strb r0, [r5] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02057AC0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057A38 + + arm_func_start sub_02057AC4 +sub_02057AC4: ; 0x02057AC4 + stmdb sp!, {r4, lr} + mov r4, #0 +_02057ACC: + mov r0, r4 + bl sub_02057A38 + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #4 + blt _02057ACC + ldmia sp!, {r4, pc} + arm_func_end sub_02057AC4 + + arm_func_start sub_02057AEC +sub_02057AEC: ; 0x02057AEC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, r0 + bl IsLevelResetDungeon + cmp r4, #0xff + moveq sl, #0 + beq _02057B10 + mov r0, r4 + bl IsLevelResetDungeon + mov sl, r0 +_02057B10: + bl GetGameMode + cmp r0, #5 + movne r0, #1 + moveq r0, #0 + and r7, r0, #0xff + bl sub_02057C40 + bl RemoveActiveMembersFromMainTeam + mov sb, #0 + ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR + mov r6, #1 + ldr r0, [r0] + mov r5, sb + add r0, r0, #0x9000 + ldr r8, [r0, #0x84c] + mov fp, sb + mov r4, r6 +_02057B50: + ldrb r0, [r8] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _02057C14 + ldrsh r0, [r8, #8] + bl CheckTeamMemberIdx + cmp r0, #0 + bne _02057C14 + ldrsh r0, [r8, #0xc] + bl GetBaseFormCastformCherrimDeoxys + strh r0, [r8, #0xc] + ldrsh r0, [r8, #8] + bl IsMonsterIdInNormalRange + cmp r0, #0 + beq _02057C14 + ldrb r0, [r8, #1] + cmp r0, #0 + movne r0, r4 + moveq r0, fp + tst r0, #0xff + ldrsh r0, [r8, #8] + beq _02057BB8 + bl TryAddMonsterToActiveTeam + b _02057BBC +_02057BB8: + bl sub_02056554 +_02057BBC: + cmp sl, #0 + beq _02057BE8 + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02058138 + mov r2, sb, lsl #0x10 + ldrsh r1, [r8, #8] + mov r0, r8 + mov r2, r2, asr #0x10 + bl sub_020530D4 + b _02057C14 +_02057BE8: + cmp r7, #0 + beq _02057C00 + ldrsh r0, [r8, #8] + mov r1, r8 + bl sub_0205349C + b _02057C14 +_02057C00: + ldrsh r1, [r8, #8] + mov r2, sb, lsl #0x10 + mov r0, r8 + mov r2, r2, asr #0x10 + bl sub_020530D4 +_02057C14: + add sb, sb, #1 + cmp sb, #4 + add r8, r8, #0x68 + blt _02057B50 + ldr r0, _02057C3C ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + add r0, r0, #0x9000 + ldrb r0, [r0, #0x877] + bl sub_02057464 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02057C3C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057AEC + + arm_func_start sub_02057C40 +sub_02057C40: ; 0x02057C40 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r0, _02057CE4 ; =TEAM_MEMBER_TABLE_PTR + mov sb, #0 + ldr r0, [r0] + mov r7, #1 + add r0, r0, #0x9000 + ldr r8, [r0, #0x84c] + mov r6, sb + mov r4, sb + mov r5, r7 +_02057C68: + ldrb r0, [r8] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _02057CC8 + ldrb r0, [r8, #0x3e] + tst r0, #1 + movne r0, r5 + moveq r0, r4 + tst r0, #0xff + beq _02057CC8 + ldrb r0, [r8, #0x3e] + bic r0, r0, #8 + strb r0, [r8, #0x3e] + ldrsh r0, [r8, #0x42] + cmp r0, #0xb7 + bne _02057CC8 + add r0, r8, #0x3e + bl sub_0200D8AC + bl AddMoneyCarried + mov r0, sb, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02058138 +_02057CC8: + add sb, sb, #1 + cmp sb, #4 + add r8, r8, #0x68 + blt _02057C68 + bl CleanStickyItemsInBag + bl RemovePokeItemsInBag + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02057CE4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057C40 + + arm_func_start sub_02057CE8 +sub_02057CE8: ; 0x02057CE8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r8, #0 + mov r7, #1 + mov r6, r8 + mov r4, r8 + mov r5, r7 +_02057D00: + mov r0, r8 + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r1, r7 + moveq r1, r6 + tst r1, #0xff + beq _02057D40 + ldrb r1, [r0, #0x3e] + tst r1, #1 + movne r1, r5 + moveq r1, r4 + tst r1, #0xff + ldrneb r1, [r0, #0x3e] + bicne r1, r1, #8 + strneb r1, [r0, #0x3e] +_02057D40: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _02057D00 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_02057CE8 + + arm_func_start RefillTeam +RefillTeam: ; 0x02057D58 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r0, _02057DF8 ; =TEAM_MEMBER_TABLE_PTR + mov r5, #0 + ldr r0, [r0] + add r0, r0, #0x9000 + ldr r4, [r0, #0x84c] +_02057D70: + ldrb r0, [r4] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02057DE4 + ldrsh r1, [r4, #0x10] + mov r0, r4 + strh r1, [r4, #0xe] + bl sub_02058810 + mov r6, #0 + add r7, r4, #0x1c + mov r8, r6 + mov sb, #1 +_02057DA8: + add r0, r4, r6, lsl #3 + ldrb r0, [r0, #0x1c] + tst r0, #1 + movne r0, sb + moveq r0, r8 + tst r0, #0xff + beq _02057DD4 + add r0, r7, r6, lsl #3 + bl GetMaxPp + add r1, r4, r6, lsl #3 + strb r0, [r1, #0x22] +_02057DD4: + add r6, r6, #1 + cmp r6, #4 + blt _02057DA8 + strh r5, [r4, #0xa] +_02057DE4: + add r5, r5, #1 + cmp r5, #4 + add r4, r4, #0x68 + blt _02057D70 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02057DF8: .word TEAM_MEMBER_TABLE_PTR + arm_func_end RefillTeam + +#ifndef JAPAN + arm_func_start sub_02057DFC +sub_02057DFC: ; 0x02057DFC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r1, _02057E8C ; =TEAM_MEMBER_TABLE_PTR + mov r0, #0 + ldr r1, [r1] + mov ip, #1 + add r1, r1, #0x9000 + ldr r6, [r1, #0x84c] + mov r3, r0 + mov r4, r0 + mov r5, ip + mov lr, r0 +_02057E28: + ldrb r1, [r6] + tst r1, #1 + movne r1, r5 + moveq r1, r4 + tst r1, #0xff + beq _02057E78 + mov r7, lr +_02057E44: + add r1, r6, r7, lsl #3 + ldrb r1, [r1, #0x1c] + tst r1, #1 + movne r1, ip + moveq r1, r3 + tst r1, #0xff + addne r2, r6, r7, lsl #3 + ldrneb r1, [r2, #0x1c] + add r7, r7, #1 + andne r1, r1, #0xf + strneb r1, [r2, #0x1c] + cmp r7, #4 + blt _02057E44 +_02057E78: + add r0, r0, #1 + cmp r0, #4 + add r6, r6, #0x68 + blt _02057E28 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02057E8C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057DFC +#endif + + arm_func_start sub_02057E90 +sub_02057E90: ; 0x02057E90 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r0, _02057EF0 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0 + ldr r0, [r0] + mov r6, r4 + add r0, r0, #0x9000 + ldr r8, [r0, #0x84c] + mov r7, #1 + mov r5, r4 +_02057EB4: + ldrb r0, [r8] + tst r0, #1 + movne r0, r7 + moveq r0, r6 + tst r0, #0xff + beq _02057EDC + ldrsh r0, [r8, #8] + bl CheckTeamMemberIdx + cmp r0, #0 + strneb r5, [r8] +_02057EDC: + add r4, r4, #1 + cmp r4, #4 + add r8, r8, #0x68 + blt _02057EB4 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02057EF0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057E90 + + arm_func_start sub_02057EF4 +sub_02057EF4: ; 0x02057EF4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r0, _02058060 ; =TEAM_MEMBER_TABLE_PTR + mov r8, #0 + ldr r0, [r0] + add r0, r0, #0x9000 + ldr r7, [r0, #0x84c] +_02057F0C: + ldrb r0, [r7] + tst r0, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + bne _02057F38 + tst r0, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0205804C +_02057F38: + ldrsh sb, [r7, #8] + ldrsh r1, [r7, #0x10] + mov r0, r7 + strh r1, [r7, #0xe] + bl sub_02058810 + mov sl, #0 + add r5, r7, #0x1c + mov fp, sl + mov r6, #1 + mov r4, sl +_02057F60: + add r0, r7, sl, lsl #3 + ldrb r0, [r0, #0x1c] + tst r0, #1 + movne r0, r6 + moveq r0, fp + tst r0, #0xff + beq _02057F90 + add r0, r5, sl, lsl #3 + bl GetMaxPp + add r1, r7, sl, lsl #3 + strb r0, [r1, #0x22] + strh r4, [r1, #0x1e] +_02057F90: + add sl, sl, #1 + cmp sl, #4 + blt _02057F60 + strh r8, [r7, #0xa] + ldrb r1, [r7] + mov r0, sb + bic r2, r1, #8 + and r1, r2, #0xff + orr r1, r1, #1 + strb r1, [r7] + bl CheckTeamMemberIdx + cmp r0, #0 + mov r0, sb + mov r1, #0 + bne _02058048 + bl sub_02056460 + cmp r0, #0 + beq _02057FE4 + mov r0, sb + mov r1, #0 + bl sub_020565F4 +_02057FE4: + mov r0, sb + mov r1, #2 + bl sub_02056460 + cmp r0, #0 + beq _02058004 + mov r0, sb + mov r1, #2 + bl sub_020565F4 +_02058004: + mov r0, sb + mov r1, #0 + bl sub_02056504 + cmp r0, #0 + beq _02058024 + mov r0, sb + mov r1, #0 + bl sub_020565F4 +_02058024: + mov r0, sb + mov r1, #2 + bl sub_02056504 + cmp r0, #0 + beq _0205804C + mov r0, sb + mov r1, #2 + bl sub_020565F4 + b _0205804C +_02058048: + bl sub_020565F4 +_0205804C: + add r8, r8, #1 + cmp r8, #4 + add r7, r7, #0x68 + blt _02057F0C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02058060: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02057EF4 + + arm_func_start sub_02058064 +sub_02058064: ; 0x02058064 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _020580C0 ; =TEAM_MEMBER_TABLE_PTR + mov r4, #0 + ldr r0, [r0] + mov r5, r4 + add r0, r0, #0x9000 + ldr r7, [r0, #0x84c] + mov r6, #1 +_02058084: + ldrb r0, [r7] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _020580A4 + add r0, r7, #0x5a + bl ShuffleHiddenPower +_020580A4: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #4 + add r7, r7, #0x68 + blt _02058084 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_020580C0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02058064 + + arm_func_start sub_020580C4 +sub_020580C4: ; 0x020580C4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02058134 ; =TEAM_MEMBER_TABLE_PTR + mov r5, #0 + ldr r1, [r1] + add r2, r5, #1 + add r1, r1, #0x9000 + ldr r4, [r1, #0x84c] + and r6, r2, #0xff + strb r5, [r0] + mov ip, r5 + mov lr, #1 + mov r3, r5 +_020580F4: + ldrb r1, [r4] + add r4, r4, #0x68 + tst r1, #1 + movne r1, lr + moveq r1, ip + tst r1, #0xff + addeq r1, r0, r5 + streqb r3, [r1, #1] + addne r1, r0, r5 + addne r2, r6, #1 + strneb r6, [r1, #1] + add r5, r5, #1 + andne r6, r2, #0xff + cmp r5, #4 + blt _020580F4 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02058134: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020580C4 + + arm_func_start sub_02058138 +sub_02058138: ; 0x02058138 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _020581EC ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x68 + ldr r2, [r2] + smulbb r1, r0, r1 + add r0, r2, #0x9000 + ldr r2, [r0, #0x84c] + ldrb r0, [r2, r1] + add r3, r2, r1 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _020581E0 + ldrb r1, [r3, #0x3e] + tst r1, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrneb r0, [r3, #0x3f] + cmpne r0, #0 + beq _020581E0 + tst r1, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _020581E0 + ldrh r1, [r3, #0x3e] + add r0, r3, #0x3e + strh r1, [sp] + ldrh r2, [r3, #0x40] + ldrb r1, [sp] + strh r2, [sp, #2] + ldrh r2, [r3, #0x42] + bic r1, r1, #0x10 + strh r2, [sp, #4] + strb r1, [sp] + bl ItemZInit + add r0, sp, #0 + bl RemoveHolderForItemInBag + b _020581E4 +_020581E0: + mov r0, #0 +_020581E4: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_020581EC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02058138 + + arm_func_start ClearItem +ClearItem: ; 0x020581F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + ldr r2, _020582DC ; =TEAM_MEMBER_TABLE_PTR + cmp r0, #0 + ldr r2, [r2] + add r2, r2, #0x9000 + ldr r2, [r2, #0x84c] + beq _020582D0 + mov r8, #0 + mov r7, #1 + mov r6, r8 + mov r4, r8 + mov r5, r7 + mov r3, r8 + mov ip, r7 + b _020582C8 +_02058230: + ldrb lr, [r2] + tst lr, #1 + movne sb, r7 + moveq sb, r6 + tst sb, #0xff + beq _020582C0 + ldrb sb, [r2, #0x3e] + tst sb, #1 + movne lr, r5 + moveq lr, r4 + tst lr, #0xff + beq _020582C0 + ldrb lr, [r2, #0x3f] + cmp lr, r0 + bne _020582C0 + cmp r1, #0 + beq _02058288 + tst sb, #8 + movne sb, ip + moveq sb, r3 + tst sb, #0xff + bne _020582C0 +_02058288: + ldrh r1, [r2, #0x3e] + add r0, r2, #0x3e + strh r1, [sp] + ldrh r3, [r2, #0x40] + ldrb r1, [sp] + strh r3, [sp, #2] + ldrh r2, [r2, #0x42] + bic r1, r1, #0x10 + strh r2, [sp, #4] + strb r1, [sp] + bl ItemZInit + add r0, sp, #0 + bl RemoveHolderForItemInBag + b _020582D4 +_020582C0: + add r8, r8, #1 + add r2, r2, #0x68 +_020582C8: + cmp r8, #4 + blt _02058230 +_020582D0: + mov r0, #0 +_020582D4: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_020582DC: .word TEAM_MEMBER_TABLE_PTR + arm_func_end ClearItem + + arm_func_start sub_020582E0 +sub_020582E0: ; 0x020582E0 + ldr ip, _020582EC ; =ClearItem + mov r1, #1 + bx ip + .align 2, 0 +_020582EC: .word ClearItem + arm_func_end sub_020582E0 + + arm_func_start sub_020582F0 +sub_020582F0: ; 0x020582F0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r3, _0205845C ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0x68 + ldr r3, [r3] + smulbb r2, r0, r2 + add r0, r3, #0x9000 + ldr r3, [r0, #0x84c] + mov r5, r1 + ldrb r0, [r3, r2] + add r4, r3, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02058450 + mov r0, r5 + bl GetItemAtIdx + ldrb r2, [r4, #0x3e] + mov r1, r0 + tst r2, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _02058404 + ldrb r0, [r4, #0x3f] + cmp r0, #0 + bne _02058374 + tst r2, #8 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + bne _02058448 +_02058374: + ldrh r2, [r4, #0x3e] + add r0, sp, #6 + strh r2, [sp, #6] + ldrh r3, [r4, #0x40] + ldrb r2, [sp, #6] + strh r3, [sp, #8] + ldrh ip, [r4, #0x42] + bic r3, r2, #0x10 + strh ip, [sp, #0xa] + ldrh r2, [r1] + strh r2, [sp] + ldrh ip, [r1, #2] + ldrb r2, [sp] + strh ip, [sp, #2] + ldrh ip, [r1, #4] + bic r1, r2, #0x10 + strh ip, [sp, #4] + ldrsh r2, [r4, #0xa] + add r2, r2, #1 + strb r2, [sp, #1] + strb r1, [sp] + strb r3, [sp, #6] + bl RemoveHolderForItemInBag + ldrh r2, [sp] + add r1, sp, #0 + mov r0, r5 + strh r2, [r4, #0x3e] + ldrh r2, [sp, #2] + strh r2, [r4, #0x40] + ldrh r2, [sp, #4] + strh r2, [r4, #0x42] + ldrsh r2, [r4, #0xa] + add r2, r2, #1 + and r2, r2, #0xff + bl SetHolderForItemInBag + b _02058448 +_02058404: + ldrh r2, [r1] + mov r0, r5 + strh r2, [r4, #0x3e] + ldrh r2, [r1, #2] + strh r2, [r4, #0x40] + ldrh r2, [r1, #4] + strh r2, [r4, #0x42] + ldrsh r2, [r4, #0xa] + add r2, r2, #1 + strb r2, [r4, #0x3f] + ldrb r2, [r4, #0x3e] + bic r2, r2, #0x10 + strb r2, [r4, #0x3e] + ldrsh r2, [r4, #0xa] + add r2, r2, #1 + and r2, r2, #0xff + bl SetHolderForItemInBag +_02058448: + mov r0, #1 + b _02058454 +_02058450: + mov r0, #0 +_02058454: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0205845C: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_020582F0 + + arm_func_start sub_02058460 +sub_02058460: ; 0x02058460 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r2, r0 + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _020584F4 ; =TEAM_MEMBER_TABLE_PTR + sub r1, r1, #1 + mov ip, r1, lsl #0x10 + ldr r1, [r0] + mov r0, #0 + add r1, r1, #0x9000 + mov r4, r0 + mov r5, #1 + mov r3, #0x68 + b _020584E4 +_0205849C: + smulbb r6, r0, r3 + ldr r7, [r1, #0x84c] + ldrb lr, [r7, r6] + add r6, r7, r6 + tst lr, #1 + movne r7, r5 + moveq r7, r4 + tst r7, #0xff + beq _020584D8 + ldrsh lr, [r6, #0xa] + cmp lr, ip, asr #16 + bne _020584D8 + mov r1, r2 + bl sub_020582F0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_020584D8: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 +_020584E4: + cmp r0, #4 + blt _0205849C + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_020584F4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end sub_02058460 + + arm_func_start sub_020584F8 +sub_020584F8: ; 0x020584F8 + bx lr + arm_func_end sub_020584F8 + + arm_func_start sub_020584FC +sub_020584FC: ; 0x020584FC + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl GetActiveTeamMember + mov r1, r0 + ldrb r0, [r1, #1] + add r1, r1, #0x5e + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r4 + and r2, r2, #0xff + bl sub_02054FA0 + ldmia sp!, {r4, pc} + arm_func_end sub_020584FC + + arm_func_start sub_02058534 +sub_02058534: ; 0x02058534 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r2 + mov r0, r1 + bl GetActiveTeamMember + mov r1, r0 + cmp r4, #0x44 + bne _02058578 + ldrb r0, [r1, #1] + add r1, r1, #0x5e + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + mov r0, r5 + and r2, r2, #0xff + bl sub_02054FA0 + ldmia sp!, {r3, r4, r5, pc} +_02058578: + mov r0, r5 + mov r2, r4 + add r1, r1, #0x5e + bl sub_02054F44 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02058534 + + arm_func_start sub_0205858C +sub_0205858C: ; 0x0205858C + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl GetActiveTeamMember + mov r1, r0 + mov r0, r4 + add r1, r1, #0x5e + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldmia sp!, {r4, pc} + arm_func_end sub_0205858C + + arm_func_start sub_020585B4 +sub_020585B4: ; 0x020585B4 + ldrb r2, [r1, #1] + ldr ip, _020585D4 ; =sub_02054FA0 + add r1, r1, #0x5e + cmp r2, #0 + movne r2, #1 + moveq r2, #0 + and r2, r2, #0xff + bx ip + .align 2, 0 +_020585D4: .word sub_02054FA0 + arm_func_end sub_020585B4 + + arm_func_start ChangeGiratinaFormIfSkyDungeon +ChangeGiratinaFormIfSkyDungeon: ; 0x020585D8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + bl IsSkyExclusiveDungeon + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r8, #0 + ldr r4, _02058640 ; =0x00000211 + mov r6, r8 + mov r7, #1 + mov r5, #0x218 +_020585FC: + mov r0, r8 + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r1, r7 + moveq r1, r6 + tst r1, #0xff + beq _02058628 + ldrsh r1, [r0, #0xc] + cmp r1, r4 + streqh r5, [r0, #0xc] +_02058628: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #4 + blt _020585FC + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02058640: .word 0x00000211 + arm_func_end ChangeGiratinaFormIfSkyDungeon + + arm_func_start sub_02058644 +sub_02058644: ; 0x02058644 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 +_02058650: + mov r0, r4 + mov r1, r5 + bl RevertGiratinaAndShaymin + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #4 + blt _02058650 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02058644 + + arm_func_start RevertGiratinaAndShaymin +RevertGiratinaAndShaymin: ; 0x02058674 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl sub_02056228 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + bl GetActiveTeamMember + ldrb r1, [r0] + tst r1, #1 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + ldmeqia sp!, {r3, r4, r5, pc} + tst r4, #2 + beq _020586C8 + ldrsh r1, [r0, #0xc] + cmp r1, #0x218 + ldreq r1, _020586E8 ; =0x00000211 + streqh r1, [r0, #0xc] + ldmeqia sp!, {r3, r4, r5, pc} +_020586C8: + tst r4, #1 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsh r2, [r0, #0xc] + ldr r1, _020586EC ; =0x00000217 + cmp r2, r1 + subeq r1, r1, #1 + streqh r1, [r0, #0xc] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020586E8: .word 0x00000211 +_020586EC: .word 0x00000217 + arm_func_end RevertGiratinaAndShaymin + + arm_func_start sub_020586F0 +sub_020586F0: ; 0x020586F0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + bl GetActiveTeamMember + mov r4, r0 + ldrb r0, [r4] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0205878C + mov r0, r5 + bl GetItemMoveId16 + mov ip, #0 + mov r2, ip + mov r3, #1 + b _02058768 +_02058730: + add r1, r4, ip, lsl #3 + ldrb r1, [r1, #0x1c] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _0205875C + add r1, r4, ip, lsl #3 + ldrh r1, [r1, #0x20] + cmp r0, r1 + beq _02058770 +_0205875C: + add r1, ip, #1 + mov r1, r1, lsl #0x10 + mov ip, r1, asr #0x10 +_02058768: + cmp ip, #4 + blt _02058730 +_02058770: + cmp ip, #4 + blt _0205878C + ldrsh r1, [r4, #0xc] + bl sub_02053D1C + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} +_0205878C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_020586F0 + + arm_func_start sub_02058794 +sub_02058794: ; 0x02058794 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_0204E584 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl GetActiveTeamMember + mov r4, r0 + ldrsh r0, [r4, #8] + bl GetTeamMember + mov r1, r4 + bl sub_020534BC + ldmia sp!, {r4, pc} + arm_func_end sub_02058794 + + arm_func_start sub_020587C8 +sub_020587C8: ; 0x020587C8 + stmdb sp!, {r3, lr} + bl sub_02057E90 + mvn r0, #0 + bl sub_02058644 + bl RefillTeam + ldmia sp!, {r3, pc} + arm_func_end sub_020587C8 + + arm_func_start sub_020587E0 +sub_020587E0: ; 0x020587E0 + stmdb sp!, {r4, lr} + mov r4, r0 +#ifndef JAPAN + bl sub_02057DFC +#endif + bl sub_02057E90 + mvn r0, #0 + bl sub_02058644 + bl RefillTeam + mov r0, r4 + bl sub_02057AEC + mov r0, #0 + bl sub_02056318 + ldmia sp!, {r4, pc} + arm_func_end sub_020587E0 + + arm_func_start sub_02058810 +sub_02058810: ; 0x02058810 + mov r2, #0x64 + strh r2, [r0, #0x48] + mov r1, #0 + strh r2, [r0, #0x44] + strh r1, [r0, #0x4a] + strh r1, [r0, #0x46] + bx lr + arm_func_end sub_02058810 + + arm_func_start sub_0205882C +sub_0205882C: ; 0x0205882C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x30 + ldr r1, _02058AA4 ; =0x000003E3 + mov r4, r0 + mov r3, #0 + add r2, sp, #0x14 + mov r0, #4 + str r3, [sp, #0x1c] + bl DirectoryFileMngr_OpenDirectoryFile + ldr r1, [sp, #0x14] + add r0, sp, #0x1c + bl HandleSir0Translation + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0 + bl sub_02058ABC + mov r0, r4, lsl #0x10 + ldr r5, [sp, #0x1c] + mov r0, r0, asr #0x10 + mov r1, #0 + bl sub_02058ABC + add r1, r5, #4 + mov r2, #0x40 + mov r3, #9 + bl CopyAndInterleaveWrapper + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0 + bl sub_02058ABC + add r1, r5, #0x24 + mov r2, #0x80 + mov r3, #9 + bl CopyAndInterleaveWrapper + add r0, r4, #2 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #0 + bl sub_02058ABC + add r1, r5, #0x64 + mov r2, #0x100 + mov r3, #9 + bl CopyAndInterleaveWrapper + add r0, sp, #0x14 + bl UnloadFile + mov lr, #0 +_020588E4: + ldr r3, _02058AA8 ; =_020A3468 + ldr r5, _02058AAC ; =_022B578C + add r2, r3, lr, lsl #4 + ldr r1, [r2, #8] + ldr r0, _02058AB0 ; =0x000003FF + add r1, r4, r1 + add r7, r5, lr, lsl #4 + mov sb, #0x400 + ldr r3, [r3, lr, lsl #4] + and r8, r1, r0 + ldr r2, [r2, #4] + mov r1, r3, lsl #0x1e + mov r5, #0 + mov r0, r2, lsl #0x1e + rsb sb, sb, #0 + mov r2, r5 + mov r3, #1 +_02058928: + mov ip, r5, lsl #3 + ldrh sl, [r7, ip] + add r6, r7, r5, lsl #3 + cmp r5, #1 + bic sl, sl, #0x100 + strh sl, [r7, ip] + ldrh sl, [r7, ip] + add r5, r5, #1 + bic sl, sl, #0x200 + strh sl, [r7, ip] + ldrh sl, [r6] + moveq ip, r3 + movne ip, r2 + bic sl, sl, #0xc00 + strh sl, [r6] + ldrh sl, [r6] + mov ip, ip, lsl #0x1e + cmp r5, #2 + orr sl, sl, ip, lsr #20 + strh sl, [r6] + ldrh ip, [r6] + bic ip, ip, #0x1000 + strh ip, [r6] + ldrh ip, [r6] + bic ip, ip, #0x2000 + strh ip, [r6] + ldrh ip, [r6] + orr ip, ip, #0x2000 + strh ip, [r6] + ldrh ip, [r6] + bic ip, ip, #0xc000 + strh ip, [r6] + ldrh ip, [r6] + orr ip, ip, r1, lsr #16 + strh ip, [r6] + ldrh ip, [r6, #2] + bic ip, ip, #0x3e00 + strh ip, [r6, #2] + ldrh ip, [r6, #2] + bic ip, ip, #0xc000 + strh ip, [r6, #2] + ldrh ip, [r6, #2] + orr ip, ip, r0, lsr #16 + strh ip, [r6, #2] + ldrh ip, [r6, #4] + and ip, ip, sb + strh ip, [r6, #4] + ldrh ip, [r6, #4] + orr ip, ip, r8 + strh ip, [r6, #4] + ldrh ip, [r6, #4] + bic ip, ip, #0xc00 + strh ip, [r6, #4] + ldrh ip, [r6, #4] + orr ip, ip, #0xc00 + strh ip, [r6, #4] + ldrh ip, [r6, #4] + bic ip, ip, #0xf000 + strh ip, [r6, #4] + ldrh ip, [r6, #6] + bic ip, ip, #1 + strh ip, [r6, #6] + ldrh ip, [r6, #6] + bic ip, ip, #2 + strh ip, [r6, #6] + blt _02058928 + add lr, lr, #1 + cmp lr, #3 + blt _020588E4 + ldr r1, _02058AB4 ; =0x000003E5 + add r2, sp, #0xc + mov r0, #4 + mov r3, #0 + bl DirectoryFileMngr_OpenDirectoryFile + ldr r1, [sp, #0xc] + add r0, sp, #8 + bl HandleSir0Translation + mov r0, #0x90 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, [sp, #8] + add r0, sp, #0x20 + mov r2, #1 + mov r3, #0x20 + bl sub_0201F598 + ldr r0, _02058AB8 ; =_020AFC4C + add r1, sp, #0x20 + ldr r0, [r0] + mov r2, #0 + bl sub_0201B43C + add r0, sp, #0xc + bl UnloadFile + add sp, sp, #0x30 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02058AA4: .word 0x000003E3 +_02058AA8: .word _020A3468 +_02058AAC: .word _022B578C +_02058AB0: .word 0x000003FF +_02058AB4: .word 0x000003E5 +_02058AB8: .word _020AFC4C + arm_func_end sub_0205882C + + arm_func_start sub_02058ABC +sub_02058ABC: ; 0x02058ABC + ldr r3, _02058AF4 ; =_020AFC4C + mov r2, #0x70 + ldr ip, [r3] + ldr r3, _02058AF8 ; =_020AFC28 + mla r2, r1, r2, ip + ldrh r1, [r2, #0xc] + ldr ip, [r2, #0x64] + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #30 + add r1, r2, r1, ror #30 + mov r1, r1, lsl #1 + ldrsh r1, [r3, r1] + smlabb r0, r0, r1, ip + bx lr + .align 2, 0 +_02058AF4: .word _020AFC4C +_02058AF8: .word _020AFC28 + arm_func_end sub_02058ABC + + arm_func_start sub_02058AFC +sub_02058AFC: ; 0x02058AFC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + cmp r0, #0x32 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmpne r0, #0x33 + beq _02058B38 + ldr r1, _02058C08 ; =0xFFFFFD76 + 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 _02058B40 +_02058B38: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02058B40: + bl GetShadowSize + ldrb r1, [sp, #0x24] + mov r7, #0x200 + ldrsh lr, [r6] + cmp r1, #0 + ldr r1, _02058C0C ; =_022B578C + movne r2, #1 + moveq r2, #0 + add r1, r1, r0, lsl #4 + add r1, r1, r2, lsl #3 + ldr sb, _02058C10 ; =_020A3450 + ldrh r8, [r1, #2] + ldrsh ip, [r5, #0x24] + ldrsh r3, [r6, #2] + ldrsh r2, [r5, #0x26] + rsb r7, r7, #0 + and r5, r8, r7 + strh r5, [r1, #2] + ldr r0, [sb, r0, lsl #2] + add r5, lr, ip + add r0, r5, r0 + ldrh r5, [r1, #2] + and r0, r0, r7, lsr #23 + add r2, r3, r2 + orr r0, r5, r0 + strh r0, [r1, #2] + sub r0, r2, #2 + sub r2, r0, #2 + mov r3, r2, lsl #0x14 + ldrh r5, [r1, #6] + ldr r0, _02058C14 ; =0xFFFF000F + ldr r2, [sp, #0x20] + and r0, r5, r0 + strh r0, [r1, #6] + ldrh r5, [r1, #6] + ldr r0, _02058C18 ; =_020AFC4C + orr r3, r5, r3, lsr #16 + strh r3, [r1, #6] + ldrh r5, [r1, #4] + mov r3, r2, lsl #0x1e + ldr r0, [r0] + bic r2, r5, #0xc00 + strh r2, [r1, #4] + ldrh r5, [r1, #4] + mov r2, r4 + orr r3, r5, r3, lsr #20 + strh r3, [r1, #4] + bl sub_0201B9F8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02058C08: .word 0xFFFFFD76 +_02058C0C: .word _022B578C +_02058C10: .word _020A3450 +_02058C14: .word 0xFFFF000F +_02058C18: .word _020AFC4C + arm_func_end sub_02058AFC + + arm_func_start GetIqSkillStringId +GetIqSkillStringId: ; 0x02058C1C +#if defined(EUROPE) + add r0, r0, #0xe7 + add r0, r0, #0x2600 +#elif defined(JAPAN) + add r0, r0, #0x13 + add r0, r0, #0x3f00 +#else + add r0, r0, #0xe5 + add r0, r0, #0x2600 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + arm_func_end GetIqSkillStringId + + arm_func_start sub_02058C30 +sub_02058C30: ; 0x02058C30 + ldr ip, _02058C38 ; =CopyTacticString + bx ip + .align 2, 0 +_02058C38: .word CopyTacticString + arm_func_end sub_02058C30 + + arm_func_start DoesTacticFollowLeader +DoesTacticFollowLeader: ; 0x02058C3C + ldr r1, _02058C48 ; =_020A190C + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_02058C48: .word _020A190C + arm_func_end DoesTacticFollowLeader + + arm_func_start GetUnlockedTactics +GetUnlockedTactics: ; 0x02058C4C + stmdb sp!, {r3, lr} + mov lr, #0 + ldr r3, _02058C98 ; =TACTICS_UNLOCK_LEVEL_TABLE + mov ip, lr +_02058C5C: + mov r2, ip, lsl #1 + ldrsh r2, [r3, r2] + cmp r2, r1 + strleb ip, [r0, lr] + add ip, ip, #1 + addle lr, lr, #1 + cmp ip, #0xc + blt _02058C5C + mov r1, #0xb + b _02058C8C +_02058C84: + strb r1, [r0, lr] + add lr, lr, #1 +_02058C8C: + cmp lr, #0xc + blt _02058C84 + ldmia sp!, {r3, pc} + .align 2, 0 +_02058C98: .word TACTICS_UNLOCK_LEVEL_TABLE + arm_func_end GetUnlockedTactics + + arm_func_start GetUnlockedTacticFlags +GetUnlockedTacticFlags: ; 0x02058C9C + stmdb sp!, {r4, lr} + mov r4, #0 + ldr lr, _02058CD4 ; =TACTICS_UNLOCK_LEVEL_TABLE + mov r2, r4 + mov r3, #1 +_02058CB0: + mov ip, r4, lsl #1 + ldrsh ip, [lr, ip] + cmp ip, r1 + strleb r3, [r0, r4] + strgtb r2, [r0, r4] + add r4, r4, #1 + cmp r4, #0xc + blt _02058CB0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE + arm_func_end GetUnlockedTacticFlags + + arm_func_start CanLearnIqSkill +CanLearnIqSkill: ; 0x02058CD8 + cmp r1, #0 + moveq r0, #0 + bxeq lr + ldr r2, _02058D00 ; =IQ_SKILLS + ldr r1, [r2, r1, lsl #2] + cmp r1, r0 + movle r0, #1 + movgt r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02058D00: .word IQ_SKILLS + arm_func_end CanLearnIqSkill + + arm_func_start GetLearnableIqSkills +GetLearnableIqSkills: ; 0x02058D04 + 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, r6 + ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS + mov fp, #0x19 + b _02058D74 +_02058D28: + mov r0, sb + bl GetIqGroup + mla r1, r0, fp, r4 + and r0, r5, #0xff + ldrb r7, [r0, r1] + cmp r7, #0xff + beq _02058D7C + cmp r7, #0x18 + bne _02058D58 + mov r0, #3 + bl GetPerformanceFlagWithChecks + b _02058D64 +_02058D58: + mov r0, r8 + mov r1, r7 + bl CanLearnIqSkill +_02058D64: + cmp r0, #0 + strneb r7, [sl, r6] + addne r6, r6, #1 + add r5, r5, #1 +_02058D74: + cmp r5, #0x19 + blt _02058D28 +_02058D7C: + mov r1, r6 + mov r0, #0 + b _02058D90 +_02058D88: + strb r0, [sl, r1] + add r1, r1, #1 +_02058D90: + cmp r1, #0x45 + blt _02058D88 + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02058DA0: .word IQ_GROUP_SKILLS + arm_func_end GetLearnableIqSkills + + arm_func_start DisableIqSkill +DisableIqSkill: ; 0x02058DA4 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl IqSkillFlagTest + cmp r0, #0 + beq _02058DE4 + mov r0, r5, asr #4 + add r0, r5, r0, lsr #27 + mov r2, r0, asr #5 + sub r0, r5, r2, lsl #5 + mov r1, #1 + mvn r0, r1, lsl r0 + ldr r1, [r4, r2, lsl #2] + and r0, r1, r0 + str r0, [r4, r2, lsl #2] + ldmia sp!, {r3, r4, r5, pc} +_02058DE4: + mov r0, r4 + mov r1, r5 + bl EnableIqSkill + ldmia sp!, {r3, r4, r5, pc} + arm_func_end DisableIqSkill + + arm_func_start EnableIqSkill +EnableIqSkill: ; 0x02058DF4 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _02058E64 ; =IQ_SKILL_RESTRICTIONS + mov r3, r1, lsl #1 + ldrsh ip, [r2, r3] + mov r3, #0 + mov r4, #1 +_02058E0C: + mov r5, r3, lsl #1 + ldrsh r5, [r2, r5] + cmp ip, r5 + bne _02058E3C + mov lr, r3, asr #4 + add lr, r3, lr, lsr #27 + mov r6, lr, asr #5 + sub lr, r3, r6, lsl #5 + mvn lr, r4, lsl lr + ldr r5, [r0, r6, lsl #2] + and r5, r5, lr + str r5, [r0, r6, lsl #2] +_02058E3C: + add r3, r3, #1 + cmp r3, #0x45 + blt _02058E0C + mov ip, r1, lsr #5 + ldr r3, [r0, ip, lsl #2] + sub r1, r1, ip, lsl #5 + mov r2, #1 + orr r1, r3, r2, lsl r1 + str r1, [r0, ip, lsl #2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02058E64: .word IQ_SKILL_RESTRICTIONS + arm_func_end EnableIqSkill + + arm_func_start GetSpeciesIqSkill +GetSpeciesIqSkill: ; 0x02058E68 + stmdb sp!, {r4, lr} + mov r4, r1 + bl GetIqGroup + ldr r2, _02058E88 ; =IQ_GROUP_SKILLS + mov r1, #0x19 + mla r1, r0, r1, r2 + ldrb r0, [r4, r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_02058E88: .word IQ_GROUP_SKILLS + arm_func_end GetSpeciesIqSkill + + arm_func_start DisableAllIqSkills +DisableAllIqSkills: ; 0x02058E8C + mov r3, #0 + mov r2, r3 +_02058E94: + add r1, r3, #1 + mov r1, r1, lsl #0x10 + str r2, [r0, r3, lsl #2] + mov r3, r1, asr #0x10 + cmp r3, #3 + blt _02058E94 + bx lr + arm_func_end DisableAllIqSkills + + arm_func_start EnableAllLearnableIqSkills +EnableAllLearnableIqSkills: ; 0x02058EB0 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x48 + mov r6, r0 + add r0, sp, #0 + bl GetLearnableIqSkills + mov r0, r6 + bl DisableAllIqSkills + mov r5, #0 + add r4, sp, #0 + b _02058EF4 +_02058ED8: + ldrb r0, [r4, r5] + cmp r0, #0 + beq _02058EFC + ldrb r1, [r4, r5] + mov r0, r6 + bl EnableIqSkill + add r5, r5, #1 +_02058EF4: + cmp r5, #0x45 + blt _02058ED8 +_02058EFC: + add sp, sp, #0x48 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end EnableAllLearnableIqSkills diff --git a/include/main_02054DC4.h b/include/main_02054DC4.h new file mode 100644 index 00000000..ff8a7ea4 --- /dev/null +++ b/include/main_02054DC4.h @@ -0,0 +1,8 @@ +#ifndef PMDSKY_MAIN_02054DC4_H +#define PMDSKY_MAIN_02054DC4_H + +#include "util.h" + +bool32 DexNumbersEqual(s16 monster1, s16 monster2); + +#endif //PMDSKY_MAIN_02054DC4_H diff --git a/main.lsf b/main.lsf index 21adbfd3..ed4cce31 100644 --- a/main.lsf +++ b/main.lsf @@ -73,6 +73,8 @@ Static main Object asm/main_02054AD4.o Object src/main_02054BE0.o Object asm/main_02054C24.o + Object src/main_02054DC4.o + Object asm/main_02054E4C.o Object src/pokemon.o Object asm/main_02058F24.o Object src/main_0206C98C.o diff --git a/src/main_02054DC4.c b/src/main_02054DC4.c new file mode 100644 index 00000000..93d58093 --- /dev/null +++ b/src/main_02054DC4.c @@ -0,0 +1,17 @@ +#include "main_02054DC4.h" +#include "util.h" +#include "main_02054AA4.h" +#include "main_02054BE0.h" + +extern s16 GetBaseFormCastformDeoxysCherrim(s16 monster_id); +extern s16 GetDexNumber(s16 monster_id); + +bool32 DexNumbersEqual(s16 monster1, s16 monster2) { + s16 base_form_1 = FemaleToMaleForm(monster1); + s16 base_form_2 = FemaleToMaleForm(monster2); + s16 true_base_1 = GetBaseFormCastformDeoxysCherrim(base_form_1); + s16 true_base_2 = GetBaseFormCastformDeoxysCherrim(base_form_2); + if (true_base_1 == true_base_2) return TRUE; + else if (IsUnown(true_base_1) && IsUnown(true_base_2)) return FALSE; + else return GetDexNumber(true_base_1) == GetDexNumber(true_base_2); +}