pmd-red/asm/code_8048480.s
mid-kid 99a038284b Translate all .include to #include
This decision was made to reduce the complexity of using .include whilst
juggling with tools/scaninc and tools/preproc:
- tools/scaninc doesn't apply the proper search rules for .include (it
  assumes #include behavior). In particular, it doesn't consider paths
  starting from $PWD, and doesn't scan the included files as a result.
- .include had to be processed before #include by preproc in many cases,
  as code was being included that had to be preprocessed by CPP (think
  of #define). This contradicts standard GCC behavior.

To make include paths consistent across the asm/ data/ and src/
directories, the following files were moved:
- constants/ → include/asm/constants/
- asm/macros/ → include/asm/macros/
- asm/macros.inc → include/asm/macros.inc
- include/macros/m4a.inc → include/asm/macros/m4a.inc

As part of the necessary changes for this to work, the scaninc method in
the makefile was improved to generate .d files that don't choke when
files are missing.
2021-12-20 16:29:12 +01:00

1947 lines
30 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_8048524
sub_8048524:
push {r4-r6,lr}
sub sp, 0x4
adds r6, r0, 0
adds r4, r1, 0
ldr r0, [r4, 0x70]
adds r5, r0, 0
ldrb r0, [r5, 0x7]
cmp r0, 0
beq _08048542
adds r0, r6, 0
movs r2, 0
movs r3, 0x5
bl sub_8078A58
b _080485A4
_08048542:
ldr r0, _08048560
adds r1, r4, 0
movs r2, 0
bl SetMessageArgument
adds r0, r4, 0
movs r1, 0x12
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _08048568
ldr r0, _08048564
b _08048586
.align 2, 0
_08048560: .4byte gAvailablePokemonNames
_08048564: .4byte gPtrSelfHealPreventedHungerMessage
_08048568:
movs r0, 0x9E
lsls r0, 1
adds r5, r0
ldr r0, [r5]
bl GetBellyRoundedUp
cmp r0, 0
beq _08048598
mov r0, sp
movs r1, 0
bl sub_80943A0
ldr r0, [sp]
str r0, [r5]
ldr r0, _08048594
_08048586:
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
b _080485A4
.align 2, 0
_08048594: .4byte gUnknown_80F9740
_08048598:
ldr r0, _080485AC
ldr r2, [r0]
adds r0, r6, 0
adds r1, r4, 0
bl sub_80522F4
_080485A4:
add sp, 0x4
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080485AC: .4byte gUnknown_80F9760
thumb_func_end sub_8048524
thumb_func_start sub_80485B0
sub_80485B0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
mov r9, r0
mov r8, r1
movs r0, 0
str r0, [sp]
movs r2, 0x1
mov r10, r2
ldr r4, [r1, 0x70]
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0804865C
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _080485DE
movs r0, 0x3
mov r10, r0
_080485DE:
ldrb r0, [r4, 0x7]
cmp r0, 0
beq _0804867C
movs r2, 0x8C
lsls r2, 1
adds r4, r2
adds r5, r4, 0
movs r7, 0x3
_080485EE:
ldrb r1, [r4]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0804862C
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0804862C
adds r0, r5, 0
bl GetMovePower
cmp r0, 0
beq _0804862C
ldrb r6, [r4, 0x5]
adds r0, r5, 0
bl GetMoveUnk12
adds r1, r0, 0
ldrb r0, [r4, 0x5]
add r0, r10
strb r0, [r4, 0x5]
ldrb r0, [r4, 0x5]
cmp r0, r1
blt _08048622
strb r1, [r4, 0x5]
_08048622:
ldrb r0, [r4, 0x5]
cmp r6, r0
beq _0804862C
movs r2, 0x1
str r2, [sp]
_0804862C:
adds r4, 0x8
adds r5, 0x8
subs r7, 0x1
cmp r7, 0
bge _080485EE
ldr r0, [sp]
cmp r0, 0
beq _08048668
ldr r0, _08048660
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
mov r2, r10
cmp r2, 0x1
beq _08048688
movs r0, 0xA
movs r1, 0x40
bl sub_803E708
ldr r0, _08048664
b _0804866A
.align 2, 0
_0804865C: .4byte gUnknown_80F4F46
_08048660: .4byte gUnknown_80FE454
_08048664: .4byte gUnknown_80FE434
_08048668:
ldr r0, _08048678
_0804866A:
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
b _08048688
.align 2, 0
_08048678: .4byte gUnknown_80FE40C
_0804867C:
ldr r0, _08048698
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
_08048688:
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08048698: .4byte gUnknown_80FE40C
thumb_func_end sub_80485B0
thumb_func_start sub_804869C
sub_804869C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x1C
adds r4, r0, 0
adds r7, r1, 0
lsls r2, 24
cmp r2, 0
beq _08048724
ldr r5, [r7, 0x70]
ldr r0, _080486D4
ldr r0, [r0]
ldr r1, _080486D8
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _080486E4
ldr r0, _080486DC
movs r1, 0
ldrsh r6, [r0, r1]
ldr r0, _080486E0
ldr r2, [r0]
adds r0, r4, 0
adds r1, r7, 0
bl sub_80522F4
b _080486EA
.align 2, 0
_080486D4: .4byte gDungeonGlobalData
_080486D8: .4byte 0x00000675
_080486DC: .4byte gUnknown_80F4FA8
_080486E0: .4byte gUnknown_80FEAE8
_080486E4:
ldr r0, _0804871C
movs r1, 0
ldrsh r6, [r0, r1]
_080486EA:
adds r0, r5, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x1
bne _080486FC
adds r0, r4, 0
adds r1, r7, 0
bl SendImmobilizeEndMessage
_080486FC:
add r0, sp, 0x18
str r0, [sp]
movs r1, 0
str r1, [sp, 0x4]
ldr r0, _08048720
str r0, [sp, 0x8]
str r1, [sp, 0xC]
str r1, [sp, 0x10]
str r1, [sp, 0x14]
adds r0, r4, 0
adds r1, r7, 0
adds r2, r6, 0
movs r3, 0x1
bl sub_806F370
b _080487B6
.align 2, 0
_0804871C: .4byte gUnknown_80F4FA4
_08048720: .4byte 0x00000216
_08048724:
adds r0, r4, 0
bl sub_8042520
adds r0, r4, 0
bl sub_80696FC
adds r5, r0, 0
cmp r5, 0
bne _08048748
ldr r0, _08048744
ldr r2, [r0]
adds r0, r4, 0
adds r1, r7, 0
bl sub_80522F4
b _080487B6
.align 2, 0
_08048744: .4byte gUnknown_80FDBA0
_08048748:
ldr r1, [r5, 0x70]
mov r8, r1
ldr r0, _08048770
ldr r0, [r0]
ldr r1, _08048774
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _08048780
ldr r0, _08048778
movs r1, 0
ldrsh r6, [r0, r1]
ldr r0, _0804877C
ldr r2, [r0]
adds r0, r4, 0
adds r1, r7, 0
bl sub_80522F4
b _08048786
.align 2, 0
_08048770: .4byte gDungeonGlobalData
_08048774: .4byte 0x00000675
_08048778: .4byte gUnknown_80F4FAA
_0804877C: .4byte gUnknown_80FEAE8
_08048780:
ldr r0, _080487C4
movs r1, 0
ldrsh r6, [r0, r1]
_08048786:
mov r0, r8
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x1
bne _08048798
adds r0, r4, 0
adds r1, r5, 0
bl SendImmobilizeEndMessage
_08048798:
add r0, sp, 0x18
str r0, [sp]
movs r1, 0
str r1, [sp, 0x4]
ldr r0, _080487C8
str r0, [sp, 0x8]
str r1, [sp, 0xC]
str r1, [sp, 0x10]
str r1, [sp, 0x14]
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
movs r3, 0x1
bl sub_806F370
_080487B6:
add sp, 0x1C
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_080487C4: .4byte gUnknown_80F4FA6
_080487C8: .4byte 0x00000216
thumb_func_end sub_804869C
thumb_func_start sub_80487CC
sub_80487CC:
push {r4,lr}
sub sp, 0x4
movs r4, 0x1
str r4, [sp]
bl sub_8078B5C
add sp, 0x4
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_80487CC
thumb_func_start sub_80487E0
sub_80487E0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x4
mov r9, r0
mov r8, r1
lsls r3, r2, 24
ldr r5, [r1, 0x70]
ldr r4, _08048858
lsrs r3, 23
adds r0, r5, 0
adds r0, 0x5C
ldrb r0, [r0]
lsls r1, r0, 3
adds r1, r0
lsls r1, 2
adds r1, r3, r1
adds r0, r1, r4
movs r2, 0
ldrsh r6, [r0, r2]
adds r0, r5, 0
adds r0, 0x5D
ldrb r2, [r0]
lsls r0, r2, 3
adds r0, r2
lsls r0, 2
adds r3, r0
adds r4, r3, r4
movs r2, 0
ldrsh r0, [r4, r2]
adds r6, r0
ldr r0, _0804885C
adds r1, r0
movs r4, 0
ldrsh r2, [r1, r4]
adds r3, r0
movs r1, 0
ldrsh r0, [r3, r1]
adds r2, r0
movs r0, 0x1
str r0, [sp]
mov r0, r9
mov r1, r8
movs r3, 0
bl sub_8078B5C
ldrb r0, [r5, 0x6]
cmp r0, 0
bne _08048906
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048852
cmp r0, 0x47
bne _08048860
_08048852:
movs r0, 0x1
b _08048862
.align 2, 0
_08048858: .4byte gTypeGummiIQBoost
_0804885C: .4byte gUnknown_810A808
_08048860:
movs r0, 0
_08048862:
cmp r0, 0
bne _08048906
movs r2, 0xC
ldrsh r7, [r5, r2]
ldrh r0, [r5, 0xC]
adds r0, r6
strh r0, [r5, 0xC]
adds r2, r7, r6
lsls r0, 16
cmp r0, 0
bgt _0804887C
movs r0, 0x1
strh r0, [r5, 0xC]
_0804887C:
movs r4, 0xC
ldrsh r0, [r5, r4]
ldr r1, _080488A0
cmp r0, r1
ble _08048888
strh r1, [r5, 0xC]
_08048888:
movs r1, 0xC
ldrsh r0, [r5, r1]
cmp r7, r0
bne _080488A8
ldr r0, _080488A4
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
b _08048906
.align 2, 0
_080488A0: .4byte 0x000003e7
_080488A4: .4byte gUnknown_80FD644
_080488A8:
subs r0, r2, r7
movs r2, 0
cmp r0, 0x8
bgt _080488BE
movs r2, 0x1
cmp r0, 0x4
bgt _080488BE
movs r2, 0x3
cmp r0, 0x2
ble _080488BE
movs r2, 0x2
_080488BE:
movs r4, 0xC
ldrsh r0, [r5, r4]
subs r0, r7
movs r4, 0
cmp r0, 0x8
bgt _080488D8
movs r4, 0x1
cmp r0, 0x4
bgt _080488D8
movs r4, 0x3
cmp r0, 0x2
ble _080488D8
movs r4, 0x2
_080488D8:
ldr r1, _08048914
lsls r0, r2, 2
adds r0, r1
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
ldr r1, _08048918
lsls r0, r4, 2
adds r0, r1
ldr r2, [r0]
mov r0, r9
mov r1, r8
bl sub_80522F4
mov r0, r8
bl LoadIQSkills
adds r0, r5, 0
adds r1, r7, 0
bl sub_806A7E8
_08048906:
add sp, 0x4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08048914: .4byte gUnknown_80FD648
_08048918: .4byte gUnknown_80FD6E8
thumb_func_end sub_80487E0
thumb_func_start sub_804891C
sub_804891C:
push {lr}
movs r2, 0x3
bl sub_80793B0
pop {r0}
bx r0
thumb_func_end sub_804891C
thumb_func_start sub_8048928
sub_8048928:
push {lr}
movs r2, 0x3
bl sub_8079420
pop {r0}
bx r0
thumb_func_end sub_8048928
thumb_func_start sub_8048934
sub_8048934:
push {lr}
movs r2, 0x3
bl sub_8079490
pop {r0}
bx r0
thumb_func_end sub_8048934
thumb_func_start sub_8048940
sub_8048940:
push {lr}
movs r2, 0x3
bl sub_8079500
pop {r0}
bx r0
thumb_func_end sub_8048940
thumb_func_start nullsub_94
nullsub_94:
bx lr
thumb_func_end nullsub_94
thumb_func_start sub_8048950
sub_8048950:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
mov r10, r0
mov r8, r1
ldrb r0, [r1, 0x2]
bl GetItemMove
lsls r0, 16
lsrs r0, 16
mov r9, r0
mov r0, r8
ldrb r1, [r0]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048988
ldr r0, _08048984
_08048978:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
b _08048A58
.align 2, 0
_08048984: .4byte gUnknown_80FE3E8
_08048988:
mov r1, r8
ldrb r0, [r1, 0x2]
bl IsHMItem
lsls r0, 24
cmp r0, 0
beq _080489A0
ldr r0, _0804899C
b _08048978
.align 2, 0
_0804899C: .4byte gPtrCantUseInDungeonMessage
_080489A0:
movs r7, 0
_080489A2:
ldr r0, _080489FC
ldr r0, [r0]
lsls r1, r7, 2
ldr r2, _08048A00
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048A12
ldr r6, [r4, 0x70]
movs r0, 0x2
ldrsh r1, [r6, r0]
mov r0, r9
bl CanMonLearnMove
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0
movs r1, 0
bl CannotMove
lsls r0, 24
cmp r0, 0
beq _080489DC
movs r5, 0
_080489DC:
adds r0, r6, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _080489E8
movs r5, 0
_080489E8:
adds r0, r6, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _080489F6
cmp r0, 0x47
bne _08048A04
_080489F6:
movs r0, 0x1
b _08048A06
.align 2, 0
_080489FC: .4byte gDungeonGlobalData
_08048A00: .4byte 0x0001357c
_08048A04:
movs r0, 0
_08048A06:
cmp r0, 0
beq _08048A0C
movs r5, 0
_08048A0C:
ldr r1, _08048A50
adds r0, r6, r1
strb r5, [r0]
_08048A12:
adds r7, 0x1
cmp r7, 0x3
ble _080489A2
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048A58
mov r0, r10
mov r1, r8
bl sub_804245C
adds r0, r4, 0
mov r1, r9
bl sub_8072938
lsls r0, 24
cmp r0, 0
beq _08048A58
ldr r2, _08048A54
mov r0, r10
movs r1, 0
bl sub_8044E24
movs r0, 0x1
b _08048A5A
.align 2, 0
_08048A50: .4byte 0x00000157
_08048A54: .4byte 0x00000141
_08048A58:
movs r0, 0
_08048A5A:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048950
thumb_func_start sub_8048A68
sub_8048A68:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
mov r9, r0
mov r8, r1
ldrb r1, [r1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048A90
ldr r0, _08048A8C
_08048A80:
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
b _08048B8C
.align 2, 0
_08048A8C: .4byte gUnknown_80FE3E8
_08048A90:
ldr r0, _08048AA4
ldr r0, [r0]
ldr r1, _08048AA8
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _08048AB0
ldr r0, _08048AAC
b _08048A80
.align 2, 0
_08048AA4: .4byte gDungeonGlobalData
_08048AA8: .4byte 0x0000065c
_08048AAC: .4byte gUnknown_80F9BD8
_08048AB0:
movs r7, 0
_08048AB2:
ldr r0, _08048B24
ldr r0, [r0]
lsls r1, r7, 2
ldr r2, _08048B28
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048B4A
ldr r5, [r4, 0x70]
movs r6, 0x1
ldrb r0, [r5, 0xA]
cmp r0, 0x3
bhi _08048AF4
ldr r2, _08048B2C
ldrb r1, [r5, 0xA]
movs r0, 0x64
muls r1, r0
ldr r0, _08048B30
adds r1, r0
ldr r0, [r2]
adds r0, r1
movs r1, 0xA
ldrsh r0, [r0, r1]
bl sub_806A538
lsls r0, 24
cmp r0, 0
beq _08048AF6
_08048AF4:
movs r6, 0
_08048AF6:
adds r0, r4, 0
movs r1, 0
bl CannotMove
lsls r0, 24
cmp r0, 0
beq _08048B06
movs r6, 0
_08048B06:
adds r0, r5, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08048B12
movs r6, 0
_08048B12:
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048B20
cmp r0, 0x47
bne _08048B34
_08048B20:
movs r0, 0x1
b _08048B36
.align 2, 0
_08048B24: .4byte gDungeonGlobalData
_08048B28: .4byte 0x0001357c
_08048B2C: .4byte gRecruitedPokemonRef
_08048B30: .4byte 0x00008df8
_08048B34:
movs r0, 0
_08048B36:
cmp r0, 0
beq _08048B3C
movs r6, 0
_08048B3C:
ldrb r0, [r5, 0x7]
cmp r0, 0
beq _08048B44
movs r6, 0
_08048B44:
ldr r2, _08048B84
adds r0, r5, r2
strb r6, [r0]
_08048B4A:
adds r7, 0x1
cmp r7, 0x3
ble _08048AB2
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _08048B8C
mov r0, r9
mov r1, r8
bl sub_804245C
ldr r0, _08048B88
ldr r0, [r0]
adds r0, 0xBC
str r4, [r0]
movs r2, 0xA1
lsls r2, 1
mov r0, r9
movs r1, 0
bl sub_8044E24
movs r0, 0x1
b _08048B8E
.align 2, 0
_08048B84: .4byte 0x00000157
_08048B88: .4byte gDungeonGlobalData
_08048B8C:
movs r0, 0
_08048B8E:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048A68
thumb_func_start sub_8048B9C
sub_8048B9C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x20
mov r9, r0
movs r0, 0
mov r8, r0
mov r2, r9
ldr r0, [r2, 0x70]
adds r6, r0, 0
adds r6, 0x44
ldrb r1, [r1]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048BD4
ldr r0, _08048BD0
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
movs r0, 0
b _08048D40
.align 2, 0
_08048BD0: .4byte gUnknown_80FE3E8
_08048BD4:
movs r2, 0
_08048BD6:
ldr r0, _08048C28
ldr r0, [r0]
lsls r1, r2, 2
ldr r3, _08048C2C
adds r0, r3
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
str r2, [sp, 0x1C]
bl EntityExists
lsls r0, 24
ldr r2, [sp, 0x1C]
cmp r0, 0
beq _08048C3E
ldr r5, [r4, 0x70]
movs r7, 0x1
adds r0, r4, 0
movs r1, 0
bl CannotMove
lsls r0, 24
ldr r2, [sp, 0x1C]
cmp r0, 0
beq _08048C0A
movs r7, 0
_08048C0A:
adds r0, r5, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _08048C16
movs r7, 0
_08048C16:
adds r0, r5, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
beq _08048C24
cmp r0, 0x47
bne _08048C30
_08048C24:
movs r0, 0x1
b _08048C32
.align 2, 0
_08048C28: .4byte gDungeonGlobalData
_08048C2C: .4byte 0x0001357c
_08048C30:
movs r0, 0
_08048C32:
cmp r0, 0
beq _08048C38
movs r7, 0
_08048C38:
ldr r4, _08048C5C
adds r0, r5, r4
strb r7, [r0]
_08048C3E:
adds r2, 0x1
cmp r2, 0x3
ble _08048BD6
movs r0, 0
movs r1, 0x1
bl DrawFieldGiveItemMenu
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _08048C60
movs r0, 0
b _08048D40
.align 2, 0
_08048C5C: .4byte 0x00000157
_08048C60:
add r1, sp, 0x4
adds r0, r6, 0
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
b _08048CE2
_08048C6E:
ldrh r0, [r6]
cmp r0, 0x1D
bne _08048C7C
adds r0, r6, 0
bl sub_80637E8
b _08048CE2
_08048C7C:
cmp r0, 0x20
bne _08048C9A
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
bl sub_8063BB4
movs r0, 0x1
bl sub_8044C10
movs r5, 0x1
mov r8, r5
b _08048CE2
_08048C9A:
cmp r0, 0x21
bne _08048CB6
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
movs r1, 0
bl sub_8063CF0
movs r0, 0x1
bl sub_8044C10
b _08048CE2
_08048CB6:
cmp r0, 0x1E
beq _08048CBE
cmp r0, 0x33
bne _08048CD0
_08048CBE:
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
movs r1, 0
bl sub_8063A70
b _08048CE2
_08048CD0:
cmp r0, 0x1F
bne _08048CE2
movs r0, 0
movs r1, 0
bl sub_803EAF0
adds r0, r6, 0
bl sub_8063B54
_08048CE2:
adds r0, r6, 0
bl ResetAction
movs r0, 0x1
str r0, [sp]
adds r0, r4, 0
movs r1, 0x1
movs r2, 0
movs r3, 0
bl sub_8062F90
lsls r0, 24
cmp r0, 0
beq _08048C6E
mov r0, r8
cmp r0, 0
beq _08048D38
ldr r0, _08048D34
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
cmp r0, 0x1
bne _08048C6E
adds r1, r6, 0
add r0, sp, 0x4
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r5}
stm r1!, {r2,r3,r5}
mov r0, r9
movs r1, 0
movs r2, 0x6E
bl sub_8044DF0
adds r0, r6, 0
movs r1, 0x2C
bl SetAction
b _08048D3E
.align 2, 0
_08048D34: .4byte gUnknown_80FECA0
_08048D38:
movs r0, 0x1
bl sub_8044C10
_08048D3E:
mov r0, r8
_08048D40:
add sp, 0x20
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_8048B9C
thumb_func_start sub_8048D50
sub_8048D50:
push {r4,lr}
adds r4, r0, 0
adds r2, r1, 0
ldr r3, [r4, 0x70]
ldrb r1, [r2]
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _08048D78
ldr r0, _08048D70
adds r1, r2, 0
bl sub_8045BF8
ldr r0, _08048D74
b _08048D9A
.align 2, 0
_08048D70: .4byte gUnknown_202DE58
_08048D74: .4byte gUnknown_80FE3E8
_08048D78:
adds r0, r3, 0
adds r0, 0xEC
ldrb r0, [r0]
cmp r0, 0x1
bne _08048DB0
ldrb r0, [r2, 0x2]
bl IsEdibleItem
lsls r0, 24
cmp r0, 0
beq _08048DB0
ldr r0, _08048DA8
adds r1, r4, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _08048DAC
_08048D9A:
ldr r1, [r0]
adds r0, r4, 0
bl SendMessage
movs r0, 0
b _08048DB2
.align 2, 0
_08048DA8: .4byte gAvailablePokemonNames
_08048DAC: .4byte gUnknown_80FDCA4
_08048DB0:
movs r0, 0x1
_08048DB2:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_8048D50
thumb_func_start sub_8048DB8
sub_8048DB8:
push {r4,lr}
sub sp, 0x1C
adds r3, r0, 0
adds r4, r1, 0
lsls r2, 24
cmp r2, 0
beq _08048DF4
ldr r0, _08048DEC
movs r1, 0
ldrsh r2, [r0, r1]
add r0, sp, 0x18
str r0, [sp]
movs r1, 0
str r1, [sp, 0x4]
ldr r0, _08048DF0
str r0, [sp, 0x8]
str r1, [sp, 0xC]
str r1, [sp, 0x10]
str r1, [sp, 0x14]
adds r0, r3, 0
adds r1, r4, 0
movs r3, 0x1
bl sub_806F370
b _08048DFA
.align 2, 0
_08048DEC: .4byte gUnknown_80F4FAC
_08048DF0: .4byte 0x00000217
_08048DF4:
adds r0, r3, 0
bl sub_8051E7C
_08048DFA:
add sp, 0x1C
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_8048DB8
thumb_func_start sub_8048E04
sub_8048E04:
push {r4-r6,lr}
sub sp, 0x8
adds r5, r0, 0
adds r6, r1, 0
movs r0, 0x1
str r0, [sp]
adds r0, r5, 0
movs r2, 0x1E
movs r3, 0
bl sub_8078B5C
movs r0, 0x5
bl DungeonRandomCapped
cmp r0, 0x4
bhi _08048E9E
lsls r0, 2
ldr r1, _08048E30
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08048E30: .4byte _08048E34
.align 2, 0
_08048E34:
.4byte _08048E48
.4byte _08048E54
.4byte _08048E5E
.4byte _08048E6C
.4byte _08048E78
_08048E48:
adds r0, r5, 0
adds r1, r6, 0
movs r2, 0x1
bl sub_80763F8
b _08048E9E
_08048E54:
adds r0, r5, 0
adds r1, r6, 0
bl sub_80769CC
b _08048E9E
_08048E5E:
adds r0, r5, 0
adds r1, r6, 0
movs r2, 0x1
movs r3, 0x1
bl sub_8076210
b _08048E9E
_08048E6C:
adds r0, r5, 0
adds r1, r6, 0
movs r2, 0x1
bl sub_8077780
b _08048E9E
_08048E78:
ldr r0, _08048EA8
ldr r2, [r0]
movs r4, 0x1
str r4, [sp]
str r4, [sp, 0x4]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0x3
bl sub_8076E20
ldr r0, _08048EAC
ldr r2, [r0]
str r4, [sp]
str r4, [sp, 0x4]
adds r0, r5, 0
adds r1, r6, 0
movs r3, 0x3
bl sub_8076E20
_08048E9E:
add sp, 0x8
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_08048EA8: .4byte gUnknown_8106A4C
_08048EAC: .4byte gUnknown_8106A50
thumb_func_end sub_8048E04
thumb_func_start sub_8048EB0
sub_8048EB0:
push {lr}
ldr r1, _08048EC0
ldr r1, [r1]
bl SendMessage
pop {r0}
bx r0
.align 2, 0
_08048EC0: .4byte gPtrIcePartCrumbledMessage
thumb_func_end sub_8048EB0
thumb_func_start sub_8048EC4
sub_8048EC4:
push {lr}
ldr r1, _08048ED4
ldr r1, [r1]
bl SendMessage
pop {r0}
bx r0
.align 2, 0
_08048ED4: .4byte gPtrRockPartCrumbledMessage
thumb_func_end sub_8048EC4
thumb_func_start sub_8048ED8
sub_8048ED8:
push {lr}
ldr r1, _08048EE8
ldr r1, [r1]
bl SendMessage
pop {r0}
bx r0
.align 2, 0
_08048EE8: .4byte gPtrSteelPartCrumbledMessage
thumb_func_end sub_8048ED8
thumb_func_start sub_8048EEC
sub_8048EEC:
push {lr}
ldr r1, _08048EFC
ldr r1, [r1]
bl SendMessage
pop {r0}
bx r0
.align 2, 0
_08048EFC: .4byte gPtrWishStoneCrumbledMessage
thumb_func_end sub_8048EEC
thumb_func_start sub_8048F00
sub_8048F00:
push {r4,lr}
adds r4, r0, 0
movs r1, 0xD6
bl sub_80421C0
ldr r0, _08048F24
ldr r1, [r0]
adds r0, r4, 0
bl SendMessage
movs r0, 0x3C
movs r1, 0x46
bl sub_803E708
pop {r4}
pop {r0}
bx r0
.align 2, 0
_08048F24: .4byte gPtrMusicBoxPlayedCrumbledMessage
thumb_func_end sub_8048F00
thumb_func_start EvaluateItem
EvaluateItem:
push {r4-r7,lr}
sub sp, 0x4
adds r4, r0, 0
ldr r3, [r4, 0x70]
movs r6, 0
movs r0, 0x1
adds r5, r2, 0
ands r5, r0
lsrs r2, 1
movs r0, 0x1
ands r2, r0
ldrb r0, [r1, 0x2]
subs r0, 0x1
cmp r0, 0xCC
bls _08048F48
b _080494E0
_08048F48:
lsls r0, 2
ldr r1, _08048F54
adds r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08048F54: .4byte _08048F58
.align 2, 0
_08048F58:
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _0804928C
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _08049408
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _08049296
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080492B0
.4byte _080492B0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _08049320
.4byte _080494E0
.4byte _080492B8
.4byte _080492B8
.4byte _0804935E
.4byte _080494E0
.4byte _080493E0
.4byte _0804948E
.4byte _08049394
.4byte _08049344
.4byte _0804946E
.4byte _0804947A
.4byte _08049378
.4byte _080493CE
.4byte _080493AC
.4byte _080493B8
.4byte _08049436
.4byte _080494E0
.4byte _080493F6
.4byte _080494B2
.4byte _0804946A
.4byte _08049462
.4byte _08049454
.4byte _08049498
.4byte _080492DC
.4byte _0804932C
.4byte _08049338
.4byte _0804933C
.4byte _08049340
.4byte _080494C2
.4byte _080494C2
.4byte _080494D6
.4byte _080494C2
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494E0
.4byte _080494DA
_0804928C:
cmp r5, 0
bne _08049292
b _080494E2
_08049292:
movs r6, 0x46
b _080494E2
_08049296:
cmp r5, 0
bne _0804929C
b _080494E0
_0804929C:
movs r1, 0x9E
lsls r1, 1
adds r0, r3, r1
ldr r0, [r0]
bl GetBellyRoundedUp
cmp r0, 0
ble _080492AE
b _0804948A
_080492AE:
b _080494E0
_080492B0:
cmp r5, 0
beq _080492B6
b _0804948A
_080492B6:
b _080494E0
_080492B8:
movs r2, 0xE
ldrsh r1, [r3, r2]
movs r2, 0x10
ldrsh r0, [r3, r2]
cmp r1, r0
blt _080492C6
b _080494E2
_080492C6:
cmp r0, 0
bge _080492CC
adds r0, 0x3
_080492CC:
asrs r0, 2
cmp r1, r0
ble _080492D4
b _080494E2
_080492D4:
cmp r5, 0
bne _080492DA
b _08049420
_080492DA:
b _08049432
_080492DC:
movs r6, 0
movs r0, 0x8C
lsls r0, 1
adds r5, r3, r0
adds r7, r5, 0
movs r2, 0x3
_080492E8:
ldrb r1, [r5]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0804930C
ldrb r0, [r5, 0x4]
cmp r0, 0
bne _080492FA
adds r6, 0x1E
_080492FA:
ldrb r4, [r5, 0x4]
adds r0, r7, 0
str r2, [sp]
bl GetMoveMaxPP
ldr r2, [sp]
cmp r4, r0
beq _0804930C
adds r6, 0x6
_0804930C:
adds r5, 0x8
adds r7, 0x8
subs r2, 0x1
cmp r2, 0
bge _080492E8
cmp r6, 0x62
bgt _0804931C
b _080494E2
_0804931C:
movs r6, 0x63
b _080494E2
_08049320:
adds r0, r4, 0
bl HasNegativeStatus
lsls r0, 24
movs r6, 0
b _080494BC
_0804932C:
ldrb r0, [r3, 0x14]
_0804932E:
movs r6, 0x64
cmp r0, 0xF9
bhi _08049336
b _080494E2
_08049336:
b _080494E0
_08049338:
ldrb r0, [r3, 0x15]
b _0804932E
_0804933C:
ldrb r0, [r3, 0x16]
b _0804932E
_08049340:
ldrb r0, [r3, 0x17]
b _0804932E
_08049344:
cmp r5, 0
beq _0804934A
b _080494E0
_0804934A:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x64
cmp r0, 0
bne _0804935A
b _080494E2
_0804935A:
movs r6, 0xA
b _080494E2
_0804935E:
adds r0, r4, 0
bl CanSeeInvisible
lsls r0, 24
cmp r0, 0
beq _0804936C
b _080494A2
_0804936C:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_08049378:
ldr r0, [r4, 0x70]
movs r1, 0x82
lsls r1, 1
adds r0, r1
ldr r0, [r0]
cmp r0, 0x3
ble _08049388
b _080494A2
_08049388:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_08049394:
adds r0, r3, 0
adds r0, 0xE8
ldrb r0, [r0]
cmp r0, 0x2
bne _080493A0
b _080494A2
_080493A0:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_080493AC:
adds r0, r3, 0
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0x4
bne _080494A2
b _080494B2
_080493B8:
adds r0, r3, 0
adds r0, 0xBC
ldrb r0, [r0]
cmp r0, 0x2
beq _080494A2
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0xF
b _080494BC
_080493CE:
adds r0, r3, 0
adds r0, 0xAC
ldrb r0, [r0]
subs r0, 0x2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _080494A2
b _08049420
_080493E0:
adds r0, r3, 0
adds r0, 0xE8
ldrb r0, [r0]
cmp r0, 0x1
beq _080494A2
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_080493F6:
cmp r2, 0
bne _0804940C
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
cmp r0, 0
beq _080494E2
_08049408:
movs r6, 0x28
b _080494E2
_0804940C:
movs r2, 0xE
ldrsh r1, [r3, r2]
movs r2, 0x10
ldrsh r0, [r3, r2]
cmp r1, r0
bge _080494E2
cmp r1, 0x13
bgt _080494E2
cmp r5, 0
bne _08049432
_08049420:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x32
cmp r0, 0
beq _080494E2
movs r6, 0x64
b _080494E2
_08049432:
movs r6, 0x32
b _080494E2
_08049436:
adds r0, r3, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x1
beq _080494A2
cmp r0, 0x5
beq _080494A2
cmp r0, 0x3
beq _080494A2
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_08049454:
adds r0, r3, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x2
beq _080494A2
movs r6, 0x5
b _080494E2
_08049462:
ldrb r0, [r3, 0x9]
movs r6, 0
cmp r0, 0x62
bhi _080494E2
_0804946A:
movs r6, 0x50
b _080494E2
_0804946E:
adds r0, r3, 0
adds r0, 0xAC
ldrb r0, [r0]
cmp r0, 0x1
beq _0804948A
b _080494E0
_0804947A:
movs r1, 0x9E
lsls r1, 1
adds r0, r3, r1
ldr r0, [r0]
bl GetBellyRoundedUp
cmp r0, 0
ble _080494E0
_0804948A:
movs r0, 0x32
b _080494E4
_0804948E:
ldrb r0, [r3, 0x9]
movs r6, 0
cmp r0, 0x1
bls _080494E2
b _0804946A
_08049498:
adds r0, r3, 0
adds r0, 0xB0
ldrb r0, [r0]
cmp r0, 0x6
bne _080494A6
_080494A2:
movs r0, 0
b _080494E4
_080494A6:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x5
b _080494BC
_080494B2:
adds r0, r4, 0
bl CanTargetAdjacentPokemon
lsls r0, 24
movs r6, 0x1E
_080494BC:
cmp r0, 0
beq _080494E2
b _0804946A
_080494C2:
movs r2, 0x9E
lsls r2, 1
adds r0, r3, r2
ldr r0, [r0]
bl GetBellyRoundedUp
cmp r0, 0x9
bgt _080494E0
movs r0, 0x64
b _080494E4
_080494D6:
movs r6, 0x1E
b _080494E2
_080494DA:
movs r6, 0x14
cmp r5, 0
beq _080494E2
_080494E0:
movs r6, 0
_080494E2:
adds r0, r6, 0
_080494E4:
add sp, 0x4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end EvaluateItem
thumb_func_start CanTargetAdjacentPokemon
CanTargetAdjacentPokemon:
push {r4-r6,lr}
adds r5, r0, 0
movs r6, 0
_080494F2:
movs r1, 0x4
ldrsh r0, [r5, r1]
ldr r1, _08049538
lsls r2, r6, 2
adds r2, r1
movs r3, 0
ldrsh r1, [r2, r3]
adds r0, r1
movs r3, 0x6
ldrsh r1, [r5, r3]
movs r3, 0x2
ldrsh r2, [r2, r3]
adds r1, r2
bl GetMapTileAtPosition
ldr r4, [r0, 0x10]
cmp r4, 0
beq _0804953C
adds r0, r4, 0
bl GetEntityType
cmp r0, 0
beq _0804953C
adds r0, r5, 0
adds r1, r4, 0
movs r2, 0
movs r3, 0x1
bl CanTarget
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0804953C
movs r0, 0x1
b _08049544
.align 2, 0
_08049538: .4byte gAdjacentTileOffsets
_0804953C:
adds r6, 0x1
cmp r6, 0x7
ble _080494F2
movs r0, 0
_08049544:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end CanTargetAdjacentPokemon
.align 2, 0