tmc/asm/code_0809D498.s

10975 lines
185 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0809D498
sub_0809D498: @ 0x0809D498
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
bne _0809D548
movs r2, #1
movs r3, #1
strb r3, [r5, #0xc]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
ldr r0, _0809D534 @ =0xFFFD8000
str r0, [r5, #0x20]
ldr r0, _0809D538 @ =0xFFB4C000
str r0, [r5, #0x34]
adds r4, r5, #0
adds r4, #0x68
movs r0, #0xf0
lsls r0, r0, #8
strh r0, [r4]
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r5, #0x24]
movs r0, #8
strb r0, [r5, #0x15]
adds r0, r5, #0
adds r0, #0x38
strb r3, [r0]
adds r6, r5, #0
adds r6, #0x29
ldrb r1, [r6]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r6]
ldrb r2, [r5, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
strb r0, [r5, #0x19]
ldrb r0, [r5, #0x1b]
ands r1, r0
movs r0, #0x40
orrs r1, r0
strb r1, [r5, #0x1b]
adds r0, r5, #0
movs r1, #6
bl sub_0805E3A0
ldr r0, _0809D53C @ =gRoomControls
ldrh r0, [r0, #0xa]
strh r0, [r5, #0x2e]
ldr r0, _0809D540 @ =gLinkEntity
ldrh r0, [r0, #0x32]
strh r0, [r5, #0x32]
ldr r0, _0809D544 @ =0x00000123
bl PlaySFX
ldrb r1, [r6]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r6]
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
bl sub_08078B48
adds r7, r4, #0
b _0809D62E
.align 2, 0
_0809D534: .4byte 0xFFFD8000
_0809D538: .4byte 0xFFB4C000
_0809D53C: .4byte gRoomControls
_0809D540: .4byte gLinkEntity
_0809D544: .4byte 0x00000123
_0809D548:
adds r7, r5, #0
adds r7, #0x68
cmp r0, #1
bne _0809D62E
ldr r6, _0809D658 @ =gLinkEntity
ldrb r1, [r6, #0x18]
movs r0, #4
rsbs r0, r0, #0
mov r8, r0
ands r0, r1
strb r0, [r6, #0x18]
ldr r4, [r5, #0x54]
cmp r4, #0
beq _0809D5B0
ldr r2, _0809D65C @ =0xFFF80000
adds r0, r5, #0
adds r1, r4, #0
movs r3, #0
bl PositionRelative
ldrh r0, [r4, #0x36]
adds r0, #0x18
strh r0, [r4, #0x36]
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
adds r3, r4, #0
adds r3, #0x29
lsrs r1, r1, #0x1d
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r2, [r5, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r5, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x1b]
_0809D5B0:
bl sub_08078B48
ldr r3, _0809D660 @ =gRoomControls
movs r1, #0xa
ldrsh r0, [r3, r1]
adds r0, #0x78
movs r2, #0x2e
ldrsh r1, [r5, r2]
cmp r0, r1
bge _0809D62E
ldrb r0, [r5, #0xc]
adds r0, #1
strb r0, [r5, #0xc]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
cmp r4, #0
beq _0809D5E6
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
_0809D5E6:
str r6, [r3, #0x30]
ldrb r1, [r6, #0x18]
mov r0, r8
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r6, #0x18]
bl sub_080791D0
bl UnfreezeTime
ldr r1, _0809D664 @ =gUnk_02034490
movs r0, #0
strb r0, [r1]
movs r0, #0x52
bl GetProgressFlag
cmp r0, #0
bne _0809D62E
movs r0, #0x69
movs r1, #0
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809D62E
ldr r1, _0809D668 @ =gUnk_0800B0AC
bl sub_0807DAD0
adds r1, r4, #0
adds r1, #0x84
str r0, [r1]
movs r0, #0x52
bl sub_0807CD04
_0809D62E:
adds r0, r5, #0
bl sub_0806F69C
movs r0, #0
ldrsh r1, [r7, r0]
adds r0, r5, #0
bl sub_08003FC4
adds r0, r5, #0
bl sub_080042B8
adds r0, r5, #0
bl sub_080040A8
cmp r0, #0
bne _0809D652
bl sub_0805E780
_0809D652:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809D658: .4byte gLinkEntity
_0809D65C: .4byte 0xFFF80000
_0809D660: .4byte gRoomControls
_0809D664: .4byte gUnk_02034490
_0809D668: .4byte gUnk_0800B0AC
thumb_func_start sub_0809D66C
sub_0809D66C: @ 0x0809D66C
push {r4, lr}
adds r4, r0, #0
ldr r0, _0809D694 @ =gLinkEntity
ldrb r1, [r0, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1c
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _0809D6EC
cmp r0, #1
bgt _0809D698
cmp r0, #0
beq _0809D6A2
b _0809D6FE
.align 2, 0
_0809D694: .4byte gLinkEntity
_0809D698:
cmp r0, #2
beq _0809D6F4
cmp r0, #3
beq _0809D6FA
b _0809D6FE
_0809D6A2:
movs r3, #1
movs r2, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r3
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x38
strb r2, [r0]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r4, #0x1b]
ands r1, r0
movs r0, #0x40
orrs r1, r0
strb r1, [r4, #0x1b]
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
adds r0, r4, #0
movs r1, #0xe0
bl sub_080042AC
_0809D6EC:
adds r0, r4, #0
bl sub_080042B8
b _0809D6FE
_0809D6F4:
movs r0, #3
strb r0, [r4, #0xc]
b _0809D6FE
_0809D6FA:
bl sub_0805E780
_0809D6FE:
pop {r4, pc}
thumb_func_start CreateBird
CreateBird: @ 0x0809D700
push {r4, lr}
sub sp, #4
bl sub_08052654
cmp r0, #0
beq _0809D732
movs r0, #0
str r0, [sp]
movs r0, #6
movs r1, #0x95
movs r2, #6
movs r3, #8
bl sub_0805EB2C
adds r4, r0, #0
cmp r4, #0
bne _0809D732
movs r0, #0x95
movs r1, #8
movs r2, #0
bl CreateObject
cmp r0, #0
beq _0809D732
strb r4, [r0, #0xe]
_0809D732:
add sp, #4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809D738
sub_0809D738: @ 0x0809D738
push {r4, lr}
movs r0, #0x95
movs r1, #9
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809D77C
ldr r1, _0809D774 @ =gRoomControls
movs r0, #0
str r0, [r1, #0x30]
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
bl sub_0805E544
movs r0, #0x95
movs r1, #0xa
movs r2, #0
bl CreateObject
cmp r0, #0
beq _0809D76C
str r0, [r4, #0x54]
_0809D76C:
ldr r1, _0809D778 @ =gUnk_02034490
movs r0, #1
strb r0, [r1]
b _0809D780
.align 2, 0
_0809D774: .4byte gRoomControls
_0809D778: .4byte gUnk_02034490
_0809D77C:
bl sub_080791D0
_0809D780:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809D784
sub_0809D784: @ 0x0809D784
push {lr}
ldr r1, _0809D7A0 @ =gUnk_081240B0
ldrb r3, [r0, #0xc]
lsls r3, r3, #2
adds r3, r3, r1
ldrb r1, [r0, #0xa]
lsls r1, r1, #5
ldr r2, _0809D7A4 @ =gUnk_08123FB0
adds r1, r1, r2
ldr r2, [r3]
bl _call_via_r2
pop {pc}
.align 2, 0
_0809D7A0: .4byte gUnk_081240B0
_0809D7A4: .4byte gUnk_08123FB0
thumb_func_start sub_0809D7A8
sub_0809D7A8: @ 0x0809D7A8
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
adds r0, #1
movs r4, #0
strb r0, [r5, #0xc]
adds r2, r5, #0
adds r2, #0x38
movs r0, #2
strb r0, [r2]
ldrb r2, [r5, #0x19]
movs r0, #0x3f
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r5, #0x19]
ldr r0, [r1, #0x10]
str r0, [r5, #0x20]
ldrb r3, [r1, #0xf]
strb r3, [r5, #0x15]
ldrh r0, [r1, #0x18]
strh r0, [r5, #0x24]
ldrh r0, [r5, #0x32]
ldrh r2, [r1, #0x1a]
subs r0, r0, r2
strh r0, [r5, #0x32]
str r4, [r5, #0x34]
ldrb r0, [r1, #0x1e]
strb r0, [r5, #0xe]
movs r0, #0x80
ands r0, r3
cmp r0, #0
beq _0809D80C
ldrb r0, [r5, #0x15]
cmp r0, #0x81
bne _0809D80C
bl Random
ldr r1, _0809D820 @ =gLinkEntity
ldrb r1, [r1, #0x14]
lsls r1, r1, #2
movs r2, #3
ands r0, r2
adds r1, r1, r0
subs r1, #2
movs r0, #0x1f
ands r1, r0
movs r0, #0x10
eors r1, r0
strb r1, [r5, #0x15]
_0809D80C:
adds r0, r5, #0
bl UpdateSpriteOrderAndFlip
ldrb r4, [r5, #0xa]
adds r0, r5, #0
bl sub_08080CB4
strb r4, [r5, #0xa]
pop {r4, r5, pc}
.align 2, 0
_0809D820: .4byte gLinkEntity
thumb_func_start sub_0809D824
sub_0809D824: @ 0x0809D824
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
movs r0, #1
ldr r2, [r6, #4]
cmp r2, #0
beq _0809D838
adds r0, r5, #0
bl _call_via_r2
_0809D838:
cmp r0, #0
beq _0809D850
ldrb r0, [r5, #0xc]
adds r0, #1
strb r0, [r5, #0xc]
ldrh r1, [r6, #0x1a]
ldrh r2, [r5, #0x32]
adds r0, r1, r2
strh r0, [r5, #0x32]
ldrh r0, [r5, #0x36]
subs r0, r0, r1
strh r0, [r5, #0x36]
_0809D850:
ldrb r4, [r5, #0xa]
ldrb r0, [r6, #0xd]
strb r0, [r5, #0xa]
adds r0, r5, #0
bl sub_08080CB4
strb r4, [r5, #0xa]
pop {r4, r5, r6, pc}
thumb_func_start sub_0809D860
sub_0809D860: @ 0x0809D860
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
bl sub_0806F69C
ldr r1, [r6, #0x14]
adds r0, r5, #0
bl sub_080044EC
cmp r0, #1
bhi _0809D8B2
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0809D888
subs r0, #1
strb r0, [r5, #0xe]
ldr r0, [r6, #0x14]
lsls r0, r0, #3
str r0, [r5, #0x20]
b _0809D8AC
_0809D888:
ldrb r0, [r5, #0xc]
adds r0, #1
strb r0, [r5, #0xc]
ldr r0, _0809D8C4 @ =gLinkEntity
adds r0, #0x38
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
bl UpdateSpriteOrderAndFlip
ldr r1, [r6]
cmp r1, #0
beq _0809D8AC
adds r0, r5, #0
bl _call_via_r1
_0809D8AC:
movs r0, #0x6e
bl PlaySFX
_0809D8B2:
ldrb r4, [r5, #0xa]
ldrb r0, [r6, #0xd]
strb r0, [r5, #0xa]
adds r0, r5, #0
bl sub_08080CB4
strb r4, [r5, #0xa]
pop {r4, r5, r6, pc}
.align 2, 0
_0809D8C4: .4byte gLinkEntity
thumb_func_start sub_0809D8C8
sub_0809D8C8: @ 0x0809D8C8
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
ldr r0, _0809D8E4 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0809D8E8
adds r0, r5, #0
bl sub_0800445C
b _0809D90A
.align 2, 0
_0809D8E4: .4byte gLinkState
_0809D8E8:
adds r0, r5, #0
bl sub_08017850
cmp r0, #0
beq _0809D90A
ldrb r0, [r6, #0xd]
ldrb r1, [r5, #0xb]
movs r2, #0
bl sub_080A7C00
ldrh r0, [r6, #0x1c]
cmp r0, #0
beq _0809D906
bl sub_0807CCC8
_0809D906:
bl sub_0805E780
_0809D90A:
ldrb r4, [r5, #0xa]
ldrb r0, [r6, #0xd]
strb r0, [r5, #0xa]
adds r0, r5, #0
bl sub_08080CB4
strb r4, [r5, #0xa]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0809D91C
sub_0809D91C: @ 0x0809D91C
push {r4, lr}
adds r4, r0, #0
movs r1, #0x11
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _0809D934
adds r0, r4, #0
bl sub_0806FAD8
_0809D934:
movs r0, #0x72
bl PlaySFX
pop {r4, pc}
thumb_func_start sub_0809D93C
sub_0809D93C: @ 0x0809D93C
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r1, #0
ldr r2, _0809D9A0 @ =gLinkEntity
ldrb r0, [r2, #0xc]
cmp r0, #6
bne _0809D9A4
ldrb r0, [r3, #0xc]
ldrb r1, [r2, #0x14]
asrs r0, r1
movs r1, #1
ands r0, r1
cmp r0, #0
beq _0809D9A4
movs r5, #0x2e
ldrsh r0, [r2, r5]
movs r5, #0x2e
ldrsh r1, [r4, r5]
subs r0, r0, r1
movs r1, #8
ldrsb r1, [r3, r1]
adds r0, r0, r1
ldrb r1, [r3, #0xa]
adds r0, r0, r1
lsls r1, r1, #1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r1, r0
ble _0809D9A4
movs r0, #0x32
ldrsh r2, [r2, r0]
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r4, #0x1a
ldrsh r1, [r3, r4]
adds r0, r0, r1
subs r2, r2, r0
movs r0, #9
ldrsb r0, [r3, r0]
adds r2, r2, r0
ldrb r1, [r3, #0xb]
adds r0, r2, r1
lsls r1, r1, #1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r1, r0
ble _0809D9A4
movs r0, #1
b _0809D9A6
.align 2, 0
_0809D9A0: .4byte gLinkEntity
_0809D9A4:
movs r0, #0
_0809D9A6:
pop {r4, r5, pc}
thumb_func_start sub_0809D9A8
sub_0809D9A8: @ 0x0809D9A8
push {lr}
ldr r2, _0809D9BC @ =gUnk_081240C0
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809D9BC: .4byte gUnk_081240C0
thumb_func_start sub_0809D9C0
sub_0809D9C0: @ 0x0809D9C0
push {lr}
ldr r2, _0809D9D4 @ =gUnk_081240D8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809D9D4: .4byte gUnk_081240D8
thumb_func_start sub_0809D9D8
sub_0809D9D8: @ 0x0809D9D8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
movs r2, #0
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
movs r0, #0x1e
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
strh r2, [r4, #0x24]
movs r0, #0x18
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
adds r0, r4, #0
movs r1, #6
bl sub_0805EB64
cmp r0, #0
beq _0809DA1E
str r4, [r0, #0x50]
str r0, [r4, #0x54]
b _0809DA28
_0809DA1E:
movs r0, #0x20
bl sub_0807CD04
bl sub_0805E780
_0809DA28:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809DA2C
sub_0809DA2C: @ 0x0809DA2C
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809DA5C
ldrb r0, [r1, #0xc]
adds r0, #1
strb r0, [r1, #0xc]
ldr r0, [r1, #0x30]
movs r2, #0x80
lsls r2, r2, #0xd
adds r0, r0, r2
str r0, [r1, #0x30]
ldr r0, [r1, #0x34]
ldr r2, _0809DA60 @ =0xFFF00000
adds r0, r0, r2
str r0, [r1, #0x34]
adds r0, r1, #0
movs r1, #3
bl sub_080042AC
_0809DA5C:
pop {pc}
.align 2, 0
_0809DA60: .4byte 0xFFF00000
thumb_func_start sub_0809DA64
sub_0809DA64: @ 0x0809DA64
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x54]
adds r1, r4, #0
bl sub_080045C4
adds r1, r0, #0
adds r0, r5, #0
bl sub_0809E1C8
adds r0, r5, #0
bl sub_0809E1F0
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r0, #0x32
ldrsh r2, [r4, r0]
adds r0, r5, #0
bl sub_080041DC
lsls r0, r0, #4
movs r2, #0x24
ldrsh r1, [r5, r2]
cmp r0, r1
bge _0809DAAC
ldrb r0, [r5, #0xc]
adds r0, #1
strb r0, [r5, #0xc]
movs r0, #0x10
strb r0, [r5, #0xe]
movs r0, #1
strb r0, [r5, #0xf]
adds r0, r5, #0
movs r1, #2
bl sub_080042AC
_0809DAAC:
adds r0, r5, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_0809DAB4
sub_0809DAB4: @ 0x0809DAB4
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _0809DB10 @ =gRoomControls
ldrh r1, [r5, #6]
adds r1, #0x78
ldrh r2, [r5, #8]
adds r2, #0xa8
bl sub_080045B4
adds r1, r0, #0
adds r0, r4, #0
bl sub_0809E1C8
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0809DADE
subs r0, #1
strb r0, [r4, #0xe]
ldrh r0, [r4, #0x24]
subs r0, #0x80
strh r0, [r4, #0x24]
_0809DADE:
adds r0, r4, #0
bl sub_0809E1F0
ldrh r1, [r5, #6]
adds r1, #0x78
ldrh r2, [r5, #8]
adds r2, #0xa8
adds r0, r4, #0
bl sub_080041DC
lsls r0, r0, #4
movs r2, #0x24
ldrsh r1, [r4, r2]
cmp r0, r1
bge _0809DB02
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
_0809DB02:
adds r0, r4, #0
bl sub_0809E210
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
_0809DB10: .4byte gRoomControls
thumb_func_start sub_0809DB14
sub_0809DB14: @ 0x0809DB14
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0809E1F0
adds r0, r4, #0
bl sub_080040A8
adds r5, r0, #0
cmp r5, #0
bne _0809DB36
movs r0, #0x20
bl sub_0807CD04
ldr r0, [r4, #0x54]
str r5, [r0, #0x50]
bl sub_0805E780
_0809DB36:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0809DB40
sub_0809DB40: @ 0x0809DB40
push {lr}
ldr r2, _0809DB54 @ =gUnk_081240EC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809DB54: .4byte gUnk_081240EC
thumb_func_start sub_0809DB58
sub_0809DB58: @ 0x0809DB58
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
movs r1, #0x3c
bl sub_080042AC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809DB88
sub_0809DB88: @ 0x0809DB88
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x50]
cmp r4, #0
beq _0809DBC4
ldr r0, [r4, #4]
cmp r0, #0
bne _0809DB9C
bl sub_0805E780
_0809DB9C:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0809DBB0
movs r3, #0x80
lsls r3, r3, #0xc
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0
bl PositionRelative
_0809DBB0:
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
ldrb r2, [r5, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x18]
b _0809DBC8
_0809DBC4:
bl sub_0805E780
_0809DBC8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0809DBCC
sub_0809DBCC: @ 0x0809DBCC
push {lr}
ldr r2, _0809DBE0 @ =gUnk_081240F4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809DBE0: .4byte gUnk_081240F4
thumb_func_start sub_0809DBE4
sub_0809DBE4: @ 0x0809DBE4
push {r4, lr}
adds r4, r0, #0
bl sub_0809DB58
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #0x18
strb r0, [r4, #0x15]
adds r0, #0xe8
strh r0, [r4, #0x24]
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r4, #0x20]
movs r0, #1
strb r0, [r4, #0xe]
movs r0, #0x6e
bl PlaySFX
pop {r4, pc}
thumb_func_start sub_0809DC14
sub_0809DC14: @ 0x0809DC14
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_080044EC
cmp r0, #1
bhi _0809DC5A
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0809DC3C
subs r0, #1
strb r0, [r4, #0xe]
movs r0, #0x80
lsls r0, r0, #9
str r0, [r4, #0x20]
b _0809DC54
_0809DC3C:
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldr r0, _0809DC64 @ =gLinkEntity
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_0809DC54:
movs r0, #0x6e
bl PlaySFX
_0809DC5A:
adds r0, r4, #0
bl sub_0809DB88
pop {r4, pc}
.align 2, 0
_0809DC64: .4byte gLinkEntity
thumb_func_start sub_0809DC68
sub_0809DC68: @ 0x0809DC68
push {lr}
ldr r2, _0809DC7C @ =gUnk_08124100
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809DC7C: .4byte gUnk_08124100
thumb_func_start sub_0809DC80
sub_0809DC80: @ 0x0809DC80
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
movs r3, #0
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
movs r2, #0
strh r3, [r4, #0x24]
movs r0, #0x18
strb r0, [r4, #0x15]
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #0xd
adds r0, r0, r1
str r0, [r4, #0x30]
ldr r0, [r4, #0x34]
ldr r1, _0809DCFC @ =0xFFF00000
adds r0, r0, r1
str r0, [r4, #0x34]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x68
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x6a
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x6c
strh r3, [r0]
adds r0, #2
strb r2, [r0]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
movs r1, #3
bl sub_080042AC
adds r0, r4, #0
movs r1, #6
bl sub_0805EB64
cmp r0, #0
beq _0809DD00
str r4, [r0, #0x50]
str r0, [r4, #0x54]
b _0809DD0A
.align 2, 0
_0809DCFC: .4byte 0xFFF00000
_0809DD00:
movs r0, #0x20
bl sub_0807CD04
bl sub_0805E780
_0809DD0A:
pop {r4, pc}
thumb_func_start sub_0809DD0C
sub_0809DD0C: @ 0x0809DD0C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809DD2A
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #0xa3
lsls r0, r0, #1
bl PlaySFX
_0809DD2A:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809DD34
sub_0809DD34: @ 0x0809DD34
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x6e
ldrb r0, [r1]
adds r0, #8
strb r0, [r1]
subs r1, #2
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x20
bls _0809DD64
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #0x20
strh r0, [r1]
movs r0, #0xa3
lsls r0, r0, #1
bl PlaySFX
_0809DD64:
adds r0, r4, #0
bl sub_0809E238
adds r0, r4, #0
bl sub_0809E29C
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
thumb_func_start sub_0809DD78
sub_0809DD78: @ 0x0809DD78
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x6e
ldrb r0, [r1]
adds r0, #8
strb r0, [r1]
subs r1, #2
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809DDA8
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x5f
ands r0, r1
strb r0, [r4, #0x18]
b _0809DDB4
_0809DDA8:
adds r0, r4, #0
bl sub_0809E238
adds r0, r4, #0
bl sub_0809E29C
_0809DDB4:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
thumb_func_start sub_0809DDBC
sub_0809DDBC: @ 0x0809DDBC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809DDD8
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
ldr r0, _0809DDE0 @ =0x0000015B
bl PlaySFX
_0809DDD8:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_0809DDE0: .4byte 0x0000015B
thumb_func_start sub_0809DDE4
sub_0809DDE4: @ 0x0809DDE4
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _0809DE34 @ =gRoomControls
ldrh r1, [r0, #6]
adds r1, #0x40
ldrh r2, [r0, #8]
movs r0, #0xbc
lsls r0, r0, #1
adds r2, r2, r0
adds r0, r4, #0
bl sub_080045B4
adds r1, r0, #0
adds r0, r4, #0
bl sub_0809E1C8
adds r0, r4, #0
bl sub_0809E1F0
adds r0, r4, #0
bl sub_0809E210
adds r0, r4, #0
bl sub_080040A8
adds r5, r0, #0
cmp r5, #0
bne _0809DE2A
movs r0, #0x20
bl sub_0807CD04
ldr r0, [r4, #0x54]
str r5, [r0, #0x50]
bl sub_0805E780
_0809DE2A:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
_0809DE34: .4byte gRoomControls
thumb_func_start sub_0809DE38
sub_0809DE38: @ 0x0809DE38
push {lr}
ldr r2, _0809DE4C @ =gUnk_08124118
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809DE4C: .4byte gUnk_08124118
thumb_func_start sub_0809DE50
sub_0809DE50: @ 0x0809DE50
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
movs r2, #0
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
movs r0, #0xa
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
strh r2, [r4, #0x24]
ldr r1, _0809DEEC @ =gUnk_0812412D
ldrb r0, [r4, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0x15]
ldrb r1, [r4, #0xb]
lsls r1, r1, #2
ldr r0, _0809DEF0 @ =gUnk_08124132
adds r1, r1, r0
ldr r2, _0809DEF4 @ =gRoomControls
ldrh r0, [r1]
ldrh r3, [r2, #6]
adds r0, r0, r3
strh r0, [r4, #0x2e]
ldrh r0, [r1, #2]
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r0, #0x40
strh r0, [r4, #0x32]
ldr r0, _0809DEF8 @ =0x0000FFC0
strh r0, [r4, #0x36]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
ldr r1, _0809DEFC @ =gUnk_08124128
ldrb r0, [r4, #0xb]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_080042AC
movs r0, #0x97
movs r1, #1
movs r2, #0
bl CreateObject
adds r5, r0, #0
cmp r5, #0
beq _0809DEE8
str r4, [r5, #0x50]
str r5, [r4, #0x54]
movs r3, #0x80
lsls r3, r3, #0xc
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0
bl PositionRelative
movs r1, #0x10
ldrb r0, [r4, #0x15]
cmp r0, #0x18
bne _0809DEE2
rsbs r1, r1, #0
_0809DEE2:
ldrh r0, [r5, #0x2e]
adds r0, r0, r1
strh r0, [r5, #0x2e]
_0809DEE8:
pop {r4, r5, pc}
.align 2, 0
_0809DEEC: .4byte gUnk_0812412D
_0809DEF0: .4byte gUnk_08124132
_0809DEF4: .4byte gRoomControls
_0809DEF8: .4byte 0x0000FFC0
_0809DEFC: .4byte gUnk_08124128
thumb_func_start sub_0809DF00
sub_0809DF00: @ 0x0809DF00
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xb]
bl sub_0809E2C4
cmp r0, #1
beq _0809DF16
cmp r0, #2
beq _0809DF64
movs r0, #0xa
b _0809DF96
_0809DF16:
ldrb r0, [r4, #0xc]
adds r0, #2
strb r0, [r4, #0xc]
movs r0, #0xff
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x58
ldrb r1, [r0]
adds r1, #2
adds r0, r4, #0
bl sub_080042AC
ldr r0, _0809DF60 @ =0x00000123
bl PlaySFX
ldr r5, [r4, #0x54]
cmp r5, #0
beq _0809DF98
ldrb r1, [r4, #0xb]
adds r1, #2
movs r0, #0x96
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0809DF52
adds r0, r5, #0
bl CopyPosition
_0809DF52:
adds r0, r5, #0
bl sub_0805E79C
movs r0, #0
str r0, [r4, #0x54]
b _0809DF98
.align 2, 0
_0809DF60: .4byte 0x00000123
_0809DF64:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0809DF94
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x58
ldrb r1, [r0]
adds r1, #2
adds r0, r4, #0
bl sub_080042AC
ldr r0, _0809DF8C @ =0x00000123
bl PlaySFX
ldr r0, _0809DF90 @ =0x000001F3
bl PlaySFX
b _0809DF98
.align 2, 0
_0809DF8C: .4byte 0x00000123
_0809DF90: .4byte 0x000001F3
_0809DF94:
subs r0, #1
_0809DF96:
strb r0, [r4, #0xe]
_0809DF98:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_0809DFA0
sub_0809DFA0: @ 0x0809DFA0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
cmp r0, #0
beq _0809DFD6
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r2, #0x2e
ldrsh r0, [r4, r2]
subs r1, r1, r0
ldrb r0, [r4, #0x15]
lsls r0, r0, #0xb
eors r1, r0
movs r0, #0x80
lsls r0, r0, #8
ands r1, r0
cmp r1, #0
beq _0809DFD6
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xf]
movs r0, #0x81
lsls r0, r0, #1
bl PlaySFX
_0809DFD6:
adds r0, r4, #0
bl sub_0809DFE0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809DFE0
sub_0809DFE0: @ 0x0809DFE0
push {r4, lr}
adds r4, r0, #0
bl sub_080040A8
cmp r0, #0
bne _0809E028
ldr r1, [r4, #0x54]
cmp r1, #0
beq _0809DFF4
str r0, [r1, #0x50]
_0809DFF4:
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _0809E008
bl sub_0805E780
b _0809E034
_0809E008:
strb r0, [r4, #0xc]
bl Random
ldr r2, _0809E024 @ =gUnk_08124146
movs r1, #1
ands r1, r0
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r1, r1, r0
adds r1, r1, r2
ldrb r0, [r1]
strb r0, [r4, #0xb]
b _0809E034
.align 2, 0
_0809E024: .4byte gUnk_08124146
_0809E028:
adds r0, r4, #0
bl sub_0809E1F0
adds r0, r4, #0
bl sub_080042B8
_0809E034:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E038
sub_0809E038: @ 0x0809E038
push {lr}
ldr r2, _0809E04C @ =gUnk_08124150
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E04C: .4byte gUnk_08124150
thumb_func_start sub_0809E050
sub_0809E050: @ 0x0809E050
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
ldr r0, _0809E084 @ =0x0000FFF0
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
pop {r4, pc}
.align 2, 0
_0809E084: .4byte 0x0000FFF0
thumb_func_start sub_0809E088
sub_0809E088: @ 0x0809E088
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_0807DDE4
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
thumb_func_start sub_0809E0A0
sub_0809E0A0: @ 0x0809E0A0
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0x97
movs r1, #5
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809E0C8
str r5, [r4, #0x50]
str r4, [r5, #0x54]
movs r0, #0
strb r0, [r5, #0xf]
ldr r0, _0809E0CC @ =gLinkEntity
adds r1, r4, #0
bl CopyPosition
ldr r0, _0809E0D0 @ =0x0000FFF8
strh r0, [r4, #0x36]
_0809E0C8:
pop {r4, r5, pc}
.align 2, 0
_0809E0CC: .4byte gLinkEntity
_0809E0D0: .4byte 0x0000FFF8
thumb_func_start sub_0809E0D4
sub_0809E0D4: @ 0x0809E0D4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r6, r1, #0
ldrb r2, [r6, #0x18]
cmp r2, #0
bne _0809E130
ldr r1, [r5, #0x54]
cmp r1, #0
beq _0809E0FC
ldrb r0, [r1, #0xc]
cmp r0, #1
bhi _0809E0FE
ldr r0, _0809E0F8 @ =gUnk_02033280
strb r2, [r0, #6]
b _0809E1BC
.align 2, 0
_0809E0F8: .4byte gUnk_02033280
_0809E0FC:
ldr r1, _0809E124 @ =gLinkEntity
_0809E0FE:
ldrb r0, [r6, #0x18]
adds r0, #1
movs r4, #0
strb r0, [r6, #0x18]
movs r0, #0x2e
ldrsh r2, [r1, r0]
movs r0, #0x32
ldrsh r3, [r1, r0]
adds r0, r5, #0
adds r1, r6, #0
bl sub_0807DEDC
ldr r0, _0809E128 @ =0x00000123
bl PlaySFX
ldr r0, _0809E12C @ =gUnk_02033280
strb r4, [r0, #6]
b _0809E1BC
.align 2, 0
_0809E124: .4byte gLinkEntity
_0809E128: .4byte 0x00000123
_0809E12C: .4byte gUnk_02033280
_0809E130:
ldr r1, [r5, #0x54]
cmp r1, #0
beq _0809E142
movs r0, #0x2e
ldrsh r2, [r1, r0]
mov r8, r2
movs r2, #0x32
ldrsh r7, [r1, r2]
b _0809E14C
_0809E142:
movs r1, #0x1e
ldrsh r0, [r6, r1]
mov r8, r0
movs r2, #0x22
ldrsh r7, [r6, r2]
_0809E14C:
ldrb r0, [r6, #0x19]
subs r0, #1
strb r0, [r6, #0x19]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809E170
movs r0, #8
strb r0, [r6, #0x19]
movs r1, #0x2e
ldrsh r0, [r5, r1]
mov r2, r8
subs r0, r2, r0
movs r2, #0x32
ldrsh r1, [r5, r2]
subs r1, r7, r1
bl sub_080045DA
strb r0, [r5, #0x15]
_0809E170:
movs r0, #0x2e
ldrsh r4, [r5, r0]
mov r1, r8
subs r4, r4, r1
movs r2, #0x32
ldrsh r0, [r5, r2]
subs r6, r0, r7
movs r0, #0x24
ldrsh r1, [r5, r0]
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
movs r1, #0x2e
ldrsh r0, [r5, r1]
mov r2, r8
subs r0, r0, r2
muls r4, r0, r4
movs r1, #0x32
ldrsh r0, [r5, r1]
subs r0, r0, r7
muls r6, r0, r6
cmp r4, #0
bgt _0809E1B6
cmp r6, #0
bgt _0809E1B6
strh r2, [r5, #0x2e]
strh r7, [r5, #0x32]
movs r0, #1
strb r0, [r5, #0xf]
movs r0, #0x81
lsls r0, r0, #1
bl PlaySFX
b _0809E1BC
_0809E1B6:
ldr r1, _0809E1C4 @ =gUnk_02033280
movs r0, #0
strb r0, [r1, #6]
_0809E1BC:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809E1C4: .4byte gUnk_02033280
thumb_func_start sub_0809E1C8
sub_0809E1C8: @ 0x0809E1C8
push {lr}
adds r3, r0, #0
adds r1, #0x20
ldrb r2, [r3, #0x15]
subs r1, r1, r2
movs r0, #0x1f
ands r1, r0
cmp r1, #0
beq _0809E1E6
cmp r1, #0xf
bhi _0809E1E2
adds r0, r2, #1
b _0809E1E4
_0809E1E2:
subs r0, r2, #1
_0809E1E4:
strb r0, [r3, #0x15]
_0809E1E6:
ldrb r1, [r3, #0x15]
movs r0, #0x1f
ands r0, r1
strb r0, [r3, #0x15]
pop {pc}
thumb_func_start sub_0809E1F0
sub_0809E1F0: @ 0x0809E1F0
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #0x24]
adds r0, #0x40
strh r0, [r1, #0x24]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r2, #0x80
lsls r2, r2, #3
cmp r0, r2
ble _0809E208
strh r2, [r1, #0x24]
_0809E208:
adds r0, r1, #0
bl sub_0806F69C
pop {pc}
thumb_func_start sub_0809E210
sub_0809E210: @ 0x0809E210
push {r4, lr}
adds r1, r0, #0
ldr r4, _0809E230 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
bl sub_0806F5B0
movs r1, #0xfe
ands r0, r1
strb r0, [r4, #0x14]
ldr r1, _0809E234 @ =gLinkState
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r1, #8]
pop {r4, pc}
.align 2, 0
_0809E230: .4byte gLinkEntity
_0809E234: .4byte gLinkState
thumb_func_start sub_0809E238
sub_0809E238: @ 0x0809E238
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
ldr r6, _0809E298 @ =gUnk_080C9160
movs r0, #0x6e
adds r0, r0, r7
mov r8, r0
ldrb r0, [r0]
lsls r0, r0, #1
adds r0, r0, r6
movs r1, #0
ldrsh r0, [r0, r1]
adds r5, r7, #0
adds r5, #0x6c
movs r2, #0
ldrsh r1, [r5, r2]
bl sub_0806F9EC
adds r4, r0, #0
lsls r4, r4, #0x10
asrs r4, r4, #0x10
mov r1, r8
ldrb r0, [r1]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r6
movs r2, #0
ldrsh r0, [r0, r2]
movs r2, #0
ldrsh r1, [r5, r2]
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r7, #0
adds r1, #0x68
ldrh r1, [r1]
adds r1, r1, r4
strh r1, [r7, #0x2e]
adds r1, r7, #0
adds r1, #0x6a
ldrh r1, [r1]
subs r1, r1, r0
strh r1, [r7, #0x32]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809E298: .4byte gUnk_080C9160
thumb_func_start sub_0809E29C
sub_0809E29C: @ 0x0809E29C
push {lr}
adds r2, r0, #0
adds r0, #0x6e
ldrb r0, [r0]
adds r0, #0x40
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0809E2B8
ldrb r1, [r2, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
b _0809E2BE
_0809E2B8:
ldrb r0, [r2, #0x18]
movs r1, #0x40
orrs r0, r1
_0809E2BE:
strb r0, [r2, #0x18]
pop {pc}
.align 2, 0
thumb_func_start sub_0809E2C4
sub_0809E2C4: @ 0x0809E2C4
push {r4, r5, r6, r7, lr}
lsls r1, r1, #2
ldr r0, _0809E328 @ =gUnk_08124178
adds r1, r1, r0
ldr r3, _0809E32C @ =gLinkEntity
movs r0, #0x2e
ldrsh r5, [r3, r0]
ldr r4, _0809E330 @ =gRoomControls
ldrh r0, [r4, #6]
ldrh r2, [r1]
adds r0, r0, r2
subs r6, r5, r0
movs r0, #0x32
ldrsh r2, [r3, r0]
ldrh r0, [r4, #8]
ldrh r1, [r1, #2]
adds r0, r0, r1
subs r5, r2, r0
ldr r4, _0809E334 @ =gUnk_08124158
movs r2, #0
adds r7, r3, #0
_0809E2EE:
movs r1, #0
ldrsh r0, [r4, r1]
subs r0, r6, r0
ldrb r1, [r4, #4]
adds r0, r0, r1
lsls r1, r1, #1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r1, r0
ble _0809E33C
movs r1, #2
ldrsh r0, [r4, r1]
subs r0, r5, r0
ldrb r1, [r4, #5]
adds r0, r0, r1
lsls r1, r1, #1
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r1, r0
ble _0809E33C
ldrb r0, [r4, #6]
ldrb r7, [r7, #0x14]
cmp r0, r7
bne _0809E338
ldrb r0, [r3, #0xc]
cmp r0, #6
bne _0809E338
movs r0, #1
b _0809E346
.align 2, 0
_0809E328: .4byte gUnk_08124178
_0809E32C: .4byte gLinkEntity
_0809E330: .4byte gRoomControls
_0809E334: .4byte gUnk_08124158
_0809E338:
movs r0, #2
b _0809E346
_0809E33C:
adds r2, #1
adds r4, #8
cmp r2, #3
ble _0809E2EE
movs r0, #0
_0809E346:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0809E348
sub_0809E348: @ 0x0809E348
push {lr}
ldr r2, _0809E35C @ =gUnk_0812418C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E35C: .4byte gUnk_0812418C
thumb_func_start sub_0809E360
sub_0809E360: @ 0x0809E360
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #8
bls _0809E372
movs r0, #8
strb r0, [r4, #0xe]
_0809E372:
ldrb r2, [r4, #0xe]
movs r0, #0x48
subs r0, r0, r2
ldr r1, _0809E3E0 @ =gUnk_03003DBC
ldrb r1, [r1]
cmp r0, r1
ble _0809E3D8
movs r5, #0
adds r7, r4, #0
adds r7, #0x7e
movs r0, #0x76
adds r0, r0, r4
mov r8, r0
cmp r5, r2
bhs _0809E3A6
movs r6, #0xe
_0809E392:
movs r0, #0x17
bl sub_080A7EE0
strb r6, [r0, #0xe]
str r4, [r0, #0x50]
adds r6, #0xc
adds r5, #1
ldrb r2, [r4, #0xe]
cmp r5, r2
blo _0809E392
_0809E3A6:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r7]
lsls r1, r0, #8
mov r2, r8
strh r1, [r2]
lsls r0, r0, #6
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #0
bl sub_0805E3A0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0809E3D8
bl sub_0804B128
str r0, [r4, #0x54]
adds r1, r4, #0
adds r1, #0x54
adds r2, r4, #0
adds r2, #0x74
adds r0, r4, #0
bl sub_080A2CC0
_0809E3D8:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809E3E0: .4byte gUnk_03003DBC
thumb_func_start sub_0809E3E4
sub_0809E3E4: @ 0x0809E3E4
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x76
ldrb r0, [r4, #0xb]
ldrh r1, [r2]
adds r1, r1, r0
strh r1, [r2]
lsrs r1, r1, #2
strb r1, [r4, #0x14]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0809E428
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0809E40E
adds r0, r4, #0
bl sub_0806F69C
_0809E40E:
adds r2, r4, #0
adds r2, #0x74
ldrh r0, [r2]
subs r0, #1
strh r0, [r2]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809E428
adds r1, r4, #0
adds r1, #0x54
adds r0, r4, #0
bl sub_080A2CC0
_0809E428:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E42C
sub_0809E42C: @ 0x0809E42C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
ldr r6, [r4, #0x50]
ldr r0, [r6, #4]
cmp r0, #0
bne _0809E444
bl sub_0805E780
_0809E444:
ldrb r0, [r4, #0xc]
movs r1, #0x76
adds r1, r1, r4
mov r8, r1
adds r7, r4, #0
adds r7, #0x62
movs r2, #0x74
adds r2, r2, r4
mov sb, r2
adds r5, r4, #0
adds r5, #0x63
movs r1, #0x75
adds r1, r1, r4
mov sl, r1
cmp r0, #0
bne _0809E482
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r6, #0x14]
mov r2, r8
strb r0, [r2]
ldrb r0, [r7]
mov r1, sb
strb r0, [r1]
ldrb r0, [r5]
mov r2, sl
strb r0, [r2]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
_0809E482:
ldrb r0, [r6, #0x14]
mov r1, r8
ldrb r1, [r1]
cmp r0, r1
beq _0809E490
bl sub_0805E780
_0809E490:
ldrb r1, [r6, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r6, #0
adds r1, r4, #0
bl sub_0806FA6C
mov r2, sb
ldrb r0, [r2]
ldrb r1, [r7]
adds r0, r0, r1
strb r0, [r7]
mov r2, sl
ldrb r0, [r2]
ldrb r1, [r5]
adds r0, r0, r1
strb r0, [r5]
ldrb r0, [r4, #0x14]
cmp r0, #2
beq _0809E4D0
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
ldrb r0, [r5]
subs r0, #1
b _0809E4DA
_0809E4D0:
ldrh r0, [r4, #0x32]
subs r0, #1
strh r0, [r4, #0x32]
ldrb r0, [r5]
adds r0, #1
_0809E4DA:
strb r0, [r5]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809E4F4
bl sub_0805E780
_0809E4F4:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0809E500
sub_0809E500: @ 0x0809E500
push {lr}
ldr r2, _0809E514 @ =gUnk_081242C8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E514: .4byte gUnk_081242C8
thumb_func_start sub_0809E518
sub_0809E518: @ 0x0809E518
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r1, #1
strb r1, [r6, #0xc]
ldrb r2, [r6, #0xa]
adds r0, r2, #0
cmp r0, #0xff
bne _0809E52E
ldrb r0, [r6, #0xb]
strb r0, [r6, #0x1e]
b _0809E5CA
_0809E52E:
ands r1, r2
rsbs r0, r1, #0
orrs r0, r1
asrs r5, r0, #0x1f
movs r0, #4
ands r5, r0
movs r0, #2
ands r0, r2
cmp r0, #0
beq _0809E5A4
ldr r0, _0809E5A0 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x44
bhi _0809E5B4
strb r5, [r6, #0x1e]
adds r5, #1
movs r0, #0x9a
movs r1, #0xff
adds r2, r5, #0
bl CreateObject
adds r4, r0, #0
adds r0, r6, #0
adds r1, r4, #0
bl CopyPosition
adds r5, #1
movs r0, #0x9a
movs r1, #0xff
adds r2, r5, #0
bl CreateObject
adds r4, r0, #0
movs r3, #0x80
lsls r3, r3, #9
adds r0, r6, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xff
strb r0, [r1]
adds r5, #1
movs r0, #0x9a
movs r1, #0xff
adds r2, r5, #0
bl CreateObject
adds r4, r0, #0
adds r0, r6, #0
adds r1, r4, #0
bl CopyPosition
b _0809E5C4
.align 2, 0
_0809E5A0: .4byte gUnk_03003DBC
_0809E5A4:
adds r2, r5, #1
movs r0, #0x9a
movs r1, #0xff
bl CreateObject
adds r4, r0, #0
cmp r4, #0
bne _0809E5BA
_0809E5B4:
bl sub_0805E780
b _0809E5C4
_0809E5BA:
strb r5, [r6, #0x1e]
adds r0, r6, #0
adds r1, r4, #0
bl CopyPosition
_0809E5C4:
adds r0, r6, #0
bl sub_0809E5F0
_0809E5CA:
ldrb r1, [r6, #0x1e]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0809E5E8
ldrb r0, [r6, #0x19]
movs r1, #0xc0
orrs r0, r1
strb r0, [r6, #0x19]
adds r2, r6, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
_0809E5E8:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start nullsub_125
nullsub_125: @ 0x0809E5EC
bx lr
.align 2, 0
thumb_func_start sub_0809E5F0
sub_0809E5F0: @ 0x0809E5F0
push {r4, r5, lr}
movs r2, #0x2e
ldrsh r1, [r0, r2]
ldr r4, _0809E628 @ =gRoomControls
ldrh r2, [r4, #6]
subs r1, r1, r2
asrs r5, r1, #4
movs r3, #0x3f
ands r5, r3
movs r2, #0x32
ldrsh r1, [r0, r2]
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r5, r1
adds r1, r0, #0
adds r1, #0x80
strh r5, [r1]
ldrb r0, [r0, #0xa]
cmp r0, #1
beq _0809E708
cmp r0, #1
bgt _0809E62C
cmp r0, #0
beq _0809E64E
b _0809E792
.align 2, 0
_0809E628: .4byte gRoomControls
_0809E62C:
cmp r0, #2
beq _0809E636
cmp r0, #3
beq _0809E6F0
b _0809E792
_0809E636:
ldr r0, _0809E6DC @ =0x00004022
adds r1, r5, #0
subs r1, #0x3d
movs r2, #1
bl sub_0800015E
ldr r0, _0809E6E0 @ =0x0000406D
adds r1, r5, #0
subs r1, #0x3c
movs r2, #1
bl sub_0800015E
_0809E64E:
ldr r0, _0809E6E4 @ =0x0000406C
adds r1, r5, #0
subs r1, #0x42
movs r2, #1
bl sub_0800015E
ldr r4, _0809E6DC @ =0x00004022
adds r1, r5, #0
subs r1, #0x41
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
subs r1, #0x40
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
subs r1, #0x3f
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
subs r1, r5, #2
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
subs r1, r5, #1
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r0, r4, #0
adds r1, r5, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #1
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
ldr r0, _0809E6E8 @ =0x0000406E
adds r1, r5, #0
adds r1, #0x3e
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
adds r1, #0x3f
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
adds r1, #0x40
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
ldr r0, _0809E6EC @ =0x0000406F
adds r1, r5, #0
adds r1, #0x41
movs r2, #1
bl sub_0800015E
b _0809E792
.align 2, 0
_0809E6DC: .4byte 0x00004022
_0809E6E0: .4byte 0x0000406D
_0809E6E4: .4byte 0x0000406C
_0809E6E8: .4byte 0x0000406E
_0809E6EC: .4byte 0x0000406F
_0809E6F0:
ldr r0, _0809E794 @ =0x00004022
adds r1, r5, #0
subs r1, #0x44
movs r2, #1
bl sub_0800015E
ldr r0, _0809E798 @ =0x0000406C
adds r1, r5, #0
subs r1, #0x45
movs r2, #1
bl sub_0800015E
_0809E708:
ldr r4, _0809E794 @ =0x00004022
adds r1, r5, #0
subs r1, #0x42
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
subs r1, #0x41
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
subs r1, #0x40
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
ldr r0, _0809E79C @ =0x0000406D
adds r1, r5, #0
subs r1, #0x3f
movs r2, #1
bl sub_0800015E
subs r1, r5, #2
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
subs r1, r5, #1
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r0, r4, #0
adds r1, r5, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #1
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
ldr r0, _0809E7A0 @ =0x0000406E
adds r1, r5, #0
adds r1, #0x3e
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
adds r1, #0x3f
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
adds r1, r5, #0
adds r1, #0x40
adds r0, r4, #0
movs r2, #1
bl sub_0800015E
ldr r0, _0809E7A4 @ =0x0000406F
adds r1, r5, #0
adds r1, #0x41
movs r2, #1
bl sub_0800015E
_0809E792:
pop {r4, r5, pc}
.align 2, 0
_0809E794: .4byte 0x00004022
_0809E798: .4byte 0x0000406C
_0809E79C: .4byte 0x0000406D
_0809E7A0: .4byte 0x0000406E
_0809E7A4: .4byte 0x0000406F
thumb_func_start sub_0809E7A8
sub_0809E7A8: @ 0x0809E7A8
push {lr}
ldr r2, _0809E7BC @ =gUnk_081242D0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E7BC: .4byte gUnk_081242D0
thumb_func_start sub_0809E7C0
sub_0809E7C0: @ 0x0809E7C0
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xb]
cmp r0, #0xff
beq _0809E7D4
adds r0, r4, #0
bl sub_0809E7FC
_0809E7D4:
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E7E0
sub_0809E7E0: @ 0x0809E7E0
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809E7F8
bl sub_0805E780
_0809E7F8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E7FC
sub_0809E7FC: @ 0x0809E7FC
push {lr}
adds r1, r0, #0
ldrb r3, [r1, #0xb]
lsls r3, r3, #1
ldr r0, _0809E820 @ =gUnk_081242D8
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
lsls r2, r2, #0x10
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
lsls r3, r3, #0x10
bl PositionRelative
pop {pc}
.align 2, 0
_0809E820: .4byte gUnk_081242D8
thumb_func_start sub_0809E824
sub_0809E824: @ 0x0809E824
push {lr}
ldr r2, _0809E838 @ =gUnk_08124354
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809E838: .4byte gUnk_08124354
thumb_func_start sub_0809E83C
sub_0809E83C: @ 0x0809E83C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _0809E856
adds r0, r4, #0
bl sub_0809E96C
bl sub_0805E780
_0809E856:
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E86C
sub_0809E86C: @ 0x0809E86C
push {r4, lr}
adds r4, r0, #0
ldr r1, _0809E8B4 @ =gLinkEntity
movs r2, #0x30
movs r3, #0x30
bl sub_0800419C
cmp r0, #0
beq _0809E89A
movs r0, #0x14
bl GetProgressFlag
cmp r0, #0
beq _0809E89A
ldr r0, _0809E8B8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0809E89A
adds r0, r4, #0
bl sub_080A2B80
_0809E89A:
bl sub_0809E9A0
cmp r0, #0x54
bne _0809E8B0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
movs r0, #1
bl sub_08078A90
_0809E8B0:
pop {r4, pc}
.align 2, 0
_0809E8B4: .4byte gLinkEntity
_0809E8B8: .4byte gUnk_030010A0
thumb_func_start sub_0809E8BC
sub_0809E8BC: @ 0x0809E8BC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809E8E8
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x40
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
bl sub_0809E96C
adds r0, r4, #0
bl sub_0809E918
_0809E8E8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809E8EC
sub_0809E8EC: @ 0x0809E8EC
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809E916
adds r0, r1, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CCC8
movs r0, #0
bl sub_08078A90
movs r0, #0x73
bl PlaySFX
bl sub_0805E780
_0809E916:
pop {pc}
thumb_func_start sub_0809E918
sub_0809E918: @ 0x0809E918
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r4, _0809E964 @ =gUnk_08124364
movs r1, #0
ldrsh r0, [r4, r1]
ldr r1, _0809E968 @ =0xFFFFFC18
cmp r0, r1
beq _0809E962
adds r6, r1, #0
_0809E92A:
adds r0, r5, #0
movs r1, #3
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _0809E958
ldrh r0, [r4]
ldrh r1, [r2, #0x2e]
adds r0, r0, r1
strh r0, [r2, #0x2e]
ldrh r0, [r4, #2]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
adds r1, r2, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_0809E958:
adds r4, #4
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, r6
bne _0809E92A
_0809E962:
pop {r4, r5, r6, pc}
.align 2, 0
_0809E964: .4byte gUnk_08124364
_0809E968: .4byte 0xFFFFFC18
thumb_func_start sub_0809E96C
sub_0809E96C: @ 0x0809E96C
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _0809E99C @ =gRoomControls
ldrh r1, [r2, #6]
adds r1, #0x20
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
adds r2, #8
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
bl sub_08018C1C
pop {r4, r5, pc}
.align 2, 0
_0809E99C: .4byte gRoomControls
thumb_func_start sub_0809E9A0
sub_0809E9A0: @ 0x0809E9A0
push {r4, r5, r6, lr}
ldr r5, _0809E9B0 @ =gLinkEntity
ldrb r2, [r5, #0xc]
cmp r2, #6
beq _0809E9B4
movs r0, #0
b _0809E9F0
.align 2, 0
_0809E9B0: .4byte gLinkEntity
_0809E9B4:
ldrb r0, [r5, #0x14]
ands r2, r0
lsls r2, r2, #1
ldr r0, _0809E9F4 @ =gUnk_080B4468
adds r2, r2, r0
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r3, #0
ldrsh r1, [r2, r3]
adds r0, r0, r1
ldr r4, _0809E9F8 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r6, #0x32
ldrsh r1, [r5, r6]
movs r5, #2
ldrsh r2, [r2, r5]
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
movs r1, #1
bl sub_080002C8
_0809E9F0:
pop {r4, r5, r6, pc}
.align 2, 0
_0809E9F4: .4byte gUnk_080B4468
_0809E9F8: .4byte gRoomControls
thumb_func_start sub_0809E9FC
sub_0809E9FC: @ 0x0809E9FC
push {r4, lr}
adds r4, r0, #0
ldr r1, _0809EA18 @ =gUnk_081243B4
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0809EB30
pop {r4, pc}
.align 2, 0
_0809EA18: .4byte gUnk_081243B4
thumb_func_start sub_0809EA1C
sub_0809EA1C: @ 0x0809EA1C
push {lr}
ldr r2, _0809EA30 @ =gUnk_081243BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809EA30: .4byte gUnk_081243BC
thumb_func_start sub_0809EA34
sub_0809EA34: @ 0x0809EA34
push {r4, lr}
adds r4, r0, #0
movs r2, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
strb r2, [r4, #0x1e]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
subs r1, #1
movs r0, #0x28
strb r0, [r1]
subs r1, #4
movs r0, #0xa
strb r0, [r1]
ldr r0, _0809EA7C @ =gUnk_080FD150
str r0, [r4, #0x48]
adds r0, r4, #0
bl sub_0809EAD8
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
bl sub_0809EABC
pop {r4, pc}
.align 2, 0
_0809EA7C: .4byte gUnk_080FD150
thumb_func_start sub_0809EA80
sub_0809EA80: @ 0x0809EA80
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809EAB4
adds r4, r5, #0
adds r4, #0x86
ldrh r0, [r4]
bl sub_0807CBE4
cmp r0, #0
beq _0809EAA6
ldrh r0, [r4]
bl sub_0807CD48
b _0809EAAC
_0809EAA6:
ldrh r0, [r4]
bl sub_0807CCC8
_0809EAAC:
movs r0, #0x88
lsls r0, r0, #1
bl sub_08004488
_0809EAB4:
adds r0, r5, #0
bl sub_0809EABC
pop {r4, r5, pc}
thumb_func_start sub_0809EABC
sub_0809EABC: @ 0x0809EABC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
rsbs r1, r0, #0
orrs r1, r0
lsrs r1, r1, #0x1f
ldrb r0, [r4, #0x1e]
cmp r0, r1
beq _0809EAD6
strb r1, [r4, #0x1e]
_0809EAD6:
pop {r4, pc}
thumb_func_start sub_0809EAD8
sub_0809EAD8: @ 0x0809EAD8
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
cmp r0, #0
beq _0809EAF8
bl sub_0804B128
str r0, [r5, #0x54]
adds r1, r5, #0
adds r1, #0x54
adds r2, r5, #0
adds r2, #0x74
adds r0, r5, #0
bl sub_080A2CC0
b _0809EB24
_0809EAF8:
ldr r0, _0809EB28 @ =0x00004050
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _0809EB2C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
_0809EB24:
pop {r4, r5, r6, pc}
.align 2, 0
_0809EB28: .4byte 0x00004050
_0809EB2C: .4byte gRoomControls
thumb_func_start sub_0809EB30
sub_0809EB30: @ 0x0809EB30
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _0809EB64
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0809EB4A
adds r0, r4, #0
bl sub_0806F69C
_0809EB4A:
adds r2, r4, #0
adds r2, #0x74
ldrh r0, [r2]
subs r0, #1
strh r0, [r2]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809EB64
adds r1, r4, #0
adds r1, #0x54
adds r0, r4, #0
bl sub_080A2CC0
_0809EB64:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809EB68
sub_0809EB68: @ 0x0809EB68
push {lr}
ldr r2, _0809EB7C @ =gUnk_081243C4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809EB7C: .4byte gUnk_081243C4
thumb_func_start sub_0809EB80
sub_0809EB80: @ 0x0809EB80
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r5, #3
strb r5, [r4, #0x1e]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
subs r1, #1
movs r0, #0x28
strb r0, [r1]
subs r1, #4
movs r0, #0xa
strb r0, [r1]
ldr r0, _0809EBD4 @ =gUnk_080FD150
str r0, [r4, #0x48]
adds r0, r4, #0
bl sub_0809EAD8
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
adds r0, #0x84
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _0809EBD2
strb r5, [r4, #0xc]
movs r0, #2
strb r0, [r4, #0x1e]
_0809EBD2:
pop {r4, r5, pc}
.align 2, 0
_0809EBD4: .4byte gUnk_080FD150
thumb_func_start sub_0809EBD8
sub_0809EBD8: @ 0x0809EBD8
push {lr}
adds r2, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809EC04
movs r1, #2
strb r1, [r2, #0xc]
movs r0, #0x10
strb r0, [r2, #0xe]
strb r1, [r2, #0x1e]
adds r0, r2, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CCC8
movs r0, #0x88
lsls r0, r0, #1
bl sub_08004488
_0809EC04:
pop {pc}
.align 2, 0
thumb_func_start sub_0809EC08
sub_0809EC08: @ 0x0809EC08
push {r4, lr}
adds r4, r0, #0
adds r0, #0x84
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _0809EC1E
movs r0, #3
strb r0, [r4, #0xc]
b _0809EC44
_0809EC1E:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809EC44
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #3
strb r0, [r4, #0x1e]
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CD48
movs r0, #0x88
lsls r0, r0, #1
bl sub_08004488
_0809EC44:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_126
nullsub_126: @ 0x0809EC48
bx lr
.align 2, 0
thumb_func_start sub_0809EC4C
sub_0809EC4C: @ 0x0809EC4C
push {r4, r5, r6, lr}
adds r6, r0, #0
ldrb r3, [r6, #0xc]
cmp r3, #0
bne _0809ED14
movs r4, #1
strb r4, [r6, #0xc]
adds r2, r6, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
ldrb r0, [r6, #0xa]
cmp r0, #0
bne _0809ED04
ldrb r0, [r6, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r6, #0x10]
strb r4, [r6, #0x1e]
adds r5, r6, #0
adds r5, #0x38
strb r4, [r5]
adds r1, r6, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
subs r1, #1
movs r0, #0x7a
strb r0, [r1]
adds r0, r6, #0
adds r0, #0x3b
strb r4, [r0]
ldr r0, _0809ECF4 @ =gUnk_080FD168
str r0, [r6, #0x48]
movs r0, #0x2e
ldrsh r4, [r6, r0]
ldr r1, _0809ECF8 @ =gRoomControls
ldrh r0, [r1, #6]
subs r4, r4, r0
asrs r4, r4, #4
movs r2, #0x3f
ands r4, r2
movs r3, #0x32
ldrsh r0, [r6, r3]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
ldr r0, _0809ECFC @ =0x00004066
subs r1, r4, #1
ldrb r2, [r5]
bl sub_0800015E
ldr r0, _0809ED00 @ =0x00004065
ldrb r2, [r5]
adds r1, r4, #0
bl sub_0800015E
adds r0, r6, #0
bl UpdateSpriteOrderAndFlip
movs r0, #0x9e
movs r1, #1
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0809ED14
str r1, [r6, #0x54]
adds r0, r6, #0
bl CopyPosition
b _0809ED14
.align 2, 0
_0809ECF4: .4byte gUnk_080FD168
_0809ECF8: .4byte gRoomControls
_0809ECFC: .4byte 0x00004066
_0809ED00: .4byte 0x00004065
_0809ED04:
strb r3, [r6, #0x1e]
adds r1, r6, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r6, #0
bl UpdateSpriteOrderAndFlip
_0809ED14:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0809ED18
sub_0809ED18: @ 0x0809ED18
push {lr}
ldr r2, _0809ED2C @ =gUnk_081243D4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809ED2C: .4byte gUnk_081243D4
thumb_func_start sub_0809ED30
sub_0809ED30: @ 0x0809ED30
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
movs r1, #2
eors r0, r1
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_0809EE34
adds r0, r4, #0
bl sub_0809EFB0
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
pop {r4, pc}
thumb_func_start sub_0809ED54
sub_0809ED54: @ 0x0809ED54
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x84
ldrh r0, [r1]
cmp r0, #0
beq _0809ED6A
bl sub_0807CBE4
cmp r0, #0
beq _0809ED86
_0809ED6A:
ldrb r0, [r4, #0xb]
cmp r0, #1
bne _0809ED80
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809ED86
_0809ED80:
adds r0, r4, #0
bl sub_0809EE08
_0809ED86:
pop {r4, pc}
thumb_func_start sub_0809ED88
sub_0809ED88: @ 0x0809ED88
push {r4, lr}
adds r4, r0, #0
bl sub_0809F08C
adds r0, r4, #0
bl sub_0809EE44
adds r0, r4, #0
adds r0, #0x86
ldrh r2, [r0]
cmp r2, #0
beq _0809EDC6
adds r1, r4, #0
adds r1, #0x84
ldrh r0, [r1]
cmp r0, r2
bne _0809EDB4
bl sub_0807CBE4
cmp r0, #0
bne _0809EDE2
b _0809EDBE
_0809EDB4:
ldrh r0, [r1]
bl sub_0807CBE4
cmp r0, #0
beq _0809EDE2
_0809EDBE:
adds r0, r4, #0
bl sub_0809EE24
b _0809EDE2
_0809EDC6:
ldrb r0, [r4, #0xb]
cmp r0, #1
bne _0809EDE2
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0809EDE2
adds r0, r4, #0
bl sub_0809EE24
_0809EDE2:
pop {r4, pc}
thumb_func_start sub_0809EDE4
sub_0809EDE4: @ 0x0809EDE4
push {r4, lr}
adds r4, r0, #0
bl sub_0809F08C
adds r0, r4, #0
bl sub_0809EE44
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809EE06
adds r0, r4, #0
bl sub_0809EE34
_0809EE06:
pop {r4, pc}
thumb_func_start sub_0809EE08
sub_0809EE08: @ 0x0809EE08
push {lr}
movs r1, #2
strb r1, [r0, #0xc]
adds r1, r0, #0
adds r1, #0x7f
ldrb r1, [r1]
lsls r1, r1, #2
adds r2, r0, #0
adds r2, #0x74
strh r1, [r2]
ldrb r1, [r0, #0xa]
bl sub_08004260
pop {pc}
thumb_func_start sub_0809EE24
sub_0809EE24: @ 0x0809EE24
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
ldrb r1, [r0, #0xa]
adds r1, #4
bl sub_08004260
pop {pc}
thumb_func_start sub_0809EE34
sub_0809EE34: @ 0x0809EE34
movs r1, #1
strb r1, [r0, #0xc]
ldrb r1, [r0, #0xe]
lsls r1, r1, #2
adds r0, #0x74
strh r1, [r0]
bx lr
.align 2, 0
thumb_func_start sub_0809EE44
sub_0809EE44: @ 0x0809EE44
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r0, #0x5a
ldrb r0, [r0]
movs r1, #7
ands r1, r0
adds r0, r5, #0
adds r0, #0x7e
ldrb r0, [r0]
lsls r0, r1
strh r0, [r5, #0x24]
cmp r1, #0
bne _0809EE60
b _0809EF74
_0809EE60:
ldr r4, _0809EEA4 @ =gLinkEntity
adds r0, r5, #0
adds r1, r4, #0
bl sub_0809EF78
cmp r0, #0
beq _0809EE80
bl sub_08079F8C
cmp r0, #0
beq _0809EE80
movs r1, #0x24
ldrsh r0, [r5, r1]
ldrb r1, [r5, #0x15]
bl sub_08079E58
_0809EE80:
ldr r6, _0809EEA8 @ =gUnk_03003D80
ldr r4, [r6, #4]
cmp r6, r4
beq _0809EF74
_0809EE88:
ldrb r0, [r4, #8]
cmp r0, #8
bne _0809EF6E
movs r3, #0
ldrb r0, [r4, #9]
subs r0, #2
cmp r0, #0x17
bhi _0809EF52
lsls r0, r0, #2
ldr r1, _0809EEAC @ =_0809EEB0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0809EEA4: .4byte gLinkEntity
_0809EEA8: .4byte gUnk_03003D80
_0809EEAC: .4byte _0809EEB0
_0809EEB0: @ jump table
.4byte _0809EF1E @ case 0
.4byte _0809EF26 @ case 1
.4byte _0809EF48 @ case 2
.4byte _0809EF52 @ case 3
.4byte _0809EF52 @ case 4
.4byte _0809EF52 @ case 5
.4byte _0809EF52 @ case 6
.4byte _0809EF52 @ case 7
.4byte _0809EF52 @ case 8
.4byte _0809EF52 @ case 9
.4byte _0809EF52 @ case 10
.4byte _0809EF52 @ case 11
.4byte _0809EF52 @ case 12
.4byte _0809EF52 @ case 13
.4byte _0809EF52 @ case 14
.4byte _0809EF50 @ case 15
.4byte _0809EF52 @ case 16
.4byte _0809EF10 @ case 17
.4byte _0809EF52 @ case 18
.4byte _0809EF52 @ case 19
.4byte _0809EF52 @ case 20
.4byte _0809EF52 @ case 21
.4byte _0809EF52 @ case 22
.4byte _0809EF50 @ case 23
_0809EF10:
ldrb r0, [r4, #0xc]
cmp r0, #2
bne _0809EF56
ldrb r0, [r4, #0xd]
cmp r0, #1
bls _0809EF52
b _0809EF56
_0809EF1E:
ldrb r0, [r4, #0xc]
cmp r0, #2
beq _0809EF52
b _0809EF56
_0809EF26:
ldr r2, _0809EF44 @ =gLinkEntity
movs r7, #0x2e
ldrsh r1, [r4, r7]
movs r7, #0x2e
ldrsh r0, [r2, r7]
cmp r1, r0
bne _0809EF56
movs r0, #0x32
ldrsh r1, [r4, r0]
movs r7, #0x32
ldrsh r0, [r2, r7]
cmp r1, r0
beq _0809EF52
b _0809EF56
.align 2, 0
_0809EF44: .4byte gLinkEntity
_0809EF48:
ldrb r0, [r5, #0xf]
cmp r0, #0
beq _0809EF52
b _0809EF56
_0809EF50:
movs r3, #1
_0809EF52:
cmp r3, #0
beq _0809EF6E
_0809EF56:
adds r0, r5, #0
adds r1, r4, #0
bl sub_0809EF78
cmp r0, #0
beq _0809EF6E
movs r0, #0x24
ldrsh r1, [r5, r0]
ldrb r2, [r5, #0x15]
adds r0, r4, #0
bl sub_080044AE
_0809EF6E:
ldr r4, [r4, #4]
cmp r6, r4
bne _0809EE88
_0809EF74:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0809EF78
sub_0809EF78: @ 0x0809EF78
push {r4, r5, lr}
adds r3, r0, #0
adds r4, r1, #0
movs r5, #0
adds r0, #0x70
ldrh r2, [r0]
movs r1, #0x2e
ldrsh r0, [r4, r1]
adds r1, r3, #0
adds r1, #0x6c
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _0809EFAC
adds r0, r3, #0
adds r0, #0x72
ldrh r2, [r0]
movs r1, #0x32
ldrsh r0, [r4, r1]
adds r1, r3, #0
adds r1, #0x6e
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _0809EFAC
movs r5, #1
_0809EFAC:
adds r0, r5, #0
pop {r4, r5, pc}
thumb_func_start sub_0809EFB0
sub_0809EFB0: @ 0x0809EFB0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
ldr r0, _0809F010 @ =gUnk_081243E4
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r2, r1, r0
ldrb r2, [r2]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
mov sb, r2
adds r1, #1
adds r1, r1, r0
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
mov r8, r1
movs r0, #0x2e
ldrsh r6, [r4, r0]
movs r0, #0x32
ldrsh r5, [r4, r0]
ldr r0, _0809F014 @ =gUnk_02027EB4
mov sl, r0
movs r7, #0
_0809EFE6:
adds r7, #1
add r6, sb
add r5, r8
mov r0, sl
adds r1, r6, #0
adds r2, r5, #0
movs r3, #9
bl sub_080AE4CC
cmp r0, #0
beq _0809EFE6
subs r0, r7, #1
lsls r7, r0, #4
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _0809F034
cmp r0, #1
bgt _0809F018
cmp r0, #0
beq _0809F022
b _0809F082
.align 2, 0
_0809F010: .4byte gUnk_081243E4
_0809F014: .4byte gUnk_02027EB4
_0809F018:
cmp r0, #2
beq _0809F03E
cmp r0, #3
beq _0809F064
b _0809F082
_0809F022:
ldrh r0, [r4, #0x2e]
subs r0, #0x10
adds r1, r4, #0
adds r1, #0x6c
strh r0, [r1]
ldrh r0, [r4, #0x32]
adds r0, #8
adds r1, #2
b _0809F054
_0809F034:
adds r1, r7, #0
adds r1, #8
ldrh r0, [r4, #0x2e]
subs r0, r0, r1
b _0809F068
_0809F03E:
ldrh r0, [r4, #0x2e]
subs r0, #0x10
adds r1, r4, #0
adds r1, #0x6c
strh r0, [r1]
adds r1, r7, #0
adds r1, #8
ldrh r0, [r4, #0x32]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x6e
_0809F054:
strh r0, [r1]
adds r1, #2
movs r0, #0x20
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x72
strh r7, [r0]
b _0809F082
_0809F064:
ldrh r0, [r4, #0x2e]
adds r0, #8
_0809F068:
adds r1, r4, #0
adds r1, #0x6c
strh r0, [r1]
ldrh r0, [r4, #0x32]
subs r0, #0x10
adds r1, #2
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x70
strh r7, [r0]
adds r1, #4
movs r0, #0x20
strh r0, [r1]
_0809F082:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0809F08C
sub_0809F08C: @ 0x0809F08C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0809F09A
subs r0, #1
strb r0, [r4, #0xf]
_0809F09A:
adds r0, r4, #0
bl sub_08004274
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0809F0C0
movs r0, #0xdf
ands r0, r1
strb r0, [r2]
movs r0, #0x14
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_0809F0E4
b _0809F0E0
_0809F0C0:
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0809F0E0
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _0809F0E0
movs r0, #0x14
strb r0, [r4, #0xf]
ldrb r0, [r2]
movs r1, #0x10
eors r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0809F0E4
_0809F0E0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809F0E4
sub_0809F0E4: @ 0x0809F0E4
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0809F124 @ =0x00000183
bl sub_08004488
ldrb r0, [r5, #0xa]
movs r1, #2
eors r1, r0
movs r0, #0xb2
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809F120
str r5, [r4, #0x50]
ldrb r0, [r5, #0xa]
lsls r0, r0, #1
ldr r1, _0809F128 @ =gUnk_081243EC
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
_0809F120:
pop {r4, r5, pc}
.align 2, 0
_0809F124: .4byte 0x00000183
_0809F128: .4byte gUnk_081243EC
thumb_func_start sub_0809F12C
sub_0809F12C: @ 0x0809F12C
push {lr}
ldr r2, _0809F140 @ =gUnk_08124670
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F140: .4byte gUnk_08124670
thumb_func_start sub_0809F144
sub_0809F144: @ 0x0809F144
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _0809F188 @ =gUnk_080FD178
str r0, [r4, #0x48]
ldr r0, _0809F18C @ =0x00004022
movs r2, #0x2e
ldrsh r1, [r4, r2]
ldr r3, _0809F190 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r5, #0x3f
ands r1, r5
movs r6, #0x32
ldrsh r2, [r4, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r5
lsls r2, r2, #6
orrs r1, r2
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
pop {r4, r5, r6, pc}
.align 2, 0
_0809F188: .4byte gUnk_080FD178
_0809F18C: .4byte 0x00004022
_0809F190: .4byte gRoomControls
thumb_func_start sub_0809F194
sub_0809F194: @ 0x0809F194
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x50]
ldrb r0, [r0, #0xf]
cmp r0, #1
bne _0809F1AE
movs r0, #2
strb r0, [r2, #0xc]
ldrb r1, [r2, #0xa]
adds r1, #4
adds r0, r2, #0
bl sub_08004260
_0809F1AE:
pop {pc}
thumb_func_start sub_0809F1B0
sub_0809F1B0: @ 0x0809F1B0
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08004274
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _0809F20C
movs r0, #0xfe
ands r0, r1
strb r0, [r2]
movs r0, #0x1b
bl sub_080A7EE0
adds r5, r0, #0
cmp r5, #0
beq _0809F21E
ldrb r0, [r4, #0xa]
strb r0, [r5, #0xa]
ldr r0, [r4, #0x50]
str r0, [r5, #0x50]
ldrb r0, [r4, #0xa]
lsls r0, r0, #1
ldr r1, _0809F208 @ =gUnk_08124684
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
movs r0, #0xec
bl sub_08004488
b _0809F21E
.align 2, 0
_0809F208: .4byte gUnk_08124684
_0809F20C:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809F21E
strb r3, [r4, #0xc]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
_0809F21E:
pop {r4, r5, pc}
thumb_func_start sub_0809F220
sub_0809F220: @ 0x0809F220
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F242
movs r0, #4
strb r0, [r2, #0xc]
movs r0, #0xf
strb r0, [r2, #0xe]
ldrb r1, [r2, #0xa]
adds r0, r2, #0
bl sub_08004260
b _0809F252
_0809F242:
ldr r0, [r2, #0x50]
adds r0, #0x36
movs r1, #1
ldrb r2, [r2, #0xb]
lsls r1, r2
ldrb r2, [r0]
orrs r1, r2
strb r1, [r0]
_0809F252:
pop {pc}
thumb_func_start sub_0809F254
sub_0809F254: @ 0x0809F254
push {r4, r5, lr}
adds r3, r0, #0
ldrb r1, [r3, #0x18]
lsls r0, r1, #0x1e
lsrs r0, r0, #0x1e
movs r5, #1
eors r0, r5
movs r4, #4
rsbs r4, r4, #0
adds r2, r4, #0
ands r2, r1
orrs r2, r0
strb r2, [r3, #0x18]
ldrb r0, [r3, #0xe]
subs r0, #1
strb r0, [r3, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F284
movs r0, #1
strb r5, [r3, #0xc]
ands r2, r4
orrs r2, r0
strb r2, [r3, #0x18]
_0809F284:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0809F288
sub_0809F288: @ 0x0809F288
push {lr}
ldr r2, _0809F29C @ =gUnk_081246EC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F29C: .4byte gUnk_081246EC
thumb_func_start sub_0809F2A0
sub_0809F2A0: @ 0x0809F2A0
push {r4, r5, r6, lr}
movs r1, #1
strb r1, [r0, #0xc]
ldrb r1, [r0, #0xb]
strb r1, [r0, #0x1e]
ldrb r1, [r0, #0x19]
movs r2, #0xc0
orrs r1, r2
strb r1, [r0, #0x19]
adds r3, r0, #0
adds r3, #0x29
ldrb r1, [r3]
movs r2, #7
orrs r1, r2
strb r1, [r3]
ldr r5, _0809F2EC @ =0x00004069
movs r2, #0x2e
ldrsh r1, [r0, r2]
ldr r3, _0809F2F0 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r0, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r0, #0x38
ldrb r2, [r0]
adds r0, r5, #0
bl sub_0800015E
pop {r4, r5, r6, pc}
.align 2, 0
_0809F2EC: .4byte 0x00004069
_0809F2F0: .4byte gRoomControls
thumb_func_start nullsub_537
nullsub_537: @ 0x0809F2F4
bx lr
.align 2, 0
thumb_func_start sub_0809F2F8
sub_0809F2F8: @ 0x0809F2F8
push {r4, lr}
adds r4, r0, #0
ldr r1, _0809F314 @ =gUnk_081246F4
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_0809F314: .4byte gUnk_081246F4
thumb_func_start sub_0809F318
sub_0809F318: @ 0x0809F318
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl sub_08004260
bl Random
movs r1, #0x10
ands r1, r0
cmp r1, #0
beq _0809F336
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
_0809F336:
movs r0, #0x28
strh r0, [r4, #0x2e]
movs r0, #0x48
strh r0, [r4, #0x32]
ldr r0, _0809F36C @ =0x0000FFB0
strh r0, [r4, #0x36]
ldrb r1, [r4, #0x1b]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x1b]
movs r0, #1
strb r0, [r4, #0xc]
ldr r1, _0809F370 @ =gUnk_08124704
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_0801D2B4
adds r0, r4, #0
movs r1, #7
bl sub_0805E3A0
pop {r4, pc}
.align 2, 0
_0809F36C: .4byte 0x0000FFB0
_0809F370: .4byte gUnk_08124704
thumb_func_start sub_0809F374
sub_0809F374: @ 0x0809F374
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
movs r0, #0x80
lsls r0, r0, #0x12
ldrb r0, [r0, #7]
cmp r0, #1
bhi _0809F3AE
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_080044EC
cmp r0, #1
bhi _0809F3C0
movs r0, #0
str r0, [r4, #0x34]
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
movs r0, #0xc3
lsls r0, r0, #1
bl PlaySFX
b _0809F3E6
_0809F3AE:
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_080044EC
cmp r0, #0
beq _0809F3C8
cmp r0, #1
beq _0809F3D4
_0809F3C0:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
b _0809F3E6
_0809F3C8:
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_0809F3D4:
movs r0, #0
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_0809F448
movs r0, #0xc3
lsls r0, r0, #1
bl PlaySFX
_0809F3E6:
pop {r4, pc}
thumb_func_start sub_0809F3E8
sub_0809F3E8: @ 0x0809F3E8
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809F404
movs r0, #3
strb r0, [r2, #0xc]
adds r0, r2, #0
movs r1, #2
bl sub_08004260
_0809F404:
pop {pc}
.align 2, 0
thumb_func_start sub_0809F408
sub_0809F408: @ 0x0809F408
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x5a
ldrb r0, [r1]
cmp r0, #9
beq _0809F41C
cmp r0, #0x80
beq _0809F438
b _0809F442
_0809F41C:
movs r0, #0
strb r0, [r1]
adds r0, r2, #0
movs r1, #0x43
movs r2, #0
bl CreateFX
ldr r1, _0809F434 @ =gUnk_02000080
movs r0, #1
strb r0, [r1]
b _0809F442
.align 2, 0
_0809F434: .4byte gUnk_02000080
_0809F438:
ldr r1, _0809F444 @ =gUnk_02000080
movs r0, #1
strb r0, [r1, #4]
bl sub_0805E780
_0809F442:
pop {pc}
.align 2, 0
_0809F444: .4byte gUnk_02000080
thumb_func_start sub_0809F448
sub_0809F448: @ 0x0809F448
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
bl Random
adds r5, r0, #0
ldrb r0, [r6, #0xf]
lsls r2, r0, #1
ldr r1, _0809F474 @ =gUnk_08124708
adds r7, r2, r1
adds r0, #1
strb r0, [r6, #0xf]
ldr r1, [r6, #0x2c]
movs r0, #0xa0
lsls r0, r0, #0xe
subs r4, r0, r1
ldrb r0, [r7]
cmp r0, #0
beq _0809F478
cmp r0, #1
beq _0809F492
b _0809F49C
.align 2, 0
_0809F474: .4byte gUnk_08124708
_0809F478:
movs r1, #0xc0
lsls r1, r1, #0xd
adds r0, r5, #0
bl __modsi3
adds r4, r0, #0
movs r0, #0x80
lsls r0, r0, #0x11
ands r0, r5
cmp r0, #0
beq _0809F49C
rsbs r4, r4, #0
b _0809F49C
_0809F492:
ldr r0, _0809F4BC @ =0xFFF80000
adds r1, r4, r0
ldr r0, _0809F4C0 @ =0x000FFFFF
ands r0, r5
adds r4, r1, r0
_0809F49C:
adds r0, r4, #0
cmp r4, #0
bge _0809F4A4
rsbs r0, r4, #0
_0809F4A4:
ldrb r1, [r7, #1]
lsls r1, r1, #8
bl __divsi3
strh r0, [r6, #0x24]
adds r0, r4, #0
movs r1, #0
bl sub_080045DA
lsrs r0, r0, #3
strb r0, [r6, #0x15]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809F4BC: .4byte 0xFFF80000
_0809F4C0: .4byte 0x000FFFFF
thumb_func_start sub_0809F4C4
sub_0809F4C4: @ 0x0809F4C4
push {lr}
ldr r2, _0809F4D8 @ =gUnk_08124798
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F4D8: .4byte gUnk_08124798
thumb_func_start sub_0809F4DC
sub_0809F4DC: @ 0x0809F4DC
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xb]
cmp r0, #0
bne _0809F4FC
ldr r0, _0809F4F8 @ =gUnk_081247A0
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _0809F50C
.align 2, 0
_0809F4F8: .4byte gUnk_081247A0
_0809F4FC:
ldr r0, _0809F510 @ =gUnk_081247AC
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_0809F50C:
pop {pc}
.align 2, 0
_0809F510: .4byte gUnk_081247AC
thumb_func_start sub_0809F514
sub_0809F514: @ 0x0809F514
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0x78
strb r1, [r0, #0xe]
ldrb r2, [r0, #0x18]
subs r1, #0x7c
ands r1, r2
strb r1, [r0, #0x18]
adds r2, r0, #0
adds r2, #0x68
movs r1, #0xc
strb r1, [r2]
ldr r1, _0809F540 @ =gRoomControls
str r0, [r1, #0x30]
ldr r2, _0809F544 @ =gUnk_02034490
movs r1, #0xff
strb r1, [r2]
bl sub_0809F7BC
pop {pc}
.align 2, 0
_0809F540: .4byte gRoomControls
_0809F544: .4byte gUnk_02034490
thumb_func_start sub_0809F548
sub_0809F548: @ 0x0809F548
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F590
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x5a
strb r0, [r4, #0xe]
adds r0, #0xc3
bl PlaySFX
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _0809F58C @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
bl sub_0809F814
b _0809F5A8
.align 2, 0
_0809F58C: .4byte gRoomControls
_0809F590:
ldr r0, _0809F5AC @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0809F5A2
adds r0, r4, #0
bl sub_0809F7BC
_0809F5A2:
adds r0, r4, #0
bl sub_0809F7F4
_0809F5A8:
pop {r4, r5, pc}
.align 2, 0
_0809F5AC: .4byte gUnk_030010A0
thumb_func_start sub_0809F5B0
sub_0809F5B0: @ 0x0809F5B0
push {lr}
ldrb r1, [r0, #0xe]
subs r1, #1
strb r1, [r0, #0xe]
lsls r1, r1, #0x18
cmp r1, #0
bne _0809F5D4
movs r0, #0x73
bl PlaySFX
movs r0, #0x24
bl sub_0807CD04
ldr r0, _0809F5D8 @ =gUnk_080DD750
bl LoadRoomEntityList
bl sub_0805E780
_0809F5D4:
pop {pc}
.align 2, 0
_0809F5D8: .4byte gUnk_080DD750
thumb_func_start sub_0809F5DC
sub_0809F5DC: @ 0x0809F5DC
movs r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
strb r1, [r0, #0x18]
adds r0, #0x68
movs r1, #0xc
strb r1, [r0]
bx lr
thumb_func_start sub_0809F5F0
sub_0809F5F0: @ 0x0809F5F0
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
bl sub_0807CC3C
cmp r0, #0
beq _0809F614
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
movs r0, #3
bl sub_08078A90
bl sub_08078B48
ldr r0, _0809F618 @ =gRoomControls
str r4, [r0, #0x30]
_0809F614:
pop {r4, pc}
.align 2, 0
_0809F618: .4byte gRoomControls
thumb_func_start sub_0809F61C
sub_0809F61C: @ 0x0809F61C
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _0809F678 @ =gRoomControls
ldrb r1, [r5, #0xf]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0809F694
ldrb r0, [r4, #0xe]
cmp r0, #0x1e
bne _0809F638
ldrb r0, [r4, #0xb]
bl sub_0807CCB4
_0809F638:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F67C
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r0, #0xa5
bl PlaySFX
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r2, #0x32
ldrsh r1, [r4, r2]
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
bl sub_0809F814
b _0809F694
.align 2, 0
_0809F678: .4byte gRoomControls
_0809F67C:
ldr r0, _0809F698 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0809F68E
adds r0, r4, #0
bl sub_0809F7BC
_0809F68E:
adds r0, r4, #0
bl sub_0809F7F4
_0809F694:
pop {r4, r5, pc}
.align 2, 0
_0809F698: .4byte gUnk_030010A0
thumb_func_start sub_0809F69C
sub_0809F69C: @ 0x0809F69C
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F6C0
movs r0, #0x1e
strb r0, [r1, #0xe]
movs r0, #4
strb r0, [r1, #0xc]
ldr r1, _0809F6C4 @ =gRoomControls
ldr r0, _0809F6C8 @ =gLinkEntity
str r0, [r1, #0x30]
movs r0, #0x73
bl PlaySFX
_0809F6C0:
pop {pc}
.align 2, 0
_0809F6C4: .4byte gRoomControls
_0809F6C8: .4byte gLinkEntity
thumb_func_start sub_0809F6CC
sub_0809F6CC: @ 0x0809F6CC
push {lr}
adds r2, r0, #0
ldr r0, _0809F6F8 @ =gRoomControls
ldrb r1, [r0, #0xf]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0809F6F4
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F6F4
ldr r0, _0809F6FC @ =gLinkState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
bl sub_0805E780
_0809F6F4:
pop {pc}
.align 2, 0
_0809F6F8: .4byte gRoomControls
_0809F6FC: .4byte gLinkState
thumb_func_start sub_0809F700
sub_0809F700: @ 0x0809F700
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0809F722
movs r0, #1
strb r0, [r4, #0xc]
bl Random
movs r1, #0x1e
ands r0, r1
adds r0, #8
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0xc
orrs r0, r1
strb r0, [r4, #0x10]
_0809F722:
ldr r0, _0809F768 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0809F750
bl Random
ldr r3, _0809F76C @ =gUnk_081247C0
movs r2, #7
adds r1, r0, #0
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
movs r5, #0x62
strb r1, [r5, r4]
lsrs r0, r0, #4
ands r0, r2
adds r0, r0, r3
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x63
strb r0, [r1]
_0809F750:
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F766
bl sub_0805E780
_0809F766:
pop {r4, r5, pc}
.align 2, 0
_0809F768: .4byte gUnk_030010A0
_0809F76C: .4byte gUnk_081247C0
thumb_func_start sub_0809F770
sub_0809F770: @ 0x0809F770
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xa3
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0809F7B6
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FA30
bl Random
ldrh r2, [r4, #0x2e]
subs r2, #0x10
movs r3, #0x1f
adds r1, r0, #0
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x2e]
ldrh r2, [r4, #0x32]
subs r2, #0x10
asrs r1, r0, #8
ands r1, r3
adds r2, r2, r1
strh r2, [r4, #0x32]
asrs r0, r0, #0x10
movs r1, #3
ands r0, r1
strb r0, [r4, #0x1e]
movs r0, #0xff
strb r0, [r4, #0x15]
_0809F7B6:
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0809F7BC
sub_0809F7BC: @ 0x0809F7BC
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
movs r5, #0
ldr r7, _0809F7F0 @ =gUnk_081247C8
_0809F7C4:
adds r0, r6, #0
bl sub_0809F770
adds r4, r0, #0
cmp r4, #0
beq _0809F7E8
bl Random
movs r1, #3
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r7
ldrh r1, [r1]
strh r1, [r4, #0x24]
lsrs r0, r0, #8
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_0809F7E8:
adds r5, #1
cmp r5, #7
bls _0809F7C4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809F7F0: .4byte gUnk_081247C8
thumb_func_start sub_0809F7F4
sub_0809F7F4: @ 0x0809F7F4
push {lr}
adds r1, r0, #0
adds r1, #0x68
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F812
movs r0, #0xc
strb r0, [r1]
movs r0, #0xc2
lsls r0, r0, #1
bl PlaySFX
_0809F812:
pop {pc}
thumb_func_start sub_0809F814
sub_0809F814: @ 0x0809F814
push {lr}
adds r1, r0, #0
ldr r0, _0809F824 @ =gUnk_081247D0
movs r2, #1
bl sub_0807BB68
pop {pc}
.align 2, 0
_0809F824: .4byte gUnk_081247D0
thumb_func_start sub_0809F828
sub_0809F828: @ 0x0809F828
push {lr}
ldr r2, _0809F83C @ =gUnk_081247F8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F83C: .4byte gUnk_081247F8
thumb_func_start sub_0809F840
sub_0809F840: @ 0x0809F840
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r2, #0xc]
strb r1, [r2, #0x1e]
movs r0, #0x20
strb r0, [r2, #0xe]
strb r1, [r2, #0xf]
ldrb r0, [r2, #0xb]
cmp r0, #0
beq _0809F860
ldrb r0, [r2, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r2, #0x18]
_0809F860:
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
pop {pc}
thumb_func_start sub_0809F868
sub_0809F868: @ 0x0809F868
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F8A2
ldrb r0, [r1, #0xf]
cmp r0, #0
bne _0809F890
ldrb r0, [r1, #0x1e]
adds r0, #1
strb r0, [r1, #0x1e]
ands r0, r2
cmp r0, #3
bne _0809F89E
movs r0, #1
b _0809F89C
_0809F890:
ldrb r0, [r1, #0x1e]
subs r0, #1
strb r0, [r1, #0x1e]
ands r0, r2
cmp r0, #0
bne _0809F89E
_0809F89C:
strb r0, [r1, #0xf]
_0809F89E:
movs r0, #0x20
strb r0, [r1, #0xe]
_0809F8A2:
pop {pc}
thumb_func_start sub_0809F8A4
sub_0809F8A4: @ 0x0809F8A4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
ldr r0, _0809F904 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x42
bhi _0809F8FC
movs r5, #0
_0809F8B6:
movs r0, #0x1d
bl sub_080A7EE0
adds r4, r0, #0
cmp r5, #0
bne _0809F8C6
mov r8, r4
adds r7, r4, #0
_0809F8C6:
strb r5, [r4, #0xa]
mov r0, r8
str r0, [r4, #0x50]
str r7, [r4, #0x54]
adds r0, r6, #0
adds r1, r4, #0
bl CopyPosition
adds r1, r4, #0
adds r1, #0x68
adds r3, r5, #1
movs r2, #7
_0809F8DE:
ldrh r0, [r6, #0x2e]
strh r0, [r1]
adds r1, #2
ldrh r0, [r6, #0x32]
strh r0, [r1]
adds r1, #2
subs r2, #1
cmp r2, #0
bge _0809F8DE
adds r7, r4, #0
adds r5, r3, #0
cmp r5, #4
ble _0809F8B6
bl sub_0805E780
_0809F8FC:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0809F904: .4byte gUnk_03003DBC
thumb_func_start sub_0809F908
sub_0809F908: @ 0x0809F908
push {lr}
ldr r2, _0809F91C @ =gUnk_08124800
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F91C: .4byte gUnk_08124800
thumb_func_start sub_0809F920
sub_0809F920: @ 0x0809F920
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _0809F934
bl sub_0805E780
_0809F934:
movs r2, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3f
strb r2, [r0]
subs r1, #5
movs r0, #2
strb r0, [r1]
ldr r0, _0809F960 @ =gUnk_080FD150
str r0, [r4, #0x48]
pop {r4, pc}
.align 2, 0
_0809F960: .4byte gUnk_080FD150
thumb_func_start sub_0809F964
sub_0809F964: @ 0x0809F964
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0xa1
bne _0809F9A8
adds r0, r4, #0
movs r1, #0x4e
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _0809F99A
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
adds r1, r2, #0
adds r1, #0x63
movs r0, #0xfb
strb r0, [r1]
_0809F99A:
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CCC8
bl sub_0805E780
_0809F9A8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809F9AC
sub_0809F9AC: @ 0x0809F9AC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0809F9D2
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #9
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_0809F9D2:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809F9DC
sub_0809F9DC: @ 0x0809F9DC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809FA9A
movs r0, #0x7f
ands r0, r1
cmp r0, #0x1f
bhi _0809FA9A
lsls r0, r0, #2
ldr r1, _0809FA00 @ =_0809FA04
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0809FA00: .4byte _0809FA04
_0809FA04: @ jump table
.4byte _0809FA84 @ case 0
.4byte _0809FA84 @ case 1
.4byte _0809FA9A @ case 2
.4byte _0809FA9A @ case 3
.4byte _0809FA84 @ case 4
.4byte _0809FA84 @ case 5
.4byte _0809FA84 @ case 6
.4byte _0809FA9A @ case 7
.4byte _0809FA84 @ case 8
.4byte _0809FA84 @ case 9
.4byte _0809FA84 @ case 10
.4byte _0809FA84 @ case 11
.4byte _0809FA84 @ case 12
.4byte _0809FA9A @ case 13
.4byte _0809FA9A @ case 14
.4byte _0809FA9A @ case 15
.4byte _0809FA9A @ case 16
.4byte _0809FA9A @ case 17
.4byte _0809FA9A @ case 18
.4byte _0809FA9A @ case 19
.4byte _0809FA9A @ case 20
.4byte _0809FA9A @ case 21
.4byte _0809FA9A @ case 22
.4byte _0809FA9A @ case 23
.4byte _0809FA9A @ case 24
.4byte _0809FA9A @ case 25
.4byte _0809FA9A @ case 26
.4byte _0809FA9A @ case 27
.4byte _0809FA9A @ case 28
.4byte _0809FA9A @ case 29
.4byte _0809FA84 @ case 30
.4byte _0809FA84 @ case 31
_0809FA84:
movs r0, #5
strb r0, [r4, #0xc]
ldr r0, _0809FAB4 @ =gLinkEntity
str r0, [r4, #0x54]
ldrb r0, [r4, #0xa]
movs r1, #0
movs r2, #0
bl sub_080A7C00
bl sub_0805E780
_0809FA9A:
ldr r0, _0809FAB8 @ =gUnk_08124824
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08080CB4
pop {r4, pc}
.align 2, 0
_0809FAB4: .4byte gLinkEntity
_0809FAB8: .4byte gUnk_08124824
thumb_func_start sub_0809FABC
sub_0809FABC: @ 0x0809FABC
push {lr}
adds r3, r0, #0
movs r0, #1
strb r0, [r3, #0xc]
ldrb r0, [r3, #0xb]
cmp r0, #0
beq _0809FAD0
cmp r0, #2
beq _0809FADE
b _0809FAE6
_0809FAD0:
movs r0, #0xf0
lsls r0, r0, #9
str r0, [r3, #0x20]
ldrh r0, [r3, #0x36]
adds r0, #8
strh r0, [r3, #0x36]
b _0809FAE6
_0809FADE:
adds r0, r3, #0
bl sub_0809FECC
b _0809FB30
_0809FAE6:
adds r1, r3, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3c
movs r2, #0x17
strb r2, [r0]
adds r1, #8
movs r0, #0x48
strb r0, [r1]
subs r1, #1
movs r0, #7
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3b
strb r2, [r0]
ldr r0, _0809FB34 @ =gUnk_080FD1A8
str r0, [r3, #0x48]
movs r0, #1
strb r0, [r3, #0x1c]
ldrh r1, [r3, #0x2e]
adds r0, r3, #0
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r3, #0x32]
adds r1, r3, #0
adds r1, #0x76
strh r0, [r1]
adds r0, r3, #0
movs r1, #3
bl sub_0805E3A0
movs r0, #0x9b
lsls r0, r0, #1
bl sub_08004488
_0809FB30:
pop {pc}
.align 2, 0
_0809FB34: .4byte gUnk_080FD1A8
thumb_func_start sub_0809FB38
sub_0809FB38: @ 0x0809FB38
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x34]
ldr r1, _0809FB60 @ =0xFFFF2000
adds r0, r0, r1
str r0, [r2, #0x34]
adds r0, r2, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0
beq _0809FB74
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _0809FB64
adds r1, r0, #0
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #1
b _0809FB66
.align 2, 0
_0809FB60: .4byte 0xFFFF2000
_0809FB64:
movs r0, #0xf0
_0809FB66:
strb r0, [r2, #0xe]
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #1
strb r0, [r2, #0xf]
movs r0, #0x80
strh r0, [r2, #0x24]
_0809FB74:
pop {pc}
.align 2, 0
thumb_func_start sub_0809FB78
sub_0809FB78: @ 0x0809FB78
push {lr}
ldr r2, _0809FB8C @ =gUnk_08124840
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809FB8C: .4byte gUnk_08124840
thumb_func_start sub_0809FB90
sub_0809FB90: @ 0x0809FB90
movs r3, #1
movs r1, #1
strb r1, [r0, #0xd]
strb r1, [r0, #0x1d]
ldrb r2, [r0, #0x18]
subs r1, #5
ands r1, r2
orrs r1, r3
strb r1, [r0, #0x18]
bx lr
thumb_func_start sub_0809FBA4
sub_0809FBA4: @ 0x0809FBA4
push {lr}
adds r2, r0, #0
ldr r0, _0809FBC8 @ =gLinkState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _0809FBC2
adds r0, r2, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0x13
beq _0809FBCC
_0809FBC2:
movs r0, #3
strb r0, [r2, #0xc]
b _0809FBD2
.align 2, 0
_0809FBC8: .4byte gLinkState
_0809FBCC:
adds r0, r2, #0
bl sub_0806F4E8
_0809FBD2:
pop {pc}
thumb_func_start sub_0809FBD4
sub_0809FBD4: @ 0x0809FBD4
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _0809FBFC @ =gLinkState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _0809FBF4
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r5, #0x7f
adds r0, r5, #0
ands r0, r1
cmp r0, #0x13
beq _0809FC00
_0809FBF4:
movs r0, #3
strb r0, [r4, #0xc]
b _0809FC22
.align 2, 0
_0809FBFC: .4byte gLinkState
_0809FC00:
adds r0, r4, #0
bl sub_0806F3E4
cmp r0, #0
beq _0809FC22
ldrb r1, [r4, #0x10]
adds r0, r5, #0
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #5
strb r0, [r4, #0xc]
ldr r0, _0809FC24 @ =gLinkEntity
str r0, [r4, #0x54]
ldrb r0, [r4, #0xa]
movs r1, #0
bl sub_08053FF0
_0809FC22:
pop {r4, r5, pc}
.align 2, 0
_0809FC24: .4byte gLinkEntity
thumb_func_start sub_0809FC28
sub_0809FC28: @ 0x0809FC28
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809FCAC
bl Random
adds r5, r0, #0
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #0x20
strb r0, [r4, #0xf]
ldr r2, _0809FC6C @ =gUnk_0812484C
lsrs r0, r5, #8
movs r1, #1
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0809FE9C
cmp r0, #0
beq _0809FC70
movs r0, #0x1f
ands r5, r0
strb r5, [r4, #0x15]
b _0809FC8A
.align 2, 0
_0809FC6C: .4byte gUnk_0812484C
_0809FC70:
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r4, #0
adds r2, #0x74
ldrh r2, [r2]
adds r3, r4, #0
adds r3, #0x76
ldrh r3, [r3]
bl sub_080045D4
strb r0, [r4, #0x15]
_0809FC8A:
ldrb r1, [r4, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _0809FCAC
movs r0, #0x10
eors r1, r0
lsrs r1, r1, #4
movs r0, #1
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_0809FCAC:
adds r0, r4, #0
bl sub_080AEFB4
bl sub_0805E40C
cmp r0, #0
bne _0809FCF8
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0809FCF8
ldr r0, _0809FCFC @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _0809FCE0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809FCE0
adds r0, r4, #0
movs r1, #0
bl sub_08081404
_0809FCE0:
ldrb r0, [r4, #0xe]
cmp r0, #0x3b
bhi _0809FCF8
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_0809FCF8:
pop {r4, r5, pc}
.align 2, 0
_0809FCFC: .4byte gUnk_030010A0
thumb_func_start sub_0809FD00
sub_0809FD00: @ 0x0809FD00
push {r4, lr}
adds r4, r0, #0
ldr r2, [r4, #0x54]
ldrh r1, [r2, #8]
ldr r0, _0809FD18 @ =0x00000B08
cmp r1, r0
beq _0809FD1C
adds r0, r4, #0
movs r1, #0
bl sub_08081404
b _0809FD44
.align 2, 0
_0809FD18: .4byte 0x00000B08
_0809FD1C:
adds r0, r2, #0
adds r1, r4, #0
bl CopyPosition
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
ldr r1, _0809FD48 @ =gLinkEntity
adds r0, r4, #0
bl sub_080177A0
cmp r0, #0
beq _0809FD44
adds r0, r4, #0
bl sub_0809FECC
ldrb r0, [r4, #0xa]
movs r1, #0
bl sub_08053FF0
_0809FD44:
pop {r4, pc}
.align 2, 0
_0809FD48: .4byte gLinkEntity
thumb_func_start sub_0809FD4C
sub_0809FD4C: @ 0x0809FD4C
push {lr}
adds r1, r0, #0
movs r2, #6
strb r2, [r1, #0xc]
movs r0, #0x80
strb r0, [r1, #0xe]
strb r2, [r1, #0xf]
ldrb r2, [r1, #0x10]
movs r0, #0x7f
ands r0, r2
strb r0, [r1, #0x10]
ldrb r2, [r1, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
movs r2, #1
orrs r0, r2
strb r0, [r1, #0x18]
adds r3, r1, #0
adds r3, #0x29
ldrb r2, [r3]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r2
movs r2, #0x10
orrs r0, r2
strb r0, [r3]
adds r2, r1, #0
adds r2, #0x63
movs r0, #0xfb
strb r0, [r2]
ldr r0, [r1, #0x54]
bl CopyPosition
pop {pc}
.align 2, 0
thumb_func_start sub_0809FD94
sub_0809FD94: @ 0x0809FD94
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r6, [r5, #0x54]
ldr r2, _0809FE24 @ =gUnk_080C9160
ldrb r0, [r5, #0xe]
lsls r0, r0, #1
adds r0, r0, r2
movs r3, #0
ldrsh r1, [r0, r3]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #9
cmp r0, #0
bge _0809FDB4
ldr r1, _0809FE28 @ =0x0000FFFF
adds r0, r0, r1
_0809FDB4:
asrs r0, r0, #0x10
ldrh r3, [r6, #0x2e]
adds r0, r0, r3
strh r0, [r5, #0x2e]
ldrb r0, [r5, #0xe]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r2
movs r2, #0
ldrsh r1, [r0, r2]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #8
cmp r0, #0
bge _0809FDD6
ldr r3, _0809FE28 @ =0x0000FFFF
adds r0, r0, r3
_0809FDD6:
asrs r1, r0, #0x10
ldrh r0, [r6, #0x32]
subs r0, r0, r1
strh r0, [r5, #0x32]
ldrb r3, [r5, #0xe]
adds r0, r3, #0
adds r0, #8
strb r0, [r5, #0xe]
ldrh r0, [r6, #0x36]
strh r0, [r5, #0x36]
ldrb r2, [r6, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r4, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r4
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r6, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x19]
subs r3, #0x39
lsls r3, r3, #0x18
lsrs r3, r3, #0x18
cmp r3, #0x7e
bhi _0809FE2C
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #8
rsbs r1, r1, #0
ands r1, r0
movs r0, #3
b _0809FE3A
.align 2, 0
_0809FE24: .4byte gUnk_080C9160
_0809FE28: .4byte 0x0000FFFF
_0809FE2C:
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #8
rsbs r1, r1, #0
ands r1, r0
movs r0, #5
_0809FE3A:
orrs r1, r0
strb r1, [r2]
ldrb r0, [r5, #0xf]
subs r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
adds r4, r5, #0
adds r4, #0x63
cmp r0, #0
bne _0809FE6C
movs r0, #6
strb r0, [r5, #0xf]
ldrb r0, [r4]
subs r0, #1
strb r0, [r4]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
movs r1, #0x16
rsbs r1, r1, #0
cmp r0, r1
bge _0809FE6C
adds r0, r5, #0
movs r1, #1
bl sub_08081404
_0809FE6C:
movs r1, #0
ldrsb r1, [r4, r1]
movs r0, #0x11
rsbs r0, r0, #0
cmp r1, r0
bge _0809FE8A
ldrb r2, [r5, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
_0809FE8A:
adds r1, r5, #0
adds r1, #0x87
ldrb r0, [r1]
cmp r0, #0xa
bls _0809FE98
movs r0, #0xa
strb r0, [r1]
_0809FE98:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0809FE9C
sub_0809FE9C: @ 0x0809FE9C
push {lr}
adds r2, r0, #0
movs r1, #0x2e
ldrsh r0, [r2, r1]
adds r1, r2, #0
adds r1, #0x74
ldrh r1, [r1]
subs r0, r0, r1
adds r0, #0x48
cmp r0, #0x90
bhi _0809FEC8
movs r1, #0x32
ldrsh r0, [r2, r1]
adds r1, r2, #0
adds r1, #0x76
ldrh r1, [r1]
subs r0, r0, r1
adds r0, #0x30
cmp r0, #0x60
bhi _0809FEC8
movs r0, #1
b _0809FECA
_0809FEC8:
movs r0, #0
_0809FECA:
pop {pc}
thumb_func_start sub_0809FECC
sub_0809FECC: @ 0x0809FECC
ldr r1, _0809FEDC @ =gLinkEntity
str r1, [r0, #0x54]
movs r2, #0
movs r1, #5
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
bx lr
.align 2, 0
_0809FEDC: .4byte gLinkEntity
thumb_func_start sub_0809FEE0
sub_0809FEE0: @ 0x0809FEE0
push {lr}
ldr r2, _0809FEF4 @ =gUnk_08124850
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809FEF4: .4byte gUnk_08124850
thumb_func_start sub_0809FEF8
sub_0809FEF8: @ 0x0809FEF8
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r1, _0809FF20 @ =gUnk_0812485C
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
ldr r1, _0809FF24 @ =gUnk_08124860
ldrb r0, [r4, #0xa]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
bl PlaySFX
pop {r4, pc}
.align 2, 0
_0809FF20: .4byte gUnk_0812485C
_0809FF24: .4byte gUnk_08124860
thumb_func_start sub_0809FF28
sub_0809FF28: @ 0x0809FF28
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0809FF64
movs r0, #2
strb r0, [r4, #0xc]
ldr r1, [r4, #0x50]
ldrb r0, [r4, #0xe]
strb r0, [r1, #0x10]
ldrb r2, [r4, #0xf]
movs r0, #3
ands r2, r0
ldrb r3, [r1, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r3
orrs r0, r2
strb r0, [r1, #0x18]
adds r1, #0x6d
ldrb r2, [r1]
movs r0, #0xef
ands r0, r2
strb r0, [r1]
_0809FF64:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0809FF68
sub_0809FF68: @ 0x0809FF68
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xc]
cmp r1, #0
bne _0809FFA2
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
ldrb r0, [r4, #0x19]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r1, _0809FFC4 @ =gUnk_08124868
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0x1e]
adds r1, r4, #0
adds r1, #0x68
movs r0, #0x78
strh r0, [r1]
_0809FFA2:
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _080A0068
movs r0, #0xff
bl sub_0807CC3C
cmp r0, #0
beq _080A00AA
ldrb r2, [r4, #0xd]
cmp r2, #1
beq _080A0006
cmp r2, #1
bgt _0809FFC8
cmp r2, #0
beq _0809FFCE
b _080A005A
.align 2, 0
_0809FFC4: .4byte gUnk_08124868
_0809FFC8:
cmp r2, #2
beq _080A0038
b _080A005A
_0809FFCE:
adds r1, r4, #0
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A005A
movs r0, #0x20
strh r0, [r1]
movs r1, #1
strb r1, [r4, #0xe]
movs r0, #0
strb r0, [r4, #0xf]
strb r1, [r4, #0xd]
strb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_080AE068
movs r1, #0xc6
lsls r1, r1, #1
adds r0, r4, #0
bl sub_080ADF80
movs r0, #0xf6
bl PlaySFX
b _080A005A
_080A0006:
adds r1, r4, #0
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A005A
movs r0, #0x2d
strh r0, [r1]
strb r2, [r4, #0xe]
movs r0, #2
strb r0, [r4, #0xd]
strb r0, [r4, #0xa]
adds r0, r4, #0
bl sub_080AE068
ldr r1, _080A0034 @ =0x0000018D
adds r0, r4, #0
bl sub_080ADF80
b _080A005A
.align 2, 0
_080A0034: .4byte 0x0000018D
_080A0038:
adds r1, r4, #0
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A005A
movs r0, #3
strb r0, [r4, #0xd]
ldr r1, _080A0064 @ =gUnk_02000080
ldrb r0, [r1, #6]
adds r0, #1
strb r0, [r1, #6]
movs r0, #0x73
bl PlaySFX
_080A005A:
adds r0, r4, #0
bl sub_080A00B0
b _080A00AA
.align 2, 0
_080A0064: .4byte gUnk_02000080
_080A0068:
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080A00A4
cmp r0, #2
bne _080A00A4
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _080A00A4
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _080A00AC @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r5, #0x32
ldrsh r0, [r4, r5]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
movs r0, #0x39
movs r2, #1
bl sub_0807B314
_080A00A4:
adds r0, r4, #0
bl sub_080A00B0
_080A00AA:
pop {r4, r5, pc}
.align 2, 0
_080A00AC: .4byte gRoomControls
thumb_func_start sub_080A00B0
sub_080A00B0: @ 0x080A00B0
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A00DA
movs r0, #8
strb r0, [r2, #0xe]
ldr r1, _080A00DC @ =gUnk_08124868
ldrb r0, [r2, #0xa]
adds r0, r0, r1
ldrb r1, [r2, #0xf]
ldrb r0, [r0]
adds r0, r1, r0
strb r0, [r2, #0x1e]
adds r1, #1
movs r0, #3
ands r1, r0
strb r1, [r2, #0xf]
_080A00DA:
pop {pc}
.align 2, 0
_080A00DC: .4byte gUnk_08124868
thumb_func_start sub_080A00E0
sub_080A00E0: @ 0x080A00E0
push {lr}
ldr r2, _080A00F4 @ =gUnk_0812486C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A00F4: .4byte gUnk_0812486C
thumb_func_start sub_080A00F8
sub_080A00F8: @ 0x080A00F8
push {lr}
ldrb r1, [r0, #0xc]
adds r1, #1
movs r3, #0
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x38
movs r1, #1
strb r1, [r2]
ldrb r1, [r0, #0x19]
movs r2, #0xc0
orrs r1, r2
strb r1, [r0, #0x19]
movs r1, #0x29
adds r1, r1, r0
mov ip, r1
ldrb r1, [r1]
movs r2, #7
orrs r1, r2
mov r2, ip
strb r1, [r2]
strb r3, [r0, #0xd]
movs r1, #0
bl sub_08004260
pop {pc}
thumb_func_start sub_080A012C
sub_080A012C: @ 0x080A012C
push {r4, lr}
adds r4, r0, #0
movs r0, #0
bl sub_0807CC3C
cmp r0, #0
beq _080A0154
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A0154
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
_080A0154:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0158
sub_080A0158: @ 0x080A0158
push {r4, lr}
adds r4, r0, #0
movs r0, #1
bl sub_0807CC3C
cmp r0, #0
beq _080A018A
adds r0, r4, #0
bl sub_080A0190
adds r0, r4, #0
movs r1, #0x1e
bl sub_0805E4E0
ldr r1, _080A018C @ =gLinkEntity
adds r0, r4, #0
movs r2, #0x10
movs r3, #0x10
bl sub_080041A0
cmp r0, #0
beq _080A018A
movs r0, #0x37
bl sub_0805B390
_080A018A:
pop {r4, pc}
.align 2, 0
_080A018C: .4byte gLinkEntity
thumb_func_start sub_080A0190
sub_080A0190: @ 0x080A0190
push {r4, lr}
movs r4, #0
movs r1, #1
strb r1, [r0, #0xd]
ldr r1, _080A01B8 @ =gLinkEntity
bl CopyPosition
ldr r2, _080A01BC @ =gLinkState
movs r0, #3
strb r0, [r2, #0xc]
adds r0, r2, #0
adds r0, #0x38
strb r4, [r0]
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #8
orrs r0, r1
str r0, [r2, #0x30]
pop {r4, pc}
.align 2, 0
_080A01B8: .4byte gLinkEntity
_080A01BC: .4byte gLinkState
thumb_func_start sub_080A01C0
sub_080A01C0: @ 0x080A01C0
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A01DC @ =gUnk_08124898
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08080CB4
pop {r4, pc}
.align 2, 0
_080A01DC: .4byte gUnk_08124898
thumb_func_start sub_080A01E0
sub_080A01E0: @ 0x080A01E0
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r3, #1
strb r3, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x19]
ldr r0, _080A027C @ =gUnk_080FD1A0
str r0, [r4, #0x48]
ldr r0, _080A0280 @ =0x0000FF40
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x6a
movs r0, #0x40
strb r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0x43
bgt _080A0246
cmp r0, #0x42
bge _080A0246
cmp r0, #0x40
beq _080A0246
cmp r0, #0x41
bne _080A0246
ldr r2, _080A0284 @ =gLCDControls
ldrh r1, [r2]
ldr r0, _080A0288 @ =0x0000FDFF
ands r0, r1
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x38
strb r3, [r0]
_080A0246:
ldr r0, _080A028C @ =gUnk_0800A0B4
bl sub_0807DB2C
ldr r1, _080A0284 @ =gLCDControls
adds r2, r1, #0
adds r2, #0x66
movs r0, #0xc8
lsls r0, r0, #3
strh r0, [r2]
adds r1, #0x68
movs r0, #0x80
lsls r0, r0, #5
strh r0, [r1]
bl sub_0805BC4C
ldrb r2, [r4, #0xa]
subs r2, #0x40
adds r0, r4, #0
movs r1, #0xad
movs r3, #0
bl CreateObjectWithParent
cmp r0, #0
beq _080A027A
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_080A027A:
pop {r4, pc}
.align 2, 0
_080A027C: .4byte gUnk_080FD1A0
_080A0280: .4byte 0x0000FF40
_080A0284: .4byte gLCDControls
_080A0288: .4byte 0x0000FDFF
_080A028C: .4byte gUnk_0800A0B4
thumb_func_start sub_080A0290
sub_080A0290: @ 0x080A0290
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _080A02BC @ =gUnk_02033280
ldr r0, [r5]
movs r1, #4
ands r0, r1
cmp r0, #0
beq _080A02CA
adds r0, r4, #0
bl sub_080A0424
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
bge _080A02C0
adds r0, r2, #1
strh r0, [r4, #0x36]
b _080A02CA
.align 2, 0
_080A02BC: .4byte gUnk_02033280
_080A02C0:
movs r1, #2
strb r1, [r4, #0xc]
ldr r0, [r5]
orrs r0, r1
str r0, [r5]
_080A02CA:
pop {r4, r5, pc}
thumb_func_start sub_080A02CC
sub_080A02CC: @ 0x080A02CC
push {r4, lr}
adds r4, r0, #0
bl sub_080A0424
adds r0, r4, #0
bl sub_080A0444
adds r0, r4, #0
bl sub_08017850
cmp r0, #0
beq _080A0342
ldr r0, [r4, #0x54]
bl sub_0805E7BC
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
movs r2, #0
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x2d
strb r0, [r4, #0xe]
ldr r0, _080A0344 @ =gLCDControls
adds r3, r0, #0
adds r3, #0x66
movs r1, #0xc8
lsls r1, r1, #3
strh r1, [r3]
adds r0, #0x68
strh r2, [r0]
ldrb r0, [r4, #0xa]
movs r1, #0
movs r2, #1
bl sub_080A7C18
adds r0, r4, #0
movs r1, #1
bl sub_0808C650
movs r0, #6
movs r1, #2
bl DoFade
movs r0, #0xf8
bl PlaySFX
movs r0, #0xa4
lsls r0, r0, #1
bl PlaySFX
movs r0, #5
bl PlaySFX
ldr r0, _080A0348 @ =0x80110000
bl PlaySFX
_080A0342:
pop {r4, pc}
.align 2, 0
_080A0344: .4byte gLCDControls
_080A0348: .4byte 0x80110000
thumb_func_start sub_080A034C
sub_080A034C: @ 0x080A034C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080A0378
adds r0, r4, #0
bl sub_080A0424
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A038C
ldr r0, _080A0374 @ =gLinkEntity
movs r1, #0
bl sub_0805E3A0
b _080A038C
.align 2, 0
_080A0374: .4byte gLinkEntity
_080A0378:
movs r0, #0
movs r1, #0x3c
bl sub_0805E4E0
bl sub_0808C67C
cmp r0, #0
beq _080A038C
movs r0, #4
strb r0, [r4, #0xc]
_080A038C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0390
sub_080A0390: @ 0x080A0390
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #0x3c
bl sub_0805E4E0
ldr r0, _080A03B4 @ =gUnk_03000FD0
ldrb r0, [r0]
cmp r0, #0
bne _080A03B2
movs r0, #5
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x68
movs r0, #0xd2
lsls r0, r0, #1
strh r0, [r1]
_080A03B2:
pop {r4, pc}
.align 2, 0
_080A03B4: .4byte gUnk_03000FD0
thumb_func_start sub_080A03B8
sub_080A03B8: @ 0x080A03B8
push {r4, lr}
adds r4, r0, #0
movs r0, #0
movs r1, #0xa
bl sub_0805E4E0
adds r1, r4, #0
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A03E4
movs r0, #6
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
bl sub_0805429C
adds r1, r4, #0
bl TextboxNoOverlap
_080A03E4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A03E8
sub_080A03E8: @ 0x080A03E8
push {lr}
movs r0, #0
movs r1, #0xa
bl sub_0805E4E0
ldr r0, _080A041C @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _080A041A
movs r0, #0x5a
bl sub_0805E510
ldr r0, _080A0420 @ =gLinkState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
bl sub_0807DF50
movs r0, #0
bl sub_0807CD10
bl sub_0805E780
_080A041A:
pop {pc}
.align 2, 0
_080A041C: .4byte gTextBox
_080A0420: .4byte gLinkState
thumb_func_start sub_080A0424
sub_080A0424: @ 0x080A0424
push {lr}
adds r1, r0, #0
adds r1, #0x6a
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0442
movs r0, #0x40
strb r0, [r1]
movs r0, #0xbc
lsls r0, r0, #1
bl PlaySFX
_080A0442:
pop {pc}
thumb_func_start sub_080A0444
sub_080A0444: @ 0x080A0444
ldr r3, _080A0460 @ =gUnk_081248B4
ldrb r1, [r0, #0xf]
adds r2, r1, #1
strb r2, [r0, #0xf]
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
movs r2, #7
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
strh r1, [r0, #0x36]
bx lr
.align 2, 0
_080A0460: .4byte gUnk_081248B4
thumb_func_start sub_080A0464
sub_080A0464: @ 0x080A0464
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r0, #6
movs r1, #0xac
movs r2, #6
bl sub_0805EB00
cmp r0, #0
beq _080A048A
movs r1, #0x2e
ldrsh r2, [r0, r1]
movs r1, #0x32
ldrsh r3, [r0, r1]
adds r3, #0x18
adds r0, r4, #0
adds r1, r5, #0
bl sub_0807DEDC
_080A048A:
pop {r4, r5, pc}
thumb_func_start sub_080A048C
sub_080A048C: @ 0x080A048C
push {lr}
ldr r2, _080A04A0 @ =gUnk_081248BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A04A0: .4byte gUnk_081248BC
thumb_func_start sub_080A04A4
sub_080A04A4: @ 0x080A04A4
push {r4, lr}
movs r3, #0
movs r1, #1
strb r1, [r0, #0xc]
movs r4, #4
movs r1, #4
strb r1, [r0, #0x1e]
strb r3, [r0, #0xe]
ldrb r1, [r0, #0x19]
movs r2, #0xc0
orrs r1, r2
strb r1, [r0, #0x19]
movs r1, #0x29
adds r1, r1, r0
mov ip, r1
ldrb r1, [r1]
movs r2, #7
orrs r1, r2
mov r2, ip
strb r1, [r2]
str r3, [r0, #0x34]
ldrb r2, [r0, #0x19]
movs r1, #0xd
rsbs r1, r1, #0
ands r1, r2
orrs r1, r4
strb r1, [r0, #0x19]
bl sub_080A04E8
pop {r4, pc}
thumb_func_start sub_080A04E0
sub_080A04E0: @ 0x080A04E0
push {lr}
bl sub_080A04E8
pop {pc}
thumb_func_start sub_080A04E8
sub_080A04E8: @ 0x080A04E8
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, [r5, #0x50]
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
bge _080A04F8
rsbs r0, r0, #0
_080A04F8:
movs r1, #0x80
lsls r1, r1, #1
adds r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r4, #0
movs r3, #0
bl sub_0805EC9C
movs r1, #0xe0
lsls r1, r1, #1
subs r1, r1, r4
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #1
adds r1, r4, #0
bl __divsi3
adds r4, r0, #0
ldr r0, [r5, #0x50]
ldrb r0, [r0, #0xa]
cmp r0, #0x41
bne _080A0538
lsls r3, r4, #1
cmp r3, #0xc
bls _080A052E
movs r3, #0xc
_080A052E:
movs r0, #0x10
subs r0, r0, r4
lsls r4, r0, #8
orrs r4, r3
b _080A0540
_080A0538:
movs r0, #0x10
subs r0, r0, r4
lsls r0, r0, #8
orrs r4, r0
_080A0540:
ldr r0, _080A054C @ =0x0000FFFF
ands r4, r0
ldr r0, _080A0550 @ =gLCDControls
adds r0, #0x68
strh r4, [r0]
pop {r4, r5, pc}
.align 2, 0
_080A054C: .4byte 0x0000FFFF
_080A0550: .4byte gLCDControls
thumb_func_start sub_080A0554
sub_080A0554: @ 0x080A0554
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #0xc]
cmp r0, #0
bne _080A0588
movs r2, #1
strb r2, [r3, #0xc]
ldrb r0, [r3, #0xa]
strb r0, [r3, #0x1e]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x38
strb r2, [r0]
adds r0, r3, #0
bl UpdateSpriteOrderAndFlip
_080A0588:
pop {pc}
.align 2, 0
thumb_func_start sub_080A058C
sub_080A058C: @ 0x080A058C
push {lr}
ldr r2, _080A05A0 @ =gUnk_081248C4
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A05A0: .4byte gUnk_081248C4
thumb_func_start sub_080A05A4
sub_080A05A4: @ 0x080A05A4
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xa]
cmp r1, #2
beq _080A05D2
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #9
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_080A0640
adds r0, r4, #0
movs r1, #1
bl sub_08004260
b _080A05F0
_080A05D2:
movs r0, #0
strb r1, [r4, #0xc]
ldrh r1, [r4, #0x32]
adds r1, #1
strh r1, [r4, #0x32]
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
adds r0, r4, #0
movs r1, #3
bl sub_08004260
_080A05F0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A05F4
sub_080A05F4: @ 0x080A05F4
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
cmp r0, #0
bne _080A060C
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #2
bl sub_08004260
b _080A0622
_080A060C:
ldr r0, [r0, #4]
cmp r0, #0
bne _080A0616
bl sub_0805E780
_080A0616:
adds r0, r4, #0
bl sub_080A0640
adds r0, r4, #0
bl sub_08004274
_080A0622:
pop {r4, pc}
thumb_func_start sub_080A0624
sub_080A0624: @ 0x080A0624
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A063C
bl sub_0805E780
_080A063C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0640
sub_080A0640: @ 0x080A0640
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080A065E
ldr r0, [r4, #0x50]
ldr r0, [r0, #0x64]
ldr r0, [r0, #0x10]
movs r3, #0x80
lsls r3, r3, #0xc
adds r1, r4, #0
movs r2, #0
bl PositionRelative
b _080A0666
_080A065E:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
_080A0666:
movs r0, #0
strh r0, [r4, #0x36]
pop {r4, pc}
thumb_func_start sub_080A066C
sub_080A066C: @ 0x080A066C
push {lr}
ldr r2, _080A0680 @ =gUnk_0812493C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A0680: .4byte gUnk_0812493C
thumb_func_start sub_080A0684
sub_080A0684: @ 0x080A0684
push {r4, r5, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x84
ldrh r1, [r2]
ldr r0, _080A070C @ =0x0000FFFF
cmp r1, r0
beq _080A06A2
adds r0, r1, #0
bl sub_0807CBE4
cmp r0, #0
beq _080A06A2
bl sub_0805E780
_080A06A2:
movs r0, #1
strb r0, [r4, #0xc]
movs r2, #0
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r2, [r4, #0x1e]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
ldr r0, _080A0710 @ =gUnk_080FD180
str r0, [r4, #0x48]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x70
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _080A0714 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r5, #0x32
ldrsh r0, [r4, r5]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
pop {r4, r5, pc}
.align 2, 0
_080A070C: .4byte 0x0000FFFF
_080A0710: .4byte gUnk_080FD180
_080A0714: .4byte gRoomControls
thumb_func_start sub_080A0718
sub_080A0718: @ 0x080A0718
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08083734
cmp r0, #0
beq _080A074A
movs r2, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xc
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x10
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
strb r2, [r4, #0x15]
ldrh r0, [r4, #0x32]
adds r0, #0x24
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_080A080C
_080A074A:
pop {r4, pc}
thumb_func_start sub_080A074C
sub_080A074C: @ 0x080A074C
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _080A07B6
movs r0, #3
strb r0, [r4, #0xc]
strh r1, [r4, #0x36]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
strh r0, [r4, #0x32]
adds r0, r4, #0
movs r1, #0x11
movs r2, #0x40
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080A0794
ldrh r0, [r1, #0x2e]
adds r0, #0xc
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
subs r0, #0xc
strh r0, [r1, #0x32]
_080A0794:
adds r0, r4, #0
movs r1, #0x11
movs r2, #0x40
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080A07B0
ldrh r0, [r1, #0x2e]
subs r0, #0xc
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
subs r0, #0xc
strh r0, [r1, #0x32]
_080A07B0:
ldr r0, _080A07B8 @ =0x0000010B
bl sub_08004488
_080A07B6:
pop {r4, pc}
.align 2, 0
_080A07B8: .4byte 0x0000010B
thumb_func_start sub_080A07BC
sub_080A07BC: @ 0x080A07BC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _080A07EA
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xc
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0x15]
ldrh r0, [r4, #0x32]
adds r0, #2
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_080A0870
ldr r0, _080A07EC @ =0x0000010B
bl PlaySFX
_080A07EA:
pop {r4, pc}
.align 2, 0
_080A07EC: .4byte 0x0000010B
thumb_func_start sub_080A07F0
sub_080A07F0: @ 0x080A07F0
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0808
bl sub_0805E780
_080A0808:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A080C
sub_080A080C: @ 0x080A080C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x74
ldrh r0, [r6]
subs r0, #1
adds r5, r4, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080001DA
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
ldrh r0, [r6]
ldrb r1, [r5]
bl sub_080001DA
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
ldrh r0, [r6]
adds r0, #1
ldrb r1, [r5]
bl sub_080001DA
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
ldr r4, _080A086C @ =0x00004022
ldrh r1, [r6]
subs r1, #1
ldrb r2, [r5]
adds r0, r4, #0
bl sub_0800015E
ldrh r1, [r6]
ldrb r2, [r5]
adds r0, r4, #0
bl sub_0800015E
ldrh r1, [r6]
adds r1, #1
ldrb r2, [r5]
adds r0, r4, #0
bl sub_0800015E
pop {r4, r5, r6, pc}
.align 2, 0
_080A086C: .4byte 0x00004022
thumb_func_start sub_080A0870
sub_080A0870: @ 0x080A0870
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r0, #0x76
ldrh r0, [r0]
adds r5, r6, #0
adds r5, #0x74
ldrh r1, [r5]
subs r1, #1
adds r4, r6, #0
adds r4, #0x38
ldrb r2, [r4]
bl sub_0800015E
adds r0, r6, #0
adds r0, #0x78
ldrh r0, [r0]
ldrh r1, [r5]
ldrb r2, [r4]
bl sub_0800015E
adds r0, r6, #0
adds r0, #0x7a
ldrh r0, [r0]
ldrh r1, [r5]
adds r1, #1
ldrb r2, [r4]
bl sub_0800015E
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080A08AC
sub_080A08AC: @ 0x080A08AC
push {lr}
ldr r2, _080A08C0 @ =gUnk_08124950
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A08C0: .4byte gUnk_08124950
thumb_func_start sub_080A08C4
sub_080A08C4: @ 0x080A08C4
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
bne _080A08E2
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0
bl sub_080A0960
b _080A08F6
_080A08E2:
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
adds r0, r4, #0
movs r1, #1
bl sub_080A0960
_080A08F6:
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0910
sub_080A0910: @ 0x080A0910
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _080A0932
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_080A0960
ldr r0, _080A0934 @ =0x0000010B
bl PlaySFX
_080A0932:
pop {r4, pc}
.align 2, 0
_080A0934: .4byte 0x0000010B
thumb_func_start sub_080A0938
sub_080A0938: @ 0x080A0938
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A095A
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_080A095A:
pop {r4, pc}
thumb_func_start nullsub_127
nullsub_127: @ 0x080A095C
bx lr
.align 2, 0
thumb_func_start sub_080A0960
sub_080A0960: @ 0x080A0960
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r5, _080A0998 @ =gUnk_08124960
cmp r1, #1
bne _080A096C
ldr r5, _080A099C @ =gUnk_0812497A
_080A096C:
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _080A09A0 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r6, #0x32
ldrsh r0, [r4, r6]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
movs r2, #1
bl sub_0801AF18
pop {r4, r5, r6, pc}
.align 2, 0
_080A0998: .4byte gUnk_08124960
_080A099C: .4byte gUnk_0812497A
_080A09A0: .4byte gRoomControls
thumb_func_start sub_080A09A4
sub_080A09A4: @ 0x080A09A4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A09D4
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x10
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xa]
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x38
ldrb r0, [r0]
ldr r1, _080A0A2C @ =gUnk_02027EB4
cmp r0, #2
bne _080A09CA
ldr r1, _080A0A30 @ =gUnk_0200D654
_080A09CA:
str r1, [r4, #0x54]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
_080A09D4:
ldr r0, [r4, #0x50]
ldrh r0, [r0, #0x24]
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0806F69C
ldr r0, [r4, #0x54]
movs r2, #0x2e
ldrsh r1, [r4, r2]
movs r3, #0x32
ldrsh r2, [r4, r3]
movs r3, #9
bl sub_080AE4CC
cmp r0, #0
beq _080A09F8
bl sub_0805E780
_080A09F8:
movs r1, #0x24
ldrsh r0, [r4, r1]
cmp r0, #0x40
bgt _080A0A22
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0A22
bl sub_0805E780
_080A0A22:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_080A0A2C: .4byte gUnk_02027EB4
_080A0A30: .4byte gUnk_0200D654
thumb_func_start sub_080A0A34
sub_080A0A34: @ 0x080A0A34
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080A0A44
cmp r0, #1
beq _080A0A5C
b _080A0A5E
_080A0A44:
ldrb r1, [r4, #0x10]
movs r0, #2
ands r0, r1
ldr r1, _080A0A54 @ =gUnk_08124A18
cmp r0, #0
beq _080A0A5E
ldr r1, _080A0A58 @ =gUnk_08124A10
b _080A0A5E
.align 2, 0
_080A0A54: .4byte gUnk_08124A18
_080A0A58: .4byte gUnk_08124A10
_080A0A5C:
ldr r1, _080A0AB8 @ =gUnk_08124A20
_080A0A5E:
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A0AB0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r3, #0x40
orrs r0, r3
strb r0, [r4, #0x19]
movs r0, #0x29
adds r0, r0, r4
mov ip, r0
ldrb r2, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
mov r2, ip
strb r0, [r2]
ldrb r0, [r4, #0x1b]
ands r1, r0
orrs r1, r3
strb r1, [r4, #0x1b]
ldr r1, _080A0ABC @ =gUnk_080C9CBC
ldr r0, _080A0AC0 @ =gUnk_02022740
ldrb r0, [r0, #3]
lsls r0, r0, #3
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_0801D2B4
_080A0AB0:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_080A0AB8: .4byte gUnk_08124A20
_080A0ABC: .4byte gUnk_080C9CBC
_080A0AC0: .4byte gUnk_02022740
thumb_func_start sub_080A0AC4
sub_080A0AC4: @ 0x080A0AC4
push {lr}
ldrb r1, [r0, #0xa]
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_080A0AD0
sub_080A0AD0: @ 0x080A0AD0
push {lr}
movs r1, #0x80
bl sub_08003FC4
pop {pc}
.align 2, 0
thumb_func_start sub_080A0ADC
sub_080A0ADC: @ 0x080A0ADC
push {r4, lr}
adds r4, r0, #0
bl sub_0807DD64
adds r0, r4, #0
movs r1, #0
bl sub_0807DDAC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0AF0
sub_080A0AF0: @ 0x080A0AF0
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #5
bne _080A0B1C
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A0B1C
bl sub_0805E780
_080A0B1C:
adds r0, r4, #0
movs r1, #0x80
bl sub_08003FC4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0B28
sub_080A0B28: @ 0x080A0B28
push {r4, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r2, [r4, r0]
movs r0, #0x32
ldrsh r3, [r4, r0]
adds r0, r4, #0
bl sub_0807DEDC
ldrh r0, [r4, #0x32]
subs r0, #0xb0
strh r0, [r4, #0x32]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
pop {r4, pc}
thumb_func_start sub_080A0B4C
sub_080A0B4C: @ 0x080A0B4C
push {lr}
movs r1, #0x78
strh r1, [r0, #0x2e]
movs r1, #0x50
strh r1, [r0, #0x32]
movs r1, #0
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_080A0B60
sub_080A0B60: @ 0x080A0B60
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080A0B7C
movs r0, #2
strb r0, [r2, #0xc]
movs r0, #0x9b
lsls r0, r0, #1
bl PlaySFX
_080A0B7C:
pop {pc}
.align 2, 0
thumb_func_start sub_080A0B80
sub_080A0B80: @ 0x080A0B80
ldr r1, [r0, #0x30]
ldr r2, _080A0B8C @ =0xFFFD8000
adds r1, r1, r2
str r1, [r0, #0x30]
bx lr
.align 2, 0
_080A0B8C: .4byte 0xFFFD8000
thumb_func_start sub_080A0B90
sub_080A0B90: @ 0x080A0B90
push {lr}
ldr r2, _080A0BA4 @ =gUnk_08124B20
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A0BA4: .4byte gUnk_08124B20
thumb_func_start sub_080A0BA8
sub_080A0BA8: @ 0x080A0BA8
push {r4, r5, lr}
adds r5, r0, #0
ldrb r2, [r5, #0xc]
cmp r2, #0
beq _080A0BB8
cmp r2, #1
beq _080A0C08
b _080A0CE0
_080A0BB8:
movs r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
subs r0, #5
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r5, #0x18]
movs r0, #9
strb r0, [r5, #0x1e]
movs r0, #8
strb r0, [r5, #0xe]
strb r2, [r5, #0xf]
ldrb r1, [r5, #0x19]
movs r2, #0x3f
adds r0, r2, #0
ands r0, r1
movs r3, #0x40
orrs r0, r3
strb r0, [r5, #0x19]
adds r4, r5, #0
adds r4, #0x29
ldrb r1, [r4]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r4]
ldrb r0, [r5, #0x1b]
ands r2, r0
orrs r2, r3
strb r2, [r5, #0x1b]
adds r0, r5, #0
movs r1, #0xbf
movs r2, #0x48
movs r3, #0x1e
bl sub_0806FB00
b _080A0CE0
_080A0C08:
ldrb r0, [r5, #0xf]
cmp r0, #6
bhi _080A0C46
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A0C46
strb r2, [r5, #0xe]
ldrb r2, [r5, #0xf]
movs r0, #0xb4
movs r1, #1
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _080A0C40
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
movs r0, #0x68
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
_080A0C40:
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
_080A0C46:
adds r0, r5, #0
bl sub_0806FB38
cmp r0, #0
bne _080A0C58
ldr r0, _080A0CE4 @ =gUnk_02000080
ldrb r0, [r0, #5]
cmp r0, #1
bls _080A0CE0
_080A0C58:
movs r0, #0xbf
strh r0, [r5, #0x2e]
movs r0, #0x48
strh r0, [r5, #0x32]
movs r0, #0xa
strb r0, [r5, #0x1e]
movs r0, #2
strb r0, [r5, #0xc]
ldrb r0, [r5, #0xf]
cmp r0, #6
bhi _080A0CA0
_080A0C6E:
ldrb r2, [r5, #0xf]
movs r0, #0xb4
movs r1, #1
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _080A0C92
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
movs r0, #0x68
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAD8
_080A0C92:
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #6
bls _080A0C6E
_080A0CA0:
movs r0, #0xb4
movs r1, #2
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _080A0CC0
movs r0, #0xc4
strh r0, [r4, #0x2e]
movs r0, #0x2c
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAB0
_080A0CC0:
movs r0, #0xb4
movs r1, #3
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _080A0CE0
movs r0, #0xb4
strh r0, [r4, #0x2e]
movs r0, #0x19
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAB0
_080A0CE0:
pop {r4, r5, pc}
.align 2, 0
_080A0CE4: .4byte gUnk_02000080
thumb_func_start sub_080A0CE8
sub_080A0CE8: @ 0x080A0CE8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _080A0CF8
cmp r0, #1
beq _080A0D28
b _080A0D66
_080A0CF8:
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xb]
adds r0, #2
strb r0, [r4, #0x1e]
ldr r1, _080A0D24 @ =gUnk_08124B10
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r4, #0
movs r2, #0x68
movs r3, #0x14
bl sub_0806FB00
b _080A0D66
.align 2, 0
_080A0D24: .4byte gUnk_08124B10
_080A0D28:
adds r0, r4, #0
bl sub_0806FB38
cmp r0, #0
bne _080A0D3A
ldr r0, _080A0D68 @ =gUnk_02000080
ldrb r0, [r0, #5]
cmp r0, #1
bls _080A0D66
_080A0D3A:
ldr r1, _080A0D6C @ =gUnk_08124B10
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r4, #0x2e]
movs r0, #0x68
strh r0, [r4, #0x32]
ldrb r1, [r4, #0xb]
movs r0, #7
subs r1, r0, r1
adds r3, r4, #0
adds r3, #0x29
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
movs r0, #2
strb r0, [r4, #0xc]
_080A0D66:
pop {r4, pc}
.align 2, 0
_080A0D68: .4byte gUnk_02000080
_080A0D6C: .4byte gUnk_08124B10
thumb_func_start sub_080A0D70
sub_080A0D70: @ 0x080A0D70
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r6, [r5, #0xc]
cmp r6, #0
bne _080A0DC4
movs r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
subs r0, #5
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r5, #0x18]
ldrb r2, [r5, #0x19]
movs r4, #0x3f
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r3, #0x40
orrs r0, r3
strb r0, [r5, #0x19]
movs r0, #0x29
adds r0, r0, r5
mov ip, r0
ldrb r2, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
mov r2, ip
strb r0, [r2]
ldrb r0, [r5, #0x1b]
ands r1, r0
orrs r1, r3
strb r1, [r5, #0x1b]
movs r0, #0xb
strb r0, [r5, #0x1e]
bl Random
ands r0, r4
adds r0, #0x40
strb r0, [r5, #0xe]
strb r6, [r5, #0xf]
_080A0DC4:
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _080A0E02
movs r0, #4
strb r0, [r5, #0xe]
ldr r2, _080A0E04 @ =gUnk_08124B30
ldrb r0, [r5, #0xf]
adds r1, r0, #1
strb r1, [r5, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
adds r0, r0, r2
ldrb r0, [r0]
adds r0, #2
strb r0, [r5, #0x1e]
ldrb r0, [r5, #0xf]
adds r0, r0, r2
ldrb r0, [r0]
cmp r0, #0xff
bne _080A0E02
bl Random
movs r1, #0x3f
ands r0, r1
adds r0, #0x40
strb r0, [r5, #0xe]
strb r4, [r5, #0xf]
_080A0E02:
pop {r4, r5, r6, pc}
.align 2, 0
_080A0E04: .4byte gUnk_08124B30
thumb_func_start sub_080A0E08
sub_080A0E08: @ 0x080A0E08
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xc]
cmp r0, #0
bne _080A0E26
movs r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
subs r0, #5
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r2, #0x18]
movs r0, #0xf
strb r0, [r2, #0x1e]
_080A0E26:
pop {pc}
thumb_func_start sub_080A0E28
sub_080A0E28: @ 0x080A0E28
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _080A0E36
movs r0, #1
strb r0, [r1, #0xc]
_080A0E36:
ldr r0, _080A0E48 @ =gRoomControls
str r1, [r0, #0x30]
ldr r0, _080A0E4C @ =gLinkEntity
ldr r3, _080A0E50 @ =0xFFD80000
movs r2, #0
bl PositionRelative
pop {pc}
.align 2, 0
_080A0E48: .4byte gRoomControls
_080A0E4C: .4byte gLinkEntity
_080A0E50: .4byte 0xFFD80000
thumb_func_start sub_080A0E54
sub_080A0E54: @ 0x080A0E54
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xd]
cmp r0, #3
bls _080A0E64
bl sub_0805E780
_080A0E64:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A0E76
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl sub_08004260
_080A0E76:
ldr r0, [r4, #0x50]
ldrb r3, [r4, #0xa]
adds r1, r4, #0
movs r2, #0
bl sub_0806FA90
adds r2, r4, #0
adds r2, #0x63
ldrb r0, [r2]
ldrb r1, [r4, #0xa]
subs r0, r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A0E98
sub_080A0E98: @ 0x080A0E98
push {lr}
ldr r2, _080A0EAC @ =gUnk_08124C08
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A0EAC: .4byte gUnk_08124C08
thumb_func_start sub_080A0EB0
sub_080A0EB0: @ 0x080A0EB0
push {r4, r5, lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0x2e
ldrsh r2, [r0, r1]
ldr r3, _080A0EE8 @ =gRoomControls
ldrh r1, [r3, #6]
subs r2, r2, r1
asrs r2, r2, #4
movs r4, #0x3f
ands r2, r4
movs r5, #0x32
ldrsh r1, [r0, r5]
ldrh r3, [r3, #8]
subs r1, r1, r3
asrs r1, r1, #4
ands r1, r4
lsls r1, r1, #6
orrs r2, r1
adds r0, #0x80
strh r2, [r0]
ldr r2, _080A0EEC @ =0x0000407D
ldrh r1, [r0]
adds r0, r2, #0
movs r2, #1
bl sub_0800015E
pop {r4, r5, pc}
.align 2, 0
_080A0EE8: .4byte gRoomControls
_080A0EEC: .4byte 0x0000407D
thumb_func_start sub_080A0EF0
sub_080A0EF0: @ 0x080A0EF0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r1, #1
bl sub_080002B0
ldr r1, _080A0F1C @ =0x0000407D
cmp r0, r1
beq _080A0F18
bl sub_08078B48
ldr r1, _080A0F20 @ =gLinkEntity
ldr r0, [r4, #0x2c]
str r0, [r1, #0x2c]
ldrh r0, [r4, #0x32]
adds r0, #4
strh r0, [r1, #0x32]
bl sub_0805E780
_080A0F18:
pop {r4, pc}
.align 2, 0
_080A0F1C: .4byte 0x0000407D
_080A0F20: .4byte gLinkEntity
thumb_func_start sub_080A0F24
sub_080A0F24: @ 0x080A0F24
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A0F40 @ =gUnk_08124C10
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080A11E0
pop {r4, pc}
.align 2, 0
_080A0F40: .4byte gUnk_08124C10
thumb_func_start sub_080A0F44
sub_080A0F44: @ 0x080A0F44
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r6, #1
strb r6, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x59
movs r0, #8
strb r0, [r1]
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldr r0, _080A0FA8 @ =gUnk_080FD460
str r0, [r5, #0x48]
adds r0, r5, #0
movs r1, #6
bl sub_0805E3A0
adds r0, r5, #0
bl sub_080A11C0
cmp r0, #0
beq _080A0FA4
ldr r1, _080A0FAC @ =gLinkEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl sub_08078A90
bl sub_08078B48
bl sub_0805E544
movs r0, #0x89
lsls r0, r0, #1
bl PlaySFX
movs r0, #3
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
adds r0, r5, #0
adds r0, #0x68
strb r6, [r0]
_080A0FA4:
pop {r4, r5, r6, pc}
.align 2, 0
_080A0FA8: .4byte gUnk_080FD460
_080A0FAC: .4byte gLinkEntity
thumb_func_start sub_080A0FB0
sub_080A0FB0: @ 0x080A0FB0
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080A11C0
adds r1, r0, #0
cmp r1, #0
beq _080A0FF8
adds r0, r5, #0
adds r0, #0x68
ldrb r0, [r0]
cmp r0, #0
bne _080A0FFE
ldr r1, _080A0FF4 @ =gLinkEntity
ldrh r0, [r5, #0x2e]
movs r4, #0
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
strh r0, [r1, #0x32]
movs r0, #3
bl sub_08078A90
bl sub_08078B48
bl sub_0805E544
movs r0, #0x89
lsls r0, r0, #1
bl PlaySFX
movs r0, #2
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
b _080A0FFE
.align 2, 0
_080A0FF4: .4byte gLinkEntity
_080A0FF8:
adds r0, r5, #0
adds r0, #0x68
strb r1, [r0]
_080A0FFE:
pop {r4, r5, pc}
thumb_func_start sub_080A1000
sub_080A1000: @ 0x080A1000
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _080A102A
cmp r1, #1
bgt _080A1014
cmp r1, #0
beq _080A101E
b _080A1088
_080A1014:
cmp r1, #2
beq _080A1038
cmp r1, #3
beq _080A1064
b _080A1088
_080A101E:
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A10D4
_080A102A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10D4
b _080A1070
_080A1038:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1056
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
adds r0, #0xf5
bl PlaySFX
b _080A10D4
_080A1056:
ldr r0, _080A1060 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
b _080A10C2
.align 2, 0
_080A1060: .4byte gUnk_030010A0
_080A1064:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A107C
_080A1070:
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _080A10D4
_080A107C:
ldr r0, _080A1084 @ =gUnk_030010A0
ldr r0, [r0]
b _080A10C2
.align 2, 0
_080A1084: .4byte gUnk_030010A0
_080A1088:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A10BC
ldr r0, _080A10B4 @ =gRoomControls
ldrb r0, [r0, #4]
cmp r0, #3
bne _080A10A2
movs r0, #0xf9
bl sub_0807CCB4
_080A10A2:
ldrb r1, [r4, #0xb]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _080A10B8 @ =gUnk_0813ADEC
adds r0, r0, r1
bl sub_08080840
b _080A10D4
.align 2, 0
_080A10B4: .4byte gRoomControls
_080A10B8: .4byte gUnk_0813ADEC
_080A10BC:
ldr r0, _080A10D8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #1
_080A10C2:
ands r0, r1
cmp r0, #0
bne _080A10D4
ldr r0, _080A10DC @ =gLinkEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
_080A10D4:
pop {r4, pc}
.align 2, 0
_080A10D8: .4byte gUnk_030010A0
_080A10DC: .4byte gLinkEntity
thumb_func_start sub_080A10E0
sub_080A10E0: @ 0x080A10E0
push {r4, lr}
adds r2, r0, #0
ldrb r1, [r2, #0xd]
cmp r1, #1
beq _080A110E
cmp r1, #1
bgt _080A10F4
cmp r1, #0
beq _080A10FE
b _080A1180
_080A10F4:
cmp r1, #2
beq _080A1124
cmp r1, #3
beq _080A1148
b _080A1180
_080A10FE:
movs r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
adds r0, #0xf6
bl PlaySFX
b _080A11BA
_080A110E:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _080A1130
ldr r0, _080A1120 @ =gUnk_030010A0
ldr r0, [r0]
b _080A1162
.align 2, 0
_080A1120: .4byte gUnk_030010A0
_080A1124:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A113C
_080A1130:
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
movs r0, #0x1e
strb r0, [r2, #0xe]
b _080A11BA
_080A113C:
ldr r0, _080A1144 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
b _080A1162
.align 2, 0
_080A1144: .4byte gUnk_030010A0
_080A1148:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A115C
ldrb r0, [r2, #0xd]
adds r0, #1
strb r0, [r2, #0xd]
b _080A11BA
_080A115C:
ldr r0, _080A1178 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
_080A1162:
ands r0, r1
cmp r0, #0
bne _080A11BA
ldr r0, _080A117C @ =gLinkEntity
ldrb r1, [r0, #0x14]
adds r1, #2
movs r2, #6
ands r1, r2
strb r1, [r0, #0x14]
b _080A11BA
.align 2, 0
_080A1178: .4byte gUnk_030010A0
_080A117C: .4byte gLinkEntity
_080A1180:
ldr r4, _080A11A0 @ =gLinkEntity
ldrb r3, [r4, #0x14]
cmp r3, #4
beq _080A11A8
ldr r0, _080A11A4 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _080A11BA
adds r0, r3, #2
movs r1, #6
ands r0, r1
strb r0, [r4, #0x14]
b _080A11BA
.align 2, 0
_080A11A0: .4byte gLinkEntity
_080A11A4: .4byte gUnk_030010A0
_080A11A8:
movs r0, #0
movs r1, #1
strb r1, [r2, #0xc]
strb r0, [r2, #0xd]
ldr r0, _080A11BC @ =gLinkState
adds r0, #0x8b
strb r1, [r0]
bl UnfreezeTime
_080A11BA:
pop {r4, pc}
.align 2, 0
_080A11BC: .4byte gLinkState
thumb_func_start sub_080A11C0
sub_080A11C0: @ 0x080A11C0
push {lr}
adds r1, r0, #0
ldr r0, _080A11D8 @ =gLinkEntity
movs r2, #0x36
ldrsh r0, [r0, r2]
cmp r0, #0
bne _080A11DC
adds r0, r1, #0
bl sub_08017850
b _080A11DE
.align 2, 0
_080A11D8: .4byte gLinkEntity
_080A11DC:
movs r0, #0
_080A11DE:
pop {pc}
thumb_func_start sub_080A11E0
sub_080A11E0: @ 0x080A11E0
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x59
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A1202
movs r0, #8
strb r0, [r1]
ldrb r0, [r2, #0x1e]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r2, #0x1e]
_080A1202:
pop {pc}
thumb_func_start sub_080A1204
sub_080A1204: @ 0x080A1204
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r5, r0, #0
cmp r5, #0
bne _080A1260
adds r0, #1
strb r0, [r4, #0xc]
bl sub_080A1514
lsls r0, r0, #2
ldr r1, _080A126C @ =gUnk_08124C20
adds r0, r0, r1
ldrh r2, [r0]
lsls r1, r2, #4
subs r1, r1, r2
lsls r1, r1, #2
adds r2, r4, #0
adds r2, #0x68
strh r1, [r2]
adds r1, r4, #0
adds r1, #0x6a
strh r5, [r1]
ldrh r1, [r0, #2]
adds r0, r4, #0
adds r0, #0x6c
strh r1, [r0]
adds r1, r4, #0
adds r1, #0x6e
movs r0, #1
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x70
movs r2, #0
movs r1, #9
_080A124A:
strb r2, [r0]
adds r0, #1
subs r1, #1
cmp r1, #0
bge _080A124A
adds r0, r4, #0
bl sub_0807DD64
adds r0, r4, #0
bl sub_0806EC20
_080A1260:
adds r0, r4, #0
movs r1, #0
bl sub_0807DD94
pop {r4, r5, pc}
.align 2, 0
_080A126C: .4byte gUnk_08124C20
thumb_func_start sub_080A1270
sub_080A1270: @ 0x080A1270
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
mov sb, r0
movs r6, #0
ldr r0, [r0, #0x64]
str r0, [sp, #4]
mov r4, sb
adds r4, #0x70
ldr r0, _080A12F8 @ =gRoomControls
movs r2, #0xd8
lsls r2, r2, #2
adds r1, r2, #0
ldrh r3, [r0, #6]
adds r1, r1, r3
movs r7, #0xd4
lsls r7, r7, #2
adds r2, r7, #0
ldrh r0, [r0, #8]
adds r2, r2, r0
lsls r1, r1, #0x10
asrs r1, r1, #0x10
mov r8, r1
lsls r2, r2, #0x10
asrs r3, r2, #0x10
movs r0, #9
mov sl, r0
movs r1, #1
rsbs r1, r1, #0
adds r5, r1, #0
_080A12B2:
ldr r7, [sp, #4]
ldr r2, [r7]
movs r0, #0
ldrsb r0, [r4, r0]
cmp r0, #0
bne _080A1300
ldr r0, [r2, #4]
cmp r0, #0
beq _080A132C
cmp r2, #0
beq _080A132C
movs r1, #0x2e
ldrsh r0, [r2, r1]
cmp r8, r0
bgt _080A132E
movs r7, #0x32
ldrsh r0, [r2, r7]
cmp r3, r0
bgt _080A132E
ldrb r0, [r2, #0xa]
adds r0, #1
strb r0, [r4]
movs r0, #1
strb r0, [r2, #0xb]
adds r6, #1
ldr r1, _080A12FC @ =gUnk_08124EC8
ldrb r0, [r2, #0xa]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
str r3, [sp]
bl PlaySFX
ldr r3, [sp]
b _080A132E
.align 2, 0
_080A12F8: .4byte gRoomControls
_080A12FC: .4byte gUnk_08124EC8
_080A1300:
cmp r0, #0
ble _080A132E
adds r6, #1
ldr r0, [r2, #4]
cmp r0, #0
beq _080A132C
cmp r2, #0
beq _080A132C
mov r1, r8
adds r1, #4
movs r7, #0x2e
ldrsh r0, [r2, r7]
cmp r1, r0
ble _080A131E
strh r1, [r2, #0x2e]
_080A131E:
adds r1, r3, #4
movs r7, #0x32
ldrsh r0, [r2, r7]
cmp r1, r0
ble _080A132E
strh r1, [r2, #0x32]
b _080A132E
_080A132C:
strb r5, [r4]
_080A132E:
movs r0, #1
rsbs r0, r0, #0
add sl, r0
adds r4, #1
ldr r1, [sp, #4]
adds r1, #4
str r1, [sp, #4]
mov r2, sl
cmp r2, #0
bge _080A12B2
mov r0, sb
adds r0, #0x6a
strh r6, [r0]
ldr r0, _080A136C @ =gLinkState
adds r0, #0x27
movs r1, #0xff
strb r1, [r0]
mov r1, sb
adds r1, #0x68
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bgt _080A1370
movs r0, #0xe2
bl PlaySFX
bl sub_08050384
b _080A1376
.align 2, 0
_080A136C: .4byte gLinkState
_080A1370:
ldr r1, _080A1384 @ =gUnk_02033280
movs r0, #0
strb r0, [r1, #6]
_080A1376:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1384: .4byte gUnk_02033280
thumb_func_start sub_080A1388
sub_080A1388: @ 0x080A1388
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r5, #0x70
ldr r4, [r0, #0x64]
movs r6, #9
_080A1392:
ldr r1, [r4]
movs r0, #0
ldrsb r0, [r5, r0]
cmp r0, #0
blt _080A13A6
cmp r1, #0
beq _080A13A6
adds r0, r1, #0
bl sub_0805E79C
_080A13A6:
subs r6, #1
adds r5, #1
adds r4, #4
cmp r6, #0
bge _080A1392
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080A13B4
sub_080A13B4: @ 0x080A13B4
push {r4, lr}
adds r4, r1, #0
adds r1, r0, #0
adds r1, #0x6a
adds r0, #0x6c
movs r2, #0
ldrsh r1, [r1, r2]
movs r2, #0
ldrsh r0, [r0, r2]
cmp r1, r0
blt _080A13D8
ldr r0, _080A13D4 @ =0x0000300C
bl TextboxTryNoOverlap
movs r0, #1
b _080A13E0
.align 2, 0
_080A13D4: .4byte 0x0000300C
_080A13D8:
ldr r0, _080A13E4 @ =0x00003005
bl TextboxTryNoOverlap
movs r0, #0
_080A13E0:
str r0, [r4, #0x14]
pop {r4, pc}
.align 2, 0
_080A13E4: .4byte 0x00003005
thumb_func_start sub_080A13E8
sub_080A13E8: @ 0x080A13E8
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_080A1514
lsls r0, r0, #2
ldr r1, _080A1408 @ =gUnk_08124EA0
adds r4, r0, r1
movs r6, #0
ldrb r0, [r4]
cmp r0, #0x5c
beq _080A141C
cmp r0, #0x5c
bgt _080A140C
cmp r0, #0x3f
beq _080A1412
b _080A1444
.align 2, 0
_080A1408: .4byte gUnk_08124EA0
_080A140C:
cmp r0, #0x63
beq _080A1430
b _080A1444
_080A1412:
ldr r0, _080A1418 @ =gUnk_02002A40
adds r0, #0xbb
b _080A1424
.align 2, 0
_080A1418: .4byte gUnk_02002A40
_080A141C:
ldr r0, _080A142C @ =gUnk_02002A40
movs r1, #0x8b
lsls r1, r1, #1
adds r0, r0, r1
_080A1424:
ldrb r0, [r0]
cmp r0, #0
beq _080A1444
b _080A1454
.align 2, 0
_080A142C: .4byte gUnk_02002A40
_080A1430:
movs r0, #0x4f
bl GetProgressFlag
cmp r0, #0
bne _080A1442
movs r0, #0x4f
bl sub_0807CD04
b _080A1444
_080A1442:
movs r6, #1
_080A1444:
cmp r6, #0
bne _080A1454
ldrb r0, [r4]
ldrb r1, [r4, #1]
movs r2, #0
bl sub_080A7C18
b _080A145C
_080A1454:
adds r1, r5, #0
adds r1, #0x6e
movs r0, #2
strh r0, [r1]
_080A145C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080A1460
sub_080A1460: @ 0x080A1460
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080A1514
adds r1, r5, #0
adds r1, #0x70
movs r4, #0
ldr r3, _080A149C @ =gUnk_08124ECC
movs r2, #9
_080A1472:
movs r0, #0
ldrsb r0, [r1, r0]
adds r0, r0, r3
ldrb r0, [r0]
adds r4, r4, r0
adds r1, #1
subs r2, #1
cmp r2, #0
bge _080A1472
adds r0, r4, #0
bl ModRupees
ldr r0, _080A14A0 @ =0x00003007
adds r1, r5, #0
bl TextboxNoOverlap
ldr r1, _080A14A4 @ =gTextBox
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
str r0, [r1, #0x10]
pop {r4, r5, pc}
.align 2, 0
_080A149C: .4byte gUnk_08124ECC
_080A14A0: .4byte 0x00003007
_080A14A4: .4byte gTextBox
thumb_func_start sub_080A14A8
sub_080A14A8: @ 0x080A14A8
push {r4, lr}
bl sub_080A1514
adds r4, r0, #0
adds r4, #1
cmp r4, #9
ble _080A14B8
movs r4, #9
_080A14B8:
movs r0, #1
ands r0, r4
cmp r0, #0
beq _080A14C8
movs r0, #0x4b
bl sub_0807CD04
b _080A14CE
_080A14C8:
movs r0, #0x4b
bl sub_0807CD80
_080A14CE:
movs r0, #2
ands r0, r4
cmp r0, #0
beq _080A14DE
movs r0, #0x4c
bl sub_0807CD04
b _080A14E4
_080A14DE:
movs r0, #0x4c
bl sub_0807CD80
_080A14E4:
movs r0, #4
ands r0, r4
cmp r0, #0
beq _080A14F4
movs r0, #0x4d
bl sub_0807CD04
b _080A14FA
_080A14F4:
movs r0, #0x4d
bl sub_0807CD80
_080A14FA:
movs r0, #8
ands r0, r4
cmp r0, #0
beq _080A150A
movs r0, #0x4e
bl sub_0807CD04
b _080A1510
_080A150A:
movs r0, #0x4e
bl sub_0807CD80
_080A1510:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A1514
sub_080A1514: @ 0x080A1514
push {r4, lr}
movs r0, #0x4b
bl GetProgressFlag
rsbs r1, r0, #0
orrs r1, r0
lsrs r4, r1, #0x1f
movs r0, #0x4c
bl GetProgressFlag
cmp r0, #0
beq _080A1530
movs r0, #2
orrs r4, r0
_080A1530:
movs r0, #0x4d
bl GetProgressFlag
cmp r0, #0
beq _080A153E
movs r0, #4
orrs r4, r0
_080A153E:
movs r0, #0x4e
bl GetProgressFlag
cmp r0, #0
beq _080A154C
movs r0, #8
orrs r4, r0
_080A154C:
adds r0, r4, #0
pop {r4, pc}
thumb_func_start sub_080A1550
sub_080A1550: @ 0x080A1550
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov r8, r1
movs r0, #0
str r0, [r1, #0x14]
movs r0, #0xb9
movs r1, #0
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _080A15FE
movs r0, #0x28
bl sub_0801D8E0
str r0, [r4, #0x64]
cmp r0, #0
bne _080A1582
adds r0, r4, #0
bl sub_0805E79C
b _080A15FE
_080A1582:
mov r0, r8
ldr r1, [r0, #4]
adds r0, r4, #0
bl sub_0807DAD0
adds r1, r4, #0
adds r1, #0x84
str r0, [r1]
bl sub_080A1514
lsls r1, r0, #4
subs r1, r1, r0
lsls r1, r1, #2
ldr r0, _080A15B4 @ =gUnk_08124C48
adds r5, r1, r0
ldr r4, [r4, #0x64]
mov sb, r4
ldr r7, _080A15B8 @ =gRoomControls
movs r6, #9
_080A15A8:
movs r1, #0
ldrsh r0, [r5, r1]
cmp r0, #0
bgt _080A15BC
movs r4, #0
b _080A15E6
.align 2, 0
_080A15B4: .4byte gUnk_08124C48
_080A15B8: .4byte gRoomControls
_080A15BC:
movs r0, #0
ldrsh r1, [r5, r0]
subs r1, #1
movs r0, #0x41
bl CreateEnemy
adds r4, r0, #0
cmp r4, #0
beq _080A15E6
ldrh r0, [r5, #2]
ldrh r1, [r7, #6]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldrh r0, [r5, #4]
ldrh r1, [r7, #8]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
_080A15E6:
mov r0, sb
adds r0, #4
mov sb, r0
subs r0, #4
stm r0!, {r4}
subs r6, #1
adds r5, #6
cmp r6, #0
bge _080A15A8
movs r0, #1
mov r1, r8
str r0, [r1, #0x14]
_080A15FE:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_080A1608
sub_080A1608: @ 0x080A1608
push {r4, lr}
ldr r4, _080A163C @ =0x00003002
movs r0, #1
bl sub_0807CC3C
cmp r0, #0
beq _080A1618
adds r4, #4
_080A1618:
adds r0, r4, #0
bl TextboxTryNoOverlap
ldr r4, _080A1640 @ =gTextBox
movs r1, #0
movs r0, #1
strb r0, [r4, #6]
strb r1, [r4, #7]
bl sub_080A1514
lsls r0, r0, #2
ldr r1, _080A1644 @ =gUnk_08124C20
adds r0, r0, r1
ldrh r1, [r0]
str r1, [r4, #0x10]
ldrh r0, [r0, #2]
str r0, [r4, #0x14]
pop {r4, pc}
.align 2, 0
_080A163C: .4byte 0x00003002
_080A1640: .4byte gTextBox
_080A1644: .4byte gUnk_08124C20
thumb_func_start sub_080A1648
sub_080A1648: @ 0x080A1648
push {r4, lr}
ldr r4, _080A1684 @ =0x0000407F
ldr r1, _080A1688 @ =0x00000D36
adds r0, r4, #0
movs r2, #1
bl sub_0807B314
ldr r1, _080A168C @ =0x00000D37
adds r0, r4, #0
movs r2, #1
bl sub_0807B314
ldr r1, _080A1690 @ =0x00000D38
adds r0, r4, #0
movs r2, #1
bl sub_0807B314
subs r4, #1
ldr r1, _080A1694 @ =0x00000D75
adds r0, r4, #0
movs r2, #1
bl sub_0807B314
ldr r1, _080A1698 @ =0x00000E75
adds r0, r4, #0
movs r2, #1
bl sub_0807B314
pop {r4, pc}
.align 2, 0
_080A1684: .4byte 0x0000407F
_080A1688: .4byte 0x00000D36
_080A168C: .4byte 0x00000D37
_080A1690: .4byte 0x00000D38
_080A1694: .4byte 0x00000D75
_080A1698: .4byte 0x00000E75
thumb_func_start sub_080A169C
sub_080A169C: @ 0x080A169C
push {lr}
ldr r0, _080A16C8 @ =0x00000D36
movs r1, #1
bl sub_0807BA8C
ldr r0, _080A16CC @ =0x00000D37
movs r1, #1
bl sub_0807BA8C
ldr r0, _080A16D0 @ =0x00000D38
movs r1, #1
bl sub_0807BA8C
ldr r0, _080A16D4 @ =0x00000D75
movs r1, #1
bl sub_0807BA8C
ldr r0, _080A16D8 @ =0x00000E75
movs r1, #1
bl sub_0807BA8C
pop {pc}
.align 2, 0
_080A16C8: .4byte 0x00000D36
_080A16CC: .4byte 0x00000D37
_080A16D0: .4byte 0x00000D38
_080A16D4: .4byte 0x00000D75
_080A16D8: .4byte 0x00000E75
thumb_func_start sub_080A16DC
sub_080A16DC: @ 0x080A16DC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A1700 @ =gUnk_08124ED0
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080A1DCC
adds r0, r4, #0
bl sub_080A1C9C
pop {r4, pc}
.align 2, 0
_080A1700: .4byte gUnk_08124ED0
thumb_func_start sub_080A1704
sub_080A1704: @ 0x080A1704
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
mov sl, r0
movs r0, #0x7b
bl sub_0807CBE4
cmp r0, #0
beq _080A171E
bl sub_0805E780
_080A171E:
ldr r0, _080A1828 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x45
bhi _080A181C
movs r0, #0x40
bl sub_0801D8E0
adds r7, r0, #0
cmp r7, #0
beq _080A181C
movs r6, #0
movs r0, #1
mov sb, r0
mov r2, sb
mov r1, sl
strb r2, [r1, #0xc]
str r7, [r1, #0x64]
adds r1, #0x6e
movs r3, #0
mov r8, r3
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r1]
mov r0, sl
adds r0, #0x6c
strh r6, [r0]
mov r0, sl
str r0, [r7]
movs r0, #0x5c
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r7, [r1, #0x64]
str r1, [r7, #4]
movs r0, #0x5d
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
ldr r4, _080A182C @ =gRoomControls
movs r2, #0x80
lsls r2, r2, #2
adds r5, r2, #0
ldrh r3, [r4, #6]
adds r0, r5, r3
strh r0, [r1, #0x2e]
movs r2, #0xcc
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #8]
movs r0, #0x5d
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
movs r2, #0x98
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r4, #6]
adds r0, r0, r3
strh r0, [r1, #0x2e]
adds r2, #0xb0
adds r0, r2, #0
ldrh r3, [r4, #8]
adds r0, r0, r3
strh r0, [r1, #0x32]
str r7, [r1, #0x64]
str r1, [r7, #0xc]
ldr r2, _080A1830 @ =gLCDControls
ldr r0, _080A1834 @ =0x00001E07
strh r0, [r2, #0x2c]
ldrh r0, [r2]
movs r3, #0x80
lsls r3, r3, #4
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
mov r0, sl
adds r0, #0x70
strh r6, [r0]
adds r0, #2
strh r6, [r0]
adds r0, #2
mov r1, r8
strb r1, [r0]
adds r0, #6
strb r1, [r0]
subs r0, #4
movs r1, #0xc0
strh r1, [r0]
adds r0, #2
strh r1, [r0]
ldr r0, _080A1838 @ =gUnk_030010A0
adds r0, #0x39
mov r2, sb
strb r2, [r0]
ldr r2, _080A183C @ =gLinkState
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #0xa
orrs r0, r1
str r0, [r2, #0x30]
ldrh r3, [r4, #6]
adds r5, r5, r3
strh r5, [r2, #0x16]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r1, #0
ldrh r4, [r4, #8]
adds r0, r0, r4
strh r0, [r2, #0x18]
ldr r0, _080A1840 @ =0x80100000
bl PlaySFX
ldr r0, _080A1844 @ =gUnk_02033A90
movs r2, #0x86
lsls r2, r2, #4
adds r1, r0, r2
ldr r3, _080A1848 @ =0x00000864
adds r0, r0, r3
ldr r0, [r0]
str r0, [r1]
_080A181C:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1828: .4byte gUnk_03003DBC
_080A182C: .4byte gRoomControls
_080A1830: .4byte gLCDControls
_080A1834: .4byte 0x00001E07
_080A1838: .4byte gUnk_030010A0
_080A183C: .4byte gLinkState
_080A1840: .4byte 0x80100000
_080A1844: .4byte gUnk_02033A90
_080A1848: .4byte 0x00000864
thumb_func_start sub_080A184C
sub_080A184C: @ 0x080A184C
push {lr}
adds r3, r0, #0
adds r1, r3, #0
adds r1, #0x6e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A1874
movs r0, #2
strb r0, [r3, #0xc]
subs r1, #2
movs r2, #8
movs r0, #8
strh r0, [r1]
ldr r0, [r3, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
strb r2, [r0]
_080A1874:
ldr r2, _080A1894 @ =gLinkState
ldr r1, _080A1898 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A1894: .4byte gLinkState
_080A1898: .4byte gRoomControls
thumb_func_start sub_080A189C
sub_080A189C: @ 0x080A189C
push {lr}
adds r3, r0, #0
ldr r0, [r3, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A18E6
movs r0, #3
strb r0, [r3, #0xc]
movs r0, #0x23
strb r0, [r3, #0xe]
adds r1, r3, #0
adds r1, #0x6c
movs r2, #1
movs r0, #1
strh r0, [r1]
adds r1, #0xc
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r1]
adds r0, r3, #0
adds r0, #0x7b
strb r2, [r0]
ldr r0, [r3, #0x64]
ldr r0, [r0, #8]
adds r0, #0x45
movs r1, #0xc
strb r1, [r0]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x96
movs r1, #1
bl sub_08080964
_080A18E6:
ldr r2, _080A1904 @ =gLinkState
ldr r1, _080A1908 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A1904: .4byte gLinkState
_080A1908: .4byte gRoomControls
thumb_func_start sub_080A190C
sub_080A190C: @ 0x080A190C
push {r4, lr}
adds r4, r0, #0
bl sub_080A1FF0
ldr r3, [r4, #0x64]
ldr r2, [r3, #8]
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A197C
adds r0, r4, #0
adds r1, r2, #0
bl sub_080A20B8
cmp r0, #0
beq _080A1956
movs r0, #4
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x6c
movs r0, #0x10
strh r0, [r1]
adds r1, #0xc
movs r0, #0xc0
strh r0, [r1]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
adds r0, r4, #0
bl sub_080A1D70
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
movs r1, #0x18
strb r1, [r0]
_080A1956:
ldr r2, _080A1974 @ =gLinkState
ldr r1, _080A1978 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
b _080A1988
.align 2, 0
_080A1974: .4byte gLinkState
_080A1978: .4byte gRoomControls
_080A197C:
ldr r1, _080A198C @ =gLinkState
ldrh r0, [r2, #0x2e]
strh r0, [r1, #0x16]
ldr r0, [r3, #8]
ldrh r0, [r0, #0x32]
strh r0, [r1, #0x18]
_080A1988:
pop {r4, pc}
.align 2, 0
_080A198C: .4byte gLinkState
thumb_func_start sub_080A1990
sub_080A1990: @ 0x080A1990
push {lr}
adds r2, r0, #0
ldr r1, [r2, #0x64]
ldr r0, [r1, #4]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A19D6
ldr r0, [r1, #8]
adds r0, #0x45
movs r1, #0xc
strb r1, [r0]
movs r0, #5
strb r0, [r2, #0xc]
movs r0, #0x23
strb r0, [r2, #0xe]
adds r1, r2, #0
adds r1, #0x6c
movs r0, #2
strh r0, [r1]
adds r1, #0xc
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r1]
adds r1, #3
movs r0, #1
strb r0, [r1]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x96
movs r1, #1
bl sub_08080964
_080A19D6:
ldr r2, _080A19F4 @ =gLinkState
ldr r1, _080A19F8 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A19F4: .4byte gLinkState
_080A19F8: .4byte gRoomControls
thumb_func_start sub_080A19FC
sub_080A19FC: @ 0x080A19FC
push {r4, lr}
adds r4, r0, #0
bl sub_080A1FF0
ldr r3, [r4, #0x64]
ldr r2, [r3, #0xc]
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A1A6C
adds r0, r4, #0
adds r1, r2, #0
bl sub_080A20B8
cmp r0, #0
beq _080A1A46
movs r0, #6
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x6c
movs r0, #0x20
strh r0, [r1]
adds r1, #0xc
movs r0, #0xc0
strh r0, [r1]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
adds r0, r4, #0
bl sub_080A1D70
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
movs r1, #0x18
strb r1, [r0]
_080A1A46:
ldr r2, _080A1A64 @ =gLinkState
ldr r1, _080A1A68 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
b _080A1A78
.align 2, 0
_080A1A64: .4byte gLinkState
_080A1A68: .4byte gRoomControls
_080A1A6C:
ldr r1, _080A1A7C @ =gLinkState
ldrh r0, [r2, #0x2e]
strh r0, [r1, #0x16]
ldr r0, [r3, #0xc]
ldrh r0, [r0, #0x32]
strh r0, [r1, #0x18]
_080A1A78:
pop {r4, pc}
.align 2, 0
_080A1A7C: .4byte gLinkState
thumb_func_start sub_080A1A80
sub_080A1A80: @ 0x080A1A80
push {lr}
adds r2, r0, #0
ldr r1, [r2, #0x64]
ldr r0, [r1, #4]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A1AC0
ldr r0, [r1, #0xc]
adds r0, #0x45
movs r1, #0xc
strb r1, [r0]
movs r0, #7
strb r0, [r2, #0xc]
movs r0, #0x23
strb r0, [r2, #0xe]
adds r1, r2, #0
adds r1, #0x6c
adds r0, #0xe1
strh r0, [r1]
adds r1, #0xc
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r1]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x96
movs r1, #1
bl sub_08080964
_080A1AC0:
ldr r2, _080A1AE0 @ =gLinkState
ldr r1, _080A1AE4 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {pc}
.align 2, 0
_080A1AE0: .4byte gLinkState
_080A1AE4: .4byte gRoomControls
thumb_func_start sub_080A1AE8
sub_080A1AE8: @ 0x080A1AE8
push {r4, lr}
adds r4, r0, #0
bl sub_080A1FF0
ldr r0, [r4, #0x64]
ldr r1, [r0, #0xc]
adds r0, r1, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080A1B24
adds r0, r4, #0
bl sub_080A20B8
cmp r0, #0
beq _080A1B24
movs r0, #8
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x6c
movs r0, #0x40
strh r0, [r1]
adds r1, #0xc
movs r0, #0xc0
strh r0, [r1]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
movs r1, #0xc
strb r1, [r0]
_080A1B24:
ldr r2, _080A1B44 @ =gLinkState
ldr r1, _080A1B48 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {r4, pc}
.align 2, 0
_080A1B44: .4byte gLinkState
_080A1B48: .4byte gRoomControls
thumb_func_start sub_080A1B4C
sub_080A1B4C: @ 0x080A1B4C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x45
ldrb r7, [r0]
cmp r7, #0
bne _080A1BD0
adds r5, r4, #0
adds r5, #0x6c
ldrh r0, [r5]
cmp r0, #0
beq _080A1B80
movs r0, #0x2d
movs r1, #1
bl sub_08080964
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
adds r1, r4, #0
adds r1, #0x78
movs r0, #0xc0
lsls r0, r0, #3
strh r0, [r1]
_080A1B80:
movs r6, #0
strh r7, [r5]
ldr r0, _080A1BF0 @ =gUnk_030010A0
adds r0, #0x39
strb r6, [r0]
bl sub_08079F8C
cmp r0, #0
beq _080A1BD0
ldr r3, _080A1BF4 @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, #0
bne _080A1BD0
movs r0, #9
strb r0, [r4, #0xc]
strb r6, [r4, #0xe]
movs r0, #0xf0
strb r0, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x6e
adds r0, #0xb4
strh r0, [r1]
strb r6, [r4, #0x15]
movs r0, #0x60
strh r0, [r4, #0x24]
ldr r2, _080A1BF8 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _080A1BFC @ =0xFFFDFFFF
ands r0, r1
str r0, [r2, #0x30]
adds r0, r3, #0
adds r1, r4, #0
bl CopyPosition
ldr r0, _080A1C00 @ =gRoomControls
str r4, [r0, #0x30]
movs r0, #2
bl sub_08078A90
_080A1BD0:
ldr r2, _080A1BF8 @ =gLinkState
ldr r1, _080A1C00 @ =gRoomControls
movs r3, #0x80
lsls r3, r3, #2
adds r0, r3, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r2, #0x16]
movs r3, #0x84
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r2, #0x18]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1BF0: .4byte gUnk_030010A0
_080A1BF4: .4byte gLinkEntity
_080A1BF8: .4byte gLinkState
_080A1BFC: .4byte 0xFFFDFFFF
_080A1C00: .4byte gRoomControls
thumb_func_start sub_080A1C04
sub_080A1C04: @ 0x080A1C04
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x6e
ldrh r0, [r1]
cmp r0, #0
bne _080A1C52
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_080A1E54
ldrb r0, [r4, #0xf]
subs r1, r0, #1
strb r1, [r4, #0xf]
lsls r0, r1, #0x18
cmp r0, #0
bne _080A1C40
movs r0, #0x7b
bl sub_0807CCC8
ldr r0, _080A1C3C @ =gUnk_0813ABD0
movs r1, #8
bl sub_0808091C
b _080A1C9A
.align 2, 0
_080A1C3C: .4byte gUnk_0813ABD0
_080A1C40:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bne _080A1C9A
movs r0, #7
movs r1, #4
bl DoFade
b _080A1C9A
_080A1C52:
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xb3
bhi _080A1C66
adds r0, r4, #0
bl sub_080A1E54
b _080A1C9A
_080A1C66:
ldrh r1, [r1]
cmp r1, #0xb4
beq _080A1C76
movs r0, #0x96
lsls r0, r0, #1
cmp r1, r0
beq _080A1C8A
b _080A1C9A
_080A1C76:
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0xb4
lsls r0, r0, #2
movs r1, #2
bl sub_08080964
b _080A1C9A
_080A1C8A:
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x4b
movs r1, #1
bl sub_08080964
_080A1C9A:
pop {r4, pc}
thumb_func_start sub_080A1C9C
sub_080A1C9C: @ 0x080A1C9C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x7a
ldrb r0, [r5]
cmp r0, #0
beq _080A1D04
adds r0, r4, #0
adds r0, #0x74
adds r7, r4, #0
adds r7, #0x75
ldrb r1, [r0]
adds r6, r0, #0
ldrb r0, [r7]
cmp r1, r0
beq _080A1CE4
subs r5, #2
movs r0, #0
strh r0, [r5]
adds r0, r4, #0
movs r1, #0xc
bl sub_080A1D8C
adds r0, r4, #0
adds r0, #0x76
ldrh r1, [r0]
adds r2, r0, #0
cmp r1, #0
bne _080A1D14
ldrb r0, [r7]
strb r0, [r6]
adds r0, r4, #0
adds r0, #0x7c
ldrh r0, [r0]
strh r0, [r5]
b _080A1D14
_080A1CE4:
adds r0, r4, #0
movs r1, #0xc
bl sub_080A1D8C
adds r0, r4, #0
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r0]
adds r2, r1, #0
ldrh r1, [r2]
cmp r0, r1
bne _080A1D14
movs r0, #0
strb r0, [r5]
b _080A1D14
_080A1D04:
adds r0, r4, #0
movs r1, #8
bl sub_080A1D8C
adds r6, r4, #0
adds r6, #0x74
adds r2, r4, #0
adds r2, #0x76
_080A1D14:
adds r3, r4, #0
adds r3, #0x70
ldr r5, _080A1D68 @ =gUnk_080C9160
ldrb r0, [r6]
lsls r0, r0, #1
adds r0, r0, r5
movs r7, #0
ldrsh r1, [r0, r7]
ldrh r0, [r2]
muls r0, r1, r0
cmp r0, #0
bge _080A1D2E
adds r0, #0xff
_080A1D2E:
asrs r0, r0, #8
ldrh r1, [r3]
adds r0, r0, r1
strh r0, [r3]
adds r4, #0x72
ldrb r0, [r6]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r5
movs r5, #0
ldrsh r1, [r0, r5]
ldrh r0, [r2]
muls r0, r1, r0
cmp r0, #0
bge _080A1D4E
adds r0, #0xff
_080A1D4E:
asrs r0, r0, #8
ldrh r1, [r4]
subs r1, r1, r0
strh r1, [r4]
ldr r2, _080A1D6C @ =gLCDControls
ldrh r0, [r3]
lsrs r0, r0, #8
strh r0, [r2, #0x2e]
lsls r1, r1, #0x10
lsrs r1, r1, #0x18
strh r1, [r2, #0x30]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A1D68: .4byte gUnk_080C9160
_080A1D6C: .4byte gLCDControls
thumb_func_start sub_080A1D70
sub_080A1D70: @ 0x080A1D70
adds r2, r0, #0
adds r0, #0x75
strb r1, [r0]
adds r1, r2, #0
adds r1, #0x7a
movs r0, #1
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x78
ldrh r1, [r0]
adds r0, #4
strh r1, [r0]
bx lr
.align 2, 0
thumb_func_start sub_080A1D8C
sub_080A1D8C: @ 0x080A1D8C
push {r4, lr}
adds r4, r1, #0
adds r3, r0, #0
adds r3, #0x78
adds r2, r0, #0
adds r2, #0x76
ldrh r1, [r3]
ldrh r0, [r2]
cmp r1, r0
beq _080A1DC8
cmp r1, r0
bls _080A1DB6
adds r3, r0, #0
subs r0, r1, r3
cmp r4, r0
bge _080A1DB2
adds r0, r3, r4
strh r0, [r2]
b _080A1DC8
_080A1DB2:
strh r1, [r2]
b _080A1DC8
_080A1DB6:
ldrh r1, [r2]
ldrh r3, [r3]
subs r0, r1, r3
cmp r4, r0
bge _080A1DC6
subs r0, r1, r4
strh r0, [r2]
b _080A1DC8
_080A1DC6:
strh r3, [r2]
_080A1DC8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A1DCC
sub_080A1DCC: @ 0x080A1DCC
push {r4, lr}
adds r4, r0, #0
ldr r1, [r4, #0x64]
ldr r3, [r1, #8]
cmp r3, #0
bne _080A1DDE
ldr r3, [r1, #0xc]
cmp r3, #0
beq _080A1E24
_080A1DDE:
adds r0, r3, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #0
beq _080A1E24
ldrb r0, [r3, #0x19]
lsrs r0, r0, #6
cmp r0, #2
bne _080A1E24
ldr r3, [r1, #0x10]
ldrb r2, [r3, #0x10]
movs r1, #0x7f
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #0x10]
ldr r0, [r4, #0x64]
ldr r3, [r0, #0x14]
ldrb r2, [r3, #0x10]
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r2, [r3, #0x10]
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r2, [r3, #0x10]
adds r0, r1, #0
ands r0, r2
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r0, [r3, #0x10]
ands r1, r0
b _080A1E50
_080A1E24:
ldr r0, [r4, #0x64]
ldr r2, [r0, #0x10]
ldrb r0, [r2, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
ldr r0, [r4, #0x64]
ldr r3, [r0, #0x14]
ldrb r0, [r3, #0x10]
orrs r0, r1
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r0, [r3, #0x10]
orrs r0, r1
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r0, [r3, #0x10]
orrs r0, r1
strb r0, [r3, #0x10]
ldr r3, [r3, #0x54]
ldrb r0, [r3, #0x10]
orrs r1, r0
_080A1E50:
strb r1, [r3, #0x10]
pop {r4, pc}
thumb_func_start sub_080A1E54
sub_080A1E54: @ 0x080A1E54
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
adds r0, #1
strb r0, [r2, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _080A1ECA
adds r0, r2, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _080A1ECA
bl Random
ldr r3, _080A1ECC @ =gRoomControls
movs r1, #0xf0
adds r2, r0, #0
ands r2, r1
movs r5, #0x80
lsls r5, r5, #2
adds r1, r5, #0
adds r2, r2, r1
ldrh r1, [r3, #6]
adds r1, r1, r2
subs r1, #0x78
strh r1, [r4, #0x2e]
lsrs r0, r0, #8
movs r1, #0x70
ands r0, r1
movs r1, #0x84
lsls r1, r1, #2
adds r0, r0, r1
ldrh r3, [r3, #8]
adds r0, r0, r3
subs r0, #0x38
strh r0, [r4, #0x32]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_080A1ECA:
pop {r4, r5, pc}
.align 2, 0
_080A1ECC: .4byte gRoomControls
thumb_func_start sub_080A1ED0
sub_080A1ED0: @ 0x080A1ED0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
mov sb, r1
adds r5, r2, #0
movs r1, #0
str r1, [sp]
ldr r4, _080A1F60 @ =gUnk_08124EF8
lsls r1, r5, #2
adds r1, r1, r4
ldrh r2, [r1]
ldr r3, _080A1F64 @ =gRoomControls
ldrh r1, [r3, #6]
adds r2, r2, r1
mov sl, r2
lsls r1, r5, #1
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r4
ldrh r2, [r1]
ldrh r1, [r3, #8]
adds r2, r2, r1
mov r8, r2
ldr r1, _080A1F68 @ =gUnk_08124FF0
lsls r0, r0, #2
adds r0, r0, r1
ldr r4, [r0]
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, #1
beq _080A1FB0
lsls r7, r5, #3
movs r0, #0x10
adds r6, r7, #0
eors r6, r0
_080A1F1C:
movs r0, #0x60
mov r1, sb
bl CreateEnemy
adds r2, r0, #0
cmp r2, #0
beq _080A1FA6
mov r0, sp
ldrb r0, [r0]
strb r0, [r2, #0xb]
ldr r1, [sp]
adds r1, #1
str r1, [sp]
mov r0, sl
strh r0, [r2, #0x2e]
mov r1, r8
strh r1, [r2, #0x32]
strb r7, [r2, #0x15]
adds r0, r2, #0
adds r0, #0x7a
strb r6, [r0]
ldrh r1, [r4, #4]
subs r0, #2
strh r1, [r0]
cmp r5, #1
beq _080A1F7A
cmp r5, #1
blo _080A1F6C
cmp r5, #2
beq _080A1F80
cmp r5, #3
beq _080A1F94
b _080A1FA6
.align 2, 0
_080A1F60: .4byte gUnk_08124EF8
_080A1F64: .4byte gRoomControls
_080A1F68: .4byte gUnk_08124FF0
_080A1F6C:
ldrh r1, [r4]
adds r0, r2, #0
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r4, #2]
rsbs r0, r0, #0
b _080A1F8C
_080A1F7A:
ldrh r0, [r4, #2]
adds r0, #0xf0
b _080A1F98
_080A1F80:
ldrh r1, [r4]
adds r0, r2, #0
adds r0, #0x74
strh r1, [r0]
ldrh r0, [r4, #2]
adds r0, #0xa0
_080A1F8C:
adds r1, r2, #0
adds r1, #0x76
strh r0, [r1]
b _080A1FA6
_080A1F94:
ldrh r0, [r4, #2]
rsbs r0, r0, #0
_080A1F98:
adds r1, r2, #0
adds r1, #0x74
strh r0, [r1]
ldrh r1, [r4]
adds r0, r2, #0
adds r0, #0x76
strh r1, [r0]
_080A1FA6:
adds r4, #6
movs r1, #0
ldrsh r0, [r4, r1]
cmp r0, #1
bne _080A1F1C
_080A1FB0:
mov r0, sb
cmp r0, #0
bne _080A1FE4
movs r0, #0xf
movs r1, #2
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
beq _080A1FE4
mov r1, sl
strh r1, [r2, #0x2e]
mov r0, r8
strh r0, [r2, #0x32]
ldrb r0, [r2, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r2, #0x1b]
ldrb r0, [r2, #0x19]
orrs r0, r1
strb r0, [r2, #0x19]
adds r1, r2, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
_080A1FE4:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_080A1FF0
sub_080A1FF0: @ 0x080A1FF0
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _080A2066
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x20
bhi _080A2066
movs r0, #0xf
ands r1, r0
cmp r1, #0
bne _080A2066
adds r0, r5, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _080A2066
bl Random
ldr r3, _080A209C @ =gRoomControls
movs r1, #0x78
ands r0, r1
movs r1, #0x80
lsls r1, r1, #2
adds r2, r1, #0
adds r2, r0, r2
ldrh r1, [r3, #6]
adds r1, r1, r2
subs r1, #0x3c
strh r1, [r4, #0x2e]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r0, r1
ldrh r3, [r3, #8]
adds r0, r0, r3
subs r0, #0x3c
strh r0, [r4, #0x32]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_080A2066:
adds r4, r5, #0
adds r4, #0x7b
ldrb r0, [r4]
cmp r0, #0
beq _080A20B4
ldr r0, _080A20A0 @ =gLinkEntity
ldr r2, _080A209C @ =gRoomControls
ldrh r1, [r2, #6]
movs r3, #0x80
lsls r3, r3, #2
adds r1, r1, r3
ldrh r2, [r2, #8]
adds r3, #0x10
adds r2, r2, r3
movs r3, #0x80
lsls r3, r3, #1
bl sub_0806FCB8
cmp r0, #0
beq _080A20B2
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _080A20A4
movs r0, #0x78
strb r0, [r5, #0xe]
b _080A20B4
.align 2, 0
_080A209C: .4byte gRoomControls
_080A20A0: .4byte gLinkEntity
_080A20A4:
cmp r0, #0x23
bne _080A20B4
movs r0, #0x1e
movs r1, #0
bl sub_08080964
b _080A20B4
_080A20B2:
strb r0, [r4]
_080A20B4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080A20B8
sub_080A20B8: @ 0x080A20B8
push {r4, lr}
adds r4, r1, #0
cmp r4, #0
bne _080A20C4
movs r0, #1
b _080A20FA
_080A20C4:
bl sub_08079F8C
cmp r0, #0
beq _080A20F8
ldr r0, _080A20F0 @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
bne _080A20F8
movs r1, #0
adds r0, r4, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #0
bne _080A20EC
ldr r0, _080A20F4 @ =gLinkState
ldrb r1, [r0, #0x14]
rsbs r0, r1, #0
orrs r0, r1
lsrs r1, r0, #0x1f
_080A20EC:
adds r0, r1, #0
b _080A20FA
.align 2, 0
_080A20F0: .4byte gLinkEntity
_080A20F4: .4byte gLinkState
_080A20F8:
movs r0, #0
_080A20FA:
pop {r4, pc}
thumb_func_start sub_080A20FC
sub_080A20FC: @ 0x080A20FC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
adds r1, r0, #0
cmp r1, #0
bne _080A2114
adds r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0x1e]
adds r0, r4, #0
bl sub_0807DD64
_080A2114:
adds r0, r4, #0
movs r1, #0
bl sub_0807DDAC
adds r0, r4, #0
bl sub_0807DDE4
pop {r4, pc}
thumb_func_start sub_080A2124
sub_080A2124: @ 0x080A2124
push {lr}
ldr r3, _080A2134 @ =gUnk_08125010
movs r1, #1
movs r2, #0xe
bl sub_08078850
pop {pc}
.align 2, 0
_080A2134: .4byte gUnk_08125010
thumb_func_start sub_080A2138
sub_080A2138: @ 0x080A2138
push {r4, lr}
adds r4, r0, #0
movs r0, #0x72
bl PlaySFX
ldr r2, _080A2160 @ =gUnk_02002A40
ldrb r0, [r4, #0xb]
adds r0, #0x18
movs r1, #1
lsls r1, r0
ldr r0, [r2, #0x40]
orrs r0, r1
str r0, [r2, #0x40]
adds r0, r4, #0
movs r1, #0x46
movs r2, #0
bl CreateFX
pop {r4, pc}
.align 2, 0
_080A2160: .4byte gUnk_02002A40
thumb_func_start sub_080A2164
sub_080A2164: @ 0x080A2164
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080A21DC
adds r1, r4, #0
adds r1, #0x86
ldrh r0, [r1]
cmp r0, #0
beq _080A2180
bl sub_0807CBE4
cmp r0, #0
beq _080A224E
_080A2180:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
subs r0, #0xe
ands r0, r1
movs r1, #8
orrs r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
movs r0, #3
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x10]
movs r0, #0x20
orrs r0, r1
strb r0, [r4, #0x10]
ldr r0, _080A21D4 @ =gRoomControls
ldrb r0, [r0, #5]
strb r0, [r4, #0xf]
movs r0, #2
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x68
ldr r0, _080A21D8 @ =0x0000FFFE
strh r0, [r1]
adds r1, #2
movs r0, #0x80
strh r0, [r1]
adds r0, r4, #0
movs r1, #0x80
movs r2, #0x80
movs r3, #0
bl sub_0805EC9C
b _080A221E
.align 2, 0
_080A21D4: .4byte gRoomControls
_080A21D8: .4byte 0x0000FFFE
_080A21DC:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A221E
movs r0, #2
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x6a
adds r2, r4, #0
adds r2, #0x68
ldrh r0, [r2]
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x77
bhi _080A2208
movs r0, #1
strh r0, [r2]
_080A2208:
ldrh r0, [r1]
cmp r0, #0x88
bls _080A2212
ldr r0, _080A2250 @ =0x0000FFFF
strh r0, [r2]
_080A2212:
ldrh r2, [r1]
adds r0, r4, #0
adds r1, r2, #0
movs r3, #0
bl sub_0805EC9C
_080A221E:
ldr r2, _080A2254 @ =gLCDControls
ldrh r1, [r2]
movs r3, #0x80
lsls r3, r3, #8
adds r0, r3, #0
orrs r0, r1
strh r0, [r2]
adds r2, #0x62
ldrb r0, [r2]
movs r3, #0xdc
lsls r3, r3, #6
adds r1, r3, #0
orrs r0, r1
strh r0, [r2]
ldr r1, _080A2258 @ =gRoomControls
ldrb r0, [r1, #5]
ldrb r4, [r4, #0xf]
cmp r0, r4
beq _080A224E
ldrh r0, [r1]
cmp r0, #0
bne _080A224E
bl sub_0805E780
_080A224E:
pop {r4, pc}
.align 2, 0
_080A2250: .4byte 0x0000FFFF
_080A2254: .4byte gLCDControls
_080A2258: .4byte gRoomControls
thumb_func_start sub_080A225C
sub_080A225C: @ 0x080A225C
push {lr}
ldr r2, _080A2270 @ =gUnk_0812503C
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A2270: .4byte gUnk_0812503C
thumb_func_start sub_080A2274
sub_080A2274: @ 0x080A2274
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _080A22AE
adds r0, r1, #0
bl sub_080A2340
movs r0, #0xbd
movs r1, #1
movs r2, #0
bl CreateObject
movs r0, #0x80
lsls r0, r0, #0x12
ldrb r0, [r0, #7]
movs r1, #3
cmp r0, #1
bne _080A229C
movs r1, #2
_080A229C:
movs r0, #0xbd
movs r2, #0
bl CreateObject
movs r0, #0xbd
movs r1, #4
movs r2, #0
bl CreateObject
_080A22AE:
pop {pc}
thumb_func_start sub_080A22B0
sub_080A22B0: @ 0x080A22B0
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xc]
cmp r0, #0
bne _080A22C0
adds r0, r1, #0
bl sub_080A2340
_080A22C0:
pop {pc}
.align 2, 0
thumb_func_start sub_080A22C4
sub_080A22C4: @ 0x080A22C4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r5, [r4, #0xc]
cmp r5, #0
beq _080A22FC
cmp r5, #1
beq _080A231C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080A233E
movs r0, #8
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r4, #0xf]
ldrb r1, [r4, #0xd]
adds r0, r1, r0
strb r0, [r4, #0x1e]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmp r1, r0
bne _080A233E
b _080A233A
_080A22FC:
adds r0, r4, #0
bl sub_080A2340
movs r0, #8
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
ldrb r0, [r4, #0x1e]
strb r0, [r4, #0xd]
bl Random
movs r1, #3
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
b _080A233E
_080A231C:
ldrh r0, [r4, #0x24]
subs r0, #1
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
cmp r0, #0
bne _080A233E
bl Random
movs r1, #7
ands r0, r1
lsls r0, r0, #4
adds r0, #0x1e
strh r0, [r4, #0x24]
movs r0, #2
b _080A233C
_080A233A:
movs r0, #1
_080A233C:
strb r0, [r4, #0xc]
_080A233E:
pop {r4, r5, pc}
thumb_func_start sub_080A2340
sub_080A2340: @ 0x080A2340
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
ldr r2, _080A239C @ =gUnk_08125014
adds r1, r1, r2
ldrh r2, [r1]
strh r2, [r0, #0x2e]
ldrh r2, [r1, #2]
strh r2, [r0, #0x32]
ldrh r2, [r1, #4]
strb r2, [r0, #0x1e]
ldrb r1, [r1, #6]
movs r2, #0x29
adds r2, r2, r0
mov ip, r2
movs r2, #7
ands r2, r1
mov r1, ip
ldrb r3, [r1]
movs r1, #8
rsbs r1, r1, #0
ands r1, r3
orrs r1, r2
mov r2, ip
strb r1, [r2]
ldrb r3, [r0, #0x19]
movs r2, #0x3f
adds r1, r2, #0
ands r1, r3
movs r3, #0x40
orrs r1, r3
strb r1, [r0, #0x19]
ldrb r1, [r0, #0x1b]
ands r2, r1
orrs r2, r3
strb r2, [r0, #0x1b]
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
movs r2, #2
orrs r1, r2
strb r1, [r0, #0x18]
movs r1, #1
strb r1, [r0, #0xc]
bx lr
.align 2, 0
_080A239C: .4byte gUnk_08125014
thumb_func_start sub_080A23A0
sub_080A23A0: @ 0x080A23A0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x45
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
beq _080A23C0
ldr r0, _080A23D4 @ =gUnk_020342F8
subs r1, #1
bl sub_0801D5A8
cmp r0, #0
bne _080A23C0
bl sub_0805E780
_080A23C0:
ldr r0, _080A23D8 @ =gUnk_0812505C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080A23D4: .4byte gUnk_020342F8
_080A23D8: .4byte gUnk_0812505C
thumb_func_start sub_080A23DC
sub_080A23DC: @ 0x080A23DC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080A240C @ =gUnk_08125050
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
adds r2, r4, #0
adds r2, #0x68
strh r0, [r2]
adds r3, r4, #0
adds r3, #0x29
ldrb r0, [r3]
movs r1, #7
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2]
bl sub_0807CBD0
cmp r0, #0
beq _080A2410
movs r0, #2
b _080A2412
.align 2, 0
_080A240C: .4byte gUnk_08125050
_080A2410:
movs r0, #1
_080A2412:
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080A2420
sub_080A2420: @ 0x080A2420
push {r4, lr}
adds r4, r0, #0
adds r0, #0x68
ldrh r0, [r0]
bl sub_0807CBD0
cmp r0, #0
beq _080A243A
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_080A29BC
_080A243A:
pop {r4, pc}
thumb_func_start sub_080A243C
sub_080A243C: @ 0x080A243C
push {lr}
bl sub_08004274
pop {pc}
thumb_func_start nullsub_538
nullsub_538: @ 0x080A2444
bx lr
.align 2, 0
thumb_func_start sub_080A2448
sub_080A2448: @ 0x080A2448
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl sub_0807CBE4
cmp r0, #0
beq _080A245E
adds r0, r5, #0
bl sub_080A2500
_080A245E:
ldrb r0, [r5, #0xc]
adds r1, r0, #0
cmp r1, #0
bne _080A24CE
adds r0, #1
strb r0, [r5, #0xc]
ldrb r0, [r5, #0xe]
strb r0, [r5, #0xa]
str r1, [r5, #0x54]
ldr r2, _080A24B4 @ =gUnk_03003D90
ldr r4, [r2, #4]
cmp r4, r2
beq _080A24BE
_080A2478:
ldrb r0, [r4, #8]
cmp r0, #3
bne _080A24B8
ldrb r0, [r5, #0xb]
ldrb r1, [r4, #9]
cmp r0, r1
bne _080A24B8
movs r3, #0x2e
ldrsh r0, [r4, r3]
movs r3, #0x2e
ldrsh r1, [r5, r3]
subs r0, r0, r1
adds r0, #0x10
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x1f
bhi _080A24B8
movs r1, #0x32
ldrsh r0, [r4, r1]
movs r3, #0x32
ldrsh r1, [r5, r3]
subs r0, r0, r1
adds r0, #0x10
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x1f
bhi _080A24B8
str r4, [r5, #0x54]
b _080A24BE
.align 2, 0
_080A24B4: .4byte gUnk_03003D90
_080A24B8:
ldr r4, [r4, #4]
cmp r4, r2
bne _080A2478
_080A24BE:
ldr r0, [r5, #0x54]
cmp r0, #0
bne _080A24CA
adds r0, r5, #0
bl sub_080A2534
_080A24CA:
bl sub_08054564
_080A24CE:
ldr r4, [r5, #0x54]
cmp r4, #0
beq _080A24F6
movs r2, #0x80
lsls r2, r2, #0xb
movs r3, #0x80
lsls r3, r3, #9
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
ldrh r0, [r5, #0x36]
subs r0, #4
strh r0, [r5, #0x36]
ldr r0, [r4, #4]
cmp r0, #0
bne _080A24F6
adds r0, r5, #0
bl sub_080A2508
_080A24F6:
adds r0, r5, #0
bl sub_08080CB4
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080A2500
sub_080A2500: @ 0x080A2500
push {lr}
bl sub_0805E780
pop {pc}
thumb_func_start sub_080A2508
sub_080A2508: @ 0x080A2508
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
movs r1, #0
movs r3, #0
bl CreateObjectWithParent
adds r2, r0, #0
cmp r2, #0
beq _080A252C
movs r0, #5
strb r0, [r2, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x86
strh r1, [r0]
_080A252C:
adds r0, r4, #0
bl sub_080A2500
pop {r4, pc}
thumb_func_start sub_080A2534
sub_080A2534: @ 0x080A2534
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xa]
movs r1, #0
movs r3, #0
bl CreateObjectWithParent
adds r2, r0, #0
cmp r2, #0
beq _080A2558
movs r0, #4
strb r0, [r2, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x86
strh r1, [r0]
_080A2558:
adds r0, r4, #0
bl sub_080A2500
pop {r4, pc}
thumb_func_start sub_080A2560
sub_080A2560: @ 0x080A2560
push {lr}
ldr r2, _080A2574 @ =gUnk_08125084
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080A2574: .4byte gUnk_08125084
thumb_func_start sub_080A2578
sub_080A2578: @ 0x080A2578
push {lr}
movs r1, #8
strb r1, [r0, #0xc]
bl sub_080A259C
pop {pc}
thumb_func_start sub_080A2584
sub_080A2584: @ 0x080A2584
push {lr}
bl UnfreezeTime
ldr r1, _080A2598 @ =gUnk_02034490
movs r0, #0
strb r0, [r1]
bl sub_0805E780
pop {pc}
.align 2, 0
_080A2598: .4byte gUnk_02034490
thumb_func_start sub_080A259C
sub_080A259C: @ 0x080A259C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r5, _080A25DC @ =gLinkEntity
ldrb r1, [r5, #0x10]
movs r7, #0x7f
adds r0, r7, #0
ands r0, r1
strb r0, [r5, #0x10]
ldrb r1, [r5, #0x18]
movs r6, #4
rsbs r6, r6, #0
adds r0, r6, #0
ands r0, r1
strb r0, [r5, #0x18]
ldrb r1, [r5, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1c
ldrb r2, [r4, #0x1a]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldrb r0, [r4, #0xd]
cmp r0, #1
beq _080A269C
cmp r0, #1
bgt _080A25E0
cmp r0, #0
beq _080A25E6
b _080A273C
.align 2, 0
_080A25DC: .4byte gLinkEntity
_080A25E0:
cmp r0, #2
beq _080A26B4
b _080A273C
_080A25E6:
movs r0, #1
movs r2, #1
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
adds r0, r6, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
adds r3, r4, #0
adds r3, #0x29
lsrs r1, r1, #0x1d
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r2, [r5, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r5, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x1b]
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
movs r0, #4
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #6
bl sub_0805E3A0
ldr r0, _080A2670 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #8
ands r0, r1
cmp r0, #0
beq _080A2678
ldrb r0, [r4, #0xa]
bl sub_080542AC
ldr r1, _080A2674 @ =0x0000045B
cmp r0, #0
beq _080A2688
adds r1, #3
b _080A2688
.align 2, 0
_080A2670: .4byte gLinkState
_080A2674: .4byte 0x0000045B
_080A2678:
ldrb r0, [r4, #0xa]
bl sub_080542AC
ldr r1, _080A2698 @ =0x000001B9
cmp r0, #0
beq _080A2688
movs r1, #0xb8
lsls r1, r1, #2
_080A2688:
lsrs r0, r1, #8
strh r0, [r4, #0x12]
movs r0, #0xff
ands r1, r0
adds r0, r4, #0
bl sub_080042AC
b _080A273C
.align 2, 0
_080A2698: .4byte 0x000001B9
_080A269C:
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0
beq _080A273C
ldrb r0, [r4, #0xd]
adds r0, #1
strb r0, [r4, #0xd]
b _080A273C
_080A26B4:
adds r0, r4, #0
bl sub_080042B8
ldr r0, _080A2764 @ =gTextBox
ldrb r1, [r0]
adds r0, r7, #0
ands r0, r1
cmp r0, #0
bne _080A2762
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080A273C
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x69
ldrb r0, [r0]
strb r0, [r5, #0x10]
adds r0, r4, #0
adds r0, #0x68
ldrb r1, [r0]
movs r0, #3
ands r1, r0
ldrb r2, [r5, #0x18]
adds r0, r6, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
adds r0, r4, #0
adds r0, #0x6a
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x3d
strb r1, [r0]
ldr r1, _080A2768 @ =gLinkState
adds r0, r4, #0
adds r0, #0x6b
ldrb r0, [r0]
strb r0, [r1, #7]
adds r0, r4, #0
adds r0, #0x6c
ldrb r0, [r0]
strb r0, [r1, #0xb]
adds r0, r4, #0
adds r0, #0x6d
ldrb r0, [r0]
strb r0, [r1, #0xa]
adds r0, r4, #0
adds r0, #0x6e
ldrb r0, [r0]
adds r2, r1, #0
adds r2, #0x27
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x6f
ldrb r0, [r0]
strb r0, [r1, #0x1a]
ldr r0, [r4, #0x70]
str r0, [r1, #0x30]
adds r0, r4, #0
adds r0, #0x74
ldrb r0, [r0]
adds r1, #0x8a
strb r0, [r1]
_080A273C:
ldr r5, [r4, #0x50]
cmp r5, #0
beq _080A2762
adds r0, r4, #0
adds r1, r5, #0
bl sub_0806FA30
ldrh r0, [r4, #0x12]
ldrb r1, [r4, #0x1e]
bl sub_080700C8
ldrb r1, [r0]
adds r2, r5, #0
adds r2, #0x62
strb r1, [r2]
ldrb r1, [r0, #1]
adds r0, r5, #0
adds r0, #0x63
strb r1, [r0]
_080A2762:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A2764: .4byte gTextBox
_080A2768: .4byte gLinkState
thumb_func_start sub_080A276C
sub_080A276C: @ 0x080A276C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r4, r1, #0
adds r7, r2, #0
bl sub_0805E744
adds r6, r0, #0
cmp r6, #0
beq _080A2820
movs r0, #0xc1
strb r0, [r6, #9]
movs r0, #6
mov r8, r0
mov r1, r8
strb r1, [r6, #8]
strb r4, [r6, #0xa]
strb r7, [r6, #0xb]
str r5, [r6, #0x50]
adds r0, r6, #0
movs r1, #6
bl sub_0805EA2C
adds r0, r6, #0
movs r1, #6
bl sub_0805EA78
ldr r4, _080A2828 @ =gLinkEntity
adds r0, r4, #0
adds r1, r6, #0
bl CopyPosition
ldr r0, _080A282C @ =gUnk_03003DC0
mov r1, r8
strb r1, [r0]
ldr r1, _080A2830 @ =gUnk_02034490
movs r0, #1
strb r0, [r1]
ldrb r0, [r4, #0x10]
adds r1, r6, #0
adds r1, #0x69
strb r0, [r1]
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
subs r1, #1
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3d
ldrb r0, [r0]
adds r1, #2
strb r0, [r1]
ldr r1, _080A2834 @ =gLinkState
ldrb r0, [r1, #7]
adds r2, r6, #0
adds r2, #0x6b
strb r0, [r2]
ldrb r2, [r1, #0xb]
adds r0, r6, #0
adds r0, #0x6c
strb r2, [r0]
ldrb r0, [r1, #0xa]
adds r2, r6, #0
adds r2, #0x6d
strb r0, [r2]
adds r0, r1, #0
adds r0, #0x27
ldrb r0, [r0]
adds r2, #1
strb r0, [r2]
ldrb r0, [r1, #0x1a]
adds r2, #1
strb r0, [r2]
ldr r0, [r1, #0x30]
str r0, [r6, #0x70]
adds r1, #0x8a
ldrb r1, [r1]
adds r0, r6, #0
adds r0, #0x74
strb r1, [r0]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_080A2820:
adds r0, r6, #0
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080A2828: .4byte gLinkEntity
_080A282C: .4byte gUnk_03003DC0
_080A2830: .4byte gUnk_02034490
_080A2834: .4byte gLinkState