tmc/asm/code_08016DF8.s

1731 lines
27 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08017874
sub_08017874: @ 0x08017874
push {r4, r5, lr}
adds r4, r0, #0
adds r2, r1, #0
ldrb r0, [r4, #8]
cmp r0, #1
bne _080178C6
adds r0, r2, #0
adds r0, #0x44
ldrb r1, [r0]
ldr r0, _08017898 @ =gSave
adds r0, #0xb2
ldrb r0, [r0]
cmp r0, #0x2f
beq _0801789C
cmp r0, #0x30
beq _080178A8
b _080178AE
.align 2, 0
_08017898: .4byte gSave
_0801789C:
adds r0, r1, #0
cmp r1, #0
bge _080178A4
adds r0, r1, #3
_080178A4:
asrs r1, r0, #2
b _080178AE
_080178A8:
lsrs r0, r1, #0x1f
adds r0, r1, r0
asrs r1, r0, #1
_080178AE:
cmp r1, #0
bgt _080178B4
movs r1, #1
_080178B4:
rsbs r0, r1, #0
bl ModHealth
adds r5, r0, #0
adds r0, r4, #0
movs r1, #0x7a
bl sub_0800449C
b _08017928
_080178C6:
adds r0, r2, #0
adds r0, #0x44
ldrb r1, [r0]
ldrb r0, [r2, #8]
cmp r0, #8
bne _080178F6
ldr r0, _080178E4 @ =gSave
adds r0, #0xb2
ldrb r0, [r0]
cmp r0, #0x30
beq _080178E8
cmp r0, #0x31
beq _080178F4
b _080178F6
.align 2, 0
_080178E4: .4byte gSave
_080178E8:
lsls r0, r1, #1
adds r0, r0, r1
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r1, r0, #1
b _080178F6
_080178F4:
lsls r1, r1, #1
_080178F6:
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
subs r5, r0, r1
ldrb r0, [r4, #8]
cmp r0, #3
bne _08017928
adds r0, r4, #0
adds r0, #0x6d
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08017920
ldr r1, _0801791C @ =0x00000127
adds r0, r4, #0
bl sub_0800449C
b _08017928
.align 2, 0
_0801791C: .4byte 0x00000127
_08017920:
adds r0, r4, #0
movs r1, #0xfe
bl sub_0800449C
_08017928:
cmp r5, #0
ble _08017930
adds r0, r5, #0
b _0801793A
_08017930:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #0
_0801793A:
pop {r4, r5}
pop {r1}
bx r1
thumb_func_start sub_08017940
sub_08017940: @ 0x08017940
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r0, r4, #0
movs r1, #0x2c
movs r2, #0
bl CreateFx
adds r2, r0, #0
cmp r2, #0
beq _080179CC
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r3]
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r1, [r5, #0x48]
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
movs r3, #0x2e
ldrsh r1, [r4, r3]
adds r0, r0, r1
ldr r1, [r4, #0x48]
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r2, #0x2e]
movs r1, #0x32
ldrsh r0, [r5, r1]
ldr r1, [r5, #0x48]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
movs r3, #0x32
ldrsh r1, [r4, r3]
adds r0, r0, r1
ldr r1, [r4, #0x48]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r2, #0x32]
movs r1, #0x36
ldrsh r0, [r5, r1]
movs r3, #0x36
ldrsh r1, [r4, r3]
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r2, #0x36]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r2, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r2, #0
bl UpdateSpriteForCollisionLayer
_080179CC:
movs r1, #0
ldr r0, _080179E8 @ =gPlayerEntity
cmp r5, r0
beq _080179DA
cmp r4, r0
bne _080179E0
adds r0, r4, #0
_080179DA:
adds r0, #0x42
ldrb r0, [r0]
lsrs r1, r0, #3
_080179E0:
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080179E8: .4byte gPlayerEntity
thumb_func_start sub_080179EC
sub_080179EC: @ 0x080179EC
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
ldr r4, _08017A8C @ =gUnk_080B3740
bl Random
movs r1, #3
ands r1, r0
adds r1, r1, r4
ldrb r1, [r1]
adds r0, r5, #0
movs r2, #0
bl CreateFx
adds r4, r0, #0
cmp r4, #0
beq _08017A84
ldr r0, [r5, #0x48]
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #2
orrs r0, r1
strb r0, [r2]
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r1, [r6, #0x48]
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r2, [r5, #0x48]
ldrb r2, [r2]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
subs r0, r0, r1
asrs r0, r0, #1
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
movs r1, #0x32
ldrsh r0, [r6, r1]
ldr r1, [r6, #0x48]
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r5, r2]
ldr r2, [r5, #0x48]
ldrb r2, [r2, #1]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
subs r0, r0, r1
asrs r0, r0, #1
adds r1, r4, #0
adds r1, #0x63
strb r0, [r1]
str r5, [r4, #0x54]
_08017A84:
pop {r4, r5, r6}
pop {r0}
bx r0
.align 2, 0
_08017A8C: .4byte gUnk_080B3740
thumb_func_start sub_08017A90
sub_08017A90: @ 0x08017A90
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r0, #0x99
movs r1, #0
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
bne _08017AAA
movs r0, #0
b _08017AD0
_08017AAA:
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
movs r1, #3
ands r0, r1
strb r0, [r2, #0x14]
ldrh r0, [r4, #0x2e]
ldrh r1, [r5, #0x2e]
subs r0, r0, r1
adds r1, r2, #0
adds r1, #0x62
strb r0, [r1]
ldrh r0, [r4, #0x32]
ldrh r1, [r5, #0x32]
subs r0, r0, r1
adds r1, r2, #0
adds r1, #0x63
strb r0, [r1]
str r5, [r2, #0x50]
adds r0, r2, #0
_08017AD0:
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_start sub_08017AD8
sub_08017AD8: @ 0x08017AD8
movs r0, #0
bx lr
thumb_func_start sub_08017ADC
sub_08017ADC: @ 0x08017ADC
push {r4, lr}
adds r4, r1, #0
ldrb r2, [r4, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r4, #0x10]
adds r0, #0x40
ldrb r1, [r0]
movs r0, #0x80
adds r2, r4, #0
adds r2, #0x41
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4, #0xa]
subs r0, #0x5f
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _08017B14
adds r0, r4, #0
bl sub_08081420
cmp r0, #0
beq _08017B14
adds r1, r4, #0
adds r1, #0x45
movs r0, #0
strb r0, [r1]
_08017B14:
movs r0, #2
pop {r4}
pop {r1}
bx r1
thumb_func_start sub_08017B1C
sub_08017B1C: @ 0x08017B1C
push {lr}
adds r2, r0, #0
adds r3, r1, #0
ldr r0, _08017B38 @ =gPlayerState
ldrb r1, [r0, #0x1e]
movs r0, #0x60
ands r0, r1
cmp r0, #0
beq _08017B3C
ldrb r1, [r3, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r3, #0x10]
b _08017B52
.align 2, 0
_08017B38: .4byte gPlayerState
_08017B3C:
adds r1, r2, #0
adds r1, #0x42
movs r0, #0x10
strb r0, [r1]
subs r1, #5
movs r0, #0xec
strb r0, [r1]
adds r1, #9
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r1]
_08017B52:
movs r0, #1
pop {r1}
bx r1
thumb_func_start sub_08017B58
sub_08017B58: @ 0x08017B58
push {lr}
adds r2, r1, #0
adds r3, r2, #0
adds r3, #0x3a
ldrb r1, [r3]
movs r0, #4
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
beq _08017B98
ldrb r1, [r2, #0x1d]
cmp r1, #0
beq _08017BA2
ldr r0, _08017B94 @ =gPlayerState
ldrb r0, [r0, #0x1d]
subs r0, r1, r0
movs r1, #0
strb r0, [r2, #0x1d]
lsls r0, r0, #0x18
cmp r0, #0
bgt _08017BA2
strb r1, [r2, #0x1d]
movs r0, #2
strb r0, [r2, #0xd]
adds r0, r2, #0
adds r0, #0x46
strh r1, [r0]
b _08017BA2
.align 2, 0
_08017B94: .4byte gPlayerState
_08017B98:
strb r0, [r2, #0xd]
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
strb r0, [r3]
_08017BA2:
adds r1, r2, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017BB4
movs r0, #0xff
strb r0, [r1]
_08017BB4:
movs r0, #1
pop {r1}
bx r1
.align 2, 0
thumb_func_start sub_08017BBC
sub_08017BBC: @ 0x08017BBC
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r6, r1, #0
adds r7, r2, #0
ldr r5, _08017C38 @ =gPlayerState
ldr r0, [r5, #0x30]
ldr r1, _08017C3C @ =0x00001481
ands r0, r1
cmp r0, #0
bne _08017BF2
movs r0, #0x42
movs r1, #1
movs r2, #0
bl CreateObject
cmp r0, #0
beq _08017BF2
str r4, [r0, #0x54]
ldr r0, [r5, #0x30]
movs r1, #0x80
lsls r1, r1, #3
orrs r0, r1
str r0, [r5, #0x30]
movs r0, #0x10
eors r0, r7
lsrs r0, r0, #2
strb r0, [r4, #0x14]
_08017BF2:
adds r1, r6, #0
adds r1, #0x44
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
adds r1, r6, #0
bl sub_08017874
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
subs r1, #3
movs r0, #0xc
strb r0, [r1]
subs r1, #5
movs r0, #0x1e
strb r0, [r1]
adds r1, #9
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
adds r1, r6, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017C2E
movs r0, #0xff
strb r0, [r1]
_08017C2E:
movs r0, #1
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_08017C38: .4byte gPlayerState
_08017C3C: .4byte 0x00001481
thumb_func_start sub_08017C40
sub_08017C40: @ 0x08017C40
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r6, _08017CB4 @ =gPlayerState
ldr r0, [r6, #0x30]
ldr r1, _08017CB8 @ =0x00001881
ands r0, r1
cmp r0, #0
bne _08017C82
ldrb r0, [r6, #0xc]
cmp r0, #0
bne _08017C82
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _08017C62
cmp r0, #0x18
bne _08017C82
_08017C62:
adds r1, r5, #0
adds r1, #0x44
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
adds r1, r5, #0
bl sub_08017874
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #4
str r0, [r6, #0x30]
movs r0, #0xd
strb r0, [r6, #0xc]
_08017C82:
adds r1, r4, #0
adds r1, #0x42
movs r0, #0xc
strb r0, [r1]
subs r1, #5
movs r0, #0x10
strb r0, [r1]
adds r1, #9
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r1]
adds r1, r5, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017CAA
movs r0, #0xff
strb r0, [r1]
_08017CAA:
movs r0, #1
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08017CB4: .4byte gPlayerState
_08017CB8: .4byte 0x00001881
thumb_func_start sub_08017CBC
sub_08017CBC: @ 0x08017CBC
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r1, #0
movs r5, #0x10
eors r2, r5
adds r0, r2, #0
subs r0, #0xc
movs r2, #0x1f
ands r0, r2
ldrb r1, [r3, #0x15]
subs r1, r1, r0
ands r1, r2
cmp r1, #0x18
bhi _08017CF0
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0xf4
strb r0, [r1]
adds r1, r3, #0
adds r1, #0x3d
strb r0, [r1]
adds r0, r4, #0
adds r1, r3, #0
bl sub_08017940
b _08017D1E
_08017CF0:
adds r1, r3, #0
adds r1, #0x42
movs r0, #0xc
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x3d
strb r5, [r0]
adds r1, #1
movs r0, #0xf0
strb r0, [r1]
adds r1, #3
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r1]
adds r1, r4, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017D1E
movs r0, #0xff
strb r0, [r1]
_08017D1E:
movs r0, #1
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
thumb_func_start sub_08017D28
sub_08017D28: @ 0x08017D28
push {lr}
adds r3, r0, #0
ldr r2, _08017D68 @ =gPlayerState
movs r0, #1
strb r0, [r2, #0x1a]
adds r2, r3, #0
adds r2, #0x7a
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r2]
subs r2, #0x38
movs r0, #0xc
strb r0, [r2]
subs r2, #5
movs r0, #0x10
strb r0, [r2]
adds r2, #9
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r2]
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017D60
movs r0, #0xff
strb r0, [r1]
_08017D60:
movs r0, #1
pop {r1}
bx r1
.align 2, 0
_08017D68: .4byte gPlayerState
thumb_func_start sub_08017D6C
sub_08017D6C: @ 0x08017D6C
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
movs r0, #0x10
eors r0, r6
subs r0, #5
movs r2, #0x1f
ands r0, r2
ldrb r1, [r4, #0x14]
lsls r1, r1, #3
subs r1, r1, r0
ands r1, r2
cmp r1, #0xa
bls _08017D98
adds r0, r5, #0
adds r0, #0x40
ldrb r0, [r0]
ldr r1, _08017D94 @ =0x00000AC2
b _08017DB0
.align 2, 0
_08017D94: .4byte 0x00000AC2
_08017D98:
adds r1, r4, #0
adds r1, #0x41
movs r0, #0xcb
strb r0, [r1]
adds r1, r5, #0
adds r1, #0x40
ldrb r0, [r1]
adds r2, r4, #0
adds r2, #0x79
strb r0, [r2]
ldrb r0, [r1]
ldr r1, _08017DCC @ =0x00000AE4
_08017DB0:
adds r0, r0, r1
lsls r3, r0, #1
adds r3, r3, r0
lsls r3, r3, #2
ldr r0, _08017DD0 @ =gUnk_080B7B74
adds r3, r3, r0
adds r0, r5, #0
adds r1, r4, #0
adds r2, r6, #0
bl sub_08018308
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08017DCC: .4byte 0x00000AE4
_08017DD0: .4byte gUnk_080B7B74
thumb_func_start sub_08017DD4
sub_08017DD4: @ 0x08017DD4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
adds r5, r1, #0
adds r7, r2, #0
mov r1, r8
adds r1, #0x41
movs r0, #0
strb r0, [r1]
adds r1, r5, #0
adds r1, #0x44
ldrb r2, [r1]
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08017DFC
movs r0, #0x7f
ands r0, r2
b _08017DFE
_08017DFC:
movs r0, #4
_08017DFE:
strb r0, [r1]
ldr r4, _08017E34 @ =gPlayerEntity
adds r0, r4, #0
adds r1, r5, #0
bl sub_08017874
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
adds r2, r5, #0
adds r2, #0x3d
movs r0, #0xf4
strb r0, [r2]
ldr r0, _08017E38 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
adds r6, r2, #0
cmp r0, #0
bne _08017E3C
bl sub_08079D84
mov r1, r8
adds r1, #0x3d
movs r0, #0x5a
strb r0, [r1]
b _08017E6E
.align 2, 0
_08017E34: .4byte gPlayerEntity
_08017E38: .4byte gPlayerState
_08017E3C:
adds r0, r5, #0
adds r0, #0x40
ldrb r0, [r0]
movs r1, #0x80
orrs r0, r1
adds r1, r4, #0
adds r1, #0x41
strb r0, [r1]
subs r1, #4
movs r0, #0xc
strb r0, [r1]
adds r2, r4, #0
adds r2, #0x42
movs r1, #0x10
movs r0, #0x10
strb r0, [r2]
eors r7, r1
adds r0, r4, #0
adds r0, #0x3e
strb r7, [r0]
adds r1, r4, #0
adds r1, #0x46
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r1]
_08017E6E:
ldrb r1, [r6]
movs r0, #0
ldrsb r0, [r6, r0]
cmp r0, #0
bne _08017E7C
movs r0, #0xff
strb r0, [r6]
_08017E7C:
movs r0, #1
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_start sub_08017E88
sub_08017E88: @ 0x08017E88
push {lr}
adds r3, r0, #0
adds r3, #0x42
movs r2, #2
strb r2, [r3]
adds r0, #0x46
movs r2, #0xa0
lsls r2, r2, #2
strh r2, [r0]
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017EAA
movs r0, #0xff
strb r0, [r1]
_08017EAA:
movs r0, #1
pop {r1}
bx r1
thumb_func_start sub_08017EB0
sub_08017EB0: @ 0x08017EB0
push {r4, r5, r6, r7, lr}
adds r2, r0, #0
adds r7, r1, #0
adds r5, r7, #0
adds r5, #0x44
ldrb r0, [r5]
cmp r0, #0
bne _08017EC4
movs r0, #0
b _08017F36
_08017EC4:
ldr r6, _08017EF8 @ =gPlayerEntity
cmp r2, r6
bne _08017EFC
ldrb r4, [r5]
movs r0, #8
strb r0, [r5]
adds r0, r6, #0
adds r1, r7, #0
bl sub_08017874
adds r1, r6, #0
adds r1, #0x45
strb r0, [r1]
strb r4, [r5]
subs r1, #3
movs r0, #0xc
strb r0, [r1]
subs r1, #5
movs r0, #0x10
strb r0, [r1]
adds r1, #9
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
b _08017F22
.align 2, 0
_08017EF8: .4byte gPlayerEntity
_08017EFC:
ldrh r1, [r2, #8]
movs r0, #0xa1
lsls r0, r0, #3
cmp r1, r0
bne _08017F22
adds r1, r2, #0
adds r1, #0x42
movs r0, #8
strb r0, [r1]
subs r1, #5
movs r0, #0xfa
strb r0, [r1]
adds r1, #9
adds r0, #0x86
strh r0, [r1]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0x80
strb r0, [r1]
_08017F22:
adds r1, r7, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08017F34
movs r0, #0xff
strb r0, [r1]
_08017F34:
movs r0, #1
_08017F36:
pop {r4, r5, r6, r7}
pop {r1}
bx r1
thumb_func_start sub_08017F3C
sub_08017F3C: @ 0x08017F3C
movs r0, #1
bx lr
thumb_func_start sub_08017F40
sub_08017F40: @ 0x08017F40
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r0, r5, #0
adds r0, #0x43
ldrb r6, [r0]
cmp r6, #0
bne _0801800A
ldr r0, _08017FAC @ =gPlayerEntity
cmp r4, r0
bne _08018002
bl sub_08079F8C
cmp r0, #0
beq _0801801E
ldr r2, _08017FB0 @ =gPlayerState
ldr r3, [r2, #0x30]
.ifdef EU
movs r0, #0x81
.else
movs r0, #0x80
.endif
ands r0, r3
cmp r0, #0
bne _0801801E
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _0801801E
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r1, r0
strb r1, [r2, #0x1a]
ldrb r1, [r2, #0xa]
orrs r0, r1
strb r0, [r2, #0xa]
movs r0, #0x10
orrs r3, r0
str r3, [r2, #0x30]
strb r6, [r2, #2]
ldrb r0, [r5, #8]
cmp r0, #3
bne _08017FB4
ldrb r0, [r5, #9]
cmp r0, #0x4e
beq _08017F9A
cmp r0, #0x50
bne _08017FB4
_08017F9A:
strh r6, [r4, #0x36]
movs r3, #0x80
lsls r3, r3, #9
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0
bl PositionRelative
b _08017FC2
.align 2, 0
_08017FAC: .4byte gPlayerEntity
_08017FB0: .4byte gPlayerState
_08017FB4:
movs r3, #0x80
lsls r3, r3, #9
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
_08017FC2:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r2, [r5, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r5, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x1b]
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0xff
strb r0, [r1]
adds r1, r5, #0
adds r1, #0x3d
movs r0, #0xf8
strb r0, [r1]
bl ResetPlayer
movs r0, #1
b _08018020
_08018002:
adds r0, r4, #0
adds r0, #0x45
strb r6, [r0]
b _0801801E
_0801800A:
ldrb r0, [r5, #8]
cmp r0, #3
bne _0801801E
ldr r0, _08018028 @ =gPlayerEntity
cmp r4, r0
bne _0801801E
adds r0, r5, #0
adds r1, r4, #0
bl sub_08004484
_0801801E:
movs r0, #0
_08018020:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08018028: .4byte gPlayerEntity
thumb_func_start sub_0801802C
sub_0801802C: @ 0x0801802C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r1, #0
adds r6, r2, #0
ldrb r0, [r4, #8]
cmp r0, #1
bne _08018058
bl sub_08079F8C
cmp r0, #0
beq _08018090
movs r0, #0x10
eors r0, r6
ldrb r1, [r5, #0x14]
lsls r1, r1, #2
subs r0, r0, r1
adds r0, #5
movs r1, #0x1f
ands r0, r1
cmp r0, #0xa
bhi _08018090
b _0801807A
_08018058:
cmp r0, #8
bne _08018086
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r1, r0
ldrb r0, [r5, #0x14]
lsls r0, r0, #2
subs r1, r1, r0
adds r1, #5
movs r0, #0x1f
ands r1, r0
cmp r1, #0xa
bgt _08018090
adds r1, r4, #0
adds r1, #0x45
movs r0, #0
strb r0, [r1]
_0801807A:
adds r0, r4, #0
adds r1, r5, #0
bl sub_080180BC
movs r0, #1
b _080180AE
_08018086:
adds r1, r4, #0
adds r1, #0x45
movs r0, #0
strb r0, [r1]
b _080180AE
_08018090:
adds r0, r4, #0
adds r0, #0x40
ldrb r0, [r0]
ldr r1, _080180B4 @ =0x000011AA
adds r0, r0, r1
lsls r3, r0, #1
adds r3, r3, r0
lsls r3, r3, #2
ldr r0, _080180B8 @ =gUnk_080B7B74
adds r3, r3, r0
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl sub_08018308
_080180AE:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_080180B4: .4byte 0x000011AA
_080180B8: .4byte gUnk_080B7B74
thumb_func_start sub_080180BC
sub_080180BC: @ 0x080180BC
push {lr}
adds r2, r0, #0
adds r2, #0x3d
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
bne _080180CE
movs r0, #0xe2
strb r0, [r2]
_080180CE:
adds r2, r1, #0
adds r2, #0x3d
ldrb r3, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
bne _080180E0
movs r0, #0xff
strb r0, [r2]
_080180E0:
movs r0, #0xff
strb r0, [r1, #0xd]
pop {r0}
bx r0
thumb_func_start sub_080180E8
sub_080180E8: @ 0x080180E8
push {r4, lr}
mov ip, r0
adds r4, r1, #0
movs r0, #0x10
eors r0, r2
adds r2, r0, #0
subs r2, #0xc
movs r1, #0x1f
ands r2, r1
ldrb r0, [r4, #0x15]
subs r0, r0, r2
ands r0, r1
cmp r0, #0x18
bls _0801812C
mov r0, ip
adds r0, #0x40
ldrb r0, [r0]
ldr r1, _08018124 @ =0x00000352
adds r0, r0, r1
lsls r3, r0, #1
adds r3, r3, r0
lsls r3, r3, #2
ldr r0, _08018128 @ =gUnk_080B7B74
adds r3, r3, r0
mov r0, ip
adds r1, r4, #0
bl sub_08018308
b _08018162
.align 2, 0
_08018124: .4byte 0x00000352
_08018128: .4byte gUnk_080B7B74
_0801812C:
mov r0, ip
adds r0, #0x42
movs r2, #0xc
strb r2, [r0]
subs r0, #5
movs r1, #0xf0
strb r1, [r0]
mov r3, ip
adds r3, #0x46
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r3]
adds r0, r4, #0
adds r0, #0x42
strb r2, [r0]
subs r0, #5
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x46
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r1]
mov r0, ip
adds r1, r4, #0
bl sub_08017940
movs r0, #1
_08018162:
pop {r4}
pop {r1}
bx r1
thumb_func_start sub_08018168
sub_08018168: @ 0x08018168
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r1, #0
adds r0, r6, #0
adds r0, #0x43
ldrb r5, [r0]
cmp r5, #0
bne _08018208
ldr r0, _080181F4 @ =gPlayerEntity
cmp r4, r0
bne _08018200
bl sub_08079F8C
cmp r0, #0
beq _0801821C
ldr r2, _080181F8 @ =gPlayerState
ldr r3, [r2, #0x30]
.ifdef EU
movs r0, #0x81
.else
ldr r0, _080181FC @ =0x00040080
.endif
ands r0, r3
cmp r0, #0
bne _0801821C
adds r0, r2, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _0801821C
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r1, r0
strb r1, [r2, #0x1a]
ldrb r1, [r2, #0xa]
orrs r0, r1
strb r0, [r2, #0xa]
movs r0, #0x80
lsls r0, r0, #1
orrs r3, r0
str r3, [r2, #0x30]
strb r5, [r2, #2]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r2, [r6, #0x19]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r6, #0x1b]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r4, #0x1b]
ands r1, r2
orrs r1, r0
strb r1, [r4, #0x1b]
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0xff
strb r0, [r1]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0xf8
strb r0, [r1]
bl sub_08077B20
movs r0, #1
b _0801821E
.align 2, 0
_080181F4: .4byte gPlayerEntity
_080181F8: .4byte gPlayerState
.ifndef EU
_080181FC: .4byte 0x00040080
.endif
_08018200:
adds r0, r4, #0
adds r0, #0x45
strb r5, [r0]
b _0801821C
_08018208:
ldrb r0, [r6, #8]
cmp r0, #3
bne _0801821C
ldr r0, _08018224 @ =gPlayerEntity
cmp r4, r0
bne _0801821C
adds r0, r6, #0
adds r1, r4, #0
bl sub_08004484
_0801821C:
movs r0, #0
_0801821E:
pop {r4, r5, r6}
pop {r1}
bx r1
.align 2, 0
_08018224: .4byte gPlayerEntity
thumb_func_start sub_08018228
sub_08018228: @ 0x08018228
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldr r0, _0801824C @ =gPlayerEntity
cmp r4, r0
bne _08018244
bl sub_08079F8C
cmp r0, #0
beq _08018244
adds r0, r5, #0
adds r1, r4, #0
bl sub_08004484
_08018244:
movs r0, #0
pop {r4, r5}
pop {r1}
bx r1
.align 2, 0
_0801824C: .4byte gPlayerEntity
thumb_func_start sub_08018250
sub_08018250: @ 0x08018250
push {r4, lr}
adds r3, r0, #0
adds r2, r3, #0
adds r2, #0x3d
movs r0, #1
rsbs r0, r0, #0
adds r4, r0, #0
movs r0, #0xff
strb r0, [r2]
ldrb r0, [r3, #0x15]
cmp r0, #0
bne _08018278
adds r2, r1, #0
adds r2, #0x3d
movs r0, #0x10
strb r0, [r2]
adds r0, r3, #0
bl sub_08017A90
b _08018280
_08018278:
adds r1, #0x3d
ldrb r0, [r1]
orrs r0, r4
strb r0, [r1]
_08018280:
movs r0, #1
pop {r4}
pop {r1}
bx r1
thumb_func_start sub_08018288
sub_08018288: @ 0x08018288
push {lr}
adds r1, r0, #0
ldr r0, _08018298 @ =gPlayerEntity
cmp r1, r0
bne _0801829C
bl sub_0807AFE8
b _080182A2
.align 2, 0
_08018298: .4byte gPlayerEntity
_0801829C:
adds r1, #0x45
movs r0, #0
strb r0, [r1]
_080182A2:
movs r0, #1
pop {r1}
bx r1
thumb_func_start sub_080182A8
sub_080182A8: @ 0x080182A8
push {r4, lr}
adds r4, r0, #0
adds r0, r1, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
bne _080182DA
adds r2, r4, #0
adds r2, #0x3d
ldrb r3, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
bne _080182C8
movs r0, #0xff
strb r0, [r2]
_080182C8:
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08018300
movs r0, #0xff
strb r0, [r1]
b _08018300
_080182DA:
adds r0, r4, #0
adds r0, #0x40
ldrb r0, [r0]
ldr r3, _080182F8 @ =0x0000092A
adds r0, r0, r3
lsls r3, r0, #1
adds r3, r3, r0
lsls r3, r3, #2
ldr r0, _080182FC @ =gUnk_080B7B74
adds r3, r3, r0
adds r0, r4, #0
bl sub_08018308
b _08018302
.align 2, 0
_080182F8: .4byte 0x0000092A
_080182FC: .4byte gUnk_080B7B74
_08018300:
movs r0, #1
_08018302:
pop {r4}
pop {r1}
bx r1
thumb_func_start sub_08018308
sub_08018308: @ 0x08018308
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
adds r4, r1, #0
mov r8, r2
adds r5, r3, #0
movs r3, #0
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08018338
ldrb r0, [r4, #8]
cmp r0, #3
bne _08018338
ldr r0, _0801835C @ =gPlayerEntity
cmp r6, r0
bne _08018338
adds r0, r4, #0
adds r1, r6, #0
bl sub_08004484
movs r3, #1
_08018338:
ldrh r1, [r6, #8]
movs r0, #0xa1
lsls r0, r0, #3
cmp r1, r0
bne _08018360
ldr r0, _0801835C @ =gPlayerEntity
ldrb r2, [r0, #0x14]
mov r0, r8
adds r0, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #2
movs r1, #4
eors r0, r1
cmp r2, r0
bne _08018360
movs r0, #0
b _080184F0
.align 2, 0
_0801835C: .4byte gPlayerEntity
_08018360:
cmp r3, #0
bne _08018408
ldrb r0, [r5]
lsls r0, r0, #4
adds r1, r6, #0
adds r1, #0x46
strh r0, [r1]
ldrb r1, [r5, #1]
adds r2, r6, #0
adds r2, #0x3d
strb r1, [r2]
lsls r0, r1, #0x18
cmp r0, #0
bne _08018382
movs r0, #0xff
orrs r0, r1
strb r0, [r2]
_08018382:
ldrb r0, [r5, #2]
adds r1, r6, #0
adds r1, #0x42
strb r0, [r1]
ldrb r1, [r5, #3]
adds r0, r4, #0
adds r0, #0x44
strb r1, [r0]
movs r7, #0xff
ldrb r0, [r5, #3]
cmp r0, #0
beq _080183A8
adds r0, r6, #0
adds r1, r4, #0
bl sub_08017874
adds r1, r6, #0
adds r1, #0x45
strb r0, [r1]
_080183A8:
adds r1, r6, #0
adds r1, #0x43
ldrb r0, [r5, #4]
ldrb r2, [r1]
cmp r0, r2
bls _080183B6
strb r0, [r1]
_080183B6:
ldrb r0, [r5, #5]
lsls r0, r0, #4
adds r1, r4, #0
adds r1, #0x46
strh r0, [r1]
ldrb r1, [r5, #6]
adds r2, r4, #0
adds r2, #0x3d
strb r1, [r2]
movs r0, #6
ldrsb r0, [r5, r0]
cmp r0, #0
bne _080183D6
movs r0, #0xff
orrs r0, r1
strb r0, [r2]
_080183D6:
ldrb r0, [r5, #7]
adds r1, r4, #0
adds r1, #0x42
strb r0, [r1]
ldrb r1, [r5, #8]
adds r0, r6, #0
adds r0, #0x44
strb r1, [r0]
ands r7, r1
cmp r7, #0
beq _080183FA
adds r0, r4, #0
adds r1, r6, #0
bl sub_08017874
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
_080183FA:
adds r1, r4, #0
adds r1, #0x43
ldrb r0, [r5, #9]
ldrb r2, [r1]
cmp r0, r2
bls _08018408
strb r0, [r1]
_08018408:
ldrb r1, [r5, #0xa]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0801841A
adds r0, r6, #0
adds r1, r4, #0
bl sub_08017940
_0801841A:
ldrb r2, [r5, #0xa]
movs r0, #2
ands r0, r2
cmp r0, #0
beq _0801842C
adds r1, r6, #0
adds r1, #0x41
movs r0, #0xca
strb r0, [r1]
_0801842C:
movs r0, #4
ands r0, r2
cmp r0, #0
beq _0801847E
ldr r2, [r4, #0x50]
cmp r2, #0
beq _0801847E
adds r1, r2, #0
adds r1, #0x41
movs r0, #0xcc
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3d
ldrb r0, [r0]
subs r1, #4
strb r0, [r1]
adds r0, r2, #0
adds r0, #0x3e
mov r1, r8
strb r1, [r0]
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
adds r1, r2, #0
adds r1, #0x42
strb r0, [r1]
adds r1, #1
ldrb r0, [r1]
cmp r0, #0
bne _08018470
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
strb r0, [r1]
_08018470:
adds r0, r4, #0
adds r0, #0x46
ldrh r0, [r0]
adds r1, r2, #0
adds r1, #0x46
strh r0, [r1]
str r6, [r2, #0x4c]
_0801847E:
ldrb r1, [r6, #8]
cmp r1, #8
bne _080184DA
ldrb r0, [r6, #9]
cmp r0, #1
bne _0801849A
ldrb r0, [r5, #8]
cmp r0, #0
beq _080184DA
adds r0, r6, #0
adds r1, r4, #0
bl sub_080179EC
b _080184DA
_0801849A:
cmp r0, #4
bne _080184BA
adds r0, r6, #0
adds r0, #0x44
ldrb r0, [r0]
cmp r0, #0
bne _080184B0
ldrb r0, [r5, #0xa]
ands r1, r0
cmp r1, #0
beq _080184DA
_080184B0:
adds r0, r6, #0
adds r1, r4, #0
bl sub_08017A90
b _080184DA
_080184BA:
cmp r0, #3
bne _080184CE
ldrb r0, [r5, #9]
cmp r0, #0
beq _080184DA
adds r0, r4, #0
movs r1, #0xfe
bl sub_0800449C
b _080184DA
_080184CE:
cmp r0, #5
bne _080184DA
ldr r0, _080184FC @ =gPlayerEntity
adds r0, #0x3d
movs r1, #0x80
strb r1, [r0]
_080184DA:
ldrb r0, [r4, #8]
cmp r0, #8
bne _080184EE
ldrb r0, [r6, #9]
cmp r0, #5
bne _080184EE
ldr r0, _080184FC @ =gPlayerEntity
adds r0, #0x3d
movs r1, #0x80
strb r1, [r0]
_080184EE:
movs r0, #1
_080184F0:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r1}
bx r1
.align 2, 0
_080184FC: .4byte gPlayerEntity