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

5694 lines
90 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_80423A4
sub_80423A4: @ 80423A4
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
adds r4, r2, 0
lsls r3, 24
lsrs r6, r3, 24
movs r1, 0x37
movs r2, 0
bl GetMonData
adds r1, r0, 0
str r1, [sp]
ands r0, r4
cmp r0, 0
beq _08042408
mvns r4, r4
ands r1, r4
str r1, [sp]
adds r0, r5, 0
movs r1, 0x37
mov r2, sp
bl sub_804037C
ldr r0, _080423FC @ =gMain
ldr r1, _08042400 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080423F6
cmp r6, 0x4
beq _080423F6
ldr r0, _08042404 @ =gBattleMons
movs r1, 0x58
muls r1, r6
adds r0, 0x4C
adds r1, r0
ldr r0, [r1]
ands r0, r4
str r0, [r1]
_080423F6:
movs r0, 0
b _0804240A
.align 2, 0
_080423FC: .4byte gMain
_08042400: .4byte 0x00000439
_08042404: .4byte gBattleMons
_08042408:
movs r0, 0x1
_0804240A:
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_80423A4
thumb_func_start sub_8042414
sub_8042414: @ 8042414
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x20
mov r8, r0
lsls r1, 16
lsrs r1, 16
str r1, [sp]
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x4]
lsls r3, 24
lsrs r3, 24
str r3, [sp, 0x8]
movs r0, 0x1
str r0, [sp, 0x10]
movs r1, 0x6
mov r10, r1
movs r2, 0
str r2, [sp, 0x18]
movs r0, 0x4
str r0, [sp, 0x1C]
mov r0, r8
movs r1, 0xC
bl GetMonData
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
beq _08042458
bl ItemId_GetHoldEffect
_08042458:
ldr r1, _080424B0 @ =gUnknown_2023D6F
ldr r0, _080424B4 @ =gUnknown_2024004
ldrb r2, [r0]
strb r2, [r1]
ldr r0, _080424B8 @ =gMain
ldr r1, _080424BC @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0
beq _080424F8
ldr r0, _080424C0 @ =gActiveBattler
strb r2, [r0]
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
lsrs r0, 24
negs r1, r0
orrs r1, r0
lsrs r1, 31
str r1, [sp, 0xC]
ldr r0, _080424C4 @ =gUnknown_2023BCC
ldr r4, [sp]
subs r4, 0xD
ldrb r0, [r0]
cmp r1, r0
bge _08042504
ldr r2, _080424C8 @ =gBattlerPartyIndexes
lsls r0, r1, 1
adds r0, r2
ldrh r3, [r0]
ldr r1, [sp, 0x4]
lsls r0, r1, 16
lsrs r1, r0, 16
adds r5, r0, 0
cmp r3, r1
bne _080424CC
ldr r2, [sp, 0xC]
str r2, [sp, 0x1C]
b _08042504
.align 2, 0
_080424B0: .4byte gUnknown_2023D6F
_080424B4: .4byte gUnknown_2024004
_080424B8: .4byte gMain
_080424BC: .4byte 0x00000439
_080424C0: .4byte gActiveBattler
_080424C4: .4byte gUnknown_2023BCC
_080424C8: .4byte gBattlerPartyIndexes
_080424CC:
ldr r0, [sp, 0xC]
adds r0, 0x2
str r0, [sp, 0xC]
ldr r0, _080424F4 @ =gUnknown_2023BCC
ldr r1, [sp, 0xC]
ldrb r0, [r0]
cmp r1, r0
bge _08042504
lsls r0, r1, 1
adds r0, r2
ldrh r1, [r0]
lsrs r0, r5, 16
cmp r1, r0
bne _080424CC
ldr r2, [sp, 0xC]
lsls r0, r2, 24
lsrs r0, 24
str r0, [sp, 0x1C]
b _08042504
.align 2, 0
_080424F4: .4byte gUnknown_2023BCC
_080424F8:
ldr r0, _08042520 @ =gActiveBattler
strb r1, [r0]
movs r0, 0x4
str r0, [sp, 0x1C]
ldr r4, [sp]
subs r4, 0xD
_08042504:
lsls r0, r4, 16
lsrs r0, 16
cmp r0, 0xA5
bhi _08042578
ldr r1, _08042524 @ =gUnknown_82528BC
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08042528
ldr r1, [sp]
cmp r1, 0xAF
beq _0804252E
b _08042578
.align 2, 0
_08042520: .4byte gActiveBattler
_08042524: .4byte gUnknown_82528BC
_08042528:
ldr r2, [sp]
cmp r2, 0xAF
bne _0804257C
_0804252E:
ldr r0, _08042550 @ =gMain
ldr r1, _08042554 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08042560
ldr r0, _08042558 @ =gActiveBattler
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
ldr r1, _0804255C @ =gUnknown_2023F5C
adds r0, r1
b _0804257C
.align 2, 0
_08042550: .4byte gMain
_08042554: .4byte 0x00000439
_08042558: .4byte gActiveBattler
_0804255C: .4byte gUnknown_2023F5C
_08042560:
ldr r0, _0804256C @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, _08042570 @ =0x00003108
adds r2, r0, r2
str r2, [sp, 0x14]
b _0804257E
.align 2, 0
_0804256C: .4byte gSaveBlock1Ptr
_08042570: .4byte 0x00003108
_08042574:
movs r0, 0
b _08042BD8
_08042578:
movs r0, 0x1
b _08042BD8
_0804257C:
str r0, [sp, 0x14]
_0804257E:
movs r0, 0
str r0, [sp, 0xC]
_08042582:
ldr r1, [sp, 0xC]
cmp r1, 0x5
bls _0804258A
b _08042BCA
_0804258A:
lsls r0, r1, 2
ldr r1, _08042594 @ =_08042598
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042594: .4byte _08042598
.align 2, 0
_08042598:
.4byte _080425B0
.4byte _0804264C
.4byte _080426A8
.4byte _08042708
.4byte _08042850
.4byte _08042A6A
_080425B0:
ldr r0, [sp, 0x14]
ldr r1, [sp, 0xC]
adds r2, r0, r1
ldrb r1, [r2]
movs r0, 0x80
ands r0, r1
adds r5, r2, 0
cmp r0, 0
beq _080425F4
ldr r0, _0804263C @ =gMain
ldr r2, _08042640 @ =0x00000439
adds r0, r2
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080425F4
ldr r0, [sp, 0x1C]
cmp r0, 0x4
beq _080425F4
ldr r1, _08042644 @ =gBattleMons
movs r0, 0x58
ldr r2, [sp, 0x1C]
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0xF0
lsls r1, 12
ands r0, r1
cmp r0, 0
beq _080425F4
movs r0, 0
str r0, [sp, 0x10]
_080425F4:
ldrb r1, [r5]
movs r0, 0x30
ands r0, r1
cmp r0, 0
beq _0804261C
ldr r1, _08042644 @ =gBattleMons
ldr r0, _08042648 @ =gActiveBattler
ldrb r2, [r0]
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x80
lsls r1, 13
ands r0, r1
cmp r0, 0
bne _0804261C
movs r1, 0
str r1, [sp, 0x10]
_0804261C:
ldrb r1, [r5]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _08042628
b _08042BCA
_08042628:
ldr r2, _08042644 @ =gBattleMons
ldr r0, _08042648 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrb r0, [r0, 0x19]
lsls r0, 24
asrs r0, 24
b _080426F2
.align 2, 0
_0804263C: .4byte gMain
_08042640: .4byte 0x00000439
_08042644: .4byte gBattleMons
_08042648: .4byte gActiveBattler
_0804264C:
ldr r0, [sp, 0x14]
ldr r1, [sp, 0xC]
adds r2, r0, r1
ldrb r1, [r2]
movs r0, 0xF0
ands r0, r1
adds r5, r2, 0
cmp r0, 0
beq _08042678
ldr r2, _080426A0 @ =gBattleMons
ldr r0, _080426A4 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrb r0, [r0, 0x1A]
lsls r0, 24
asrs r0, 24
cmp r0, 0xB
bgt _08042678
movs r2, 0
str r2, [sp, 0x10]
_08042678:
ldrb r1, [r5]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _08042684
b _08042BCA
_08042684:
ldr r2, _080426A0 @ =gBattleMons
ldr r0, _080426A4 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrb r0, [r0, 0x1B]
lsls r0, 24
asrs r0, 24
cmp r0, 0xB
ble _0804269C
b _08042BCA
_0804269C:
b _08042832
.align 2, 0
_080426A0: .4byte gBattleMons
_080426A4: .4byte gActiveBattler
_080426A8:
ldr r1, [sp, 0x14]
ldr r0, [sp, 0xC]
adds r2, r1, r0
ldrb r1, [r2]
movs r0, 0xF0
ands r0, r1
adds r5, r2, 0
cmp r0, 0
beq _080426D4
ldr r2, _08042700 @ =gBattleMons
ldr r0, _08042704 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrb r0, [r0, 0x1E]
lsls r0, 24
asrs r0, 24
cmp r0, 0xB
bgt _080426D4
movs r1, 0
str r1, [sp, 0x10]
_080426D4:
ldrb r1, [r5]
movs r0, 0xF
ands r0, r1
cmp r0, 0
bne _080426E0
b _08042BCA
_080426E0:
ldr r2, _08042700 @ =gBattleMons
ldr r0, _08042704 @ =gActiveBattler
ldrb r1, [r0]
movs r0, 0x58
muls r0, r1
adds r0, r2
ldrb r0, [r0, 0x1C]
lsls r0, 24
asrs r0, 24
_080426F2:
cmp r0, 0xB
ble _080426F8
b _08042BCA
_080426F8:
movs r2, 0
str r2, [sp, 0x10]
b _08042BCA
.align 2, 0
_08042700: .4byte gBattleMons
_08042704: .4byte gActiveBattler
_08042708:
ldr r0, [sp, 0x14]
ldr r1, [sp, 0xC]
adds r2, r0, r1
ldrb r1, [r2]
movs r0, 0x80
ands r0, r1
adds r5, r2, 0
cmp r0, 0
beq _0804273A
ldr r4, _08042838 @ =gUnknown_2023DE4
ldr r0, _0804283C @ =gActiveBattler
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
adds r1, r4
ldrb r0, [r1, 0x4]
cmp r0, 0
bne _0804273A
movs r2, 0
str r2, [sp, 0x10]
_0804273A:
ldrb r1, [r5]
movs r0, 0x40
ands r0, r1
cmp r0, 0
beq _08042756
mov r0, r8
movs r1, 0x38
movs r2, 0
bl GetMonData
cmp r0, 0x64
beq _08042756
movs r0, 0
str r0, [sp, 0x10]
_08042756:
ldrb r1, [r5]
movs r0, 0x20
ands r0, r1
cmp r0, 0
beq _08042776
mov r0, r8
ldr r1, [sp, 0x4]
movs r2, 0x7
ldr r3, [sp, 0x1C]
bl sub_8042BE8
lsls r0, 24
cmp r0, 0
beq _08042776
movs r1, 0
str r1, [sp, 0x10]
_08042776:
ldrb r1, [r5]
movs r0, 0x10
ands r0, r1
cmp r0, 0
beq _08042796
ldr r2, _08042840 @ =0x00000f88
mov r0, r8
ldr r1, [sp, 0x4]
ldr r3, [sp, 0x1C]
bl sub_8042BE8
lsls r0, 24
cmp r0, 0
beq _08042796
movs r2, 0
str r2, [sp, 0x10]
_08042796:
ldrb r1, [r5]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _080427B6
mov r0, r8
ldr r1, [sp, 0x4]
movs r2, 0x10
ldr r3, [sp, 0x1C]
bl sub_8042BE8
lsls r0, 24
cmp r0, 0
beq _080427B6
movs r0, 0
str r0, [sp, 0x10]
_080427B6:
ldrb r1, [r5]
movs r0, 0x4
ands r0, r1
cmp r0, 0
beq _080427D6
mov r0, r8
ldr r1, [sp, 0x4]
movs r2, 0x20
ldr r3, [sp, 0x1C]
bl sub_8042BE8
lsls r0, 24
cmp r0, 0
beq _080427D6
movs r1, 0
str r1, [sp, 0x10]
_080427D6:
ldrb r1, [r5]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080427F6
mov r0, r8
ldr r1, [sp, 0x4]
movs r2, 0x40
ldr r3, [sp, 0x1C]
bl sub_8042BE8
lsls r0, 24
cmp r0, 0
beq _080427F6
movs r2, 0
str r2, [sp, 0x10]
_080427F6:
ldrb r1, [r5]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _08042802
b _08042BCA
_08042802:
ldr r0, _08042844 @ =gMain
ldr r1, _08042848 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
bne _08042814
b _08042BCA
_08042814:
ldr r2, [sp, 0x1C]
cmp r2, 0x4
bne _0804281C
b _08042BCA
_0804281C:
ldr r1, _0804284C @ =gBattleMons
movs r0, 0x58
muls r0, r2
adds r1, 0x50
adds r0, r1
ldr r0, [r0]
movs r1, 0x7
ands r0, r1
cmp r0, 0
bne _08042832
b _08042BCA
_08042832:
movs r0, 0
str r0, [sp, 0x10]
b _08042BCA
.align 2, 0
_08042838: .4byte gUnknown_2023DE4
_0804283C: .4byte gActiveBattler
_08042840: .4byte 0x00000f88
_08042844: .4byte gMain
_08042848: .4byte 0x00000439
_0804284C: .4byte gBattleMons
_08042850:
ldr r1, [sp, 0x14]
ldr r2, [sp, 0xC]
adds r0, r1, r2
ldrb r7, [r0]
movs r0, 0x20
ands r0, r7
cmp r0, 0
beq _080428B6
movs r0, 0xDF
ands r7, r0
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r5, r0, 0
ldr r0, _080428DC @ =gUnknown_825DEA1
ldr r1, [sp, 0x8]
adds r0, r1, r0
ldrb r0, [r0]
ands r5, r0
lsls r0, r1, 1
lsrs r5, r0
adds r1, 0xD
mov r0, r8
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
ldr r2, [sp, 0x8]
bl CalculatePPWithBonus
lsls r0, 24
lsrs r0, 24
cmp r5, 0x2
bhi _080428B6
cmp r0, 0x4
bls _080428B6
movs r2, 0
str r2, [sp, 0x10]
_080428B6:
movs r0, 0
mov r9, r0
cmp r7, 0
bne _080428C0
b _08042BCA
_080428C0:
movs r0, 0x1
ands r0, r7
cmp r0, 0
bne _080428CA
b _08042A5C
_080428CA:
mov r1, r9
cmp r1, 0x7
bls _080428D2
b _08042A5C
_080428D2:
lsls r0, r1, 2
ldr r1, _080428E0 @ =_080428E4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080428DC: .4byte gUnknown_825DEA1
_080428E0: .4byte _080428E4
.align 2, 0
_080428E4:
.4byte _08042904
.4byte _08042904
.4byte _08042934
.4byte _08042996
.4byte _08042A5C
.4byte _08042A5C
.4byte _08042A5C
.4byte _08042A4A
_08042904:
mov r0, r8
bl GetMonEVCount
lsls r0, 16
ldr r1, _0804292C @ =0x01fd0000
cmp r0, r1
bls _08042914
b _08042578
_08042914:
ldr r0, _08042930 @ =gUnknown_825DFEA
add r0, r9
ldrb r1, [r0]
mov r0, r8
movs r2, 0
bl GetMonData
adds r5, r0, 0
cmp r5, 0x63
bls _0804292A
b _08042A5C
_0804292A:
b _08042A3A
.align 2, 0
_0804292C: .4byte 0x01fd0000
_08042930: .4byte gUnknown_825DFEA
_08042934:
movs r0, 0x10
ands r0, r7
cmp r0, 0
beq _08042952
mov r0, r8
movs r1, 0x39
movs r2, 0
bl GetMonData
cmp r0, 0
beq _08042968
mov r0, r10
adds r0, 0x1
lsls r0, 24
b _080429F4
_08042952:
mov r0, r8
movs r1, 0x39
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08042968
mov r0, r10
adds r0, 0x1
lsls r0, 24
b _080429F4
_08042968:
mov r0, r8
movs r1, 0x3A
movs r2, 0
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x39
movs r2, 0
bl GetMonData
cmp r4, r0
beq _08042986
movs r0, 0
str r0, [sp, 0x10]
_08042986:
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r0, 0xEF
ands r7, r0
b _08042A5C
_08042996:
movs r0, 0x2
ands r0, r7
cmp r0, 0
bne _080429FA
movs r6, 0
movs r1, 0x1
add r10, r1
_080429A4:
adds r1, r6, 0
adds r1, 0x11
mov r0, r8
movs r2, 0
bl GetMonData
adds r5, r0, 0
adds r1, r6, 0
adds r1, 0xD
mov r0, r8
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r2, r6, 24
lsrs r2, 24
adds r0, r4, 0
bl CalculatePPWithBonus
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _080429EA
movs r2, 0
str r2, [sp, 0x10]
_080429EA:
adds r6, 0x1
cmp r6, 0x3
ble _080429A4
mov r1, r10
lsls r0, r1, 24
_080429F4:
lsrs r0, 24
mov r10, r0
b _08042A5C
_080429FA:
ldr r1, [sp, 0x8]
adds r1, 0x11
mov r0, r8
movs r2, 0
bl GetMonData
adds r5, r0, 0
ldr r1, [sp, 0x8]
adds r1, 0xD
mov r0, r8
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
ldr r2, [sp, 0x8]
bl CalculatePPWithBonus
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08042A5C
_08042A3A:
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
movs r2, 0
str r2, [sp, 0x10]
b _08042A5C
_08042A4A:
mov r0, r8
movs r1, 0x2
ldr r2, [sp]
bl sub_8042EC4
lsls r0, 16
cmp r0, 0
beq _08042A5C
b _08042574
_08042A5C:
movs r0, 0x1
add r9, r0
lsrs r7, 1
cmp r7, 0
beq _08042A68
b _080428C0
_08042A68:
b _08042BCA
_08042A6A:
ldr r1, [sp, 0x14]
ldr r2, [sp, 0xC]
adds r0, r1, r2
ldrb r7, [r0]
movs r0, 0
mov r9, r0
cmp r7, 0
bne _08042A7C
b _08042BCA
_08042A7C:
movs r0, 0x1
ands r0, r7
cmp r0, 0
bne _08042A86
b _08042BBE
_08042A86:
mov r1, r9
cmp r1, 0x7
bls _08042A8E
b _08042BBE
_08042A8E:
lsls r0, r1, 2
ldr r1, _08042A98 @ =_08042A9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042A98: .4byte _08042A9C
.align 2, 0
_08042A9C:
.4byte _08042ABC
.4byte _08042ABC
.4byte _08042ABC
.4byte _08042ABC
.4byte _08042AF4
.4byte _08042B4C
.4byte _08042B68
.4byte _08042B92
_08042ABC:
mov r0, r8
bl GetMonEVCount
lsls r0, 16
ldr r1, _08042AEC @ =0x01fd0000
cmp r0, r1
bls _08042ACC
b _08042578
_08042ACC:
ldr r0, _08042AF0 @ =gUnknown_825DFEA
mov r1, r9
adds r1, 0x2
adds r1, r0
ldrb r1, [r1]
mov r0, r8
movs r2, 0
bl GetMonData
adds r5, r0, 0
cmp r5, 0x63
bhi _08042BBE
movs r2, 0
str r2, [sp, 0x10]
b _08042BB4
.align 2, 0
_08042AEC: .4byte 0x01fd0000
_08042AF0: .4byte gUnknown_825DFEA
_08042AF4:
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r5, r0, 0
ldr r0, _08042B48 @ =gUnknown_825DEA1
ldr r1, [sp, 0x8]
adds r0, r1, r0
ldrb r0, [r0]
ands r5, r0
lsls r0, r1, 1
lsrs r5, r0
adds r1, 0xD
mov r0, r8
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
mov r0, r8
movs r1, 0x15
movs r2, 0
bl GetMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
ldr r2, [sp, 0x8]
bl CalculatePPWithBonus
lsls r0, 24
lsrs r6, r0, 24
cmp r5, 0x2
bhi _08042BBE
cmp r6, 0x4
ble _08042BBE
movs r2, 0
str r2, [sp, 0x10]
b _08042BBE
.align 2, 0
_08042B48: .4byte gUnknown_825DEA1
_08042B4C:
mov r0, r8
movs r1, 0x20
movs r2, 0
bl GetMonData
cmp r0, 0x63
bhi _08042BB4
ldr r0, [sp, 0x10]
cmp r0, 0
bne _08042BB4
ldr r1, [sp, 0x18]
cmp r1, 0
bne _08042BB4
b _08042BAC
_08042B68:
mov r0, r8
movs r1, 0x20
movs r2, 0
bl GetMonData
cmp r0, 0x63
bls _08042BB4
mov r0, r8
movs r1, 0x20
movs r2, 0
bl GetMonData
cmp r0, 0xC7
bhi _08042BB4
ldr r2, [sp, 0x10]
cmp r2, 0
bne _08042BB4
ldr r0, [sp, 0x18]
cmp r0, 0
bne _08042BB4
b _08042BAC
_08042B92:
mov r0, r8
movs r1, 0x20
movs r2, 0
bl GetMonData
cmp r0, 0xC7
bls _08042BB4
ldr r1, [sp, 0x10]
cmp r1, 0
bne _08042BB4
ldr r2, [sp, 0x18]
cmp r2, 0
bne _08042BB4
_08042BAC:
ldr r0, [sp, 0x14]
add r0, r10
ldrb r0, [r0]
str r0, [sp, 0x18]
_08042BB4:
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
_08042BBE:
movs r0, 0x1
add r9, r0
lsrs r7, 1
cmp r7, 0
beq _08042BCA
b _08042A7C
_08042BCA:
ldr r1, [sp, 0xC]
adds r1, 0x1
str r1, [sp, 0xC]
cmp r1, 0x5
bgt _08042BD6
b _08042582
_08042BD6:
ldr r0, [sp, 0x10]
_08042BD8:
add sp, 0x20
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8042414
thumb_func_start sub_8042BE8
sub_8042BE8: @ 8042BE8
push {r4,lr}
adds r4, r2, 0
movs r1, 0x37
movs r2, 0
bl GetMonData
ands r0, r4
cmp r0, 0
bne _08042BFE
movs r0, 0
b _08042C00
_08042BFE:
movs r0, 0x1
_08042C00:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8042BE8
thumb_func_start GetItemEffectParamOffset
GetItemEffectParamOffset: @ 8042C08
push {r4-r7,lr}
lsls r0, 16
lsrs r3, r0, 16
lsls r1, 24
lsrs r4, r1, 24
lsls r2, 24
lsrs r5, r2, 24
movs r7, 0x6
ldr r1, _08042C30 @ =gUnknown_82528BC
adds r0, r3, 0
subs r0, 0xD
lsls r0, 2
adds r0, r1
ldr r0, [r0]
cmp r0, 0
bne _08042C34
cmp r3, 0xAF
beq _08042C38
_08042C2C:
movs r0, 0
b _08042D48
.align 2, 0
_08042C30: .4byte gUnknown_82528BC
_08042C34:
cmp r3, 0xAF
bne _08042C46
_08042C38:
ldr r0, _08042C58 @ =gActiveBattler
ldrb r1, [r0]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
ldr r1, _08042C5C @ =gUnknown_2023F5C
adds r0, r1
_08042C46:
mov r12, r0
movs r2, 0
_08042C4A:
cmp r2, 0x4
beq _08042C6A
cmp r2, 0x4
ble _08042C60
cmp r2, 0x5
beq _08042CF4
b _08042D3E
.align 2, 0
_08042C58: .4byte gActiveBattler
_08042C5C: .4byte gUnknown_2023F5C
_08042C60:
cmp r2, 0
blt _08042D3E
cmp r2, r4
bne _08042D3E
b _08042C2C
_08042C6A:
mov r0, r12
ldrb r3, [r0, 0x4]
movs r0, 0x20
ands r0, r3
cmp r0, 0
beq _08042C7A
movs r0, 0xDF
ands r3, r0
_08042C7A:
movs r6, 0
cmp r3, 0
beq _08042D3E
_08042C80:
movs r0, 0x1
ands r0, r3
cmp r0, 0
beq _08042CE0
cmp r6, 0x7
bhi _08042CE0
lsls r0, r6, 2
ldr r1, _08042C98 @ =_08042C9C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042C98: .4byte _08042C9C
.align 2, 0
_08042C9C:
.4byte _08042CC8
.4byte _08042CC8
.4byte _08042CBC
.4byte _08042CC8
.4byte _08042CE0
.4byte _08042CE0
.4byte _08042CE0
.4byte _08042CDC
_08042CBC:
movs r0, 0x10
ands r0, r3
cmp r0, 0
beq _08042CC8
movs r0, 0xEF
ands r3, r0
_08042CC8:
cmp r2, r4
bne _08042CD4
adds r0, r3, 0
ands r0, r5
cmp r0, 0
bne _08042D46
_08042CD4:
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
b _08042CE0
_08042CDC:
cmp r2, r4
beq _08042C2C
_08042CE0:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
lsrs r3, 1
cmp r2, r4
bne _08042CEE
lsrs r5, 1
_08042CEE:
cmp r3, 0
bne _08042C80
b _08042D3E
_08042CF4:
mov r0, r12
ldrb r3, [r0, 0x5]
movs r6, 0
_08042CFA:
cmp r3, 0
beq _08042D3E
movs r0, 0x1
ands r0, r3
cmp r0, 0
beq _08042D2E
cmp r6, 0
blt _08042D2E
cmp r6, 0x6
ble _08042D14
cmp r6, 0x7
beq _08042D28
b _08042D2E
_08042D14:
cmp r2, r4
bne _08042D20
adds r0, r3, 0
ands r0, r5
cmp r0, 0
bne _08042D46
_08042D20:
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
b _08042D2E
_08042D28:
cmp r2, r4
bne _08042D2E
b _08042C2C
_08042D2E:
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
lsrs r3, 1
cmp r2, r4
bne _08042CFA
lsrs r5, 1
b _08042CFA
_08042D3E:
adds r2, 0x1
cmp r2, 0x5
bgt _08042D46
b _08042C4A
_08042D46:
adds r0, r7, 0
_08042D48:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GetItemEffectParamOffset
thumb_func_start sub_8042D50
sub_8042D50: @ 8042D50
push {lr}
ldr r2, _08042D84 @ =gBattlerTarget
ldr r1, _08042D88 @ =gUnknown_2024004
ldrb r1, [r1]
strb r1, [r2]
ldr r3, _08042D8C @ =gUnknown_2022AB8
ldr r2, _08042D90 @ =gUnknown_83FD5D0
ldr r1, _08042D94 @ =gUnknown_825DFF0
adds r0, r1
ldrb r0, [r0]
lsls r0, 2
adds r0, r2
ldr r1, [r0]
adds r0, r3, 0
bl StringCopy
ldr r0, _08042D98 @ =gUnknown_2022AC8
ldr r1, _08042D9C @ =gUnknown_83FCB4A
bl StringCopy
ldr r0, _08042DA0 @ =gUnknown_83FCB6A
bl BattleStringExpandPlaceholdersToDisplayedString
pop {r0}
bx r0
.align 2, 0
_08042D84: .4byte gBattlerTarget
_08042D88: .4byte gUnknown_2024004
_08042D8C: .4byte gUnknown_2022AB8
_08042D90: .4byte gUnknown_83FD5D0
_08042D94: .4byte gUnknown_825DFF0
_08042D98: .4byte gUnknown_2022AC8
_08042D9C: .4byte gUnknown_83FCB4A
_08042DA0: .4byte gUnknown_83FCB6A
thumb_func_end sub_8042D50
thumb_func_start sub_8042DA4
sub_8042DA4: @ 8042DA4
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _08042DF8
ldr r0, _08042DD4 @ =gMain
ldr r1, _08042DD8 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08042DE4
ldr r2, _08042DDC @ =gUnknown_2024004
ldrb r1, [r2]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
ldr r1, _08042DE0 @ =gUnknown_2023F5C
adds r7, r0, r1
b _08042E04
.align 2, 0
_08042DD4: .4byte gMain
_08042DD8: .4byte 0x00000439
_08042DDC: .4byte gUnknown_2024004
_08042DE0: .4byte gUnknown_2023F5C
_08042DE4:
ldr r0, _08042DF0 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08042DF4 @ =0x00003108
adds r7, r0, r1
b _08042E02
.align 2, 0
_08042DF0: .4byte gSaveBlock1Ptr
_08042DF4: .4byte 0x00003108
_08042DF8:
ldr r1, _08042E3C @ =gUnknown_82528BC
subs r0, 0xD
lsls r0, 2
adds r0, r1
ldr r7, [r0]
_08042E02:
ldr r2, _08042E40 @ =gUnknown_2024004
_08042E04:
ldr r1, _08042E44 @ =gUnknown_2023D6F
ldrb r0, [r2]
strb r0, [r1]
movs r5, 0
ldr r0, _08042E48 @ =sBattler_AI
mov r8, r0
movs r6, 0
_08042E12:
adds r4, r7, r5
ldrb r1, [r4]
movs r0, 0xF
ands r0, r1
cmp r0, 0
beq _08042E24
adds r0, r6, 0
bl sub_8042D50
_08042E24:
ldrb r1, [r4]
movs r0, 0xF0
ands r0, r1
cmp r0, 0
beq _08042E5A
cmp r5, 0
beq _08042E4C
adds r0, r6, 0x1
bl sub_8042D50
b _08042E5A
.align 2, 0
_08042E3C: .4byte gUnknown_82528BC
_08042E40: .4byte gUnknown_2024004
_08042E44: .4byte gUnknown_2023D6F
_08042E48: .4byte sBattler_AI
_08042E4C:
ldr r0, _08042E88 @ =gUnknown_2024004
ldrb r0, [r0]
mov r1, r8
strb r0, [r1]
ldr r0, _08042E8C @ =gUnknown_83FBBE9
bl BattleStringExpandPlaceholdersToDisplayedString
_08042E5A:
adds r6, 0x2
adds r5, 0x1
cmp r5, 0x2
ble _08042E12
ldrb r1, [r7, 0x3]
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _08042E7A
ldr r1, _08042E90 @ =sBattler_AI
ldr r0, _08042E88 @ =gUnknown_2024004
ldrb r0, [r0]
strb r0, [r1]
ldr r0, _08042E94 @ =gUnknown_83FBBB4
bl BattleStringExpandPlaceholdersToDisplayedString
_08042E7A:
ldr r0, _08042E98 @ =gUnknown_202298C
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08042E88: .4byte gUnknown_2024004
_08042E8C: .4byte gUnknown_83FBBE9
_08042E90: .4byte sBattler_AI
_08042E94: .4byte gUnknown_83FBBB4
_08042E98: .4byte gUnknown_202298C
thumb_func_end sub_8042DA4
thumb_func_start GetNature
GetNature: @ 8042E9C
push {lr}
movs r1, 0
movs r2, 0
bl GetMonData
movs r1, 0x19
bl __umodsi3
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end GetNature
thumb_func_start GetNatureFromPersonality
GetNatureFromPersonality: @ 8042EB4
push {lr}
movs r1, 0x19
bl __umodsi3
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
thumb_func_end GetNatureFromPersonality
thumb_func_start sub_8042EC4
sub_8042EC4: @ 8042EC4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x14
mov r8, r0
lsls r1, 24
lsrs r5, r1, 24
lsls r2, 16
lsrs r2, 16
mov r9, r2
movs r0, 0
mov r10, r0
mov r0, r8
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
mov r0, r8
movs r1, 0xC
movs r2, 0
bl GetMonData
mov r1, sp
strh r0, [r1]
mov r0, r8
movs r1, 0
movs r2, 0
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x17
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0xC]
lsrs r4, 16
str r4, [sp, 0x10]
mov r0, sp
ldrh r0, [r0]
cmp r0, 0xAF
bne _08042F38
ldr r0, _08042F30 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08042F34 @ =0x0000311a
adds r0, r1
ldrb r0, [r0]
b _08042F40
.align 2, 0
_08042F30: .4byte gSaveBlock1Ptr
_08042F34: .4byte 0x0000311a
_08042F38:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r0, 24
_08042F40:
cmp r0, 0x26
bne _08042F4C
cmp r5, 0x3
beq _08042F4C
movs r0, 0
b _080431A4
_08042F4C:
cmp r5, 0x1
bne _08042F52
b _0804311E
_08042F52:
cmp r5, 0x1
bgt _08042F5C
cmp r5, 0
beq _08042F70
b _080431A2
_08042F5C:
cmp r5, 0x3
ble _08042F62
b _080431A2
_08042F62:
movs r2, 0
str r2, [sp, 0x4]
ldr r3, _08042F6C @ =gUnknown_8259754
lsls r6, r7, 2
b _08043182
.align 2, 0
_08042F6C: .4byte gUnknown_8259754
_08042F70:
mov r0, r8
movs r1, 0x38
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
mov r9, r0
mov r0, r8
movs r1, 0x20
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r0, 16
str r0, [sp, 0x8]
movs r0, 0
str r0, [sp, 0x4]
lsls r6, r7, 2
_08042F96:
ldr r1, _08042FBC @ =gUnknown_8259754
ldr r0, [sp, 0x4]
lsls r2, r0, 3
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r0, r1
ldrh r0, [r0]
subs r0, 0x1
adds r3, r1, 0
cmp r0, 0xE
bls _08042FB0
b _08043110
_08042FB0:
lsls r0, 2
ldr r1, _08042FC0 @ =_08042FC4
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042FBC: .4byte gUnknown_8259754
_08042FC0: .4byte _08042FC4
.align 2, 0
_08042FC4:
.4byte _08043000
.4byte _08043110
.4byte _08043110
.4byte _08043016
.4byte _08043110
.4byte _08043110
.4byte _08043110
.4byte _08043026
.4byte _08043050
.4byte _0804307A
.4byte _080430A8
.4byte _080430C8
.4byte _080430EC
.4byte _08043110
.4byte _080430FC
_08043000:
ldr r1, [sp, 0x8]
cmp r1, 0xDB
bhi _08043008
b _08043110
_08043008:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r0, r3
ldrh r0, [r0, 0x4]
mov r10, r0
b _08043110
_08043016:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r1, r0, r3
ldrh r0, [r1, 0x2]
cmp r0, r9
bhi _08043110
b _0804310C
_08043026:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r5, r0, r3
ldrh r0, [r5, 0x2]
cmp r0, r9
bhi _08043110
mov r0, r8
movs r1, 0x3B
movs r2, 0
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x3C
movs r2, 0
bl GetMonData
cmp r4, r0
bls _08043110
b _080430A2
_08043050:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r5, r0, r3
ldrh r0, [r5, 0x2]
cmp r0, r9
bhi _08043110
mov r0, r8
movs r1, 0x3B
movs r2, 0
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x3C
movs r2, 0
bl GetMonData
cmp r4, r0
bne _08043110
b _080430A2
_0804307A:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r5, r0, r3
ldrh r0, [r5, 0x2]
cmp r0, r9
bhi _08043110
mov r0, r8
movs r1, 0x3B
movs r2, 0
bl GetMonData
adds r4, r0, 0
mov r0, r8
movs r1, 0x3C
movs r2, 0
bl GetMonData
cmp r4, r0
bcs _08043110
_080430A2:
ldrh r5, [r5, 0x4]
mov r10, r5
b _08043110
_080430A8:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r4, r0, r3
ldrh r0, [r4, 0x2]
cmp r0, r9
bhi _08043110
ldr r0, [sp, 0x10]
movs r1, 0xA
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, 0x4
bhi _08043110
b _080430E6
_080430C8:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r4, r0, r3
ldrh r0, [r4, 0x2]
cmp r0, r9
bhi _08043110
ldr r0, [sp, 0x10]
movs r1, 0xA
bl __umodsi3
lsls r0, 16
lsrs r0, 16
cmp r0, 0x4
bls _08043110
_080430E6:
ldrh r4, [r4, 0x4]
mov r10, r4
b _08043110
_080430EC:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r1, r0, r3
ldrh r0, [r1, 0x2]
cmp r0, r9
bhi _08043110
b _0804310C
_080430FC:
adds r0, r6, r7
lsls r0, 3
adds r0, r2, r0
adds r1, r0, r3
ldrh r0, [r1, 0x2]
ldr r2, [sp, 0xC]
cmp r0, r2
bhi _08043110
_0804310C:
ldrh r1, [r1, 0x4]
mov r10, r1
_08043110:
ldr r0, [sp, 0x4]
adds r0, 0x1
str r0, [sp, 0x4]
cmp r0, 0x4
bgt _0804311C
b _08042F96
_0804311C:
b _080431A2
_0804311E:
movs r1, 0
str r1, [sp, 0x4]
lsls r6, r7, 2
ldr r1, _08043138 @ =gUnknown_8259754
adds r0, r6, r7
lsls r0, 3
adds r4, r0, r1
_0804312C:
ldrh r0, [r4]
cmp r0, 0x5
beq _0804313C
cmp r0, 0x6
beq _08043142
b _0804316E
.align 2, 0
_08043138: .4byte gUnknown_8259754
_0804313C:
ldrh r2, [r4, 0x4]
mov r10, r2
b _0804316E
_08043142:
ldrh r1, [r4, 0x2]
mov r0, sp
ldrh r0, [r0]
cmp r1, r0
bne _0804316E
ldrh r0, [r4, 0x4]
mov r10, r0
bl sub_806E25C
cmp r0, 0
bne _0804315E
mov r1, r10
cmp r1, 0x97
bhi _0804316E
_0804315E:
movs r1, 0
mov r0, sp
strh r1, [r0]
mov r0, r8
movs r1, 0xC
mov r2, sp
bl sub_804037C
_0804316E:
adds r4, 0x8
ldr r2, [sp, 0x4]
adds r2, 0x1
str r2, [sp, 0x4]
cmp r2, 0x4
ble _0804312C
b _080431A2
_0804317C:
ldrh r1, [r1, 0x4]
mov r10, r1
b _080431A2
_08043182:
adds r0, r6, r7
ldr r1, [sp, 0x4]
adds r0, r1
lsls r0, 3
adds r1, r0, r3
ldrh r0, [r1]
cmp r0, 0x7
bne _08043198
ldrh r0, [r1, 0x2]
cmp r0, r9
beq _0804317C
_08043198:
ldr r2, [sp, 0x4]
adds r2, 0x1
str r2, [sp, 0x4]
cmp r2, 0x4
ble _08043182
_080431A2:
mov r0, r10
_080431A4:
add sp, 0x14
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8042EC4
thumb_func_start sub_80431B4
sub_80431B4: @ 80431B4
push {r4,lr}
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _080431F8
movs r1, 0
ldr r3, _080431F0 @ =gUnknown_8251CB8
ldrh r0, [r3]
cmp r0, r2
beq _080431E0
movs r4, 0xCD
lsls r4, 1
_080431CC:
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, r4
bhi _080431E0
lsls r0, r1, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r2
bne _080431CC
_080431E0:
ldr r0, _080431F4 @ =0x0000019b
cmp r1, r0
beq _080431F8
adds r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
b _080431FA
.align 2, 0
_080431F0: .4byte gUnknown_8251CB8
_080431F4: .4byte 0x0000019b
_080431F8:
movs r0, 0
_080431FA:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80431B4
thumb_func_start NationalPokedexNumToSpecies
NationalPokedexNumToSpecies: @ 8043200
push {r4,lr}
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _08043244
movs r1, 0
ldr r3, _0804323C @ =gUnknown_8251FEE
ldrh r0, [r3]
cmp r0, r2
beq _0804322C
movs r4, 0xCD
lsls r4, 1
_08043218:
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, r4
bhi _0804322C
lsls r0, r1, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r2
bne _08043218
_0804322C:
ldr r0, _08043240 @ =0x0000019b
cmp r1, r0
beq _08043244
adds r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
b _08043246
.align 2, 0
_0804323C: .4byte gUnknown_8251FEE
_08043240: .4byte 0x0000019b
_08043244:
movs r0, 0
_08043246:
pop {r4}
pop {r1}
bx r1
thumb_func_end NationalPokedexNumToSpecies
thumb_func_start sub_804324C
sub_804324C: @ 804324C
push {r4,lr}
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0
beq _08043290
movs r1, 0
ldr r3, _08043288 @ =gUnknown_8252324
ldrh r0, [r3]
cmp r0, r2
beq _08043278
movs r4, 0xCD
lsls r4, 1
_08043264:
adds r0, r1, 0x1
lsls r0, 16
lsrs r1, r0, 16
cmp r1, r4
bhi _08043278
lsls r0, r1, 1
adds r0, r3
ldrh r0, [r0]
cmp r0, r2
bne _08043264
_08043278:
ldr r0, _0804328C @ =0x0000019b
cmp r1, r0
beq _08043290
adds r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
b _08043292
.align 2, 0
_08043288: .4byte gUnknown_8252324
_0804328C: .4byte 0x0000019b
_08043290:
movs r0, 0
_08043292:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_804324C
thumb_func_start SpeciesToNationalPokedexNum
SpeciesToNationalPokedexNum: @ 8043298
push {lr}
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
beq _080432B4
ldr r0, _080432B0 @ =gUnknown_8251FEE
subs r1, 0x1
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
b _080432B6
.align 2, 0
_080432B0: .4byte gUnknown_8251FEE
_080432B4:
movs r0, 0
_080432B6:
pop {r1}
bx r1
thumb_func_end SpeciesToNationalPokedexNum
thumb_func_start SpeciesToHoennPokedexNum
SpeciesToHoennPokedexNum: @ 80432BC
push {lr}
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
beq _080432D8
ldr r0, _080432D4 @ =gUnknown_8251CB8
subs r1, 0x1
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
b _080432DA
.align 2, 0
_080432D4: .4byte gUnknown_8251CB8
_080432D8:
movs r0, 0
_080432DA:
pop {r1}
bx r1
thumb_func_end SpeciesToHoennPokedexNum
thumb_func_start HoennToNationalOrder
HoennToNationalOrder: @ 80432E0
push {lr}
lsls r0, 16
lsrs r1, r0, 16
cmp r1, 0
beq _080432FC
ldr r0, _080432F8 @ =gUnknown_8252324
subs r1, 0x1
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
b _080432FE
.align 2, 0
_080432F8: .4byte gUnknown_8252324
_080432FC:
movs r0, 0
_080432FE:
pop {r1}
bx r1
thumb_func_end HoennToNationalOrder
thumb_func_start SpeciesToCryId
SpeciesToCryId: @ 8043304
push {lr}
lsls r0, 16
lsrs r0, 16
adds r1, r0, 0
cmp r0, 0xFA
bls _08043332
ldr r0, _08043324 @ =0x00000113
cmp r1, r0
bls _08043330
ldr r0, _08043328 @ =gUnknown_82539D4
ldr r2, _0804332C @ =0xfffffeec
adds r1, r2
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
b _08043332
.align 2, 0
_08043324: .4byte 0x00000113
_08043328: .4byte gUnknown_82539D4
_0804332C: .4byte 0xfffffeec
_08043330:
movs r0, 0xC8
_08043332:
pop {r1}
bx r1
thumb_func_end SpeciesToCryId
thumb_func_start sub_8043338
sub_8043338: @ 8043338
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
adds r6, r1, 0
mov r10, r2
lsls r0, 16
movs r1, 0x9A
lsls r1, 17
cmp r0, r1
bne _08043446
ldr r0, _08043408 @ =gUnknown_202401C
ldr r1, [r0]
ldr r0, [r1, 0x4]
cmp r10, r0
beq _08043446
ldr r0, [r1, 0xC]
cmp r10, r0
beq _08043446
movs r5, 0
_08043364:
lsls r3, r5, 3
adds r3, r5
lsls r3, 2
ldr r0, _0804340C @ =gUnknown_825265C
adds r4, r3, r0
ldrb r1, [r4]
adds r1, 0xF8
movs r2, 0xF
adds r0, r6, 0
ands r0, r2
adds r1, r0
lsls r1, 24
lsrs r1, 24
mov r12, r1
ldrb r1, [r4, 0x1]
adds r1, 0xF8
movs r0, 0xF0
ands r0, r6
lsrs r0, 4
adds r1, r0
lsls r1, 24
lsrs r1, 24
movs r2, 0
lsrs r6, 8
str r6, [sp, 0x4]
adds r5, 0x1
str r5, [sp]
mov r9, r3
_0804339C:
lsls r0, r2, 1
add r0, r9
ldr r3, _08043410 @ =gUnknown_825265E
adds r0, r3
ldrh r3, [r0]
mov r4, r12
adds r0, r4, 0
adds r0, 0x10
adds r7, r1, 0x1
adds r2, 0x1
mov r8, r2
cmp r4, r0
bge _08043434
lsrs r0, r1, 3
lsls r6, r0, 8
movs r0, 0x7
ands r1, r0
lsls r5, r1, 2
_080433C0:
adds r0, r4, 0
cmp r4, 0
bge _080433C8
adds r0, r4, 0x7
_080433C8:
asrs r0, 3
lsls r2, r0, 5
add r2, r10
lsls r0, 3
subs r0, r4, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r2, r0
adds r2, r6
adds r2, r5
movs r1, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08043428
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08043414
ldrb r1, [r2]
movs r0, 0xF0
ands r0, r1
subs r0, 0x10
lsls r0, 24
lsrs r0, 24
cmp r0, 0x20
bhi _08043428
adds r0, r1, 0
adds r0, 0x40
b _08043426
.align 2, 0
_08043408: .4byte gUnknown_202401C
_0804340C: .4byte gUnknown_825265C
_08043410: .4byte gUnknown_825265E
_08043414:
ldrb r1, [r2]
movs r0, 0xF
ands r0, r1
subs r0, 0x1
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bhi _08043428
adds r0, r1, 0x4
_08043426:
strb r0, [r2]
_08043428:
asrs r3, 1
adds r4, 0x1
mov r0, r12
adds r0, 0x10
cmp r4, r0
blt _080433C0
_08043434:
lsls r0, r7, 24
lsrs r1, r0, 24
mov r2, r8
cmp r2, 0xF
ble _0804339C
ldr r6, [sp, 0x4]
ldr r5, [sp]
cmp r5, 0x3
ble _08043364
_08043446:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8043338
thumb_func_start DrawSpindaSpots
DrawSpindaSpots: @ 8043458
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
adds r5, r1, 0
str r2, [sp]
lsls r0, 16
lsls r3, 24
lsrs r3, 24
movs r1, 0x9A
lsls r1, 17
cmp r0, r1
bne _0804355A
cmp r3, 0
beq _0804355A
movs r6, 0
_0804347C:
lsls r3, r6, 3
adds r3, r6
lsls r3, 2
ldr r0, _08043520 @ =gUnknown_825265C
adds r4, r3, r0
ldrb r1, [r4]
adds r1, 0xF8
movs r2, 0xF
adds r0, r5, 0
ands r0, r2
adds r1, r0
lsls r1, 24
lsrs r1, 24
mov r12, r1
ldrb r1, [r4, 0x1]
adds r1, 0xF8
movs r0, 0xF0
ands r0, r5
lsrs r0, 4
adds r1, r0
lsls r1, 24
lsrs r1, 24
movs r2, 0
lsrs r5, 8
str r5, [sp, 0x4]
adds r6, 0x1
mov r10, r6
mov r9, r3
_080434B4:
lsls r0, r2, 1
add r0, r9
ldr r3, _08043524 @ =gUnknown_825265E
adds r0, r3
ldrh r3, [r0]
mov r4, r12
adds r0, r4, 0
adds r0, 0x10
adds r7, r1, 0x1
adds r2, 0x1
mov r8, r2
cmp r4, r0
bge _08043548
lsrs r0, r1, 3
lsls r6, r0, 8
movs r0, 0x7
ands r1, r0
lsls r5, r1, 2
_080434D8:
adds r0, r4, 0
cmp r4, 0
bge _080434E0
adds r0, r4, 0x7
_080434E0:
asrs r0, 3
lsls r2, r0, 5
ldr r1, [sp]
adds r2, r1, r2
lsls r0, 3
subs r0, r4, r0
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
adds r2, r0
adds r2, r6
adds r2, r5
movs r1, 0x1
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _0804353C
adds r0, r4, 0
ands r0, r1
cmp r0, 0
beq _08043528
ldrb r1, [r2]
movs r0, 0xF0
ands r0, r1
subs r0, 0x10
lsls r0, 24
lsrs r0, 24
cmp r0, 0x20
bhi _0804353C
adds r0, r1, 0
adds r0, 0x40
b _0804353A
.align 2, 0
_08043520: .4byte gUnknown_825265C
_08043524: .4byte gUnknown_825265E
_08043528:
ldrb r1, [r2]
movs r0, 0xF
ands r0, r1
subs r0, 0x1
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bhi _0804353C
adds r0, r1, 0x4
_0804353A:
strb r0, [r2]
_0804353C:
asrs r3, 1
adds r4, 0x1
mov r0, r12
adds r0, 0x10
cmp r4, r0
blt _080434D8
_08043548:
lsls r0, r7, 24
lsrs r1, r0, 24
mov r2, r8
cmp r2, 0xF
ble _080434B4
ldr r5, [sp, 0x4]
mov r6, r10
cmp r6, 0x3
ble _0804347C
_0804355A:
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end DrawSpindaSpots
thumb_func_start EvolutionRenameMon
EvolutionRenameMon: @ 804356C
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
adds r5, r0, 0
lsls r1, 16
lsrs r7, r1, 16
lsls r2, 16
lsrs r2, 16
mov r8, r2
ldr r0, _080435D8 @ =gStringVar1
mov r9, r0
adds r0, r5, 0
movs r1, 0x2
mov r2, r9
bl GetMonData
mov r4, sp
adds r0, r5, 0
movs r1, 0x3
mov r2, sp
bl GetMonData
strb r0, [r4]
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
bne _080435C8
movs r6, 0xB
adds r0, r7, 0
muls r0, r6
ldr r4, _080435DC @ =gUnknown_8245EE0
adds r0, r4
mov r1, r9
bl StringCompare
cmp r0, 0
bne _080435C8
mov r2, r8
muls r2, r6
adds r2, r4
adds r0, r5, 0
movs r1, 0x2
bl sub_804037C
_080435C8:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080435D8: .4byte gStringVar1
_080435DC: .4byte gUnknown_8245EE0
thumb_func_end EvolutionRenameMon
thumb_func_start sub_80435E0
sub_80435E0: @ 80435E0
push {r4,r5,lr}
movs r5, 0
ldr r4, _08043608 @ =gUnknown_202273C
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r1, 0x18]
cmp r0, 0x2
bgt _0804360C
cmp r0, 0x1
bge _08043614
cmp r0, 0
beq _08043610
b _08043616
.align 2, 0
_08043608: .4byte gUnknown_202273C
_0804360C:
cmp r0, 0x3
bne _08043616
_08043610:
movs r5, 0
b _08043616
_08043614:
movs r5, 0x1
_08043616:
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_80435E0
thumb_func_start sub_8043620
sub_8043620: @ 8043620
push {lr}
lsls r0, 24
lsrs r0, 24
movs r3, 0
ldr r2, _08043644 @ =gUnknown_202273C
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r2
ldrh r0, [r1, 0x18]
cmp r0, 0x2
bgt _08043648
cmp r0, 0x1
bge _08043650
cmp r0, 0
beq _0804364C
b _08043652
.align 2, 0
_08043644: .4byte gUnknown_202273C
_08043648:
cmp r0, 0x3
bne _08043652
_0804364C:
movs r3, 0
b _08043652
_08043650:
movs r3, 0x1
_08043652:
adds r0, r3, 0
pop {r1}
bx r1
thumb_func_end sub_8043620
thumb_func_start GetBankMultiplayerId
GetBankMultiplayerId: @ 8043658
push {lr}
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r1, _08043664 @ =gUnknown_202273C
b _08043670
.align 2, 0
_08043664: .4byte gUnknown_202273C
_08043668:
adds r1, 0x1C
adds r2, 0x1
cmp r2, 0x3
bgt _08043676
_08043670:
ldrh r0, [r1, 0x18]
cmp r0, r3
bne _08043668
_08043676:
adds r0, r2, 0
pop {r1}
bx r1
thumb_func_end GetBankMultiplayerId
thumb_func_start sub_804367C
sub_804367C: @ 804367C
lsls r0, 16
lsrs r0, 16
ldr r2, _08043694 @ =gTrainers
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
ldrb r1, [r1, 0x2]
movs r0, 0x7F
ands r0, r1
bx lr
.align 2, 0
_08043694: .4byte gTrainers
thumb_func_end sub_804367C
thumb_func_start nature_stat_mod
nature_stat_mod: @ 8043698
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
lsrs r3, r1, 16
lsls r2, 24
lsrs r5, r2, 24
movs r0, 0xFF
lsls r0, 24
adds r2, r0
lsrs r2, 24
cmp r2, 0x4
bls _080436B6
adds r0, r3, 0
b _080436F2
_080436B6:
ldr r0, _080436D8 @ =gUnknown_8252B48
lsls r1, r4, 2
adds r1, r4
subs r1, 0x1
adds r1, r5, r1
adds r1, r0
ldrb r1, [r1]
lsls r1, 24
asrs r1, 24
movs r0, 0x1
negs r0, r0
cmp r1, r0
beq _080436DC
cmp r1, 0x1
bne _080436F0
movs r0, 0x6E
b _080436DE
.align 2, 0
_080436D8: .4byte gUnknown_8252B48
_080436DC:
movs r0, 0x5A
_080436DE:
muls r0, r3
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __udivsi3
lsls r0, 16
lsrs r0, 16
b _080436F2
_080436F0:
adds r0, r3, 0
_080436F2:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end nature_stat_mod
thumb_func_start sub_80436F8
sub_80436F8: @ 80436F8
push {r4-r7,lr}
sub sp, 0x4
adds r7, r0, 0
lsls r1, 24
lsrs r5, r1, 24
movs r1, 0x41
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r7, 0
movs r1, 0xC
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _08043758
ldr r0, _08043738 @ =gMain
ldr r1, _0804373C @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08043744
ldr r0, _08043740 @ =gUnknown_2023F54
ldrb r4, [r0, 0x7]
b _08043760
.align 2, 0
_08043738: .4byte gMain
_0804373C: .4byte 0x00000439
_08043740: .4byte gUnknown_2023F54
_08043744:
ldr r0, _08043750 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08043754 @ =0x0000311a
adds r0, r1
ldrb r4, [r0]
b _08043760
.align 2, 0
_08043750: .4byte gSaveBlock1Ptr
_08043754: .4byte 0x0000311a
_08043758:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r4, r0, 24
_08043760:
cmp r6, 0
bne _08043766
b _08043876
_08043766:
movs r0, 0xCE
lsls r0, 1
cmp r6, r0
bne _08043770
b _08043876
_08043770:
movs r6, 0
adds r0, r7, 0
movs r1, 0x20
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r0, 16
mov r1, sp
strh r0, [r1]
lsls r0, 16
asrs r0, 16
cmp r0, 0x63
ble _0804378E
movs r6, 0x1
_0804378E:
cmp r0, 0xC7
ble _08043798
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
_08043798:
cmp r5, 0x5
bne _080437A8
bl Random
movs r1, 0x1
ands r1, r0
cmp r1, 0
bne _08043876
_080437A8:
cmp r5, 0x3
bne _080437D4
ldr r0, _08043880 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x8
ands r0, r1
cmp r0, 0
beq _08043876
ldr r2, _08043884 @ =gTrainers
ldr r0, _08043888 @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x1]
cmp r0, 0x54
beq _080437D4
cmp r0, 0x57
beq _080437D4
cmp r0, 0x5A
bne _08043876
_080437D4:
ldr r1, _0804388C @ =gUnknown_825DFF6
lsls r0, r5, 1
adds r0, r5
adds r0, r6, r0
adds r0, r1
ldrb r2, [r0]
movs r1, 0
ldrsb r1, [r0, r1]
cmp r1, 0
ble _080437FA
cmp r4, 0x1B
bne _080437FA
movs r0, 0x96
muls r0, r1
movs r1, 0x64
bl __divsi3
lsls r0, 24
lsrs r2, r0, 24
_080437FA:
lsls r2, 24
asrs r2, 24
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
adds r0, r2
mov r1, sp
strh r0, [r1]
cmp r2, 0
ble _0804384C
adds r0, r7, 0
movs r1, 0x26
movs r2, 0
bl GetMonData
cmp r0, 0xB
bne _08043828
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
adds r0, 0x1
mov r1, sp
strh r0, [r1]
_08043828:
adds r0, r7, 0
movs r1, 0x23
movs r2, 0
bl GetMonData
adds r4, r0, 0
bl sav1_map_get_name
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bne _0804384C
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
adds r0, 0x1
mov r1, sp
strh r0, [r1]
_0804384C:
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0
bge _0804385C
movs r1, 0
mov r0, sp
strh r1, [r0]
_0804385C:
mov r0, sp
movs r1, 0
ldrsh r0, [r0, r1]
cmp r0, 0xFF
ble _0804386C
movs r1, 0xFF
mov r0, sp
strh r1, [r0]
_0804386C:
adds r0, r7, 0
movs r1, 0x20
mov r2, sp
bl sub_804037C
_08043876:
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08043880: .4byte gBattleTypeFlags
_08043884: .4byte gTrainers
_08043888: .4byte gTrainerBattleOpponent_A
_0804388C: .4byte gUnknown_825DFF6
thumb_func_end sub_80436F8
thumb_func_start MonGainEVs
MonGainEVs: @ 8043890
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
mov r8, r0
lsls r1, 16
lsrs r5, r1, 16
movs r4, 0
movs r7, 0
movs r6, 0
_080438A4:
adds r1, r6, 0
adds r1, 0x1A
mov r0, r8
movs r2, 0
bl GetMonData
mov r2, sp
adds r1, r2, r6
strb r0, [r1]
ldrb r0, [r1]
adds r0, r7, r0
lsls r0, 16
lsrs r7, r0, 16
adds r6, 0x1
cmp r6, 0x5
ble _080438A4
movs r6, 0
b _08043A26
_080438C8:
mov r0, r8
movs r1, 0
bl CheckPartyHasHadPokerus
lsls r0, 24
movs r2, 0x1
cmp r0, 0
beq _080438DA
movs r2, 0x2
_080438DA:
cmp r6, 0x5
bhi _0804397C
lsls r0, r6, 2
ldr r1, _080438E8 @ =_080438EC
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080438E8: .4byte _080438EC
.align 2, 0
_080438EC:
.4byte _08043904
.4byte _08043918
.4byte _0804392C
.4byte _08043940
.4byte _08043954
.4byte _08043968
_08043904:
ldr r0, _08043914 @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
lsls r0, 30
b _08043976
.align 2, 0
_08043914: .4byte gBaseStats
_08043918:
ldr r0, _08043928 @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
b _08043974
.align 2, 0
_08043928: .4byte gBaseStats
_0804392C:
ldr r0, _0804393C @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
lsls r0, 26
b _08043976
.align 2, 0
_0804393C: .4byte gBaseStats
_08043940:
ldr r0, _08043950 @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xA]
lsrs r0, 6
b _08043978
.align 2, 0
_08043950: .4byte gBaseStats
_08043954:
ldr r0, _08043964 @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xB]
lsls r0, 30
b _08043976
.align 2, 0
_08043964: .4byte gBaseStats
_08043968:
ldr r0, _080439A4 @ =gBaseStats
lsls r1, r5, 3
subs r1, r5
lsls r1, 2
adds r1, r0
ldrb r0, [r1, 0xB]
_08043974:
lsls r0, 28
_08043976:
lsrs r0, 30
_08043978:
adds r4, r0, 0
muls r4, r2
_0804397C:
mov r0, r8
movs r1, 0xC
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r0, 16
cmp r0, 0xAF
bne _080439C8
ldr r0, _080439A8 @ =gMain
ldr r1, _080439AC @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _080439B4
ldr r0, _080439B0 @ =gUnknown_2023F54
ldrb r0, [r0, 0x7]
b _080439D0
.align 2, 0
_080439A4: .4byte gBaseStats
_080439A8: .4byte gMain
_080439AC: .4byte 0x00000439
_080439B0: .4byte gUnknown_2023F54
_080439B4:
ldr r0, _080439C0 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r2, _080439C4 @ =0x0000311a
adds r0, r2
ldrb r0, [r0]
b _080439D0
.align 2, 0
_080439C0: .4byte gSaveBlock1Ptr
_080439C4: .4byte 0x0000311a
_080439C8:
bl ItemId_GetHoldEffect
lsls r0, 24
lsrs r0, 24
_080439D0:
cmp r0, 0x18
bne _080439D8
lsls r0, r4, 17
lsrs r4, r0, 16
_080439D8:
lsls r0, r4, 16
asrs r2, r0, 16
adds r1, r7, r2
movs r0, 0xFF
lsls r0, 1
cmp r1, r0
ble _080439F0
adds r0, r2, r0
adds r1, r7, r4
subs r0, r1
lsls r0, 16
lsrs r4, r0, 16
_080439F0:
mov r0, sp
adds r2, r0, r6
ldrb r3, [r2]
lsls r0, r4, 16
asrs r1, r0, 16
adds r0, r3, r1
cmp r0, 0xFF
ble _08043A0C
adds r0, r1, 0
adds r0, 0xFF
adds r1, r3, r4
subs r0, r1
lsls r0, 16
lsrs r4, r0, 16
_08043A0C:
adds r0, r3, r4
strb r0, [r2]
adds r0, r7, r4
lsls r0, 16
lsrs r7, r0, 16
adds r1, r6, 0
adds r1, 0x1A
mov r0, r8
bl sub_804037C
adds r6, 0x1
cmp r6, 0x5
bgt _08043A2E
_08043A26:
ldr r0, _08043A3C @ =0x000001fd
cmp r7, r0
bhi _08043A2E
b _080438C8
_08043A2E:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08043A3C: .4byte 0x000001fd
thumb_func_end MonGainEVs
thumb_func_start GetMonEVCount
GetMonEVCount: @ 8043A40
push {r4-r6,lr}
adds r6, r0, 0
movs r5, 0
movs r4, 0
_08043A48:
adds r1, r4, 0
adds r1, 0x1A
adds r0, r6, 0
movs r2, 0
bl GetMonData
adds r0, r5, r0
lsls r0, 16
lsrs r5, r0, 16
adds r4, 0x1
cmp r4, 0x5
ble _08043A48
adds r0, r5, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetMonEVCount
thumb_func_start sub_8043A68
sub_8043A68: @ 8043A68
sub sp, 0x4
add sp, 0x4
bx lr
thumb_func_end sub_8043A68
thumb_func_start CheckPartyPokerus
CheckPartyPokerus: @ 8043A70
push {r4-r7,lr}
sub sp, 0x4
adds r7, r0, 0
lsls r1, 24
lsrs r4, r1, 24
movs r3, 0
movs r6, 0x1
movs r5, 0
cmp r4, 0
beq _08043AB8
_08043A84:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _08043AAC
movs r0, 0x64
muls r0, r3
adds r0, r7, r0
movs r1, 0x22
movs r2, 0
str r3, [sp]
bl GetMonData
movs r1, 0xF
ands r1, r0
ldr r3, [sp]
cmp r1, 0
beq _08043AAC
orrs r5, r6
lsls r0, r5, 24
lsrs r5, r0, 24
_08043AAC:
adds r3, 0x1
lsls r6, 1
lsrs r4, 1
cmp r4, 0
bne _08043A84
b _08043ACC
_08043AB8:
adds r0, r7, 0
movs r1, 0x22
movs r2, 0
bl GetMonData
movs r1, 0xF
ands r1, r0
cmp r1, 0
beq _08043ACC
movs r5, 0x1
_08043ACC:
adds r0, r5, 0
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end CheckPartyPokerus
thumb_func_start CheckPartyHasHadPokerus
CheckPartyHasHadPokerus: @ 8043AD8
push {r4-r7,lr}
sub sp, 0x4
adds r7, r0, 0
lsls r1, 24
lsrs r4, r1, 24
movs r3, 0
movs r6, 0x1
movs r5, 0
cmp r4, 0
beq _08043B1C
_08043AEC:
movs r0, 0x1
ands r0, r4
cmp r0, 0
beq _08043B10
movs r0, 0x64
muls r0, r3
adds r0, r7, r0
movs r1, 0x22
movs r2, 0
str r3, [sp]
bl GetMonData
ldr r3, [sp]
cmp r0, 0
beq _08043B10
orrs r5, r6
lsls r0, r5, 24
lsrs r5, r0, 24
_08043B10:
adds r3, 0x1
lsls r6, 1
lsrs r4, 1
cmp r4, 0
bne _08043AEC
b _08043B2C
_08043B1C:
adds r0, r7, 0
movs r1, 0x22
movs r2, 0
bl GetMonData
cmp r0, 0
beq _08043B2C
movs r5, 0x1
_08043B2C:
adds r0, r5, 0
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end CheckPartyHasHadPokerus
thumb_func_start sub_8043B38
sub_8043B38: @ 8043B38
sub sp, 0x4
add sp, 0x4
bx lr
thumb_func_end sub_8043B38
thumb_func_start sub_8043B40
sub_8043B40: @ 8043B40
sub sp, 0x4
add sp, 0x4
bx lr
thumb_func_end sub_8043B40
thumb_func_start sub_8043B48
sub_8043B48: @ 8043B48
push {r4,lr}
sub sp, 0x4
adds r4, r0, 0
str r3, [sp]
ldr r2, _08043B88 @ =gUnknown_8253AE4
ldr r3, _08043B8C @ =gBaseStats
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r0, r3
ldrb r1, [r0, 0x13]
movs r0, 0xCA
lsls r0, 1
muls r0, r1
movs r1, 0xC8
lsls r1, 1
adds r2, r1
adds r0, r2
ldr r1, [r0]
ldr r0, [sp]
cmp r0, r1
bls _08043B80
str r1, [sp]
adds r0, r4, 0
movs r1, 0x19
mov r2, sp
bl sub_804037C
_08043B80:
add sp, 0x4
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08043B88: .4byte gUnknown_8253AE4
_08043B8C: .4byte gBaseStats
thumb_func_end sub_8043B48
thumb_func_start sub_8043B90
sub_8043B90: @ 8043B90
push {r4-r7,lr}
sub sp, 0x4
adds r4, r0, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
movs r1, 0x38
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r7, r0, 24
movs r1, 0x80
lsls r1, 17
adds r0, r1
lsrs r0, 24
mov r1, sp
strb r0, [r1]
adds r0, r4, 0
movs r1, 0x19
movs r2, 0
bl GetMonData
adds r5, r0, 0
cmp r7, 0x63
bhi _08043C14
ldr r3, _08043C0C @ =gUnknown_8253AE4
mov r0, sp
ldrb r1, [r0]
lsls r1, 2
ldr r2, _08043C10 @ =gBaseStats
lsls r0, r6, 3
subs r0, r6
lsls r0, 2
adds r0, r2
ldrb r2, [r0, 0x13]
movs r0, 0xCA
lsls r0, 1
muls r0, r2
adds r1, r0
adds r1, r3
ldr r0, [r1]
cmp r5, r0
bls _08043C20
adds r0, r4, 0
movs r1, 0x38
mov r2, sp
bl sub_804037C
mov r0, sp
ldrb r2, [r0]
adds r0, r4, 0
adds r1, r6, 0
adds r3, r5, 0
bl sub_8043B48
movs r0, 0x1
b _08043C22
.align 2, 0
_08043C0C: .4byte gUnknown_8253AE4
_08043C10: .4byte gBaseStats
_08043C14:
adds r0, r4, 0
adds r1, r6, 0
adds r2, r7, 0
adds r3, r5, 0
bl sub_8043B48
_08043C20:
movs r0, 0
_08043C22:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8043B90
thumb_func_start CanMonLearnTMHM
CanMonLearnTMHM: @ 8043C2C
push {r4,r5,lr}
lsls r1, 24
lsrs r4, r1, 24
adds r5, r4, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r1, r0, 16
adds r3, r1, 0
movs r0, 0xCE
lsls r0, 1
cmp r1, r0
bne _08043C4E
movs r0, 0
b _08043C7A
_08043C4E:
cmp r4, 0x1F
bls _08043C6C
adds r0, r4, 0
subs r0, 0x20
movs r2, 0x1
lsls r2, r0
ldr r0, _08043C68 @ =gUnknown_8252BC8
lsls r1, 3
adds r0, 0x4
adds r1, r0
ldr r0, [r1]
ands r0, r2
b _08043C7A
.align 2, 0
_08043C68: .4byte gUnknown_8252BC8
_08043C6C:
movs r1, 0x1
lsls r1, r5
ldr r2, _08043C80 @ =gUnknown_8252BC8
lsls r0, r3, 3
adds r0, r2
ldr r0, [r0]
ands r0, r1
_08043C7A:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08043C80: .4byte gUnknown_8252BC8
thumb_func_end CanMonLearnTMHM
thumb_func_start GetMoveRelearnerMoves
GetMoveRelearnerMoves: @ 8043C84
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x18
adds r6, r0, 0
str r1, [sp, 0x8]
movs r0, 0
mov r10, r0
adds r0, r6, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r7, r0, 16
adds r0, r6, 0
movs r1, 0x38
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0xC]
movs r5, 0
mov r4, sp
_08043CBA:
adds r1, r5, 0
adds r1, 0xD
adds r0, r6, 0
movs r2, 0
bl GetMonData
strh r0, [r4]
adds r4, 0x2
adds r5, 0x1
cmp r5, 0x3
ble _08043CBA
movs r5, 0
ldr r6, _08043DC8 @ =gUnknown_825D7B4
lsls r1, r7, 2
adds r2, r1, r6
ldr r3, [r2]
ldrh r0, [r3]
ldr r4, _08043DCC @ =0x0000ffff
str r1, [sp, 0x14]
cmp r0, r4
beq _08043DB4
mov r9, r2
str r3, [sp, 0x10]
_08043CE8:
lsls r2, r5, 1
ldr r1, [sp, 0x10]
adds r0, r2, r1
ldrh r3, [r0]
movs r0, 0xFE
lsls r0, 8
ands r0, r3
ldr r4, [sp, 0xC]
lsls r1, r4, 9
adds r7, r2, 0
adds r5, 0x1
mov r12, r5
cmp r0, r1
bgt _08043D9E
movs r4, 0
mov r0, sp
ldrh r1, [r0]
ldr r0, _08043DD0 @ =0x000001ff
ands r0, r3
cmp r1, r0
beq _08043D38
ldr r0, [sp, 0x14]
ldr r1, _08043DC8 @ =gUnknown_825D7B4
adds r6, r0, r1
ldr r2, _08043DD0 @ =0x000001ff
mov r8, r2
mov r3, sp
adds r5, r7, 0
_08043D20:
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x3
bgt _08043D38
ldr r0, [r6]
adds r0, r5, r0
ldrh r1, [r0]
ldrh r2, [r3]
mov r0, r8
ands r0, r1
cmp r2, r0
bne _08043D20
_08043D38:
cmp r4, 0x4
bne _08043D9E
movs r4, 0
cmp r4, r10
bge _08043D7C
mov r1, r9
ldr r0, [r1]
adds r0, r7, r0
ldrh r1, [r0]
ldr r0, [sp, 0x8]
ldrh r2, [r0]
ldr r0, _08043DD0 @ =0x000001ff
ands r0, r1
cmp r2, r0
beq _08043D7C
ldr r1, [sp, 0x14]
ldr r2, _08043DC8 @ =gUnknown_825D7B4
adds r6, r1, r2
ldr r0, _08043DD0 @ =0x000001ff
mov r8, r0
ldr r3, [sp, 0x8]
adds r5, r7, 0
_08043D64:
adds r3, 0x2
adds r4, 0x1
cmp r4, r10
bge _08043D7C
ldr r0, [r6]
adds r0, r5, r0
ldrh r1, [r0]
ldrh r2, [r3]
mov r0, r8
ands r0, r1
cmp r2, r0
bne _08043D64
_08043D7C:
cmp r4, r10
bne _08043D9E
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r2, r4, 1
ldr r1, [sp, 0x8]
adds r2, r1
mov r4, r9
ldr r0, [r4]
adds r0, r7, r0
ldrh r1, [r0]
ldr r0, _08043DD0 @ =0x000001ff
ands r0, r1
strh r0, [r2]
_08043D9E:
mov r5, r12
cmp r5, 0x13
bgt _08043DB4
mov r1, r9
ldr r0, [r1]
lsls r1, r5, 1
adds r1, r0
ldrh r0, [r1]
ldr r2, _08043DCC @ =0x0000ffff
cmp r0, r2
bne _08043CE8
_08043DB4:
mov r0, r10
add sp, 0x18
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08043DC8: .4byte gUnknown_825D7B4
_08043DCC: .4byte 0x0000ffff
_08043DD0: .4byte 0x000001ff
thumb_func_end GetMoveRelearnerMoves
thumb_func_start GetLevelUpMovesBySpecies
GetLevelUpMovesBySpecies: @ 8043DD4
push {r4-r7,lr}
adds r6, r1, 0
lsls r0, 16
movs r5, 0
movs r4, 0
ldr r1, _08043E20 @ =gUnknown_825D7B4
lsrs r0, 14
adds r0, r1
ldr r2, [r0]
ldrh r0, [r2]
ldr r1, _08043E24 @ =0x0000ffff
cmp r0, r1
beq _08043E18
ldr r0, _08043E28 @ =0x000001ff
mov r12, r0
adds r7, r1, 0
adds r3, r2, 0
_08043DF6:
adds r1, r5, 0
adds r0, r1, 0x1
lsls r0, 24
lsrs r5, r0, 24
lsls r1, 1
adds r1, r6
ldrh r2, [r3]
mov r0, r12
ands r0, r2
strh r0, [r1]
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x13
bgt _08043E18
ldrh r0, [r3]
cmp r0, r7
bne _08043DF6
_08043E18:
adds r0, r5, 0
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08043E20: .4byte gUnknown_825D7B4
_08043E24: .4byte 0x0000ffff
_08043E28: .4byte 0x000001ff
thumb_func_end GetLevelUpMovesBySpecies
thumb_func_start GetNumberOfRelearnableMoves
GetNumberOfRelearnableMoves: @ 8043E2C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x3C
adds r6, r0, 0
movs r0, 0
mov r10, r0
adds r0, r6, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r4, r0, 16
adds r0, r6, 0
movs r1, 0x38
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x30]
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bne _08043E68
movs r0, 0
b _08043F72
_08043E68:
movs r5, 0
lsls r4, 2
str r4, [sp, 0x38]
mov r4, sp
_08043E70:
adds r1, r5, 0
adds r1, 0xD
adds r0, r6, 0
movs r2, 0
bl GetMonData
strh r0, [r4]
adds r4, 0x2
adds r5, 0x1
cmp r5, 0x3
ble _08043E70
movs r5, 0
ldr r3, _08043F84 @ =gUnknown_825D7B4
ldr r2, [sp, 0x38]
adds r1, r2, r3
ldr r0, [r1]
ldrh r0, [r0]
ldr r2, _08043F88 @ =0x0000ffff
cmp r0, r2
beq _08043F70
mov r9, r1
mov r4, sp
adds r4, 0x8
str r4, [sp, 0x34]
_08043EA0:
mov r1, r9
ldr r0, [r1]
lsls r2, r5, 1
adds r0, r2, r0
ldrh r3, [r0]
movs r0, 0xFE
lsls r0, 8
ands r0, r3
ldr r4, [sp, 0x30]
lsls r1, r4, 9
adds r7, r2, 0
adds r5, 0x1
mov r12, r5
cmp r0, r1
bgt _08043F5A
movs r4, 0
mov r0, sp
ldrh r1, [r0]
ldr r0, _08043F8C @ =0x000001ff
ands r0, r3
cmp r1, r0
beq _08043EF2
ldr r0, [sp, 0x38]
ldr r1, _08043F84 @ =gUnknown_825D7B4
adds r6, r0, r1
ldr r2, _08043F8C @ =0x000001ff
mov r8, r2
mov r3, sp
adds r5, r7, 0
_08043EDA:
adds r3, 0x2
adds r4, 0x1
cmp r4, 0x3
bgt _08043EF2
ldr r0, [r6]
adds r0, r5, r0
ldrh r1, [r0]
ldrh r2, [r3]
mov r0, r8
ands r0, r1
cmp r2, r0
bne _08043EDA
_08043EF2:
cmp r4, 0x4
bne _08043F5A
movs r4, 0
cmp r4, r10
bge _08043F38
mov r1, r9
ldr r0, [r1]
adds r0, r7, r0
ldrh r1, [r0]
ldr r0, [sp, 0x34]
ldrh r2, [r0]
ldr r0, _08043F8C @ =0x000001ff
ands r0, r1
add r1, sp, 0x8
cmp r2, r0
beq _08043F38
ldr r2, [sp, 0x38]
ldr r0, _08043F84 @ =gUnknown_825D7B4
adds r6, r2, r0
ldr r2, _08043F8C @ =0x000001ff
mov r8, r2
adds r3, r1, 0
adds r5, r7, 0
_08043F20:
adds r3, 0x2
adds r4, 0x1
cmp r4, r10
bge _08043F38
ldr r0, [r6]
adds r0, r5, r0
ldrh r1, [r0]
ldrh r2, [r3]
mov r0, r8
ands r0, r1
cmp r2, r0
bne _08043F20
_08043F38:
cmp r4, r10
bne _08043F5A
mov r0, r10
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
mov r10, r0
lsls r2, r4, 1
ldr r4, [sp, 0x34]
adds r2, r4, r2
mov r1, r9
ldr r0, [r1]
adds r0, r7, r0
ldrh r1, [r0]
ldr r0, _08043F8C @ =0x000001ff
ands r0, r1
strh r0, [r2]
_08043F5A:
mov r5, r12
cmp r5, 0x13
bgt _08043F70
mov r2, r9
ldr r0, [r2]
lsls r1, r5, 1
adds r1, r0
ldrh r0, [r1]
ldr r4, _08043F88 @ =0x0000ffff
cmp r0, r4
bne _08043EA0
_08043F70:
mov r0, r10
_08043F72:
add sp, 0x3C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08043F84: .4byte gUnknown_825D7B4
_08043F88: .4byte 0x0000ffff
_08043F8C: .4byte 0x000001ff
thumb_func_end GetNumberOfRelearnableMoves
thumb_func_start sub_8043F90
sub_8043F90: @ 8043F90
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
bl SpeciesToNationalPokedexNum
adds r4, r0, 0
bl sub_806E25C
cmp r0, 0
bne _08043FB4
cmp r4, 0x97
bls _08043FB4
ldr r0, _08043FB0 @ =0x0000ffff
b _08043FB6
.align 2, 0
_08043FB0: .4byte 0x0000ffff
_08043FB4:
adds r0, r4, 0
_08043FB6:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8043F90
thumb_func_start sub_8043FBC
sub_8043FBC: @ 8043FBC
push {lr}
ldr r1, _08043FD0 @ =gUnknown_2024024
movs r2, 0
adds r0, r1, 0x3
_08043FC4:
strb r2, [r0]
subs r0, 0x1
cmp r0, r1
bge _08043FC4
pop {r0}
bx r0
.align 2, 0
_08043FD0: .4byte gUnknown_2024024
thumb_func_end sub_8043FBC
thumb_func_start sub_8043FD4
sub_8043FD4: @ 8043FD4
push {lr}
ldr r0, _08043FFC @ =gBattleTypeFlags
ldr r1, [r0]
movs r0, 0x80
lsls r0, 5
ands r0, r1
cmp r0, 0
bne _0804406C
movs r0, 0x80
lsls r0, 7
ands r0, r1
cmp r0, 0
bne _08043FF6
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08044000
_08043FF6:
movs r0, 0x85
lsls r0, 1
b _08044070
.align 2, 0
_08043FFC: .4byte gBattleTypeFlags
_08044000:
movs r0, 0x8
ands r1, r0
cmp r1, 0
beq _0804406C
ldr r2, _08044028 @ =gTrainers
ldr r0, _0804402C @ =gTrainerBattleOpponent_A
ldrh r1, [r0]
lsls r0, r1, 2
adds r0, r1
lsls r0, 3
adds r0, r2
ldrb r0, [r0, 0x1]
subs r0, 0x53
cmp r0, 0x7
bhi _08044062
lsls r0, 2
ldr r1, _08044030 @ =_08044034
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08044028: .4byte gTrainers
_0804402C: .4byte gTrainerBattleOpponent_A
_08044030: .4byte _08044034
.align 2, 0
_08044034:
.4byte _08044062
.4byte _0804405C
.4byte _08044062
.4byte _08044062
.4byte _0804405C
.4byte _08044062
.4byte _08044062
.4byte _08044054
_08044054:
ldr r0, _08044058 @ =0x0000012b
b _08044070
.align 2, 0
_08044058: .4byte 0x0000012b
_0804405C:
movs r0, 0x94
lsls r0, 1
b _08044070
_08044062:
ldr r0, _08044068 @ =0x00000129
b _08044070
.align 2, 0
_08044068: .4byte 0x00000129
_0804406C:
movs r0, 0x95
lsls r0, 1
_08044070:
pop {r1}
bx r1
thumb_func_end sub_8043FD4
thumb_func_start PlayBattleBGM
PlayBattleBGM: @ 8044074
push {lr}
bl ResetMapMusic
bl m4aMPlayAllStop
bl sub_8043FD4
lsls r0, 16
lsrs r0, 16
bl PlayBGM
pop {r0}
bx r0
thumb_func_end PlayBattleBGM
thumb_func_start PlayMapChosenOrBattleBGM
PlayMapChosenOrBattleBGM: @ 8044090
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
bl ResetMapMusic
bl m4aMPlayAllStop
cmp r4, 0
beq _080440AA
adds r0, r4, 0
bl PlayNewMapMusic
b _080440B6
_080440AA:
bl sub_8043FD4
lsls r0, 16
lsrs r0, 16
bl PlayNewMapMusic
_080440B6:
pop {r4}
pop {r0}
bx r0
thumb_func_end PlayMapChosenOrBattleBGM
thumb_func_start GetMonFrontSpritePal
GetMonFrontSpritePal: @ 80440BC
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
movs r1, 0x1
movs r2, 0
bl GetMonData
adds r6, r0, 0
adds r0, r5, 0
movs r1, 0
movs r2, 0
bl GetMonData
adds r2, r0, 0
adds r0, r4, 0
adds r1, r6, 0
bl GetFrontSpritePalFromSpeciesAndPersonality
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetMonFrontSpritePal
thumb_func_start GetFrontSpritePalFromSpeciesAndPersonality
GetFrontSpritePalFromSpeciesAndPersonality: @ 80440F4
push {r4,r5,lr}
adds r3, r2, 0
lsls r0, 16
lsrs r4, r0, 16
adds r5, r4, 0
movs r0, 0xCE
lsls r0, 1
cmp r4, r0
bls _08044110
ldr r0, _0804410C @ =gUnknown_823730C
ldr r0, [r0]
b _0804413C
.align 2, 0
_0804410C: .4byte gUnknown_823730C
_08044110:
lsrs r0, r1, 16
ldr r2, _0804412C @ =0x0000ffff
ands r1, r2
eors r0, r1
lsrs r1, r3, 16
eors r0, r1
ands r3, r2
eors r0, r3
cmp r0, 0x7
bls _08044134
ldr r0, _08044130 @ =gUnknown_823730C
lsls r1, r4, 3
b _08044138
.align 2, 0
_0804412C: .4byte 0x0000ffff
_08044130: .4byte gUnknown_823730C
_08044134:
ldr r0, _08044144 @ =gUnknown_82380CC
lsls r1, r5, 3
_08044138:
adds r1, r0
ldr r0, [r1]
_0804413C:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08044144: .4byte gUnknown_82380CC
thumb_func_end GetFrontSpritePalFromSpeciesAndPersonality
thumb_func_start GetMonSpritePalStruct
GetMonSpritePalStruct: @ 8044148
push {r4-r6,lr}
adds r5, r0, 0
movs r1, 0x41
movs r2, 0
bl GetMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
movs r1, 0x1
movs r2, 0
bl GetMonData
adds r6, r0, 0
adds r0, r5, 0
movs r1, 0
movs r2, 0
bl GetMonData
adds r2, r0, 0
adds r0, r4, 0
adds r1, r6, 0
bl GetMonSpritePalStructFromOtIdPersonality
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetMonSpritePalStruct
thumb_func_start GetMonSpritePalStructFromOtIdPersonality
GetMonSpritePalStructFromOtIdPersonality: @ 8044180
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
lsrs r0, r1, 16
ldr r3, _080441A0 @ =0x0000ffff
ands r1, r3
eors r0, r1
lsrs r1, r2, 16
eors r0, r1
ands r2, r3
eors r0, r2
cmp r0, 0x7
bls _080441A8
lsls r0, r4, 3
ldr r1, _080441A4 @ =gUnknown_823730C
b _080441AC
.align 2, 0
_080441A0: .4byte 0x0000ffff
_080441A4: .4byte gUnknown_823730C
_080441A8:
lsls r0, r4, 3
ldr r1, _080441B4 @ =gUnknown_82380CC
_080441AC:
adds r0, r1
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080441B4: .4byte gUnknown_82380CC
thumb_func_end GetMonSpritePalStructFromOtIdPersonality
thumb_func_start IsHMMove2
IsHMMove2: @ 80441B8
push {r4,lr}
lsls r0, 16
lsrs r3, r0, 16
ldr r2, _080441DC @ =gUnknown_825E014
ldrh r0, [r2]
ldr r1, _080441E0 @ =0x0000ffff
cmp r0, r1
beq _080441EA
adds r4, r1, 0
adds r1, r2, 0
_080441CC:
ldrh r0, [r2]
adds r1, 0x2
adds r2, 0x2
cmp r0, r3
bne _080441E4
movs r0, 0x1
b _080441EC
.align 2, 0
_080441DC: .4byte gUnknown_825E014
_080441E0: .4byte 0x0000ffff
_080441E4:
ldrh r0, [r1]
cmp r0, r4
bne _080441CC
_080441EA:
movs r0, 0
_080441EC:
pop {r4}
pop {r1}
bx r1
thumb_func_end IsHMMove2
thumb_func_start IsPokeSpriteNotFlipped
IsPokeSpriteNotFlipped: @ 80441F4
lsls r0, 16
lsrs r0, 16
ldr r2, _08044208 @ =gBaseStats
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r2
ldrb r0, [r1, 0x19]
lsrs r0, 7
bx lr
.align 2, 0
_08044208: .4byte gBaseStats
thumb_func_end IsPokeSpriteNotFlipped
thumb_func_start GetMonFlavorRelation
GetMonFlavorRelation: @ 804420C
push {r4,lr}
lsls r4, r1, 24
lsrs r4, 24
bl GetNature
lsls r0, 24
lsrs r0, 24
ldr r2, _08044230 @ =gUnknown_825DE24
lsls r1, r0, 2
adds r1, r0
adds r1, r4
adds r1, r2
movs r0, 0
ldrsb r0, [r1, r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08044230: .4byte gUnknown_825DE24
thumb_func_end GetMonFlavorRelation
thumb_func_start GetFlavorRelationByPersonality
GetFlavorRelationByPersonality: @ 8044234
push {r4,lr}
lsls r4, r1, 24
lsrs r4, 24
bl GetNatureFromPersonality
lsls r0, 24
lsrs r0, 24
ldr r2, _08044258 @ =gUnknown_825DE24
lsls r1, r0, 2
adds r1, r0
adds r1, r4
adds r1, r2
movs r0, 0
ldrsb r0, [r1, r0]
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08044258: .4byte gUnknown_825DE24
thumb_func_end GetFlavorRelationByPersonality
thumb_func_start IsTradedMon
IsTradedMon: @ 804425C
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
movs r1, 0x7
mov r2, sp
bl GetMonData
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
bl GetMonData
mov r1, sp
bl IsOtherTrainer
lsls r0, 24
lsrs r0, 24
add sp, 0x8
pop {r4}
pop {r1}
bx r1
thumb_func_end IsTradedMon
thumb_func_start IsOtherTrainer
IsOtherTrainer: @ 8044288
push {r4,r5,lr}
adds r5, r1, 0
ldr r1, _080442CC @ =gSaveBlock2Ptr
ldr r3, [r1]
ldrb r2, [r3, 0xA]
ldrb r1, [r3, 0xB]
lsls r1, 8
orrs r2, r1
ldrb r1, [r3, 0xC]
lsls r1, 16
orrs r2, r1
ldrb r1, [r3, 0xD]
lsls r1, 24
orrs r2, r1
cmp r0, r2
bne _080442D0
movs r4, 0
ldrb r0, [r5]
cmp r0, 0xFF
beq _080442C6
adds r2, r5, 0
_080442B2:
adds r1, r3, r4
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bne _080442D0
adds r2, 0x1
adds r4, 0x1
ldrb r0, [r2]
cmp r0, 0xFF
bne _080442B2
_080442C6:
movs r0, 0
b _080442D2
.align 2, 0
_080442CC: .4byte gSaveBlock2Ptr
_080442D0:
movs r0, 0x1
_080442D2:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end IsOtherTrainer
thumb_func_start MonRestorePP
MonRestorePP: @ 80442D8
push {lr}
bl BoxMonRestorePP
pop {r0}
bx r0
thumb_func_end MonRestorePP
thumb_func_start BoxMonRestorePP
BoxMonRestorePP: @ 80442E4
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
movs r6, 0
_080442EC:
adds r4, r6, 0
adds r4, 0xD
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0
bl GetBoxMonData
cmp r0, 0
beq _08044338
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0
bl GetBoxMonData
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
movs r1, 0x15
movs r2, 0
bl GetBoxMonData
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r2, r6, 24
lsrs r2, 24
adds r0, r4, 0
bl CalculatePPWithBonus
mov r1, sp
strb r0, [r1]
adds r1, r6, 0
adds r1, 0x11
adds r0, r5, 0
mov r2, sp
bl sub_80404D0
_08044338:
adds r6, 0x1
cmp r6, 0x3
ble _080442EC
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end BoxMonRestorePP
thumb_func_start sub_8044348
sub_8044348: @ 8044348
push {r4,r5,lr}
ldr r2, _0804438C @ =gUnknown_2023D6A
ldr r5, _08044390 @ =gBattleStruct
ldr r1, [r5]
adds r0, r1, 0
adds r0, 0xAC
ldrb r0, [r0]
strb r0, [r2]
ldr r4, _08044394 @ =gUnknown_2022AB8
movs r0, 0xFD
strb r0, [r4]
movs r0, 0x4
strb r0, [r4, 0x1]
adds r1, 0x49
ldrb r0, [r1]
strb r0, [r4, 0x2]
movs r0, 0xFF
strb r0, [r4, 0x4]
ldrb r0, [r1]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _0804439C
ldr r1, _08044398 @ =gBattlerPartyIndexes
ldr r0, [r5]
adds r0, 0x49
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrb r0, [r0]
bl pokemon_order_func
b _080443AA
.align 2, 0
_0804438C: .4byte gUnknown_2023D6A
_08044390: .4byte gBattleStruct
_08044394: .4byte gUnknown_2022AB8
_08044398: .4byte gBattlerPartyIndexes
_0804439C:
ldr r1, _080443E0 @ =gBattlerPartyIndexes
ldr r0, [r5]
adds r0, 0x49
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
_080443AA:
strb r0, [r4, 0x3]
ldr r4, _080443E4 @ =gUnknown_2022AC8
movs r0, 0xFD
strb r0, [r4]
movs r0, 0x4
strb r0, [r4, 0x1]
ldr r1, _080443E8 @ =gUnknown_2024004
ldrb r0, [r1]
strb r0, [r4, 0x2]
ldr r2, _080443E0 @ =gBattlerPartyIndexes
ldrb r0, [r1]
lsls r0, 1
adds r0, r2
ldrb r0, [r0]
bl pokemon_order_func
strb r0, [r4, 0x3]
movs r0, 0xFF
strb r0, [r4, 0x4]
ldr r0, _080443EC @ =gUnknown_83FCA2C
ldr r1, _080443F0 @ =gStringVar4
bl sub_80D7868
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080443E0: .4byte gBattlerPartyIndexes
_080443E4: .4byte gUnknown_2022AC8
_080443E8: .4byte gUnknown_2024004
_080443EC: .4byte gUnknown_83FCA2C
_080443F0: .4byte gStringVar4
thumb_func_end sub_8044348
thumb_func_start SetWildMonHeldItem
SetWildMonHeldItem: @ 80443F4
push {r4,r5,lr}
ldr r0, _0804444C @ =gBattleTypeFlags
ldr r0, [r0]
ldr r1, _08044450 @ =0x00012008
ands r0, r1
cmp r0, 0
bne _08044468
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
bl __umodsi3
lsls r0, 16
lsrs r5, r0, 16
ldr r4, _08044454 @ =gEnemyParty
adds r0, r4, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
lsls r0, 16
lsrs r0, 16
ldr r2, _08044458 @ =gBaseStats
lsls r1, r0, 3
subs r1, r0
lsls r3, r1, 2
adds r1, r3, r2
ldrh r0, [r1, 0xC]
ldrh r1, [r1, 0xE]
cmp r0, r1
beq _0804443E
cmp r5, 0x2C
bls _08044468
cmp r5, 0x5E
bhi _0804445C
_0804443E:
adds r2, 0xC
adds r2, r3, r2
adds r0, r4, 0
movs r1, 0xC
bl sub_804037C
b _08044468
.align 2, 0
_0804444C: .4byte gBattleTypeFlags
_08044450: .4byte 0x00012008
_08044454: .4byte gEnemyParty
_08044458: .4byte gBaseStats
_0804445C:
adds r2, 0xE
adds r2, r3, r2
adds r0, r4, 0
movs r1, 0xC
bl sub_804037C
_08044468:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end SetWildMonHeldItem
thumb_func_start IsMonShiny
IsMonShiny: @ 8044470
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
movs r2, 0
bl GetMonData
adds r5, r0, 0
adds r0, r4, 0
movs r1, 0
movs r2, 0
bl GetMonData
adds r1, r0, 0
adds r0, r5, 0
bl IsShinyOtIdPersonality
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end IsMonShiny
thumb_func_start IsShinyOtIdPersonality
IsShinyOtIdPersonality: @ 804449C
push {r4,lr}
movs r4, 0
lsrs r2, r0, 16
ldr r3, _080444C0 @ =0x0000ffff
ands r0, r3
eors r2, r0
lsrs r0, r1, 16
eors r2, r0
ands r1, r3
eors r2, r1
cmp r2, 0x7
bhi _080444B6
movs r4, 0x1
_080444B6:
adds r0, r4, 0
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080444C0: .4byte 0x0000ffff
thumb_func_end IsShinyOtIdPersonality
thumb_func_start sub_80444C4
sub_80444C4: @ 80444C4
push {r4,lr}
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 24
ldr r4, _080444F4 @ =gUnknown_202273C
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrh r1, [r1, 0x18]
movs r0, 0x2
eors r0, r1
bl GetBankMultiplayerId
adds r1, r0, 0
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
adds r4, 0x8
adds r0, r4
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080444F4: .4byte gUnknown_202273C
thumb_func_end sub_80444C4
thumb_func_start sub_80444F8
sub_80444F8: @ 80444F8
push {r4-r6,lr}
movs r6, 0x1
movs r5, 0
_080444FE:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08044548 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x5
movs r2, 0
bl GetMonData
cmp r0, 0x1
bne _08044538
adds r0, r4, 0
movs r1, 0x6
movs r2, 0
bl GetMonData
cmp r0, 0
bne _08044538
adds r0, r4, 0
movs r1, 0x38
movs r2, 0
bl GetMonData
lsls r0, 24
lsrs r0, 24
cmp r0, r6
bls _08044538
adds r6, r0, 0
_08044538:
adds r5, 0x1
cmp r5, 0x5
ble _080444FE
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08044548: .4byte gPlayerParty
thumb_func_end sub_80444F8
thumb_func_start sub_804454C
sub_804454C: @ 804454C
lsls r0, 16
lsrs r0, 16
ldr r1, _08044558 @ =gUnknown_82538A8
adds r0, r1
ldrb r0, [r0]
bx lr
.align 2, 0
_08044558: .4byte gUnknown_82538A8
thumb_func_end sub_804454C
thumb_func_start sub_804455C
sub_804455C: @ 804455C
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
lsls r1, 24
lsrs r5, r1, 24
cmp r0, 0x5
bhi _08044632
lsls r0, 2
ldr r1, _08044574 @ =_08044578
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08044574: .4byte _08044578
.align 2, 0
_08044578:
.4byte _08044632
.4byte _08044590
.4byte _08044664
.4byte _080445BC
.4byte _08044664
.4byte _080445F4
_08044590:
ldr r0, _080445B0 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08044632
ldr r0, _080445B4 @ =gMain
ldr r1, _080445B8 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08044632
b _0804461A
.align 2, 0
_080445B0: .4byte gBattleTypeFlags
_080445B4: .4byte gMain
_080445B8: .4byte 0x00000439
_080445BC:
ldr r0, _080445E8 @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x40
ands r0, r1
cmp r0, 0
beq _08044632
ldr r0, _080445EC @ =gMain
ldr r1, _080445F0 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
movs r0, 0x2
ands r0, r1
cmp r0, 0
beq _08044632
cmp r5, 0x1
beq _08044664
cmp r5, 0x4
beq _08044664
cmp r5, 0x5
beq _08044664
b _08044632
.align 2, 0
_080445E8: .4byte gBattleTypeFlags
_080445EC: .4byte gMain
_080445F0: .4byte 0x00000439
_080445F4:
ldr r0, _08044638 @ =gBattleTypeFlags
ldr r2, [r0]
movs r3, 0x2
adds r0, r2, 0
ands r0, r3
cmp r0, 0
beq _08044648
ldr r0, _0804463C @ =gMain
ldr r1, _08044640 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08044632
movs r0, 0x40
ands r2, r0
cmp r2, 0
beq _08044658
_0804461A:
ldr r4, _08044644 @ =gUnknown_202273C
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 24
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r1, r4
ldrh r0, [r1, 0x18]
cmp r0, r5
bne _08044664
_08044632:
movs r0, 0
b _08044666
.align 2, 0
_08044638: .4byte gBattleTypeFlags
_0804463C: .4byte gMain
_08044640: .4byte 0x00000439
_08044644: .4byte gUnknown_202273C
_08044648:
ldr r0, _0804466C @ =gMain
ldr r1, _08044670 @ =0x00000439
adds r0, r1
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
beq _08044632
_08044658:
adds r0, r5, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _08044632
_08044664:
movs r0, 0x1
_08044666:
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0804466C: .4byte gMain
_08044670: .4byte 0x00000439
thumb_func_end sub_804455C
thumb_func_start GetDeoxysStat
GetDeoxysStat: @ 8044674
push {r4-r6,lr}
adds r5, r0, 0
adds r6, r1, 0
ldr r0, _0804469C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x20
ands r0, r1
cmp r0, 0
bne _08044698
adds r0, r5, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
movs r1, 0xCD
lsls r1, 1
cmp r0, r1
beq _080446A0
_08044698:
movs r0, 0
b _080446FE
.align 2, 0
_0804469C: .4byte gBattleTypeFlags
_080446A0:
adds r1, r6, 0
adds r1, 0x27
adds r0, r5, 0
movs r2, 0
bl GetMonData
adds r4, r0, 0
adds r1, r6, 0
adds r1, 0x1A
adds r0, r5, 0
movs r2, 0
bl GetMonData
ldr r2, _08044704 @ =gUnknown_825E026
lsls r1, r6, 1
adds r1, r2
ldrh r1, [r1]
lsls r1, 1
adds r1, r4
cmp r0, 0
bge _080446CC
adds r0, 0x3
_080446CC:
asrs r0, 2
adds r0, r1, r0
adds r1, r5, 0
adds r1, 0x54
ldrb r1, [r1]
muls r0, r1
movs r1, 0x64
bl __divsi3
adds r0, 0x5
lsls r0, 16
lsrs r4, r0, 16
adds r0, r5, 0
bl GetNature
lsls r0, 24
lsrs r0, 24
lsls r2, r6, 24
lsrs r2, 24
adds r1, r4, 0
bl nature_stat_mod
lsls r0, 16
lsrs r4, r0, 16
adds r0, r4, 0
_080446FE:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08044704: .4byte gUnknown_825E026
thumb_func_end GetDeoxysStat
thumb_func_start sub_8044708
sub_8044708: @ 8044708
push {r4,r5,lr}
sub sp, 0x4
movs r5, 0
_0804470E:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _080447A8 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
movs r2, 0
bl GetMonData
movs r1, 0xCD
lsls r1, 1
cmp r0, r1
bne _08044798
adds r0, r4, 0
movs r1, 0x3B
movs r2, 0
bl GetMonData
str r0, [sp]
adds r0, r4, 0
movs r1, 0x3B
mov r2, sp
bl sub_804037C
adds r0, r4, 0
movs r1, 0x3C
movs r2, 0
bl GetMonData
str r0, [sp]
adds r0, r4, 0
movs r1, 0x3C
mov r2, sp
bl sub_804037C
adds r0, r4, 0
movs r1, 0x3D
movs r2, 0
bl GetMonData
str r0, [sp]
adds r0, r4, 0
movs r1, 0x3D
mov r2, sp
bl sub_804037C
adds r0, r4, 0
movs r1, 0x3E
movs r2, 0
bl GetMonData
str r0, [sp]
adds r0, r4, 0
movs r1, 0x3E
mov r2, sp
bl sub_804037C
adds r0, r4, 0
movs r1, 0x3F
movs r2, 0
bl GetMonData
str r0, [sp]
adds r0, r4, 0
movs r1, 0x3F
mov r2, sp
bl sub_804037C
_08044798:
adds r5, 0x1
cmp r5, 0x5
ble _0804470E
add sp, 0x4
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080447A8: .4byte gPlayerParty
thumb_func_end sub_8044708
thumb_func_start sub_80447AC
sub_80447AC: @ 80447AC
push {lr}
bl GetMultiplayerId
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r3, _080447E8 @ =gUnknown_202273C
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r0, r3, 0x4
adds r0, r1, r0
ldr r2, [r0]
movs r0, 0x7
ands r2, r0
adds r1, r3
ldrb r0, [r1, 0x13]
lsls r0, 3
orrs r2, r0
ldr r0, _080447EC @ =gUnknown_825E032
lsls r2, 1
adds r2, r0
ldrh r0, [r2]
bl sub_804454C
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_080447E8: .4byte gUnknown_202273C
_080447EC: .4byte gUnknown_825E032
thumb_func_end sub_80447AC
thumb_func_start sub_80447F0
sub_80447F0: @ 80447F0
push {lr}
bl GetMultiplayerId
movs r1, 0x1
eors r0, r1
lsls r0, 24
lsrs r0, 24
ldr r3, _0804482C @ =gUnknown_202273C
lsls r1, r0, 3
subs r1, r0
lsls r1, 2
adds r0, r3, 0x4
adds r0, r1, r0
ldr r2, [r0]
movs r0, 0x7
ands r2, r0
adds r1, r3
ldrb r0, [r1, 0x13]
lsls r0, 3
orrs r2, r0
ldr r1, _08044830 @ =gUnknown_825393E
ldr r0, _08044834 @ =gUnknown_825E032
lsls r2, 1
adds r2, r0
ldrh r0, [r2]
adds r0, r1
ldrb r0, [r0]
pop {r1}
bx r1
.align 2, 0
_0804482C: .4byte gUnknown_202273C
_08044830: .4byte gUnknown_825393E
_08044834: .4byte gUnknown_825E032
thumb_func_end sub_80447F0
thumb_func_start sub_8044838
sub_8044838: @ 8044838
push {r4-r7,lr}
sub sp, 0x14
ldr r0, _08044888 @ =gUnknown_20370C0
ldrh r5, [r0]
ldr r0, _0804488C @ =gUnknown_20370C2
ldrh r4, [r0]
ldr r0, _08044890 @ =gUnknown_20370C4
ldrh r6, [r0]
bl ZeroEnemyPartyMons
ldr r7, _08044894 @ =gEnemyParty
lsls r4, 24
lsrs r4, 24
movs r0, 0
str r0, [sp]
str r0, [sp, 0x4]
str r0, [sp, 0x8]
str r0, [sp, 0xC]
adds r0, r7, 0
adds r1, r5, 0
adds r2, r4, 0
movs r3, 0x20
bl sub_803E1EC
cmp r6, 0
beq _08044880
add r0, sp, 0x10
strb r6, [r0]
adds r1, r0, 0
asrs r0, r6, 8
strb r0, [r1, 0x1]
adds r0, r7, 0
movs r1, 0xC
add r2, sp, 0x10
bl sub_804037C
_08044880:
add sp, 0x14
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044888: .4byte gUnknown_20370C0
_0804488C: .4byte gUnknown_20370C2
_08044890: .4byte gUnknown_20370C4
_08044894: .4byte gEnemyParty
thumb_func_end sub_8044838
thumb_func_start sub_8044898
sub_8044898: @ 8044898
push {r4-r7,lr}
adds r7, r2, 0
lsls r0, 16
lsrs r4, r0, 16
adds r6, r4, 0
lsls r1, 24
lsrs r5, r1, 24
movs r0, 0x2
eors r0, r5
negs r1, r0
orrs r1, r0
lsrs r1, 31
adds r0, r4, 0
bl sub_8088E74
lsls r0, 24
cmp r0, 0
bne _080448EE
adds r0, r4, 0
adds r1, r5, 0
bl sub_8088E74
adds r0, r4, 0
bl NationalPokedexNumToSpecies
lsls r0, 16
lsrs r0, 16
cmp r0, 0xC9
bne _080448D8
ldr r0, _080448F4 @ =gSaveBlock2Ptr
ldr r0, [r0]
str r7, [r0, 0x1C]
_080448D8:
adds r0, r6, 0
bl NationalPokedexNumToSpecies
lsls r0, 16
movs r1, 0x9A
lsls r1, 17
cmp r0, r1
bne _080448EE
ldr r0, _080448F4 @ =gSaveBlock2Ptr
ldr r0, [r0]
str r7, [r0, 0x20]
_080448EE:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080448F4: .4byte gSaveBlock2Ptr
thumb_func_end sub_8044898
thumb_func_start sub_80448F8
sub_80448F8: @ 80448F8
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
lsls r1, 24
lsrs r2, r1, 24
ldr r0, _0804493C @ =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
lsls r1, 8
ands r0, r1
cmp r0, 0
beq _08044944
adds r0, r2, 0
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _08044944
adds r0, r4, 0
movs r1, 0x2
mov r2, sp
bl GetMonData
mov r0, sp
bl StringGetEnd10
ldr r1, _08044940 @ =gUnknown_841D148
mov r0, sp
bl StringCompare
cmp r0, 0
bne _08044944
movs r0, 0x1
b _08044946
.align 2, 0
_0804493C: .4byte gBattleTypeFlags
_08044940: .4byte gUnknown_841D148
_08044944:
movs r0, 0
_08044946:
add sp, 0xC
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80448F8
thumb_func_start sub_8044950
sub_8044950: @ 8044950
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
movs r6, 0
cmp r1, 0x3
bls _080449EC
adds r5, r6, 0
ldrb r0, [r4]
lsls r0, 28
lsrs r0, 28
cmp r5, r0
bge _08044A2C
_08044972:
ldr r1, [r4, 0x10]
lsls r3, r5, 1
adds r0, r3, r5
lsls r0, 3
ldr r2, _080449E8 @ =gUnknown_825DEF0
adds r1, r0, r1
adds r0, r2
ldm r0!, {r2,r6,r7}
stm r1!, {r2,r6,r7}
ldm r0!, {r2,r6,r7}
stm r1!, {r2,r6,r7}
movs r6, 0
ldrb r2, [r4, 0x1]
ldr r0, [r4, 0x10]
mov r10, r0
mov r8, r3
ldr r7, [r4, 0x14]
adds r1, r5, 0x1
mov r9, r1
cmp r6, r2
bcs _080449C2
mov r12, r7
ldr r1, [r4, 0xC]
lsls r0, r5, 2
adds r0, r1
ldr r3, [r0]
_080449A6:
adds r0, r5, 0
muls r0, r2
adds r0, r6
lsls r0, 3
add r0, r12
lsls r1, r6, 11
adds r1, r3, r1
str r1, [r0]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldrb r2, [r4, 0x1]
cmp r6, r2
bcc _080449A6
_080449C2:
mov r2, r8
adds r1, r2, r5
lsls r1, 3
add r1, r10
ldrb r0, [r4, 0x1]
muls r0, r5
lsls r0, 3
adds r0, r7, r0
str r0, [r1, 0xC]
mov r3, r9
lsls r0, r3, 16
lsrs r5, r0, 16
ldrb r0, [r4]
lsls r0, 28
lsrs r0, 28
cmp r5, r0
blt _08044972
b _08044A2C
.align 2, 0
_080449E8: .4byte gUnknown_825DEF0
_080449EC:
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
ldr r2, _08044A3C @ =gUnknown_825DEF0
ldr r1, [r4, 0x10]
adds r0, r2
ldm r0!, {r2,r5,r7}
stm r1!, {r2,r5,r7}
ldm r0!, {r3,r5,r7}
stm r1!, {r3,r5,r7}
ldr r0, [r4, 0x10]
mov r10, r0
ldr r7, [r4, 0x14]
ldrb r1, [r4, 0x1]
cmp r6, r1
bcs _08044A28
adds r3, r7, 0
ldr r0, [r4, 0xC]
ldr r2, [r0]
_08044A12:
lsls r0, r6, 3
adds r0, r3
lsls r1, r6, 11
adds r1, r2, r1
str r1, [r0]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldrb r5, [r4, 0x1]
cmp r6, r5
bcc _08044A12
_08044A28:
mov r6, r10
str r7, [r6, 0xC]
_08044A2C:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044A3C: .4byte gUnknown_825DEF0
thumb_func_end sub_8044950
thumb_func_start sub_8044A40
sub_8044A40: @ 8044A40
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r4, r0, 0
ldrb r0, [r4]
lsls r0, 28
movs r3, 0
cmp r0, 0
beq _08044ADA
ldr r0, _08044AE8 @ =gUnknown_825E05C
mov r10, r0
_08044A5A:
ldr r0, [r4, 0x10]
lsls r2, r3, 1
adds r1, r2, r3
lsls r1, 3
adds r1, r0
mov r0, r10
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
ldm r0!, {r5-r7}
stm r1!, {r5-r7}
movs r5, 0
ldr r0, [r4, 0x10]
mov r8, r0
mov r12, r2
ldr r7, [r4, 0x14]
adds r1, r3, 0x1
mov r9, r1
ldrb r6, [r4, 0x1]
cmp r5, r6
bcs _08044AAE
adds r6, r7, 0
ldr r1, [r4, 0xC]
lsls r0, r3, 2
adds r0, r1
ldr r2, [r0]
_08044A8C:
ldrb r0, [r4]
lsls r0, 28
lsrs r0, 28
adds r1, r3, 0
muls r1, r0
adds r1, r5
lsls r1, 3
adds r1, r6
lsls r0, r5, 11
adds r0, r2, r0
str r0, [r1]
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
ldrb r0, [r4, 0x1]
cmp r5, r0
bcc _08044A8C
_08044AAE:
mov r5, r12
adds r1, r5, r3
lsls r1, 3
add r1, r8
ldrb r0, [r4]
lsls r0, 28
lsrs r0, 28
muls r0, r3
lsls r0, 3
adds r0, r7, r0
str r0, [r1, 0xC]
ldr r6, _08044AEC @ =gUnknown_82349BC
str r6, [r1, 0x8]
strh r3, [r1, 0x2]
mov r7, r9
lsls r0, r7, 16
lsrs r3, r0, 16
ldrb r0, [r4]
lsls r0, 28
lsrs r0, 28
cmp r3, r0
blt _08044A5A
_08044ADA:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08044AE8: .4byte gUnknown_825E05C
_08044AEC: .4byte gUnknown_82349BC
thumb_func_end sub_8044A40
thumb_func_start sub_8044AF0
sub_8044AF0: @ 8044AF0
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r6, r0, 24
lsls r1, 24
lsrs r5, r1, 24
movs r0, 0
mov r8, r0
ldr r4, _08044B34 @ =gUnknown_20244F4
ldr r1, [r4]
cmp r1, 0
beq _08044B1E
ldrb r0, [r1, 0x2]
cmp r0, 0xA3
beq _08044B2E
adds r0, r1, 0
movs r1, 0
movs r2, 0x18
bl memset
mov r1, r8
str r1, [r4]
_08044B1E:
ldr r4, _08044B34 @ =gUnknown_20244F4
movs r0, 0x18
bl AllocZeroed
adds r2, r0, 0
str r2, [r4]
cmp r2, 0
bne _08044B38
_08044B2E:
movs r0, 0
b _08044D70
.align 2, 0
_08044B34: .4byte gUnknown_20244F4
_08044B38:
cmp r5, 0
beq _08044B94
cmp r5, 0x1
bne _08044B94
cmp r6, 0x4
bne _08044B5E
ldrb r1, [r2]
movs r0, 0x10
negs r0, r0
ands r0, r1
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
ldr r2, [r4]
ldrb r1, [r2]
movs r0, 0xF
ands r0, r1
movs r1, 0x40
b _08044B7C
_08044B5E:
cmp r6, 0x4
bls _08044B64
movs r6, 0
_08044B64:
ldrb r1, [r2]
movs r0, 0x10
negs r0, r0
ands r0, r1
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r2, [r4]
ldrb r1, [r2]
movs r0, 0xF
ands r0, r1
movs r1, 0x10
_08044B7C:
orrs r0, r1
strb r0, [r2]
ldr r2, _08044B90 @ =gUnknown_20244F4
ldr r1, [r2]
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r1, [r2]
movs r0, 0x1
strb r0, [r1, 0x3]
b _08044BD0
.align 2, 0
_08044B90: .4byte gUnknown_20244F4
_08044B94:
cmp r6, 0
bne _08044B9A
movs r6, 0x1
_08044B9A:
cmp r6, 0x8
bls _08044BA0
movs r6, 0x8
_08044BA0:
ldr r4, _08044C10 @ =gUnknown_20244F4
ldr r3, [r4]
movs r0, 0xF
adds r1, r6, 0
ands r1, r0
ldrb r2, [r3]
movs r0, 0x10
negs r0, r0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldr r2, [r4]
lsls r3, r6, 4
ldrb r1, [r2]
movs r0, 0xF
ands r0, r1
orrs r0, r3
strb r0, [r2]
ldr r1, [r4]
movs r2, 0
movs r0, 0x4
strb r0, [r1, 0x1]
ldr r0, [r4]
strb r2, [r0, 0x3]
_08044BD0:
ldr r5, _08044C10 @ =gUnknown_20244F4
ldr r0, [r5]
ldrb r1, [r0, 0x1]
lsls r1, 11
str r1, [r0, 0x4]
ldrb r0, [r0]
lsls r0, 28
lsrs r0, 28
muls r0, r1
bl AllocZeroed
ldr r1, [r5]
str r0, [r1, 0x8]
ldrb r0, [r1]
lsls r0, 28
lsrs r0, 23
bl AllocZeroed
adds r2, r0, 0
ldr r1, [r5]
str r2, [r1, 0xC]
ldr r0, [r1, 0x8]
cmp r0, 0
beq _08044C04
cmp r2, 0
bne _08044C14
_08044C04:
movs r0, 0x1
mov r1, r8
orrs r1, r0
mov r8, r1
b _08044C44
.align 2, 0
_08044C10: .4byte gUnknown_20244F4
_08044C14:
ldrb r0, [r1]
lsls r0, 28
movs r4, 0
adds r3, r5, 0
cmp r0, 0
beq _08044C44
_08044C20:
ldr r3, [r5]
ldr r0, [r3, 0xC]
lsls r1, r4, 2
adds r1, r0
ldr r0, [r3, 0x4]
adds r2, r0, 0
muls r2, r4
ldr r0, [r3, 0x8]
adds r0, r2
str r0, [r1]
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r3]
lsls r0, 28
lsrs r0, 28
cmp r4, r0
blt _08044C20
_08044C44:
ldr r5, _08044C8C @ =gUnknown_20244F4
ldr r0, [r5]
ldrb r1, [r0]
lsls r1, 28
lsrs r1, 28
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
bl AllocZeroed
ldr r2, [r5]
str r0, [r2, 0x10]
ldrb r1, [r2]
lsls r1, 28
lsrs r1, 28
ldrb r0, [r2, 0x1]
lsls r0, 3
muls r0, r1
bl AllocZeroed
adds r2, r0, 0
ldr r1, [r5]
str r2, [r1, 0x14]
ldr r0, [r1, 0x10]
cmp r0, 0
beq _08044C7C
cmp r2, 0
bne _08044C90
_08044C7C:
movs r0, 0x2
mov r1, r8
orrs r1, r0
lsls r0, r1, 24
lsrs r0, 24
mov r8, r0
b _08044CE2
.align 2, 0
_08044C8C: .4byte gUnknown_20244F4
_08044C90:
movs r4, 0
ldrb r0, [r1, 0x1]
ldrb r1, [r1]
lsls r1, 28
lsrs r1, 28
muls r0, r1
adds r3, r5, 0
cmp r4, r0
bge _08044CC6
adds r7, r3, 0
movs r5, 0x80
lsls r5, 4
_08044CA8:
ldr r2, [r7]
ldr r1, [r2, 0x14]
lsls r0, r4, 3
adds r0, r1
strh r5, [r0, 0x4]
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
ldrb r1, [r2, 0x1]
ldrb r0, [r2]
lsls r0, 28
lsrs r0, 28
muls r0, r1
cmp r4, r0
blt _08044CA8
_08044CC6:
ldr r0, [r3]
ldrb r4, [r0, 0x3]
cmp r4, 0
beq _08044CDA
cmp r4, 0x1
bne _08044CDA
adds r1, r6, 0
bl sub_8044950
b _08044CE2
_08044CDA:
ldr r0, _08044D60 @ =gUnknown_20244F4
ldr r0, [r0]
bl sub_8044A40
_08044CE2:
movs r0, 0x2
mov r1, r8
ands r0, r1
cmp r0, 0
beq _08044D12
ldr r4, _08044D60 @ =gUnknown_20244F4
ldr r0, [r4]
ldr r0, [r0, 0x14]
cmp r0, 0
beq _08044D00
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x14]
_08044D00:
ldr r0, [r4]
ldr r0, [r0, 0x10]
cmp r0, 0
beq _08044D12
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x10]
_08044D12:
movs r0, 0x1
mov r1, r8
ands r0, r1
cmp r0, 0
beq _08044D42
ldr r4, _08044D60 @ =gUnknown_20244F4
ldr r0, [r4]
ldr r0, [r0, 0xC]
cmp r0, 0
beq _08044D30
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0xC]
_08044D30:
ldr r0, [r4]
ldr r0, [r0, 0x8]
cmp r0, 0
beq _08044D42
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x8]
_08044D42:
mov r0, r8
cmp r0, 0
beq _08044D64
ldr r4, _08044D60 @ =gUnknown_20244F4
ldr r0, [r4]
movs r1, 0
movs r2, 0x18
bl memset
ldr r0, [r4]
bl Free
movs r0, 0
str r0, [r4]
b _08044D6C
.align 2, 0
_08044D60: .4byte gUnknown_20244F4
_08044D64:
ldr r0, _08044D7C @ =gUnknown_20244F4
ldr r1, [r0]
movs r0, 0xA3
strb r0, [r1, 0x2]
_08044D6C:
ldr r0, _08044D7C @ =gUnknown_20244F4
ldr r0, [r0]
_08044D70:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08044D7C: .4byte gUnknown_20244F4
thumb_func_end sub_8044AF0
thumb_func_start sub_8044D80
sub_8044D80: @ 8044D80
push {r4,lr}
ldr r4, _08044D9C @ =gUnknown_20244F4
ldr r1, [r4]
cmp r1, 0
beq _08044DFA
ldrb r0, [r1, 0x2]
cmp r0, 0xA3
beq _08044DA0
adds r0, r1, 0
movs r1, 0
movs r2, 0x18
bl memset
b _08044DF6
.align 2, 0
_08044D9C: .4byte gUnknown_20244F4
_08044DA0:
ldr r0, [r1, 0x14]
cmp r0, 0
beq _08044DB0
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x14]
_08044DB0:
ldr r0, [r4]
ldr r0, [r0, 0x10]
cmp r0, 0
beq _08044DC2
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x10]
_08044DC2:
ldr r0, [r4]
ldr r0, [r0, 0xC]
cmp r0, 0
beq _08044DD4
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0xC]
_08044DD4:
ldr r0, [r4]
ldr r0, [r0, 0x8]
cmp r0, 0
beq _08044DE6
bl Free
ldr r1, [r4]
movs r0, 0
str r0, [r1, 0x8]
_08044DE6:
ldr r0, [r4]
movs r1, 0
movs r2, 0x18
bl memset
ldr r0, [r4]
bl Free
_08044DF6:
movs r0, 0
str r0, [r4]
_08044DFA:
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8044D80
thumb_func_start sub_8044E00
sub_8044E00: @ 8044E00
push {lr}
lsls r0, 24
lsrs r1, r0, 24
ldr r0, _08044E14 @ =gUnknown_20244F4
ldr r2, [r0]
ldrb r0, [r2, 0x2]
cmp r0, 0xA3
beq _08044E18
movs r0, 0
b _08044E2C
.align 2, 0
_08044E14: .4byte gUnknown_20244F4
_08044E18:
ldrb r0, [r2]
lsls r0, 28
lsrs r0, 28
cmp r1, r0
blt _08044E24
movs r1, 0
_08044E24:
ldr r0, [r2, 0xC]
lsls r1, 2
adds r1, r0
ldr r0, [r1]
_08044E2C:
pop {r1}
bx r1
thumb_func_end sub_8044E00
.align 2, 0 @ Don't pad with nop.