tmc/asm/pushableFurniture.s

1606 lines
26 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableFurniture
PushableFurniture: @ 0x0808F968
push {r4, lr}
adds r4, r0, #0
ldr r1, _0808F98C @ =gUnk_08121ED8
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _0808F988
adds r0, r4, #0
bl sub_08090514
_0808F988:
pop {r4, pc}
.align 2, 0
_0808F98C: .4byte gUnk_08121ED8
thumb_func_start sub_0808F990
sub_0808F990: @ 0x0808F990
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r2, #1
strb r2, [r4, #0xc]
movs r3, #0
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r0, [r4, #0xe]
strb r0, [r4, #0xf]
strb r3, [r4, #0xe]
ldrb r1, [r4, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
adds r0, r4, #0
adds r0, #0x81
strb r3, [r0]
adds r0, #2
strb r3, [r0]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _0808F9E8
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]
adds r0, r4, #0
adds r0, #0x80
strb r3, [r0]
b _0808FA1C
_0808F9E8:
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _0808FA0A
cmp r0, #4
bne _0808FA1C
_0808FA0A:
ldrh r0, [r4, #0x32]
adds r0, #2
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xfe
strb r0, [r1]
strb r3, [r4, #0xd]
strb r3, [r4, #0x1e]
_0808FA1C:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0808FAC4
movs r6, #0
cmp r0, #0x80
beq _0808FA84
ldrh r1, [r4, #0xa]
ldr r0, _0808FA38 @ =0x00000101
cmp r1, r0
bne _0808FA3C
movs r0, #0xf
ldrsb r0, [r4, r0]
ldrh r1, [r4, #0x32]
b _0808FA42
.align 2, 0
_0808FA38: .4byte 0x00000101
_0808FA3C:
movs r0, #0xf
ldrsb r0, [r4, r0]
ldrh r1, [r4, #0x2e]
_0808FA42:
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x7e
strh r0, [r1]
adds r5, r1, #0
ldr r3, [r4, #0x50]
cmp r3, #0
bne _0808FA5E
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
b _0808FA7C
_0808FA5E:
adds r2, r4, #0
adds r2, #0x82
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808FA76
ldrb r0, [r3, #0xc]
cmp r0, #2
bne _0808FAA2
adds r6, #1
b _0808FAA2
_0808FA76:
ldrb r0, [r2]
bl CheckLocalFlag
_0808FA7C:
cmp r0, #0
beq _0808FAA2
adds r6, #1
b _0808FAA2
_0808FA84:
movs r6, #1
ldrh r1, [r4, #0xa]
ldr r0, _0808FA94 @ =0x00000101
cmp r1, r0
bne _0808FA98
ldrh r1, [r4, #0x32]
b _0808FA9A
.align 2, 0
_0808FA94: .4byte 0x00000101
_0808FA98:
ldrh r1, [r4, #0x2e]
_0808FA9A:
adds r0, r4, #0
adds r0, #0x7e
strh r1, [r0]
adds r5, r0, #0
_0808FAA2:
cmp r6, #0
beq _0808FAC4
adds r1, r4, #0
adds r1, #0x81
movs r0, #1
strb r0, [r1]
ldrh r1, [r4, #0xa]
ldr r0, _0808FABC @ =0x00000101
cmp r1, r0
bne _0808FAC0
ldrh r0, [r5]
strh r0, [r4, #0x32]
b _0808FAC4
.align 2, 0
_0808FABC: .4byte 0x00000101
_0808FAC0:
ldrh r0, [r5]
strh r0, [r4, #0x2e]
_0808FAC4:
adds r0, r4, #0
bl sub_0808FF50
pop {r4, r5, r6, pc}
thumb_func_start sub_0808FACC
sub_0808FACC: @ 0x0808FACC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
bne _0808FAF2
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0808FAEA
adds r0, r4, #0
bl sub_0808FBFC
b _0808FB0A
_0808FAEA:
adds r0, r4, #0
bl sub_0808FB68
b _0808FB0A
_0808FAF2:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0808FB0A
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0808FB0A
movs r0, #0x86
lsls r0, r0, #1
bl sub_08004488
_0808FB0A:
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _0808FB14
cmp r0, #4
bne _0808FB64
_0808FB14:
ldrb r1, [r4, #0xd]
cmp r1, #1
beq _0808FB3E
cmp r1, #1
bgt _0808FB24
cmp r1, #0
beq _0808FB2A
b _0808FB64
_0808FB24:
cmp r1, #2
beq _0808FB5E
b _0808FB64
_0808FB2A:
adds r0, r4, #0
bl sub_0808FECC
cmp r0, #0
beq _0808FB64
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0xc
strb r0, [r4, #0xe]
b _0808FB64
_0808FB3E:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0808FB64
strb r1, [r4, #0x1e]
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x80
bl sub_08004488
adds r0, r4, #0
bl sub_0808FF20
b _0808FB64
_0808FB5E:
adds r0, r4, #0
bl nullsub_1
_0808FB64:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808FB68
sub_0808FB68: @ 0x0808FB68
push {r4, lr}
adds r4, r0, #0
adds r0, #0x70
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
adds r1, r0, #0
ldr r0, _0808FBAC @ =0x00004031
cmp r1, r0
bhi _0808FBB0
subs r0, #1
cmp r1, r0
blo _0808FBB0
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r1, #0
subs r0, #0x30
movs r1, #1
ands r0, r1
lsls r0, r0, #4
movs r1, #8
orrs r0, r1
strb r0, [r4, #0x15]
movs r0, #1
bl sub_08078A90
adds r0, r4, #0
movs r1, #0
bl sub_0808FD44
b _0808FBF6
.align 2, 0
_0808FBAC: .4byte 0x00004031
_0808FBB0:
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
adds r1, r0, #0
ldr r0, _0808FBF8 @ =0x00004031
cmp r1, r0
bhi _0808FBF0
subs r0, #1
cmp r1, r0
blo _0808FBF0
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r1, #0
subs r0, #0x30
movs r1, #1
ands r0, r1
lsls r0, r0, #4
movs r1, #8
orrs r0, r1
strb r0, [r4, #0x15]
movs r0, #1
bl sub_08078A90
adds r0, r4, #0
movs r1, #1
bl sub_0808FD44
_0808FBF0:
adds r0, r4, #0
bl sub_0808FDE8
_0808FBF6:
pop {r4, pc}
.align 2, 0
_0808FBF8: .4byte 0x00004031
thumb_func_start sub_0808FBFC
sub_0808FBFC: @ 0x0808FBFC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
adds r1, r0, #0
ldr r0, _0808FC38 @ =0x0000404A
cmp r1, r0
beq _0808FC34
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r1, #0
subs r0, #0x4b
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r4, #0x15]
movs r0, #1
bl sub_08078A90
adds r0, r4, #0
movs r1, #0
bl sub_0808FD44
_0808FC34:
pop {r4, pc}
.align 2, 0
_0808FC38: .4byte 0x0000404A
thumb_func_start sub_0808FC3C
sub_0808FC3C: @ 0x0808FC3C
push {r4, lr}
adds r4, r0, #0
bl sub_0800445C
adds r0, r4, #0
bl sub_0808FC5C
cmp r0, #0
beq _0808FC58
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0
bl sub_08078A90
_0808FC58:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0808FC5C
sub_0808FC5C: @ 0x0808FC5C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _0808FD40
ldrb r1, [r4, #0xa]
cmp r1, #2
beq _0808FC7C
cmp r1, #4
bne _0808FC84
_0808FC7C:
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xfe
b _0808FC88
_0808FC84:
adds r1, r4, #0
adds r1, #0x63
_0808FC88:
strb r0, [r1]
adds r0, r4, #0
bl sub_080002D0
cmp r0, #0
bne _0808FD40
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0808FD30
movs r2, #0
ldrh r1, [r4, #0xa]
ldr r0, _0808FCB4 @ =0x00000101
cmp r1, r0
bne _0808FCB8
movs r1, #0x32
ldrsh r0, [r4, r1]
adds r1, r4, #0
adds r1, #0x7e
ldrh r1, [r1]
cmp r0, r1
bne _0808FCC8
b _0808FCCC
.align 2, 0
_0808FCB4: .4byte 0x00000101
_0808FCB8:
movs r1, #0x2e
ldrsh r0, [r4, r1]
adds r1, r4, #0
adds r1, #0x7e
ldrh r1, [r1]
cmp r0, r1
bne _0808FCC8
movs r2, #1
_0808FCC8:
cmp r2, #0
beq _0808FD30
_0808FCCC:
adds r0, r4, #0
adds r0, #0x81
movs r5, #1
strb r5, [r0]
ldr r3, [r4, #0x50]
cmp r3, #0
bne _0808FCE4
adds r0, #5
ldrh r0, [r0]
bl SetFlag
b _0808FD0C
_0808FCE4:
adds r2, r4, #0
adds r2, #0x82
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808FD06
adds r0, r3, #0
adds r0, #0x28
subs r2, #8
adds r1, r5, #0
ldrh r2, [r2]
lsls r1, r2
ldrb r2, [r0]
orrs r1, r2
strb r1, [r0]
b _0808FD0C
_0808FD06:
ldrb r0, [r2]
bl SetLocalFlag
_0808FD0C:
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0808FD1A
movs r0, #4
b _0808FD1C
_0808FD1A:
movs r0, #0x18
_0808FD1C:
strb r0, [r4, #0xe]
ldr r0, _0808FD3C @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _0808FD30
ldrb r0, [r4, #0xe]
adds r0, #0x10
strb r0, [r4, #0xe]
_0808FD30:
adds r0, r4, #0
bl sub_0808FF50
movs r0, #1
b _0808FD42
.align 2, 0
_0808FD3C: .4byte gLinkState
_0808FD40:
movs r0, #0
_0808FD42:
pop {r4, r5, pc}
thumb_func_start sub_0808FD44
sub_0808FD44: @ 0x0808FD44
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #1
bne _0808FD8E
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
cmp r0, #0
beq _0808FD62
adds r0, r4, #0
bl sub_08090498
_0808FD62:
cmp r5, #0
beq _0808FD6C
adds r0, r4, #0
adds r0, #0x72
b _0808FD70
_0808FD6C:
adds r0, r4, #0
adds r0, #0x70
_0808FD70:
ldrh r5, [r0]
ldr r0, _0808FD84 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0808FD88
movs r0, #0x40
strh r0, [r4, #0x24]
b _0808FDB2
.align 2, 0
_0808FD84: .4byte gLinkState
_0808FD88:
strh r1, [r4, #0x24]
movs r0, #0x10
b _0808FDB4
_0808FD8E:
adds r0, r4, #0
adds r0, #0x7c
ldrh r5, [r0]
ldr r0, _0808FDAC @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0808FDB0
movs r1, #0x40
movs r0, #0x40
strh r0, [r4, #0x24]
strb r1, [r4, #0xe]
b _0808FDB6
.align 2, 0
_0808FDAC: .4byte gLinkState
_0808FDB0:
strh r1, [r4, #0x24]
_0808FDB2:
movs r0, #0x20
_0808FDB4:
strb r0, [r4, #0xe]
_0808FDB6:
ldr r0, _0808FDE0 @ =0x0000010F
bl sub_08004488
adds r0, r4, #0
bl sub_08090254
ldr r1, _0808FDE4 @ =gUnk_080B4488
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
adds r0, r5, r0
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080001DA
pop {r4, r5, pc}
.align 2, 0
_0808FDE0: .4byte 0x0000010F
_0808FDE4: .4byte gUnk_080B4488
thumb_func_start sub_0808FDE8
sub_0808FDE8: @ 0x0808FDE8
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
adds r0, #0x70
ldrh r5, [r0]
subs r0, r5, #1
movs r1, #1
bl sub_080002E0
adds r4, r0, #0
adds r0, r5, #0
movs r1, #1
bl sub_080001DA
ldr r6, _0808FE28 @ =0x0000402E
cmp r0, r6
bne _0808FE30
movs r0, #0xf0
ands r0, r4
cmp r0, #0
beq _0808FE14
cmp r0, #0x50
bne _0808FE1C
_0808FE14:
movs r0, #5
ands r0, r4
cmp r0, #0
bne _0808FE58
_0808FE1C:
ldr r0, _0808FE2C @ =0x0000402C
adds r1, r5, #0
movs r2, #1
bl SetTile
b _0808FE58
.align 2, 0
_0808FE28: .4byte 0x0000402E
_0808FE2C: .4byte 0x0000402C
_0808FE30:
adds r0, r5, #0
movs r1, #1
bl sub_080002E0
cmp r0, #5
bne _0808FE58
movs r1, #0xf0
ands r1, r4
cmp r1, #0
beq _0808FE48
cmp r1, #0x50
bne _0808FE58
_0808FE48:
ands r4, r0
cmp r4, #0
beq _0808FE58
adds r0, r6, #0
adds r1, r5, #0
movs r2, #1
bl SetTile
_0808FE58:
adds r0, r7, #0
adds r0, #0x72
ldrh r5, [r0]
adds r0, r5, #1
movs r1, #1
bl sub_080002E0
adds r4, r0, #0
adds r0, r5, #0
movs r1, #1
bl sub_080001DA
ldr r6, _0808FE98 @ =0x0000402F
cmp r0, r6
bne _0808FEA0
movs r0, #0xf0
ands r0, r4
cmp r0, #0
beq _0808FE82
cmp r0, #0x50
bne _0808FE8A
_0808FE82:
movs r0, #0xa
ands r0, r4
cmp r0, #0
bne _0808FEC8
_0808FE8A:
ldr r0, _0808FE9C @ =0x0000402D
adds r1, r5, #0
movs r2, #1
bl SetTile
b _0808FEC8
.align 2, 0
_0808FE98: .4byte 0x0000402F
_0808FE9C: .4byte 0x0000402D
_0808FEA0:
adds r0, r5, #0
movs r1, #1
bl sub_080002E0
cmp r0, #0xa
bne _0808FEC8
movs r1, #0xf0
ands r1, r4
cmp r1, #0
beq _0808FEB8
cmp r1, #0x50
bne _0808FEC8
_0808FEB8:
ands r4, r0
cmp r4, #0
beq _0808FEC8
adds r0, r6, #0
adds r1, r5, #0
movs r2, #1
bl SetTile
_0808FEC8:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0808FECC
sub_0808FECC: @ 0x0808FECC
push {r4, r5, lr}
adds r2, r0, #0
movs r4, #1
ldr r0, _0808FF18 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _0808FF10
ldr r3, _0808FF1C @ =gLinkEntity
ldrb r0, [r3, #0xc]
cmp r0, #6
bne _0808FF10
ldrb r0, [r3, #0x14]
cmp r0, #0
bne _0808FF10
movs r1, #0x32
ldrsh r0, [r3, r1]
movs r5, #0x32
ldrsh r1, [r2, r5]
subs r0, r0, r1
cmp r0, #0x13
bgt _0808FF10
movs r0, #0x2e
ldrsh r2, [r2, r0]
adds r0, r2, #0
adds r0, #0xc
movs r5, #0x2e
ldrsh r1, [r3, r5]
cmp r0, r1
ble _0808FF10
subs r0, #0x18
cmp r0, r1
blt _0808FF12
_0808FF10:
movs r4, #0
_0808FF12:
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
_0808FF18: .4byte gLinkState
_0808FF1C: .4byte gLinkEntity
thumb_func_start sub_0808FF20
sub_0808FF20: @ 0x0808FF20
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xb]
cmp r1, #0
beq _0808FF4A
cmp r1, #0
blt _0808FF4A
cmp r1, #2
bgt _0808FF4A
subs r1, #1
movs r0, #0x63
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0808FF4A
str r4, [r1, #0x50]
adds r0, r4, #0
bl CopyPosition
_0808FF4A:
pop {r4, pc}
thumb_func_start nullsub_1
nullsub_1: @ 0x0808FF4C
bx lr
.align 2, 0
thumb_func_start sub_0808FF50
sub_0808FF50: @ 0x0808FF50
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, _0808FF98 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r2, r6, #0
adds r2, #0x7c
strh r1, [r2]
ldrh r0, [r6, #0x2e]
movs r1, #0xf
ands r1, r0
ldrh r7, [r2]
adds r0, r6, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0808FF9C
cmp r0, #1
beq _0808FFC0
b _0809008A
.align 2, 0
_0808FF98: .4byte gRoomControls
_0808FF9C:
adds r0, r6, #0
adds r0, #0x70
strh r7, [r0]
ldrh r0, [r0]
movs r1, #1
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x74
strh r0, [r1]
ldr r0, _0808FFBC @ =0x0000404A
adds r1, r7, #0
movs r2, #1
bl SetTile
b _0809008A
.align 2, 0
_0808FFBC: .4byte 0x0000404A
_0808FFC0:
movs r0, #8
ands r1, r0
cmp r1, #0
beq _0809002C
adds r0, r6, #0
adds r0, #0x70
strh r7, [r0]
ldrh r0, [r0]
movs r1, #1
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x74
strh r0, [r1]
ldr r4, _08090028 @ =gUnk_08121EE4
movs r0, #0x81
adds r0, r0, r6
mov r8, r0
ldrb r0, [r0]
lsls r0, r0, #1
adds r0, r0, r4
ldrh r0, [r0]
adds r1, r7, #0
movs r2, #1
bl SetTile
adds r0, r7, #1
adds r5, r6, #0
adds r5, #0x72
strh r0, [r5]
ldrh r0, [r5]
movs r1, #1
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x76
strh r0, [r1]
mov r1, r8
ldrb r0, [r1]
adds r0, #4
lsls r0, r0, #1
adds r0, r0, r4
ldrh r1, [r0]
ldrh r2, [r5]
adds r0, r6, #0
bl sub_08090094
adds r0, r6, #0
movs r1, #1
bl sub_0809028C
b _0809008A
.align 2, 0
_08090028: .4byte gUnk_08121EE4
_0809002C:
adds r0, r6, #0
adds r0, #0x72
strh r7, [r0]
ldrh r0, [r0]
movs r1, #1
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x76
strh r0, [r1]
ldr r5, _08090090 @ =gUnk_08121EE4
movs r4, #0x81
adds r4, r4, r6
mov r8, r4
ldrb r0, [r4]
lsls r0, r0, #1
adds r0, r0, r5
ldrh r0, [r0]
adds r1, r7, #0
movs r2, #1
bl SetTile
subs r0, r7, #1
adds r4, r6, #0
adds r4, #0x70
strh r0, [r4]
ldrh r0, [r4]
movs r1, #1
bl sub_080001DA
adds r1, r6, #0
adds r1, #0x74
strh r0, [r1]
mov r1, r8
ldrb r0, [r1]
adds r0, #2
lsls r0, r0, #1
adds r0, r0, r5
ldrh r1, [r0]
ldrh r2, [r4]
adds r0, r6, #0
bl sub_08090094
adds r0, r6, #0
movs r1, #0
bl sub_0809028C
_0809008A:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08090090: .4byte gUnk_08121EE4
thumb_func_start sub_08090094
sub_08090094: @ 0x08090094
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r5, r1, #0
adds r7, r2, #0
adds r0, r7, #0
movs r1, #1
bl sub_080002E0
adds r4, r0, #0
adds r0, r7, #0
movs r1, #1
bl sub_080001DA
adds r3, r0, #0
movs r0, #0x80
lsls r0, r0, #7
ands r0, r3
cmp r0, #0
bne _0809012C
adds r3, r5, #0
ldr r1, _080900D0 @ =0xFFFFBFDC
adds r0, r3, r1
cmp r0, #0xb
bhi _0809011A
lsls r0, r0, #2
ldr r1, _080900D4 @ =_080900D8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080900D0: .4byte 0xFFFFBFDC
_080900D4: .4byte _080900D8
_080900D8: @ jump table
.4byte _08090114 @ case 0
.4byte _08090108 @ case 1
.4byte _0809011A @ case 2
.4byte _0809011A @ case 3
.4byte _0809011A @ case 4
.4byte _0809011A @ case 5
.4byte _0809011A @ case 6
.4byte _0809011A @ case 7
.4byte _08090114 @ case 8
.4byte _0809010E @ case 9
.4byte _08090114 @ case 10
.4byte _0809010E @ case 11
_08090108:
cmp r4, #5
bne _0809011A
b _08090118
_0809010E:
cmp r4, #5
bne _0809011A
b _08090118
_08090114:
cmp r4, #0xa
bne _0809011A
_08090118:
ldr r3, _08090128 @ =0x00004022
_0809011A:
adds r0, r3, #0
adds r1, r7, #0
movs r2, #1
bl SetTile
b _08090242
.align 2, 0
_08090128: .4byte 0x00004022
_0809012C:
ldr r1, _08090140 @ =0xFFFFBFDE
adds r0, r3, r1
cmp r0, #0xd
bls _08090136
b _08090242
_08090136:
lsls r0, r0, #2
ldr r1, _08090144 @ =_08090148
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08090140: .4byte 0xFFFFBFDE
_08090144: .4byte _08090148
_08090148: @ jump table
.4byte _08090242 @ case 0
.4byte _08090242 @ case 1
.4byte _080901EC @ case 2
.4byte _08090180 @ case 3
.4byte _08090242 @ case 4
.4byte _08090242 @ case 5
.4byte _08090242 @ case 6
.4byte _08090242 @ case 7
.4byte _08090242 @ case 8
.4byte _08090242 @ case 9
.4byte _08090210 @ case 10
.4byte _080901B4 @ case 11
.4byte _08090210 @ case 12
.4byte _080901B4 @ case 13
_08090180:
ldr r0, _080901A8 @ =0x00004024
cmp r5, r0
bne _08090194
ldr r3, _080901AC @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
_08090194:
ldr r0, _080901B0 @ =0x0000402C
cmp r5, r0
bne _08090238
ldr r3, _080901AC @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
b _08090234
.align 2, 0
_080901A8: .4byte 0x00004024
_080901AC: .4byte 0x00004022
_080901B0: .4byte 0x0000402C
_080901B4:
ldr r0, _080901DC @ =0x0000402C
cmp r5, r0
bne _080901C8
ldr r3, _080901E0 @ =0x0000402B
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
_080901C8:
ldr r0, _080901E4 @ =0x00004024
cmp r5, r0
bne _08090238
ldr r3, _080901E8 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
b _08090234
.align 2, 0
_080901DC: .4byte 0x0000402C
_080901E0: .4byte 0x0000402B
_080901E4: .4byte 0x00004024
_080901E8: .4byte 0x00004022
_080901EC:
ldr r0, _08090204 @ =0x00004025
cmp r5, r0
bne _08090200
ldr r3, _08090208 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
orrs r0, r1
strb r0, [r2]
_08090200:
ldr r0, _0809020C @ =0x0000402D
b _08090226
.align 2, 0
_08090204: .4byte 0x00004025
_08090208: .4byte 0x00004022
_0809020C: .4byte 0x0000402D
_08090210:
ldr r0, _08090244 @ =0x0000402D
cmp r5, r0
bne _08090224
ldr r3, _08090248 @ =0x0000402B
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
orrs r0, r1
strb r0, [r2]
_08090224:
ldr r0, _0809024C @ =0x00004025
_08090226:
cmp r5, r0
bne _08090238
ldr r3, _08090250 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
_08090234:
orrs r0, r1
strb r0, [r2]
_08090238:
adds r0, r3, #0
adds r1, r7, #0
movs r2, #1
bl SetTile
_08090242:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08090244: .4byte 0x0000402D
_08090248: .4byte 0x0000402B
_0809024C: .4byte 0x00004025
_08090250: .4byte 0x00004022
thumb_func_start sub_08090254
sub_08090254: @ 0x08090254
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x70
ldrh r1, [r1]
adds r5, r4, #0
adds r5, #0x38
ldrb r2, [r5]
bl sub_0807B9B8
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #1
bne _08090288
adds r0, r4, #0
adds r0, #0x76
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x72
ldrh r1, [r1]
ldrb r2, [r5]
bl sub_0807B9B8
_08090288:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0809028C
sub_0809028C: @ 0x0809028C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r6, r0, #0
adds r4, r6, #0
adds r4, #0x83
ldrb r0, [r4]
movs r2, #0x30
ands r2, r0
movs r0, #0
mov sb, r0
strb r2, [r4]
adds r0, r6, #0
adds r0, #0x70
ldrh r5, [r0]
adds r7, r5, #0
subs r7, #0x80
adds r0, #2
ldrh r3, [r0]
movs r0, #0x80
rsbs r0, r0, #0
adds r0, r0, r3
mov r8, r0
cmp r1, #1
bne _0809039A
movs r0, #0x20
ands r0, r2
cmp r0, #0
beq _080902D4
adds r1, r3, #0
subs r1, #0x7f
movs r0, #0
bl sub_08090480
b _080902FE
_080902D4:
mov r0, r8
movs r1, #2
bl GetTileType
adds r1, r0, #0
ldr r0, _080902EC @ =0x00000301
cmp r1, r0
beq _080902F0
adds r0, #7
cmp r1, r0
beq _080902F6
b _080902FE
.align 2, 0
_080902EC: .4byte 0x00000301
_080902F0:
ldrb r0, [r4]
movs r1, #8
b _080902FA
_080902F6:
ldrb r0, [r4]
movs r1, #2
_080902FA:
orrs r0, r1
strb r0, [r4]
_080902FE:
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x2a
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _0809031E
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_0809031E:
ldrb r1, [r4]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0809034E
subs r4, r7, #1
adds r0, r4, #0
movs r1, #1
bl GetTileType
movs r1, #0xc0
lsls r1, r1, #2
cmp r0, r1
bne _0809033C
b _08090478
_0809033C:
movs r0, #0
adds r1, r4, #0
bl sub_08090480
subs r1, r7, #2
movs r0, #2
bl sub_08090480
b _08090478
_0809034E:
subs r0, r7, #1
movs r1, #2
bl GetTileType
adds r1, r0, #0
movs r0, #0xc0
lsls r0, r0, #2
cmp r1, r0
beq _08090368
adds r0, #8
cmp r1, r0
beq _0809036E
b _08090376
_08090368:
ldrb r1, [r4]
movs r0, #4
b _08090372
_0809036E:
ldrb r1, [r4]
movs r0, #1
_08090372:
orrs r0, r1
strb r0, [r4]
_08090376:
ldrb r1, [r4]
movs r0, #0x15
ands r0, r1
cmp r0, #0
beq _08090478
movs r0, #0x2a
ands r0, r1
cmp r0, #0
bne _08090478
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #1
mov r1, r8
bl sub_08090480
b _08090478
_0809039A:
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _080903AE
adds r1, r5, #0
subs r1, #0x81
movs r0, #0
bl sub_08090480
b _080903DA
_080903AE:
adds r0, r7, #0
movs r1, #2
bl GetTileType
adds r1, r0, #0
ldr r0, _080903C8 @ =0x00000302
cmp r1, r0
beq _080903CC
adds r0, #4
cmp r1, r0
beq _080903D2
b _080903DA
.align 2, 0
_080903C8: .4byte 0x00000302
_080903CC:
ldrb r0, [r4]
movs r1, #4
b _080903D6
_080903D2:
ldrb r0, [r4]
movs r1, #1
_080903D6:
orrs r0, r1
strb r0, [r4]
_080903DA:
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x15
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _080903FA
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_080903FA:
ldrb r1, [r4]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0809042C
mov r4, r8
adds r4, #1
adds r0, r4, #0
movs r1, #1
bl GetTileType
movs r1, #0xc0
lsls r1, r1, #2
cmp r0, r1
beq _08090478
movs r0, #0
adds r1, r4, #0
bl sub_08090480
mov r1, r8
adds r1, #2
movs r0, #1
bl sub_08090480
b _08090478
_0809042C:
mov r0, r8
adds r0, #1
movs r1, #2
bl GetTileType
adds r1, r0, #0
movs r0, #0xc0
lsls r0, r0, #2
cmp r1, r0
beq _08090448
adds r0, #6
cmp r1, r0
beq _0809044E
b _08090456
_08090448:
ldrb r1, [r4]
movs r0, #8
b _08090452
_0809044E:
ldrb r1, [r4]
movs r0, #2
_08090452:
orrs r0, r1
strb r0, [r4]
_08090456:
ldrb r1, [r4]
movs r0, #0x2a
ands r0, r1
cmp r0, #0
beq _08090478
movs r0, #0x15
ands r0, r1
cmp r0, #0
bne _08090478
movs r0, #2
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_08090478:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08090480
sub_08090480: @ 0x08090480
push {lr}
ldr r2, _08090494 @ =gUnk_08121EF0
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
movs r2, #1
bl SetTile
pop {pc}
.align 2, 0
_08090494: .4byte gUnk_08121EF0
thumb_func_start sub_08090498
sub_08090498: @ 0x08090498
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x70
ldrh r0, [r0]
adds r4, r0, #0
subs r4, #0x80
adds r0, r4, #0
movs r1, #1
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x83
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080904D2
adds r0, r4, #0
movs r1, #2
bl GetTileType
ldr r1, _08090510 @ =0x00000306
cmp r0, r1
bne _080904D2
movs r0, #0x62
adds r1, r4, #0
movs r2, #1
bl sub_08000148
_080904D2:
adds r0, r5, #0
adds r0, #0x72
ldrh r0, [r0]
adds r4, r0, #0
subs r4, #0x80
adds r0, r4, #0
movs r1, #1
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x83
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0809050C
adds r0, r4, #0
movs r1, #2
bl GetTileType
movs r1, #0xc2
lsls r1, r1, #2
cmp r0, r1
bne _0809050C
movs r0, #0x63
adds r1, r4, #0
movs r2, #1
bl sub_08000148
_0809050C:
pop {r4, r5, pc}
.align 2, 0
_08090510: .4byte 0x00000306
thumb_func_start sub_08090514
sub_08090514: @ 0x08090514
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x50]
cmp r0, #0
beq _0809059E
ldrb r0, [r0, #0xd]
cmp r0, #1
beq _08090552
cmp r0, #1
bgt _0809052E
cmp r0, #0
beq _08090538
b _0809059E
_0809052E:
cmp r0, #2
beq _08090568
cmp r0, #3
beq _08090582
b _0809059E
_08090538:
ldrb r1, [r2, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x19]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
b _0809059A
_08090552:
ldrb r0, [r2, #0x19]
movs r1, #0xc0
orrs r0, r1
strb r0, [r2, #0x19]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
b _0809059A
_08090568:
ldrb r1, [r2, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x19]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
b _0809059A
_08090582:
ldrb r1, [r2, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x19]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
_0809059A:
orrs r0, r1
strb r0, [r2]
_0809059E:
pop {pc}