tmc/asm/code_08076C80.s

1908 lines
33 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08076C80
sub_08076C80: @ 0x08076C80
push {lr}
ldr r3, _08076C94 @ =gUnk_0811BDE0
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_08076C94: .4byte gUnk_0811BDE0
thumb_func_start sub_08076C98
sub_08076C98: @ 0x08076C98
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #9]
movs r0, #0xf
orrs r0, r2
strb r0, [r4, #9]
adds r0, r4, #0
bl sub_08077D38
ldr r0, _08076CB8 @ =gLinkEntity
bl sub_0806F948
adds r0, r4, #0
bl sub_08077BB8
pop {r4, pc}
.align 2, 0
_08076CB8: .4byte gLinkEntity
thumb_func_start sub_08076CBC
sub_08076CBC: @ 0x08076CBC
push {r4, lr}
adds r4, r0, #0
ldrb r2, [r4, #0xe]
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08076CD2
adds r0, r4, #0
bl sub_08077E78
b _08076CE8
_08076CD2:
movs r0, #0x40
ands r0, r2
cmp r0, #0
beq _08076CE2
adds r0, r4, #0
movs r1, #0x12
bl sub_08077C3C
_08076CE2:
adds r0, r4, #0
bl UpdateItemAnim
_08076CE8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08076CEC
sub_08076CEC: @ 0x08076CEC
push {lr}
ldr r3, _08076D00 @ =gUnk_0811BDE8
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_08076D00: .4byte gUnk_0811BDE8
thumb_func_start sub_08076D04
sub_08076D04: @ 0x08076D04
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r1, _08076D2C @ =gLinkState
movs r0, #0x81
strb r0, [r1, #3]
movs r0, #2
strb r0, [r4, #9]
ldr r0, _08076D30 @ =gLinkEntity
bl sub_0806F948
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077D38
adds r0, r4, #0
bl sub_08077BB8
pop {r4, r5, pc}
.align 2, 0
_08076D2C: .4byte gLinkState
_08076D30: .4byte gLinkEntity
thumb_func_start sub_08076D34
sub_08076D34: @ 0x08076D34
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
bl sub_08077EFC
adds r1, r0, #0
cmp r1, #0
beq _08076D80
ldr r5, _08076D78 @ =gLinkState
ldrb r0, [r5, #3]
movs r1, #1
orrs r1, r0
strb r1, [r5, #3]
adds r0, r4, #0
bl UpdateItemAnim
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08076D8C
ldrb r0, [r4, #4]
adds r0, #1
strb r0, [r4, #4]
movs r0, #0
strb r0, [r4, #0xf]
movs r1, #8
asrs r1, r6
ldrb r0, [r5, #0xa]
bics r0, r1
strb r0, [r5, #0xa]
ldr r0, _08076D7C @ =0x0000015D
bl PlaySFX
b _08076D8C
.align 2, 0
_08076D78: .4byte gLinkState
_08076D7C: .4byte 0x0000015D
_08076D80:
ldr r0, _08076D90 @ =gLinkState
strb r1, [r0, #3]
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077E78
_08076D8C:
pop {r4, r5, r6, pc}
.align 2, 0
_08076D90: .4byte gLinkState
thumb_func_start sub_08076D94
sub_08076D94: @ 0x08076D94
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl sub_08077EFC
adds r1, r0, #0
cmp r1, #0
beq _08076DBC
ldr r2, _08076DB8 @ =gLinkState
ldrb r1, [r2, #3]
movs r0, #1
orrs r0, r1
strb r0, [r2, #3]
adds r0, r4, #0
bl UpdateItemAnim
b _08076DC8
.align 2, 0
_08076DB8: .4byte gLinkState
_08076DBC:
ldr r0, _08076DCC @ =gLinkState
strb r1, [r0, #3]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
_08076DC8:
pop {r4, r5, pc}
.align 2, 0
_08076DCC: .4byte gLinkState
thumb_func_start sub_08076DD0
sub_08076DD0: @ 0x08076DD0
push {lr}
ldr r2, _08076DEC @ =gLinkState
adds r2, #0xa8
movs r3, #3
strb r3, [r2]
ldr r3, _08076DF0 @ =gUnk_0811BDF4
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_08076DEC: .4byte gLinkState
_08076DF0: .4byte gUnk_0811BDF4
thumb_func_start sub_08076DF4
sub_08076DF4: @ 0x08076DF4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
adds r7, r1, #0
ldr r0, _08076E48 @ =gLinkEntity
mov r8, r0
bl sub_0807A894
cmp r0, #0x29
beq _08076E50
ldr r6, _08076E4C @ =gLinkState
ldrb r0, [r6, #0x12]
cmp r0, #0x12
beq _08076E50
cmp r0, #0x13
beq _08076E50
ldrb r5, [r6, #2]
cmp r5, #0
bne _08076E50
adds r0, r4, #0
adds r1, r7, #0
bl sub_08077D38
strb r5, [r4, #7]
mov r1, r8
ldrb r0, [r1, #0x14]
strb r0, [r4, #0xa]
ldrb r1, [r4, #9]
movs r0, #0x80
orrs r0, r1
adds r0, #1
strb r0, [r4, #9]
movs r0, #1
strb r0, [r6, #0x1d]
mov r1, r8
str r5, [r1, #0x74]
strb r0, [r6, #0x1c]
adds r0, r4, #0
bl sub_08077BB8
b _08076E58
.align 2, 0
_08076E48: .4byte gLinkEntity
_08076E4C: .4byte gLinkState
_08076E50:
adds r0, r4, #0
adds r1, r7, #0
bl sub_08077E78
_08076E58:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08076E60
sub_08076E60: @ 0x08076E60
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
ldr r5, _08076EB4 @ =gLinkState
ldrb r1, [r5, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08076E7A
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077E78
_08076E7A:
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08076EC0
movs r0, #2
strb r0, [r4, #4]
ldr r1, _08076EB8 @ =0x00000504
adds r0, r4, #0
bl sub_08077DF4
movs r1, #8
asrs r1, r6
ldrb r0, [r5, #0xa]
bics r0, r1
strb r0, [r5, #0xa]
movs r0, #0x10
movs r1, #0
movs r2, #0
movs r3, #0
bl sub_08077CB8
adds r1, r0, #0
cmp r1, #0
beq _08076EC6
ldr r0, _08076EBC @ =gLinkEntity
str r0, [r1, #0x50]
b _08076EC6
.align 2, 0
_08076EB4: .4byte gLinkState
_08076EB8: .4byte 0x00000504
_08076EBC: .4byte gLinkEntity
_08076EC0:
adds r0, r4, #0
bl UpdateItemAnim
_08076EC6:
pop {r4, r5, r6, pc}
thumb_func_start sub_08076EC8
sub_08076EC8: @ 0x08076EC8
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
ldr r5, _08076EE4 @ =gLinkState
ldrb r1, [r5, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08076EE8
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077E78
b _08076F60
.align 2, 0
_08076EE4: .4byte gLinkState
_08076EE8:
adds r0, r4, #0
bl sub_08077EFC
cmp r0, #0
beq _08076F50
ldrb r0, [r4, #7]
cmp r0, #0xef
bls _08076EFC
movs r0, #3
b _08076F0E
_08076EFC:
adds r0, #1
strb r0, [r4, #7]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x77
bls _08076F0C
movs r0, #2
b _08076F0E
_08076F0C:
movs r0, #1
_08076F0E:
strb r0, [r5, #0x1d]
ldr r0, _08076F1C @ =gLinkEntity
ldrb r0, [r0, #0xd]
cmp r0, #0x1b
bne _08076F24
ldr r1, _08076F20 @ =0x00000524
b _08076F36
.align 2, 0
_08076F1C: .4byte gLinkEntity
_08076F20: .4byte 0x00000524
_08076F24:
ldr r0, _08076F44 @ =gLinkState
ldrb r1, [r0, #0xd]
movs r0, #0x80
ands r0, r1
movs r1, #0xa3
lsls r1, r1, #3
cmp r0, #0
beq _08076F36
subs r1, #0x14
_08076F36:
ldrh r0, [r4, #0x10]
cmp r1, r0
beq _08076F48
adds r0, r4, #0
bl sub_08077DF4
b _08076F60
.align 2, 0
_08076F44: .4byte gLinkState
_08076F48:
adds r0, r4, #0
bl UpdateItemAnim
b _08076F60
_08076F50:
ldrb r0, [r4, #4]
adds r0, #1
strb r0, [r4, #4]
movs r0, #8
asrs r0, r6
ldrb r1, [r5, #0xa]
orrs r0, r1
strb r0, [r5, #0xa]
_08076F60:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08076F64
sub_08076F64: @ 0x08076F64
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
ldr r1, _08076F84 @ =gLinkState
ldrb r0, [r1, #0x1c]
movs r2, #0xf
ands r2, r0
adds r3, r1, #0
cmp r2, #7
bls _08076F7A
b _080770EC
_08076F7A:
lsls r0, r2, #2
ldr r1, _08076F88 @ =_08076F8C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08076F84: .4byte gLinkState
_08076F88: .4byte _08076F8C
_08076F8C: @ jump table
.4byte _08077100 @ case 0
.4byte _080770EC @ case 1
.4byte _080770EC @ case 2
.4byte _0807704C @ case 3
.4byte _08077052 @ case 4
.4byte _08076FAC @ case 5
.4byte _080770B8 @ case 6
.4byte _080770D0 @ case 7
_08076FAC:
ldrb r1, [r4, #0xe]
movs r5, #0x80
adds r0, r5, #0
ands r0, r1
cmp r0, #0
beq _0807700E
ldrb r0, [r4, #8]
cmp r0, #0
beq _08077004
movs r0, #0
strb r0, [r4, #8]
strb r0, [r4, #7]
movs r1, #1
strb r1, [r3, #0x1d]
ldr r5, _08076FFC @ =gLinkEntity
str r0, [r5, #0x74]
strb r1, [r3, #0x1c]
movs r1, #8
asrs r1, r6
ldrb r0, [r3, #0xa]
bics r0, r1
strb r0, [r3, #0xa]
movs r0, #2
strb r0, [r4, #4]
ldr r1, _08077000 @ =0x00000504
adds r0, r4, #0
bl sub_08077DF4
movs r0, #0x10
movs r1, #0
movs r2, #0
movs r3, #0
bl sub_08077CB8
cmp r0, #0
bne _08076FF6
b _08077110
_08076FF6:
str r5, [r0, #0x50]
b _08077110
.align 2, 0
_08076FFC: .4byte gLinkEntity
_08077000: .4byte 0x00000504
_08077004:
movs r0, #6
strb r0, [r3, #0x1c]
movs r1, #0xa2
lsls r1, r1, #3
b _080770F2
_0807700E:
adds r0, r4, #0
bl sub_08077EFC
cmp r0, #0
beq _0807701C
movs r0, #1
strb r0, [r4, #8]
_0807701C:
adds r0, r4, #0
bl UpdateItemAnim
ldr r0, _08077044 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #2
ands r0, r1
cmp r0, #0
bne _08077110
ldr r0, _08077048 @ =gLinkEntity
ldrb r1, [r0, #0x14]
lsls r1, r1, #2
movs r2, #0x10
eors r1, r2
strb r1, [r0, #0x15]
strh r5, [r0, #0x24]
bl sub_08079E08
b _08077110
.align 2, 0
_08077044: .4byte gLinkState
_08077048: .4byte gLinkEntity
_0807704C:
ldr r1, _080770B0 @ =gLinkState
movs r0, #4
strb r0, [r1, #0x1c]
_08077052:
adds r0, r4, #0
bl sub_08077EFC
cmp r0, #0
beq _08077060
movs r0, #1
strb r0, [r4, #8]
_08077060:
adds r0, r4, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0807708C
ldr r1, _080770B0 @ =gLinkState
movs r2, #0
movs r0, #5
strb r0, [r1, #0x1c]
ldr r0, _080770B4 @ =gLinkEntity
str r2, [r0, #0x70]
ldrb r0, [r1, #0x1d]
cmp r0, #0
beq _0807708C
movs r0, #0x11
movs r1, #0
movs r3, #0
bl sub_08077CB8
_0807708C:
ldr r0, _080770B0 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #2
ands r0, r1
cmp r0, #0
bne _08077110
ldr r2, _080770B4 @ =gLinkEntity
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
strb r0, [r2, #0x15]
movs r0, #0x80
strh r0, [r2, #0x24]
bl sub_08079E08
b _08077110
.align 2, 0
_080770B0: .4byte gLinkState
_080770B4: .4byte gLinkEntity
_080770B8:
adds r0, r4, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08077110
ldr r3, _080770CC @ =gLinkState
b _08077100
.align 2, 0
_080770CC: .4byte gLinkState
_080770D0:
ldr r1, _080770E4 @ =0x00000514
adds r0, r4, #0
bl sub_08077DF4
ldr r1, _080770E8 @ =gLinkState
movs r2, #0
movs r0, #3
strb r0, [r1, #0x1c]
strb r2, [r1, #0x1d]
b _08077110
.align 2, 0
_080770E4: .4byte 0x00000514
_080770E8: .4byte gLinkState
_080770EC:
movs r0, #3
strb r0, [r3, #0x1c]
ldr r1, _080770FC @ =0x00000514
_080770F2:
adds r0, r4, #0
bl sub_08077DF4
b _08077110
.align 2, 0
_080770FC: .4byte 0x00000514
_08077100:
movs r1, #0
strb r1, [r3, #0x1c]
ldr r0, _08077114 @ =gLinkEntity
str r1, [r0, #0x70]
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077E78
_08077110:
pop {r4, r5, r6, pc}
.align 2, 0
_08077114: .4byte gLinkEntity
thumb_func_start sub_08077118
sub_08077118: @ 0x08077118
push {lr}
ldr r3, _0807712C @ =gUnk_0811BE04
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_0807712C: .4byte gUnk_0811BE04
thumb_func_start sub_08077130
sub_08077130: @ 0x08077130
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r5, _0807718C @ =gLinkState
ldrb r0, [r5, #2]
cmp r0, #0
bne _080771B6
adds r0, r4, #0
bl sub_08077D38
adds r0, r5, #0
adds r0, #0x3d
movs r6, #1
strb r6, [r0]
ldrb r1, [r4, #9]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #9]
bl sub_080774A0
adds r5, r0, #0
cmp r5, #0
beq _080771A8
ldrb r0, [r4, #7]
cmp r0, #0
bne _080771C4
ldr r1, _08077190 @ =0x0000050C
adds r0, r4, #0
bl sub_08077DF4
movs r0, #2
strb r0, [r4, #4]
cmp r5, #0x56
bne _080771C4
ldr r2, _08077194 @ =gLinkEntity
ldrb r1, [r2, #0x14]
ands r0, r1
cmp r0, #0
beq _08077198
ldrh r0, [r2, #0x32]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #6
orrs r1, r0
strh r1, [r2, #0x32]
b _080771C4
.align 2, 0
_0807718C: .4byte gLinkState
_08077190: .4byte 0x0000050C
_08077194: .4byte gLinkEntity
_08077198:
ldrh r0, [r2, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
ands r1, r0
movs r0, #8
orrs r1, r0
strh r1, [r2, #0x2e]
b _080771C4
_080771A8:
movs r1, #0xa1
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08077DF4
strb r6, [r4, #4]
b _080771C4
_080771B6:
adds r0, r4, #0
bl sub_08077E78
adds r1, r5, #0
adds r1, #0x3d
movs r0, #0
strb r0, [r1]
_080771C4:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080771C8
sub_080771C8: @ 0x080771C8
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080771F4
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
ldr r0, _080771F0 @ =gLinkState
adds r0, #0x3d
movs r1, #0
strb r1, [r0]
b _080772A4
.align 2, 0
_080771F0: .4byte gLinkState
_080771F4:
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0807720E
ldrb r0, [r4, #8]
cmp r0, #0xff
bne _0807720E
ldr r0, _08077240 @ =gLinkEntity
ldrb r2, [r4, #0xe]
movs r1, #0x1e
movs r3, #1
bl CreateObjectWithParent
_0807720E:
ldrb r1, [r4, #0xe]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _080772A4
ldr r5, _08077240 @ =gLinkEntity
adds r0, r5, #0
movs r1, #0xd
adds r2, r4, #0
bl sub_0800875A
cmp r0, #0
bne _08077248
movs r1, #0xa4
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08077DF4
movs r0, #3
strb r0, [r4, #4]
ldr r0, _08077244 @ =0x00000107
bl PlaySFX
b _080772A4
.align 2, 0
_08077240: .4byte gLinkEntity
_08077244: .4byte 0x00000107
_08077248:
ldrb r0, [r4, #8]
cmp r0, #0xff
beq _0807728C
ldrb r3, [r4, #3]
adds r0, r5, #0
movs r1, #0x1f
movs r2, #0
bl CreateObjectWithParent
adds r3, r0, #0
cmp r3, #0
beq _0807729C
ldrb r0, [r4, #7]
movs r2, #0
strb r0, [r3, #0xe]
ldrb r0, [r4, #8]
strb r0, [r3, #0xf]
ldrb r1, [r5, #0x14]
movs r0, #6
ands r0, r1
strb r0, [r3, #0x14]
adds r0, r5, #0
adds r0, #0x5a
strb r2, [r0]
ldr r1, _08077288 @ =gUnk_0811BE14
ldrb r0, [r4, #8]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x59
strb r1, [r0]
b _0807729C
.align 2, 0
_08077288: .4byte gUnk_0811BE14
_0807728C:
ldrb r0, [r4, #3]
cmp r0, #0xf
bne _0807729C
ldrb r0, [r4, #7]
cmp r0, #0x17
bne _0807729C
movs r0, #0
strb r0, [r4, #8]
_0807729C:
movs r0, #0x84
lsls r0, r0, #1
bl PlaySFX
_080772A4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080772A8
sub_080772A8: @ 0x080772A8
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
ldrb r1, [r4, #0xe]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _080772C6
adds r0, r4, #0
bl sub_08077F10
cmp r0, #0
beq _080772C6
movs r0, #1
strb r0, [r4, #7]
_080772C6:
movs r0, #0x71
bl GetInventoryValue
cmp r0, #1
bne _08077318
ldrb r1, [r4, #0xe]
movs r5, #7
adds r0, r5, #0
ands r0, r1
cmp r0, #3
beq _08077300
adds r0, r4, #0
movs r1, #2
bl sub_08077E3C
ldr r3, _080772F8 @ =gLinkEntity
ldr r2, _080772FC @ =gUnk_0811BE16
ldrb r1, [r4, #0xe]
adds r0, r5, #0
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
lsls r0, r0, #1
b _0807732E
.align 2, 0
_080772F8: .4byte gLinkEntity
_080772FC: .4byte gUnk_0811BE16
_08077300:
adds r0, r4, #0
bl UpdateItemAnim
ldr r3, _08077310 @ =gLinkEntity
ldr r2, _08077314 @ =gUnk_0811BE16
ldrb r1, [r4, #0xe]
adds r0, r5, #0
b _08077326
.align 2, 0
_08077310: .4byte gLinkEntity
_08077314: .4byte gUnk_0811BE16
_08077318:
adds r0, r4, #0
bl UpdateItemAnim
ldr r3, _0807736C @ =gLinkEntity
ldr r2, _08077370 @ =gUnk_0811BE16
ldrb r1, [r4, #0xe]
movs r0, #7
_08077326:
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
_0807732E:
strh r0, [r3, #0x24]
ldr r5, _0807736C @ =gLinkEntity
ldrb r0, [r5, #0x14]
lsls r0, r0, #2
strb r0, [r5, #0x15]
movs r1, #0x24
ldrsh r0, [r5, r1]
cmp r0, #0
beq _08077344
bl sub_08079E08
_08077344:
ldrb r1, [r4, #0xe]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0807738C
ldrb r0, [r4, #7]
cmp r0, #0
beq _08077374
adds r0, r5, #0
adds r0, #0x59
movs r1, #1
strb r1, [r0]
bl sub_080774A0
cmp r0, #0
beq _08077374
movs r0, #0
strb r0, [r4, #7]
b _0807743E
.align 2, 0
_0807736C: .4byte gLinkEntity
_08077370: .4byte gUnk_0811BE16
_08077374:
adds r0, r4, #0
adds r1, r6, #0
bl sub_08077E78
ldr r0, _08077388 @ =gLinkState
adds r0, #0x3d
movs r1, #0
strb r1, [r0]
b _0807743E
.align 2, 0
_08077388: .4byte gLinkState
_0807738C:
movs r0, #0x60
ands r0, r1
cmp r0, #0
beq _0807743E
adds r0, r5, #0
adds r0, #0x59
movs r6, #1
strb r6, [r0]
adds r0, r5, #0
bl sub_0807B5B0
cmp r0, #0
beq _080773BC
movs r0, #0x84
lsls r0, r0, #1
bl PlaySFX
ldrb r2, [r4, #0xe]
adds r0, r5, #0
movs r1, #0x1e
movs r3, #0
bl CreateObjectWithParent
b _0807743E
_080773BC:
ldr r1, _08077440 @ =0x0000051C
adds r0, r4, #0
bl sub_08077DF4
adds r0, r5, #0
movs r1, #0x1d
movs r2, #0
bl CreateFX
adds r3, r0, #0
cmp r3, #0
beq _080773F6
ldrb r0, [r4, #0xa]
strb r0, [r3, #0x14]
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
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]
_080773F6:
adds r0, r5, #0
movs r1, #0x1d
movs r2, #0
bl CreateFX
adds r3, r0, #0
cmp r3, #0
beq _08077432
ldrb r0, [r4, #0xa]
strb r0, [r3, #0x14]
adds r0, r5, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
movs r0, #7
ands r1, r0
mov r0, ip
ldrb r2, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
mov r1, ip
strb r0, [r1]
strb r6, [r3, #0xf]
_08077432:
movs r0, #3
strb r0, [r4, #4]
strb r6, [r4, #5]
ldr r0, _08077444 @ =0x00000119
bl PlaySFX
_0807743E:
pop {r4, r5, r6, pc}
.align 2, 0
_08077440: .4byte 0x0000051C
_08077444: .4byte 0x00000119
thumb_func_start sub_08077448
sub_08077448: @ 0x08077448
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r2, _08077498 @ =gLinkEntity
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
strb r0, [r2, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r2, #0x24]
ldrb r1, [r4, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08077474
ldrb r0, [r4, #5]
cmp r0, #0
beq _08077474
bl sub_08079E08
_08077474:
adds r0, r4, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08077494
ldr r0, _0807749C @ =gLinkState
adds r0, #0x3d
movs r1, #0
strb r1, [r0]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
_08077494:
pop {r4, r5, pc}
.align 2, 0
_08077498: .4byte gLinkEntity
_0807749C: .4byte gLinkState
thumb_func_start sub_080774A0
sub_080774A0: @ 0x080774A0
push {r4, r5, r6, r7, lr}
ldr r3, _080774FC @ =gLinkEntity
movs r0, #0x2e
ldrsh r2, [r3, r0]
ldr r5, _08077500 @ =gUnk_0811BE1E
ldrb r0, [r3, #0x14]
movs r1, #6
ands r1, r0
adds r0, r1, r5
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r2, r2, r0
ldr r4, _08077504 @ =gRoomControls
ldrh r0, [r4, #6]
subs r2, r2, r0
asrs r6, r2, #4
movs r2, #0x3f
ands r6, r2
movs r7, #0x32
ldrsh r0, [r3, r7]
adds r1, #1
adds r1, r1, r5
ldrb r1, [r1]
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, r2
lsls r0, r0, #6
orrs r6, r0
adds r4, r3, #0
adds r4, #0x38
ldrb r1, [r4]
adds r0, r6, #0
bl sub_080002E0
cmp r0, #0x16
bhi _080774F6
cmp r0, #0xe
bhi _08077508
_080774F6:
movs r0, #0
b _0807751A
.align 2, 0
_080774FC: .4byte gLinkEntity
_08077500: .4byte gUnk_0811BE1E
_08077504: .4byte gRoomControls
_08077508:
adds r0, r6, #0
ldrb r1, [r4]
bl sub_080002C8
cmp r0, #0x56
bne _08077518
movs r0, #0x56
b _0807751A
_08077518:
movs r0, #1
_0807751A:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0807751C
sub_0807751C: @ 0x0807751C
push {lr}
ldr r3, _08077530 @ =gUnk_0811BE28
ldrb r2, [r0, #4]
lsls r2, r2, #2
adds r2, r2, r3
ldr r2, [r2]
bl _call_via_r2
pop {pc}
.align 2, 0
_08077530: .4byte gUnk_0811BE28
thumb_func_start sub_08077534
sub_08077534: @ 0x08077534
push {r4, lr}
adds r4, r0, #0
bl sub_08077D38
ldr r0, _08077570 @ =gLinkEntity
bl sub_0806F948
adds r0, r4, #0
bl sub_08077BB8
ldrb r1, [r4, #9]
movs r0, #0xf
orrs r0, r1
strb r0, [r4, #9]
ldrb r1, [r4, #1]
ldr r0, _08077574 @ =gUnk_02002A40
adds r0, r0, r1
adds r0, #0x9a
ldrb r0, [r0]
strb r0, [r4, #7]
ldrb r0, [r4, #7]
subs r0, #0x20
cmp r0, #0x11
bhi _080775F8
lsls r0, r0, #2
ldr r1, _08077578 @ =_0807757C
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08077570: .4byte gLinkEntity
_08077574: .4byte gUnk_02002A40
_08077578: .4byte _0807757C
_0807757C: @ jump table
.4byte _080775C4 @ case 0
.4byte _080775D4 @ case 1
.4byte _080775D4 @ case 2
.4byte _080775D4 @ case 3
.4byte _080775D4 @ case 4
.4byte _080775D4 @ case 5
.4byte _080775F8 @ case 6
.4byte _080775F8 @ case 7
.4byte _080775F8 @ case 8
.4byte _080775D4 @ case 9
.4byte _080775D4 @ case 10
.4byte _080775D4 @ case 11
.4byte _080775D4 @ case 12
.4byte _080775D4 @ case 13
.4byte _080775D4 @ case 14
.4byte _080775F8 @ case 15
.4byte _080775F8 @ case 16
.4byte _080775F8 @ case 17
_080775C4:
ldr r1, _080775D0 @ =0x00000614
adds r0, r4, #0
bl sub_08077DF4
b _08077610
.align 2, 0
_080775D0: .4byte 0x00000614
_080775D4:
movs r0, #3
strb r0, [r4, #4]
ldr r1, _080775F0 @ =gLinkEntity
movs r0, #4
strb r0, [r1, #0x14]
ldrb r2, [r1, #0x18]
subs r0, #0x45
ands r0, r2
strb r0, [r1, #0x18]
ldr r1, _080775F4 @ =0x000002DF
adds r0, r4, #0
bl sub_08077DF4
b _08077606
.align 2, 0
_080775F0: .4byte gLinkEntity
_080775F4: .4byte 0x000002DF
_080775F8:
movs r0, #3
strb r0, [r4, #4]
movs r1, #0xc2
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08077DF4
_08077606:
ldr r2, _08077614 @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
_08077610:
pop {r4, pc}
.align 2, 0
_08077614: .4byte gLinkEntity
thumb_func_start sub_08077618
sub_08077618: @ 0x08077618
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08077638
movs r1, #0xc3
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08077DF4
ldrb r0, [r4, #4]
adds r0, #1
strb r0, [r4, #4]
b _0807763E
_08077638:
adds r0, r4, #0
bl UpdateItemAnim
_0807763E:
pop {r4, pc}
thumb_func_start sub_08077640
sub_08077640: @ 0x08077640
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08077666
ldr r2, _08077668 @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
_08077666:
pop {r4, r5, pc}
.align 2, 0
_08077668: .4byte gLinkEntity
thumb_func_start sub_0807766C
sub_0807766C: @ 0x0807766C
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl UpdateItemAnim
ldrb r1, [r4, #0xe]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08077692
ldr r2, _08077694 @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08077E78
_08077692:
pop {r4, r5, pc}
.align 2, 0
_08077694: .4byte gLinkEntity
thumb_func_start sub_08077698
sub_08077698: @ 0x08077698
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _0807771C @ =gLinkState
ldrb r1, [r2, #3]
movs r0, #0xfe
ands r0, r1
strb r0, [r2, #3]
ldrb r1, [r2, #4]
movs r0, #0xf
ands r0, r1
strb r0, [r2, #4]
ldrb r0, [r2, #7]
ldrb r3, [r2, #2]
orrs r0, r3
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08077700
movs r0, #0x40
ands r0, r3
cmp r0, #0
bne _08077700
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _08077700
adds r0, r4, #0
bl sub_08077758
cmp r0, #0
beq _08077700
bl sub_080777A0
cmp r0, #0
bne _08077700
ldr r4, _08077720 @ =gUnk_02002A40
adds r0, r4, #0
adds r0, #0xb4
ldrb r0, [r0]
movs r1, #1
movs r2, #0
bl sub_08077880
adds r4, #0xb5
ldrb r0, [r4]
movs r1, #2
movs r2, #0
bl sub_08077880
bl sub_080778CC
_08077700:
movs r5, #0
ldr r4, _08077724 @ =gUnk_03000B80
_08077704:
ldrb r0, [r4, #9]
cmp r0, #0
beq _08077712
adds r0, r4, #0
adds r1, r5, #0
bl sub_080752E8
_08077712:
adds r4, #0x1c
adds r5, #1
cmp r5, #3
bls _08077704
pop {r4, r5, pc}
.align 2, 0
_0807771C: .4byte gLinkState
_08077720: .4byte gUnk_02002A40
_08077724: .4byte gUnk_03000B80
thumb_func_start sub_08077728
sub_08077728: @ 0x08077728
push {lr}
cmp r0, #0
bne _08077744
ldr r0, _08077740 @ =gUnk_02002A40
adds r0, #0xb4
ldrb r0, [r0]
movs r1, #1
movs r2, #1
bl sub_08077880
b _08077752
.align 2, 0
_08077740: .4byte gUnk_02002A40
_08077744:
ldr r0, _08077754 @ =gUnk_02002A40
adds r0, #0xb5
ldrb r0, [r0]
movs r1, #2
movs r2, #1
bl sub_08077880
_08077752:
pop {pc}
.align 2, 0
_08077754: .4byte gUnk_02002A40
thumb_func_start sub_08077758
sub_08077758: @ 0x08077758
push {lr}
adds r3, r0, #0
ldr r2, _08077794 @ =gLinkState
ldr r1, [r2, #0x30]
movs r0, #0x80
lsls r0, r0, #7
ands r0, r1
cmp r0, #0
bne _0807779C
movs r0, #0xd5
lsls r0, r0, #4
ands r1, r0
cmp r1, #0
bne _08077798
ldrb r0, [r2, #0x1e]
ldrb r1, [r2, #0x1a]
orrs r1, r0
adds r0, r3, #0
adds r0, #0x7a
ldrh r0, [r0]
orrs r1, r0
cmp r1, #0
bne _0807779C
adds r0, r3, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _0807779C
movs r0, #1
b _0807779E
.align 2, 0
_08077794: .4byte gLinkState
_08077798:
bl sub_0807A108
_0807779C:
movs r0, #0
_0807779E:
pop {pc}
thumb_func_start sub_080777A0
sub_080777A0: @ 0x080777A0
push {r4, lr}
ldr r3, _080777D0 @ =gLinkState
adds r0, r3, #0
adds r0, #0x92
ldrh r1, [r0]
movs r4, #0x80
adds r0, r4, #0
ands r0, r1
cmp r0, #0
beq _08077870
ldr r1, [r3, #0x30]
movs r0, #0x80
lsls r0, r0, #0xf
ands r0, r1
cmp r0, #0
beq _080777D4
adds r1, r3, #0
adds r1, #0xa0
movs r0, #1
strb r0, [r1]
bl sub_0807A108
_080777CC:
movs r0, #1
b _0807787C
.align 2, 0
_080777D0: .4byte gLinkState
_080777D4:
ldr r2, _080777F4 @ =gUnk_02033A90
ldrb r0, [r2, #0x18]
cmp r0, #2
beq _080777FC
cmp r0, #3
beq _08077810
ldr r0, _080777F8 @ =gUnk_0200AF00
adds r0, #0x2c
ldrb r0, [r0]
cmp r0, #0xc
bne _0807787A
adds r2, r3, #0
ldrb r0, [r2, #0x1c]
cmp r0, #0
bne _0807787A
b _08077838
.align 2, 0
_080777F4: .4byte gUnk_02033A90
_080777F8: .4byte gUnk_0200AF00
_080777FC:
ldrb r0, [r2, #0x1a]
cmp r0, #0
bne _080777CC
ldr r1, _0807780C @ =gLinkEntity
ldrb r0, [r1, #0xd]
adds r0, #1
strb r0, [r1, #0xd]
b _080777CC
.align 2, 0
_0807780C: .4byte gLinkEntity
_08077810:
ldrb r0, [r2, #0x1a]
cmp r0, #0
bne _0807787A
ands r1, r4
cmp r1, #0
beq _0807787A
ldr r0, _08077834 @ =gLinkEntity
ldrb r1, [r0, #0xd]
adds r1, #1
strb r1, [r0, #0xd]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
movs r1, #0xb4
bl sub_0805E4E0
b _080777CC
.align 2, 0
_08077834: .4byte gLinkEntity
_08077838:
ldrb r0, [r2, #0x12]
cmp r0, #0x11
beq _0807787A
adds r0, r2, #0
adds r0, #0x90
ldrh r1, [r0]
movs r0, #0xf0
lsls r0, r0, #4
ands r0, r1
cmp r0, #0
beq _0807787A
ldr r0, [r2, #0x30]
ldr r1, _0807786C @ =0x00040400
ands r0, r1
cmp r0, #0
bne _0807787A
ldrb r0, [r2, #2]
cmp r0, #0
bne _0807787A
ldrb r0, [r2, #4]
cmp r0, #0
bne _0807787A
movs r0, #0x18
strb r0, [r2, #0xc]
b _0807787A
.align 2, 0
_0807786C: .4byte 0x00040400
_08077870:
ldr r0, [r3, #0x30]
movs r1, #0x20
ands r0, r1
cmp r0, #0
bne _080777CC
_0807787A:
movs r0, #0
_0807787C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08077880
sub_08077880: @ 0x08077880
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
subs r0, r4, #1
cmp r0, #0x1e
bhi _080778C0
lsls r0, r4, #1
adds r0, r0, r4
lsls r0, r0, #2
ldr r1, _080778C4 @ =gUnk_0811BE48
adds r5, r0, r1
ldr r1, _080778C8 @ =gUnk_03004010
ldrb r0, [r5]
cmp r0, #0
beq _080778A0
adds r1, #2
_080778A0:
ldrh r0, [r1]
ands r0, r6
cmp r0, #0
bne _080778AC
cmp r2, #0
beq _080778C0
_080778AC:
adds r0, r4, #0
bl sub_0807794C
adds r1, r0, #0
cmp r1, #0
beq _080778C0
ldrb r0, [r5, #1]
strb r0, [r1, #9]
strb r4, [r1, #1]
strb r6, [r1, #3]
_080778C0:
pop {r4, r5, r6, pc}
.align 2, 0
_080778C4: .4byte gUnk_0811BE48
_080778C8: .4byte gUnk_03004010
thumb_func_start sub_080778CC
sub_080778CC: @ 0x080778CC
push {lr}
ldr r2, _08077920 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _08077924 @ =0x000400A0
ands r0, r1
cmp r0, #0
bne _0807791C
ldr r0, _08077928 @ =gLinkEntity
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #0
bne _080778FA
ldrb r0, [r2, #5]
cmp r0, #0
bne _080778FA
adds r0, r2, #0
adds r0, #0x92
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #8
ands r0, r1
cmp r0, #0
beq _0807791C
_080778FA:
bl sub_080789A8
cmp r0, #0
bne _08077910
ldr r0, _08077920 @ =gLinkState
adds r0, #0x90
ldrh r1, [r0]
ldr r0, _0807792C @ =0x00000F03
ands r0, r1
cmp r0, #0
bne _0807791C
_08077910:
movs r0, #0x1b
bl sub_0807794C
adds r1, r0, #0
cmp r1, #0
bne _08077930
_0807791C:
movs r0, #0
b _08077940
.align 2, 0
_08077920: .4byte gLinkState
_08077924: .4byte 0x000400A0
_08077928: .4byte gLinkEntity
_0807792C: .4byte 0x00000F03
_08077930:
movs r0, #0x1b
strb r0, [r1, #1]
ldr r0, _08077944 @ =gUnk_0811BE48
ldr r2, _08077948 @ =0x00000145
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r1, #9]
movs r0, #1
_08077940:
pop {pc}
.align 2, 0
_08077944: .4byte gUnk_0811BE48
_08077948: .4byte 0x00000145
thumb_func_start sub_0807794C
sub_0807794C: @ 0x0807794C
push {lr}
adds r2, r0, #0
ldr r0, _080779B8 @ =gLinkState
ldrb r1, [r0, #0xc]
adds r3, r0, #0
cmp r1, #0x18
bne _0807795E
cmp r2, #0x1b
bne _080779B2
_0807795E:
ldr r0, [r3, #0x30]
movs r1, #0x88
lsls r1, r1, #0xf
ands r0, r1
cmp r0, #0
beq _0807796E
cmp r2, #6
bhi _080779B2
_0807796E:
ldrb r0, [r3, #2]
cmp r0, #0
bne _0807797C
ldr r0, _080779BC @ =gLinkEntity
ldr r0, [r0, #0x34]
cmp r0, #0
beq _08077980
_0807797C:
cmp r2, #6
bhi _080779B2
_08077980:
ldr r0, [r3, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0807799A
ldr r0, _080779C0 @ =gUnk_0811BE48
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
ldrb r0, [r1, #8]
cmp r0, #0
beq _080779B2
_0807799A:
ldrb r0, [r3, #0x12]
cmp r0, #0x11
bne _080779C4
adds r0, r3, #0
adds r0, #0x37
ldrb r0, [r0]
cmp r0, #0
beq _080779C4
adds r0, r2, #0
subs r0, #0x14
cmp r0, #1
bls _080779C4
_080779B2:
movs r0, #0
b _080779DE
.align 2, 0
_080779B8: .4byte gLinkState
_080779BC: .4byte gLinkEntity
_080779C0: .4byte gUnk_0811BE48
_080779C4:
ldr r1, _080779E0 @ =gUnk_0811BE48
lsls r0, r2, #1
adds r0, r0, r2
lsls r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0, #2]
ldr r1, _080779E4 @ =gUnk_0811BFC8
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r2, #0
bl _call_via_r1
_080779DE:
pop {pc}
.align 2, 0
_080779E0: .4byte gUnk_0811BE48
_080779E4: .4byte gUnk_0811BFC8
thumb_func_start sub_080779E8
sub_080779E8: @ 0x080779E8
movs r0, #0
bx lr
thumb_func_start sub_080779EC
sub_080779EC: @ 0x080779EC
push {lr}
ldr r1, _08077A00 @ =gUnk_03000B80
adds r0, r1, #0
adds r0, #0x25
ldrb r0, [r0]
cmp r0, #0
bne _08077A04
adds r0, r1, #0
adds r0, #0x1c
b _08077A16
.align 2, 0
_08077A00: .4byte gUnk_03000B80
_08077A04:
adds r0, r1, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0
beq _08077A12
movs r0, #0
b _08077A16
_08077A12:
adds r0, r1, #0
adds r0, #0x38
_08077A16:
pop {pc}
thumb_func_start sub_08077A18
sub_08077A18: @ 0x08077A18
push {lr}
adds r1, r0, #0
ldr r0, _08077A3C @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #0
bne _08077A44
ldr r0, _08077A40 @ =gUnk_03000B80
ldrb r2, [r0, #0x1d]
cmp r1, r2
beq _08077A44
adds r0, #0x39
ldrb r0, [r0]
cmp r1, r0
beq _08077A44
adds r0, r1, #0
bl sub_080779EC
b _08077A46
.align 2, 0
_08077A3C: .4byte gLinkState
_08077A40: .4byte gUnk_03000B80
_08077A44:
movs r0, #0
_08077A46:
pop {pc}
thumb_func_start sub_08077A48
sub_08077A48: @ 0x08077A48
push {r4, r5, r6, lr}
adds r2, r0, #0
ldr r6, _08077A88 @ =gLinkState
ldrb r0, [r6, #5]
cmp r0, #0
bne _08077A94
ldrb r1, [r6, #2]
movs r0, #0x20
ands r0, r1
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _08077A94
ldr r0, _08077A8C @ =gUnk_0811BE48
lsls r1, r2, #1
adds r1, r1, r2
lsls r1, r1, #2
adds r1, r1, r0
ldr r5, _08077A90 @ =gUnk_03000B80
ldrb r0, [r1, #1]
ldrb r1, [r5, #9]
cmp r0, r1
blo _08077A94
adds r0, r5, #0
movs r1, #0
bl sub_08077E78
strb r4, [r6, #1]
strb r4, [r6, #0x1c]
strb r4, [r6, #0x1b]
adds r0, r5, #0
b _08077A96
.align 2, 0
_08077A88: .4byte gLinkState
_08077A8C: .4byte gUnk_0811BE48
_08077A90: .4byte gUnk_03000B80
_08077A94:
movs r0, #0
_08077A96:
pop {r4, r5, r6, pc}
thumb_func_start sub_08077A98
sub_08077A98: @ 0x08077A98
push {lr}
ldr r0, _08077AB8 @ =gUnk_02002A40
adds r0, #0xac
ldrb r0, [r0]
cmp r0, #0
beq _08077AC4
ldr r0, _08077ABC @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #0
bne _08077AC4
ldr r1, _08077AC0 @ =gUnk_03000B80
ldrb r0, [r1, #9]
cmp r0, #0
bne _08077AC4
adds r0, r1, #0
b _08077AC6
.align 2, 0
_08077AB8: .4byte gUnk_02002A40
_08077ABC: .4byte gLinkState
_08077AC0: .4byte gUnk_03000B80
_08077AC4:
movs r0, #0
_08077AC6:
pop {pc}
thumb_func_start sub_08077AC8
sub_08077AC8: @ 0x08077AC8
push {lr}
movs r2, #0
ldr r1, _08077AD8 @ =gUnk_03000B80
_08077ACE:
ldrb r0, [r1, #9]
cmp r0, #0
beq _08077ADC
movs r0, #0
b _08077AE6
.align 2, 0
_08077AD8: .4byte gUnk_03000B80
_08077ADC:
adds r1, #0x1c
adds r2, #1
cmp r2, #3
bls _08077ACE
ldr r0, _08077AE8 @ =gUnk_03000BD4
_08077AE6:
pop {pc}
.align 2, 0
_08077AE8: .4byte gUnk_03000BD4
thumb_func_start sub_08077AEC
sub_08077AEC: @ 0x08077AEC
push {lr}
ldr r0, _08077B14 @ =gUnk_03000BD4
movs r1, #3
bl sub_08077E78
ldr r2, _08077B18 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _08077B1C @ =0xFF7FFFFF
ands r0, r1
str r0, [r2, #0x30]
movs r0, #0x10
bl sub_0805436C
adds r1, r0, #0
cmp r1, #2
beq _08077B12
movs r0, #0xf
bl sub_08054414
_08077B12:
pop {pc}
.align 2, 0
_08077B14: .4byte gUnk_03000BD4
_08077B18: .4byte gLinkState
_08077B1C: .4byte 0xFF7FFFFF
thumb_func_start sub_08077B20
sub_08077B20: @ 0x08077B20
push {lr}
bl sub_08077B2C
bl sub_08077AEC
pop {pc}