pokefirered/asm/pokemon_2.s
2018-10-03 21:30:13 -04:00

3903 lines
60 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_803F5B4
sub_803F5B4: @ 803F5B4
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
movs r6, 0
cmp r0, 0x1
beq _0803F608
cmp r0, 0x1
bgt _0803F5CC
cmp r0, 0
beq _0803F5D2
b _0803F68A
_0803F5CC:
cmp r1, 0x2
beq _0803F650
b _0803F68A
_0803F5D2:
movs r5, 0
ldr r0, _0803F5FC @ =gActiveBattler
ldrb r3, [r0]
ldr r4, _0803F600 @ =gAbsentBattlerFlags
ldr r2, _0803F604 @ =gBitTable
_0803F5DC:
cmp r5, r3
beq _0803F5F0
ldrb r0, [r4]
ldr r1, [r2]
ands r0, r1
cmp r0, 0
bne _0803F5F0
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_0803F5F0:
adds r2, 0x4
adds r5, 0x1
cmp r5, 0x3
ble _0803F5DC
b _0803F68A
.align 2, 0
_0803F5FC: .4byte gActiveBattler
_0803F600: .4byte gAbsentBattlerFlags
_0803F604: .4byte gBitTable
_0803F608:
movs r5, 0
_0803F60A:
lsls r0, r5, 24
lsrs r0, 24
bl GetBankSide
adds r4, r0, 0
ldr r0, _0803F644 @ =sBattler_AI
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _0803F63C
ldr r0, _0803F648 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0803F64C @ =gBitTable
lsls r0, r5, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0803F63C
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_0803F63C:
adds r5, 0x1
cmp r5, 0x3
ble _0803F60A
b _0803F68A
.align 2, 0
_0803F644: .4byte sBattler_AI
_0803F648: .4byte gAbsentBattlerFlags
_0803F64C: .4byte gBitTable
_0803F650:
movs r5, 0
_0803F652:
lsls r0, r5, 24
lsrs r0, 24
bl GetBankSide
adds r4, r0, 0
ldr r0, _0803F694 @ =gBattlerTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
lsls r0, 24
cmp r4, r0
bne _0803F684
ldr r0, _0803F698 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0803F69C @ =gBitTable
lsls r0, r5, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0803F684
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_0803F684:
adds r5, 0x1
cmp r5, 0x3
ble _0803F652
_0803F68A:
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0803F694: .4byte gBattlerTarget
_0803F698: .4byte gAbsentBattlerFlags
_0803F69C: .4byte gBitTable
thumb_func_end sub_803F5B4
thumb_func_start GetDefaultMoveTarget
GetDefaultMoveTarget: @ 803F6A0
push {r4-r6,lr}
lsls r0, 24
lsrs r0, 24
bl GetBankIdentity
movs r1, 0x1
movs r6, 0x1
adds r4, r6, 0
ands r4, r0
eors r4, r1
adds r5, r4, 0
ldr r0, _0803F6C4 @ =gBattleTypeFlags
ldr r0, [r0]
ands r0, r6
cmp r0, 0
bne _0803F6C8
adds r0, r4, 0
b _0803F712
.align 2, 0
_0803F6C4: .4byte gBattleTypeFlags
_0803F6C8:
movs r0, 0
bl sub_803F5B4
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bls _0803F6EC
bl Random
adds r1, r6, 0
ands r1, r0
cmp r1, 0
bne _0803F6E8
movs r0, 0x2
eors r0, r4
b _0803F712
_0803F6E8:
adds r0, r4, 0
b _0803F712
_0803F6EC:
ldr r0, _0803F704 @ =gAbsentBattlerFlags
ldrb r1, [r0]
ldr r2, _0803F708 @ =gBitTable
lsls r0, r4, 2
adds r0, r2
ldr r0, [r0]
ands r1, r0
cmp r1, 0
bne _0803F70C
adds r0, r4, 0
b _0803F712
.align 2, 0
_0803F704: .4byte gAbsentBattlerFlags
_0803F708: .4byte gBitTable
_0803F70C:
movs r0, 0x2
eors r5, r0
adds r0, r5, 0
_0803F712:
bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetDefaultMoveTarget
thumb_func_start GetMonGender
GetMonGender: @ 803F720
push {lr}
bl GetBoxMonGender
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end GetMonGender
thumb_func_start GetBoxMonGender
GetBoxMonGender: @ 803F730
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0xB
movs r2, 0
bl GetBoxMonData
lsls r0, 16
lsrs r5, r0, 16
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl GetBoxMonData
adds r2, r0, 0
ldr r1, _0803F780 @ =gBaseStats
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x10]
cmp r0, 0
beq _0803F786
cmp r0, 0
blt _0803F768
cmp r0, 0xFF
bgt _0803F768
cmp r0, 0xFE
bge _0803F786
_0803F768:
ldr r1, _0803F780 @ =gBaseStats
lsls r0, r5, 3
subs r0, r5
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x10]
movs r0, 0xFF
ands r0, r2
cmp r1, r0
bhi _0803F784
movs r0, 0
b _0803F786
.align 2, 0
_0803F780: .4byte gBaseStats
_0803F784:
movs r0, 0xFE
_0803F786:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetBoxMonGender
thumb_func_start GetGenderFromSpeciesAndPersonality
GetGenderFromSpeciesAndPersonality: @ 803F78C
push {lr}
adds r3, r1, 0
lsls r0, 16
lsrs r2, r0, 16
ldr r1, _0803F7C8 @ =gBaseStats
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x10]
cmp r0, 0
beq _0803F7CE
cmp r0, 0
blt _0803F7B0
cmp r0, 0xFF
bgt _0803F7B0
cmp r0, 0xFE
bge _0803F7CE
_0803F7B0:
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
adds r0, r1
ldrb r1, [r0, 0x10]
movs r0, 0xFF
ands r0, r3
cmp r1, r0
bhi _0803F7CC
movs r0, 0
b _0803F7CE
.align 2, 0
_0803F7C8: .4byte gBaseStats
_0803F7CC:
movs r0, 0xFE
_0803F7CE:
pop {r1}
bx r1
thumb_func_end GetGenderFromSpeciesAndPersonality
thumb_func_start sub_803F7D4
sub_803F7D4: @ 803F7D4
push {r4-r6,lr}
lsls r0, 16
lsrs r5, r0, 16
lsls r1, 24
lsrs r4, r1, 24
ldr r0, _0803F808 @ =gUnknown_202401C
ldr r2, [r0]
cmp r2, 0
beq _0803F810
cmp r4, 0x3
bls _0803F7EC
movs r4, 0
_0803F7EC:
ldr r0, _0803F80C @ =gUnknown_20244DC
lsls r1, r4, 1
adds r1, r4
lsls r1, 3
adds r1, r2, r1
adds r2, r0, 0
adds r1, 0x14
ldm r1!, {r3,r4,r6}
stm r2!, {r3,r4,r6}
ldm r1!, {r3,r4,r6}
stm r2!, {r3,r4,r6}
adds r3, r0, 0
b _0803F84C
.align 2, 0
_0803F808: .4byte gUnknown_202401C
_0803F80C: .4byte gUnknown_20244DC
_0803F810:
ldr r0, _0803F828 @ =gUnknown_20244F4
ldr r1, [r0]
cmp r1, 0
beq _0803F830
ldrb r0, [r1]
lsrs r0, 4
cmp r4, r0
blt _0803F822
movs r4, 0
_0803F822:
ldr r3, _0803F82C @ =gUnknown_20244DC
ldr r2, [r1, 0x10]
b _0803F83A
.align 2, 0
_0803F828: .4byte gUnknown_20244F4
_0803F82C: .4byte gUnknown_20244DC
_0803F830:
cmp r4, 0x3
bls _0803F836
movs r4, 0
_0803F836:
ldr r3, _0803F858 @ =gUnknown_20244DC
ldr r2, _0803F85C @ =gUnknown_825DEF0
_0803F83A:
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
adds r1, r3, 0
adds r0, r2
ldm r0!, {r2,r4,r6}
stm r1!, {r2,r4,r6}
ldm r0!, {r2,r4,r6}
stm r1!, {r2,r4,r6}
_0803F84C:
strh r5, [r3, 0x2]
ldr r0, _0803F860 @ =gUnknown_82349BC
str r0, [r3, 0x8]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803F858: .4byte gUnknown_20244DC
_0803F85C: .4byte gUnknown_825DEF0
_0803F860: .4byte gUnknown_82349BC
thumb_func_end sub_803F7D4
thumb_func_start sub_803F864
sub_803F864: @ 803F864
push {r4-r6,lr}
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 24
lsrs r3, r1, 24
ldr r0, _0803F89C @ =gUnknown_20244DC
strh r4, [r0, 0x2]
adds r5, r0, 0
cmp r3, 0
beq _0803F87C
cmp r3, 0x2
bne _0803F8A8
_0803F87C:
ldr r2, _0803F8A0 @ =gUnknown_825DF50
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
adds r1, r5, 0
adds r0, r2
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldr r1, _0803F8A4 @ =gUnknown_8239F74
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
b _0803F8E8
.align 2, 0
_0803F89C: .4byte gUnknown_20244DC
_0803F8A0: .4byte gUnknown_825DF50
_0803F8A4: .4byte gUnknown_8239F74
_0803F8A8:
ldr r0, _0803F8C8 @ =gUnknown_202401C
ldr r1, [r0]
cmp r1, 0
beq _0803F8CC
lsls r0, r3, 1
adds r0, r3
lsls r0, 3
adds r0, r1, r0
adds r1, r5, 0
adds r0, 0x14
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
ldm r0!, {r2,r3,r6}
stm r1!, {r2,r3,r6}
b _0803F8E0
.align 2, 0
_0803F8C8: .4byte gUnknown_202401C
_0803F8CC:
ldr r0, _0803F8F0 @ =gUnknown_825DEF0
lsls r1, r3, 1
adds r1, r3
lsls r1, 3
adds r2, r5, 0
adds r1, r0
ldm r1!, {r0,r3,r6}
stm r2!, {r0,r3,r6}
ldm r1!, {r0,r3,r6}
stm r2!, {r0,r3,r6}
_0803F8E0:
ldr r0, _0803F8F4 @ =gUnknown_82390DC
lsls r1, r4, 2
adds r1, r0
ldr r0, [r1]
_0803F8E8:
str r0, [r5, 0x8]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803F8F0: .4byte gUnknown_825DEF0
_0803F8F4: .4byte gUnknown_82390DC
thumb_func_end sub_803F864
thumb_func_start EncryptBoxMon
EncryptBoxMon: @ 803F8F8
push {r4,lr}
adds r3, r0, 0
movs r4, 0
adds r2, r3, 0
adds r2, 0x20
_0803F902:
ldr r0, [r2]
ldr r1, [r3]
eors r0, r1
str r0, [r2]
ldr r1, [r3, 0x4]
eors r0, r1
stm r2!, {r0}
adds r4, 0x1
cmp r4, 0xB
bls _0803F902
pop {r4}
pop {r0}
bx r0
thumb_func_end EncryptBoxMon
thumb_func_start DecryptBoxMon
DecryptBoxMon: @ 803F91C
push {r4,lr}
adds r3, r0, 0
movs r4, 0
adds r2, r3, 0
adds r2, 0x20
_0803F926:
ldr r0, [r2]
ldr r1, [r3, 0x4]
eors r0, r1
str r0, [r2]
ldr r1, [r3]
eors r0, r1
stm r2!, {r0}
adds r4, 0x1
cmp r4, 0xB
bls _0803F926
pop {r4}
pop {r0}
bx r0
thumb_func_end DecryptBoxMon
thumb_func_start GetSubstruct
GetSubstruct: @ 803F940
push {r4-r6,lr}
adds r5, r0, 0
adds r0, r1, 0
lsls r2, 24
lsrs r4, r2, 24
movs r6, 0
movs r1, 0x18
bl __umodsi3
cmp r0, 0x17
bls _0803F958
b _0803FBE0
_0803F958:
lsls r0, 2
ldr r1, _0803F964 @ =_0803F968
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803F964: .4byte _0803F968
.align 2, 0
_0803F968:
.4byte _0803F9C8
.4byte _0803F9EC
.4byte _0803FA08
.4byte _0803FA1E
.4byte _0803FA34
.4byte _0803FA50
.4byte _0803FA66
.4byte _0803FA7C
.4byte _0803FA8C
.4byte _0803FAAA
.4byte _0803FAC2
.4byte _0803FAD2
.4byte _0803FAE6
.4byte _0803FAF8
.4byte _0803FB0A
.4byte _0803FB1C
.4byte _0803FB2E
.4byte _0803FB40
.4byte _0803FB52
.4byte _0803FB68
.4byte _0803FB7C
.4byte _0803FB8A
.4byte _0803FB9C
.4byte _0803FBB0
_0803F9C8:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803F9D2
b _0803FBD8
_0803F9D2:
cmp r4, 0x1
bgt _0803F9DE
_0803F9D6:
cmp r4, 0
bne _0803F9DC
b _0803FBDE
_0803F9DC:
b _0803FBE0
_0803F9DE:
cmp r4, 0x2
bne _0803F9E4
b _0803FBD2
_0803F9E4:
cmp r4, 0x3
beq _0803F9EA
b _0803FBE0
_0803F9EA:
b _0803FBCC
_0803F9EC:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803F9F6
b _0803FBD8
_0803F9F6:
cmp r4, 0x1
ble _0803F9D6
_0803F9FA:
cmp r4, 0x2
bne _0803FA00
b _0803FBCC
_0803FA00:
cmp r4, 0x3
beq _0803FA06
b _0803FBE0
_0803FA06:
b _0803FBD2
_0803FA08:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA12
b _0803FBD2
_0803FA12:
cmp r4, 0x1
ble _0803F9D6
cmp r4, 0x2
bne _0803FA1C
b _0803FBD8
_0803FA1C:
b _0803F9E4
_0803FA1E:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA28
b _0803FBCC
_0803FA28:
cmp r4, 0x1
ble _0803F9D6
cmp r4, 0x2
bne _0803FA32
b _0803FBD8
_0803FA32:
b _0803FA00
_0803FA34:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA3E
b _0803FBD2
_0803FA3E:
cmp r4, 0x1
ble _0803F9D6
_0803FA42:
cmp r4, 0x2
bne _0803FA48
b _0803FBCC
_0803FA48:
cmp r4, 0x3
beq _0803FA4E
b _0803FBE0
_0803FA4E:
b _0803FBD8
_0803FA50:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA5A
b _0803FBCC
_0803FA5A:
cmp r4, 0x1
ble _0803F9D6
cmp r4, 0x2
bne _0803FA64
b _0803FBD2
_0803FA64:
b _0803FA48
_0803FA66:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA70
b _0803FBDE
_0803FA70:
cmp r4, 0x1
bgt _0803F9DE
_0803FA74:
cmp r4, 0
bne _0803FA7A
b _0803FBD8
_0803FA7A:
b _0803FBE0
_0803FA7C:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA86
b _0803FBDE
_0803FA86:
cmp r4, 0x1
ble _0803FA74
b _0803F9FA
_0803FA8C:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FA96
b _0803FBDE
_0803FA96:
cmp r4, 0x1
bgt _0803FAA2
_0803FA9A:
cmp r4, 0
bne _0803FAA0
b _0803FBD2
_0803FAA0:
b _0803FBE0
_0803FAA2:
cmp r4, 0x2
bne _0803FAA8
b _0803FBD8
_0803FAA8:
b _0803F9E4
_0803FAAA:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FAB4
b _0803FBDE
_0803FAB4:
cmp r4, 0x1
bgt _0803FABA
b _0803FBBC
_0803FABA:
cmp r4, 0x2
bne _0803FAC0
b _0803FBD8
_0803FAC0:
b _0803FA00
_0803FAC2:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FACC
b _0803FBDE
_0803FACC:
cmp r4, 0x1
ble _0803FA9A
b _0803FA42
_0803FAD2:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
bne _0803FADC
b _0803FBDE
_0803FADC:
cmp r4, 0x1
ble _0803FBBC
cmp r4, 0x2
beq _0803FBD2
b _0803FA48
_0803FAE6:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD2
cmp r4, 0x1
ble _0803FA74
cmp r4, 0x2
beq _0803FBDE
b _0803F9E4
_0803FAF8:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBCC
cmp r4, 0x1
ble _0803FA74
cmp r4, 0x2
beq _0803FBDE
b _0803FA00
_0803FB0A:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD8
cmp r4, 0x1
ble _0803FA9A
cmp r4, 0x2
beq _0803FBDE
b _0803F9E4
_0803FB1C:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD8
cmp r4, 0x1
ble _0803FBBC
cmp r4, 0x2
beq _0803FBDE
b _0803FA00
_0803FB2E:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBCC
cmp r4, 0x1
ble _0803FA9A
cmp r4, 0x2
beq _0803FBDE
b _0803FA48
_0803FB40:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD2
cmp r4, 0x1
ble _0803FBBC
cmp r4, 0x2
beq _0803FBDE
b _0803FA48
_0803FB52:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD2
cmp r4, 0x1
ble _0803FA74
_0803FB5E:
cmp r4, 0x2
beq _0803FBCC
_0803FB62:
cmp r4, 0x3
bne _0803FBE0
b _0803FBDE
_0803FB68:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBCC
cmp r4, 0x1
bgt _0803FB76
b _0803FA74
_0803FB76:
cmp r4, 0x2
beq _0803FBD2
b _0803FB62
_0803FB7C:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD8
cmp r4, 0x1
ble _0803FA9A
b _0803FB5E
_0803FB8A:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD8
cmp r4, 0x1
ble _0803FBBC
cmp r4, 0x2
beq _0803FBD2
b _0803FB62
_0803FB9C:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBCC
cmp r4, 0x1
bgt _0803FBAA
b _0803FA9A
_0803FBAA:
cmp r4, 0x2
beq _0803FBD8
b _0803FB62
_0803FBB0:
adds r0, r5, 0
adds r0, 0x20
cmp r4, 0x1
beq _0803FBD2
cmp r4, 0x1
bgt _0803FBC2
_0803FBBC:
cmp r4, 0
beq _0803FBCC
b _0803FBE0
_0803FBC2:
cmp r4, 0x2
beq _0803FBD8
cmp r4, 0x3
beq _0803FBDE
b _0803FBE0
_0803FBCC:
adds r6, r5, 0
adds r6, 0x44
b _0803FBE0
_0803FBD2:
adds r6, r5, 0
adds r6, 0x38
b _0803FBE0
_0803FBD8:
adds r6, r5, 0
adds r6, 0x2C
b _0803FBE0
_0803FBDE:
adds r6, r0, 0
_0803FBE0:
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetSubstruct
thumb_func_start GetMonData
GetMonData: @ 803FBE8
push {r4,lr}
adds r4, r0, 0
adds r3, r1, 0
adds r0, r3, 0
subs r0, 0x37
cmp r0, 0x21
bls _0803FBF8
b _0803FD36
_0803FBF8:
lsls r0, 2
ldr r1, _0803FC04 @ =_0803FC08
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803FC04: .4byte _0803FC08
.align 2, 0
_0803FC08:
.4byte _0803FC90
.4byte _0803FC94
.4byte _0803FC9C
.4byte _0803FCA4
.4byte _0803FCAC
.4byte _0803FCBE
.4byte _0803FCD0
.4byte _0803FCE2
.4byte _0803FCF4
.4byte _0803FD2E
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD36
.4byte _0803FD06
.4byte _0803FD0E
.4byte _0803FD16
.4byte _0803FD1E
.4byte _0803FD26
_0803FC90:
ldr r0, [r4, 0x50]
b _0803FD3E
_0803FC94:
adds r0, r4, 0
adds r0, 0x54
ldrb r0, [r0]
b _0803FD3E
_0803FC9C:
adds r0, r4, 0
adds r0, 0x56
ldrh r0, [r0]
b _0803FD3E
_0803FCA4:
adds r0, r4, 0
adds r0, 0x58
ldrh r0, [r0]
b _0803FD3E
_0803FCAC:
adds r0, r4, 0
movs r1, 0x1
bl GetDeoxysStat
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0803FD3E
b _0803FD06
_0803FCBE:
adds r0, r4, 0
movs r1, 0x2
bl GetDeoxysStat
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0803FD3E
b _0803FD0E
_0803FCD0:
adds r0, r4, 0
movs r1, 0x3
bl GetDeoxysStat
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0803FD3E
b _0803FD16
_0803FCE2:
adds r0, r4, 0
movs r1, 0x4
bl GetDeoxysStat
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0803FD3E
b _0803FD1E
_0803FCF4:
adds r0, r4, 0
movs r1, 0x5
bl GetDeoxysStat
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _0803FD3E
b _0803FD26
_0803FD06:
adds r0, r4, 0
adds r0, 0x5A
ldrh r0, [r0]
b _0803FD3E
_0803FD0E:
adds r0, r4, 0
adds r0, 0x5C
ldrh r0, [r0]
b _0803FD3E
_0803FD16:
adds r0, r4, 0
adds r0, 0x5E
ldrh r0, [r0]
b _0803FD3E
_0803FD1E:
adds r0, r4, 0
adds r0, 0x60
ldrh r0, [r0]
b _0803FD3E
_0803FD26:
adds r0, r4, 0
adds r0, 0x62
ldrh r0, [r0]
b _0803FD3E
_0803FD2E:
adds r0, r4, 0
adds r0, 0x55
ldrb r0, [r0]
b _0803FD3E
_0803FD36:
adds r0, r4, 0
adds r1, r3, 0
bl GetBoxMonData
_0803FD3E:
pop {r4}
pop {r1}
bx r1
thumb_func_end GetMonData
thumb_func_start GetBoxMonData
GetBoxMonData: @ 803FD44
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r8, r0
str r1, [sp]
adds r6, r2, 0
movs r4, 0
mov r9, r4
mov r10, r4
movs r7, 0
movs r5, 0
cmp r1, 0xA
ble _0803FDC2
ldr r1, [r0]
movs r2, 0
bl GetSubstruct
mov r9, r0
mov r0, r8
ldr r1, [r0]
movs r2, 0x1
bl GetSubstruct
mov r10, r0
mov r2, r8
ldr r1, [r2]
mov r0, r8
movs r2, 0x2
bl GetSubstruct
adds r7, r0, 0
mov r0, r8
ldr r1, [r0]
movs r2, 0x3
bl GetSubstruct
adds r5, r0, 0
mov r0, r8
bl DecryptBoxMon
mov r0, r8
bl CalculateBoxMonChecksum
lsls r0, 16
lsrs r0, 16
mov r1, r8
ldrh r1, [r1, 0x1C]
cmp r0, r1
beq _0803FDC2
mov r2, r8
ldrb r0, [r2, 0x13]
movs r1, 0x1
orrs r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r2, 0x13]
ldrb r0, [r5, 0x7]
movs r1, 0x40
orrs r0, r1
strb r0, [r5, 0x7]
_0803FDC2:
ldr r0, [sp]
cmp r0, 0x53
bls _0803FDCA
b _0804035C
_0803FDCA:
lsls r0, 2
ldr r1, _0803FDD4 @ =_0803FDD8
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803FDD4: .4byte _0803FDD8
.align 2, 0
_0803FDD8:
.4byte _0803FF28
.4byte _0803FF2E
.4byte _0803FF34
.4byte _0803FFE8
.4byte _0803FFEE
.4byte _0803FFF4
.4byte _0803FFFA
.4byte _08040000
.4byte _0804001C
.4byte _08040022
.4byte _08040028
.4byte _0804002E
.4byte _08040046
.4byte _0804005E
.4byte _0804005E
.4byte _0804005E
.4byte _0804005E
.4byte _0804006A
.4byte _0804006A
.4byte _0804006A
.4byte _0804006A
.4byte _08040052
.4byte _0804008C
.4byte _08040090
.4byte _08040094
.4byte _0804004C
.4byte _08040074
.4byte _08040078
.4byte _0804007C
.4byte _08040080
.4byte _08040084
.4byte _08040088
.4byte _08040058
.4byte _08040098
.4byte _080400A4
.4byte _080400A8
.4byte _080400AC
.4byte _080400B4
.4byte _080400BC
.4byte _080400C6
.4byte _080400CE
.4byte _080400D6
.4byte _080400DE
.4byte _080400E6
.4byte _080400EE
.4byte _080400F6
.4byte _080400FA
.4byte _0804009C
.4byte _080400A0
.4byte _080400C0
.4byte _08040100
.4byte _08040108
.4byte _08040110
.4byte _08040118
.4byte _08040120
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _0804035C
.4byte _08040186
.4byte _080401AC
.4byte _08040128
.4byte _0804012E
.4byte _08040132
.4byte _08040136
.4byte _0804013A
.4byte _08040142
.4byte _0804014A
.4byte _08040152
.4byte _0804015A
.4byte _08040160
.4byte _08040168
.4byte _08040170
.4byte _08040178
.4byte _08040180
.4byte _080401E6
.4byte _08040240
.4byte _080402C2
_0803FF28:
mov r1, r8
ldr r4, [r1]
b _0804035C
_0803FF2E:
mov r2, r8
ldr r4, [r2, 0x4]
b _0804035C
_0803FF34:
mov r0, r8
ldrb r1, [r0, 0x13]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0803FF6C
movs r4, 0
ldr r0, _0803FF68 @ =gUnknown_83FE868
ldrb r1, [r0]
adds r2, r0, 0
cmp r1, 0xFF
beq _08040014
adds r3, r2, 0
_0803FF4E:
adds r0, r6, r4
adds r1, r4, r3
ldrb r1, [r1]
strb r1, [r0]
adds r4, 0x1
cmp r4, 0x9
bhi _08040014
adds r0, r4, r2
ldrb r0, [r0]
cmp r0, 0xFF
bne _0803FF4E
b _08040014
.align 2, 0
_0803FF68: .4byte gUnknown_83FE868
_0803FF6C:
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _0803FF8C
ldr r1, _0803FF88 @ =gUnknown_8415A62
adds r0, r6, 0
bl StringCopy
adds r0, r6, 0
bl StringLength
lsls r0, 16
lsrs r4, r0, 16
b _0804035C
.align 2, 0
_0803FF88: .4byte gUnknown_8415A62
_0803FF8C:
mov r1, r8
ldrb r0, [r1, 0x12]
cmp r0, 0x1
bne _0803FFD2
movs r0, 0xFC
strb r0, [r6]
movs r0, 0x15
strb r0, [r6, 0x1]
movs r4, 0x2
movs r3, 0
ldrb r0, [r1, 0x8]
cmp r0, 0xFF
beq _0803FFC0
mov r2, r8
adds r2, 0x8
_0803FFAA:
adds r1, r6, r4
ldrb r0, [r2]
strb r0, [r1]
adds r4, 0x1
adds r2, 0x1
adds r3, 0x1
cmp r3, 0x5
bgt _0803FFC0
ldrb r0, [r2]
cmp r0, 0xFF
bne _0803FFAA
_0803FFC0:
adds r1, r6, r4
movs r0, 0xFC
strb r0, [r1]
adds r4, 0x1
adds r1, r6, r4
movs r0, 0x16
strb r0, [r1]
adds r4, 0x1
b _08040014
_0803FFD2:
movs r4, 0
mov r2, r8
adds r2, 0x8
_0803FFD8:
adds r0, r6, r4
adds r1, r2, r4
ldrb r1, [r1]
strb r1, [r0]
adds r4, 0x1
cmp r4, 0x9
bls _0803FFD8
b _08040014
_0803FFE8:
mov r2, r8
ldrb r4, [r2, 0x12]
b _0804035C
_0803FFEE:
mov r6, r8
ldrb r0, [r6, 0x13]
b _08040162
_0803FFF4:
mov r1, r8
ldrb r0, [r1, 0x13]
b _0804016A
_0803FFFA:
mov r2, r8
ldrb r0, [r2, 0x13]
b _08040172
_08040000:
movs r4, 0
mov r2, r8
adds r2, 0x14
_08040006:
adds r0, r6, r4
adds r1, r2, r4
ldrb r1, [r1]
strb r1, [r0]
adds r4, 0x1
cmp r4, 0x6
bls _08040006
_08040014:
adds r1, r6, r4
movs r0, 0xFF
strb r0, [r1]
b _0804035C
_0804001C:
mov r6, r8
ldrb r4, [r6, 0x1B]
b _0804035C
_08040022:
mov r0, r8
ldrh r4, [r0, 0x1C]
b _0804035C
_08040028:
mov r1, r8
ldrh r4, [r1, 0x1E]
b _0804035C
_0804002E:
mov r2, r8
ldrb r1, [r2, 0x13]
movs r0, 0x1
ands r0, r1
movs r4, 0xCE
lsls r4, 1
cmp r0, 0
beq _08040040
b _0804035C
_08040040:
mov r6, r9
ldrh r4, [r6]
b _0804035C
_08040046:
mov r0, r9
ldrh r4, [r0, 0x2]
b _0804035C
_0804004C:
mov r1, r9
ldr r4, [r1, 0x4]
b _0804035C
_08040052:
mov r2, r9
ldrb r4, [r2, 0x8]
b _0804035C
_08040058:
mov r6, r9
ldrb r4, [r6, 0x9]
b _0804035C
_0804005E:
ldr r0, [sp]
subs r0, 0xD
lsls r0, 1
add r0, r10
ldrh r4, [r0]
b _0804035C
_0804006A:
ldr r0, [sp]
add r0, r10
subs r0, 0x9
ldrb r4, [r0]
b _0804035C
_08040074:
ldrb r4, [r7]
b _0804035C
_08040078:
ldrb r4, [r7, 0x1]
b _0804035C
_0804007C:
ldrb r4, [r7, 0x2]
b _0804035C
_08040080:
ldrb r4, [r7, 0x3]
b _0804035C
_08040084:
ldrb r4, [r7, 0x4]
b _0804035C
_08040088:
ldrb r4, [r7, 0x5]
b _0804035C
_0804008C:
ldrb r4, [r7, 0x6]
b _0804035C
_08040090:
ldrb r4, [r7, 0x7]
b _0804035C
_08040094:
ldrb r4, [r7, 0x8]
b _0804035C
_08040098:
ldrb r4, [r7, 0x9]
b _0804035C
_0804009C:
ldrb r4, [r7, 0xA]
b _0804035C
_080400A0:
ldrb r4, [r7, 0xB]
b _0804035C
_080400A4:
ldrb r4, [r5]
b _0804035C
_080400A8:
ldrb r4, [r5, 0x1]
b _0804035C
_080400AC:
ldrb r0, [r5, 0x2]
lsls r0, 25
lsrs r4, r0, 25
b _0804035C
_080400B4:
ldrh r0, [r5, 0x2]
lsls r0, 21
lsrs r4, r0, 28
b _0804035C
_080400BC:
ldrb r0, [r5, 0x3]
b _0804017A
_080400C0:
ldrb r0, [r5, 0x3]
lsrs r4, r0, 7
b _0804035C
_080400C6:
ldrb r0, [r5, 0x4]
lsls r0, 27
lsrs r4, r0, 27
b _0804035C
_080400CE:
ldrh r0, [r5, 0x4]
lsls r0, 22
lsrs r4, r0, 27
b _0804035C
_080400D6:
ldrb r0, [r5, 0x5]
lsls r0, 25
lsrs r4, r0, 27
b _0804035C
_080400DE:
ldr r0, [r5, 0x4]
lsls r0, 12
lsrs r4, r0, 27
b _0804035C
_080400E6:
ldrh r0, [r5, 0x6]
lsls r0, 23
lsrs r4, r0, 27
b _0804035C
_080400EE:
ldrb r0, [r5, 0x7]
lsls r0, 26
lsrs r4, r0, 27
b _0804035C
_080400F6:
ldrb r0, [r5, 0x7]
b _08040154
_080400FA:
ldrb r0, [r5, 0x7]
lsrs r4, r0, 7
b _0804035C
_08040100:
ldrb r0, [r5, 0x8]
lsls r0, 29
lsrs r4, r0, 29
b _0804035C
_08040108:
ldrb r0, [r5, 0x8]
lsls r0, 26
lsrs r4, r0, 29
b _0804035C
_08040110:
ldrh r0, [r5, 0x8]
lsls r0, 23
lsrs r4, r0, 29
b _0804035C
_08040118:
ldrb r0, [r5, 0x9]
lsls r0, 28
lsrs r4, r0, 29
b _0804035C
_08040120:
ldrb r0, [r5, 0x9]
lsls r0, 25
lsrs r4, r0, 29
b _0804035C
_08040128:
ldrb r0, [r5, 0x9]
lsrs r4, r0, 7
b _0804035C
_0804012E:
ldrb r0, [r5, 0xA]
b _08040162
_08040132:
ldrb r0, [r5, 0xA]
b _0804016A
_08040136:
ldrb r0, [r5, 0xA]
b _08040172
_0804013A:
ldrb r0, [r5, 0xA]
lsls r0, 28
lsrs r4, r0, 31
b _0804035C
_08040142:
ldrb r0, [r5, 0xA]
lsls r0, 27
lsrs r4, r0, 31
b _0804035C
_0804014A:
ldrb r0, [r5, 0xA]
lsls r0, 26
lsrs r4, r0, 31
b _0804035C
_08040152:
ldrb r0, [r5, 0xA]
_08040154:
lsls r0, 25
lsrs r4, r0, 31
b _0804035C
_0804015A:
ldrb r0, [r5, 0xA]
lsrs r4, r0, 7
b _0804035C
_08040160:
ldrb r0, [r5, 0xB]
_08040162:
lsls r0, 31
lsrs r4, r0, 31
b _0804035C
_08040168:
ldrb r0, [r5, 0xB]
_0804016A:
lsls r0, 30
lsrs r4, r0, 31
b _0804035C
_08040170:
ldrb r0, [r5, 0xB]
_08040172:
lsls r0, 29
lsrs r4, r0, 31
b _0804035C
_08040178:
ldrb r0, [r5, 0xB]
_0804017A:
lsls r0, 25
lsrs r4, r0, 28
b _0804035C
_08040180:
ldrb r0, [r5, 0xB]
lsrs r4, r0, 7
b _0804035C
_08040186:
mov r0, r9
ldrh r4, [r0]
cmp r4, 0
bne _08040190
b _0804035C
_08040190:
ldrb r0, [r5, 0x7]
lsls r0, 25
cmp r0, 0
blt _080401A6
mov r2, r8
ldrb r1, [r2, 0x13]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _080401A6
b _0804035C
_080401A6:
movs r4, 0xCE
lsls r4, 1
b _0804035C
_080401AC:
ldrb r0, [r5, 0x4]
lsls r0, 27
lsrs r4, r0, 27
ldrh r1, [r5, 0x4]
movs r0, 0xF8
lsls r0, 2
ands r0, r1
orrs r4, r0
ldrb r0, [r5, 0x5]
lsls r0, 25
lsrs r0, 27
lsls r0, 10
orrs r4, r0
ldr r0, [r5, 0x4]
movs r1, 0xF8
lsls r1, 12
ands r0, r1
orrs r4, r0
ldrh r0, [r5, 0x6]
lsls r0, 23
lsrs r0, 27
lsls r0, 20
orrs r4, r0
ldrb r0, [r5, 0x7]
lsls r0, 26
lsrs r0, 27
lsls r0, 25
orrs r4, r0
b _0804035C
_080401E6:
mov r1, r9
ldrh r0, [r1]
cmp r0, 0
bne _080401F0
b _0804035C
_080401F0:
ldrb r0, [r5, 0x7]
lsls r0, 25
cmp r0, 0
bge _080401FA
b _0804035C
_080401FA:
ldrh r0, [r6]
ldr r1, _08040238 @ =0x00000163
cmp r0, r1
bne _08040204
b _0804035C
_08040204:
mov r2, r10
ldrh r5, [r2]
adds r7, r1, 0
adds r2, r6, 0
ldr r1, _0804023C @ =gBitTable
_0804020E:
ldrh r3, [r2]
cmp r5, r3
beq _08040228
mov r6, r10
ldrh r0, [r6, 0x2]
cmp r0, r3
beq _08040228
ldrh r0, [r6, 0x4]
cmp r0, r3
beq _08040228
ldrh r0, [r6, 0x6]
cmp r0, r3
bne _0804022C
_08040228:
ldr r0, [r1]
orrs r4, r0
_0804022C:
adds r2, 0x2
adds r1, 0x4
ldrh r0, [r2]
cmp r0, r7
bne _0804020E
b _0804035C
.align 2, 0
_08040238: .4byte 0x00000163
_0804023C: .4byte gBitTable
_08040240:
movs r4, 0
mov r1, r9
ldrh r0, [r1]
cmp r0, 0
bne _0804024C
b _0804035C
_0804024C:
ldrb r0, [r5, 0x7]
lsls r0, 25
cmp r0, 0
bge _08040256
b _0804035C
_08040256:
ldrb r0, [r5, 0x8]
lsls r1, r0, 29
lsrs r4, r1, 29
lsls r0, 26
lsrs r0, 29
adds r4, r0
ldrh r0, [r5, 0x8]
lsls r0, 23
lsrs r0, 29
adds r4, r0
ldrb r1, [r5, 0x9]
lsls r0, r1, 28
lsrs r0, 29
adds r4, r0
lsls r0, r1, 25
lsrs r0, 29
adds r4, r0
lsrs r1, 7
adds r4, r1
ldrb r1, [r5, 0xA]
lsls r0, r1, 31
lsrs r0, 31
adds r4, r0
lsls r0, r1, 30
lsrs r0, 31
adds r4, r0
lsls r0, r1, 29
lsrs r0, 31
adds r4, r0
lsls r0, r1, 28
lsrs r0, 31
adds r4, r0
lsls r0, r1, 27
lsrs r0, 31
adds r4, r0
lsls r0, r1, 26
lsrs r0, 31
adds r4, r0
lsls r0, r1, 25
lsrs r0, 31
adds r4, r0
lsrs r1, 7
adds r4, r1
ldrb r1, [r5, 0xB]
lsls r0, r1, 31
lsrs r0, 31
adds r4, r0
lsls r0, r1, 30
lsrs r0, 31
adds r4, r0
lsls r1, 29
lsrs r1, 31
adds r4, r1
b _0804035C
_080402C2:
movs r4, 0
mov r2, r9
ldrh r0, [r2]
cmp r0, 0
beq _0804035C
ldrb r0, [r5, 0x7]
lsls r0, 25
cmp r0, 0
blt _0804035C
ldrb r2, [r5, 0x9]
lsrs r4, r2, 7
ldrb r1, [r5, 0x8]
lsls r0, r1, 29
lsrs r0, 28
orrs r4, r0
lsls r1, 26
lsrs r1, 29
lsls r1, 4
orrs r4, r1
ldrh r0, [r5, 0x8]
lsls r0, 23
lsrs r0, 29
lsls r0, 7
orrs r4, r0
lsls r0, r2, 28
lsrs r0, 29
lsls r0, 10
orrs r4, r0
lsls r2, 25
lsrs r2, 29
lsls r2, 13
orrs r4, r2
ldrb r1, [r5, 0xA]
lsls r0, r1, 31
lsrs r0, 31
lsls r0, 16
orrs r4, r0
lsls r0, r1, 30
lsrs r0, 31
lsls r0, 17
orrs r4, r0
lsls r0, r1, 29
lsrs r0, 31
lsls r0, 18
orrs r4, r0
lsls r0, r1, 28
lsrs r0, 31
lsls r0, 19
orrs r4, r0
lsls r0, r1, 27
lsrs r0, 31
lsls r0, 20
orrs r4, r0
lsls r0, r1, 26
lsrs r0, 31
lsls r0, 21
orrs r4, r0
lsls r0, r1, 25
lsrs r0, 31
lsls r0, 22
orrs r4, r0
lsrs r1, 7
lsls r1, 23
orrs r4, r1
ldrb r1, [r5, 0xB]
lsls r0, r1, 31
lsrs r0, 31
lsls r0, 24
orrs r4, r0
lsls r0, r1, 30
lsrs r0, 31
lsls r0, 25
orrs r4, r0
lsls r1, 29
lsrs r1, 31
lsls r1, 26
orrs r4, r1
_0804035C:
ldr r6, [sp]
cmp r6, 0xA
ble _08040368
mov r0, r8
bl EncryptBoxMon
_08040368:
adds r0, r4, 0
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GetBoxMonData
thumb_func_start sub_804037C
sub_804037C: @ 804037C
push {r4,lr}
adds r3, r0, 0
adds r4, r1, 0
adds r0, r4, 0
subs r0, 0x37
cmp r0, 0x21
bls _0804038C
b _080404C0
_0804038C:
lsls r0, 2
ldr r1, _08040398 @ =_0804039C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08040398: .4byte _0804039C
.align 2, 0
_0804039C:
.4byte _08040424
.4byte _0804043C
.4byte _08040446
.4byte _08040456
.4byte _08040466
.4byte _08040476
.4byte _08040486
.4byte _08040496
.4byte _080404A6
.4byte _080404B6
.4byte _080404C8
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _080404C0
.4byte _08040466
.4byte _08040476
.4byte _08040486
.4byte _08040496
.4byte _080404A6
_08040424:
ldrb r1, [r2]
ldrb r0, [r2, 0x1]
lsls r0, 8
adds r1, r0
ldrb r0, [r2, 0x2]
lsls r0, 16
adds r1, r0
ldrb r0, [r2, 0x3]
lsls r0, 24
adds r1, r0
str r1, [r3, 0x50]
b _080404C8
_0804043C:
ldrb r1, [r2]
adds r0, r3, 0
adds r0, 0x54
strb r1, [r0]
b _080404C8
_08040446:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x56
strh r0, [r1]
b _080404C8
_08040456:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x58
strh r0, [r1]
b _080404C8
_08040466:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x5A
strh r0, [r1]
b _080404C8
_08040476:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x5C
strh r0, [r1]
b _080404C8
_08040486:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x5E
strh r0, [r1]
b _080404C8
_08040496:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x60
strh r0, [r1]
b _080404C8
_080404A6:
ldrb r0, [r2]
ldrb r1, [r2, 0x1]
lsls r1, 8
adds r0, r1
adds r1, r3, 0
adds r1, 0x62
strh r0, [r1]
b _080404C8
_080404B6:
ldrb r1, [r2]
adds r0, r3, 0
adds r0, 0x55
strb r1, [r0]
b _080404C8
_080404C0:
adds r0, r3, 0
adds r1, r4, 0
bl sub_80404D0
_080404C8:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_804037C
thumb_func_start sub_80404D0
sub_80404D0: @ 80404D0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r7, r0, 0
mov r10, r1
adds r4, r2, 0
movs r0, 0
mov r8, r0
mov r9, r0
movs r6, 0
movs r5, 0
cmp r1, 0xA
ble _08040550
ldr r1, [r7]
adds r0, r7, 0
movs r2, 0
bl GetSubstruct
mov r8, r0
ldr r1, [r7]
adds r0, r7, 0
movs r2, 0x1
bl GetSubstruct
mov r9, r0
ldr r1, [r7]
adds r0, r7, 0
movs r2, 0x2
bl GetSubstruct
adds r6, r0, 0
ldr r1, [r7]
adds r0, r7, 0
movs r2, 0x3
bl GetSubstruct
adds r5, r0, 0
adds r0, r7, 0
bl DecryptBoxMon
adds r0, r7, 0
bl CalculateBoxMonChecksum
lsls r0, 16
lsrs r0, 16
ldrh r1, [r7, 0x1C]
cmp r0, r1
beq _08040550
ldrb r0, [r7, 0x13]
movs r1, 0x1
orrs r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r7, 0x13]
ldrb r0, [r5, 0x7]
movs r1, 0x40
orrs r0, r1
strb r0, [r5, 0x7]
adds r0, r7, 0
bl EncryptBoxMon
b _08040AEE
_08040550:
mov r0, r10
cmp r0, 0x50
bls _08040558
b _08040ADA
_08040558:
lsls r0, 2
ldr r1, _08040564 @ =_08040568
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08040564: .4byte _08040568
.align 2, 0
_08040568:
.4byte _080406AC
.4byte _080406C4
.4byte _080406DC
.4byte _080406F2
.4byte _080406F8
.4byte _08040708
.4byte _0804071A
.4byte _0804072C
.4byte _08040742
.4byte _08040748
.4byte _08040754
.4byte _08040760
.4byte _08040780
.4byte _080407B8
.4byte _080407B8
.4byte _080407B8
.4byte _080407B8
.4byte _080407CC
.4byte _080407CC
.4byte _080407CC
.4byte _080407CC
.4byte _080407A8
.4byte _080407FC
.4byte _08040802
.4byte _08040808
.4byte _0804078E
.4byte _080407D8
.4byte _080407DE
.4byte _080407E4
.4byte _080407EA
.4byte _080407F0
.4byte _080407F6
.4byte _080407B0
.4byte _0804080E
.4byte _08040820
.4byte _08040826
.4byte _0804082C
.4byte _08040840
.4byte _08040858
.4byte _0804087E
.4byte _08040892
.4byte _080408AC
.4byte _080408C2
.4byte _080408DC
.4byte _080408F4
.4byte _08040908
.4byte _08040938
.4byte _08040814
.4byte _0804081A
.4byte _0804086E
.4byte _08040948
.4byte _08040956
.4byte _0804096C
.4byte _08040984
.4byte _08040994
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040ADA
.4byte _08040A92
.4byte _080409AA
.4byte _080409BA
.4byte _080409C8
.4byte _080409D8
.4byte _080409E8
.4byte _080409F8
.4byte _08040A08
.4byte _08040A18
.4byte _08040A2E
.4byte _08040A3E
.4byte _08040A4C
.4byte _08040A5C
.4byte _08040A6C
.4byte _08040A82
_080406AC:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
ldrb r0, [r4, 0x2]
lsls r0, 16
adds r1, r0
ldrb r0, [r4, 0x3]
lsls r0, 24
adds r1, r0
str r1, [r7]
b _08040ADA
_080406C4:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
ldrb r0, [r4, 0x2]
lsls r0, 16
adds r1, r0
ldrb r0, [r4, 0x3]
lsls r0, 24
adds r1, r0
str r1, [r7, 0x4]
b _08040ADA
_080406DC:
movs r2, 0
adds r3, r7, 0
adds r3, 0x8
_080406E2:
adds r0, r3, r2
adds r1, r4, r2
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, 0x9
ble _080406E2
b _08040ADA
_080406F2:
ldrb r0, [r4]
strb r0, [r7, 0x12]
b _08040ADA
_080406F8:
ldrb r0, [r4]
movs r1, 0x1
ands r1, r0
ldrb r2, [r7, 0x13]
movs r0, 0x2
negs r0, r0
ands r0, r2
b _08040926
_08040708:
ldrb r0, [r4]
movs r1, 0x1
ands r1, r0
lsls r1, 1
ldrb r2, [r7, 0x13]
movs r0, 0x3
negs r0, r0
ands r0, r2
b _08040926
_0804071A:
ldrb r0, [r4]
movs r1, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r7, 0x13]
movs r0, 0x5
negs r0, r0
ands r0, r2
b _08040926
_0804072C:
movs r2, 0
adds r3, r7, 0
adds r3, 0x14
_08040732:
adds r0, r3, r2
adds r1, r4, r2
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, 0x6
ble _08040732
b _08040ADA
_08040742:
ldrb r0, [r4]
strb r0, [r7, 0x1B]
b _08040ADA
_08040748:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
strh r1, [r7, 0x1C]
b _08040ADA
_08040754:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
strh r1, [r7, 0x1E]
b _08040ADA
_08040760:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
mov r0, r8
strh r1, [r0]
lsls r1, 16
cmp r1, 0
beq _08040778
ldrb r0, [r7, 0x13]
movs r1, 0x2
b _08040926
_08040778:
ldrb r1, [r7, 0x13]
movs r0, 0x3
negs r0, r0
b _08040932
_08040780:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
mov r0, r8
strh r1, [r0, 0x2]
b _08040ADA
_0804078E:
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
ldrb r0, [r4, 0x2]
lsls r0, 16
adds r1, r0
ldrb r0, [r4, 0x3]
lsls r0, 24
adds r1, r0
mov r0, r8
str r1, [r0, 0x4]
b _08040ADA
_080407A8:
ldrb r0, [r4]
mov r1, r8
strb r0, [r1, 0x8]
b _08040ADA
_080407B0:
ldrb r0, [r4]
mov r1, r8
strb r0, [r1, 0x9]
b _08040ADA
_080407B8:
mov r2, r10
subs r2, 0xD
lsls r2, 1
add r2, r9
ldrb r1, [r4]
ldrb r0, [r4, 0x1]
lsls r0, 8
adds r1, r0
strh r1, [r2]
b _08040ADA
_080407CC:
mov r0, r9
add r0, r10
subs r0, 0x9
ldrb r1, [r4]
strb r1, [r0]
b _08040ADA
_080407D8:
ldrb r0, [r4]
strb r0, [r6]
b _08040ADA
_080407DE:
ldrb r0, [r4]
strb r0, [r6, 0x1]
b _08040ADA
_080407E4:
ldrb r0, [r4]
strb r0, [r6, 0x2]
b _08040ADA
_080407EA:
ldrb r0, [r4]
strb r0, [r6, 0x3]
b _08040ADA
_080407F0:
ldrb r0, [r4]
strb r0, [r6, 0x4]
b _08040ADA
_080407F6:
ldrb r0, [r4]
strb r0, [r6, 0x5]
b _08040ADA
_080407FC:
ldrb r0, [r4]
strb r0, [r6, 0x6]
b _08040ADA
_08040802:
ldrb r0, [r4]
strb r0, [r6, 0x7]
b _08040ADA
_08040808:
ldrb r0, [r4]
strb r0, [r6, 0x8]
b _08040ADA
_0804080E:
ldrb r0, [r4]
strb r0, [r6, 0x9]
b _08040ADA
_08040814:
ldrb r0, [r4]
strb r0, [r6, 0xA]
b _08040ADA
_0804081A:
ldrb r0, [r4]
strb r0, [r6, 0xB]
b _08040ADA
_08040820:
ldrb r0, [r4]
strb r0, [r5]
b _08040ADA
_08040826:
ldrb r0, [r4]
strb r0, [r5, 0x1]
b _08040ADA
_0804082C:
ldrb r1, [r4]
movs r0, 0x7F
ands r1, r0
ldrb r2, [r5, 0x2]
movs r0, 0x80
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x2]
b _08040ADA
_08040840:
ldrb r1, [r4]
movs r0, 0xF
ands r1, r0
lsls r1, 7
ldrh r2, [r5, 0x2]
ldr r0, _08040854 @ =0xfffff87f
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x2]
b _08040ADA
.align 2, 0
_08040854: .4byte 0xfffff87f
_08040858:
ldrb r1, [r4]
movs r0, 0xF
ands r1, r0
lsls r1, 3
ldrb r2, [r5, 0x3]
movs r0, 0x79
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x3]
b _08040ADA
_0804086E:
ldrb r0, [r4]
lsls r0, 7
ldrb r2, [r5, 0x3]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x3]
b _08040ADA
_0804087E:
ldrb r1, [r4]
movs r0, 0x1F
ands r1, r0
ldrb r2, [r5, 0x4]
movs r0, 0x20
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x4]
b _08040ADA
_08040892:
ldrb r1, [r4]
movs r0, 0x1F
ands r1, r0
lsls r1, 5
ldrh r2, [r5, 0x4]
ldr r0, _080408A8 @ =0xfffffc1f
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
b _08040ADA
.align 2, 0
_080408A8: .4byte 0xfffffc1f
_080408AC:
ldrb r1, [r4]
movs r0, 0x1F
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0x5]
movs r0, 0x7D
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
b _08040ADA
_080408C2:
ldrb r2, [r4]
movs r0, 0x1F
ands r2, r0
lsls r2, 15
ldr r0, [r5, 0x4]
ldr r1, _080408D8 @ =0xfff07fff
ands r0, r1
orrs r0, r2
str r0, [r5, 0x4]
b _08040ADA
.align 2, 0
_080408D8: .4byte 0xfff07fff
_080408DC:
ldrb r1, [r4]
movs r0, 0x1F
ands r1, r0
lsls r1, 4
ldrh r2, [r5, 0x6]
ldr r0, _080408F0 @ =0xfffffe0f
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x6]
b _08040ADA
.align 2, 0
_080408F0: .4byte 0xfffffe0f
_080408F4:
ldrb r1, [r4]
movs r0, 0x1F
ands r1, r0
lsls r1, 1
ldrb r2, [r5, 0x7]
movs r0, 0x3F
negs r0, r0
ands r0, r2
orrs r0, r1
b _08040AD8
_08040908:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 6
ldrb r2, [r5, 0x7]
movs r0, 0x41
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x7]
lsls r0, 25
cmp r0, 0
bge _0804092C
ldrb r0, [r7, 0x13]
movs r1, 0x4
_08040926:
orrs r0, r1
strb r0, [r7, 0x13]
b _08040ADA
_0804092C:
ldrb r1, [r7, 0x13]
movs r0, 0x5
negs r0, r0
_08040932:
ands r0, r1
strb r0, [r7, 0x13]
b _08040ADA
_08040938:
ldrb r0, [r4]
lsls r0, 7
ldrb r2, [r5, 0x7]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x7]
b _08040ADA
_08040948:
ldrb r1, [r4]
movs r0, 0x7
ands r1, r0
ldrb r2, [r5, 0x8]
movs r0, 0x8
negs r0, r0
b _08040964
_08040956:
ldrb r1, [r4]
movs r0, 0x7
ands r1, r0
lsls r1, 3
ldrb r2, [r5, 0x8]
movs r0, 0x39
negs r0, r0
_08040964:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x8]
b _08040ADA
_0804096C:
ldrb r1, [r4]
movs r0, 0x7
ands r1, r0
lsls r1, 6
ldrh r2, [r5, 0x8]
ldr r0, _08040980 @ =0xfffffe3f
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x8]
b _08040ADA
.align 2, 0
_08040980: .4byte 0xfffffe3f
_08040984:
ldrb r1, [r4]
movs r0, 0x7
ands r1, r0
lsls r1, 1
ldrb r2, [r5, 0x9]
movs r0, 0xF
negs r0, r0
b _080409A2
_08040994:
ldrb r1, [r4]
movs r0, 0x7
ands r1, r0
lsls r1, 4
ldrb r2, [r5, 0x9]
movs r0, 0x71
negs r0, r0
_080409A2:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x9]
b _08040ADA
_080409AA:
ldrb r0, [r4]
lsls r0, 7
ldrb r2, [r5, 0x9]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r5, 0x9]
b _08040ADA
_080409BA:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
ldrb r2, [r5, 0xA]
movs r0, 0x2
negs r0, r0
b _08040A26
_080409C8:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 1
ldrb r2, [r5, 0xA]
movs r0, 0x3
negs r0, r0
b _08040A26
_080409D8:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0xA]
movs r0, 0x5
negs r0, r0
b _08040A26
_080409E8:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 3
ldrb r2, [r5, 0xA]
movs r0, 0x9
negs r0, r0
b _08040A26
_080409F8:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 4
ldrb r2, [r5, 0xA]
movs r0, 0x11
negs r0, r0
b _08040A26
_08040A08:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 5
ldrb r2, [r5, 0xA]
movs r0, 0x21
negs r0, r0
b _08040A26
_08040A18:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 6
ldrb r2, [r5, 0xA]
movs r0, 0x41
negs r0, r0
_08040A26:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0xA]
b _08040ADA
_08040A2E:
ldrb r0, [r4]
lsls r0, 7
ldrb r2, [r5, 0xA]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r5, 0xA]
b _08040ADA
_08040A3E:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
ldrb r2, [r5, 0xB]
movs r0, 0x2
negs r0, r0
b _08040A7A
_08040A4C:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 1
ldrb r2, [r5, 0xB]
movs r0, 0x3
negs r0, r0
b _08040A7A
_08040A5C:
ldrb r1, [r4]
movs r0, 0x1
ands r1, r0
lsls r1, 2
ldrb r2, [r5, 0xB]
movs r0, 0x5
negs r0, r0
b _08040A7A
_08040A6C:
ldrb r1, [r4]
movs r0, 0xF
ands r1, r0
lsls r1, 3
ldrb r2, [r5, 0xB]
movs r0, 0x79
negs r0, r0
_08040A7A:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0xB]
b _08040ADA
_08040A82:
ldrb r0, [r4]
lsls r0, 7
ldrb r2, [r5, 0xB]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r5, 0xB]
b _08040ADA
_08040A92:
ldrb r1, [r4]
movs r4, 0x1F
adds r2, r1, 0
ands r2, r4
ldrb r3, [r5, 0x4]
movs r0, 0x20
negs r0, r0
ands r0, r3
orrs r0, r2
strb r0, [r5, 0x4]
lsrs r1, 5
ands r1, r4
lsls r1, 5
ldrh r2, [r5, 0x4]
ldr r0, _08040AFC @ =0xfffffc1f
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
ldrb r1, [r5, 0x5]
movs r0, 0x7D
negs r0, r0
ands r0, r1
strb r0, [r5, 0x5]
ldr r0, [r5, 0x4]
ldr r1, _08040B00 @ =0xfff07fff
ands r0, r1
str r0, [r5, 0x4]
ldrh r1, [r5, 0x6]
ldr r0, _08040B04 @ =0xfffffe0f
ands r0, r1
strh r0, [r5, 0x6]
ldrb r1, [r5, 0x7]
movs r0, 0x3F
negs r0, r0
ands r0, r1
_08040AD8:
strb r0, [r5, 0x7]
_08040ADA:
mov r0, r10
cmp r0, 0xA
ble _08040AEE
adds r0, r7, 0
bl CalculateBoxMonChecksum
strh r0, [r7, 0x1C]
adds r0, r7, 0
bl EncryptBoxMon
_08040AEE:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08040AFC: .4byte 0xfffffc1f
_08040B00: .4byte 0xfff07fff
_08040B04: .4byte 0xfffffe0f
thumb_func_end sub_80404D0
thumb_func_start CopyMon
CopyMon: @ 8040B08
push {lr}
bl memcpy
pop {r0}
bx r0
thumb_func_end CopyMon
thumb_func_start GiveMonToPlayer
GiveMonToPlayer: @ 8040B14
push {r4-r6,lr}
adds r6, r0, 0
ldr r4, _08040B40 @ =gSaveBlock2Ptr
ldr r2, [r4]
movs r1, 0x7
bl sub_804037C
ldr r2, [r4]
adds r2, 0x8
adds r0, r6, 0
movs r1, 0x31
bl sub_804037C
ldr r2, [r4]
adds r2, 0xA
adds r0, r6, 0
movs r1, 0x1
bl sub_804037C
movs r5, 0
b _08040B46
.align 2, 0
_08040B40: .4byte gSaveBlock2Ptr
_08040B44:
adds r5, 0x1
_08040B46:
cmp r5, 0x5
bgt _08040B80
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08040B78 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08040B44
adds r0, r4, 0
adds r1, r6, 0
movs r2, 0x64
bl CopyMon
ldr r1, _08040B7C @ =gUnknown_2024029
adds r0, r5, 0x1
strb r0, [r1]
movs r0, 0
b _08040B8A
.align 2, 0
_08040B78: .4byte gPlayerParty
_08040B7C: .4byte gUnknown_2024029
_08040B80:
adds r0, r6, 0
bl SendMonToPC
lsls r0, 24
lsrs r0, 24
_08040B8A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GiveMonToPlayer
thumb_func_start SendMonToPC
SendMonToPC: @ 8040B90
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r0
ldr r0, _08040C04 @ =0x00004037
bl VarGet
lsls r0, 24
lsrs r0, 24
bl set_unknown_box_id
bl StorageGetCurrentBox
lsls r0, 24
lsrs r5, r0, 24
_08040BAE:
movs r6, 0
lsls r7, r5, 24
_08040BB2:
lsls r1, r6, 24
lsrs r1, 24
lsrs r0, r7, 24
bl GetBoxedMonPtr
adds r4, r0, 0
movs r1, 0xB
movs r2, 0
bl GetBoxMonData
cmp r0, 0
bne _08040C14
mov r0, r8
bl MonRestorePP
adds r0, r4, 0
mov r1, r8
movs r2, 0x50
bl CopyMon
ldr r0, _08040C08 @ =gUnknown_20370D6
strh r5, [r0]
ldr r0, _08040C0C @ =gUnknown_20370D8
strh r6, [r0]
bl get_unknown_box_id
lsls r0, 16
lsrs r0, 16
cmp r0, r5
beq _08040BF4
ldr r0, _08040C10 @ =0x00000843
bl FlagClear
_08040BF4:
lsls r1, r5, 16
ldr r0, _08040C04 @ =0x00004037
lsrs r1, 16
bl VarSet
movs r0, 0x1
b _08040C30
.align 2, 0
_08040C04: .4byte 0x00004037
_08040C08: .4byte gUnknown_20370D6
_08040C0C: .4byte gUnknown_20370D8
_08040C10: .4byte 0x00000843
_08040C14:
adds r6, 0x1
cmp r6, 0x1D
ble _08040BB2
adds r5, 0x1
cmp r5, 0xE
bne _08040C22
movs r5, 0
_08040C22:
bl StorageGetCurrentBox
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08040BAE
movs r0, 0x2
_08040C30:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end SendMonToPC
thumb_func_start CalculatePlayerPartyCount
CalculatePlayerPartyCount: @ 8040C3C
push {r4,lr}
ldr r0, _08040C48 @ =gUnknown_2024029
movs r1, 0
strb r1, [r0]
b _08040C54
.align 2, 0
_08040C48: .4byte gUnknown_2024029
_08040C4C:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
adds r0, r4, 0
_08040C54:
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0x5
bhi _08040C72
adds r1, r0, 0
movs r0, 0x64
muls r0, r1
ldr r1, _08040C7C @ =gPlayerParty
adds r0, r1
movs r1, 0xB
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08040C4C
_08040C72:
ldrb r0, [r4]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08040C7C: .4byte gPlayerParty
thumb_func_end CalculatePlayerPartyCount
thumb_func_start CalculateEnemyPartyCount
CalculateEnemyPartyCount: @ 8040C80
push {r4,lr}
ldr r0, _08040C8C @ =gUnknown_202402A
movs r1, 0
strb r1, [r0]
b _08040C98
.align 2, 0
_08040C8C: .4byte gUnknown_202402A
_08040C90:
ldrb r0, [r4]
adds r0, 0x1
strb r0, [r4]
adds r0, r4, 0
_08040C98:
adds r4, r0, 0
ldrb r0, [r4]
cmp r0, 0x5
bhi _08040CB6
adds r1, r0, 0
movs r0, 0x64
muls r0, r1
ldr r1, _08040CC0 @ =gEnemyParty
adds r0, r1
movs r1, 0xB
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08040C90
_08040CB6:
ldrb r0, [r4]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08040CC0: .4byte gEnemyParty
thumb_func_end CalculateEnemyPartyCount
thumb_func_start GetMonsStateToDoubles
GetMonsStateToDoubles: @ 8040CC4
push {r4-r6,lr}
movs r6, 0
bl CalculatePlayerPartyCount
ldr r1, _08040D30 @ =gUnknown_2024029
ldrb r0, [r1]
cmp r0, 0x1
beq _08040D28
movs r5, 0
ldrb r1, [r1]
cmp r6, r1
bge _08040D20
_08040CDC:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08040D34 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x39
movs r2, 0
bl GetMonData
cmp r0, 0
beq _08040D16
adds r0, r4, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
cmp r0, 0
beq _08040D16
adds r0, r4, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
movs r1, 0xCE
lsls r1, 1
cmp r0, r1
beq _08040D16
adds r6, 0x1
_08040D16:
adds r5, 0x1
ldr r0, _08040D30 @ =gUnknown_2024029
ldrb r0, [r0]
cmp r5, r0
blt _08040CDC
_08040D20:
movs r0, 0
cmp r6, 0x1
bgt _08040D28
movs r0, 0x2
_08040D28:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08040D30: .4byte gUnknown_2024029
_08040D34: .4byte gPlayerParty
thumb_func_end GetMonsStateToDoubles
thumb_func_start GetAbilityBySpecies
GetAbilityBySpecies: @ 8040D38
push {lr}
lsls r0, 16
lsrs r3, r0, 16
lsls r1, 24
cmp r1, 0
beq _08040D5C
ldr r2, _08040D54 @ =gUnknown_2023D6A
ldr r1, _08040D58 @ =gBaseStats
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x17]
b _08040D6A
.align 2, 0
_08040D54: .4byte gUnknown_2023D6A
_08040D58: .4byte gBaseStats
_08040D5C:
ldr r2, _08040D74 @ =gUnknown_2023D6A
ldr r1, _08040D78 @ =gBaseStats
lsls r0, r3, 3
subs r0, r3
lsls r0, 2
adds r0, r1
ldrb r0, [r0, 0x16]
_08040D6A:
strb r0, [r2]
ldrb r0, [r2]
pop {r1}
bx r1
.align 2, 0
_08040D74: .4byte gUnknown_2023D6A
_08040D78: .4byte gBaseStats
thumb_func_end GetAbilityBySpecies
thumb_func_start GetMonAbility
GetMonAbility: @ 8040D7C
push {r4,r5,lr}
adds r5, r0, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
movs r1, 0x2E
movs r2, 0
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl GetAbilityBySpecies
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetMonAbility
thumb_func_start CreateSecretBaseEnemyParty
CreateSecretBaseEnemyParty: @ 8040DB0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
adds r5, r0, 0
bl ZeroEnemyPartyMons
ldr r4, _08040ED8 @ =gBattleResources
ldr r0, [r4]
ldr r0, [r0]
adds r1, r5, 0
movs r2, 0xA0
bl memcpy
movs r0, 0
mov r9, r0
_08040DD4:
ldr r1, _08040ED8 @ =gBattleResources
ldr r3, [r1]
ldr r2, [r3]
mov r4, r9
lsls r7, r4, 1
adds r0, r2, 0
adds r0, 0x7C
adds r1, r0, r7
ldrh r0, [r1]
adds r4, 0x1
str r4, [sp, 0x10]
cmp r0, 0
beq _08040EAE
movs r0, 0x64
mov r6, r9
muls r6, r0
ldr r4, _08040EDC @ =gEnemyParty
mov r8, r4
adds r5, r6, r4
ldrh r1, [r1]
adds r0, r2, 0
adds r0, 0x94
add r0, r9
ldrb r2, [r0]
movs r0, 0x1
str r0, [sp]
ldr r0, [r3]
mov r3, r9
lsls r4, r3, 2
adds r0, 0x34
adds r0, r4
ldr r0, [r0]
str r0, [sp, 0x4]
movs r0, 0x2
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0xC]
adds r0, r5, 0
movs r3, 0xF
bl CreateMon
ldr r1, _08040ED8 @ =gBattleResources
ldr r0, [r1]
adds r1, r7, 0
adds r1, 0x88
ldr r2, [r0]
adds r2, r1
adds r0, r5, 0
movs r1, 0xC
bl sub_804037C
movs r5, 0
mov r10, r4
mov r7, r9
adds r7, 0x9A
mov r4, r8
_08040E44:
adds r1, r5, 0
adds r1, 0x1A
ldr r2, _08040ED8 @ =gBattleResources
ldr r0, [r2]
ldr r2, [r0]
adds r2, r7
adds r0, r6, r4
bl sub_804037C
adds r5, 0x1
cmp r5, 0x5
ble _08040E44
movs r5, 0
movs r3, 0x64
mov r0, r9
muls r0, r3
ldr r1, _08040EDC @ =gEnemyParty
adds r7, r0, r1
mov r4, r10
lsls r0, r4, 1
adds r6, r0, 0
adds r6, 0x4C
adds r4, r0, 0
_08040E72:
adds r1, r5, 0
adds r1, 0xD
ldr r2, _08040ED8 @ =gBattleResources
ldr r0, [r2]
ldr r2, [r0]
adds r2, r6
adds r0, r7, 0
bl sub_804037C
adds r1, r5, 0
adds r1, 0x11
ldr r3, _08040ED8 @ =gBattleResources
ldr r0, [r3]
ldr r0, [r0]
adds r0, 0x4C
adds r0, r4
ldrh r0, [r0]
lsls r2, r0, 1
adds r2, r0
lsls r2, 2
ldr r0, _08040EE0 @ =gUnknown_8250C08
adds r2, r0
adds r0, r7, 0
bl sub_804037C
adds r6, 0x2
adds r4, 0x2
adds r5, 0x1
cmp r5, 0x3
ble _08040E72
_08040EAE:
ldr r4, [sp, 0x10]
mov r9, r4
cmp r4, 0x5
ble _08040DD4
ldr r1, _08040EE4 @ =gBattleTypeFlags
movs r0, 0x8
str r0, [r1]
ldr r1, _08040EE8 @ =gTrainerBattleOpponent_A
movs r2, 0x80
lsls r2, 3
adds r0, r2, 0
strh r0, [r1]
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08040ED8: .4byte gBattleResources
_08040EDC: .4byte gEnemyParty
_08040EE0: .4byte gUnknown_8250C08
_08040EE4: .4byte gBattleTypeFlags
_08040EE8: .4byte gTrainerBattleOpponent_A
thumb_func_end CreateSecretBaseEnemyParty
thumb_func_start GetSecretBaseTrainerPicIndex
GetSecretBaseTrainerPicIndex: @ 8040EEC
push {r4,r5,lr}
ldr r5, _08040F20 @ =gUnknown_825DFE0
ldr r0, _08040F24 @ =gBattleResources
ldr r0, [r0]
ldr r4, [r0]
ldrb r0, [r4, 0x9]
movs r1, 0x5
bl __umodsi3
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4, 0x1]
lsls r2, 27
lsrs r2, 31
lsls r1, r2, 2
adds r1, r2
adds r0, r1
adds r0, r5
ldrb r0, [r0]
ldr r1, _08040F28 @ =gUnknown_82538A8
adds r0, r1
ldrb r0, [r0]
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08040F20: .4byte gUnknown_825DFE0
_08040F24: .4byte gBattleResources
_08040F28: .4byte gUnknown_82538A8
thumb_func_end GetSecretBaseTrainerPicIndex
thumb_func_start GetSecretBaseTrainerNameIndex
GetSecretBaseTrainerNameIndex: @ 8040F2C
push {r4,r5,lr}
ldr r5, _08040F60 @ =gUnknown_825DFE0
ldr r0, _08040F64 @ =gBattleResources
ldr r0, [r0]
ldr r4, [r0]
ldrb r0, [r4, 0x9]
movs r1, 0x5
bl __umodsi3
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4, 0x1]
lsls r2, 27
lsrs r2, 31
lsls r1, r2, 2
adds r1, r2
adds r0, r1
adds r0, r5
ldrb r0, [r0]
ldr r1, _08040F68 @ =gUnknown_825393E
adds r0, r1
ldrb r0, [r0]
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08040F60: .4byte gUnknown_825DFE0
_08040F64: .4byte gBattleResources
_08040F68: .4byte gUnknown_825393E
thumb_func_end GetSecretBaseTrainerNameIndex
thumb_func_start IsPlayerPartyAndPokemonStorageFull
IsPlayerPartyAndPokemonStorageFull: @ 8040F6C
push {r4,lr}
movs r4, 0
_08040F70:
movs r0, 0x64
muls r0, r4
ldr r1, _08040F88 @ =gPlayerParty
adds r0, r1
movs r1, 0xB
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08040F8C
movs r0, 0
b _08040F9A
.align 2, 0
_08040F88: .4byte gPlayerParty
_08040F8C:
adds r4, 0x1
cmp r4, 0x5
ble _08040F70
bl IsPokemonStorageFull
lsls r0, 24
lsrs r0, 24
_08040F9A:
pop {r4}
pop {r1}
bx r1
thumb_func_end IsPlayerPartyAndPokemonStorageFull
thumb_func_start IsPokemonStorageFull
IsPokemonStorageFull: @ 8040FA0
push {r4-r6,lr}
movs r6, 0
_08040FA4:
movs r4, 0
lsls r5, r6, 24
_08040FA8:
lsls r1, r4, 24
lsrs r1, 24
lsrs r0, r5, 24
movs r2, 0xB
bl GetBoxMonDataFromAnyBox
cmp r0, 0
bne _08040FBC
movs r0, 0
b _08040FCA
_08040FBC:
adds r4, 0x1
cmp r4, 0x1D
ble _08040FA8
adds r6, 0x1
cmp r6, 0xD
ble _08040FA4
movs r0, 0x1
_08040FCA:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end IsPokemonStorageFull
thumb_func_start GetSpeciesName
GetSpeciesName: @ 8040FD0
push {r4-r7,lr}
adds r6, r0, 0
lsls r1, 16
lsrs r5, r1, 16
movs r1, 0
movs r0, 0xCE
lsls r0, 1
mov r12, r0
ldr r7, _08040FEC @ =gUnknown_8245EE0
movs r0, 0xB
muls r0, r5
adds r3, r0, r7
adds r2, r6, 0
b _08040FF6
.align 2, 0
_08040FEC: .4byte gUnknown_8245EE0
_08040FF0:
adds r3, 0x1
adds r2, 0x1
adds r1, 0x1
_08040FF6:
adds r4, r6, r1
cmp r1, 0x9
bgt _08041010
cmp r5, r12
bls _08041006
adds r0, r1, r7
ldrb r0, [r0]
b _08041008
_08041006:
ldrb r0, [r3]
_08041008:
strb r0, [r2]
ldrb r0, [r4]
cmp r0, 0xFF
bne _08040FF0
_08041010:
movs r0, 0xFF
strb r0, [r4]
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end GetSpeciesName
thumb_func_start CalculatePPWithBonus
CalculatePPWithBonus: @ 804101C
push {r4,lr}
lsls r0, 16
lsrs r0, 16
lsls r2, 24
lsrs r2, 24
ldr r4, _0804105C @ =gBattleMoves
lsls r3, r0, 1
adds r3, r0
lsls r3, 2
adds r3, r4
ldrb r4, [r3, 0x4]
ldr r0, _08041060 @ =gUnknown_825DEA1
adds r0, r2, r0
ldrb r3, [r0]
ands r3, r1
lsls r2, 1
asrs r3, r2
lsls r0, r3, 2
adds r0, r3
lsls r0, 2
muls r0, r4
movs r1, 0x64
bl __divsi3
adds r4, r0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_0804105C: .4byte gBattleMoves
_08041060: .4byte gUnknown_825DEA1
thumb_func_end CalculatePPWithBonus
thumb_func_start RemoveMonPPBonus
RemoveMonPPBonus: @ 8041064
push {r4,r5,lr}
sub sp, 0x4
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
movs r1, 0x15
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
mov r1, sp
strb r0, [r1]
ldr r1, _0804109C @ =gUnknown_825DEA5
adds r4, r1
ldrb r1, [r4]
ands r1, r0
mov r0, sp
strb r1, [r0]
adds r0, r5, 0
movs r1, 0x15
mov r2, sp
bl sub_804037C
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0804109C: .4byte gUnknown_825DEA5
thumb_func_end RemoveMonPPBonus
thumb_func_start RemoveBattleMonPPBonus
RemoveBattleMonPPBonus: @ 80410A0
lsls r1, 24
lsrs r1, 24
adds r0, 0x3B
ldr r2, _080410B4 @ =gUnknown_825DEA5
adds r1, r2
ldrb r2, [r0]
ldrb r1, [r1]
ands r1, r2
strb r1, [r0]
bx lr
.align 2, 0
_080410B4: .4byte gUnknown_825DEA5
thumb_func_end RemoveBattleMonPPBonus
thumb_func_start CopyPlayerPartyMonToBattleData
CopyPlayerPartyMonToBattleData: @ 80410B8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x14]
lsls r1, 24
lsrs r1, 24
mov r9, r1
movs r0, 0x64
mov r5, r9
muls r5, r0
ldr r0, _080413A4 @ =gPlayerParty
adds r5, r0
adds r0, r5, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
ldr r1, _080413A8 @ =gBattleMons
mov r8, r1
movs r1, 0x58
ldr r2, [sp, 0x14]
adds r4, r2, 0
muls r4, r1
mov r3, r8
adds r6, r4, r3
strh r0, [r6]
adds r0, r5, 0
movs r1, 0xC
movs r2, 0
bl GetMonData
strh r0, [r6, 0x2E]
movs r6, 0
mov r0, r8
adds r0, 0x24
adds r7, r4, r0
_0804110A:
adds r1, r6, 0
adds r1, 0xD
adds r0, r5, 0
movs r2, 0
bl GetMonData
movs r1, 0xC
add r1, r8
mov r10, r1
adds r1, r4, r1
strh r0, [r1]
adds r1, r6, 0
adds r1, 0x11
adds r0, r5, 0
movs r2, 0
bl GetMonData
strb r0, [r7]
adds r7, 0x1
adds r4, 0x2
adds r6, 0x1
cmp r6, 0x3
ble _0804110A
movs r0, 0x64
mov r4, r9
muls r4, r0
ldr r0, _080413A4 @ =gPlayerParty
adds r4, r0
adds r0, r4, 0
movs r1, 0x15
movs r2, 0
bl GetMonData
movs r2, 0xC
negs r2, r2
add r2, r10
mov r9, r2
movs r1, 0x58
ldr r3, [sp, 0x14]
adds r5, r3, 0
muls r5, r1
adds r7, r5, r2
adds r1, r7, 0
adds r1, 0x3B
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x20
movs r2, 0
bl GetMonData
adds r1, r7, 0
adds r1, 0x2B
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x19
movs r2, 0
bl GetMonData
mov r1, r10
adds r1, 0x38
adds r1, r5, r1
str r0, [r1]
adds r0, r4, 0
movs r1, 0x27
movs r2, 0
bl GetMonData
movs r6, 0x1F
ands r0, r6
ldrb r2, [r7, 0x14]
movs r1, 0x20
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x14]
adds r0, r4, 0
movs r1, 0x28
movs r2, 0
bl GetMonData
movs r1, 0x1F
mov r8, r1
mov r2, r8
ands r0, r2
lsls r0, 5
ldrh r2, [r7, 0x14]
ldr r1, _080413AC @ =0xfffffc1f
ands r1, r2
orrs r1, r0
strh r1, [r7, 0x14]
adds r0, r4, 0
movs r1, 0x29
movs r2, 0
bl GetMonData
ands r0, r6
lsls r0, 2
ldrb r2, [r7, 0x15]
movs r1, 0x7D
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x15]
adds r0, r4, 0
movs r1, 0x2A
movs r2, 0
bl GetMonData
movs r1, 0x1F
ands r1, r0
lsls r1, 15
ldr r0, [r7, 0x14]
ldr r2, _080413B0 @ =0xfff07fff
ands r0, r2
orrs r0, r1
str r0, [r7, 0x14]
adds r0, r4, 0
movs r1, 0x2B
movs r2, 0
bl GetMonData
mov r3, r8
ands r0, r3
lsls r0, 4
ldrh r2, [r7, 0x16]
ldr r1, _080413B4 @ =0xfffffe0f
ands r1, r2
orrs r1, r0
strh r1, [r7, 0x16]
adds r0, r4, 0
movs r1, 0x2C
movs r2, 0
bl GetMonData
ands r0, r6
lsls r0, 1
ldrb r2, [r7, 0x17]
movs r1, 0x3F
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x17]
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl GetMonData
mov r1, r10
adds r1, 0x3C
adds r1, r5, r1
str r0, [r1]
adds r0, r4, 0
movs r1, 0x37
movs r2, 0
bl GetMonData
mov r1, r10
adds r1, 0x40
adds r1, r5, r1
str r0, [r1]
adds r0, r4, 0
movs r1, 0x38
movs r2, 0
bl GetMonData
adds r1, r7, 0
adds r1, 0x2A
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x39
movs r2, 0
bl GetMonData
strh r0, [r7, 0x28]
adds r0, r4, 0
movs r1, 0x3A
movs r2, 0
bl GetMonData
strh r0, [r7, 0x2C]
adds r0, r4, 0
movs r1, 0x3B
movs r2, 0
bl GetMonData
strh r0, [r7, 0x2]
adds r0, r4, 0
movs r1, 0x3C
movs r2, 0
bl GetMonData
strh r0, [r7, 0x4]
adds r0, r4, 0
movs r1, 0x3D
movs r2, 0
bl GetMonData
strh r0, [r7, 0x6]
adds r0, r4, 0
movs r1, 0x3E
movs r2, 0
bl GetMonData
strh r0, [r7, 0x8]
adds r0, r4, 0
movs r1, 0x3F
movs r2, 0
bl GetMonData
strh r0, [r7, 0xA]
adds r0, r4, 0
movs r1, 0x2D
movs r2, 0
bl GetMonData
movs r1, 0x1
ands r0, r1
lsls r0, 6
ldrb r2, [r7, 0x17]
movs r1, 0x41
negs r1, r1
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x17]
adds r0, r4, 0
movs r1, 0x2E
movs r2, 0
bl GetMonData
lsls r0, 7
ldrb r2, [r7, 0x17]
movs r1, 0x7F
ands r1, r2
orrs r1, r0
strb r1, [r7, 0x17]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
bl GetMonData
mov r1, r10
adds r1, 0x48
adds r1, r5, r1
str r0, [r1]
ldr r2, _080413B8 @ =gBaseStats
ldrh r1, [r7]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x6]
adds r1, r7, 0
adds r1, 0x21
strb r0, [r1]
ldrh r1, [r7]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r2
ldrb r0, [r0, 0x7]
adds r1, r7, 0
adds r1, 0x22
strb r0, [r1]
ldrh r0, [r7]
ldrb r1, [r7, 0x17]
lsrs r1, 7
bl GetAbilityBySpecies
adds r1, r7, 0
adds r1, 0x20
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x2
mov r2, sp
bl GetMonData
mov r0, r10
adds r0, 0x24
adds r0, r5, r0
mov r1, sp
bl StringCopy10
mov r2, r10
adds r2, 0x30
adds r2, r5, r2
adds r0, r4, 0
movs r1, 0x7
bl GetMonData
ldr r0, [sp, 0x14]
bl GetBankSide
ldr r1, _080413BC @ =gBattleStruct
lsls r0, 24
lsrs r0, 23
adds r0, 0xA8
ldr r1, [r1]
adds r1, r0
ldrh r0, [r7, 0x28]
strh r0, [r1]
movs r2, 0x6
mov r1, r9
movs r6, 0x7
add r5, r10
adds r0, r5, 0
adds r0, 0x13
_0804136E:
strb r2, [r0]
subs r0, 0x1
subs r6, 0x1
cmp r6, 0
bge _0804136E
movs r2, 0
movs r0, 0x58
ldr r3, [sp, 0x14]
muls r0, r3
adds r1, 0x50
adds r0, r1
str r2, [r0]
ldr r0, [sp, 0x14]
bl sub_80174B8
ldr r0, [sp, 0x14]
movs r1, 0
bl ClearTemporarySpeciesSpriteData
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080413A4: .4byte gPlayerParty
_080413A8: .4byte gBattleMons
_080413AC: .4byte 0xfffffc1f
_080413B0: .4byte 0xfff07fff
_080413B4: .4byte 0xfffffe0f
_080413B8: .4byte gBaseStats
_080413BC: .4byte gBattleStruct
thumb_func_end CopyPlayerPartyMonToBattleData
.align 2, 0 @ Don't pad with nop.