tmc/asm/darkNut.s

1550 lines
25 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start DarkNut
DarkNut: @ 0x08020B80
push {r4, lr}
adds r4, r0, #0
ldr r1, _08020B9C @ =gUnk_080CAA98
bl EnemyFunctionHandler
movs r3, #0x16
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl SetChildOffset
pop {r4, pc}
.align 2, 0
_08020B9C: .4byte gUnk_080CAA98
thumb_func_start sub_08020BA0
sub_08020BA0: @ 0x08020BA0
push {lr}
ldr r2, _08020BB4 @ =gUnk_080CAAB0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08020BB4: .4byte gUnk_080CAAB0
thumb_func_start sub_08020BB8
sub_08020BB8: @ 0x08020BB8
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r0, [r0]
movs r2, #0x7f
adds r1, r2, #0
ands r1, r0
cmp r1, #0x1c
beq _08020BE0
cmp r1, #0x1c
bgt _08020BD4
cmp r1, #0x16
beq _08020C24
b _08020D32
_08020BD4:
cmp r1, #0x4b
beq _08020C68
cmp r1, #0x4c
bne _08020BDE
b _08020CF0
_08020BDE:
b _08020D32
_08020BE0:
movs r0, #0xb
strb r0, [r4, #0xc]
ldr r1, _08020C20 @ =gUnk_080CAB0C
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x51
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
movs r2, #0x10
eors r2, r0
adds r2, #4
movs r0, #0x18
ands r2, r0
asrs r2, r2, #3
adds r0, r4, #0
movs r1, #8
bl sub_08021218
adds r0, r4, #0
bl sub_08021588
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
b _08020CE2
.align 2, 0
_08020C20: .4byte gUnk_080CAB0C
_08020C24:
movs r0, #0xb
strb r0, [r4, #0xc]
ldr r1, _08020C64 @ =gUnk_080CAB10
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x51
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
movs r2, #0x10
eors r2, r0
adds r2, #4
movs r0, #0x18
ands r2, r0
asrs r2, r2, #3
adds r0, r4, #0
movs r1, #8
bl sub_08021218
adds r0, r4, #0
bl sub_08021588
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
b _08020CE2
.align 2, 0
_08020C64: .4byte gUnk_080CAB10
_08020C68:
ldrb r0, [r4, #0xc]
adds r6, r4, #0
adds r6, #0x45
adds r5, r4, #0
adds r5, #0x78
cmp r0, #0xd
beq _08020D58
cmp r0, #0xf
beq _08020D58
cmp r0, #0x13
beq _08020D58
cmp r0, #0x12
beq _08020D58
adds r0, r4, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #4
blt _08020CC0
cmp r0, #6
ble _08020CAC
cmp r0, #0xc
bgt _08020CC0
cmp r0, #8
blt _08020CC0
ldr r0, _08020CA8 @ =gUnk_080CAB04
ldrb r1, [r4, #0xa]
adds r1, r1, r0
ldrb r0, [r1]
adds r1, r4, #0
adds r1, #0x7a
b _08020CC6
.align 2, 0
_08020CA8: .4byte gUnk_080CAB04
_08020CAC:
ldr r0, _08020CBC @ =gUnk_080CAB00
ldrb r1, [r4, #0xa]
adds r1, r1, r0
ldrb r0, [r1]
adds r1, r4, #0
adds r1, #0x7a
b _08020CC6
.align 2, 0
_08020CBC: .4byte gUnk_080CAB00
_08020CC0:
adds r1, r4, #0
adds r1, #0x7a
movs r0, #0
_08020CC6:
strb r0, [r1]
movs r0, #0xa
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x14]
adds r0, r4, #0
movs r1, #0xb
bl sub_08021218
ldr r0, _08020CEC @ =0x0000015D
bl sub_08004488
adds r0, r4, #0
bl sub_08021588
_08020CE2:
adds r6, r4, #0
adds r6, #0x45
adds r5, r4, #0
adds r5, #0x78
b _08020D58
.align 2, 0
_08020CEC: .4byte 0x0000015D
_08020CF0:
ldrb r0, [r4, #0xc]
adds r6, r4, #0
adds r6, #0x45
adds r5, r4, #0
adds r5, #0x78
cmp r0, #0xf
bne _08020D58
movs r1, #0xff
ldr r0, [r4, #0x54]
cmp r0, #0
beq _08020D0E
adds r0, #0x41
ldrb r0, [r0]
adds r1, r2, #0
ands r1, r0
_08020D0E:
cmp r1, #2
bne _08020D28
ldr r0, _08020D24 @ =gUnk_080CAB08
ldrb r1, [r4, #0xa]
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl sub_080213D0
b _08020D58
.align 2, 0
_08020D24: .4byte gUnk_080CAB08
_08020D28:
adds r0, r4, #0
movs r1, #0
bl sub_080213D0
b _08020D58
_08020D32:
adds r2, r4, #0
adds r2, #0x45
adds r0, r4, #0
adds r0, #0x78
ldrb r1, [r2]
adds r6, r2, #0
adds r5, r0, #0
ldrb r0, [r5]
cmp r1, r0
beq _08020D58
adds r0, r4, #0
bl sub_08021588
adds r0, r4, #0
bl sub_08021390
adds r0, r4, #0
bl sub_0804AA1C
_08020D58:
ldrb r0, [r6]
strb r0, [r5]
ldr r1, _08020D68 @ =gUnk_080CAA98
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_08020D68: .4byte gUnk_080CAA98
thumb_func_start nullsub_129
nullsub_129: @ 0x08020D6C
bx lr
.align 2, 0
thumb_func_start sub_08020D70
sub_08020D70: @ 0x08020D70
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x75
strb r1, [r0]
subs r0, #0x30
ldrb r1, [r0]
adds r0, #0x33
strb r1, [r0]
movs r0, #0xff
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #0
movs r2, #2
bl sub_08021218
pop {r4, pc}
thumb_func_start sub_08020D9C
sub_08020D9C: @ 0x08020D9C
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08020DB0
adds r0, r4, #0
bl sub_080213F0
_08020DB0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08020DB4
sub_08020DB4: @ 0x08020DB4
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020DD0
adds r0, r4, #0
bl sub_08021390
_08020DD0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08020DD4
sub_08020DD4: @ 0x08020DD4
push {r4, lr}
adds r4, r0, #0
bl sub_080214FC
cmp r0, #0
beq _08020DE8
adds r0, r4, #0
bl sub_080213F0
b _08020E26
_08020DE8:
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08020E08
movs r0, #5
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x14]
adds r0, r4, #0
movs r1, #5
bl sub_08021218
b _08020E26
_08020E08:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08020E1A
adds r0, r4, #0
bl sub_08021540
_08020E1A:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl UpdateAnimationSingleFrame
_08020E26:
pop {r4, pc}
thumb_func_start sub_08020E28
sub_08020E28: @ 0x08020E28
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020E44
adds r0, r4, #0
bl sub_080213B0
_08020E44:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08020E48
sub_08020E48: @ 0x08020E48
push {r4, lr}
adds r4, r0, #0
bl sub_080214FC
cmp r0, #0
beq _08020E5C
adds r0, r4, #0
bl sub_080213F0
b _08020E76
_08020E5C:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020E76
adds r0, r4, #0
bl sub_080213B0
_08020E76:
pop {r4, pc}
thumb_func_start sub_08020E78
sub_08020E78: @ 0x08020E78
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020E94
adds r0, r4, #0
bl sub_08021390
_08020E94:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08020E98
sub_08020E98: @ 0x08020E98
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #1
movs r2, #0x38
bl sub_08049F64
cmp r0, #0
beq _08020EF6
ldr r5, _08020EDC @ =gUnk_020000B0
ldr r1, [r5]
adds r0, r4, #0
bl sub_0802169C
cmp r0, #0
bne _08020ECA
ldr r0, [r5]
adds r1, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _08020EE0
_08020ECA:
movs r0, #8
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x14]
adds r0, r4, #0
movs r1, #7
bl sub_08021218
b _08020F26
.align 2, 0
_08020EDC: .4byte gUnk_020000B0
_08020EE0:
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_0802124C
adds r0, r4, #0
bl sub_08021644
b _08020F26
_08020EF6:
ldr r0, _08020F08 @ =gUnk_020000B0
ldr r1, [r0]
cmp r1, #0
bne _08020F0C
adds r0, r4, #0
bl sub_08021414
b _08020F26
.align 2, 0
_08020F08: .4byte gUnk_020000B0
_08020F0C:
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_0802124C
adds r0, r4, #0
bl sub_08021644
_08020F26:
pop {r4, r5, pc}
thumb_func_start sub_08020F28
sub_08020F28: @ 0x08020F28
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020F44
adds r0, r4, #0
bl sub_08021400
_08020F44:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08020F48
sub_08020F48: @ 0x08020F48
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #1
movs r2, #0x48
bl sub_08049F64
cmp r0, #0
beq _08020FA4
ldr r5, _08020F98 @ =gUnk_020000B0
ldr r1, [r5]
adds r0, r4, #0
bl sub_08021664
cmp r0, #0
beq _08020F9C
ldr r1, [r5]
adds r0, r4, #0
movs r2, #9
bl sub_0804A044
adds r2, r0, #0
cmp r2, #0xff
beq _08020F9C
movs r0, #0xe
strb r0, [r4, #0xc]
lsrs r2, r2, #3
adds r0, r4, #0
movs r1, #0xd
bl sub_08021218
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A98C
cmp r0, #0
beq _08020FAA
str r4, [r0, #0x50]
str r0, [r4, #0x54]
b _08020FAA
.align 2, 0
_08020F98: .4byte gUnk_020000B0
_08020F9C:
adds r0, r4, #0
bl sub_08021424
b _08020FAA
_08020FA4:
adds r0, r4, #0
bl sub_08021390
_08020FAA:
pop {r4, r5, pc}
thumb_func_start sub_08020FAC
sub_08020FAC: @ 0x08020FAC
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08020FDC
adds r1, r2, #0
adds r1, #0x7a
ldrb r0, [r1]
cmp r0, #0
beq _08020FCC
subs r0, #1
strb r0, [r1]
b _08020FE2
_08020FCC:
adds r1, r2, #0
adds r1, #0x3d
movs r0, #0xf8
strb r0, [r1]
adds r0, r2, #0
bl sub_08021390
b _08020FE2
_08020FDC:
adds r0, r2, #0
bl UpdateAnimationSingleFrame
_08020FE2:
pop {pc}
thumb_func_start sub_08020FE4
sub_08020FE4: @ 0x08020FE4
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0802100C
movs r0, #0xc
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x14]
adds r0, r4, #0
movs r1, #9
bl sub_08021218
adds r0, r4, #0
bl sub_0804AA1C
_0802100C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08021010
sub_08021010: @ 0x08021010
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021034
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x56
strb r0, [r1]
adds r0, r4, #0
bl sub_080213F0
_08021034:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08021038
sub_08021038: @ 0x08021038
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
cmp r0, #0
bne _08021066
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #0
beq _08021066
adds r0, r4, #0
movs r1, #0
movs r2, #0
bl sub_0804A98C
cmp r0, #0
beq _0802105E
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_0802105E:
movs r0, #0x87
lsls r0, r0, #1
bl sub_08004488
_08021066:
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021090
adds r0, r4, #0
bl sub_08021588
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
cmp r0, #0
beq _08021088
subs r0, #1
b _080210A2
_08021088:
adds r0, r4, #0
bl sub_08021390
b _080210A4
_08021090:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
ldrb r0, [r5]
cmp r0, #4
bne _080210A4
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x51
_080210A2:
strb r0, [r1]
_080210A4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080210A8
sub_080210A8: @ 0x080210A8
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080210D4
movs r0, #0
strb r0, [r2]
adds r0, r4, #0
bl sub_08021588
ldr r0, _080210D0 @ =0x0000015D
bl sub_08004488
b _080210E2
.align 2, 0
_080210D0: .4byte 0x0000015D
_080210D4:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080210E2
adds r0, r4, #0
bl sub_08021390
_080210E2:
pop {r4, pc}
thumb_func_start sub_080210E4
sub_080210E4: @ 0x080210E4
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0802111A
movs r0, #0xfe
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #0
movs r2, #2
bl sub_0804A98C
cmp r0, #0
beq _08021112
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_08021112:
movs r0, #0x87
lsls r0, r0, #1
bl sub_08004488
_0802111A:
adds r0, r4, #0
bl sub_08021644
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08021154
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
beq _0802114A
ldr r0, [r4, #0x54]
cmp r0, #0
beq _08021154
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021154
_0802114A:
adds r0, r4, #0
movs r1, #0
bl sub_080213D0
b _0802116C
_08021154:
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0802116C
adds r0, r4, #0
movs r1, #0
bl sub_080213D0
_0802116C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08021170
sub_08021170: @ 0x08021170
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021198
adds r1, r2, #0
adds r1, #0x7b
ldrb r0, [r1]
cmp r0, #0
beq _08021190
subs r0, #1
strb r0, [r1]
b _0802119E
_08021190:
adds r0, r2, #0
bl sub_08021390
b _0802119E
_08021198:
adds r0, r2, #0
bl UpdateAnimationSingleFrame
_0802119E:
pop {pc}
thumb_func_start sub_080211A0
sub_080211A0: @ 0x080211A0
push {r4, lr}
adds r4, r0, #0
bl sub_080214FC
cmp r0, #0
beq _080211B4
adds r0, r4, #0
bl sub_08021390
b _080211CE
_080211B4:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080211CE
adds r0, r4, #0
bl sub_080213B0
_080211CE:
pop {r4, pc}
thumb_func_start sub_080211D0
sub_080211D0: @ 0x080211D0
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
bl sub_0802159C
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080211F2
adds r0, r4, #0
bl sub_08021390
_080211F2:
pop {r4, pc}
thumb_func_start sub_080211F4
sub_080211F4: @ 0x080211F4
push {r4, lr}
adds r4, r0, #0
bl UpdateAnimationSingleFrame
adds r0, r4, #0
bl sub_08021600
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08021216
adds r0, r4, #0
bl sub_08021390
_08021216:
pop {r4, pc}
thumb_func_start sub_08021218
sub_08021218: @ 0x08021218
push {r4, lr}
adds r3, r0, #0
adds r4, r3, #0
adds r4, #0x74
ldrb r0, [r4]
cmp r0, r1
bne _0802122C
ldrb r0, [r3, #0x14]
cmp r0, r2
beq _08021244
_0802122C:
strb r2, [r3, #0x14]
strb r1, [r4]
lsls r0, r1, #1
ldr r1, _08021248 @ =gUnk_080CAB14
adds r0, r0, r1
ldrb r1, [r0, #1]
strh r1, [r3, #0x12]
ldrb r1, [r0]
adds r1, r1, r2
adds r0, r3, #0
bl InitAnimationForceUpdate
_08021244:
pop {r4, pc}
.align 2, 0
_08021248: .4byte gUnk_080CAB14
thumb_func_start sub_0802124C
sub_0802124C: @ 0x0802124C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x14]
ldrb r1, [r4, #0x15]
bl sub_08021274
adds r2, r0, #0
cmp r2, #0xff
beq _0802126C
adds r0, r4, #0
adds r0, #0x74
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08021218
b _08021272
_0802126C:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
_08021272:
pop {r4, pc}
thumb_func_start sub_08021274
sub_08021274: @ 0x08021274
push {lr}
adds r2, r0, #0
movs r0, #7
ands r0, r1
subs r0, #3
cmp r0, #2
bhi _0802129A
movs r3, #0x18
adds r0, r1, #0
ands r0, r3
lsrs r0, r0, #3
cmp r0, r2
beq _080212AA
adds r0, r1, #0
adds r0, #8
ands r0, r3
lsrs r0, r0, #3
cmp r0, r2
beq _080212AA
_0802129A:
adds r0, r1, #4
movs r1, #0x18
ands r0, r1
lsrs r1, r0, #3
cmp r2, r1
beq _080212AA
adds r0, r1, #0
b _080212AC
_080212AA:
movs r0, #0xff
_080212AC:
pop {pc}
.align 2, 0
thumb_func_start sub_080212B0
sub_080212B0: @ 0x080212B0
push {r4, r5, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x75
ldrb r0, [r1]
cmp r0, #1
beq _080212D0
cmp r0, #2
beq _080212DC
movs r0, #1
strb r0, [r1]
ldr r4, _080212CC @ =gUnk_080CAB3A
b _080212E2
.align 2, 0
_080212CC: .4byte gUnk_080CAB3A
_080212D0:
movs r0, #2
strb r0, [r1]
ldr r4, _080212D8 @ =gUnk_080CAB42
b _080212E2
.align 2, 0
_080212D8: .4byte gUnk_080CAB42
_080212DC:
movs r0, #0
strb r0, [r1]
ldr r4, _0802131C @ =gUnk_080CAB4A
_080212E2:
bl Random
movs r1, #7
ands r1, r0
adds r1, r1, r4
ldrb r2, [r1]
ldrb r0, [r5, #0xa]
cmp r0, #1
bhi _08021306
cmp r2, #2
bne _08021306
ldr r4, _08021320 @ =gUnk_080CAB52
bl Random
movs r1, #3
ands r1, r0
adds r1, r1, r4
ldrb r2, [r1]
_08021306:
movs r0, #0
str r0, [r5, #0x54]
ldr r1, _08021324 @ =gUnk_080CAB58
lsls r0, r2, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0802131C: .4byte gUnk_080CAB4A
_08021320: .4byte gUnk_080CAB52
_08021324: .4byte gUnk_080CAB58
thumb_func_start sub_08021328
sub_08021328: @ 0x08021328
push {lr}
movs r1, #0xd
strb r1, [r0, #0xc]
ldr r2, _08021348 @ =gUnk_080CAB68
ldrb r1, [r0, #0xa]
adds r1, r1, r2
ldrb r2, [r1]
adds r1, r0, #0
adds r1, #0x7c
strb r2, [r1]
ldrb r2, [r0, #0x14]
movs r1, #0xc
bl sub_08021218
pop {pc}
.align 2, 0
_08021348: .4byte gUnk_080CAB68
thumb_func_start sub_0802134C
sub_0802134C: @ 0x0802134C
push {lr}
movs r1, #0xf
strb r1, [r0, #0xc]
ldrb r1, [r0, #0x14]
lsls r1, r1, #3
strb r1, [r0, #0x15]
movs r1, #0x80
lsls r1, r1, #2
strh r1, [r0, #0x24]
adds r2, r0, #0
adds r2, #0x76
movs r1, #0x78
strh r1, [r2]
ldrb r2, [r0, #0x14]
movs r1, #0xe
bl sub_08021218
pop {pc}
thumb_func_start sub_08021370
sub_08021370: @ 0x08021370
push {lr}
movs r1, #0x12
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x14]
movs r1, #0x10
bl sub_08021218
pop {pc}
thumb_func_start sub_08021380
sub_08021380: @ 0x08021380
push {lr}
movs r1, #0x13
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x14]
movs r1, #0x11
bl sub_08021218
pop {pc}
thumb_func_start sub_08021390
sub_08021390: @ 0x08021390
push {lr}
movs r1, #7
strb r1, [r0, #0xc]
movs r1, #0x80
lsls r1, r1, #2
strh r1, [r0, #0x24]
adds r2, r0, #0
adds r2, #0x3f
movs r1, #0x56
strb r1, [r2]
ldrb r2, [r0, #0x14]
movs r1, #6
bl sub_08021218
pop {pc}
.align 2, 0
thumb_func_start sub_080213B0
sub_080213B0: @ 0x080213B0
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
movs r1, #1
strb r1, [r0, #0xe]
movs r1, #0xc0
strh r1, [r0, #0x24]
adds r2, r0, #0
adds r2, #0x76
movs r1, #0xf0
strh r1, [r2]
ldrb r2, [r0, #0x14]
movs r1, #3
bl sub_08021218
pop {pc}
thumb_func_start sub_080213D0
sub_080213D0: @ 0x080213D0
push {r4, lr}
adds r4, r0, #0
movs r0, #0x10
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7b
strb r1, [r0]
ldrb r2, [r4, #0x14]
adds r0, r4, #0
movs r1, #0xf
bl sub_08021218
adds r0, r4, #0
bl sub_08021588
pop {r4, pc}
thumb_func_start sub_080213F0
sub_080213F0: @ 0x080213F0
push {lr}
movs r1, #6
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x14]
movs r1, #1
bl sub_08021218
pop {pc}
thumb_func_start sub_08021400
sub_08021400: @ 0x08021400
push {lr}
movs r1, #9
strb r1, [r0, #0xc]
movs r1, #0x60
strh r1, [r0, #0x24]
ldrb r2, [r0, #0x14]
movs r1, #0xa
bl sub_08021218
pop {pc}
thumb_func_start sub_08021414
sub_08021414: @ 0x08021414
push {lr}
movs r1, #0x11
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x14]
movs r1, #5
bl sub_08021218
pop {pc}
thumb_func_start sub_08021424
sub_08021424: @ 0x08021424
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _08021450 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r5, #0
bl sub_080045C4
adds r1, r0, #0
ldrb r0, [r5, #0x14]
bl sub_08021274
adds r4, r0, #0
cmp r4, #0xff
beq _08021454
adds r0, r5, #0
adds r0, #0x74
ldrb r1, [r0]
adds r0, r5, #0
adds r2, r4, #0
bl sub_08021218
b _08021456
.align 2, 0
_08021450: .4byte gUnk_020000B0
_08021454:
ldrb r4, [r5, #0x14]
_08021456:
cmp r4, #1
beq _08021490
cmp r4, #1
blo _08021478
cmp r4, #2
beq _080214A8
ldr r0, _08021474 @ =gUnk_020000B0
ldr r1, [r0]
movs r2, #0x2e
ldrsh r0, [r1, r2]
adds r2, r0, #0
adds r2, #0x24
movs r4, #0x32
ldrsh r3, [r1, r4]
b _080214B8
.align 2, 0
_08021474: .4byte gUnk_020000B0
_08021478:
ldr r0, _0802148C @ =gUnk_020000B0
ldr r0, [r0]
movs r1, #0x2e
ldrsh r2, [r0, r1]
movs r4, #0x32
ldrsh r0, [r0, r4]
adds r3, r0, #0
adds r3, #0x2c
b _080214B8
.align 2, 0
_0802148C: .4byte gUnk_020000B0
_08021490:
ldr r0, _080214A4 @ =gUnk_020000B0
ldr r1, [r0]
movs r2, #0x2e
ldrsh r0, [r1, r2]
adds r2, r0, #0
subs r2, #0x24
movs r4, #0x32
ldrsh r3, [r1, r4]
b _080214B8
.align 2, 0
_080214A4: .4byte gUnk_020000B0
_080214A8:
ldr r0, _080214F0 @ =gUnk_020000B0
ldr r0, [r0]
movs r1, #0x2e
ldrsh r2, [r0, r1]
movs r4, #0x32
ldrsh r0, [r0, r4]
adds r3, r0, #0
subs r3, #0x1d
_080214B8:
movs r1, #0x2e
ldrsh r0, [r5, r1]
subs r0, r2, r0
adds r0, #3
cmp r0, #6
bhi _080214D0
movs r4, #0x32
ldrsh r0, [r5, r4]
subs r0, r3, r0
adds r0, #2
cmp r0, #4
bls _080214E8
_080214D0:
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r4, #0x32
ldrsh r1, [r5, r4]
bl sub_080045D4
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_080AEF88
cmp r0, #0
bne _080214F4
_080214E8:
adds r0, r5, #0
bl sub_080212B0
b _080214FA
.align 2, 0
_080214F0: .4byte gUnk_020000B0
_080214F4:
adds r0, r5, #0
bl UpdateAnimationSingleFrame
_080214FA:
pop {r4, r5, pc}
thumb_func_start sub_080214FC
sub_080214FC: @ 0x080214FC
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0802153C
ldr r0, _08021538 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r2, r0, #0
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x1f
ands r0, r1
subs r0, r2, r0
subs r0, #2
cmp r0, #4
bhi _0802153C
adds r0, r2, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #3
strb r0, [r4, #0x14]
movs r0, #1
b _0802153E
.align 2, 0
_08021538: .4byte gUnk_020000B0
_0802153C:
movs r0, #0
_0802153E:
pop {r4, pc}
thumb_func_start sub_08021540
sub_08021540: @ 0x08021540
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _08021566
movs r0, #1
ands r0, r5
cmp r0, #0
beq _08021566
adds r0, r4, #0
bl sub_08049EE4
adds r1, r0, #4
b _08021568
_08021566:
lsrs r1, r5, #0x10
_08021568:
movs r0, #0x18
ands r1, r0
strb r1, [r4, #0x15]
ldrb r0, [r4, #0x14]
bl sub_08021274
adds r2, r0, #0
cmp r2, #0xff
beq _08021582
adds r0, r4, #0
movs r1, #3
bl sub_08021218
_08021582:
movs r0, #0x1e
strb r0, [r4, #0xe]
pop {r4, r5, pc}
thumb_func_start sub_08021588
sub_08021588: @ 0x08021588
push {lr}
adds r2, r0, #0
ldr r1, [r2, #0x54]
cmp r1, #0
beq _08021598
movs r0, #0
str r0, [r1, #0x50]
str r0, [r2, #0x54]
_08021598:
pop {pc}
.align 2, 0
thumb_func_start sub_0802159C
sub_0802159C: @ 0x0802159C
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
adds r0, r1, #0
cmp r0, #1
bne _080215D4
movs r0, #0
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x51
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
movs r2, #3
bl sub_0804A98C
cmp r0, #0
beq _080215CA
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_080215CA:
movs r0, #0x8b
lsls r0, r0, #1
bl sub_08004488
b _080215F8
_080215D4:
cmp r0, #2
bne _080215E4
movs r0, #0
strb r0, [r2]
adds r0, r4, #0
bl sub_08021588
b _080215F8
_080215E4:
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _080215F8
movs r0, #0xdf
ands r0, r1
strb r0, [r2]
ldr r0, _080215FC @ =0x00000115
bl sub_08004488
_080215F8:
pop {r4, pc}
.align 2, 0
_080215FC: .4byte 0x00000115
thumb_func_start sub_08021600
sub_08021600: @ 0x08021600
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x5a
ldrb r0, [r1]
cmp r0, #1
bne _08021634
movs r0, #0
strb r0, [r1]
subs r1, #0x1b
movs r0, #0x51
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
movs r2, #4
bl sub_0804A98C
cmp r0, #0
beq _0802162A
str r4, [r0, #0x50]
str r0, [r4, #0x54]
_0802162A:
movs r0, #0x87
lsls r0, r0, #1
bl sub_08004488
b _08021642
_08021634:
cmp r0, #2
bne _08021642
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_08021588
_08021642:
pop {r4, pc}
thumb_func_start sub_08021644
sub_08021644: @ 0x08021644
push {lr}
adds r2, r0, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _08021660
movs r0, #0xdf
ands r0, r1
strb r0, [r2]
movs r0, #0x7d
bl sub_08004488
_08021660:
pop {pc}
.align 2, 0
thumb_func_start sub_08021664
sub_08021664: @ 0x08021664
push {lr}
ldrb r2, [r0, #0x14]
cmp r2, #1
beq _08021690
cmp r2, #1
bgt _08021676
cmp r2, #0
beq _08021680
b _08021698
_08021676:
cmp r2, #2
beq _08021688
cmp r2, #3
beq _08021690
b _08021698
_08021680:
movs r2, #0x22
bl sub_08049F1C
b _0802169A
_08021688:
movs r2, #0x13
bl sub_08049F1C
b _0802169A
_08021690:
movs r2, #0x1a
bl sub_08049F1C
b _0802169A
_08021698:
movs r0, #0
_0802169A:
pop {pc}
thumb_func_start sub_0802169C
sub_0802169C: @ 0x0802169C
push {lr}
ldrb r2, [r0, #0x14]
cmp r2, #1
beq _080216C0
cmp r2, #1
bgt _080216AE
cmp r2, #0
beq _080216B8
b _080216CE
_080216AE:
cmp r2, #2
beq _080216BC
cmp r2, #3
beq _080216C0
b _080216CE
_080216B8:
movs r2, #0x2c
b _080216C2
_080216BC:
movs r2, #0x1d
b _080216C2
_080216C0:
movs r2, #0x24
_080216C2:
bl sub_08049F1C
cmp r0, #0
bne _080216CE
movs r0, #1
b _080216D0
_080216CE:
movs r0, #0
_080216D0:
pop {pc}
.align 2, 0