pmd-sky/asm/main_02054E4C.s
2025-08-06 21:08:32 -04:00

5167 lines
94 KiB
ArmAsm

.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