pmd-red/asm/code_806CD90.s
2022-01-06 23:11:38 -06:00

6235 lines
94 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_806CEBC
sub_806CEBC:
push {lr}
ldr r0, [r0, 0x70]
adds r1, r0, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x1
beq _0806CED2
cmp r0, 0x5
beq _0806CED2
cmp r0, 0x3
bne _0806CEE8
_0806CED2:
movs r2, 0x4
ldrsh r0, [r1, r2]
cmp r0, 0xB9
bne _0806CEE4
adds r0, r1, 0
adds r0, 0xA9
ldrb r0, [r0]
cmp r0, 0x7F
beq _0806CEF2
_0806CEE4:
movs r0, 0x5
b _0806CEF8
_0806CEE8:
adds r0, r1, 0
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x1
beq _0806CEF6
_0806CEF2:
movs r0, 0x7
b _0806CEF8
_0806CEF6:
movs r0, 0xB
_0806CEF8:
pop {r1}
bx r1
thumb_func_end sub_806CEBC
thumb_func_start sub_806CEFC
sub_806CEFC:
push {r4,lr}
adds r4, r1, 0
ldr r2, [r0, 0x70]
movs r3, 0x7
ands r1, r3
adds r2, 0x46
strb r1, [r2]
movs r1, 0x7
ands r1, r4
bl sub_806CE68
pop {r4}
pop {r0}
bx r0
thumb_func_end sub_806CEFC
thumb_func_start sub_806CF18
sub_806CF18:
push {r4-r6,lr}
adds r4, r0, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806CF4C
ldr r6, [r4, 0x70]
movs r5, 0
b _0806CF2E
_0806CF2C:
adds r5, 0x1
_0806CF2E:
cmp r5, 0x63
bgt _0806CF4C
movs r0, 0x21
bl sub_803E46C
movs r1, 0x4
ldrsh r0, [r6, r1]
adds r1, r4, 0
adds r1, 0x6B
ldrb r1, [r1]
bl sub_808DA44
lsls r0, 24
cmp r0, 0
bne _0806CF2C
_0806CF4C:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_806CF18
thumb_func_start sub_806CF54
sub_806CF54:
ldr r0, [r0, 0x70]
movs r1, 0x81
lsls r1, 2
adds r0, r1
ldrb r0, [r0]
bx lr
thumb_func_end sub_806CF54
thumb_func_start sub_806CF60
sub_806CF60:
push {r4,r5,lr}
movs r5, 0
_0806CF64:
ldr r0, _0806CF90
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _0806CF94
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806CF84
adds r0, r4, 0
bl sub_806CF98
_0806CF84:
adds r5, 0x1
cmp r5, 0x13
ble _0806CF64
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0806CF90: .4byte gDungeonGlobalData
_0806CF94: .4byte 0x000135cc
thumb_func_end sub_806CF60
thumb_func_start sub_806CF98
sub_806CF98:
push {r4-r7,lr}
adds r4, r0, 0
bl GetMapEntityForDungeonEntity
ldrh r0, [r0]
movs r5, 0x3
ands r5, r0
adds r6, r5, 0
ldr r7, [r4, 0x70]
movs r1, 0x4
ldrsh r0, [r7, r1]
bl GetShadowSize
lsls r0, 24
lsrs r4, r0, 24
cmp r5, 0x3
bne _0806CFBE
movs r0, 0x6
b _0806CFF8
_0806CFBE:
cmp r5, 0x1
bne _0806CFCE
bl IsWaterTileset
lsls r0, 24
cmp r0, 0
beq _0806CFEE
b _0806CFE8
_0806CFCE:
cmp r6, 0x2
bne _0806CFEE
ldr r1, _0806D000
ldr r0, _0806D004
ldr r0, [r0]
ldr r2, _0806D008
adds r0, r2
movs r2, 0
ldrsh r0, [r0, r2]
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
beq _0806CFEE
_0806CFE8:
ldr r0, _0806D00C
adds r0, r4, r0
ldrb r4, [r0]
_0806CFEE:
movs r1, 0x81
lsls r1, 2
adds r0, r7, r1
strb r4, [r0]
adds r0, r4, 0
_0806CFF8:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0806D000: .4byte gDungeonWaterType
_0806D004: .4byte gDungeonGlobalData
_0806D008: .4byte 0x00003a0e
_0806D00C: .4byte gUnknown_8106EEF
thumb_func_end sub_806CF98
thumb_func_start sub_806D010
sub_806D010:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
adds r6, r0, 0
adds r5, r1, 0
mov r8, r2
ldr r0, [sp, 0x40]
lsls r0, 16
asrs r0, 16
mov r10, r0
movs r7, 0
ldr r0, [sp, 0x3C]
str r0, [sp]
mov r1, r10
str r1, [sp, 0x4]
ldr r2, [sp, 0x48]
str r2, [sp, 0x8]
adds r0, r6, 0
adds r1, r5, 0
mov r2, r8
bl sub_806D528
lsls r0, 24
cmp r0, 0
beq _0806D04A
b _0806D514
_0806D04A:
mov r3, r8
ldrb r0, [r3, 0xF]
cmp r0, 0
beq _0806D054
b _0806D514
_0806D054:
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D062
b _0806D514
_0806D062:
adds r0, r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D070
b _0806D514
_0806D070:
adds r0, r6, 0
bl GetEntityType
cmp r0, 0x1
beq _0806D07C
b _0806D514
_0806D07C:
adds r0, r5, 0
bl GetEntityType
cmp r0, 0x1
beq _0806D088
b _0806D514
_0806D088:
ldr r0, [sp, 0x44]
mov r9, r0
adds r0, r5, 0
bl CannotAct
lsls r0, 24
cmp r0, 0
bne _0806D0A2
ldr r0, [r5, 0x70]
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0
beq _0806D0A6
_0806D0A2:
movs r1, 0
mov r9, r1
_0806D0A6:
mov r2, r9
cmp r2, 0
beq _0806D100
movs r3, 0x4
ldrsh r1, [r6, r3]
movs r2, 0x4
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0806D0BC
negs r1, r1
_0806D0BC:
cmp r1, 0x1
bgt _0806D100
movs r3, 0x6
ldrsh r1, [r6, r3]
movs r2, 0x6
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0806D0D0
negs r1, r1
_0806D0D0:
cmp r1, 0x1
bgt _0806D100
cmp r6, r5
beq _0806D100
mov r3, r8
ldrb r0, [r3, 0xC]
bl sub_8092354
lsls r0, 24
cmp r0, 0
beq _0806D100
ldr r0, [r5, 0x70]
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0xD
bne _0806D100
adds r0, r5, 0
adds r1, r6, 0
bl sub_8042730
adds r0, r5, 0
adds r1, r6, 0
bl sub_807F43C
_0806D100:
ldr r0, [r5, 0x70]
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0xC
bne _0806D118
ldr r0, _0806D3BC
ldr r2, [r0]
adds r0, r6, 0
adds r1, r5, 0
movs r3, 0x1
bl sub_8077084
_0806D118:
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D126
b _0806D514
_0806D126:
adds r0, r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D134
b _0806D514
_0806D134:
mov r0, r9
cmp r0, 0
beq _0806D216
cmp r6, r5
beq _0806D216
movs r2, 0x4
ldrsh r1, [r6, r2]
movs r3, 0x4
ldrsh r0, [r5, r3]
subs r1, r0
cmp r1, 0
bge _0806D14E
negs r1, r1
_0806D14E:
cmp r1, 0x1
bgt _0806D216
movs r0, 0x6
ldrsh r1, [r6, r0]
movs r2, 0x6
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0806D162
negs r1, r1
_0806D162:
cmp r1, 0x1
bgt _0806D216
mov r3, r8
ldrb r0, [r3, 0xC]
bl sub_8092354
lsls r0, 24
lsrs r4, r0, 24
ldr r0, [r5, 0x70]
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0x4
bne _0806D188
cmp r4, 0
beq _0806D188
adds r0, r5, 0
bl sub_8041B18
adds r7, 0x4
_0806D188:
ldr r0, [r5, 0x70]
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0xA
bne _0806D19E
cmp r4, 0
beq _0806D19E
adds r0, r5, 0
bl sub_8041B18
adds r7, 0x1
_0806D19E:
ldr r0, [r5, 0x70]
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0x8
bne _0806D1B4
cmp r4, 0
bne _0806D1B4
adds r0, r5, 0
bl sub_8041B90
adds r7, 0x4
_0806D1B4:
adds r0, r5, 0
movs r1, 0x12
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D1C4
adds r7, 0x2
_0806D1C4:
cmp r7, 0
beq _0806D216
ldr r0, _0806D3C0
ldr r2, [r0]
adds r0, r6, 0
adds r1, r5, 0
bl sub_80522F4
mov r1, r8
ldr r0, [r1]
muls r0, r7
cmp r0, 0
bge _0806D1E0
adds r0, 0x3
_0806D1E0:
asrs r0, 2
str r0, [sp, 0xC]
add r2, sp, 0xC
mov r3, r8
ldrb r0, [r3, 0xC]
movs r1, 0
strb r0, [r2, 0xC]
movs r0, 0x6
str r0, [sp, 0x10]
movs r0, 0x2
str r0, [sp, 0x14]
adds r0, r2, 0
strb r1, [r0, 0xD]
strb r1, [r0, 0xE]
strb r1, [r0, 0xF]
ldr r0, [sp, 0x3C]
str r0, [sp]
mov r1, r10
str r1, [sp, 0x4]
ldr r2, [sp, 0x48]
str r2, [sp, 0x8]
adds r0, r5, 0
adds r1, r6, 0
add r2, sp, 0xC
movs r3, 0
bl sub_806D528
_0806D216:
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D224
b _0806D514
_0806D224:
adds r0, r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806D232
b _0806D514
_0806D232:
mov r3, r9
cmp r3, 0
bne _0806D23A
b _0806D48A
_0806D23A:
cmp r6, r5
bne _0806D240
b _0806D48A
_0806D240:
movs r0, 0x4
ldrsh r1, [r6, r0]
movs r2, 0x4
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0806D250
negs r1, r1
_0806D250:
cmp r1, 0x1
ble _0806D256
b _0806D48A
_0806D256:
movs r3, 0x6
ldrsh r1, [r6, r3]
movs r2, 0x6
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0806D266
negs r1, r1
_0806D266:
cmp r1, 0x1
ble _0806D26C
b _0806D48A
_0806D26C:
mov r3, r8
ldrb r0, [r3, 0xC]
bl sub_8092354
lsls r0, 24
lsrs r7, r0, 24
ldr r4, [r6, 0x70]
adds r0, r5, 0
movs r1, 0x5
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D2C2
adds r0, r6, 0
movs r1, 0xA
bl HasType
lsls r0, 24
cmp r0, 0
bne _0806D2C2
adds r0, r6, 0
movs r1, 0x37
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806D2C2
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3C4
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D2C2
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x1
orrs r0, r1
strh r0, [r2]
_0806D2C2:
adds r0, r5, 0
movs r1, 0xA
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D2EE
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3C8
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D2EE
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x2
orrs r0, r1
strh r0, [r2]
_0806D2EE:
adds r0, r5, 0
movs r1, 0x17
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D328
adds r0, r6, 0
movs r1, 0x11
bl HasType
lsls r0, 24
cmp r0, 0
beq _0806D328
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3CC
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D328
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x4
orrs r0, r1
strh r0, [r2]
_0806D328:
adds r0, r5, 0
movs r1, 0x20
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D358
cmp r7, 0
beq _0806D358
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3D0
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D358
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x8
orrs r0, r1
strh r0, [r2]
_0806D358:
adds r0, r5, 0
movs r1, 0x27
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D384
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3D4
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D384
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x20
orrs r0, r1
strh r0, [r2]
_0806D384:
adds r0, r5, 0
movs r1, 0x3D
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D3FA
cmp r7, 0
beq _0806D3FA
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D3D8
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D3FA
movs r0, 0x3
bl DungeonRandomCapped
cmp r0, 0
bgt _0806D3DC
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r0, 0x40
b _0806D3F6
.align 2, 0
_0806D3BC: .4byte gUnknown_8106A4C
_0806D3C0: .4byte gUnknown_80FCFA4
_0806D3C4: .4byte gUnknown_80F4E10
_0806D3C8: .4byte gUnknown_80F4E12
_0806D3CC: .4byte gUnknown_80F4E14
_0806D3D0: .4byte gUnknown_80F4E16
_0806D3D4: .4byte gUnknown_80F4E18
_0806D3D8: .4byte gUnknown_80F4E1A
_0806D3DC:
cmp r0, 0x1
bgt _0806D3EC
movs r0, 0xBC
lsls r0, 1
adds r2, r4, r0
ldrh r1, [r2]
movs r0, 0x10
b _0806D3F6
_0806D3EC:
movs r1, 0xBC
lsls r1, 1
adds r2, r4, r1
ldrh r1, [r2]
movs r0, 0x80
_0806D3F6:
orrs r0, r1
strh r0, [r2]
_0806D3FA:
adds r0, r5, 0
movs r1, 0x3E
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D428
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D4D4
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D428
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
subs r3, 0x78
adds r0, r3, 0
orrs r0, r1
strh r0, [r2]
_0806D428:
adds r0, r5, 0
movs r1, 0x44
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D45A
cmp r7, 0
beq _0806D45A
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D4D8
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D45A
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
adds r3, 0x88
adds r0, r3, 0
orrs r0, r1
strh r0, [r2]
_0806D45A:
adds r0, r5, 0
movs r1, 0x1
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D48A
movs r0, 0x64
bl DungeonRandomCapped
ldr r1, _0806D4DC
movs r2, 0
ldrsh r1, [r1, r2]
cmp r0, r1
bge _0806D48A
movs r3, 0xBC
lsls r3, 1
adds r2, r4, r3
ldrh r1, [r2]
movs r3, 0x80
lsls r3, 3
adds r0, r3, 0
orrs r0, r1
strh r0, [r2]
_0806D48A:
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806D514
adds r0, r5, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806D514
mov r0, r9
cmp r0, 0
beq _0806D514
ldr r2, [r5, 0x70]
adds r6, r2, 0
adds r3, r2, 0
adds r3, 0xD0
ldrb r0, [r3]
cmp r0, 0x2
bne _0806D514
ldr r0, _0806D4E0
ldr r1, [r0]
adds r0, r2, 0
adds r0, 0xD8
ldrb r0, [r0]
lsls r0, 2
ldr r2, _0806D4E4
adds r1, r2
adds r1, r0
ldr r4, [r1]
cmp r4, 0
bne _0806D4E8
strb r4, [r3]
b _0806D514
.align 2, 0
_0806D4D4: .4byte gUnknown_80F4E1C
_0806D4D8: .4byte gUnknown_80F4E1E
_0806D4DC: .4byte gUnknown_80F4E20
_0806D4E0: .4byte gDungeonGlobalData
_0806D4E4: .4byte 0x000135cc
_0806D4E8:
ldr r0, [r4, 0x70]
adds r0, 0x98
adds r1, r6, 0
adds r1, 0xD4
ldr r2, [r0]
ldr r0, [r1]
cmp r2, r0
beq _0806D4FE
movs r0, 0
strb r0, [r3]
b _0806D514
_0806D4FE:
adds r0, r4, 0
adds r1, r5, 0
bl sub_8041D00
mov r3, r8
ldr r1, [r3]
ldr r3, _0806D524
adds r0, r4, 0
movs r2, 0xC
bl sub_806F324
_0806D514:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806D524: .4byte 0x000001f9
thumb_func_end sub_806D010
thumb_func_start sub_806D528
sub_806D528:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x58
mov r9, r0
adds r7, r1, 0
adds r5, r2, 0
str r3, [sp, 0x4C]
ldr r0, [sp, 0x7C]
lsls r0, 16
asrs r0, 16
str r0, [sp, 0x50]
movs r0, 0
str r0, [sp, 0x54]
mov r10, r0
mov r8, r0
mov r1, r10
strb r1, [r5, 0xF]
adds r0, r7, 0
bl GetEntityType
cmp r0, 0x1
beq _0806D55C
b _0806D754
_0806D55C:
ldr r6, [r7, 0x70]
mov r0, r9
adds r1, r7, 0
bl sub_807A96C
mov r0, r9
adds r1, r7, 0
bl SetShopkeeperAggression
mov r0, r9
bl GetEntityType
cmp r0, 0x1
bne _0806D592
mov r2, r9
ldr r0, [r2, 0x70]
adds r0, 0xDC
ldrb r0, [r0]
cmp r0, 0x3
bne _0806D592
ldrb r0, [r5, 0xE]
cmp r0, 0
bne _0806D592
ldr r0, _0806D5C8
movs r3, 0
ldrsh r0, [r0, r3]
str r0, [r5]
_0806D592:
ldr r0, _0806D5CC
ldr r1, [sp, 0x50]
cmp r1, r0
beq _0806D5DC
adds r0, r7, 0
movs r1, 0xD
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D5DC
ldr r1, [r5]
ldr r0, _0806D5D0
cmp r1, r0
bne _0806D5DC
ldr r0, _0806D5D4
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _0806D5D8
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
b _0806D71E
.align 2, 0
_0806D5C8: .4byte gUnknown_80F4F8C
_0806D5CC: .4byte 0x0000020e
_0806D5D0: .4byte 0x0000270f
_0806D5D4: .4byte gUnknown_202DFE8
_0806D5D8: .4byte gUnknown_80FCA90
_0806D5DC:
adds r0, r6, 0
adds r0, 0xB0
ldrb r4, [r0]
mov r10, r0
cmp r4, 0x1
bne _0806D618
ldr r0, _0806D610
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _0806D614
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
mov r0, r9
adds r1, r7, 0
bl sub_8042238
strb r4, [r5, 0xF]
_0806D608:
movs r0, 0
bl _0806E0F0
.align 2, 0
_0806D610: .4byte gUnknown_202DFE8
_0806D614: .4byte gUnknown_80F9600
_0806D618:
adds r0, r6, 0
adds r0, 0xA8
ldrb r0, [r0]
cmp r0, 0x1
beq _0806D62A
cmp r0, 0x5
beq _0806D62A
cmp r0, 0x3
bne _0806D63A
_0806D62A:
adds r0, r6, 0
adds r0, 0xA9
ldrb r0, [r0]
cmp r0, 0x7F
bne _0806D63A
adds r0, r7, 0
bl sub_807A9B0
_0806D63A:
adds r0, r7, 0
movs r1, 0x23
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D660
ldrb r0, [r5, 0xC]
cmp r0, 0x5
bne _0806D660
_0806D64E:
ldr r2, [r5]
movs r0, 0
str r0, [sp]
mov r0, r9
adds r1, r7, 0
movs r3, 0
bl HealTargetHP
b _0806D754
_0806D660:
adds r0, r7, 0
movs r1, 0x24
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806D674
ldrb r0, [r5, 0xC]
cmp r0, 0x3
beq _0806D64E
_0806D674:
movs r2, 0xA9
lsls r2, 1
adds r0, r6, r2
ldrb r0, [r0]
cmp r0, 0
bne _0806D6D0
ldrb r0, [r5, 0xD]
cmp r0, 0
beq _0806D692
ldr r0, _0806D6A4
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D692:
ldr r0, [r5, 0x8]
cmp r0, 0x1
beq _0806D6B0
cmp r0, 0x1
bcc _0806D6A8
cmp r0, 0x3
beq _0806D6C4
b _0806D6D0
.align 2, 0
_0806D6A4: .4byte gUnknown_80F9614
_0806D6A8:
ldr r0, _0806D6AC
b _0806D6B2
.align 2, 0
_0806D6AC: .4byte gUnknown_80F9630
_0806D6B0:
ldr r0, _0806D6C0
_0806D6B2:
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
b _0806D6D0
.align 2, 0
_0806D6C0: .4byte gUnknown_80F9654
_0806D6C4:
ldr r0, _0806D728
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D6D0:
ldr r4, _0806D72C
adds r0, r4, 0
mov r1, r9
movs r2, 0
bl SetMessageArgument
adds r4, 0x50
adds r0, r4, 0
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r1, [r5]
cmp r1, 0
bne _0806D760
mov r0, r9
bl sub_8045888
lsls r0, 24
cmp r0, 0
beq _0806D734
adds r0, r7, 0
bl sub_8045888
lsls r0, 24
cmp r0, 0
beq _0806D734
movs r3, 0xA9
lsls r3, 1
adds r0, r6, r3
ldrb r0, [r0]
cmp r0, 0
bne _0806D71E
ldr r0, _0806D730
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D71E:
mov r0, r9
adds r1, r7, 0
bl sub_8042238
b _0806D754
.align 2, 0
_0806D728: .4byte gUnknown_80F9670
_0806D72C: .4byte gAvailablePokemonNames
_0806D730: .4byte gUnknown_80F9688
_0806D734:
movs r1, 0xA9
lsls r1, 1
adds r0, r6, r1
ldrb r0, [r0]
cmp r0, 0
bne _0806D74C
ldr r0, _0806D75C
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D74C:
movs r0, 0x1E
movs r1, 0x18
bl sub_803E708
_0806D754:
movs r0, 0x1
strb r0, [r5, 0xF]
b _0806D608
.align 2, 0
_0806D75C: .4byte gUnknown_80F9688
_0806D760:
ldr r0, _0806D7B8
cmp r1, r0
bne _0806D7C4
ldr r0, [sp, 0x80]
cmp r0, 0
beq _0806D796
adds r0, r7, 0
bl sub_8045888
lsls r0, 24
cmp r0, 0
beq _0806D796
adds r0, r7, 0
bl GetMapEntityForDungeonEntity
mov r8, r0
movs r0, 0x14
movs r1, 0x18
bl sub_803E708
mov r2, r8
ldrh r1, [r2, 0x4]
movs r0, 0x4
orrs r0, r1
strh r0, [r2, 0x4]
bl sub_8049ED4
_0806D796:
movs r3, 0xA9
lsls r3, 1
adds r0, r6, r3
ldrb r0, [r0]
cmp r0, 0
bne _0806D7AE
ldr r0, _0806D7BC
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D7AE:
adds r1, r6, 0
adds r1, 0xA0
ldr r0, _0806D7C0
str r0, [r1]
b _0806D84A
.align 2, 0
_0806D7B8: .4byte 0x0000270f
_0806D7BC: .4byte gUnknown_80F96A8
_0806D7C0: .4byte 0x000003e7
_0806D7C4:
ldr r0, _0806D824
str r1, [r0]
ldr r1, _0806D828
ldr r0, [r5, 0x4]
lsls r0, 2
adds r0, r1
ldr r4, [r0]
adds r2, r6, 0
adds r2, 0xA0
ldr r0, [r2]
ldr r1, [r5]
adds r0, r1
str r0, [r2]
ldr r1, _0806D82C
cmp r0, r1
ble _0806D7E6
str r1, [r2]
_0806D7E6:
adds r0, r7, 0
bl sub_8045888
lsls r0, 24
cmp r0, 0
beq _0806D830
ldr r0, [r5, 0x4]
cmp r0, 0xE
beq _0806D808
ldr r0, [r5]
negs r0, r0
movs r3, 0x1
negs r3, r3
adds r1, r7, 0
movs r2, 0x1
bl sub_803ED30
_0806D808:
movs r1, 0xA9
lsls r1, 1
adds r0, r6, r1
ldrb r0, [r0]
cmp r0, 0
bne _0806D84A
cmp r4, 0
beq _0806D84A
mov r0, r9
adds r1, r7, 0
adds r2, r4, 0
bl sub_80522F4
b _0806D84A
.align 2, 0
_0806D824: .4byte gUnknown_202DE30
_0806D828: .4byte gUnknown_80F9764
_0806D82C: .4byte 0x000003e7
_0806D830:
movs r2, 0xA9
lsls r2, 1
adds r0, r6, r2
ldrb r0, [r0]
cmp r0, 0
bne _0806D84A
cmp r4, 0
beq _0806D84A
mov r0, r9
adds r1, r7, 0
adds r2, r4, 0
bl sub_80522F4
_0806D84A:
ldr r0, [r5, 0x4]
cmp r0, 0xE
bne _0806D858
movs r3, 0xE
ldrsh r0, [r6, r3]
cmp r0, 0x1
bgt _0806D900
_0806D858:
mov r0, r8
cmp r0, 0
bne _0806D900
adds r0, r7, 0
bl sub_8045888
lsls r0, 24
cmp r0, 0
beq _0806D900
mov r2, r9
ldr r1, [r2, 0x4]
ldr r0, [r7, 0x4]
cmp r1, r0
beq _0806D8E6
mov r0, r9
bl GetEntityType
cmp r0, 0x1
bne _0806D8E6
movs r4, 0
ldrb r0, [r6, 0x7]
cmp r0, 0
beq _0806D8B4
ldr r0, _0806D8B0
ldr r0, [r0]
ldrb r0, [r0, 0x2]
cmp r0, 0
beq _0806D8B6
adds r0, r7, 0
bl sub_806A458
lsls r0, 24
cmp r0, 0
bne _0806D8B6
adds r0, r7, 0
mov r1, r9
bl CanSee
lsls r0, 24
lsrs r0, 24
negs r1, r0
orrs r1, r0
lsrs r4, r1, 31
b _0806D8B6
.align 2, 0
_0806D8B0: .4byte gUnknown_203B46C
_0806D8B4:
movs r4, 0
_0806D8B6:
adds r0, r6, 0
adds r0, 0xE8
ldrb r0, [r0]
subs r0, 0x1
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _0806D8C8
movs r4, 0
_0806D8C8:
cmp r4, 0
beq _0806D8E0
ldr r4, [r7, 0x70]
adds r0, r7, 0x4
mov r1, r9
adds r1, 0x4
bl CalculateFacingDir
movs r1, 0x7
ands r0, r1
adds r4, 0x46
strb r0, [r4]
_0806D8E0:
adds r0, r7, 0
bl TargetTileInFront
_0806D8E6:
ldr r0, [r7, 0x70]
adds r0, 0x46
ldrb r2, [r0]
adds r0, r7, 0
movs r1, 0x6
bl sub_806CDD4
adds r0, r7, 0
adds r1, r5, 0
bl sub_80420E8
movs r3, 0x1
str r3, [sp, 0x54]
_0806D900:
movs r0, 0xE
ldrsh r4, [r6, r0]
ldr r1, [r5]
cmp r4, r1
ble _0806D910
ldrh r0, [r6, 0xE]
subs r0, r1
b _0806D912
_0806D910:
movs r0, 0
_0806D912:
strh r0, [r6, 0xE]
adds r0, r6, 0
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0x9
bne _0806D93C
movs r1, 0xE
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0806D958
movs r0, 0x1
strh r0, [r6, 0xE]
ldr r0, _0806D938
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
b _0806D958
.align 2, 0
_0806D938: .4byte gUnknown_8100548
_0806D93C:
ldr r2, [sp, 0x4C]
cmp r2, 0x1
bne _0806D958
movs r3, 0xE
ldrsh r0, [r6, r3]
cmp r0, 0
bne _0806D958
strh r2, [r6, 0xE]
ldr r0, _0806D9C8
ldr r2, [r0]
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
_0806D958:
movs r1, 0xE
ldrsh r0, [r6, r1]
subs r4, r0
cmp r4, 0
bge _0806D964
movs r4, 0
_0806D964:
ldr r2, [sp, 0x54]
cmp r2, 0
bne _0806D970
mov r3, r8
cmp r3, 0
beq _0806D978
_0806D970:
movs r0, 0xA
movs r1, 0x18
bl sub_803E708
_0806D978:
movs r1, 0xE
ldrsh r0, [r6, r1]
cmp r0, 0
beq _0806D9D4
ldr r2, [sp, 0x54]
cmp r2, 0
beq _0806D98E
adds r0, r7, 0
movs r1, 0x8
bl sub_806CE68
_0806D98E:
adds r0, r7, 0
movs r1, 0x10
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806D9B2
cmp r4, 0
ble _0806D9B2
ldr r1, [r5]
ldr r0, _0806D9CC
cmp r1, r0
beq _0806D9B2
mov r0, r9
adds r1, r7, 0
adds r2, r4, 0
bl sub_8071D4C
_0806D9B2:
mov r3, r8
cmp r3, 0
bne _0806D9BA
b _0806D608
_0806D9BA:
ldrh r1, [r3, 0x4]
ldr r0, _0806D9D0
ands r0, r1
strh r0, [r3, 0x4]
bl sub_8049ED4
b _0806D608
.align 2, 0
_0806D9C8: .4byte gUnknown_810056C
_0806D9CC: .4byte 0x0000270f
_0806D9D0: .4byte 0x0000fffb
_0806D9D4:
adds r0, r6, 0
adds r0, 0xE4
ldrb r0, [r0]
cmp r0, 0x2
bne _0806D9E6
mov r0, r9
adds r1, r7, 0
bl sub_807A7C8
_0806D9E6:
mov r0, r8
cmp r0, 0
beq _0806DA18
movs r0, 0x14
movs r1, 0x18
bl sub_803E708
adds r1, r7, 0
adds r1, 0x22
movs r0, 0x2
strb r0, [r1]
movs r0, 0xA
movs r1, 0x18
bl sub_803E708
mov r2, r8
ldrh r1, [r2, 0x4]
ldr r0, _0806DA14
ands r0, r1
strh r0, [r2, 0x4]
bl sub_8049ED4
b _0806DA2E
.align 2, 0
_0806DA14: .4byte 0x0000fffb
_0806DA18:
ldr r3, [sp, 0x54]
cmp r3, 0
beq _0806DA2E
adds r1, r7, 0
adds r1, 0x22
movs r0, 0x1
strb r0, [r1]
movs r0, 0x1E
movs r1, 0x18
bl sub_803E708
_0806DA2E:
movs r0, 0x1
mov r8, r0
mov r0, r9
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806DA50
mov r0, r9
bl GetEntityType
cmp r0, 0x1
bne _0806DA50
cmp r9, r7
beq _0806DA50
movs r1, 0
mov r8, r1
_0806DA50:
movs r2, 0xA6
lsls r2, 1
adds r1, r6, r2
movs r0, 0
strb r0, [r1]
ldr r4, _0806DA88
adds r0, r4, 0
mov r1, r9
movs r2, 0
bl SetMessageArgument
adds r4, 0x50
adds r0, r4, 0
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r0, [r5, 0x4]
subs r0, 0x13
cmp r0, 0x1
bhi _0806DA9C
ldrb r0, [r6, 0x6]
cmp r0, 0
beq _0806DA90
ldr r0, _0806DA8C
ldr r2, [r0]
b _0806DAC2
.align 2, 0
_0806DA88: .4byte gAvailablePokemonNames
_0806DA8C: .4byte gUnknown_80F9E44
_0806DA90:
ldr r0, _0806DA98
ldr r1, [r0]
b _0806DB86
.align 2, 0
_0806DA98: .4byte gUnknown_80F9E44
_0806DA9C:
ldrb r0, [r6, 0x6]
cmp r0, 0
beq _0806DAD0
adds r0, r6, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _0806DAB8
ldr r0, _0806DAB4
mov r3, r8
lsls r1, r3, 2
b _0806DB82
.align 2, 0
_0806DAB4: .4byte gUnknown_80F9DF0
_0806DAB8:
ldr r0, _0806DACC
mov r2, r8
lsls r1, r2, 2
adds r1, r0
ldr r2, [r1]
_0806DAC2:
mov r0, r9
adds r1, r7, 0
bl sub_80522F4
b _0806DBA4
.align 2, 0
_0806DACC: .4byte gUnknown_80F9CC0
_0806DAD0:
ldr r2, _0806DB04
ldrb r1, [r6, 0xA]
movs r0, 0x64
muls r0, r1
ldr r3, _0806DB08
adds r0, r3
ldr r1, [r2]
adds r3, r1, r0
ldrb r0, [r6, 0x7]
cmp r0, 0
bne _0806DB00
adds r0, r6, 0
adds r0, 0x40
ldrb r1, [r0]
adds r2, r0, 0
cmp r1, 0x41
bne _0806DB18
ldr r0, _0806DB0C
ldr r0, [r0]
ldr r1, _0806DB10
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0806DB18
_0806DB00:
ldr r0, _0806DB14
b _0806DB7E
.align 2, 0
_0806DB04: .4byte gRecruitedPokemonRef
_0806DB08: .4byte 0x00008df8
_0806DB0C: .4byte gDungeonGlobalData
_0806DB10: .4byte 0x0000065c
_0806DB14: .4byte gUnknown_80F9CEC
_0806DB18:
ldrb r0, [r2]
cmp r0, 0x4A
beq _0806DB22
cmp r0, 0x47
bne _0806DB26
_0806DB22:
movs r0, 0x1
b _0806DB28
_0806DB26:
movs r0, 0
_0806DB28:
cmp r0, 0
beq _0806DB38
ldr r0, _0806DB34
mov r3, r8
lsls r1, r3, 2
b _0806DB82
.align 2, 0
_0806DB34: .4byte gUnknown_80F9DAC
_0806DB38:
adds r0, r6, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _0806DB4C
ldr r0, _0806DB48
b _0806DB7E
.align 2, 0
_0806DB48: .4byte gUnknown_80F9DF0
_0806DB4C:
movs r1, 0xA
ldrsh r0, [r3, r1]
bl sub_806A58C
lsls r0, 24
cmp r0, 0
beq _0806DB94
ldr r0, _0806DB70
ldr r0, [r0]
ldr r2, _0806DB74
adds r0, r2
ldrb r0, [r0]
cmp r0, 0
beq _0806DB7C
ldr r0, _0806DB78
mov r3, r8
lsls r1, r3, 2
b _0806DB82
.align 2, 0
_0806DB70: .4byte gDungeonGlobalData
_0806DB74: .4byte 0x0000065d
_0806DB78: .4byte gUnknown_80F9D8C
_0806DB7C:
ldr r0, _0806DB90
_0806DB7E:
mov r2, r8
lsls r1, r2, 2
_0806DB82:
adds r1, r0
ldr r1, [r1]
_0806DB86:
mov r0, r9
bl sub_805239C
b _0806DBA4
.align 2, 0
_0806DB90: .4byte gUnknown_80F9D84
_0806DB94:
ldr r0, _0806DC4C
mov r3, r8
lsls r1, r3, 2
adds r1, r0
ldr r1, [r1]
mov r0, r9
bl sub_805239C
_0806DBA4:
mov r1, r10
ldrb r0, [r1]
subs r0, 0x3
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _0806DBBC
adds r0, r6, 0
adds r0, 0x9C
ldr r0, [r0]
bl sub_8076CB4
_0806DBBC:
adds r1, r6, 0
adds r1, 0x60
ldrb r3, [r1]
movs r2, 0x1
mov r8, r2
mov r0, r8
ands r0, r3
adds r5, r1, 0
cmp r0, 0
beq _0806DC5C
movs r0, 0x8
ands r0, r3
cmp r0, 0
bne _0806DC5C
movs r0, 0x2
ands r0, r3
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
bne _0806DC5C
ldrb r0, [r5, 0x2]
cmp r0, 0xD2
bne _0806DC5C
adds r0, r7, 0
bl sub_8042148
adds r0, r7, 0
adds r0, 0x22
strb r4, [r0]
ldrh r0, [r6, 0x10]
movs r2, 0
strh r0, [r6, 0xE]
movs r3, 0xAC
lsls r3, 1
adds r0, r6, r3
strb r2, [r0]
movs r1, 0xA6
lsls r1, 1
adds r0, r6, r1
mov r3, r8
strb r3, [r0]
movs r0, 0x9E
lsls r0, 1
adds r1, r6, r0
movs r3, 0xA0
lsls r3, 1
adds r0, r6, r3
ldr r0, [r0]
str r0, [r1]
ldrb r0, [r6, 0x7]
cmp r0, 0
beq _0806DC36
ldr r0, _0806DC50
ldr r1, [r0]
ldr r3, _0806DC54
adds r1, r3
strb r2, [r1]
ldr r0, [r0]
ldr r1, _0806DC58
adds r0, r1
strb r2, [r0]
_0806DC36:
strb r2, [r5, 0x2]
strb r2, [r5, 0x1]
strb r2, [r5]
adds r0, r6, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x3
bne _0806DC48
b _0806DEC8
_0806DC48:
b _0806DEE4
.align 2, 0
_0806DC4C: .4byte gUnknown_80F9D28
_0806DC50: .4byte gDungeonGlobalData
_0806DC54: .4byte 0x00000679
_0806DC58: .4byte 0x00000676
_0806DC5C:
ldrb r0, [r6, 0x7]
cmp r0, 0
bne _0806DC64
b _0806DDFC
_0806DC64:
mov r10, r5
ldrb r1, [r5]
movs r0, 0x1
ands r0, r1
cmp r0, 0
bne _0806DC72
b _0806DDFC
_0806DC72:
movs r0, 0x8
ands r0, r1
cmp r0, 0
beq _0806DC7C
b _0806DDFC
_0806DC7C:
ldrb r0, [r5, 0x2]
cmp r0, 0xD8
beq _0806DC84
b _0806DDFC
_0806DC84:
movs r4, 0
_0806DC86:
ldr r0, _0806DD80
ldr r0, [r0]
lsls r1, r4, 2
ldr r2, _0806DD84
adds r0, r2
adds r0, r1
ldr r0, [r0]
mov r8, r0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806DCDE
cmp r8, r7
beq _0806DCDE
adds r0, r7, 0
mov r1, r8
bl CanSee
lsls r0, 24
cmp r0, 0
beq _0806DCDE
mov r3, r8
movs r0, 0x4
ldrsh r1, [r3, r0]
movs r2, 0x4
ldrsh r0, [r7, r2]
subs r1, r0
cmp r1, 0
bge _0806DCC4
negs r1, r1
_0806DCC4:
cmp r1, 0x1
bgt _0806DCDE
mov r3, r8
movs r0, 0x6
ldrsh r1, [r3, r0]
movs r2, 0x6
ldrsh r0, [r7, r2]
subs r1, r0
cmp r1, 0
bge _0806DCDA
negs r1, r1
_0806DCDA:
cmp r1, 0x1
ble _0806DCE4
_0806DCDE:
adds r4, 0x1
cmp r4, 0x3
ble _0806DC86
_0806DCE4:
cmp r4, 0x4
bne _0806DCEA
b _0806DDFC
_0806DCEA:
adds r0, r7, 0
bl sub_8042148
mov r3, r8
ldr r4, [r3, 0x4]
ldr r1, _0806DD88
mov r0, r8
adds r2, r7, 0
bl sub_8068FE0
lsls r1, r4, 16
asrs r1, 16
asrs r4, 16
adds r0, r7, 0
adds r2, r4, 0
movs r3, 0x1
bl sub_80694C0
adds r0, r7, 0
movs r1, 0
bl sub_804535C
adds r1, r7, 0
adds r1, 0x22
movs r0, 0
strb r0, [r1]
ldrh r0, [r6, 0x10]
movs r4, 0
strh r0, [r6, 0xE]
adds r0, r7, 0
bl sub_8042A24
movs r1, 0xAC
lsls r1, 1
adds r0, r6, r1
strb r4, [r0]
movs r2, 0xA6
lsls r2, 1
adds r1, r6, r2
movs r0, 0x1
strb r0, [r1]
movs r3, 0x9E
lsls r3, 1
adds r1, r6, r3
subs r2, 0xC
adds r0, r6, r2
ldr r0, [r0]
str r0, [r1]
ldrb r0, [r6, 0x7]
cmp r0, 0
beq _0806DD62
ldr r0, _0806DD80
ldr r1, [r0]
ldr r3, _0806DD8C
adds r1, r3
strb r4, [r1]
ldr r0, [r0]
ldr r1, _0806DD90
adds r0, r1
strb r4, [r0]
_0806DD62:
mov r2, r10
strb r4, [r2, 0x2]
strb r4, [r2, 0x1]
strb r4, [r2]
adds r0, r6, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x3
bne _0806DD94
mov r0, r9
adds r1, r7, 0
movs r2, 0x3
bl sub_807A5D0
b _0806DDA2
.align 2, 0
_0806DD80: .4byte gDungeonGlobalData
_0806DD84: .4byte 0x0001357c
_0806DD88: .4byte 0x00000221
_0806DD8C: .4byte 0x00000679
_0806DD90: .4byte 0x00000676
_0806DD94:
cmp r0, 0x2
bne _0806DDA2
mov r0, r9
adds r1, r7, 0
movs r2, 0x2
bl sub_807A5D0
_0806DDA2:
adds r0, r7, 0
bl sub_8078084
adds r0, r6, 0
movs r1, 0
bl sub_806BFC0
bl sub_800DBBC
adds r0, r7, 0
bl sub_806A390
adds r0, r7, 0
bl sub_806CEBC
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r7, 0
bl sub_806CCB4
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
ldr r4, _0806DDF0
adds r0, r4, 0
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
adds r4, 0x50
adds r0, r4, 0
mov r1, r8
movs r2, 0
bl SetMessageArgument
ldr r0, _0806DDF4
b _0806DF2E
.align 2, 0
_0806DDF0: .4byte gAvailablePokemonNames
_0806DDF4: .4byte gUnknown_80FD484
_0806DDF8:
mov r4, r8
b _0806DE64
_0806DDFC:
adds r0, r7, 0
movs r1, 0x16
bl HasIQSkill
lsls r0, 24
cmp r0, 0
bne _0806DE0C
b _0806DF48
_0806DE0C:
movs r4, 0
ldrb r1, [r5]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806DE28
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _0806DE28
ldrb r0, [r5, 0x2]
cmp r0, 0x3A
bne _0806DE28
adds r4, r5, 0
_0806DE28:
cmp r4, 0
bne _0806DE68
ldrb r0, [r6, 0x6]
cmp r0, 0
bne _0806DE64
movs r3, 0
ldr r0, _0806DED4
ldr r2, [r0]
mov r12, r2
movs r0, 0x1
mov r10, r0
_0806DE3E:
lsls r0, r3, 2
add r0, r12
mov r8, r0
ldrb r1, [r2]
mov r0, r10
ands r0, r1
cmp r0, 0
beq _0806DE5C
movs r0, 0x8
ands r0, r1
cmp r0, 0
bne _0806DE5C
ldrb r0, [r2, 0x2]
cmp r0, 0x3A
beq _0806DDF8
_0806DE5C:
adds r2, 0x4
adds r3, 0x1
cmp r3, 0x13
ble _0806DE3E
_0806DE64:
cmp r4, 0
beq _0806DF48
_0806DE68:
adds r0, r7, 0
bl sub_8042148
adds r0, r4, 0
movs r1, 0x46
movs r2, 0x2
bl sub_8045C28
adds r1, r7, 0
adds r1, 0x22
movs r0, 0
strb r0, [r1]
ldrh r0, [r6, 0x10]
movs r2, 0
strh r0, [r6, 0xE]
movs r1, 0xAC
lsls r1, 1
adds r0, r6, r1
strb r2, [r0]
movs r3, 0xA6
lsls r3, 1
adds r1, r6, r3
movs r0, 0x1
strb r0, [r1]
movs r0, 0x9E
lsls r0, 1
adds r1, r6, r0
subs r3, 0xC
adds r0, r6, r3
ldr r0, [r0]
str r0, [r1]
ldrb r0, [r6, 0x7]
cmp r0, 0
beq _0806DEBE
ldr r0, _0806DED8
ldr r1, [r0]
ldr r3, _0806DEDC
adds r1, r3
strb r2, [r1]
ldr r0, [r0]
ldr r1, _0806DEE0
adds r0, r1
strb r2, [r0]
_0806DEBE:
adds r0, r6, 0
adds r0, 0xC8
ldrb r0, [r0]
cmp r0, 0x3
bne _0806DEE4
_0806DEC8:
mov r0, r9
adds r1, r7, 0
movs r2, 0x3
bl sub_807A5D0
b _0806DEF2
.align 2, 0
_0806DED4: .4byte gTeamInventory_203B460
_0806DED8: .4byte gDungeonGlobalData
_0806DEDC: .4byte 0x00000679
_0806DEE0: .4byte 0x00000676
_0806DEE4:
cmp r0, 0x2
bne _0806DEF2
mov r0, r9
adds r1, r7, 0
movs r2, 0x2
bl sub_807A5D0
_0806DEF2:
adds r0, r7, 0
bl sub_8078084
adds r0, r6, 0
movs r1, 0
bl sub_806BFC0
bl sub_800DBBC
adds r0, r7, 0
bl sub_806A390
adds r0, r7, 0
bl sub_806CEBC
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r7, 0
bl sub_806CCB4
adds r0, r7, 0
bl DungeonEntityUpdateStatusSprites
ldr r0, _0806DF40
adds r1, r7, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _0806DF44
_0806DF2E:
ldr r1, [r0]
mov r0, r9
bl sub_805239C
adds r0, r7, 0
bl sub_806F63C
bl _0806D608
.align 2, 0
_0806DF40: .4byte gUnknown_202DFE8
_0806DF44: .4byte gUnknown_80FD46C
_0806DF48:
ldrb r4, [r6, 0x7]
cmp r4, 0
bne _0806DF68
ldrb r1, [r5]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806DF68
adds r1, r7, 0x4
adds r0, r7, 0
adds r2, r5, 0
bl sub_80464C8
strb r4, [r5, 0x2]
strb r4, [r5, 0x1]
strb r4, [r5]
_0806DF68:
adds r0, r6, 0
adds r0, 0xF7
ldrb r0, [r0]
cmp r0, 0
beq _0806DF7E
ldr r0, _0806E02C
ldr r0, [r0]
ldr r2, _0806E030
adds r0, r2
ldr r1, _0806E034
strh r1, [r0]
_0806DF7E:
movs r3, 0
mov r10, r3
mov r0, r9
bl GetEntityType
cmp r0, 0x1
bne _0806E066
mov r0, r9
ldr r4, [r0, 0x70]
movs r1, 0x2
ldrsh r0, [r6, r1]
ldrb r1, [r6, 0x9]
bl CalculateEXPGain
adds r5, r0, 0
adds r0, r6, 0
adds r0, 0xFB
ldrb r0, [r0]
cmp r0, 0
beq _0806DFAE
cmp r0, 0x2
bne _0806DFB4
lsls r0, r5, 1
adds r5, r0, r5
_0806DFAE:
lsrs r0, r5, 31
adds r0, r5, r0
asrs r5, r0, 1
_0806DFB4:
cmp r5, 0
bne _0806DFBA
movs r5, 0x1
_0806DFBA:
ldrb r0, [r4, 0x7]
cmp r0, 0
beq _0806DFC8
movs r2, 0x2
ldrsh r0, [r6, r2]
bl sub_80980B4
_0806DFC8:
adds r0, r6, 0
adds r0, 0xF4
ldrb r0, [r0]
cmp r0, 0
beq _0806DFDA
ldr r3, _0806E038
adds r1, r4, r3
movs r0, 0x1
strb r0, [r1]
_0806DFDA:
ldr r0, [sp, 0x78]
cmp r0, 0x1
bne _0806E066
ldrb r0, [r4, 0x6]
cmp r0, 0
bne _0806E040
ldrb r0, [r6, 0x6]
cmp r0, 0
beq _0806E066
mov r0, r9
mov r1, r9
adds r2, r5, 0
bl sub_8071D4C
movs r6, 0
_0806DFF8:
ldr r0, _0806E02C
ldr r0, [r0]
lsls r1, r6, 2
ldr r2, _0806E03C
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806E020
cmp r4, r9
beq _0806E020
mov r0, r9
adds r1, r4, 0
adds r2, r5, 0
bl sub_8071D4C
_0806E020:
adds r6, 0x1
cmp r6, 0x3
ble _0806DFF8
movs r3, 0x1
mov r10, r3
b _0806E066
.align 2, 0
_0806E02C: .4byte gDungeonGlobalData
_0806E030: .4byte 0x0000066a
_0806E034: .4byte 0x000003e7
_0806E038: .4byte 0x0000014b
_0806E03C: .4byte 0x0001357c
_0806E040:
ldr r5, _0806E0BC
ldr r0, [r5]
ldr r1, _0806E0C0
adds r0, r1
ldrb r0, [r0]
bl sub_809033C
lsls r0, 24
cmp r0, 0
beq _0806E066
ldr r2, _0806E0C4
adds r0, r4, r2
add r3, sp, 0x78
ldrb r3, [r3]
strb r3, [r0]
ldr r0, [r5]
add r1, sp, 0x78
ldrb r1, [r1]
strb r1, [r0, 0xD]
_0806E066:
mov r0, r9
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806E08A
mov r0, r9
bl GetEntityType
cmp r0, 0x1
bne _0806E08A
mov r2, r9
ldr r0, [r2, 0x70]
ldrb r0, [r0, 0x7]
cmp r0, 0
bne _0806E08A
movs r3, 0
mov r10, r3
_0806E08A:
mov r0, r10
cmp r0, 0
beq _0806E0E4
add r0, sp, 0x4
adds r1, r7, 0
bl sub_8069D4C
mov r0, r9
adds r1, r7, 0
bl sub_806F660
lsls r0, 24
cmp r0, 0
beq _0806E0D8
mov r0, r9
adds r1, r7, 0
add r2, sp, 0x4
bl sub_806FA5C
lsls r0, 24
cmp r0, 0
bne _0806E0CC
ldr r1, _0806E0C8
adds r0, r7, 0
b _0806E0DC
.align 2, 0
_0806E0BC: .4byte gDungeonGlobalData
_0806E0C0: .4byte 0x00000644
_0806E0C4: .4byte 0x00000149
_0806E0C8: .4byte 0x000001f5
_0806E0CC:
ldr r1, _0806E0D4
movs r0, 0x1
strb r0, [r1]
b _0806E0EE
.align 2, 0
_0806E0D4: .4byte gUnknown_202F221
_0806E0D8:
adds r0, r7, 0
ldr r1, [sp, 0x50]
_0806E0DC:
mov r2, r9
bl sub_8068FE0
b _0806E0EE
_0806E0E4:
adds r0, r7, 0
ldr r1, [sp, 0x50]
mov r2, r9
bl sub_8068FE0
_0806E0EE:
movs r0, 0x1
_0806E0F0:
add sp, 0x58
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_806D528
thumb_func_start sub_806E100
sub_806E100:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
adds r6, r0, 0
mov r8, r1
str r2, [sp, 0x18]
lsls r3, 24
lsrs r7, r3, 24
movs r0, 0
mov r9, r0
movs r1, 0
str r1, [sp, 0x20]
mov r2, r8
ldr r2, [r2, 0x70]
str r2, [sp, 0x24]
ldr r3, [sp, 0x18]
ldr r3, [r3, 0x70]
mov r10, r3
adds r0, r6, 0
movs r1, 0x1
bl sub_800A020
mov r0, r9
ldr r4, [sp, 0x48]
strb r0, [r4, 0xD]
strb r0, [r4, 0xE]
movs r1, 0
str r1, [sp, 0x1C]
ldr r0, [sp, 0x18]
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806E14E
movs r0, 0x1
b _0806E61A
_0806E14E:
cmp r7, 0x1
beq _0806E156
cmp r7, 0x7
bne _0806E15A
_0806E156:
movs r2, 0x1
str r2, [sp, 0x20]
_0806E15A:
ldr r0, [sp, 0x18]
movs r1, 0x35
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E170
cmp r7, 0
beq _0806E170
movs r3, 0x1
str r3, [sp, 0x1C]
_0806E170:
movs r0, 0x2
ldr r4, [sp, 0x48]
str r0, [r4, 0x8]
movs r5, 0
add r0, sp, 0x10
mov r9, r0
b _0806E1F2
_0806E17E:
mov r1, r10
adds r1, 0x5C
ldr r2, [sp, 0x20]
cmp r2, 0
beq _0806E1B4
adds r0, r1, r5
ldrb r0, [r0]
cmp r0, 0xE
bne _0806E1B4
mov r0, r10
adds r0, 0xF5
ldrb r0, [r0]
cmp r0, 0
bne _0806E1B4
movs r4, 0
ldr r0, _0806E1AC
ldr r0, [r0]
ldr r3, _0806E1B0
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
b _0806E1CA
.align 2, 0
_0806E1AC: .4byte gDungeonGlobalData
_0806E1B0: .4byte 0x00000179
_0806E1B4:
ldr r2, _0806E4E4
adds r0, r1, r5
ldrb r1, [r0]
lsls r1, 1
lsls r0, r7, 3
adds r0, r7
lsls r0, 2
adds r1, r0
adds r1, r2
movs r0, 0
ldrsh r4, [r1, r0]
_0806E1CA:
cmp r4, 0x2
beq _0806E1DC
lsls r0, r4, 2
add r0, sp
ldr r2, [r0]
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E1DC:
lsls r0, r5, 2
add r0, r9
str r4, [r0]
ldr r0, _0806E4E8
ldr r0, [r0]
movs r1, 0x9E
lsls r1, 1
adds r0, r1
adds r0, r5
strb r4, [r0]
adds r5, 0x1
_0806E1F2:
cmp r5, 0x1
bgt _0806E20E
mov r1, sp
ldr r0, _0806E4EC
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [r0]
str r0, [r1]
adds r0, r6, 0
bl sub_800A2A0
lsls r0, 24
cmp r0, 0
beq _0806E17E
_0806E20E:
ldr r2, _0806E4F0
mov r1, r9
ldr r0, [r1, 0x4]
lsls r0, 2
ldr r1, [sp, 0x10]
lsls r1, 4
adds r0, r1
adds r0, r2
ldr r0, [r0]
ldr r2, [sp, 0x48]
str r0, [r2, 0x8]
movs r3, 0x1
mov r9, r3
cmp r0, 0x3
beq _0806E240
movs r4, 0
mov r9, r4
ldr r0, [sp, 0x1C]
cmp r0, 0
beq _0806E240
ldr r0, _0806E4F4
ldr r1, [r0, 0x4]
ldr r0, [r0]
str r0, [r6]
str r1, [r6, 0x4]
_0806E240:
cmp r7, 0x2
beq _0806E248
cmp r7, 0x6
bne _0806E26C
_0806E248:
ldr r0, [sp, 0x18]
movs r1, 0x2
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E26C
ldr r0, _0806E4E8
ldr r0, [r0]
ldr r2, _0806E4F8
adds r1, r0, r2
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E4FC
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E26C:
cmp r7, 0x2
bne _0806E2A0
ldr r0, [sp, 0x18]
bl GetFlashFireStatus
lsls r0, 24
cmp r0, 0
beq _0806E2A0
ldr r0, _0806E4E8
ldr r0, [r0]
movs r3, 0xB7
lsls r3, 1
adds r0, r3
movs r4, 0
movs r5, 0x1
strb r5, [r0]
adds r0, r6, 0
movs r1, 0
bl sub_800A020
ldr r0, [sp, 0x48]
str r4, [r0, 0x8]
strb r4, [r0, 0xD]
strb r5, [r0, 0xE]
movs r1, 0
mov r9, r1
_0806E2A0:
cmp r7, 0x9
bne _0806E2D2
ldr r0, [sp, 0x18]
movs r1, 0x37
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E2D2
ldr r0, _0806E4E8
ldr r0, [r0]
ldr r2, _0806E500
adds r0, r2
movs r4, 0
movs r5, 0x1
strb r5, [r0]
adds r0, r6, 0
movs r1, 0
bl sub_800A020
ldr r3, [sp, 0x48]
str r4, [r3, 0x8]
strb r4, [r3, 0xD]
strb r5, [r3, 0xE]
mov r9, r4
_0806E2D2:
cmp r7, 0x3
bne _0806E340
mov r0, r8
movs r1, 0x10
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E340
movs r4, 0
ldr r0, [sp, 0x24]
movs r2, 0x10
ldrsh r1, [r0, r2]
cmp r1, 0
bge _0806E2F2
adds r1, 0x3
_0806E2F2:
asrs r1, 2
ldr r3, [sp, 0x24]
movs r2, 0xE
ldrsh r0, [r3, r2]
cmp r1, r0
blt _0806E300
movs r4, 0x1
_0806E300:
ldr r0, [sp, 0x24]
movs r1, 0x80
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r5, r0, 24
cmp r4, 0
beq _0806E32A
ldr r0, _0806E4E8
ldr r0, [r0]
movs r3, 0xB8
lsls r3, 1
adds r0, r3
movs r1, 0x1
strb r1, [r0]
ldr r2, _0806E504
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E32A:
cmp r5, 0
beq _0806E340
mov r0, r8
bl sub_80428EC
ldr r0, _0806E508
ldr r2, [r0]
mov r0, r8
ldr r1, [sp, 0x18]
bl sub_80522F4
_0806E340:
cmp r7, 0x4
bne _0806E3AC
mov r0, r8
movs r1, 0x1A
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E3AC
movs r4, 0
ldr r0, [sp, 0x24]
movs r2, 0x10
ldrsh r1, [r0, r2]
cmp r1, 0
bge _0806E360
adds r1, 0x3
_0806E360:
asrs r1, 2
ldr r3, [sp, 0x24]
movs r2, 0xE
ldrsh r0, [r3, r2]
cmp r1, r0
blt _0806E36E
movs r4, 0x1
_0806E36E:
ldr r0, [sp, 0x24]
movs r1, 0x2
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r5, r0, 24
cmp r4, 0
beq _0806E396
ldr r0, _0806E4E8
ldr r0, [r0]
ldr r3, _0806E50C
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E504
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E396:
cmp r5, 0
beq _0806E3AC
mov r0, r8
bl sub_80428D8
ldr r0, _0806E510
ldr r2, [r0]
mov r0, r8
ldr r1, [sp, 0x18]
bl sub_80522F4
_0806E3AC:
cmp r7, 0xC
bne _0806E41A
mov r0, r8
movs r1, 0x43
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E41A
movs r4, 0
ldr r0, [sp, 0x24]
movs r2, 0x10
ldrsh r1, [r0, r2]
cmp r1, 0
bge _0806E3CC
adds r1, 0x3
_0806E3CC:
asrs r1, 2
ldr r3, [sp, 0x24]
movs r2, 0xE
ldrsh r0, [r3, r2]
cmp r1, r0
blt _0806E3DA
movs r4, 0x1
_0806E3DA:
ldr r0, [sp, 0x24]
movs r1, 0x10
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r5, r0, 24
cmp r4, 0
beq _0806E404
ldr r0, _0806E4E8
ldr r0, [r0]
movs r3, 0xB9
lsls r3, 1
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E504
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E404:
cmp r5, 0
beq _0806E41A
mov r0, r8
bl sub_8042978
ldr r0, _0806E514
ldr r2, [r0]
mov r0, r8
ldr r1, [sp, 0x18]
bl sub_80522F4
_0806E41A:
cmp r7, 0x2
bne _0806E486
mov r0, r8
movs r1, 0x46
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E486
movs r4, 0
ldr r0, [sp, 0x24]
movs r2, 0x10
ldrsh r1, [r0, r2]
cmp r1, 0
bge _0806E43A
adds r1, 0x3
_0806E43A:
asrs r1, 2
ldr r3, [sp, 0x24]
movs r2, 0xE
ldrsh r0, [r3, r2]
cmp r1, r0
blt _0806E448
movs r4, 0x1
_0806E448:
ldr r0, [sp, 0x24]
movs r1, 0x20
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r5, r0, 24
cmp r4, 0
beq _0806E470
ldr r0, _0806E4E8
ldr r0, [r0]
ldr r3, _0806E518
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E504
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E470:
cmp r5, 0
beq _0806E486
mov r0, r8
bl sub_804298C
ldr r0, _0806E51C
ldr r2, [r0]
mov r0, r8
ldr r1, [sp, 0x18]
bl sub_80522F4
_0806E486:
adds r0, r6, 0
bl sub_800A2A0
lsls r0, 24
cmp r0, 0
bne _0806E4B8
mov r0, r8
adds r1, r7, 0
bl HasType
lsls r0, 24
cmp r0, 0
beq _0806E4B8
ldr r0, _0806E4E8
ldr r0, [r0]
movs r4, 0xBA
lsls r4, 1
adds r0, r4
movs r1, 0x1
strb r1, [r0]
ldr r2, _0806E520
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E4B8:
mov r0, r8
bl GetWeather
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x1
bne _0806E53E
cmp r7, 0x2
bne _0806E524
ldr r0, _0806E4E8
ldr r0, [r0]
movs r1, 0xB6
lsls r1, 1
adds r0, r1
strb r4, [r0]
ldr r2, _0806E520
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
b _0806E53E
.align 2, 0
_0806E4E4: .4byte gTypeEffectivenessChart
_0806E4E8: .4byte gDungeonGlobalData
_0806E4EC: .4byte gUnknown_8106F54
_0806E4F0: .4byte gUnknown_80F54B4
_0806E4F4: .4byte gUnknown_8106EFC
_0806E4F8: .4byte 0x0000016d
_0806E4FC: .4byte gUnknown_8106F1C
_0806E500: .4byte 0x0000016f
_0806E504: .4byte gUnknown_8106F0C
_0806E508: .4byte gUnknown_80FEDA8
_0806E50C: .4byte 0x00000171
_0806E510: .4byte gUnknown_80FED88
_0806E514: .4byte gUnknown_80FEDC8
_0806E518: .4byte 0x00000173
_0806E51C: .4byte gUnknown_80FEDE8
_0806E520: .4byte gUnknown_8106F14
_0806E524:
cmp r7, 0x3
bne _0806E53E
ldr r0, _0806E560
ldr r0, [r0]
movs r2, 0xB6
lsls r2, 1
adds r0, r2
strb r4, [r0]
ldr r2, _0806E564
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E53E:
cmp r4, 0x4
bne _0806E586
cmp r7, 0x2
bne _0806E56C
ldr r0, _0806E560
ldr r0, [r0]
ldr r3, _0806E568
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E564
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
b _0806E586
.align 2, 0
_0806E560: .4byte gDungeonGlobalData
_0806E564: .4byte gUnknown_8106F1C
_0806E568: .4byte 0x0000016b
_0806E56C:
cmp r7, 0x3
bne _0806E586
ldr r0, _0806E62C
ldr r0, [r0]
ldr r2, _0806E630
adds r1, r0, r2
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E634
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E586:
cmp r4, 0x3
bne _0806E5A6
cmp r7, 0x1
beq _0806E5A6
ldr r2, _0806E638
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
ldr r0, _0806E62C
ldr r0, [r0]
movs r3, 0xB5
lsls r3, 1
adds r1, r0, r3
movs r0, 0x1
strb r0, [r1]
_0806E5A6:
ldr r0, _0806E62C
ldr r1, [r0]
ldr r2, _0806E63C
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _0806E5B8
cmp r4, 0x6
bne _0806E5CE
_0806E5B8:
cmp r7, 0x5
bne _0806E5CE
ldr r3, _0806E640
adds r1, r3
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E644
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E5CE:
ldr r0, _0806E62C
ldr r1, [r0]
ldr r4, _0806E648
adds r0, r1, r4
ldrb r0, [r0]
cmp r0, 0
beq _0806E5F4
cmp r7, 0x2
bne _0806E5F4
movs r0, 0xBB
lsls r0, 1
adds r1, r0
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E644
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E5F4:
cmp r7, 0x5
bne _0806E618
ldr r0, [sp, 0x24]
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0xB
bne _0806E618
ldr r0, _0806E62C
ldr r0, [r0]
ldr r2, _0806E64C
adds r1, r0, r2
movs r0, 0x1
strb r0, [r1]
ldr r2, _0806E650
adds r0, r6, 0
adds r1, r6, 0
bl sub_800A34C
_0806E618:
mov r0, r9
_0806E61A:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0806E62C: .4byte gDungeonGlobalData
_0806E630: .4byte 0x0000016b
_0806E634: .4byte gUnknown_8106F14
_0806E638: .4byte gUnknown_8106F64
_0806E63C: .4byte 0x0000e277
_0806E640: .4byte 0x00000175
_0806E644: .4byte gUnknown_8106F1C
_0806E648: .4byte 0x0000e278
_0806E64C: .4byte 0x00000177
_0806E650: .4byte gUnknown_8106F0C
thumb_func_end sub_806E100
thumb_func_start WeightWeakTypePicker
WeightWeakTypePicker:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1C
mov r9, r0
str r1, [sp, 0x14]
lsls r2, 24
lsrs r4, r2, 24
movs r5, 0x1
movs r0, 0
str r0, [sp, 0x10]
adds r0, r1, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0806E6DC
cmp r4, 0x1
beq _0806E682
cmp r4, 0x7
bne _0806E686
_0806E682:
movs r1, 0x1
str r1, [sp, 0x10]
_0806E686:
mov r2, r9
ldr r2, [r2, 0x70]
mov r8, r2
ldr r3, [sp, 0x14]
ldr r3, [r3, 0x70]
mov r10, r3
cmp r4, 0x2
bne _0806E6A2
ldr r0, [sp, 0x14]
bl GetFlashFireStatus
lsls r0, 24
cmp r0, 0
bne _0806E6C6
_0806E6A2:
cmp r4, 0x5
bne _0806E6B4
ldr r0, [sp, 0x14]
movs r1, 0x23
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806E6C6
_0806E6B4:
cmp r4, 0x3
bne _0806E6CA
ldr r0, [sp, 0x14]
movs r1, 0x24
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E6CA
_0806E6C6:
movs r0, 0
b _0806E894
_0806E6CA:
cmp r4, 0x9
bne _0806E6E0
ldr r0, [sp, 0x14]
movs r1, 0x37
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E6E0
_0806E6DC:
movs r0, 0x1
b _0806E894
_0806E6E0:
mov r6, r10
adds r6, 0x5C
str r6, [sp, 0x18]
lsls r0, r4, 3
adds r0, r4
lsls r0, 2
mov r12, r0
adds r2, r6, 0
_0806E6F0:
mov r0, sp
ldr r1, _0806E724
ldm r1!, {r3,r6,r7}
stm r0!, {r3,r6,r7}
ldr r1, [r1]
str r1, [r0]
ldr r7, [sp, 0x10]
cmp r7, 0
beq _0806E730
ldrb r0, [r2]
cmp r0, 0xE
bne _0806E730
mov r0, r10
adds r0, 0xF5
ldrb r0, [r0]
cmp r0, 0
bne _0806E730
movs r3, 0
ldr r0, _0806E728
ldr r0, [r0]
ldr r6, _0806E72C
adds r1, r0, r6
movs r0, 0x1
strb r0, [r1]
b _0806E73E
.align 2, 0
_0806E724: .4byte gTypeEffectivenessMultipliers
_0806E728: .4byte gDungeonGlobalData
_0806E72C: .4byte 0x00000179
_0806E730:
ldrb r0, [r2]
lsls r0, 1
add r0, r12
ldr r7, _0806E854
adds r0, r7
movs r1, 0
ldrsh r3, [r0, r1]
_0806E73E:
cmp r5, 0
beq _0806E75E
lsls r0, r3, 2
add r0, sp
ldr r0, [r0]
muls r5, r0
lsrs r0, r5, 31
adds r0, r5, r0
asrs r5, r0, 1
cmp r5, 0
beq _0806E84E
adds r2, 0x1
ldr r0, [sp, 0x18]
adds r0, 0x1
cmp r2, r0
ble _0806E6F0
_0806E75E:
cmp r4, 0x2
beq _0806E766
cmp r4, 0x6
bne _0806E774
_0806E766:
ldr r0, [sp, 0x14]
movs r1, 0x2
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806E84E
_0806E774:
cmp r4, 0x3
bne _0806E7A0
mov r0, r9
movs r1, 0x10
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E7A0
mov r2, r8
movs r3, 0x10
ldrsh r1, [r2, r3]
cmp r1, 0
bge _0806E792
adds r1, 0x3
_0806E792:
asrs r1, 2
mov r6, r8
movs r7, 0xE
ldrsh r0, [r6, r7]
cmp r1, r0
blt _0806E7A0
lsls r5, 1
_0806E7A0:
cmp r4, 0x4
bne _0806E7CC
mov r0, r9
movs r1, 0x1A
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E7CC
mov r0, r8
movs r2, 0x10
ldrsh r1, [r0, r2]
cmp r1, 0
bge _0806E7BE
adds r1, 0x3
_0806E7BE:
asrs r1, 2
mov r3, r8
movs r6, 0xE
ldrsh r0, [r3, r6]
cmp r1, r0
blt _0806E7CC
lsls r5, 1
_0806E7CC:
cmp r4, 0xC
bne _0806E7F8
mov r0, r9
movs r1, 0x43
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E7F8
mov r7, r8
movs r0, 0x10
ldrsh r1, [r7, r0]
cmp r1, 0
bge _0806E7EA
adds r1, 0x3
_0806E7EA:
asrs r1, 2
mov r2, r8
movs r3, 0xE
ldrsh r0, [r2, r3]
cmp r1, r0
blt _0806E7F8
lsls r5, 1
_0806E7F8:
cmp r4, 0x2
bne _0806E824
mov r0, r9
movs r1, 0x46
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E824
mov r6, r8
movs r7, 0x10
ldrsh r1, [r6, r7]
cmp r1, 0
bge _0806E816
adds r1, 0x3
_0806E816:
asrs r1, 2
mov r2, r8
movs r3, 0xE
ldrsh r0, [r2, r3]
cmp r1, r0
blt _0806E824
lsls r5, 1
_0806E824:
cmp r5, 0
beq _0806E84E
mov r0, r9
adds r1, r4, 0
bl HasType
lsls r0, 24
cmp r0, 0
beq _0806E838
lsls r5, 1
_0806E838:
mov r0, r9
bl GetWeather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0806E85A
cmp r4, 0x2
beq _0806E858
cmp r4, 0x3
bne _0806E85A
_0806E84E:
movs r0, 0x2
b _0806E894
.align 2, 0
_0806E854: .4byte gTypeEffectivenessChart
_0806E858:
lsls r5, 1
_0806E85A:
ldr r0, _0806E8A4
ldr r1, [r0]
ldr r6, _0806E8A8
adds r1, r6
ldrb r1, [r1]
cmp r1, 0
beq _0806E86C
cmp r4, 0x5
beq _0806E84E
_0806E86C:
ldr r0, [r0]
ldr r7, _0806E8AC
adds r0, r7
ldrb r0, [r0]
cmp r0, 0
beq _0806E87C
cmp r4, 0x2
beq _0806E84E
_0806E87C:
cmp r4, 0x5
bne _0806E88C
mov r0, r8
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0xB
bne _0806E88C
lsls r5, 1
_0806E88C:
cmp r5, 0x2
ble _0806E892
movs r5, 0x3
_0806E892:
adds r0, r5, 0x2
_0806E894:
add sp, 0x1C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0806E8A4: .4byte gDungeonGlobalData
_0806E8A8: .4byte 0x0000e277
_0806E8AC: .4byte 0x0000e278
thumb_func_end WeightWeakTypePicker
thumb_func_start sub_806E8B0
sub_806E8B0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xC
adds r6, r0, 0
mov r9, r1
adds r0, r2, 0
str r3, [sp]
lsls r0, 24
lsrs r0, 24
movs r7, 0x1
movs r1, 0x1
mov r8, r1
movs r2, 0x1
str r2, [sp, 0x4]
str r1, [sp, 0x8]
bl sub_8092354
movs r2, 0
mov r10, r2
lsls r0, 24
cmp r0, 0
bne _0806E8E6
movs r0, 0x1
mov r10, r0
_0806E8E6:
adds r0, r6, 0
movs r1, 0x11
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E92C
ldr r5, [r6, 0x70]
adds r0, r6, 0
bl HasNegativeStatus
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
movs r1, 0x1
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r0, 24
cmp r4, 0
beq _0806E916
movs r7, 0x2
_0806E916:
cmp r0, 0
beq _0806E92C
adds r0, r6, 0
bl sub_80428B0
ldr r0, _0806EADC
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806E92C:
adds r0, r6, 0
movs r1, 0x22
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806E948
adds r0, r6, 0
movs r1, 0x4B
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E98E
_0806E948:
ldr r2, [r6, 0x70]
movs r4, 0
ldr r0, [sp, 0x30]
cmp r0, 0x20
bgt _0806E95A
mov r1, r10
cmp r1, 0
bne _0806E95A
movs r4, 0x1
_0806E95A:
movs r1, 0x80
lsls r1, 1
adds r0, r2, 0
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r1, r0, 24
cmp r4, 0
beq _0806E978
lsls r0, r7, 1
adds r7, r0, r7
mov r2, r8
lsls r2, 1
mov r8, r2
_0806E978:
cmp r1, 0
beq _0806E98E
adds r0, r6, 0
bl sub_80428C4
ldr r0, _0806EAE0
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806E98E:
adds r0, r6, 0
movs r1, 0x30
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E9AC
mov r0, r10
cmp r0, 0
bne _0806E9AC
lsls r0, r7, 1
adds r7, r0, r7
mov r1, r8
lsls r1, 1
mov r8, r1
_0806E9AC:
ldr r0, [r6, 0x70]
ldrb r0, [r0, 0x6]
movs r4, 0x1
cmp r0, 0
beq _0806E9B8
movs r4, 0
_0806E9B8:
adds r0, r6, 0
movs r1, 0x38
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806E9EA
mov r2, r10
cmp r2, 0x1
bne _0806E9EA
ldr r0, _0806EAE4
ldr r0, [r0]
ldr r1, _0806EAE8
adds r0, r1
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0806E9EA
lsls r0, r7, 4
subs r7, r0, r7
mov r2, r8
lsls r0, r2, 2
add r0, r8
lsls r0, 1
mov r8, r0
_0806E9EA:
adds r0, r6, 0
movs r1, 0x3F
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA1C
mov r0, r10
cmp r0, 0x1
bne _0806EA1C
ldr r0, _0806EAE4
ldr r0, [r0]
ldr r1, _0806EAEC
adds r0, r1
adds r0, r4
ldrb r0, [r0]
cmp r0, 0
beq _0806EA1C
lsls r0, r7, 4
subs r7, r0, r7
mov r2, r8
lsls r0, r2, 2
add r0, r8
lsls r0, 1
mov r8, r0
_0806EA1C:
mov r0, r9
movs r1, 0x6
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA38
mov r0, r10
cmp r0, 0
bne _0806EA38
lsls r7, 2
mov r1, r8
lsls r0, r1, 2
add r8, r0
_0806EA38:
mov r0, r9
movs r1, 0x34
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EA90
mov r2, r10
cmp r2, 0
bne _0806EA90
mov r0, r9
ldr r5, [r0, 0x70]
bl HasNegativeStatus
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r5, 0
movs r1, 0x8
adds r2, r4, 0
bl SetVisualFlags
lsls r0, 24
lsrs r1, r0, 24
cmp r4, 0
beq _0806EA7A
ldr r2, [sp, 0x4]
lsls r0, r2, 1
adds r2, r0, r2
str r2, [sp, 0x4]
ldr r0, [sp, 0x8]
lsls r0, 1
str r0, [sp, 0x8]
_0806EA7A:
cmp r1, 0
beq _0806EA90
mov r0, r9
bl sub_8042940
ldr r0, _0806EAF0
ldr r2, [r0]
adds r0, r6, 0
mov r1, r9
bl sub_80522F4
_0806EA90:
ldr r1, [sp]
ldr r0, [r1]
muls r0, r7
str r0, [r1]
ldr r2, [sp, 0x2C]
ldr r0, [r2]
ldr r1, [sp, 0x4]
muls r0, r1
str r0, [r2]
mov r2, r8
cmp r2, 0x1
beq _0806EAB6
ldr r1, [sp]
ldr r0, [r1]
mov r1, r8
bl __divsi3
ldr r2, [sp]
str r0, [r2]
_0806EAB6:
ldr r0, [sp, 0x8]
cmp r0, 0x1
beq _0806EACA
ldr r1, [sp, 0x2C]
ldr r0, [r1]
ldr r1, [sp, 0x8]
bl __divsi3
ldr r2, [sp, 0x2C]
str r0, [r2]
_0806EACA:
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
_0806EADC: .4byte gUnknown_80FEE04
_0806EAE0: .4byte gUnknown_80FEE2C
_0806EAE4: .4byte gDungeonGlobalData
_0806EAE8: .4byte 0x000037fa
_0806EAEC: .4byte 0x000037f8
_0806EAF0: .4byte gUnknown_80FEE54
thumb_func_end sub_806E8B0
thumb_func_start sub_806EAF4
sub_806EAF4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8C
str r0, [sp, 0x70]
mov r9, r1
adds r7, r3, 0
ldr r0, [sp, 0xB8]
ldr r1, [sp, 0xBC]
lsls r2, 24
lsrs r2, 24
str r2, [sp, 0x74]
lsls r0, 16
lsrs r4, r0, 16
lsls r1, 24
lsrs r1, 24
str r1, [sp, 0x78]
ldr r0, [sp, 0x70]
ldr r0, [r0, 0x70]
mov r10, r0
mov r1, r9
ldr r1, [r1, 0x70]
str r1, [sp, 0x7C]
adds r0, r2, 0
bl sub_8092354
movs r2, 0
str r2, [sp, 0x80]
lsls r0, 24
cmp r0, 0
bne _0806EB3A
movs r3, 0x1
str r3, [sp, 0x80]
_0806EB3A:
bl sub_806F500
mov r6, r10
ldrb r0, [r6, 0x7]
cmp r0, 0
bne _0806EB72
movs r0, 0x9E
lsls r0, 1
add r0, r10
ldr r0, [r0]
bl RoundUpFixedPoint
adds r1, r0, 0
cmp r1, 0
bne _0806EB72
movs r0, 0x1
ldr r2, [sp, 0xB0]
str r0, [r2]
str r1, [r2, 0x4]
movs r0, 0x2
str r0, [r2, 0x8]
add r3, sp, 0x74
ldrb r3, [r3]
strb r3, [r2, 0xC]
strb r1, [r2, 0xD]
strb r1, [r2, 0xE]
strb r1, [r2, 0xF]
b _0806F294
_0806EB72:
ldr r0, _0806EBA4
cmp r4, r0
bne _0806EBA8
mov r0, r9
movs r1, 0x35
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806EBA8
movs r0, 0x1
ldr r6, [sp, 0xB0]
str r0, [r6]
movs r1, 0
str r1, [r6, 0x4]
movs r0, 0x2
str r0, [r6, 0x8]
add r0, sp, 0x74
ldrb r0, [r0]
strb r0, [r6, 0xC]
strb r1, [r6, 0xD]
strb r1, [r6, 0xE]
strb r1, [r6, 0xF]
b _0806F294
.align 2, 0
_0806EBA4: .4byte 0x00000163
_0806EBA8:
add r1, sp, 0x74
ldrb r2, [r1]
ldr r1, [sp, 0xB0]
strb r2, [r1, 0xC]
ldr r1, _0806EDA4
ldr r0, [r1]
movs r2, 0x9A
lsls r2, 1
adds r0, r2
add r3, sp, 0x74
ldrb r3, [r3]
strb r3, [r0]
ldr r2, [r1]
movs r6, 0x9C
lsls r6, 1
adds r0, r2, r6
ldr r1, [sp, 0x80]
str r1, [r0]
lsls r1, 1
mov r0, r10
adds r0, 0x1C
adds r0, r1
movs r3, 0
ldrsh r4, [r0, r3]
mov r8, r1
ldr r6, [sp, 0x78]
cmp r6, 0
beq _0806EBF8
ldr r0, [sp, 0x74]
cmp r0, 0x2
bne _0806EBF8
mov r1, r10
movs r3, 0x28
ldrsh r0, [r1, r3]
adds r4, r0
ldrh r1, [r1, 0x28]
movs r6, 0xA2
lsls r6, 1
adds r0, r2, r6
strh r1, [r0]
_0806EBF8:
mov r0, r10
movs r2, 0x4
ldrsh r1, [r0, r2]
ldr r0, _0806EDA8
cmp r1, r0
bne _0806EC06
adds r4, 0x2
_0806EC06:
movs r0, 0xD1
lsls r0, 1
cmp r1, r0
bne _0806EC10
subs r4, 0x2
_0806EC10:
ldr r0, _0806EDAC
cmp r1, r0
bne _0806EC18
subs r4, 0x2
_0806EC18:
cmp r4, 0
bge _0806EC1E
movs r4, 0
_0806EC1E:
cmp r4, 0x14
ble _0806EC24
movs r4, 0x14
_0806EC24:
ldr r6, _0806EDA4
ldr r0, [r6]
movs r3, 0x9F
lsls r3, 1
adds r0, r3
strb r4, [r0]
ldr r1, [r6]
mov r5, r10
adds r5, 0x14
ldr r0, [sp, 0x80]
adds r2, r5, r0
ldrb r0, [r2]
adds r0, r7
adds r3, 0x2
adds r1, r3
strh r0, [r1]
ldrb r0, [r2]
adds r0, r7
lsls r0, 8
ldr r2, _0806EDB0
lsls r1, r4, 2
adds r1, r2
ldr r1, [r1]
bl sub_8009DA4
adds r2, r0, 0
ldr r0, [sp, 0x80]
lsls r4, r0, 2
mov r0, r10
adds r0, 0x2C
adds r0, r4
ldr r1, [r0]
adds r0, r2, 0
bl sub_8009DA4
adds r2, r0, 0
str r5, [sp, 0x88]
cmp r2, 0
bge _0806EC74
adds r0, 0xFF
_0806EC74:
asrs r0, 8
str r0, [sp, 0x8]
ldr r0, [sp, 0x7C]
adds r0, 0x20
add r0, r8
movs r1, 0
ldrsh r3, [r0, r1]
ldr r2, [sp, 0x80]
cmp r2, 0
bne _0806ECA0
ldr r0, [sp, 0x7C]
adds r0, 0xC0
ldrb r0, [r0]
cmp r0, 0x6
bne _0806ECA0
ldr r0, [r6]
movs r6, 0xBD
lsls r6, 1
adds r1, r0, r6
movs r0, 0x1
strb r0, [r1]
adds r3, 0x1
_0806ECA0:
ldr r0, [sp, 0x7C]
movs r2, 0x4
ldrsh r1, [r0, r2]
ldr r0, _0806EDA8
cmp r1, r0
bne _0806ECAE
subs r3, 0x2
_0806ECAE:
movs r0, 0xD1
lsls r0, 1
cmp r1, r0
bne _0806ECB8
adds r3, 0x2
_0806ECB8:
ldr r0, _0806EDAC
cmp r1, r0
bne _0806ECC0
subs r3, 0x2
_0806ECC0:
cmp r3, 0
bge _0806ECC6
movs r3, 0
_0806ECC6:
cmp r3, 0x14
ble _0806ECCC
movs r3, 0x14
_0806ECCC:
ldr r5, _0806EDA4
ldr r0, [r5]
ldr r6, _0806EDB4
adds r0, r6
strb r3, [r0]
ldr r2, [r5]
ldr r0, [sp, 0x7C]
adds r0, 0x16
ldr r1, [sp, 0x80]
adds r0, r1
ldrb r1, [r0]
adds r6, 0x3
adds r2, r6
strh r1, [r2]
ldrb r0, [r0]
lsls r0, 8
ldr r2, _0806EDB8
lsls r1, r3, 2
adds r1, r2
ldr r1, [r1]
bl sub_8009DA4
adds r2, r0, 0
ldr r0, [sp, 0x7C]
adds r0, 0x34
adds r0, r4
ldr r1, [r0]
adds r0, r2, 0
bl sub_8009DA4
cmp r0, 0
bge _0806ED0E
adds r0, 0xFF
_0806ED0E:
asrs r0, 8
str r0, [sp, 0xC]
movs r0, 0x64
bl DungeonRandomCapped
str r0, [sp, 0x84]
ldr r0, [sp, 0x80]
cmp r0, 0
bne _0806EDC8
ldr r0, [sp, 0x70]
movs r1, 0x13
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806ED4A
ldr r2, _0806EDBC
movs r3, 0
ldrsh r1, [r2, r3]
ldr r0, [sp, 0x8]
adds r0, r1
str r0, [sp, 0x8]
ldr r1, [r5]
movs r6, 0xB0
lsls r6, 1
adds r1, r6
ldrb r0, [r2]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
_0806ED4A:
ldr r0, [sp, 0x70]
movs r1, 0x2B
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806ED74
ldr r2, _0806EDC0
movs r3, 0
ldrsh r1, [r2, r3]
ldr r0, [sp, 0x8]
adds r0, r1
str r0, [sp, 0x8]
ldr r1, [r5]
movs r6, 0xB0
lsls r6, 1
adds r1, r6
ldrb r0, [r2]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
_0806ED74:
ldr r3, [sp, 0x78]
cmp r3, 0
beq _0806EE4A
mov r0, r9
movs r1, 0x1E
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806EE4A
ldr r2, _0806EDC4
movs r6, 0
ldrsh r1, [r2, r6]
ldr r0, [sp, 0xC]
adds r0, r1
str r0, [sp, 0xC]
ldr r0, [r5]
movs r3, 0xB1
lsls r3, 1
adds r1, r0, r3
ldrb r0, [r2]
ldrb r6, [r1]
adds r0, r6
b _0806EE48
.align 2, 0
_0806EDA4: .4byte gDungeonGlobalData
_0806EDA8: .4byte 0x000001a1
_0806EDAC: .4byte 0x000001a3
_0806EDB0: .4byte gUnknown_80F504C
_0806EDB4: .4byte 0x0000013f
_0806EDB8: .4byte gUnknown_80F50A0
_0806EDBC: .4byte gUnknown_810AC60
_0806EDC0: .4byte gUnknown_810AC68
_0806EDC4: .4byte gUnknown_810AC64
_0806EDC8:
ldr r0, [sp, 0x78]
cmp r0, 0
beq _0806EDF6
mov r0, r9
movs r1, 0x22
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806EDF6
ldr r2, _0806EEF8
movs r3, 0
ldrsh r1, [r2, r3]
ldr r0, [sp, 0xC]
adds r0, r1
str r0, [sp, 0xC]
ldr r0, [r5]
ldr r6, _0806EEFC
adds r1, r0, r6
ldrb r0, [r2]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
_0806EDF6:
ldr r0, [sp, 0x70]
movs r1, 0x21
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806EE20
ldr r2, _0806EF00
movs r3, 0
ldrsh r1, [r2, r3]
ldr r0, [sp, 0x8]
adds r0, r1
str r0, [sp, 0x8]
ldr r0, _0806EF04
ldr r0, [r0]
ldr r6, _0806EF08
adds r1, r0, r6
ldrb r0, [r2]
ldrb r2, [r1]
adds r0, r2
strb r0, [r1]
_0806EE20:
ldr r0, [sp, 0x70]
movs r1, 0x2B
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806EE4A
ldr r2, _0806EF0C
movs r3, 0
ldrsh r1, [r2, r3]
ldr r0, [sp, 0x8]
adds r0, r1
str r0, [sp, 0x8]
ldr r0, _0806EF04
ldr r0, [r0]
ldr r6, _0806EF08
adds r1, r0, r6
ldrb r0, [r2]
ldrb r2, [r1]
adds r0, r2
_0806EE48:
strb r0, [r1]
_0806EE4A:
ldr r0, _0806EF04
ldr r2, [r0]
movs r3, 0xA3
lsls r3, 1
adds r1, r2, r3
add r0, sp, 0x8
ldrh r0, [r0]
strh r0, [r1]
movs r6, 0xA4
lsls r6, 1
adds r1, r2, r6
add r4, sp, 0xC
ldrh r0, [r4]
strh r0, [r1]
ldr r0, [sp, 0x8]
cmp r0, 0
bge _0806EE70
movs r0, 0
str r0, [sp, 0x8]
_0806EE70:
ldr r1, _0806EF10
ldr r0, [sp, 0x8]
cmp r0, r1
ble _0806EE7C
ldr r0, _0806EF14
str r0, [sp, 0x8]
_0806EE7C:
movs r3, 0xA8
lsls r3, 1
add r3, r10
ldrh r2, [r3]
ldr r1, _0806EF18
adds r0, r1, 0
ands r0, r2
strh r0, [r3]
movs r2, 0xA7
lsls r2, 1
add r2, r10
ldrh r0, [r2]
ands r1, r0
strh r1, [r2]
str r4, [sp]
ldr r0, [sp, 0x84]
str r0, [sp, 0x4]
ldr r0, [sp, 0x70]
mov r1, r9
ldr r2, [sp, 0x74]
add r3, sp, 0x8
bl sub_806E8B0
add r5, sp, 0x10
ldr r1, [sp, 0x8]
ldr r0, [sp, 0xC]
subs r1, r0
adds r0, r5, 0
bl sub_800A020
add r4, sp, 0x18
adds r0, r4, 0
movs r1, 0x8
bl sub_800A020
adds r0, r5, 0
adds r1, r5, 0
adds r2, r4, 0
bl sub_800A3F0
mov r1, r10
ldrb r6, [r1, 0x6]
mov r8, r5
adds r7, r4, 0
cmp r6, 0
bne _0806EF20
ldrb r1, [r1, 0x9]
adds r0, r7, 0
bl sub_800A020
str r6, [sp, 0x20]
ldr r0, _0806EF1C
add r2, sp, 0x20
str r0, [r2, 0x4]
adds r0, r7, 0
adds r1, r7, 0
bl sub_800A34C
mov r2, r10
ldrb r0, [r2, 0x9]
lsls r0, 1
b _0806EF60
.align 2, 0
_0806EEF8: .4byte gUnknown_810AC66
_0806EEFC: .4byte 0x00000163
_0806EF00: .4byte gUnknown_810AC62
_0806EF04: .4byte gDungeonGlobalData
_0806EF08: .4byte 0x00000161
_0806EF0C: .4byte gUnknown_810AC68
_0806EF10: .4byte 0x000003e6
_0806EF14: .4byte 0x000003e7
_0806EF18: .4byte 0x0000feff
_0806EF1C: .4byte 0x0000aaaa
_0806EF20:
ldr r3, [sp, 0x88]
ldr r6, [sp, 0x80]
adds r0, r3, r6
ldrb r0, [r0]
str r0, [sp, 0x28]
movs r0, 0x1
str r0, [sp, 0x2C]
add r3, sp, 0x28
add r0, sp, 0x2C
str r0, [sp]
ldr r0, [sp, 0x84]
str r0, [sp, 0x4]
ldr r0, [sp, 0x70]
mov r1, r9
ldr r2, [sp, 0x74]
bl sub_806E8B0
ldr r1, [sp, 0x28]
adds r0, r7, 0
bl sub_800A020
add r4, sp, 0x20
adds r0, r4, 0
movs r1, 0x3
bl sub_800A020
adds r0, r7, 0
adds r1, r7, 0
adds r2, r4, 0
bl sub_800A3F0
ldr r0, [sp, 0x28]
_0806EF60:
movs r1, 0x3
bl __divsi3
adds r6, r0, 0
add r5, sp, 0x30
adds r0, r5, 0
mov r1, r8
adds r2, r7, 0
bl sub_800A6D0
ldr r4, _0806F098
ldr r0, [r4]
movs r1, 0xA5
lsls r1, 1
adds r0, r1
movs r2, 0
mov r8, r2
strh r6, [r0]
adds r0, r5, 0
bl sub_800A048
ldr r1, [r4]
movs r3, 0xA6
lsls r3, 1
adds r1, r3
strh r0, [r1]
ldr r0, [sp, 0x30]
ldr r1, [sp, 0x34]
str r0, [sp, 0x38]
str r1, [sp, 0x3C]
str r0, [sp, 0x48]
str r1, [sp, 0x4C]
add r6, sp, 0x38
adds r0, r6, 0
adds r1, r6, 0
adds r2, r6, 0
bl sub_800A34C
mov r0, r8
str r0, [sp, 0x40]
ldr r0, _0806F09C
add r5, sp, 0x40
str r0, [r5, 0x4]
adds r0, r6, 0
adds r1, r6, 0
adds r2, r5, 0
bl sub_800A34C
adds r0, r5, 0
movs r1, 0x2
bl sub_800A020
add r4, sp, 0x48
adds r0, r4, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_800A34C
ldr r1, [sp, 0xC]
adds r0, r5, 0
bl sub_800A020
adds r0, r4, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_800A6F0
adds r0, r5, 0
movs r1, 0xA
bl sub_800A020
adds r0, r4, 0
adds r1, r4, 0
adds r2, r5, 0
bl sub_800A6D0
add r5, sp, 0x50
adds r0, r5, 0
adds r1, r6, 0
adds r2, r4, 0
bl sub_800A6D0
ldr r4, _0806F0A0
adds r0, r4, 0
adds r1, r5, 0
bl sub_800A2F0
lsls r0, 24
mov r8, r5
cmp r0, 0
beq _0806F01E
ldr r0, [r4]
ldr r1, [r4, 0x4]
str r0, [sp, 0x50]
str r1, [sp, 0x54]
_0806F01E:
ldr r4, _0806F0A4
mov r0, r8
adds r1, r4, 0
bl sub_800A2F0
lsls r0, 24
cmp r0, 0
beq _0806F036
ldr r0, [r4]
ldr r1, [r4, 0x4]
str r0, [sp, 0x50]
str r1, [sp, 0x54]
_0806F036:
add r4, sp, 0x58
ldr r1, [sp, 0xB0]
str r1, [sp]
adds r0, r4, 0
ldr r1, [sp, 0x70]
mov r2, r9
ldr r3, [sp, 0x74]
bl sub_806E100
lsls r0, 24
lsrs r5, r0, 24
adds r7, r4, 0
ldr r2, [sp, 0x74]
cmp r2, 0x2
bne _0806F0BC
mov r0, r9
bl GetFlashFireStatus
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _0806F0BC
ldr r3, [sp, 0x7C]
movs r6, 0xA9
lsls r6, 1
adds r1, r3, r6
ldrb r0, [r1]
cmp r0, 0
bne _0806F0BC
ldr r0, [sp, 0x78]
cmp r0, 0
beq _0806F118
movs r0, 0x1
strb r0, [r1]
ldr r0, _0806F0A8
mov r1, r9
movs r2, 0
bl SetMessageArgument
cmp r4, 0x1
bne _0806F0B0
ldr r0, _0806F0AC
ldr r2, [r0]
ldr r0, [sp, 0x70]
mov r1, r9
bl sub_80522F4
b _0806F0BC
.align 2, 0
_0806F098: .4byte gDungeonGlobalData
_0806F09C: .4byte 0x00000ccc
_0806F0A0: .4byte gUnknown_8106F24
_0806F0A4: .4byte gUnknown_8106F04
_0806F0A8: .4byte gUnknown_202DFE8
_0806F0AC: .4byte gUnknown_80FAE00
_0806F0B0:
ldr r0, _0806F15C
ldr r2, [r0]
ldr r0, [sp, 0x70]
mov r1, r9
bl sub_80522F4
_0806F0BC:
ldr r1, [sp, 0x78]
cmp r1, 0
beq _0806F118
ldr r2, [sp, 0x80]
cmp r2, 0
bne _0806F0EE
ldr r0, [sp, 0x7C]
adds r0, 0xC4
ldrb r4, [r0]
cmp r4, 0x1
bne _0806F0EE
mov r0, r9
bl sub_8041B74
ldr r2, _0806F160
adds r0, r7, 0
adds r1, r7, 0
bl sub_800A34C
ldr r0, _0806F164
ldr r0, [r0]
movs r3, 0xB3
lsls r3, 1
adds r0, r3
strb r4, [r0]
_0806F0EE:
ldr r6, [sp, 0x80]
cmp r6, 0x1
bne _0806F118
ldr r0, [sp, 0x7C]
adds r0, 0xC4
ldrb r0, [r0]
cmp r0, 0x3
bne _0806F118
mov r0, r9
bl sub_8041B5C
ldr r2, _0806F160
adds r0, r7, 0
adds r1, r7, 0
bl sub_800A34C
ldr r0, _0806F164
ldr r0, [r0]
ldr r1, _0806F168
adds r0, r1
strb r6, [r0]
_0806F118:
mov r0, r9
movs r1, 0xC
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806F1F4
mov r0, r9
movs r1, 0x13
bl HasAbility
lsls r0, 24
cmp r0, 0
bne _0806F1F4
mov r3, r10
ldrb r0, [r3, 0x6]
ldr r4, [sp, 0xAC]
cmp r0, 0
beq _0806F140
movs r4, 0
_0806F140:
mov r0, r10
adds r0, 0xDC
ldrb r0, [r0]
cmp r0, 0x4
bne _0806F170
ldr r4, _0806F16C
ldr r0, _0806F164
ldr r0, [r0]
movs r6, 0xB4
lsls r6, 1
adds r0, r6
movs r1, 0x1
strb r1, [r0]
b _0806F1DA
.align 2, 0
_0806F15C: .4byte gUnknown_80FADD8
_0806F160: .4byte gUnknown_8106F1C
_0806F164: .4byte gDungeonGlobalData
_0806F168: .4byte 0x00000167
_0806F16C: .4byte 0x000003e7
_0806F170:
ldr r0, [sp, 0x70]
movs r1, 0xC
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806F194
ldr r0, _0806F2A4
movs r1, 0
ldrsh r0, [r0, r1]
adds r4, r0
ldr r0, _0806F2A8
ldr r0, [r0]
movs r2, 0xB2
lsls r2, 1
adds r0, r2
movs r1, 0x1
strb r1, [r0]
_0806F194:
mov r0, r9
movs r1, 0xD
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806F1B6
ldr r0, _0806F2A4
movs r3, 0
ldrsh r0, [r0, r3]
adds r4, r0
ldr r0, _0806F2A8
ldr r0, [r0]
ldr r6, _0806F2AC
adds r1, r0, r6
movs r0, 0x1
strb r0, [r1]
_0806F1B6:
cmp r5, 0
beq _0806F1DA
ldr r0, [sp, 0x70]
movs r1, 0x1
bl HasIQSkill
lsls r0, 24
cmp r0, 0
beq _0806F1DA
ldr r0, _0806F2B0
movs r1, 0
ldrsh r4, [r0, r1]
ldr r0, _0806F2A8
ldr r0, [r0]
ldr r2, _0806F2B4
adds r1, r0, r2
movs r0, 0x1
strb r0, [r1]
_0806F1DA:
movs r0, 0x64
bl DungeonRandomCapped
cmp r0, r4
bge _0806F1F4
ldr r2, _0806F2B8
adds r0, r7, 0
adds r1, r7, 0
bl sub_800A34C
movs r0, 0x1
ldr r3, [sp, 0xB0]
strb r0, [r3, 0xD]
_0806F1F4:
mov r0, r8
bl sub_800A048
ldr r5, _0806F2A8
ldr r1, [r5]
movs r6, 0xAA
lsls r6, 1
adds r1, r6
str r0, [r1]
mov r0, r8
mov r1, r8
adds r2, r7, 0
bl sub_800A34C
ldr r0, [r5]
movs r1, 0xAE
lsls r1, 1
adds r0, r1
ldr r2, [sp, 0xB4]
str r2, [r0]
add r4, sp, 0x60
adds r0, r4, 0
adds r1, r2, 0
bl sub_800A088
mov r0, r8
mov r1, r8
adds r2, r4, 0
bl sub_800A34C
mov r0, r8
bl sub_800A048
ldr r1, [r5]
movs r3, 0xA8
lsls r3, 1
adds r1, r3
str r0, [r1]
movs r0, 0x80
lsls r0, 7
bl DungeonRandomCapped
movs r6, 0
str r6, [sp, 0x58]
movs r1, 0xE0
lsls r1, 8
adds r0, r1
str r0, [r7, 0x4]
mov r0, r8
mov r1, r8
adds r2, r7, 0
bl sub_800A34C
add r4, sp, 0x68
adds r0, r4, 0
movs r1, 0x64
bl sub_800A020
adds r0, r7, 0
adds r1, r4, 0
adds r2, r7, 0
bl sub_800A34C
adds r0, r7, 0
bl sub_800A048
ldr r1, [r5]
movs r2, 0xAC
lsls r2, 1
adds r1, r2
str r0, [r1]
mov r0, r8
bl sub_800A048
ldr r3, [sp, 0xB0]
str r0, [r3]
str r6, [r3, 0x4]
cmp r0, 0
bne _0806F294
strb r0, [r3, 0xD]
_0806F294:
add sp, 0x8C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806F2A4: .4byte gUnknown_80F4DAE
_0806F2A8: .4byte gDungeonGlobalData
_0806F2AC: .4byte 0x00000165
_0806F2B0: .4byte gUnknown_80F4DB0
_0806F2B4: .4byte 0x00000169
_0806F2B8: .4byte gUnknown_8106F14
thumb_func_end sub_806EAF4
thumb_func_start sub_806F2BC
sub_806F2BC:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x14
adds r5, r0, 0
mov r12, r1
ldr r7, [sp, 0x2C]
lsls r2, 24
lsrs r4, r2, 24
adds r6, r3, 0
cmp r6, 0
bgt _0806F2D6
movs r6, 0x1
_0806F2D6:
ldr r0, _0806F320
cmp r6, r0
ble _0806F2DE
adds r6, r0, 0
_0806F2DE:
movs r0, 0
mov r8, r0
strb r4, [r7, 0xC]
str r7, [sp]
add r0, sp, 0x4
adds r1, r5, 0
mov r2, r12
adds r3, r4, 0
bl sub_806E100
add r4, sp, 0xC
adds r0, r4, 0
adds r1, r6, 0
bl sub_800A020
adds r0, r4, 0
adds r1, r4, 0
add r2, sp, 0x4
bl sub_800A34C
adds r0, r4, 0
bl sub_800A048
str r0, [r7]
mov r0, r8
str r0, [r7, 0x4]
add sp, 0x14
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806F320: .4byte 0x000003e7
thumb_func_end sub_806F2BC
thumb_func_start sub_806F324
sub_806F324:
push {r4-r6,lr}
mov r6, r8
push {r6}
sub sp, 0x94
mov r8, r0
adds r5, r1, 0
adds r6, r2, 0
lsls r4, r3, 16
asrs r4, 16
add r0, sp, 0x10
bl sub_80457DC
add r2, sp, 0x84
str r5, [sp, 0x84]
movs r0, 0x2
str r0, [r2, 0x8]
movs r0, 0
strb r0, [r2, 0xC]
str r6, [r2, 0x4]
strb r0, [r2, 0xD]
strb r0, [r2, 0xE]
strb r0, [r2, 0xF]
str r0, [sp]
str r4, [sp, 0x4]
str r0, [sp, 0x8]
str r0, [sp, 0xC]
add r0, sp, 0x10
mov r1, r8
movs r3, 0
bl sub_806D010
add sp, 0x94
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end sub_806F324
thumb_func_start sub_806F370
sub_806F370:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x2C
mov r10, r0
adds r7, r1, 0
mov r9, r3
ldr r0, [sp, 0x50]
ldr r1, [sp, 0x54]
ldr r3, [sp, 0x58]
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 16
asrs r1, 16
mov r8, r1
adds r5, r2, 0
movs r0, 0x2
str r0, [sp, 0x18]
str r3, [sp, 0x14]
add r0, sp, 0x10
movs r1, 0
strb r4, [r0, 0xC]
strb r1, [r0, 0xD]
strb r1, [r0, 0xE]
cmp r4, 0
beq _0806F3FC
ldr r1, [r7, 0x70]
movs r2, 0
lsls r0, r4, 3
mov r3, sp
adds r3, 0x20
str r3, [sp, 0x28]
ldr r6, _0806F408
mov r12, r6
adds r1, 0x5C
adds r0, r4
lsls r3, r0, 2
ldr r4, [sp, 0x28]
_0806F3C0:
adds r0, r1, r2
ldrb r0, [r0]
lsls r0, 1
adds r0, r3
add r0, r12
movs r6, 0
ldrsh r0, [r0, r6]
stm r4!, {r0}
adds r2, 0x1
cmp r2, 0x1
ble _0806F3C0
adds r0, r7, 0
movs r1, 0x35
bl HasAbility
lsls r0, 24
cmp r0, 0
beq _0806F3FC
ldr r2, _0806F40C
ldr r1, [sp, 0x28]
ldr r0, [r1, 0x4]
lsls r0, 2
ldr r1, [sp, 0x20]
lsls r1, 4
adds r0, r1
adds r0, r2
ldr r0, [r0]
cmp r0, 0x3
beq _0806F3FC
movs r5, 0
_0806F3FC:
str r5, [sp, 0x10]
cmp r5, 0
bne _0806F410
add r1, sp, 0x10
movs r0, 0x1
b _0806F414
.align 2, 0
_0806F408: .4byte gTypeEffectivenessChart
_0806F40C: .4byte gUnknown_80F54B4
_0806F410:
add r1, sp, 0x10
movs r0, 0
_0806F414:
strb r0, [r1, 0xF]
mov r3, r9
str r3, [sp]
mov r6, r8
str r6, [sp, 0x4]
ldr r0, [sp, 0x5C]
str r0, [sp, 0x8]
ldr r0, [sp, 0x60]
str r0, [sp, 0xC]
mov r0, r10
adds r1, r7, 0
add r2, sp, 0x10
movs r3, 0
bl sub_806D010
ldr r0, [sp, 0x4C]
cmp r0, 0
beq _0806F440
add r0, sp, 0x10
ldrb r0, [r0, 0xF]
ldr r1, [sp, 0x4C]
strb r0, [r1]
_0806F440:
add sp, 0x2C
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_806F370
thumb_func_start SetShopkeeperAggression
SetShopkeeperAggression:
push {r4-r6,lr}
adds r5, r0, 0
ldr r4, [r1, 0x70]
adds r6, r4, 0
ldrb r0, [r4, 0x8]
cmp r0, 0
beq _0806F47A
adds r0, r5, 0
bl GetEntityType
cmp r0, 0x1
bne _0806F47A
ldr r0, [r5, 0x70]
ldrb r0, [r0, 0x6]
cmp r0, 0
beq _0806F476
movs r0, 0x2
strb r0, [r4, 0x8]
b _0806F47A
_0806F476:
movs r0, 0x3
strb r0, [r6, 0x8]
_0806F47A:
pop {r4-r6}
pop {r0}
bx r0
thumb_func_end SetShopkeeperAggression
thumb_func_start sub_806F480
sub_806F480:
push {lr}
lsls r1, 24
lsrs r1, 24
ldr r2, [r0, 0x70]
adds r3, r2, 0
ldrb r0, [r2, 0x8]
cmp r0, 0
beq _0806F49E
cmp r1, 0
beq _0806F49A
movs r0, 0x2
strb r0, [r2, 0x8]
b _0806F49E
_0806F49A:
movs r0, 0x3
strb r0, [r3, 0x8]
_0806F49E:
pop {r0}
bx r0
thumb_func_end sub_806F480
thumb_func_start sub_806F4A4
sub_806F4A4:
push {r4-r6,lr}
lsls r1, 24
lsrs r4, r1, 24
ldr r5, [r0, 0x70]
movs r1, 0xE
bl HasType
lsls r0, 24
cmp r0, 0
beq _0806F4CE
cmp r4, 0x1
beq _0806F4C0
cmp r4, 0x7
bne _0806F4CE
_0806F4C0:
adds r0, r5, 0
adds r0, 0xF5
ldrb r0, [r0]
cmp r0, 0
bne _0806F4CE
_0806F4CA:
movs r0, 0
b _0806F4F6
_0806F4CE:
movs r2, 0
lsls r0, r4, 3
ldr r6, _0806F4FC
adds r3, r5, 0
adds r3, 0x5C
adds r0, r4
lsls r1, r0, 2
_0806F4DC:
adds r0, r3, r2
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
adds r0, r6
movs r4, 0
ldrsh r0, [r0, r4]
cmp r0, 0
beq _0806F4CA
adds r2, 0x1
cmp r2, 0x1
ble _0806F4DC
movs r0, 0x1
_0806F4F6:
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_0806F4FC: .4byte gTypeEffectivenessChart
thumb_func_end sub_806F4A4
thumb_func_start sub_806F500
sub_806F500:
ldr r0, _0806F5F4
ldr r0, [r0]
mov r12, r0
movs r0, 0x9A
lsls r0, 1
add r0, r12
movs r1, 0
strb r1, [r0]
str r1, [r0, 0x4]
strb r1, [r0, 0x8]
strb r1, [r0, 0x9]
movs r2, 0xA
strb r2, [r0, 0xA]
strb r2, [r0, 0xB]
movs r2, 0
movs r3, 0x1
strh r3, [r0, 0xC]
strh r3, [r0, 0xE]
strh r1, [r0, 0x10]
strh r1, [r0, 0x14]
strh r1, [r0, 0x12]
strh r1, [r0, 0x16]
strh r1, [r0, 0x18]
str r1, [r0, 0x1C]
str r1, [r0, 0x24]
str r1, [r0, 0x28]
movs r0, 0xB0
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F5F8
add r0, r12
strb r2, [r0]
movs r0, 0xB1
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F5FC
add r0, r12
strb r2, [r0]
movs r0, 0xB2
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F600
add r0, r12
strb r2, [r0]
movs r0, 0xB3
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F604
add r0, r12
strb r2, [r0]
movs r0, 0xB4
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F608
add r0, r12
strb r2, [r0]
movs r0, 0xB5
lsls r0, 1
add r0, r12
strb r2, [r0]
movs r0, 0xB6
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F60C
add r0, r12
strb r2, [r0]
ldr r0, _0806F610
add r0, r12
strb r2, [r0]
movs r0, 0xB7
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F614
add r0, r12
strb r2, [r0]
movs r0, 0xB8
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F618
add r0, r12
strb r2, [r0]
movs r0, 0xB9
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F61C
add r0, r12
strb r2, [r0]
movs r0, 0xBA
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F620
add r0, r12
strb r2, [r0]
movs r0, 0xBB
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F624
add r0, r12
strb r2, [r0]
movs r0, 0xBC
lsls r0, 1
add r0, r12
strb r2, [r0]
ldr r0, _0806F628
add r0, r12
strb r2, [r0]
movs r0, 0xBD
lsls r0, 1
add r0, r12
strb r2, [r0]
bx lr
.align 2, 0
_0806F5F4: .4byte gDungeonGlobalData
_0806F5F8: .4byte 0x00000161
_0806F5FC: .4byte 0x00000163
_0806F600: .4byte 0x00000165
_0806F604: .4byte 0x00000167
_0806F608: .4byte 0x00000169
_0806F60C: .4byte 0x0000016b
_0806F610: .4byte 0x0000016d
_0806F614: .4byte 0x0000016f
_0806F618: .4byte 0x00000171
_0806F61C: .4byte 0x00000173
_0806F620: .4byte 0x00000175
_0806F624: .4byte 0x00000177
_0806F628: .4byte 0x00000179
thumb_func_end sub_806F500
thumb_func_start sub_806F62C
sub_806F62C:
ldr r1, _0806F638
lsls r0, 2
adds r0, r1
ldr r0, [r0]
bx lr
.align 2, 0
_0806F638: .4byte gUnknown_8106F7C
thumb_func_end sub_806F62C
thumb_func_start sub_806F63C
sub_806F63C:
push {lr}
ldr r1, _0806F658
ldr r1, [r1]
ldr r2, _0806F65C
adds r1, r2
ldr r1, [r1, 0x10]
cmp r1, r0
bne _0806F652
adds r0, r1, 0
bl sub_803F508
_0806F652:
pop {r0}
bx r0
.align 2, 0
_0806F658: .4byte gDungeonGlobalData
_0806F65C: .4byte 0x000181e8
thumb_func_end sub_806F63C
thumb_func_start sub_806F660
sub_806F660:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
adds r6, r0, 0
mov r8, r1
ldr r0, [r6, 0x70]
mov r10, r0
ldr r4, [r1, 0x70]
movs r1, 0x1
negs r1, r1
mov r9, r1
movs r2, 0x4
ldrsh r0, [r4, r2]
bl GetPokemonSize
lsls r0, 24
lsrs r5, r0, 24
ldr r0, _0806F6C0
ldr r3, [r0]
ldr r1, _0806F6C4
adds r0, r3, r1
ldrh r2, [r0]
subs r0, r2, 0x4
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
bls _0806F702
lsls r0, r2, 16
asrs r1, r0, 16
cmp r1, 0x9
beq _0806F702
cmp r1, 0xF
beq _0806F702
adds r0, r2, 0
subs r0, 0x2C
lsls r0, 16
lsrs r0, 16
cmp r0, 0x4
bhi _0806F6CC
ldr r2, _0806F6C8
adds r0, r3, r2
ldrb r0, [r0]
cmp r0, 0
bne _0806F702
b _0806F8FC
.align 2, 0
_0806F6C0: .4byte gDungeonGlobalData
_0806F6C4: .4byte 0x00003a14
_0806F6C8: .4byte 0x0000065c
_0806F6CC:
cmp r1, 0x31
bne _0806F6F0
ldr r1, _0806F6EC
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0
bne _0806F6DC
b _0806F8FC
_0806F6DC:
movs r0, 0xCF
lsls r0, 1
bl sub_8097900
lsls r0, 24
cmp r0, 0
bne _0806F702
b _0806F8FC
.align 2, 0
_0806F6EC: .4byte 0x00000659
_0806F6F0:
ldr r2, _0806F834
adds r0, r3, r2
ldrb r0, [r0]
bl GetRecruitable
lsls r0, 24
cmp r0, 0
bne _0806F702
b _0806F8FC
_0806F702:
ldr r0, _0806F838
ldr r0, [r0]
ldr r3, _0806F83C
adds r0, r3
ldrb r0, [r0]
cmp r0, 0
beq _0806F712
b _0806F8FC
_0806F712:
ldrh r1, [r4, 0x2]
adds r0, r1, 0
subs r0, 0x90
lsls r0, 16
lsrs r0, 16
cmp r0, 0x2
bls _0806F766
lsls r0, r1, 16
asrs r1, r0, 16
ldr r0, _0806F840
cmp r1, r0
beq _0806F766
subs r0, 0x1
cmp r1, r0
beq _0806F766
adds r0, 0x2
cmp r1, r0
beq _0806F766
adds r0, 0x8A
cmp r1, r0
beq _0806F766
adds r0, 0x1
cmp r1, r0
beq _0806F766
adds r0, 0x4
cmp r1, r0
beq _0806F766
subs r0, 0x1
cmp r1, r0
beq _0806F766
adds r0, 0x2
cmp r1, r0
beq _0806F766
subs r0, 0x9
cmp r1, r0
beq _0806F766
adds r0, 0x1
cmp r1, r0
beq _0806F766
adds r0, 0x1
cmp r1, r0
bne _0806F776
_0806F766:
movs r1, 0x2
ldrsh r0, [r4, r1]
bl HasRecruitedMon
lsls r0, 24
cmp r0, 0
beq _0806F776
b _0806F8FC
_0806F776:
movs r2, 0x2
ldrsh r0, [r4, r2]
bl sub_806F9BC
lsls r0, 24
cmp r0, 0
bne _0806F786
b _0806F8FC
_0806F786:
movs r3, 0x4
ldrsh r1, [r6, r3]
mov r2, r8
movs r3, 0x4
ldrsh r0, [r2, r3]
subs r1, r0
cmp r1, 0
bge _0806F798
negs r1, r1
_0806F798:
cmp r1, 0x1
ble _0806F79E
b _0806F8FC
_0806F79E:
movs r0, 0x6
ldrsh r1, [r6, r0]
mov r2, r8
movs r3, 0x6
ldrsh r0, [r2, r3]
subs r1, r0
cmp r1, 0
bge _0806F7B0
negs r1, r1
_0806F7B0:
cmp r1, 0x1
ble _0806F7B6
b _0806F8FC
_0806F7B6:
adds r0, r4, 0
adds r0, 0x40
ldrb r0, [r0]
cmp r0, 0x4A
bne _0806F7C2
b _0806F8FC
_0806F7C2:
adds r0, r4, 0
adds r0, 0xA4
ldrb r0, [r0]
cmp r0, 0x1
bne _0806F7CE
b _0806F8FC
_0806F7CE:
mov r0, r8
adds r1, r6, 0
bl CanSee
lsls r0, 24
cmp r0, 0
bne _0806F7DE
b _0806F8FC
_0806F7DE:
bl sub_806F910
movs r0, 0xFA
lsls r0, 2
bl DungeonRandomCapped
adds r7, r0, 0
movs r1, 0x2
ldrsh r0, [r4, r1]
bl GetBaseRecruit
lsls r0, 16
asrs r4, r0, 16
ldr r0, _0806F844
cmp r4, r0
bne _0806F800
b _0806F8FC
_0806F800:
adds r0, r6, 0
movs r1, 0x2E
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0806F816
ldr r0, _0806F848
movs r2, 0
ldrsh r0, [r0, r2]
adds r4, r0
_0806F816:
ldr r0, _0806F84C
mov r3, r10
ldrb r1, [r3, 0x9]
lsls r1, 1
adds r1, r0
movs r2, 0
ldrsh r0, [r1, r2]
adds r4, r0
cmp r7, r4
bge _0806F8FC
movs r4, 0
movs r0, 0x6
subs r3, r0, r5
ldr r7, _0806F850
b _0806F856
.align 2, 0
_0806F834: .4byte 0x00000644
_0806F838: .4byte gDungeonGlobalData
_0806F83C: .4byte 0x0000065d
_0806F840: .4byte 0x0000010d
_0806F844: .4byte 0xfffffc19
_0806F848: .4byte gUnknown_80F5008
_0806F84C: .4byte gUnknown_80F5700
_0806F850: .4byte gUnknown_202EE70
_0806F854:
adds r4, 0x1
_0806F856:
cmp r4, r3
bgt _0806F878
movs r2, 0
cmp r2, r5
bge _0806F872
adds r1, r4, r7
b _0806F86C
_0806F864:
adds r1, 0x1
adds r2, 0x1
cmp r2, r5
bge _0806F872
_0806F86C:
ldrb r0, [r1]
cmp r0, 0
beq _0806F864
_0806F872:
cmp r2, r5
bne _0806F854
mov r9, r4
_0806F878:
movs r0, 0x1
negs r0, r0
cmp r9, r0
beq _0806F8F4
movs r4, 0
ldr r3, _0806F8BC
ldr r0, [r3]
ldr r2, _0806F8C0
adds r0, r2
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806F8B4
adds r7, r3, 0
adds r5, r2, 0
movs r2, 0
movs r3, 0x1
_0806F89C:
adds r2, 0x64
adds r4, 0x1
cmp r4, 0x3
bgt _0806F8B4
ldr r0, [r7]
adds r0, r2, r0
adds r0, r5
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0806F89C
_0806F8B4:
cmp r4, 0x4
beq _0806F8F4
movs r4, 0
b _0806F8C6
.align 2, 0
_0806F8BC: .4byte gRecruitedPokemonRef
_0806F8C0: .4byte 0x00008df8
_0806F8C4:
adds r4, 0x1
_0806F8C6:
cmp r4, 0x3
bgt _0806F8E2
ldr r0, _0806F8EC
ldr r0, [r0]
lsls r1, r4, 2
ldr r3, _0806F8F0
adds r0, r3
adds r0, r1
ldr r0, [r0]
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806F8C4
_0806F8E2:
cmp r4, 0x4
beq _0806F8F4
movs r0, 0x1
b _0806F8FE
.align 2, 0
_0806F8EC: .4byte gDungeonGlobalData
_0806F8F0: .4byte 0x0001357c
_0806F8F4:
adds r0, r6, 0
mov r1, r8
bl nullsub_96
_0806F8FC:
movs r0, 0
_0806F8FE:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_806F660
thumb_func_start nullsub_96
nullsub_96:
bx lr
thumb_func_end nullsub_96
thumb_func_start sub_806F910
sub_806F910:
push {r4-r7,lr}
mov r7, r8
push {r7}
movs r5, 0
movs r6, 0
movs r7, 0x40
_0806F91C:
ldr r0, _0806F9AC
ldr r0, [r0]
lsls r1, r6, 2
ldr r2, _0806F9B0
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
adds r1, r6, 0x1
mov r8, r1
cmp r0, 0
beq _0806F98A
ldr r0, [r4, 0x70]
movs r2, 0x4
ldrsh r0, [r0, r2]
bl GetPokemonSize
lsls r0, 24
lsrs r1, r0, 24
adds r0, r4, 0
adds r0, 0x68
strh r7, [r0]
ldr r0, [r4, 0x70]
ldr r2, _0806F9B4
adds r0, r2
strb r6, [r0]
ldr r0, [r4, 0x70]
adds r2, 0x1
adds r0, r2
strb r1, [r0]
cmp r1, 0
beq _0806F978
ldr r3, _0806F9B8
movs r2, 0x1
_0806F966:
cmp r5, 0x5
bgt _0806F972
adds r0, r5, r3
strb r2, [r0]
adds r7, 0x10
adds r5, 0x1
_0806F972:
subs r1, 0x1
cmp r1, 0
bne _0806F966
_0806F978:
adds r0, r4, 0
bl sub_806CEBC
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
bl sub_806CCB4
_0806F98A:
mov r6, r8
cmp r6, 0x3
ble _0806F91C
cmp r5, 0x5
bgt _0806F9A2
ldr r2, _0806F9B8
movs r1, 0
_0806F998:
adds r0, r5, r2
strb r1, [r0]
adds r5, 0x1
cmp r5, 0x5
ble _0806F998
_0806F9A2:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0806F9AC: .4byte gDungeonGlobalData
_0806F9B0: .4byte 0x0001357c
_0806F9B4: .4byte 0x00000167
_0806F9B8: .4byte gUnknown_202EE70
thumb_func_end sub_806F910
thumb_func_start sub_806F9BC
sub_806F9BC:
push {r4,r5,lr}
sub sp, 0xC
lsls r0, 16
asrs r4, r0, 16
ldr r5, _0806FA40
ldr r0, [r5]
movs r1, 0xCB
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
beq _0806FA3C
adds r0, r4, 0
bl sub_808529C
lsls r0, 24
cmp r0, 0
beq _0806FA3C
cmp r4, 0x97
bne _0806F9F2
ldr r0, [r5]
movs r1, 0xCF
lsls r1, 3
adds r0, r1
ldrb r0, [r0]
cmp r0, 0x1
beq _0806FA3C
_0806F9F2:
movs r0, 0xCC
lsls r0, 1
cmp r4, r0
beq _0806FA3C
ldr r0, _0806FA44
cmp r4, r0
beq _0806FA3C
ldr r0, _0806FA48
cmp r4, r0
beq _0806FA3C
movs r0, 0xD1
lsls r0, 1
cmp r4, r0
beq _0806FA3C
ldr r0, _0806FA4C
cmp r4, r0
beq _0806FA3C
adds r0, r4, 0
bl GetUnk12
lsls r0, 24
cmp r0, 0
bne _0806FA50
adds r0, r4, 0
bl GetFriendArea
lsls r0, 24
lsrs r0, 24
mov r1, sp
movs r2, 0
movs r3, 0
bl sub_8092638
mov r0, sp
ldrb r0, [r0, 0x4]
cmp r0, 0
bne _0806FA50
_0806FA3C:
movs r0, 0
b _0806FA52
.align 2, 0
_0806FA40: .4byte gDungeonGlobalData
_0806FA44: .4byte 0x00000199
_0806FA48: .4byte 0x000001a1
_0806FA4C: .4byte 0x000001a3
_0806FA50:
movs r0, 0x1
_0806FA52:
add sp, 0xC
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_806F9BC
thumb_func_start sub_806FA5C
sub_806FA5C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x10
mov r8, r0
adds r5, r1, 0
adds r6, r2, 0
adds r0, r5, 0x4
mov r1, r8
adds r1, 0x4
bl CalculateFacingDir
adds r4, r0, 0
movs r0, 0
mov r10, r0
movs r1, 0
ldrsh r0, [r6, r1]
bl GetFriendArea
lsls r0, 24
lsrs r0, 24
mov r9, r0
adds r0, r5, 0
adds r0, 0x22
mov r2, r10
strb r2, [r0]
mov r0, r8
adds r1, r5, 0
bl sub_807A0CC
adds r0, r5, 0
adds r1, r4, 0
bl sub_806CE68
ldr r0, _0806FAD4
movs r3, 0
ldrsh r1, [r6, r3]
bl CopyCyanSpeciesNametoBuffer
ldr r0, _0806FAD8
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
cmp r0, 0
bne _0806FAE4
movs r4, 0
ldrsh r1, [r6, r4]
ldr r0, _0806FADC
cmp r1, r0
beq _0806FB28
ldr r0, _0806FAE0
ldr r1, [r0]
mov r0, r8
bl SendMessage
b _0806FB28
.align 2, 0
_0806FAD4: .4byte gAvailablePokemonNames
_0806FAD8: .4byte gUnknown_80F9FE8
_0806FADC: .4byte 0x0000019d
_0806FAE0: .4byte gUnknown_80FA004
_0806FAE4:
movs r7, 0
ldr r3, _0806FB2C
ldr r0, [r3]
ldr r2, _0806FB30
adds r0, r2
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806FB1A
mov r12, r3
adds r4, r2, 0
movs r2, 0
movs r3, 0x1
_0806FB00:
adds r2, 0x64
adds r7, 0x1
cmp r7, 0x3
bgt _0806FB1A
mov r1, r12
ldr r0, [r1]
adds r0, r2, r0
adds r0, r4
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0806FB00
_0806FB1A:
cmp r7, 0x4
bne _0806FB38
ldr r0, _0806FB34
ldr r1, [r0]
mov r0, r8
bl SendMessage
_0806FB28:
movs r0, 0
b _0806FCF0
.align 2, 0
_0806FB2C: .4byte gRecruitedPokemonRef
_0806FB30: .4byte 0x00008df8
_0806FB34: .4byte gUnknown_80FA030
_0806FB38:
mov r0, r9
bl GetFriendAreaStatus
lsls r0, 24
cmp r0, 0
bne _0806FB4E
mov r0, r9
bl UnlockFriendArea
movs r2, 0x1
mov r10, r2
_0806FB4E:
movs r1, 0xFA
lsls r1, 1
adds r0, r5, 0
mov r2, r8
bl sub_8068FE0
ldr r1, _0806FC40
movs r0, 0x64
muls r0, r7
ldr r3, _0806FC44
adds r0, r3
ldr r1, [r1]
adds r5, r1, r0
movs r4, 0
movs r0, 0x3
strh r0, [r5]
strb r4, [r5, 0x2]
ldrh r0, [r6, 0xE]
strb r0, [r5, 0x3]
movs r0, 0x1
strh r0, [r5, 0x8]
adds r0, r5, 0
adds r0, 0x4C
movs r1, 0
bl SetDefaultIQSkills
ldr r0, [r6, 0x44]
str r0, [r5, 0x54]
adds r0, r5, 0
adds r0, 0x50
strb r4, [r0]
ldr r0, _0806FC48
strh r0, [r5, 0xA]
strh r7, [r5, 0xC]
ldrh r0, [r6]
strh r0, [r5, 0xE]
ldr r0, _0806FC4C
ldr r0, [r0]
ldr r4, _0806FC50
adds r0, r4
ldr r0, [r0]
str r0, [r5, 0x4]
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x10]
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x12]
ldr r0, [r6, 0x14]
str r0, [r5, 0x44]
ldr r0, [r6, 0x18]
str r0, [r5, 0x48]
movs r2, 0
adds r7, r6, 0
adds r7, 0x20
adds r4, r6, 0
adds r4, 0xA
adds r3, r6, 0
adds r3, 0xC
adds r1, r5, 0
adds r1, 0x14
_0806FBC4:
adds r0, r4, r2
ldrb r0, [r0]
strb r0, [r1]
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1, 0x2]
adds r1, 0x1
adds r2, 0x1
cmp r2, 0x1
ble _0806FBC4
ldr r0, [r6, 0x10]
str r0, [r5, 0x18]
adds r1, r5, 0
adds r1, 0x1C
adds r0, r7, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [r6, 0x1C]
str r0, [r5, 0x40]
adds r4, r5, 0
adds r4, 0x58
movs r1, 0
ldrsh r0, [r6, r1]
bl GetMonSpecies
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0xA
bl BoundedCopyStringtoBuffer
bl sub_8097848
movs r2, 0
ldrsh r0, [r6, r2]
movs r3, 0x4
ldrsh r1, [r6, r3]
movs r3, 0x6
ldrsh r2, [r6, r3]
add r3, sp, 0xC
str r3, [sp]
movs r3, 0
str r3, [sp, 0x4]
movs r3, 0x1
str r3, [sp, 0x8]
adds r3, r5, 0
bl sub_806B8CC
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0
bne _0806FC58
ldr r0, _0806FC54
ldr r1, [r0]
mov r0, r8
bl SendMessage
strh r7, [r5]
b _0806FCEE
.align 2, 0
_0806FC40: .4byte gRecruitedPokemonRef
_0806FC44: .4byte 0x00008df8
_0806FC48: .4byte 0x0000ffff
_0806FC4C: .4byte gDungeonGlobalData
_0806FC50: .4byte 0x00000644
_0806FC54: .4byte gUnknown_80FA058
_0806FC58:
bl sub_8083D88
movs r0, 0xA0
movs r1, 0x46
bl sub_803E708
ldr r0, _0806FC78
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
cmp r0, 0x1
bne _0806FC94
b _0806FC88
.align 2, 0
_0806FC78: .4byte gUnknown_80FA090
_0806FC7C:
ldr r0, _0806FD00
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
_0806FC88:
adds r0, r4, 0
bl sub_805FBE8
lsls r0, 24
cmp r0, 0
beq _0806FC7C
_0806FC94:
ldr r4, _0806FD04
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0
bl sub_808D9DC
ldr r0, _0806FD08
ldr r1, [r0]
mov r0, r8
bl SendMessage
mov r0, r10
cmp r0, 0
beq _0806FCD8
bl xxx_call_GetLeaderEntity
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
bl SetMessageArgument
ldr r0, _0806FD0C
mov r1, r9
bl sub_8092558
movs r0, 0xCE
bl PlaySound
ldr r0, _0806FD10
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
_0806FCD8:
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0x97
bne _0806FCEE
ldr r2, _0806FD14
ldr r1, [r2]
movs r0, 0x1
strb r0, [r1, 0x4]
ldr r1, [r2]
movs r0, 0x3
strb r0, [r1, 0x11]
_0806FCEE:
movs r0, 0x1
_0806FCF0:
add sp, 0x10
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0806FD00: .4byte gUnknown_80FA0C8
_0806FD04: .4byte gAvailablePokemonNames
_0806FD08: .4byte gUnknown_80FA0F0
_0806FD0C: .4byte gUnknown_202E628
_0806FD10: .4byte gUnknown_80FA120
_0806FD14: .4byte gDungeonGlobalData
thumb_func_end sub_806FA5C
thumb_func_start sub_806FD18
sub_806FD18:
push {r4-r7,lr}
ldr r4, [r0, 0x70]
movs r6, 0x1
negs r6, r6
movs r1, 0x4
ldrsh r0, [r4, r1]
bl GetPokemonSize
lsls r0, 24
lsrs r5, r0, 24
movs r2, 0x2
ldrsh r0, [r4, r2]
bl sub_806F9BC
lsls r0, 24
cmp r0, 0
beq _0806FDEC
bl sub_806F910
movs r4, 0
movs r0, 0x6
subs r3, r0, r5
ldr r7, _0806FD48
b _0806FD4E
.align 2, 0
_0806FD48: .4byte gUnknown_202EE70
_0806FD4C:
adds r4, 0x1
_0806FD4E:
cmp r4, r3
bgt _0806FD70
movs r2, 0
cmp r2, r5
bge _0806FD6A
adds r1, r4, r7
b _0806FD64
_0806FD5C:
adds r1, 0x1
adds r2, 0x1
cmp r2, r5
bge _0806FD6A
_0806FD64:
ldrb r0, [r1]
cmp r0, 0
beq _0806FD5C
_0806FD6A:
cmp r2, r5
bne _0806FD4C
adds r6, r4, 0
_0806FD70:
movs r0, 0x1
negs r0, r0
cmp r6, r0
beq _0806FDEC
movs r4, 0
ldr r3, _0806FDB4
ldr r0, [r3]
ldr r2, _0806FDB8
adds r0, r2
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806FDAC
adds r6, r3, 0
adds r5, r2, 0
movs r2, 0
movs r3, 0x1
_0806FD94:
adds r2, 0x64
adds r4, 0x1
cmp r4, 0x3
bgt _0806FDAC
ldr r0, [r6]
adds r0, r2, r0
adds r0, r5
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0806FD94
_0806FDAC:
cmp r4, 0x4
beq _0806FDEC
movs r4, 0
b _0806FDBE
.align 2, 0
_0806FDB4: .4byte gRecruitedPokemonRef
_0806FDB8: .4byte 0x00008df8
_0806FDBC:
adds r4, 0x1
_0806FDBE:
cmp r4, 0x3
bgt _0806FDDA
ldr r0, _0806FDE4
ldr r0, [r0]
lsls r1, r4, 2
ldr r2, _0806FDE8
adds r0, r2
adds r0, r1
ldr r0, [r0]
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0806FDBC
_0806FDDA:
cmp r4, 0x4
beq _0806FDEC
movs r0, 0x1
b _0806FDEE
.align 2, 0
_0806FDE4: .4byte gDungeonGlobalData
_0806FDE8: .4byte 0x0001357c
_0806FDEC:
movs r0, 0
_0806FDEE:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_806FD18
thumb_func_start sub_806FDF4
sub_806FDF4:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x60
str r0, [sp, 0x58]
mov r10, r1
str r2, [sp, 0x5C]
movs r0, 0
mov r9, r0
str r0, [r2]
add r0, sp, 0xC
bl sub_8069D4C
movs r6, 0
ldr r3, _0806FE50
ldr r0, [r3]
ldr r2, _0806FE54
adds r0, r2
ldrb r1, [r0]
movs r0, 0x1
ands r0, r1
cmp r0, 0
beq _0806FE46
adds r5, r3, 0
adds r4, r2, 0
movs r2, 0
movs r3, 0x1
_0806FE2E:
adds r2, 0x64
adds r6, 0x1
cmp r6, 0x3
bgt _0806FE46
ldr r0, [r5]
adds r0, r2, r0
adds r0, r4
ldrb r1, [r0]
adds r0, r3, 0
ands r0, r1
cmp r0, 0
bne _0806FE2E
_0806FE46:
cmp r6, 0x4
bne _0806FE58
movs r0, 0
b _0806FFF8
.align 2, 0
_0806FE50: .4byte gRecruitedPokemonRef
_0806FE54: .4byte 0x00008df8
_0806FE58:
add r0, sp, 0xC
movs r1, 0
ldrsh r0, [r0, r1]
bl GetFriendArea
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _0806FF74
movs r0, 0x64
muls r0, r6
ldr r2, _0806FF78
adds r0, r2
ldr r1, [r1]
adds r5, r1, r0
movs r4, 0
movs r0, 0x3
strh r0, [r5]
strb r4, [r5, 0x2]
add r0, sp, 0xC
ldrh r0, [r0, 0xE]
strb r0, [r5, 0x3]
movs r0, 0x1
strh r0, [r5, 0x8]
adds r0, r5, 0
adds r0, 0x4C
movs r1, 0
bl SetDefaultIQSkills
ldr r0, [sp, 0x50]
str r0, [r5, 0x54]
adds r0, r5, 0
adds r0, 0x50
strb r4, [r0]
ldr r0, _0806FF7C
strh r0, [r5, 0xA]
strh r6, [r5, 0xC]
add r0, sp, 0xC
ldrh r0, [r0]
strh r0, [r5, 0xE]
ldr r0, _0806FF80
ldr r0, [r0]
ldr r3, _0806FF84
adds r0, r3
ldr r0, [r0]
str r0, [r5, 0x4]
add r0, sp, 0xC
ldrh r0, [r0, 0x8]
strh r0, [r5, 0x10]
add r0, sp, 0xC
ldrh r0, [r0, 0x8]
strh r0, [r5, 0x12]
ldr r0, [sp, 0x20]
str r0, [r5, 0x44]
ldr r0, [sp, 0x24]
str r0, [r5, 0x48]
movs r2, 0
add r6, sp, 0x2C
add r4, sp, 0x54
mov r8, r4
mov r4, sp
adds r4, 0x16
add r3, sp, 0x18
adds r1, r5, 0
adds r1, 0x14
_0806FED8:
adds r0, r4, r2
ldrb r0, [r0]
strb r0, [r1]
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1, 0x2]
adds r1, 0x1
adds r2, 0x1
cmp r2, 0x1
ble _0806FED8
ldr r0, [sp, 0x1C]
str r0, [r5, 0x18]
adds r1, r5, 0
adds r1, 0x1C
adds r0, r6, 0
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldr r0, [sp, 0x28]
str r0, [r5, 0x40]
adds r4, r5, 0
adds r4, 0x58
add r0, sp, 0xC
movs r1, 0
ldrsh r0, [r0, r1]
bl GetMonSpecies
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0xA
bl BoundedCopyStringtoBuffer
adds r0, r7, 0
bl GetFriendAreaStatus
lsls r0, 24
cmp r0, 0
bne _0806FF34
adds r0, r7, 0
bl UnlockFriendArea
movs r2, 0x1
mov r9, r2
_0806FF34:
bl sub_8097848
movs r1, 0xFA
lsls r1, 1
mov r0, r10
ldr r2, [sp, 0x58]
bl sub_8068FE0
add r0, sp, 0xC
movs r3, 0
ldrsh r0, [r0, r3]
add r1, sp, 0xC
movs r2, 0x4
ldrsh r1, [r1, r2]
add r2, sp, 0xC
movs r3, 0x6
ldrsh r2, [r2, r3]
mov r3, r8
str r3, [sp]
movs r3, 0
str r3, [sp, 0x4]
str r3, [sp, 0x8]
adds r3, r5, 0
bl sub_806B8CC
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0806FF88
strh r0, [r5]
b _0806FFF6
.align 2, 0
_0806FF74: .4byte gRecruitedPokemonRef
_0806FF78: .4byte 0x00008df8
_0806FF7C: .4byte 0x0000ffff
_0806FF80: .4byte gDungeonGlobalData
_0806FF84: .4byte 0x00000644
_0806FF88:
ldr r0, _0806FF9C
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl sub_8052B8C
cmp r0, 0x1
bne _0806FFB8
b _0806FFAC
.align 2, 0
_0806FF9C: .4byte gUnknown_80FA090
_0806FFA0:
ldr r0, _08070008
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
_0806FFAC:
adds r0, r4, 0
bl sub_805FBE8
lsls r0, 24
cmp r0, 0
beq _0806FFA0
_0806FFB8:
mov r4, r9
cmp r4, 0
beq _0806FFE6
bl xxx_call_GetLeaderEntity
adds r1, r0, 0
ldr r0, _0807000C
movs r2, 0
bl SetMessageArgument
ldr r0, _08070010
adds r1, r7, 0
bl sub_8092558
movs r0, 0xCE
bl PlaySound
ldr r0, _08070014
ldr r1, [r0]
movs r0, 0
movs r2, 0x1
bl PrintFieldMessage
_0806FFE6:
ldr r0, _08070018
adds r1, r5, 0
movs r2, 0
bl sub_808D9DC
ldr r0, [sp, 0x54]
ldr r1, [sp, 0x5C]
str r0, [r1]
_0806FFF6:
movs r0, 0x1
_0806FFF8:
add sp, 0x60
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_08070008: .4byte gUnknown_80FA0C8
_0807000C: .4byte gAvailablePokemonNames
_08070010: .4byte gUnknown_202E628
_08070014: .4byte gUnknown_80FA120
_08070018: .4byte gUnknown_202E088
thumb_func_end sub_806FDF4
.align 2,0