tmc/asm/code_0806FA6C.s

1556 lines
26 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_0806FB00
sub_0806FB00: @ 0x0806FB00
push {r4, lr}
mov ip, r0
adds r4, r1, #0
cmp r3, #0
bne _0806FB0C
movs r3, #1
_0806FB0C:
mov r1, ip
adds r1, #0x7e
movs r0, #0
strb r0, [r1]
mov r0, ip
adds r0, #0x7f
strb r3, [r0]
mov r0, ip
ldrh r1, [r0, #0x2e]
adds r0, #0x80
strh r1, [r0]
mov r1, ip
ldrh r0, [r1, #0x32]
adds r1, #0x82
strh r0, [r1]
mov r0, ip
adds r0, #0x84
strh r4, [r0]
adds r0, #2
strh r2, [r0]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806FB38
sub_0806FB38: @ 0x0806FB38
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r5, #0
adds r6, #0x7e
adds r7, r5, #0
adds r7, #0x7f
ldrb r0, [r6]
ldrb r1, [r7]
cmp r0, r1
bhs _0806FBA0
adds r0, #1
strb r0, [r6]
adds r0, r5, #0
adds r0, #0x84
movs r2, #0
ldrsh r1, [r0, r2]
adds r4, r5, #0
adds r4, #0x80
movs r2, #0
ldrsh r0, [r4, r2]
subs r1, r1, r0
ldrb r0, [r6]
muls r0, r1, r0
lsls r0, r0, #8
ldrb r1, [r7]
bl __divsi3
asrs r0, r0, #8
ldrh r4, [r4]
adds r0, r0, r4
strh r0, [r5, #0x2e]
adds r0, r5, #0
adds r0, #0x86
movs r2, #0
ldrsh r1, [r0, r2]
adds r4, r5, #0
adds r4, #0x82
movs r2, #0
ldrsh r0, [r4, r2]
subs r1, r1, r0
ldrb r0, [r6]
muls r0, r1, r0
lsls r0, r0, #8
ldrb r1, [r7]
bl __divsi3
asrs r0, r0, #8
ldrh r4, [r4]
adds r0, r0, r4
strh r0, [r5, #0x32]
movs r0, #0
b _0806FBB2
_0806FBA0:
adds r0, r5, #0
adds r0, #0x84
ldrh r0, [r0]
strh r0, [r5, #0x2e]
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
strh r0, [r5, #0x32]
movs r0, #1
_0806FBB2:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0806FBB4
sub_0806FBB4: @ 0x0806FBB4
push {lr}
adds r1, r0, #0
ldr r0, _0806FBD0 @ =gUnk_030010A0
ldrb r0, [r0, #5]
cmp r0, #0
bne _0806FBC8
ldr r0, _0806FBD4 @ =gLinkState
ldrb r0, [r0, #5]
cmp r0, #0
bne _0806FBCC
_0806FBC8:
movs r0, #6
strb r0, [r1, #0xd]
_0806FBCC:
pop {pc}
.align 2, 0
_0806FBD0: .4byte gUnk_030010A0
_0806FBD4: .4byte gLinkState
thumb_func_start sub_0806FBD8
sub_0806FBD8: @ 0x0806FBD8
push {r4, lr}
adds r4, r0, #0
bl sub_0806FBEC
movs r0, #0xc
bl sub_0801D8E0
str r0, [r4, #0x48]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806FBEC
sub_0806FBEC: @ 0x0806FBEC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x48]
bl sub_0801DA0C
movs r0, #0
str r0, [r4, #0x48]
pop {r4, pc}
thumb_func_start sub_0806FBFC
sub_0806FBFC: @ 0x0806FBFC
push {r4, r5, r6, lr}
adds r5, r3, #0
ldr r4, _0806FC20 @ =gLinkEntity
movs r6, #0x2e
ldrsh r3, [r4, r6]
subs r3, r3, r0
movs r6, #0x32
ldrsh r0, [r4, r6]
subs r0, r0, r1
movs r1, #0
cmp r3, r2
bhs _0806FC1A
cmp r0, r5
bhs _0806FC1A
movs r1, #1
_0806FC1A:
adds r0, r1, #0
pop {r4, r5, r6, pc}
.align 2, 0
_0806FC20: .4byte gLinkEntity
thumb_func_start sub_0806FC24
sub_0806FC24: @ 0x0806FC24
push {r4, lr}
adds r4, r1, #0
ldr r1, _0806FC44 @ =gUnk_080046A4
bl sub_08007DD6
cmp r0, #0
beq _0806FC4C
lsls r0, r0, #3
ldr r1, _0806FC48 @ =gUnk_080047F6
adds r0, r0, r1
ldrh r0, [r0]
asrs r0, r4
movs r1, #1
ands r0, r1
b _0806FC4E
.align 2, 0
_0806FC44: .4byte gUnk_080046A4
_0806FC48: .4byte gUnk_080047F6
_0806FC4C:
movs r0, #0
_0806FC4E:
pop {r4, pc}
thumb_func_start sub_0806FC50
sub_0806FC50: @ 0x0806FC50
push {r4, lr}
adds r4, r1, #0
ldr r1, _0806FC74 @ =gUnk_080046A4
bl sub_08007DD6
cmp r0, #0
beq _0806FC70
ldr r1, _0806FC78 @ =gUnk_080047F6
lsls r0, r0, #3
adds r2, r0, r1
ldrh r0, [r2]
asrs r0, r4
movs r1, #1
ands r0, r1
cmp r0, #0
bne _0806FC7C
_0806FC70:
movs r0, #0
b _0806FC7E
.align 2, 0
_0806FC74: .4byte gUnk_080046A4
_0806FC78: .4byte gUnk_080047F6
_0806FC7C:
adds r0, r2, #0
_0806FC7E:
pop {r4, pc}
thumb_func_start sub_0806FC80
sub_0806FC80: @ 0x0806FC80
push {r4, r5, lr}
lsls r4, r2, #4
movs r2, #0x2e
ldrsh r3, [r1, r2]
movs r5, #0x32
ldrsh r2, [r1, r5]
adds r1, r3, #0
bl sub_080041DC
cmp r4, r0
bhs _0806FC9A
movs r0, #0
b _0806FC9C
_0806FC9A:
movs r0, #1
_0806FC9C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0806FCA0
sub_0806FCA0: @ 0x0806FCA0
push {lr}
bl sub_080045C4
bl sub_0806F5A4
pop {pc}
thumb_func_start sub_0806FCAC
sub_0806FCAC: @ 0x0806FCAC
push {lr}
bl sub_080045C4
bl sub_0806F5B0
pop {pc}
thumb_func_start sub_0806FCB8
sub_0806FCB8: @ 0x0806FCB8
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0x2e
ldrsh r0, [r4, r5]
subs r0, r0, r1
movs r5, #0x32
ldrsh r1, [r4, r5]
subs r1, r1, r2
adds r2, r3, #0
bl sub_0806FCD0
pop {r4, r5, pc}
thumb_func_start sub_0806FCD0
sub_0806FCD0: @ 0x0806FCD0
push {r4, lr}
movs r3, #0
adds r4, r2, #0
muls r4, r2, r4
adds r2, r4, #0
adds r4, r0, #0
muls r4, r0, r4
adds r0, r4, #0
adds r4, r1, #0
muls r4, r1, r4
adds r1, r4, #0
adds r0, r0, r1
cmp r2, r0
blt _0806FCEE
movs r3, #1
_0806FCEE:
adds r0, r3, #0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0806FCF4
sub_0806FCF4: @ 0x0806FCF4
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r4, r2, #0
adds r5, r3, #0
movs r2, #0
cmp r1, #0
bge _0806FD04
rsbs r1, r1, #0
_0806FD04:
cmp r4, #0
beq _0806FD1A
movs r0, #0x80
lsls r0, r0, #9
bl __divsi3
adds r1, r0, #0
adds r0, r4, #0
muls r0, r1, r0
lsrs r1, r0, #8
subs r2, r4, r1
_0806FD1A:
cmp r5, #0
beq _0806FD22
cmp r5, #3
bne _0806FD24
_0806FD22:
rsbs r2, r2, #0
_0806FD24:
cmp r5, #0
beq _0806FD2C
cmp r5, #2
bne _0806FD32
_0806FD2C:
adds r0, r6, #0
adds r0, #0x63
b _0806FD36
_0806FD32:
adds r0, r6, #0
adds r0, #0x62
_0806FD36:
strb r2, [r0]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0806FD3C
sub_0806FD3C: @ 0x0806FD3C
ldrb r2, [r0, #0x18]
movs r1, #0x31
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0, #0x18]
adds r0, #0x29
ldrb r2, [r0]
movs r1, #0x39
rsbs r1, r1, #0
ands r1, r2
strb r1, [r0]
bx lr
thumb_func_start sub_0806FD54
sub_0806FD54: @ 0x0806FD54
push {r4, lr}
adds r3, r0, #0
ldr r0, _0806FD6C @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
cmp r0, #0
bne _0806FD70
movs r0, #0
b _0806FD84
.align 2, 0
_0806FD6C: .4byte gLinkState
_0806FD70:
ldr r0, _0806FD88 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r4, #0x32
ldrsh r2, [r0, r4]
subs r2, #9
adds r0, r3, #0
movs r3, #0x48
bl sub_0806FCB8
_0806FD84:
pop {r4, pc}
.align 2, 0
_0806FD88: .4byte gLinkEntity
thumb_func_start sub_0806FD8C
sub_0806FD8C: @ 0x0806FD8C
push {lr}
ldr r0, _0806FD9C @ =gUnk_020000C0
movs r1, #0xc0
lsls r1, r1, #4
bl sub_0801D630
pop {pc}
.align 2, 0
_0806FD9C: .4byte gUnk_020000C0
thumb_func_start sub_0806FDA0
sub_0806FDA0: @ 0x0806FDA0
push {r4, lr}
movs r3, #1
ldr r1, _0806FDD8 @ =gUnk_020000C0
movs r4, #0xff
movs r2, #0x61
adds r2, r2, r1
mov ip, r2
adds r2, r1, #0
adds r2, #0x40
adds r1, r0, #0
adds r1, #0x28
_0806FDB6:
ldrb r0, [r2]
lsls r0, r0, #0x1f
cmp r0, #0
bne _0806FDDC
strb r3, [r1]
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
strb r4, [r2, #1]
strb r4, [r2, #0x11]
mov r0, ip
strb r4, [r0]
strb r4, [r0, #0x10]
movs r0, #1
b _0806FDEA
.align 2, 0
_0806FDD8: .4byte gUnk_020000C0
_0806FDDC:
movs r0, #0x40
add ip, r0
adds r2, #0x40
adds r3, #1
cmp r3, #0x2f
bls _0806FDB6
movs r0, #0
_0806FDEA:
pop {r4, pc}
thumb_func_start LoadExtraSpriteData
LoadExtraSpriteData: @ 0x0806FDEC
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r4, r1, #0
bl sub_0806FDA0
cmp r0, #0
bne _0806FE02
movs r0, #0
b _0806FE74
_0806FE02:
adds r0, r6, #0
bl sub_0801D230
adds r0, r6, #0
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #6
ldr r1, _0806FE7C @ =gUnk_020000C0
adds r5, r0, r1
movs r7, #0
ldrh r1, [r4, #2]
ldr r0, _0806FE80 @ =0x000003FF
ands r0, r1
movs r1, #0x27
adds r1, r1, r6
mov r8, r1
cmp r0, #0
beq _0806FE6C
_0806FE26:
ldr r1, [r4]
lsls r1, r1, #0x16
lsrs r1, r1, #0x16
adds r0, r6, #0
bl sub_0801D040
adds r2, r0, #0
ldr r3, [r4]
lsls r1, r3, #6
lsrs r1, r1, #0x16
lsls r3, r3, #0x10
lsrs r3, r3, #0x1a
adds r0, r5, #0
bl sub_0806FEE8
ldrb r1, [r4, #3]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _0806FE56
adds r0, r5, #0
adds r1, r6, #0
bl sub_0806FEFC
_0806FE56:
adds r5, #0x10
adds r4, #4
adds r7, #1
cmp r7, #3
bhi _0806FE6C
ldrh r1, [r4, #2]
ldr r2, _0806FE80 @ =0x000003FF
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _0806FE26
_0806FE6C:
movs r0, #0
mov r1, r8
strb r0, [r1]
movs r0, #1
_0806FE74:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0806FE7C: .4byte gUnk_020000C0
_0806FE80: .4byte 0x000003FF
thumb_func_start sub_0806FE84
sub_0806FE84: @ 0x0806FE84
push {r4, r5, r6, lr}
adds r0, #0x28
ldrb r2, [r0]
movs r1, #0
strb r1, [r0]
subs r0, r2, #1
cmp r0, #0x7e
bhi _0806FEB4
lsls r1, r2, #6
ldr r0, _0806FEB8 @ =gUnk_020000C0
adds r6, r1, r0
movs r5, #0
adds r4, r6, #0
_0806FE9E:
ldrb r0, [r4, #5]
bl sub_0801D244
adds r4, #0x10
adds r5, #1
cmp r5, #3
bls _0806FE9E
adds r0, r6, #0
movs r1, #0x40
bl sub_0801D630
_0806FEB4:
pop {r4, r5, r6, pc}
.align 2, 0
_0806FEB8: .4byte gUnk_020000C0
thumb_func_start sub_0806FEBC
sub_0806FEBC: @ 0x0806FEBC
adds r0, #0x28
ldrb r3, [r0]
lsls r3, r3, #6
lsls r1, r1, #4
ldr r0, _0806FEE4 @ =gUnk_020000C0
adds r1, r1, r0
adds r3, r3, r1
movs r0, #0
str r0, [r3]
str r0, [r3, #4]
str r0, [r3, #8]
str r2, [r3, #0xc]
ldrb r0, [r3]
movs r1, #1
orrs r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r3]
bx lr
.align 2, 0
_0806FEE4: .4byte gUnk_020000C0
thumb_func_start sub_0806FEE8
sub_0806FEE8: @ 0x0806FEE8
strb r3, [r0, #8]
strh r1, [r0, #2]
strb r2, [r0, #5]
ldrb r1, [r0]
movs r2, #8
orrs r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0]
bx lr
thumb_func_start sub_0806FEFC
sub_0806FEFC: @ 0x0806FEFC
adds r1, #0x60
ldrh r1, [r1]
ldrb r2, [r0, #8]
adds r1, r1, r2
strh r1, [r0, #0xa]
ldrb r1, [r0]
movs r2, #4
orrs r1, r2
strb r1, [r0]
bx lr
thumb_func_start sub_0806FF10
sub_0806FF10: @ 0x0806FF10
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r2, #0
adds r0, #0x28
ldrb r2, [r0]
lsls r2, r2, #6
lsls r1, r1, #4
ldr r0, _0806FF44 @ =gUnk_020000C0
adds r1, r1, r0
adds r4, r2, r1
adds r0, r5, #0
bl sub_0801D108
ldrb r1, [r4, #5]
cmp r1, r0
beq _0806FF40
adds r0, r1, #0
bl sub_0801D244
adds r0, r6, #0
adds r1, r5, #0
bl sub_0801D040
strb r0, [r4, #5]
_0806FF40:
pop {r4, r5, r6, pc}
.align 2, 0
_0806FF44: .4byte gUnk_020000C0
thumb_func_start sub_0806FF48
sub_0806FF48: @ 0x0806FF48
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #6
lsls r1, r1, #4
ldr r3, _0806FF5C @ =gUnk_020000C0
adds r1, r1, r3
adds r0, r0, r1
strb r2, [r0, #4]
bx lr
.align 2, 0
_0806FF5C: .4byte gUnk_020000C0
thumb_func_start SetExtraSpriteFrame
SetExtraSpriteFrame: @ 0x0806FF60
push {lr}
adds r3, r2, #0
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #6
ldr r2, _0806FF84 @ =gUnk_020000C0
adds r0, r0, r2
lsls r1, r1, #4
adds r2, r0, r1
ldrb r0, [r2, #1]
cmp r0, r3
beq _0806FF82
strb r3, [r2, #1]
ldrb r0, [r2]
movs r1, #8
orrs r0, r1
strb r0, [r2]
_0806FF82:
pop {pc}
.align 2, 0
_0806FF84: .4byte gUnk_020000C0
thumb_func_start SetSpriteSubEntryOffsetData1
SetSpriteSubEntryOffsetData1: @ 0x0806FF88
push {r4, r5, lr}
adds r5, r1, #0
adds r0, #0x28
ldrb r4, [r0]
lsls r4, r4, #6
ldr r0, _0806FFB8 @ =gUnk_020000C0
adds r4, r4, r0
lsls r5, r5, #4
adds r5, r4, r5
lsls r2, r2, #4
adds r4, r4, r2
ldrh r0, [r5, #2]
ldrb r1, [r5, #1]
bl sub_080700C8
ldrb r1, [r5, #6]
ldrb r2, [r0]
adds r1, r1, r2
strb r1, [r4, #6]
ldrb r1, [r5, #7]
ldrb r0, [r0, #1]
adds r1, r1, r0
strb r1, [r4, #7]
pop {r4, r5, pc}
.align 2, 0
_0806FFB8: .4byte gUnk_020000C0
thumb_func_start sub_0806FFBC
sub_0806FFBC: @ 0x0806FFBC
push {r4, lr}
adds r0, #0x28
ldrb r0, [r0]
lsls r0, r0, #6
lsls r1, r1, #4
ldr r4, _0806FFD4 @ =gUnk_020000C0
adds r1, r1, r4
adds r0, r0, r1
strb r2, [r0, #6]
strb r3, [r0, #7]
pop {r4, pc}
.align 2, 0
_0806FFD4: .4byte gUnk_020000C0
thumb_func_start SetSpriteSubEntryOffsetData2
SetSpriteSubEntryOffsetData2: @ 0x0806FFD8
push {r4, r5, lr}
adds r5, r1, #0
adds r0, #0x28
ldrb r4, [r0]
lsls r4, r4, #6
ldr r0, _08070008 @ =gUnk_020000C0
adds r4, r4, r0
lsls r5, r5, #4
adds r5, r4, r5
lsls r2, r2, #4
adds r4, r4, r2
ldrh r0, [r5, #2]
ldrb r1, [r5, #1]
bl sub_080700C8
ldrb r1, [r5, #6]
ldrb r2, [r0, #2]
adds r1, r1, r2
strb r1, [r4, #6]
ldrb r1, [r5, #7]
ldrb r0, [r0, #3]
adds r1, r1, r0
strb r1, [r4, #7]
pop {r4, r5, pc}
.align 2, 0
_08070008: .4byte gUnk_020000C0
thumb_func_start sub_0807000C
sub_0807000C: @ 0x0807000C
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r7, r6, #0
adds r7, #0x28
ldrb r4, [r7]
lsls r4, r4, #6
ldr r0, _08070074 @ =gUnk_020000C0
adds r4, r4, r0
adds r0, r4, #0
movs r1, #0
bl sub_0807007C
adds r5, r0, #0
adds r0, r4, #0
movs r1, #1
bl sub_0807007C
orrs r5, r0
adds r0, r4, #0
movs r1, #2
bl sub_0807007C
orrs r5, r0
adds r0, r4, #0
movs r1, #3
bl sub_0807007C
orrs r5, r0
cmp r5, #0
beq _08070072
ldr r3, _08070078 @ =gUnk_02024490
adds r2, r6, #0
adds r2, #0x26
ldrb r1, [r2]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrb r1, [r7]
strb r1, [r0, #7]
ldrb r1, [r2]
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #2
adds r0, r0, r3
ldrb r2, [r0, #4]
movs r1, #0xf
ands r1, r2
movs r2, #0x30
orrs r1, r2
strb r1, [r0, #4]
_08070072:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08070074: .4byte gUnk_020000C0
_08070078: .4byte gUnk_02024490
thumb_func_start sub_0807007C
sub_0807007C: @ 0x0807007C
push {lr}
lsls r1, r1, #4
adds r2, r0, r1
ldrb r1, [r2]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _080700C4
movs r0, #4
ands r0, r1
cmp r0, #0
beq _080700C4
ldrb r0, [r2, #1]
cmp r0, #0xff
beq _080700C4
ldrh r0, [r2, #2]
lsls r0, r0, #4
ldr r1, _080700C0 @ =gUnk_080029B4
adds r3, r0, r1
ldr r1, [r3, #4]
cmp r1, #0
beq _080700C4
ldrb r0, [r2, #1]
lsls r0, r0, #2
adds r0, r1, r0
ldrb r1, [r0]
strb r1, [r2, #9]
ldrh r1, [r0, #2]
lsls r1, r1, #5
ldr r0, [r3, #8]
adds r0, r0, r1
str r0, [r2, #0xc]
movs r0, #1
b _080700C6
.align 2, 0
_080700C0: .4byte gUnk_080029B4
_080700C4:
movs r0, #0
_080700C6:
pop {pc}
thumb_func_start sub_080700C8
sub_080700C8: @ 0x080700C8
lsls r0, r0, #1
ldr r2, _080700E4 @ =gUnk_089FB780
adds r0, r0, r2
ldrh r0, [r0]
subs r2, #0x10
adds r0, r0, r2
adds r1, r0, r1
ldrb r0, [r1]
lsls r0, r0, #2
adds r0, r0, r2
ldr r1, [r2]
adds r0, r1, r0
bx lr
.align 2, 0
_080700E4: .4byte gUnk_089FB780
thumb_func_start sub_080700E8
sub_080700E8: @ 0x080700E8
push {lr}
ldr r2, _080700FC @ =gUnk_0811B98C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080700FC: .4byte gUnk_0811B98C
thumb_func_start sub_08070100
sub_08070100: @ 0x08070100
push {r4, r5, lr}
adds r5, r0, #0
movs r2, #1
movs r3, #1
strb r3, [r5, #0xc]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
ldrb r1, [r5, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
ldrb r0, [r5, #0x14]
lsls r0, r0, #2
strb r0, [r5, #0x15]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r5, #0x24]
movs r0, #0x40
str r0, [r5, #0x74]
movs r0, #0xf0
lsls r0, r0, #1
str r0, [r5, #0x78]
ldr r2, _0807017C @ =gLinkEntity
ldr r1, _08070180 @ =gUnk_0811B9A0
ldrb r0, [r5, #0x14]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r4, [r2, #0x2e]
adds r0, r0, r4
strh r0, [r5, #0x2e]
ldrb r0, [r5, #0x14]
adds r0, #1
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r5, #0x32]
adds r1, r5, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
subs r1, #1
movs r0, #0x8a
strb r0, [r1]
ldr r0, _08070184 @ =gUnk_0811B9D0
str r0, [r5, #0x48]
adds r0, r5, #0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #2
bne _08070188
strb r3, [r5, #0xa]
b _0807018C
.align 2, 0
_0807017C: .4byte gLinkEntity
_08070180: .4byte gUnk_0811B9A0
_08070184: .4byte gUnk_0811B9D0
_08070188:
movs r0, #0
strb r0, [r5, #0xa]
_0807018C:
ldrb r1, [r2, #0x1b]
lsrs r1, r1, #6
lsls r1, r1, #6
ldrb r2, [r5, #0x1b]
movs r0, #0x3f
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x1b]
ldrb r3, [r5, #0x14]
lsrs r3, r3, #1
lsls r3, r3, #3
ldr r0, _080701F0 @ =gUnk_0811B9A8
adds r3, r3, r0
ldrb r1, [r3]
movs r0, #1
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r5, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
ldrb r1, [r3, #1]
lsls r1, r1, #7
movs r2, #0x7f
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
ldrb r0, [r3, #4]
adds r4, r5, #0
adds r4, #0x58
strb r0, [r4]
movs r0, #2
ldrsb r0, [r3, r0]
str r0, [r5, #0x6c]
movs r0, #3
ldrsb r0, [r3, r0]
str r0, [r5, #0x70]
adds r0, r5, #0
bl sub_0801766C
ldrb r1, [r4]
adds r0, r5, #0
bl InitializeAnimation
ldr r0, _080701F4 @ =0x000001DD
bl PlaySFX
pop {r4, r5, pc}
.align 2, 0
_080701F0: .4byte gUnk_0811B9A8
_080701F4: .4byte 0x000001DD
thumb_func_start sub_080701F8
sub_080701F8: @ 0x080701F8
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r0, _08070244 @ =gUnk_0811B9C8
ldrb r1, [r5, #0x14]
adds r2, r1, r0
movs r6, #0
ldrsb r6, [r2, r6]
adds r1, #1
adds r1, r1, r0
movs r7, #0
ldrsb r7, [r1, r7]
adds r0, r5, #0
movs r1, #0xa
adds r2, r6, #0
adds r3, r7, #0
bl sub_08008782
adds r4, r0, #0
cmp r4, #0
beq _08070248
ldrb r1, [r4, #5]
ldrb r2, [r4, #2]
movs r0, #0x53
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08070260
ldrb r0, [r4, #3]
strb r0, [r1, #0xe]
ldrh r0, [r5, #0x2e]
adds r0, r0, r6
strh r0, [r1, #0x2e]
ldrh r0, [r5, #0x32]
adds r0, r0, r7
strh r0, [r1, #0x32]
b _08070260
.align 2, 0
_08070244: .4byte gUnk_0811B9C8
_08070248:
ldr r0, [r5, #0x74]
subs r0, #1
str r0, [r5, #0x74]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
beq _08070260
ldr r0, [r5, #0x78]
subs r0, #1
str r0, [r5, #0x78]
cmp r0, r1
bne _08070268
_08070260:
adds r0, r5, #0
bl sub_08070458
b _0807037A
_08070268:
adds r0, r5, #0
bl GetNextFrame
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _08070280
adds r0, r5, #0
bl sub_0800451C
_08070280:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r7, _08070354 @ =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, _08070358 @ =gLinkEntity
adds r1, #0x38
ldrb r1, [r1]
movs r2, #0x80
bl sub_080002F0
cmp r0, #0
bne _0807036A
ldr r1, _0807035C @ =gUnk_08003E44
movs r3, #0x2e
ldrsh r2, [r5, r3]
movs r0, #0x32
ldrsh r3, [r5, r0]
adds r0, r5, #0
bl sub_080040D8
cmp r0, #0
bne _08070364
adds r0, r5, #0
bl sub_080002B8
cmp r0, #0x19
bne _0807036A
movs r0, #4
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
ldrh r2, [r5, #0x2e]
movs r1, #0x10
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
movs r2, #8
orrs r0, r2
strh r0, [r5, #0x2e]
ldrh r0, [r5, #0x32]
ands r1, r0
orrs r1, r2
strh r1, [r5, #0x32]
adds r2, r5, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldrh r1, [r7, #6]
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
adds r4, r5, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_080001DA
str r0, [r5, #0x7c]
adds r0, r5, #0
movs r1, #0x14
bl InitializeAnimation
ldr r0, _08070360 @ =0x00004020
movs r3, #0x2e
ldrsh r1, [r5, r3]
ldrh r2, [r7, #6]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r6
movs r3, #0x32
ldrsh r2, [r5, r3]
ldrh r3, [r7, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r6
lsls r2, r2, #6
orrs r1, r2
ldrb r2, [r4]
bl SetTile
b _0807037A
.align 2, 0
_08070354: .4byte gRoomControls
_08070358: .4byte gLinkEntity
_0807035C: .4byte gUnk_08003E44
_08070360: .4byte 0x00004020
_08070364:
adds r0, r5, #0
bl sub_08070458
_0807036A:
adds r0, r5, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0
beq _0807037A
adds r0, r5, #0
bl sub_08070458
_0807037A:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0807037C
sub_0807037C: @ 0x0807037C
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08070394
bl DeleteThisEntity
_08070394:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08070398
sub_08070398: @ 0x08070398
push {r4, lr}
adds r4, r0, #0
bl GetNextFrame
adds r0, r4, #0
bl sub_0806F69C
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _080703B8
bl DeleteThisEntity
_080703B8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080703BC
sub_080703BC: @ 0x080703BC
push {r4, r5, lr}
adds r4, r0, #0
bl GetNextFrame
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08070404 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
adds r1, r0, #0
ldr r0, _08070408 @ =0x00004021
cmp r1, r0
beq _0807042E
cmp r1, r0
bhi _0807040C
subs r0, #1
cmp r1, r0
beq _08070420
b _08070412
.align 2, 0
_08070404: .4byte gRoomControls
_08070408: .4byte 0x00004021
_0807040C:
ldr r0, _08070418 @ =0x00004070
cmp r1, r0
beq _0807041C
_08070412:
movs r0, #0
str r0, [r4, #0x7c]
b _0807042E
.align 2, 0
_08070418: .4byte 0x00004070
_0807041C:
movs r0, #0xff
str r0, [r4, #0x78]
_08070420:
ldr r0, [r4, #0x78]
subs r0, #1
str r0, [r4, #0x78]
movs r1, #1
rsbs r1, r1, #0
cmp r0, r1
bne _08070436
_0807042E:
adds r0, r4, #0
bl sub_08070458
b _08070454
_08070436:
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
cmp r1, #0
beq _08070454
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _0807044E
ldrb r0, [r4, #0xc]
cmp r0, #0x1a
bne _08070454
_0807044E:
adds r0, r4, #0
bl sub_08070458
_08070454:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08070458
sub_08070458: @ 0x08070458
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r2, #0
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
strh r2, [r4, #0x24]
ldr r5, [r4, #0x7c]
cmp r5, #0
beq _0807049E
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _080704B4 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r6, #0x32
ldrsh r0, [r4, r6]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r0, r4, #0
adds r0, #0x38
ldrb r2, [r0]
adds r0, r5, #0
bl SetTile
_0807049E:
adds r0, r4, #0
movs r1, #0x13
bl InitializeAnimation
adds r0, r4, #0
bl sub_08017744
ldr r0, _080704B8 @ =0x00000199
bl PlaySFX
pop {r4, r5, r6, pc}
.align 2, 0
_080704B4: .4byte gRoomControls
_080704B8: .4byte 0x00000199
thumb_func_start sub_080704BC
sub_080704BC: @ 0x080704BC
push {lr}
ldr r2, _080704D0 @ =gUnk_0811B9D8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080704D0: .4byte gUnk_0811B9D8
thumb_func_start sub_080704D4
sub_080704D4: @ 0x080704D4
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0xff
strb r0, [r4, #0x1e]
adds r0, r4, #0
movs r1, #1
movs r2, #3
bl sub_080AE008
movs r0, #0x87
lsls r0, r0, #1
bl PlaySFX
adds r0, r4, #0
bl sub_080704FC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080704FC
sub_080704FC: @ 0x080704FC
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _0807052C @ =gLinkEntity
adds r0, r5, #0
adds r0, #0x5a
ldrb r2, [r0]
movs r0, #0x80
ands r0, r2
ldr r1, _08070530 @ =gLinkState
cmp r0, #0
bne _08070518
ldr r0, [r1, #0x2c]
cmp r4, r0
beq _08070534
_08070518:
ldr r0, [r1, #0x2c]
cmp r4, r0
bne _08070522
movs r0, #0
str r0, [r1, #0x2c]
_08070522:
adds r0, r4, #0
bl DeleteEntity
b _08070566
.align 2, 0
_0807052C: .4byte gLinkEntity
_08070530: .4byte gLinkState
_08070534:
movs r0, #0xf
ands r0, r2
cmp r0, #0xf
beq _08070562
ldrb r1, [r5, #0x1e]
adds r0, #0x91
subs r0, r1, r0
ldrb r2, [r4, #0x1e]
cmp r0, r2
beq _08070558
adds r0, r1, #0
adds r0, #0x6f
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x1e]
ldrh r2, [r4, #0x12]
adds r0, r4, #0
bl sub_080042D0
_08070558:
adds r0, r4, #0
adds r1, r5, #0
bl sub_08078E84
b _08070566
_08070562:
movs r0, #0xff
strb r0, [r4, #0x1e]
_08070566:
ldr r2, _08070580 @ =gLinkEntity
ldrb r1, [r2, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08070584
ldrb r0, [r2, #0x18]
lsls r0, r0, #0x19
lsrs r2, r0, #0x1f
movs r0, #1
eors r2, r0
b _0807058A
.align 2, 0
_08070580: .4byte gLinkEntity
_08070584:
ldrb r0, [r2, #0x18]
lsls r0, r0, #0x19
lsrs r2, r0, #0x1f
_0807058A:
lsls r2, r2, #6
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0807059C
sub_0807059C: @ 0x0807059C
push {lr}
ldr r0, _080705A8 @ =gUnk_02034490
movs r1, #0x18
bl sub_0801D630
pop {pc}
.align 2, 0
_080705A8: .4byte gUnk_02034490
thumb_func_start sub_080705AC
sub_080705AC: @ 0x080705AC
push {lr}
ldr r0, _08070614 @ =gUnk_03000FF0
ldrh r1, [r0, #2]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08070674
ldr r0, _08070618 @ =gUnk_03000FD0
ldrb r0, [r0]
cmp r0, #0
bne _08070674
ldr r0, _0807061C @ =gUnk_02034490
ldrb r0, [r0]
cmp r0, #0
bne _08070674
ldr r0, _08070620 @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _08070674
ldr r1, _08070624 @ =gUnk_02002A40
adds r0, r1, #0
adds r0, #0xaa
ldrb r0, [r0]
cmp r0, #0
beq _08070674
adds r0, r1, #0
adds r0, #0xf2
ldrb r0, [r0]
cmp r0, #0
beq _08070674
ldr r1, _08070628 @ =gLinkState
adds r0, r1, #0
adds r0, #0x8b
ldrb r0, [r0]
cmp r0, #0
bne _08070674
ldr r0, _0807062C @ =gUnk_03003DC0
ldrh r0, [r0, #8]
cmp r0, #0
bne _08070674
adds r2, r1, #0
adds r2, #0xa8
ldrb r0, [r2]
cmp r0, #0
bne _08070630
adds r0, r1, #0
adds r0, #0xa9
ldrb r0, [r0]
b _08070632
.align 2, 0
_08070614: .4byte gUnk_03000FF0
_08070618: .4byte gUnk_03000FD0
_0807061C: .4byte gUnk_02034490
_08070620: .4byte gTextBox
_08070624: .4byte gUnk_02002A40
_08070628: .4byte gLinkState
_0807062C: .4byte gUnk_03003DC0
_08070630:
ldrb r0, [r2]
_08070632:
subs r0, #0x12
cmp r0, #0xa
bhi _08070678
lsls r0, r0, #2
ldr r1, _08070644 @ =_08070648
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08070644: .4byte _08070648
_08070648: @ jump table
.4byte _08070674 @ case 0
.4byte _08070674 @ case 1
.4byte _08070678 @ case 2
.4byte _08070674 @ case 3
.4byte _08070674 @ case 4
.4byte _08070678 @ case 5
.4byte _08070678 @ case 6
.4byte _08070678 @ case 7
.4byte _08070678 @ case 8
.4byte _08070678 @ case 9
.4byte _08070674 @ case 10
_08070674:
movs r0, #0
b _0807067E
_08070678:
bl sub_080A4D88
movs r0, #1
_0807067E:
pop {pc}