tmc/asm/code_08018500.s

1425 lines
24 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08018500
sub_08018500: @ 0x08018500
push {r4, lr}
ldr r4, _08018550 @ =gUnk_02033AB8
adds r3, r4, #4
ldr r0, _08018554 @ =gUnk_080B3D14
ldrb r1, [r4]
lsls r1, r1, #1
adds r1, r1, r0
ldrb r2, [r4, #1]
lsls r0, r2, #1
adds r0, r0, r2
ldrh r1, [r1]
adds r0, r0, r1
movs r2, #0
_0801851A:
strh r0, [r3]
adds r0, #1
adds r3, #2
adds r2, #1
cmp r2, #2
bls _0801851A
ldrb r1, [r4]
lsls r0, r1, #2
adds r0, r0, r1
ldr r1, _08018558 @ =0x00000C81
adds r0, r0, r1
movs r2, #0
adds r1, r4, #0
adds r1, #0xa
_08018536:
strh r0, [r3]
adds r0, #1
adds r3, #2
adds r2, #1
cmp r2, #4
bls _08018536
movs r0, #5
bl sub_08018690
movs r0, #0
strb r0, [r4, #2]
pop {r4, pc}
.align 2, 0
_08018550: .4byte gUnk_02033AB8
_08018554: .4byte gUnk_080B3D14
_08018558: .4byte 0x00000C81
thumb_func_start sub_0801855C
sub_0801855C: @ 0x0801855C
push {r4, r5, r6, lr}
ldr r4, _08018570 @ =gUnk_02033AB8
adds r0, r4, #0
movs r1, #0x14
bl sub_0801D630
adds r5, r4, #0
ldr r4, _08018574 @ =gUnk_080B3D20
movs r6, #0
b _0801858C
.align 2, 0
_08018570: .4byte gUnk_02033AB8
_08018574: .4byte gUnk_080B3D20
_08018578:
adds r0, r4, #0
bl sub_080185B4
cmp r0, #0
beq _08018584
ldrb r6, [r5, #3]
_08018584:
ldrb r0, [r5, #3]
adds r0, #1
strb r0, [r5, #3]
adds r4, #4
_0801858C:
ldrb r0, [r4]
cmp r0, #0xff
bne _08018578
strb r6, [r5, #3]
ldrb r0, [r5, #3]
lsls r0, r0, #2
ldr r1, _080185B0 @ =gUnk_080B3D20
adds r4, r0, r1
ldrb r0, [r4, #2]
strb r0, [r5]
ldrb r0, [r4, #3]
strb r0, [r5, #1]
adds r0, r6, #1
strb r0, [r5, #3]
bl sub_08018500
pop {r4, r5, r6, pc}
.align 2, 0
_080185B0: .4byte gUnk_080B3D20
thumb_func_start sub_080185B4
sub_080185B4: @ 0x080185B4
push {lr}
adds r2, r0, #0
ldrb r0, [r2]
cmp r0, #0xff
bne _080185C2
movs r0, #0
b _080185F6
_080185C2:
cmp r0, #0xfe
bne _080185D4
ldrb r0, [r2, #1]
bl GetInventoryValue
cmp r0, #0
beq _080185F6
movs r0, #1
b _080185F6
_080185D4:
cmp r0, #0xfd
beq _080185F0
ldr r1, _080185EC @ =gUnk_0811E454
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
ldrb r1, [r2, #1]
bl CheckLocalFlagByOffset
b _080185F6
.align 2, 0
_080185EC: .4byte gUnk_0811E454
_080185F0:
ldrb r0, [r2, #1]
bl CheckKinstoneFused
_080185F6:
pop {pc}
thumb_func_start sub_080185F8
sub_080185F8: @ 0x080185F8
push {r4, r5, lr}
ldr r5, _08018624 @ =gUnk_02033AB8
ldrb r0, [r5, #3]
lsls r0, r0, #2
ldr r1, _08018628 @ =gUnk_080B3D20
adds r4, r0, r1
adds r0, r4, #0
bl sub_080185B4
cmp r0, #0
beq _08018620
ldrb r0, [r4, #2]
strb r0, [r5]
ldrb r0, [r4, #3]
strb r0, [r5, #1]
ldrb r0, [r5, #3]
adds r0, #1
strb r0, [r5, #3]
bl sub_08018500
_08018620:
pop {r4, r5, pc}
.align 2, 0
_08018624: .4byte gUnk_02033AB8
_08018628: .4byte gUnk_080B3D20
thumb_func_start sub_0801862C
sub_0801862C: @ 0x0801862C
push {r4, r5, lr}
ldr r1, _0801864C @ =gLinkState
movs r2, #0
movs r0, #0x16
strb r0, [r1, #0xc]
ldr r5, _08018650 @ =gUnk_030010A0
adds r0, r5, #0
adds r0, #0x35
strb r2, [r0]
ldr r4, _08018654 @ =gUnk_02033AB8
ldrb r0, [r4]
cmp r0, #0xff
bne _08018658
ldrh r0, [r4, #4]
strh r0, [r5, #0x36]
b _0801868C
.align 2, 0
_0801864C: .4byte gLinkState
_08018650: .4byte gUnk_030010A0
_08018654: .4byte gUnk_02033AB8
_08018658:
ldrb r0, [r4, #2]
lsls r0, r0, #1
adds r1, r4, #4
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r5, #0x36]
ldrb r0, [r4, #2]
adds r0, #1
strb r0, [r4, #2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #7
bls _0801868C
movs r0, #0
strb r0, [r4, #2]
movs r0, #8
bl sub_08018690
ldrh r0, [r4, #4]
ldrh r5, [r5, #0x36]
cmp r0, r5
bne _0801868C
adds r1, r0, #0
ldrh r0, [r4, #0x12]
strh r0, [r4, #4]
strh r1, [r4, #0x12]
_0801868C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08018690
sub_08018690: @ 0x08018690
push {r4, r5, r6, lr}
adds r6, r1, #0
subs r4, r0, #1
cmp r4, #0
beq _080186BC
lsls r0, r4, #1
adds r5, r0, r6
_0801869E:
bl Random
adds r1, r4, #1
bl __modsi3
ldrh r2, [r5]
lsls r0, r0, #1
adds r0, r0, r6
ldrh r1, [r0]
strh r1, [r5]
strh r2, [r0]
subs r5, #2
subs r4, #1
cmp r4, #0
bne _0801869E
_080186BC:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_080186C0
sub_080186C0: @ 0x080186C0
ldr r3, _080186D0 @ =gArea
adds r2, r3, #0
adds r2, #0x28
movs r1, #0xff
strb r1, [r2]
strh r0, [r3, #0x2c]
bx lr
.align 2, 0
_080186D0: .4byte gArea
thumb_func_start sub_080186D4
sub_080186D4: @ 0x080186D4
push {lr}
ldr r0, _080186E8 @ =gArea
adds r0, #0x28
ldrb r0, [r0]
cmp r0, #0xff
bne _080186E4
bl sub_0801855C
_080186E4:
pop {pc}
.align 2, 0
_080186E8: .4byte gArea
thumb_func_start sub_080186EC
sub_080186EC: @ 0x080186EC
push {r4, r5, lr}
movs r5, #0
ldr r4, _0801870C @ =gUnk_080C9CBC
_080186F2:
ldrb r0, [r4, #3]
cmp r0, #8
bne _08018700
ldrb r1, [r4, #4]
adds r0, r5, #0
bl sub_08018738
_08018700:
adds r4, #8
adds r5, #1
cmp r5, #0x64
bls _080186F2
pop {r4, r5, pc}
.align 2, 0
_0801870C: .4byte gUnk_080C9CBC
thumb_func_start sub_08018710
sub_08018710: @ 0x08018710
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r5, #0
ldr r4, _08018734 @ =gUnk_080C9CBC
_08018718:
ldrb r0, [r4, #3]
cmp r0, #8
bne _0801872A
ldrb r1, [r4, #4]
cmp r6, r1
beq _0801872A
adds r0, r5, #0
bl sub_08018738
_0801872A:
adds r4, #8
adds r5, #1
cmp r5, #0x64
bls _08018718
pop {r4, r5, r6, pc}
.align 2, 0
_08018734: .4byte gUnk_080C9CBC
thumb_func_start sub_08018738
sub_08018738: @ 0x08018738
push {r4, lr}
adds r2, r0, #0
adds r4, r1, #0
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #2
ldr r1, _08018764 @ =gUnk_080FE320
adds r0, r0, r1
ldr r1, _08018768 @ =gRoomControls
ldrh r0, [r0, #2]
ldrh r1, [r1, #4]
cmp r0, r1
bne _08018760
adds r0, r2, #0
bl CheckKinstoneFused
adds r1, r0, #0
adds r0, r4, #0
bl sub_0801876C
_08018760:
pop {r4, pc}
.align 2, 0
_08018764: .4byte gUnk_080FE320
_08018768: .4byte gRoomControls
thumb_func_start sub_0801876C
sub_0801876C: @ 0x0801876C
push {r4, r5, lr}
adds r2, r0, #0
adds r4, r1, #0
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #2
ldr r1, _08018790 @ =gUnk_080FE320
adds r5, r0, r1
ldrb r0, [r5]
cmp r0, #0x1c
bls _08018784
b _080189E4
_08018784:
lsls r0, r0, #2
ldr r1, _08018794 @ =_08018798
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08018790: .4byte gUnk_080FE320
_08018794: .4byte _08018798
_08018798: @ jump table
.4byte _080189E4 @ case 0
.4byte _08018838 @ case 1
.4byte _0801882A @ case 2
.4byte _08018858 @ case 3
.4byte _08018878 @ case 4
.4byte _08018886 @ case 5
.4byte _0801880C @ case 6
.4byte _08018894 @ case 7
.4byte _080188E0 @ case 8
.4byte _08018930 @ case 9
.4byte _080189E4 @ case 10
.4byte _080188FE @ case 11
.4byte _080189E4 @ case 12
.4byte _080189E4 @ case 13
.4byte _080189E4 @ case 14
.4byte _080189B4 @ case 15
.4byte _080189E4 @ case 16
.4byte _080189D0 @ case 17
.4byte _080189E4 @ case 18
.4byte _080189E4 @ case 19
.4byte _080189E4 @ case 20
.4byte _080189E4 @ case 21
.4byte _080189E4 @ case 22
.4byte _080189E4 @ case 23
.4byte _080189A4 @ case 24
.4byte _080188B8 @ case 25
.4byte _080189E4 @ case 26
.4byte _080189E4 @ case 27
.4byte _080189E4 @ case 28
_0801880C:
cmp r4, #0
beq _08018812
b _080189E4
_08018812:
ldrh r0, [r5, #8]
lsrs r0, r0, #4
movs r2, #0x3f
ands r0, r2
ldrh r1, [r5, #0xa]
lsrs r1, r1, #4
ands r1, r2
lsls r1, r1, #6
orrs r0, r1
bl sub_08018AB4
b _080189E4
_0801882A:
cmp r4, #0
bne _08018830
b _080189E4
_08018830:
adds r0, r2, #0
bl sub_08018BB4
b _080189E4
_08018838:
cmp r4, #0
bne _0801883E
b _080189E4
_0801883E:
ldrh r0, [r5, #0x12]
bl CheckGlobalFlag
cmp r0, #0
beq _0801884A
b _080189E4
_0801884A:
ldrb r0, [r5, #1]
lsls r0, r0, #4
ldr r1, _08018854 @ =gUnk_080FEC28
b _080188A4
.align 2, 0
_08018854: .4byte gUnk_080FEC28
_08018858:
cmp r4, #0
bne _0801885E
b _080189E4
_0801885E:
ldrh r0, [r5, #0x12]
bl GetInventoryValue
cmp r0, #0
beq _0801886A
b _080189E4
_0801886A:
ldrb r0, [r5, #1]
lsls r0, r0, #4
ldr r1, _08018874 @ =gUnk_080FEBE8
b _080188A4
.align 2, 0
_08018874: .4byte gUnk_080FEBE8
_08018878:
cmp r4, #0
beq _0801887E
b _080189E4
_0801887E:
adds r0, r2, #0
bl sub_08018A58
b _080189E4
_08018886:
cmp r4, #0
bne _0801888C
b _080189E4
_0801888C:
adds r0, r2, #0
bl sub_08018B50
b _080189E4
_08018894:
cmp r4, #0
beq _0801889A
b _080189E4
_0801889A:
ldrb r0, [r5, #1]
cmp r0, #0x80
beq _080188B0
lsls r0, r0, #4
ldr r1, _080188AC @ =gUnk_080FECC8
_080188A4:
adds r0, r0, r1
bl CreateEntity
b _080189E4
.align 2, 0
_080188AC: .4byte gUnk_080FECC8
_080188B0:
adds r0, r2, #0
bl sub_080189EC
b _080189E4
_080188B8:
ldrb r0, [r5, #1]
lsls r0, r0, #4
ldr r1, _080188DC @ =gUnk_080FED18
adds r0, r0, r1
bl CreateEntity
adds r2, r0, #0
cmp r2, #0
bne _080188CC
b _080189E4
_080188CC:
rsbs r0, r4, #0
orrs r0, r4
asrs r0, r0, #0x1f
movs r1, #2
ands r0, r1
strb r0, [r2, #0xa]
b _080189E4
.align 2, 0
_080188DC: .4byte gUnk_080FED18
_080188E0:
cmp r4, #0
bne _080188E6
b _080189E4
_080188E6:
movs r0, #0xb4
lsls r0, r0, #1
ldrh r1, [r5, #8]
lsrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
ldrh r2, [r5, #0xa]
lsrs r2, r2, #4
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
b _0801899C
_080188FE:
cmp r4, #0
beq _080189E4
ldrb r0, [r5, #1]
lsls r0, r0, #4
ldr r1, _08018924 @ =gUnk_080FED58
adds r0, r0, r1
bl CreateEntity
ldr r2, _08018928 @ =gRoomVars
ldrb r0, [r5, #1]
lsls r0, r0, #2
adds r2, #0x8c
adds r2, r0, r2
ldr r1, _0801892C @ =gUnk_080FED98
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2]
b _080189E4
.align 2, 0
_08018924: .4byte gUnk_080FED58
_08018928: .4byte gRoomVars
_0801892C: .4byte gUnk_080FED98
_08018930:
cmp r4, #0
beq _080189E4
ldrb r0, [r5, #1]
lsls r0, r0, #4
ldr r1, _08018974 @ =gUnk_080FEE78
adds r0, r0, r1
bl CreateEntity
adds r2, r0, #0
cmp r2, #0
beq _08018958
ldr r0, _08018978 @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r3, [r5, #8]
adds r1, r1, r3
strh r1, [r2, #0x38]
ldrh r0, [r0, #8]
ldrh r1, [r5, #0xa]
adds r0, r0, r1
strh r0, [r2, #0x3a]
_08018958:
ldrb r0, [r5, #1]
cmp r0, #0
bne _0801897C
ldrh r1, [r5, #8]
lsrs r1, r1, #4
movs r2, #0x3f
ands r1, r2
ldrh r0, [r5, #0xa]
lsrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r1, r0
movs r0, #0x8d
b _0801899C
.align 2, 0
_08018974: .4byte gUnk_080FEE78
_08018978: .4byte gRoomControls
_0801897C:
ldrh r4, [r5, #8]
lsrs r4, r4, #4
movs r1, #0x3f
ands r4, r1
ldrh r0, [r5, #0xa]
lsrs r0, r0, #4
ands r0, r1
lsls r0, r0, #6
orrs r4, r0
subs r1, r4, #1
movs r0, #0x8c
movs r2, #1
bl SetTileType
movs r0, #0x8e
adds r1, r4, #0
_0801899C:
movs r2, #1
bl SetTileType
b _080189E4
_080189A4:
cmp r4, #0
beq _080189E4
ldr r0, _080189B0 @ =gUnk_080FEE18
bl LoadRoomEntityList
b _080189E4
.align 2, 0
_080189B0: .4byte gUnk_080FEE18
_080189B4:
cmp r4, #0
beq _080189C4
ldr r0, _080189C0 @ =gUnk_080FEE58
bl CreateEntity
b _080189E4
.align 2, 0
_080189C0: .4byte gUnk_080FEE58
_080189C4:
ldr r0, _080189CC @ =gUnk_080FEE48
bl CreateEntity
b _080189E4
.align 2, 0
_080189CC: .4byte gUnk_080FEE48
_080189D0:
cmp r4, #0
beq _080189E4
movs r0, #0x80
lsls r0, r0, #1
movs r1, #0x79
bl SetLocalFlagByOffset
ldr r0, _080189E8 @ =gUnk_080FEE38
bl LoadRoomEntityList
_080189E4:
pop {r4, r5, pc}
.align 2, 0
_080189E8: .4byte gUnk_080FEE38
thumb_func_start sub_080189EC
sub_080189EC: @ 0x080189EC
push {r4, r5, r6, lr}
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08018A48 @ =gUnk_080FE320
adds r1, r1, r0
ldrh r0, [r1, #8]
lsrs r6, r0, #4
movs r2, #0x3f
ands r6, r2
ldrh r0, [r1, #0xa]
lsrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r6, r0
subs r6, #0x42
movs r5, #0
_08018A0E:
ldr r1, _08018A4C @ =0x000001DF
adds r0, r5, r1
adds r1, r6, r5
movs r2, #2
bl SetTileType
adds r5, #1
cmp r5, #3
bls _08018A0E
adds r6, #0x40
movs r5, #0
_08018A24:
ldr r1, _08018A50 @ =0x000001E3
adds r0, r5, r1
adds r4, r6, r5
adds r1, r4, #0
movs r2, #2
bl SetTileType
ldr r1, _08018A54 @ =0x000001DB
adds r0, r5, r1
adds r1, r4, #0
movs r2, #1
bl SetTileType
adds r5, #1
cmp r5, #3
bls _08018A24
pop {r4, r5, r6, pc}
.align 2, 0
_08018A48: .4byte gUnk_080FE320
_08018A4C: .4byte 0x000001DF
_08018A50: .4byte 0x000001E3
_08018A54: .4byte 0x000001DB
thumb_func_start sub_08018A58
sub_08018A58: @ 0x08018A58
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08018AAC @ =gUnk_080FE320
adds r1, r1, r0
ldrh r0, [r1, #8]
lsrs r5, r0, #4
movs r2, #0x3f
ands r5, r2
ldrh r0, [r1, #0xa]
lsrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r5, r0
subs r5, #0x43
ldr r6, _08018AB0 @ =0x00000232
movs r0, #0
_08018A80:
movs r4, #0
movs r1, #0x40
adds r1, r1, r5
mov r8, r1
adds r7, r0, #1
_08018A8A:
adds r0, r6, #0
adds r6, #1
adds r1, r5, r4
movs r2, #1
bl SetTileType
adds r4, #1
cmp r4, #6
bls _08018A8A
mov r5, r8
adds r0, r7, #0
cmp r0, #3
bls _08018A80
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08018AAC: .4byte gUnk_080FE320
_08018AB0: .4byte 0x00000232
thumb_func_start sub_08018AB4
sub_08018AB4: @ 0x08018AB4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #4
adds r5, r0, #0
movs r3, #0xf4
lsls r3, r3, #1
movs r7, #0xfa
lsls r7, r7, #1
movs r0, #0
_08018ACA:
movs r6, #0
movs r1, #0x40
adds r1, r1, r5
mov r8, r1
adds r0, #1
mov sb, r0
adds r4, r5, #0
subs r4, #0x40
_08018ADA:
adds r0, r3, #0
adds r3, #1
adds r1, r5, r6
movs r2, #1
str r3, [sp]
bl SetTileType
adds r0, r7, #0
adds r7, #1
adds r1, r4, #0
movs r2, #2
bl SetTileType
adds r4, #1
adds r6, #1
ldr r3, [sp]
cmp r6, #3
bls _08018ADA
mov r5, r8
mov r0, sb
cmp r0, #2
bls _08018ACA
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08018B10
sub_08018B10: @ 0x08018B10
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
movs r0, #0xf8
lsls r0, r0, #1
mov r8, r0
movs r7, #0xfe
lsls r7, r7, #1
movs r5, #0
adds r4, r6, #0
subs r4, #0x40
_08018B28:
mov r0, r8
movs r1, #1
add r8, r1
adds r1, r6, r5
movs r2, #1
bl SetTileType
adds r0, r7, #0
adds r7, #1
adds r1, r4, #0
movs r2, #2
bl SetTileType
adds r4, #1
adds r5, #1
cmp r5, #3
bls _08018B28
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08018B50
sub_08018B50: @ 0x08018B50
push {r4, r5, r6, r7, lr}
sub sp, #4
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #2
ldr r0, _08018BAC @ =gUnk_080FE320
adds r2, r1, r0
ldrb r1, [r2, #1]
movs r0, #0x80
ands r0, r1
ldr r3, _08018BB0 @ =0x00000219
cmp r0, #0
bne _08018B6C
subs r3, #0x19
_08018B6C:
ldrh r0, [r2, #8]
lsrs r5, r0, #4
movs r1, #0x3f
ands r5, r1
ldrh r0, [r2, #0xa]
lsrs r0, r0, #4
ands r0, r1
lsls r0, r0, #6
orrs r5, r0
subs r5, #0x82
movs r0, #0
_08018B82:
movs r4, #0
adds r6, r5, #0
adds r6, #0x40
adds r7, r0, #1
_08018B8A:
adds r0, r3, #0
adds r3, #1
adds r1, r5, r4
movs r2, #1
str r3, [sp]
bl SetTileType
adds r4, #1
ldr r3, [sp]
cmp r4, #4
bls _08018B8A
adds r5, r6, #0
adds r0, r7, #0
cmp r0, #4
bls _08018B82
add sp, #4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08018BAC: .4byte gUnk_080FE320
_08018BB0: .4byte 0x00000219
thumb_func_start sub_08018BB4
sub_08018BB4: @ 0x08018BB4
push {r4, r5, lr}
sub sp, #8
adds r4, r0, #0
lsls r0, r4, #3
ldr r1, _08018C14 @ =gUnk_080FEAC8
adds r0, r0, r1
mov r5, sp
mov r1, sp
movs r2, #8
bl sub_0801D66C
lsls r0, r4, #2
adds r0, r0, r4
lsls r0, r0, #2
ldr r1, _08018C18 @ =gUnk_080FE320
adds r0, r0, r1
ldrh r1, [r0, #8]
lsrs r1, r1, #4
movs r2, #0x3f
ands r1, r2
ldrh r0, [r0, #0xa]
lsrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r1, r0
strh r1, [r5, #4]
mov r0, sp
bl sub_0804B3C4
ldrb r0, [r5, #1]
bl CheckLocalFlag
cmp r0, #0
bne _08018C10
ldrh r3, [r5, #4]
ldrb r1, [r5, #6]
movs r0, #1
ands r0, r1
movs r2, #2
cmp r0, #0
bne _08018C08
movs r2, #1
_08018C08:
movs r0, #0x73
adds r1, r3, #0
bl SetTileType
_08018C10:
add sp, #8
pop {r4, r5, pc}
.align 2, 0
_08018C14: .4byte gUnk_080FEAC8
_08018C18: .4byte gUnk_080FE320
thumb_func_start sub_08018C1C
sub_08018C1C: @ 0x08018C1C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
ldr r6, _08018C54 @ =0x00000185
movs r0, #0
_08018C28:
movs r4, #0
movs r1, #0x40
adds r1, r1, r5
mov r8, r1
adds r7, r0, #1
_08018C32:
adds r0, r6, #0
adds r6, #1
adds r1, r5, r4
movs r2, #1
bl SetTileType
adds r4, #1
cmp r4, #4
bls _08018C32
mov r5, r8
adds r0, r7, #0
cmp r0, #3
bls _08018C28
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08018C54: .4byte 0x00000185
thumb_func_start sub_08018C58
sub_08018C58: @ 0x08018C58
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0
_08018C5E:
movs r1, #0x98
lsls r1, r1, #2
adds r0, r5, r1
adds r1, r4, #0
movs r2, #1
bl SetTileType
ldr r1, _08018C84 @ =0x00000261
adds r0, r5, r1
adds r1, r4, #1
movs r2, #1
bl SetTileType
adds r5, #2
adds r4, #0x40
cmp r5, #5
bls _08018C5E
pop {r4, r5, pc}
.align 2, 0
_08018C84: .4byte 0x00000261
thumb_func_start sub_08018C88
sub_08018C88: @ 0x08018C88
push {lr}
adds r2, r0, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _08018CB4
adds r1, r2, #0
adds r1, #0x3d
movs r0, #0
strb r0, [r1]
ldr r1, _08018CB0 @ =gUnk_080B3DD0
ldrb r0, [r2, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r2, #0
bl _call_via_r1
b _08018CB8
.align 2, 0
_08018CB0: .4byte gUnk_080B3DD0
_08018CB4:
bl DeleteThisEntity
_08018CB8:
pop {pc}
.align 2, 0
thumb_func_start sub_08018CBC
sub_08018CBC: @ 0x08018CBC
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x84
ldr r5, _08018D50 @ =gLinkEntity
ldr r0, [r5, #0x2c]
str r0, [r4, #0x2c]
str r0, [r1]
subs r1, #4
ldr r0, [r5, #0x30]
str r0, [r4, #0x30]
str r0, [r1]
ldrb r1, [r5, #0x14]
movs r0, #0xe
ands r0, r1
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x96
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x3c
ldrb r0, [r0]
adds r0, #1
movs r2, #0x80
rsbs r2, r2, #0
adds r1, r2, #0
adds r2, r4, #0
adds r2, #0x3c
orrs r0, r1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x3b
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x3b
strb r0, [r1]
ldr r6, [r4, #0x54]
cmp r6, #0
beq _08018D58
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #0x56
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x40
movs r0, #0x1c
strb r0, [r1]
adds r1, #4
movs r0, #6
strb r0, [r1]
ldr r0, _08018D54 @ =gUnk_080B3E18
str r0, [r4, #0x48]
ldr r0, [r4, #0x54]
adds r0, #0x62
movs r1, #0
strb r1, [r0]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0x18]
b _08018DD2
.align 2, 0
_08018D50: .4byte gLinkEntity
_08018D54: .4byte gUnk_080B3E18
_08018D58:
ldr r7, _08018DDC @ =gLinkState
ldrb r0, [r7, #0x1c]
cmp r0, #0
bne _08018D64
bl DeleteThisEntity
_08018D64:
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #0xa6
strh r0, [r4, #0x12]
movs r0, #0x33
strb r0, [r4, #0x1a]
adds r0, r4, #0
adds r0, #0x60
strh r6, [r0]
ldrb r0, [r7, #0x1d]
subs r0, #1
strb r0, [r4, #0xa]
ldr r1, _08018DE0 @ =gUnk_080B3DE0
ldrb r0, [r4, #0xa]
lsls r0, r0, #1
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xa]
lsls r0, r0, #1
adds r0, #1
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x44
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x40
movs r0, #0x1b
strb r0, [r1]
ldr r1, _08018DE4 @ =gUnk_080B3DE8
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [r4, #0x48]
str r4, [r5, #0x70]
adds r0, r5, #0
bl sub_08078CD0
str r6, [r5, #0x70]
ldrb r1, [r4, #0xa]
adds r1, #0xa
adds r0, r4, #0
bl InitializeAnimation
adds r0, r4, #0
bl sub_08018FA0
_08018DD2:
adds r0, r4, #0
bl sub_0801766C
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08018DDC: .4byte gLinkState
_08018DE0: .4byte gUnk_080B3DE0
_08018DE4: .4byte gUnk_080B3DE8
thumb_func_start sub_08018DE8
sub_08018DE8: @ 0x08018DE8
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
adds r0, #0x3a
ldrb r1, [r0]
movs r5, #4
adds r0, r5, #0
ands r0, r1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08018E08
ldr r0, _08018E18 @ =gLinkState
strb r1, [r0, #0x1c]
bl DeleteThisEntity
_08018E08:
ldr r0, _08018E18 @ =gLinkState
ldrb r0, [r0, #0x1c]
cmp r0, #0
beq _08018E1C
cmp r0, #5
beq _08018E24
b _08018E5A
.align 2, 0
_08018E18: .4byte gLinkState
_08018E1C:
adds r0, r4, #0
bl sub_08018F6C
b _08018E5A
_08018E24:
ldr r0, [r4, #0x54]
strb r5, [r0, #0xd]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r2, #2
movs r0, #2
strb r0, [r4, #0xc]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
subs r0, #0xa
ands r0, r1
orrs r0, r2
strb r0, [r3]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
adds r0, r4, #0
bl sub_08018FA0
_08018E5A:
ldr r0, _08018E64 @ =gLinkEntity
bl sub_08078CD0
pop {r4, r5, pc}
.align 2, 0
_08018E64: .4byte gLinkEntity
thumb_func_start sub_08018E68
sub_08018E68: @ 0x08018E68
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
cmp r0, #0
bne _08018E82
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
movs r1, #5
bl sub_08008790
b _08018EA8
_08018E82:
adds r0, #0x3a
ldrb r1, [r0]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _08018E92
bl DeleteThisEntity
_08018E92:
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08018EA8
adds r0, r4, #0
bl sub_08018F6C
b _08018F62
_08018EA8:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _08018F46
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0x15]
cmp r0, #8
beq _08018EEA
cmp r0, #8
bgt _08018ECC
cmp r0, #0
beq _08018ED6
b _08018EEE
_08018ECC:
cmp r0, #0x10
beq _08018EDE
cmp r0, #0x18
beq _08018EE4
b _08018EEE
_08018ED6:
movs r6, #0
movs r5, #4
rsbs r5, r5, #0
b _08018EEE
_08018EDE:
movs r6, #0
movs r5, #4
b _08018EEE
_08018EE4:
movs r6, #4
rsbs r6, r6, #0
b _08018EEC
_08018EEA:
movs r6, #4
_08018EEC:
movs r5, #0
_08018EEE:
ldr r1, [r4, #0x54]
cmp r1, #0
beq _08018F00
ldrb r0, [r4, #0x15]
strb r0, [r1, #0x15]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl CopyPosition
_08018F00:
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _08018F0C
adds r0, r4, #0
bl sub_0800451C
_08018F0C:
adds r0, r4, #0
adds r1, r6, #0
adds r2, r5, #0
bl sub_0800029C
ldr r1, _08018F64 @ =gUnk_080B3DF4
bl sub_08007DD6
cmp r0, #0
bne _08018F62
adds r0, r4, #0
adds r1, r6, #0
adds r2, r5, #0
bl sub_080002B4
cmp r0, #0x74
beq _08018F62
ldr r1, _08018F68 @ =gUnk_08003E44
movs r0, #0x2e
ldrsh r2, [r4, r0]
adds r2, r2, r6
movs r0, #0x32
ldrsh r3, [r4, r0]
adds r3, r3, r5
adds r0, r4, #0
bl sub_080040D8
cmp r0, #0
beq _08018F62
_08018F46:
ldr r0, [r4, #0x54]
cmp r0, #0
bne _08018F56
ldrb r1, [r4, #0xa]
adds r1, #0xd
adds r0, r4, #0
bl InitializeAnimation
_08018F56:
ldrb r0, [r4, #0xc]
adds r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08018F6C
_08018F62:
pop {r4, r5, r6, pc}
.align 2, 0
_08018F64: .4byte gUnk_080B3DF4
_08018F68: .4byte gUnk_08003E44
thumb_func_start sub_08018F6C
sub_08018F6C: @ 0x08018F6C
push {r4, lr}
adds r4, r0, #0
ldr r1, [r4, #0x54]
cmp r1, #0
beq _08018F8A
movs r0, #5
strb r0, [r1, #0xd]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
subs r0, #9
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
b _08018F9A
_08018F8A:
adds r0, r4, #0
bl GetNextFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0
beq _08018F9E
_08018F9A:
bl DeleteThisEntity
_08018F9E:
pop {r4, pc}
thumb_func_start sub_08018FA0
sub_08018FA0: @ 0x08018FA0
push {lr}
adds r2, r0, #0
ldr r0, _08018FC8 @ =gLinkEntity
adds r0, #0x38
ldrb r0, [r0]
adds r1, r2, #0
adds r1, #0x38
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bne _08018FBC
movs r0, #1
strb r0, [r2, #0xb]
_08018FBC:
ldrb r0, [r2, #0xa]
adds r0, #0xea
bl PlaySFX
pop {pc}
.align 2, 0
_08018FC8: .4byte gLinkEntity
thumb_func_start sub_08018FCC
sub_08018FCC: @ 0x08018FCC
push {lr}
ldr r2, _08018FE0 @ =gUnk_080B3E30
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08018FE0: .4byte gUnk_080B3E30