pokefirered/asm/daycare.s
2018-10-18 19:39:25 -04:00

3217 lines
53 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start GetMonNick
GetMonNick: @ 80453C0
push {r4,lr}
sub sp, 0x14
adds r4, r1, 0
movs r1, 0x2
mov r2, sp
bl GetMonData
adds r0, r4, 0
mov r1, sp
bl StringCopy10
add sp, 0x14
pop {r4}
pop {r1}
bx r1
thumb_func_end GetMonNick
thumb_func_start GetBoxMonNick
GetBoxMonNick: @ 80453E0
push {r4,lr}
sub sp, 0x14
adds r4, r1, 0
movs r1, 0x2
mov r2, sp
bl GetBoxMonData
adds r0, r4, 0
mov r1, sp
bl StringCopy10
add sp, 0x14
pop {r4}
pop {r1}
bx r1
thumb_func_end GetBoxMonNick
thumb_func_start CountPokemonInDaycare
CountPokemonInDaycare: @ 8045400
push {r4-r6,lr}
adds r6, r0, 0
movs r5, 0
movs r4, 0
_08045408:
movs r0, 0x8C
muls r0, r4
adds r0, r6, r0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
beq _0804541E
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
_0804541E:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
bls _08045408
adds r0, r5, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end CountPokemonInDaycare
thumb_func_start InitDaycareMailRecordMixing
InitDaycareMailRecordMixing: @ 8045430
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r9, r0
mov r10, r1
movs r7, 0
movs r5, 0
mov r6, r10
adds r6, 0x74
movs r0, 0x1
mov r8, r0
_0804544A:
movs r0, 0x8C
muls r0, r5
mov r1, r9
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
beq _08045478
adds r0, r7, 0x1
lsls r0, 24
lsrs r7, r0, 24
adds r0, r4, 0
movs r1, 0xC
bl GetBoxMonData
adds r1, r0, 0
cmp r1, 0
bne _08045478
lsls r0, r5, 1
adds r0, r6, r0
b _0804547E
_08045478:
lsls r0, r5, 1
adds r0, r6, r0
mov r1, r8
_0804547E:
strh r1, [r0]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
bls _0804544A
mov r0, r10
str r7, [r0, 0x70]
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end InitDaycareMailRecordMixing
thumb_func_start Daycare_FindEmptySpot
Daycare_FindEmptySpot: @ 804549C
push {r4,r5,lr}
adds r5, r0, 0
movs r4, 0
_080454A2:
movs r0, 0x8C
muls r0, r4
adds r0, r5, r0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
bne _080454B8
lsls r0, r4, 24
asrs r0, 24
b _080454C6
_080454B8:
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
bls _080454A2
movs r0, 0x1
negs r0, r0
_080454C6:
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end Daycare_FindEmptySpot
thumb_func_start StorePokemonInDaycare
StorePokemonInDaycare: @ 80454CC
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r1, 0
bl MonHasMail
lsls r0, 24
cmp r0, 0
beq _08045524
adds r0, r4, 0
adds r0, 0x74
ldr r1, _08045550 @ =gSaveBlock2Ptr
ldr r1, [r1]
bl StringCopy
adds r1, r4, 0
adds r1, 0x7C
adds r0, r5, 0
bl GetMonNick
adds r0, r5, 0
movs r1, 0x40
bl GetMonData
lsls r0, 24
lsrs r0, 24
ldr r1, _08045554 @ =gSaveBlock1Ptr
ldr r1, [r1]
lsls r2, r0, 3
adds r2, r0
lsls r2, 2
adds r1, r2
adds r0, r4, 0
adds r0, 0x50
ldr r2, _08045558 @ =0x00002cd0
adds r1, r2
ldm r1!, {r2,r3,r6}
stm r0!, {r2,r3,r6}
ldm r1!, {r2,r3,r6}
stm r0!, {r2,r3,r6}
ldm r1!, {r2,r3,r6}
stm r0!, {r2,r3,r6}
adds r0, r5, 0
bl TakeMailFromMon
_08045524:
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x50
bl memcpy
adds r0, r4, 0
bl BoxMonRestorePP
adds r1, r4, 0
adds r1, 0x88
movs r0, 0
str r0, [r1]
adds r0, r5, 0
bl ZeroMonData
bl CompactPartySlots
bl CalculatePlayerPartyCount
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08045550: .4byte gSaveBlock2Ptr
_08045554: .4byte gSaveBlock1Ptr
_08045558: .4byte 0x00002cd0
thumb_func_end StorePokemonInDaycare
thumb_func_start StorePokemonInEmptyDaycareSlot
StorePokemonInEmptyDaycareSlot: @ 804555C
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
adds r0, r4, 0
bl Daycare_FindEmptySpot
lsls r0, 24
asrs r0, 24
movs r1, 0x8C
muls r0, r1
adds r4, r0
adds r0, r5, 0
adds r1, r4, 0
bl StorePokemonInDaycare
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end StorePokemonInEmptyDaycareSlot
thumb_func_start StoreSelectedPokemonInDaycare
StoreSelectedPokemonInDaycare: @ 8045580
push {lr}
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
muls r0, r1
ldr r1, _080455A4 @ =gPlayerParty
adds r0, r1
ldr r1, _080455A8 @ =gSaveBlock1Ptr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 6
adds r1, r2
bl StorePokemonInEmptyDaycareSlot
pop {r0}
bx r0
.align 2, 0
_080455A4: .4byte gPlayerParty
_080455A8: .4byte gSaveBlock1Ptr
thumb_func_end StoreSelectedPokemonInDaycare
thumb_func_start ShiftDaycareSlots
ShiftDaycareSlots: @ 80455AC
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r5, 0
adds r4, 0x8C
adds r0, r4, 0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
beq _08045602
adds r0, r5, 0
movs r1, 0xB
bl GetBoxMonData
adds r6, r0, 0
cmp r6, 0
bne _08045602
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0x50
bl memcpy
adds r0, r4, 0
bl ZeroBoxMonData
adds r4, 0x50
adds r0, r5, 0
adds r0, 0x50
adds r1, r4, 0
movs r2, 0x38
bl memcpy
adds r2, r5, 0
adds r2, 0x88
movs r0, 0x8A
lsls r0, 1
adds r1, r5, r0
ldr r0, [r1]
str r0, [r2]
str r6, [r1]
adds r0, r4, 0
bl ClearDaycareMonMisc
_08045602:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end ShiftDaycareSlots
thumb_func_start ApplyDaycareExperience
ApplyDaycareExperience: @ 8045608
push {r4-r7,lr}
adds r4, r0, 0
movs r5, 0
ldr r7, _08045624 @ =0x0000ffff
_08045610:
adds r0, r4, 0
bl sub_8043B90
lsls r0, 24
cmp r0, 0
beq _0804564C
movs r6, 0x1
adds r5, 0x1
b _08045638
.align 2, 0
_08045624: .4byte 0x0000ffff
_08045628:
movs r6, 0
cmp r0, r7
bne _08045638
ldr r0, _08045658 @ =gMoveToLearn
ldrh r1, [r0]
adds r0, r4, 0
bl DeleteFirstMoveAndGiveMoveToMon
_08045638:
adds r0, r4, 0
adds r1, r6, 0
bl MonTryLearningNewMove
lsls r0, 16
lsrs r0, 16
cmp r0, 0
bne _08045628
cmp r5, 0x63
ble _08045610
_0804564C:
adds r0, r4, 0
bl CalculateMonStats
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045658: .4byte gMoveToLearn
thumb_func_end ApplyDaycareExperience
thumb_func_start TakeSelectedPokemonFromDaycare
TakeSelectedPokemonFromDaycare: @ 804565C
push {r4-r7,lr}
sub sp, 0x68
adds r5, r0, 0
ldr r1, _080456F8 @ =gStringVar1
bl GetBoxMonNick
adds r0, r5, 0
movs r1, 0xB
bl GetBoxMonData
lsls r0, 16
lsrs r7, r0, 16
adds r0, r5, 0
mov r1, sp
bl BoxMonToMon
mov r0, sp
movs r1, 0x38
bl GetMonData
cmp r0, 0x64
beq _080456AA
mov r0, sp
movs r1, 0x19
bl GetMonData
adds r1, r5, 0
adds r1, 0x88
ldr r1, [r1]
adds r0, r1
str r0, [sp, 0x64]
add r2, sp, 0x64
mov r0, sp
movs r1, 0x19
bl SetMonData
mov r0, sp
bl ApplyDaycareExperience
_080456AA:
ldr r0, _080456FC @ =gPlayerParty
movs r1, 0xFA
lsls r1, 1
adds r6, r0, r1
adds r0, r6, 0
mov r1, sp
movs r2, 0x64
bl memcpy
adds r0, r5, 0
adds r0, 0x70
ldrh r0, [r0]
cmp r0, 0
beq _080456D8
adds r4, r5, 0
adds r4, 0x50
adds r0, r6, 0
adds r1, r4, 0
bl GiveMailToMon2
adds r0, r4, 0
bl ClearDaycareMonMisc
_080456D8:
adds r0, r5, 0
bl ZeroBoxMonData
adds r1, r5, 0
adds r1, 0x88
movs r0, 0
str r0, [r1]
bl CompactPartySlots
bl CalculatePlayerPartyCount
adds r0, r7, 0
add sp, 0x68
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080456F8: .4byte gStringVar1
_080456FC: .4byte gPlayerParty
thumb_func_end TakeSelectedPokemonFromDaycare
thumb_func_start TakeSelectedPokemonMonFromDaycareShiftSlots
TakeSelectedPokemonMonFromDaycareShiftSlots: @ 8045700
push {r4,r5,lr}
adds r5, r0, 0
lsls r1, 24
lsrs r1, 24
movs r0, 0x8C
muls r0, r1
adds r0, r5, r0
bl TakeSelectedPokemonFromDaycare
adds r4, r0, 0
lsls r4, 16
lsrs r4, 16
adds r0, r5, 0
bl ShiftDaycareSlots
adds r0, r4, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end TakeSelectedPokemonMonFromDaycareShiftSlots
thumb_func_start TakePokemonFromDaycare
TakePokemonFromDaycare: @ 8045728
push {lr}
ldr r0, _08045744 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
ldr r1, _08045748 @ =gUnknown_20370C0
ldrb r1, [r1]
bl TakeSelectedPokemonMonFromDaycareShiftSlots
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_08045744: .4byte gSaveBlock1Ptr
_08045748: .4byte gUnknown_20370C0
thumb_func_end TakePokemonFromDaycare
thumb_func_start GetLevelAfterDaycareSteps
GetLevelAfterDaycareSteps: @ 804574C
push {r4,r5,lr}
sub sp, 0x54
adds r4, r0, 0
adds r5, r1, 0
mov r0, sp
adds r1, r4, 0
movs r2, 0x50
bl memcpy
adds r0, r4, 0
movs r1, 0x19
bl GetBoxMonData
adds r0, r5
str r0, [sp, 0x50]
add r2, sp, 0x50
mov r0, sp
movs r1, 0x19
bl SetBoxMonData
mov r0, sp
bl GetLevelFromBoxMonExp
lsls r0, 24
lsrs r0, 24
add sp, 0x54
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetLevelAfterDaycareSteps
thumb_func_start GetNumLevelsGainedFromSteps
GetNumLevelsGainedFromSteps: @ 8045788
push {r4,r5,lr}
adds r5, r0, 0
bl GetLevelFromBoxMonExp
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
adds r0, 0x88
ldr r1, [r0]
adds r0, r5, 0
bl GetLevelAfterDaycareSteps
lsls r0, 24
lsrs r0, 24
subs r0, r4
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end GetNumLevelsGainedFromSteps
thumb_func_start GetNumLevelsGainedForDaycareMon
GetNumLevelsGainedForDaycareMon: @ 80457B4
push {r4,r5,lr}
adds r5, r0, 0
bl GetNumLevelsGainedFromSteps
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r0, _080457E0 @ =gStringVar2
adds r1, r4, 0
movs r2, 0
movs r3, 0x2
bl ConvertIntToDecimalStringN
ldr r1, _080457E4 @ =gStringVar1
adds r0, r5, 0
bl GetBoxMonNick
adds r0, r4, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_080457E0: .4byte gStringVar2
_080457E4: .4byte gStringVar1
thumb_func_end GetNumLevelsGainedForDaycareMon
thumb_func_start GetDaycareCostForSelectedMon
GetDaycareCostForSelectedMon: @ 80457E8
push {r4,r5,lr}
adds r5, r0, 0
bl GetNumLevelsGainedFromSteps
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldr r1, _08045818 @ =gStringVar1
adds r0, r5, 0
bl GetBoxMonNick
movs r0, 0x64
muls r4, r0
adds r4, 0x64
ldr r0, _0804581C @ =gStringVar2
adds r1, r4, 0
movs r2, 0
movs r3, 0x5
bl ConvertIntToDecimalStringN
adds r0, r4, 0
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08045818: .4byte gStringVar1
_0804581C: .4byte gStringVar2
thumb_func_end GetDaycareCostForSelectedMon
thumb_func_start GetDaycareCostForMon
GetDaycareCostForMon: @ 8045820
push {lr}
lsls r1, 24
lsrs r1, 24
movs r2, 0x8C
muls r1, r2
adds r0, r1
bl GetDaycareCostForSelectedMon
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
thumb_func_end GetDaycareCostForMon
thumb_func_start GetDaycareCost
GetDaycareCost: @ 8045838
push {lr}
ldr r0, _08045854 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
ldr r1, _08045858 @ =gUnknown_20370C0
ldrb r1, [r1]
bl GetDaycareCostForMon
ldr r1, _0804585C @ =gSpecialVar_0x8005
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08045854: .4byte gSaveBlock1Ptr
_08045858: .4byte gUnknown_20370C0
_0804585C: .4byte gSpecialVar_0x8005
thumb_func_end GetDaycareCost
thumb_func_start sub_8045860
sub_8045860: @ 8045860
lsls r0, 16
lsrs r0, 16
ldr r1, _08045888 @ =gSaveBlock1Ptr
ldr r2, [r1]
ldr r1, _0804588C @ =0x00003008
adds r3, r2, r1
ldr r1, [r3]
adds r1, r0
str r1, [r3]
ldr r1, _08045890 @ =0x00003094
adds r3, r2, r1
ldr r1, [r3]
adds r1, r0
str r1, [r3]
ldr r1, _08045894 @ =0x00003d20
adds r2, r1
ldr r1, [r2]
adds r1, r0
str r1, [r2]
bx lr
.align 2, 0
_08045888: .4byte gSaveBlock1Ptr
_0804588C: .4byte 0x00003008
_08045890: .4byte 0x00003094
_08045894: .4byte 0x00003d20
thumb_func_end sub_8045860
thumb_func_start GetNumLevelsGainedFromDaycare
GetNumLevelsGainedFromDaycare: @ 8045898
push {r4-r6,lr}
ldr r6, _080458C0 @ =gSaveBlock1Ptr
ldr r5, _080458C4 @ =gUnknown_20370C0
ldrh r0, [r5]
movs r4, 0x8C
adds r1, r0, 0
muls r1, r4
movs r0, 0xBE
lsls r0, 6
adds r1, r0
ldr r0, [r6]
adds r0, r1
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
bne _080458C8
movs r0, 0
b _080458E0
.align 2, 0
_080458C0: .4byte gSaveBlock1Ptr
_080458C4: .4byte gUnknown_20370C0
_080458C8:
ldrh r0, [r5]
adds r1, r0, 0
muls r1, r4
movs r0, 0xBE
lsls r0, 6
adds r1, r0
ldr r0, [r6]
adds r0, r1
bl GetNumLevelsGainedForDaycareMon
lsls r0, 24
lsrs r0, 24
_080458E0:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end GetNumLevelsGainedFromDaycare
thumb_func_start ClearDaycareMonMisc
ClearDaycareMonMisc: @ 80458E8
push {lr}
movs r3, 0
movs r2, 0x7
adds r1, r0, 0
adds r1, 0x2B
_080458F2:
strb r3, [r1]
subs r1, 0x1
subs r2, 0x1
cmp r2, 0
bge _080458F2
adds r2, r0, 0
adds r2, 0x2C
movs r3, 0
adds r1, r0, 0
adds r1, 0x36
_08045906:
strb r3, [r1]
subs r1, 0x1
cmp r1, r2
bge _08045906
bl ClearMailStruct
pop {r0}
bx r0
thumb_func_end ClearDaycareMonMisc
thumb_func_start ClearDaycareMon
ClearDaycareMon: @ 8045918
push {r4,lr}
adds r4, r0, 0
bl ZeroBoxMonData
adds r1, r4, 0
adds r1, 0x88
movs r0, 0
str r0, [r1]
adds r4, 0x50
adds r0, r4, 0
bl ClearDaycareMonMisc
pop {r4}
pop {r0}
bx r0
thumb_func_end ClearDaycareMon
thumb_func_start ClearAllDaycareData
ClearAllDaycareData: @ 8045938
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
movs r6, 0x8C
_08045940:
adds r0, r4, 0
muls r0, r6
adds r0, r5, r0
bl ClearDaycareMon
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
bls _08045940
movs r1, 0x8C
lsls r1, 1
adds r0, r5, r1
movs r2, 0
movs r1, 0
strh r1, [r0]
movs r1, 0x8D
lsls r1, 1
adds r0, r5, r1
strb r2, [r0]
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end ClearAllDaycareData
thumb_func_start sub_8045970
sub_8045970: @ 8045970
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 16
lsrs r2, r0, 16
movs r0, 0
mov r8, r0
ldr r0, _0804599C @ =gEvolutionTable
mov r12, r0
_08045982:
movs r7, 0
movs r6, 0x1
movs r4, 0x80
lsls r4, 9
movs r5, 0x28
mov r3, r12
adds r3, 0x28
_08045990:
movs r1, 0
ldrh r0, [r3, 0x4]
cmp r0, r2
bne _080459A0
lsrs r2, r4, 16
b _080459CC
.align 2, 0
_0804599C: .4byte gEvolutionTable
_080459A0:
adds r1, 0x1
cmp r1, 0x4
bgt _080459B6
lsls r0, r1, 3
adds r0, r5
add r0, r12
ldrh r0, [r0, 0x4]
cmp r0, r2
bne _080459A0
lsrs r2, r4, 16
movs r7, 0x1
_080459B6:
cmp r7, 0
bne _080459CC
movs r0, 0x80
lsls r0, 9
adds r4, r0
adds r5, 0x28
adds r3, 0x28
adds r6, 0x1
ldr r0, _080459EC @ =0x0000019b
cmp r6, r0
ble _08045990
_080459CC:
movs r0, 0xCE
lsls r0, 1
cmp r6, r0
beq _080459DE
movs r0, 0x1
add r8, r0
mov r0, r8
cmp r0, 0x4
ble _08045982
_080459DE:
adds r0, r2, 0
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080459EC: .4byte 0x0000019b
thumb_func_end sub_8045970
thumb_func_start sub_80459F0
sub_80459F0: @ 80459F0
push {r4,lr}
adds r4, r0, 0
bl Random
lsls r0, 16
lsrs r0, 16
ldr r1, _08045A18 @ =0x0000fffe
bl __umodsi3
adds r0, 0x1
movs r1, 0x8C
lsls r1, 1
adds r4, r1
strh r0, [r4]
ldr r0, _08045A1C @ =0x00000266
bl FlagSet
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08045A18: .4byte 0x0000fffe
_08045A1C: .4byte 0x00000266
thumb_func_end sub_80459F0
thumb_func_start sub_8045A20
sub_8045A20: @ 8045A20
push {r4,lr}
adds r4, r0, 0
bl Random
movs r2, 0x80
lsls r2, 8
adds r1, r2, 0
movs r2, 0x8C
lsls r2, 1
adds r4, r2
orrs r1, r0
strh r1, [r4]
ldr r0, _08045A44 @ =0x00000266
bl FlagSet
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08045A44: .4byte 0x00000266
thumb_func_end sub_8045A20
thumb_func_start sub_8045A48
sub_8045A48: @ 8045A48
push {lr}
ldr r0, _08045A5C @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl sub_80459F0
pop {r0}
bx r0
.align 2, 0
_08045A5C: .4byte gSaveBlock1Ptr
thumb_func_end sub_8045A48
thumb_func_start sub_8045A60
sub_8045A60: @ 8045A60
push {lr}
ldr r0, _08045A74 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl sub_8045A20
pop {r0}
bx r0
.align 2, 0
_08045A74: .4byte gSaveBlock1Ptr
thumb_func_end sub_8045A60
thumb_func_start RemoveIVIndexFromList
RemoveIVIndexFromList: @ 8045A78
push {r4,lr}
sub sp, 0x8
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
adds r1, r4, r1
movs r0, 0xFF
strb r0, [r1]
movs r2, 0
_08045A8A:
mov r1, sp
adds r0, r1, r2
adds r1, r4, r2
ldrb r1, [r1]
strb r1, [r0]
adds r2, 0x1
cmp r2, 0x5
ble _08045A8A
movs r3, 0
movs r2, 0
_08045A9E:
mov r1, sp
adds r0, r1, r2
ldrb r1, [r0]
adds r0, r1, 0
cmp r0, 0xFF
beq _08045AB0
adds r0, r4, r3
strb r1, [r0]
adds r3, 0x1
_08045AB0:
adds r2, 0x1
cmp r2, 0x5
ble _08045A9E
add sp, 0x8
pop {r4}
pop {r0}
bx r0
thumb_func_end RemoveIVIndexFromList
thumb_func_start InheritIVs
InheritIVs: @ 8045AC0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x14
mov r9, r0
mov r8, r1
movs r5, 0
add r1, sp, 0x4
add r7, sp, 0xC
adds r2, r1, 0
_08045AD6:
adds r0, r2, r5
strb r5, [r0]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x5
bls _08045AD6
movs r5, 0
adds r6, r1, 0
_08045AE8:
bl Random
mov r1, sp
adds r4, r1, r5
lsls r0, 16
lsrs r0, 16
movs r1, 0x6
subs r1, r5
bl __modsi3
adds r0, r6, r0
ldrb r0, [r0]
strb r0, [r4]
ldrb r1, [r4]
adds r0, r6, 0
bl RemoveIVIndexFromList
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x2
bls _08045AE8
movs r5, 0
movs r4, 0x1
_08045B18:
bl Random
adds r1, r7, r5
lsls r0, 16
lsrs r0, 16
ands r0, r4
strb r0, [r1]
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x2
bls _08045B18
movs r5, 0
_08045B32:
mov r1, sp
adds r0, r1, r5
ldrb r0, [r0]
cmp r0, 0x5
bhi _08045C0E
lsls r0, 2
ldr r1, _08045B48 @ =_08045B4C
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08045B48: .4byte _08045B4C
.align 2, 0
_08045B4C:
.4byte _08045B64
.4byte _08045B82
.4byte _08045B9C
.4byte _08045BB6
.4byte _08045BD0
.4byte _08045BF0
_08045B64:
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x27
bl GetBoxMonData
add r2, sp, 0x10
strb r0, [r2]
mov r0, r9
movs r1, 0x27
bl SetMonData
b _08045C0E
_08045B82:
add r4, sp, 0x10
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x28
bl GetBoxMonData
strb r0, [r4]
mov r0, r9
movs r1, 0x28
b _08045BE8
_08045B9C:
add r4, sp, 0x10
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x29
bl GetBoxMonData
strb r0, [r4]
mov r0, r9
movs r1, 0x29
b _08045BE8
_08045BB6:
add r4, sp, 0x10
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x2A
bl GetBoxMonData
strb r0, [r4]
mov r0, r9
movs r1, 0x2A
b _08045BE8
_08045BD0:
add r4, sp, 0x10
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x2B
bl GetBoxMonData
strb r0, [r4]
mov r0, r9
movs r1, 0x2B
_08045BE8:
adds r2, r4, 0
bl SetMonData
b _08045C0E
_08045BF0:
add r4, sp, 0x10
adds r0, r7, r5
ldrb r1, [r0]
movs r0, 0x8C
muls r0, r1
add r0, r8
movs r1, 0x2C
bl GetBoxMonData
strb r0, [r4]
mov r0, r9
movs r1, 0x2C
adds r2, r4, 0
bl SetMonData
_08045C0E:
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x2
bls _08045B32
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end InheritIVs
thumb_func_start GetEggMoves
GetEggMoves: @ 8045C28
push {r4-r7,lr}
mov r7, r8
push {r7}
mov r8, r1
movs r6, 0
movs r4, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r3, r0, 16
movs r2, 0
ldr r5, _08045C50 @ =gUnknown_825EF0C
ldrh r1, [r5]
ldr r7, _08045C54 @ =0x00004e20
adds r0, r3, r7
cmp r1, r0
bne _08045C58
movs r4, 0x1
b _08045C7A
.align 2, 0
_08045C50: .4byte gUnknown_825EF0C
_08045C54: .4byte 0x00004e20
_08045C58:
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
ldr r0, _08045CC4 @ =0x00000471
ldr r5, _08045CC8 @ =gUnknown_825EF0C
cmp r2, r0
bhi _08045C7A
lsls r0, r2, 1
adds r0, r5
ldrh r1, [r0]
ldr r7, _08045CCC @ =0x00004e20
adds r0, r3, r7
cmp r1, r0
bne _08045C58
adds r0, r2, 0x1
lsls r0, 16
lsrs r4, r0, 16
_08045C7A:
movs r2, 0
lsls r0, r4, 1
adds r0, r5
ldrh r0, [r0]
ldr r1, _08045CCC @ =0x00004e20
cmp r0, r1
bhi _08045CB6
adds r7, r5, 0
adds r3, r1, 0
_08045C8C:
lsls r1, r2, 1
add r1, r8
adds r0, r4, r2
lsls r0, 1
adds r0, r7
ldrh r0, [r0]
strh r0, [r1]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
adds r0, r2, 0x1
lsls r0, 16
lsrs r2, r0, 16
cmp r2, 0x9
bhi _08045CB6
adds r0, r4, r2
lsls r0, 1
adds r0, r5
ldrh r0, [r0]
cmp r0, r3
bls _08045C8C
_08045CB6:
lsls r0, r6, 24
lsrs r0, 24
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08045CC4: .4byte 0x00000471
_08045CC8: .4byte gUnknown_825EF0C
_08045CCC: .4byte 0x00004e20
thumb_func_end GetEggMoves
thumb_func_start BuildEggMoveset
BuildEggMoveset: @ 8045CD0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
adds r7, r0, 0
mov r10, r1
mov r9, r2
movs r0, 0
str r0, [sp]
movs r6, 0
ldr r5, _08045DD4 @ =gUnknown_2024580
movs r2, 0
ldr r4, _08045DD8 @ =gUnknown_202455C
ldr r3, _08045DDC @ =gUnknown_2024564
_08045CF0:
lsls r1, r6, 1
adds r0, r1, r5
strh r2, [r0]
adds r0, r1, r4
strh r2, [r0]
adds r1, r3
strh r2, [r1]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x3
bls _08045CF0
movs r6, 0
ldr r2, _08045DE0 @ =gUnknown_202456C
movs r1, 0
_08045D0E:
lsls r0, r6, 1
adds r0, r2
strh r1, [r0]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x9
bls _08045D0E
movs r6, 0
ldr r2, _08045DE4 @ =gUnknown_20244F8
movs r1, 0
_08045D24:
lsls r0, r6, 1
adds r0, r2
strh r1, [r0]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x31
bls _08045D24
adds r0, r7, 0
movs r1, 0xB
bl GetMonData
lsls r0, 16
lsrs r0, 16
ldr r1, _08045DE4 @ =gUnknown_20244F8
bl GetLevelUpMovesBySpecies
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
movs r6, 0
ldr r1, _08045DD8 @ =gUnknown_202455C
mov r8, r1
_08045D52:
adds r5, r6, 0
adds r5, 0xD
mov r0, r10
adds r1, r5, 0
bl GetBoxMonData
lsls r4, r6, 1
mov r2, r8
adds r1, r4, r2
strh r0, [r1]
mov r0, r9
adds r1, r5, 0
bl GetBoxMonData
ldr r1, _08045DD4 @ =gUnknown_2024580
adds r4, r1
strh r0, [r4]
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
cmp r6, 0x3
bls _08045D52
ldr r1, _08045DE0 @ =gUnknown_202456C
adds r0, r7, 0
bl GetEggMoves
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r6, 0
_08045D8E:
ldr r0, _08045DD8 @ =gUnknown_202455C
lsls r1, r6, 1
adds r2, r1, r0
ldrh r1, [r2]
mov r9, r0
cmp r1, 0
beq _08045E04
movs r5, 0
cmp r5, r8
bcs _08045DF6
adds r4, r2, 0
ldr r2, _08045DE8 @ =0x0000ffff
_08045DA6:
ldr r0, _08045DE0 @ =gUnknown_202456C
lsls r1, r5, 1
adds r1, r0
ldrh r0, [r4]
ldrh r1, [r1]
cmp r0, r1
bne _08045DEC
adds r1, r0, 0
adds r0, r7, 0
str r2, [sp, 0x8]
bl GiveMoveToMon
lsls r0, 16
lsrs r0, 16
ldr r2, [sp, 0x8]
cmp r0, r2
bne _08045DF6
ldrh r1, [r4]
adds r0, r7, 0
bl DeleteFirstMoveAndGiveMoveToMon
b _08045DF6
.align 2, 0
_08045DD4: .4byte gUnknown_2024580
_08045DD8: .4byte gUnknown_202455C
_08045DDC: .4byte gUnknown_2024564
_08045DE0: .4byte gUnknown_202456C
_08045DE4: .4byte gUnknown_20244F8
_08045DE8: .4byte 0x0000ffff
_08045DEC:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, r8
bcc _08045DA6
_08045DF6:
adds r0, r6, 0x1
lsls r0, 16
lsrs r6, r0, 16
ldr r3, _08045F20 @ =gUnknown_202455C
mov r9, r3
cmp r6, 0x3
bls _08045D8E
_08045E04:
movs r6, 0
_08045E06:
lsls r0, r6, 1
mov r2, r9
adds r1, r0, r2
ldrh r1, [r1]
adds r2, r0, 0
adds r6, 0x1
mov r8, r6
cmp r1, 0
beq _08045E68
movs r5, 0
ldr r0, _08045F20 @ =gUnknown_202455C
adds r4, r2, r0
ldr r6, _08045F24 @ =0x0000ffff
mov r9, r0
_08045E22:
ldr r3, _08045F28 @ =0x00000121
adds r0, r5, r3
lsls r0, 16
lsrs r0, 16
bl ItemIdToBattleMoveId
ldrh r1, [r4]
lsls r0, 16
lsrs r0, 16
cmp r1, r0
bne _08045E5E
lsls r1, r5, 24
lsrs r1, 24
adds r0, r7, 0
bl CanMonLearnTMHM
cmp r0, 0
beq _08045E5E
ldrh r1, [r4]
adds r0, r7, 0
bl GiveMoveToMon
lsls r0, 16
lsrs r0, 16
cmp r0, r6
bne _08045E5E
ldrh r1, [r4]
adds r0, r7, 0
bl DeleteFirstMoveAndGiveMoveToMon
_08045E5E:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x39
bls _08045E22
_08045E68:
mov r1, r8
lsls r0, r1, 16
lsrs r6, r0, 16
cmp r6, 0x3
bls _08045E06
movs r6, 0
mov r2, r9
ldrh r0, [r2]
ldr r3, _08045F2C @ =gUnknown_2024564
mov r10, r3
cmp r0, 0
beq _08045ED2
mov r4, r9
ldr r0, _08045F30 @ =gUnknown_2024580
mov r9, r0
mov r12, r10
_08045E88:
movs r5, 0
lsls r2, r6, 1
adds r6, 0x1
mov r8, r6
adds r3, r2, r4
_08045E92:
lsls r0, r5, 1
add r0, r9
ldrh r2, [r3]
adds r1, r2, 0
ldrh r0, [r0]
cmp r1, r0
bne _08045EB4
cmp r1, 0
beq _08045EB4
ldr r1, [sp]
adds r0, r1, 0x1
lsls r0, 16
lsrs r0, 16
str r0, [sp]
lsls r1, 1
add r1, r12
strh r2, [r1]
_08045EB4:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
cmp r5, 0x3
bls _08045E92
mov r1, r8
lsls r0, r1, 16
lsrs r6, r0, 16
cmp r6, 0x3
bhi _08045ED2
lsls r0, r6, 1
adds r0, r4
ldrh r0, [r0]
cmp r0, 0
bne _08045E88
_08045ED2:
movs r6, 0
mov r2, r10
ldrh r0, [r2]
cmp r0, 0
beq _08045F5C
_08045EDC:
movs r5, 0
adds r3, r6, 0x1
mov r8, r3
ldr r0, [sp, 0x4]
cmp r5, r0
bcs _08045F44
ldr r2, _08045F24 @ =0x0000ffff
_08045EEA:
ldr r1, _08045F34 @ =gUnknown_20244F8
lsls r0, r5, 1
adds r0, r1
ldrh r1, [r0]
cmp r1, 0
beq _08045F38
lsls r0, r6, 1
mov r3, r10
adds r4, r0, r3
ldrh r0, [r4]
cmp r0, r1
bne _08045F38
adds r1, r0, 0
adds r0, r7, 0
str r2, [sp, 0x8]
bl GiveMoveToMon
lsls r0, 16
lsrs r0, 16
ldr r2, [sp, 0x8]
cmp r0, r2
bne _08045F44
ldrh r1, [r4]
adds r0, r7, 0
bl DeleteFirstMoveAndGiveMoveToMon
b _08045F44
.align 2, 0
_08045F20: .4byte gUnknown_202455C
_08045F24: .4byte 0x0000ffff
_08045F28: .4byte 0x00000121
_08045F2C: .4byte gUnknown_2024564
_08045F30: .4byte gUnknown_2024580
_08045F34: .4byte gUnknown_20244F8
_08045F38:
adds r0, r5, 0x1
lsls r0, 16
lsrs r5, r0, 16
ldr r0, [sp, 0x4]
cmp r5, r0
bcc _08045EEA
_08045F44:
mov r1, r8
lsls r0, r1, 16
lsrs r6, r0, 16
cmp r6, 0x3
bhi _08045F5C
ldr r0, _08045F6C @ =gUnknown_2024564
lsls r1, r6, 1
adds r1, r0
ldrh r1, [r1]
mov r10, r0
cmp r1, 0
bne _08045EDC
_08045F5C:
add sp, 0xC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08045F6C: .4byte gUnknown_2024564
thumb_func_end BuildEggMoveset
thumb_func_start RemoveEggFromDayCare
RemoveEggFromDayCare: @ 8045F70
adds r3, r0, 0
movs r1, 0x8C
lsls r1, 1
adds r0, r3, r1
movs r2, 0
movs r1, 0
strh r1, [r0]
movs r1, 0x8D
lsls r1, 1
adds r0, r3, r1
strb r2, [r0]
bx lr
thumb_func_end RemoveEggFromDayCare
thumb_func_start RejectEggFromDayCare
RejectEggFromDayCare: @ 8045F88
push {lr}
ldr r0, _08045F9C @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl RemoveEggFromDayCare
pop {r0}
bx r0
.align 2, 0
_08045F9C: .4byte gSaveBlock1Ptr
thumb_func_end RejectEggFromDayCare
thumb_func_start sub_8045FA0
sub_8045FA0: @ 8045FA0
push {r4-r7,lr}
adds r4, r0, 0
adds r5, r1, 0
ldrh r1, [r4]
movs r7, 0xB4
lsls r7, 1
cmp r1, r7
beq _08045FB8
movs r0, 0xAF
lsls r0, 1
cmp r1, r0
bne _08045FFA
_08045FB8:
adds r0, r5, 0
movs r1, 0xC
bl GetBoxMonData
lsls r0, 16
lsrs r6, r0, 16
adds r0, r5, 0
adds r0, 0x8C
movs r1, 0xC
bl GetBoxMonData
lsls r0, 16
lsrs r2, r0, 16
ldrh r0, [r4]
cmp r0, r7
bne _08045FE4
cmp r6, 0xDD
beq _08045FE4
cmp r2, 0xDD
beq _08045FE4
movs r0, 0xCA
strh r0, [r4]
_08045FE4:
ldrh r1, [r4]
movs r0, 0xAF
lsls r0, 1
cmp r1, r0
bne _08045FFA
cmp r6, 0xDC
beq _08045FFA
cmp r2, 0xDC
beq _08045FFA
movs r0, 0xB7
strh r0, [r4]
_08045FFA:
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_8045FA0
thumb_func_start sub_8046000
sub_8046000: @ 8046000
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
mov r8, r0
adds r6, r1, 0
movs r4, 0
movs r7, 0x1
_08046010:
movs r0, 0x8C
muls r0, r4
mov r1, r8
adds r5, r1, r0
adds r0, r5, 0
movs r1, 0xB
bl GetBoxMonData
lsls r1, r4, 1
add r1, sp
strh r0, [r1]
lsls r0, 16
lsrs r0, 16
cmp r0, 0x84
bne _08046038
adds r0, r4, 0
eors r0, r7
strb r0, [r6]
strb r4, [r6, 0x1]
b _0804604E
_08046038:
adds r0, r5, 0
bl GetBoxMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFE
bne _0804604E
strb r4, [r6]
adds r0, r4, 0
eors r0, r7
strb r0, [r6, 0x1]
_0804604E:
adds r0, r4, 0x1
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1
bls _08046010
ldrb r0, [r6]
lsls r0, 1
add r0, sp
ldrh r0, [r0]
bl sub_8045970
lsls r0, 16
lsrs r4, r0, 16
cmp r4, 0x1D
bne _08046080
movs r0, 0x8C
lsls r0, 1
add r0, r8
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _08046080
movs r4, 0x20
_08046080:
ldr r0, _080460D0 @ =0x00000183
cmp r4, r0
bne _0804609A
subs r0, 0x6B
add r0, r8
ldrh r1, [r0]
movs r0, 0x80
lsls r0, 8
ands r0, r1
cmp r0, 0
beq _0804609A
movs r4, 0xC1
lsls r4, 1
_0804609A:
ldrb r0, [r6, 0x1]
lsls r0, 1
add r0, sp
ldrh r0, [r0]
cmp r0, 0x84
bne _080460C2
ldrb r1, [r6]
movs r0, 0x8C
muls r0, r1
add r0, r8
bl GetBoxMonGender
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFE
beq _080460C2
ldrb r1, [r6, 0x1]
ldrb r0, [r6]
strb r0, [r6, 0x1]
strb r1, [r6]
_080460C2:
adds r0, r4, 0
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080460D0: .4byte 0x00000183
thumb_func_end sub_8046000
thumb_func_start sub_80460D4
sub_80460D4: @ 80460D4
push {r4-r6,lr}
sub sp, 0x6C
adds r5, r0, 0
add r6, sp, 0x64
adds r1, r6, 0
bl sub_8046000
add r4, sp, 0x68
strh r0, [r4]
adds r0, r4, 0
adds r1, r5, 0
bl sub_8045FA0
ldrh r1, [r4]
mov r0, sp
adds r2, r5, 0
bl SetInitialEggData
mov r0, sp
adds r1, r5, 0
bl InheritIVs
ldrb r0, [r6, 0x1]
movs r2, 0x8C
adds r1, r0, 0
muls r1, r2
adds r1, r5, r1
ldrb r0, [r6]
muls r2, r0
adds r2, r5, r2
mov r0, sp
bl BuildEggMoveset
mov r2, sp
adds r2, 0x6A
movs r0, 0x1
strb r0, [r2]
mov r0, sp
movs r1, 0x2D
bl SetMonData
ldr r0, _0804614C @ =gPlayerParty
movs r1, 0xFA
lsls r1, 1
adds r0, r1
mov r1, sp
movs r2, 0x64
bl memcpy
bl CompactPartySlots
bl CalculatePlayerPartyCount
adds r0, r5, 0
bl RemoveEggFromDayCare
add sp, 0x6C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0804614C: .4byte gPlayerParty
thumb_func_end sub_80460D4
thumb_func_start CreateEgg
CreateEgg: @ 8046150
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x18
adds r7, r0, 0
adds r5, r1, 0
adds r6, r2, 0
lsls r5, 16
lsrs r5, 16
lsls r6, 24
lsrs r6, 24
movs r4, 0
str r4, [sp]
str r4, [sp, 0x4]
str r4, [sp, 0x8]
str r4, [sp, 0xC]
adds r1, r5, 0
movs r2, 0x5
movs r3, 0x20
bl CreateMon
movs r0, 0x12
add r0, sp
mov r8, r0
strb r4, [r0]
movs r1, 0x4
add r0, sp, 0x10
strh r1, [r0]
mov r4, sp
adds r4, 0x13
movs r0, 0x1
mov r9, r0
mov r0, r9
strb r0, [r4]
adds r0, r7, 0
movs r1, 0x26
add r2, sp, 0x10
bl SetMonData
ldr r2, _08046200 @ =gUnknown_825F83E
adds r0, r7, 0
movs r1, 0x2
bl SetMonData
lsls r2, r5, 3
subs r2, r5
lsls r2, 2
ldr r0, _08046204 @ =gUnknown_8254795
adds r2, r0
adds r0, r7, 0
movs r1, 0x20
bl SetMonData
adds r0, r7, 0
movs r1, 0x24
mov r2, r8
bl SetMonData
adds r0, r7, 0
movs r1, 0x3
adds r2, r4, 0
bl SetMonData
cmp r6, 0
beq _080461E2
add r2, sp, 0x14
movs r0, 0xFD
strb r0, [r2]
adds r0, r7, 0
movs r1, 0x23
bl SetMonData
_080461E2:
mov r2, sp
adds r2, 0x15
mov r0, r9
strb r0, [r2]
adds r0, r7, 0
movs r1, 0x2D
bl SetMonData
add sp, 0x18
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08046200: .4byte gUnknown_825F83E
_08046204: .4byte gUnknown_8254795
thumb_func_end CreateEgg
thumb_func_start SetInitialEggData
SetInitialEggData: @ 8046208
push {r4-r6,lr}
mov r6, r9
mov r5, r8
push {r5,r6}
sub sp, 0x14
adds r6, r0, 0
adds r5, r1, 0
adds r4, r2, 0
lsls r5, 16
lsrs r5, 16
bl Random
movs r1, 0x8C
lsls r1, 1
adds r4, r1
ldrh r1, [r4]
lsls r0, 16
orrs r1, r0
movs r0, 0x1
mov r8, r0
str r0, [sp]
str r1, [sp, 0x4]
movs r4, 0
str r4, [sp, 0x8]
str r4, [sp, 0xC]
adds r0, r6, 0
adds r1, r5, 0
movs r2, 0x5
movs r3, 0x20
bl CreateMon
movs r1, 0x12
add r1, sp
mov r9, r1
strb r4, [r1]
movs r1, 0x4
add r0, sp, 0x10
strh r1, [r0]
mov r4, sp
adds r4, 0x13
mov r0, r8
strb r0, [r4]
adds r0, r6, 0
movs r1, 0x26
add r2, sp, 0x10
bl SetMonData
ldr r2, _080462A4 @ =gUnknown_825F83E
adds r0, r6, 0
movs r1, 0x2
bl SetMonData
lsls r2, r5, 3
subs r2, r5
lsls r2, 2
ldr r0, _080462A8 @ =gUnknown_8254795
adds r2, r0
adds r0, r6, 0
movs r1, 0x20
bl SetMonData
adds r0, r6, 0
movs r1, 0x24
mov r2, r9
bl SetMonData
adds r0, r6, 0
movs r1, 0x3
adds r2, r4, 0
bl SetMonData
add sp, 0x14
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080462A4: .4byte gUnknown_825F83E
_080462A8: .4byte gUnknown_8254795
thumb_func_end SetInitialEggData
thumb_func_start GiveEggFromDaycare
GiveEggFromDaycare: @ 80462AC
push {lr}
ldr r0, _080462C0 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl sub_80460D4
pop {r0}
bx r0
.align 2, 0
_080462C0: .4byte gSaveBlock1Ptr
thumb_func_end GiveEggFromDaycare
thumb_func_start sub_80462C4
sub_80462C4: @ 80462C4
push {r4-r7,lr}
sub sp, 0x4
adds r6, r0, 0
movs r7, 0
movs r5, 0
_080462CE:
movs r0, 0x8C
adds r4, r5, 0
muls r4, r0
adds r0, r6, r4
movs r1, 0x5
bl GetBoxMonData
cmp r0, 0
beq _080462EE
adds r1, r6, 0
adds r1, 0x88
adds r1, r4
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
adds r7, 0x1
_080462EE:
adds r5, 0x1
cmp r5, 0x1
bls _080462CE
movs r1, 0x8C
lsls r1, 1
adds r0, r6, r1
ldrh r0, [r0]
cmp r0, 0
bne _08046334
cmp r7, 0x2
bne _08046334
subs r1, 0x4
adds r0, r6, r1
ldrb r0, [r0]
cmp r0, 0xFF
bne _08046334
adds r0, r6, 0
bl GetDaycareCompatibilityScore
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
bl Random
lsls r0, 16
lsrs r0, 16
movs r1, 0x64
muls r0, r1
ldr r1, _0804634C @ =0x0000ffff
bl __udivsi3
cmp r4, r0
bls _08046334
bl sub_8045A48
_08046334:
movs r0, 0x8D
lsls r0, 1
adds r1, r6, r0
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
bne _080463A8
movs r5, 0
b _080463A0
.align 2, 0
_0804634C: .4byte 0x0000ffff
_08046350:
movs r0, 0x64
adds r1, r5, 0
muls r1, r0
ldr r0, _08046388 @ =gPlayerParty
adds r4, r1, r0
adds r0, r4, 0
movs r1, 0x2D
bl GetMonData
cmp r0, 0
beq _0804639E
adds r0, r4, 0
movs r1, 0x4
bl GetMonData
cmp r0, 0
bne _0804639E
adds r0, r4, 0
movs r1, 0x20
bl GetMonData
str r0, [sp]
cmp r0, 0
bne _08046390
ldr r0, _0804638C @ =gUnknown_20370C0
strh r5, [r0]
movs r0, 0x1
b _080463AA
.align 2, 0
_08046388: .4byte gPlayerParty
_0804638C: .4byte gUnknown_20370C0
_08046390:
subs r0, 0x1
str r0, [sp]
adds r0, r4, 0
movs r1, 0x20
mov r2, sp
bl SetMonData
_0804639E:
adds r5, 0x1
_080463A0:
ldr r0, _080463B4 @ =gPlayerPartyCount
ldrb r0, [r0]
cmp r5, r0
bcc _08046350
_080463A8:
movs r0, 0
_080463AA:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_080463B4: .4byte gPlayerPartyCount
thumb_func_end sub_80462C4
thumb_func_start sub_80463B8
sub_80463B8: @ 80463B8
push {r4,lr}
ldr r4, _080463F0 @ =gSaveBlock1Ptr
ldr r0, [r4]
ldr r1, _080463F4 @ =0x00003c98
adds r0, r1
movs r1, 0x5
bl GetBoxMonData
cmp r0, 0
beq _080463D8
ldr r1, [r4]
ldr r0, _080463F8 @ =0x00003d20
adds r1, r0
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
_080463D8:
ldr r0, [r4]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl sub_80462C4
lsls r0, 24
lsrs r0, 24
pop {r4}
pop {r1}
bx r1
.align 2, 0
_080463F0: .4byte gSaveBlock1Ptr
_080463F4: .4byte 0x00003c98
_080463F8: .4byte 0x00003d20
thumb_func_end sub_80463B8
thumb_func_start sub_80463FC
sub_80463FC: @ 80463FC
movs r1, 0x8C
lsls r1, 1
adds r0, r1
ldrh r1, [r0]
negs r0, r1
orrs r0, r1
lsrs r0, 31
bx lr
thumb_func_end sub_80463FC
thumb_func_start _GetDaycareMonNicknames
_GetDaycareMonNicknames: @ 804640C
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
beq _08046436
ldr r1, _08046454 @ =gStringVar1
adds r0, r4, 0
bl GetBoxMonNick
adds r0, r4, 0
movs r1, 0x7
mov r2, sp
bl GetBoxMonData
ldr r0, _08046458 @ =gStringVar3
mov r1, sp
bl StringCopy
_08046436:
adds r4, 0x8C
adds r0, r4, 0
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
beq _0804644C
ldr r1, _0804645C @ =gStringVar2
adds r0, r4, 0
bl GetBoxMonNick
_0804644C:
add sp, 0xC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08046454: .4byte gStringVar1
_08046458: .4byte gStringVar3
_0804645C: .4byte gStringVar2
thumb_func_end _GetDaycareMonNicknames
thumb_func_start GetSelectedMonNickAndSpecies
GetSelectedMonNickAndSpecies: @ 8046460
push {r4,r5,lr}
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r5, 0x64
muls r0, r5
ldr r4, _08046494 @ =gPlayerParty
adds r0, r4
ldr r1, _08046498 @ =gStringVar1
bl GetBoxMonNick
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
muls r0, r5
adds r0, r4
movs r1, 0xB
bl GetBoxMonData
lsls r0, 16
lsrs r0, 16
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_08046494: .4byte gPlayerParty
_08046498: .4byte gStringVar1
thumb_func_end GetSelectedMonNickAndSpecies
thumb_func_start GetDaycareMonNicknames
GetDaycareMonNicknames: @ 804649C
push {lr}
ldr r0, _080464B0 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl _GetDaycareMonNicknames
pop {r0}
bx r0
.align 2, 0
_080464B0: .4byte gSaveBlock1Ptr
thumb_func_end GetDaycareMonNicknames
thumb_func_start sub_80464B4
sub_80464B4: @ 80464B4
push {r4,lr}
ldr r4, _080464D0 @ =gSaveBlock1Ptr
ldr r0, [r4]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl sub_80463FC
lsls r0, 24
cmp r0, 0
beq _080464D4
movs r0, 0x1
b _080464F2
.align 2, 0
_080464D0: .4byte gSaveBlock1Ptr
_080464D4:
ldr r0, [r4]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl CountPokemonInDaycare
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _080464EC
movs r0, 0
b _080464F2
_080464EC:
adds r0, 0x1
lsls r0, 24
lsrs r0, 24
_080464F2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_80464B4
thumb_func_start GetDaycarePokemonCount
GetDaycarePokemonCount: @ 80464F8
push {lr}
ldr r0, _08046518 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl CountPokemonInDaycare
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _08046512
movs r0, 0
_08046512:
pop {r1}
bx r1
.align 2, 0
_08046518: .4byte gSaveBlock1Ptr
thumb_func_end GetDaycarePokemonCount
thumb_func_start EggGroupsOverlap
EggGroupsOverlap: @ 804651C
push {r4-r6,lr}
adds r5, r1, 0
movs r4, 0
adds r1, r0, 0
_08046524:
movs r3, 0
ldrh r0, [r1]
adds r2, r5, 0
_0804652A:
ldrh r6, [r2]
cmp r0, r6
bne _08046534
movs r0, 0x1
b _08046546
_08046534:
adds r2, 0x2
adds r3, 0x1
cmp r3, 0x1
ble _0804652A
adds r1, 0x2
adds r4, 0x1
cmp r4, 0x1
ble _08046524
movs r0, 0
_08046546:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end EggGroupsOverlap
thumb_func_start GetDaycareCompatibilityScore
GetDaycareCompatibilityScore: @ 804654C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x30
str r0, [sp, 0x1C]
movs r7, 0
mov r0, sp
adds r0, 0x8
str r0, [sp, 0x20]
add r1, sp, 0xC
mov r9, r1
mov r2, sp
adds r2, 0x14
str r2, [sp, 0x24]
subs r0, 0x6
ldr r1, _08046600 @ =gBaseStats
mov r10, r1
ldr r5, [sp, 0x20]
mov r8, r0
mov r6, sp
str r2, [sp, 0x28]
mov r2, r9
str r2, [sp, 0x2C]
_0804657E:
movs r0, 0x8C
adds r4, r7, 0
muls r4, r0
ldr r0, [sp, 0x1C]
adds r4, r0, r4
adds r0, r4, 0
movs r1, 0xB
bl GetBoxMonData
strh r0, [r5]
adds r0, r4, 0
movs r1, 0x1
bl GetBoxMonData
ldr r1, [sp, 0x2C]
stm r1!, {r0}
str r1, [sp, 0x2C]
adds r0, r4, 0
movs r1, 0
bl GetBoxMonData
adds r1, r0, 0
ldrh r0, [r5]
bl GetGenderFromSpeciesAndPersonality
lsls r0, 24
lsrs r0, 24
ldr r2, [sp, 0x28]
stm r2!, {r0}
str r2, [sp, 0x28]
ldrh r1, [r5]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r10
ldrb r0, [r0, 0x14]
strh r0, [r6]
ldrh r1, [r5]
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
add r0, r10
ldrb r0, [r0, 0x15]
mov r1, r8
strh r0, [r1]
adds r5, 0x2
movs r2, 0x4
add r8, r2
adds r6, 0x4
adds r7, 0x1
cmp r7, 0x1
bls _0804657E
mov r0, sp
ldrh r1, [r0]
cmp r1, 0xF
beq _080465FC
ldrh r0, [r0, 0x4]
cmp r0, 0xF
beq _080465FC
cmp r1, 0xD
bne _08046604
cmp r0, 0xD
bne _08046608
_080465FC:
movs r0, 0
b _0804665C
.align 2, 0
_08046600: .4byte gBaseStats
_08046604:
cmp r0, 0xD
bne _08046614
_08046608:
ldr r1, [sp, 0xC]
mov r2, r9
ldr r0, [r2, 0x4]
cmp r1, r0
beq _08046656
b _0804665A
_08046614:
ldr r0, [sp, 0x14]
ldr r2, [sp, 0x24]
ldr r1, [r2, 0x4]
cmp r0, r1
beq _080465FC
cmp r0, 0xFF
beq _080465FC
cmp r1, 0xFF
beq _080465FC
add r1, sp, 0x4
mov r0, sp
bl EggGroupsOverlap
lsls r0, 24
cmp r0, 0
beq _080465FC
ldr r0, [sp, 0x20]
ldrh r1, [r0, 0x2]
ldrh r0, [r0]
cmp r0, r1
bne _0804664C
ldr r1, [sp, 0xC]
mov r2, r9
ldr r0, [r2, 0x4]
cmp r1, r0
beq _0804665A
movs r0, 0x46
b _0804665C
_0804664C:
ldr r1, [sp, 0xC]
mov r2, r9
ldr r0, [r2, 0x4]
cmp r1, r0
bne _0804665A
_08046656:
movs r0, 0x14
b _0804665C
_0804665A:
movs r0, 0x32
_0804665C:
add sp, 0x30
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end GetDaycareCompatibilityScore
thumb_func_start GetDaycareCompatibilityScoreFromSave
GetDaycareCompatibilityScoreFromSave: @ 804666C
push {lr}
ldr r0, _08046684 @ =gSaveBlock1Ptr
ldr r0, [r0]
movs r1, 0xBE
lsls r1, 6
adds r0, r1
bl GetDaycareCompatibilityScore
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_08046684: .4byte gSaveBlock1Ptr
thumb_func_end GetDaycareCompatibilityScoreFromSave
thumb_func_start SetDaycareCompatibilityString
SetDaycareCompatibilityString: @ 8046688
push {lr}
bl GetDaycareCompatibilityScoreFromSave
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
movs r1, 0
cmp r0, 0
bne _0804669C
movs r1, 0x3
_0804669C:
cmp r0, 0x14
bne _080466A2
movs r1, 0x2
_080466A2:
cmp r0, 0x32
bne _080466A8
movs r1, 0x1
_080466A8:
cmp r2, 0x46
bne _080466AE
movs r1, 0
_080466AE:
ldr r0, _080466C0 @ =gStringVar4
ldr r2, _080466C4 @ =gUnknown_825F82C
lsls r1, 2
adds r1, r2
ldr r1, [r1]
bl StringCopy
pop {r0}
bx r0
.align 2, 0
_080466C0: .4byte gStringVar4
_080466C4: .4byte gUnknown_825F82C
thumb_func_end SetDaycareCompatibilityString
thumb_func_start NameHasGenderSymbol
NameHasGenderSymbol: @ 80466C8
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
lsls r1, 24
lsrs r5, r1, 24
mov r2, sp
mov r1, sp
movs r0, 0
strb r0, [r1, 0x1]
strb r0, [r2]
movs r3, 0
ldrb r0, [r4]
cmp r0, 0xFF
beq _0804670C
_080466E4:
adds r1, r4, r3
ldrb r0, [r1]
cmp r0, 0xB5
bne _080466F2
ldrb r0, [r2]
adds r0, 0x1
strb r0, [r2]
_080466F2:
ldrb r0, [r1]
cmp r0, 0xB6
bne _080466FE
ldrb r0, [r2, 0x1]
adds r0, 0x1
strb r0, [r2, 0x1]
_080466FE:
adds r0, r3, 0x1
lsls r0, 24
lsrs r3, r0, 24
adds r0, r4, r3
ldrb r0, [r0]
cmp r0, 0xFF
bne _080466E4
_0804670C:
cmp r5, 0
bne _08046720
mov r0, sp
ldrb r0, [r0]
cmp r0, 0
beq _08046720
mov r0, sp
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _08046734
_08046720:
cmp r5, 0xFE
bne _08046738
mov r0, sp
ldrb r0, [r0, 0x1]
cmp r0, 0
beq _08046738
mov r0, sp
ldrb r0, [r0]
cmp r0, 0
bne _08046738
_08046734:
movs r0, 0x1
b _0804673A
_08046738:
movs r0, 0
_0804673A:
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end NameHasGenderSymbol
thumb_func_start AppendGenderSymbol
AppendGenderSymbol: @ 8046744
push {r4,lr}
adds r4, r0, 0
lsls r1, 24
lsrs r1, 24
cmp r1, 0
bne _08046764
movs r1, 0
bl NameHasGenderSymbol
lsls r0, 24
cmp r0, 0
bne _08046780
ldr r1, _08046760 @ =gUnknown_8261EC1
b _08046782
.align 2, 0
_08046760: .4byte gUnknown_8261EC1
_08046764:
cmp r1, 0xFE
bne _08046780
adds r0, r4, 0
movs r1, 0xFE
bl NameHasGenderSymbol
lsls r0, 24
cmp r0, 0
bne _08046780
ldr r1, _0804677C @ =gUnknown_8261EC3
b _08046782
.align 2, 0
_0804677C: .4byte gUnknown_8261EC3
_08046780:
ldr r1, _08046790 @ =gUnknown_8261EC5
_08046782:
adds r0, r4, 0
bl StringAppend
pop {r4}
pop {r1}
bx r1
.align 2, 0
_08046790: .4byte gUnknown_8261EC5
thumb_func_end AppendGenderSymbol
thumb_func_start AppendMonGenderSymbol
AppendMonGenderSymbol: @ 8046794
push {r4,lr}
adds r4, r0, 0
adds r0, r1, 0
bl GetBoxMonGender
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl AppendGenderSymbol
pop {r4}
pop {r1}
bx r1
thumb_func_end AppendMonGenderSymbol
thumb_func_start GetDaycareLevelMenuText
GetDaycareLevelMenuText: @ 80467B0
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x28
mov r8, r0
adds r7, r1, 0
movs r0, 0xFF
strb r0, [r7]
movs r6, 0
add r0, sp, 0x14
mov r9, r0
_080467C8:
movs r0, 0x8C
adds r4, r6, 0
muls r4, r0
add r4, r8
lsls r0, r6, 2
adds r0, r6
lsls r0, 2
mov r1, sp
adds r5, r1, r0
adds r0, r4, 0
adds r1, r5, 0
bl GetBoxMonNick
adds r0, r5, 0
adds r1, r4, 0
bl AppendMonGenderSymbol
adds r0, r6, 0x1
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x1
bls _080467C8
adds r0, r7, 0
mov r1, sp
bl StringCopy
ldr r4, _0804682C @ =gUnknown_825F83C
adds r0, r7, 0
adds r1, r4, 0
bl StringAppend
adds r0, r7, 0
mov r1, r9
bl StringAppend
adds r0, r7, 0
adds r1, r4, 0
bl StringAppend
ldr r1, _08046830 @ =gUnknown_84161C8
adds r0, r7, 0
bl StringAppend
add sp, 0x28
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0804682C: .4byte gUnknown_825F83C
_08046830: .4byte gUnknown_84161C8
thumb_func_end GetDaycareLevelMenuText
thumb_func_start GetDaycareLevelMenuLevelText
GetDaycareLevelMenuLevelText: @ 8046834
push {r4-r6,lr}
sub sp, 0x14
adds r6, r0, 0
adds r4, r1, 0
movs r0, 0xFF
strb r0, [r4]
movs r5, 0
_08046842:
adds r0, r4, 0
ldr r1, _08046890 @ =gUnknown_8416223
bl StringAppend
movs r0, 0x8C
adds r2, r5, 0
muls r2, r0
adds r0, r6, r2
adds r1, r6, 0
adds r1, 0x88
adds r1, r2
ldr r1, [r1]
bl GetLevelAfterDaycareSteps
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
mov r0, sp
movs r2, 0
movs r3, 0x3
bl ConvertIntToDecimalStringN
adds r0, r4, 0
mov r1, sp
bl StringAppend
adds r0, r4, 0
ldr r1, _08046894 @ =gUnknown_825F83C
bl StringAppend
adds r0, r5, 0x1
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
bls _08046842
add sp, 0x14
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08046890: .4byte gUnknown_8416223
_08046894: .4byte gUnknown_825F83C
thumb_func_end GetDaycareLevelMenuLevelText
thumb_func_start DaycareAddTextPrinter
DaycareAddTextPrinter: @ 8046898
push {r4,r5,lr}
sub sp, 0x10
str r1, [sp]
mov r1, sp
strb r0, [r1, 0x4]
movs r0, 0x3
strb r0, [r1, 0x5]
mov r0, sp
strb r2, [r0, 0x6]
strb r3, [r0, 0x7]
strb r2, [r0, 0x8]
strb r3, [r0, 0x9]
mov r3, sp
ldrb r1, [r3, 0xC]
movs r2, 0x10
negs r2, r2
adds r0, r2, 0
ands r0, r1
strb r0, [r3, 0xC]
ldr r3, _08046908 @ =gTextFlags
ldrb r1, [r3]
movs r0, 0x3
negs r0, r0
ands r0, r1
strb r0, [r3]
mov r0, sp
movs r5, 0x1
movs r1, 0x1
strb r1, [r0, 0xA]
strb r1, [r0, 0xB]
mov r3, sp
ldrb r1, [r3, 0xC]
movs r4, 0xF
adds r0, r4, 0
ands r0, r1
movs r1, 0x20
orrs r0, r1
strb r0, [r3, 0xC]
mov r1, sp
ldrb r0, [r1, 0xD]
ands r2, r0
orrs r2, r5
strb r2, [r1, 0xD]
ands r2, r4
movs r0, 0x30
orrs r2, r0
strb r2, [r1, 0xD]
mov r0, sp
movs r1, 0xFF
movs r2, 0
bl AddTextPrinter
add sp, 0x10
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08046908: .4byte gTextFlags
thumb_func_end DaycareAddTextPrinter
thumb_func_start DaycarePrintMonNick
DaycarePrintMonNick: @ 804690C
push {r4-r6,lr}
sub sp, 0x14
adds r5, r0, 0
adds r4, r1, 0
adds r6, r3, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x8C
muls r0, r2
adds r5, r0
adds r0, r5, 0
mov r1, sp
bl GetBoxMonNick
mov r0, sp
adds r1, r5, 0
bl AppendMonGenderSymbol
adds r0, r4, 0
mov r1, sp
movs r2, 0x8
adds r3, r6, 0
bl DaycareAddTextPrinter
add sp, 0x14
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end DaycarePrintMonNick
thumb_func_start DaycarePrintMonLvl
DaycarePrintMonLvl: @ 8046944
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x14
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
mov r8, r3
lsls r5, 24
lsrs r5, 24
ldr r1, _080469B0 @ =gUnknown_8416223
mov r0, sp
bl strcpy
movs r0, 0x8C
adds r1, r6, 0
muls r1, r0
adds r0, r4, r1
adds r4, 0x88
adds r4, r1
ldr r1, [r4]
bl GetLevelAfterDaycareSteps
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
add r4, sp, 0xC
adds r0, r4, 0
movs r2, 0
movs r3, 0x3
bl ConvertIntToDecimalStringN
mov r0, sp
adds r1, r4, 0
bl StringAppend
movs r0, 0x3
mov r1, sp
movs r2, 0
bl GetStringWidth
movs r2, 0x84
subs r2, r0
adds r0, r5, 0
mov r1, sp
mov r3, r8
bl DaycareAddTextPrinter
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080469B0: .4byte gUnknown_8416223
thumb_func_end DaycarePrintMonLvl
thumb_func_start DaycarePrintMonInfo
DaycarePrintMonInfo: @ 80469B4
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r6, r1, 0
lsls r0, 24
lsrs r7, r0, 24
lsls r2, 24
lsrs r5, r2, 24
cmp r6, 0x1
bhi _080469EE
ldr r0, _080469F8 @ =gSaveBlock1Ptr
mov r8, r0
ldr r0, [r0]
movs r4, 0xBE
lsls r4, 6
adds r0, r4
adds r1, r7, 0
adds r2, r6, 0
adds r3, r5, 0
bl DaycarePrintMonNick
mov r1, r8
ldr r0, [r1]
adds r0, r4
adds r1, r7, 0
adds r2, r6, 0
adds r3, r5, 0
bl DaycarePrintMonLvl
_080469EE:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080469F8: .4byte gSaveBlock1Ptr
thumb_func_end DaycarePrintMonInfo
thumb_func_start Task_HandleDaycareLevelMenuInput
Task_HandleDaycareLevelMenuInput: @ 80469FC
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r1, _08046A2C @ =gTasks
lsls r0, r5, 2
adds r0, r5
lsls r0, 3
adds r4, r0, r1
ldrb r0, [r4, 0x8]
bl ListMenuHandleInput
adds r1, r0, 0
ldr r0, _08046A30 @ =gMain
ldrh r2, [r0, 0x2E]
movs r0, 0x1
ands r0, r2
cmp r0, 0
beq _08046A7C
cmp r1, 0x1
bls _08046A34
cmp r1, 0x5
beq _08046A40
b _08046A46
.align 2, 0
_08046A2C: .4byte gTasks
_08046A30: .4byte gMain
_08046A34:
ldr r0, _08046A3C @ =gUnknown_20370D0
strh r1, [r0]
b _08046A46
.align 2, 0
_08046A3C: .4byte gUnknown_20370D0
_08046A40:
ldr r1, _08046A74 @ =gUnknown_20370D0
movs r0, 0x2
strh r0, [r1]
_08046A46:
ldr r0, _08046A78 @ =gTasks
lsls r4, r5, 2
adds r4, r5
lsls r4, 3
adds r4, r0
ldrb r0, [r4, 0x8]
movs r1, 0
movs r2, 0
bl sub_810713C
ldrb r0, [r4, 0xA]
movs r1, 0x1
bl sub_80F6F9C
ldrb r0, [r4, 0xA]
bl RemoveWindow
adds r0, r5, 0
bl DestroyTask
bl EnableBothScriptContexts
b _08046AAC
.align 2, 0
_08046A74: .4byte gUnknown_20370D0
_08046A78: .4byte gTasks
_08046A7C:
movs r1, 0x2
adds r0, r1, 0
ands r0, r2
cmp r0, 0
beq _08046AAC
ldr r0, _08046AB4 @ =gUnknown_20370D0
strh r1, [r0]
ldrb r0, [r4, 0x8]
movs r1, 0
movs r2, 0
bl sub_810713C
ldrb r0, [r4, 0xA]
movs r1, 0x1
bl sub_80F6F9C
ldrb r0, [r4, 0xA]
bl RemoveWindow
adds r0, r5, 0
bl DestroyTask
bl EnableBothScriptContexts
_08046AAC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08046AB4: .4byte gUnknown_20370D0
thumb_func_end Task_HandleDaycareLevelMenuInput
thumb_func_start ShowDaycareLevelMenu
ShowDaycareLevelMenu: @ 8046AB8
push {r4,r5,lr}
sub sp, 0x18
ldr r0, _08046B18 @ =gUnknown_825F7F4
bl AddWindow
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
movs r1, 0
bl sub_80F6F1C
mov r1, sp
ldr r0, _08046B1C @ =gUnknown_825F814
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
mov r0, sp
strb r4, [r0, 0x10]
movs r1, 0
movs r2, 0
bl ListMenuInit
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
adds r0, r4, 0
movs r1, 0x3
bl CopyWindowToVram
ldr r0, _08046B20 @ =Task_HandleDaycareLevelMenuInput
movs r1, 0x3
bl CreateTask
lsls r0, 24
lsrs r0, 24
ldr r2, _08046B24 @ =gTasks
lsls r1, r0, 2
adds r1, r0
lsls r1, 3
adds r1, r2
strh r5, [r1, 0x8]
strh r4, [r1, 0xA]
add sp, 0x18
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_08046B18: .4byte gUnknown_825F7F4
_08046B1C: .4byte gUnknown_825F814
_08046B20: .4byte Task_HandleDaycareLevelMenuInput
_08046B24: .4byte gTasks
thumb_func_end ShowDaycareLevelMenu
thumb_func_start ChooseSendDaycareMon
ChooseSendDaycareMon: @ 8046B28
push {lr}
bl sub_8128370
ldr r1, _08046B38 @ =gMain
ldr r0, _08046B3C @ =c2_exit_to_overworld_2_switch
str r0, [r1, 0x8]
pop {r0}
bx r0
.align 2, 0
_08046B38: .4byte gMain
_08046B3C: .4byte c2_exit_to_overworld_2_switch
thumb_func_end ChooseSendDaycareMon
thumb_func_start sub_8046B40
sub_8046B40: @ 8046B40
push {lr}
bl GetCursorSelectionMonId
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
muls r0, r1
ldr r1, _08046B64 @ =gPlayerParty
adds r0, r1
ldr r1, _08046B68 @ =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, _08046B6C @ =0x00003c98
adds r1, r2
bl StorePokemonInDaycare
pop {r0}
bx r0
.align 2, 0
_08046B64: .4byte gPlayerParty
_08046B68: .4byte gSaveBlock1Ptr
_08046B6C: .4byte 0x00003c98
thumb_func_end sub_8046B40
thumb_func_start sub_8046B70
sub_8046B70: @ 8046B70
push {lr}
ldr r0, _08046B88 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08046B8C @ =0x00003c98
adds r0, r1
bl GetDaycareCostForSelectedMon
ldr r1, _08046B90 @ =gSpecialVar_0x8005
strh r0, [r1]
pop {r0}
bx r0
.align 2, 0
_08046B88: .4byte gSaveBlock1Ptr
_08046B8C: .4byte 0x00003c98
_08046B90: .4byte gSpecialVar_0x8005
thumb_func_end sub_8046B70
thumb_func_start sub_8046B94
sub_8046B94: @ 8046B94
push {lr}
ldr r0, _08046BAC @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08046BB0 @ =0x00003c98
adds r0, r1
movs r1, 0xB
bl GetBoxMonData
cmp r0, 0
bne _08046BB4
movs r0, 0
b _08046BB6
.align 2, 0
_08046BAC: .4byte gSaveBlock1Ptr
_08046BB0: .4byte 0x00003c98
_08046BB4:
movs r0, 0x1
_08046BB6:
pop {r1}
bx r1
thumb_func_end sub_8046B94
thumb_func_start sub_8046BBC
sub_8046BBC: @ 8046BBC
push {lr}
ldr r0, _08046BD4 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08046BD8 @ =0x00003c98
adds r0, r1
bl GetNumLevelsGainedForDaycareMon
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.align 2, 0
_08046BD4: .4byte gSaveBlock1Ptr
_08046BD8: .4byte 0x00003c98
thumb_func_end sub_8046BBC
thumb_func_start sub_8046BDC
sub_8046BDC: @ 8046BDC
push {lr}
ldr r0, _08046BF4 @ =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, _08046BF8 @ =0x00003c98
adds r0, r1
bl TakeSelectedPokemonFromDaycare
lsls r0, 16
lsrs r0, 16
pop {r1}
bx r1
.align 2, 0
_08046BF4: .4byte gSaveBlock1Ptr
_08046BF8: .4byte 0x00003c98
thumb_func_end sub_8046BDC
.align 2, 0 @ Don't pad with nop.