tmc/asm/code_08077B98.s

8001 lines
135 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08077B98
sub_08077B98: @ 0x08077B98
push {r4, lr}
adds r1, r0, #0
ldr r4, _08077BB4 @ =gLinkState
ldr r0, [r4, #0x2c]
cmp r0, #0
beq _08077BAA
ldrb r0, [r0, #9]
cmp r0, #1
beq _08077BB2
_08077BAA:
adds r0, r1, #0
bl sub_08077C54
str r0, [r4, #0x2c]
_08077BB2:
pop {r4, pc}
.align 2, 0
_08077BB4: .4byte gLinkState
thumb_func_start sub_08077BB8
sub_08077BB8: @ 0x08077BB8
push {lr}
bl sub_08077C54
adds r1, r0, #0
cmp r1, #0
beq _08077BC8
movs r0, #0x20
strb r0, [r1, #0x10]
_08077BC8:
ldr r0, _08077BD0 @ =gLinkState
str r1, [r0, #0x2c]
pop {pc}
.align 2, 0
_08077BD0: .4byte gLinkState
thumb_func_start sub_08077BD4
sub_08077BD4: @ 0x08077BD4
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _08077C04 @ =gUnk_0811BE48
ldrb r1, [r4, #1]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r5
ldrb r1, [r0, #3]
adds r0, r4, #0
bl sub_08077C94
cmp r0, #0
bne _08077C08
ldrb r1, [r4, #1]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r5
ldrb r1, [r0, #3]
adds r0, r4, #0
bl sub_08077C3C
b _08077C0A
.align 2, 0
_08077C04: .4byte gUnk_0811BE48
_08077C08:
movs r0, #0
_08077C0A:
pop {r4, r5, pc}
thumb_func_start sub_08077C0C
sub_08077C0C: @ 0x08077C0C
push {r4, r5, lr}
adds r5, r0, #0
ldr r2, _08077C34 @ =gUnk_0811BE48
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r4, [r0, #3]
adds r0, r5, #0
adds r1, r4, #0
bl sub_08077C94
cmp r0, #0
bne _08077C38
adds r0, r5, #0
adds r1, r4, #0
bl sub_08077C3C
b _08077C3A
.align 2, 0
_08077C34: .4byte gUnk_0811BE48
_08077C38:
movs r0, #0
_08077C3A:
pop {r4, r5, pc}
thumb_func_start sub_08077C3C
sub_08077C3C: @ 0x08077C3C
push {r4, lr}
adds r4, r0, #0
adds r0, r1, #0
ldrb r3, [r4, #1]
movs r1, #0
movs r2, #0
bl sub_08077CB8
cmp r0, #0
beq _08077C52
str r4, [r0, #0x50]
_08077C52:
pop {r4, pc}
thumb_func_start sub_08077C54
sub_08077C54: @ 0x08077C54
push {r4, r5, lr}
adds r5, r0, #0
bl sub_0805E744
adds r4, r0, #0
cmp r4, #0
beq _08077C8C
ldr r2, _08077C90 @ =gUnk_0811BE48
ldrb r1, [r5, #1]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r0, [r0, #3]
strb r0, [r4, #9]
movs r0, #8
strb r0, [r4, #8]
movs r0, #0xa0
strb r0, [r4, #0x10]
str r5, [r4, #0x50]
ldrb r1, [r5, #1]
adds r0, r4, #0
adds r0, #0x68
strb r1, [r0]
adds r0, r4, #0
movs r1, #2
bl sub_0805EA2C
_08077C8C:
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
_08077C90: .4byte gUnk_0811BE48
thumb_func_start sub_08077C94
sub_08077C94: @ 0x08077C94
push {lr}
ldr r2, _08077CB4 @ =gUnk_0811BE48
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r2
ldrb r1, [r0, #3]
movs r0, #8
movs r2, #2
bl sub_0805EB00
cmp r0, #0
bne _08077CB0
movs r0, #0
_08077CB0:
pop {pc}
.align 2, 0
_08077CB4: .4byte gUnk_0811BE48
thumb_func_start sub_08077CB8
sub_08077CB8: @ 0x08077CB8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r2, #0
mov r8, r3
bl GetEmptyEntity
adds r4, r0, #0
cmp r4, #0
beq _08077CEE
movs r0, #0x80
strb r0, [r4, #0x10]
movs r0, #8
strb r0, [r4, #8]
strb r5, [r4, #9]
strb r6, [r4, #0xa]
strb r7, [r4, #0xb]
adds r0, r4, #0
adds r0, #0x68
mov r1, r8
strb r1, [r0]
adds r0, r4, #0
movs r1, #2
bl sub_0805EA2C
_08077CEE:
adds r0, r4, #0
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08077CF8
sub_08077CF8: @ 0x08077CF8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r2, #0
mov r8, r3
bl sub_0805E744
adds r4, r0, #0
cmp r4, #0
beq _08077D2E
movs r0, #0x80
strb r0, [r4, #0x10]
movs r0, #8
strb r0, [r4, #8]
strb r5, [r4, #9]
strb r6, [r4, #0xa]
strb r7, [r4, #0xb]
adds r0, r4, #0
adds r0, #0x68
mov r1, r8
strb r1, [r0]
adds r0, r4, #0
movs r1, #2
bl sub_0805EA2C
_08077D2E:
adds r0, r4, #0
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08077D38
sub_08077D38: @ 0x08077D38
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
mov r8, r1
ldr r3, _08077D94 @ =gLinkState
movs r7, #8
adds r1, r7, #0
mov r0, r8
asrs r1, r0
ldrb r2, [r3, #0xa]
adds r0, r1, #0
orrs r0, r2
strb r0, [r3, #0xa]
ldrb r0, [r3, #0xb]
orrs r1, r0
strb r1, [r3, #0xb]
ldr r0, _08077D98 @ =gLinkEntity
ldrb r0, [r0, #0x14]
strb r0, [r4, #0xa]
ldrb r0, [r4, #4]
cmp r0, #0
bne _08077D6A
adds r0, #1
strb r0, [r4, #4]
_08077D6A:
ldrb r2, [r4, #1]
lsls r0, r2, #1
adds r0, r0, r2
lsls r0, r0, #2
ldr r1, _08077D9C @ =gUnk_0811BE48
adds r5, r0, r1
ldrh r0, [r5, #4]
cmp r0, #0
beq _08077DCC
ldr r0, [r3, #0x30]
ands r0, r7
cmp r0, #0
beq _08077DC4
cmp r2, #0xd
beq _08077DB2
cmp r2, #0xd
bgt _08077DA0
cmp r2, #1
beq _08077DAC
b _08077DB4
.align 2, 0
_08077D94: .4byte gLinkState
_08077D98: .4byte gLinkEntity
_08077D9C: .4byte gUnk_0811BE48
_08077DA0:
cmp r2, #0x1b
bne _08077DB4
ldr r6, _08077DA8 @ =0x00000948
b _08077DB4
.align 2, 0
_08077DA8: .4byte 0x00000948
_08077DAC:
movs r6, #0x81
lsls r6, r6, #3
b _08077DB4
_08077DB2:
ldr r6, _08077DC0 @ =0x0000040C
_08077DB4:
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077DF4
b _08077DCC
.align 2, 0
_08077DC0: .4byte 0x0000040C
_08077DC4:
ldrh r1, [r5, #4]
adds r0, r4, #0
bl sub_08077DF4
_08077DCC:
ldrb r0, [r5, #6]
strb r0, [r4, #0xf]
ldrb r0, [r5, #7]
cmp r0, #0
beq _08077DE8
ldr r2, _08077DF0 @ =gLinkState
movs r0, #8
mov r1, r8
asrs r0, r1
lsls r1, r0, #4
orrs r0, r1
ldrb r1, [r2, #4]
orrs r0, r1
strb r0, [r2, #4]
_08077DE8:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08077DF0: .4byte gLinkState
thumb_func_start sub_08077DF4
sub_08077DF4: @ 0x08077DF4
push {r4, lr}
adds r4, r0, #0
adds r2, r1, #0
strh r2, [r4, #0x10]
movs r0, #0xff
ands r0, r2
cmp r0, #0xb8
bls _08077E0A
ldrb r0, [r4, #0xa]
lsrs r0, r0, #1
adds r2, r2, r0
_08077E0A:
ldr r0, _08077E20 @ =gLinkEntity
lsrs r1, r2, #8
strh r1, [r0, #0x12]
lsls r1, r2, #0x18
lsrs r1, r1, #0x18
bl InitAnimationForceUpdate
adds r0, r4, #0
bl sub_08077E54
pop {r4, pc}
.align 2, 0
_08077E20: .4byte gLinkEntity
thumb_func_start UpdateItemAnim
UpdateItemAnim: @ 0x08077E24
push {r4, lr}
adds r4, r0, #0
ldr r0, _08077E38 @ =gLinkEntity
bl UpdateAnimationSingleFrame
adds r0, r4, #0
bl sub_08077E54
pop {r4, pc}
.align 2, 0
_08077E38: .4byte gLinkEntity
thumb_func_start sub_08077E3C
sub_08077E3C: @ 0x08077E3C
push {r4, lr}
adds r4, r0, #0
ldr r0, _08077E50 @ =gLinkEntity
bl sub_080042BA
adds r0, r4, #0
bl sub_08077E54
pop {r4, pc}
.align 2, 0
_08077E50: .4byte gLinkEntity
thumb_func_start sub_08077E54
sub_08077E54: @ 0x08077E54
ldr r2, _08077E74 @ =gLinkEntity
adds r1, r2, #0
adds r1, #0x58
ldrb r1, [r1]
strb r1, [r0, #0xc]
ldrb r1, [r2, #0x1e]
strb r1, [r0, #0x12]
adds r1, r2, #0
adds r1, #0x59
ldrb r1, [r1]
strb r1, [r0, #0xd]
adds r1, r2, #0
adds r1, #0x5a
ldrb r1, [r1]
strb r1, [r0, #0xe]
bx lr
.align 2, 0
_08077E74: .4byte gLinkEntity
thumb_func_start sub_08077E78
sub_08077E78: @ 0x08077E78
push {r4, r5, lr}
adds r5, r0, #0
adds r3, r1, #0
ldr r4, _08077EC4 @ =gLinkState
cmp r3, #0
bne _08077E9A
ldr r2, [r4, #0x2c]
cmp r2, #0
beq _08077E98
ldrb r0, [r2, #0x11]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #6
orrs r1, r0
strb r1, [r2, #0x11]
_08077E98:
str r3, [r4, #0x2c]
_08077E9A:
movs r2, #8
asrs r2, r3
lsls r1, r2, #4
orrs r1, r2
ldrb r0, [r4, #4]
bics r0, r1
strb r0, [r4, #4]
mvns r2, r2
ldrb r1, [r4, #0xa]
adds r0, r2, #0
ands r0, r1
strb r0, [r4, #0xa]
ldrb r0, [r4, #0xb]
ands r2, r0
strb r2, [r4, #0xb]
adds r0, r5, #0
movs r1, #0x1c
bl sub_0801D630
pop {r4, r5, pc}
.align 2, 0
_08077EC4: .4byte gLinkState
thumb_func_start sub_08077EC8
sub_08077EC8: @ 0x08077EC8
push {r4, lr}
adds r4, r0, #0
ldr r0, _08077EDC @ =gLinkState
ldrb r1, [r0, #0x1b]
movs r0, #8
ands r0, r1
cmp r0, #0
bne _08077EE0
movs r0, #0
b _08077EF8
.align 2, 0
_08077EDC: .4byte gLinkState
_08077EE0:
movs r1, #0xb8
lsls r1, r1, #1
adds r0, r4, #0
bl sub_08077DF4
movs r0, #0x28
strb r0, [r4, #7]
movs r0, #7
strb r0, [r4, #4]
movs r0, #6
strb r0, [r4, #0xf]
movs r0, #1
_08077EF8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08077EFC
sub_08077EFC: @ 0x08077EFC
push {lr}
ldr r1, _08077F0C @ =gLinkState
adds r1, #0x90
ldrh r1, [r1]
bl sub_08077F24
pop {pc}
.align 2, 0
_08077F0C: .4byte gLinkState
thumb_func_start sub_08077F10
sub_08077F10: @ 0x08077F10
push {lr}
ldr r1, _08077F20 @ =gLinkState
adds r1, #0x92
ldrh r1, [r1]
bl sub_08077F24
pop {pc}
.align 2, 0
_08077F20: .4byte gLinkState
thumb_func_start sub_08077F24
sub_08077F24: @ 0x08077F24
push {lr}
ldr r2, _08077F34 @ =gStats
ldrb r3, [r0, #1]
ldrb r0, [r2, #0xc]
cmp r0, r3
bne _08077F38
movs r2, #1
b _08077F42
.align 2, 0
_08077F34: .4byte gStats
_08077F38:
ldrb r0, [r2, #0xd]
movs r2, #0
cmp r0, r3
bne _08077F42
movs r2, #2
_08077F42:
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _08077F4C
movs r0, #1
_08077F4C:
pop {pc}
.align 2, 0
thumb_func_start sub_08077F50
sub_08077F50: @ 0x08077F50
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl sub_08079184
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
pop {r4, r5, pc}
thumb_func_start sub_08077F64
sub_08077F64: @ 0x08077F64
push {lr}
adds r2, r0, #0
ldr r0, _08077F7C @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #0
bne _08077F80
adds r0, r2, #0
bl sub_08077F50
movs r0, #0
b _08077F82
.align 2, 0
_08077F7C: .4byte gLinkState
_08077F80:
movs r0, #1
_08077F82:
pop {pc}
thumb_func_start sub_08077F84
sub_08077F84: @ 0x08077F84
push {r4, lr}
ldr r4, _08077FE0 @ =gLinkEntity
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08077FDE
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
subs r1, #0xc
movs r2, #2
bl GetTileTypeByPos
ldr r1, _08077FE4 @ =0xFFFFFCBD
adds r0, r0, r1
cmp r0, #3
bhi _08077FDE
adds r0, r4, #0
bl sub_0807AA80
ldr r2, _08077FE8 @ =gLinkState
ldrb r1, [r2, #2]
movs r0, #8
orrs r0, r1
strb r0, [r2, #2]
movs r0, #0x44
movs r1, #0
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08077FDE
ldr r0, [r4, #0x2c]
str r0, [r1, #0x2c]
ldrh r0, [r4, #0x32]
subs r0, #0xc
strh r0, [r1, #0x32]
ldrh r0, [r4, #0x32]
subs r0, #0xc
strh r0, [r4, #0x32]
_08077FDE:
pop {r4, pc}
.align 2, 0
_08077FE0: .4byte gLinkEntity
_08077FE4: .4byte 0xFFFFFCBD
_08077FE8: .4byte gLinkState
thumb_func_start sub_08077FEC
sub_08077FEC: @ 0x08077FEC
push {lr}
ldr r0, _08078000 @ =gUnk_03004020
ldr r2, _08078004 @ =gUnk_0811BFE8
ldrb r1, [r0]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08078000: .4byte gUnk_03004020
_08078004: .4byte gUnk_0811BFE8
thumb_func_start sub_08078008
sub_08078008: @ 0x08078008
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, _08078060 @ =gUnk_02002A40
adds r5, r6, #0
adds r5, #0xb4
ldrb r0, [r5]
bl sub_0805449C
cmp r0, #0
bne _0807802C
adds r5, r6, #0
adds r5, #0xb5
ldrb r0, [r5]
bl sub_0805449C
movs r2, #0
cmp r0, #0
beq _0807802E
_0807802C:
ldrb r2, [r5]
_0807802E:
subs r0, r2, #1
cmp r0, #1
bhi _08078036
movs r2, #0
_08078036:
cmp r2, #0
beq _08078068
ldr r0, _08078064 @ =gLinkState
ldrb r1, [r0, #0x1b]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08078068
ldrb r0, [r4, #1]
adds r0, #1
strb r0, [r4, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0x14
ble _0807806C
movs r0, #0xa
strb r0, [r4, #1]
movs r0, #3
strb r0, [r4]
strb r2, [r4, #2]
b _0807806C
.align 2, 0
_08078060: .4byte gUnk_02002A40
_08078064: .4byte gLinkState
_08078068:
movs r0, #0
strb r0, [r4, #1]
_0807806C:
movs r0, #0
pop {r4, r5, r6, pc}
thumb_func_start sub_08078070
sub_08078070: @ 0x08078070
push {lr}
adds r2, r0, #0
ldr r3, _08078098 @ =gLinkState
ldrb r1, [r3, #0x1b]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080780D6
adds r0, r3, #0
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #3
ands r0, r1
cmp r0, #0
beq _0807809C
ldrh r0, [r2, #4]
adds r0, #0xc
b _080780A0
.align 2, 0
_08078098: .4byte gLinkState
_0807809C:
ldrh r0, [r2, #4]
adds r0, #6
_080780A0:
strh r0, [r2, #4]
movs r0, #4
ldrsh r1, [r2, r0]
ldr r0, _080780BC @ =0x0000031F
cmp r1, r0
ble _080780C0
adds r0, #1
strh r0, [r2, #4]
movs r0, #4
strb r0, [r2]
movs r0, #0xd8
bl PlaySFX
b _080780DA
.align 2, 0
_080780BC: .4byte 0x0000031F
_080780C0:
movs r1, #4
ldrsh r0, [r2, r1]
movs r1, #0x14
bl Mod
cmp r0, #0
bne _080780DA
movs r0, #0xd7
bl PlaySFX
b _080780DA
_080780D6:
movs r0, #1
strb r0, [r2]
_080780DA:
movs r0, #1
pop {pc}
.align 2, 0
thumb_func_start sub_080780E0
sub_080780E0: @ 0x080780E0
push {lr}
adds r2, r0, #0
ldr r0, _080780F4 @ =gLinkState
ldrb r1, [r0, #0x1b]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _080780F8
movs r0, #5
b _08078102
.align 2, 0
_080780F4: .4byte gLinkState
_080780F8:
movs r0, #0x20
ands r0, r1
cmp r0, #0
bne _08078104
movs r0, #1
_08078102:
strb r0, [r2]
_08078104:
movs r0, #1
pop {pc}
thumb_func_start sub_08078108
sub_08078108: @ 0x08078108
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #4]
subs r0, #1
strh r0, [r1, #4]
lsls r0, r0, #0x10
cmp r0, #0
bge _08078120
movs r0, #0
strh r0, [r1, #4]
movs r0, #2
strb r0, [r1]
_08078120:
movs r0, #1
pop {pc}
thumb_func_start sub_08078124
sub_08078124: @ 0x08078124
push {lr}
adds r1, r0, #0
ldrh r0, [r1, #4]
subs r0, #0x10
strh r0, [r1, #4]
lsls r0, r0, #0x10
cmp r0, #0
bge _0807813C
movs r0, #0
strh r0, [r1, #4]
movs r0, #2
strb r0, [r1]
_0807813C:
movs r0, #1
pop {pc}
thumb_func_start sub_08078140
sub_08078140: @ 0x08078140
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #1]
subs r0, #1
movs r2, #0
strb r0, [r1, #1]
lsls r0, r0, #0x18
cmp r0, #0
blt _08078156
movs r0, #0
b _0807815C
_08078156:
strb r2, [r1, #1]
strb r2, [r1]
movs r0, #1
_0807815C:
pop {pc}
.align 2, 0
thumb_func_start sub_08078160
sub_08078160: @ 0x08078160
push {lr}
ldr r1, _08078178 @ =gLinkState
adds r1, #0xa8
strb r0, [r1]
ldr r2, _0807817C @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
bl sub_08078B48
pop {pc}
.align 2, 0
_08078178: .4byte gLinkState
_0807817C: .4byte gLinkEntity
thumb_func_start sub_08078180
sub_08078180: @ 0x08078180
push {r4, r5, r6, lr}
ldr r0, _080781C8 @ =gUnk_0200AF00
adds r1, r0, #0
adds r1, #0x2f
ldrb r1, [r1]
adds r6, r0, #0
cmp r1, #0
beq _08078192
b _080782BC
_08078192:
movs r4, #0
ldr r5, _080781CC @ =gLinkState
ldrb r0, [r5, #2]
cmp r0, #0
beq _0807819E
b _080782B6
_0807819E:
ldr r0, [r5, #0x30]
ldr r1, _080781D0 @ =0x00104D00
ands r0, r1
cmp r0, #0
beq _080781AA
b _080782B6
_080781AA:
ldrb r0, [r5, #5]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bhi _080781D4
adds r1, r6, #0
adds r1, #0x2e
ldrb r0, [r1]
movs r4, #3
cmp r0, #0
bne _080781C4
b _080782B6
_080781C4:
adds r4, r0, #0
b _080782B6
.align 2, 0
_080781C8: .4byte gUnk_0200AF00
_080781CC: .4byte gLinkState
_080781D0: .4byte 0x00104D00
_080781D4:
adds r1, r6, #0
adds r1, #0x2d
ldrb r0, [r1]
cmp r0, #0
bne _080781C4
bl sub_080784E4
adds r1, r0, #0
ldr r0, [r1, #8]
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bne _08078278
ldrb r0, [r1, #1]
subs r0, #1
cmp r0, #9
bhi _080782B6
lsls r0, r0, #2
ldr r1, _08078204 @ =_08078208
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078204: .4byte _08078208
_08078208: @ jump table
.4byte _08078230 @ case 0
.4byte _080782B6 @ case 1
.4byte _08078254 @ case 2
.4byte _080782B6 @ case 3
.4byte _08078254 @ case 4
.4byte _08078254 @ case 5
.4byte _08078230 @ case 6
.4byte _0807823C @ case 7
.4byte _08078260 @ case 8
.4byte _0807826C @ case 9
_08078230:
movs r4, #7
ldr r6, _08078238 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078238: .4byte gUnk_0200AF00
_0807823C:
ldr r0, _0807824C @ =gRoomVars
ldrb r0, [r0, #6]
ldr r6, _08078250 @ =gUnk_0200AF00
cmp r0, #0
bne _080782B6
movs r4, #9
b _080782B6
.align 2, 0
_0807824C: .4byte gRoomVars
_08078250: .4byte gUnk_0200AF00
_08078254:
movs r4, #6
ldr r6, _0807825C @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_0807825C: .4byte gUnk_0200AF00
_08078260:
movs r4, #5
ldr r6, _08078268 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078268: .4byte gUnk_0200AF00
_0807826C:
movs r4, #2
ldr r6, _08078274 @ =gUnk_0200AF00
b _080782B6
.align 2, 0
_08078274: .4byte gUnk_0200AF00
_08078278:
bl sub_080789A8
cmp r0, #0
beq _080782A4
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #0xe
beq _080782BC
ldr r1, _080782A0 @ =gUnk_03003BE0
ldrb r0, [r1, #1]
movs r4, #9
cmp r0, #2
bne _080782B6
ldr r0, [r1, #8]
ldrb r0, [r0, #0x16]
cmp r0, #1
bne _080782B6
movs r4, #8
b _080782B6
.align 2, 0
_080782A0: .4byte gUnk_03003BE0
_080782A4:
adds r0, r5, #0
adds r0, #0xa8
ldrb r0, [r0]
cmp r0, #1
bne _080782B6
ldrb r0, [r5, #0x1a]
cmp r0, #0
bne _080782B6
movs r4, #0xc
_080782B6:
adds r0, r6, #0
adds r0, #0x2c
strb r4, [r0]
_080782BC:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080782C0
sub_080782C0: @ 0x080782C0
push {r4, r5, r6, lr}
ldr r1, _080782D8 @ =gLinkState
adds r2, r1, #0
adds r2, #0xa8
ldrb r0, [r2]
adds r4, r1, #0
cmp r0, #0
bne _080782DC
adds r0, r4, #0
adds r0, #0xa9
ldrb r0, [r0]
b _080782DE
.align 2, 0
_080782D8: .4byte gLinkState
_080782DC:
ldrb r0, [r2]
_080782DE:
subs r0, #2
cmp r0, #0x14
bhi _08078348
lsls r0, r0, #2
ldr r1, _080782F0 @ =_080782F4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080782F0: .4byte _080782F4
_080782F4: @ jump table
.4byte _080784AC @ case 0
.4byte _080784AC @ case 1
.4byte _08078348 @ case 2
.4byte _08078348 @ case 3
.4byte _08078348 @ case 4
.4byte _08078348 @ case 5
.4byte _08078348 @ case 6
.4byte _08078348 @ case 7
.4byte _08078348 @ case 8
.4byte _08078348 @ case 9
.4byte _080784AC @ case 10
.4byte _08078348 @ case 11
.4byte _08078348 @ case 12
.4byte _08078348 @ case 13
.4byte _08078348 @ case 14
.4byte _08078348 @ case 15
.4byte _080784AC @ case 16
.4byte _08078348 @ case 17
.4byte _08078348 @ case 18
.4byte _080784AC @ case 19
.4byte _080784AC @ case 20
_08078348:
adds r0, r4, #0
adds r0, #0x27
adds r2, r4, #0
adds r2, #0x26
ldrb r1, [r0]
ldrb r0, [r2]
orrs r0, r1
cmp r0, #0
beq _0807835C
b _080784AC
_0807835C:
ldrb r0, [r4, #0x12]
cmp r0, #1
bne _08078376
ldrb r0, [r4, #0x14]
cmp r0, #0
bne _0807836A
b _080784AC
_0807836A:
bl sub_08052B24
cmp r0, #0
beq _08078374
b _080784C4
_08078374:
b _080784AC
_08078376:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #7
ands r0, r1
cmp r0, #0
beq _08078384
b _080784AC
_08078384:
bl sub_08052B24
cmp r0, #0
beq _0807838E
b _080784C4
_0807838E:
bl sub_080784E4
ldr r6, [r0, #8]
cmp r6, #0
bne _0807839A
b _080784AC
_0807839A:
ldrb r0, [r4, #5]
cmp r0, #0
beq _080783B6
cmp r0, #4
beq _080783A6
b _080784AC
_080783A6:
ldr r0, _08078400 @ =gLinkEntity
ldr r0, [r0, #0x74]
ldr r0, [r0, #0x54]
ldrh r1, [r0, #8]
ldr r0, _08078404 @ =0x00000206
cmp r1, r0
beq _080783B6
b _080784AC
_080783B6:
ldr r2, _08078408 @ =gLinkState
adds r0, r2, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #5
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _0807842C
ldr r5, _0807840C @ =gUnk_03003DF0
ldr r0, [r5, #4]
ldrb r0, [r0, #3]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x63
bhi _0807842C
movs r0, #0
bl sub_0801E738
ldr r0, _08078410 @ =gUnk_02002A40
ldr r1, _08078414 @ =0x0000012B
adds r0, r0, r1
ldrb r0, [r0]
cmp r0, #0
beq _08078418
ldr r1, [r5, #4]
ldrb r0, [r1, #3]
strb r0, [r5, #2]
ldr r0, [r1, #8]
adds r0, #0x39
movs r1, #2
strb r1, [r0]
movs r0, #7
strb r0, [r4, #0xc]
b _08078420
.align 2, 0
_08078400: .4byte gLinkEntity
_08078404: .4byte 0x00000206
_08078408: .4byte gLinkState
_0807840C: .4byte gUnk_03003DF0
_08078410: .4byte gUnk_02002A40
_08078414: .4byte 0x0000012B
_08078418:
ldr r0, _08078428 @ =0x00000B65
movs r1, #0
bl sub_08078AA8
_08078420:
movs r0, #0x13
bl sub_08078160
b _080784C4
.align 2, 0
_08078428: .4byte 0x00000B65
_0807842C:
adds r0, r4, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x88
ands r0, r1
cmp r0, #0
beq _080784AC
ldr r0, _08078450 @ =gUnk_03003DF0
ldr r0, [r0, #4]
ldrb r0, [r0, #1]
cmp r0, #0xa
bhi _080784C4
lsls r0, r0, #2
ldr r1, _08078454 @ =_08078458
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078450: .4byte gUnk_03003DF0
_08078454: .4byte _08078458
_08078458: @ jump table
.4byte _080784C4 @ case 0
.4byte _08078484 @ case 1
.4byte _080784C4 @ case 2
.4byte _0807848E @ case 3
.4byte _080784C4 @ case 4
.4byte _0807848E @ case 5
.4byte _08078484 @ case 6
.4byte _0807848E @ case 7
.4byte _080784A4 @ case 8
.4byte _08078484 @ case 9
.4byte _08078484 @ case 10
_08078484:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x13
bl sub_08078160
_0807848E:
adds r1, r6, #0
adds r1, #0x39
movs r2, #0
movs r0, #1
strb r0, [r1]
ldr r0, _080784A0 @ =gUnk_03003DF0
strb r2, [r0, #2]
b _080784C4
.align 2, 0
_080784A0: .4byte gUnk_03003DF0
_080784A4:
ldr r2, _080784B0 @ =gRoomVars
ldrb r0, [r2, #6]
cmp r0, #0
beq _080784B4
_080784AC:
movs r0, #0
b _080784C6
.align 2, 0
_080784B0: .4byte gRoomVars
_080784B4:
adds r1, r6, #0
adds r1, #0x39
movs r0, #1
strb r0, [r1]
ldrb r0, [r6, #0xa]
strb r0, [r2, #6]
ldrb r0, [r6, #0xb]
strb r0, [r2, #7]
_080784C4:
movs r0, #1
_080784C6:
pop {r4, r5, r6, pc}
thumb_func_start sub_080784C8
sub_080784C8: @ 0x080784C8
push {r4, lr}
ldr r4, _080784DC @ =gUnk_03003DF0
movs r1, #0xc4
lsls r1, r1, #1
adds r0, r4, #0
bl sub_0801D630
ldr r0, _080784E0 @ =gUnk_0811C000
str r0, [r4, #4]
pop {r4, pc}
.align 2, 0
_080784DC: .4byte gUnk_03003DF0
_080784E0: .4byte gUnk_0811C000
thumb_func_start sub_080784E4
sub_080784E4: @ 0x080784E4
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, _080784FC @ =gUnk_03003DF0
ldrb r1, [r0]
mov r8, r0
cmp r1, #0
beq _08078500
ldr r0, [r0, #4]
b _0807876A
.align 2, 0
_080784FC: .4byte gUnk_03003DF0
_08078500:
ldr r2, _08078528 @ =gLinkState
adds r0, r2, #0
adds r0, #0x27
adds r3, r2, #0
adds r3, #0x26
ldrb r1, [r0]
ldrb r0, [r3]
orrs r0, r1
cmp r0, #0
bne _08078598
adds r1, r2, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _0807852C
adds r0, r2, #0
adds r0, #0xa9
ldrb r0, [r0]
b _0807852E
.align 2, 0
_08078528: .4byte gLinkState
_0807852C:
ldrb r0, [r1]
_0807852E:
subs r0, #2
cmp r0, #0x14
bhi _080785B0
lsls r0, r0, #2
ldr r1, _08078540 @ =_08078544
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078540: .4byte _08078544
_08078544: @ jump table
.4byte _08078598 @ case 0
.4byte _08078598 @ case 1
.4byte _080785B0 @ case 2
.4byte _080785B0 @ case 3
.4byte _080785B0 @ case 4
.4byte _080785B0 @ case 5
.4byte _080785B0 @ case 6
.4byte _080785B0 @ case 7
.4byte _080785B0 @ case 8
.4byte _080785B0 @ case 9
.4byte _080785B0 @ case 10
.4byte _080785B0 @ case 11
.4byte _080785B0 @ case 12
.4byte _080785B0 @ case 13
.4byte _080785B0 @ case 14
.4byte _080785B0 @ case 15
.4byte _08078598 @ case 16
.4byte _080785B0 @ case 17
.4byte _080785B0 @ case 18
.4byte _08078598 @ case 19
.4byte _08078598 @ case 20
_08078598:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _080785AC @ =gUnk_0811C000
str r0, [r1, #4]
movs r1, #1
mov r2, r8
strb r1, [r2]
b _0807876A
.align 2, 0
_080785AC: .4byte gUnk_0811C000
_080785B0:
ldr r0, [r2, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080785F0
bl sub_08052734
cmp r0, #0
beq _080785C4
movs r0, #1
_080785C4:
adds r7, r0, #0
bl sub_08052764
cmp r0, #0
beq _080785D2
movs r0, #2
orrs r7, r0
_080785D2:
ldr r3, _080785E4 @ =gLinkEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _080785E8 @ =gUnk_0811C00C
adds r2, r1, r0
ldr r5, _080785EC @ =gUnk_03003DF0
mov r8, r5
b _080785FE
.align 2, 0
_080785E4: .4byte gLinkEntity
_080785E8: .4byte gUnk_0811C00C
_080785EC: .4byte gUnk_03003DF0
_080785F0:
ldr r3, _08078624 @ =gLinkEntity
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
ldr r0, _08078628 @ =gUnk_0811C014
adds r2, r1, r0
movs r7, #0
_080785FE:
mov ip, r3
mov r0, ip
movs r3, #0x2e
ldrsh r1, [r0, r3]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sl, r1
mov r5, ip
movs r0, #0x32
ldrsh r1, [r5, r0]
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov sb, r1
movs r6, #0
ldr r5, _0807862C @ =gUnk_03003DF8
b _08078724
.align 2, 0
_08078624: .4byte gLinkEntity
_08078628: .4byte gUnk_0811C014
_0807862C: .4byte gUnk_03003DF8
_08078630:
ldrb r1, [r5]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
bne _0807864E
mov r0, ip
adds r0, #0x38
adds r1, r2, #0
adds r1, #0x38
ldrb r2, [r0]
ldrb r0, [r1]
ands r0, r2
cmp r0, #0
beq _08078714
_0807864E:
ldrb r1, [r5, #2]
mov r2, ip
ldrb r0, [r2, #0x14]
lsrs r0, r0, #1
asrs r1, r0
ands r1, r3
cmp r1, #0
bne _08078714
ldrb r0, [r5, #1]
cmp r0, #0xa
bhi _080786D4
lsls r0, r0, #2
ldr r1, _08078670 @ =_08078674
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078670: .4byte _08078674
_08078674: @ jump table
.4byte _08078714 @ case 0
.4byte _080786A0 @ case 1
.4byte _080786C4 @ case 2
.4byte _080786A0 @ case 3
.4byte _080786A0 @ case 4
.4byte _080786C8 @ case 5
.4byte _080786CC @ case 6
.4byte _080786B4 @ case 7
.4byte _080786A0 @ case 8
.4byte _080786A0 @ case 9
.4byte _080786D4 @ case 10
_080786A0:
ldr r0, _080786B0 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08078714
b _080786D4
.align 2, 0
_080786B0: .4byte gLinkState
_080786B4:
ldr r0, _080786C0 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
b _080786D0
.align 2, 0
_080786C0: .4byte gLinkState
_080786C4:
ldrb r0, [r5, #3]
b _080786D0
_080786C8:
movs r0, #1
b _080786CE
_080786CC:
movs r0, #2
_080786CE:
ands r0, r7
_080786D0:
cmp r0, #0
beq _08078714
_080786D4:
ldr r0, [r5, #8]
movs r1, #0x2e
ldrsh r3, [r0, r1]
movs r2, #0x32
ldrsh r4, [r0, r2]
ldr r1, [r5, #4]
cmp r1, #0
beq _080786F4
movs r0, #0
ldrsb r0, [r1, r0]
adds r3, r3, r0
movs r0, #1
ldrsb r0, [r1, r0]
adds r4, r4, r0
adds r2, r1, #2
b _080786F8
_080786F4:
ldr r0, [r0, #0x48]
adds r2, r0, #6
_080786F8:
ldrb r1, [r2]
mov r5, sl
adds r0, r1, r5
subs r0, r0, r3
lsls r1, r1, #1
cmp r0, r1
bhs _08078714
ldrb r1, [r2, #1]
mov r2, sb
adds r0, r1, r2
subs r0, r0, r4
lsls r1, r1, #1
cmp r0, r1
blo _0807873A
_08078714:
adds r6, #1
cmp r6, #0x1f
bhi _08078758
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
ldr r3, _08078754 @ =gUnk_03003DF8
adds r5, r0, r3
_08078724:
ldr r2, [r5, #8]
cmp r2, #0
beq _08078714
adds r0, r2, #0
adds r0, #0x39
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
blt _0807873A
b _08078630
_0807873A:
cmp r6, #0x1f
bhi _08078758
mov r5, r8
strb r6, [r5, #3]
lsls r0, r6, #1
adds r0, r0, r6
lsls r0, r0, #2
mov r1, r8
adds r1, #8
adds r0, r0, r1
str r0, [r5, #4]
b _08078762
.align 2, 0
_08078754: .4byte gUnk_03003DF8
_08078758:
movs r0, #0xff
mov r1, r8
strb r0, [r1, #3]
ldr r0, _08078774 @ =gUnk_0811C000
str r0, [r1, #4]
_08078762:
movs r0, #1
mov r2, r8
strb r0, [r2]
ldr r0, [r2, #4]
_0807876A:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08078774: .4byte gUnk_0811C000
thumb_func_start sub_08078778
sub_08078778: @ 0x08078778
push {lr}
movs r1, #1
movs r2, #0
bl sub_0807887C
pop {pc}
thumb_func_start sub_08078784
sub_08078784: @ 0x08078784
push {lr}
adds r2, r1, #0
movs r1, #1
bl sub_0807887C
pop {pc}
thumb_func_start sub_08078790
sub_08078790: @ 0x08078790
push {lr}
adds r2, r1, #0
movs r1, #2
bl sub_0807887C
pop {pc}
thumb_func_start sub_0807879C
sub_0807879C: @ 0x0807879C
push {lr}
movs r1, #7
movs r2, #0
bl sub_0807887C
pop {pc}
thumb_func_start sub_080787A8
sub_080787A8: @ 0x080787A8
push {lr}
adds r2, r1, #0
movs r1, #7
bl sub_0807887C
pop {pc}
thumb_func_start sub_080787B4
sub_080787B4: @ 0x080787B4
push {lr}
movs r1, #9
movs r2, #0
bl sub_0807887C
pop {pc}
thumb_func_start sub_080787C0
sub_080787C0: @ 0x080787C0
push {lr}
movs r1, #0xa
movs r2, #0
bl sub_0807887C
pop {pc}
thumb_func_start sub_080787CC
sub_080787CC: @ 0x080787CC
push {lr}
movs r1, #5
movs r2, #0
bl sub_0807887C
pop {pc}
thumb_func_start sub_080787D8
sub_080787D8: @ 0x080787D8
push {lr}
movs r1, #8
movs r2, #0
bl sub_0807887C
adds r2, r0, #0
cmp r2, #0
blt _080787F6
ldr r0, _080787FC @ =gUnk_03003DF0
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
movs r0, #0xbe
strb r0, [r1, #0xa]
_080787F6:
adds r0, r2, #0
pop {pc}
.align 2, 0
_080787FC: .4byte gUnk_03003DF0
thumb_func_start sub_08078800
sub_08078800: @ 0x08078800
push {lr}
movs r1, #6
movs r2, #0
bl sub_0807887C
adds r2, r0, #0
cmp r2, #0
blt _0807881E
ldr r0, _08078824 @ =gUnk_03003DF0
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
movs r0, #0xbe
strb r0, [r1, #0xa]
_0807881E:
adds r0, r2, #0
pop {pc}
.align 2, 0
_08078824: .4byte gUnk_03003DF0
thumb_func_start sub_08078828
sub_08078828: @ 0x08078828
push {lr}
movs r1, #3
movs r2, #0
bl sub_0807887C
adds r2, r0, #0
cmp r2, #0
blt _08078846
ldr r0, _0807884C @ =gUnk_03003DF0
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
movs r0, #0xbe
strb r0, [r1, #0xa]
_08078846:
adds r0, r2, #0
pop {pc}
.align 2, 0
_0807884C: .4byte gUnk_03003DF0
thumb_func_start sub_08078850
sub_08078850: @ 0x08078850
push {r4, r5, r6, lr}
adds r4, r1, #0
adds r5, r2, #0
adds r6, r3, #0
bl sub_08078904
adds r2, r0, #0
cmp r2, #0
blt _08078876
ldr r0, _08078878 @ =gUnk_03003DF0
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r2, r1, r0
strb r4, [r2, #8]
strb r5, [r2, #0xa]
adds r0, #0xc
adds r1, r1, r0
str r6, [r1]
_08078876:
pop {r4, r5, r6, pc}
.align 2, 0
_08078878: .4byte gUnk_03003DF0
thumb_func_start sub_0807887C
sub_0807887C: @ 0x0807887C
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r7, r1, #0
adds r6, r2, #0
adds r1, r5, #0
adds r1, #0x39
movs r0, #0
strb r0, [r1]
adds r0, r5, #0
bl sub_08078904
adds r4, r0, #0
cmp r4, #0
bge _080788A4
movs r0, #0
bl sub_08078904
adds r4, r0, #0
cmp r4, #0
blt _080788BA
_080788A4:
ldr r2, _080788DC @ =gUnk_03003DF0
lsls r1, r4, #1
adds r1, r1, r4
lsls r1, r1, #2
adds r0, r2, #0
adds r0, #0x10
adds r0, r1, r0
str r5, [r0]
adds r1, r1, r2
strb r7, [r1, #9]
strb r6, [r1, #0xb]
_080788BA:
cmp r6, #0
beq _080788D6
movs r0, #6
movs r1, #9
movs r2, #6
bl sub_0805EB00
cmp r0, #0
bne _080788D6
movs r0, #9
movs r1, #0
movs r2, #0
bl CreateObject
_080788D6:
adds r0, r4, #0
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080788DC: .4byte gUnk_03003DF0
thumb_func_start sub_080788E0
sub_080788E0: @ 0x080788E0
push {lr}
bl sub_08078904
adds r1, r0, #0
cmp r1, #0
blt _080788FC
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _08078900 @ =gUnk_03003DF8
adds r0, r0, r1
movs r1, #0xc
bl sub_0801D630
_080788FC:
pop {pc}
.align 2, 0
_08078900: .4byte gUnk_03003DF8
thumb_func_start sub_08078904
sub_08078904: @ 0x08078904
push {lr}
adds r3, r0, #0
movs r1, #0
ldr r0, _0807891C @ =gUnk_03003DF0
adds r2, r0, #0
adds r2, #0x10
_08078910:
ldr r0, [r2]
cmp r3, r0
bne _08078920
adds r0, r1, #0
b _0807892C
.align 2, 0
_0807891C: .4byte gUnk_03003DF0
_08078920:
adds r2, #0xc
adds r1, #1
cmp r1, #0x1f
bls _08078910
movs r0, #1
rsbs r0, r0, #0
_0807892C:
pop {pc}
.align 2, 0
thumb_func_start sub_08078930
sub_08078930: @ 0x08078930
push {lr}
adds r3, r0, #0
ldr r2, _08078950 @ =gUnk_03003BE0
ldrb r0, [r2, #2]
cmp r0, #0x1f
bhi _0807894C
lsls r0, r0, #2
adds r1, r2, #0
adds r1, #0xc
adds r0, r0, r1
str r3, [r0]
ldrb r0, [r2, #2]
adds r0, #1
strb r0, [r2, #2]
_0807894C:
pop {pc}
.align 2, 0
_08078950: .4byte gUnk_03003BE0
thumb_func_start sub_08078954
sub_08078954: @ 0x08078954
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0
ldr r0, _08078970 @ =gUnk_03003BE0
ldrb r1, [r0, #2]
adds r2, r0, #0
cmp r4, r1
bhs _080789A6
ldr r0, [r2, #0xc]
cmp r0, r5
bne _08078974
subs r0, r1, #1
b _0807898C
.align 2, 0
_08078970: .4byte gUnk_03003BE0
_08078974:
adds r4, #1
ldrb r3, [r2, #2]
cmp r4, r3
bhs _080789A6
lsls r0, r4, #2
adds r1, r2, #0
adds r1, #0xc
adds r0, r0, r1
ldr r0, [r0]
cmp r0, r5
bne _08078974
subs r0, r3, #1
_0807898C:
strb r0, [r2, #2]
ldrb r0, [r2, #2]
cmp r4, r0
bhs _080789A6
lsls r0, r4, #2
adds r0, #0xc
adds r1, r0, r2
_0807899A:
ldr r0, [r1, #4]
stm r1!, {r0}
adds r4, #1
ldrb r0, [r2, #2]
cmp r4, r0
blo _0807899A
_080789A6:
pop {r4, r5, pc}
thumb_func_start sub_080789A8
sub_080789A8: @ 0x080789A8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r1, _080789BC @ =gUnk_03003BE0
ldrb r0, [r1]
cmp r0, #0
beq _080789C0
ldrb r0, [r1, #1]
b _08078A88
.align 2, 0
_080789BC: .4byte gUnk_03003BE0
_080789C0:
ldr r0, _08078A5C @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08078A56
ldr r0, _08078A60 @ =gLinkEntity
bl sub_080002D0
adds r4, r0, #0
cmp r4, #0xf
bls _080789E6
ldr r0, _08078A64 @ =gUnk_080084BC
adds r1, r4, #0
subs r1, #0x10
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0xf
beq _08078A56
_080789E6:
ldr r0, _08078A5C @ =gLinkState
ldrb r0, [r0, #0x12]
cmp r0, #0x12
beq _08078A56
ldr r3, _08078A68 @ =gUnk_03003BE0
movs r0, #1
strb r0, [r3]
ldrb r4, [r3, #2]
cmp r4, #0
beq _08078A2E
ldr r2, _08078A60 @ =gLinkEntity
ldrb r1, [r2, #0x14]
movs r0, #6
ands r0, r1
ldr r1, _08078A6C @ =gUnk_0811BFE0
adds r6, r0, r1
adds r7, r2, #0
adds r3, #8
mov r8, r3
_08078A0C:
lsls r0, r4, #2
mov r1, r8
adds r5, r0, r1
ldr r1, [r5]
cmp r1, #0
beq _08078A26
ldrb r2, [r6]
ldrb r3, [r6, #1]
adds r0, r7, #0
bl sub_0807A180
cmp r0, #0
bne _08078A74
_08078A26:
subs r4, #1
ldr r7, _08078A60 @ =gLinkEntity
cmp r4, #0
bne _08078A0C
_08078A2E:
ldr r0, _08078A60 @ =gLinkEntity
ldrb r1, [r0, #0x14]
movs r2, #6
ands r2, r1
ldr r1, _08078A70 @ =gUnk_08007DF4
adds r2, r2, r1
movs r1, #0
ldrsb r1, [r2, r1]
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
bl sub_0800029C
ldr r4, _08078A68 @ =gUnk_03003BE0
strh r0, [r4, #4]
movs r1, #6
bl sub_0806FC24
cmp r0, #0
bne _08078A84
_08078A56:
movs r0, #0
b _08078A88
.align 2, 0
_08078A5C: .4byte gLinkState
_08078A60: .4byte gLinkEntity
_08078A64: .4byte gUnk_080084BC
_08078A68: .4byte gUnk_03003BE0
_08078A6C: .4byte gUnk_0811BFE0
_08078A70: .4byte gUnk_08007DF4
_08078A74:
mov r0, r8
subs r0, #8
ldr r1, [r5]
str r1, [r0, #8]
movs r1, #2
strb r1, [r0, #1]
movs r0, #2
b _08078A88
_08078A84:
movs r0, #1
strb r0, [r4, #1]
_08078A88:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08078A90
sub_08078A90: @ 0x08078A90
push {lr}
adds r1, r0, #0
ldr r0, _08078AA4 @ =gLinkState
adds r2, r0, #0
adds r2, #0x8b
ldrb r0, [r2]
cmp r0, #3
beq _08078AA2
strb r1, [r2]
_08078AA2:
pop {pc}
.align 2, 0
_08078AA4: .4byte gLinkState
thumb_func_start sub_08078AA8
sub_08078AA8: @ 0x08078AA8
ldr r3, _08078AB8 @ =gLinkState
movs r2, #0x16
strb r2, [r3, #0xc]
ldr r2, _08078ABC @ =gUnk_030010A0
strh r0, [r2, #0x36]
adds r2, #0x35
strb r1, [r2]
bx lr
.align 2, 0
_08078AB8: .4byte gLinkState
_08078ABC: .4byte gUnk_030010A0
thumb_func_start sub_08078AC0
sub_08078AC0: @ 0x08078AC0
push {r4, lr}
ldr r3, _08078AEC @ =gLinkState
mov ip, r3
movs r3, #0xf
mov r4, ip
strb r3, [r4, #0xc]
mov r3, ip
adds r3, #0x38
strb r0, [r3]
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
mov r1, ip
adds r1, #0x39
strb r0, [r1]
rsbs r0, r2, #0
orrs r0, r2
lsrs r0, r0, #0x1f
adds r1, #1
strb r0, [r1]
pop {r4, pc}
.align 2, 0
_08078AEC: .4byte gLinkState
thumb_func_start sub_08078AF0
sub_08078AF0: @ 0x08078AF0
push {r4, lr}
ldr r3, _08078B40 @ =gLinkState
mov ip, r3
adds r3, #0x38
movs r4, #0
strb r1, [r3]
mov r1, ip
adds r1, #0x39
strb r2, [r1]
adds r1, #1
strb r4, [r1]
movs r1, #8
mov r2, ip
strb r1, [r2, #0xc]
adds r2, #0xa8
movs r1, #0x15
strb r1, [r2]
mov r1, ip
adds r1, #0x26
strb r4, [r1]
movs r1, #1
mov r3, ip
strb r1, [r3, #0x14]
ldr r2, _08078B44 @ =gLinkEntity
str r0, [r2, #0x54]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
ldrb r1, [r2, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r2, #0x11]
bl sub_0807A108
pop {r4, pc}
.align 2, 0
_08078B40: .4byte gLinkState
_08078B44: .4byte gLinkEntity
thumb_func_start sub_08078B48
sub_08078B48: @ 0x08078B48
push {lr}
ldr r1, _08078B80 @ =gLinkState
ldrb r0, [r1, #7]
movs r2, #0x80
orrs r0, r2
strb r0, [r1, #7]
ldrb r0, [r1, #0xb]
orrs r0, r2
strb r0, [r1, #0xb]
ldrb r0, [r1, #0xa]
orrs r2, r0
strb r2, [r1, #0xa]
adds r2, r1, #0
adds r2, #0x27
movs r0, #2
strb r0, [r2]
adds r0, r1, #0
adds r0, #0xa8
ldrb r0, [r0]
subs r0, #4
adds r2, r1, #0
cmp r0, #0x19
bhi _08078BF8
lsls r0, r0, #2
ldr r1, _08078B84 @ =_08078B88
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08078B80: .4byte gLinkState
_08078B84: .4byte _08078B88
_08078B88: @ jump table
.4byte _08078C04 @ case 0
.4byte _08078C04 @ case 1
.4byte _08078BF8 @ case 2
.4byte _08078BF8 @ case 3
.4byte _08078BF8 @ case 4
.4byte _08078BF0 @ case 5
.4byte _08078BF8 @ case 6
.4byte _08078BF8 @ case 7
.4byte _08078BF8 @ case 8
.4byte _08078BF8 @ case 9
.4byte _08078BF8 @ case 10
.4byte _08078BF8 @ case 11
.4byte _08078BF8 @ case 12
.4byte _08078BF8 @ case 13
.4byte _08078BF8 @ case 14
.4byte _08078BF8 @ case 15
.4byte _08078BF8 @ case 16
.4byte _08078BF8 @ case 17
.4byte _08078BF8 @ case 18
.4byte _08078BF8 @ case 19
.4byte _08078BF8 @ case 20
.4byte _08078C04 @ case 21
.4byte _08078C04 @ case 22
.4byte _08078BF8 @ case 23
.4byte _08078BF8 @ case 24
.4byte _08078C04 @ case 25
_08078BF0:
ldr r0, [r2, #0x30]
ldr r1, _08078C18 @ =0xFFFBFFFF
ands r0, r1
str r0, [r2, #0x30]
_08078BF8:
ldr r0, _08078C1C @ =gRoomVars
ldrb r0, [r0, #6]
cmp r0, #0
bne _08078C04
movs r0, #1
strb r0, [r2, #0x1a]
_08078C04:
ldr r0, _08078C20 @ =gLinkEntity
adds r0, #0x3d
movs r1, #0xfe
strb r1, [r0]
adds r1, r2, #0
adds r1, #0x8a
movs r0, #2
strb r0, [r1]
pop {pc}
.align 2, 0
_08078C18: .4byte 0xFFFBFFFF
_08078C1C: .4byte gRoomVars
_08078C20: .4byte gLinkEntity
thumb_func_start sub_08078C24
sub_08078C24: @ 0x08078C24
push {lr}
ldr r3, _08078CAC @ =gLinkState
movs r2, #0
strb r2, [r3]
strb r2, [r3, #1]
strb r2, [r3, #2]
strb r2, [r3, #3]
strb r2, [r3, #4]
strb r2, [r3, #5]
strb r2, [r3, #6]
strb r2, [r3, #7]
movs r0, #0
strh r2, [r3, #8]
strb r0, [r3, #0xa]
strb r0, [r3, #0xb]
movs r1, #0x35
adds r1, r1, r3
mov ip, r1
adds r1, r3, #0
adds r1, #0x36
strb r0, [r1]
strb r0, [r3, #0xc]
strb r0, [r3, #0xd]
strb r0, [r3, #0xe]
strb r0, [r3, #0x11]
strb r0, [r3, #0x12]
strb r0, [r3, #0x13]
strb r0, [r3, #0x14]
strb r0, [r3, #0x1b]
strb r0, [r3, #0x1e]
strb r0, [r3, #0x1f]
subs r1, #0x16
strb r0, [r1]
adds r1, #1
strb r0, [r1]
strh r2, [r3, #0x22]
strh r2, [r3, #0x24]
adds r1, #5
strb r0, [r1]
str r2, [r3, #0x2c]
adds r1, #0x5a
strh r2, [r1]
mov r1, ip
strb r0, [r1]
str r2, [r3, #0x30]
adds r1, r3, #0
adds r1, #0x38
strb r0, [r1]
adds r1, #1
strb r0, [r1]
adds r1, #1
strb r0, [r1]
adds r1, #5
strb r0, [r1]
subs r1, #3
strb r0, [r1]
movs r0, #1
rsbs r0, r0, #0
adds r1, #4
movs r2, #0x40
bl _DmaFill32
ldr r0, _08078CB0 @ =gUnk_03003DF0
movs r1, #0xc4
lsls r1, r1, #1
bl sub_0801D630
pop {pc}
.align 2, 0
_08078CAC: .4byte gLinkState
_08078CB0: .4byte gUnk_03003DF0
thumb_func_start sub_08078CB4
sub_08078CB4: @ 0x08078CB4
push {lr}
ldr r0, _08078CCC @ =gLinkState
ldrb r0, [r0, #5]
subs r0, #3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _08078CC8
bl sub_08078D60
_08078CC8:
pop {pc}
.align 2, 0
_08078CCC: .4byte gLinkState
thumb_func_start sub_08078CD0
sub_08078CD0: @ 0x08078CD0
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x70]
ldrh r0, [r5, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
ldrb r1, [r5, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1b]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
ldr r1, _08078D28 @ =gUnk_0811C01C
ldr r0, _08078D2C @ =gLinkState
ldr r0, [r0, #0x2c]
ldrb r0, [r0, #0x1e]
adds r0, r0, r1
ldrb r2, [r0]
ldr r3, _08078D30 @ =gUnk_0811C0B0
ldrb r1, [r4, #0x1c]
movs r0, #0x30
ands r0, r1
lsrs r0, r0, #2
adds r0, r0, r3
lsls r2, r2, #1
ldr r0, [r0]
adds r2, r0, r2
ldrb r0, [r5, #0x18]
lsls r0, r0, #0x19
cmp r0, #0
bge _08078D34
movs r1, #0
ldrsb r1, [r2, r1]
ldrh r0, [r5, #0x2e]
subs r0, r0, r1
b _08078D3C
.align 2, 0
_08078D28: .4byte gUnk_0811C01C
_08078D2C: .4byte gLinkState
_08078D30: .4byte gUnk_0811C0B0
_08078D34:
movs r0, #0
ldrsb r0, [r2, r0]
ldrh r1, [r5, #0x2e]
adds r0, r0, r1
_08078D3C:
strh r0, [r4, #0x2e]
movs r0, #1
ldrsb r0, [r2, r0]
ldrh r1, [r5, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r0, r5, #0
movs r1, #0
adds r2, r4, #0
bl sub_0806FEBC
ldr r1, [r4, #0x50]
cmp r1, #0
beq _08078D5E
adds r0, r4, #0
bl CopyPosition
_08078D5E:
pop {r4, r5, pc}
thumb_func_start sub_08078D60
sub_08078D60: @ 0x08078D60
push {r4, r5, r6, lr}
ldr r1, _08078DCC @ =gLinkEntity
ldr r0, [r1, #0x74]
ldr r4, [r0, #0x54]
ldrb r0, [r4, #0xc]
adds r6, r1, #0
cmp r0, #2
beq _08078D72
b _08078E82
_08078D72:
adds r0, r6, #0
adds r0, #0x63
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r6, #0x36]
adds r0, r0, r1
strh r0, [r4, #0x36]
ldrb r1, [r6, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1b]
adds r0, r6, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r6, #0
adds r0, #0x5a
ldrb r0, [r0]
movs r2, #0x7f
ands r2, r0
ldr r1, _08078DD0 @ =gUnk_0811C0E8
ldrb r0, [r4, #0x16]
lsrs r0, r0, #4
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
ldrb r0, [r6, #0x18]
lsls r0, r0, #0x19
cmp r0, #0
bge _08078DD4
adds r2, r1, r2
movs r1, #0
ldrsb r1, [r2, r1]
ldrh r0, [r6, #0x2e]
subs r0, r0, r1
strh r0, [r4, #0x2e]
adds r1, r2, #0
b _08078DE0
.align 2, 0
_08078DCC: .4byte gLinkEntity
_08078DD0: .4byte gUnk_0811C0E8
_08078DD4:
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r2, [r6, #0x2e]
adds r0, r0, r2
strh r0, [r4, #0x2e]
_08078DE0:
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r4, #0x36]
adds r0, r0, r1
strh r0, [r4, #0x36]
adds r5, r6, #0
ldrh r0, [r5, #0x32]
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r1, r4, #0
bl sub_0806FAB0
ldr r0, _08078E34 @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #4
bne _08078E4C
ldrb r1, [r5, #0x19]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r4, #0x19]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
bl sub_0806F8DC
ldrb r1, [r4, #0x16]
movs r0, #0xf
ands r0, r1
cmp r0, #2
bne _08078E82
ldr r0, _08078E38 @ =gUnk_030010A0
ldr r1, [r0]
movs r0, #3
ands r1, r0
cmp r1, #1
beq _08078E3C
cmp r1, #3
beq _08078E44
b _08078E82
.align 2, 0
_08078E34: .4byte gLinkState
_08078E38: .4byte gUnk_030010A0
_08078E3C:
ldrh r0, [r4, #0x2e]
adds r0, #1
strh r0, [r4, #0x2e]
b _08078E82
_08078E44:
ldrh r0, [r4, #0x2e]
subs r0, #1
strh r0, [r4, #0x2e]
b _08078E82
_08078E4C:
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
cmp r0, #0
beq _08078E62
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
b _08078E6E
_08078E62:
adds r0, r6, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
adds r1, #1
_08078E6E:
adds r3, r4, #0
adds r3, #0x29
movs r0, #7
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
_08078E82:
pop {r4, r5, r6, pc}
thumb_func_start sub_08078E84
sub_08078E84: @ 0x08078E84
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r1, #0
ldr r0, _08078ED0 @ =gLinkEntity
cmp r4, r0
bne _08078EAC
adds r0, r5, #0
bl sub_08079BD8
adds r0, r4, #0
adds r0, #0x62
ldrb r0, [r0]
adds r1, r5, #0
adds r1, #0x62
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x63
ldrb r0, [r0]
adds r1, #1
strb r0, [r1]
_08078EAC:
ldr r0, _08078ED4 @ =gUnk_080029B4
ldrh r2, [r4, #0x12]
lsls r2, r2, #4
adds r0, #4
adds r2, r2, r0
ldrb r1, [r4, #0x1e]
lsls r1, r1, #2
ldr r0, [r2]
adds r0, r0, r1
ldrb r0, [r0, #1]
cmp r0, #0
beq _08078ED8
adds r0, r4, #0
movs r1, #1
adds r2, r5, #0
bl sub_0806FEBC
b _08078EE2
.align 2, 0
_08078ED0: .4byte gLinkEntity
_08078ED4: .4byte gUnk_080029B4
_08078ED8:
adds r0, r4, #0
movs r1, #3
adds r2, r5, #0
bl sub_0806FEBC
_08078EE2:
pop {r4, r5, pc}
thumb_func_start sub_08078EE4
sub_08078EE4: @ 0x08078EE4
ldr r2, _08078EF4 @ =gLinkEntity
ldr r1, _08078EF8 @ =gLinkState
ldrh r0, [r1, #0x16]
strh r0, [r2, #0x2e]
ldrh r0, [r1, #0x18]
strh r0, [r2, #0x32]
bx lr
.align 2, 0
_08078EF4: .4byte gLinkEntity
_08078EF8: .4byte gLinkState
thumb_func_start sub_08078EFC
sub_08078EFC: @ 0x08078EFC
push {lr}
ldr r3, _08078F18 @ =gLinkState
ldrb r2, [r3, #0xc]
cmp r2, #0
beq _08078F20
ldr r0, _08078F1C @ =gLinkEntity
movs r1, #0
strb r2, [r0, #0xc]
strb r1, [r0, #0xd]
strb r1, [r3, #0xc]
bl sub_08070680
movs r0, #1
b _08078F22
.align 2, 0
_08078F18: .4byte gLinkState
_08078F1C: .4byte gLinkEntity
_08078F20:
movs r0, #0
_08078F22:
pop {pc}
thumb_func_start sub_08078F24
sub_08078F24: @ 0x08078F24
push {r4, lr}
ldr r4, _08078F38 @ =gLinkState
ldrb r3, [r4, #0xd]
movs r0, #0x80
ands r0, r3
cmp r0, #0
beq _08078F3C
bl sub_08078F60
b _08078F5A
.align 2, 0
_08078F38: .4byte gLinkState
_08078F3C:
ldr r2, _08078F5C @ =gSineTable
lsls r0, r3, #4
adds r0, r0, r2
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x8c
strh r1, [r0]
lsls r0, r3, #4
adds r0, #0x80
adds r0, r0, r2
ldrh r0, [r0]
rsbs r0, r0, #0
adds r1, r4, #0
adds r1, #0x8e
strh r0, [r1]
_08078F5A:
pop {r4, pc}
.align 2, 0
_08078F5C: .4byte gSineTable
thumb_func_start sub_08078F60
sub_08078F60: @ 0x08078F60
ldr r0, _08078F70 @ =gLinkState
adds r1, r0, #0
adds r1, #0x8c
movs r2, #0
strh r2, [r1]
adds r0, #0x8e
strh r2, [r0]
bx lr
.align 2, 0
_08078F70: .4byte gLinkState
thumb_func_start sub_08078F74
sub_08078F74: @ 0x08078F74
push {lr}
adds r2, r0, #0
ldr r0, _08078FA4 @ =gArea
ldrb r0, [r0, #0x18]
cmp r0, #3
bne _08078FAC
ldr r3, _08078FA8 @ =gLinkState
adds r0, r3, #0
adds r0, #0x35
ldrb r0, [r0]
cmp r0, #0xff
beq _08078FAC
movs r1, #0
movs r0, #0x81
strb r0, [r3, #2]
movs r0, #0x15
strb r0, [r2, #0xc]
strb r1, [r2, #0xd]
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r2, #0x20]
movs r0, #1
b _08078FAE
.align 2, 0
_08078FA4: .4byte gArea
_08078FA8: .4byte gLinkState
_08078FAC:
movs r0, #0
_08078FAE:
pop {pc}
thumb_func_start sub_08078FB0
sub_08078FB0: @ 0x08078FB0
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r5, _08078FE0 @ =gLinkState
ldrb r1, [r5, #6]
movs r6, #0x80
adds r0, r6, #0
ands r0, r1
cmp r0, #0
bne _08078FCA
adds r1, r5, #0
adds r1, #0x35
movs r0, #0xff
strb r0, [r1]
_08078FCA:
adds r0, r4, #0
bl sub_08079064
ldr r1, [r5, #0x30]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08078FE4
movs r2, #0x58
b _08078FFA
.align 2, 0
_08078FE0: .4byte gLinkState
_08078FE4:
ands r1, r6
cmp r1, #0
beq _08078FEE
movs r2, #0x18
b _08078FFA
_08078FEE:
ldrh r0, [r5, #8]
lsrs r0, r0, #8
movs r2, #0xb8
cmp r0, #7
bne _08078FFA
movs r2, #0x34
_08078FFA:
ldr r0, _08079014 @ =gLinkState
adds r3, r0, #0
ldrb r1, [r0, #8]
cmp r2, r1
bls _08079040
ldrb r0, [r4, #0x14]
adds r2, r0, #0
cmp r2, #4
bls _08079018
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
b _08079020
.align 2, 0
_08079014: .4byte gLinkState
_08079018:
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
_08079020:
strb r0, [r4, #0x18]
ldr r0, [r3, #0x30]
movs r1, #0x80
lsls r1, r1, #0xc
ands r0, r1
cmp r0, #0
beq _08079036
ldrh r1, [r3, #8]
ldrb r0, [r4, #0x14]
adds r2, r1, r0
b _08079042
_08079036:
lsls r0, r2, #0x18
lsrs r0, r0, #0x19
ldrh r3, [r3, #8]
adds r2, r0, r3
b _08079042
_08079040:
ldrh r2, [r0, #8]
_08079042:
ldrh r0, [r4, #0x12]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x58
ldrb r1, [r1]
orrs r0, r1
cmp r2, r0
beq _08079062
lsrs r0, r2, #8
strh r0, [r4, #0x12]
movs r0, #0xff
ands r2, r0
adds r0, r4, #0
adds r1, r2, #0
bl InitAnimationForceUpdate
_08079062:
pop {r4, r5, r6, pc}
thumb_func_start sub_08079064
sub_08079064: @ 0x08079064
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r0, _0807909C @ =gLinkState
ldr r1, [r0, #0x30]
ldr r2, _080790A0 @ =0x00100080
ands r1, r2
adds r5, r0, #0
cmp r1, #0
bne _080790DE
movs r3, #0
movs r2, #0
ldr r1, _080790A4 @ =gUnk_03000B80
_0807907C:
ldrb r0, [r1, #0xf]
cmp r0, r3
bls _08079086
adds r3, r0, #0
ldrh r4, [r1, #0x10]
_08079086:
adds r1, #0x1c
adds r2, #1
cmp r2, #3
bls _0807907C
adds r2, r5, #0
ldrb r0, [r2, #0xe]
cmp r0, r3
bhs _080790A8
strh r4, [r2, #8]
b _080790DE
.align 2, 0
_0807909C: .4byte gLinkState
_080790A0: .4byte 0x00100080
_080790A4: .4byte gUnk_03000B80
_080790A8:
adds r0, r2, #0
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080790C0
ldr r0, _080790BC @ =0x000002BE
strh r0, [r2, #8]
b _080790DE
.align 2, 0
_080790BC: .4byte 0x000002BE
_080790C0:
ldrh r1, [r5, #8]
movs r0, #0xc1
lsls r0, r0, #3
cmp r1, r0
beq _080790D8
movs r0, #0x82
lsls r0, r0, #1
cmp r1, r0
beq _080790D8
ldr r0, _080790E0 @ =0x00000404
cmp r1, r0
bne _080790DE
_080790D8:
adds r0, r6, #0
bl sub_080790E4
_080790DE:
pop {r4, r5, r6, pc}
.align 2, 0
_080790E0: .4byte 0x00000404
thumb_func_start sub_080790E4
sub_080790E4: @ 0x080790E4
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _08079128 @ =gLinkState
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _08079182
movs r0, #0x10
bl sub_080793E4
cmp r0, #0
beq _0807912C
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0x14
strb r0, [r1]
adds r1, #5
movs r0, #4
strb r0, [r1]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
movs r0, #2
rsbs r0, r0, #0
bl ModHealth
movs r0, #0x7a
bl PlaySFX
b _08079182
.align 2, 0
_08079128: .4byte gLinkState
_0807912C:
ldrb r1, [r5, #6]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08079182
cmp r1, #0
bne _08079150
movs r0, #1
bl sub_080793E4
cmp r0, #0
beq _0807914C
ldrb r0, [r4, #0xf]
cmp r0, #5
bhi _08079154
adds r0, #1
_0807914C:
strb r0, [r4, #0xf]
b _08079182
_08079150:
subs r0, r1, #1
strb r0, [r5, #6]
_08079154:
ldr r2, _08079174 @ =gLinkState
ldrb r0, [r4, #0x14]
adds r1, r2, #0
adds r1, #0x35
strb r0, [r1]
adds r1, #0x73
movs r0, #0x19
strb r0, [r1]
ldr r0, [r2, #0x30]
movs r1, #8
ands r0, r1
cmp r0, #0
beq _0807917C
ldr r0, _08079178 @ =0x0000093C
b _08079180
.align 2, 0
_08079174: .4byte gLinkState
_08079178: .4byte 0x0000093C
_0807917C:
movs r0, #0xcf
lsls r0, r0, #2
_08079180:
strh r0, [r2, #8]
_08079182:
pop {r4, r5, pc}
thumb_func_start sub_08079184
sub_08079184: @ 0x08079184
ldr r0, _08079194 @ =gLinkState
movs r1, #0
strb r1, [r0, #5]
strb r1, [r0, #1]
ldr r0, _08079198 @ =gLinkEntity
str r1, [r0, #0x74]
bx lr
.align 2, 0
_08079194: .4byte gLinkState
_08079198: .4byte gLinkEntity
thumb_func_start sub_0807919C
sub_0807919C: @ 0x0807919C
push {lr}
ldr r0, _080791B0 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080791B4
bl sub_080791BC
b _080791B8
.align 2, 0
_080791B0: .4byte gLinkState
_080791B4:
bl sub_08079258
_080791B8:
pop {pc}
.align 2, 0
thumb_func_start sub_080791BC
sub_080791BC: @ 0x080791BC
ldr r0, _080791CC @ =gLinkEntity
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
strb r2, [r0, #0xf]
bx lr
.align 2, 0
_080791CC: .4byte gLinkEntity
thumb_func_start sub_080791D0
sub_080791D0: @ 0x080791D0
push {lr}
ldr r3, _0807920C @ =gLinkState
ldr r0, [r3, #0x30]
movs r1, #0x40
ands r0, r1
cmp r0, #0
bne _080791E8
ldr r0, _08079210 @ =gLinkEntity
ldrb r1, [r0, #0x18]
movs r2, #3
orrs r1, r2
strb r1, [r0, #0x18]
_080791E8:
ldr r0, [r3, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08079214
ldr r2, _08079210 @ =gLinkEntity
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]
bl sub_0807921C
b _08079218
.align 2, 0
_0807920C: .4byte gLinkState
_08079210: .4byte gLinkEntity
_08079214:
bl sub_08079258
_08079218:
pop {pc}
.align 2, 0
thumb_func_start sub_0807921C
sub_0807921C: @ 0x0807921C
push {r4, lr}
ldr r4, _0807924C @ =gLinkEntity
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldr r2, _08079250 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _08079254 @ =0xFECBF6FA
ands r0, r1
str r0, [r2, #0x30]
bl sub_08079938
bl sub_080791BC
adds r0, r4, #0
bl sub_0805E374
pop {r4, pc}
.align 2, 0
_0807924C: .4byte gLinkEntity
_08079250: .4byte gLinkState
_08079254: .4byte 0xFECBF6FA
thumb_func_start sub_08079258
sub_08079258: @ 0x08079258
push {r4, lr}
ldr r4, _080792AC @ =gLinkState
ldr r0, [r4, #0x30]
movs r1, #0x40
ands r0, r1
ldr r3, _080792B0 @ =gLinkEntity
cmp r0, #0
bne _08079278
ldrb r1, [r3, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r3, #0x10]
ldrb r0, [r3, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r3, #0x18]
_08079278:
movs r0, #9
strb r0, [r3, #0xc]
movs r0, #1
strb r0, [r3, #0xd]
adds r2, r3, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0xfb
ands r0, r1
strb r0, [r2]
movs r2, #0
ldr r0, _080792B4 @ =0x00000C18
strh r0, [r4, #8]
ldr r0, [r4, #0x30]
ldr r1, _080792B8 @ =0xFECFFEFA
ands r0, r1
str r0, [r4, #0x30]
adds r0, r4, #0
adds r0, #0x26
strb r2, [r0]
strb r2, [r4, #0xc]
adds r0, r3, #0
bl sub_0805E374
pop {r4, pc}
.align 2, 0
_080792AC: .4byte gLinkState
_080792B0: .4byte gLinkEntity
_080792B4: .4byte 0x00000C18
_080792B8: .4byte 0xFECFFEFA
thumb_func_start sub_080792BC
sub_080792BC: @ 0x080792BC
push {r4, lr}
ldr r3, _080792D0 @ =gLinkState
movs r4, #0x13
strb r4, [r3, #0xc]
adds r3, #0x38
strb r2, [r3]
ldr r2, _080792D4 @ =gLinkEntity
strh r0, [r2, #0x24]
strb r1, [r2, #0x15]
pop {r4, pc}
.align 2, 0
_080792D0: .4byte gLinkState
_080792D4: .4byte gLinkEntity
thumb_func_start sub_080792D8
sub_080792D8: @ 0x080792D8
push {r4, r5, r6, lr}
ldr r5, _08079344 @ =gLinkEntity
adds r3, r5, #0
adds r3, #0x42
ldrb r0, [r3]
cmp r0, #0
beq _080793E0
ldrb r2, [r5, #0xc]
cmp r2, #0xb
beq _08079338
ldr r0, _08079348 @ =gLinkState
ldrb r1, [r0, #0x1e]
adds r6, r0, #0
cmp r1, #0
bne _08079338
ldrb r0, [r6, #5]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #3
bls _08079338
ldrb r0, [r6, #2]
cmp r0, #0
bne _08079338
ldrb r0, [r6, #0x12]
cmp r0, #0xff
beq _08079338
ldrb r1, [r6, #7]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08079338
adds r0, r6, #0
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
subs r0, #1
cmp r0, #0
bgt _08079338
cmp r2, #3
beq _08079338
ldr r1, [r6, #0x30]
movs r0, #0x80
lsls r0, r0, #0xb
ands r1, r0
cmp r1, #0
beq _0807934C
_08079338:
adds r1, r5, #0
adds r1, #0x42
movs r0, #0
strb r0, [r1]
b _080793E0
.align 2, 0
_08079344: .4byte gLinkEntity
_08079348: .4byte gLinkState
_0807934C:
cmp r2, #0x1d
bne _0807935E
adds r0, r5, #0
adds r0, #0x3e
ldrb r0, [r0]
cmp r0, #0x10
beq _0807935E
strb r1, [r3]
b _080793E0
_0807935E:
adds r0, r5, #0
adds r0, #0x42
ldrb r3, [r0]
movs r1, #0
ldrsb r1, [r0, r1]
adds r2, r0, #0
cmp r1, #0
ble _08079372
subs r0, r3, #1
b _08079374
_08079372:
adds r0, r3, #1
_08079374:
strb r0, [r2]
ldrb r0, [r2]
cmp r0, #0
beq _080793E0
adds r4, r6, #0
ldrb r0, [r4, #7]
movs r1, #0xdf
ands r1, r0
strb r1, [r4, #7]
adds r0, r5, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _080793CA
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _080793CA
ldr r0, [r4, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _080793CA
ldrb r0, [r4, #2]
cmp r0, #0
bne _080793CA
bl sub_08077B2C
ldr r0, [r4, #0x30]
movs r1, #8
ands r0, r1
cmp r0, #0
bne _080793C4
movs r0, #0x8a
lsls r0, r0, #1
strh r0, [r4, #8]
b _080793CA
_080793C4:
movs r0, #0x83
lsls r0, r0, #3
strh r0, [r6, #8]
_080793CA:
movs r1, #0xa0
lsls r1, r1, #2
adds r4, r5, #0
adds r4, #0x3e
ldrb r2, [r4]
adds r0, r5, #0
bl sub_080027EA
ldrb r0, [r4]
bl sub_0807A5B8
_080793E0:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080793E4
sub_080793E4: @ 0x080793E4
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _080793FC @ =gLinkState
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _08079408
ldr r1, _08079400 @ =gUnk_0811C0F8
ldr r0, _08079404 @ =gLinkEntity
ldrb r0, [r0, #0x14]
lsrs r0, r0, #1
b _08079410
.align 2, 0
_080793FC: .4byte gLinkState
_08079400: .4byte gUnk_0811C0F8
_08079404: .4byte gLinkEntity
_08079408:
ldr r1, _08079448 @ =gUnk_0811C0F8
ldr r0, _0807944C @ =gLinkEntity
ldrb r0, [r0, #0x15]
lsrs r0, r0, #2
_08079410:
lsls r0, r0, #1
adds r0, r0, r1
ldrh r4, [r0]
bl sub_08079778
cmp r0, #0
beq _08079454
ldr r0, _08079450 @ =gLinkState
adds r0, #0x90
ldrh r0, [r0]
ands r0, r4
cmp r0, #0
beq _08079454
cmp r5, #0
beq _08079442
bl sub_0807A500
ldr r1, _0807944C @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
adds r2, r5, #0
bl sub_080002F0
cmp r0, #0
beq _08079454
_08079442:
movs r0, #1
b _08079456
.align 2, 0
_08079448: .4byte gUnk_0811C0F8
_0807944C: .4byte gLinkEntity
_08079450: .4byte gLinkState
_08079454:
movs r0, #0
_08079456:
pop {r4, r5, pc}
thumb_func_start sub_08079458
sub_08079458: @ 0x08079458
push {r4, r5, lr}
ldr r4, _08079498 @ =gLinkEntity
movs r1, #0
movs r0, #0x19
strb r0, [r4, #0xc]
str r1, [r4, #0x34]
str r1, [r4, #0x20]
adds r0, r4, #0
adds r0, #0x42
strb r1, [r0]
bl sub_08078EE4
ldr r2, _0807949C @ =gLinkState
ldr r1, [r2, #0x30]
movs r0, #0x80
lsls r0, r0, #0xa
ands r0, r1
cmp r0, #0
bne _08079514
movs r0, #0x80
lsls r0, r0, #9
ands r1, r0
cmp r1, #0
beq _080794E4
adds r0, r2, #0
adds r0, #0x84
ldr r1, [r0]
ldrh r0, [r1, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #0x32]
strh r0, [r4, #0x32]
b _08079514
.align 2, 0
_08079498: .4byte gLinkEntity
_0807949C: .4byte gLinkState
_080794A0:
ldr r2, _080794DC @ =gLinkEntity
ldr r0, [r4]
lsrs r0, r0, #0x1e
adds r1, r2, #0
adds r1, #0x38
strb r0, [r1]
ldr r3, _080794E0 @ =gRoomControls
ldr r0, [r4]
movs r1, #0x3f
ands r0, r1
lsls r0, r0, #4
ldrh r1, [r3, #6]
adds r0, r0, r1
adds r0, #8
strh r0, [r2, #0x2e]
ldr r0, [r4]
movs r1, #0xfc
lsls r1, r1, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r3, [r3, #8]
adds r0, r0, r3
adds r0, #8
strh r0, [r2, #0x32]
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
b _08079514
.align 2, 0
_080794DC: .4byte gLinkEntity
_080794E0: .4byte gRoomControls
_080794E4:
movs r5, #0
ldr r1, [r2, #0x40]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
beq _08079514
adds r4, r2, #0
adds r4, #0x40
_080794F4:
ldr r1, [r4]
ldrh r0, [r4]
lsrs r1, r1, #0x1e
bl sub_080002E0
cmp r0, #0xf
bne _080794A0
adds r4, #4
adds r5, #1
cmp r5, #0xf
bhi _08079514
ldr r1, [r4]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _080794F4
_08079514:
ldr r0, _0807951C @ =gLinkEntity
bl UpdateSpriteOrderAndFlip
pop {r4, r5, pc}
.align 2, 0
_0807951C: .4byte gLinkEntity
thumb_func_start sub_08079520
sub_08079520: @ 0x08079520
push {lr}
adds r1, r0, #0
ldr r0, _08079538 @ =gLinkState
ldrb r0, [r0, #0xd]
cmp r0, #0x7f
ble _08079532
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #3
_08079532:
strb r0, [r1, #0x15]
pop {pc}
.align 2, 0
_08079538: .4byte gLinkState
thumb_func_start sub_0807953C
sub_0807953C: @ 0x0807953C
ldr r1, _08079548 @ =0x00000F38
ldr r0, _0807954C @ =gLinkState
adds r0, #0x92
ldrh r0, [r0]
ands r0, r1
bx lr
.align 2, 0
_08079548: .4byte 0x00000F38
_0807954C: .4byte gLinkState
thumb_func_start sub_08079550
sub_08079550: @ 0x08079550
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
ldr r0, _080795A8 @ =gUnk_03004030
ldrb r0, [r0, #8]
cmp r0, #0
beq _08079562
b _080796FC
_08079562:
ldr r2, _080795AC @ =gLinkState
ldrb r0, [r2, #0x1e]
cmp r0, #0
beq _08079576
ldr r0, [r2, #0x30]
movs r1, #0x80
lsls r1, r1, #3
ands r0, r1
cmp r0, #0
beq _080795B4
_08079576:
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
ldr r1, _080795B0 @ =gLinkEntity
mov r8, r1
cmp r0, #0
bne _080795A0
ldrb r1, [r2, #0x1b]
movs r0, #0x40
ands r0, r1
cmp r0, #0
bne _080795A0
mov r3, r8
ldrb r1, [r3, #0x15]
ldrb r2, [r2, #0xd]
cmp r1, r2
bne _080795A0
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080795B4
_080795A0:
movs r0, #0
mov r5, r8
strb r0, [r5, #0xf]
b _080796FE
.align 2, 0
_080795A8: .4byte gUnk_03004030
_080795AC: .4byte gLinkState
_080795B0: .4byte gLinkEntity
_080795B4:
bl sub_08079778
cmp r0, #0
bne _080795BE
b _080796FC
_080795BE:
ldr r3, _08079610 @ =gLinkEntity
ldrb r2, [r3, #0x14]
movs r0, #6
ands r0, r2
ldr r1, _08079614 @ =gUnk_0811C100
adds r1, r0, r1
movs r0, #2
ands r0, r2
mov r8, r3
cmp r0, #0
beq _0807961C
movs r6, #0x2e
ldrsh r2, [r3, r6]
movs r0, #0
ldrsb r0, [r1, r0]
adds r2, r2, r0
ldr r4, _08079618 @ =gRoomControls
ldrh r0, [r4, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
mov r0, r8
movs r5, #0x32
ldrsh r1, [r0, r5]
ldr r0, [r0, #0x48]
ldrb r5, [r0, #3]
adds r0, r1, r5
ldrh r4, [r4, #8]
subs r0, r0, r4
asrs r0, r0, #4
ands r0, r3
lsls r7, r0, #6
orrs r7, r2
subs r1, r1, r5
subs r1, r1, r4
asrs r1, r1, #4
ands r1, r3
lsls r4, r1, #6
orrs r4, r2
b _0807965E
.align 2, 0
_08079610: .4byte gLinkEntity
_08079614: .4byte gUnk_0811C100
_08079618: .4byte gRoomControls
_0807961C:
mov r6, r8
movs r0, #0x2e
ldrsh r2, [r6, r0]
ldr r0, [r6, #0x48]
ldrb r0, [r0, #4]
mov ip, r0
adds r0, r2, r0
ldr r4, _080796EC @ =gRoomControls
ldrh r3, [r4, #6]
mov sb, r3
subs r0, r0, r3
asrs r7, r0, #4
movs r3, #0x3f
ands r7, r3
movs r5, #0x32
ldrsh r0, [r6, r5]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
ldrh r1, [r4, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r7, r0
mov r6, ip
subs r2, r2, r6
mov r1, sb
subs r2, r2, r1
asrs r4, r2, #4
ands r4, r3
orrs r4, r0
_0807965E:
adds r0, r7, #0
mov r5, r8
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
adds r3, r0, #0
ldr r6, _080796F0 @ =gUnk_0811C1E8
mov r1, r8
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r6
ldr r1, [r0]
adds r0, r3, #0
bl sub_08007DD6
adds r3, r0, #0
cmp r3, #0
beq _080796FC
adds r0, r4, #0
ldrb r1, [r5]
bl sub_080002C8
adds r3, r0, #0
mov r5, r8
ldrb r0, [r5, #0x14]
lsrs r0, r0, #1
lsls r0, r0, #2
adds r0, r0, r6
ldr r1, [r0]
adds r0, r3, #0
bl sub_08007DD6
adds r3, r0, #0
cmp r3, #0
beq _080796FC
ldr r1, _080796F4 @ =gLinkState
ldrb r2, [r1, #6]
movs r0, #0x80
orrs r0, r2
strb r0, [r1, #6]
ldrb r0, [r1, #0x1e]
adds r4, r1, #0
cmp r0, #0
bne _080796C8
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #5
bls _080796FC
_080796C8:
ldr r0, _080796F8 @ =gLinkEntity
subs r1, r3, #1
movs r2, #0
strb r1, [r0, #0x14]
movs r1, #4
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #0x81
strb r1, [r4, #2]
bl sub_08070680
movs r0, #1
b _080796FE
.align 2, 0
_080796EC: .4byte gRoomControls
_080796F0: .4byte gUnk_0811C1E8
_080796F4: .4byte gLinkState
_080796F8: .4byte gLinkEntity
_080796FC:
movs r0, #0
_080796FE:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08079708
sub_08079708: @ 0x08079708
push {r4, lr}
ldr r4, _08079740 @ =gLinkState
adds r2, r4, #0
adds r2, #0xa8
movs r3, #0
movs r1, #0x12
strb r1, [r2]
subs r2, #0x6c
movs r1, #0xff
strb r1, [r2]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #0xa
strb r1, [r0, #0xc]
strb r3, [r0, #0xd]
bl sub_080085B0
ldr r0, [r4, #0x30]
movs r1, #0x88
lsls r1, r1, #1
ands r0, r1
cmp r0, #0
bne _0807973E
bl sub_0805E544
_0807973E:
pop {r4, pc}
.align 2, 0
_08079740: .4byte gLinkState
thumb_func_start sub_08079744
sub_08079744: @ 0x08079744
push {lr}
adds r2, r0, #0
ldrh r0, [r2, #0x2e]
movs r1, #0xf
ands r1, r0
cmp r1, #8
beq _0807975E
cmp r1, #8
ble _0807975A
subs r0, #1
b _0807975C
_0807975A:
adds r0, #1
_0807975C:
strh r0, [r2, #0x2e]
_0807975E:
ldrh r0, [r2, #0x32]
movs r1, #0xf
ands r1, r0
cmp r1, #8
beq _08079774
cmp r1, #8
ble _08079770
subs r0, #1
b _08079772
_08079770:
adds r0, #1
_08079772:
strh r0, [r2, #0x32]
_08079774:
pop {pc}
.align 2, 0
thumb_func_start sub_08079778
sub_08079778: @ 0x08079778
push {lr}
ldr r0, _08079790 @ =gLinkState
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _0807979C
ldr r2, _08079794 @ =gUnk_0811C108
ldr r1, _08079798 @ =gLinkEntity
ldrb r0, [r1, #0x14]
lsrs r0, r0, #1
b _080797A4
.align 2, 0
_08079790: .4byte gLinkState
_08079794: .4byte gUnk_0811C108
_08079798: .4byte gLinkEntity
_0807979C:
ldr r2, _080797BC @ =gUnk_0811C108
ldr r1, _080797C0 @ =gLinkEntity
ldrb r0, [r1, #0x15]
lsrs r0, r0, #2
_080797A4:
lsls r0, r0, #1
adds r0, r0, r2
ldrh r2, [r0]
movs r3, #0
ldrh r0, [r1, #0x2a]
ands r0, r2
cmp r2, r0
bne _080797B6
movs r3, #1
_080797B6:
adds r0, r3, #0
pop {pc}
.align 2, 0
_080797BC: .4byte gUnk_0811C108
_080797C0: .4byte gLinkEntity
thumb_func_start sub_080797C4
sub_080797C4: @ 0x080797C4
push {lr}
ldr r1, _080797E4 @ =gUnk_0811C110
ldr r2, _080797E8 @ =gLinkEntity
ldrb r0, [r2, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
movs r3, #0
ldrh r0, [r2, #0x2a]
ands r0, r1
cmp r1, r0
bne _080797E0
movs r3, #1
_080797E0:
adds r0, r3, #0
pop {pc}
.align 2, 0
_080797E4: .4byte gUnk_0811C110
_080797E8: .4byte gLinkEntity
thumb_func_start sub_080797EC
sub_080797EC: @ 0x080797EC
push {r4, r5, lr}
ldr r4, _08079804 @ =gLinkState
ldr r1, [r4, #0x30]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807985C
ldrb r0, [r4, #5]
cmp r0, #0
beq _0807980C
ldr r5, _08079808 @ =0x00000934
b _0807991E
.align 2, 0
_08079804: .4byte gLinkState
_08079808: .4byte 0x00000934
_0807980C:
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079818
movs r5, #0x82
lsls r5, r5, #3
b _0807991E
_08079818:
adds r0, r4, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
bne _080798A0
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
movs r5, #0xa4
lsls r5, r5, #2
cmp r0, #0
bne _0807991E
movs r5, #0xb6
lsls r5, r5, #1
ldrb r1, [r4, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
bne _080798C2
lsls r0, r1, #0x18
cmp r0, #0
bne _080798CE
adds r1, r4, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _08079852
movs r0, #1
strb r0, [r1]
_08079852:
ldr r5, _08079858 @ =0x00000404
b _0807991E
.align 2, 0
_08079858: .4byte 0x00000404
_0807985C:
ldrb r0, [r4, #0x1c]
cmp r0, #0
bne _0807992E
ldrb r0, [r4, #5]
cmp r0, #0
beq _0807986E
movs r5, #0xd2
lsls r5, r5, #2
b _0807991E
_0807986E:
ldrb r0, [r4, #0x1e]
cmp r0, #0
beq _0807987A
movs r5, #0xa6
lsls r5, r5, #2
b _0807991E
_0807987A:
movs r0, #0x80
lsls r0, r0, #5
ands r1, r0
cmp r1, #0
beq _0807988A
movs r5, #0xe2
lsls r5, r5, #3
b _0807991E
_0807988A:
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079896
movs r5, #0xb0
lsls r5, r5, #1
b _0807991E
_08079896:
adds r0, r4, #0
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _080798A6
_080798A0:
movs r5, #0xa1
lsls r5, r5, #2
b _0807991E
_080798A6:
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
movs r5, #0xa4
lsls r5, r5, #2
cmp r0, #0
bne _0807991E
movs r5, #0xb6
lsls r5, r5, #1
ldrb r1, [r4, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
beq _080798C8
_080798C2:
movs r0, #0x6c
strb r0, [r4]
b _0807992E
_080798C8:
lsls r0, r1, #0x18
cmp r0, #0
beq _080798FC
_080798CE:
movs r0, #0
bl sub_080793E4
cmp r0, #0
beq _0807991E
bl sub_0807A500
ldr r1, _080798F8 @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002E0
cmp r0, #0xff
beq _0807991E
ldrb r1, [r4, #0x1b]
movs r0, #0xf7
ands r0, r1
strb r0, [r4, #0x1b]
movs r5, #0xb8
lsls r5, r5, #1
b _0807991E
.align 2, 0
_080798F8: .4byte gLinkEntity
_080798FC:
adds r1, r4, #0
adds r1, #0xa8
ldrb r0, [r1]
cmp r0, #0
bne _0807990A
movs r0, #1
strb r0, [r1]
_0807990A:
ldr r0, [r4, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
movs r5, #0x82
lsls r5, r5, #1
cmp r0, #0
beq _0807991E
movs r5, #0xc1
lsls r5, r5, #3
_0807991E:
ldr r0, _08079930 @ =gLinkState
strh r5, [r0, #8]
ldrb r0, [r0, #3]
cmp r0, #0
bne _0807992E
ldr r0, _08079934 @ =gLinkEntity
bl UpdateAnimationSingleFrame
_0807992E:
pop {r4, r5, pc}
.align 2, 0
_08079930: .4byte gLinkState
_08079934: .4byte gLinkEntity
thumb_func_start sub_08079938
sub_08079938: @ 0x08079938
push {r4, lr}
ldr r3, _08079954 @ =gLinkState
ldr r2, [r3, #0x30]
movs r0, #8
ands r0, r2
mov ip, r3
cmp r0, #0
beq _080799E4
ldrb r0, [r3, #5]
cmp r0, #0
beq _0807995C
ldr r4, _08079958 @ =0x0000092C
b _08079AD8
.align 2, 0
_08079954: .4byte gLinkState
_08079958: .4byte 0x0000092C
_0807995C:
mov r0, ip
adds r0, #0x3d
mov r3, ip
ldrb r1, [r3, #0x1c]
ldrb r0, [r0]
orrs r0, r1
cmp r0, #0
beq _0807996E
b _08079B14
_0807996E:
movs r0, #0x80
lsls r0, r0, #0x12
ands r0, r2
cmp r0, #0
bne _08079A1E
mov r4, ip
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079988
ldr r4, _08079984 @ =0x00000414
b _08079AD8
.align 2, 0
_08079984: .4byte 0x00000414
_08079988:
mov r0, ip
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
bne _08079A5C
mov r0, ip
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _08079A6C
mov r0, ip
ldrb r1, [r0, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
beq _080799AA
b _08079B14
_080799AA:
cmp r1, #0
beq _080799B0
b _08079AA4
_080799B0:
mov r1, ip
ldrb r0, [r1, #4]
cmp r0, #0
beq _080799BA
b _08079B14
_080799BA:
movs r0, #0x20
ands r2, r0
cmp r2, #0
beq _080799D0
ldr r0, _080799D8 @ =gArea
ldrb r0, [r0, #0x17]
cmp r0, #4
bne _080799CC
b _08079AD4
_080799CC:
cmp r0, #5
bne _080799DC
_080799D0:
movs r4, #0x80
lsls r4, r4, #3
b _08079AD8
.align 2, 0
_080799D8: .4byte gArea
_080799DC:
ldr r4, _080799E0 @ =0x000002C2
b _08079AD8
.align 2, 0
_080799E0: .4byte 0x000002C2
_080799E4:
mov r4, ip
ldrb r0, [r4, #5]
cmp r0, #0
beq _080799F2
movs r4, #0xd4
lsls r4, r4, #2
b _08079AD8
_080799F2:
mov r0, ip
adds r0, #0x3d
mov r4, ip
ldrb r1, [r4, #0x1c]
ldrb r0, [r0]
orrs r0, r1
cmp r0, #0
beq _08079A04
b _08079B14
_08079A04:
movs r0, #0x80
lsls r0, r0, #0xc
ands r0, r2
cmp r0, #0
beq _08079A14
movs r4, #0x8b
lsls r4, r4, #4
b _08079AD8
_08079A14:
movs r0, #0x80
lsls r0, r0, #0x12
ands r0, r2
cmp r0, #0
beq _08079A24
_08079A1E:
movs r4, #0x81
lsls r4, r4, #4
b _08079AD8
_08079A24:
mov r1, ip
ldrb r0, [r1, #0x1e]
cmp r0, #0
beq _08079A32
movs r4, #0xa6
lsls r4, r4, #2
b _08079AD8
_08079A32:
movs r0, #0x80
lsls r0, r0, #5
ands r0, r2
cmp r0, #0
beq _08079A44
ldr r4, _08079A40 @ =0x0000070C
b _08079AD8
.align 2, 0
_08079A40: .4byte 0x0000070C
_08079A44:
mov r4, ip
ldrb r0, [r4, #3]
cmp r0, #0
beq _08079A52
movs r4, #0xb2
lsls r4, r4, #1
b _08079AD8
_08079A52:
mov r0, ip
adds r0, #0x21
ldrb r0, [r0]
cmp r0, #0
beq _08079A62
_08079A5C:
movs r4, #0xa0
lsls r4, r4, #2
b _08079AD8
_08079A62:
mov r0, ip
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08079A72
_08079A6C:
movs r4, #0xa3
lsls r4, r4, #2
b _08079AD8
_08079A72:
mov r0, ip
ldrb r1, [r0, #0x1b]
movs r0, #0x48
ands r0, r1
cmp r0, #0
bne _08079B14
movs r0, #0x20
ands r2, r0
cmp r2, #0
beq _08079AA0
ldr r0, _08079A98 @ =gArea
ldrb r0, [r0, #0x17]
ldr r4, _08079A9C @ =0x000002C2
cmp r0, #4
bne _08079AD8
movs r4, #0xa6
lsls r4, r4, #3
b _08079AD8
.align 2, 0
_08079A98: .4byte gArea
_08079A9C: .4byte 0x000002C2
_08079AA0:
cmp r1, #0
beq _08079AAA
_08079AA4:
movs r4, #0xb4
lsls r4, r4, #1
b _08079AD8
_08079AAA:
ldrb r0, [r3, #4]
cmp r0, #0
bne _08079B14
ldr r0, [r3, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
cmp r0, #0
beq _08079AD4
ldr r0, _08079ACC @ =gUnk_03000B80
adds r0, #0x63
ldrb r0, [r0]
cmp r0, #0
bne _08079B14
ldr r4, _08079AD0 @ =0x00000604
b _08079AD8
.align 2, 0
_08079ACC: .4byte gUnk_03000B80
_08079AD0: .4byte 0x00000604
_08079AD4:
movs r4, #0x80
lsls r4, r4, #1
_08079AD8:
mov r1, ip
strh r4, [r1, #8]
ldrb r0, [r1, #5]
cmp r0, #0
bne _08079B10
movs r3, #0
movs r2, #0
ldr r1, _08079B18 @ =gUnk_03000B80
_08079AE8:
ldrb r0, [r1, #0xf]
cmp r0, r3
bls _08079AF0
adds r3, r0, #0
_08079AF0:
adds r1, #0x1c
adds r2, #1
cmp r2, #3
bls _08079AE8
mov r2, ip
ldrb r0, [r2, #0xe]
cmp r0, r3
blo _08079B14
lsls r0, r4, #0x18
lsrs r0, r0, #0x18
ldrb r3, [r2]
cmp r0, r3
bne _08079B10
ldr r0, _08079B1C @ =gLinkEntity
bl UpdateAnimationSingleFrame
_08079B10:
ldr r0, _08079B20 @ =gLinkState
strb r4, [r0]
_08079B14:
pop {r4, pc}
.align 2, 0
_08079B18: .4byte gUnk_03000B80
_08079B1C: .4byte gLinkEntity
_08079B20: .4byte gLinkState
thumb_func_start sub_08079B24
sub_08079B24: @ 0x08079B24
push {r4, r5, lr}
ldr r2, _08079B60 @ =gLinkEntity
ldrb r0, [r2, #0xc]
cmp r0, #0xa
beq _08079BD4
adds r0, r2, #0
adds r0, #0x45
ldrb r3, [r0]
cmp r3, #0
bne _08079BD4
ldr r4, _08079B64 @ =gLinkState
ldr r1, [r4, #0x30]
ldr r0, _08079B68 @ =0xFEFFFFFF
ands r1, r0
str r1, [r4, #0x30]
adds r0, r2, #0
adds r0, #0x42
strb r3, [r0]
ldrb r0, [r4, #7]
cmp r0, #0
bne _08079BD4
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _08079B6C
bl sub_08079458
b _08079BC0
.align 2, 0
_08079B60: .4byte gLinkEntity
_08079B64: .4byte gLinkState
_08079B68: .4byte 0xFEFFFFFF
_08079B6C:
ldrb r0, [r4, #0x14]
cmp r0, #0
bne _08079BC0
movs r3, #0x80
lsls r3, r3, #5
ands r3, r1
cmp r3, #0
bne _08079BC0
movs r5, #0x36
ldrsh r0, [r2, r5]
cmp r0, #0
bge _08079BA6
ldr r0, [r2, #0x20]
cmp r0, #0
ble _08079B8C
str r3, [r2, #0x20]
_08079B8C:
ldrb r1, [r4, #2]
movs r3, #0x41
adds r0, r3, #0
ands r0, r1
cmp r0, #0
bne _08079BD4
strb r3, [r4, #2]
movs r0, #0xff
strb r0, [r2, #0x15]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r4, #0xd]
b _08079BD4
_08079BA6:
movs r0, #2
ands r1, r0
cmp r1, #0
bne _08079BC0
bl sub_08079D48
cmp r0, #0
bne _08079BC0
ldrb r0, [r4, #0xa]
movs r1, #0x10
orrs r0, r1
strb r0, [r4, #0xa]
b _08079BD4
_08079BC0:
ldr r2, _08079BD0 @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
movs r0, #0
b _08079BD6
.align 2, 0
_08079BD0: .4byte gLinkEntity
_08079BD4:
movs r0, #1
_08079BD6:
pop {r4, r5, pc}
thumb_func_start sub_08079BD8
sub_08079BD8: @ 0x08079BD8
push {r4, r5, lr}
ldr r4, _08079C2C @ =gLinkEntity
ldr r1, [r4, #0x2c]
str r1, [r0, #0x2c]
ldr r1, [r4, #0x30]
str r1, [r0, #0x30]
ldr r1, [r4, #0x34]
str r1, [r0, #0x34]
adds r1, r4, #0
adds r1, #0x38
ldrb r2, [r1]
adds r1, r0, #0
adds r1, #0x38
strb r2, [r1]
ldrb r3, [r4, #0x19]
lsrs r3, r3, #6
lsls r3, r3, #6
ldrb r5, [r0, #0x19]
movs r2, #0x3f
adds r1, r2, #0
ands r1, r5
orrs r1, r3
strb r1, [r0, #0x19]
ldrb r1, [r4, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r3, [r0, #0x1b]
ands r2, r3
orrs r2, r1
strb r2, [r0, #0x1b]
adds r4, #0x29
ldrb r2, [r4]
lsls r2, r2, #0x1d
adds r0, #0x29
lsrs r2, r2, #0x1d
ldrb r3, [r0]
movs r1, #8
rsbs r1, r1, #0
ands r1, r3
orrs r1, r2
strb r1, [r0]
pop {r4, r5, pc}
.align 2, 0
_08079C2C: .4byte gLinkEntity
thumb_func_start sub_08079C30
sub_08079C30: @ 0x08079C30
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
ldr r0, _08079C68 @ =gLinkState
ldrb r1, [r0, #0x14]
adds r7, r0, #0
cmp r1, #0
beq _08079C44
b _08079D40
_08079C44:
ldr r1, [r7, #0x30]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08079D40
movs r0, #0x80
ands r1, r0
cmp r1, #0
bne _08079D36
ldrb r0, [r7, #0x13]
subs r0, #0xd
cmp r0, #0x1d
bhi _08079CE8
lsls r0, r0, #2
ldr r1, _08079C6C @ =_08079C70
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08079C68: .4byte gLinkState
_08079C6C: .4byte _08079C70
_08079C70: @ jump table
.4byte _08079D36 @ case 0
.4byte _08079D36 @ case 1
.4byte _08079D36 @ case 2
.4byte _08079D36 @ case 3
.4byte _08079CE8 @ case 4
.4byte _08079CE8 @ case 5
.4byte _08079CE8 @ case 6
.4byte _08079D36 @ case 7
.4byte _08079CE8 @ case 8
.4byte _08079CE8 @ case 9
.4byte _08079D36 @ case 10
.4byte _08079CE8 @ case 11
.4byte _08079CE8 @ case 12
.4byte _08079CE8 @ case 13
.4byte _08079CE8 @ case 14
.4byte _08079CE8 @ case 15
.4byte _08079CE8 @ case 16
.4byte _08079CE8 @ case 17
.4byte _08079CE8 @ case 18
.4byte _08079CE8 @ case 19
.4byte _08079CE8 @ case 20
.4byte _08079CE8 @ case 21
.4byte _08079CE8 @ case 22
.4byte _08079CE8 @ case 23
.4byte _08079CE8 @ case 24
.4byte _08079CE8 @ case 25
.4byte _08079CE8 @ case 26
.4byte _08079CE8 @ case 27
.4byte _08079CE8 @ case 28
.4byte _08079D36 @ case 29
_08079CE8:
mov r8, r7
mov r0, r8
ldrb r4, [r0, #0x12]
movs r2, #1
rsbs r2, r2, #0
adds r0, r6, #0
movs r1, #0
bl sub_080002B4
ldr r5, _08079D3C @ =gUnk_08007CAC
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
mov r0, r8
ldrb r4, [r0, #0x12]
adds r0, r6, #0
movs r1, #2
movs r2, #0
bl sub_080002B4
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
ldrb r4, [r7, #0x12]
movs r1, #2
rsbs r1, r1, #0
adds r0, r6, #0
movs r2, #0
bl sub_080002B4
adds r1, r5, #0
bl sub_08007DD6
cmp r4, r0
bne _08079D40
_08079D36:
movs r0, #1
b _08079D42
.align 2, 0
_08079D3C: .4byte gUnk_08007CAC
_08079D40:
movs r0, #0
_08079D42:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08079D48
sub_08079D48: @ 0x08079D48
push {r4, lr}
ldr r4, _08079D78 @ =gLinkEntity
adds r0, r4, #0
bl sub_08079C30
cmp r0, #0
beq _08079D72
bl sub_08008B22
cmp r0, #0
bne _08079D80
adds r0, r4, #0
bl sub_080002B8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r1, _08079D7C @ =gUnk_0811C268
bl sub_08007DD6
cmp r0, #0
bne _08079D80
_08079D72:
movs r0, #1
b _08079D82
.align 2, 0
_08079D78: .4byte gLinkEntity
_08079D7C: .4byte gUnk_0811C268
_08079D80:
movs r0, #0
_08079D82:
pop {r4, pc}
thumb_func_start sub_08079D84
sub_08079D84: @ 0x08079D84
push {lr}
ldr r3, _08079DC0 @ =gLinkEntity
ldrb r0, [r3, #0xc]
cmp r0, #1
beq _08079D92
cmp r0, #0x18
bne _08079DBE
_08079D92:
ldr r2, _08079DC4 @ =gLinkState
adds r1, r2, #0
adds r1, #0x38
movs r0, #0x9c
strb r0, [r1]
adds r1, #1
movs r0, #2
strb r0, [r1]
adds r1, #1
movs r0, #0x3c
strb r0, [r1]
movs r0, #0xe
strb r0, [r2, #0xc]
adds r1, r3, #0
adds r1, #0x3d
movs r0, #0x7c
strb r0, [r1]
bl sub_08077B20
ldr r0, _08079DC8 @ =0x00000193
bl PlaySFX
_08079DBE:
pop {pc}
.align 2, 0
_08079DC0: .4byte gLinkEntity
_08079DC4: .4byte gLinkState
_08079DC8: .4byte 0x00000193
thumb_func_start sub_08079DCC
sub_08079DCC: @ 0x08079DCC
push {lr}
ldr r0, _08079DFC @ =gLinkEntity
ldrb r0, [r0, #0xc]
cmp r0, #1
bne _08079DF8
ldr r3, _08079E00 @ =gLinkState
adds r1, r3, #0
adds r1, #0x38
movs r2, #0
movs r0, #0xa0
strb r0, [r1]
adds r1, #1
movs r0, #3
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3a
strb r2, [r0]
movs r0, #0xe
strb r0, [r3, #0xc]
ldr r0, _08079E04 @ =0x00000193
bl PlaySFX
_08079DF8:
pop {pc}
.align 2, 0
_08079DFC: .4byte gLinkEntity
_08079E00: .4byte gLinkState
_08079E04: .4byte 0x00000193
thumb_func_start sub_08079E08
sub_08079E08: @ 0x08079E08
push {r4, lr}
ldr r0, _08079E50 @ =gLinkEntity
ldrh r2, [r0, #0x24]
movs r3, #0x24
ldrsh r1, [r0, r3]
adds r4, r0, #0
cmp r1, #0
beq _08079E2E
ldr r0, _08079E54 @ =gLinkState
adds r0, #0x80
ldrh r0, [r0]
adds r0, r2, r0
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0x1f
bgt _08079E2E
movs r0, #0x20
strh r0, [r4, #0x24]
_08079E2E:
adds r2, r4, #0
ldrb r1, [r2, #0x15]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _08079E40
ldrb r0, [r2, #0x15]
bl sub_08079E90
_08079E40:
adds r0, r4, #0
bl sub_0800857C
ldrb r0, [r4, #0x15]
bl sub_0807A5B8
pop {r4, pc}
.align 2, 0
_08079E50: .4byte gLinkEntity
_08079E54: .4byte gLinkState
thumb_func_start sub_08079E58
sub_08079E58: @ 0x08079E58
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r4, r1, #0
ldr r5, _08079E8C @ =gLinkEntity
ldrb r1, [r5, #0x15]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _08079E70
adds r0, r4, #0
bl sub_08079E90
_08079E70:
adds r0, r5, #0
bl sub_080085B0
lsls r1, r6, #0x10
asrs r1, r1, #0x10
lsls r2, r4, #0x18
lsrs r2, r2, #0x18
adds r0, r5, #0
bl sub_080027EA
adds r0, r4, #0
bl sub_0807A5B8
pop {r4, r5, r6, pc}
.align 2, 0
_08079E8C: .4byte gLinkEntity
thumb_func_start sub_08079E90
sub_08079E90: @ 0x08079E90
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldr r1, _08079EBC @ =gLinkEntity
ldrb r2, [r1, #0x15]
movs r0, #8
ands r0, r2
adds r7, r1, #0
cmp r0, #0
beq _08079ECA
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _08079EC0
ldr r0, [r7, #0x48]
ldrb r0, [r0, #2]
rsbs r0, r0, #0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
b _08079EC4
.align 2, 0
_08079EBC: .4byte gLinkEntity
_08079EC0:
ldr r0, [r7, #0x48]
ldrb r5, [r0, #2]
_08079EC4:
ldr r0, [r7, #0x48]
ldrb r4, [r0, #3]
b _08079EDE
_08079ECA:
ldr r0, [r7, #0x48]
ldrb r5, [r0, #4]
cmp r2, #0
beq _08079ED6
ldrb r4, [r0, #5]
b _08079EDE
_08079ED6:
ldrb r0, [r0, #5]
rsbs r0, r0, #0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
_08079EDE:
lsls r0, r5, #0x10
asrs r0, r0, #0x10
mov r8, r0
lsls r0, r4, #0x10
asrs r6, r0, #0x10
adds r0, r7, #0
mov r1, r8
adds r2, r6, #0
bl sub_080002CC
adds r1, r0, #0
mov r0, sb
bl sub_08079F48
cmp r0, #0
bne _08079F3C
ldrb r1, [r7, #0x15]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08079F10
rsbs r0, r6, #0
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
b _08079F18
_08079F10:
mov r1, r8
rsbs r0, r1, #0
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
_08079F18:
ldr r0, _08079F38 @ =gLinkEntity
lsls r1, r5, #0x10
asrs r1, r1, #0x10
lsls r2, r4, #0x10
asrs r2, r2, #0x10
bl sub_080002CC
adds r1, r0, #0
mov r0, sb
bl sub_08079F48
cmp r0, #0
bne _08079F3C
movs r0, #0
b _08079F3E
.align 2, 0
_08079F38: .4byte gLinkEntity
_08079F3C:
movs r0, #1
_08079F3E:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08079F48
sub_08079F48: @ 0x08079F48
push {lr}
ldr r3, _08079F60 @ =gUnk_0811C118
lsrs r2, r0, #2
adds r0, r2, r3
ldrb r0, [r0]
cmp r0, r1
bne _08079F68
ldr r0, _08079F64 @ =gLinkEntity
ldrb r1, [r0, #0x15]
adds r1, #4
b _08079F7C
.align 2, 0
_08079F60: .4byte gUnk_0811C118
_08079F64: .4byte gLinkEntity
_08079F68:
adds r0, r2, #1
adds r0, r0, r3
ldrb r0, [r0]
cmp r0, r1
beq _08079F76
movs r0, #0
b _08079F84
_08079F76:
ldr r0, _08079F88 @ =gLinkEntity
ldrb r1, [r0, #0x15]
subs r1, #4
_08079F7C:
movs r2, #0x1f
ands r1, r2
strb r1, [r0, #0x15]
movs r0, #1
_08079F84:
pop {pc}
.align 2, 0
_08079F88: .4byte gLinkEntity
thumb_func_start sub_08079F8C
sub_08079F8C: @ 0x08079F8C
push {lr}
ldr r2, _08079FB4 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _08079FB8 @ =0x22189B75
ands r0, r1
cmp r0, #0
bne _08079FB0
adds r0, r2, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08079FB0
ldr r0, _08079FBC @ =gLinkEntity
ldrb r0, [r0, #0xc]
cmp r0, #3
beq _08079FB0
cmp r0, #0xb
bne _08079FC0
_08079FB0:
movs r0, #0
b _08079FC2
.align 2, 0
_08079FB4: .4byte gLinkState
_08079FB8: .4byte 0x22189B75
_08079FBC: .4byte gLinkEntity
_08079FC0:
movs r0, #1
_08079FC2:
pop {pc}
thumb_func_start sub_08079FC4
sub_08079FC4: @ 0x08079FC4
push {lr}
adds r1, r0, #0
ldr r0, _08079FD0 @ =gLinkEntity
bl sub_08079FD4
pop {pc}
.align 2, 0
_08079FD0: .4byte gLinkEntity
thumb_func_start sub_08079FD4
sub_08079FD4: @ 0x08079FD4
push {r4, r5, r6, lr}
sub sp, #4
adds r5, r0, #0
movs r0, #0x2e
ldrsh r2, [r5, r0]
ldr r3, _0807A008 @ =gRoomControls
ldrh r0, [r3, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r4, #0x3f
ands r2, r4
movs r6, #0x32
ldrsh r0, [r5, r6]
ldrh r3, [r3, #8]
subs r0, r0, r3
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r2, r0
lsls r2, r2, #1
ldr r6, _0807A00C @ =gUnk_02027EB4
cmp r1, #2
bne _0807A004
ldr r6, _0807A010 @ =gUnk_0200D654
_0807A004:
movs r4, #0
b _0807A028
.align 2, 0
_0807A008: .4byte gRoomControls
_0807A00C: .4byte gUnk_02027EB4
_0807A010: .4byte gUnk_0200D654
_0807A014:
cmp r1, #0x23
beq _0807A028
cmp r1, #0x27
beq _0807A028
ldr r0, _0807A04C @ =gUnk_080082DC
subs r1, #0x10
adds r1, r1, r0
ldrb r0, [r1]
cmp r0, #0
beq _0807A046
_0807A028:
adds r4, #1
adds r0, r5, #0
mov r1, sp
bl sub_08004202
adds r2, r0, #0
lsrs r0, r2, #1
adds r0, r6, r0
ldrb r1, [r0]
cmp r1, #0xe
bls _0807A046
cmp r1, #0xf
bls _0807A028
cmp r1, #0x1d
bne _0807A014
_0807A046:
adds r0, r4, #0
add sp, #4
pop {r4, r5, r6, pc}
.align 2, 0
_0807A04C: .4byte gUnk_080082DC
thumb_func_start sub_0807A050
sub_0807A050: @ 0x0807A050
push {lr}
ldr r3, _0807A088 @ =gLinkState
ldrb r2, [r3, #0xf]
cmp r2, #0
beq _0807A06A
ldr r0, _0807A08C @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0807A06A
subs r0, r2, #1
strb r0, [r3, #0xf]
_0807A06A:
movs r0, #0
bl sub_0807A094
adds r1, r0, #0
ldr r0, _0807A088 @ =gLinkState
adds r0, #0x83
ldrb r2, [r0]
cmp r1, r2
beq _0807A084
strb r1, [r0]
ldr r0, _0807A090 @ =gLinkEntity
bl sub_0801D2B4
_0807A084:
pop {pc}
.align 2, 0
_0807A088: .4byte gLinkState
_0807A08C: .4byte gTextBox
_0807A090: .4byte gLinkEntity
thumb_func_start sub_0807A094
sub_0807A094: @ 0x0807A094
push {r4, r5, lr}
adds r3, r0, #0
movs r2, #0x16
ldr r0, _0807A0AC @ =gLinkState
ldrb r0, [r0, #0xf]
cmp r0, #0
beq _0807A0B0
movs r2, #0x1b
cmp r0, #0x78
bls _0807A104
movs r2, #0x1a
b _0807A104
.align 2, 0
_0807A0AC: .4byte gLinkState
_0807A0B0:
ldr r0, _0807A0F0 @ =gUnk_02002A40
adds r1, r0, #0
adds r1, #0xb2
ldrb r1, [r1]
adds r5, r0, #0
cmp r1, #0
beq _0807A104
movs r4, #1
cmp r3, #0
bne _0807A0D6
adds r0, #0xc4
ldrh r1, [r0]
cmp r1, #0xb3
bhi _0807A0D6
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807A0D6
movs r4, #0
_0807A0D6:
cmp r4, #0
beq _0807A104
adds r0, r5, #0
adds r0, #0xb2
ldrb r0, [r0]
cmp r0, #0x30
beq _0807A102
cmp r0, #0x30
bgt _0807A0F4
cmp r0, #0x2f
beq _0807A0FA
b _0807A102
.align 2, 0
_0807A0F0: .4byte gUnk_02002A40
_0807A0F4:
cmp r0, #0x31
beq _0807A0FE
b _0807A102
_0807A0FA:
movs r2, #0x18
b _0807A104
_0807A0FE:
movs r2, #0x17
b _0807A104
_0807A102:
movs r2, #0x19
_0807A104:
adds r0, r2, #0
pop {r4, r5, pc}
thumb_func_start sub_0807A108
sub_0807A108: @ 0x0807A108
push {lr}
ldr r1, _0807A148 @ =gUnk_03004040
movs r0, #0
str r0, [r1]
str r0, [r1, #4]
str r0, [r1, #8]
ldr r2, _0807A14C @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _0807A150 @ =0xFFBFFFFF
ands r0, r1
str r0, [r2, #0x30]
ldr r0, _0807A154 @ =gLinkEntity
ldrb r0, [r0, #0xc]
cmp r0, #0x17
bne _0807A130
adds r0, r2, #0
adds r0, #0xa0
ldrb r0, [r0]
cmp r0, #4
beq _0807A144
_0807A130:
adds r1, r2, #0
adds r1, #0xa0
ldrb r0, [r1]
subs r0, #4
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _0807A144
movs r0, #1
strb r0, [r1]
_0807A144:
pop {pc}
.align 2, 0
_0807A148: .4byte gUnk_03004040
_0807A14C: .4byte gLinkState
_0807A150: .4byte 0xFFBFFFFF
_0807A154: .4byte gLinkEntity
thumb_func_start sub_0807A158
sub_0807A158: @ 0x0807A158
push {r4, lr}
ldr r4, _0807A178 @ =gUnk_02002A40
adds r0, r4, #0
adds r0, #0xb4
ldrb r0, [r0]
bl sub_0805449C
cmp r0, #0
bne _0807A17C
adds r0, r4, #0
adds r0, #0xb5
ldrb r0, [r0]
bl sub_0805449C
b _0807A17E
.align 2, 0
_0807A178: .4byte gUnk_02002A40
_0807A17C:
movs r0, #1
_0807A17E:
pop {r4, pc}
thumb_func_start sub_0807A180
sub_0807A180: @ 0x0807A180
push {r4, r5, r6, lr}
mov r6, r8
push {r6}
sub sp, #0x88
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
mov r8, r3
ldr r3, _0807A1B4 @ =0xFFFC0000
mov r1, sp
movs r2, #0
bl PositionRelative
mov r1, sp
ldrb r0, [r4, #0x14]
strb r0, [r1, #0x14]
mov r0, sp
adds r1, r5, #0
adds r2, r6, #0
mov r3, r8
bl sub_08003FDE
add sp, #0x88
pop {r3}
mov r8, r3
pop {r4, r5, r6, pc}
.align 2, 0
_0807A1B4: .4byte 0xFFFC0000
thumb_func_start sub_0807A1B8
sub_0807A1B8: @ 0x0807A1B8
push {r4, lr}
ldr r4, _0807A1DC @ =gLinkEntity
adds r0, r4, #0
movs r1, #0
movs r2, #0
bl sub_0807A1E8
ldr r1, _0807A1E0 @ =gLinkState
strb r0, [r1, #0x12]
ldr r2, _0807A1E4 @ =gUnk_0811C120
ldrb r0, [r1, #0x12]
lsls r0, r0, #2
adds r0, r0, r2
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_0807A1DC: .4byte gLinkEntity
_0807A1E0: .4byte gLinkState
_0807A1E4: .4byte gUnk_0811C120
thumb_func_start sub_0807A1E8
sub_0807A1E8: @ 0x0807A1E8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r6, r1, #0
mov r8, r2
movs r1, #0x2e
ldrsh r0, [r5, r1]
adds r0, r0, r6
ldr r2, _0807A288 @ =gRoomControls
ldrh r1, [r2, #6]
subs r1, r0, r1
lsrs r4, r1, #4
movs r3, #0x3f
ands r4, r3
movs r7, #0x32
ldrsh r1, [r5, r7]
add r1, r8
ldrh r2, [r2, #8]
subs r2, r1, r2
asrs r2, r2, #4
ands r2, r3
lsls r2, r2, #6
orrs r4, r2
ldr r2, _0807A28C @ =gLinkEntity
adds r2, #0x38
ldrb r2, [r2]
bl GetTileTypeByPos
adds r2, r0, #0
ldr r1, _0807A290 @ =gLinkState
ldrh r0, [r1, #0x24]
cmp r2, r0
beq _0807A23A
adds r3, r1, #0
adds r3, #0x37
movs r0, #0
strb r0, [r3]
ldrh r7, [r1, #0x24]
cmp r2, r7
bne _0807A242
_0807A23A:
adds r3, r1, #0
ldrh r0, [r3, #0x22]
cmp r4, r0
beq _0807A24E
_0807A242:
ldr r0, _0807A290 @ =gLinkState
movs r1, #0
strh r4, [r0, #0x22]
strh r2, [r0, #0x24]
strb r1, [r0, #0x11]
adds r3, r0, #0
_0807A24E:
adds r2, r3, #0
ldrb r1, [r2, #0x11]
adds r0, r1, #0
cmp r0, #0xff
beq _0807A25C
adds r0, r1, #1
strb r0, [r2, #0x11]
_0807A25C:
adds r2, #0x37
ldrb r1, [r2]
adds r0, r1, #0
cmp r0, #0xff
beq _0807A26A
adds r0, r1, #1
strb r0, [r2]
_0807A26A:
ldrb r0, [r3, #0x12]
strb r0, [r3, #0x13]
adds r0, r5, #0
adds r1, r6, #0
mov r2, r8
bl sub_080002B4
adds r2, r0, #0
ldr r1, _0807A294 @ =gUnk_08007CAC
bl sub_08007DD6
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807A288: .4byte gRoomControls
_0807A28C: .4byte gLinkEntity
_0807A290: .4byte gLinkState
_0807A294: .4byte gUnk_08007CAC
thumb_func_start sub_0807A298
sub_0807A298: @ 0x0807A298
movs r1, #0
strb r1, [r0, #0xb]
ldrb r1, [r0, #0x18]
movs r2, #3
orrs r1, r2
strb r1, [r0, #0x18]
ldr r2, _0807A2B4 @ =gLinkState
ldr r0, [r2, #0x30]
movs r1, #0x41
rsbs r1, r1, #0
ands r0, r1
str r0, [r2, #0x30]
bx lr
.align 2, 0
_0807A2B4: .4byte gLinkState
thumb_func_start sub_0807A2B8
sub_0807A2B8: @ 0x0807A2B8
push {lr}
bl sub_08008B22
cmp r0, #0
beq _0807A2C6
movs r0, #1
b _0807A2EC
_0807A2C6:
ldr r0, _0807A2F0 @ =gLinkState
ldrb r1, [r0, #2]
movs r0, #0xc8
ands r0, r1
cmp r0, #0
bne _0807A2EA
ldr r1, _0807A2F4 @ =gLinkEntity
adds r0, r1, #0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #1
beq _0807A2EA
adds r0, r1, #0
movs r1, #0x44
movs r2, #0
movs r3, #0
bl CreateObjectWithParent
_0807A2EA:
movs r0, #0
_0807A2EC:
pop {pc}
.align 2, 0
_0807A2F0: .4byte gLinkState
_0807A2F4: .4byte gLinkEntity
thumb_func_start sub_0807A2F8
sub_0807A2F8: @ 0x0807A2F8
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
adds r4, r0, #0
ldr r0, _0807A364 @ =gRoomControls
mov r8, r0
ldrb r0, [r0, #4]
cmp r0, #8
bne _0807A312
b _0807A4F2
_0807A312:
bl sub_08079778
orrs r0, r4
cmp r0, #0
bne _0807A31E
b _0807A4F2
_0807A31E:
ldr r7, _0807A368 @ =gLinkEntity
ldrb r1, [r7, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807A36C
movs r1, #0x2e
ldrsh r2, [r7, r1]
mov r6, r8
ldrh r0, [r6, #6]
subs r2, r2, r0
asrs r2, r2, #4
movs r3, #0x3f
ands r2, r3
movs r0, #0x32
ldrsh r1, [r7, r0]
ldr r0, [r7, #0x48]
ldrb r5, [r0, #5]
adds r0, r1, r5
ldrh r4, [r6, #8]
subs r0, r0, r4
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r0, r2
lsls r7, r0, #1
subs r1, r1, r5
subs r1, r1, r4
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r2, r1
lsls r6, r2, #1
b _0807A3A2
.align 2, 0
_0807A364: .4byte gRoomControls
_0807A368: .4byte gLinkEntity
_0807A36C:
movs r1, #0x2e
ldrsh r3, [r7, r1]
ldr r0, [r7, #0x48]
ldrb r6, [r0, #2]
adds r1, r3, r6
mov r2, r8
ldrh r5, [r2, #6]
subs r1, r1, r5
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r2, #0x32
ldrsh r0, [r7, r2]
mov r7, r8
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
lsls r7, r1, #1
subs r3, r3, r6
subs r3, r3, r5
asrs r3, r3, #4
ands r3, r4
orrs r3, r0
lsls r6, r3, #1
_0807A3A2:
movs r0, #0
mov sb, r0
ldr r1, _0807A3F4 @ =gLinkEntity
mov sl, r1
_0807A3AA:
movs r2, #0
mov r8, r2
mov r0, sl
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
lsrs r4, r7, #1
adds r0, r4, #0
movs r1, #1
bl sub_080002E0
cmp r0, #0
beq _0807A3FC
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
mov r1, sl
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002C8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
mov r2, sl
ldrb r1, [r2, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #2
ldr r2, _0807A3F8 @ =gUnk_0811C1D8
adds r1, r1, r2
ldr r1, [r1]
bl sub_08007DD6
cmp r0, #0
beq _0807A468
b _0807A400
.align 2, 0
_0807A3F4: .4byte gLinkEntity
_0807A3F8: .4byte gUnk_0811C1D8
_0807A3FC:
movs r0, #1
mov r8, r0
_0807A400:
ldr r5, _0807A444 @ =gLinkEntity
adds r0, r5, #0
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
lsrs r4, r6, #1
adds r0, r4, #0
movs r1, #1
bl sub_080002E0
cmp r0, #0
beq _0807A44C
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002C8
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r5, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #2
ldr r2, _0807A448 @ =gUnk_0811C1D8
adds r1, r1, r2
ldr r1, [r1]
bl sub_08007DD6
cmp r0, #0
beq _0807A468
b _0807A450
.align 2, 0
_0807A444: .4byte gLinkEntity
_0807A448: .4byte gUnk_0811C1D8
_0807A44C:
movs r0, #1
add r8, r0
_0807A450:
mov r1, r8
cmp r1, #2
bne _0807A45E
mov r2, sb
cmp r2, #0
bne _0807A46E
b _0807A4F2
_0807A45E:
movs r0, #1
add sb, r0
mov r1, sb
cmp r1, #1
bls _0807A3AA
_0807A468:
mov r2, sb
cmp r2, #0
beq _0807A4F2
_0807A46E:
bl CheckIsDungeon
cmp r0, #0
beq _0807A4B0
ldr r4, _0807A4AC @ =gLinkEntity
adds r0, r4, #0
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
lsrs r0, r7, #1
movs r1, #2
bl sub_080002E0
cmp r0, #0
bne _0807A4F2
adds r0, r4, #0
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
lsrs r0, r6, #1
movs r1, #2
_0807A4A0:
bl sub_080002E0
cmp r0, #0
beq _0807A4EC
b _0807A4F2
.align 2, 0
_0807A4AC: .4byte gLinkEntity
_0807A4B0:
mov r0, sb
cmp r0, #2
bne _0807A4C2
ldr r0, _0807A4E8 @ =gLinkEntity
mov r1, sp
adds r2, r7, #0
bl sub_08004202
adds r7, r0, #0
_0807A4C2:
lsrs r0, r7, #1
movs r1, #1
bl sub_080002E0
cmp r0, #0
bne _0807A4F2
mov r1, sb
cmp r1, #2
bne _0807A4E0
ldr r0, _0807A4E8 @ =gLinkEntity
mov r1, sp
adds r2, r6, #0
bl sub_08004202
adds r6, r0, #0
_0807A4E0:
lsrs r0, r6, #1
movs r1, #1
b _0807A4A0
.align 2, 0
_0807A4E8: .4byte gLinkEntity
_0807A4EC:
mov r0, sb
adds r0, #1
b _0807A4F4
_0807A4F2:
movs r0, #0
_0807A4F4:
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_0807A500
sub_0807A500: @ 0x0807A500
push {r4, r5, r6, lr}
ldr r6, _0807A518 @ =gLinkEntity
ldrb r0, [r6, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _0807A574
cmp r0, #1
bgt _0807A51C
cmp r0, #0
beq _0807A526
b _0807A5B4
.align 2, 0
_0807A518: .4byte gLinkEntity
_0807A51C:
cmp r0, #2
beq _0807A554
cmp r0, #3
beq _0807A580
b _0807A5B4
_0807A526:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r5, _0807A550 @ =gRoomControls
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r4, #0x3f
ands r0, r4
movs r2, #0x32
ldrsh r1, [r6, r2]
ldr r3, [r6, #0x48]
ldrb r2, [r3, #5]
subs r1, r1, r2
movs r2, #1
ldrsb r2, [r3, r2]
adds r1, r1, r2
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
b _0807A5AA
.align 2, 0
_0807A550: .4byte gRoomControls
_0807A554:
movs r5, #0x2e
ldrsh r0, [r6, r5]
ldr r4, _0807A570 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
ldr r2, [r6, #0x48]
movs r5, #0x32
ldrsh r1, [r6, r5]
ldrb r5, [r2, #5]
adds r1, r1, r5
b _0807A59A
.align 2, 0
_0807A570: .4byte gRoomControls
_0807A574:
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r5, [r2, #2]
adds r0, r0, r5
b _0807A58A
_0807A580:
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r2, [r6, #0x48]
ldrb r1, [r2, #2]
subs r0, r0, r1
_0807A58A:
ldr r4, _0807A5B0 @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r6, r5]
_0807A59A:
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
ldrh r2, [r4, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
_0807A5AA:
lsls r1, r1, #6
orrs r0, r1
b _0807A5B6
.align 2, 0
_0807A5B0: .4byte gRoomControls
_0807A5B4:
movs r0, #0
_0807A5B6:
pop {r4, r5, r6, pc}
thumb_func_start sub_0807A5B8
sub_0807A5B8: @ 0x0807A5B8
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldr r2, _0807A5F8 @ =gLinkState
ldrb r3, [r2, #2]
movs r4, #0x80
adds r0, r4, #0
ands r0, r3
cmp r0, #0
beq _0807A5D2
b _0807A736
_0807A5D2:
ldr r1, [r2, #0x30]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0807A5DE
b _0807A736
_0807A5DE:
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
beq _0807A5EA
b _0807A736
_0807A5EA:
adds r0, r1, #0
ands r0, r4
cmp r0, #0
beq _0807A600
ldr r7, _0807A5FC @ =gUnk_0800833C
b _0807A63A
.align 2, 0
_0807A5F8: .4byte gLinkState
_0807A5FC: .4byte gUnk_0800833C
_0807A600:
movs r0, #0x80
lsls r0, r0, #0x11
ands r1, r0
cmp r1, #0
bne _0807A60E
cmp r3, #0
beq _0807A618
_0807A60E:
ldr r7, _0807A614 @ =gUnk_0800845C
b _0807A63A
.align 2, 0
_0807A614: .4byte gUnk_0800845C
_0807A618:
ldrb r0, [r2, #5]
cmp r0, #0
bne _0807A624
ldrb r0, [r2, #0x1c]
cmp r0, #0
beq _0807A62C
_0807A624:
ldr r7, _0807A628 @ =gUnk_080084BC
b _0807A63A
.align 2, 0
_0807A628: .4byte gUnk_080084BC
_0807A62C:
adds r0, r2, #0
adds r0, #0xaa
ldrb r0, [r0]
ldr r7, _0807A740 @ =gUnk_080082DC
cmp r0, #0
beq _0807A63A
ldr r7, _0807A744 @ =gUnk_0800851C
_0807A63A:
mov r0, sb
cmp r0, #0
beq _0807A6B8
cmp r0, #0x10
beq _0807A6B8
ldr r6, _0807A748 @ =gLinkEntity
ldr r2, [r6, #0x48]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldrb r3, [r2, #2]
adds r0, r0, r3
movs r1, #0
ldrsb r1, [r2, r1]
adds r0, r0, r1
ldr r1, _0807A74C @ =gRoomControls
mov r8, r1
ldrh r1, [r1, #6]
subs r5, r0, r1
movs r3, #0x32
ldrsh r0, [r6, r3]
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A688
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #1
bl sub_0807A750
_0807A688:
movs r3, #0x2e
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #2]
subs r1, r1, r0
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #6]
subs r5, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A6B8
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #3
bl sub_0807A750
_0807A6B8:
mov r3, sb
cmp r3, #8
beq _0807A736
cmp r3, #0x18
beq _0807A736
ldr r6, _0807A748 @ =gLinkEntity
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, [r6, #0x48]
movs r0, #0
ldrsb r0, [r2, r0]
adds r1, r1, r0
ldr r3, _0807A74C @ =gRoomControls
mov r8, r3
ldrh r0, [r3, #6]
subs r5, r1, r0
movs r1, #0x32
ldrsh r0, [r6, r1]
ldrb r3, [r2, #5]
adds r0, r0, r3
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
mov r2, r8
ldrh r1, [r2, #8]
subs r4, r0, r1
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A706
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #2
bl sub_0807A750
_0807A706:
movs r3, #0x32
ldrsh r1, [r6, r3]
ldr r2, [r6, #0x48]
ldrb r0, [r2, #5]
subs r1, r1, r0
movs r0, #1
ldrsb r0, [r2, r0]
adds r1, r1, r0
mov r2, r8
ldrh r0, [r2, #8]
subs r4, r1, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
bl sub_080086B4
cmp r0, #0
beq _0807A736
adds r0, r5, #0
adds r1, r4, #0
adds r2, r7, #0
movs r3, #0
bl sub_0807A750
_0807A736:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807A740: .4byte gUnk_080082DC
_0807A744: .4byte gUnk_0800851C
_0807A748: .4byte gLinkEntity
_0807A74C: .4byte gRoomControls
thumb_func_start sub_0807A750
sub_0807A750: @ 0x0807A750
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
adds r6, r1, #0
mov r8, r2
adds r5, r3, #0
movs r0, #1
ands r0, r5
cmp r0, #0
bne _0807A76C
movs r4, #0xf
ands r4, r6
b _0807A770
_0807A76C:
movs r4, #0xf
ands r4, r7
_0807A770:
cmp r4, #0
bne _0807A776
b _0807A88E
_0807A776:
cmp r4, #0xf
bne _0807A77C
b _0807A88E
_0807A77C:
lsrs r0, r7, #4
movs r2, #0x3f
ands r0, r2
lsrs r1, r6, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807A7A8 @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002E0
adds r1, r0, #0
cmp r1, #0xf
bls _0807A7AE
cmp r1, #0xff
beq _0807A7AC
mov r2, r8
adds r0, r1, r2
subs r0, #0x10
ldrb r1, [r0]
b _0807A7AE
.align 2, 0
_0807A7A8: .4byte gLinkEntity
_0807A7AC:
movs r1, #0xf
_0807A7AE:
ldr r0, _0807A7D8 @ =gUnk_0800823C
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
movs r0, #1
ands r0, r5
cmp r0, #0
bne _0807A824
movs r0, #0xf
ands r0, r7
movs r2, #0x80
lsls r2, r2, #8
asrs r2, r0
cmp r5, #0
bne _0807A7F4
ldr r3, _0807A7DC @ =gLinkEntity
cmp r4, #0xe
bgt _0807A7F0
lsls r0, r4, #1
adds r1, r0, r1
b _0807A7E8
.align 2, 0
_0807A7D8: .4byte gUnk_0800823C
_0807A7DC: .4byte gLinkEntity
_0807A7E0:
adds r1, #2
adds r4, #1
cmp r4, #0xe
bgt _0807A7F0
_0807A7E8:
ldrh r0, [r1]
ands r0, r2
cmp r0, #0
bne _0807A7E0
_0807A7F0:
subs r4, #1
b _0807A816
_0807A7F4:
ldr r3, _0807A800 @ =gLinkEntity
cmp r4, #0
ble _0807A814
lsls r0, r4, #1
adds r1, r0, r1
b _0807A80C
.align 2, 0
_0807A800: .4byte gLinkEntity
_0807A804:
subs r1, #2
subs r4, #1
cmp r4, #0
ble _0807A814
_0807A80C:
ldrh r0, [r1]
ands r0, r2
cmp r0, #0
bne _0807A804
_0807A814:
adds r4, #1
_0807A816:
movs r0, #0xf
ands r0, r6
subs r0, r4, r0
ldrh r1, [r3, #0x32]
adds r0, r0, r1
strh r0, [r3, #0x32]
b _0807A88E
_0807A824:
movs r3, #0xf
ands r6, r3
lsls r0, r6, #1
adds r0, r0, r1
ldrh r2, [r0]
cmp r5, #1
bne _0807A85C
subs r0, r3, r4
lsrs r2, r0
ldr r3, _0807A858 @ =gLinkEntity
cmp r4, #0
ble _0807A854
ands r5, r2
cmp r5, #0
beq _0807A854
movs r1, #1
_0807A844:
lsrs r2, r2, #1
subs r4, #1
cmp r4, #0
ble _0807A854
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0807A844
_0807A854:
adds r4, #1
b _0807A882
.align 2, 0
_0807A858: .4byte gLinkEntity
_0807A85C:
lsls r2, r4
ldr r3, _0807A86C @ =gLinkEntity
cmp r4, #0xe
bgt _0807A880
movs r1, #0x80
lsls r1, r1, #8
b _0807A878
.align 2, 0
_0807A86C: .4byte gLinkEntity
_0807A870:
lsls r2, r2, #1
adds r4, #1
cmp r4, #0xe
bgt _0807A880
_0807A878:
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0807A870
_0807A880:
subs r4, #1
_0807A882:
movs r0, #0xf
ands r0, r7
subs r0, r4, r0
ldrh r2, [r3, #0x2e]
adds r0, r0, r2
strh r0, [r3, #0x2e]
_0807A88E:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0807A894
sub_0807A894: @ 0x0807A894
push {lr}
ldrb r1, [r0, #0x15]
cmp r1, #8
beq _0807A8BA
cmp r1, #8
bgt _0807A8A6
cmp r1, #0
beq _0807A8B0
b _0807A8C8
_0807A8A6:
cmp r1, #0x10
beq _0807A8B6
cmp r1, #0x18
beq _0807A8C0
b _0807A8C8
_0807A8B0:
movs r2, #8
rsbs r2, r2, #0
b _0807A8CA
_0807A8B6:
movs r2, #5
b _0807A8CA
_0807A8BA:
movs r2, #0
movs r1, #8
b _0807A8CC
_0807A8C0:
movs r2, #0
movs r1, #8
rsbs r1, r1, #0
b _0807A8CC
_0807A8C8:
movs r2, #0
_0807A8CA:
movs r1, #0
_0807A8CC:
bl sub_080002B4
pop {pc}
.align 2, 0
thumb_func_start nullsub_505
nullsub_505: @ 0x0807A8D4
bx lr
.align 2, 0
thumb_func_start sub_0807A8D8
sub_0807A8D8: @ 0x0807A8D8
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r5, r0, #0
ldr r0, _0807AA5C @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0807A8F0
b _0807A9F6
_0807A8F0:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r7, _0807AA60 @ =gRoomControls
ldrh r1, [r7, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r6, #0x3f
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
adds r2, #1
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807AA64 @ =gLinkEntity
adds r1, #0x38
mov sb, r1
ldrb r1, [r1]
bl sub_080002EC
adds r4, r0, #0
movs r0, #0x20
mov r8, r0
ands r4, r0
cmp r4, #0
beq _0807A94E
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
adds r2, #1
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A94E:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldrh r1, [r7, #6]
subs r1, #2
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
mov r2, sb
ldrb r1, [r2]
bl sub_080002EC
adds r4, r0, #0
mov r0, r8
ands r4, r0
cmp r4, #0
beq _0807A9A2
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
subs r0, #2
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A9A2:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldrh r1, [r7, #6]
adds r1, #2
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
mov r2, sb
ldrb r1, [r2]
bl sub_080002EC
adds r4, r0, #0
mov r0, r8
ands r4, r0
cmp r4, #0
beq _0807A9F6
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldrh r0, [r7, #6]
adds r0, #2
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807A9F6:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r7, _0807AA60 @ =gRoomControls
ldrh r1, [r7, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r6, #0x3f
ands r0, r6
movs r2, #0x32
ldrsh r1, [r5, r2]
ldrh r2, [r7, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
lsls r1, r1, #6
orrs r0, r1
ldr r1, _0807AA64 @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002EC
adds r4, r0, #0
movs r0, #0x20
ands r0, r4
cmp r0, #0
beq _0807AA4C
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldrh r0, [r7, #6]
subs r1, r1, r0
asrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r5, r2]
ldrh r2, [r7, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r1, r0
adds r0, r5, #0
bl sub_0807AAF8
_0807AA4C:
movs r0, #2
ands r0, r4
cmp r0, #0
beq _0807AA68
adds r0, r5, #0
bl sub_0807AABC
b _0807AA76
.align 2, 0
_0807AA5C: .4byte gLinkState
_0807AA60: .4byte gRoomControls
_0807AA64: .4byte gLinkEntity
_0807AA68:
movs r0, #4
ands r0, r4
cmp r0, #0
beq _0807AA76
adds r0, r5, #0
bl sub_0807AA80
_0807AA76:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0807AA80
sub_0807AA80: @ 0x0807AA80
push {lr}
adds r3, r0, #0
ldr r0, _0807AAB8 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x40
ands r0, r1
cmp r0, #0
bne _0807AAB6
adds r0, r3, #0
adds r0, #0x38
movs r1, #2
strb r1, [r0]
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, #0
bne _0807AAB6
ldrb r2, [r3, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r3, #0x1b]
ldrb r0, [r3, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r3, #0x19]
_0807AAB6:
pop {pc}
.align 2, 0
_0807AAB8: .4byte gLinkState
thumb_func_start sub_0807AABC
sub_0807AABC: @ 0x0807AABC
push {lr}
adds r3, r0, #0
ldr r0, _0807AAF4 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x40
ands r0, r1
cmp r0, #0
bne _0807AAF2
adds r0, r3, #0
adds r0, #0x38
movs r1, #1
strb r1, [r0]
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, #0
bne _0807AAF2
ldrb r2, [r3, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r3, #0x1b]
ldrb r0, [r3, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r3, #0x19]
_0807AAF2:
pop {pc}
.align 2, 0
_0807AAF4: .4byte gLinkState
thumb_func_start sub_0807AAF8
sub_0807AAF8: @ 0x0807AAF8
push {r4, lr}
adds r3, r0, #0
adds r2, r1, #0
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, #0
bne _0807AB3C
adds r0, r3, #0
adds r0, #0x38
ldrb r0, [r0]
lsls r0, r0, #0x1e
orrs r2, r0
movs r3, #0
ldr r0, _0807AB40 @ =gLinkState
ldr r1, [r0, #0x40]
adds r4, r0, #0
cmp r1, r2
beq _0807AB32
adds r1, r4, #0
adds r1, #0x40
_0807AB20:
ldr r0, [r1]
stm r1!, {r2}
adds r2, r0, #0
adds r3, #1
cmp r3, #0xe
bhi _0807AB32
ldr r0, [r1]
cmp r0, r2
bne _0807AB20
_0807AB32:
lsls r0, r3, #2
adds r1, r4, #0
adds r1, #0x40
adds r0, r0, r1
str r2, [r0]
_0807AB3C:
pop {r4, pc}
.align 2, 0
_0807AB40: .4byte gLinkState
thumb_func_start sub_0807AB44
sub_0807AB44: @ 0x0807AB44
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r6, r0, #0
adds r7, r1, #0
mov r8, r2
movs r1, #0x2e
ldrsh r0, [r6, r1]
adds r0, r0, r7
ldr r2, _0807ABF0 @ =gRoomControls
mov sb, r2
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
mov sl, r3
ands r0, r3
movs r5, #0x32
ldrsh r1, [r6, r5]
add r1, r8
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r6, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
movs r1, #0xb
bl sub_0806FC50
adds r5, r0, #0
cmp r5, #0
beq _0807AC44
ldrh r0, [r5, #6]
cmp r0, #0x76
bne _0807ABF4
movs r0, #0x2a
movs r1, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0807AC44
lsls r2, r7, #0x10
mov r0, r8
lsls r3, r0, #0x10
adds r0, r6, #0
adds r1, r4, #0
bl PositionRelative
adds r0, r4, #0
bl sub_08004168
ldrh r0, [r5, #6]
movs r2, #0x2e
ldrsh r1, [r4, r2]
mov r3, sb
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
mov r5, sl
ands r1, r5
movs r3, #0x32
ldrsh r2, [r4, r3]
mov r5, sb
ldrh r3, [r5, #8]
subs r2, r2, r3
asrs r2, r2, #4
mov r3, sl
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0807B7D8
b _0807AC44
.align 2, 0
_0807ABF0: .4byte gRoomControls
_0807ABF4:
movs r0, #0x2a
movs r1, #2
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0807AC44
lsls r2, r7, #0x10
mov r0, r8
lsls r3, r0, #0x10
adds r0, r6, #0
adds r1, r4, #0
bl PositionRelative
str r5, [r4, #0x54]
ldr r0, _0807AC50 @ =0x0000404F
movs r2, #0x2e
ldrsh r1, [r4, r2]
mov r3, sb
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
mov r5, sl
ands r1, r5
movs r3, #0x32
ldrsh r2, [r4, r3]
mov r5, sb
ldrh r3, [r5, #8]
subs r2, r2, r3
asrs r2, r2, #4
mov r3, sl
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_0807AC44:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807AC50: .4byte 0x0000404F
thumb_func_start sub_0807AC54
sub_0807AC54: @ 0x0807AC54
push {lr}
adds r2, r0, #0
ldr r0, _0807AC74 @ =gLinkState
ldrb r1, [r0, #0x11]
adds r3, r0, #0
cmp r1, #0
beq _0807ACC6
ldrb r0, [r3, #0x12]
cmp r0, #0x2a
beq _0807ACA8
cmp r0, #0x2a
bgt _0807AC78
cmp r0, #0x1e
beq _0807AC82
b _0807ACC6
.align 2, 0
_0807AC74: .4byte gLinkState
_0807AC78:
cmp r0, #0x2b
beq _0807AC90
cmp r0, #0x2c
beq _0807ACB6
b _0807ACC6
_0807AC82:
ldrh r0, [r2, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strh r1, [r2, #0x2e]
_0807AC90:
movs r0, #0
movs r1, #0x1d
strb r1, [r2, #0xc]
strb r0, [r2, #0xd]
strh r0, [r2, #0x30]
ldr r0, _0807ACA4 @ =0x000002CF
strh r0, [r3, #8]
movs r0, #1
b _0807ACC8
.align 2, 0
_0807ACA4: .4byte 0x000002CF
_0807ACA8:
ldrh r0, [r2, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strh r1, [r2, #0x2e]
_0807ACB6:
movs r0, #0
movs r1, #0x1d
strb r1, [r2, #0xc]
movs r1, #1
strb r1, [r2, #0xd]
strh r0, [r2, #0x30]
movs r0, #1
b _0807ACC8
_0807ACC6:
movs r0, #0
_0807ACC8:
pop {pc}
.align 2, 0
thumb_func_start sub_0807ACCC
sub_0807ACCC: @ 0x0807ACCC
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x42
movs r0, #0
strb r0, [r1]
movs r0, #0x72
bl GetInventoryValue
movs r1, #0xc0
cmp r0, #1
bne _0807ACF4
adds r1, #0x40
_0807ACF4:
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r1, r0
ble _0807AD18
strh r1, [r4, #0x24]
ldr r0, _0807AD14 @ =gLinkState
ldrb r1, [r0, #0xd]
strb r1, [r4, #0x15]
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _0807ADB4
b _0807AD1E
.align 2, 0
_0807AD14: .4byte gLinkState
_0807AD18:
ldrh r0, [r4, #0x24]
subs r0, #4
strh r0, [r4, #0x24]
_0807AD1E:
ldr r2, _0807AD3C @ =gLinkState
adds r1, r2, #0
adds r1, #0x89
ldrb r0, [r1]
cmp r0, #0
bne _0807AD40
adds r0, r4, #0
bl sub_0807ADB8
cmp r0, #0
bne _0807AD74
adds r0, r4, #0
bl sub_0807AE20
b _0807AD74
.align 2, 0
_0807AD3C: .4byte gLinkState
_0807AD40:
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
beq _0807AD52
adds r0, r4, #0
bl sub_0807ADB8
b _0807AD74
_0807AD52:
adds r2, #0x26
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
ldr r0, _0807ADA0 @ =0x00000163
bl PlaySFX
_0807AD74:
ldr r0, _0807ADA4 @ =gLinkState
adds r0, #0x26
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807ADA8
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #4
orrs r0, r1
strb r0, [r2]
subs r2, #0x13
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
b _0807ADB2
.align 2, 0
_0807ADA0: .4byte 0x00000163
_0807ADA4: .4byte gLinkState
_0807ADA8:
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0xfb
ands r0, r1
_0807ADB2:
strb r0, [r2]
_0807ADB4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0807ADB8
sub_0807ADB8: @ 0x0807ADB8
push {r4, lr}
adds r2, r0, #0
ldr r3, _0807ADF4 @ =gLinkState
adds r0, r3, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0807AE1C
movs r0, #0x26
adds r0, r0, r3
mov ip, r0
ldrb r0, [r0]
movs r1, #0x80
eors r0, r1
mov r1, ip
strb r0, [r1]
movs r1, #0x80
ands r0, r1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
beq _0807ADF8
adds r1, r3, #0
adds r1, #0x89
movs r0, #0x78
strb r0, [r1]
b _0807AE0E
.align 2, 0
_0807ADF4: .4byte gLinkState
_0807ADF8:
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r0, r3, #0
adds r0, #0x89
strb r4, [r0]
_0807AE0E:
ldr r0, _0807AE18 @ =0x00000163
bl PlaySFX
movs r0, #1
b _0807AE1E
.align 2, 0
_0807AE18: .4byte 0x00000163
_0807AE1C:
movs r0, #0
_0807AE1E:
pop {r4, pc}
thumb_func_start sub_0807AE20
sub_0807AE20: @ 0x0807AE20
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0x17
bne _0807AE32
ldr r0, _0807AE58 @ =gLinkState
ldrb r0, [r0, #0xa]
cmp r0, #0
bne _0807AE74
_0807AE32:
ldr r0, _0807AE5C @ =gRoomControls
ldrh r0, [r0]
cmp r0, #0
bne _0807AE74
ldr r0, _0807AE58 @ =gLinkState
adds r0, #0x92
ldrh r1, [r0]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0807AE74
movs r0, #0x72
bl GetInventoryValue
cmp r0, #1
bne _0807AE60
movs r0, #0xe0
lsls r0, r0, #1
b _0807AE64
.align 2, 0
_0807AE58: .4byte gLinkState
_0807AE5C: .4byte gRoomControls
_0807AE60:
movs r0, #0xc0
lsls r0, r0, #1
_0807AE64:
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_08079520
movs r0, #0xb1
lsls r0, r0, #1
bl PlaySFX
_0807AE74:
movs r0, #0x10
bl sub_080793E4
cmp r0, #0
beq _0807AEA8
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0x14
strb r0, [r1]
adds r1, #5
movs r0, #4
strb r0, [r1]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
movs r0, #2
rsbs r0, r0, #0
bl ModHealth
movs r0, #0x7a
bl PlaySFX
_0807AEA8:
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807AECC
ldr r0, _0807AEC8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _0807AEDE
adds r0, r4, #0
movs r1, #4
bl sub_080A2A84
b _0807AEDE
.align 2, 0
_0807AEC8: .4byte gUnk_030010A0
_0807AECC:
ldr r0, _0807AEE0 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0807AEDE
adds r0, r4, #0
bl sub_080A2A64
_0807AEDE:
pop {r4, pc}
.align 2, 0
_0807AEE0: .4byte gUnk_030010A0
thumb_func_start sub_0807AEE4
sub_0807AEE4: @ 0x0807AEE4
push {r4, lr}
ldr r0, _0807AFE4 @ =gLinkState
adds r4, r0, #0
adds r4, #0xac
movs r0, #0
strh r0, [r4]
movs r0, #0x48
bl GetInventoryValue
cmp r0, #1
bne _0807AF02
ldrh r0, [r4]
movs r1, #1
orrs r0, r1
strh r0, [r4]
_0807AF02:
movs r0, #0x49
bl GetInventoryValue
cmp r0, #1
bne _0807AF14
ldrh r0, [r4]
movs r1, #2
orrs r0, r1
strh r0, [r4]
_0807AF14:
movs r0, #0x4a
bl GetInventoryValue
cmp r0, #1
bne _0807AF26
ldrh r0, [r4]
movs r1, #4
orrs r0, r1
strh r0, [r4]
_0807AF26:
movs r0, #0x4b
bl GetInventoryValue
cmp r0, #1
bne _0807AF38
ldrh r0, [r4]
movs r1, #8
orrs r0, r1
strh r0, [r4]
_0807AF38:
movs r0, #0x4c
bl GetInventoryValue
cmp r0, #1
bne _0807AF4A
ldrh r0, [r4]
movs r1, #0x10
orrs r0, r1
strh r0, [r4]
_0807AF4A:
movs r0, #0x4d
bl GetInventoryValue
cmp r0, #1
bne _0807AF5C
ldrh r0, [r4]
movs r1, #0x20
orrs r0, r1
strh r0, [r4]
_0807AF5C:
movs r0, #0x4e
bl GetInventoryValue
cmp r0, #1
bne _0807AF6E
ldrh r0, [r4]
movs r1, #0x40
orrs r0, r1
strh r0, [r4]
_0807AF6E:
movs r0, #0x4f
bl GetInventoryValue
cmp r0, #1
bne _0807AF80
ldrh r0, [r4]
movs r1, #0x80
orrs r0, r1
strh r0, [r4]
_0807AF80:
movs r0, #6
bl GetInventoryValue
cmp r0, #1
bne _0807AF96
ldrh r0, [r4]
movs r2, #0x80
lsls r2, r2, #1
adds r1, r2, #0
orrs r0, r1
strh r0, [r4]
_0807AF96:
movs r0, #0x73
bl GetInventoryValue
cmp r0, #1
bne _0807AFAC
ldrh r0, [r4]
movs r3, #0x80
lsls r3, r3, #2
adds r1, r3, #0
orrs r0, r1
strh r0, [r4]
_0807AFAC:
movs r0, #0x74
bl GetInventoryValue
cmp r0, #1
bne _0807AFC6
ldr r0, _0807AFE4 @ =gLinkState
adds r0, #0xac
ldrh r2, [r0]
movs r3, #0x80
lsls r3, r3, #3
adds r1, r3, #0
orrs r1, r2
strh r1, [r0]
_0807AFC6:
movs r0, #0x75
bl GetInventoryValue
cmp r0, #1
bne _0807AFE0
ldr r0, _0807AFE4 @ =gLinkState
adds r0, #0xac
ldrh r2, [r0]
movs r3, #0x80
lsls r3, r3, #4
adds r1, r3, #0
orrs r1, r2
strh r1, [r0]
_0807AFE0:
pop {r4, pc}
.align 2, 0
_0807AFE4: .4byte gLinkState
thumb_func_start sub_0807AFE8
sub_0807AFE8: @ 0x0807AFE8
push {lr}
bl sub_08077B20
ldr r0, _0807B00C @ =gLinkEntity
movs r1, #0x43
movs r2, #0
bl CreateFx
adds r1, r0, #0
cmp r1, #0
beq _0807B004
ldrh r0, [r1, #0x32]
adds r0, #1
strh r0, [r1, #0x32]
_0807B004:
ldr r1, _0807B010 @ =gLinkState
movs r0, #9
strb r0, [r1, #0xc]
pop {pc}
.align 2, 0
_0807B00C: .4byte gLinkEntity
_0807B010: .4byte gLinkState
thumb_func_start sub_0807B014
sub_0807B014: @ 0x0807B014
push {lr}
ldr r2, _0807B03C @ =gLinkState
adds r0, r2, #0
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0807B044
ldr r0, _0807B040 @ =gUnk_02002A40
adds r1, r0, #0
adds r1, #0xaa
adds r0, #0xab
ldrb r1, [r1]
ldrb r0, [r0]
cmp r1, r0
bne _0807B044
movs r0, #0xf
b _0807B066
.align 2, 0
_0807B03C: .4byte gLinkState
_0807B040: .4byte gUnk_02002A40
_0807B044:
adds r0, r2, #0
adds r0, #0xac
ldrh r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807B064
ldr r0, _0807B060 @ =gUnk_02002A40
adds r0, #0xaa
ldrb r0, [r0]
cmp r0, #8
bhi _0807B064
movs r0, #0x16
b _0807B066
.align 2, 0
_0807B060: .4byte gUnk_02002A40
_0807B064:
movs r0, #0
_0807B066:
pop {pc}
thumb_func_start sub_0807B068
sub_0807B068: @ 0x0807B068
push {lr}
ldr r2, _0807B090 @ =gLinkState
ldrb r1, [r2, #0x1e]
ldrb r0, [r2, #4]
orrs r0, r1
cmp r0, #0
bne _0807B0C2
adds r0, r2, #0
adds r0, #0x26
ldrb r1, [r0]
cmp r1, #0
beq _0807B0A4
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807B098
ldr r0, _0807B094 @ =0x00000C1C
strh r0, [r2, #8]
b _0807B0C2
.align 2, 0
_0807B090: .4byte gLinkState
_0807B094: .4byte 0x00000C1C
_0807B098:
ldr r0, _0807B0A0 @ =0x00000C0C
strh r0, [r2, #8]
b _0807B0C2
.align 2, 0
_0807B0A0: .4byte 0x00000C0C
_0807B0A4:
ldrb r1, [r2, #0xd]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0807B0B8
ldrh r0, [r2, #8]
ldr r1, _0807B0B4 @ =0x00000C18
b _0807B0BC
.align 2, 0
_0807B0B4: .4byte 0x00000C18
_0807B0B8:
ldrh r0, [r2, #8]
ldr r1, _0807B0C4 @ =0x00000C04
_0807B0BC:
cmp r0, r1
beq _0807B0C2
strh r1, [r2, #8]
_0807B0C2:
pop {pc}
.align 2, 0
_0807B0C4: .4byte 0x00000C04
thumb_func_start sub_0807B0C8
sub_0807B0C8: @ 0x0807B0C8
push {r4, lr}
ldr r4, _0807B0F8 @ =gLinkEntity
adds r0, r4, #0
movs r1, #0
movs r2, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #2
adds r2, r4, #0
bl sub_0806FEBC
adds r0, r4, #0
movs r1, #3
movs r2, #0
bl sub_0806FEBC
pop {r4, pc}
.align 2, 0
_0807B0F8: .4byte gLinkEntity
thumb_func_start sub_0807B0FC
sub_0807B0FC: @ 0x0807B0FC
push {lr}
ldr r2, _0807B110 @ =gUnk_0811C27C
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0807B110: .4byte gUnk_0811C27C
thumb_func_start sub_0807B114
sub_0807B114: @ 0x0807B114
movs r1, #1
strb r1, [r0, #0xd]
ldr r1, _0807B124 @ =gLinkState
adds r1, #0x38
ldrb r1, [r1]
adds r0, #0x6c
strb r1, [r0]
bx lr
.align 2, 0
_0807B124: .4byte gLinkState
thumb_func_start sub_0807B128
sub_0807B128: @ 0x0807B128
push {lr}
ldr r2, _0807B140 @ =gUnk_0811C284
adds r1, r0, #0
adds r1, #0x6c
ldrb r1, [r1]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0807B140: .4byte gUnk_0811C284
thumb_func_start sub_0807B144
sub_0807B144: @ 0x0807B144
push {lr}
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
ldrb r1, [r0, #0x14]
lsls r1, r1, #2
strb r1, [r0, #0x15]
movs r1, #0xa0
strh r1, [r0, #0x24]
movs r1, #0x80
lsls r1, r1, #0xb
str r1, [r0, #0x20]
ldr r1, _0807B170 @ =gLinkState
movs r0, #0x81
strb r0, [r1, #2]
bl sub_080791BC
pop {pc}
.align 2, 0
_0807B170: .4byte gLinkState
thumb_func_start nullsub_506
nullsub_506: @ 0x0807B174
bx lr
.align 2, 0
thumb_func_start sub_0807B178
sub_0807B178: @ 0x0807B178
push {lr}
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
movs r2, #0
movs r1, #0x10
strb r1, [r0, #0x15]
strh r2, [r0, #0x24]
movs r1, #0x80
lsls r1, r1, #0xb
str r1, [r0, #0x20]
ldr r1, _0807B1A4 @ =gLinkState
movs r0, #0x81
strb r0, [r1, #2]
bl sub_080791BC
pop {pc}
.align 2, 0
_0807B1A4: .4byte gLinkState
thumb_func_start sub_0807B1A8
sub_0807B1A8: @ 0x0807B1A8
push {r4, lr}
adds r4, r0, #0
ldr r1, _0807B1D4 @ =gUnk_0811C298
adds r0, #0x6e
ldrb r0, [r0]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldr r0, _0807B1D8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _0807B1D0
adds r0, r4, #0
bl sub_080A2B80
_0807B1D0:
pop {r4, pc}
.align 2, 0
_0807B1D4: .4byte gUnk_0811C298
_0807B1D8: .4byte gUnk_030010A0
thumb_func_start sub_0807B1DC
sub_0807B1DC: @ 0x0807B1DC
adds r2, r0, #0
adds r2, #0x6e
ldrb r1, [r2]
adds r1, #1
strb r1, [r2]
movs r1, #0x1e
strb r1, [r0, #0xe]
bx lr
thumb_func_start sub_0807B1EC
sub_0807B1EC: @ 0x0807B1EC
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 _0807B212
adds r1, r2, #0
adds r1, #0x6e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #9
str r0, [r2, #0x20]
ldr r1, _0807B214 @ =gLinkState
ldr r0, _0807B218 @ =0x000002C2
strh r0, [r1, #8]
_0807B212:
pop {pc}
.align 2, 0
_0807B214: .4byte gLinkState
_0807B218: .4byte 0x000002C2
thumb_func_start sub_0807B21C
sub_0807B21C: @ 0x0807B21C
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
ldr r0, [r4, #0x20]
cmp r0, #0
bge _0807B236
movs r1, #0x80
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08003FC4
b _0807B240
_0807B236:
movs r1, #0x80
lsls r1, r1, #4
adds r0, r4, #0
bl sub_08003FC4
_0807B240:
ldr r1, [r4, #0x20]
ldr r0, _0807B260 @ =0xFFFF8000
cmp r1, r0
bge _0807B25E
movs r1, #0
movs r0, #0x78
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x6e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r4, #0x34]
str r0, [r4, #0x68]
_0807B25E:
pop {r4, pc}
.align 2, 0
_0807B260: .4byte 0xFFFF8000
thumb_func_start sub_0807B264
sub_0807B264: @ 0x0807B264
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0xf]
adds r0, #2
strb r0, [r4, #0xf]
ldr r1, _0807B2B4 @ =gSineTable
ldrb r0, [r4, #0xf]
lsls r0, r0, #1
adds r0, r0, r1
movs r2, #0
ldrsh r1, [r0, r2]
asrs r1, r1, #7
lsls r1, r1, #0x10
ldr r0, [r4, #0x68]
adds r0, r0, r1
str r0, [r4, #0x34]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0807B2B0
movs r0, #0x50
strb r0, [r4, #0xe]
movs r0, #0x80
lsls r0, r0, #8
str r0, [r4, #0x20]
adds r1, r4, #0
adds r1, #0x6e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
movs r0, #0xa9
lsls r0, r0, #1
bl PlaySFX
_0807B2B0:
pop {r4, pc}
.align 2, 0
_0807B2B4: .4byte gSineTable
thumb_func_start sub_0807B2B8
sub_0807B2B8: @ 0x0807B2B8
push {r4, lr}
adds r4, r0, #0
ldr r1, _0807B2F0 @ =0xFFFFE000
bl sub_08003FC4
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0807B2EC
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0807B2EC
adds r0, r4, #0
adds r0, #0x6d
ldrb r1, [r0]
lsls r0, r1, #2
adds r0, r0, r1
lsls r0, r0, #2
ldr r1, _0807B2F4 @ =gUnk_0813AD88
adds r0, r0, r1
bl sub_08080840
_0807B2EC:
pop {r4, pc}
.align 2, 0
_0807B2F0: .4byte 0xFFFFE000
_0807B2F4: .4byte gUnk_0813AD88
thumb_func_start sub_0807B2F8
sub_0807B2F8: @ 0x0807B2F8
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x6e
ldrb r0, [r1]
cmp r0, #0
bne _0807B310
adds r0, #1
strb r0, [r1]
adds r0, r2, #0
bl sub_0809D738
_0807B310:
pop {pc}
.align 2, 0
thumb_func_start SetTileType
SetTileType: @ 0x0807B314
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
ldr r0, _0807B3A0 @ =0x000007FF
cmp r5, r0
bhi _0807B410
adds r0, r4, #0
adds r1, r6, #0
bl DeleteLoadedTileEntity
adds r0, r6, #0
bl GetLayerByIndex
adds r2, r0, #0
lsls r1, r5, #1
ldr r3, _0807B3A4 @ =0x00006004
adds r0, r2, r3
adds r0, r0, r1
ldrh r0, [r0]
mov ip, r0
lsls r1, r4, #1
adds r0, r2, #4
adds r0, r0, r1
mov r1, ip
strh r1, [r0]
ldr r0, _0807B3A8 @ =gUnk_080B3E80
adds r0, r5, r0
ldrb r3, [r0]
ldr r1, _0807B3AC @ =0x00002004
adds r0, r2, r1
adds r0, r0, r4
strb r3, [r0]
ldr r7, _0807B3B0 @ =gRoomControls
ldrb r1, [r7, #0xf]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0807B36C
ldr r0, _0807B3B4 @ =gUnk_02025EB0
ldr r1, _0807B3AC @ =0x00002004
adds r0, r0, r1
adds r0, r4, r0
strb r3, [r0]
_0807B36C:
ldr r3, _0807B3B8 @ =0x0000B004
adds r1, r2, r3
adds r1, r1, r4
ldr r0, _0807B3BC @ =gUnk_080B37A0
adds r0, r5, r0
ldrb r0, [r0]
strb r0, [r1]
ldrb r1, [r7, #0xf]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _0807B430
movs r1, #0x3f
ands r1, r4
lsls r1, r1, #1
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r4
lsls r0, r0, #2
adds r1, r1, r0
cmp r6, #2
beq _0807B3C4
lsls r1, r1, #1
ldr r0, _0807B3C0 @ =gUnk_02019EE0
b _0807B3C8
.align 2, 0
_0807B3A0: .4byte 0x000007FF
_0807B3A4: .4byte 0x00006004
_0807B3A8: .4byte gUnk_080B3E80
_0807B3AC: .4byte 0x00002004
_0807B3B0: .4byte gRoomControls
_0807B3B4: .4byte gUnk_02025EB0
_0807B3B8: .4byte 0x0000B004
_0807B3BC: .4byte gUnk_080B37A0
_0807B3C0: .4byte gUnk_02019EE0
_0807B3C4:
lsls r1, r1, #1
ldr r0, _0807B400 @ =gUnk_02002F00
_0807B3C8:
adds r3, r1, r0
mov r1, ip
lsls r0, r1, #3
ldr r1, _0807B404 @ =0x00007004
adds r0, r0, r1
adds r0, r2, r0
ldrh r1, [r0]
strh r1, [r3]
ldrh r1, [r0, #2]
strh r1, [r3, #2]
movs r1, #0x80
lsls r1, r1, #1
adds r2, r3, r1
ldrh r1, [r0, #4]
strh r1, [r2]
movs r2, #0x81
lsls r2, r2, #1
adds r1, r3, r2
ldrh r0, [r0, #6]
strh r0, [r1]
ldr r0, _0807B408 @ =gRoomControls
ldrh r0, [r0]
cmp r0, #1
beq _0807B430
ldr r1, _0807B40C @ =gUnk_02000070
movs r0, #1
strb r0, [r1]
b _0807B430
.align 2, 0
_0807B400: .4byte gUnk_02002F00
_0807B404: .4byte 0x00007004
_0807B408: .4byte gRoomControls
_0807B40C: .4byte gUnk_02000070
_0807B410:
ldr r0, _0807B424 @ =0x00003FFF
cmp r5, r0
bls _0807B428
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl SetTile
b _0807B430
.align 2, 0
_0807B424: .4byte 0x00003FFF
_0807B428:
adds r0, r4, #0
adds r1, r6, #0
bl sub_0807BA8C
_0807B430:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0807B434
sub_0807B434: @ 0x0807B434
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl GetTileType
cmp r0, #0x37
bhi _0807B44A
cmp r0, #0x36
blo _0807B44A
movs r0, #0
b _0807B462
_0807B44A:
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
lsls r1, r5, #0x18
lsrs r1, r1, #0x18
bl sub_080002C8
adds r1, r0, #0
movs r0, #0xd
eors r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
_0807B462:
pop {r4, r5, pc}
thumb_func_start sub_0807B464
sub_0807B464: @ 0x0807B464
push {lr}
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
bl sub_080002C8
movs r1, #0
cmp r0, #0x56
bne _0807B47A
movs r1, #1
_0807B47A:
adds r0, r1, #0
pop {pc}
.align 2, 0
thumb_func_start sub_0807B480
sub_0807B480: @ 0x0807B480
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r1, #0
movs r1, #2
bl sub_0807B464
cmp r0, #0
beq _0807B558
adds r0, r6, #0
subs r0, #0x40
movs r1, #2
bl sub_0807B464
adds r5, r0, #0
adds r0, r6, #1
movs r1, #2
bl sub_0807B464
lsls r0, r0, #1
orrs r5, r0
adds r4, r6, #0
adds r4, #0x40
adds r0, r4, #0
movs r1, #2
bl sub_0807B464
lsls r0, r0, #2
orrs r5, r0
subs r0, r6, #1
movs r1, #2
bl sub_0807B464
lsls r0, r0, #3
orrs r5, r0
adds r0, r6, #0
adds r0, #0x41
movs r1, #1
bl sub_0807B464
lsls r0, r0, #1
orrs r5, r0
adds r0, r6, #0
adds r0, #0x3f
movs r1, #1
bl sub_0807B464
lsls r0, r0, #3
orrs r5, r0
adds r0, r4, #0
movs r1, #2
bl GetTileType
cmp r0, #0
beq _0807B4FA
adds r0, r6, #0
adds r0, #0x80
movs r1, #1
bl sub_0807B464
lsls r0, r0, #2
orrs r5, r0
_0807B4FA:
ldr r0, _0807B514 @ =gUnk_0811C2CC
lsls r1, r5, #1
adds r1, r1, r0
ldrh r4, [r1]
adds r0, r6, #0
movs r1, #2
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
ldr r2, _0807B518 @ =gUnk_0811C2EC
movs r3, #0
b _0807B51E
.align 2, 0
_0807B514: .4byte gUnk_0811C2CC
_0807B518: .4byte gUnk_0811C2EC
_0807B51C:
adds r2, #6
_0807B51E:
ldrh r1, [r2]
cmp r1, #0
beq _0807B52A
cmp r0, r1
bne _0807B51C
ldrh r3, [r2, #2]
_0807B52A:
movs r0, #1
lsls r0, r7
bics r3, r0
ldr r2, _0807B534 @ =gUnk_0811C2EC
b _0807B53A
.align 2, 0
_0807B534: .4byte gUnk_0811C2EC
_0807B538:
adds r2, #6
_0807B53A:
ldrh r0, [r2]
cmp r0, #0
beq _0807B54E
ldrh r0, [r2, #2]
cmp r3, r0
bne _0807B538
ldrh r0, [r2, #4]
cmp r5, r0
bne _0807B538
ldrh r4, [r2]
_0807B54E:
adds r0, r4, #0
adds r1, r6, #0
movs r2, #2
bl SetTileType
_0807B558:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0807B55C
sub_0807B55C: @ 0x0807B55C
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r2, #0
bl sub_0807B464
cmp r0, #0
beq _0807B5AC
adds r0, r5, #0
subs r0, #0x40
adds r1, r6, #0
bl sub_0807B464
adds r4, r0, #0
adds r0, r5, #1
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #1
orrs r4, r0
adds r0, r5, #0
adds r0, #0x40
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #2
orrs r4, r0
subs r0, r5, #1
adds r1, r6, #0
bl sub_0807B464
lsls r0, r0, #3
orrs r0, r4
lsls r0, r0, #1
adds r0, r0, r7
ldrh r0, [r0]
adds r1, r5, #0
adds r2, r6, #0
bl SetTileType
_0807B5AC:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0807B5B0
sub_0807B5B0: @ 0x0807B5B0
push {r4, r5, r6, r7, lr}
adds r3, r0, #0
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldr r6, _0807B5F8 @ =gUnk_0811C456
ldrb r1, [r3, #0x14]
movs r2, #6
ands r2, r1
lsls r1, r2, #1
adds r1, r1, r6
movs r4, #0
ldrsh r1, [r1, r4]
adds r0, r0, r1
ldr r5, _0807B5FC @ =gRoomControls
ldrh r1, [r5, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r4, #0x3f
ands r0, r4
movs r7, #0x32
ldrsh r1, [r3, r7]
adds r2, #1
lsls r2, r2, #1
adds r2, r2, r6
movs r3, #0
ldrsh r2, [r2, r3]
adds r1, r1, r2
ldrh r2, [r5, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r4
lsls r1, r1, #6
orrs r0, r1
bl sub_0807B600
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0807B5F8: .4byte gUnk_0811C456
_0807B5FC: .4byte gRoomControls
thumb_func_start sub_0807B600
sub_0807B600: @ 0x0807B600
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r5, #0
subs r6, #0x40
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
movs r1, #1
bl sub_080002C8
cmp r0, #0x56
beq _0807B61A
movs r0, #0
b _0807B76E
_0807B61A:
adds r0, r5, #0
movs r1, #1
bl GetTileType
adds r1, r0, #0
ldr r0, _0807B634 @ =0x0000026A
cmp r1, r0
bne _0807B638
adds r0, r5, #0
bl sub_0807B820
b _0807B76C
.align 2, 0
_0807B634: .4byte 0x0000026A
_0807B638:
ldr r0, _0807B648 @ =0x00000267
cmp r1, r0
bne _0807B64C
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B820
b _0807B76C
.align 2, 0
_0807B648: .4byte 0x00000267
_0807B64C:
ldr r0, _0807B65C @ =0x0000027A
cmp r1, r0
bne _0807B660
adds r0, r5, #0
bl sub_0807B8A8
b _0807B76C
.align 2, 0
_0807B65C: .4byte 0x0000027A
_0807B660:
ldr r0, _0807B670 @ =0x00000277
cmp r1, r0
bne _0807B674
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B8A8
b _0807B76C
.align 2, 0
_0807B670: .4byte 0x00000277
_0807B674:
ldr r0, _0807B684 @ =0x0000028A
cmp r1, r0
bne _0807B688
adds r0, r5, #0
bl sub_0807B930
b _0807B76C
.align 2, 0
_0807B684: .4byte 0x0000028A
_0807B688:
ldr r0, _0807B698 @ =0x00000287
cmp r1, r0
bne _0807B69C
adds r0, r5, #0
adds r0, #0x40
bl sub_0807B930
b _0807B76C
.align 2, 0
_0807B698: .4byte 0x00000287
_0807B69C:
adds r0, r5, #0
movs r1, #2
bl GetTileType
cmp r0, #0
beq _0807B6EC
ldr r0, _0807B6E8 @ =0x000002F2
adds r1, r5, #0
movs r2, #1
bl SetTileType
adds r0, r6, #0
movs r1, #1
bl sub_080002E0
cmp r0, #3
bne _0807B6CA
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r6, #0
movs r2, #1
bl SetTileType
_0807B6CA:
adds r0, r5, #0
adds r0, #0x40
movs r1, #1
bl sub_080002E0
cmp r0, #3
bne _0807B6F8
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r5, #0
movs r2, #1
bl SetTileType
b _0807B6F8
.align 2, 0
_0807B6E8: .4byte 0x000002F2
_0807B6EC:
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r5, #0
movs r2, #1
bl SetTileType
_0807B6F8:
adds r0, r6, #0
movs r1, #2
bl sub_0807B464
cmp r0, #0
beq _0807B748
movs r0, #0
adds r1, r6, #0
movs r2, #2
bl SetTileType
adds r0, r6, #0
movs r1, #1
bl GetTileType
ldr r1, _0807B770 @ =0x000002F2
cmp r0, r1
bne _0807B728
movs r0, #0xbd
lsls r0, r0, #2
adds r1, r6, #0
movs r2, #1
bl SetTileType
_0807B728:
adds r0, r5, #1
ldr r4, _0807B774 @ =gUnk_0811C2AC
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
subs r0, r5, #1
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
adds r0, r6, #0
movs r1, #1
adds r2, r4, #0
bl sub_0807B55C
_0807B748:
adds r0, r6, #1
movs r1, #3
bl sub_0807B480
subs r0, r6, #1
movs r1, #1
bl sub_0807B480
adds r0, r6, #0
adds r0, #0x40
movs r1, #0
bl sub_0807B480
adds r0, r6, #0
subs r0, #0x40
movs r1, #2
bl sub_0807B480
_0807B76C:
movs r0, #1
_0807B76E:
pop {r4, r5, r6, pc}
.align 2, 0
_0807B770: .4byte 0x000002F2
_0807B774: .4byte gUnk_0811C2AC
thumb_func_start sub_0807B778
sub_0807B778: @ 0x0807B778
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
lsls r1, r6, #0x18
lsrs r1, r1, #0x18
bl sub_080002C8
cmp r0, #0xd
bne _0807B7D0
adds r0, r5, #0
subs r0, #0x40
adds r1, r6, #0
bl sub_0807B434
adds r4, r0, #0
adds r0, r5, #1
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #1
orrs r4, r0
adds r0, r5, #0
adds r0, #0x40
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #2
orrs r4, r0
subs r0, r5, #1
adds r1, r6, #0
bl sub_0807B434
lsls r0, r0, #3
orrs r0, r4
ldr r1, _0807B7D4 @ =gUnk_0811C466
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
adds r1, r5, #0
adds r2, r6, #0
bl SetTileType
_0807B7D0:
pop {r4, r5, r6, pc}
.align 2, 0
_0807B7D4: .4byte gUnk_0811C466