tmc/asm/code_08033FFC.s

48291 lines
792 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_08033FFC
sub_08033FFC: @ 0x08033FFC
push {r4, lr}
adds r3, r0, #0
ldrb r0, [r3, #0xd]
cmp r0, #7
bls _08034008
b _08034114
_08034008:
lsls r0, r0, #2
ldr r1, _08034014 @ =_08034018
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08034014: .4byte _08034018
_08034018: @ jump table
.4byte _0803413E @ case 0
.4byte _08034038 @ case 1
.4byte _0803413E @ case 2
.4byte _08034056 @ case 3
.4byte _08034068 @ case 4
.4byte _0803413E @ case 5
.4byte _08034090 @ case 6
.4byte _080340C4 @ case 7
_08034038:
movs r0, #2
strb r0, [r3, #0xd]
movs r0, #0x1e
strb r0, [r3, #0xe]
ldr r0, [r3, #0x74]
ldr r2, [r0, #0x74]
movs r1, #1
strb r1, [r2, #0xd]
ldr r0, [r3, #0x78]
ldr r2, [r0, #0x74]
strb r1, [r2, #0xd]
adds r0, r3, #0
bl sub_0801D230
b _0803413E
_08034056:
ldrb r0, [r3, #0xe]
subs r0, #1
strb r0, [r3, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803413E
movs r0, #4
strb r0, [r3, #0xd]
b _0803413E
_08034068:
ldr r0, [r3, #0x34]
ldr r1, _0803408C @ =0xFFFF8000
adds r0, r0, r1
str r0, [r3, #0x34]
movs r0, #0x36
ldrsh r1, [r3, r0]
movs r0, #0xa
rsbs r0, r0, #0
cmp r1, r0
bne _0803413E
movs r0, #5
strb r0, [r3, #0xd]
adds r1, r3, #0
adds r1, #0x81
movs r0, #1
strb r0, [r1]
b _0803413E
.align 2, 0
_0803408C: .4byte 0xFFFF8000
_08034090:
movs r1, #0
movs r0, #7
strb r0, [r3, #0xd]
strb r1, [r3, #0xe]
ldr r2, [r3, #0x74]
movs r1, #1
strb r1, [r2, #0xd]
ldr r2, [r2, #0x74]
movs r0, #4
strb r0, [r2, #0xd]
ldr r2, [r3, #0x78]
strb r1, [r2, #0xd]
ldr r2, [r2, #0x74]
strb r0, [r2, #0xd]
ldr r1, _080340C0 @ =gLCDControls
adds r2, r1, #0
adds r2, #0x66
movs r0, #0xf4
lsls r0, r0, #4
strh r0, [r2]
adds r1, #0x68
adds r0, #0xc0
strh r0, [r1]
b _0803413E
.align 2, 0
_080340C0: .4byte gLCDControls
_080340C4:
ldrb r1, [r3, #0xe]
adds r1, #1
strb r1, [r3, #0xe]
lsls r2, r1, #0x18
lsrs r2, r2, #0x19
ldr r4, _08034110 @ =gLCDControls
movs r0, #0x10
subs r0, r0, r2
lsls r0, r0, #8
orrs r2, r0
adds r0, r4, #0
adds r0, #0x68
strh r2, [r0]
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
cmp r1, #0x1f
bls _0803413E
movs r0, #8
strb r0, [r3, #0xd]
ldr r2, [r3, #0x74]
movs r1, #3
strb r1, [r2, #0xd]
ldr r2, [r2, #0x74]
movs r0, #6
strb r0, [r2, #0xd]
ldr r2, [r3, #0x78]
strb r1, [r2, #0xd]
ldr r2, [r2, #0x74]
strb r0, [r2, #0xd]
ldrb r1, [r3, #0x19]
subs r0, #0x13
ands r0, r1
strb r0, [r3, #0x19]
adds r1, r4, #0
adds r1, #0x66
movs r0, #0
strh r0, [r1]
b _0803413E
.align 2, 0
_08034110: .4byte gLCDControls
_08034114:
ldr r0, [r3, #0x74]
ldrb r1, [r0, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803413E
ldr r1, _08034140 @ =gRoomControls
ldr r0, _08034144 @ =gLinkEntity
str r0, [r1, #0x30]
adds r0, r3, #0
bl sub_08034420
ldr r0, _08034148 @ =gLinkState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
bl sub_080791D0
movs r0, #0x2e
bl PlaySFX
_0803413E:
pop {r4, pc}
.align 2, 0
_08034140: .4byte gRoomControls
_08034144: .4byte gLinkEntity
_08034148: .4byte gLinkState
thumb_func_start sub_0803414C
sub_0803414C: @ 0x0803414C
push {r4, r5, lr}
adds r4, r0, #0
ldr r1, _08034194 @ =gRoomControls
ldrh r0, [r1, #6]
adds r2, r0, #0
adds r2, #0xb8
ldrh r0, [r1, #8]
adds r3, r0, #0
adds r3, #0x48
movs r1, #0x2e
ldrsh r0, [r4, r1]
subs r0, r0, r2
adds r0, #1
cmp r0, #2
bhi _080341A2
movs r5, #0x32
ldrsh r0, [r4, r5]
subs r0, r0, r3
adds r0, #1
cmp r0, #2
bhi _080341A2
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _080341B6
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08034198
movs r0, #0
strb r0, [r4, #0xd]
adds r0, r4, #0
movs r1, #0x1e
bl sub_0803442C
b _080341B6
.align 2, 0
_08034194: .4byte gRoomControls
_08034198:
adds r0, r4, #0
movs r1, #0x5a
bl sub_0803442C
b _080341B6
_080341A2:
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r5, #0x32
ldrsh r1, [r4, r5]
bl sub_080045D4
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F69C
_080341B6:
pop {r4, r5, pc}
thumb_func_start sub_080341B8
sub_080341B8: @ 0x080341B8
push {r4, lr}
adds r4, r0, #0
bl sub_080349D8
cmp r0, #0
beq _080341CC
adds r0, r4, #0
movs r1, #0x2d
bl sub_0803442C
_080341CC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080341D0
sub_080341D0: @ 0x080341D0
push {lr}
adds r2, r0, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #3
ands r0, r1
cmp r0, #3
beq _080341F2
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080341F2
adds r0, r2, #0
bl sub_0803443C
_080341F2:
pop {pc}
thumb_func_start sub_080341F4
sub_080341F4: @ 0x080341F4
push {r4, lr}
adds r4, r0, #0
bl sub_080347B4
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _0803420C
adds r0, r4, #0
bl sub_08034420
_0803420C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034210
sub_08034210: @ 0x08034210
push {r4, lr}
adds r4, r0, #0
bl sub_080347B4
adds r0, r4, #0
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08034238
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _08034238
adds r0, r4, #0
bl sub_08034420
b _0803423E
_08034238:
adds r0, r4, #0
bl sub_08034830
_0803423E:
pop {r4, pc}
thumb_func_start sub_08034240
sub_08034240: @ 0x08034240
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
cmp r0, #0
beq _08034260
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x95
bhi _08034260
adds r0, r4, #0
bl sub_0803473C
_08034260:
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _08034270
adds r0, r4, #0
bl sub_08034420
_08034270:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034274
sub_08034274: @ 0x08034274
push {r4, lr}
adds r4, r0, #0
bl sub_080349D8
cmp r0, #0
beq _08034288
adds r0, r4, #0
bl sub_08034420
b _0803429E
_08034288:
adds r0, r4, #0
bl sub_0803473C
adds r0, r4, #0
bl sub_08034A10
cmp r0, #0
beq _0803429E
adds r0, r4, #0
bl sub_080347FC
_0803429E:
pop {r4, pc}
thumb_func_start sub_080342A0
sub_080342A0: @ 0x080342A0
push {r4, lr}
adds r4, r0, #0
bl sub_080349D8
cmp r0, #0
beq _080342B2
adds r0, r4, #0
bl sub_08034420
_080342B2:
pop {r4, pc}
thumb_func_start sub_080342B4
sub_080342B4: @ 0x080342B4
push {lr}
adds r1, r0, #0
adds r0, #0x7e
ldrh r0, [r0]
cmp r0, #0xff
bne _080342C6
adds r0, r1, #0
bl sub_08034420
_080342C6:
pop {pc}
thumb_func_start sub_080342C8
sub_080342C8: @ 0x080342C8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
adds r1, r0, #0
cmp r1, #0
beq _08034304
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080342E4
ldr r0, _080342FC @ =0x00000115
bl PlaySFX
_080342E4:
ldr r2, _08034300 @ =gUnk_080CECEC
ldrb r0, [r4, #0xe]
lsrs r0, r0, #1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x62
strb r1, [r0]
b _08034340
.align 2, 0
_080342FC: .4byte 0x00000115
_08034300: .4byte gUnk_080CECEC
_08034304:
adds r0, r4, #0
adds r0, #0x62
strb r1, [r0]
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08034340
movs r0, #0xc
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x7e
movs r1, #0
movs r0, #0xe1
lsls r0, r0, #3
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x7d
strb r1, [r0]
adds r0, #4
strb r1, [r0]
movs r0, #0x1e
movs r1, #0
bl sub_08080964
ldr r0, _08034344 @ =0x000001A1
bl PlaySFX
_08034340:
pop {r4, pc}
.align 2, 0
_08034344: .4byte 0x000001A1
thumb_func_start sub_08034348
sub_08034348: @ 0x08034348
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
cmp r0, #0
beq _0803435C
subs r0, #1
strh r0, [r1]
b _08034388
_0803435C:
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #0xa
rsbs r0, r0, #0
cmp r1, r0
ble _08034370
subs r0, r2, #1
strh r0, [r4, #0x36]
b _08034388
_08034370:
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _08034388
adds r1, r4, #0
adds r1, #0x81
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_08034420
_08034388:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803438C
sub_0803438C: @ 0x0803438C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
adds r1, r0, #0
cmp r1, #0
bne _080343A0
adds r0, r5, #0
adds r0, #0x45
strb r1, [r0]
b _08034414
_080343A0:
subs r2, r0, #1
strb r2, [r5, #0xe]
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xc0
bls _080343C4
ldr r0, _080343C0 @ =gUnk_080CED06
movs r1, #3
ands r2, r1
adds r0, r2, r0
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x62
strb r1, [r0]
b _08034414
.align 2, 0
_080343C0: .4byte gUnk_080CED06
_080343C4:
movs r0, #0x1f
ands r2, r0
cmp r2, #0
bne _08034414
ldr r4, _08034418 @ =gUnk_080CED02
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 r2, r0, #0
cmp r2, #0
beq _08034414
ldrb r1, [r5, #0xe]
lsrs r1, r1, #4
ldr r0, _0803441C @ =gUnk_080CECF4
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
_08034414:
pop {r4, r5, pc}
.align 2, 0
_08034418: .4byte gUnk_080CED02
_0803441C: .4byte gUnk_080CECF4
thumb_func_start sub_08034420
sub_08034420: @ 0x08034420
movs r1, #2
strb r1, [r0, #0xc]
adds r0, #0x7d
movs r1, #3
strb r1, [r0]
bx lr
thumb_func_start sub_0803442C
sub_0803442C: @ 0x0803442C
movs r2, #4
strb r2, [r0, #0xc]
strb r1, [r0, #0xe]
adds r0, #0x7d
movs r1, #3
strb r1, [r0]
bx lr
.align 2, 0
thumb_func_start sub_0803443C
sub_0803443C: @ 0x0803443C
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x7d
movs r0, #0
strb r0, [r1]
ldr r0, _0803445C @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0x1e
bhi _08034460
adds r0, r2, #0
bl sub_080344BC
b _08034472
.align 2, 0
_0803445C: .4byte gUnk_030010A0
_08034460:
cmp r0, #0x3c
bhi _0803446C
adds r0, r2, #0
bl sub_08034498
b _08034472
_0803446C:
adds r0, r2, #0
bl sub_08034474
_08034472:
pop {pc}
thumb_func_start sub_08034474
sub_08034474: @ 0x08034474
push {r4, lr}
ldr r2, _08034494 @ =gUnk_080CED0C
adds r4, r0, #0
adds r4, #0x7c
ldrb r1, [r4]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
ldrb r0, [r4]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_08034494: .4byte gUnk_080CED0C
thumb_func_start sub_08034498
sub_08034498: @ 0x08034498
push {r4, lr}
ldr r2, _080344B8 @ =gUnk_080CED2C
adds r4, r0, #0
adds r4, #0x7c
ldrb r1, [r4]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
ldrb r0, [r4]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_080344B8: .4byte gUnk_080CED2C
thumb_func_start sub_080344BC
sub_080344BC: @ 0x080344BC
push {r4, lr}
ldr r2, _080344DC @ =gUnk_080CED4C
adds r4, r0, #0
adds r4, #0x7c
ldrb r1, [r4]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
ldrb r0, [r4]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_080344DC: .4byte gUnk_080CED4C
thumb_func_start sub_080344E0
sub_080344E0: @ 0x080344E0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #5
ands r0, r1
cmp r0, #0
beq _080344F8
adds r0, r4, #0
bl sub_080345A0
b _0803451A
_080344F8:
movs r0, #0xa
ands r0, r1
cmp r0, #0
bne _0803450C
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08034514
_0803450C:
adds r0, r4, #0
bl sub_080345B8
b _0803451A
_08034514:
adds r0, r4, #0
bl sub_080345A0
_0803451A:
pop {r4, pc}
thumb_func_start sub_0803451C
sub_0803451C: @ 0x0803451C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #5
ands r0, r1
cmp r0, #0
bne _08034548
movs r0, #0xa
ands r0, r1
cmp r0, #0
beq _0803453C
adds r0, r4, #0
bl sub_08034638
b _08034556
_0803453C:
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08034550
_08034548:
adds r0, r4, #0
bl sub_08034618
b _08034556
_08034550:
adds r0, r4, #0
bl sub_08034638
_08034556:
pop {r4, pc}
thumb_func_start sub_08034558
sub_08034558: @ 0x08034558
push {r4, lr}
adds r4, r0, #0
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _08034570
adds r0, r4, #0
bl sub_08034658
b _08034576
_08034570:
adds r0, r4, #0
bl sub_0803467C
_08034576:
pop {r4, pc}
thumb_func_start sub_08034578
sub_08034578: @ 0x08034578
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7d
strb r1, [r0]
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #0
bl sub_080348A4
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #0
bl sub_080348A4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080345A0
sub_080345A0: @ 0x080345A0
push {lr}
movs r1, #5
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7d
movs r1, #1
strb r1, [r2]
ldr r1, [r0, #0x78]
movs r2, #1
bl sub_080348A4
pop {pc}
thumb_func_start sub_080345B8
sub_080345B8: @ 0x080345B8
push {lr}
movs r1, #5
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7d
movs r1, #2
strb r1, [r2]
ldr r1, [r0, #0x74]
movs r2, #1
bl sub_080348A4
pop {pc}
thumb_func_start sub_080345D0
sub_080345D0: @ 0x080345D0
push {r4, lr}
adds r4, r0, #0
movs r0, #6
strb r0, [r4, #0xc]
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _080345FE
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
cmp r0, #0
bne _08034616
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
b _08034616
_080345FE:
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
cmp r0, #0
bne _08034616
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
_08034616:
pop {r4, pc}
thumb_func_start sub_08034618
sub_08034618: @ 0x08034618
push {lr}
movs r1, #7
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7d
movs r1, #1
strb r1, [r2]
adds r2, #1
movs r1, #0xb4
strh r1, [r2]
ldr r1, [r0, #0x78]
movs r2, #3
bl sub_080348A4
pop {pc}
.align 2, 0
thumb_func_start sub_08034638
sub_08034638: @ 0x08034638
push {lr}
movs r1, #7
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7d
movs r1, #2
strb r1, [r2]
adds r2, #1
movs r1, #0xb4
strh r1, [r2]
ldr r1, [r0, #0x74]
movs r2, #3
bl sub_080348A4
pop {pc}
.align 2, 0
thumb_func_start sub_08034658
sub_08034658: @ 0x08034658
push {r4, lr}
movs r2, #0
movs r1, #8
strb r1, [r0, #0xc]
adds r4, r0, #0
adds r4, #0x7d
strb r2, [r4]
ldr r1, [r0, #0x78]
movs r2, #4
bl sub_080348A4
cmp r0, #0
bne _0803467A
ldrb r0, [r4]
movs r1, #0x40
orrs r0, r1
strb r0, [r4]
_0803467A:
pop {r4, pc}
thumb_func_start sub_0803467C
sub_0803467C: @ 0x0803467C
push {r4, lr}
movs r2, #0
movs r1, #8
strb r1, [r0, #0xc]
adds r4, r0, #0
adds r4, #0x7d
strb r2, [r4]
ldr r1, [r0, #0x74]
movs r2, #4
bl sub_080348A4
cmp r0, #0
bne _0803469E
ldrb r0, [r4]
movs r1, #0x40
orrs r0, r1
strb r0, [r4]
_0803469E:
pop {r4, pc}
thumb_func_start sub_080346A0
sub_080346A0: @ 0x080346A0
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #9
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7d
strb r1, [r0]
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #6
bl sub_080348A4
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #6
bl sub_080348A4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080346C8
sub_080346C8: @ 0x080346C8
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #0xa
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7e
strh r1, [r0]
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _0803470C
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #8
bl sub_080348A4
cmp r0, #0
beq _080346F6
ldr r1, [r4, #0x78]
b _0803471C
_080346F6:
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #7
bl sub_080348A4
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #8
bl sub_080348A4
b _0803473A
_0803470C:
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #8
bl sub_080348A4
cmp r0, #0
beq _08034726
ldr r1, [r4, #0x74]
_0803471C:
adds r0, r4, #0
movs r2, #7
bl sub_080348A4
b _0803473A
_08034726:
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #8
bl sub_080348A4
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #7
bl sub_080348A4
_0803473A:
pop {r4, pc}
thumb_func_start sub_0803473C
sub_0803473C: @ 0x0803473C
push {r4, r5, lr}
adds r3, r0, #0
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08034764
ldr r0, [r3, #0x74]
ldrb r0, [r0, #0xc]
cmp r0, #0x28
bhi _080347B0
ldr r0, _08034760 @ =gLinkEntity
movs r1, #0x2e
ldrsh r0, [r0, r1]
adds r2, r0, #0
subs r2, #0x60
b _08034776
.align 2, 0
_08034760: .4byte gLinkEntity
_08034764:
ldr r0, [r3, #0x78]
ldrb r0, [r0, #0xc]
cmp r0, #0x28
bhi _080347B0
ldr r0, _08034790 @ =gLinkEntity
movs r5, #0x2e
ldrsh r0, [r0, r5]
adds r2, r0, #0
adds r2, #0x60
_08034776:
ldr r0, _08034794 @ =gRoomControls
ldrh r4, [r0, #6]
subs r0, r2, #4
movs r5, #0x2e
ldrsh r1, [r3, r5]
cmp r0, r1
bls _08034798
adds r0, r4, #0
adds r0, #0xe0
cmp r0, r1
blo _080347B0
movs r0, #8
b _080347A8
.align 2, 0
_08034790: .4byte gLinkEntity
_08034794: .4byte gRoomControls
_08034798:
adds r0, r2, #4
cmp r0, r1
bhs _080347B0
adds r0, r4, #0
adds r0, #0x90
cmp r0, r1
bhi _080347B0
movs r0, #0x18
_080347A8:
strb r0, [r3, #0x15]
adds r0, r3, #0
bl sub_0806F69C
_080347B0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080347B4
sub_080347B4: @ 0x080347B4
push {r4, r5, lr}
adds r2, r0, #0
ldr r0, _080347D8 @ =gLinkEntity
movs r1, #0x2e
ldrsh r3, [r0, r1]
ldr r0, _080347DC @ =gRoomControls
ldrh r4, [r0, #6]
subs r0, r3, #4
movs r5, #0x2e
ldrsh r1, [r2, r5]
cmp r0, r1
bls _080347E0
adds r0, r4, #0
adds r0, #0xe0
cmp r0, r1
blo _080347F8
movs r0, #8
b _080347F0
.align 2, 0
_080347D8: .4byte gLinkEntity
_080347DC: .4byte gRoomControls
_080347E0:
adds r0, r3, #4
cmp r0, r1
bhs _080347F8
adds r0, r4, #0
adds r0, #0x90
cmp r0, r1
bhi _080347F8
movs r0, #0x18
_080347F0:
strb r0, [r2, #0x15]
adds r0, r2, #0
bl sub_0806F69C
_080347F8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080347FC
sub_080347FC: @ 0x080347FC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08034818
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #5
bl sub_080348A4
b _08034822
_08034818:
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #5
bl sub_080348A4
_08034822:
adds r2, r4, #0
adds r2, #0x7d
ldrb r1, [r2]
movs r0, #0x20
orrs r0, r1
strb r0, [r2]
pop {r4, pc}
thumb_func_start sub_08034830
sub_08034830: @ 0x08034830
push {r4, lr}
adds r4, r0, #0
bl sub_080349D8
cmp r0, #0
beq _0803484C
adds r1, r4, #0
adds r1, #0x7d
movs r0, #0x80
strb r0, [r1]
adds r0, r4, #0
bl sub_080345D0
b _080348A0
_0803484C:
adds r0, r4, #0
bl sub_08034A10
cmp r0, #0
beq _080348A0
adds r0, r4, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _08034876
adds r0, r4, #0
bl sub_080349D8
cmp r0, #0
beq _080348A0
adds r0, r4, #0
bl sub_08034420
b _080348A0
_08034876:
adds r2, r4, #0
adds r2, #0x7d
ldrb r0, [r2]
movs r1, #0x20
orrs r1, r0
strb r1, [r2]
movs r0, #0x10
ands r1, r0
cmp r1, #0
beq _08034896
ldr r1, [r4, #0x78]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
b _080348A0
_08034896:
ldr r1, [r4, #0x74]
adds r0, r4, #0
movs r2, #2
bl sub_080348A4
_080348A0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080348A4
sub_080348A4: @ 0x080348A4
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r1, #0
adds r5, r2, #0
ldrb r0, [r3, #0xa]
cmp r0, #0
bne _080348C6
movs r2, #5
movs r0, #0x7d
adds r0, r0, r4
mov ip, r0
ldrb r1, [r0]
movs r0, #0x10
orrs r0, r1
mov r1, ip
strb r0, [r1]
b _080348C8
_080348C6:
movs r2, #0xa
_080348C8:
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
ands r0, r2
cmp r0, #0
beq _080348F0
adds r0, r4, #0
adds r0, #0x7d
ldrb r2, [r0]
ldrb r1, [r3, #0xa]
adds r3, r0, #0
cmp r1, #0
bne _080348E6
movs r0, #1
b _080348E8
_080348E6:
movs r0, #2
_080348E8:
orrs r0, r2
strb r0, [r3]
movs r0, #0
b _08034998
_080348F0:
cmp r5, #8
bhi _08034996
lsls r0, r5, #2
ldr r1, _08034900 @ =_08034904
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08034900: .4byte _08034904
_08034904: @ jump table
.4byte _08034928 @ case 0
.4byte _0803492E @ case 1
.4byte _0803493C @ case 2
.4byte _0803494A @ case 3
.4byte _0803493C @ case 4
.4byte _08034958 @ case 5
.4byte _08034966 @ case 6
.4byte _0803496C @ case 7
.4byte _08034982 @ case 8
_08034928:
movs r0, #3
strb r0, [r3, #0xc]
b _08034996
_0803492E:
movs r0, #4
strb r0, [r3, #0xc]
adds r1, r3, #0
adds r1, #0x7c
movs r0, #3
strb r0, [r1]
b _08034996
_0803493C:
movs r0, #4
strb r0, [r3, #0xc]
adds r1, r3, #0
adds r1, #0x7c
movs r0, #1
strb r0, [r1]
b _08034996
_0803494A:
movs r0, #0xf
strb r0, [r3, #0xc]
adds r1, r3, #0
adds r1, #0x7e
movs r0, #0xb4
strh r0, [r1]
b _08034996
_08034958:
movs r0, #0xf
strb r0, [r3, #0xc]
adds r1, r3, #0
adds r1, #0x7e
movs r0, #1
strh r0, [r1]
b _08034996
_08034966:
movs r0, #0x1e
strb r0, [r3, #0xc]
b _08034996
_0803496C:
movs r0, #0x1b
strb r0, [r3, #0xc]
ldrb r1, [r3, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r3, #0x10]
adds r0, r3, #0
movs r1, #5
bl sub_08004260
b _08034996
_08034982:
ldrb r0, [r3, #0xa]
adds r2, r0, #2
movs r0, #0x36
adds r1, r2, #0
bl CreateEnemy
adds r3, r0, #0
cmp r3, #0
beq _08034996
str r4, [r3, #0x50]
_08034996:
movs r0, #1
_08034998:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803499C
sub_0803499C: @ 0x0803499C
push {lr}
adds r3, r0, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #0xc
ands r0, r1
cmp r0, #0xc
beq _080349D0
adds r0, r3, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _080349D0
ldr r2, _080349D4 @ =gUnk_080CED6C
ldrb r0, [r3, #0xf]
adds r0, #1
strb r0, [r3, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x1c
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
strh r0, [r3, #0x36]
_080349D0:
pop {pc}
.align 2, 0
_080349D4: .4byte gUnk_080CED6C
thumb_func_start sub_080349D8
sub_080349D8: @ 0x080349D8
push {lr}
adds r2, r0, #0
adds r0, #0x7d
ldrb r0, [r0]
movs r1, #3
ands r1, r0
cmp r1, #3
beq _08034A08
cmp r1, #1
bne _080349F6
adds r0, r2, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #0xa
b _08034A02
_080349F6:
cmp r1, #2
bne _08034A0C
adds r0, r2, #0
adds r0, #0x80
ldrb r1, [r0]
movs r0, #5
_08034A02:
ands r0, r1
cmp r0, #0
beq _08034A0C
_08034A08:
movs r0, #1
b _08034A0E
_08034A0C:
movs r0, #0
_08034A0E:
pop {pc}
thumb_func_start sub_08034A10
sub_08034A10: @ 0x08034A10
push {r4, lr}
adds r1, r0, #0
adds r3, r1, #0
adds r3, #0x7d
ldrb r2, [r3]
movs r0, #0x60
ands r0, r2
cmp r0, #0x40
beq _08034A52
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _08034A56
adds r4, r1, #0
adds r4, #0x80
ldrb r1, [r4]
movs r0, #5
ands r0, r1
cmp r0, #0
beq _08034A3E
movs r0, #0x40
orrs r0, r2
strb r0, [r3]
_08034A3E:
ldrb r1, [r4]
movs r0, #0xa
ands r0, r1
cmp r0, #0
beq _08034A7E
ldrb r1, [r3]
movs r0, #3
ands r0, r1
cmp r0, #1
bne _08034A7E
_08034A52:
movs r0, #1
b _08034A80
_08034A56:
adds r4, r1, #0
adds r4, #0x80
ldrb r1, [r4]
movs r0, #0xa
ands r0, r1
cmp r0, #0
beq _08034A6A
movs r0, #0x40
orrs r0, r2
strb r0, [r3]
_08034A6A:
ldrb r1, [r4]
movs r0, #5
ands r0, r1
cmp r0, #0
beq _08034A7E
ldrb r1, [r3]
movs r0, #3
ands r0, r1
cmp r0, #2
beq _08034A52
_08034A7E:
movs r0, #0
_08034A80:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034A84
sub_08034A84: @ 0x08034A84
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08034A98
adds r0, r4, #0
bl sub_0805E7BC
b _08034AC2
_08034A98:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08034ABA
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_08034ABA:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl sub_0806FA6C
_08034AC2:
pop {r4, pc}
thumb_func_start sub_08034AC4
sub_08034AC4: @ 0x08034AC4
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
movs r3, #0x80
lsls r3, r3, #9
adds r1, r4, #0
movs r2, #0
bl PositionRelative
ldr r1, _08034AE8 @ =gUnk_080CED74
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_08034AE8: .4byte gUnk_080CED74
thumb_func_start sub_08034AEC
sub_08034AEC: @ 0x08034AEC
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0x1e
strb r1, [r0, #0xe]
ldrb r1, [r0, #0xa]
adds r1, #1
bl sub_08004260
ldr r0, _08034B08 @ =0x00000151
bl PlaySFX
pop {pc}
.align 2, 0
_08034B08: .4byte 0x00000151
thumb_func_start sub_08034B0C
sub_08034B0C: @ 0x08034B0C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08034B1A
subs r0, #1
b _08034B34
_08034B1A:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08034B36
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x50
_08034B34:
strb r0, [r4, #0xe]
_08034B36:
pop {r4, pc}
thumb_func_start sub_08034B38
sub_08034B38: @ 0x08034B38
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08034B58
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
adds r1, #3
adds r0, r4, #0
bl sub_08004260
b _08034B9A
_08034B58:
movs r0, #0xe
bl sub_080A7EE0
adds r5, r0, #0
cmp r5, #0
beq _08034B9A
ldrb r0, [r4, #0xa]
subs r0, #2
strb r0, [r5, #0xa]
lsls r0, r0, #0x18
cmp r0, #0
bne _08034B78
ldrb r1, [r4, #0xe]
movs r0, #0xa8
subs r0, r0, r1
b _08034B7C
_08034B78:
ldrb r0, [r4, #0xe]
adds r0, #0x58
_08034B7C:
strb r0, [r5, #0x15]
ldrb r0, [r5, #0xa]
lsls r0, r0, #1
ldr r1, _08034B9C @ =gUnk_080CED84
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
_08034B9A:
pop {r4, r5, pc}
.align 2, 0
_08034B9C: .4byte gUnk_080CED84
thumb_func_start sub_08034BA0
sub_08034BA0: @ 0x08034BA0
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08034BC4
ldr r0, [r4, #0x50]
adds r0, #0x7e
movs r1, #0xff
strh r1, [r0]
adds r0, r4, #0
bl sub_0805E7BC
_08034BC4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034BC8
sub_08034BC8: @ 0x08034BC8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08034BDE
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_08034BDE:
ldr r0, [r4, #0x50]
adds r1, r4, #0
movs r2, #0
movs r3, #1
bl sub_0806FA90
adds r0, r4, #0
bl sub_0800445C
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08034BFE
adds r0, r4, #0
bl sub_08034C00
_08034BFE:
pop {r4, pc}
thumb_func_start sub_08034C00
sub_08034C00: @ 0x08034C00
push {r4, lr}
adds r3, r0, #0
ldr r0, _08034C44 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08034C5A
movs r1, #0x2e
ldrsh r0, [r3, r1]
ldr r2, _08034C48 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
movs r4, #0x32
ldrsh r1, [r3, r4]
ldrh r2, [r2, #8]
subs r1, r1, r2
adds r1, #0xd
movs r2, #3
movs r3, #3
bl sub_0800293E
cmp r0, #0
beq _08034C5A
ldr r0, _08034C4C @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0x3c
bls _08034C54
ldr r0, _08034C50 @ =gUnk_080CED88
bl sub_08080840
b _08034C5A
.align 2, 0
_08034C44: .4byte gLinkState
_08034C48: .4byte gRoomControls
_08034C4C: .4byte gUnk_030010A0
_08034C50: .4byte gUnk_080CED88
_08034C54:
ldr r0, _08034C5C @ =gUnk_080CED9C
bl sub_08080840
_08034C5A:
pop {r4, pc}
.align 2, 0
_08034C5C: .4byte gUnk_080CED9C
thumb_func_start sub_08034C60
sub_08034C60: @ 0x08034C60
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _08034C78 @ =gUnk_080CEE90
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_08034C78: .4byte gUnk_080CEE90
thumb_func_start sub_08034C7C
sub_08034C7C: @ 0x08034C7C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #2
beq _08034C9C
ldr r0, _08034C98 @ =gUnk_080CEEA4
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _08034CA2
.align 2, 0
_08034C98: .4byte gUnk_080CEEA4
_08034C9C:
adds r0, r2, #0
bl sub_08034E18
_08034CA2:
pop {pc}
thumb_func_start sub_08034CA4
sub_08034CA4: @ 0x08034CA4
push {r4, lr}
adds r4, r0, #0
bl sub_08034FA0
ldr r1, _08034CB8 @ =gUnk_080CEE90
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08034CB8: .4byte gUnk_080CEE90
thumb_func_start sub_08034CBC
sub_08034CBC: @ 0x08034CBC
push {lr}
bl sub_0804A7D4
pop {pc}
thumb_func_start sub_08034CC4
sub_08034CC4: @ 0x08034CC4
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_08035084
cmp r0, #0
beq _08034D42
ldrb r0, [r5, #0xa]
adds r0, #1
movs r1, #0
strb r0, [r5, #0xc]
strb r1, [r5, #0xf]
adds r2, r5, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #1
orrs r0, r1
strb r0, [r2]
adds r1, r5, #0
adds r1, #0x78
movs r0, #0x96
lsls r0, r0, #3
strh r0, [r1]
adds r0, r5, #0
bl sub_08034F70
ldrb r1, [r5, #0xa]
adds r0, r5, #0
bl sub_08004260
ldr r0, _08034D44 @ =0x00004022
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08034D48 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
movs r0, #0x37
movs r1, #2
bl CreateEnemy
adds r1, r0, #0
cmp r1, #0
beq _08034D42
str r1, [r5, #0x54]
str r5, [r1, #0x50]
adds r0, r5, #0
bl CopyPosition
_08034D42:
pop {r4, r5, r6, pc}
.align 2, 0
_08034D44: .4byte 0x00004022
_08034D48: .4byte gRoomControls
thumb_func_start sub_08034D4C
sub_08034D4C: @ 0x08034D4C
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_08004274
adds r6, r5, #0
adds r6, #0x78
ldrh r0, [r6]
subs r0, #1
strh r0, [r6]
lsls r0, r0, #0x10
cmp r0, #0
bne _08034DC4
ldrb r0, [r5, #0xf]
cmp r0, #7
bhi _08034DBC
movs r0, #0x4b
movs r1, #0
bl CreateEnemy
adds r4, r0, #0
cmp r4, #0
beq _08034DBC
bl Random
movs r1, #5
bl __modsi3
adds r0, #0xc
strb r0, [r4, #0x15]
ldr r1, _08034DB8 @ =gRoomControls
ldrh r0, [r1, #0x1e]
lsrs r0, r0, #1
ldrh r2, [r1, #6]
adds r0, r0, r2
strh r0, [r4, #0x2e]
ldrh r0, [r1, #8]
adds r0, #8
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
str r5, [r4, #0x50]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r6]
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
b _08034DC4
.align 2, 0
_08034DB8: .4byte gRoomControls
_08034DBC:
adds r1, r5, #0
adds r1, #0x78
movs r0, #0x78
strh r0, [r1]
_08034DC4:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08034DC8
sub_08034DC8: @ 0x08034DC8
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, _08034E10 @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0
bne _08034E0E
adds r0, r4, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08034E14 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r5, #0x32
ldrsh r1, [r4, r5]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_0807BA8C
bl sub_0805E780
_08034E0E:
pop {r4, r5, pc}
.align 2, 0
_08034E10: .4byte gUnk_030010A0
_08034E14: .4byte gRoomControls
thumb_func_start sub_08034E18
sub_08034E18: @ 0x08034E18
push {lr}
ldr r2, _08034E2C @ =gUnk_080CEEB0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08034E2C: .4byte gUnk_080CEEB0
thumb_func_start sub_08034E30
sub_08034E30: @ 0x08034E30
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xa]
adds r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
movs r1, #0x39
rsbs r1, r1, #0
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
movs r1, #2
bl sub_08004260
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034E68
sub_08034E68: @ 0x08034E68
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08034EBC
ldrb r1, [r4, #0x18]
lsls r0, r1, #0x1e
cmp r0, #0
beq _08034E8A
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
bl sub_08035120
_08034E8A:
ldr r0, _08034EB0 @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0
bne _08034EB8
bl sub_08079F8C
cmp r0, #0
beq _08034EBC
movs r0, #3
strb r0, [r4, #0xc]
ldr r1, _08034EB4 @ =gUnk_08012E20
adds r0, r4, #0
bl sub_0807DAD0
adds r1, r4, #0
adds r1, #0x84
str r0, [r1]
b _08034EBC
.align 2, 0
_08034EB0: .4byte gUnk_030010A0
_08034EB4: .4byte gUnk_08012E20
_08034EB8:
bl sub_0805E780
_08034EBC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08034EC0
sub_08034EC0: @ 0x08034EC0
push {lr}
adds r1, r0, #0
ldr r0, [r1, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08034ED6
adds r0, r1, #0
bl sub_08035120
bl sub_0805E780
_08034ED6:
pop {pc}
thumb_func_start sub_08034ED8
sub_08034ED8: @ 0x08034ED8
push {lr}
movs r1, #0
bl sub_0807DDAC
pop {pc}
.align 2, 0
thumb_func_start sub_08034EE4
sub_08034EE4: @ 0x08034EE4
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
adds r0, #1
strb r0, [r5, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _08034F46
bl Random
adds r4, r0, #0
ldr r0, _08034F50 @ =gUnk_080CEEC8
movs r1, #3
ands r1, r4
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r5, #0
movs r2, #0
bl CreateFX
adds r3, r0, #0
cmp r3, #0
beq _08034F46
lsrs r1, r4, #2
movs r0, #0x77
ands r1, r0
lsls r1, r1, #1
adds r1, #1
ldr r2, _08034F54 @ =gRoomControls
ldrh r0, [r2, #0xa]
adds r0, r0, r1
strh r0, [r3, #0x2e]
lsrs r1, r4, #9
movs r0, #0x7e
ands r1, r0
adds r1, #1
ldrh r0, [r2, #0xc]
adds r0, r0, r1
strh r0, [r3, #0x32]
adds r1, r3, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r3, #0
bl UpdateSpriteOrderAndFlip
_08034F46:
adds r0, r5, #0
movs r1, #0
bl sub_0807DDAC
pop {r4, r5, pc}
.align 2, 0
_08034F50: .4byte gUnk_080CEEC8
_08034F54: .4byte gRoomControls
thumb_func_start sub_08034F58
sub_08034F58: @ 0x08034F58
push {r4, lr}
adds r4, r0, #0
ldr r0, _08034F6C @ =gUnk_0813ABA8
bl sub_08080840
adds r0, r4, #0
bl sub_0805E7BC
pop {r4, pc}
.align 2, 0
_08034F6C: .4byte gUnk_0813ABA8
thumb_func_start sub_08034F70
sub_08034F70: @ 0x08034F70
push {lr}
adds r2, r0, #0
ldr r0, _08034F8C @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
adds r1, r2, #0
adds r1, #0x45
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bls _08034F90
movs r0, #0
b _08034F9A
.align 2, 0
_08034F8C: .4byte gUnk_030010A0
_08034F90:
cmp r0, #0x1e
bls _08034F98
movs r0, #1
b _08034F9A
_08034F98:
movs r0, #2
_08034F9A:
strb r0, [r2, #0xb]
pop {pc}
.align 2, 0
thumb_func_start sub_08034FA0
sub_08034FA0: @ 0x08034FA0
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r0, #0x3d
ldrb r1, [r0]
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _08034FC0
ldr r0, [r4, #0x54]
adds r0, #0x3d
strb r1, [r0]
movs r0, #0xc
movs r1, #1
bl sub_08080964
_08034FC0:
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _08035008
cmp r0, #1
beq _08035020
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #0
bne _08035040
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08035004 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r6, #0x32
ldrsh r1, [r4, r6]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_0807BA8C
b _08035040
.align 2, 0
_08035004: .4byte gRoomControls
_08035008:
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #0x3b
bhi _08035040
ldr r0, _0803501C @ =gUnk_030010A0
adds r0, #0x39
movs r1, #0x3c
b _08035032
.align 2, 0
_0803501C: .4byte gUnk_030010A0
_08035020:
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #0x1d
bhi _08035040
ldr r0, _0803503C @ =gUnk_030010A0
adds r0, #0x39
movs r1, #0x1e
_08035032:
strb r1, [r0]
adds r0, r4, #0
bl sub_08035050
b _08035048
.align 2, 0
_0803503C: .4byte gUnk_030010A0
_08035040:
ldr r0, _0803504C @ =gUnk_030010A0
ldrb r1, [r5]
adds r0, #0x39
strb r1, [r0]
_08035048:
pop {r4, r5, r6, pc}
.align 2, 0
_0803504C: .4byte gUnk_030010A0
thumb_func_start sub_08035050
sub_08035050: @ 0x08035050
push {r4, lr}
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
movs r4, #0
strb r1, [r0, #0x10]
adds r0, #0x45
strb r4, [r0]
movs r0, #0x4b
movs r1, #0
bl CreateEnemy
adds r2, r0, #0
cmp r2, #0
beq _08035082
movs r0, #1
strb r0, [r2, #0xb]
adds r1, r2, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
str r4, [r2, #0x50]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_08035082:
pop {r4, pc}
thumb_func_start sub_08035084
sub_08035084: @ 0x08035084
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
ldrb r0, [r0, #0xa]
cmp r0, #0
bne _08035118
ldr r0, _080350A0 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x42
bls _080350A4
movs r0, #0
b _0803511A
.align 2, 0
_080350A0: .4byte gUnk_03003DBC
_080350A4:
ldr r4, _080350D8 @ =gUnk_030010D8
_080350A6:
bl Random
movs r1, #6
bl __modsi3
adds r6, r0, #0
ldrb r0, [r4]
lsrs r0, r0, #4
cmp r6, r0
beq _080350A6
ldr r2, _080350DC @ =gUnk_030010A0
adds r2, #0x38
ldrb r1, [r2]
movs r0, #0xf
ands r0, r1
lsls r1, r6, #4
orrs r0, r1
strb r0, [r2]
movs r5, #0
ldr r4, _080350E0 @ =gUnk_080CEECC
ldr r7, _080350E4 @ =gRoomControls
_080350D0:
cmp r5, r6
bne _080350E8
mov r2, r8
b _080350F2
.align 2, 0
_080350D8: .4byte gUnk_030010D8
_080350DC: .4byte gUnk_030010A0
_080350E0: .4byte gUnk_080CEECC
_080350E4: .4byte gRoomControls
_080350E8:
movs r0, #0x37
movs r1, #1
bl CreateEnemy
adds r2, r0, #0
_080350F2:
ldrh r0, [r7, #6]
ldrb r1, [r4]
adds r0, r0, r1
strh r0, [r2, #0x2e]
ldrh r0, [r7, #8]
ldrb r1, [r4, #1]
adds r0, r0, r1
strh r0, [r2, #0x32]
adds r1, r2, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
adds r5, #1
adds r4, #2
cmp r5, #5
bls _080350D0
_08035118:
movs r0, #1
_0803511A:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08035120
sub_08035120: @ 0x08035120
push {r4, r5, r6, lr}
movs r2, #0x2e
ldrsh r1, [r0, r2]
ldr r3, _0803515C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r4, r1, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r0, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
movs r6, #0
ldr r5, _08035160 @ =gUnk_080CEED8
_08035146:
movs r2, #0
ldrsh r0, [r5, r2]
adds r0, r4, r0
bl sub_0807B600
adds r5, #2
adds r6, #1
cmp r6, #0x17
bls _08035146
pop {r4, r5, r6, pc}
.align 2, 0
_0803515C: .4byte gRoomControls
_08035160: .4byte gUnk_080CEED8
thumb_func_start sub_08035164
sub_08035164: @ 0x08035164
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _0803518C
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
ands r1, r2
lsls r1, r1, #6
ldrb r2, [r4, #0x18]
subs r0, #0x42
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_0803518C:
adds r0, r4, #0
bl sub_08035194
pop {r4, pc}
thumb_func_start sub_08035194
sub_08035194: @ 0x08035194
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _080351A8
ldr r0, _080351A4 @ =gUnk_080CEF34
b _080351AA
.align 2, 0
_080351A4: .4byte gUnk_080CEF34
_080351A8:
ldr r0, _080351B8 @ =gUnk_080CEF58
_080351AA:
ldrb r1, [r2, #0x1e]
lsls r1, r1, #2
adds r1, r1, r0
ldr r0, [r1]
str r0, [r2, #0x48]
pop {pc}
.align 2, 0
_080351B8: .4byte gUnk_080CEF58
thumb_func_start sub_080351BC
sub_080351BC: @ 0x080351BC
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _080351D4 @ =gUnk_080CF040
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_080351D4: .4byte gUnk_080CF040
thumb_func_start sub_080351D8
sub_080351D8: @ 0x080351D8
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xa]
cmp r1, #0
bne _08035204
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
adds r0, r4, #0
adds r0, #0x42
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x45
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080368D8
adds r0, r4, #0
bl sub_0803520C
b _08035208
_08035204:
bl sub_0805E780
_08035208:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803520C
sub_0803520C: @ 0x0803520C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #0
bne _08035238
ldrb r0, [r4, #0xd]
cmp r0, #3
beq _0803524C
ldr r2, _08035234 @ =gRoomControls
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
ldr r0, [r1, #0xc]
str r0, [r2, #0x30]
movs r0, #0x5a
strb r0, [r1, #7]
bl sub_08078B48
b _0803524C
.align 2, 0
_08035234: .4byte gRoomControls
_08035238:
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
ldrb r0, [r1, #7]
cmp r0, #0
beq _0803524C
subs r0, #1
strb r0, [r1, #7]
bl sub_08078B48
_0803524C:
ldr r1, _08035284 @ =gUnk_080CF054
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
ldrb r0, [r4, #0xd]
cmp r0, #3
bls _08035266
bl sub_08078B48
_08035266:
adds r0, r4, #0
bl sub_0800445C
adds r0, r4, #0
adds r0, #0x76
ldrh r1, [r0]
subs r0, #2
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
adds r0, r4, #0
bl sub_0805EC9C
pop {r4, pc}
.align 2, 0
_08035284: .4byte gUnk_080CF054
thumb_func_start sub_08035288
sub_08035288: @ 0x08035288
push {r4, lr}
adds r2, r0, #0
adds r0, #0x76
movs r4, #0
movs r1, #0xa0
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r3, r2, #0
adds r3, #0x84
ldr r0, [r3]
strb r4, [r0, #6]
adds r0, r2, #0
adds r0, #0x7c
ldrb r1, [r0]
adds r0, r1, #0
cmp r0, #4
bne _080352C8
strb r0, [r2, #0xd]
ldr r0, _080352C4 @ =gUnk_02034490
movs r1, #1
strb r1, [r0]
bl sub_08078B48
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
b _080352FA
.align 2, 0
_080352C4: .4byte gUnk_02034490
_080352C8:
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080352DA
strb r4, [r2, #0xb]
adds r1, r2, #0
adds r1, #0x79
movs r0, #0x3c
b _080352F4
_080352DA:
ldr r1, [r3]
ldrb r0, [r1, #1]
cmp r0, #3
bls _080352E6
subs r0, #1
strb r0, [r1, #1]
_080352E6:
ldr r0, [r3]
ldr r0, [r0, #0xc]
adds r0, #0x7d
strb r4, [r0]
adds r1, r2, #0
adds r1, #0x79
movs r0, #0x78
_080352F4:
strb r0, [r1]
movs r0, #1
strb r0, [r2, #0xd]
_080352FA:
pop {r4, pc}
thumb_func_start sub_080352FC
sub_080352FC: @ 0x080352FC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r5, r0, #0
adds r0, #0x7c
ldrb r0, [r0]
movs r6, #1
adds r4, r6, #0
ands r4, r0
cmp r4, #0
bne _080353EC
adds r0, r5, #0
adds r0, #0x84
ldr r1, [r0]
ldr r1, [r1, #0xc]
adds r1, #0x7d
ldrb r2, [r1]
mov sb, r0
cmp r2, #0
beq _0803532C
subs r0, r2, #1
strb r0, [r1]
_0803532C:
ldr r3, _0803538C @ =gRoomControls
movs r0, #0x84
lsls r0, r0, #1
adds r1, r0, #0
ldrh r2, [r3, #6]
adds r1, r1, r2
ldrh r0, [r5, #0x2e]
subs r1, r1, r0
adds r1, #4
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldrh r0, [r3, #8]
ldrh r2, [r5, #0x32]
subs r0, r0, r2
adds r0, #0x8c
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r1, #8
bhi _08035356
cmp r0, #8
bls _08035394
_08035356:
mov r1, sb
ldr r0, [r1]
strb r6, [r0, #2]
ldrh r0, [r3, #6]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r2, _08035390 @ =0xFFFFFEF8
adds r1, r1, r2
subs r0, r0, r1
ldrh r1, [r3, #8]
movs r3, #0x32
ldrsh r2, [r5, r3]
subs r2, #0x88
subs r1, r1, r2
bl sub_080045DA
asrs r0, r0, #3
strb r0, [r5, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_080AEF88
adds r7, r5, #0
adds r7, #0x79
b _08035456
.align 2, 0
_0803538C: .4byte gRoomControls
_08035390: .4byte 0xFFFFFEF8
_08035394:
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _080353D8
adds r0, r5, #0
movs r1, #0x87
movs r2, #5
movs r3, #0
bl CreateObjectWithParent
adds r0, r5, #0
movs r1, #0x87
movs r2, #5
movs r3, #1
bl CreateObjectWithParent
adds r0, r5, #0
movs r1, #0x87
movs r2, #5
movs r3, #2
bl CreateObjectWithParent
adds r0, r5, #0
movs r1, #0x87
movs r2, #5
movs r3, #3
bl CreateObjectWithParent
adds r0, r5, #0
movs r1, #0x87
movs r2, #5
movs r3, #4
bl CreateObjectWithParent
strb r6, [r5, #0xb]
_080353D8:
mov r1, sb
ldr r0, [r1]
strb r4, [r0, #2]
adds r1, r5, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
adds r7, r1, #0
b _08035456
_080353EC:
adds r0, r5, #0
adds r0, #0x84
ldr r1, [r0]
ldrb r1, [r1, #1]
subs r4, r1, #1
mov sb, r0
adds r7, r5, #0
adds r7, #0x79
cmp r4, #0
beq _08035438
mov ip, sb
movs r2, #1
mov sl, r2
lsls r0, r4, #2
subs r6, r0, #4
movs r3, #3
mov r8, r3
_0803540E:
mov r1, ip
ldr r0, [r1]
adds r0, #0xc
adds r0, r0, r6
ldr r3, [r0]
ldrb r2, [r3, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
mov r0, sl
orrs r1, r0
mov r0, r8
ands r1, r0
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
subs r6, #4
subs r4, #1
cmp r4, #0
bne _0803540E
_08035438:
ldr r1, _080354AC @ =gUnk_030010A0
ldr r0, [r1]
movs r1, #2
ands r0, r1
cmp r0, #0
beq _08035450
adds r0, r5, #0
movs r1, #0x87
movs r2, #6
movs r3, #0
bl CreateObjectWithParent
_08035450:
ldrb r0, [r7]
subs r0, #1
strb r0, [r7]
_08035456:
ldrb r0, [r7]
cmp r0, #0
bne _080354E8
movs r0, #2
strb r0, [r5, #0xd]
adds r4, r5, #0
adds r4, #0x7c
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
adds r0, r5, #0
bl sub_080AE068
ldrb r1, [r4]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _080354B0
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0x5f
strb r0, [r1]
movs r1, #0x84
lsls r1, r1, #1
adds r0, r5, #0
bl sub_080ADF80
adds r0, r5, #0
movs r1, #0xef
bl sub_0801D2B4
adds r0, r5, #0
movs r1, #0xef
bl sub_08036F14
mov r2, sb
ldr r0, [r2]
ldr r0, [r0, #0xc]
movs r1, #1
bl sub_080042AC
b _080354DC
.align 2, 0
_080354AC: .4byte gUnk_030010A0
_080354B0:
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0x61
strb r0, [r1]
ldr r1, _080354F4 @ =0x00000109
adds r0, r5, #0
bl sub_080ADF80
adds r0, r5, #0
movs r1, #0xf0
bl sub_0801D2B4
adds r0, r5, #0
movs r1, #0xf3
bl sub_08036F14
mov r3, sb
ldr r0, [r3]
ldr r0, [r0, #0xc]
movs r1, #2
bl sub_080042AC
_080354DC:
adds r0, r5, #0
movs r1, #0x87
movs r2, #8
movs r3, #0
bl CreateObjectWithParent
_080354E8:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080354F4: .4byte 0x00000109
thumb_func_start sub_080354F8
sub_080354F8: @ 0x080354F8
push {lr}
adds r1, r0, #0
adds r0, #0x84
ldr r0, [r0]
ldr r0, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7d
ldrb r0, [r2]
cmp r0, #0x80
beq _08035512
adds r0, #1
strb r0, [r2]
b _08035522
_08035512:
movs r0, #3
strb r0, [r1, #0xd]
adds r1, #0x79
movs r0, #0x96
strb r0, [r1]
ldr r1, _08035524 @ =gRoomControls
ldr r0, _08035528 @ =gLinkEntity
str r0, [r1, #0x30]
_08035522:
pop {pc}
.align 2, 0
_08035524: .4byte gRoomControls
_08035528: .4byte gLinkEntity
thumb_func_start sub_0803552C
sub_0803552C: @ 0x0803552C
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
movs r3, #0
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035570
ldr r1, _08035574 @ =gUnk_080CF070
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
adds r0, r0, r1
ldrb r0, [r0]
adds r1, r2, #0
adds r1, #0x45
strb r0, [r1]
ldrb r0, [r2, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
movs r0, #1
strb r0, [r2, #0xc]
strb r3, [r2, #0xd]
adds r0, r2, #0
adds r0, #0x7e
strb r3, [r0]
adds r0, r2, #0
bl sub_08036DA0
_08035570:
pop {pc}
.align 2, 0
_08035574: .4byte gUnk_080CF070
thumb_func_start sub_08035578
sub_08035578: @ 0x08035578
push {lr}
movs r1, #5
strb r1, [r0, #0xd]
movs r1, #0x87
movs r2, #9
movs r3, #0
bl CreateObjectWithParent
adds r1, r0, #0
cmp r1, #0
beq _08035592
ldr r0, _08035594 @ =gRoomControls
str r1, [r0, #0x30]
_08035592:
pop {pc}
.align 2, 0
_08035594: .4byte gRoomControls
thumb_func_start sub_08035598
sub_08035598: @ 0x08035598
adds r2, r0, #0
movs r1, #0
movs r0, #6
strb r0, [r2, #0xd]
adds r3, r2, #0
adds r3, #0x79
movs r0, #0x78
strb r0, [r3]
adds r0, r2, #0
adds r0, #0x80
strb r1, [r0]
adds r0, #2
strb r1, [r0]
bx lr
thumb_func_start sub_080355B4
sub_080355B4: @ 0x080355B4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r7, r0, #0
adds r1, r7, #0
adds r1, #0x7b
ldrb r0, [r1]
subs r0, #4
strb r0, [r1]
adds r1, #6
ldrb r0, [r1]
adds r0, #8
strb r0, [r1]
adds r4, r7, #0
adds r4, #0x80
ldrb r1, [r4]
movs r5, #0x80
adds r0, r5, #0
ands r0, r1
cmp r0, #0
beq _080355FA
bl Random
movs r1, #3
ands r0, r1
ldrb r1, [r4]
subs r1, r1, r0
strb r1, [r4]
ands r1, r5
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
cmp r1, #0
bne _08035616
b _08035614
_080355FA:
bl Random
movs r1, #3
ands r0, r1
ldrb r2, [r4]
adds r1, r0, r2
strb r1, [r4]
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x18
bls _08035616
movs r0, #0x80
orrs r1, r0
_08035614:
strb r1, [r4]
_08035616:
ldr r0, _080356E4 @ =gUnk_080C9160
mov r8, r0
movs r1, #0x81
adds r1, r1, r7
mov sb, r1
ldrb r0, [r1]
lsls r0, r0, #1
add r0, r8
movs r2, #0
ldrsh r0, [r0, r2]
adds r6, r7, #0
adds r6, #0x80
ldrb r2, [r6]
movs r4, #0x7f
adds r1, r4, #0
ands r1, r2
lsls r1, r1, #8
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r5, #0x80
lsls r5, r5, #1
adds r1, r5, #0
bl sub_0806FA04
lsrs r0, r0, #8
adds r1, r7, #0
adds r1, #0x62
strb r0, [r1]
mov r1, sb
ldrb r0, [r1]
adds r0, #0x40
lsls r0, r0, #1
add r0, r8
movs r2, #0
ldrsh r0, [r0, r2]
ldrb r1, [r6]
ands r4, r1
lsls r4, r4, #8
adds r1, r4, #0
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r5, #0
bl sub_0806FA04
lsls r0, r0, #0x10
asrs r0, r0, #8
rsbs r0, r0, #0
asrs r0, r0, #0x10
adds r1, r7, #0
adds r1, #0x63
strb r0, [r1]
adds r1, #0x16
ldrb r0, [r1]
cmp r0, #0
bne _080356EC
ldr r0, _080356E8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _080356B2
adds r0, r7, #0
movs r1, #0x48
movs r2, #0
bl CreateFX
adds r0, r7, #0
adds r0, #0x84
ldr r0, [r0]
ldr r0, [r0, #0x20]
movs r1, #0x48
movs r2, #0
bl CreateFX
_080356B2:
adds r1, r7, #0
adds r1, #0x82
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x79
bne _080356F0
adds r0, r7, #0
adds r0, #0x84
ldr r0, [r0]
ldr r0, [r0, #8]
adds r0, #0x45
movs r1, #1
strb r1, [r0]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
adds r0, r7, #0
bl sub_0804A7D4
b _080356F0
.align 2, 0
_080356E4: .4byte gUnk_080C9160
_080356E8: .4byte gUnk_030010A0
_080356EC:
subs r0, #1
strb r0, [r1]
_080356F0:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_080356F8
sub_080356F8: @ 0x080356F8
push {r4, lr}
adds r4, r0, #0
ldr r1, _08035718 @ =gUnk_080CF078
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, #0x19]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x19]
pop {r4, pc}
.align 2, 0
_08035718: .4byte gUnk_080CF078
thumb_func_start sub_0803571C
sub_0803571C: @ 0x0803571C
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x18]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xa]
cmp r0, #6
bls _0803573A
b _08035974
_0803573A:
lsls r0, r0, #2
ldr r1, _08035744 @ =_08035748
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08035744: .4byte _08035748
_08035748: @ jump table
.4byte _08035764 @ case 0
.4byte _080358D8 @ case 1
.4byte _080358D8 @ case 2
.4byte _080358D8 @ case 3
.4byte _080358D8 @ case 4
.4byte _08035920 @ case 5
.4byte _08035940 @ case 6
_08035764:
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, #0x7c
movs r5, #0
strb r5, [r0]
movs r0, #1
strb r0, [r4, #0xe]
movs r0, #0x30
bl sub_0801D8E0
adds r2, r0, #0
adds r0, r4, #0
adds r0, #0x84
str r2, [r0]
mov r8, r0
cmp r2, #0
bne _0803579E
adds r0, r4, #0
bl sub_0804A7D4
b _080359A6
_0803579E:
str r2, [r4, #0x64]
mov r1, r8
ldr r0, [r1]
strb r5, [r0, #6]
ldr r1, [r1]
movs r0, #2
strb r0, [r1]
mov r2, r8
ldr r0, [r2]
strb r5, [r0, #2]
ldr r1, [r2]
movs r0, #5
strb r0, [r1, #1]
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x6d
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x76
movs r1, #0xa0
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r0, #6
strh r5, [r0]
movs r5, #0
movs r0, #0x79
adds r0, r0, r4
mov sb, r0
mov r7, r8
_080357E6:
adds r6, r5, #1
movs r0, #0x39
adds r1, r6, #0
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08035816
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
ldr r1, [r7]
str r1, [r0]
ldr r1, [r7]
lsls r0, r5, #2
adds r1, #0x20
adds r1, r1, r0
ldr r0, [r4, #0x54]
str r0, [r1]
_08035816:
adds r5, r6, #0
cmp r5, #3
bls _080357E6
movs r0, #0x39
movs r1, #5
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08035840
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
mov r2, r8
ldr r1, [r2]
str r1, [r0]
_08035840:
movs r0, #0x39
movs r1, #6
bl CreateEnemy
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _0803586A
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
mov r2, r8
ldr r1, [r2]
str r1, [r0]
ldr r1, [r2]
ldr r0, [r4, #0x54]
str r0, [r1, #0xc]
_0803586A:
movs r5, #0
mov r7, r8
_0803586E:
movs r0, #0x39
movs r1, #7
bl CreateEnemy
str r0, [r4, #0x54]
adds r6, r5, #1
cmp r0, #0
beq _080358A0
strb r5, [r0, #0xb]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl CopyPosition
ldr r0, [r4, #0x54]
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r0, #0x84
ldr r1, [r7]
str r1, [r0]
ldr r1, [r7]
lsls r0, r6, #2
adds r1, #0xc
adds r1, r1, r0
ldr r0, [r4, #0x54]
str r0, [r1]
_080358A0:
adds r5, r6, #0
cmp r5, #3
bls _0803586E
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x3c
mov r1, sb
strb r0, [r1]
ldr r1, _080358D0 @ =gLinkEntity
ldrb r2, [r1, #0x18]
subs r0, #0x40
ands r0, r2
strb r0, [r1, #0x18]
ldrh r0, [r4, #0x2e]
strh r0, [r1, #0x2e]
ldrh r0, [r4, #0x32]
subs r0, #0xa0
strh r0, [r1, #0x32]
ldr r0, _080358D4 @ =gRoomControls
str r4, [r0, #0x30]
b _08035974
.align 2, 0
_080358D0: .4byte gLinkEntity
_080358D4: .4byte gRoomControls
_080358D8:
movs r1, #0
movs r0, #0x10
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x79
strb r1, [r0]
ldrb r1, [r4, #0xa]
movs r2, #2
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _080358F4
strb r2, [r4, #0xf]
b _080358F8
_080358F4:
movs r0, #0xfe
strb r0, [r4, #0xf]
_080358F8:
adds r0, r4, #0
adds r0, #0x74
movs r2, #0x80
lsls r2, r2, #1
strh r2, [r0]
ldrb r1, [r4, #0xa]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08035918
adds r1, r4, #0
adds r1, #0x76
movs r0, #0xff
lsls r0, r0, #8
strh r0, [r1]
b _08035974
_08035918:
adds r0, r4, #0
adds r0, #0x76
strh r2, [r0]
b _08035974
_08035920:
adds r0, r4, #0
adds r0, #0x76
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x1c
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
str r4, [r0, #8]
b _08035974
_08035940:
adds r0, r4, #0
adds r0, #0x76
movs r2, #0
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r0]
subs r0, #2
strh r1, [r0]
adds r3, r4, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x79
strb r2, [r0]
movs r0, #0x10
strb r0, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x7d
movs r0, #0x80
strb r0, [r1]
_08035974:
ldrb r0, [r4, #0xa]
cmp r0, #6
beq _08035990
ldr r0, _0803598C @ =gUnk_080CF08C
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl sub_08004260
b _080359A0
.align 2, 0
_0803598C: .4byte gUnk_080CF08C
_08035990:
ldr r0, _080359B0 @ =gUnk_080CF08C
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
bl sub_080042AC
_080359A0:
adds r0, r4, #0
bl sub_08035B94
_080359A6:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080359B0: .4byte gUnk_080CF08C
thumb_func_start sub_080359B4
sub_080359B4: @ 0x080359B4
push {r4, lr}
adds r4, r0, #0
bl sub_08078B48
ldr r1, _080359F0 @ =gUnk_02034490
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_08036F60
ldr r1, _080359F4 @ =gUnk_080CF0AC
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
adds r0, #0x76
ldrh r1, [r0]
subs r0, #2
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
adds r0, r4, #0
bl sub_0805EC9C
pop {r4, pc}
.align 2, 0
_080359F0: .4byte gUnk_02034490
_080359F4: .4byte gUnk_080CF0AC
thumb_func_start sub_080359F8
sub_080359F8: @ 0x080359F8
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035A22
movs r0, #1
strb r0, [r2, #0xd]
adds r1, #9
adds r0, #0xff
strh r0, [r1]
adds r0, r2, #0
adds r0, #0x84
ldr r1, [r0]
movs r0, #2
strb r0, [r1]
_08035A22:
pop {pc}
thumb_func_start sub_08035A24
sub_08035A24: @ 0x08035A24
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0x80
bne _08035A54
adds r2, r4, #0
adds r2, #0x79
movs r1, #0
movs r0, #0x3c
strb r0, [r2]
movs r0, #2
strb r0, [r4, #0xd]
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
strb r1, [r0]
ldr r0, _08035A50 @ =0x00000159
bl PlaySFX
b _08035A64
.align 2, 0
_08035A50: .4byte 0x00000159
_08035A54:
adds r1, r4, #0
adds r1, #0x7a
adds r0, r4, #0
adds r0, #0x82
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
_08035A64:
adds r0, r4, #0
movs r1, #0xf
bl sub_08036FAC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08035A70
sub_08035A70: @ 0x08035A70
push {r4, lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035AA8
movs r0, #3
strb r0, [r2, #0xd]
movs r0, #0x3c
strb r0, [r1]
ldr r2, _08035AAC @ =gLinkEntity
ldrb r3, [r2, #0x18]
lsls r1, r3, #0x1e
lsrs r1, r1, #0x1e
movs r4, #1
orrs r1, r4
subs r0, #0x40
ands r0, r3
orrs r0, r1
strb r0, [r2, #0x18]
ldr r0, _08035AB0 @ =gRoomControls
str r2, [r0, #0x30]
strb r4, [r0, #0xe]
_08035AA8:
pop {r4, pc}
.align 2, 0
_08035AAC: .4byte gLinkEntity
_08035AB0: .4byte gRoomControls
thumb_func_start sub_08035AB4
sub_08035AB4: @ 0x08035AB4
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r6, #0
adds r5, #0x79
ldrb r0, [r5]
subs r0, #1
strb r0, [r5]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035AE4
ldr r1, _08035AE8 @ =gLinkEntity
movs r0, #0x10
strb r0, [r1, #0x15]
movs r4, #4
strb r4, [r1, #0x14]
movs r0, #0x1e
movs r1, #0
movs r2, #0
bl sub_08078AC0
movs r0, #0x3c
strb r0, [r5]
strb r4, [r6, #0xd]
_08035AE4:
pop {r4, r5, r6, pc}
.align 2, 0
_08035AE8: .4byte gLinkEntity
thumb_func_start sub_08035AEC
sub_08035AEC: @ 0x08035AEC
push {lr}
adds r3, r0, #0
adds r2, r3, #0
adds r2, #0x79
ldrb r0, [r2]
subs r1, r0, #1
strb r1, [r2]
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035B18
movs r0, #5
strb r0, [r3, #0xd]
movs r0, #0x2d
strb r0, [r2]
ldr r1, _08035B14 @ =gLinkEntity
movs r0, #0
strb r0, [r1, #0x14]
b _08035B2C
.align 2, 0
_08035B14: .4byte gLinkEntity
_08035B18:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1e
bne _08035B2C
ldr r0, _08035B30 @ =gLinkEntity
movs r2, #0x18
rsbs r2, r2, #0
movs r1, #0xc
bl sub_080A2CFC
_08035B2C:
pop {pc}
.align 2, 0
_08035B30: .4byte gLinkEntity
thumb_func_start sub_08035B34
sub_08035B34: @ 0x08035B34
push {r4, r5, lr}
adds r3, r0, #0
ldr r2, _08035B70 @ =gLinkEntity
ldrb r5, [r2, #0x14]
cmp r5, #4
bne _08035B7C
adds r2, r3, #0
adds r2, #0x79
ldrb r0, [r2]
adds r1, r0, #1
strb r1, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1e
bls _08035B92
movs r4, #0
movs r0, #1
strb r0, [r3, #0xc]
strb r4, [r3, #0xd]
ldr r0, _08035B74 @ =gRoomControls
strb r5, [r0, #0xe]
adds r0, r3, #0
bl sub_08036C90
ldr r0, _08035B78 @ =gUnk_02034490
strb r4, [r0]
movs r0, #0x2e
bl PlaySFX
b _08035B92
.align 2, 0
_08035B70: .4byte gLinkEntity
_08035B74: .4byte gRoomControls
_08035B78: .4byte gUnk_02034490
_08035B7C:
adds r1, r3, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08035B92
movs r0, #4
strb r0, [r2, #0x14]
_08035B92:
pop {r4, r5, pc}
thumb_func_start sub_08035B94
sub_08035B94: @ 0x08035B94
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #0
beq _08035BAE
ldr r0, [r5, #0x50]
adds r0, #0x3d
ldrb r0, [r0]
adds r1, r5, #0
adds r1, #0x3d
strb r0, [r1]
_08035BAE:
ldrb r0, [r5, #0xa]
cmp r0, #7
bls _08035BB6
b _08035F6C
_08035BB6:
lsls r0, r0, #2
ldr r1, _08035BC0 @ =_08035BC4
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08035BC0: .4byte _08035BC4
_08035BC4: @ jump table
.4byte _08035F16 @ case 0
.4byte _08035BE4 @ case 1
.4byte _08035BE4 @ case 2
.4byte _08035BE4 @ case 3
.4byte _08035BE4 @ case 4
.4byte _08035E78 @ case 5
.4byte _08035DB0 @ case 6
.4byte _08035D14 @ case 7
_08035BE4:
ldr r0, [r5, #0x50]
adds r0, #0x6d
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08035BF6
bl sub_0805E780
_08035BF6:
adds r1, r5, #0
adds r1, #0x84
ldr r0, [r1]
ldr r0, [r0, #8]
adds r0, #0x45
ldrb r0, [r0]
adds r6, r1, #0
adds r7, r5, #0
adds r7, #0x76
movs r1, #0x74
adds r1, r1, r5
mov r8, r1
cmp r0, #1
bne _08035C42
ldrh r1, [r7]
movs r2, #0
ldrsh r0, [r7, r2]
cmp r0, #0
bge _08035C20
subs r0, r1, #4
b _08035C22
_08035C20:
adds r0, r1, #4
_08035C22:
strh r0, [r7]
adds r0, r5, #0
adds r0, #0x74
ldrh r2, [r0]
movs r3, #0
ldrsh r1, [r0, r3]
mov r8, r0
cmp r1, #0
bge _08035C3C
subs r0, r2, #4
mov r1, r8
strh r0, [r1]
b _08035C42
_08035C3C:
adds r0, r2, #4
mov r2, r8
strh r0, [r2]
_08035C42:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAD8
ldr r0, [r6]
ldrb r0, [r0, #2]
cmp r0, #0
bne _08035C66
ldr r1, [r5, #0x50]
ldrb r0, [r1, #0xc]
cmp r0, #3
beq _08035C66
ldrb r0, [r1, #0xd]
subs r0, #3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08035C82
_08035C66:
movs r0, #0xf
ldrsb r0, [r5, r0]
cmp r0, #0
bge _08035C76
ldr r0, [r6]
ldrb r0, [r0]
rsbs r0, r0, #0
b _08035C7A
_08035C76:
ldr r0, [r6]
ldrb r0, [r0]
_08035C7A:
strb r0, [r5, #0xf]
adds r0, r5, #0
bl sub_08036998
_08035C82:
ldr r4, [r5, #0x50]
adds r0, r4, #0
adds r0, #0x76
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #9
bl __divsi3
adds r3, r0, #0
lsls r0, r3, #0xd
lsrs r3, r0, #8
ldr r0, _08035CB0 @ =0xFFFFE000
adds r3, r3, r0
ldr r0, [r6]
ldr r0, [r0, #8]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #1
bne _08035CB4
movs r1, #0x88
lsls r1, r1, #6
adds r3, r3, r1
b _08035CBC
.align 2, 0
_08035CB0: .4byte 0xFFFFE000
_08035CB4:
lsrs r0, r3, #1
movs r2, #0x88
lsls r2, r2, #6
adds r3, r0, r2
_08035CBC:
adds r2, r4, #0
adds r2, #0x7b
ldr r1, _08035D0C @ =gUnk_080CF0D8
ldrb r0, [r5, #0xa]
subs r0, #1
adds r0, r0, r1
ldrb r0, [r0]
ldrb r2, [r2]
adds r0, r0, r2
rsbs r0, r0, #0
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r0, r5, #0
adds r2, r3, #0
bl sub_08036914
ldr r2, [r5, #0x50]
adds r2, #0x7b
ldr r1, _08035D10 @ =gUnk_080CF0DC
ldrb r0, [r5, #0xa]
subs r0, #1
adds r0, r0, r1
ldrb r1, [r0]
ldrb r2, [r2]
adds r1, r1, r2
adds r0, r5, #0
adds r0, #0x79
ldrb r0, [r0]
adds r0, r0, r1
adds r1, r5, #0
adds r1, #0x7b
strb r0, [r1]
ldrh r1, [r7]
mov r3, r8
ldrh r2, [r3]
adds r0, r5, #0
adds r0, #0x7a
ldrh r3, [r0]
b _08035E70
.align 2, 0
_08035D0C: .4byte gUnk_080CF0D8
_08035D10: .4byte gUnk_080CF0DC
_08035D14:
adds r4, r5, #0
adds r4, #0x84
ldr r0, [r4]
ldr r0, [r0, #8]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #1
bhi _08035D28
bl sub_0805E780
_08035D28:
ldr r0, [r4]
ldrb r0, [r0, #1]
subs r0, #2
ldrb r1, [r5, #0xb]
cmp r0, r1
bge _08035D38
bl sub_0805E780
_08035D38:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAB0
ldr r0, [r4]
ldrb r0, [r0, #1]
subs r0, #2
ldrb r2, [r5, #0xb]
cmp r0, r2
bne _08035D8A
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAB0
ldr r4, [r5, #0x50]
adds r0, r4, #0
adds r0, #0x74
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #9
bl __divsi3
adds r3, r0, #0
lsls r0, r3, #0xd
lsrs r3, r0, #8
adds r4, #0x7b
ldrb r0, [r4]
rsbs r0, r0, #0
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r0, r5, #0
adds r2, r3, #0
bl sub_08036914
ldr r0, [r5, #0x50]
adds r0, #0x7b
ldrb r0, [r0]
rsbs r0, r0, #0
adds r1, r5, #0
adds r1, #0x7b
strb r0, [r1]
_08035D8A:
ldr r0, [r5, #0x50]
adds r0, #0x7c
ldrb r1, [r0]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08035D9C
b _08035F6C
_08035D9C:
ldrb r2, [r5, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
orrs r1, r3
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
b _08035F6C
_08035DB0:
adds r6, r5, #0
adds r6, #0x84
ldr r0, [r6]
ldr r0, [r0, #8]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #1
bhi _08035DC4
bl sub_0805E780
_08035DC4:
adds r0, r5, #0
bl sub_080042B8
ldr r0, [r5, #0x50]
adds r0, #0x7c
ldrb r1, [r0]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08035E24
adds r0, r5, #0
adds r0, #0x7d
ldrb r1, [r0]
adds r0, r5, #0
movs r2, #0x10
bl sub_08036AF0
adds r2, r5, #0
adds r2, #0x41
ldrb r1, [r2]
movs r3, #0x7f
adds r0, r3, #0
ands r0, r1
adds r4, r2, #0
cmp r0, #7
bne _08035E56
ldrb r1, [r5, #0x10]
adds r0, r3, #0
ands r0, r1
strb r0, [r5, #0x10]
adds r0, r5, #0
movs r1, #0x87
movs r2, #0
movs r3, #0
bl CreateObjectWithParent
adds r1, r0, #0
str r1, [r5, #0x54]
cmp r1, #0
beq _08035E56
ldr r0, [r5, #0x50]
str r0, [r1, #0x50]
ldr r0, [r5, #0x54]
adds r0, #0x84
ldr r1, [r6]
str r1, [r0]
b _08035E56
_08035E24:
ldrb r1, [r5, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
ldrb r2, [r5, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
orrs r1, r3
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
adds r0, r5, #0
bl sub_08036998
adds r0, r5, #0
adds r0, #0x7d
ldrb r1, [r0]
adds r0, r5, #0
movs r2, #4
bl sub_080369D0
adds r4, r5, #0
adds r4, #0x41
_08035E56:
movs r0, #0
strb r0, [r4]
adds r0, r5, #0
adds r0, #0x76
ldrh r1, [r0]
subs r0, #2
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
rsbs r3, r3, #0
movs r0, #0x80
lsls r0, r0, #8
eors r3, r0
_08035E70:
adds r0, r5, #0
bl sub_0805EC9C
b _08035F6C
_08035E78:
adds r4, r5, #0
adds r4, #0x45
ldrb r0, [r4]
cmp r0, #1
bne _08035E88
movs r0, #0
strb r0, [r4]
b _08035F6C
_08035E88:
ldr r0, [r5, #0x50]
adds r1, r5, #0
bl sub_0806FAD8
ldr r0, [r5, #0x50]
ldrb r0, [r0, #0xd]
adds r7, r5, #0
adds r7, #0x76
adds r6, r5, #0
adds r6, #0x79
cmp r0, #4
beq _08035EC2
ldrb r0, [r4]
cmp r0, #1
beq _08035EC2
ldrb r0, [r6]
cmp r0, #0x1c
bls _08035EB0
subs r0, #1
strb r0, [r6]
_08035EB0:
ldrh r0, [r7]
movs r1, #0x80
lsls r1, r1, #1
cmp r0, r1
bls _08035EC0
subs r0, #1
strh r0, [r7]
b _08035EC2
_08035EC0:
strh r1, [r7]
_08035EC2:
ldr r4, [r5, #0x50]
adds r0, r4, #0
adds r0, #0x74
ldrh r1, [r0]
movs r0, #0x80
lsls r0, r0, #9
bl __divsi3
adds r3, r0, #0
ldrb r0, [r6]
lsls r0, r0, #8
muls r0, r3, r0
lsrs r3, r0, #8
adds r4, #0x7b
ldrb r0, [r4]
adds r0, #0x80
rsbs r0, r0, #0
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r0, r5, #0
adds r2, r3, #0
bl sub_08036914
ldr r0, [r5, #0x50]
adds r0, #0x7b
ldrb r0, [r0]
adds r1, r5, #0
adds r1, #0x7b
strb r0, [r1]
ldrh r1, [r7]
adds r0, r5, #0
adds r0, #0x74
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
adds r0, r5, #0
bl sub_0805EC9C
adds r0, r5, #0
bl sub_0800445C
b _08035F6C
_08035F16:
adds r0, r5, #0
bl sub_0800445C
adds r0, r5, #0
bl sub_08036F60
adds r0, r5, #0
adds r0, #0x84
ldr r1, [r0]
ldrb r0, [r1, #6]
cmp r0, #0
beq _08035F48
subs r0, #1
strb r0, [r1, #6]
ldr r0, _08035F74 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _08035F48
adds r0, r5, #0
movs r1, #0xf
movs r2, #3
bl sub_0804A98C
_08035F48:
ldr r1, _08035F78 @ =gUnk_080CF0C4
ldrb r0, [r5, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
adds r0, r5, #0
adds r0, #0x76
ldrh r1, [r0]
subs r0, #2
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
adds r0, r5, #0
bl sub_0805EC9C
_08035F6C:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08035F74: .4byte gUnk_030010A0
_08035F78: .4byte gUnk_080CF0C4
thumb_func_start sub_08035F7C
sub_08035F7C: @ 0x08035F7C
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _08035FD0 @ =gLinkEntity
ldr r0, [r2, #0x2c]
ldr r1, [r4, #0x2c]
subs r0, r0, r1
ldr r1, [r2, #0x30]
ldr r2, [r4, #0x30]
subs r1, r1, r2
bl sub_080045DA
adds r1, r4, #0
adds r1, #0x7b
ldrb r1, [r1]
rsbs r1, r1, #0
movs r2, #0x80
eors r1, r2
subs r0, r0, r1
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
movs r1, #0x20
cmp r0, #0
bne _08035FB6
movs r1, #8
_08035FB6:
cmn r2, r1
ble _08035FEE
cmp r2, r1
bge _08035FEE
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0xff
beq _08035FD4
adds r0, r4, #0
bl sub_08036C90
b _08036074
.align 2, 0
_08035FD0: .4byte gLinkEntity
_08035FD4:
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
cmp r0, #0
bne _08035FE6
adds r0, r4, #0
bl sub_08036E00
b _08036028
_08035FE6:
adds r0, r4, #0
bl sub_08036D70
b _08036028
_08035FEE:
cmp r2, #0x80
bls _0803600E
adds r2, r4, #0
adds r2, #0x7a
adds r0, r4, #0
adds r0, #0x82
ldrh r0, [r0]
ldrh r1, [r2]
adds r0, r0, r1
movs r1, #0
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
strb r1, [r0, #4]
b _08036028
_0803600E:
adds r2, r4, #0
adds r2, #0x7a
adds r1, r4, #0
adds r1, #0x82
ldrh r0, [r2]
ldrh r1, [r1]
subs r0, r0, r1
strh r0, [r2]
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
movs r0, #1
strb r0, [r1, #4]
_08036028:
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
rsbs r0, r0, #0
movs r1, #0x80
eors r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x1b
strb r0, [r4, #0x15]
adds r5, r4, #0
adds r5, #0x7c
ldrb r1, [r5]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0803606C
adds r3, r4, #0
adds r3, #0x82
ldrh r2, [r3]
ldr r0, _08036060 @ =0x0000027F
cmp r2, r0
bhi _0803606C
ldrb r1, [r5]
cmp r1, #1
beq _08036064
cmp r1, #3
beq _08036068
b _0803606C
.align 2, 0
_08036060: .4byte 0x0000027F
_08036064:
adds r0, r2, #1
b _0803606A
_08036068:
adds r0, r2, #2
_0803606A:
strh r0, [r3]
_0803606C:
adds r0, r4, #0
movs r1, #0x1f
bl sub_08036FAC
_08036074:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08036078
sub_08036078: @ 0x08036078
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x79
ldrb r0, [r5]
subs r0, #1
strb r0, [r5]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _080360A0
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
cmp r1, #0
beq _080360A0
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080360B2
_080360A0:
adds r1, r4, #0
adds r1, #0x78
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_08036D4C
b _080360BE
_080360B2:
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _080360BE
strb r0, [r5]
_080360BE:
adds r0, r4, #0
movs r1, #0x1f
bl sub_08036FAC
pop {r4, r5, pc}
thumb_func_start sub_080360C8
sub_080360C8: @ 0x080360C8
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _080360E4
adds r0, r2, #0
bl sub_08036DA0
_080360E4:
pop {pc}
.align 2, 0
thumb_func_start sub_080360E8
sub_080360E8: @ 0x080360E8
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x79
ldrb r0, [r1]
cmp r0, #0
bne _08036178
adds r0, r4, #0
bl sub_080AEF88
movs r2, #0
ldrb r0, [r4, #0x15]
cmp r0, #0
beq _08036116
cmp r0, #0x10
beq _08036116
ldrh r0, [r4, #0x2a]
movs r1, #0xee
lsls r1, r1, #8
ands r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r2, r0, #0x1f
_08036116:
ldrb r0, [r4, #0x15]
cmp r0, #0x18
beq _0803612C
cmp r0, #8
beq _0803612C
ldrh r1, [r4, #0x2a]
movs r0, #0xee
ands r0, r1
cmp r0, #0
beq _0803612C
movs r2, #1
_0803612C:
cmp r2, #0
beq _0803617C
adds r1, r4, #0
adds r1, #0x42
movs r0, #0x20
strb r0, [r1]
adds r1, #4
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r1]
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
ldrb r0, [r1, #6]
adds r0, #0x3c
strb r0, [r1, #6]
adds r0, r4, #0
bl sub_08036C90
movs r0, #0x3c
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
movs r0, #0xa6
lsls r0, r0, #1
bl PlaySFX
b _0803617C
_08036178:
subs r0, #1
strb r0, [r1]
_0803617C:
adds r0, r4, #0
movs r1, #0xf
bl sub_08036FAC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08036188
sub_08036188: @ 0x08036188
push {r4, r5, lr}
adds r5, r0, #0
ldr r1, _080361EC @ =gUnk_080CF0E0
ldrb r0, [r5, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
adds r0, r5, #0
bl sub_08036FE4
adds r0, r5, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _080361EA
ldr r4, _080361F0 @ =gLinkEntity
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
bl sub_08078B48
bl sub_08077B20
str r5, [r4, #0x50]
adds r0, r5, #0
adds r0, #0x7b
ldrb r1, [r0]
adds r1, #0x80
rsbs r1, r1, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
movs r2, #0xe0
lsls r2, r2, #6
adds r0, r4, #0
bl sub_08036914
_080361EA:
pop {r4, r5, pc}
.align 2, 0
_080361EC: .4byte gUnk_080CF0E0
_080361F0: .4byte gLinkEntity
thumb_func_start sub_080361F4
sub_080361F4: @ 0x080361F4
push {lr}
adds r2, r0, #0
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #4
bne _08036208
adds r0, r2, #0
bl sub_08036D4C
b _08036236
_08036208:
adds r1, r2, #0
adds r1, #0x82
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r1]
movs r0, #1
strb r0, [r2, #0xb]
subs r1, #6
ldrb r1, [r1]
ands r0, r1
cmp r0, #0
bne _08036228
adds r1, r2, #0
adds r1, #0x79
movs r0, #0x16
b _0803622E
_08036228:
adds r1, r2, #0
adds r1, #0x79
movs r0, #0
_0803622E:
strb r0, [r1]
ldr r0, _08036238 @ =0x00000155
bl PlaySFX
_08036236:
pop {pc}
.align 2, 0
_08036238: .4byte 0x00000155
thumb_func_start sub_0803623C
sub_0803623C: @ 0x0803623C
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x74
ldrh r0, [r1]
cmp r0, #0xbf
bhi _08036250
adds r0, #1
strh r0, [r1]
b _080362A0
_08036250:
adds r3, r2, #0
adds r3, #0x79
ldrb r0, [r3]
subs r0, #1
strb r0, [r3]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _080362A0
adds r0, r2, #0
adds r0, #0x7d
ldrb r1, [r0]
cmp r1, #1
bne _08036292
movs r0, #3
strb r0, [r2, #0xb]
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
ands r1, r0
cmp r1, #0
beq _08036280
movs r0, #0x3c
b _08036282
_08036280:
movs r0, #0x78
_08036282:
strb r0, [r3]
adds r0, r2, #0
adds r0, #0x84
ldr r1, [r0]
subs r0, #9
ldrb r0, [r0]
strb r0, [r1, #3]
b _0803629A
_08036292:
movs r0, #2
strb r0, [r2, #0xb]
movs r0, #0x2d
strb r0, [r3]
_0803629A:
ldr r0, _080362A4 @ =0x00000155
bl PlaySFX
_080362A0:
pop {pc}
.align 2, 0
_080362A4: .4byte 0x00000155
thumb_func_start sub_080362A8
sub_080362A8: @ 0x080362A8
push {r4, lr}
adds r2, r0, #0
movs r0, #0x79
adds r0, r0, r2
mov ip, r0
ldrb r0, [r0]
cmp r0, #0
bne _080362FA
adds r4, r2, #0
adds r4, #0x76
adds r1, r2, #0
adds r1, #0x74
ldrh r3, [r1]
ldrh r0, [r4]
cmp r0, r3
bhs _080362D0
adds r0, r3, #0
subs r0, #8
strh r0, [r1]
b _08036300
_080362D0:
movs r0, #3
strb r0, [r2, #0xb]
ldrh r0, [r4]
strh r0, [r1]
adds r0, r2, #0
adds r0, #0x7d
ldrb r0, [r0]
cmp r0, #2
beq _080362E6
movs r0, #0x3c
b _080362FC
_080362E6:
movs r0, #0
mov r1, ip
strb r0, [r1]
adds r0, r2, #0
movs r1, #0x87
movs r2, #4
movs r3, #0
bl CreateObjectWithParent
b _08036300
_080362FA:
subs r0, #1
_080362FC:
mov r1, ip
strb r0, [r1]
_08036300:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08036304
sub_08036304: @ 0x08036304
push {lr}
mov ip, r0
ldr r0, _08036328 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #2
ands r0, r1
cmp r0, #0
beq _0803632C
mov r2, ip
adds r2, #0x84
ldr r0, [r2]
ldr r1, [r0, #8]
adds r1, #0x76
ldrh r0, [r1]
subs r0, #8
strh r0, [r1]
b _08036350
.align 2, 0
_08036328: .4byte gUnk_030010A0
_0803632C:
mov r2, ip
adds r2, #0x84
ldr r0, [r2]
ldr r1, [r0, #8]
adds r1, #0x76
ldrh r0, [r1]
adds r0, #8
strh r0, [r1]
ldr r0, [r2]
ldr r0, [r0, #8]
adds r3, r0, #0
adds r3, #0x76
ldrh r0, [r3]
movs r1, #0xc0
lsls r1, r1, #1
cmp r0, r1
bls _08036350
strh r1, [r3]
_08036350:
mov r0, ip
adds r0, #0x7d
ldrb r1, [r0]
adds r3, r0, #0
cmp r1, #1
beq _0803637A
ldr r0, [r2]
ldr r0, [r0, #8]
adds r1, r0, #0
adds r1, #0x79
ldrb r0, [r1]
cmp r0, #0x1f
bhi _0803637A
adds r0, #1
strb r0, [r1]
ldr r0, [r2]
ldr r1, [r0, #8]
adds r1, #0x76
ldrh r0, [r1]
adds r0, #8
strh r0, [r1]
_0803637A:
ldr r0, _0803638C @ =gUnk_080CF0F0
ldrb r1, [r3]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
mov r0, ip
bl _call_via_r1
pop {pc}
.align 2, 0
_0803638C: .4byte gUnk_080CF0F0
thumb_func_start sub_08036390
sub_08036390: @ 0x08036390
push {r4, lr}
adds r4, r0, #0
movs r1, #0xf
movs r2, #0
bl sub_0804A98C
str r0, [r4, #0x54]
cmp r0, #0
beq _080363B4
str r4, [r0, #0x50]
ldr r0, [r4, #0x54]
adds r1, r4, #0
adds r1, #0x7b
ldrb r1, [r1]
rsbs r1, r1, #0
movs r2, #0x80
eors r1, r2
strb r1, [r0, #0x15]
_080363B4:
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
ldr r1, [r0, #8]
adds r1, #0x79
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_08036C90
pop {r4, pc}
thumb_func_start sub_080363CC
sub_080363CC: @ 0x080363CC
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
adds r7, r4, #0
adds r7, #0x80
ldrb r2, [r7]
cmp r2, #0
bne _080364CC
ldr r5, _08036498 @ =gLinkEntity
ldr r0, [r5, #0x2c]
ldr r1, [r4, #0x2c]
subs r0, r0, r1
ldr r1, [r5, #0x30]
ldr r2, [r4, #0x30]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r4, #0x15]
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
adds r0, #0x80
rsbs r0, r0, #0
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
ldrb r1, [r4, #0x15]
subs r3, r0, r1
mov r8, r2
cmp r3, #0
bge _0803640C
rsbs r3, r3, #0
_0803640C:
adds r6, r4, #0
adds r6, #0x79
cmp r3, #0xf
bgt _080364AA
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0xf0
bl sub_0806FC80
cmp r0, #0
beq _080364AA
ldr r2, _0803649C @ =gLinkState
ldr r1, [r2, #0x30]
movs r0, #0x80
lsls r0, r0, #4
ands r0, r1
cmp r0, #0
bne _080364A4
ldrb r1, [r5, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080364AA
movs r1, #0xa0
lsls r1, r1, #2
mov r0, r8
ldrb r2, [r0]
rsbs r2, r2, #0
adds r0, r5, #0
bl sub_0806F62C
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0x48
bl sub_0806FC80
cmp r0, #0
beq _080364AA
movs r0, #1
strb r0, [r7]
movs r0, #2
strb r0, [r6]
ldr r2, _080364A0 @ =gRoomControls
ldrh r0, [r2, #6]
movs r1, #0x84
lsls r1, r1, #1
adds r0, r0, r1
lsls r0, r0, #0x10
ldr r1, [r4, #0x2c]
subs r0, r0, r1
ldrh r1, [r2, #8]
adds r1, #0x88
lsls r1, r1, #0x10
ldr r2, [r4, #0x30]
subs r1, r1, r2
bl sub_080045DA
adds r2, r4, #0
adds r2, #0x84
ldr r1, [r2]
strb r0, [r1, #3]
ldr r1, [r2]
ldrb r0, [r1, #3]
adds r0, #0x80
rsbs r0, r0, #0
strb r0, [r1, #3]
movs r0, #0xed
bl PlaySFX
b _080364AA
.align 2, 0
_08036498: .4byte gLinkEntity
_0803649C: .4byte gLinkState
_080364A0: .4byte gRoomControls
_080364A4:
ldr r0, _080364C4 @ =0xFFFFF7FF
ands r1, r0
str r1, [r2, #0x30]
_080364AA:
ldr r0, _080364C8 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0803657A
adds r0, r4, #0
movs r1, #0x87
movs r2, #2
movs r3, #0
bl CreateObjectWithParent
b _0803657A
.align 2, 0
_080364C4: .4byte 0xFFFFF7FF
_080364C8: .4byte gUnk_030010A0
_080364CC:
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r5, #1
adds r0, r5, #0
ands r0, r1
adds r3, r4, #0
adds r3, #0x84
cmp r0, #0
bne _080364F0
ldr r0, [r3]
adds r1, r4, #0
adds r1, #0x7b
ldrb r0, [r0, #3]
mov r8, r1
ldrb r6, [r1]
cmp r0, r6
bne _08036570
_080364F0:
cmp r2, #1
bne _08036510
movs r0, #2
strb r0, [r7]
strb r0, [r4, #0xb]
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x2d
strb r0, [r1]
adds r1, #9
movs r2, #0
adds r0, #0xd3
strh r0, [r1]
ldr r0, [r3]
strb r2, [r0, #2]
b _08036652
_08036510:
movs r0, #0
strb r0, [r7]
adds r1, r4, #0
adds r1, #0x82
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r1]
ldr r0, [r3]
ldr r1, [r0, #8]
adds r1, #0x79
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r1, _0803656C @ =gLinkEntity
ldrb r2, [r1, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
movs r2, #1
orrs r0, r2
strb r0, [r1, #0x18]
ldrb r2, [r1, #0x10]
movs r0, #0x7f
ands r0, r2
strb r0, [r1, #0x10]
adds r1, #0x38
strb r5, [r1]
movs r0, #0x80
lsls r0, r0, #3
adds r1, r4, #0
adds r1, #0x7b
ldrb r1, [r1]
adds r1, #0x80
rsbs r1, r1, #0
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
movs r2, #0x30
bl sub_080792BC
adds r0, r4, #0
bl sub_08036C90
movs r0, #0xef
bl PlaySFX
b _08036652
.align 2, 0
_0803656C: .4byte gLinkEntity
_08036570:
adds r1, r4, #0
adds r1, #0x79
movs r0, #2
strb r0, [r1]
adds r6, r1, #0
_0803657A:
ldrb r0, [r6]
cmp r0, #0
bne _08036598
adds r0, r4, #0
adds r0, #0x76
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x74
movs r2, #0
strh r0, [r1]
strb r2, [r4, #0xb]
adds r0, r4, #0
bl sub_08036C90
b _08036652
_08036598:
subs r2, r0, #1
strb r2, [r6]
ldr r0, _080365E4 @ =gLinkState
ldr r1, [r0, #0x30]
movs r0, #0x80
lsls r0, r0, #4
cmp r1, r0
bne _080365F8
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bne _080365F8
ldr r2, _080365E8 @ =gLinkEntity
ldr r0, [r2, #0x2c]
ldr r1, [r4, #0x2c]
subs r0, r0, r1
ldr r1, [r2, #0x30]
ldr r2, [r4, #0x30]
subs r1, r1, r2
bl sub_080045DA
adds r3, r0, #0
mov r7, r8
ldrb r2, [r7]
rsbs r0, r2, #0
movs r1, #0x80
eors r0, r1
subs r0, r3, r0
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x80
bls _080365EC
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
adds r0, r2, #0
adds r0, #0x30
b _080365F6
.align 2, 0
_080365E4: .4byte gLinkState
_080365E8: .4byte gLinkEntity
_080365EC:
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
adds r0, r2, #0
subs r0, #0x30
_080365F6:
strb r0, [r1, #3]
_080365F8:
adds r0, r4, #0
adds r0, #0x7c
ldrb r0, [r0]
movs r5, #1
adds r2, r5, #0
ands r2, r0
cmp r2, #0
bne _08036652
adds r3, r4, #0
adds r3, #0x84
ldr r1, [r3]
ldrb r0, [r1, #3]
mov r6, r8
ldrb r6, [r6]
cmp r0, r6
beq _08036650
strb r5, [r1, #2]
ldr r0, [r3]
ldrb r0, [r0, #3]
mov r7, r8
ldrb r1, [r7]
subs r0, r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x80
bls _0803663E
adds r2, r4, #0
adds r2, #0x7a
adds r0, r4, #0
adds r0, #0x82
ldrh r1, [r2]
ldrh r0, [r0]
subs r1, r1, r0
strh r1, [r2]
b _08036652
_0803663E:
adds r1, r4, #0
adds r1, #0x7a
adds r0, r4, #0
adds r0, #0x82
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
b _08036652
_08036650:
strb r2, [r1, #2]
_08036652:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08036658
sub_08036658: @ 0x08036658
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r5, #0
adds r4, #0x79
ldrb r1, [r4]
adds r0, r1, #0
cmp r0, #0xff
bne _08036678
movs r0, #0
strb r0, [r5, #0xb]
adds r0, r5, #0
bl sub_08036C90
movs r0, #0x78
strb r0, [r4]
b _080366AC
_08036678:
adds r0, r1, #1
strb r0, [r4]
movs r0, #1
rsbs r0, r0, #0
bl sub_0805308C
ldr r0, _080366B0 @ =gUnk_030010A0
ldr r1, [r0]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _080366AC
movs r0, #7
ands r1, r0
cmp r1, #0
bne _080366A0
movs r0, #0x92
lsls r0, r0, #1
bl PlaySFX
_080366A0:
adds r0, r5, #0
movs r1, #0x87
movs r2, #3
movs r3, #0
bl CreateObjectWithParent
_080366AC:
pop {r4, r5, pc}
.align 2, 0
_080366B0: .4byte gUnk_030010A0
thumb_func_start sub_080366B4
sub_080366B4: @ 0x080366B4
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x79
ldrb r0, [r2]
adds r1, r0, #0
cmp r1, #0
bne _080366D4
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
strb r1, [r0, #2]
adds r0, r4, #0
bl sub_08036C90
b _08036706
_080366D4:
subs r0, #1
strb r0, [r2]
ldr r0, _08036708 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #3
ands r0, r1
cmp r0, #0
bne _08036706
adds r0, r4, #0
movs r1, #0xf
movs r2, #2
bl sub_0804A98C
str r0, [r4, #0x54]
cmp r0, #0
beq _08036706
str r4, [r0, #0x50]
ldr r2, [r4, #0x54]
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
rsbs r0, r0, #0
movs r1, #0x80
eors r0, r1
strb r0, [r2, #0x15]
_08036706:
pop {r4, pc}
.align 2, 0
_08036708: .4byte gUnk_030010A0
thumb_func_start sub_0803670C
sub_0803670C: @ 0x0803670C
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803675C @ =gUnk_080CF100
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
ldrb r0, [r1, #6]
cmp r0, #0
beq _08036746
subs r0, #1
strb r0, [r1, #6]
ldr r0, _08036760 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #7
ands r0, r1
cmp r0, #0
bne _08036746
adds r0, r4, #0
movs r1, #0xf
movs r2, #3
bl sub_0804A98C
_08036746:
adds r0, r4, #0
adds r0, #0x76
ldrh r1, [r0]
subs r0, #2
ldrh r2, [r0]
adds r0, #6
ldrh r3, [r0]
adds r0, r4, #0
bl sub_0805EC9C
pop {r4, pc}
.align 2, 0
_0803675C: .4byte gUnk_080CF100
_08036760: .4byte gUnk_030010A0
thumb_func_start sub_08036764
sub_08036764: @ 0x08036764
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
strh r1, [r4, #0x2a]
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
rsbs r0, r0, #0
movs r1, #0x80
eors r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x1b
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x78
strb r0, [r1]
adds r1, #9
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
bl sub_080368D8
adds r0, r4, #0
bl sub_080367B0
pop {r4, pc}
thumb_func_start sub_080367B0
sub_080367B0: @ 0x080367B0
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080AEF88
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _0803683A
movs r0, #2
strb r0, [r4, #0xd]
adds r3, r4, #0
adds r3, #0x84
ldr r1, [r3]
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
strb r0, [r1, #3]
ldrh r1, [r4, #0x2a]
movs r0, #0xee
lsls r0, r0, #8
ands r0, r1
cmp r0, #0
beq _080367E4
ldr r1, [r3]
ldrb r0, [r1, #3]
rsbs r0, r0, #0
strb r0, [r1, #3]
_080367E4:
ldrh r1, [r4, #0x2a]
movs r0, #0xee
ands r0, r1
cmp r0, #0
beq _080367FE
ldr r0, [r3]
ldrb r1, [r0, #3]
rsbs r1, r1, #0
movs r5, #0x80
rsbs r5, r5, #0
adds r2, r5, #0
eors r1, r2
strb r1, [r0, #3]
_080367FE:
adds r1, r4, #0
adds r1, #0x42
movs r0, #0x18
strb r0, [r1]
adds r1, #4
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r1]
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
ldr r1, [r3]
ldrb r0, [r1, #6]
adds r0, #0x1e
strb r0, [r1, #6]
movs r0, #0x1e
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
movs r0, #0xa6
lsls r0, r0, #1
bl PlaySFX
_0803683A:
adds r1, r4, #0
adds r1, #0x79
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
bne _08036852
subs r1, #0x34
movs r0, #0
strb r0, [r1]
_08036852:
ldr r0, _08036868 @ =gUnk_030010A0
ldr r0, [r0]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _08036864
ldr r0, _0803686C @ =0x00000159
bl PlaySFX
_08036864:
pop {r4, r5, pc}
.align 2, 0
_08036868: .4byte gUnk_030010A0
_0803686C: .4byte 0x00000159
thumb_func_start sub_08036870
sub_08036870: @ 0x08036870
push {lr}
adds r3, r0, #0
adds r0, #0x84
ldr r0, [r0]
ldrb r1, [r0, #3]
movs r0, #0x7b
adds r0, r0, r3
mov ip, r0
ldrb r0, [r0]
subs r1, r1, r0
adds r0, r1, #7
cmp r0, #0xe
bhi _080368AA
movs r2, #0
movs r0, #1
strb r0, [r3, #0xd]
mov r1, ip
ldrb r0, [r1]
rsbs r0, r0, #0
movs r1, #0x80
eors r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x1b
strb r0, [r3, #0x15]
strh r2, [r3, #0x2a]
adds r0, r3, #0
bl sub_080AEF88
b _080368D4
_080368AA:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x80
bls _080368C4
adds r2, r3, #0
adds r2, #0x7a
adds r0, r3, #0
adds r0, #0x82
ldrh r1, [r2]
ldrh r0, [r0]
subs r1, r1, r0
strh r1, [r2]
b _080368D4
_080368C4:
adds r1, r3, #0
adds r1, #0x7a
adds r0, r3, #0
adds r0, #0x82
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
_080368D4:
pop {pc}
.align 2, 0
thumb_func_start sub_080368D8
sub_080368D8: @ 0x080368D8
push {lr}
adds r3, r0, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _08036902
ldr r2, _08036910 @ =gLinkEntity
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r2, #0x38
movs r0, #1
strb r0, [r2]
_08036902:
adds r0, r3, #0
adds r0, #0x76
movs r1, #0xa0
strh r1, [r0]
subs r0, #2
strh r1, [r0]
pop {pc}
.align 2, 0
_08036910: .4byte gLinkEntity
thumb_func_start sub_08036914
sub_08036914: @ 0x08036914
push {r4, r5, r6, lr}
mov r6, sb
mov r5, r8
push {r5, r6}
adds r5, r0, #0
adds r4, r1, #0
adds r6, r2, #0
ldr r0, _08036994 @ =gUnk_080C9160
mov sb, r0
lsls r0, r4, #1
add r0, sb
movs r1, #0
ldrsh r0, [r0, r1]
lsls r6, r6, #0x10
asrs r6, r6, #0x10
adds r1, r6, #0
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
mov r8, r1
bl sub_0806FA04
ldr r1, [r5, #0x50]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r5, #0x2c]
adds r4, #0x40
lsls r4, r4, #1
add r4, sb
movs r1, #0
ldrsh r0, [r4, r1]
adds r1, r6, #0
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
mov r1, r8
bl sub_0806FA04
ldr r2, [r5, #0x50]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r2, #0x30]
subs r1, r1, r0
str r1, [r5, #0x30]
adds r2, #0x62
ldrb r0, [r2]
adds r1, r5, #0
adds r1, #0x62
strb r0, [r1]
ldr r0, [r5, #0x50]
adds r0, #0x63
ldrb r0, [r0]
adds r5, #0x63
strb r0, [r5]
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, pc}
.align 2, 0
_08036994: .4byte gUnk_080C9160
thumb_func_start sub_08036998
sub_08036998: @ 0x08036998
push {r4, lr}
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x79
ldrb r0, [r2, #0xf]
ldrb r4, [r3]
adds r1, r0, r4
strb r1, [r3]
ldrb r4, [r2, #0xf]
movs r0, #0xf
ldrsb r0, [r2, r0]
cmp r0, #0
bge _080369BE
ldrb r0, [r2, #0xe]
lsls r1, r1, #0x18
lsls r0, r0, #0x18
cmn r1, r0
bge _080369CC
b _080369C8
_080369BE:
movs r0, #0
ldrsb r0, [r3, r0]
ldrb r1, [r2, #0xe]
cmp r0, r1
ble _080369CC
_080369C8:
rsbs r0, r4, #0
strb r0, [r2, #0xf]
_080369CC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080369D0
sub_080369D0: @ 0x080369D0
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov ip, r1
adds r6, r2, #0
adds r1, r0, #0
adds r1, #0x84
ldr r4, [r1]
ldr r2, [r4, #0xc]
ldrb r1, [r4, #1]
subs r1, #1
lsls r1, r1, #2
adds r3, r4, #0
adds r3, #0xc
adds r1, r3, r1
ldr r1, [r1]
adds r1, #0x7b
adds r0, #0x79
ldrb r0, [r0]
ldrb r1, [r1]
adds r0, r0, r1
adds r2, #0x7b
strb r0, [r2]
ldrb r0, [r4, #1]
movs r2, #0
cmp r0, #1
beq _08036A58
adds r5, r3, #0
lsls r0, r6, #0x18
lsrs r0, r0, #0x18
mov r8, r0
rsbs r0, r6, #0
lsls r0, r0, #0x18
asrs r7, r0, #0x18
_08036A16:
lsls r0, r2, #2
adds r0, r5, r0
ldr r1, [r0]
adds r1, #0x7b
adds r2, #1
lsls r0, r2, #2
adds r0, r5, r0
ldr r0, [r0]
adds r3, r0, #0
adds r3, #0x7b
ldrb r1, [r1]
ldrb r0, [r3]
cmp r1, r0
beq _08036A4C
subs r0, r0, r1
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _08036A44
cmp r0, r8
ble _08036A4C
adds r0, r1, r6
b _08036A4A
_08036A44:
cmp r0, r7
bge _08036A4C
subs r0, r1, r6
_08036A4A:
strb r0, [r3]
_08036A4C:
ldrb r0, [r4, #1]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r2, r0
blo _08036A16
_08036A58:
ldrb r0, [r4, #1]
subs r2, r0, #1
cmp r2, #0
beq _08036AE4
ldr r0, _08036AEC @ =gUnk_080C9160
mov sb, r0
movs r1, #0x80
mov r8, r1
mov r1, ip
lsls r0, r1, #0x14
asrs r6, r0, #0x10
lsls r0, r2, #2
adds r0, #8
adds r5, r0, r4
movs r7, #0x80
lsls r7, r7, #1
_08036A78:
subs r4, r2, #1
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
mov r1, r8
eors r0, r1
lsls r0, r0, #1
add r0, sb
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r6, #0
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r7, #0
bl sub_0806FA04
ldr r2, [r5]
ldr r1, [r5, #4]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
mov r1, r8
eors r0, r1
adds r0, #0x40
lsls r0, r0, #1
add r0, sb
movs r1, #0
ldrsh r0, [r0, r1]
adds r1, r6, #0
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r7, #0
bl sub_0806FA04
ldr r2, [r5]
ldr r1, [r5, #4]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x30]
subs r1, r1, r0
str r1, [r2, #0x30]
subs r5, #4
adds r2, r4, #0
cmp r2, #0
bne _08036A78
_08036AE4:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08036AEC: .4byte gUnk_080C9160
thumb_func_start sub_08036AF0
sub_08036AF0: @ 0x08036AF0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0xc
str r1, [sp]
mov r8, r2
adds r0, #0x84
ldr r0, [r0]
str r0, [sp, #4]
ldrb r0, [r0, #1]
subs r4, r0, #1
cmp r4, #0
bne _08036B10
b _08036C80
_08036B10:
ldr r0, [sp, #4]
adds r0, #0xc
str r0, [sp, #8]
lsls r0, r1, #0x14
asrs r0, r0, #0x10
mov sl, r0
_08036B1C:
mov r1, r8
cmp r1, #0
bne _08036BC0
lsls r0, r4, #2
ldr r2, [sp, #8]
adds r6, r2, r0
ldr r0, [r6]
subs r4, #1
lsls r1, r4, #2
adds r5, r2, r1
ldr r2, [r5]
movs r3, #0x2e
ldrsh r1, [r2, r3]
movs r3, #0x32
ldrsh r2, [r2, r3]
bl sub_080041DC
mov sb, r4
ldr r1, [sp]
cmp r1, r0
blo _08036B48
b _08036C78
_08036B48:
ldr r2, [r5]
ldr r3, [r6]
ldr r0, [r2, #0x2c]
ldr r1, [r3, #0x2c]
subs r0, r0, r1
ldr r1, [r2, #0x30]
ldr r2, [r3, #0x30]
subs r1, r1, r2
bl sub_080045DA
ldr r1, [r5]
adds r1, #0x7b
strb r0, [r1]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
lsls r0, r0, #1
ldr r2, _08036BBC @ =gUnk_080C9160
adds r0, r0, r2
movs r3, #0
ldrsh r0, [r0, r3]
mov r1, sl
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl sub_0806FA04
ldr r2, [r5]
ldr r1, [r6]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r5]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x40
lsls r0, r0, #1
ldr r1, _08036BBC @ =gUnk_080C9160
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
mov r1, sl
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl sub_0806FA04
ldr r2, [r5]
ldr r1, [r6]
b _08036C6E
.align 2, 0
_08036BBC: .4byte gUnk_080C9160
_08036BC0:
subs r2, r4, #1
lsls r0, r2, #2
ldr r3, [sp, #8]
adds r0, r3, r0
ldr r0, [r0]
adds r5, r0, #0
adds r5, #0x7b
lsls r1, r4, #2
adds r0, r3, r1
ldr r0, [r0]
adds r0, #0x7b
ldrb r4, [r5]
ldrb r3, [r0]
adds r7, r1, #0
ldr r6, [sp, #4]
adds r6, #0xc
mov sb, r2
cmp r4, r3
beq _08036C0E
subs r0, r3, r4
lsls r0, r0, #0x18
asrs r1, r0, #0x18
cmp r1, #0
ble _08036BFE
mov r2, r8
lsls r0, r2, #0x18
lsrs r0, r0, #0x18
cmp r1, r0
ble _08036C0E
subs r0, r3, r2
b _08036C0C
_08036BFE:
mov r2, r8
rsbs r0, r2, #0
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r1, r0
bge _08036C0E
adds r0, r3, r2
_08036C0C:
strb r0, [r5]
_08036C0E:
mov r3, sb
lsls r4, r3, #2
adds r4, r6, r4
ldr r0, [r4]
adds r0, #0x7b
ldrb r0, [r0]
lsls r0, r0, #1
ldr r1, _08036C8C @ =gUnk_080C9160
adds r0, r0, r1
movs r2, #0
ldrsh r0, [r0, r2]
mov r1, sl
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl sub_0806FA04
ldr r2, [r4]
adds r5, r6, r7
ldr r1, [r5]
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x2c]
adds r1, r1, r0
str r1, [r2, #0x2c]
ldr r0, [r4]
adds r0, #0x7b
ldrb r0, [r0]
adds r0, #0x40
lsls r0, r0, #1
ldr r3, _08036C8C @ =gUnk_080C9160
adds r0, r0, r3
movs r1, #0
ldrsh r0, [r0, r1]
mov r1, sl
bl sub_0806F9EC
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #1
bl sub_0806FA04
ldr r2, [r4]
ldr r1, [r5]
_08036C6E:
lsls r0, r0, #0x10
asrs r0, r0, #8
ldr r1, [r1, #0x30]
subs r1, r1, r0
str r1, [r2, #0x30]
_08036C78:
mov r4, sb
cmp r4, #0
beq _08036C80
b _08036B1C
_08036C80:
add sp, #0xc
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08036C8C: .4byte gUnk_080C9160
thumb_func_start sub_08036C90
sub_08036C90: @ 0x08036C90
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r2, [r0]
cmp r2, #4
bne _08036CDC
adds r3, r4, #0
adds r3, #0x81
ldrb r0, [r3]
cmp r0, #0xff
beq _08036CDC
movs r1, #0
strb r2, [r4, #0xd]
strb r1, [r4, #0xb]
adds r0, r4, #0
adds r0, #0x80
strb r1, [r0]
ldr r1, _08036CFC @ =gUnk_080CF124
ldrb r0, [r3]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
adds r2, r4, #0
adds r2, #0x7e
ldrb r1, [r2]
adds r0, r0, r1
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x7d
strb r0, [r1]
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
ldrb r0, [r1]
cmp r0, #5
bne _08036D42
movs r0, #0xff
strb r0, [r3]
_08036CDC:
movs r0, #3
strb r0, [r4, #0xd]
adds r2, r4, #0
adds r2, #0x7c
ldrb r1, [r2]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08036D14
ldrb r1, [r2]
cmp r1, #1
beq _08036D00
cmp r1, #3
beq _08036D0A
b _08036D42
.align 2, 0
_08036CFC: .4byte gUnk_080CF124
_08036D00:
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x1e
strb r0, [r1]
b _08036D42
_08036D0A:
adds r1, r4, #0
adds r1, #0x79
movs r0, #0xa
strb r0, [r1]
b _08036D42
_08036D14:
ldr r0, _08036D2C @ =gUnk_02034350
movs r2, #0xc
ldrsh r1, [r0, r2]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _08036D30
adds r0, r4, #0
adds r0, #0x79
strb r3, [r0]
b _08036D42
.align 2, 0
_08036D2C: .4byte gUnk_02034350
_08036D30:
ldr r0, _08036D44 @ =gUnk_080CF10C
bl sub_080028F4
ldr r1, _08036D48 @ =gUnk_080CF110
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x79
strb r1, [r0]
_08036D42:
pop {r4, pc}
.align 2, 0
_08036D44: .4byte gUnk_080CF10C
_08036D48: .4byte gUnk_080CF110
thumb_func_start sub_08036D4C
sub_08036D4C: @ 0x08036D4C
mov ip, r0
mov r1, ip
adds r1, #0x82
movs r3, #0
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r1]
mov r2, ip
adds r2, #0x84
ldr r1, [r2]
movs r0, #2
strb r0, [r1]
ldr r1, [r2]
movs r0, #0xff
strb r0, [r1, #4]
mov r0, ip
strb r3, [r0, #0xd]
bx lr
thumb_func_start sub_08036D70
sub_08036D70: @ 0x08036D70
push {r4, lr}
adds r4, r0, #0
movs r1, #1
strb r1, [r4, #0xd]
movs r0, #0xc0
strh r0, [r4, #0x24]
adds r0, r4, #0
adds r0, #0x84
ldr r0, [r0]
strb r1, [r0]
ldr r0, _08036D98 @ =gUnk_080CF134
bl sub_080028F4
ldr r1, _08036D9C @ =gUnk_080CF138
adds r0, r0, r1
ldrb r0, [r0]
adds r4, #0x79
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_08036D98: .4byte gUnk_080CF134
_08036D9C: .4byte gUnk_080CF138
thumb_func_start sub_08036DA0
sub_08036DA0: @ 0x08036DA0
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x81
movs r0, #0xff
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x7c
ldrb r0, [r0]
movs r2, #1
ands r2, r0
cmp r2, #0
bne _08036DF0
ldr r0, _08036DD0 @ =gUnk_02034350
movs r3, #0xc
ldrsh r1, [r0, r3]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _08036DD4
adds r0, r4, #0
adds r0, #0x78
strb r2, [r0]
b _08036DF8
.align 2, 0
_08036DD0: .4byte gUnk_02034350
_08036DD4:
ldr r0, _08036DE8 @ =gUnk_080CF13C
bl sub_080028F4
ldr r1, _08036DEC @ =gUnk_080CF13F
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x78
strb r1, [r0]
b _08036DF8
.align 2, 0
_08036DE8: .4byte gUnk_080CF13C
_08036DEC: .4byte gUnk_080CF13F
_08036DF0:
adds r1, r4, #0
adds r1, #0x78
movs r0, #0
strb r0, [r1]
_08036DF8:
adds r0, r4, #0
bl sub_08036D4C
pop {r4, pc}
thumb_func_start sub_08036E00
sub_08036E00: @ 0x08036E00
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #4
adds r4, r0, #0
movs r2, #0
movs r0, #4
strb r0, [r4, #0xd]
strb r2, [r4, #0xb]
adds r7, r4, #0
adds r7, #0x81
movs r0, #0xff
strb r0, [r7]
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
adds r6, r4, #0
adds r6, #0x84
ldr r0, [r6]
strb r2, [r0, #2]
movs r0, #0x7c
adds r0, r0, r4
mov r8, r0
ldrb r5, [r0]
cmp r5, #0
bne _08036E3E
adds r0, r4, #0
adds r0, #0x7d
strb r2, [r0]
b _08036F00
_08036E3E:
cmp r5, #4
bne _08036ECC
str r2, [sp]
bl Random
movs r1, #3
mov sb, r1
ands r0, r1
ldr r2, [sp]
cmp r0, #0
beq _08036E62
ldr r0, _08036E84 @ =gUnk_02034350
movs r3, #0xc
ldrsh r1, [r0, r3]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
beq _08036E8C
_08036E62:
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x79
movs r0, #0x3c
strb r0, [r1]
strh r2, [r4, #0x2a]
ldr r0, [r6]
strb r5, [r0]
ldr r0, _08036E88 @ =0x00000159
bl PlaySFX
b _08036F00
.align 2, 0
_08036E84: .4byte gUnk_02034350
_08036E88: .4byte 0x00000159
_08036E8C:
mov r1, r8
ldrb r0, [r1]
cmp r0, #4
bne _08036ECC
adds r0, r4, #0
adds r0, #0x7e
strb r2, [r0]
bl Random
adds r1, r0, #0
mov r3, sb
ands r1, r3
ldr r0, [r6]
ldrb r0, [r0, #5]
cmp r0, r1
beq _08036EB0
strb r1, [r7]
b _08036EB8
_08036EB0:
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r7]
_08036EB8:
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
subs r0, #3
ldrb r0, [r0]
strb r0, [r1, #5]
adds r0, r4, #0
bl sub_08036C90
b _08036F00
_08036ECC:
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
ldr r1, _08036F0C @ =gUnk_080CF147
cmp r0, #0
bne _08036EDE
ldr r1, _08036F10 @ =gUnk_080CF142
_08036EDE:
adds r2, r4, #0
adds r2, #0x7e
ldrb r0, [r2]
adds r0, r1, r0
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x7d
strb r1, [r0]
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #4
bls _08036F00
movs r0, #0
strb r0, [r2]
_08036F00:
add sp, #4
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08036F0C: .4byte gUnk_080CF147
_08036F10: .4byte gUnk_080CF142
thumb_func_start sub_08036F14
sub_08036F14: @ 0x08036F14
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r6, r1, #0
adds r4, #0x84
ldr r0, [r4]
ldr r0, [r0, #8]
bl sub_0801D2B4
movs r5, #0
adds r7, r4, #0
_08036F28:
ldr r0, [r7]
lsls r1, r5, #2
adds r0, #0x20
adds r0, r0, r1
ldr r0, [r0]
adds r1, r6, #0
bl sub_0801D2B4
adds r5, #1
cmp r5, #3
bls _08036F28
ldr r0, [r4]
ldrb r0, [r0, #1]
subs r5, r0, #1
cmp r5, #0
beq _08036F5E
_08036F48:
ldr r0, [r4]
lsls r1, r5, #2
adds r0, #0xc
adds r0, r0, r1
ldr r0, [r0]
adds r1, r6, #0
bl sub_0801D2B4
subs r5, #1
cmp r5, #0
bne _08036F48
_08036F5E:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08036F60
sub_08036F60: @ 0x08036F60
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xd]
cmp r0, #4
beq _08036FA8
adds r0, r2, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r4, #1
adds r0, r4, #0
ands r0, r1
cmp r0, #0
bne _08036FA8
adds r3, r2, #0
adds r3, #0x76
movs r0, #0xe
ldrsb r0, [r2, r0]
ldrh r1, [r3]
adds r0, r0, r1
strh r0, [r3]
adds r1, r2, #0
adds r1, #0x74
movs r0, #0xe
ldrsb r0, [r2, r0]
ldrh r5, [r1]
adds r0, r0, r5
strh r0, [r1]
ldrh r0, [r3]
cmp r0, #0x9b
bhi _08036FA0
strb r4, [r2, #0xe]
b _08036FA8
_08036FA0:
cmp r0, #0xa4
bls _08036FA8
movs r0, #0xff
strb r0, [r2, #0xe]
_08036FA8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08036FAC
sub_08036FAC: @ 0x08036FAC
push {lr}
adds r2, r0, #0
ldr r0, _08036FD0 @ =gUnk_030010A0
ldr r0, [r0]
ands r0, r1
cmp r0, #0
bne _08036FDE
adds r0, r2, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08036FD8
ldr r0, _08036FD4 @ =0x00000163
bl PlaySFX
b _08036FDE
.align 2, 0
_08036FD0: .4byte gUnk_030010A0
_08036FD4: .4byte 0x00000163
_08036FD8:
ldr r0, _08036FE0 @ =0x000001B1
bl PlaySFX
_08036FDE:
pop {pc}
.align 2, 0
_08036FE0: .4byte 0x000001B1
thumb_func_start sub_08036FE4
sub_08036FE4: @ 0x08036FE4
push {r4, r5, lr}
adds r2, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08037048
adds r0, r2, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _08037048
adds r0, r2, #0
adds r0, #0x82
ldrh r3, [r0]
adds r4, r0, #0
cmp r3, #0
beq _08037048
adds r0, #2
ldr r0, [r0]
ldrb r0, [r0, #4]
cmp r0, #0xff
beq _0803702C
cmp r0, #0
bne _08037022
adds r1, r2, #0
adds r1, #0x7a
ldrh r5, [r1]
adds r0, r3, r5
b _0803702A
_08037022:
adds r1, r2, #0
adds r1, #0x7a
ldrh r0, [r1]
subs r0, r0, r3
_0803702A:
strh r0, [r1]
_0803702C:
adds r0, r2, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #1
beq _0803703C
cmp r0, #3
beq _08037042
b _08037048
_0803703C:
ldrh r0, [r4]
subs r0, #1
b _08037046
_08037042:
ldrh r0, [r4]
subs r0, #2
_08037046:
strh r0, [r4]
_08037048:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803704C
sub_0803704C: @ 0x0803704C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080012DC
adds r1, r0, #0
cmp r1, #0
beq _08037070
ldr r0, _0803706C @ =gUnk_080012C8
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r5, #0
bl _call_via_r1
b _08037084
.align 2, 0
_0803706C: .4byte gUnk_080012C8
_08037070:
ldr r4, _08037088 @ =gUnk_080CF244
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
_08037084:
pop {r4, r5, pc}
.align 2, 0
_08037088: .4byte gUnk_080CF244
thumb_func_start sub_0803708C
sub_0803708C: @ 0x0803708C
push {lr}
ldr r2, _080370A0 @ =gUnk_080CF25C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080370A0: .4byte gUnk_080CF25C
thumb_func_start sub_080370A4
sub_080370A4: @ 0x080370A4
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_08037418
adds r0, r5, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x9d
bne _08037110
movs r0, #6
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
movs r0, #0xa8
lsls r0, r0, #0xa
str r0, [r5, #0x20]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _0803710C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
b _0803711E
.align 2, 0
_0803710C: .4byte gRoomControls
_08037110:
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
beq _0803711E
adds r0, r5, #0
bl sub_08037408
_0803711E:
ldr r1, _08037128 @ =gUnk_080CF244
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_08037128: .4byte gUnk_080CF244
thumb_func_start sub_0803712C
sub_0803712C: @ 0x0803712C
push {lr}
ldr r2, _08037140 @ =gUnk_080CF278
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08037140: .4byte gUnk_080CF278
thumb_func_start sub_08037144
sub_08037144: @ 0x08037144
push {r4, lr}
adds r4, r0, #0
bl sub_08037418
movs r1, #0
movs r0, #1
strb r0, [r4, #0xd]
strb r1, [r4, #0xe]
movs r0, #0x30
strb r0, [r4, #0x1d]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803715C
sub_0803715C: @ 0x0803715C
push {r4, lr}
adds r4, r0, #0
bl sub_08037418
adds r0, r4, #0
bl sub_0806F520
cmp r0, #0
beq _08037176
adds r0, r4, #0
bl sub_0806F4E8
b _0803718A
_08037176:
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _0803718A
adds r0, r4, #0
bl sub_08037408
_0803718A:
pop {r4, pc}
thumb_func_start sub_0803718C
sub_0803718C: @ 0x0803718C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r4, [r5, #0xe]
cmp r4, #0
bne _080371DA
bl sub_08037418
movs r0, #1
strb r0, [r5, #0xe]
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
adds r0, r5, #0
adds r0, #0x62
strb r4, [r0]
adds r0, #0x12
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _080371EC @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
_080371DA:
adds r0, r5, #0
bl sub_0806F520
cmp r0, #0
beq _080371F0
adds r0, r5, #0
bl sub_0806F3E4
b _080371F6
.align 2, 0
_080371EC: .4byte gRoomControls
_080371F0:
adds r0, r5, #0
bl sub_08037408
_080371F6:
pop {r4, r5, r6, pc}
thumb_func_start sub_080371F8
sub_080371F8: @ 0x080371F8
push {lr}
adds r2, r0, #0
ldr r0, _08037210 @ =gLinkState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _0803720E
adds r0, r2, #0
bl sub_08037408
_0803720E:
pop {pc}
.align 2, 0
_08037210: .4byte gLinkState
thumb_func_start nullsub_161
nullsub_161: @ 0x08037214
bx lr
.align 2, 0
thumb_func_start sub_08037218
sub_08037218: @ 0x08037218
push {lr}
bl sub_08037408
pop {pc}
thumb_func_start sub_08037220
sub_08037220: @ 0x08037220
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #1
strb r0, [r5, #0xc]
movs r0, #2
strb r0, [r5, #0x1c]
ldrh r0, [r5, #0x32]
adds r0, #3
strh r0, [r5, #0x32]
movs r0, #0x2e
ldrsh r4, [r5, r0]
ldr r1, _0803727C @ =gRoomControls
ldrh r0, [r1, #6]
subs r4, r4, r0
asrs r4, r4, #4
movs r2, #0x3f
ands r4, r2
movs r3, #0x32
ldrsh r0, [r5, r3]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
adds r6, r5, #0
adds r6, #0x38
ldrb r1, [r6]
adds r0, r4, #0
bl sub_080001DA
adds r1, r5, #0
adds r1, #0x74
strh r0, [r1]
movs r0, #0x80
lsls r0, r0, #7
ldrb r2, [r6]
adds r1, r4, #0
bl sub_0800015E
adds r0, r5, #0
movs r1, #5
bl sub_08004260
pop {r4, r5, r6, pc}
.align 2, 0
_0803727C: .4byte gRoomControls
thumb_func_start sub_08037280
sub_08037280: @ 0x08037280
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_08037418
adds r0, r5, #0
bl sub_080002A0
movs r1, #0x80
lsls r1, r1, #7
cmp r0, r1
beq _080372CC
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _080372E4 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
adds r0, r5, #0
bl sub_08037408
_080372CC:
adds r0, r5, #0
movs r1, #1
movs r2, #0x40
bl sub_08049F64
cmp r0, #0
beq _080372E2
movs r0, #2
strb r0, [r5, #0xc]
movs r0, #0x1e
strb r0, [r5, #0xe]
_080372E2:
pop {r4, r5, r6, pc}
.align 2, 0
_080372E4: .4byte gRoomControls
thumb_func_start sub_080372E8
sub_080372E8: @ 0x080372E8
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_08037418
adds r3, r5, #0
adds r3, #0x62
ldr r2, _08037370 @ =gUnk_080CF290
ldrb r1, [r5, #0xe]
movs r6, #3
adds r0, r6, #0
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
ldrb r1, [r3]
adds r0, r0, r1
strb r0, [r3]
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _0803736E
strb r6, [r5, #0xc]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
strb r4, [r3]
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0xa0
strb r0, [r1]
subs r1, #4
movs r0, #0xf
strb r0, [r1]
ldr r0, _08037374 @ =gUnk_080FD34C
str r0, [r5, #0x48]
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08037378 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
_0803736E:
pop {r4, r5, r6, pc}
.align 2, 0
_08037370: .4byte gUnk_080CF290
_08037374: .4byte gUnk_080FD34C
_08037378: .4byte gRoomControls
thumb_func_start sub_0803737C
sub_0803737C: @ 0x0803737C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x34]
ldr r1, _080373A8 @ =0xFFFF0000
adds r0, r0, r1
str r0, [r4, #0x34]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
bgt _080373A6
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xa
strb r0, [r4, #0xe]
ldr r1, _080373AC @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
_080373A6:
pop {r4, pc}
.align 2, 0
_080373A8: .4byte 0xFFFF0000
_080373AC: .4byte gLinkEntity
thumb_func_start sub_080373B0
sub_080373B0: @ 0x080373B0
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080373C4
movs r0, #5
strb r0, [r1, #0xc]
_080373C4:
pop {pc}
.align 2, 0
thumb_func_start sub_080373C8
sub_080373C8: @ 0x080373C8
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _080373DC
adds r0, r4, #0
bl sub_08037408
_080373DC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080373E0
sub_080373E0: @ 0x080373E0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x20]
cmp r0, #0
bge _080373F2
ldrb r0, [r4, #0x18]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
_080373F2:
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08037406
adds r0, r4, #0
bl sub_08037408
_08037406:
pop {r4, pc}
thumb_func_start sub_08037408
sub_08037408: @ 0x08037408
push {lr}
movs r1, #5
movs r2, #0
bl CreateFX
bl sub_0805E780
pop {pc}
thumb_func_start sub_08037418
sub_08037418: @ 0x08037418
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r3, _08037464 @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r4, r0, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r5, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
adds r6, r5, #0
adds r6, #0x38
ldrb r1, [r6]
adds r0, r4, #0
bl sub_080001DA
ldr r1, _08037468 @ =0x00004067
cmp r0, r1
bne _08037460
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
ldrb r2, [r6]
adds r1, r4, #0
bl sub_0800015E
bl sub_0805E780
_08037460:
pop {r4, r5, r6, pc}
.align 2, 0
_08037464: .4byte gRoomControls
_08037468: .4byte 0x00004067
thumb_func_start sub_0803746C
sub_0803746C: @ 0x0803746C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08037488 @ =gUnk_080CF294
bl sub_0800129E
movs r3, #0x15
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_08037488: .4byte gUnk_080CF294
thumb_func_start sub_0803748C
sub_0803748C: @ 0x0803748C
push {lr}
ldr r2, _080374A0 @ =gUnk_080CF2AC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080374A0: .4byte gUnk_080CF2AC
thumb_func_start sub_080374A4
sub_080374A4: @ 0x080374A4
push {r4, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r2, [r0]
cmp r2, #0x87
bne _080374D4
ldrb r0, [r4, #0xc]
cmp r0, #6
bne _080374BC
adds r0, r4, #0
bl sub_08037ACC
_080374BC:
movs r0, #8
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
bl sub_08037B48
b _08037534
_080374D4:
ldrb r0, [r4, #0xc]
adds r1, r0, #0
cmp r1, #6
beq _0803752E
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x27
bne _080374F2
cmp r2, #0x80
bne _080374F2
adds r0, r4, #0
bl sub_08037A14
b _08037534
_080374F2:
subs r0, r1, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _08037534
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
movs r1, #0x10
eors r0, r1
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_080042AC
adds r0, r4, #0
bl sub_08037810
cmp r0, #0
beq _08037534
movs r0, #4
strb r0, [r4, #0xe]
b _08037534
_0803752E:
adds r0, r4, #0
bl sub_08037A58
_08037534:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08037546
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08037546:
ldr r1, _08037550 @ =gUnk_080CF294
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08037550: .4byte gUnk_080CF294
thumb_func_start nullsub_162
nullsub_162: @ 0x08037554
bx lr
.align 2, 0
thumb_func_start sub_08037558
sub_08037558: @ 0x08037558
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
bl Random
movs r1, #3
ands r0, r1
movs r1, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x76
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, r4, #0
bl sub_08037794
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037580
sub_08037580: @ 0x08037580
push {r4, lr}
adds r4, r0, #0
bl sub_08037810
cmp r0, #0
bne _080375A2
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080375A2
adds r0, r4, #0
bl sub_080377B0
_080375A2:
pop {r4, pc}
thumb_func_start sub_080375A4
sub_080375A4: @ 0x080375A4
push {r4, lr}
adds r4, r0, #0
bl sub_080378B0
cmp r0, #0
bne _080375F4
adds r0, r4, #0
bl sub_08037810
cmp r0, #0
bne _080375F4
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080375D2
adds r0, r4, #0
bl sub_08037794
b _080375F4
_080375D2:
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _080375F4
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080375F4
adds r0, r4, #0
bl sub_080379BC
_080375F4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080375F8
sub_080375F8: @ 0x080375F8
push {r4, lr}
adds r4, r0, #0
bl sub_080378B0
cmp r0, #0
bne _08037622
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08037622
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x18
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
_08037622:
pop {r4, pc}
thumb_func_start sub_08037624
sub_08037624: @ 0x08037624
push {r4, lr}
adds r4, r0, #0
bl sub_080378B0
cmp r0, #0
bne _0803768E
adds r0, r4, #0
bl sub_08037914
cmp r0, #0
bne _0803768E
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08037652
adds r0, r4, #0
bl sub_08037794
b _0803768E
_08037652:
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _0803767C
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803768E
adds r0, r4, #0
bl sub_080379BC
b _0803768E
_0803767C:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803768E
adds r0, r4, #0
bl sub_0803797C
_0803768E:
pop {r4, pc}
thumb_func_start sub_08037690
sub_08037690: @ 0x08037690
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080376B6
adds r1, r4, #0
adds r1, #0x77
movs r0, #0x14
strb r0, [r1]
adds r0, r4, #0
bl sub_08037794
b _080376CC
_080376B6:
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080376CC
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x27
strb r0, [r1]
adds r0, r4, #0
bl sub_080AEF88
_080376CC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080376D0
sub_080376D0: @ 0x080376D0
push {r4, lr}
adds r4, r0, #0
bl sub_080379EC
cmp r0, #0
bne _0803773A
bl sub_08077B2C
ldr r2, _08037724 @ =gLinkState
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]
ldr r0, _08037728 @ =gLinkEntity
adds r1, r4, #0
bl sub_0806FA6C
adds r0, r4, #0
bl sub_080042B8
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0803773A
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803772C
adds r0, r4, #0
bl sub_08037A58
b _0803773A
.align 2, 0
_08037724: .4byte gLinkState
_08037728: .4byte gLinkEntity
_0803772C:
ldrb r0, [r2]
movs r1, #1
eors r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_08037B10
_0803773A:
pop {r4, pc}
thumb_func_start sub_0803773C
sub_0803773C: @ 0x0803773C
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08037758
adds r0, r4, #0
bl sub_08037794
_08037758:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803775C
sub_0803775C: @ 0x0803775C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08037790
movs r0, #0x42
movs r1, #0
bl CreateEnemy
adds r4, r0, #0
cmp r4, #0
beq _0803778A
adds r0, r5, #0
adds r1, r4, #0
bl sub_0804A4E4
adds r0, r5, #0
adds r1, r4, #0
bl sub_08037C0C
_0803778A:
adds r0, r5, #0
bl sub_0805E7BC
_08037790:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08037794
sub_08037794: @ 0x08037794
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x74
movs r1, #0x1e
strh r1, [r2]
subs r2, #0x35
movs r1, #0x26
strb r1, [r2]
ldrb r1, [r0, #0x14]
bl sub_080042AC
pop {pc}
thumb_func_start sub_080377B0
sub_080377B0: @ 0x080377B0
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xf]
bl Random
movs r1, #0x38
ands r0, r1
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x74
strh r0, [r1]
movs r0, #0x40
strh r0, [r4, #0x24]
bl Random
adds r5, r0, #0
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _080377F8
movs r0, #3
ands r0, r5
cmp r0, #0
beq _080377F8
adds r0, r4, #0
bl sub_08049EE4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
b _080377FE
_080377F8:
movs r0, #0x18
ands r5, r0
strb r5, [r4, #0x15]
_080377FE:
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
pop {r4, r5, pc}
thumb_func_start sub_08037810
sub_08037810: @ 0x08037810
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x76
ldrb r0, [r1]
cmp r0, #0
bne _080378A8
adds r0, r5, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _080378AC
ldr r6, _080378A4 @ =gUnk_020000B0
ldr r0, [r6]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r5, #0
movs r3, #0x40
bl sub_0806FCB8
cmp r0, #0
beq _080378AC
ldr r1, [r6]
adds r0, r5, #0
bl sub_080045C4
ldrb r1, [r5, #0x15]
subs r0, r0, r1
adds r0, #6
movs r1, #0x1f
ands r0, r1
cmp r0, #0xc
bhi _080378AC
movs r0, #3
strb r0, [r5, #0xc]
movs r4, #0x18
movs r0, #0x18
strb r0, [r5, #0xe]
movs r0, #8
strb r0, [r5, #0xf]
movs r0, #0xc0
strh r0, [r5, #0x24]
ldr r1, [r6]
adds r0, r5, #0
bl sub_080045C4
adds r0, #4
ands r0, r4
strb r0, [r5, #0x15]
lsrs r0, r0, #3
strb r0, [r5, #0x14]
adds r1, r5, #0
adds r1, #0x74
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r1]
ldr r2, [r6]
ldrh r1, [r2, #0x2e]
adds r0, r5, #0
adds r0, #0x78
strh r1, [r0]
ldrh r0, [r2, #0x32]
adds r3, r5, #0
adds r3, #0x7a
strh r0, [r3]
ldrb r1, [r5, #0x14]
adds r0, r5, #0
bl sub_080042AC
movs r0, #1
b _080378AE
.align 2, 0
_080378A4: .4byte gUnk_020000B0
_080378A8:
subs r0, #1
strb r0, [r1]
_080378AC:
movs r0, #0
_080378AE:
pop {r4, r5, r6, pc}
thumb_func_start sub_080378B0
sub_080378B0: @ 0x080378B0
push {r4, r5, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x77
ldrb r0, [r1]
cmp r0, #0
bne _0803790C
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _08037910
ldr r5, _08037908 @ =gUnk_020000B0
ldr r1, [r5]
adds r0, r4, #0
movs r2, #0xa
bl sub_0804A044
ldrb r1, [r4, #0x15]
cmp r0, r1
bne _08037910
ldr r0, [r5]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x18
bl sub_0806FCB8
cmp r0, #0
beq _08037910
movs r0, #5
strb r0, [r4, #0xc]
adds r0, #0xfb
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x14]
adds r1, #8
adds r0, r4, #0
bl sub_080042AC
movs r0, #1
b _08037912
.align 2, 0
_08037908: .4byte gUnk_020000B0
_0803790C:
subs r0, #1
strb r0, [r1]
_08037910:
movs r0, #0
_08037912:
pop {r4, r5, pc}
thumb_func_start sub_08037914
sub_08037914: @ 0x08037914
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08037970
ldr r7, _08037950 @ =gUnk_020000B0
ldr r0, [r7]
adds r5, r4, #0
adds r5, #0x78
ldrh r1, [r5]
adds r6, r4, #0
adds r6, #0x7a
ldrh r2, [r6]
movs r3, #0x28
bl sub_0806FCB8
cmp r0, #0
bne _08037954
ldr r0, [r7]
ldrh r1, [r0, #0x2e]
strh r1, [r5]
ldrh r0, [r0, #0x32]
strh r0, [r6]
adds r0, r4, #0
bl sub_0803797C
movs r0, #0
b _08037978
.align 2, 0
_08037950: .4byte gUnk_020000B0
_08037954:
ldrh r1, [r5]
ldrh r2, [r6]
adds r0, r4, #0
movs r3, #8
bl sub_0806FCB8
cmp r0, #0
bne _08037968
movs r0, #0
b _08037978
_08037968:
adds r1, r4, #0
adds r1, #0x76
movs r0, #0x3c
strb r0, [r1]
_08037970:
adds r0, r4, #0
bl sub_08037794
movs r0, #1
_08037978:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803797C
sub_0803797C: @ 0x0803797C
push {r4, r5, lr}
adds r5, r0, #0
movs r4, #0x18
movs r0, #0x18
strb r0, [r5, #0xe]
movs r0, #8
strb r0, [r5, #0xf]
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r2, #0x32
ldrsh r1, [r5, r2]
adds r2, r5, #0
adds r2, #0x78
ldrh r2, [r2]
adds r3, r5, #0
adds r3, #0x7a
ldrh r3, [r3]
bl sub_080045D4
adds r0, #4
ands r0, r4
strb r0, [r5, #0x15]
lsrs r0, r0, #3
ldrb r1, [r5, #0x14]
cmp r0, r1
beq _080379BA
strb r0, [r5, #0x14]
adds r1, r0, #4
adds r0, r5, #0
bl sub_080042AC
_080379BA:
pop {r4, r5, pc}
thumb_func_start sub_080379BC
sub_080379BC: @ 0x080379BC
push {r4, lr}
adds r4, r0, #0
movs r0, #0x18
strb r0, [r4, #0xe]
movs r0, #8
strb r0, [r4, #0xf]
bl Random
movs r1, #2
ands r0, r1
ldrb r1, [r4, #0x14]
adds r1, r1, r0
subs r1, #1
movs r0, #3
ands r1, r0
strb r1, [r4, #0x14]
lsls r1, r1, #3
strb r1, [r4, #0x15]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
pop {r4, pc}
thumb_func_start sub_080379EC
sub_080379EC: @ 0x080379EC
push {r4, lr}
adds r4, r0, #0
bl sub_0807953C
cmp r0, #0
beq _08037A0E
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08037A0E
adds r0, r4, #0
bl sub_08037A58
movs r0, #1
b _08037A10
_08037A0E:
movs r0, #0
_08037A10:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037A14
sub_08037A14: @ 0x08037A14
push {r4, lr}
adds r4, r0, #0
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0x18
strb r0, [r4, #0xe]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0x20
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
adds r2, #0x12
ldrb r1, [r2]
movs r0, #0xfe
ands r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x7c
movs r0, #5
strb r0, [r1]
ldr r1, [r4, #0x4c]
adds r0, r4, #0
bl CopyPosition
ldrb r1, [r4, #0x14]
adds r1, #0xc
adds r0, r4, #0
bl sub_080042AC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037A58
sub_08037A58: @ 0x08037A58
push {r4, lr}
adds r4, r0, #0
bl sub_08037ACC
movs r0, #7
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0xf
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r3, r4, #0
adds r3, #0x3d
movs r0, #0
ldrsb r0, [r3, r0]
cmp r0, #0
bne _08037A84
movs r0, #0xec
strb r0, [r3]
_08037A84:
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x26
strb r0, [r1]
adds r2, r4, #0
adds r2, #0x3b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
movs r0, #0xf4
strb r0, [r3]
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
adds r1, #4
movs r0, #8
strb r0, [r1]
adds r1, #4
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
adds r1, #0x30
movs r0, #0x3c
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r1, #0x10
adds r0, r4, #0
bl sub_080042AC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037ACC
sub_08037ACC: @ 0x08037ACC
ldr r3, _08037B04 @ =gLinkState
ldr r1, [r3, #0x30]
ldr r2, _08037B08 @ =0xFFFFFEFF
ands r1, r2
str r1, [r3, #0x30]
ldr r3, _08037B0C @ =gLinkEntity
ldrb r2, [r3, #0x10]
movs r1, #0x80
orrs r1, r2
strb r1, [r3, #0x10]
adds r2, r3, #0
adds r2, #0x3d
movs r1, #0x1e
strb r1, [r2]
ldrb r0, [r0, #0x14]
lsls r0, r0, #3
adds r1, r3, #0
adds r1, #0x3e
strb r0, [r1]
adds r1, #4
movs r0, #4
strb r0, [r1]
adds r1, #4
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
bx lr
.align 2, 0
_08037B04: .4byte gLinkState
_08037B08: .4byte 0xFFFFFEFF
_08037B0C: .4byte gLinkEntity
thumb_func_start sub_08037B10
sub_08037B10: @ 0x08037B10
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r5, _08037B44 @ =gLinkEntity
adds r1, r5, #0
adds r1, #0x3d
movs r0, #0xc
strb r0, [r1]
subs r0, #0x14
bl ModHealth
adds r4, r0, #0
adds r0, r5, #0
movs r1, #0x7a
bl sub_0800449C
cmp r4, #0
bne _08037B40
adds r0, r6, #0
bl sub_08037A58
adds r1, r6, #0
adds r1, #0x76
movs r0, #0xf0
strb r0, [r1]
_08037B40:
pop {r4, r5, r6, pc}
.align 2, 0
_08037B44: .4byte gLinkEntity
thumb_func_start sub_08037B48
sub_08037B48: @ 0x08037B48
push {r4, lr}
adds r4, r0, #0
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037B88
ldrb r0, [r4, #0xe]
movs r2, #0
strb r0, [r3, #0xb]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x62
strb r2, [r0]
adds r1, r3, #0
adds r1, #0x63
movs r0, #0xfc
strb r0, [r1]
str r4, [r3, #0x50]
_08037B88:
adds r0, r4, #0
adds r0, #0x80
str r3, [r0]
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037BCA
ldrb r0, [r4, #0xe]
strb r0, [r3, #0xb]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r2, #8
rsbs r2, r2, #0
adds r0, r2, #0
ands r0, r1
movs r1, #3
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r1, r3, #0
adds r1, #0x62
movs r0, #0xfd
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x63
strb r2, [r0]
str r4, [r3, #0x50]
_08037BCA:
adds r0, r4, #0
adds r0, #0x84
str r3, [r0]
movs r0, #0x2a
movs r1, #3
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08037C06
ldrb r0, [r4, #0xe]
strb r0, [r3, #0xb]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
adds r1, r3, #0
adds r1, #0x62
movs r0, #5
strb r0, [r1]
adds r1, #1
movs r0, #0xf5
strb r0, [r1]
str r4, [r3, #0x50]
_08037C06:
str r3, [r4, #0x54]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037C0C
sub_08037C0C: @ 0x08037C0C
push {lr}
adds r3, r0, #0
adds r0, #0x80
ldr r2, [r0]
cmp r2, #0
beq _08037C1E
movs r0, #0xf
strb r0, [r2, #0xe]
str r1, [r2, #0x50]
_08037C1E:
adds r0, r3, #0
adds r0, #0x84
ldr r2, [r0]
cmp r2, #0
beq _08037C2E
movs r0, #0xf
strb r0, [r2, #0xe]
str r1, [r2, #0x50]
_08037C2E:
ldr r2, [r3, #0x54]
cmp r2, #0
beq _08037C3A
movs r0, #0xf
strb r0, [r2, #0xe]
str r1, [r2, #0x50]
_08037C3A:
pop {pc}
thumb_func_start sub_08037C3C
sub_08037C3C: @ 0x08037C3C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080012DC
cmp r0, #0
beq _08037C5C
ldr r0, _08037C58 @ =gUnk_080012C8
lsls r1, r4, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r5, #0
bl _call_via_r1
b _08037C7E
.align 2, 0
_08037C58: .4byte gUnk_080012C8
_08037C5C:
ldr r4, _08037C80 @ =gUnk_080CF46C
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r5, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
_08037C7E:
pop {r4, r5, pc}
.align 2, 0
_08037C80: .4byte gUnk_080CF46C
thumb_func_start sub_08037C84
sub_08037C84: @ 0x08037C84
push {lr}
ldr r2, _08037C98 @ =gUnk_080CF484
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08037C98: .4byte gUnk_080CF484
thumb_func_start sub_08037C9C
sub_08037C9C: @ 0x08037C9C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08037CB0
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08037CB0:
ldr r1, _08037CBC @ =gUnk_080CF46C
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08037CBC: .4byte gUnk_080CF46C
thumb_func_start sub_08037CC0
sub_08037CC0: @ 0x08037CC0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3a
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08037CD6
ldrb r0, [r4, #0xb]
bl sub_0807CD04
_08037CD6:
adds r0, r4, #0
movs r1, #0xff
movs r2, #0x58
bl sub_0804A7E0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037CE4
sub_08037CE4: @ 0x08037CE4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
bl GetProgressFlag
cmp r0, #0
beq _08037CF6
bl sub_0805E780
_08037CF6:
adds r0, r4, #0
bl sub_0804A720
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0xff
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08037E14
pop {r4, pc}
thumb_func_start sub_08037D0C
sub_08037D0C: @ 0x08037D0C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08037D1C
subs r0, #1
strb r0, [r4, #0xf]
b _08037D26
_08037D1C:
adds r0, r4, #0
bl sub_08037E90
cmp r0, #0
bne _08037D52
_08037D26:
adds r0, r4, #0
movs r1, #2
bl sub_08004276
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _08037D40
adds r0, r4, #0
bl sub_08037E14
b _08037D52
_08037D40:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08037D52
adds r0, r4, #0
bl sub_08037E14
_08037D52:
pop {r4, pc}
thumb_func_start sub_08037D54
sub_08037D54: @ 0x08037D54
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08037DC4
movs r0, #2
eors r0, r1
strb r0, [r2]
movs r1, #2
ands r0, r1
cmp r0, #0
beq _08037E0C
adds r0, r4, #0
movs r1, #1
movs r2, #0
bl sub_0804A98C
adds r2, r0, #0
cmp r2, #0
beq _08037E0C
ldrb r0, [r4, #0x15]
strb r0, [r2, #0x15]
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
ldr r0, _08037DBC @ =gUnk_080CF490
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
ldr r0, _08037DC0 @ =0x0000FFFD
strh r0, [r2, #0x36]
movs r0, #0x92
lsls r0, r0, #1
bl sub_08004488
b _08037E0C
.align 2, 0
_08037DBC: .4byte gUnk_080CF490
_08037DC0: .4byte 0x0000FFFD
_08037DC4:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08037E0C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08037DEE
strb r3, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x14]
orrs r0, r1
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08037E14
b _08037E0C
_08037DEE:
ldr r1, _08037E10 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_08004260
_08037E0C:
pop {r4, pc}
.align 2, 0
_08037E10: .4byte gLinkEntity
thumb_func_start sub_08037E14
sub_08037E14: @ 0x08037E14
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #8
strb r0, [r5, #0xe]
ldr r1, _08037E6C @ =gLinkEntity
adds r0, r5, #0
bl sub_080045C4
adds r4, r0, #4
movs r0, #0x18
ands r4, r0
adds r0, r5, #0
adds r0, #0x38
ldrb r0, [r0]
bl sub_0808094C
ldr r1, _08037E70 @ =0x00002004
adds r0, r0, r1
lsrs r3, r4, #2
ldr r1, _08037E74 @ =gUnk_080CF498
adds r3, r3, r1
movs r2, #0x2e
ldrsh r1, [r5, r2]
movs r2, #0
ldrsb r2, [r3, r2]
adds r1, r1, r2
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
adds r2, r2, r3
movs r3, #0
bl sub_080AE4CC
cmp r0, #0
beq _08037E78
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
b _08037E7A
.align 2, 0
_08037E6C: .4byte gLinkEntity
_08037E70: .4byte 0x00002004
_08037E74: .4byte gUnk_080CF498
_08037E78:
strb r4, [r5, #0x15]
_08037E7A:
ldrb r0, [r5, #0x15]
lsrs r4, r0, #3
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _08037E8E
strb r4, [r5, #0x14]
adds r0, r5, #0
adds r1, r4, #0
bl sub_08004260
_08037E8E:
pop {r4, r5, r6, pc}
thumb_func_start sub_08037E90
sub_08037E90: @ 0x08037E90
push {r4, lr}
adds r4, r0, #0
ldr r1, _08037EA8 @ =gLinkEntity
movs r2, #8
bl sub_0804A044
adds r1, r0, #0
cmp r1, #0xff
bne _08037EAC
movs r0, #0
b _08037EC6
.align 2, 0
_08037EA8: .4byte gLinkEntity
_08037EAC:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #3
strb r0, [r4, #0xe]
strb r1, [r4, #0x15]
lsrs r0, r1, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_08004260
movs r0, #1
_08037EC6:
pop {r4, pc}
thumb_func_start sub_08037EC8
sub_08037EC8: @ 0x08037EC8
push {r4, lr}
adds r4, r0, #0
ldr r1, _08037EE4 @ =gUnk_080CF4A0
bl sub_0800129E
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_08037EE4: .4byte gUnk_080CF4A0
thumb_func_start sub_08037EE8
sub_08037EE8: @ 0x08037EE8
push {lr}
ldr r2, _08037EFC @ =gUnk_080CF4B8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08037EFC: .4byte gUnk_080CF4B8
thumb_func_start sub_08037F00
sub_08037F00: @ 0x08037F00
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08037F14
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08037F14:
ldr r1, _08037F54 @ =gUnk_080CF4A0
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x94
bne _08037F50
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x14
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r0, r4, #0
adds r0, #0x80
strb r1, [r0]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08037F46
ldr r0, [r4, #0x20]
asrs r0, r0, #2
_08037F46:
str r0, [r4, #0x20]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_08037F50:
pop {r4, pc}
.align 2, 0
_08037F54: .4byte gUnk_080CF4A0
thumb_func_start sub_08037F58
sub_08037F58: @ 0x08037F58
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3a
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08037F6E
ldrb r0, [r4, #0xb]
bl sub_0807CD04
_08037F6E:
ldrb r0, [r4, #0xa]
movs r2, #0x58
cmp r0, #0
beq _08037F78
movs r2, #0x59
_08037F78:
adds r0, r4, #0
movs r1, #0xff
bl sub_0804A7E0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08037F84
sub_08037F84: @ 0x08037F84
push {r4, lr}
adds r4, r0, #0
bl sub_08001242
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08037F9E
movs r1, #0xc0
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
_08037F9E:
pop {r4, pc}
thumb_func_start sub_08037FA0
sub_08037FA0: @ 0x08037FA0
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
bl GetProgressFlag
cmp r0, #0
beq _08037FB2
bl sub_0805E780
_08037FB2:
adds r0, r5, #0
bl sub_0804A720
movs r4, #0
movs r0, #1
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #0x20
strb r0, [r5, #0xe]
strb r4, [r5, #0xf]
adds r0, r5, #0
adds r0, #0x80
strb r4, [r0]
adds r0, r5, #0
movs r1, #0
bl sub_08004260
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08037FE0
sub_08037FE0: @ 0x08037FE0
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
ldrb r0, [r4, #0xe]
adds r2, r0, #0
cmp r2, #0
beq _08037FF8
subs r0, #1
strb r0, [r4, #0xe]
b _08038046
_08037FF8:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803802C
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038046
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #6
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
movs r0, #0xe0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
bl sub_08038168
adds r0, r4, #0
movs r1, #2
bl sub_08004260
b _08038046
_0803802C:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038046
movs r0, #0x40
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_08038046:
pop {r4, pc}
thumb_func_start sub_08038048
sub_08038048: @ 0x08038048
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
adds r0, r4, #0
bl sub_080AEF88
movs r0, #0x36
ldrsh r6, [r4, r0]
bl Random
adds r5, r0, #0
movs r0, #0xf
ands r5, r0
movs r1, #0xc0
lsls r1, r1, #6
adds r0, r4, #0
bl sub_080044EC
cmp r0, #1
bne _08038088
movs r0, #0
movs r1, #3
strb r1, [r4, #0xc]
strb r0, [r4, #0xd]
movs r0, #0x14
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08004260
b _0803810C
_08038088:
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _08038098
adds r1, r0, #0
adds r0, r4, #0
bl sub_0800417E
b _080380B0
_08038098:
adds r0, r4, #0
bl sub_080002B8
movs r1, #0xf0
ands r1, r0
cmp r1, #0x50
bne _080380B0
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_080380B0:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080380C8
adds r0, r5, #0
adds r0, #0x10
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08038168
_080380C8:
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _080380E2
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r6, r0
bge _080380E2
adds r0, r4, #0
movs r1, #4
bl sub_08004260
movs r0, #1
strb r0, [r4, #0xd]
_080380E2:
movs r0, #0xc
rsbs r0, r0, #0
cmp r6, r0
bge _080380F6
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
b _08038100
_080380F6:
ldrb r2, [r4, #0x19]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
_08038100:
orrs r0, r2
strb r0, [r4, #0x19]
ldrb r0, [r4, #0x1b]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x1b]
_0803810C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08038110
sub_08038110: @ 0x08038110
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038164
adds r2, r4, #0
adds r2, #0x80
ldrb r0, [r2]
cmp r0, #4
bhi _08038150
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
movs r0, #0xe0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
bl sub_08038168
adds r0, r4, #0
movs r1, #2
bl sub_08004260
b _08038164
_08038150:
movs r0, #0
movs r1, #1
strb r1, [r4, #0xc]
strb r0, [r2]
movs r0, #0xc0
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_08038164:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038168
sub_08038168: @ 0x08038168
push {r4, lr}
adds r4, r0, #0
bl sub_08049FA0
cmp r0, #0
bne _0803817E
adds r0, r4, #0
bl sub_08049EE4
strb r0, [r4, #0x15]
b _080381AA
_0803817E:
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08038196
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
b _080381AA
_08038196:
bl Random
movs r1, #0xf
ands r1, r0
adds r1, #0x18
ldrb r0, [r4, #0x15]
adds r1, r1, r0
movs r0, #0x1f
ands r1, r0
strb r1, [r4, #0x15]
_080381AA:
pop {r4, pc}
thumb_func_start sub_080381AC
sub_080381AC: @ 0x080381AC
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080012DC
adds r1, r0, #0
cmp r1, #0
beq _080381D0
ldr r0, _080381CC @ =gUnk_080012C8
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r5, #0
bl _call_via_r1
b _080381F2
.align 2, 0
_080381CC: .4byte gUnk_080012C8
_080381D0:
ldr r4, _080381F4 @ =gUnk_080CF4C8
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r5, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
_080381F2:
pop {r4, r5, pc}
.align 2, 0
_080381F4: .4byte gUnk_080CF4C8
thumb_func_start sub_080381F8
sub_080381F8: @ 0x080381F8
push {lr}
ldr r2, _0803820C @ =gUnk_080CF4E0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803820C: .4byte gUnk_080CF4E0
thumb_func_start sub_08038210
sub_08038210: @ 0x08038210
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08038224
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08038224:
ldr r1, _08038230 @ =gUnk_080CF4C8
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08038230: .4byte gUnk_080CF4C8
thumb_func_start sub_08038234
sub_08038234: @ 0x08038234
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3a
ldrb r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _0803824A
ldrb r0, [r4, #0xb]
bl sub_0807CD04
_0803824A:
adds r0, r4, #0
movs r1, #0xff
movs r2, #0x58
bl sub_0804A7E0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038258
sub_08038258: @ 0x08038258
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
bl GetProgressFlag
cmp r0, #0
beq _0803826A
bl sub_0805E780
_0803826A:
adds r0, r4, #0
bl sub_0804A720
movs r0, #0xff
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_080383AC
pop {r4, pc}
thumb_func_start sub_0803827C
sub_0803827C: @ 0x0803827C
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803828C
subs r0, #1
strb r0, [r4, #0xf]
b _080382BC
_0803828C:
ldr r5, _080382B8 @ =gLinkEntity
adds r0, r4, #0
adds r1, r5, #0
movs r2, #8
bl sub_0804A044
cmp r0, #0xff
bne _080382B0
movs r0, #0x2e
ldrsh r1, [r5, r0]
movs r0, #0x32
ldrsh r2, [r5, r0]
adds r0, r4, #0
movs r3, #0x24
bl sub_0806FCB8
cmp r0, #0
beq _080382BC
_080382B0:
adds r0, r4, #0
bl sub_080383E4
b _080382E8
.align 2, 0
_080382B8: .4byte gLinkEntity
_080382BC:
adds r0, r4, #0
movs r1, #2
bl sub_08004276
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _080382D6
adds r0, r4, #0
bl sub_080383AC
b _080382E8
_080382D6:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080382E8
adds r0, r4, #0
bl sub_080383AC
_080382E8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080382EC
sub_080382EC: @ 0x080382EC
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038300
movs r0, #3
strb r0, [r1, #0xc]
_08038300:
pop {pc}
.align 2, 0
thumb_func_start sub_08038304
sub_08038304: @ 0x08038304
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r1, #2
bl sub_08004276
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _08038334
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
ldrb r1, [r4, #0x15]
cmp r0, r1
bne _08038330
movs r0, #0x5a
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_080383AC
b _080383AA
_08038330:
strb r0, [r4, #0x15]
b _080383AA
_08038334:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
movs r1, #0xa
bl __modsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _080383AA
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
ldrb r3, [r4, #0x15]
cmp r0, r3
bne _08038398
bl Random
movs r1, #2
ands r1, r0
subs r1, #1
lsls r1, r1, #0x1b
lsrs r1, r1, #0x18
adds r0, r4, #0
adds r0, #0x79
lsls r5, r1, #0x18
lsrs r3, r5, #0x18
adds r2, r0, #0
movs r6, #0x7a
adds r6, r6, r4
mov ip, r6
ldrb r0, [r2]
cmp r3, r0
bne _08038388
ldrb r6, [r6]
cmp r3, r6
bne _08038388
rsbs r0, r5, #0
lsrs r1, r0, #0x18
_08038388:
ldrb r0, [r2]
mov r3, ip
strb r0, [r3]
strb r1, [r2]
ldrb r0, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x18
ands r0, r1
_08038398:
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_08004260
_080383AA:
pop {r4, r5, r6, pc}
thumb_func_start sub_080383AC
sub_080383AC: @ 0x080383AC
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
adds r0, #0xf8
strh r0, [r4, #0x24]
ldr r1, _080383E0 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
lsrs r1, r0, #3
ldrb r0, [r4, #0x14]
cmp r1, r0
beq _080383DC
strb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
_080383DC:
pop {r4, pc}
.align 2, 0
_080383E0: .4byte gLinkEntity
thumb_func_start sub_080383E4
sub_080383E4: @ 0x080383E4
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldr r1, _0803842C @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x78
strb r0, [r1]
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
strb r0, [r4, #0x14]
adds r1, #1
movs r0, #0xff
strb r0, [r1]
adds r1, #1
movs r0, #1
rsbs r0, r0, #0
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_08004260
pop {r4, pc}
.align 2, 0
_0803842C: .4byte gLinkEntity
thumb_func_start sub_08038430
sub_08038430: @ 0x08038430
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803844C @ =gUnk_080CF4F0
bl sub_0800129E
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_0803844C: .4byte gUnk_080CF4F0
thumb_func_start sub_08038450
sub_08038450: @ 0x08038450
push {lr}
ldr r2, _08038464 @ =gUnk_080CF508
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08038464: .4byte gUnk_080CF508
thumb_func_start sub_08038468
sub_08038468: @ 0x08038468
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0803847C
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0803847C:
ldr r1, _080384B0 @ =gUnk_080CF4F0
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080384D8
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x5a
bne _080384CA
movs r0, #0x3f
ands r0, r1
cmp r0, #0x14
beq _080384BA
cmp r0, #0x14
bgt _080384B4
cmp r0, #0xe
beq _080384C0
b _080384D8
.align 2, 0
_080384B0: .4byte gUnk_080CF4F0
_080384B4:
cmp r0, #0x15
beq _080384C0
b _080384D8
_080384BA:
movs r0, #5
strb r0, [r4, #0xc]
b _080384D8
_080384C0:
adds r1, r4, #0
adds r1, #0x45
movs r0, #0
strb r0, [r1]
b _080384D8
_080384CA:
movs r0, #0x3f
ands r0, r1
cmp r0, #0x1d
bne _080384D8
adds r0, r4, #0
bl sub_08038754
_080384D8:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_163
nullsub_163: @ 0x080384DC
bx lr
.align 2, 0
thumb_func_start sub_080384E0
sub_080384E0: @ 0x080384E0
push {r4, r5, r6, lr}
adds r6, r0, #0
bl sub_0804A720
movs r4, #0
movs r5, #1
movs r0, #1
strb r0, [r6, #0xc]
bl Random
movs r1, #0x1c
ands r0, r1
strb r0, [r6, #0x15]
lsrs r0, r0, #2
strb r0, [r6, #0x14]
ldrb r1, [r6, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r6, #0x10]
strb r4, [r6, #0xe]
movs r0, #0x20
strb r0, [r6, #0xf]
adds r0, r6, #0
adds r0, #0x82
strb r4, [r0]
bl Random
ands r0, r5
adds r1, r6, #0
adds r1, #0x80
strb r0, [r1]
adds r0, r6, #0
adds r0, #0x81
strb r4, [r0]
subs r1, #0x41
movs r0, #0x72
strb r0, [r1]
ldrb r1, [r6, #0x14]
adds r0, r6, #0
bl sub_08004260
pop {r4, r5, r6, pc}
thumb_func_start sub_08038534
sub_08038534: @ 0x08038534
push {r4, lr}
adds r4, r0, #0
bl sub_080387F0
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _08038594
strb r0, [r4, #0xe]
movs r0, #0x20
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _08038578
ldrb r1, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0803856A
adds r1, #7
b _0803856C
_0803856A:
adds r1, #1
_0803856C:
movs r0, #7
ands r0, r1
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
b _0803858A
_08038578:
adds r0, r4, #0
bl sub_08049EE4
adds r0, #2
movs r1, #0x1c
ands r0, r1
strb r0, [r4, #0x15]
lsrs r0, r0, #2
strb r0, [r4, #0x14]
_0803858A:
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
b _080385C8
_08038594:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _080385C8
adds r0, r4, #0
movs r1, #0x80
bl sub_0803872C
cmp r0, #0
beq _080385C8
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x10
strb r0, [r4, #0xf]
movs r0, #0x40
strh r0, [r4, #0x24]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl sub_0806FCAC
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
_080385C8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080385CC
sub_080385CC: @ 0x080385CC
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_080387F0
adds r0, r4, #0
movs r1, #0x60
bl sub_0803872C
cmp r0, #0
beq _08038604
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0xc
strb r0, [r4, #0xf]
movs r0, #0x80
strh r0, [r4, #0x24]
ldr r1, [r4, #0x54]
adds r0, r4, #0
bl sub_0806FCAC
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
b _08038648
_08038604:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038648
movs r6, #0x10
strb r6, [r4, #0xf]
ldr r1, [r4, #0x54]
cmp r1, #0
beq _08038622
adds r0, r4, #0
bl sub_0806FCAC
b _08038638
_08038622:
ldrb r5, [r4, #0x14]
bl Random
ands r0, r6
cmp r0, #0
beq _08038632
adds r1, r5, #2
b _08038634
_08038632:
adds r1, r5, #6
_08038634:
movs r0, #7
ands r0, r1
_08038638:
strb r0, [r4, #0x14]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
_08038648:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0803864C
sub_0803864C: @ 0x0803864C
push {r4, lr}
adds r4, r0, #0
bl sub_080387F0
adds r0, r4, #0
movs r1, #0x14
bl sub_0803872C
cmp r0, #0
beq _08038668
adds r0, r4, #0
bl sub_08038754
b _080386B4
_08038668:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _080386B4
movs r0, #0xa
strb r0, [r4, #0xf]
adds r2, r4, #0
adds r2, #0x81
ldrb r0, [r2]
cmp r0, #0
bne _08038698
ldrh r0, [r4, #0x24]
adds r0, #0x40
strh r0, [r4, #0x24]
lsls r0, r0, #0x10
movs r1, #0x80
lsls r1, r1, #0x12
cmp r0, r1
ble _080386B4
movs r0, #1
strb r0, [r2]
b _080386B4
_08038698:
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
movs r0, #0x80
lsls r0, r0, #1
cmp r1, r0
ble _080386AE
adds r0, r2, #0
subs r0, #0x50
strh r0, [r4, #0x24]
b _080386B4
_080386AE:
adds r0, r4, #0
bl sub_08038754
_080386B4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080386B8
sub_080386B8: @ 0x080386B8
push {r4, lr}
adds r4, r0, #0
bl sub_080387F0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_080044EC
adds r1, r0, #0
cmp r1, #1
bne _08038720
strb r1, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x3f
movs r0, #0x72
strb r0, [r2]
strb r1, [r4, #0xe]
movs r0, #0x80
strb r0, [r4, #0xf]
strh r0, [r4, #0x24]
subs r2, #0x16
ldrb r1, [r2]
subs r0, #0xb9
ands r0, r1
movs r1, #0x10
orrs r0, r1
strb r0, [r2]
movs r0, #0x92
lsls r0, r0, #1
bl sub_08004488
adds r0, r4, #0
movs r1, #0x70
bl sub_0801D2B4
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _08038720
adds r0, r4, #0
bl sub_0806FAB0
_08038720:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038724
sub_08038724: @ 0x08038724
push {lr}
bl sub_08038754
pop {pc}
thumb_func_start sub_0803872C
sub_0803872C: @ 0x0803872C
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
movs r0, #1
bl sub_08049DF4
adds r1, r0, #0
str r1, [r4, #0x54]
cmp r1, #0
beq _08038750
adds r0, r4, #0
adds r2, r5, #0
bl sub_0806FC80
cmp r0, #0
beq _08038750
movs r0, #1
b _08038752
_08038750:
movs r0, #0
_08038752:
pop {r4, r5, pc}
thumb_func_start sub_08038754
sub_08038754: @ 0x08038754
push {r4, lr}
adds r4, r0, #0
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x5a
strb r0, [r1]
movs r1, #0
movs r0, #0xc0
strh r0, [r4, #0x24]
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
adds r0, #0x81
strb r1, [r0]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
ldr r0, _080387C0 @ =0x0000012B
bl sub_08004488
adds r0, r4, #0
movs r1, #0x71
bl sub_0801D2B4
ldrb r2, [r4, #0x15]
movs r0, #0xf
ands r0, r2
cmp r0, #0
beq _080387C4
movs r1, #0x10
ands r1, r2
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r1, #9
adds r0, r4, #0
bl sub_08004260
b _080387D8
.align 2, 0
_080387C0: .4byte 0x0000012B
_080387C4:
movs r1, #0x10
ands r1, r2
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r1, #8
adds r0, r4, #0
bl sub_08004260
_080387D8:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080387EE
adds r0, r4, #0
bl sub_0806FAB0
_080387EE:
pop {r4, pc}
thumb_func_start sub_080387F0
sub_080387F0: @ 0x080387F0
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #4
beq _08038890
adds r5, r4, #0
adds r5, #0x82
ldrb r0, [r5]
cmp r0, #0
bne _08038890
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08038868 @ =gRoomControls
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #4
movs r3, #0x3f
ands r0, r3
movs r6, #0x32
ldrsh r1, [r4, r6]
ldrh r2, [r2, #8]
subs r1, r1, r2
asrs r1, r1, #4
ands r1, r3
lsls r1, r1, #6
orrs r0, r1
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002E0
cmp r0, #0xf
beq _08038836
cmp r0, #0x2a
bne _0803883A
_08038836:
movs r0, #0x20
strb r0, [r5]
_0803883A:
ldrb r0, [r4, #0x15]
lsrs r0, r0, #1
ldr r1, _0803886C @ =gUnk_080CF520
adds r0, r0, r1
ldrb r5, [r4, #0x15]
movs r1, #0
ldrsb r1, [r0, r1]
movs r2, #1
ldrsb r2, [r0, r2]
adds r0, r4, #0
bl sub_080002CC
cmp r0, #0xf
beq _0803885A
cmp r0, #0x2a
bne _08038870
_0803885A:
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
b _0803887E
.align 2, 0
_08038868: .4byte gRoomControls
_0803886C: .4byte gUnk_080CF520
_08038870:
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _0803887E
adds r1, r0, #0
adds r0, r4, #0
bl sub_0800417E
_0803887E:
ldrb r0, [r4, #0x15]
cmp r5, r0
beq _08038890
lsrs r0, r0, #2
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
_08038890:
adds r0, r4, #0
bl sub_08004274
adds r1, r4, #0
adds r1, #0x82
ldrb r0, [r1]
cmp r0, #0
bne _080388A8
adds r0, r4, #0
bl sub_080AEF88
b _080388B2
_080388A8:
subs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_0806F69C
_080388B2:
pop {r4, r5, r6, pc}
thumb_func_start sub_080388B4
sub_080388B4: @ 0x080388B4
push {r4, lr}
adds r4, r0, #0
ldr r1, _080388D0 @ =gUnk_080CF600
bl sub_0800129E
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_080388D0: .4byte gUnk_080CF600
thumb_func_start sub_080388D4
sub_080388D4: @ 0x080388D4
push {lr}
ldr r2, _080388E8 @ =gUnk_080CF618
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080388E8: .4byte gUnk_080CF618
thumb_func_start sub_080388EC
sub_080388EC: @ 0x080388EC
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x43
ldrb r0, [r6]
cmp r0, #0
beq _08038902
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08038902:
ldr r1, _08038948 @ =gUnk_080CF600
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803897E
ldrb r0, [r4, #0xc]
cmp r0, #4
beq _0803897E
ldr r5, [r4, #0x54]
adds r0, r4, #0
adds r0, #0x3d
ldrb r0, [r0]
adds r1, r5, #0
adds r1, #0x3d
strb r0, [r1]
adds r2, r4, #0
adds r2, #0x3e
ldrb r1, [r2]
adds r0, r5, #0
adds r0, #0x3e
strb r1, [r0]
ldrb r0, [r6]
cmp r0, #0
beq _0803894C
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
b _0803897E
.align 2, 0
_08038948: .4byte gUnk_080CF600
_0803894C:
ldrb r0, [r4, #0xc]
cmp r0, #1
bne _0803897E
adds r0, r1, #0
adds r0, #0x12
movs r1, #0x1c
ands r0, r1
strb r0, [r5, #0x15]
lsrs r0, r0, #2
strb r0, [r5, #0x14]
ldrb r0, [r2]
adds r0, #0x14
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
lsrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
movs r1, #0
bl sub_08038C84
adds r0, r5, #0
movs r1, #1
bl sub_08038C84
_0803897E:
pop {r4, r5, r6, pc}
thumb_func_start nullsub_164
nullsub_164: @ 0x08038980
bx lr
.align 2, 0
thumb_func_start sub_08038984
sub_08038984: @ 0x08038984
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #0x13
bl sub_080A7EE0
adds r6, r0, #0
cmp r6, #0
beq _080389E6
adds r0, r5, #0
bl sub_0804A720
movs r4, #0
movs r2, #1
movs r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
ldrb r1, [r5, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
str r6, [r5, #0x54]
bl Random
movs r1, #6
ands r0, r1
strb r0, [r5, #0x14]
adds r0, r5, #0
adds r0, #0x80
movs r1, #0
strh r4, [r0]
subs r0, #6
strb r1, [r0]
str r5, [r6, #0x50]
strb r1, [r6, #0xa]
movs r0, #0xff
strb r0, [r6, #0x14]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r6, #0
adds r0, #0x38
strb r1, [r0]
adds r0, r5, #0
bl sub_08038BA8
_080389E6:
pop {r4, r5, r6, pc}
thumb_func_start sub_080389E8
sub_080389E8: @ 0x080389E8
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r6, [r4, #0x54]
adds r1, r4, #0
adds r1, #0x80
ldrh r0, [r1]
cmp r0, #0
beq _08038A08
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08038A68
movs r0, #0x80
strh r0, [r4, #0x24]
b _08038A68
_08038A08:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038A22
adds r0, r4, #0
bl sub_08038BA8
adds r0, r6, #0
bl sub_08038C2C
b _08038A68
_08038A22:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08038A2E
subs r0, #1
strb r0, [r4, #0xe]
b _08038A68
_08038A2E:
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _08038A68
movs r0, #0xc
strb r0, [r4, #0xe]
ldrb r1, [r6, #0x14]
movs r0, #1
ands r0, r1
cmp r0, #0
bne _08038A5C
ldrb r5, [r6, #0x14]
bl Random
movs r1, #0x20
ands r1, r0
cmp r1, #0
beq _08038A54
adds r1, r5, #1
b _08038A56
_08038A54:
adds r1, r5, #7
_08038A56:
movs r0, #7
ands r0, r1
strb r0, [r6, #0x14]
_08038A5C:
adds r0, r4, #0
bl sub_08038BA8
adds r0, r6, #0
bl sub_08038C2C
_08038A68:
adds r0, r4, #0
bl sub_08038B90
pop {r4, r5, r6, pc}
thumb_func_start sub_08038A70
sub_08038A70: @ 0x08038A70
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r6, [r5, #0x54]
adds r1, r5, #0
adds r1, #0x80
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r7, r0, #0x10
cmp r7, #0
bne _08038AC0
movs r1, #3
strb r1, [r5, #0xc]
adds r2, r5, #0
adds r2, #0x82
movs r0, #4
strb r0, [r2]
movs r0, #0x80
strh r0, [r5, #0x24]
movs r4, #0x20
strb r4, [r5, #0xf]
strb r1, [r6, #0xc]
adds r1, r6, #0
adds r1, #0x82
movs r0, #2
strb r0, [r1]
movs r0, #0xff
strb r0, [r6, #0x14]
adds r0, r5, #0
movs r1, #0
bl sub_08038C84
adds r0, r6, #0
bl sub_08038C2C
strb r4, [r6, #0xf]
str r7, [r6, #0x50]
str r5, [r6, #0x54]
b _08038AFE
_08038AC0:
ldrb r0, [r5, #0xf]
subs r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038AFE
movs r0, #0x10
strb r0, [r5, #0xf]
adds r0, r5, #0
movs r1, #0
bl sub_08049F84
strb r0, [r5, #0x15]
ldrb r0, [r5, #0x15]
adds r0, #4
movs r1, #0x1c
ands r0, r1
lsrs r1, r0, #2
strb r1, [r6, #0x14]
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #2
strb r0, [r5, #0x14]
adds r0, r5, #0
movs r1, #0
bl sub_08038C84
adds r0, r6, #0
movs r1, #1
bl sub_08038C84
_08038AFE:
adds r0, r5, #0
bl sub_08038B90
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08038B08
sub_08038B08: @ 0x08038B08
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08038B18
subs r0, #1
strb r0, [r4, #0xf]
b _08038B5E
_08038B18:
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r2, #0x80
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _08038B5E
movs r0, #4
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x82
movs r0, #3
strb r0, [r1]
movs r0, #0x32
strb r0, [r4, #0xe]
movs r0, #2
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
adds r0, #0x10
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
strh r2, [r4, #0x24]
adds r0, r4, #0
movs r1, #0
bl sub_08038C84
ldr r0, _08038B60 @ =0x0000015B
bl sub_08004488
_08038B5E:
pop {r4, pc}
.align 2, 0
_08038B60: .4byte 0x0000015B
thumb_func_start sub_08038B64
sub_08038B64: @ 0x08038B64
push {r4, lr}
adds r4, r0, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_080042B8
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038B8C
movs r0, #2
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
adds r0, #0x1f
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_08038B8C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038B90
sub_08038B90: @ 0x08038B90
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_0800445C
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038BA8
sub_08038BA8: @ 0x08038BA8
push {r4, r5, lr}
adds r4, r0, #0
bl Random
ldr r1, _08038BEC @ =gUnk_080CF62C
movs r5, #7
ands r0, r5
adds r0, r0, r1
ldrb r0, [r0]
movs r1, #0
strb r0, [r4, #0xf]
adds r0, r4, #0
adds r0, #0x82
movs r3, #1
strb r3, [r0]
ldr r0, [r4, #0x54]
adds r0, #0x82
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
cmp r0, #0
bne _08038BF0
adds r0, #1
strb r0, [r1]
ldrb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_08038C84
b _08038C2A
.align 2, 0
_08038BEC: .4byte gUnk_080CF62C
_08038BF0:
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x14]
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _08038C14
ldrb r2, [r2, #0x14]
ldrb r1, [r4, #0x14]
adds r0, r1, #1
ands r0, r5
movs r3, #6
cmp r2, r0
bne _08038C0C
movs r3, #2
_08038C0C:
adds r3, r3, r1
movs r0, #6
ands r3, r0
b _08038C18
_08038C14:
ldrb r3, [r2, #0x14]
ldrb r1, [r4, #0x14]
_08038C18:
cmp r3, r1
beq _08038C2A
strb r3, [r4, #0x14]
lsls r0, r3, #2
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_08038C84
_08038C2A:
pop {r4, r5, pc}
thumb_func_start sub_08038C2C
sub_08038C2C: @ 0x08038C2C
push {r4, r5, r6, lr}
adds r5, r0, #0
bl Random
ldr r1, _08038C58 @ =gUnk_080CF634
movs r6, #7
ands r0, r6
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r5, #0xf]
ldr r0, [r5, #0x50]
ldrb r4, [r0, #0x14]
ldrb r0, [r5, #0x14]
cmp r0, #0xff
bne _08038C5C
strb r4, [r5, #0x14]
adds r0, r5, #0
movs r1, #1
bl sub_08038C84
b _08038C7C
.align 2, 0
_08038C58: .4byte gUnk_080CF634
_08038C5C:
bl Random
ldr r1, _08038C80 @ =gUnk_080CF63C
ands r0, r6
adds r0, r0, r1
ldrb r0, [r0]
adds r4, r0, r4
ands r4, r6
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _08038C7C
strb r4, [r5, #0x14]
adds r0, r5, #0
movs r1, #1
bl sub_08038C84
_08038C7C:
pop {r4, r5, r6, pc}
.align 2, 0
_08038C80: .4byte gUnk_080CF63C
thumb_func_start sub_08038C84
sub_08038C84: @ 0x08038C84
push {lr}
adds r3, r0, #0
ldrb r2, [r3, #0x14]
adds r0, #0x82
ldrb r0, [r0]
lsls r0, r0, #3
orrs r2, r0
cmp r1, #0
bne _08038C98
lsrs r2, r2, #1
_08038C98:
adds r0, r3, #0
adds r1, r2, #0
bl sub_080042AC
pop {pc}
.align 2, 0
thumb_func_start sub_08038CA4
sub_08038CA4: @ 0x08038CA4
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080012DC
adds r1, r0, #0
cmp r1, #0
beq _08038CC8
ldr r0, _08038CC4 @ =gUnk_080012C8
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r5, #0
bl _call_via_r1
b _08038CF0
.align 2, 0
_08038CC4: .4byte gUnk_080012C8
_08038CC8:
ldr r4, _08038CF4 @ =gUnk_080CF778
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r5, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
adds r0, r5, #0
bl sub_080391B4
_08038CF0:
pop {r4, r5, pc}
.align 2, 0
_08038CF4: .4byte gUnk_080CF778
thumb_func_start sub_08038CF8
sub_08038CF8: @ 0x08038CF8
push {lr}
ldr r2, _08038D0C @ =gUnk_080CF790
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08038D0C: .4byte gUnk_080CF790
thumb_func_start sub_08038D10
sub_08038D10: @ 0x08038D10
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _08038D52
adds r5, r4, #0
adds r5, #0x7a
ldrb r0, [r5]
cmp r0, #0
bne _08038D3E
movs r0, #1
bl sub_0807CC3C
cmp r0, #0
bne _08038D3E
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0xbf
bhi _08038D46
movs r0, #1
strb r0, [r5]
b _08038D46
_08038D3E:
adds r1, r4, #0
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
_08038D46:
adds r0, r4, #0
bl sub_08039218
adds r0, r4, #0
bl sub_08039260
_08038D52:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08038D64
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08038D64:
ldr r1, _08038D70 @ =gUnk_080CF778
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_08038D70: .4byte gUnk_080CF778
thumb_func_start nullsub_165
nullsub_165: @ 0x08038D74
bx lr
.align 2, 0
thumb_func_start sub_08038D78
sub_08038D78: @ 0x08038D78
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _08038D96
movs r0, #0
strb r0, [r4, #0xb]
movs r0, #0x30
strb r0, [r4, #0x16]
adds r0, r4, #0
bl sub_08039120
b _08038D9C
_08038D96:
adds r0, r4, #0
bl sub_08039140
_08038D9C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038DA0
sub_08038DA0: @ 0x08038DA0
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038DB6
adds r0, r4, #0
bl sub_0803901C
_08038DB6:
adds r0, r4, #0
bl sub_08039298
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038DC0
sub_08038DC0: @ 0x08038DC0
push {lr}
ldr r2, _08038DD4 @ =gUnk_080CF7AC
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08038DD4: .4byte gUnk_080CF7AC
thumb_func_start sub_08038DD8
sub_08038DD8: @ 0x08038DD8
push {lr}
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x10
strb r1, [r0, #0xe]
ldr r2, _08038E10 @ =gUnk_080CF7BC
ldrb r1, [r0, #0xa]
adds r1, r1, r2
ldrb r1, [r1]
strb r1, [r0, #0xf]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #0x39
rsbs r1, r1, #0
ands r1, r2
strb r1, [r3]
movs r1, #4
bl sub_08004260
ldr r0, _08038E14 @ =0x000001D9
bl sub_08004488
pop {pc}
.align 2, 0
_08038E10: .4byte gUnk_080CF7BC
_08038E14: .4byte 0x000001D9
thumb_func_start sub_08038E18
sub_08038E18: @ 0x08038E18
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08038E70
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038E70
bl sub_08079184
adds r0, r4, #0
bl sub_08039218
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
movs r1, #8
rsbs r1, r1, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
bl Random
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_08038E70:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038EA2
movs r0, #0x10
strb r0, [r4, #0xe]
bl Random
ldrb r3, [r4, #0x18]
lsls r2, r3, #0x19
lsrs r2, r2, #0x1f
movs r1, #1
ands r1, r0
eors r2, r1
lsls r2, r2, #6
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r3
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r4, #0
bl sub_08039260
_08038EA2:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038EAC
sub_08038EAC: @ 0x08038EAC
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_080390F8
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_08038ED0
sub_08038ED0: @ 0x08038ED0
push {lr}
ldrb r2, [r0, #0x10]
movs r1, #0x80
orrs r1, r2
strb r1, [r0, #0x10]
bl sub_08039218
pop {pc}
thumb_func_start sub_08038EE0
sub_08038EE0: @ 0x08038EE0
push {r4, lr}
adds r4, r0, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_08039298
movs r1, #0xe0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08038F1C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08038F16
adds r0, r4, #0
bl sub_0803901C
b _08038F1C
_08038F16:
movs r0, #0x80
lsls r0, r0, #8
str r0, [r4, #0x20]
_08038F1C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08038F20
sub_08038F20: @ 0x08038F20
push {r4, lr}
adds r4, r0, #0
bl sub_08039298
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08038F42
adds r0, r4, #0
bl sub_0803901C
_08038F42:
pop {r4, pc}
thumb_func_start sub_08038F44
sub_08038F44: @ 0x08038F44
push {r4, lr}
adds r4, r0, #0
ldr r0, _08038F8C @ =gLinkEntity
adds r1, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080390F8
adds r0, r4, #0
bl sub_080AEF88
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_080044EC
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_08039298
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r2, r0, #1
strh r2, [r1]
lsls r0, r2, #0x10
cmp r0, #0
bne _08038F90
adds r0, r4, #0
bl sub_08039120
b _08038F9E
.align 2, 0
_08038F8C: .4byte gLinkEntity
_08038F90:
movs r0, #0x1f
ands r2, r0
cmp r2, #0
bne _08038F9E
adds r0, r4, #0
bl sub_08039260
_08038F9E:
pop {r4, pc}
thumb_func_start sub_08038FA0
sub_08038FA0: @ 0x08038FA0
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xe]
adds r0, r1, #1
strb r0, [r4, #0xe]
movs r0, #0x1f
ands r0, r1
cmp r0, #0
bne _08038FB8
adds r0, r4, #0
bl sub_08039260
_08038FB8:
adds r2, r4, #0
adds r2, #0x78
ldrh r1, [r2]
cmp r1, #0
beq _08038FFC
ldr r3, _08038FF4 @ =0x0000FFFF
adds r0, r1, r3
strh r0, [r2]
movs r0, #7
ands r0, r1
cmp r0, #0
bne _08038FE0
ldr r1, _08038FF8 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_08038FE0:
adds r0, r4, #0
bl sub_080390F8
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_08004274
b _08039018
.align 2, 0
_08038FF4: .4byte 0x0000FFFF
_08038FF8: .4byte gLinkEntity
_08038FFC:
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0803917C
cmp r0, #0
beq _08039018
adds r0, r4, #0
bl sub_0805E7BC
_08039018:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803901C
sub_0803901C: @ 0x0803901C
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r3, r0, #0
movs r5, #3
ands r5, r3
cmp r3, #3
bne _08039042
ldrb r0, [r4, #0xc]
cmp r0, #3
beq _0803903C
cmp r0, #4
beq _08039040
movs r5, #0
b _08039042
_0803903C:
movs r5, #1
b _08039042
_08039040:
movs r5, #2
_08039042:
cmp r5, #1
beq _0803906C
cmp r5, #2
beq _080390AA
movs r0, #1
strb r0, [r4, #0xc]
ldr r2, _08039068 @ =gUnk_080CF7BE
lsrs r0, r3, #0x10
movs r1, #3
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
b _080390BC
.align 2, 0
_08039068: .4byte gUnk_080CF7BE
_0803906C:
movs r1, #3
movs r0, #3
strb r0, [r4, #0xc]
lsrs r0, r3, #8
ands r0, r1
adds r0, #2
strb r0, [r4, #0xe]
movs r0, #0x80
lsls r0, r0, #8
str r0, [r4, #0x20]
adds r0, r4, #0
bl sub_080390C0
adds r0, r4, #0
movs r1, #1
bl sub_08004260
bl Random
ands r0, r5
cmp r0, #0
beq _080390BC
bl Random
ands r5, r0
movs r1, #0xeb
lsls r1, r1, #1
adds r0, r5, r1
bl sub_08004488
b _080390BC
_080390AA:
movs r0, #4
strb r0, [r4, #0xc]
lsrs r1, r3, #0x10
movs r0, #1
ands r1, r0
adds r1, #2
adds r0, r4, #0
bl sub_08004260
_080390BC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080390C0
sub_080390C0: @ 0x080390C0
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _080390E0
movs r0, #1
ands r0, r5
cmp r0, #0
beq _080390E0
lsrs r0, r5, #0x10
b _080390E8
_080390E0:
adds r0, r4, #0
bl sub_08049EE4
adds r0, #2
_080390E8:
movs r1, #0x1c
ands r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080390F8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080390F8
sub_080390F8: @ 0x080390F8
push {lr}
adds r3, r0, #0
ldrb r1, [r3, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
beq _0803911C
lsrs r1, r1, #4
movs r0, #1
eors r1, r0
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r3, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x18]
_0803911C:
pop {pc}
.align 2, 0
thumb_func_start sub_08039120
sub_08039120: @ 0x08039120
push {lr}
ldr r2, _0803913C @ =gUnk_080CF7C2
ldrb r1, [r0, #0xa]
adds r1, r1, r2
ldrb r1, [r1]
movs r2, #0
strh r1, [r0, #0x24]
adds r1, r0, #0
adds r1, #0x7a
strb r2, [r1]
bl sub_0803901C
pop {pc}
.align 2, 0
_0803913C: .4byte gUnk_080CF7C2
thumb_func_start sub_08039140
sub_08039140: @ 0x08039140
push {r4, lr}
adds r4, r0, #0
movs r0, #6
strb r0, [r4, #0xc]
bl Random
strb r0, [r4, #0xe]
ldr r1, _08039174 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
ldr r0, _08039178 @ =0x0000FFFC
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x78
movs r0, #0xb4
strh r0, [r1]
adds r0, r4, #0
bl sub_080390F8
adds r0, r4, #0
movs r1, #4
bl sub_08004260
pop {r4, pc}
.align 2, 0
_08039174: .4byte gLinkEntity
_08039178: .4byte 0x0000FFFC
thumb_func_start sub_0803917C
sub_0803917C: @ 0x0803917C
push {r4, lr}
adds r2, r0, #0
movs r1, #0x2e
ldrsh r0, [r2, r1]
ldr r3, _080391AC @ =gRoomControls
movs r4, #0xa
ldrsh r1, [r3, r4]
adds r1, #0xc
subs r0, r0, r1
movs r1, #0x84
lsls r1, r1, #1
cmp r0, r1
bhi _080391B0
movs r0, #0x32
ldrsh r1, [r2, r0]
movs r2, #0xc
ldrsh r0, [r3, r2]
adds r0, #0xc
subs r1, r1, r0
cmp r1, #0xb8
bhi _080391B0
movs r0, #0
b _080391B2
.align 2, 0
_080391AC: .4byte gRoomControls
_080391B0:
movs r0, #1
_080391B2:
pop {r4, pc}
thumb_func_start sub_080391B4
sub_080391B4: @ 0x080391B4
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x7a
ldrb r0, [r0]
cmp r0, #0
beq _0803920C
adds r2, r5, #0
adds r2, #0x7b
ldrb r1, [r2]
adds r0, r1, #1
strb r0, [r2]
movs r0, #0x1f
ands r0, r1
cmp r0, #0
bne _0803920C
movs r0, #0x41
movs r1, #2
bl CreateEnemy
adds r4, r0, #0
cmp r4, #0
beq _0803920C
bl Random
movs r1, #0x17
ands r1, r0
lsls r1, r1, #2
ldr r0, _08039210 @ =gUnk_080CF7C4
adds r1, r1, r0
ldr r2, _08039214 @ =gRoomControls
ldrh r0, [r1]
ldrh r3, [r2, #0xa]
adds r0, r0, r3
strh r0, [r4, #0x2e]
ldrh r0, [r1, #2]
ldrh r2, [r2, #0xc]
adds r0, r0, r2
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
_0803920C:
pop {r4, r5, pc}
.align 2, 0
_08039210: .4byte gUnk_080CF7C4
_08039214: .4byte gRoomControls
thumb_func_start sub_08039218
sub_08039218: @ 0x08039218
push {lr}
adds r2, r0, #0
movs r0, #5
strb r0, [r2, #0xc]
ldr r1, _08039254 @ =gUnk_080CF824
ldrb r0, [r2, #0xa]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #0x24]
ldr r1, _08039258 @ =gUnk_080CF828
ldrb r0, [r2, #0xa]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x78
strh r1, [r0]
subs r0, #0x20
ldrb r0, [r0]
cmp r0, #4
beq _0803924C
adds r0, r2, #0
movs r1, #4
bl sub_08004260
_0803924C:
ldr r0, _0803925C @ =0x000001D9
bl sub_08004488
pop {pc}
.align 2, 0
_08039254: .4byte gUnk_080CF824
_08039258: .4byte gUnk_080CF828
_0803925C: .4byte 0x000001D9
thumb_func_start sub_08039260
sub_08039260: @ 0x08039260
push {r4, lr}
adds r4, r0, #0
ldr r0, _08039290 @ =gUnk_080CF82E
ldrb r1, [r4, #0xa]
adds r1, r1, r0
ldrb r1, [r1]
adds r0, r4, #0
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _0803928E
ldr r0, _08039294 @ =gUnk_080CF82C
ldrb r1, [r4, #0x18]
lsls r1, r1, #0x19
lsrs r1, r1, #0x1f
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r1, [r2, #0x2e]
adds r0, r0, r1
strh r0, [r2, #0x2e]
_0803928E:
pop {r4, pc}
.align 2, 0
_08039290: .4byte gUnk_080CF82E
_08039294: .4byte gUnk_080CF82C
thumb_func_start sub_08039298
sub_08039298: @ 0x08039298
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xb]
cmp r0, #0
bne _080392A8
adds r0, r1, #0
bl sub_08078930
_080392A8:
pop {pc}
.align 2, 0
thumb_func_start sub_080392AC
sub_080392AC: @ 0x080392AC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080392C8 @ =gUnk_080CF8A4
bl sub_0800129E
movs r3, #0x12
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_080392C8: .4byte gUnk_080CF8A4
thumb_func_start sub_080392CC
sub_080392CC: @ 0x080392CC
push {r4, lr}
adds r4, r0, #0
ldr r0, _080392FC @ =gUnk_080CF8BC
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
cmp r0, #0
beq _0803930C
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
beq _08039300
subs r1, #0x3d
movs r0, #0x45
b _0803930A
.align 2, 0
_080392FC: .4byte gUnk_080CF8BC
_08039300:
adds r0, r4, #0
adds r0, #0x7d
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x3f
_0803930A:
strb r0, [r1]
_0803930C:
movs r0, #0x36
ldrsh r1, [r4, r0]
cmp r1, #0
beq _0803933A
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
bge _08039334
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
b _0803933A
_08039334:
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_0803933A:
pop {r4, pc}
thumb_func_start sub_0803933C
sub_0803933C: @ 0x0803933C
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x44
bne _08039390
adds r0, r5, #0
adds r0, #0x41
ldrb r0, [r0]
movs r1, #0x7f
ands r1, r0
cmp r1, #6
bgt _08039390
cmp r1, #4
blt _08039390
adds r0, r5, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bgt _08039390
movs r0, #4
strb r0, [r5, #0xc]
adds r0, r5, #0
adds r0, #0x3e
ldrb r0, [r0]
strb r0, [r5, #0x15]
ldrb r0, [r5, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
movs r1, #0x10
eors r0, r1
asrs r0, r0, #3
strb r0, [r5, #0x14]
movs r0, #0x90
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_0803981C
_08039390:
adds r0, r5, #0
adds r0, #0x41
ldrb r2, [r0]
cmp r2, #0x9d
bne _080393F8
ldr r1, [r5, #0x54]
cmp r1, #0
bne _080393CA
ldrb r0, [r5, #0xc]
cmp r0, #8
bhi _080393EC
adds r0, r5, #0
movs r1, #0x10
movs r2, #1
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _080393DC
ldrb r0, [r5, #0x14]
lsls r0, r0, #1
strb r0, [r1, #0x1e]
movs r0, #2
strb r0, [r1, #0xb]
movs r0, #0xc3
lsls r0, r0, #1
bl sub_08004488
b _080393DC
_080393CA:
adds r0, r1, #0
adds r0, #0x41
movs r4, #0
strb r2, [r0]
movs r0, #0xc3
lsls r0, r0, #1
bl sub_08004488
str r4, [r5, #0x54]
_080393DC:
adds r0, r5, #0
bl sub_08039A48
adds r1, r5, #0
adds r1, #0x78
ldrh r0, [r1]
adds r0, #0x5a
strh r0, [r1]
_080393EC:
adds r2, r5, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #0xfb
ands r0, r1
strb r0, [r2]
_080393F8:
adds r0, r5, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0803940A
adds r0, r5, #0
movs r1, #0x1c
bl sub_0804A9FC
_0803940A:
ldr r1, _08039414 @ =gUnk_080CF8A4
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_08039414: .4byte gUnk_080CF8A4
thumb_func_start sub_08039418
sub_08039418: @ 0x08039418
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xa]
cmp r0, #0
bne _0803942E
adds r0, r1, #0
movs r1, #0xf3
movs r2, #0
bl sub_0804A7E0
b _08039434
_0803942E:
adds r0, r1, #0
bl sub_0804A7D4
_08039434:
pop {pc}
.align 2, 0
thumb_func_start sub_08039438
sub_08039438: @ 0x08039438
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
beq _08039454
ldr r0, _08039458 @ =gUnk_080CF8EC
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_08039454:
pop {r4, pc}
.align 2, 0
_08039458: .4byte gUnk_080CF8EC
thumb_func_start sub_0803945C
sub_0803945C: @ 0x0803945C
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x5a
strb r1, [r0, #0x1d]
bx lr
.align 2, 0
thumb_func_start sub_08039468
sub_08039468: @ 0x08039468
push {lr}
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_08039470
sub_08039470: @ 0x08039470
push {r4, lr}
adds r4, r0, #0
ldr r2, [r4, #0x54]
cmp r2, #0
bne _08039494
movs r1, #0x10
movs r2, #1
bl sub_0804A98C
adds r2, r0, #0
cmp r2, #0
beq _0803949C
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
strb r0, [r2, #0x1e]
movs r0, #1
strb r0, [r2, #0xb]
b _0803949C
_08039494:
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
_0803949C:
movs r0, #0
str r0, [r4, #0x54]
adds r3, r4, #0
adds r3, #0x3a
ldrb r2, [r3]
movs r1, #0xfb
adds r0, r1, #0
ands r0, r2
strb r0, [r3]
adds r2, r4, #0
adds r2, #0x3b
ldrb r0, [r2]
ands r1, r0
strb r1, [r2]
adds r0, r4, #0
bl sub_08039A48
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
adds r0, #0x5a
strh r0, [r1]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080394CC
sub_080394CC: @ 0x080394CC
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
bl Random
movs r1, #3
ands r0, r1
movs r1, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x7b
strb r1, [r0]
adds r0, #1
strb r1, [r0]
subs r0, #0x3d
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x7d
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_08039A00
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _0803950A
adds r0, r4, #0
bl sub_0803998C
b _0803952A
_0803950A:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xff
strb r0, [r4, #0x15]
ldr r1, _0803952C @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #3
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803981C
_0803952A:
pop {r4, pc}
.align 2, 0
_0803952C: .4byte gLinkEntity
thumb_func_start sub_08039530
sub_08039530: @ 0x08039530
push {r4, lr}
adds r4, r0, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
cmp r0, #0
bne _08039568
adds r0, r4, #0
bl sub_08039758
cmp r0, #0
bne _08039568
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08039568
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xa
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08039858
_08039568:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803956C
sub_0803956C: @ 0x0803956C
push {r4, lr}
adds r4, r0, #0
bl sub_08039758
cmp r0, #0
bne _0803958A
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803958A
adds r0, r4, #0
bl sub_0803992C
_0803958A:
pop {r4, pc}
thumb_func_start sub_0803958C
sub_0803958C: @ 0x0803958C
push {r4, lr}
adds r4, r0, #0
bl sub_08039758
cmp r0, #0
bne _080395D4
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
beq _080395C0
adds r0, r4, #0
bl sub_080042B8
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080395D4
adds r0, r4, #0
bl sub_0803998C
b _080395D4
_080395C0:
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
lsls r0, r0, #1
movs r1, #1
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0803998C
_080395D4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080395D8
sub_080395D8: @ 0x080395D8
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08039602
adds r0, r4, #0
bl sub_0803998C
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x5a
strb r0, [r1]
movs r0, #0x7d
bl sub_08004488
_08039602:
pop {r4, pc}
thumb_func_start sub_08039604
sub_08039604: @ 0x08039604
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
ldr r0, [r4, #0x20]
cmp r0, #0
bge _08039624
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
_08039624:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08039628
sub_08039628: @ 0x08039628
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
adds r1, r0, #0
cmp r1, #0
beq _0803963A
subs r0, #1
strb r0, [r2, #0xe]
b _0803966A
_0803963A:
ldrh r0, [r2, #0x36]
adds r0, #4
strh r0, [r2, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
blt _0803966A
movs r0, #7
strb r0, [r2, #0xc]
movs r0, #0xa
strb r0, [r2, #0xe]
strh r1, [r2, #0x36]
adds r1, r2, #0
adds r1, #0x7a
movs r0, #0x78
strb r0, [r1]
adds r1, #2
movs r0, #0x3c
strb r0, [r1]
adds r0, r2, #0
bl sub_080399C4
ldr r0, _0803966C @ =0x0000014B
bl sub_08004488
_0803966A:
pop {pc}
.align 2, 0
_0803966C: .4byte 0x0000014B
thumb_func_start sub_08039670
sub_08039670: @ 0x08039670
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08039686
adds r0, r1, #0
bl sub_0803998C
_08039686:
pop {pc}
thumb_func_start sub_08039688
sub_08039688: @ 0x08039688
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _080396AC
adds r0, r4, #0
movs r1, #0x3c
bl sub_08039A00
adds r0, r4, #0
bl sub_0803998C
b _080396BA
_080396AC:
movs r0, #0x1f
ands r1, r0
cmp r1, #0
bne _080396BA
adds r0, r4, #0
bl sub_08039A20
_080396BA:
pop {r4, pc}
thumb_func_start sub_080396BC
sub_080396BC: @ 0x080396BC
push {r4, lr}
adds r4, r0, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
cmp r0, #0
bne _080396E2
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080396E2
adds r0, r4, #0
bl sub_08039A70
_080396E2:
pop {r4, pc}
thumb_func_start sub_080396E4
sub_080396E4: @ 0x080396E4
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
adds r0, r4, #0
bl sub_080042B8
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08039708
adds r0, r4, #0
bl sub_08039AD4
_08039708:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803970C
sub_0803970C: @ 0x0803970C
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08039756
ldrb r0, [r4, #0xb]
cmp r0, #1
bne _0803973A
adds r0, r4, #0
bl sub_0803998C
ldr r0, [r4, #0x54]
bl sub_0805E7BC
movs r0, #0
str r0, [r4, #0x54]
b _08039740
_0803973A:
adds r0, r4, #0
bl sub_08039A48
_08039740:
adds r2, r4, #0
adds r2, #0x3b
ldrb r1, [r2]
movs r0, #4
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
adds r0, #0x3c
strh r0, [r1]
_08039756:
pop {r4, pc}
thumb_func_start sub_08039758
sub_08039758: @ 0x08039758
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x7a
ldrb r0, [r5]
cmp r0, #0
beq _0803976A
subs r0, #1
strb r0, [r5]
_0803976A:
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08039818
ldrb r0, [r5]
cmp r0, #0
bne _08039818
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080397DC
ldr r5, _080397D8 @ =gUnk_020000B0
ldr r0, [r5]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x24
bl sub_0806FCB8
cmp r0, #0
beq _08039818
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
ldr r1, [r5]
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #3
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803981C
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x46
strb r0, [r1]
adds r1, #0x3e
strb r0, [r1]
movs r0, #0xa0
lsls r0, r0, #0xa
str r0, [r4, #0x20]
movs r0, #1
b _0803981A
.align 2, 0
_080397D8: .4byte gUnk_020000B0
_080397DC:
ldr r5, _08039814 @ =gUnk_020000B0
ldr r0, [r5]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x48
bl sub_0806FCB8
cmp r0, #0
beq _08039818
movs r0, #8
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldr r1, [r5]
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x14]
adds r1, #0xc
adds r0, r4, #0
bl sub_080042AC
movs r0, #1
b _0803981A
.align 2, 0
_08039814: .4byte gUnk_020000B0
_08039818:
movs r0, #0
_0803981A:
pop {r4, r5, pc}
thumb_func_start sub_0803981C
sub_0803981C: @ 0x0803981C
push {lr}
adds r2, r0, #0
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r2, #0x20]
adds r1, r2, #0
adds r1, #0x3d
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
bne _08039836
movs r0, #0xf4
strb r0, [r1]
_08039836:
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x45
strb r0, [r1]
adds r1, #0x3e
strb r0, [r1]
ldrb r1, [r2, #0x14]
adds r1, #8
adds r0, r2, #0
bl sub_080042AC
ldr r0, _08039854 @ =0x0000012B
bl sub_08004488
pop {pc}
.align 2, 0
_08039854: .4byte 0x0000012B
thumb_func_start sub_08039858
sub_08039858: @ 0x08039858
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_080398C0
adds r6, r0, #0
ldrb r0, [r5, #0x14]
lsls r4, r0, #3
adds r0, r6, #4
movs r1, #0x18
ands r0, r1
cmp r0, r4
bne _0803988C
adds r1, r5, #0
adds r1, #0x7b
ldrb r0, [r1]
cmp r0, #3
bne _080398B8
movs r0, #0
strb r0, [r1]
bl Random
movs r1, #2
ands r1, r0
subs r1, #1
lsls r1, r1, #3
adds r6, r6, r1
_0803988C:
subs r0, r6, r4
movs r1, #0x1f
ands r0, r1
lsrs r4, r0, #4
movs r0, #1
eors r4, r0
ldr r1, _080398BC @ =gUnk_080CF8F8
ldrb r0, [r5, #0x14]
lsls r0, r0, #1
adds r0, r0, r4
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r5, #0
bl sub_080042AC
lsls r0, r4, #1
ldrb r1, [r5, #0x14]
adds r0, r0, r1
subs r0, #1
movs r1, #3
ands r0, r1
strb r0, [r5, #0x14]
_080398B8:
pop {r4, r5, r6, pc}
.align 2, 0
_080398BC: .4byte gUnk_080CF8F8
thumb_func_start sub_080398C0
sub_080398C0: @ 0x080398C0
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08039908
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08039908
ldr r0, _08039900 @ =gUnk_020000B0
ldr r0, [r0]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x58
bl sub_0806FCB8
cmp r0, #0
beq _08039908
ldr r1, _08039904 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
b _08039928
.align 2, 0
_08039900: .4byte gUnk_020000B0
_08039904: .4byte gLinkEntity
_08039908:
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _08039922
movs r0, #7
ands r0, r5
cmp r0, #0
beq _08039922
adds r0, r4, #0
bl sub_08049EE4
b _08039928
_08039922:
lsrs r0, r5, #0x10
movs r1, #0x18
ands r0, r1
_08039928:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803992C
sub_0803992C: @ 0x0803992C
push {r4, lr}
adds r4, r0, #0
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0xe0
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
strb r0, [r4, #0x15]
bl Random
ldr r2, _08039978 @ =gUnk_080CF900
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
ldrb r1, [r1]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
ldrb r1, [r4, #0x15]
adds r0, r4, #0
movs r2, #0
bl sub_080AE58C
ldr r1, _0803997C @ =gUnk_080CF910
ldrb r2, [r4, #0x14]
lsls r0, r2, #1
adds r0, r0, r1
ldrh r1, [r0]
ldrh r0, [r4, #0x2a]
ands r0, r1
cmp r0, #0
beq _08039980
adds r0, r4, #0
adds r1, r2, #0
bl sub_080042AC
b _08039988
.align 2, 0
_08039978: .4byte gUnk_080CF900
_0803997C: .4byte gUnk_080CF910
_08039980:
adds r1, r2, #4
adds r0, r4, #0
bl sub_080042AC
_08039988:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803998C
sub_0803998C: @ 0x0803998C
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x44
strb r0, [r1]
adds r1, #0x3e
strb r0, [r1]
bl Random
ldr r2, _080399C0 @ =gUnk_080CF918
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
ldrb r1, [r1]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_080042AC
pop {r4, pc}
.align 2, 0
_080399C0: .4byte gUnk_080CF918
thumb_func_start sub_080399C4
sub_080399C4: @ 0x080399C4
push {r4, lr}
adds r4, r0, #0
movs r1, #0x11
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080399E2
ldrh r0, [r1, #0x2e]
subs r0, #4
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
adds r0, #2
strh r0, [r1, #0x32]
_080399E2:
adds r0, r4, #0
movs r1, #0x11
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080399FE
ldrh r0, [r1, #0x2e]
adds r0, #4
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
adds r0, #2
strh r0, [r1, #0x32]
_080399FE:
pop {r4, pc}
thumb_func_start sub_08039A00
sub_08039A00: @ 0x08039A00
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
bl Random
ldr r2, _08039A1C @ =gUnk_080CF928
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r5
adds r4, #0x7a
strb r0, [r4]
pop {r4, r5, pc}
.align 2, 0
_08039A1C: .4byte gUnk_080CF928
thumb_func_start sub_08039A20
sub_08039A20: @ 0x08039A20
push {r4, lr}
adds r4, r0, #0
movs r1, #2
movs r2, #0
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _08039A44
ldrb r0, [r4, #0x15]
strb r0, [r1, #0x15]
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x3c
strb r0, [r1]
movs r0, #0xfb
bl sub_08004488
_08039A44:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08039A48
sub_08039A48: @ 0x08039A48
push {lr}
adds r2, r0, #0
movs r0, #9
strb r0, [r2, #0xc]
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x47
strb r0, [r1]
adds r1, #0x3e
strb r0, [r1]
subs r1, #5
movs r0, #0xa
strh r0, [r1]
ldrb r1, [r2, #0x14]
adds r1, #0x10
adds r0, r2, #0
bl sub_080042AC
pop {pc}
.align 2, 0
thumb_func_start sub_08039A70
sub_08039A70: @ 0x08039A70
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xa
strb r0, [r5, #0xc]
movs r0, #0xe0
strh r0, [r5, #0x24]
bl Random
adds r4, r0, #0
ldr r1, _08039AB8 @ =gUnk_080CF92C
movs r0, #3
ands r0, r4
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x78
strh r1, [r0]
lsrs r4, r4, #0x10
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _08039ABC
movs r0, #7
ands r0, r4
cmp r0, #0
beq _08039ABC
adds r0, r5, #0
bl sub_08049EE4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
b _08039AC2
.align 2, 0
_08039AB8: .4byte gUnk_080CF92C
_08039ABC:
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
_08039AC2:
ldrb r0, [r5, #0x15]
lsrs r0, r0, #3
strb r0, [r5, #0x14]
ldrb r1, [r5, #0x14]
adds r1, #0x14
adds r0, r5, #0
bl sub_080042AC
pop {r4, r5, pc}
thumb_func_start sub_08039AD4
sub_08039AD4: @ 0x08039AD4
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08039B28
adds r5, r0, #0
ldr r0, _08039B18 @ =0x0000FFFF
cmp r5, r0
beq _08039B20
ldrb r2, [r4, #0xb]
adds r0, r4, #0
movs r1, #0x10
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _08039B20
str r4, [r1, #0x50]
movs r0, #0xb
strb r0, [r4, #0xc]
str r1, [r4, #0x54]
ldrb r1, [r4, #0x14]
adds r1, #0x18
adds r0, r4, #0
bl sub_080042AC
ldr r0, _08039B1C @ =0x00004067
adds r1, r4, #0
adds r1, #0x38
ldrb r2, [r1]
adds r1, r5, #0
bl sub_0800015E
b _08039B26
.align 2, 0
_08039B18: .4byte 0x0000FFFF
_08039B1C: .4byte 0x00004067
_08039B20:
adds r0, r4, #0
bl sub_08039A48
_08039B26:
pop {r4, r5, pc}
thumb_func_start sub_08039B28
sub_08039B28: @ 0x08039B28
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r0, [r6, #0x54]
cmp r0, #0
bne _08039B84
ldrb r2, [r6, #0x14]
lsls r2, r2, #1
ldr r0, _08039B88 @ =gUnk_080CF930
adds r2, r2, r0
movs r1, #0x2e
ldrsh r0, [r6, r1]
movs r1, #0
ldrsb r1, [r2, r1]
adds r0, r0, r1
ldr r4, _08039B8C @ =gRoomControls
ldrh r1, [r4, #6]
subs r0, r0, r1
asrs r5, r0, #4
movs r3, #0x3f
ands r5, r3
movs r1, #0x32
ldrsh r0, [r6, r1]
movs r1, #1
ldrsb r1, [r2, r1]
adds r0, r0, r1
ldrh r1, [r4, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r5, r0
adds r0, r6, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r5, #0
bl sub_080002B0
adds r2, r0, #0
ldr r1, _08039B90 @ =gUnk_080CF938
_08039B76:
ldrh r0, [r1]
cmp r0, r2
beq _08039B98
adds r1, #4
ldrh r0, [r1]
cmp r0, #0
bne _08039B76
_08039B84:
ldr r0, _08039B94 @ =0x0000FFFF
b _08039B9E
.align 2, 0
_08039B88: .4byte gUnk_080CF930
_08039B8C: .4byte gRoomControls
_08039B90: .4byte gUnk_080CF938
_08039B94: .4byte 0x0000FFFF
_08039B98:
ldrh r0, [r1, #2]
strb r0, [r6, #0xb]
adds r0, r5, #0
_08039B9E:
pop {r4, r5, r6, pc}
thumb_func_start sub_08039BA0
sub_08039BA0: @ 0x08039BA0
push {r4, r5, lr}
adds r5, r0, #0
bl sub_080012DC
adds r1, r0, #0
cmp r1, #0
beq _08039BC4
ldr r0, _08039BC0 @ =gUnk_080012C8
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r5, #0
bl _call_via_r1
b _08039BD8
.align 2, 0
_08039BC0: .4byte gUnk_080012C8
_08039BC4:
ldr r4, _08039BDC @ =gUnk_080CFB84
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
_08039BD8:
pop {r4, r5, pc}
.align 2, 0
_08039BDC: .4byte gUnk_080CFB84
thumb_func_start sub_08039BE0
sub_08039BE0: @ 0x08039BE0
push {lr}
ldr r2, _08039BF4 @ =gUnk_080CFB9C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08039BF4: .4byte gUnk_080CFB9C
thumb_func_start sub_08039BF8
sub_08039BF8: @ 0x08039BF8
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_0803A100
adds r0, r5, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x9d
bne _08039C64
movs r0, #7
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
movs r0, #0xa8
lsls r0, r0, #0xa
str r0, [r5, #0x20]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08039C60 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
b _08039C72
.align 2, 0
_08039C60: .4byte gRoomControls
_08039C64:
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
beq _08039C72
adds r0, r5, #0
bl sub_0803A0E0
_08039C72:
ldr r1, _08039C7C @ =gUnk_080CFB84
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_08039C7C: .4byte gUnk_080CFB84
thumb_func_start sub_08039C80
sub_08039C80: @ 0x08039C80
push {lr}
ldr r2, _08039C94 @ =gUnk_080CFBBC
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08039C94: .4byte gUnk_080CFBBC
thumb_func_start sub_08039C98
sub_08039C98: @ 0x08039C98
push {r4, lr}
adds r4, r0, #0
bl sub_0803A100
movs r1, #0
movs r0, #1
strb r0, [r4, #0xd]
strb r1, [r4, #0xe]
movs r0, #0x30
strb r0, [r4, #0x1d]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08039CB0
sub_08039CB0: @ 0x08039CB0
push {r4, lr}
adds r4, r0, #0
bl sub_0803A100
adds r0, r4, #0
bl sub_0806F520
cmp r0, #0
beq _08039CCA
adds r0, r4, #0
bl sub_0806F4E8
b _08039CDE
_08039CCA:
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
beq _08039CDE
adds r0, r4, #0
bl sub_0803A0E0
_08039CDE:
pop {r4, pc}
thumb_func_start sub_08039CE0
sub_08039CE0: @ 0x08039CE0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r4, [r5, #0xe]
cmp r4, #0
bne _08039D2A
bl sub_0803A100
movs r0, #1
strb r0, [r5, #0xe]
ldr r0, _08039D3C @ =0x0000FFFF
strh r0, [r5, #0x36]
adds r0, r5, #0
adds r0, #0x62
strb r4, [r0]
adds r0, #0x12
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08039D40 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
_08039D2A:
adds r0, r5, #0
bl sub_0806F520
cmp r0, #0
beq _08039D44
adds r0, r5, #0
bl sub_0806F3E4
b _08039D4A
.align 2, 0
_08039D3C: .4byte 0x0000FFFF
_08039D40: .4byte gRoomControls
_08039D44:
adds r0, r5, #0
bl sub_0803A0E0
_08039D4A:
pop {r4, r5, r6, pc}
thumb_func_start sub_08039D4C
sub_08039D4C: @ 0x08039D4C
push {lr}
adds r2, r0, #0
ldr r0, _08039D64 @ =gLinkState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08039D62
adds r0, r2, #0
bl sub_0803A0E0
_08039D62:
pop {pc}
.align 2, 0
_08039D64: .4byte gLinkState
thumb_func_start nullsub_166
nullsub_166: @ 0x08039D68
bx lr
.align 2, 0
thumb_func_start sub_08039D6C
sub_08039D6C: @ 0x08039D6C
push {lr}
bl sub_0803A0E0
pop {pc}
thumb_func_start sub_08039D74
sub_08039D74: @ 0x08039D74
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r5, #0xc]
movs r0, #2
strb r0, [r5, #0x1c]
strb r1, [r5, #0x16]
ldrh r0, [r5, #0x32]
adds r0, #3
strh r0, [r5, #0x32]
movs r0, #0x2e
ldrsh r4, [r5, r0]
ldr r1, _08039DD0 @ =gRoomControls
ldrh r0, [r1, #6]
subs r4, r4, r0
asrs r4, r4, #4
movs r2, #0x3f
ands r4, r2
movs r3, #0x32
ldrsh r0, [r5, r3]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
adds r6, r5, #0
adds r6, #0x38
ldrb r1, [r6]
adds r0, r4, #0
bl sub_080001DA
adds r1, r5, #0
adds r1, #0x74
strh r0, [r1]
ldr r0, _08039DD4 @ =0x00004060
ldrb r2, [r6]
adds r1, r4, #0
bl sub_0800015E
adds r0, r5, #0
movs r1, #0
bl sub_08004260
pop {r4, r5, r6, pc}
.align 2, 0
_08039DD0: .4byte gRoomControls
_08039DD4: .4byte 0x00004060
thumb_func_start sub_08039DD8
sub_08039DD8: @ 0x08039DD8
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_0803A100
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _08039E38
adds r0, r5, #0
bl sub_080002A0
ldr r1, _08039E30 @ =0x00004073
cmp r0, r1
bne _08039E28
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08039E34 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
adds r0, r5, #0
bl sub_0803A0E0
_08039E28:
adds r0, r5, #0
bl sub_08078930
b _08039EC6
.align 2, 0
_08039E30: .4byte 0x00004073
_08039E34: .4byte gRoomControls
_08039E38:
ldr r0, _08039E6C @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08039EC6
ldr r2, _08039E70 @ =gLinkEntity
movs r0, #0x2e
ldrsh r1, [r2, r0]
movs r6, #0x32
ldrsh r2, [r2, r6]
adds r0, r5, #0
movs r3, #0x30
bl sub_0806FCB8
cmp r0, #0
beq _08039EC6
ldrb r0, [r5, #0xa]
cmp r0, #1
bne _08039E74
movs r0, #3
strb r0, [r5, #0xc]
movs r0, #0x1e
strb r0, [r5, #0xe]
b _08039EC6
.align 2, 0
_08039E6C: .4byte gLinkState
_08039E70: .4byte gLinkEntity
_08039E74:
ldrb r1, [r5, #0xa]
subs r1, #2
movs r0, #0x42
bl CreateEnemy
adds r2, r0, #0
cmp r2, #0
beq _08039EC6
movs r0, #1
strb r0, [r2, #0xb]
adds r0, r5, #0
adds r1, r2, #0
bl CopyPosition
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _08039EC8 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
adds r0, r5, #0
bl sub_0805E7BC
_08039EC6:
pop {r4, r5, r6, pc}
.align 2, 0
_08039EC8: .4byte gRoomControls
thumb_func_start sub_08039ECC
sub_08039ECC: @ 0x08039ECC
push {lr}
ldr r2, _08039EE0 @ =gUnk_080CFBD4
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08039EE0: .4byte gUnk_080CFBD4
thumb_func_start sub_08039EE4
sub_08039EE4: @ 0x08039EE4
push {r4, r5, r6, lr}
mov ip, r0
movs r2, #0
movs r0, #1
mov r1, ip
strb r0, [r1, #0xd]
ldrb r1, [r1, #0x10]
movs r0, #0x7f
ands r0, r1
mov r3, ip
strb r0, [r3, #0x10]
strh r2, [r3, #0x2a]
ldr r0, _08039F40 @ =gUnk_080FD340
str r0, [r3, #0x48]
ldr r0, _08039F44 @ =gLinkEntity
ldrb r0, [r0, #0x14]
mov r1, ip
adds r1, #0x76
strb r0, [r1]
mov r0, ip
adds r0, #0x74
ldrh r0, [r0]
movs r5, #0x2e
ldrsh r1, [r3, r5]
ldr r3, _08039F48 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
mov r6, ip
movs r5, #0x32
ldrsh r2, [r6, r5]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
mov r2, ip
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
pop {r4, r5, r6, pc}
.align 2, 0
_08039F40: .4byte gUnk_080FD340
_08039F44: .4byte gLinkEntity
_08039F48: .4byte gRoomControls
thumb_func_start sub_08039F4C
sub_08039F4C: @ 0x08039F4C
push {lr}
adds r3, r0, #0
ldr r0, _08039F74 @ =gLinkEntity
movs r1, #0x76
adds r1, r1, r3
mov ip, r1
ldrb r2, [r0, #0x14]
ldrb r0, [r1]
cmp r2, r0
beq _08039F70
subs r0, r2, r0
ldrb r1, [r3, #0x1e]
adds r0, r0, r1
movs r1, #6
ands r0, r1
strb r0, [r3, #0x1e]
mov r0, ip
strb r2, [r0]
_08039F70:
pop {pc}
.align 2, 0
_08039F74: .4byte gLinkEntity
thumb_func_start sub_08039F78
sub_08039F78: @ 0x08039F78
push {lr}
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r3]
movs r1, #0x36
ldrsh r0, [r2, r1]
cmp r0, #0
beq _08039F9C
ldrh r0, [r2, #0x2a]
cmp r0, #0
beq _08039FA2
_08039F9C:
adds r0, r2, #0
bl sub_0803A0E0
_08039FA2:
pop {pc}
thumb_func_start sub_08039FA4
sub_08039FA4: @ 0x08039FA4
push {lr}
bl sub_0803A0E0
pop {pc}
thumb_func_start sub_08039FAC
sub_08039FAC: @ 0x08039FAC
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_0803A100
adds r3, r5, #0
adds r3, #0x62
ldr r2, _0803A03C @ =gUnk_080CFBE4
ldrb r1, [r5, #0xe]
movs r0, #3
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
ldrb r1, [r3]
adds r0, r0, r1
strb r0, [r3]
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _0803A03A
movs r0, #4
strb r0, [r5, #0xc]
ldrb r0, [r5, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
strb r4, [r3]
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0xa0
strb r0, [r1]
subs r1, #4
movs r0, #0xf
strb r0, [r1]
ldr r0, _0803A040 @ =gUnk_080FD34C
str r0, [r5, #0x48]
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r5, r2]
ldr r3, _0803A044 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r5, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl sub_0800015E
_0803A03A:
pop {r4, r5, r6, pc}
.align 2, 0
_0803A03C: .4byte gUnk_080CFBE4
_0803A040: .4byte gUnk_080FD34C
_0803A044: .4byte gRoomControls
thumb_func_start sub_0803A048
sub_0803A048: @ 0x0803A048
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldr r0, [r4, #0x34]
ldr r1, _0803A078 @ =0xFFFF0000
adds r0, r0, r1
str r0, [r4, #0x34]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
bgt _0803A076
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0xa
strb r0, [r4, #0xe]
ldr r1, _0803A07C @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
_0803A076:
pop {r4, pc}
.align 2, 0
_0803A078: .4byte 0xFFFF0000
_0803A07C: .4byte gLinkEntity
thumb_func_start sub_0803A080
sub_0803A080: @ 0x0803A080
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A098
movs r0, #6
strb r0, [r4, #0xc]
_0803A098:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803A09C
sub_0803A09C: @ 0x0803A09C
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_080AEFE0
ldrh r0, [r4, #0x2a]
cmp r0, #0
beq _0803A0B6
adds r0, r4, #0
bl sub_0803A0E0
_0803A0B6:
pop {r4, pc}
thumb_func_start sub_0803A0B8
sub_0803A0B8: @ 0x0803A0B8
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x20]
cmp r0, #0
bge _0803A0CA
ldrb r0, [r4, #0x18]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x18]
_0803A0CA:
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _0803A0DE
adds r0, r4, #0
bl sub_0803A0E0
_0803A0DE:
pop {r4, pc}
thumb_func_start sub_0803A0E0
sub_0803A0E0: @ 0x0803A0E0
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xb]
movs r2, #0
movs r3, #0
bl sub_0808288C
adds r2, r0, #0
adds r0, r4, #0
movs r1, #0x3c
bl CreateFX
bl sub_0805E780
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803A100
sub_0803A100: @ 0x0803A100
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r3, _0803A14C @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r4, r0, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r5, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
adds r6, r5, #0
adds r6, #0x38
ldrb r1, [r6]
adds r0, r4, #0
bl sub_080001DA
ldr r1, _0803A150 @ =0x00004067
cmp r0, r1
bne _0803A148
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
ldrb r2, [r6]
adds r1, r4, #0
bl sub_0800015E
bl sub_0805E780
_0803A148:
pop {r4, r5, r6, pc}
.align 2, 0
_0803A14C: .4byte gRoomControls
_0803A150: .4byte 0x00004067
thumb_func_start sub_0803A154
sub_0803A154: @ 0x0803A154
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0803A16C @ =gUnk_080CFC14
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0803A16C: .4byte gUnk_080CFC14
thumb_func_start sub_0803A170
sub_0803A170: @ 0x0803A170
push {lr}
ldr r2, _0803A184 @ =gUnk_080CFC2C
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803A184: .4byte gUnk_080CFC2C
thumb_func_start sub_0803A188
sub_0803A188: @ 0x0803A188
push {r4, r5, lr}
adds r4, r0, #0
ldrb r3, [r4, #0xa]
cmp r3, #1
bhi _0803A23E
ldrb r0, [r4, #0xc]
cmp r0, #0x2b
beq _0803A210
adds r0, r4, #0
adds r0, #0x3d
movs r1, #0
ldrsb r1, [r0, r1]
adds r5, r0, #0
cmp r1, #0
ble _0803A23E
adds r0, #4
ldrb r0, [r0]
cmp r0, #0x95
beq _0803A1B2
cmp r0, #0x8e
bne _0803A23E
_0803A1B2:
movs r0, #0x28
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldr r2, [r4, #0x50]
adds r0, r2, #0
adds r0, #0x7d
ldrb r1, [r0]
cmp r3, #0
bne _0803A1CE
movs r0, #1
b _0803A1D0
_0803A1CE:
movs r0, #2
_0803A1D0:
orrs r1, r0
adds r0, r2, #0
adds r0, #0x7d
strb r1, [r0]
adds r0, #3
ldrb r2, [r0]
ldrb r1, [r4, #0xa]
adds r3, r0, #0
cmp r1, #0
bne _0803A1E8
movs r0, #1
b _0803A1EA
_0803A1E8:
movs r0, #2
_0803A1EA:
orrs r0, r2
strb r0, [r3]
ldr r2, [r4, #0x54]
ldrb r1, [r5]
adds r0, r2, #0
adds r0, #0x3d
strb r1, [r0]
ldr r2, [r4, #0x74]
ldrb r1, [r5]
adds r0, r2, #0
adds r0, #0x3d
strb r1, [r0]
ldr r0, _0803A20C @ =0x00000127
bl PlaySFX
b _0803A23E
.align 2, 0
_0803A20C: .4byte 0x00000127
_0803A210:
ldr r2, [r4, #0x54]
adds r3, r4, #0
adds r3, #0x3d
ldrb r1, [r3]
adds r0, r2, #0
adds r0, #0x3d
strb r1, [r0]
ldr r2, [r4, #0x74]
ldrb r1, [r3]
adds r0, r2, #0
adds r0, #0x3d
strb r1, [r0]
adds r0, r4, #0
movs r1, #0x18
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #9
bl sub_080042AC
ldr r0, _0803A248 @ =0x00000127
bl PlaySFX
_0803A23E:
ldr r1, _0803A24C @ =gUnk_080CFC14
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_0803A248: .4byte 0x00000127
_0803A24C: .4byte gUnk_080CFC14
thumb_func_start nullsub_167
nullsub_167: @ 0x0803A250
bx lr
.align 2, 0
thumb_func_start sub_0803A254
sub_0803A254: @ 0x0803A254
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803A270 @ =gUnk_080CFC3C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0803B538
pop {r4, pc}
.align 2, 0
_0803A270: .4byte gUnk_080CFC3C
thumb_func_start sub_0803A274
sub_0803A274: @ 0x0803A274
push {r4, lr}
adds r4, r0, #0
ldr r0, _0803A2C8 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x44
bhi _0803A360
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0803A2CC
movs r0, #0x38
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
str r1, [r4, #0x54]
movs r0, #0x44
movs r1, #2
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
str r1, [r4, #0x74]
movs r0, #0x7e
movs r1, #1
movs r2, #0
bl CreateObject
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x54]
str r0, [r1, #0x54]
ldr r0, [r4, #0x50]
movs r2, #0x80
lsls r2, r2, #0xd
movs r3, #0x80
lsls r3, r3, #0xe
adds r1, r4, #0
bl PositionRelative
b _0803A310
.align 2, 0
_0803A2C8: .4byte gUnk_03003DBC
_0803A2CC:
movs r0, #0x38
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
str r1, [r4, #0x54]
movs r0, #0x44
movs r1, #3
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
str r1, [r4, #0x74]
movs r0, #0x7e
movs r1, #2
movs r2, #0
bl CreateObject
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x54]
str r0, [r1, #0x54]
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x50]
ldr r2, _0803A34C @ =0xFFF00000
movs r3, #0x80
lsls r3, r3, #0xe
adds r1, r4, #0
bl PositionRelative
_0803A310:
ldr r0, _0803A350 @ =gUnk_030010A0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _0803A354
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r2, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
movs r3, #1
orrs r0, r3
strb r0, [r4, #0x18]
ldr r2, [r4, #0x54]
ldrb r0, [r2, #0x18]
ands r1, r0
orrs r1, r3
strb r1, [r2, #0x18]
adds r0, r4, #0
movs r1, #0x10
bl sub_08004260
b _0803A360
.align 2, 0
_0803A34C: .4byte 0xFFF00000
_0803A350: .4byte gUnk_030010A0
_0803A354:
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
_0803A360:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803A364
sub_0803A364: @ 0x0803A364
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A3A0 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
ldrb r0, [r4, #0xd]
movs r1, #0x7f
ands r1, r0
cmp r1, #0xb
bls _0803A394
b _0803A52C
_0803A394:
lsls r0, r1, #2
ldr r1, _0803A3A4 @ =_0803A3A8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803A3A0: .4byte gUnk_080CED6C
_0803A3A4: .4byte _0803A3A8
_0803A3A8: @ jump table
.4byte _0803A546 @ case 0
.4byte _0803A3D8 @ case 1
.4byte _0803A546 @ case 2
.4byte _0803A3FA @ case 3
.4byte _0803A418 @ case 4
.4byte _0803A434 @ case 5
.4byte _0803A44E @ case 6
.4byte _0803A468 @ case 7
.4byte _0803A49A @ case 8
.4byte _0803A4B2 @ case 9
.4byte _0803A4CC @ case 10
.4byte _0803A4FA @ case 11
_0803A3D8:
movs r0, #2
strb r0, [r4, #0xd]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x18]
subs r0, #6
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r2, #0x18]
ldrb r1, [r2, #0x19]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #0x19]
b _0803A546
_0803A3FA:
movs r0, #4
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #8
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldr r2, [r4, #0x54]
ldrb r1, [r2, #0x19]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0x19]
b _0803A546
_0803A418:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803A42E
b _0803A546
_0803A42E:
movs r0, #5
strb r0, [r4, #0xd]
b _0803A546
_0803A434:
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
bne _0803A446
adds r0, r4, #0
bl sub_0806F69C
b _0803A546
_0803A446:
movs r0, #0
strb r0, [r4, #0xb]
movs r0, #6
b _0803A516
_0803A44E:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A546
movs r0, #7
strb r0, [r4, #0xd]
adds r0, r4, #0
movs r1, #5
bl sub_08004260
b _0803A546
_0803A468:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A546
movs r0, #8
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #0xc
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x54]
movs r1, #8
bl sub_080042AC
movs r0, #0xb7
lsls r0, r0, #1
bl PlaySFX
b _0803A546
_0803A49A:
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A546
movs r0, #9
b _0803A516
_0803A4B2:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A546
movs r0, #0xa
strb r0, [r4, #0xd]
ldr r0, [r4, #0x54]
movs r1, #6
bl sub_080042AC
b _0803A546
_0803A4CC:
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A546
movs r0, #0xb
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #0xf
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
b _0803A546
_0803A4FA:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A546
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _0803A51E
movs r0, #0xc
_0803A516:
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _0803A546
_0803A51E:
movs r0, #1
strb r0, [r4, #0xb]
movs r0, #6
strb r0, [r4, #0xd]
movs r0, #0xa
strb r0, [r4, #0xe]
b _0803A546
_0803A52C:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A546
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
bl sub_0803B4D4
_0803A546:
pop {r4, pc}
thumb_func_start sub_0803A548
sub_0803A548: @ 0x0803A548
push {r4, lr}
adds r4, r0, #0
bl sub_0803B5C0
adds r0, r4, #0
bl sub_080042B8
ldr r2, _0803A588 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
bne _0803A586
adds r0, r4, #0
bl sub_0806F69C
_0803A586:
pop {r4, pc}
.align 2, 0
_0803A588: .4byte gUnk_080CED6C
thumb_func_start sub_0803A58C
sub_0803A58C: @ 0x0803A58C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A5C4 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
beq _0803A5C8
adds r0, r4, #0
bl sub_0803B59C
b _0803A5CE
.align 2, 0
_0803A5C4: .4byte gUnk_080CED6C
_0803A5C8:
adds r0, r4, #0
bl sub_0806F69C
_0803A5CE:
pop {r4, pc}
thumb_func_start sub_0803A5D0
sub_0803A5D0: @ 0x0803A5D0
push {lr}
movs r1, #5
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x10]
movs r1, #0x7f
ands r1, r2
strb r1, [r0, #0x10]
ldr r3, _0803A608 @ =gUnk_080CED6C
ldr r1, [r0, #0x50]
ldrb r1, [r1, #0xf]
lsrs r1, r1, #4
adds r1, #3
ldrb r2, [r0, #0xa]
lsls r2, r2, #1
adds r1, r1, r2
movs r2, #7
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r1, #4
strh r1, [r0, #0x36]
movs r1, #5
bl sub_08004260
pop {pc}
.align 2, 0
_0803A608: .4byte gUnk_080CED6C
thumb_func_start sub_0803A60C
sub_0803A60C: @ 0x0803A60C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A65C @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A658
movs r0, #6
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0xa
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x54]
movs r1, #8
bl sub_080042AC
_0803A658:
pop {r4, pc}
.align 2, 0
_0803A65C: .4byte gUnk_080CED6C
thumb_func_start sub_0803A660
sub_0803A660: @ 0x0803A660
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
adds r5, r0, #0
adds r5, #0x5a
ldrb r1, [r5]
movs r6, #0x80
adds r0, r6, #0
ands r0, r1
cmp r0, #0
beq _0803A6A8
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #0x50
rsbs r0, r0, #0
cmp r1, r0
ble _0803A688
subs r0, r2, #2
b _0803A6DC
_0803A688:
movs r1, #0
movs r0, #7
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldr r1, _0803A6A4 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
b _0803A6DE
.align 2, 0
_0803A6A4: .4byte gLinkEntity
_0803A6A8:
adds r0, r4, #0
bl sub_0803B55C
ldrb r1, [r5]
adds r0, r6, #0
ands r0, r1
cmp r0, #0
beq _0803A6BE
ldr r0, _0803A6E0 @ =0x00000157
bl PlaySFX
_0803A6BE:
ldr r2, _0803A6E4 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
_0803A6DC:
strh r0, [r4, #0x36]
_0803A6DE:
pop {r4, r5, r6, pc}
.align 2, 0
_0803A6E0: .4byte 0x00000157
_0803A6E4: .4byte gUnk_080CED6C
thumb_func_start sub_0803A6E8
sub_0803A6E8: @ 0x0803A6E8
push {r4, lr}
adds r4, r0, #0
bl sub_0803B610
cmp r0, #0
beq _0803A6FE
movs r0, #8
strb r0, [r4, #0xc]
movs r0, #0xa
strb r0, [r4, #0xe]
b _0803A71E
_0803A6FE:
adds r0, r4, #0
bl sub_0803B63C
adds r0, r4, #0
bl sub_0806F69C
ldr r0, [r4, #0x50]
movs r1, #0x32
ldrsh r0, [r0, r1]
adds r1, r0, #0
adds r1, #8
movs r2, #0x32
ldrsh r0, [r4, r2]
cmp r1, r0
ble _0803A71E
strh r1, [r4, #0x32]
_0803A71E:
pop {r4, pc}
thumb_func_start sub_0803A720
sub_0803A720: @ 0x0803A720
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A73C
movs r0, #9
strb r0, [r1, #0xc]
adds r0, r1, #0
movs r1, #0x16
bl sub_0803B8E8
_0803A73C:
pop {pc}
.align 2, 0
thumb_func_start sub_0803A740
sub_0803A740: @ 0x0803A740
push {lr}
adds r3, r0, #0
ldrh r0, [r3, #0x36]
adds r0, #4
strh r0, [r3, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
blt _0803A77E
movs r0, #0
strh r0, [r3, #0x36]
movs r0, #0xa
strb r0, [r3, #0xc]
strb r0, [r3, #0xe]
ldr r1, [r3, #0x50]
adds r1, #0x7d
ldrb r2, [r1]
movs r0, #0x40
orrs r0, r2
strb r0, [r1]
adds r0, r3, #0
movs r1, #0x13
bl sub_0803B8E8
movs r0, #0xa
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
_0803A77E:
pop {pc}
thumb_func_start sub_0803A780
sub_0803A780: @ 0x0803A780
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
movs r3, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A7AA
adds r1, r2, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
ands r0, r3
cmp r0, #0
beq _0803A7A6
movs r0, #6
b _0803A7A8
_0803A7A6:
movs r0, #0xb
_0803A7A8:
strb r0, [r2, #0xc]
_0803A7AA:
pop {pc}
thumb_func_start sub_0803A7AC
sub_0803A7AC: @ 0x0803A7AC
push {lr}
adds r2, r0, #0
ldrh r3, [r2, #0x36]
movs r0, #0x36
ldrsh r1, [r2, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
ble _0803A7C4
subs r0, r3, #1
strh r0, [r2, #0x36]
b _0803A7C8
_0803A7C4:
movs r0, #0xc
strb r0, [r2, #0xc]
_0803A7C8:
pop {pc}
.align 2, 0
thumb_func_start sub_0803A7CC
sub_0803A7CC: @ 0x0803A7CC
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A808 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
beq _0803A80C
movs r0, #0xd
strb r0, [r4, #0xc]
ldr r0, [r4, #0x54]
movs r1, #6
bl sub_080042AC
b _0803A812
.align 2, 0
_0803A808: .4byte gUnk_080CED6C
_0803A80C:
adds r0, r4, #0
bl sub_0806F69C
_0803A812:
pop {r4, pc}
thumb_func_start sub_0803A814
sub_0803A814: @ 0x0803A814
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A868 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A864
movs r0, #0xe
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x12
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
_0803A864:
pop {r4, pc}
.align 2, 0
_0803A868: .4byte gUnk_080CED6C
thumb_func_start sub_0803A86C
sub_0803A86C: @ 0x0803A86C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A8B4 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803A8B2
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
bl sub_0803B59C
_0803A8B2:
pop {r4, pc}
.align 2, 0
_0803A8B4: .4byte gUnk_080CED6C
thumb_func_start sub_0803A8B8
sub_0803A8B8: @ 0x0803A8B8
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #0x10
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
strb r1, [r4, #0x15]
movs r0, #0x80
strh r0, [r4, #0x24]
ldr r2, _0803A904 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
movs r1, #6
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #1
bl sub_080042AC
ldr r0, _0803A908 @ =0x00000153
bl PlaySFX
pop {r4, pc}
.align 2, 0
_0803A904: .4byte gUnk_080CED6C
_0803A908: .4byte 0x00000153
thumb_func_start sub_0803A90C
sub_0803A90C: @ 0x0803A90C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A974 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0803B55C
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803A970
movs r0, #0x11
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
lsls r0, r0, #4
adds r0, #8
strb r0, [r4, #0x15]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #7
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #2
bl sub_080042AC
_0803A970:
pop {r4, pc}
.align 2, 0
_0803A974: .4byte gUnk_080CED6C
thumb_func_start sub_0803A978
sub_0803A978: @ 0x0803A978
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803A9FC @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0803B55C
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0803A9C2
adds r0, r4, #0
movs r1, #0x10
bl sub_08004596
_0803A9C2:
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0x15]
cmp r0, #0x10
bne _0803A9F8
movs r0, #0x12
strb r0, [r4, #0xc]
movs r0, #3
strb r0, [r4, #0xe]
ldrb r2, [r4, #0x10]
movs r1, #0x7f
adds r0, r1, #0
ands r0, r2
strb r0, [r4, #0x10]
ldr r2, [r4, #0x74]
ldrb r0, [r2, #0x10]
ands r1, r0
strb r1, [r2, #0x10]
adds r0, r4, #0
movs r1, #8
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #3
bl sub_080042AC
_0803A9F8:
pop {r4, pc}
.align 2, 0
_0803A9FC: .4byte gUnk_080CED6C
thumb_func_start sub_0803AA00
sub_0803AA00: @ 0x0803AA00
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _0803AA90 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B870
cmp r0, #0
bne _0803AA8E
ldrb r1, [r4, #0xa]
movs r0, #1
eors r0, r1
lsls r0, r0, #4
adds r5, r0, #0
adds r5, #8
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #3
ands r0, r1
cmp r0, #0
bne _0803AA54
adds r0, r4, #0
adds r1, r5, #0
bl sub_08004596
_0803AA54:
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0x15]
cmp r0, r5
beq _0803AA6E
ldr r0, _0803AA94 @ =gLinkEntity
movs r2, #0x32
ldrsh r1, [r4, r2]
movs r2, #0x32
ldrsh r0, [r0, r2]
cmp r1, r0
blt _0803AA8E
_0803AA6E:
movs r0, #0x13
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x17
ands r0, r1
strb r0, [r4, #0x18]
strb r5, [r4, #0x15]
ldr r0, _0803AA94 @ =gLinkEntity
ldrh r1, [r0, #0x2e]
adds r0, r4, #0
adds r0, #0x80
strh r1, [r0]
ldr r0, [r4, #0x54]
movs r1, #4
bl sub_080042AC
_0803AA8E:
pop {r4, r5, pc}
.align 2, 0
_0803AA90: .4byte gUnk_080CED6C
_0803AA94: .4byte gLinkEntity
thumb_func_start sub_0803AA98
sub_0803AA98: @ 0x0803AA98
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AB0C @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B870
cmp r0, #0
bne _0803AB0A
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_0803B6F4
cmp r0, #0
beq _0803AB0A
movs r0, #0x14
strb r0, [r4, #0xc]
movs r0, #0x40
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #0xa
bl sub_08004260
ldr r2, [r4, #0x74]
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
ldr r2, [r4, #0x54]
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x13
strb r0, [r1]
adds r0, r2, #0
movs r1, #5
bl sub_080042AC
movs r0, #0xb7
lsls r0, r0, #1
bl PlaySFX
_0803AB0A:
pop {r4, pc}
.align 2, 0
_0803AB0C: .4byte gUnk_080CED6C
thumb_func_start sub_0803AB10
sub_0803AB10: @ 0x0803AB10
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AB58 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AB56
movs r0, #0x15
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
_0803AB56:
pop {r4, pc}
.align 2, 0
_0803AB58: .4byte gUnk_080CED6C
thumb_func_start sub_0803AB5C
sub_0803AB5C: @ 0x0803AB5C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803ABB0 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803ABAC
movs r0, #0x16
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x1a
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0xb
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #6
bl sub_080042AC
_0803ABAC:
pop {r4, pc}
.align 2, 0
_0803ABB0: .4byte gUnk_080CED6C
thumb_func_start sub_0803ABB4
sub_0803ABB4: @ 0x0803ABB4
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AC18 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AC14
movs r0, #0x17
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #0x10
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #0
bl sub_080042AC
_0803AC14:
pop {r4, pc}
.align 2, 0
_0803AC18: .4byte gUnk_080CED6C
thumb_func_start sub_0803AC1C
sub_0803AC1C: @ 0x0803AC1C
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AC54 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
beq _0803AC58
adds r0, r4, #0
bl sub_0803B59C
b _0803AC5E
.align 2, 0
_0803AC54: .4byte gUnk_080CED6C
_0803AC58:
adds r0, r4, #0
bl sub_0806F69C
_0803AC5E:
pop {r4, pc}
thumb_func_start sub_0803AC60
sub_0803AC60: @ 0x0803AC60
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803ACA8 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0803ACB4
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
beq _0803ACAC
movs r0, #0x19
strb r0, [r4, #0xc]
movs r0, #0
strb r0, [r4, #0xd]
movs r0, #0x1e
b _0803ACB6
.align 2, 0
_0803ACA8: .4byte gUnk_080CED6C
_0803ACAC:
adds r0, r4, #0
bl sub_0806F69C
b _0803ACB8
_0803ACB4:
subs r0, #1
_0803ACB6:
strb r0, [r4, #0xe]
_0803ACB8:
adds r0, r4, #0
bl sub_0803B824
pop {r4, pc}
thumb_func_start sub_0803ACC0
sub_0803ACC0: @ 0x0803ACC0
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
subs r0, #1
cmp r0, #4
bhi _0803ACF0
lsls r0, r0, #2
ldr r1, _0803ACD8 @ =_0803ACDC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803ACD8: .4byte _0803ACDC
_0803ACDC: @ jump table
.4byte _0803AD02 @ case 0
.4byte _0803AD1A @ case 1
.4byte _0803AD4A @ case 2
.4byte _0803AD5C @ case 3
.4byte _0803AD74 @ case 4
_0803ACF0:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803ADA4
movs r0, #1
strb r0, [r4, #0xd]
b _0803ADA4
_0803AD02:
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x20
rsbs r1, r1, #0
cmp r0, r1
bge _0803ADA4
movs r0, #2
strb r0, [r4, #0xd]
b _0803ADA4
_0803AD1A:
ldrh r0, [r4, #0x36]
adds r0, #4
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
blt _0803ADA4
movs r0, #0
strh r0, [r4, #0x36]
movs r0, #0xc
strb r0, [r4, #0xe]
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #8
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
adds r0, r4, #0
bl sub_0803B804
b _0803ADA4
_0803AD4A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803ADA4
movs r0, #4
strb r0, [r4, #0xd]
b _0803ADA4
_0803AD5C:
ldrh r0, [r4, #0x36]
subs r0, #2
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x28
rsbs r1, r1, #0
cmp r0, r1
bge _0803ADA4
movs r0, #5
strb r0, [r4, #0xd]
b _0803ADA4
_0803AD74:
ldrh r0, [r4, #0x36]
adds r0, #4
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
blt _0803ADA4
movs r0, #0
strh r0, [r4, #0x36]
movs r0, #0x1a
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #0x1e
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
adds r0, r4, #0
bl sub_0803B804
b _0803ADAA
_0803ADA4:
adds r0, r4, #0
bl sub_0803B824
_0803ADAA:
pop {r4, pc}
thumb_func_start sub_0803ADAC
sub_0803ADAC: @ 0x0803ADAC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803ADEC
movs r0, #0x16
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x1a
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldr r2, [r4, #0x74]
ldrb r0, [r2, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r0, r4, #0
movs r1, #0xb
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #6
bl sub_080042AC
bl sub_0803B798
b _0803ADF2
_0803ADEC:
adds r0, r4, #0
bl sub_0803B824
_0803ADF2:
pop {r4, pc}
thumb_func_start sub_0803ADF4
sub_0803ADF4: @ 0x0803ADF4
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AE44 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AE42
movs r0, #0x1c
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x22
ands r0, r1
strb r0, [r4, #0x18]
_0803AE42:
pop {r4, pc}
.align 2, 0
_0803AE44: .4byte gUnk_080CED6C
thumb_func_start sub_0803AE48
sub_0803AE48: @ 0x0803AE48
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AEAC @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_080042B8
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803AE82
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803AEB0
_0803AE82:
ldr r0, [r4, #0x50]
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #3
ands r0, r1
cmp r0, #0
beq _0803AEB0
movs r0, #0x1d
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x21
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
b _0803AEC0
.align 2, 0
_0803AEAC: .4byte gUnk_080CED6C
_0803AEB0:
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
bne _0803AEC0
adds r0, r4, #0
bl sub_0806F69C
_0803AEC0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803AEC4
sub_0803AEC4: @ 0x0803AEC4
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803AF14 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AF10
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
bl sub_0803B59C
_0803AF10:
pop {r4, pc}
.align 2, 0
_0803AF14: .4byte gUnk_080CED6C
thumb_func_start sub_0803AF18
sub_0803AF18: @ 0x0803AF18
push {r4, lr}
adds r4, r0, #0
movs r0, #0x1f
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #5
bl sub_08004260
ldr r2, _0803AF4C @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
pop {r4, pc}
.align 2, 0
_0803AF4C: .4byte gUnk_080CED6C
thumb_func_start sub_0803AF50
sub_0803AF50: @ 0x0803AF50
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AF7A
movs r0, #0x20
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x24
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x54]
movs r1, #8
bl sub_080042AC
_0803AF7A:
pop {r4, pc}
thumb_func_start sub_0803AF7C
sub_0803AF7C: @ 0x0803AF7C
push {r4, lr}
adds r4, r0, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803AF9A
movs r0, #0x21
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
_0803AF9A:
pop {r4, pc}
thumb_func_start sub_0803AF9C
sub_0803AF9C: @ 0x0803AF9C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _0803AFAA
subs r0, #1
b _0803AFC4
_0803AFAA:
ldrh r3, [r2, #0x36]
movs r0, #0x36
ldrsh r1, [r2, r0]
movs r0, #0x20
rsbs r0, r0, #0
cmp r1, r0
ble _0803AFBE
subs r0, r3, #2
strh r0, [r2, #0x36]
b _0803AFC6
_0803AFBE:
movs r0, #0x22
strb r0, [r2, #0xc]
movs r0, #0xa
_0803AFC4:
strb r0, [r2, #0xe]
_0803AFC6:
pop {pc}
thumb_func_start sub_0803AFC8
sub_0803AFC8: @ 0x0803AFC8
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803AFDC
movs r0, #0x23
strb r0, [r1, #0xc]
_0803AFDC:
pop {pc}
.align 2, 0
thumb_func_start sub_0803AFE0
sub_0803AFE0: @ 0x0803AFE0
push {lr}
adds r3, r0, #0
ldrh r1, [r3, #0x36]
movs r2, #0x36
ldrsh r0, [r3, r2]
cmp r0, #0
bge _0803AFF4
adds r0, r1, #4
strh r0, [r3, #0x36]
b _0803B018
_0803AFF4:
movs r2, #0
movs r0, #0x24
strb r0, [r3, #0xc]
movs r0, #0xf0
strb r0, [r3, #0xe]
adds r1, r3, #0
adds r1, #0x84
movs r0, #3
strb r0, [r1]
strh r2, [r3, #0x36]
movs r0, #0xa0
movs r1, #0
bl sub_08080964
movs r0, #0xac
lsls r0, r0, #1
bl PlaySFX
_0803B018:
pop {pc}
.align 2, 0
thumb_func_start sub_0803B01C
sub_0803B01C: @ 0x0803B01C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r1, r0, #1
strb r1, [r2, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803B032
movs r0, #0x25
strb r0, [r2, #0xc]
b _0803B048
_0803B032:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x46
bls _0803B048
movs r0, #0xf
ands r1, r0
cmp r1, #0
bne _0803B048
adds r0, r2, #0
bl sub_0803B724
_0803B048:
pop {pc}
.align 2, 0
thumb_func_start sub_0803B04C
sub_0803B04C: @ 0x0803B04C
push {lr}
adds r2, r0, #0
ldrh r3, [r2, #0x36]
movs r0, #0x36
ldrsh r1, [r2, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
ble _0803B064
subs r0, r3, #1
strh r0, [r2, #0x36]
b _0803B070
_0803B064:
movs r0, #0x26
strb r0, [r2, #0xc]
ldr r0, [r2, #0x54]
movs r1, #6
bl sub_080042AC
_0803B070:
pop {pc}
.align 2, 0
thumb_func_start sub_0803B074
sub_0803B074: @ 0x0803B074
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803B0D0 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B55C
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B0CC
movs r0, #0x27
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x2b
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #0
bl sub_080042AC
_0803B0CC:
pop {r4, pc}
.align 2, 0
_0803B0D0: .4byte gUnk_080CED6C
thumb_func_start sub_0803B0D4
sub_0803B0D4: @ 0x0803B0D4
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B0FE
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
bl sub_0803B59C
_0803B0FE:
pop {r4, pc}
thumb_func_start sub_0803B100
sub_0803B100: @ 0x0803B100
push {lr}
adds r2, r0, #0
movs r0, #0x29
strb r0, [r2, #0xc]
movs r0, #0xa0
lsls r0, r0, #9
str r0, [r2, #0x20]
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _0803B11C
ldr r0, _0803B118 @ =gUnk_080FD364
b _0803B11E
.align 2, 0
_0803B118: .4byte gUnk_080FD364
_0803B11C:
ldr r0, _0803B13C @ =gUnk_080FD374
_0803B11E:
str r0, [r2, #0x48]
ldr r0, [r2, #0x74]
movs r1, #3
strb r1, [r0, #0xc]
adds r0, #0x74
movs r1, #0x20
strb r1, [r0]
ldr r0, [r2, #0x54]
movs r1, #9
bl sub_080042AC
ldr r0, _0803B140 @ =0x0000014F
bl PlaySFX
pop {pc}
.align 2, 0
_0803B13C: .4byte gUnk_080FD374
_0803B140: .4byte 0x0000014F
thumb_func_start sub_0803B144
sub_0803B144: @ 0x0803B144
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
bl sub_080042B8
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _0803B178
movs r0, #0x2a
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0x16
bl sub_08004260
adds r0, r4, #0
movs r1, #0x14
bl sub_0803B8E8
movs r0, #8
movs r1, #0
bl sub_08080964
_0803B178:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803B17C
sub_0803B17C: @ 0x0803B17C
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B1B4
movs r0, #0x2b
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x18
strb r0, [r1]
adds r1, #6
movs r0, #0xff
strb r0, [r1]
adds r1, #0x39
movs r0, #0x96
lsls r0, r0, #2
strh r0, [r1]
_0803B1B4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803B1B8
sub_0803B1B8: @ 0x0803B1B8
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803B1D4
adds r0, r5, #0
bl sub_08004274
ldr r0, [r5, #0x54]
bl sub_080042B8
_0803B1D4:
adds r0, r5, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0xf4
bhi _0803B2B8
movs r0, #0x32
strb r0, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x7e
ldr r0, _0803B284 @ =0x000005DC
strh r0, [r1]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r5, #0x18]
adds r1, r5, #0
adds r1, #0x3f
movs r0, #0x14
strb r0, [r1]
adds r0, r5, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _0803B23A
ldr r0, [r5, #0x48]
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldr r0, [r5, #0x48]
ldrb r0, [r0, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
_0803B23A:
movs r0, #0
movs r1, #0x5e
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0803B268
movs r0, #0
strb r0, [r4, #0xe]
movs r0, #0x90
strb r0, [r4, #0x15]
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
_0803B268:
ldr r4, [r5, #0x74]
adds r1, r4, #0
adds r1, #0x74
movs r0, #0x40
strb r0, [r1]
ldr r4, [r5, #0x50]
adds r0, r4, #0
adds r0, #0x80
ldrb r1, [r0]
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _0803B288
movs r0, #4
b _0803B28A
.align 2, 0
_0803B284: .4byte 0x000005DC
_0803B288:
movs r0, #8
_0803B28A:
orrs r1, r0
adds r0, r4, #0
adds r0, #0x80
strb r1, [r0]
movs r0, #0xc
ands r0, r1
cmp r0, #0xc
bne _0803B2CE
movs r0, #0xb
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
movs r0, #0
str r0, [r4, #0x20]
ldr r0, [r4, #0x74]
adds r0, #0x7e
movs r1, #0xe1
lsls r1, r1, #3
strh r1, [r0]
ldr r0, [r4, #0x78]
adds r0, #0x7e
strh r1, [r0]
b _0803B2CE
_0803B2B8:
adds r1, r5, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803B2CE
adds r0, r5, #0
bl sub_0803B6A4
_0803B2CE:
pop {r4, r5, pc}
thumb_func_start sub_0803B2D0
sub_0803B2D0: @ 0x0803B2D0
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B30A
movs r2, #0
movs r0, #0x2d
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x31
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x74]
movs r1, #2
strb r1, [r0, #0xc]
adds r1, r0, #0
adds r1, #0x74
strb r2, [r1]
adds r1, #4
strh r2, [r1]
movs r1, #3
bl sub_08004260
_0803B30A:
pop {r4, pc}
thumb_func_start sub_0803B30C
sub_0803B30C: @ 0x0803B30C
push {r4, lr}
adds r2, r0, #0
ldr r4, [r2, #0x74]
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B334
movs r0, #0x2e
strb r0, [r2, #0xc]
adds r0, r2, #0
movs r1, #0x13
bl sub_0803B8E8
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_0803B334:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803B338
sub_0803B338: @ 0x0803B338
push {lr}
adds r2, r0, #0
ldrh r3, [r2, #0x36]
movs r0, #0x36
ldrsh r1, [r2, r0]
movs r0, #0xa
rsbs r0, r0, #0
cmp r1, r0
ble _0803B350
subs r0, r3, #1
strh r0, [r2, #0x36]
b _0803B358
_0803B350:
movs r0, #0x2f
strb r0, [r2, #0xc]
movs r0, #0xf
strb r0, [r2, #0xe]
_0803B358:
pop {pc}
.align 2, 0
thumb_func_start sub_0803B35C
sub_0803B35C: @ 0x0803B35C
push {lr}
adds r3, r0, #0
ldr r2, _0803B394 @ =gUnk_080CED6C
ldr r0, [r3, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r3, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r3, #0x36]
ldrb r0, [r3, #0xe]
subs r0, #1
strb r0, [r3, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803B390
movs r0, #0x30
strb r0, [r3, #0xc]
_0803B390:
pop {pc}
.align 2, 0
_0803B394: .4byte gUnk_080CED6C
thumb_func_start sub_0803B398
sub_0803B398: @ 0x0803B398
push {r4, lr}
adds r4, r0, #0
ldr r2, _0803B3E8 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_0803B4E4
cmp r0, #0
beq _0803B3EC
movs r0, #0x31
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #0x35
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
ldr r0, [r4, #0x54]
movs r1, #0
bl sub_080042AC
b _0803B3F2
.align 2, 0
_0803B3E8: .4byte gUnk_080CED6C
_0803B3EC:
adds r0, r4, #0
bl sub_0806F69C
_0803B3F2:
pop {r4, pc}
thumb_func_start sub_0803B3F4
sub_0803B3F4: @ 0x0803B3F4
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _0803B440 @ =gUnk_080CED6C
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xf]
lsrs r0, r0, #4
adds r0, #3
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
adds r0, r0, r1
movs r1, #7
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #4
strh r0, [r4, #0x36]
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B47C
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x17
strb r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0803B448
ldr r0, _0803B444 @ =gUnk_080FD35C
b _0803B44A
.align 2, 0
_0803B440: .4byte gUnk_080CED6C
_0803B444: .4byte gUnk_080FD35C
_0803B448:
ldr r0, _0803B468 @ =gUnk_080FD36C
_0803B44A:
str r0, [r4, #0x48]
ldr r0, [r4, #0x50]
ldrb r2, [r4, #0xa]
movs r1, #2
cmp r2, #0
bne _0803B458
movs r1, #1
_0803B458:
adds r0, #0x80
ldrb r3, [r0]
adds r5, r0, #0
cmp r2, #0
bne _0803B46C
movs r0, #0x10
b _0803B46E
.align 2, 0
_0803B468: .4byte gUnk_080FD36C
_0803B46C:
movs r0, #0x20
_0803B46E:
orrs r1, r0
adds r0, r3, #0
bics r0, r1
strb r0, [r5]
adds r0, r4, #0
bl sub_0803B59C
_0803B47C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803B480
sub_0803B480: @ 0x0803B480
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7e
ldrh r1, [r0]
movs r0, #0x1f
ands r0, r1
cmp r0, #0
bne _0803B4B6
movs r0, #0x2d
movs r1, #1
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _0803B4B6
ldr r0, _0803B4D0 @ =gUnk_080CFD08
ldrb r1, [r4, #0xa]
adds r1, r1, r0
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
adds r0, r4, #0
adds r1, r3, #0
movs r3, #0
bl PositionRelative
_0803B4B6:
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803B4CC
adds r0, r4, #0
bl sub_0803B6A4
_0803B4CC:
pop {r4, pc}
.align 2, 0
_0803B4D0: .4byte gUnk_080CFD08
thumb_func_start sub_0803B4D4
sub_0803B4D4: @ 0x0803B4D4
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
movs r1, #0x10
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_0803B4E4
sub_0803B4E4: @ 0x0803B4E4
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r2, [r4, #0x50]
movs r0, #0x2e
ldrsh r3, [r2, r0]
ldr r1, _0803B52C @ =gUnk_080CFD0A
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r5, r3, r0
movs r1, #0x32
ldrsh r0, [r2, r1]
adds r6, r0, #0
adds r6, #0x10
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
movs r3, #2
bl sub_0806FCB8
cmp r0, #0
bne _0803B530
movs r2, #0x2e
ldrsh r0, [r4, r2]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r5, #0
adds r3, r6, #0
bl sub_080045D4
strb r0, [r4, #0x15]
movs r0, #0
b _0803B536
.align 2, 0
_0803B52C: .4byte gUnk_080CFD0A
_0803B530:
strh r5, [r4, #0x2e]
strh r6, [r4, #0x32]
movs r0, #1
_0803B536:
pop {r4, r5, r6, pc}
thumb_func_start sub_0803B538
sub_0803B538: @ 0x0803B538
push {r4, lr}
adds r4, r0, #0
ldr r1, [r4, #0x54]
ldr r3, _0803B554 @ =0xFFFF0000
movs r2, #0
bl PositionRelative
ldr r1, [r4, #0x74]
ldr r3, _0803B558 @ =0xFFFE0000
adds r0, r4, #0
movs r2, #0
bl PositionRelative
pop {r4, pc}
.align 2, 0
_0803B554: .4byte 0xFFFF0000
_0803B558: .4byte 0xFFFE0000
thumb_func_start sub_0803B55C
sub_0803B55C: @ 0x0803B55C
push {r4, r5, lr}
ldr r5, [r0, #0x74]
ldr r4, [r0, #0x54]
adds r0, r4, #0
bl sub_080042B8
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0803B588
adds r0, r5, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #1
beq _0803B59A
adds r0, r5, #0
movs r1, #1
bl sub_08004260
b _0803B59A
_0803B588:
adds r0, r5, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _0803B59A
adds r0, r5, #0
movs r1, #0
bl sub_08004260
_0803B59A:
pop {r4, r5, pc}
thumb_func_start sub_0803B59C
sub_0803B59C: @ 0x0803B59C
push {lr}
movs r3, #2
strb r3, [r0, #0xc]
ldr r2, [r0, #0x50]
adds r1, r2, #0
adds r1, #0x7d
ldrb r1, [r1]
ldrb r0, [r0, #0xa]
cmp r0, #0
bne _0803B5B6
movs r0, #1
orrs r1, r0
b _0803B5B8
_0803B5B6:
orrs r1, r3
_0803B5B8:
adds r0, r2, #0
adds r0, #0x7d
strb r1, [r0]
pop {pc}
thumb_func_start sub_0803B5C0
sub_0803B5C0: @ 0x0803B5C0
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803B5E8 @ =gLinkEntity
bl sub_080045C4
adds r2, r0, #0
cmp r2, #9
bhi _0803B5D2
movs r2, #0xa
_0803B5D2:
cmp r2, #0x16
bls _0803B5D8
movs r2, #0x16
_0803B5D8:
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0803B5F0
ldr r1, _0803B5EC @ =gUnk_080CFD0C
adds r0, r2, #0
subs r0, #0xa
b _0803B5F6
.align 2, 0
_0803B5E8: .4byte gLinkEntity
_0803B5EC: .4byte gUnk_080CFD0C
_0803B5F0:
ldr r1, _0803B60C @ =gUnk_080CFD0C
movs r0, #0x16
subs r0, r0, r2
_0803B5F6:
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, r1
beq _0803B60A
adds r0, r4, #0
bl sub_08004260
_0803B60A:
pop {r4, pc}
.align 2, 0
_0803B60C: .4byte gUnk_080CFD0C
thumb_func_start sub_0803B610
sub_0803B610: @ 0x0803B610
push {r4, lr}
ldr r4, _0803B634 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r4, r2]
ldr r3, _0803B638 @ =gUnk_080CFD19
ldrb r2, [r0, #0xa]
adds r2, r2, r3
ldrb r2, [r2]
lsls r2, r2, #0x18
asrs r2, r2, #0x18
adds r1, r1, r2
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r2, #0xc
movs r3, #8
bl sub_0806FCB8
pop {r4, pc}
.align 2, 0
_0803B634: .4byte gLinkEntity
_0803B638: .4byte gUnk_080CFD19
thumb_func_start sub_0803B63C
sub_0803B63C: @ 0x0803B63C
push {r4, r5, lr}
adds r4, r0, #0
ldr r2, _0803B680 @ =gLinkEntity
movs r0, #0x2e
ldrsh r3, [r2, r0]
ldr r1, _0803B684 @ =gUnk_080CFD19
ldrb r0, [r4, #0xa]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r3, r3, r0
movs r1, #0x32
ldrsh r0, [r2, r1]
adds r5, r0, #0
subs r5, #0xc
ldrb r0, [r4, #0xe]
adds r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xb4
bls _0803B688
movs r2, #0x2e
ldrsh r0, [r4, r2]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r3, #0
adds r3, r5, #0
bl sub_080045D4
strb r0, [r4, #0x15]
b _0803B6A0
.align 2, 0
_0803B680: .4byte gLinkEntity
_0803B684: .4byte gUnk_080CFD19
_0803B688:
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r3, #0
adds r3, r5, #0
bl sub_080045D4
thumb_func_start sub_0803B698
sub_0803B698: @ 0x0803B698
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_0803B6A0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803B6A4
sub_0803B6A4: @ 0x0803B6A4
push {r4, lr}
adds r2, r0, #0
movs r0, #0x2c
strb r0, [r2, #0xc]
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x14
strb r0, [r1]
ldr r3, [r2, #0x50]
adds r0, r3, #0
adds r0, #0x80
ldrb r1, [r0]
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _0803B6C6
movs r0, #0x10
b _0803B6C8
_0803B6C6:
movs r0, #0x20
_0803B6C8:
orrs r1, r0
adds r0, r3, #0
adds r0, #0x80
strb r1, [r0]
ldrb r3, [r0]
ldrb r1, [r2, #0xa]
adds r4, r0, #0
cmp r1, #0
bne _0803B6E0
movs r0, #5
rsbs r0, r0, #0
b _0803B6E4
_0803B6E0:
movs r0, #9
rsbs r0, r0, #0
_0803B6E4:
ands r0, r3
strb r0, [r4]
adds r0, r2, #0
movs r1, #0x17
bl sub_08004260
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803B6F4
sub_0803B6F4: @ 0x0803B6F4
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #0
bne _0803B710
adds r0, r2, #0
adds r0, #0x80
ldrh r1, [r0]
movs r3, #0x2e
ldrsh r0, [r2, r3]
cmp r1, r0
ble _0803B71E
_0803B70C:
movs r0, #1
b _0803B720
_0803B710:
adds r0, r2, #0
adds r0, #0x80
ldrh r1, [r0]
movs r3, #0x2e
ldrsh r0, [r2, r3]
cmp r1, r0
blt _0803B70C
_0803B71E:
movs r0, #0
_0803B720:
pop {pc}
.align 2, 0
thumb_func_start sub_0803B724
sub_0803B724: @ 0x0803B724
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xf]
cmp r0, #2
bhi _0803B78E
adds r6, r5, #0
adds r6, #0x84
ldrb r0, [r6]
cmp r0, #0
beq _0803B78E
movs r0, #7
movs r1, #1
bl CreateEnemy
adds r4, r0, #0
cmp r4, #0
beq _0803B78E
movs r0, #1
strb r0, [r4, #0xb]
bl Random
ldr r2, _0803B790 @ =gUnk_080CFD1B
ldrb r1, [r5, #0xa]
adds r1, r1, r2
movs r3, #0x70
adds r2, r0, #0
ands r2, r3
ldrb r1, [r1]
adds r2, r2, r1
ldr r3, _0803B794 @ =gRoomControls
ldrh r1, [r3, #6]
adds r1, r1, r2
strh r1, [r4, #0x2e]
lsrs r0, r0, #0x10
movs r1, #7
ands r0, r1
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #1
adds r1, #0x5c
ldrh r3, [r3, #8]
adds r1, r1, r3
strh r1, [r4, #0x32]
str r5, [r4, #0x50]
adds r0, r4, #0
bl sub_08016A30
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_0803B78E:
pop {r4, r5, r6, pc}
.align 2, 0
_0803B790: .4byte gUnk_080CFD1B
_0803B794: .4byte gRoomControls
thumb_func_start sub_0803B798
sub_0803B798: @ 0x0803B798
ldr r2, _0803B7F4 @ =gLinkState
movs r1, #0
movs r0, #0x41
strb r0, [r2, #2]
strb r1, [r2, #0xa]
ldr r0, [r2, #0x30]
ldr r1, _0803B7F8 @ =0x0000FFEF
ands r0, r1
str r0, [r2, #0x30]
ldr r3, _0803B7FC @ =gLinkEntity
ldrb r1, [r3, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r3, #0x10]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r3, #0x20]
movs r2, #0
ldr r0, _0803B800 @ =0x0000FFF6
strh r0, [r3, #0x36]
movs r0, #0x10
strb r0, [r3, #0x15]
movs r0, #4
strb r0, [r3, #0x14]
movs r0, #0x29
adds r0, r0, r3
mov ip, r0
ldrb r1, [r0]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
mov r1, ip
strb r0, [r1]
adds r0, r3, #0
adds r0, #0x63
strb r2, [r0]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r3, #0x24]
adds r1, r3, #0
adds r1, #0x3d
movs r0, #0xe2
strb r0, [r1]
bx lr
.align 2, 0
_0803B7F4: .4byte gLinkState
_0803B7F8: .4byte 0x0000FFEF
_0803B7FC: .4byte gLinkEntity
_0803B800: .4byte 0x0000FFF6
thumb_func_start sub_0803B804
sub_0803B804: @ 0x0803B804
push {r4, lr}
ldr r4, _0803B820 @ =gLinkEntity
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0x1e
strb r0, [r1]
subs r0, #0x22
bl ModHealth
adds r0, r4, #0
movs r1, #0x7a
bl sub_0800449C
pop {r4, pc}
.align 2, 0
_0803B820: .4byte gLinkEntity
thumb_func_start sub_0803B824
sub_0803B824: @ 0x0803B824
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08077B2C
ldr r2, _0803B864 @ =gLinkState
ldrb r1, [r2, #0x1a]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x1a]
ldr r4, _0803B868 @ =gLinkEntity
ldr r1, _0803B86C @ =gUnk_080CFD1D
ldrb r0, [r5, #0xa]
adds r0, r0, r1
movs r2, #0
ldrsb r2, [r0, r2]
adds r0, r5, #0
adds r1, r4, #0
movs r3, #1
bl sub_0806FA90
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xfa
strb r0, [r1]
adds r4, #0x29
ldrb r1, [r4]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4]
pop {r4, r5, pc}
.align 2, 0
_0803B864: .4byte gLinkState
_0803B868: .4byte gLinkEntity
_0803B86C: .4byte gUnk_080CFD1D
thumb_func_start sub_0803B870
sub_0803B870: @ 0x0803B870
push {r4, lr}
adds r3, r0, #0
ldr r4, [r3, #0x54]
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803B8DC
ldr r0, _0803B8D4 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _0803B8DC
movs r0, #0x18
strb r0, [r3, #0xc]
movs r0, #0x44
strb r0, [r3, #0xe]
ldrb r1, [r3, #0x18]
subs r0, #0x48
ands r0, r1
strb r0, [r3, #0x18]
ldr r1, _0803B8D8 @ =gLinkEntity
ldrb r2, [r1, #0x10]
movs r0, #0x7f
ands r0, r2
strb r0, [r1, #0x10]
adds r1, #0x3d
movs r0, #0xf0
strb r0, [r1]
adds r0, r3, #0
bl sub_0803B824
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x13
strb r0, [r1]
adds r0, r4, #0
movs r1, #7
bl sub_080042AC
movs r0, #0xb7
lsls r0, r0, #1
bl PlaySFX
movs r0, #1
b _0803B8E6
.align 2, 0
_0803B8D4: .4byte gLinkState
_0803B8D8: .4byte gLinkEntity
_0803B8DC:
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x15
strb r0, [r1]
movs r0, #0
_0803B8E6:
pop {r4, pc}
thumb_func_start sub_0803B8E8
sub_0803B8E8: @ 0x0803B8E8
ldr r2, [r0, #0x54]
adds r2, #0x3f
strb r1, [r2]
ldr r2, [r0, #0x74]
adds r0, r2, #0
adds r0, #0x3f
strb r1, [r0]
bx lr
thumb_func_start sub_0803B8F8
sub_0803B8F8: @ 0x0803B8F8
push {lr}
ldr r2, _0803B90C @ =gUnk_080CFD20
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803B90C: .4byte gUnk_080CFD20
thumb_func_start sub_0803B910
sub_0803B910: @ 0x0803B910
push {r4, lr}
adds r4, r0, #0
ldr r0, _0803B940 @ =gUnk_030010A0
adds r0, #0x38
ldrb r0, [r0]
cmp r0, #0
beq _0803B944
movs r2, #0
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]
adds r0, r4, #0
adds r0, #0x74
strb r2, [r0]
adds r0, r4, #0
movs r1, #0xa
bl sub_0803BA8C
b _0803B950
.align 2, 0
_0803B940: .4byte gUnk_030010A0
_0803B944:
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x74
movs r0, #0x80
strb r0, [r1]
_0803B950:
ldrb r1, [r4, #0xa]
subs r1, #2
movs r0, #1
ands r1, r0
lsls r1, r1, #6
ldrb r2, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl sub_0806FA6C
pop {r4, pc}
thumb_func_start sub_0803B978
sub_0803B978: @ 0x0803B978
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #5
bhi _0803BA34
lsls r0, r0, #2
ldr r1, _0803B98C @ =_0803B990
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803B98C: .4byte _0803B990
_0803B990: @ jump table
.4byte _0803BA66 @ case 0
.4byte _0803B9A8 @ case 1
.4byte _0803B9C0 @ case 2
.4byte _0803BA46 @ case 3
.4byte _0803BA14 @ case 4
.4byte _0803BA40 @ case 5
_0803B9A8:
movs r1, #0
movs r0, #2
strb r0, [r4, #0xd]
strb r0, [r4, #0xe]
movs r0, #0x1e
strb r0, [r4, #0xf]
adds r0, r4, #0
adds r0, #0x74
strb r1, [r0]
ldr r0, _0803BA10 @ =0x000001A9
bl PlaySFX
_0803B9C0:
ldrb r1, [r4, #0xf]
adds r0, r4, #0
bl sub_0803BA8C
adds r0, r4, #0
adds r0, #0x75
adds r5, r4, #0
adds r5, #0x74
ldrb r1, [r0]
ldrb r0, [r5]
orrs r0, r1
cmp r0, #0
bne _0803B9E0
ldr r0, _0803BA10 @ =0x000001A9
bl PlaySFX
_0803B9E0:
ldrb r0, [r5]
cmp r0, #0
bne _0803BA66
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803BA66
movs r0, #2
strb r0, [r4, #0xe]
ldrb r0, [r4, #0xf]
subs r0, #4
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xa
bne _0803BA66
ldr r0, [r4, #0x50]
ldr r1, [r0, #0x50]
movs r0, #3
strb r0, [r1, #0xd]
strb r0, [r4, #0xd]
b _0803BA66
.align 2, 0
_0803BA10: .4byte 0x000001A9
_0803BA14:
movs r0, #5
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #9
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x19]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r4, #0x19]
b _0803BA46
_0803BA34:
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x19]
subs r0, #0xf
ands r0, r1
strb r0, [r4, #0x19]
_0803BA40:
adds r0, r4, #0
bl sub_08004274
_0803BA46:
adds r0, r4, #0
movs r1, #0x10
bl sub_0803BA8C
adds r1, r4, #0
adds r1, #0x75
adds r0, r4, #0
adds r0, #0x74
ldrb r1, [r1]
ldrb r0, [r0]
orrs r0, r1
cmp r0, #0
bne _0803BA66
ldr r0, _0803BA68 @ =0x000001A9
bl PlaySFX
_0803BA66:
pop {r4, r5, pc}
.align 2, 0
_0803BA68: .4byte 0x000001A9
thumb_func_start sub_0803BA6C
sub_0803BA6C: @ 0x0803BA6C
push {r4, lr}
adds r4, r0, #0
movs r1, #0xa
bl sub_0803BA8C
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803BA80
sub_0803BA80: @ 0x0803BA80
push {lr}
movs r1, #0xa
bl sub_0803BA8C
pop {pc}
.align 2, 0
thumb_func_start sub_0803BA8C
sub_0803BA8C: @ 0x0803BA8C
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
movs r1, #0
adds r4, r6, #0
adds r4, #0x74
ldrb r3, [r4]
movs r2, #0xe0
ands r2, r3
cmp r2, #0
bne _0803BAEC
cmp r3, #0
bne _0803BAD2
adds r2, r6, #0
adds r2, #0x75
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #9
bls _0803BABA
strb r1, [r2]
_0803BABA:
ldrb r0, [r6, #0xa]
cmp r0, #2
bne _0803BAC8
ldr r1, _0803BAC4 @ =gUnk_080CFD30
b _0803BACA
.align 2, 0
_0803BAC4: .4byte gUnk_080CFD30
_0803BAC8:
ldr r1, _0803BAE8 @ =gUnk_080CFD44
_0803BACA:
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
_0803BAD2:
adds r2, r6, #0
adds r2, #0x74
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
cmp r5, r0
bhi _0803BB18
movs r0, #0
strb r0, [r2]
b _0803BB18
.align 2, 0
_0803BAE8: .4byte gUnk_080CFD44
_0803BAEC:
movs r0, #0x80
ands r0, r2
cmp r0, #0
bne _0803BB18
movs r0, #0x80
orrs r0, r3
strb r0, [r4]
movs r0, #0x20
ands r2, r0
cmp r2, #0
beq _0803BB0C
ldr r1, _0803BB08 @ =gUnk_080CFD58
b _0803BB0E
.align 2, 0
_0803BB08: .4byte gUnk_080CFD58
_0803BB0C:
ldr r1, _0803BB78 @ =gUnk_080CFD5C
_0803BB0E:
ldrb r0, [r6, #0xa]
subs r0, #2
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
_0803BB18:
cmp r1, #0
beq _0803BB74
adds r0, r6, #0
bl sub_0801D2B4
ldr r0, [r6, #0x50]
ldr r4, [r0, #0x78]
ldrb r1, [r6, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1c
ldrb r2, [r4, #0x1a]
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r3, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x1a]
ldr r0, [r6, #0x50]
ldr r5, [r0, #0x78]
ldrb r1, [r6, #0x1a]
lsls r1, r1, #0x1c
lsrs r1, r1, #0x18
ldrb r4, [r5, #0x1a]
movs r2, #0xf
adds r0, r2, #0
ands r0, r4
orrs r0, r1
strb r0, [r5, #0x1a]
ldr r0, [r6, #0x50]
ldr r4, [r0, #0x54]
ldrb r0, [r6, #0x1a]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x1c
ldrb r1, [r4, #0x1a]
ands r3, r1
orrs r3, r0
strb r3, [r4, #0x1a]
ldr r0, [r6, #0x50]
ldr r3, [r0, #0x54]
ldrb r0, [r6, #0x1a]
lsls r0, r0, #0x1c
lsrs r0, r0, #0x18
ldrb r1, [r3, #0x1a]
ands r2, r1
orrs r2, r0
strb r2, [r3, #0x1a]
_0803BB74:
pop {r4, r5, r6, pc}
.align 2, 0
_0803BB78: .4byte gUnk_080CFD5C
thumb_func_start sub_0803BB7C
sub_0803BB7C: @ 0x0803BB7C
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0803BB94 @ =gUnk_080CFF3C
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0803BB94: .4byte gUnk_080CFF3C
thumb_func_start sub_0803BB98
sub_0803BB98: @ 0x0803BB98
push {lr}
ldr r2, _0803BBAC @ =gUnk_080CFF54
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803BBAC: .4byte gUnk_080CFF54
thumb_func_start sub_0803BBB0
sub_0803BBB0: @ 0x0803BBB0
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r2, #0x80
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _0803BC2C
movs r5, #0x7f
adds r0, r5, #0
ands r0, r1
cmp r0, #0
bne _0803BC06
adds r0, r4, #0
bl sub_0803C0AC
ldrb r1, [r4, #0x10]
adds r0, r5, #0
ands r0, r1
strb r0, [r4, #0x10]
ldrb r2, [r4, #0x15]
adds r0, r2, #4
movs r1, #8
ands r0, r1
cmp r0, #0
bne _0803BBF6
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _0803BBF2
adds r0, r2, #2
b _0803BBF4
_0803BBF2:
subs r0, r2, #2
_0803BBF4:
strb r0, [r4, #0x15]
_0803BBF6:
ldrb r1, [r4, #0x15]
movs r0, #0x20
subs r0, r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_0803BF2C
b _0803BC1E
_0803BC06:
adds r0, r4, #0
adds r0, #0x3d
ldrb r1, [r0]
adds r0, r2, #0
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _0803BC1E
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
_0803BC1E:
adds r1, r4, #0
adds r1, #0x82
ldrh r0, [r1]
cmp r0, #0x10
bls _0803BC2C
subs r0, #0xc
strh r0, [r1]
_0803BC2C:
adds r0, r4, #0
bl sub_08004274
pop {r4, r5, pc}
thumb_func_start sub_0803BC34
sub_0803BC34: @ 0x0803BC34
push {r4, lr}
adds r4, r0, #0
ldr r0, _0803BC78 @ =gUnk_080CFF6C
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0806F520
cmp r0, #0
bne _0803BC74
movs r1, #2
strb r1, [r4, #0xc]
strb r0, [r4, #0xd]
adds r0, r4, #0
adds r0, #0x84
strb r1, [r0]
movs r0, #8
strb r0, [r4, #0xe]
movs r0, #0xe0
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0803BF2C
_0803BC74:
pop {r4, pc}
.align 2, 0
_0803BC78: .4byte gUnk_080CFF6C
thumb_func_start sub_0803BC7C
sub_0803BC7C: @ 0x0803BC7C
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x3c
strb r1, [r0, #0x1d]
bx lr
.align 2, 0
thumb_func_start sub_0803BC88
sub_0803BC88: @ 0x0803BC88
push {lr}
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_0803BC90
sub_0803BC90: @ 0x0803BC90
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _0803BCA2
adds r0, r4, #0
bl sub_0804A7D4
_0803BCA2:
pop {r4, pc}
thumb_func_start sub_0803BCA4
sub_0803BCA4: @ 0x0803BCA4
push {r4, r5, r6, lr}
adds r6, r0, #0
bl sub_0804A720
movs r4, #0
movs r5, #1
strb r5, [r6, #0xc]
strb r4, [r6, #0xf]
adds r0, r6, #0
movs r1, #1
bl sub_08049F84
strb r0, [r6, #0x15]
adds r0, r6, #0
adds r0, #0x80
strb r4, [r0]
adds r0, #1
strb r4, [r0]
strb r5, [r6, #0x1c]
adds r2, r6, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r1, r6, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
ldrb r1, [r6, #0x1b]
movs r0, #0x3f
ands r0, r1
movs r1, #0x40
orrs r0, r1
strb r0, [r6, #0x1b]
ldrh r1, [r6, #0x2e]
adds r0, r6, #0
adds r0, #0x78
strh r1, [r0]
ldrh r0, [r6, #0x32]
adds r1, r6, #0
adds r1, #0x7a
strh r0, [r1]
adds r0, r6, #0
bl UpdateSpriteOrderAndFlip
adds r0, r6, #0
bl sub_0803BF2C
pop {r4, r5, r6, pc}
thumb_func_start sub_0803BD08
sub_0803BD08: @ 0x0803BD08
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803BD2C
adds r0, r4, #0
bl sub_080040A8
cmp r0, #0
bne _0803BD80
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
_0803BD2C:
adds r0, r4, #0
bl sub_0803BEE8
adds r0, r4, #0
bl sub_08004274
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _0803BD80
ldr r5, _0803BD84 @ =gUnk_020000B0
ldr r1, [r5]
adds r0, r4, #0
movs r2, #0x88
movs r3, #0x50
bl sub_080041A0
cmp r0, #0
beq _0803BD80
ldr r0, [r5]
movs r2, #0x32
ldrsh r1, [r0, r2]
movs r2, #0x32
ldrsh r0, [r4, r2]
adds r0, #8
cmp r1, r0
ble _0803BD80
movs r1, #0
movs r2, #2
strb r2, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x84
strb r1, [r0]
movs r0, #0x10
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x81
strb r2, [r0]
adds r0, r4, #0
bl sub_0803BF2C
_0803BD80:
pop {r4, r5, pc}
.align 2, 0
_0803BD84: .4byte gUnk_020000B0
thumb_func_start sub_0803BD88
sub_0803BD88: @ 0x0803BD88
push {lr}
bl sub_0803BF70
pop {pc}
thumb_func_start sub_0803BD90
sub_0803BD90: @ 0x0803BD90
push {r4, lr}
adds r4, r0, #0
bl sub_080040A8
cmp r0, #0
bne _0803BDC8
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #8
ands r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
movs r0, #8
strb r0, [r4, #0xe]
b _0803BDD4
_0803BDC8:
adds r0, r4, #0
bl sub_0803BF48
adds r0, r4, #0
bl sub_08004274
_0803BDD4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803BDD8
sub_0803BDD8: @ 0x0803BDD8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803BE76
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803BDFE
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _0803BE06
_0803BDFE:
adds r0, r4, #0
bl sub_0803C120
b _0803BE70
_0803BE06:
ldrb r1, [r4, #0x15]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0803BE20
movs r0, #8
strb r0, [r4, #0x15]
ldr r1, _0803BE1C @ =gRoomControls
ldrh r0, [r1, #0xa]
subs r0, #0x20
b _0803BE30
.align 2, 0
_0803BE1C: .4byte gRoomControls
_0803BE20:
movs r0, #0x18
strb r0, [r4, #0x15]
ldr r1, _0803BE78 @ =gRoomControls
movs r2, #0x88
lsls r2, r2, #1
adds r0, r2, #0
ldrh r2, [r1, #0xa]
adds r0, r0, r2
_0803BE30:
strh r0, [r4, #0x2e]
ldrh r0, [r1, #0xc]
adds r0, #8
strh r0, [r4, #0x32]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #2
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x84
movs r0, #1
strb r0, [r1]
movs r0, #0x18
strb r0, [r4, #0xe]
subs r1, #2
movs r0, #0x96
lsls r0, r0, #1
strh r0, [r1]
adds r0, #0x94
strh r0, [r4, #0x24]
subs r1, #1
movs r0, #4
strb r0, [r1]
_0803BE70:
adds r0, r4, #0
bl sub_0803BF2C
_0803BE76:
pop {r4, pc}
.align 2, 0
_0803BE78: .4byte gRoomControls
thumb_func_start sub_0803BE7C
sub_0803BE7C: @ 0x0803BE7C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080040A8
adds r5, r0, #0
cmp r5, #0
bne _0803BEE6
movs r2, #1
movs r3, #1
strb r3, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #8
strb r0, [r4, #0xe]
strb r3, [r4, #0xf]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x80
strb r5, [r0]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x81
strb r5, [r0]
adds r1, r4, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
bl sub_0803BF2C
_0803BEE6:
pop {r4, r5, pc}
thumb_func_start sub_0803BEE8
sub_0803BEE8: @ 0x0803BEE8
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803BF28
ldrb r0, [r4, #0x15]
adds r5, r4, #0
adds r5, #0x80
strb r0, [r5]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
cmp r0, #0xff
beq _0803BF0E
strb r0, [r4, #0x15]
_0803BF0E:
movs r0, #8
strb r0, [r4, #0xe]
ldrb r2, [r5]
movs r0, #0x10
adds r1, r0, #0
ands r1, r2
ldrb r2, [r4, #0x15]
ands r0, r2
cmp r1, r0
beq _0803BF28
adds r0, r4, #0
bl sub_0803BF2C
_0803BF28:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803BF2C
sub_0803BF2C: @ 0x0803BF2C
push {lr}
ldrb r2, [r0, #0x15]
movs r1, #0x10
ands r1, r2
lsls r1, r1, #0x18
lsrs r1, r1, #0x1c
adds r2, r0, #0
adds r2, #0x81
ldrb r2, [r2]
adds r1, r1, r2
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_0803BF48
sub_0803BF48: @ 0x0803BF48
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
adds r1, r4, #0
adds r1, #0x38
movs r0, #3
strb r0, [r1]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x40
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
pop {r4, pc}
thumb_func_start sub_0803BF70
sub_0803BF70: @ 0x0803BF70
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r5, #0
adds r2, #0x84
ldrb r0, [r2]
cmp r0, #1
beq _0803BFC0
cmp r0, #1
bgt _0803BF88
cmp r0, #0
beq _0803BF8E
b _0803C0A2
_0803BF88:
cmp r0, #2
beq _0803BFEA
b _0803C0A2
_0803BF8E:
ldrb r1, [r5, #0xe]
movs r3, #1
adds r0, r3, #0
ands r0, r1
cmp r0, #0
beq _0803BFA0
ldrh r0, [r5, #0x36]
subs r0, #1
strh r0, [r5, #0x36]
_0803BFA0:
subs r0, r1, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C0A2
strb r3, [r2]
movs r0, #0x18
strb r0, [r5, #0xe]
ldrb r0, [r5, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r5, #0x10]
adds r1, r5, #0
adds r1, #0x81
movs r0, #2
b _0803BFE0
_0803BFC0:
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C0A2
movs r0, #2
strb r0, [r2]
movs r0, #8
strb r0, [r5, #0xe]
movs r0, #0xe0
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r1, r5, #0
adds r1, #0x81
movs r0, #4
_0803BFE0:
strb r0, [r1]
adds r0, r5, #0
bl sub_0803BF2C
b _0803C0A2
_0803BFEA:
adds r1, r5, #0
adds r1, #0x82
ldrh r0, [r1]
subs r0, #1
movs r3, #0
strh r0, [r1]
lsls r0, r0, #0x10
adds r6, r1, #0
cmp r0, #0
bne _0803C02C
movs r0, #3
strb r0, [r5, #0xc]
strb r3, [r2]
strb r3, [r5, #0xe]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r5, #0x24]
ldrb r2, [r5, #0x15]
adds r0, r2, #0
adds r0, #0x18
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _0803C024
movs r0, #0x10
subs r0, r0, r2
movs r1, #0x1f
ands r0, r1
strb r0, [r5, #0x15]
_0803C024:
adds r0, r5, #0
bl sub_0803BF2C
b _0803C09C
_0803C02C:
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C09C
movs r0, #8
strb r0, [r5, #0xe]
ldrb r0, [r5, #0x15]
adds r4, r5, #0
adds r4, #0x80
strb r0, [r4]
adds r0, r5, #0
movs r1, #1
bl sub_08049F84
adds r1, r0, #0
adds r0, r5, #0
bl sub_08004596
ldrb r3, [r5, #0x15]
adds r0, r3, #0
adds r0, #0x18
movs r1, #0x10
ands r0, r1
cmp r0, #0
beq _0803C07E
ldrb r0, [r4]
cmp r0, #0x10
bne _0803C076
ands r3, r0
cmp r3, #0
beq _0803C072
movs r0, #0x12
b _0803C074
_0803C072:
movs r0, #0xe
_0803C074:
strb r0, [r4]
_0803C076:
ldrb r0, [r4]
strb r0, [r5, #0x15]
movs r0, #1
strh r0, [r6]
_0803C07E:
ldrb r2, [r4]
movs r0, #0x10
adds r1, r0, #0
ands r1, r2
lsls r1, r1, #0x18
ldrb r2, [r5, #0x15]
ands r0, r2
lsls r0, r0, #0x18
lsrs r2, r0, #0x1c
cmp r1, r0
beq _0803C09C
adds r1, r2, #4
adds r0, r5, #0
bl sub_08004260
_0803C09C:
adds r0, r5, #0
bl sub_0803BF48
_0803C0A2:
adds r0, r5, #0
bl sub_08004274
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0803C0AC
sub_0803C0AC: @ 0x0803C0AC
push {r4, r5, r6, lr}
movs r0, #1
bl sub_08049DF4
adds r5, r0, #0
cmp r5, #0
beq _0803C11C
ldr r0, _0803C0D4 @ =gUnk_02002A40
adds r0, #0xc0
ldrh r1, [r0]
ldr r0, _0803C0D8 @ =0x000001F3
cmp r1, r0
bls _0803C0DC
movs r6, #0x56
movs r4, #5
movs r0, #0x64
rsbs r0, r0, #0
bl ModRupees
b _0803C118
.align 2, 0
_0803C0D4: .4byte gUnk_02002A40
_0803C0D8: .4byte 0x000001F3
_0803C0DC:
cmp r1, #0x63
bls _0803C0EE
movs r6, #0x55
movs r4, #5
movs r0, #0x19
rsbs r0, r0, #0
bl ModRupees
b _0803C118
_0803C0EE:
movs r6, #0x54
adds r4, r1, #0
cmp r4, #4
bls _0803C0F8
movs r4, #5
_0803C0F8:
rsbs r0, r4, #0
bl ModRupees
b _0803C118
_0803C100:
movs r0, #0x1a
adds r1, r6, #0
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0803C116
adds r0, r5, #0
bl CopyPosition
_0803C116:
subs r4, #1
_0803C118:
cmp r4, #0
bne _0803C100
_0803C11C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0803C120
sub_0803C120: @ 0x0803C120
adds r2, r0, #0
movs r0, #5
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
subs r0, #9
ands r0, r1
strb r0, [r2, #0x18]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
adds r0, r2, #0
adds r0, #0x78
ldrh r0, [r0]
strh r0, [r2, #0x2e]
adds r0, r2, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r2, #0x32]
ldrh r0, [r2, #0x36]
adds r0, #8
strh r0, [r2, #0x36]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #0x18
orrs r0, r1
strb r0, [r2]
bx lr
.align 2, 0
thumb_func_start sub_0803C160
sub_0803C160: @ 0x0803C160
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803C17C @ =gUnk_080CFF78
bl sub_0800129E
movs r3, #0x18
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_0803C17C: .4byte gUnk_080CFF78
thumb_func_start sub_0803C180
sub_0803C180: @ 0x0803C180
push {lr}
ldr r2, _0803C194 @ =gUnk_080CFF90
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803C194: .4byte gUnk_080CFF90
thumb_func_start sub_0803C198
sub_0803C198: @ 0x0803C198
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0803C1AC
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0803C1AC:
ldr r1, _0803C1D8 @ =gUnk_080CFF78
adds r0, r4, #0
bl sub_0804AA30
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803C1D4
adds r0, r4, #0
bl sub_0803C5F0
ldr r1, [r4, #0x54]
cmp r1, #0
beq _0803C1D4
ldrb r0, [r1, #0xf]
adds r0, #1
strb r0, [r1, #0xf]
_0803C1D4:
pop {r4, pc}
.align 2, 0
_0803C1D8: .4byte gUnk_080CFF78
thumb_func_start nullsub_168
nullsub_168: @ 0x0803C1DC
bx lr
.align 2, 0
thumb_func_start sub_0803C1E0
sub_0803C1E0: @ 0x0803C1E0
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
movs r1, #0
movs r2, #1
strb r2, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7b
strb r1, [r0]
adds r0, #5
strb r1, [r0]
adds r0, #3
strb r1, [r0]
subs r0, #2
strb r1, [r0]
subs r0, #7
strb r1, [r0]
adds r0, #8
strb r2, [r0]
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803C228
ldrb r1, [r4, #0xb]
lsls r0, r1, #1
strb r0, [r4, #0x14]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
lsls r1, r1, #3
strb r1, [r4, #0x15]
adds r0, r4, #0
bl sub_0803C690
b _0803C232
_0803C228:
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803C4B0
_0803C232:
pop {r4, pc}
thumb_func_start sub_0803C234
sub_0803C234: @ 0x0803C234
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x81
ldrb r0, [r1]
cmp r0, #0
beq _0803C246
subs r0, #1
strb r0, [r1]
_0803C246:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r3, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C292
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
adds r2, r0, #1
strb r2, [r1]
adds r0, r2, #0
ands r0, r3
cmp r0, #0xf
bls _0803C26E
adds r0, r4, #0
bl sub_0803C5C4
b _0803C2D2
_0803C26E:
movs r0, #3
ands r2, r0
cmp r2, #0
bne _0803C28A
bl Random
movs r1, #0x10
ands r1, r0
cmp r1, #0
beq _0803C28A
adds r0, r4, #0
bl sub_0803C624
b _0803C2D2
_0803C28A:
adds r0, r4, #0
bl sub_0803C4B0
b _0803C2D2
_0803C292:
adds r0, r4, #0
bl sub_0803C6F8
cmp r0, #0
beq _0803C2C2
ldrh r1, [r4, #0x2a]
adds r0, r4, #0
bl sub_0800417E
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_0803C690
b _0803C2D2
_0803C2C2:
adds r0, r4, #0
bl sub_0803C568
cmp r0, #0
beq _0803C2D2
adds r0, r4, #0
bl sub_0803C5F0
_0803C2D2:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C2DC
sub_0803C2DC: @ 0x0803C2DC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0803C308
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x82
strb r1, [r0]
subs r0, #2
strb r1, [r0]
movs r0, #0x10
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803C4B0
b _0803C31E
_0803C308:
adds r0, r4, #0
bl sub_0803C568
cmp r0, #0
beq _0803C31E
adds r2, r4, #0
adds r2, #0x7b
ldrb r0, [r2]
movs r1, #1
orrs r0, r1
strb r0, [r2]
_0803C31E:
ldrb r0, [r4, #0xf]
cmp r0, #0xb
bls _0803C336
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0
beq _0803C33A
adds r0, r4, #0
bl sub_0803C5F0
b _0803C33A
_0803C336:
adds r0, #1
strb r0, [r4, #0xf]
_0803C33A:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C344
sub_0803C344: @ 0x0803C344
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803C3F8
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r2, r0, #0
cmp r1, #5
bhi _0803C3C8
lsls r0, r1, #2
ldr r1, _0803C36C @ =_0803C370
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803C36C: .4byte _0803C370
_0803C370: @ jump table
.4byte _0803C3C8 @ case 0
.4byte _0803C3C8 @ case 1
.4byte _0803C3A6 @ case 2
.4byte _0803C388 @ case 3
.4byte _0803C3BE @ case 4
.4byte _0803C39C @ case 5
_0803C388:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
b _0803C3E2
_0803C39C:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
b _0803C3E2
_0803C3A6:
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strh r1, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x40
b _0803C3E0
_0803C3BE:
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
_0803C3C8:
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r2]
movs r0, #0x80
strh r0, [r4, #0x24]
bl Random
movs r1, #7
ands r0, r1
lsls r1, r0, #1
adds r1, r1, r0
adds r1, #0x22
_0803C3E0:
strb r1, [r4, #0xe]
_0803C3E2:
movs r0, #0
strb r0, [r4, #0xf]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803C690
_0803C3F8:
adds r0, r4, #0
bl sub_0803C6DC
pop {r4, pc}
thumb_func_start sub_0803C400
sub_0803C400: @ 0x0803C400
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r1, r0, #0
cmp r1, #0
beq _0803C458
subs r0, #1
strb r0, [r4, #0xf]
movs r2, #0xff
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _0803C4AC
adds r0, r4, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #3
bne _0803C450
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r2
cmp r0, #2
bhi _0803C450
bl Random
movs r1, #0xc0
ands r1, r0
cmp r1, #0
beq _0803C450
strb r5, [r4, #0xe]
adds r0, r4, #0
bl sub_0803C690
adds r0, r4, #0
bl sub_0803C6DC
b _0803C4AC
_0803C450:
adds r0, r4, #0
bl sub_0803C634
b _0803C4AC
_0803C458:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
beq _0803C46C
cmp r0, #0x18
beq _0803C494
b _0803C49A
_0803C46C:
ldrb r2, [r4, #0x14]
lsls r0, r2, #2
strb r0, [r4, #0x15]
lsls r2, r2, #0x18
lsrs r2, r2, #0x19
adds r0, r4, #0
movs r1, #0xd
bl sub_0804A98C
adds r2, r0, #0
cmp r2, #0
beq _0803C49A
str r2, [r4, #0x54]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r2, #0x15]
str r4, [r2, #0x50]
b _0803C49A
_0803C494:
strb r1, [r4, #0xe]
movs r0, #0x20
strb r0, [r4, #0xf]
_0803C49A:
adds r0, r4, #0
bl sub_0803C6DC
ldr r0, [r4, #0x54]
cmp r0, #0
beq _0803C4AC
adds r0, r4, #0
bl sub_0803C714
_0803C4AC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803C4B0
sub_0803C4B0: @ 0x0803C4B0
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r1, #0
strb r1, [r5, #0xf]
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #1
bne _0803C54C
bl Random
ldr r1, _0803C4F0 @ =gUnk_080CFFA4
movs r7, #7
ands r0, r7
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r5, #0xe]
movs r0, #0x80
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
beq _0803C4F4
bl Random
adds r4, r0, #0
movs r0, #6
ands r4, r0
lsls r0, r4, #2
strb r0, [r5, #0x15]
b _0803C556
.align 2, 0
_0803C4F0: .4byte gUnk_080CFFA4
_0803C4F4:
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
adds r6, r5, #0
adds r6, #0x83
ldrb r0, [r6]
cmp r0, #0
bne _0803C520
bl Random
ldr r2, _0803C51C @ =gUnk_080CFFAC
movs r1, #0xf
ands r1, r0
adds r1, r1, r2
movs r0, #0
ldrsb r0, [r1, r0]
adds r4, r4, r0
b _0803C53E
.align 2, 0
_0803C51C: .4byte gUnk_080CFFAC
_0803C520:
bl Random
ldr r1, _0803C548 @ =gUnk_080CFFAC
ands r0, r7
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r4, r4, r0
ldrb r0, [r5, #0xe]
adds r0, #0x10
strb r0, [r5, #0xe]
ldrb r0, [r6]
subs r0, #1
strb r0, [r6]
_0803C53E:
adds r0, r4, #4
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
b _0803C554
.align 2, 0
_0803C548: .4byte gUnk_080CFFAC
_0803C54C:
movs r0, #0xc
strb r0, [r5, #0xe]
strh r1, [r5, #0x24]
ldrb r0, [r5, #0x15]
_0803C554:
lsrs r4, r0, #2
_0803C556:
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _0803C564
strb r4, [r5, #0x14]
adds r0, r5, #0
bl sub_0803C690
_0803C564:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803C568
sub_0803C568: @ 0x0803C568
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
bne _0803C5C0
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _0803C5C0
adds r0, r5, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #2
bne _0803C598
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x30
bl sub_0806FC80
cmp r0, #0
bne _0803C5BC
_0803C598:
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x40
bl sub_0806FC80
cmp r0, #0
beq _0803C5C0
adds r0, r5, #0
adds r1, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
lsrs r0, r0, #2
ldrb r5, [r5, #0x14]
cmp r0, r5
bne _0803C5C0
_0803C5BC:
movs r0, #1
b _0803C5C2
_0803C5C0:
movs r0, #0
_0803C5C2:
pop {r4, r5, pc}
thumb_func_start sub_0803C5C4
sub_0803C5C4: @ 0x0803C5C4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
lsrs r0, r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_0803C664
adds r4, #0x82
movs r0, #2
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_0803C5F0
sub_0803C5F0: @ 0x0803C5F0
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049F84
movs r2, #0
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x83
strb r2, [r0]
subs r0, #9
strb r2, [r0]
adds r0, r4, #0
bl sub_0803C664
adds r4, #0x82
movs r0, #3
strb r0, [r4]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C624
sub_0803C624: @ 0x0803C624
push {r4, lr}
adds r4, r0, #0
bl sub_0803C664
adds r4, #0x82
movs r0, #5
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_0803C634
sub_0803C634: @ 0x0803C634
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
adds r0, #4
movs r1, #0x18
ands r0, r1
asrs r0, r0, #2
movs r1, #0
strb r0, [r4, #0x14]
lsls r0, r0, #2
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x83
strb r1, [r0]
adds r0, r4, #0
bl sub_0803C664
ldrb r0, [r4, #0xe]
lsls r0, r0, #1
strb r0, [r4, #0xe]
adds r4, #0x82
movs r0, #4
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_0803C664
sub_0803C664: @ 0x0803C664
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #0x20
strb r0, [r2, #0xe]
strb r1, [r2, #0xf]
adds r0, r2, #0
adds r0, #0x80
strb r1, [r0]
subs r0, #5
strb r1, [r0]
movs r0, #0
strh r1, [r2, #0x24]
adds r1, r2, #0
adds r1, #0x82
strb r0, [r1]
adds r0, r2, #0
bl sub_0803C690
pop {pc}
thumb_func_start sub_0803C690
sub_0803C690: @ 0x0803C690
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #0x14]
lsrs r2, r0, #1
adds r0, r3, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #5
bhi _0803C6D2
lsls r0, r0, #2
ldr r1, _0803C6AC @ =_0803C6B0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803C6AC: .4byte _0803C6B0
_0803C6B0: @ jump table
.4byte _0803C6D2 @ case 0
.4byte _0803C6C8 @ case 1
.4byte _0803C6D0 @ case 2
.4byte _0803C6CC @ case 3
.4byte _0803C6C8 @ case 4
.4byte _0803C6CC @ case 5
_0803C6C8:
adds r2, #4
b _0803C6D2
_0803C6CC:
adds r2, #8
b _0803C6D2
_0803C6D0:
adds r2, #0xc
_0803C6D2:
adds r0, r3, #0
adds r1, r2, #0
bl sub_08004260
pop {pc}
thumb_func_start sub_0803C6DC
sub_0803C6DC: @ 0x0803C6DC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #0
bne _0803C6EA
strh r0, [r4, #0x24]
_0803C6EA:
adds r0, r4, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_0803C6F8
sub_0803C6F8: @ 0x0803C6F8
ldr r2, _0803C710 @ =gUnk_080CFFBC
ldrb r1, [r0, #0x14]
lsrs r1, r1, #1
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r0, #0x2a]
ldrh r1, [r1]
ands r1, r0
rsbs r0, r1, #0
orrs r0, r1
lsrs r0, r0, #0x1f
bx lr
.align 2, 0
_0803C710: .4byte gUnk_080CFFBC
thumb_func_start sub_0803C714
sub_0803C714: @ 0x0803C714
push {lr}
ldr r1, [r0, #0x54]
ldrb r3, [r0, #0x14]
ldr r2, _0803C734 @ =gUnk_080CFFC4
adds r3, r3, r2
movs r2, #0
ldrsb r2, [r3, r2]
lsls r2, r2, #0x10
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
lsls r3, r3, #0x10
bl PositionRelative
pop {pc}
.align 2, 0
_0803C734: .4byte gUnk_080CFFC4
thumb_func_start sub_0803C738
sub_0803C738: @ 0x0803C738
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803C754 @ =gUnk_080D0110
bl sub_0800129E
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_0803C754: .4byte gUnk_080D0110
thumb_func_start sub_0803C758
sub_0803C758: @ 0x0803C758
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _0803C76C
cmp r0, #7
beq _0803C76C
adds r0, r4, #0
bl sub_0803CAD0
_0803C76C:
ldr r0, _0803C780 @ =gUnk_080D0128
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_0803C780: .4byte gUnk_080D0128
thumb_func_start sub_0803C784
sub_0803C784: @ 0x0803C784
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0x1d
bne _0803C7A2
movs r0, #0x80
lsls r0, r0, #0xa
str r0, [r4, #0x20]
adds r0, r4, #0
bl sub_0803CBAC
b _0803C7FA
_0803C7A2:
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x43
bne _0803C7FA
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _0803C7FA
adds r0, r4, #0
adds r0, #0x3e
ldrb r1, [r0]
movs r0, #0x10
eors r0, r1
lsls r1, r0, #3
ldr r3, _0803C818 @ =gUnk_080C9160
lsls r0, r0, #4
adds r0, r0, r3
movs r5, #0
ldrsh r0, [r0, r5]
cmp r0, #0
bge _0803C7D8
adds r0, #0x1f
_0803C7D8:
asrs r0, r0, #5
ldrh r5, [r2, #0x2e]
adds r0, r0, r5
strh r0, [r2, #0x2e]
adds r0, r1, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
movs r1, #0
ldrsh r0, [r0, r1]
cmp r0, #0
bge _0803C7F2
adds r0, #0x1f
_0803C7F2:
asrs r1, r0, #5
ldrh r0, [r2, #0x32]
subs r0, r0, r1
strh r0, [r2, #0x32]
_0803C7FA:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0803C80C
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0803C80C:
ldr r1, _0803C81C @ =gUnk_080D0110
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_0803C818: .4byte gUnk_080C9160
_0803C81C: .4byte gUnk_080D0110
thumb_func_start sub_0803C820
sub_0803C820: @ 0x0803C820
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
beq _0803C83C
ldr r0, _0803C840 @ =gUnk_080D0148
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_0803C83C:
pop {r4, pc}
.align 2, 0
_0803C840: .4byte gUnk_080D0148
thumb_func_start sub_0803C844
sub_0803C844: @ 0x0803C844
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x3c
strb r1, [r0, #0x1d]
bx lr
.align 2, 0
thumb_func_start sub_0803C850
sub_0803C850: @ 0x0803C850
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x54]
cmp r0, #0
beq _0803C864
adds r1, r2, #0
adds r1, #0x62
ldrb r1, [r1]
adds r0, #0x62
strb r1, [r0]
_0803C864:
adds r0, r2, #0
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_0803C86C
sub_0803C86C: @ 0x0803C86C
push {r4, lr}
adds r4, r0, #0
bl sub_0803CBAC
movs r0, #0
str r0, [r4, #0x54]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C87C
sub_0803C87C: @ 0x0803C87C
push {r4, lr}
adds r4, r0, #0
movs r1, #0x11
movs r2, #0
bl sub_0804A98C
cmp r0, #0
beq _0803C8B4
str r4, [r0, #0x50]
str r0, [r4, #0x54]
adds r0, r4, #0
bl sub_0804A720
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _0803C8B8 @ =0x0000FFFE
strh r0, [r4, #0x36]
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xff
strb r0, [r1]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
ldrh r1, [r4, #0x32]
adds r0, #2
strh r1, [r0]
_0803C8B4:
pop {r4, pc}
.align 2, 0
_0803C8B8: .4byte 0x0000FFFE
thumb_func_start sub_0803C8BC
sub_0803C8BC: @ 0x0803C8BC
push {r4, lr}
adds r4, r0, #0
movs r1, #0
bl sub_0803CA84
adds r0, r4, #0
bl sub_0803CA4C
cmp r0, #0
beq _0803C8E0
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]
_0803C8E0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C8E4
sub_0803C8E4: @ 0x0803C8E4
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803C914
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x42
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
_0803C914:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803C918
sub_0803C918: @ 0x0803C918
push {r4, lr}
adds r4, r0, #0
bl sub_0803CB04
cmp r0, #0
bne _0803C94E
adds r0, r4, #0
bl sub_0803CA4C
cmp r0, #0
bne _0803C946
movs r0, #4
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x43
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r1, #0xc
adds r0, r4, #0
bl sub_080042AC
b _0803C94E
_0803C946:
adds r0, r4, #0
movs r1, #4
bl sub_0803CA84
_0803C94E:
pop {r4, pc}
thumb_func_start sub_0803C950
sub_0803C950: @ 0x0803C950
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803C97A
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_080042AC
_0803C97A:
pop {r4, pc}
thumb_func_start sub_0803C97C
sub_0803C97C: @ 0x0803C97C
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803C9D2
adds r0, r4, #0
bl sub_0803CB64
movs r0, #6
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x42
strb r0, [r1]
bl Random
movs r1, #1
ands r0, r1
adds r2, r4, #0
adds r2, #0x79
cmp r0, #0
beq _0803C9C2
ldrb r0, [r2]
cmp r0, #0
bne _0803C9C2
movs r0, #0xf
strb r0, [r4, #0xe]
strb r1, [r2]
b _0803C9D2
_0803C9C2:
movs r1, #0
movs r0, #0x1e
strb r0, [r4, #0xe]
strb r1, [r2]
ldr r0, [r4, #0x54]
ldrb r1, [r4, #0x14]
bl sub_080042AC
_0803C9D2:
pop {r4, pc}
thumb_func_start sub_0803C9D4
sub_0803C9D4: @ 0x0803C9D4
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803CA08
adds r0, r2, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #1
bne _0803C9F6
adds r0, r2, #0
bl sub_0803CB34
b _0803CA08
_0803C9F6:
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #0xb4
strb r0, [r2, #0xe]
ldrb r1, [r2, #0x14]
adds r1, #4
adds r0, r2, #0
bl sub_080042AC
_0803CA08:
pop {pc}
.align 2, 0
thumb_func_start sub_0803CA0C
sub_0803CA0C: @ 0x0803CA0C
push {r4, lr}
adds r4, r0, #0
movs r1, #0xc0
lsls r1, r1, #5
bl sub_08003FC4
cmp r0, #0
bne _0803CA3E
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0x13
bhi _0803CA3E
ldrb r1, [r4, #0x14]
adds r1, #0x14
adds r0, r4, #0
bl sub_080042AC
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
_0803CA3E:
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_0803CC08
pop {r4, pc}
thumb_func_start sub_0803CA4C
sub_0803CA4C: @ 0x0803CA4C
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0803CA7C @ =gLinkEntity
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r0, #0x32
ldrsh r2, [r4, r0]
adds r0, r5, #0
movs r3, #0x28
bl sub_0806FCB8
cmp r0, #0
bne _0803CA80
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0x70
movs r3, #0x50
bl sub_080041A0
cmp r0, #0
beq _0803CA80
movs r0, #1
b _0803CA82
.align 2, 0
_0803CA7C: .4byte gLinkEntity
_0803CA80:
movs r0, #0
_0803CA82:
pop {r4, r5, pc}
thumb_func_start sub_0803CA84
sub_0803CA84: @ 0x0803CA84
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
ldr r1, _0803CACC @ =gLinkEntity
bl sub_080045C4
adds r4, r0, #0
subs r0, r4, #3
movs r1, #7
ands r0, r1
cmp r0, #2
bhi _0803CAAA
ldrb r0, [r5, #0x14]
lsrs r1, r4, #3
subs r0, r0, r1
movs r1, #3
ands r0, r1
cmp r0, #1
bls _0803CACA
_0803CAAA:
adds r0, r4, #4
movs r1, #0x18
ands r0, r1
lsrs r4, r0, #3
ldrb r0, [r5, #0x14]
cmp r4, r0
beq _0803CACA
strb r4, [r5, #0x14]
adds r1, r4, r6
adds r0, r5, #0
bl sub_080042AC
ldr r0, [r5, #0x54]
adds r1, r4, #0
bl sub_080042AC
_0803CACA:
pop {r4, r5, r6, pc}
.align 2, 0
_0803CACC: .4byte gLinkEntity
thumb_func_start sub_0803CAD0
sub_0803CAD0: @ 0x0803CAD0
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x74
ldrh r1, [r6]
adds r5, r4, #0
adds r5, #0x76
ldrh r2, [r5]
movs r3, #1
bl sub_0806FCB8
cmp r0, #0
bne _0803CB02
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
ldrh r2, [r6]
ldrh r3, [r5]
bl sub_080045D4
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_080AEFE0
_0803CB02:
pop {r4, r5, r6, pc}
thumb_func_start sub_0803CB04
sub_0803CB04: @ 0x0803CB04
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
beq _0803CB1A
movs r0, #0
b _0803CB32
_0803CB1A:
adds r0, r4, #0
bl sub_0803CB34
adds r0, r4, #0
adds r0, #0x79
strb r5, [r0]
ldr r0, [r4, #0x54]
ldrb r1, [r4, #0x14]
adds r1, #4
bl sub_080042AC
movs r0, #1
_0803CB32:
pop {r4, r5, pc}
thumb_func_start sub_0803CB34
sub_0803CB34: @ 0x0803CB34
push {r4, lr}
adds r4, r0, #0
movs r0, #5
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0xa6
strb r0, [r1]
ldr r1, _0803CB60 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r1, r4, #0
adds r1, #0x78
strb r0, [r1]
ldrb r1, [r4, #0x14]
adds r1, #8
adds r0, r4, #0
bl sub_080042AC
pop {r4, pc}
.align 2, 0
_0803CB60: .4byte gLinkEntity
thumb_func_start sub_0803CB64
sub_0803CB64: @ 0x0803CB64
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x12
movs r2, #0
bl sub_0804A98C
adds r5, r0, #0
cmp r5, #0
beq _0803CBA0
ldrb r1, [r4, #0x14]
lsls r1, r1, #1
ldr r0, _0803CBA4 @ =gUnk_080D0154
adds r1, r1, r0
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
strb r0, [r5, #0x15]
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r1, r3]
lsls r3, r3, #0x10
adds r0, r4, #0
adds r1, r5, #0
bl PositionRelative
ldr r0, _0803CBA8 @ =0x00000193
bl sub_08004488
_0803CBA0:
pop {r4, r5, pc}
.align 2, 0
_0803CBA4: .4byte gUnk_080D0154
_0803CBA8: .4byte 0x00000193
thumb_func_start sub_0803CBAC
sub_0803CBAC: @ 0x0803CBAC
push {lr}
adds r3, r0, #0
ldr r2, [r3, #0x54]
cmp r2, #0
beq _0803CBC6
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x43
strb r0, [r1]
_0803CBC6:
movs r0, #7
strb r0, [r3, #0xc]
ldrb r1, [r3, #0x18]
subs r0, #0xb
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r3, #0x18]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r2, #0x12
ldrb r1, [r2]
movs r0, #0x7b
ands r0, r1
strb r0, [r2]
adds r1, r3, #0
adds r1, #0x3f
movs r0, #0x42
strb r0, [r1]
ldrb r1, [r3, #0x14]
adds r1, #0x10
adds r0, r3, #0
bl sub_080042AC
pop {pc}
.align 2, 0
thumb_func_start sub_0803CC08
sub_0803CC08: @ 0x0803CC08
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x54]
cmp r5, #0
beq _0803CCB4
movs r1, #0x36
ldrsh r0, [r5, r1]
movs r2, #0x36
ldrsh r1, [r4, r2]
subs r0, r0, r1
cmp r0, #2
bhi _0803CCB4
ldr r0, [r4, #0x20]
cmp r0, #0
bge _0803CCB4
movs r0, #0x2e
ldrsh r1, [r5, r0]
movs r0, #0x32
ldrsh r2, [r5, r0]
adds r0, r4, #0
movs r3, #6
bl sub_0806FCB8
cmp r0, #0
beq _0803CCB4
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _0803CC56
ldrh r0, [r1, #0x2e]
adds r0, #6
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
adds r0, #6
strh r0, [r1, #0x32]
_0803CC56:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _0803CC72
ldrh r0, [r1, #0x2e]
subs r0, #6
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
adds r0, #6
strh r0, [r1, #0x32]
_0803CC72:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _0803CC8E
ldrh r0, [r1, #0x2e]
adds r0, #6
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
subs r0, #6
strh r0, [r1, #0x32]
_0803CC8E:
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _0803CCAA
ldrh r0, [r1, #0x2e]
subs r0, #6
strh r0, [r1, #0x2e]
ldrh r0, [r1, #0x32]
subs r0, #6
strh r0, [r1, #0x32]
_0803CCAA:
movs r0, #0
str r0, [r4, #0x54]
adds r0, r5, #0
bl sub_0805E7BC
_0803CCB4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803CCB8
sub_0803CCB8: @ 0x0803CCB8
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0803CCD0 @ =gUnk_080D0418
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0803CCD0: .4byte gUnk_080D0418
thumb_func_start sub_0803CCD4
sub_0803CCD4: @ 0x0803CCD4
push {lr}
ldr r2, _0803CCE8 @ =gUnk_080D0430
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803CCE8: .4byte gUnk_080D0430
thumb_func_start sub_0803CCEC
sub_0803CCEC: @ 0x0803CCEC
push {lr}
adds r2, r0, #0
adds r2, #0x42
movs r1, #0
strb r1, [r2]
bl sub_0803CCD4
pop {pc}
thumb_func_start sub_0803CCFC
sub_0803CCFC: @ 0x0803CCFC
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
bne _0803CD16
ldrb r0, [r4, #0xd]
cmp r0, #2
bne _0803CD26
adds r0, r4, #0
bl sub_0803CE3C
b _0803CD26
_0803CD16:
ldr r0, _0803CD28 @ =gUnk_080D043C
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_0803CD26:
pop {r4, pc}
.align 2, 0
_0803CD28: .4byte gUnk_080D043C
thumb_func_start sub_0803CD2C
sub_0803CD2C: @ 0x0803CD2C
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x3c
strb r1, [r0, #0x1d]
bx lr
.align 2, 0
thumb_func_start sub_0803CD38
sub_0803CD38: @ 0x0803CD38
push {lr}
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_0803CD40
sub_0803CD40: @ 0x0803CD40
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _0803CD66
movs r0, #2
rsbs r0, r0, #0
bl ModHealth
ldr r0, _0803CD68 @ =gLinkEntity
movs r1, #0x7a
bl sub_0800449C
bl sub_08079D84
adds r0, r4, #0
bl sub_0803CE3C
_0803CD66:
pop {r4, pc}
.align 2, 0
_0803CD68: .4byte gLinkEntity
thumb_func_start sub_0803CD6C
sub_0803CD6C: @ 0x0803CD6C
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _0803CDA4 @ =0x0000FFFE
strh r0, [r4, #0x36]
ldrb r0, [r4, #0xa]
bl sub_0804B128
str r0, [r4, #0x54]
str r0, [r4, #0x50]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
adds r0, r4, #0
movs r1, #4
bl sub_080042AC
adds r0, r4, #0
bl sub_0803CE14
pop {r4, pc}
.align 2, 0
_0803CDA4: .4byte 0x0000FFFE
thumb_func_start sub_0803CDA8
sub_0803CDA8: @ 0x0803CDA8
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803CDC0
adds r0, r4, #0
bl sub_0806F69C
_0803CDC0:
adds r1, r4, #0
adds r1, #0x74
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803CDD6
adds r0, r4, #0
bl sub_0803CE14
_0803CDD6:
pop {r4, pc}
thumb_func_start sub_0803CDD8
sub_0803CDD8: @ 0x0803CDD8
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x18]
lsls r0, r1, #0x1e
lsrs r0, r0, #0x1e
movs r2, #1
eors r0, r2
movs r5, #4
rsbs r5, r5, #0
adds r3, r5, #0
ands r3, r1
orrs r3, r0
strb r3, [r4, #0x18]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803CE10
movs r0, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r2, #0x80
orrs r1, r2
strb r1, [r4, #0x10]
ands r3, r5
orrs r3, r0
strb r3, [r4, #0x18]
_0803CE10:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803CE14
sub_0803CE14: @ 0x0803CE14
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x54
adds r2, r4, #0
adds r2, #0x74
bl sub_080A2CC0
ldrb r1, [r4, #0x15]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803CE38
lsrs r1, r1, #3
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
_0803CE38:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803CE3C
sub_0803CE3C: @ 0x0803CE3C
push {r4, lr}
adds r4, r0, #0
movs r1, #2
movs r2, #0
bl CreateFX
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r2, r4, #0
adds r2, #0x3a
ldrb r1, [r2]
movs r0, #0xfb
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x78
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r4, #0x32]
ldr r0, [r4, #0x50]
str r0, [r4, #0x54]
adds r0, r4, #0
bl sub_0803CE14
pop {r4, pc}
thumb_func_start sub_0803CE80
sub_0803CE80: @ 0x0803CE80
push {lr}
ldr r2, _0803CE94 @ =gUnk_080D0448
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803CE94: .4byte gUnk_080D0448
thumb_func_start sub_0803CE98
sub_0803CE98: @ 0x0803CE98
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r1, r6, #0
adds r1, #0x84
ldrh r2, [r1]
movs r5, #0xf0
lsls r5, r5, #8
adds r0, r5, #0
ands r0, r2
lsrs r0, r0, #5
strh r0, [r6, #0x24]
ldrh r2, [r1]
ldr r4, _0803CF1C @ =0x00000FFF
adds r0, r4, #0
ands r0, r2
strh r0, [r1]
adds r0, r6, #0
bl sub_0804A720
movs r0, #1
strb r0, [r6, #0xc]
adds r3, r6, #0
adds r3, #0x82
ldrh r0, [r3]
ands r4, r0
adds r0, r6, #0
adds r0, #0x74
strh r4, [r0]
ldrh r0, [r3]
movs r1, #0x3f
ands r1, r0
lsls r1, r1, #4
ldr r2, _0803CF20 @ =gRoomControls
ldrh r0, [r2, #6]
adds r0, #8
adds r1, r1, r0
strh r1, [r6, #0x2e]
ldrh r1, [r3]
movs r0, #0xfc
lsls r0, r0, #4
ands r0, r1
lsrs r0, r0, #2
ldrh r1, [r2, #8]
adds r1, #8
adds r0, r0, r1
strh r0, [r6, #0x32]
movs r1, #0
ldrsh r0, [r3, r1]
ands r0, r5
asrs r0, r0, #0xa
strb r0, [r6, #0x15]
ldrb r0, [r6, #0xa]
lsls r0, r0, #2
adds r1, r6, #0
adds r1, #0x78
strh r0, [r1]
adds r0, r6, #0
bl sub_0803CFF0
cmp r0, #0
beq _0803CF18
adds r0, r6, #0
bl sub_0803D0B0
_0803CF18:
pop {r4, r5, r6, pc}
.align 2, 0
_0803CF1C: .4byte 0x00000FFF
_0803CF20: .4byte gRoomControls
thumb_func_start sub_0803CF24
sub_0803CF24: @ 0x0803CF24
push {r4, lr}
adds r4, r0, #0
bl sub_0803CFD8
cmp r0, #0
beq _0803CF36
adds r0, r4, #0
bl sub_0803D024
_0803CF36:
pop {r4, pc}
thumb_func_start sub_0803CF38
sub_0803CF38: @ 0x0803CF38
push {r4, lr}
adds r4, r0, #0
bl sub_0803CFF0
cmp r0, #0
beq _0803CF4C
adds r0, r4, #0
bl sub_0803D0B0
b _0803CF8C
_0803CF4C:
adds r0, r4, #0
movs r1, #0
bl sub_08049FDC
cmp r0, #0
beq _0803CF8C
ldr r0, _0803CF90 @ =gUnk_020000B0
ldr r0, [r0]
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x20
bl sub_0806FCB8
cmp r0, #0
bne _0803CF8C
adds r1, r4, #0
adds r1, #0x7a
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803CF8C
adds r0, r4, #0
bl sub_0803D058
adds r0, r4, #0
bl sub_0803D024
_0803CF8C:
pop {r4, pc}
.align 2, 0
_0803CF90: .4byte gUnk_020000B0
thumb_func_start sub_0803CF94
sub_0803CF94: @ 0x0803CF94
push {r4, lr}
adds r4, r0, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl sub_080002B0
cmp r0, #0x76
bne _0803CFBA
adds r1, r4, #0
adds r1, #0x80
movs r0, #0
strh r0, [r1]
adds r0, r4, #0
bl sub_0803D024
b _0803CFD4
_0803CFBA:
adds r0, r4, #0
adds r0, #0x7c
ldrh r0, [r0]
cmp r0, #0
beq _0803CFD4
adds r0, r4, #0
bl sub_0803CFD8
cmp r0, #0
beq _0803CFD4
adds r0, r4, #0
bl sub_0803D024
_0803CFD4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803CFD8
sub_0803CFD8: @ 0x0803CFD8
push {lr}
adds r1, r0, #0
adds r1, #0x7c
ldrh r0, [r1]
cmp r0, #0
bne _0803CFE8
movs r0, #1
b _0803CFEE
_0803CFE8:
ldrh r0, [r1]
bl sub_0807CBE4
_0803CFEE:
pop {pc}
thumb_func_start sub_0803CFF0
sub_0803CFF0: @ 0x0803CFF0
push {lr}
adds r1, r0, #0
adds r1, #0x80
ldrh r2, [r1]
cmp r2, #0
beq _0803D01E
adds r0, #0x7c
ldrh r0, [r0]
cmp r2, r0
bne _0803D016
adds r0, r2, #0
bl sub_0807CBE4
movs r1, #0
cmp r0, #0
bne _0803D012
movs r1, #1
_0803D012:
adds r0, r1, #0
b _0803D020
_0803D016:
ldrh r0, [r1]
bl sub_0807CBE4
b _0803D020
_0803D01E:
movs r0, #0
_0803D020:
pop {pc}
.align 2, 0
thumb_func_start sub_0803D024
sub_0803D024: @ 0x0803D024
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x78
ldrh r1, [r0]
cmp r1, #0
beq _0803D03A
adds r0, #2
b _0803D04E
_0803D03A:
bl Random
ldr r2, _0803D054 @ =gUnk_080D0458
movs r1, #7
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r1, [r1]
adds r0, r4, #0
adds r0, #0x7a
_0803D04E:
strh r1, [r0]
pop {r4, pc}
.align 2, 0
_0803D054: .4byte gUnk_080D0458
thumb_func_start sub_0803D058
sub_0803D058: @ 0x0803D058
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0x16
movs r2, #0
bl sub_0804A98C
adds r5, r0, #0
cmp r5, #0
beq _0803D0AE
ldrh r1, [r4, #0x24]
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r0, #0
beq _0803D078
strh r1, [r5, #0x24]
b _0803D08A
_0803D078:
bl Random
ldr r2, _0803D0A4 @ =gUnk_080D0468
movs r1, #3
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r1]
strh r0, [r5, #0x24]
_0803D08A:
ldrb r1, [r4, #0x15]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0803D0AC
ldr r0, _0803D0A8 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
strb r0, [r5, #0x15]
b _0803D0AE
.align 2, 0
_0803D0A4: .4byte gUnk_080D0468
_0803D0A8: .4byte gUnk_020000B0
_0803D0AC:
strb r1, [r5, #0x15]
_0803D0AE:
pop {r4, r5, pc}
thumb_func_start sub_0803D0B0
sub_0803D0B0: @ 0x0803D0B0
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
adds r1, r0, #0
adds r1, #0x74
ldrh r1, [r1]
adds r0, #0x38
ldrb r2, [r0]
movs r0, #0x75
bl sub_0807B7D8
pop {pc}
thumb_func_start sub_0803D0C8
sub_0803D0C8: @ 0x0803D0C8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _0803D0F4
cmp r0, #1
bgt _0803D0DC
cmp r0, #0
beq _0803D0E6
b _0803D12C
_0803D0DC:
cmp r0, #2
beq _0803D104
cmp r0, #3
beq _0803D11C
b _0803D12C
_0803D0E6:
adds r0, r4, #0
bl sub_0803DFBC
ldr r0, _0803D0F0 @ =gUnk_080D0470
b _0803D106
.align 2, 0
_0803D0F0: .4byte gUnk_080D0470
_0803D0F4:
adds r0, r4, #0
bl sub_0803DC58
ldr r0, _0803D100 @ =gUnk_080D0490
b _0803D106
.align 2, 0
_0803D100: .4byte gUnk_080D0490
_0803D104:
ldr r0, _0803D118 @ =gUnk_080D0498
_0803D106:
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0803D12C
.align 2, 0
_0803D118: .4byte gUnk_080D0498
_0803D11C:
ldr r0, _0803D130 @ =gUnk_080D04A0
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_0803D12C:
pop {r4, pc}
.align 2, 0
_0803D130: .4byte gUnk_080D04A0
thumb_func_start sub_0803D134
sub_0803D134: @ 0x0803D134
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #0x7b
bl sub_0807CBD0
cmp r0, #0
beq _0803D146
bl sub_0805E780
_0803D146:
adds r0, r5, #0
bl sub_0804A720
movs r0, #0
bl sub_0807CC3C
cmp r0, #0
bne _0803D158
b _0803D25A
_0803D158:
ldr r0, _0803D25C @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x41
bhi _0803D25A
movs r0, #0
bl sub_0807CD8C
movs r2, #0
movs r0, #3
strb r0, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x74
movs r0, #0xff
strb r0, [r1]
strb r2, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x76
strb r2, [r0]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r5, #0x15]
adds r3, r5, #0
adds r3, #0x29
ldrb r1, [r3]
subs r0, #7
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r3]
str r2, [r5, #0x34]
adds r1, r5, #0
adds r1, #0x80
movs r0, #2
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x86
strb r2, [r0]
adds r1, #5
movs r0, #0x30
strb r0, [r1]
subs r1, #1
subs r0, #0x31
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x87
strb r2, [r0]
subs r0, #5
strb r2, [r0]
adds r0, #1
strb r2, [r0]
ldr r0, [r5, #0x2c]
str r0, [r5, #0x78]
ldr r0, [r5, #0x30]
str r0, [r5, #0x7c]
movs r0, #0x4a
movs r1, #1
bl CreateEnemy
adds r4, r0, #0
str r5, [r4, #0x50]
str r4, [r5, #0x54]
movs r6, #0
_0803D1E2:
movs r0, #0x54
movs r1, #0
bl CreateEnemy
adds r4, r0, #0
str r5, [r4, #0x50]
adds r0, #0x79
strb r6, [r0]
adds r6, #1
cmp r6, #5
ble _0803D1E2
movs r6, #0
_0803D1FA:
movs r0, #0x4a
movs r1, #3
bl CreateEnemy
adds r4, r0, #0
str r5, [r4, #0x50]
strb r6, [r4, #0xe]
adds r6, #1
cmp r6, #3
ble _0803D1FA
movs r6, #0
_0803D210:
movs r0, #0x54
movs r1, #1
bl CreateEnemy
adds r4, r0, #0
str r5, [r4, #0x50]
movs r0, #1
adds r2, r6, #0
ands r2, r0
lsls r2, r2, #6
ldrb r0, [r4, #0x18]
movs r3, #0x41
rsbs r3, r3, #0
adds r1, r3, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
lsls r1, r6, #1
ldr r0, _0803D260 @ =gUnk_080D04A8
adds r1, r1, r0
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r1, r3]
lsls r3, r3, #0x10
adds r0, r5, #0
adds r1, r4, #0
bl PositionRelative
adds r6, #1
cmp r6, #1
ble _0803D210
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
_0803D25A:
pop {r4, r5, r6, pc}
.align 2, 0
_0803D25C: .4byte gUnk_03003DBC
_0803D260: .4byte gUnk_080D04A8
thumb_func_start sub_0803D264
sub_0803D264: @ 0x0803D264
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803D318
subs r0, #1
strb r0, [r4, #0xe]
movs r7, #0xff
lsls r0, r0, #0x18
lsrs r6, r0, #0x18
cmp r6, #0
beq _0803D27E
b _0803D400
_0803D27E:
adds r5, r4, #0
adds r5, #0x74
ldrb r1, [r5]
movs r0, #0x70
ands r0, r1
cmp r0, #0
bne _0803D2E4
ldr r0, [r4, #0x54]
ldrb r0, [r0, #0xe]
cmp r0, #0
bne _0803D2DE
adds r0, r4, #0
bl sub_0803DD78
adds r0, r4, #0
adds r0, #0x75
ldrb r0, [r0]
cmp r0, #0
beq _0803D2B0
movs r0, #2
strb r0, [r4, #0xc]
strb r6, [r5]
movs r0, #0x10
strb r0, [r4, #0xe]
b _0803D2D6
_0803D2B0:
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #0
bne _0803D2C4
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0803D2D6
_0803D2C4:
bl Random
movs r1, #0x80
ands r1, r0
lsrs r1, r1, #3
movs r0, #8
orrs r1, r0
strb r1, [r4, #0x15]
b _0803D400
_0803D2D6:
ldrb r0, [r4, #0x15]
orrs r0, r7
strb r0, [r4, #0x15]
b _0803D400
_0803D2DE:
movs r0, #2
strb r0, [r4, #0xe]
b _0803D400
_0803D2E4:
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r5]
movs r0, #0x80
ands r0, r1
adds r1, r4, #0
adds r1, #0x75
strb r0, [r1]
strb r6, [r5]
movs r0, #0xc0
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
orrs r0, r7
strb r0, [r4, #0x15]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0803D400
_0803D318:
adds r1, r4, #0
adds r1, #0x77
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
movs r6, #0xff
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _0803D3BA
adds r0, r4, #0
bl sub_0803DEE0
cmp r0, #1
beq _0803D366
cmp r0, #1
blo _0803D344
cmp r0, #2
beq _0803D384
cmp r0, #3
beq _0803D374
b _0803D3BA
_0803D344:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0xa0
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
orrs r0, r6
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x84
ldrb r0, [r1]
orrs r0, r6
strb r0, [r1]
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
b _0803D3BA
_0803D366:
movs r0, #6
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x74
strb r5, [r0]
strb r5, [r4, #0xe]
b _0803D3B4
_0803D374:
movs r0, #5
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x74
strb r5, [r0]
movs r0, #0x20
strb r0, [r4, #0xf]
b _0803D3B4
_0803D384:
adds r0, r4, #0
adds r0, #0x74
strb r5, [r0]
movs r0, #0x20
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #0
bne _0803D3A2
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0803D3B4
_0803D3A2:
bl Random
movs r1, #0x80
ands r1, r0
lsrs r1, r1, #3
movs r0, #8
orrs r1, r0
strb r1, [r4, #0x15]
b _0803D3BA
_0803D3B4:
ldrb r0, [r4, #0x15]
orrs r0, r6
strb r0, [r4, #0x15]
_0803D3BA:
ldr r0, [r4, #0x54]
ldrb r0, [r0, #0xe]
cmp r0, #0
bne _0803D400
adds r2, r4, #0
adds r2, #0x85
ldrb r0, [r2]
adds r1, r0, #1
strb r1, [r2]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _0803D3FA
movs r0, #0x30
ands r0, r1
cmp r0, #0x10
beq _0803D3F4
cmp r0, #0x10
bgt _0803D3E6
cmp r0, #0
beq _0803D3EE
b _0803D3FA
_0803D3E6:
cmp r0, #0x20
beq _0803D3F4
cmp r0, #0x30
bne _0803D3FA
_0803D3EE:
ldrh r0, [r4, #0x32]
adds r0, #1
b _0803D3F8
_0803D3F4:
ldrh r0, [r4, #0x32]
subs r0, #1
_0803D3F8:
strh r0, [r4, #0x32]
_0803D3FA:
adds r0, r4, #0
bl sub_080AEFB4
_0803D400:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0803D408
sub_0803D408: @ 0x0803D408
push {r4, r5, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x74
ldrb r0, [r2]
cmp r0, #1
beq _0803D458
cmp r0, #1
bgt _0803D420
cmp r0, #0
beq _0803D42A
b _0803D558
_0803D420:
cmp r0, #2
beq _0803D478
cmp r0, #3
beq _0803D4FC
b _0803D558
_0803D42A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _0803D438
b _0803D558
_0803D438:
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
movs r0, #0x20
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #3
bl sub_080042AC
ldr r0, _0803D454 @ =0x0000019B
bl PlaySFX
b _0803D558
.align 2, 0
_0803D454: .4byte 0x0000019B
_0803D458:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803D558
movs r0, #2
strb r0, [r2]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
strb r0, [r4, #0x18]
movs r0, #0x10
strb r0, [r4, #0xe]
b _0803D558
_0803D478:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803D558
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
adds r0, r4, #0
bl sub_0803E028
cmp r0, #0
bne _0803D4D0
bl Random
adds r5, r4, #0
adds r5, #0x81
ldrb r1, [r5]
adds r1, #1
movs r2, #3
ands r0, r2
adds r1, r1, r0
strb r1, [r5]
ldrb r0, [r5]
movs r1, #5
bl __modsi3
strb r0, [r5]
ldrb r1, [r5]
lsls r1, r1, #2
ldr r0, _0803D4F4 @ =gUnk_080D04AC
adds r1, r1, r0
ldr r2, _0803D4F8 @ =gRoomControls
ldrh r0, [r1]
ldrh r3, [r2, #6]
adds r0, r0, r3
adds r0, #0x10
strh r0, [r4, #0x2e]
ldrh r0, [r1, #2]
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r0, #0x10
strh r0, [r4, #0x32]
_0803D4D0:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #0x20
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #4
bl sub_080042AC
movs r0, #0xf5
bl PlaySFX
b _0803D558
.align 2, 0
_0803D4F4: .4byte gUnk_080D04AC
_0803D4F8: .4byte gRoomControls
_0803D4FC:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803D558
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #4
bls _0803D52E
ldr r1, _0803D544 @ =gLinkEntity
ldrh r0, [r1, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #0x32]
subs r0, #0x18
strh r0, [r4, #0x32]
_0803D52E:
adds r1, r4, #0
adds r1, #0x77
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803D548
movs r0, #1
strb r0, [r4, #0xc]
b _0803D54E
.align 2, 0
_0803D544: .4byte gLinkEntity
_0803D548:
movs r0, #0
strb r0, [r2]
movs r0, #0x10
_0803D54E:
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_0803D558:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_0803D560
sub_0803D560: @ 0x0803D560
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x74
ldrb r0, [r2]
cmp r0, #2
beq _0803D62A
cmp r0, #2
bgt _0803D57C
cmp r0, #0
beq _0803D5BC
cmp r0, #1
beq _0803D5F8
b _0803D650
_0803D57C:
cmp r0, #0xfe
beq _0803D590
cmp r0, #0xfe
bgt _0803D58A
cmp r0, #3
beq _0803D646
b _0803D650
_0803D58A:
cmp r0, #0xff
beq _0803D598
b _0803D650
_0803D590:
movs r0, #0
strb r0, [r2]
movs r0, #1
b _0803D64E
_0803D598:
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #4
rsbs r0, r0, #0
cmp r1, r0
beq _0803D5AC
ldr r0, [r4, #0x34]
ldr r1, _0803D5B8 @ =0xFFFFE000
adds r0, r0, r1
str r0, [r4, #0x34]
_0803D5AC:
ldrb r0, [r4, #0xe]
cmp r0, #2
bne _0803D650
movs r0, #0xfe
strb r0, [r2]
b _0803D650
.align 2, 0
_0803D5B8: .4byte 0xFFFFE000
_0803D5BC:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803D650
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x75
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
movs r1, #0x20
cmp r0, #0
beq _0803D5E0
movs r1, #0x14
_0803D5E0:
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
adds r0, #1
asrs r0, r0, #1
lsls r0, r0, #1
adds r0, #2
adds r1, r4, #0
adds r1, #0x80
strb r0, [r1]
b _0803D650
_0803D5F8:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803D650
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x75
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803D620
movs r0, #0xd8
lsls r0, r0, #1
bl PlaySFX
_0803D620:
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
b _0803D650
_0803D62A:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803D650
movs r0, #3
strb r0, [r2]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0803D650
_0803D646:
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r2]
_0803D64E:
strb r0, [r4, #0xe]
_0803D650:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
thumb_func_start sub_0803D658
sub_0803D658: @ 0x0803D658
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r3, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803D68E
movs r2, #1
strb r2, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x84
ldrb r0, [r1]
orrs r0, r3
strb r0, [r1]
strb r2, [r4, #0xe]
ldrb r0, [r4, #0x15]
adds r0, #0x10
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0803D6EE
_0803D68E:
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0803D6EE
movs r0, #0xef
ands r0, r1
strb r0, [r2]
adds r5, r4, #0
adds r5, #0x84
ldrb r0, [r5]
cmp r0, #0xff
bne _0803D6C8
ldr r1, _0803D6F8 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
adds r0, #2
movs r1, #0x1c
ands r0, r1
ldr r1, _0803D6FC @ =gUnk_080D04C0
lsrs r0, r0, #2
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r5]
movs r0, #0
strb r0, [r4, #0xf]
_0803D6C8:
ldrb r0, [r4, #0xf]
cmp r0, #0xf
bhi _0803D6EE
ldrb r2, [r5]
adds r0, r4, #0
movs r1, #0x1a
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _0803D6EE
ldrb r0, [r4, #0xf]
strb r0, [r1, #0xf]
str r4, [r1, #0x50]
ldrh r0, [r4, #0x36]
strh r0, [r1, #0x36]
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
_0803D6EE:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
_0803D6F8: .4byte gLinkEntity
_0803D6FC: .4byte gUnk_080D04C0
thumb_func_start sub_0803D700
sub_0803D700: @ 0x0803D700
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0803D720
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r4, #0xe]
movs r0, #0xff
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0803D82E
_0803D720:
adds r2, r4, #0
adds r2, #0x74
ldrb r0, [r2]
adds r6, r2, #0
cmp r0, #1
beq _0803D764
cmp r0, #1
bgt _0803D736
cmp r0, #0
beq _0803D744
b _0803D73E
_0803D736:
cmp r0, #2
beq _0803D78E
cmp r0, #3
beq _0803D7FA
_0803D73E:
adds r5, r4, #0
adds r5, #0x87
b _0803D81C
_0803D744:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
adds r5, r4, #0
adds r5, #0x87
cmp r0, #0
bne _0803D81C
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
b _0803D81C
_0803D764:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
adds r5, r4, #0
adds r5, #0x87
cmp r0, #0
beq _0803D81C
movs r0, #2
strb r0, [r2]
bl Random
movs r1, #0x3f
ands r0, r1
adds r0, #0x40
strb r0, [r4, #0xf]
movs r0, #0xf4
bl PlaySFX
b _0803D81C
_0803D78E:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
adds r5, r4, #0
adds r5, #0x87
cmp r0, #0
bne _0803D81C
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #1
bls _0803D7E4
ldrb r0, [r5]
cmp r0, #3
bhi _0803D7E4
bl Random
movs r1, #0x10
ands r1, r0
cmp r1, #0
beq _0803D7E4
ldrb r0, [r5]
adds r0, #1
strb r0, [r5]
bl Random
movs r1, #0x3f
ands r0, r1
adds r0, #0x40
strb r0, [r4, #0xf]
ldr r1, _0803D7E0 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
movs r1, #0x10
ands r0, r1
movs r1, #8
orrs r0, r1
b _0803D81A
.align 2, 0
_0803D7E0: .4byte gLinkEntity
_0803D7E4:
ldrb r0, [r6]
adds r0, #1
movs r1, #0
strb r0, [r6]
strb r1, [r5]
movs r0, #0x30
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_080042AC
b _0803D81C
_0803D7FA:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
movs r3, #0xff
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r5, r4, #0
adds r5, #0x87
cmp r1, #0
bne _0803D81C
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r2]
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
orrs r0, r3
_0803D81A:
strb r0, [r4, #0x15]
_0803D81C:
ldrb r0, [r5]
cmp r0, #0
beq _0803D828
adds r0, r4, #0
bl sub_080AEFB4
_0803D828:
adds r0, r4, #0
bl sub_080042B8
_0803D82E:
pop {r4, r5, r6, pc}
thumb_func_start sub_0803D830
sub_0803D830: @ 0x0803D830
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0803D844
movs r0, #1
strb r0, [r5, #0xc]
strb r0, [r5, #0xe]
b _0803D8F4
_0803D844:
adds r4, r5, #0
adds r4, #0x74
ldrb r0, [r4]
cmp r0, #1
beq _0803D870
cmp r0, #1
bgt _0803D858
cmp r0, #0
beq _0803D862
b _0803D8EE
_0803D858:
cmp r0, #2
beq _0803D8C2
cmp r0, #3
beq _0803D8CE
b _0803D8EE
_0803D862:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0803D8EE
movs r0, #1
strb r0, [r4]
movs r0, #0x70
b _0803D8EC
_0803D870:
ldrb r0, [r5, #0xe]
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803D8B0
ldrb r0, [r4]
adds r0, #1
strb r0, [r4]
movs r0, #0xa8
lsls r0, r0, #1
bl PlaySFX
adds r0, r5, #0
movs r1, #0x18
movs r2, #0
bl sub_0804A98C
adds r4, r0, #0
cmp r4, #0
beq _0803D8EE
ldr r3, _0803D8AC @ =0xFFF00000
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
str r5, [r4, #0x50]
b _0803D8EE
.align 2, 0
_0803D8AC: .4byte 0xFFF00000
_0803D8B0:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x40
bne _0803D8EE
movs r0, #0xcb
lsls r0, r0, #1
bl PlaySFX
b _0803D8EE
_0803D8C2:
ldrb r0, [r5, #0xf]
cmp r0, #0
beq _0803D8EE
movs r0, #0
strb r0, [r5, #0xf]
b _0803D8EE
_0803D8CE:
ldrb r0, [r5, #0xf]
cmp r0, #0
bne _0803D8DE
movs r0, #1
strb r0, [r5, #0xf]
ldr r0, _0803D8F8 @ =0x0000014F
bl PlaySFX
_0803D8DE:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0803D8EE
movs r1, #0
movs r0, #1
strb r0, [r5, #0xc]
strb r1, [r4]
_0803D8EC:
strb r0, [r5, #0xe]
_0803D8EE:
adds r0, r5, #0
bl sub_080042B8
_0803D8F4:
pop {r4, r5, pc}
.align 2, 0
_0803D8F8: .4byte 0x0000014F
thumb_func_start sub_0803D8FC
sub_0803D8FC: @ 0x0803D8FC
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _0803D968
subs r1, r0, #1
strb r1, [r2, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803D918
movs r0, #1
bl sub_0807CD10
b _0803D968
_0803D918:
movs r0, #7
ands r1, r0
cmp r1, #0
bne _0803D968
adds r0, r2, #0
movs r1, #2
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _0803D968
bl Random
ldr r1, _0803D96C @ =0x00003F3F
ands r0, r1
movs r3, #0xff
adds r1, r0, #0
ands r1, r3
ldr r5, _0803D970 @ =0x0000FFE0
adds r2, r5, #0
adds r1, r2, r1
ldrh r5, [r4, #0x2e]
adds r1, r1, r5
strh r1, [r4, #0x2e]
lsrs r0, r0, #8
ands r0, r3
adds r2, r2, r0
ldrh r0, [r4, #0x32]
adds r2, r2, r0
strh r2, [r4, #0x32]
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]
_0803D968:
pop {r4, r5, pc}
.align 2, 0
_0803D96C: .4byte 0x00003F3F
_0803D970: .4byte 0x0000FFE0
thumb_func_start sub_0803D974
sub_0803D974: @ 0x0803D974
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r5, r4, #0
adds r5, #0x74
strb r1, [r5]
adds r2, r4, #0
adds r2, #0x75
strb r0, [r2]
strb r1, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xff
strb r0, [r1]
ldr r0, [r4, #0x50]
movs r3, #0x80
lsls r3, r3, #9
adds r1, r4, #0
movs r2, #0
bl PositionRelative
movs r0, #0x4a
movs r1, #2
bl CreateEnemy
str r4, [r0, #0x50]
ldr r1, [r4, #0x50]
str r1, [r0, #0x54]
ldrb r1, [r5]
adds r0, r4, #0
bl sub_080042AC
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803D9BC
sub_0803D9BC: @ 0x0803D9BC
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x50]
adds r2, r4, #0
adds r2, #0x74
ldrb r0, [r2]
cmp r0, #0
bne _0803D9E2
adds r0, r5, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0803DA44
movs r0, #1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x30
b _0803D9F6
_0803D9E2:
adds r0, r5, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0803DA02
movs r0, #0
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x2f
_0803D9F6:
strb r0, [r1]
ldrb r1, [r2]
adds r0, r4, #0
bl sub_080042AC
b _0803DA44
_0803DA02:
adds r2, r4, #0
adds r2, #0x41
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803DA2E
adds r0, r4, #0
adds r0, #0x3d
ldrb r1, [r0]
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _0803DA2E
adds r0, r5, #0
adds r0, #0x3d
strb r1, [r0]
ldrb r0, [r2]
adds r2, r5, #0
adds r2, #0x41
strb r0, [r2]
_0803DA2E:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _0803DA44
adds r0, r4, #0
movs r1, #2
bl sub_080042AC
_0803DA44:
adds r1, r4, #0
adds r1, #0x75
ldrb r0, [r1]
cmp r0, #0
bne _0803DA60
ldrb r0, [r5, #0xc]
cmp r0, #2
beq _0803DA72
movs r0, #1
strb r0, [r1]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
b _0803DA70
_0803DA60:
ldrb r0, [r5, #0xc]
cmp r0, #2
bne _0803DA72
movs r0, #0
strb r0, [r1]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
_0803DA70:
strb r0, [r4, #0x10]
_0803DA72:
ldrb r1, [r5, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r5, #0
adds r0, #0x62
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
ldr r0, [r4, #0x50]
movs r3, #0x80
lsls r3, r3, #9
adds r1, r4, #0
movs r2, #0
bl PositionRelative
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803DAA8
sub_0803DAA8: @ 0x0803DAA8
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #0x50]
movs r3, #0
movs r2, #1
strb r2, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x74
strb r2, [r1]
adds r1, #1
strb r3, [r1]
adds r2, r4, #0
adds r2, #0x63
movs r1, #0xfe
strb r1, [r2]
movs r1, #0xff
strb r1, [r4, #0x15]
movs r3, #0x80
lsls r3, r3, #0xa
adds r1, r4, #0
movs r2, #0
bl PositionRelative
adds r0, r4, #0
movs r1, #2
bl sub_080042AC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803DAE4
sub_0803DAE4: @ 0x0803DAE4
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x50]
adds r0, r5, #0
adds r0, #0x74
ldrb r2, [r0]
cmp r2, #0
bne _0803DB3E
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #0
beq _0803DB00
strb r2, [r1]
_0803DB00:
ldr r0, [r5, #0x50]
ldrb r1, [r0, #0x15]
cmp r1, #0xff
beq _0803DB28
adds r2, r4, #0
adds r2, #0x75
ldrb r0, [r2]
cmp r0, #0
bne _0803DB16
movs r0, #1
strb r0, [r2]
_0803DB16:
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _0803DB54
strb r1, [r4, #0x15]
lsrs r1, r1, #3
adds r0, r4, #0
bl sub_080042AC
b _0803DB54
_0803DB28:
adds r1, r4, #0
adds r1, #0x75
ldrb r0, [r1]
cmp r0, #0
beq _0803DB54
strb r2, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0803DB54
_0803DB3E:
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #0
bne _0803DB54
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
movs r1, #2
bl sub_080042AC
_0803DB54:
ldrb r1, [r5, #0x18]
lsls r1, r1, #0x1e
lsrs r1, r1, #0x1e
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r5, #0
adds r0, #0x62
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
ldr r0, [r5, #0x50]
movs r3, #0x80
lsls r3, r3, #0xa
adds r1, r4, #0
movs r2, #0
bl PositionRelative
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_0803DB88
sub_0803DB88: @ 0x0803DB88
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x74
strb r1, [r2]
movs r0, #0xff
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x63
movs r0, #1
rsbs r0, r0, #0
strb r0, [r1]
ldrb r1, [r2]
adds r0, r4, #0
bl sub_080042AC
adds r0, r4, #0
bl sub_0803DC0C
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803DBB8
sub_0803DBB8: @ 0x0803DBB8
push {r4, lr}
adds r4, r0, #0
ldr r2, [r4, #0x50]
ldrb r0, [r2, #0x15]
cmp r0, #0xff
beq _0803DBE8
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #0
bne _0803DBD2
movs r0, #1
strb r0, [r1]
_0803DBD2:
ldrb r0, [r2, #0x15]
lsls r1, r0, #0x18
ldrb r2, [r4, #0x15]
cmp r0, r2
beq _0803DC02
strb r0, [r4, #0x15]
lsrs r1, r1, #0x1b
adds r0, r4, #0
bl sub_080042AC
b _0803DC02
_0803DBE8:
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #0
beq _0803DC02
movs r0, #0
strb r0, [r1]
movs r0, #0xff
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #2
bl sub_080042AC
_0803DC02:
adds r0, r4, #0
bl sub_0803DC0C
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803DC0C
sub_0803DC0C: @ 0x0803DC0C
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r5, [r4, #0xe]
lsls r5, r5, #1
ldr r1, _0803DC54 @ =gUnk_080D04C8
adds r5, r5, r1
ldrb r2, [r0, #0x18]
lsls r2, r2, #0x1e
lsrs r2, r2, #0x1e
ldrb r3, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r3
orrs r1, r2
strb r1, [r4, #0x18]
adds r1, r0, #0
adds r1, #0x62
ldrb r1, [r1]
adds r2, r4, #0
adds r2, #0x62
strb r1, [r2]
movs r2, #0
ldrsb r2, [r5, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r5, r3]
adds r3, #1
lsls r3, r3, #0x10
adds r1, r4, #0
bl PositionRelative
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
_0803DC54: .4byte gUnk_080D04C8
thumb_func_start sub_0803DC58
sub_0803DC58: @ 0x0803DC58
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x30
beq _0803DC66
b _0803DD74
_0803DC66:
ldr r5, [r4, #0x50]
adds r2, r4, #0
adds r2, #0x77
movs r7, #0
strb r7, [r2]
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
mov ip, r0
ands r0, r1
adds r6, r2, #0
cmp r0, #0
beq _0803DD20
ldr r0, _0803DCE4 @ =gUnk_080D04D0
adds r3, r5, #0
adds r3, #0x86
ldrb r2, [r3]
adds r0, r2, r0
adds r1, r4, #0
adds r1, #0x45
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bls _0803DCFA
adds r0, r2, #1
strb r0, [r3]
movs r3, #0xff
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bls _0803DCF0
ldrb r2, [r4, #0x10]
movs r1, #0x7f
adds r0, r1, #0
ands r0, r2
strb r0, [r4, #0x10]
movs r0, #7
strb r0, [r5, #0xc]
ldrb r0, [r5, #0x10]
ands r1, r0
strb r1, [r5, #0x10]
mov r2, ip
strb r2, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x62
strb r7, [r0]
ldrb r0, [r5, #0x15]
orrs r0, r3
strb r0, [r5, #0x15]
strb r7, [r4, #0xe]
ldr r0, _0803DCE8 @ =0x80100000
bl PlaySFX
ldr r0, _0803DCEC @ =gUnk_02033A90
movs r2, #0x86
lsls r2, r2, #4
adds r1, r0, r2
adds r2, #4
adds r0, r0, r2
ldr r0, [r0]
str r0, [r1]
b _0803DD74
.align 2, 0
_0803DCE4: .4byte gUnk_080D04D0
_0803DCE8: .4byte 0x80100000
_0803DCEC: .4byte gUnk_02033A90
_0803DCF0:
movs r0, #1
strb r0, [r4, #0xe]
ldrb r0, [r6]
orrs r0, r3
strb r0, [r6]
_0803DCFA:
adds r0, r4, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _0803DD20
ldr r0, _0803DD50 @ =0x00000127
bl PlaySFX
movs r0, #0xc
movs r1, #1
bl sub_08080964
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0803DD26
movs r0, #0x48
strb r0, [r4, #0xe]
_0803DD20:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803DD74
_0803DD26:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0803DD74
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x2f
strb r0, [r1]
adds r1, #0x35
movs r0, #1
strb r0, [r1]
ldrb r0, [r6]
cmp r0, #0
bne _0803DD54
adds r1, r5, #0
adds r1, #0x74
movs r0, #0xf0
b _0803DD64
.align 2, 0
_0803DD50: .4byte 0x00000127
_0803DD54:
adds r1, r5, #0
adds r1, #0x74
movs r0, #0x70
strb r0, [r1]
adds r1, r4, #0
adds r1, #0x45
ldrb r0, [r1]
orrs r0, r2
_0803DD64:
strb r0, [r1]
movs r0, #1
strb r0, [r5, #0xc]
strb r0, [r5, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_0803DD74:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803DD78
sub_0803DD78: @ 0x0803DD78
push {r4, r5, lr}
adds r4, r0, #0
bl Random
movs r1, #0x7c
ands r1, r0
lsrs r2, r1, #2
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #1
beq _0803DDFE
cmp r0, #1
bgt _0803DD9A
cmp r0, #0
beq _0803DDA0
b _0803DDB6
_0803DD9A:
cmp r0, #2
beq _0803DE5C
b _0803DDB6
_0803DDA0:
adds r0, r4, #0
adds r0, #0x80
ldrb r1, [r0]
cmp r1, #0
bne _0803DDBC
subs r0, #0xb
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x77
movs r0, #0x50
strb r0, [r1]
_0803DDB6:
adds r5, r4, #0
adds r5, #0x83
b _0803DED0
_0803DDBC:
adds r0, r4, #0
adds r0, #0x83
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #5
bls _0803DDCA
b _0803DED0
_0803DDCA:
lsls r0, r1, #2
ldr r1, _0803DDD4 @ =_0803DDD8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803DDD4: .4byte _0803DDD8
_0803DDD8: @ jump table
.4byte _0803DDF0 @ case 0
.4byte _0803DEC2 @ case 1
.4byte _0803DDF0 @ case 2
.4byte _0803DEC2 @ case 3
.4byte _0803DDF0 @ case 4
.4byte _0803DEC2 @ case 5
_0803DDF0:
adds r1, r4, #0
adds r1, #0x75
movs r0, #0
strb r0, [r1]
adds r1, #2
movs r0, #0x50
b _0803DECE
_0803DDFE:
adds r0, r4, #0
adds r0, #0x83
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #5
bhi _0803DED0
lsls r0, r1, #2
ldr r1, _0803DE14 @ =_0803DE18
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803DE14: .4byte _0803DE18
_0803DE18: @ jump table
.4byte _0803DE98 @ case 0
.4byte _0803DEC2 @ case 1
.4byte _0803DE30 @ case 2
.4byte _0803DEC2 @ case 3
.4byte _0803DE46 @ case 4
.4byte _0803DEC2 @ case 5
_0803DE30:
movs r1, #8
ands r1, r2
cmp r1, #0
bne _0803DEC2
adds r0, r4, #0
adds r0, #0x75
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x77
movs r0, #0x50
b _0803DECE
_0803DE46:
movs r0, #8
ands r2, r0
cmp r2, #0
beq _0803DE98
adds r1, r4, #0
adds r1, #0x75
movs r0, #0
strb r0, [r1]
adds r1, #2
movs r0, #0x50
b _0803DECE
_0803DE5C:
adds r0, r4, #0
adds r0, #0x83
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #5
bhi _0803DED0
lsls r0, r1, #2
ldr r1, _0803DE74 @ =_0803DE78
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803DE74: .4byte _0803DE78
_0803DE78: @ jump table
.4byte _0803DE98 @ case 0
.4byte _0803DEC2 @ case 1
.4byte _0803DE90 @ case 2
.4byte _0803DEC2 @ case 3
.4byte _0803DEA6 @ case 4
.4byte _0803DEC2 @ case 5
_0803DE90:
movs r0, #0xf
ands r2, r0
cmp r2, #2
bls _0803DEC2
_0803DE98:
adds r0, r4, #0
adds r0, #0x75
movs r1, #1
strb r1, [r0]
adds r0, #2
strb r1, [r0]
b _0803DED0
_0803DEA6:
cmp r2, #9
bls _0803DEC2
adds r1, r4, #0
adds r1, #0x75
movs r0, #2
strb r0, [r1]
bl Random
movs r1, #1
ands r0, r1
adds r0, #2
adds r1, r4, #0
adds r1, #0x77
b _0803DECE
_0803DEC2:
adds r1, r4, #0
adds r1, #0x75
movs r0, #0
strb r0, [r1]
adds r1, #2
movs r0, #1
_0803DECE:
strb r0, [r1]
_0803DED0:
ldrb r0, [r5]
adds r0, #1
movs r1, #6
bl __modsi3
strb r0, [r5]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803DEE0
sub_0803DEE0: @ 0x0803DEE0
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #2
bl Random
movs r1, #0xf8
ands r1, r0
lsrs r2, r1, #3
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
beq _0803DFB8
adds r0, r4, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #1
beq _0803DF28
cmp r0, #1
bgt _0803DF0E
cmp r0, #0
beq _0803DF14
b _0803DFB8
_0803DF0E:
cmp r0, #2
beq _0803DF68
b _0803DFB8
_0803DF14:
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
movs r5, #1
ands r5, r1
adds r1, #1
movs r2, #3
ands r1, r2
strb r1, [r0]
b _0803DFB8
_0803DF28:
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r4, r0, #0
cmp r1, #4
bhi _0803DFAC
lsls r0, r1, #2
ldr r1, _0803DF40 @ =_0803DF44
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803DF40: .4byte _0803DF44
_0803DF44: @ jump table
.4byte _0803DF9E @ case 0
.4byte _0803DF58 @ case 1
.4byte _0803DF9E @ case 2
.4byte _0803DF58 @ case 3
.4byte _0803DF5C @ case 4
_0803DF58:
movs r5, #1
b _0803DFAC
_0803DF5C:
movs r0, #8
ands r2, r0
movs r5, #0
cmp r2, #0
beq _0803DFAC
b _0803DF9E
_0803DF68:
adds r0, r4, #0
adds r0, #0x82
ldrb r1, [r0]
adds r4, r0, #0
cmp r1, #4
bhi _0803DFAC
lsls r0, r1, #2
ldr r1, _0803DF80 @ =_0803DF84
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803DF80: .4byte _0803DF84
_0803DF84: @ jump table
.4byte _0803DF9E @ case 0
.4byte _0803DF98 @ case 1
.4byte _0803DFA2 @ case 2
.4byte _0803DF9E @ case 3
.4byte _0803DFAA @ case 4
_0803DF98:
movs r5, #0
cmp r2, #5
bls _0803DFAC
_0803DF9E:
movs r5, #3
b _0803DFAC
_0803DFA2:
movs r5, #0
cmp r2, #9
bhi _0803DFAC
b _0803DF9E
_0803DFAA:
movs r5, #0
_0803DFAC:
ldrb r0, [r4]
adds r0, #1
movs r1, #5
bl __modsi3
strb r0, [r4]
_0803DFB8:
adds r0, r5, #0
pop {r4, r5, pc}
thumb_func_start sub_0803DFBC
sub_0803DFBC: @ 0x0803DFBC
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _0803DFCE
ldr r0, [r4, #0x2c]
str r0, [r4, #0x78]
ldr r0, [r4, #0x30]
str r0, [r4, #0x7c]
_0803DFCE:
adds r5, r4, #0
adds r5, #0x76
ldrb r0, [r5]
cmp r0, #0
bne _0803DFFC
ldrb r0, [r4, #0x15]
cmp r0, #0xff
beq _0803E000
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
bne _0803E000
adds r0, r4, #0
bl sub_08049EE4
movs r1, #0x10
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r4, #0x15]
movs r0, #0x10
b _0803DFFE
_0803DFFC:
subs r0, #1
_0803DFFE:
strb r0, [r5]
_0803E000:
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _0803E022
ldrb r0, [r4, #0x14]
adds r0, #1
movs r1, #3
ands r0, r1
strb r0, [r4, #0x14]
ldr r1, _0803E024 @ =gUnk_080D04D3
ldrb r0, [r4, #0x14]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x62
strb r1, [r0]
_0803E022:
pop {r4, r5, pc}
.align 2, 0
_0803E024: .4byte gUnk_080D04D3
thumb_func_start sub_0803E028
sub_0803E028: @ 0x0803E028
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #0
adds r0, #0x75
ldrb r0, [r0]
cmp r0, #2
beq _0803E046
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _0803E046
movs r0, #0
b _0803E082
_0803E046:
adds r0, r4, #0
adds r0, #0x77
ldrb r0, [r0]
cmp r0, #1
bne _0803E080
ldr r2, _0803E084 @ =gRoomControls
ldrh r0, [r2, #6]
adds r1, r0, #0
adds r1, #0x58
ldr r0, _0803E088 @ =gLinkEntity
movs r3, #0x2e
ldrsh r0, [r0, r3]
cmp r1, r0
bgt _0803E080
ldrh r2, [r2, #8]
adds r1, r2, #0
adds r1, #0x58
cmp r1, r0
bgt _0803E080
adds r1, r2, #0
adds r1, #0xf8
cmp r1, r0
blt _0803E080
adds r1, r4, #0
adds r1, #0x81
ldrb r0, [r1]
adds r0, #5
strb r0, [r1]
movs r5, #1
_0803E080:
adds r0, r5, #0
_0803E082:
pop {r4, r5, pc}
.align 2, 0
_0803E084: .4byte gRoomControls
_0803E088: .4byte gLinkEntity
thumb_func_start sub_0803E08C
sub_0803E08C: @ 0x0803E08C
push {r4, r5, lr}
adds r5, r0, #0
bl sub_0803E4A0
cmp r0, #0
beq _0803E0AA
ldrb r0, [r5, #0x10]
movs r1, #0x7f
ands r1, r0
movs r0, #0
strb r1, [r5, #0x10]
adds r1, r5, #0
adds r1, #0x45
strb r0, [r1]
str r0, [r5, #0x50]
_0803E0AA:
ldr r4, _0803E0C0 @ =gUnk_080D0648
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0803E0C0: .4byte gUnk_080D0648
thumb_func_start sub_0803E0C4
sub_0803E0C4: @ 0x0803E0C4
push {lr}
ldr r2, _0803E0D8 @ =gUnk_080D0660
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803E0D8: .4byte gUnk_080D0660
thumb_func_start sub_0803E0DC
sub_0803E0DC: @ 0x0803E0DC
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x80
bne _0803E16C
adds r0, r5, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _0803E158
movs r0, #5
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r6, #0x7f
adds r0, r6, #0
ands r0, r1
strb r0, [r5, #0x10]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldr r3, _0803E154 @ =gLinkEntity
ldrb r1, [r3, #0x10]
adds r0, r6, #0
ands r0, r1
strb r0, [r3, #0x10]
ldrb r2, [r5, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r4, [r3, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r4
orrs r0, r2
strb r0, [r3, #0x1b]
ldrb r0, [r5, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r3, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r3, #0x19]
adds r0, r5, #0
bl sub_0803E444
movs r0, #2
bl sub_08078A90
ldr r2, [r5, #0x50]
cmp r2, #0
beq _0803E16C
ldrb r1, [r2, #0x10]
adds r0, r6, #0
ands r0, r1
b _0803E16A
.align 2, 0
_0803E154: .4byte gLinkEntity
_0803E158:
ldr r2, _0803E178 @ =gLinkState
ldr r0, [r2, #0x30]
ldr r1, _0803E17C @ =0xFFFFFEFF
ands r0, r1
str r0, [r2, #0x30]
ldr r2, _0803E180 @ =gLinkEntity
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
_0803E16A:
strb r0, [r2, #0x10]
_0803E16C:
ldr r1, _0803E184 @ =gUnk_080D0648
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_0803E178: .4byte gLinkState
_0803E17C: .4byte 0xFFFFFEFF
_0803E180: .4byte gLinkEntity
_0803E184: .4byte gUnk_080D0648
thumb_func_start sub_0803E188
sub_0803E188: @ 0x0803E188
push {lr}
adds r3, r0, #0
ldr r2, [r3, #0x50]
cmp r2, #0
beq _0803E19C
ldrb r0, [r2, #0xf]
subs r0, #1
movs r1, #0
strb r0, [r2, #0xf]
str r1, [r3, #0x50]
_0803E19C:
adds r0, r3, #0
bl sub_0804A7D4
pop {pc}
thumb_func_start nullsub_19
nullsub_19: @ 0x0803E1A4
bx lr
.align 2, 0
thumb_func_start sub_0803E1A8
sub_0803E1A8: @ 0x0803E1A8
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _0803E1F8
movs r0, #0x4b
movs r1, #1
bl CreateEnemy
cmp r0, #0
beq _0803E250
str r5, [r0, #0x50]
str r0, [r5, #0x54]
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _0803E1D8
movs r0, #1
strb r0, [r5, #0xc]
ldr r0, _0803E1D4 @ =0x0000FFE8
strh r0, [r5, #0x36]
b _0803E1E8
.align 2, 0
_0803E1D4: .4byte 0x0000FFE8
_0803E1D8:
movs r0, #9
strb r0, [r5, #0xc]
ldr r0, _0803E1F4 @ =0x0000FF80
strh r0, [r5, #0x36]
adds r1, r5, #0
adds r1, #0x3b
movs r0, #1
strb r0, [r1]
_0803E1E8:
adds r0, r5, #0
movs r1, #0
bl sub_08004260
b _0803E250
.align 2, 0
_0803E1F4: .4byte 0x0000FF80
_0803E1F8:
movs r0, #8
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
adds r1, r5, #0
adds r1, #0x63
movs r0, #1
strb r0, [r1]
ldr r4, [r5, #0x50]
ldrb r2, [r4, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r4, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x19]
adds r2, r5, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2]
ldr r0, [r5, #0x50]
ldr r3, _0803E254 @ =0xFFFF0000
adds r1, r5, #0
movs r2, #0
bl PositionRelative
adds r0, r5, #0
movs r1, #1
bl sub_08004260
_0803E250:
pop {r4, r5, pc}
.align 2, 0
_0803E254: .4byte 0xFFFF0000
thumb_func_start sub_0803E258
sub_0803E258: @ 0x0803E258
push {r4, lr}
adds r4, r0, #0
bl sub_0803E480
adds r0, r4, #0
movs r1, #0
movs r2, #8
bl sub_08049F64
cmp r0, #0
beq _0803E280
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xa
strb r0, [r4, #0xe]
ldr r0, [r4, #0x54]
movs r1, #2
bl sub_08004260
b _0803E29C
_0803E280:
ldr r0, _0803E2A4 @ =gUnk_020000B0
ldr r1, [r0]
cmp r1, #0
beq _0803E29C
adds r0, r4, #0
bl sub_080045C4
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
adds r0, r4, #0
bl sub_0806F69C
_0803E29C:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_0803E2A4: .4byte gUnk_020000B0
thumb_func_start sub_0803E2A8
sub_0803E2A8: @ 0x0803E2A8
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
cmp r0, #0
beq _0803E2B8
subs r0, #1
strb r0, [r1, #0xe]
b _0803E2C8
_0803E2B8:
ldrh r0, [r1, #0x36]
adds r0, #1
strh r0, [r1, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803E2C8
movs r0, #3
strb r0, [r1, #0xc]
_0803E2C8:
adds r0, r1, #0
bl sub_08004274
pop {pc}
thumb_func_start sub_0803E2D0
sub_0803E2D0: @ 0x0803E2D0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x54]
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803E312
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x18
rsbs r1, r1, #0
cmp r0, r1
bgt _0803E30C
movs r0, #4
strb r0, [r4, #0xc]
bl Random
movs r1, #0xf
ands r0, r1
adds r0, #0xf
strb r0, [r4, #0xe]
ldr r0, [r4, #0x54]
movs r1, #1
bl sub_08004260
_0803E30C:
adds r0, r4, #0
bl sub_08004274
_0803E312:
pop {r4, pc}
thumb_func_start sub_0803E314
sub_0803E314: @ 0x0803E314
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803E332
movs r0, #1
strb r0, [r4, #0xc]
ldr r1, _0803E33C @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
strb r0, [r4, #0x15]
_0803E332:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_0803E33C: .4byte gLinkEntity
thumb_func_start sub_0803E340
sub_0803E340: @ 0x0803E340
push {r4, lr}
adds r4, r0, #0
bl sub_0803E444
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803E352
subs r0, #1
b _0803E36A
_0803E352:
ldrh r0, [r4, #0x36]
subs r0, #1
strh r0, [r4, #0x36]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
movs r1, #0x18
rsbs r1, r1, #0
cmp r0, r1
bgt _0803E36C
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0x14
_0803E36A:
strb r0, [r4, #0xe]
_0803E36C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803E370
sub_0803E370: @ 0x0803E370
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803E38E
movs r0, #7
strb r0, [r1, #0xc]
movs r0, #0x10
strb r0, [r1, #0x15]
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r1, #0x24]
_0803E38E:
adds r0, r1, #0
bl sub_0803E444
pop {pc}
.align 2, 0
thumb_func_start sub_0803E398
sub_0803E398: @ 0x0803E398
push {r4, lr}
adds r4, r0, #0
bl sub_0803E444
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_0803E4D8
ldr r1, _0803E3CC @ =gRoomControls
ldrh r0, [r1, #8]
ldrh r1, [r1, #0x20]
adds r0, r0, r1
subs r0, #0x10
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bgt _0803E3C8
bl sub_0805E5A8
ldr r0, _0803E3D0 @ =gUnk_0813AB94
bl sub_08080840
_0803E3C8:
pop {r4, pc}
.align 2, 0
_0803E3CC: .4byte gRoomControls
_0803E3D0: .4byte gUnk_0813AB94
thumb_func_start sub_0803E3D4
sub_0803E3D4: @ 0x0803E3D4
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _0803E3E4
bl sub_0805E780
_0803E3E4:
ldr r0, [r4, #0x50]
ldr r3, _0803E3F8 @ =0xFFFF0000
adds r1, r4, #0
movs r2, #0
bl PositionRelative
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_0803E3F8: .4byte 0xFFFF0000
thumb_func_start sub_0803E3FC
sub_0803E3FC: @ 0x0803E3FC
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803E438 @ =gLinkEntity
ldrh r0, [r1, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r1, #0x32]
strh r0, [r4, #0x32]
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #8
rsbs r0, r0, #0
cmp r1, r0
bge _0803E43C
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #2
beq _0803E42E
movs r0, #0
strb r0, [r4, #0xe]
ldr r0, [r4, #0x54]
movs r1, #2
bl sub_08004260
_0803E42E:
adds r0, r4, #0
bl sub_0803E2A8
b _0803E442
.align 2, 0
_0803E438: .4byte gLinkEntity
_0803E43C:
adds r0, r2, #0
adds r0, #8
strh r0, [r4, #0x36]
_0803E442:
pop {r4, pc}
thumb_func_start sub_0803E444
sub_0803E444: @ 0x0803E444
push {r4, lr}
adds r4, r0, #0
bl sub_08077B2C
ldr r2, _0803E478 @ =gLinkState
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]
ldr r1, [r4, #0x4c]
movs r3, #2
rsbs r3, r3, #0
adds r0, r4, #0
movs r2, #0
bl sub_0806FA90
ldr r1, _0803E47C @ =gLinkEntity
adds r1, #0x63
ldrb r0, [r1]
adds r0, #0xe
strb r0, [r1]
pop {r4, pc}
.align 2, 0
_0803E478: .4byte gLinkState
_0803E47C: .4byte gLinkEntity
thumb_func_start sub_0803E480
sub_0803E480: @ 0x0803E480
push {lr}
adds r3, r0, #0
adds r2, r3, #0
adds r2, #0x78
ldrh r1, [r2]
movs r0, #0x96
lsls r0, r0, #3
cmp r1, r0
bls _0803E49A
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r3, #0x24]
b _0803E49E
_0803E49A:
adds r0, r1, #1
strh r0, [r2]
_0803E49E:
pop {pc}
thumb_func_start sub_0803E4A0
sub_0803E4A0: @ 0x0803E4A0
push {lr}
adds r1, r0, #0
ldr r0, _0803E4B8 @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0
beq _0803E4C6
ldr r1, [r1, #0x50]
cmp r1, #0
bne _0803E4BC
movs r0, #0
b _0803E4D6
.align 2, 0
_0803E4B8: .4byte gUnk_030010A0
_0803E4BC:
adds r0, r1, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0803E4CA
_0803E4C6:
movs r0, #1
b _0803E4D6
_0803E4CA:
movs r2, #0
ldr r0, [r1, #4]
cmp r0, #0
bne _0803E4D4
movs r2, #1
_0803E4D4:
adds r0, r2, #0
_0803E4D6:
pop {pc}
thumb_func_start sub_0803E4D8
sub_0803E4D8: @ 0x0803E4D8
push {r4, r5, lr}
movs r2, #0x2e
ldrsh r1, [r0, r2]
ldr r3, _0803E51C @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r4, r1, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r0, r1]
ldrh r1, [r3, #8]
subs r1, #8
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
ldr r0, _0803E520 @ =gLinkEntity
adds r5, r0, #0
adds r5, #0x38
ldrb r1, [r5]
adds r0, r4, #0
bl sub_080002E0
cmp r0, #0xff
beq _0803E518
ldr r0, _0803E524 @ =0x00004074
ldrb r2, [r5]
adds r1, r4, #0
bl sub_0800015E
_0803E518:
pop {r4, r5, pc}
.align 2, 0
_0803E51C: .4byte gRoomControls
_0803E520: .4byte gLinkEntity
_0803E524: .4byte 0x00004074
thumb_func_start sub_0803E528
sub_0803E528: @ 0x0803E528
push {lr}
ldr r1, _0803E534 @ =gUnk_080D06E0
bl sub_0800129E
pop {pc}
.align 2, 0
_0803E534: .4byte gUnk_080D06E0
thumb_func_start sub_0803E538
sub_0803E538: @ 0x0803E538
push {lr}
ldr r2, _0803E54C @ =gUnk_080D06F8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803E54C: .4byte gUnk_080D06F8
thumb_func_start sub_0803E550
sub_0803E550: @ 0x0803E550
push {lr}
ldr r1, _0803E55C @ =gUnk_080D06E0
bl sub_0804AA30
pop {pc}
.align 2, 0
_0803E55C: .4byte gUnk_080D06E0
thumb_func_start sub_0803E560
sub_0803E560: @ 0x0803E560
push {r4, lr}
adds r4, r0, #0
bl sub_08001324
thumb_func_start sub_0803E568
sub_0803E568: @ 0x0803E568
adds r0, r4, #0
bl sub_0803E538
pop {r4, pc}
thumb_func_start sub_0803E570
sub_0803E570: @ 0x0803E570
push {lr}
movs r1, #0xff
movs r2, #0x57
bl sub_0804A7E0
pop {pc}
thumb_func_start nullsub_20
nullsub_20: @ 0x0803E57C
bx lr
.align 2, 0
thumb_func_start sub_0803E580
sub_0803E580: @ 0x0803E580
push {r4, r5, lr}
adds r5, r0, #0
bl sub_0804A720
adds r0, r5, #0
movs r1, #0x19
movs r2, #0
bl sub_0804A98C
cmp r0, #0
beq _0803E5E4
str r5, [r0, #0x50]
str r0, [r5, #0x54]
ldrb r1, [r5, #0x10]
movs r0, #0x80
movs r4, #0
orrs r0, r1
strb r0, [r5, #0x10]
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0x14]
adds r0, r5, #0
adds r0, #0x7b
strb r4, [r0]
adds r0, #1
strb r4, [r0]
adds r1, r5, #0
adds r1, #0x7e
movs r0, #0x20
strb r0, [r1]
adds r1, #1
movs r0, #0xfe
strb r0, [r1]
ldrb r1, [r5, #0x14]
lsls r1, r1, #2
adds r0, r5, #0
bl sub_080042AC
adds r0, r5, #0
bl sub_0803E86C
_0803E5E4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803E5E8
sub_0803E5E8: @ 0x0803E5E8
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
subs r1, #0xa
strb r1, [r0]
adds r0, r4, #0
bl sub_0803E9A4
adds r0, r4, #0
bl sub_0803E9D4
cmp r0, #0
bne _0803E61A
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803E61A
adds r0, r4, #0
bl sub_0803E8CC
_0803E61A:
pop {r4, pc}
thumb_func_start sub_0803E61C
sub_0803E61C: @ 0x0803E61C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
subs r1, #0xa
strb r1, [r0]
adds r0, r4, #0
bl sub_0803E9A4
adds r0, r4, #0
bl sub_0803E9D4
cmp r0, #0
bne _0803E66A
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _0803E654
adds r0, r4, #0
bl sub_080AEF88
cmp r0, #0
bne _0803E654
adds r0, r4, #0
bl sub_0803E86C
b _0803E66A
_0803E654:
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803E66A
adds r0, r4, #0
bl sub_0803E92C
_0803E66A:
pop {r4, pc}
thumb_func_start sub_0803E66C
sub_0803E66C: @ 0x0803E66C
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0x10
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0x21
bhi _0803E68E
adds r0, #1
strb r0, [r1]
_0803E68E:
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803E6A4
adds r0, r4, #0
bl sub_0803EA64
cmp r0, #0
bne _0803E6B0
_0803E6A4:
movs r0, #4
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x7b
movs r0, #0
strb r0, [r1]
_0803E6B0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803E6B4
sub_0803E6B4: @ 0x0803E6B4
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0x20
bls _0803E6D8
subs r0, #1
strb r0, [r1]
b _0803E6DE
_0803E6D8:
adds r0, r4, #0
bl sub_0803E86C
_0803E6DE:
pop {r4, pc}
thumb_func_start sub_0803E6E0
sub_0803E6E0: @ 0x0803E6E0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
subs r1, #0xc
strb r1, [r0]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
subs r0, #4
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bgt _0803E718
movs r0, #0
strb r0, [r1]
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x14]
adds r1, #0x20
adds r0, r4, #0
bl sub_080042AC
_0803E718:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803E71C
sub_0803E71C: @ 0x0803E71C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
bne _0803E756
movs r0, #7
strb r0, [r2, #0xc]
movs r0, #1
strb r0, [r2, #0xe]
ldr r1, _0803E758 @ =gUnk_080D0724
ldrb r0, [r2, #0x14]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r2, #0
adds r0, #0x7c
strb r1, [r0]
subs r0, #1
strb r3, [r0]
adds r1, r2, #0
adds r1, #0x7f
movs r0, #0xf6
strb r0, [r1]
adds r0, #0x65
bl sub_08004488
_0803E756:
pop {pc}
.align 2, 0
_0803E758: .4byte gUnk_080D0724
thumb_func_start sub_0803E75C
sub_0803E75C: @ 0x0803E75C
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803E774
adds r0, r2, #0
bl sub_080042B8
b _0803E7B0
_0803E774:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
adds r1, r2, #0
adds r1, #0x7f
cmp r0, #0
bne _0803E78E
movs r0, #2
strb r0, [r2, #0xe]
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_0803E78E:
ldrb r0, [r1]
cmp r0, #0
beq _0803E7A0
adds r1, r2, #0
adds r1, #0x7e
ldrb r0, [r1]
adds r0, #5
strb r0, [r1]
b _0803E7B0
_0803E7A0:
movs r0, #8
strb r0, [r2, #0xc]
movs r0, #0x1e
strb r0, [r2, #0xe]
movs r0, #8
movs r1, #0
bl sub_08080964
_0803E7B0:
pop {pc}
.align 2, 0
thumb_func_start sub_0803E7B4
sub_0803E7B4: @ 0x0803E7B4
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803E7C8
movs r0, #9
strb r0, [r1, #0xc]
_0803E7C8:
pop {pc}
.align 2, 0
thumb_func_start sub_0803E7CC
sub_0803E7CC: @ 0x0803E7CC
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x7e
ldrb r0, [r1]
subs r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xa
bhi _0803E806
movs r0, #0xa
strb r0, [r2, #0xc]
movs r0, #0x5a
strb r0, [r2, #0xe]
ldrb r0, [r2, #0x14]
lsls r0, r0, #3
strb r0, [r2, #0x15]
subs r1, #2
movs r0, #0
strb r0, [r1]
adds r1, #3
movs r0, #0xfe
strb r0, [r1]
adds r0, r2, #0
movs r1, #0x10
bl sub_0803E94C
b _0803E814
_0803E806:
cmp r0, #0x12
bhi _0803E814
ldr r2, [r2, #0x54]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
_0803E814:
pop {pc}
.align 2, 0
thumb_func_start sub_0803E818
sub_0803E818: @ 0x0803E818
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803E840
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803E868
ldr r0, [r4, #0x54]
ldrb r1, [r0, #0x10]
movs r2, #0x80
orrs r1, r2
strb r1, [r0, #0x10]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
b _0803E868
_0803E840:
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1f
bls _0803E868
adds r0, r4, #0
bl sub_0803E86C
_0803E868:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803E86C
sub_0803E86C: @ 0x0803E86C
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803E898
adds r0, r4, #0
movs r1, #0x50
bl sub_0803EAD0
cmp r0, #0
beq _0803E898
ldr r0, _0803E8C4 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
_0803E898:
movs r0, #1
strb r0, [r4, #0xc]
bl Random
ldr r2, _0803E8C8 @ =gUnk_080D0728
movs r1, #3
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r1, [r1]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
adds r1, r4, #0
adds r1, #0x7a
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
pop {r4, pc}
.align 2, 0
_0803E8C4: .4byte gUnk_020000B0
_0803E8C8: .4byte gUnk_080D0728
thumb_func_start sub_0803E8CC
sub_0803E8CC: @ 0x0803E8CC
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 _0803E8F4
movs r0, #3
ands r0, r5
cmp r0, #0
beq _0803E8F4
adds r0, r4, #0
bl sub_08049EE4
adds r0, #4
movs r1, #0x18
b _0803E8F8
_0803E8F4:
movs r1, #0x18
adds r0, r5, #0
_0803E8F8:
ands r0, r1
strb r0, [r4, #0x15]
movs r0, #2
strb r0, [r4, #0xc]
ldr r2, _0803E928 @ =gUnk_080D0730
lsrs r0, r5, #0x10
movs r1, #3
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r1, [r0]
adds r0, r4, #0
adds r0, #0x78
strh r1, [r0]
adds r1, r4, #0
adds r1, #0x7a
movs r0, #4
strb r0, [r1]
adds r0, r4, #0
movs r1, #0x10
bl sub_0803E94C
pop {r4, r5, pc}
.align 2, 0
_0803E928: .4byte gUnk_080D0730
thumb_func_start sub_0803E92C
sub_0803E92C: @ 0x0803E92C
push {r4, lr}
adds r4, r0, #0
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _0803E944
adds r0, r4, #0
bl sub_0803E86C
b _0803E94A
_0803E944:
adds r0, r4, #0
bl sub_0803E8CC
_0803E94A:
pop {r4, pc}
thumb_func_start sub_0803E94C
sub_0803E94C: @ 0x0803E94C
push {r4, r5, r6, lr}
adds r3, r0, #0
adds r6, r1, #0
ldrb r2, [r3, #0x15]
adds r0, r2, #4
movs r1, #0x18
ands r0, r1
asrs r4, r0, #3
adds r0, r3, #0
adds r0, #0x58
ldrb r1, [r0]
movs r0, #0x10
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, r6
bne _0803E988
movs r0, #7
ands r0, r2
ldrb r5, [r3, #0x14]
cmp r0, #4
bne _0803E984
lsrs r0, r2, #3
subs r0, r5, r0
movs r1, #3
ands r0, r1
cmp r0, #1
ble _0803E9A2
_0803E984:
cmp r4, r5
beq _0803E9A2
_0803E988:
strb r4, [r3, #0x14]
adds r0, r3, #0
adds r0, #0x58
ldrb r1, [r0]
movs r0, #3
ands r0, r1
adds r0, r6, r0
lsls r1, r4, #2
adds r4, r0, r1
adds r0, r3, #0
adds r1, r4, #0
bl sub_080042AC
_0803E9A2:
pop {r4, r5, r6, pc}
thumb_func_start sub_0803E9A4
sub_0803E9A4: @ 0x0803E9A4
push {r4, lr}
adds r2, r0, #0
adds r0, #0x7c
ldrb r0, [r0]
adds r0, #0x20
movs r1, #0xff
ands r0, r1
asrs r4, r0, #6
adds r3, r2, #0
adds r3, #0x58
ldrb r1, [r3]
movs r0, #3
ands r0, r1
cmp r0, r4
beq _0803E9D2
ldrb r1, [r3]
movs r0, #4
rsbs r0, r0, #0
ands r1, r0
adds r1, r4, r1
adds r0, r2, #0
bl sub_080042AC
_0803E9D2:
pop {r4, pc}
thumb_func_start sub_0803E9D4
sub_0803E9D4: @ 0x0803E9D4
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803EA58
adds r0, r4, #0
movs r1, #0x38
bl sub_0803EAD0
cmp r0, #0
beq _0803EA10
movs r0, #3
strb r0, [r4, #0xc]
ldr r0, _0803EA0C @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x7b
movs r0, #1
b _0803EA46
.align 2, 0
_0803EA0C: .4byte gUnk_020000B0
_0803EA10:
adds r0, r4, #0
movs r1, #0x4e
bl sub_0803EAD0
cmp r0, #0
beq _0803EA58
ldr r0, _0803EA54 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
movs r2, #0x12
bl sub_0804A044
adds r2, r0, #0
cmp r2, #0xff
beq _0803EA58
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803EA60
movs r0, #5
strb r0, [r4, #0xc]
strb r2, [r4, #0x15]
movs r0, #4
_0803EA46:
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
movs r0, #1
b _0803EA62
.align 2, 0
_0803EA54: .4byte gUnk_020000B0
_0803EA58:
adds r1, r4, #0
adds r1, #0x7a
movs r0, #4
strb r0, [r1]
_0803EA60:
movs r0, #0
_0803EA62:
pop {r4, pc}
thumb_func_start sub_0803EA64
sub_0803EA64: @ 0x0803EA64
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803EAC4
adds r0, r4, #0
movs r1, #0x4e
bl sub_0803EAD0
cmp r0, #0
beq _0803EAB8
ldr r0, _0803EAB4 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
movs r2, #0x12
bl sub_0804A044
adds r2, r0, #0
cmp r2, #0xff
beq _0803EAB8
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803EAAE
movs r0, #5
strb r0, [r4, #0xc]
strb r2, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
_0803EAAE:
movs r0, #1
b _0803EACE
.align 2, 0
_0803EAB4: .4byte gUnk_020000B0
_0803EAB8:
adds r0, r4, #0
movs r1, #0x38
bl sub_0803EAD0
cmp r0, #0
bne _0803EAAE
_0803EAC4:
adds r1, r4, #0
adds r1, #0x7a
movs r0, #4
strb r0, [r1]
movs r0, #0
_0803EACE:
pop {r4, pc}
thumb_func_start sub_0803EAD0
sub_0803EAD0: @ 0x0803EAD0
push {r4, lr}
adds r3, r1, #0
ldr r1, _0803EAE8 @ =gUnk_020000B0
ldr r2, [r1]
movs r4, #0x2e
ldrsh r1, [r2, r4]
movs r4, #0x32
ldrsh r2, [r2, r4]
subs r2, #4
bl sub_0806FCB8
pop {r4, pc}
.align 2, 0
_0803EAE8: .4byte gUnk_020000B0
thumb_func_start sub_0803EAEC
sub_0803EAEC: @ 0x0803EAEC
push {lr}
ldr r1, _0803EAF8 @ =gUnk_080D0880
bl sub_0800129E
pop {pc}
.align 2, 0
_0803EAF8: .4byte gUnk_080D0880
thumb_func_start sub_0803EAFC
sub_0803EAFC: @ 0x0803EAFC
push {lr}
ldr r2, _0803EB10 @ =gUnk_080D0898
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0803EB10: .4byte gUnk_080D0898
thumb_func_start sub_0803EB14
sub_0803EB14: @ 0x0803EB14
push {lr}
ldr r1, _0803EB20 @ =gUnk_080D0880
bl sub_0804AA30
pop {pc}
.align 2, 0
_0803EB20: .4byte gUnk_080D0880
thumb_func_start sub_0803EB24
sub_0803EB24: @ 0x0803EB24
push {r4, lr}
adds r4, r0, #0
bl sub_08001324
thumb_func_start sub_0803EB2C
sub_0803EB2C: @ 0x0803EB2C
adds r0, r4, #0
bl sub_0803EAFC
pop {r4, pc}
thumb_func_start sub_0803EB34
sub_0803EB34: @ 0x0803EB34
push {lr}
movs r1, #0xff
movs r2, #0x57
bl sub_0804A7E0
pop {pc}
thumb_func_start nullsub_21
nullsub_21: @ 0x0803EB40
bx lr
.align 2, 0
thumb_func_start sub_0803EB44
sub_0803EB44: @ 0x0803EB44
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #0x19
movs r2, #0
bl sub_0804A98C
cmp r0, #0
beq _0803EBB2
str r4, [r0, #0x50]
str r0, [r4, #0x54]
ldrb r1, [r4, #0x10]
movs r0, #0x80
movs r2, #0
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #2
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x7b
strb r2, [r0]
adds r0, #1
strb r2, [r0]
adds r1, r4, #0
adds r1, #0x7e
movs r0, #0x28
strb r0, [r1]
adds r1, #1
movs r0, #0xfe
strb r0, [r1]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x80
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x82
strh r0, [r1]
ldrb r1, [r4, #0x14]
lsls r1, r1, #2
adds r0, r4, #0
bl sub_080042AC
adds r0, r4, #0
bl sub_0803EE8C
_0803EBB2:
pop {r4, pc}
thumb_func_start sub_0803EBB4
sub_0803EBB4: @ 0x0803EBB4
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
subs r1, #0xa
strb r1, [r0]
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _0803EBE4
ldr r0, _0803EC10 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r0, #4
movs r1, #0x18
ands r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
_0803EBE4:
adds r0, r4, #0
bl sub_0803E9A4
adds r0, r4, #0
adds r0, #0x80
ldrh r1, [r0]
adds r0, #2
ldrh r2, [r0]
adds r0, r4, #0
movs r3, #2
bl sub_0806FCB8
cmp r0, #0
bne _0803EC14
movs r0, #4
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0x10
bl sub_0803E94C
b _0803EC24
.align 2, 0
_0803EC10: .4byte gUnk_020000B0
_0803EC14:
adds r0, r4, #0
bl sub_0803EF20
cmp r0, #0
bne _0803EC24
adds r0, r4, #0
bl sub_0803EEA4
_0803EC24:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803EC28
sub_0803EC28: @ 0x0803EC28
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0x10
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0x1c
bls _0803EC4A
subs r0, #1
strb r0, [r1]
_0803EC4A:
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803EC64
movs r0, #3
strb r0, [r4, #0xc]
adds r1, #3
movs r0, #0
strb r0, [r1]
_0803EC64:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803EC68
sub_0803EC68: @ 0x0803EC68
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0x27
bhi _0803EC8C
adds r0, #1
strb r0, [r1]
b _0803EC92
_0803EC8C:
adds r0, r4, #0
bl sub_0803EE8C
_0803EC92:
pop {r4, pc}
thumb_func_start sub_0803EC94
sub_0803EC94: @ 0x0803EC94
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r5, r4, #0
adds r5, #0x80
ldrh r1, [r5]
adds r6, r4, #0
adds r6, #0x82
ldrh r2, [r6]
adds r0, r4, #0
movs r3, #1
bl sub_0806FCB8
cmp r0, #0
beq _0803ECD8
ldrh r0, [r5]
strh r0, [r4, #0x2e]
ldrh r0, [r6]
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_0803EE8C
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
b _0803ED02
_0803ECD8:
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _0803ED02
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
ldrh r2, [r5]
ldrh r3, [r6]
bl sub_080045D4
strb r0, [r4, #0x15]
adds r0, r4, #0
movs r1, #0x10
bl sub_0803E94C
adds r0, r4, #0
bl sub_080AEF88
_0803ED02:
pop {r4, r5, r6, pc}
thumb_func_start sub_0803ED04
sub_0803ED04: @ 0x0803ED04
push {r4, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r1, [r0]
subs r1, #0xc
strb r1, [r0]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
subs r0, #4
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bgt _0803ED3C
movs r0, #0
strb r0, [r1]
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x14]
adds r1, #0x20
adds r0, r4, #0
bl sub_080042AC
_0803ED3C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803ED40
sub_0803ED40: @ 0x0803ED40
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803ED74
movs r0, #7
strb r0, [r2, #0xc]
movs r0, #1
strb r0, [r2, #0xe]
ldr r1, _0803ED78 @ =gUnk_080D08C4
ldrb r0, [r2, #0x14]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r2, #0
adds r0, #0x7c
strb r1, [r0]
adds r1, r2, #0
adds r1, #0x7f
movs r0, #0xf6
strb r0, [r1]
adds r0, #0x65
bl sub_08004488
_0803ED74:
pop {pc}
.align 2, 0
_0803ED78: .4byte gUnk_080D08C4
thumb_func_start sub_0803ED7C
sub_0803ED7C: @ 0x0803ED7C
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0803ED94
adds r0, r2, #0
bl sub_080042B8
b _0803EDD0
_0803ED94:
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
adds r1, r2, #0
adds r1, #0x7f
cmp r0, #0
bne _0803EDAE
movs r0, #2
strb r0, [r2, #0xe]
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
_0803EDAE:
ldrb r0, [r1]
cmp r0, #0
beq _0803EDC0
adds r1, r2, #0
adds r1, #0x7e
ldrb r0, [r1]
adds r0, #5
strb r0, [r1]
b _0803EDD0
_0803EDC0:
movs r0, #8
strb r0, [r2, #0xc]
movs r0, #0x1e
strb r0, [r2, #0xe]
movs r0, #8
movs r1, #0
bl sub_08080964
_0803EDD0:
pop {pc}
.align 2, 0
thumb_func_start sub_0803EDD4
sub_0803EDD4: @ 0x0803EDD4
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803EDE8
movs r0, #9
strb r0, [r1, #0xc]
_0803EDE8:
pop {pc}
.align 2, 0
thumb_func_start sub_0803EDEC
sub_0803EDEC: @ 0x0803EDEC
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x7e
ldrb r0, [r1]
subs r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xa
bhi _0803EE26
movs r0, #0xa
strb r0, [r2, #0xc]
movs r0, #0x3c
strb r0, [r2, #0xe]
ldrb r0, [r2, #0x14]
lsls r0, r0, #3
strb r0, [r2, #0x15]
subs r1, #2
movs r0, #0
strb r0, [r1]
adds r1, #3
movs r0, #0xfe
strb r0, [r1]
adds r0, r2, #0
movs r1, #0x10
bl sub_0803E94C
b _0803EE34
_0803EE26:
cmp r0, #0x12
bhi _0803EE34
ldr r2, [r2, #0x54]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
_0803EE34:
pop {pc}
.align 2, 0
thumb_func_start sub_0803EE38
sub_0803EE38: @ 0x0803EE38
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0803EE60
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803EE88
ldr r0, [r4, #0x54]
ldrb r1, [r0, #0x10]
movs r2, #0x80
orrs r1, r2
strb r1, [r0, #0x10]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
b _0803EE88
_0803EE60:
adds r1, r4, #0
adds r1, #0x7c
ldrb r0, [r1]
subs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
bl sub_0803E9A4
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x27
bls _0803EE88
adds r0, r4, #0
bl sub_0803EE8C
_0803EE88:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803EE8C
sub_0803EE8C: @ 0x0803EE8C
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
adds r2, r0, #0
adds r2, #0x7a
movs r1, #0x1e
strb r1, [r2]
movs r1, #0
bl sub_0803E94C
pop {pc}
.align 2, 0
thumb_func_start sub_0803EEA4
sub_0803EEA4: @ 0x0803EEA4
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803EEF8
adds r0, r4, #0
movs r1, #0x4e
bl sub_0803EF04
cmp r0, #0
beq _0803EEF8
ldr r0, _0803EEF4 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
movs r2, #0x12
bl sub_0804A044
adds r2, r0, #0
cmp r2, #0xff
beq _0803EEF8
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803EF00
movs r0, #5
strb r0, [r4, #0xc]
strb r2, [r4, #0x15]
adds r0, r4, #0
movs r1, #0
bl sub_0803E94C
movs r0, #1
b _0803EF02
.align 2, 0
_0803EEF4: .4byte gUnk_020000B0
_0803EEF8:
adds r1, r4, #0
adds r1, #0x7a
movs r0, #0x1e
strb r0, [r1]
_0803EF00:
movs r0, #0
_0803EF02:
pop {r4, pc}
thumb_func_start sub_0803EF04
sub_0803EF04: @ 0x0803EF04
push {r4, lr}
adds r3, r1, #0
ldr r1, _0803EF1C @ =gUnk_020000B0
ldr r2, [r1]
movs r4, #0x2e
ldrsh r1, [r2, r4]
movs r4, #0x32
ldrsh r2, [r2, r4]
subs r2, #4
bl sub_0806FCB8
pop {r4, pc}
.align 2, 0
_0803EF1C: .4byte gUnk_020000B0
thumb_func_start sub_0803EF20
sub_0803EF20: @ 0x0803EF20
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r6, _0803EF5C @ =gUnk_03003D80
ldr r4, [r6, #4]
cmp r4, r6
beq _0803EF6A
ldr r7, _0803EF60 @ =gUnk_080D08C8
_0803EF2E:
ldrb r0, [r4, #8]
cmp r0, #8
bne _0803EF64
ldrb r0, [r4, #9]
lsls r0, r0, #2
adds r0, r0, r7
ldr r2, [r0]
adds r0, r5, #0
adds r1, r4, #0
bl _call_via_r2
cmp r0, #0
beq _0803EF64
movs r0, #2
strb r0, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x78
movs r0, #0xb4
strh r0, [r1]
adds r1, #3
movs r0, #1
strb r0, [r1]
b _0803EF6C
.align 2, 0
_0803EF5C: .4byte gUnk_03003D80
_0803EF60: .4byte gUnk_080D08C8
_0803EF64:
ldr r4, [r4, #4]
cmp r4, r6
bne _0803EF2E
_0803EF6A:
movs r0, #0
_0803EF6C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803EF70
sub_0803EF70: @ 0x0803EF70
movs r0, #0
bx lr
thumb_func_start sub_0803EF74
sub_0803EF74: @ 0x0803EF74
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r1, #0
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r0, #0x32
ldrsh r2, [r4, r0]
adds r0, r5, #0
movs r3, #0x50
bl sub_0806FCB8
cmp r0, #0
beq _0803EFA8
adds r0, r4, #0
adds r1, r5, #0
bl sub_080045C4
ldrb r1, [r4, #0x15]
subs r1, r1, r0
adds r1, #2
movs r0, #0x1f
ands r1, r0
cmp r1, #4
bhi _0803EFA8
movs r0, #1
b _0803EFAA
_0803EFA8:
movs r0, #0
_0803EFAA:
pop {r4, r5, pc}
thumb_func_start sub_0803EFAC
sub_0803EFAC: @ 0x0803EFAC
push {r4, r5, lr}
adds r5, r0, #0
adds r4, r1, #0
movs r2, #0x50
movs r3, #0x50
bl sub_080041A0
cmp r0, #0
beq _0803EFD6
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0x1c
bl sub_0804A044
cmp r0, #0xff
beq _0803EFD6
ldrb r4, [r4, #0x15]
cmp r0, r4
bne _0803EFD6
movs r0, #1
b _0803EFD8
_0803EFD6:
movs r0, #0
_0803EFD8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803EFDC
sub_0803EFDC: @ 0x0803EFDC
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, _0803F004 @ =gUnk_080D0924
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r5
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, r5, pc}
.align 2, 0
_0803F004: .4byte gUnk_080D0924
thumb_func_start sub_0803F008
sub_0803F008: @ 0x0803F008
push {r4, lr}
adds r4, r0, #0
ldr r1, _0803F024 @ =gUnk_080D093C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0803F694
pop {r4, pc}
.align 2, 0
_0803F024: .4byte gUnk_080D093C
thumb_func_start sub_0803F028
sub_0803F028: @ 0x0803F028
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _0803F05C
movs r0, #0xff
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x3e
ldrb r1, [r0]
lsrs r1, r1, #4
movs r0, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
bl sub_0803F630
adds r0, r4, #0
bl sub_0803F6EC
_0803F05C:
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x41
cmp r0, #0x25
bne _0803F07E
ldrb r0, [r1]
cmp r0, #0x80
bne _0803F07E
movs r0, #8
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #3
bl sub_08004260
b _0803F0E4
_0803F07E:
ldrb r0, [r1]
cmp r0, #0x9d
bne _0803F08A
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r4, #0x20]
_0803F08A:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0803F0B0
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
lsrs r0, r0, #4
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #7
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0803F0B0:
adds r0, r4, #0
adds r0, #0x45
adds r1, r4, #0
adds r1, #0x7a
ldrb r0, [r0]
ldrb r2, [r1]
cmp r0, r2
beq _0803F0E4
strb r0, [r1]
ldrb r0, [r4, #0xc]
subs r0, #1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _0803F0D4
adds r0, r4, #0
bl sub_0803F51C
_0803F0D4:
adds r0, r4, #0
adds r0, #0x3e
ldrb r1, [r0]
lsrs r1, r1, #4
adds r1, #7
adds r0, r4, #0
bl sub_08004260
_0803F0E4:
ldr r1, _0803F0F0 @ =gUnk_080D0924
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_0803F0F0: .4byte gUnk_080D0924
thumb_func_start sub_0803F0F4
sub_0803F0F4: @ 0x0803F0F4
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_08001328
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _0803F144
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _0803F144
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
bne _0803F144
movs r0, #0xff
strb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x58
ldrb r0, [r1]
subs r0, #7
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _0803F144
ldrb r1, [r1]
subs r1, #7
movs r0, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
_0803F144:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F148
sub_0803F148: @ 0x0803F148
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
subs r0, #7
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _0803F164
ldrb r1, [r4, #0x14]
adds r1, #7
adds r0, r4, #0
bl sub_08004260
_0803F164:
adds r0, r4, #0
bl sub_08001242
ldrh r1, [r4, #0x36]
movs r2, #0x36
ldrsh r0, [r4, r2]
cmp r0, #0
bne _0803F178
ldr r0, _0803F1A4 @ =0x0000FFFF
strh r0, [r4, #0x36]
_0803F178:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
bne _0803F1A0
ldrb r0, [r4, #0x14]
movs r1, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
movs r0, #0xff
strb r0, [r4, #0x15]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_0803F630
_0803F1A0:
pop {r4, pc}
.align 2, 0
_0803F1A4: .4byte 0x0000FFFF
thumb_func_start sub_0803F1A8
sub_0803F1A8: @ 0x0803F1A8
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
beq _0803F1CC
ldr r0, _0803F1C8 @ =gUnk_080D0964
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0803F1DE
.align 2, 0
_0803F1C8: .4byte gUnk_080D0964
_0803F1CC:
adds r0, r4, #0
bl sub_0803F51C
ldrb r1, [r4, #0x15]
lsrs r1, r1, #4
adds r1, #1
adds r0, r4, #0
bl sub_08004260
_0803F1DE:
pop {r4, pc}
thumb_func_start sub_0803F1E0
sub_0803F1E0: @ 0x0803F1E0
push {lr}
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x3c
strb r1, [r0, #0x1d]
ldr r1, _0803F1F8 @ =gLinkEntity
ldrb r1, [r1, #0x14]
lsrs r1, r1, #2
adds r1, #5
bl sub_08004260
pop {pc}
.align 2, 0
_0803F1F8: .4byte gLinkEntity
thumb_func_start sub_0803F1FC
sub_0803F1FC: @ 0x0803F1FC
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0806F4E8
pop {r4, pc}
thumb_func_start sub_0803F20C
sub_0803F20C: @ 0x0803F20C
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0806F3E4
cmp r0, #0
beq _0803F244
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
cmp r0, #0
beq _0803F23E
adds r2, r0, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
_0803F23E:
adds r0, r4, #0
bl sub_0804A7D4
_0803F244:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F248
sub_0803F248: @ 0x0803F248
push {r4, lr}
adds r4, r0, #0
bl sub_0804A720
bl Random
movs r2, #0x1e
adds r1, r0, #0
ands r1, r2
movs r2, #0
strb r1, [r4, #0x15]
movs r1, #0xff
strb r1, [r4, #0x14]
movs r1, #1
strb r1, [r4, #0x1c]
adds r1, r4, #0
adds r1, #0x45
ldrb r1, [r1]
adds r3, r4, #0
adds r3, #0x7a
strb r1, [r3]
lsrs r0, r0, #4
adds r1, r4, #0
adds r1, #0x7b
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x7c
strh r2, [r0]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0803F28E
adds r0, r4, #0
bl sub_0803F50C
b _0803F2A0
_0803F28E:
adds r0, r4, #0
bl sub_0803F51C
ldrb r1, [r4, #0x15]
lsrs r1, r1, #4
adds r1, #1
adds r0, r4, #0
bl sub_08004260
_0803F2A0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F2A4
sub_0803F2A4: @ 0x0803F2A4
push {r4, lr}
adds r4, r0, #0
bl sub_0803F5A8
cmp r0, #0
beq _0803F2C0
movs r0, #2
strb r0, [r4, #0xc]
bl Random
movs r1, #0x60
ands r0, r1
adds r0, #0xa
strb r0, [r4, #0xe]
_0803F2C0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F2C4
sub_0803F2C4: @ 0x0803F2C4
push {r4, lr}
adds r4, r0, #0
bl sub_0803F5A8
cmp r0, #0
bne _0803F2D8
adds r0, r4, #0
bl sub_0803F50C
b _0803F322
_0803F2D8:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803F322
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _0803F308
ldr r0, _0803F304 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
b _0803F310
.align 2, 0
_0803F304: .4byte gUnk_020000B0
_0803F308:
bl Random
movs r1, #0x1f
ands r0, r1
_0803F310:
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
lsrs r0, r0, #4
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #1
adds r0, r4, #0
bl sub_08004260
_0803F322:
pop {r4, pc}
thumb_func_start sub_0803F324
sub_0803F324: @ 0x0803F324
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803F33E
adds r0, r4, #0
bl sub_0803F51C
_0803F33E:
pop {r4, pc}
thumb_func_start sub_0803F340
sub_0803F340: @ 0x0803F340
push {r4, lr}
adds r4, r0, #0
bl sub_0803F5D4
cmp r0, #0
bne _0803F36A
adds r0, r4, #0
bl sub_0803F58C
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803F36A
adds r0, r4, #0
bl sub_0803F51C
_0803F36A:
pop {r4, pc}
thumb_func_start sub_0803F36C
sub_0803F36C: @ 0x0803F36C
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _0803F3A6
adds r0, r4, #0
bl sub_0803F66C
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0803F3AC
movs r0, #6
strb r0, [r4, #0xc]
adds r0, #0xfa
strh r0, [r4, #0x24]
b _0803F3AC
_0803F3A6:
adds r0, r4, #0
bl sub_0803F51C
_0803F3AC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F3B0
sub_0803F3B0: @ 0x0803F3B0
push {r4, lr}
adds r4, r0, #0
bl sub_0803F5A8
cmp r0, #0
bne _0803F3C4
adds r0, r4, #0
bl sub_0803F51C
b _0803F41C
_0803F3C4:
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _0803F414
ldrb r1, [r4, #0xe]
adds r1, #1
strb r1, [r4, #0xe]
ldr r2, _0803F40C @ =gUnk_080D0970
lsls r0, r1, #0x18
lsrs r0, r0, #0x1e
adds r0, r0, r2
ldrb r0, [r0]
ands r1, r0
cmp r1, #0
bne _0803F3F6
ldr r0, _0803F410 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_0803F3F6:
adds r0, r4, #0
bl sub_0803F66C
adds r0, r4, #0
bl sub_080AEFB4
adds r0, r4, #0
bl sub_08004274
b _0803F41C
.align 2, 0
_0803F40C: .4byte gUnk_080D0970
_0803F410: .4byte gUnk_020000B0
_0803F414:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
_0803F41C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F420
sub_0803F420: @ 0x0803F420
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803F43A
adds r0, r4, #0
bl sub_0803F51C
_0803F43A:
pop {r4, pc}
thumb_func_start sub_0803F43C
sub_0803F43C: @ 0x0803F43C
push {r4, lr}
adds r4, r0, #0
bl sub_0803F738
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0803F474
movs r2, #0
movs r0, #9
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
adds r0, #0x78
strh r2, [r0]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
_0803F474:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0803F478
sub_0803F478: @ 0x0803F478
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0803F494
adds r0, r4, #0
bl sub_0803F6C0
_0803F494:
bl sub_0807953C
adds r1, r4, #0
adds r1, #0x78
cmp r0, #0
beq _0803F4A6
ldrh r0, [r1]
adds r0, #0xc
strh r0, [r1]
_0803F4A6:
ldr r2, _0803F500 @ =gLinkEntity
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0803F4B6
movs r0, #0xe0
strh r0, [r1]
_0803F4B6:
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xdf
bls _0803F504
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x78
strh r0, [r1]
movs r0, #0xff
strb r0, [r4, #0x14]
subs r1, #0x3f
movs r0, #0xf4
strb r0, [r1]
adds r1, #5
movs r0, #0x14
strb r0, [r1]
adds r1, #4
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
adds r0, r4, #0
bl sub_0803F51C
adds r0, r4, #0
bl sub_0803F6EC
b _0803F50A
.align 2, 0
_0803F500: .4byte gLinkEntity
_0803F504:
adds r0, r4, #0
bl sub_0803F738
_0803F50A:
pop {r4, pc}
thumb_func_start sub_0803F50C
sub_0803F50C: @ 0x0803F50C
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #9
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_0803F51C
sub_0803F51C: @ 0x0803F51C
push {lr}
movs r1, #4
strb r1, [r0, #0xc]
bl sub_0803F528
pop {pc}
thumb_func_start sub_0803F528
sub_0803F528: @ 0x0803F528
push {r4, r5, lr}
adds r4, r0, #0
bl Random
adds r5, r0, #0
movs r0, #8
adds r1, r5, #0
ands r1, r0
adds r1, #8
strb r1, [r4, #0xe]
adds r0, r4, #0
bl sub_08049FA0
cmp r0, #0
beq _0803F55C
ldr r1, _0803F558 @ =gUnk_080D0978
movs r0, #7
ands r0, r5
adds r0, r0, r1
ldrb r0, [r0]
ldrb r1, [r4, #0x15]
adds r0, r0, r1
b _0803F562
.align 2, 0
_0803F558: .4byte gUnk_080D0978
_0803F55C:
adds r0, r4, #0
bl sub_08049EE4
_0803F562:
movs r1, #0x1e
ands r0, r1
strb r0, [r4, #0x15]
ldr r2, _0803F588 @ =gUnk_080D0974
lsrs r0, r5, #4
movs r1, #3
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x24
strb r0, [r1]
adds r0, r4, #0
bl sub_0803F66C
pop {r4, r5, pc}
.align 2, 0
_0803F588: .4byte gUnk_080D0974
thumb_func_start sub_0803F58C
sub_0803F58C: @ 0x0803F58C
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, [r5, #0x30]
bl sub_080AEFB4
ldr r1, [r5, #0x30]
subs r4, r1, r4
lsrs r0, r4, #0x1f
adds r4, r4, r0
asrs r4, r4, #1
subs r1, r1, r4
str r1, [r5, #0x30]
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803F5A8
sub_0803F5A8: @ 0x0803F5A8
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
bne _0803F5BA
movs r0, #0
b _0803F5D2
_0803F5BA:
ldr r0, _0803F5CC @ =gUnk_02033A90
movs r1, #0xa
ldrsh r0, [r0, r1]
cmp r0, #0xf
bgt _0803F5D0
adds r0, r4, #0
bl sub_0806FD54
b _0803F5D2
.align 2, 0
_0803F5CC: .4byte gUnk_02033A90
_0803F5D0:
movs r0, #1
_0803F5D2:
pop {r4, pc}
thumb_func_start sub_0803F5D4
sub_0803F5D4: @ 0x0803F5D4
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrh r0, [r1]
cmp r0, #0
beq _0803F5E8
subs r0, #1
strh r0, [r1]
b _0803F62C
_0803F5E8:
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _0803F62C
adds r0, r4, #0
bl sub_0806FD54
cmp r0, #0
bne _0803F61A
ldr r0, _0803F624 @ =gUnk_02033A90
movs r1, #0xa
ldrsh r0, [r0, r1]
cmp r0, #0xf
ble _0803F62C
ldr r0, _0803F628 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
movs r2, #0x70
movs r3, #0x48
bl sub_080041A0
cmp r0, #0
beq _0803F62C
_0803F61A:
adds r0, r4, #0
bl sub_0803F630
movs r0, #1
b _0803F62E
.align 2, 0
_0803F624: .4byte gUnk_02033A90
_0803F628: .4byte gUnk_020000B0
_0803F62C:
movs r0, #0
_0803F62E:
pop {r4, pc}
thumb_func_start sub_0803F630
sub_0803F630: @ 0x0803F630
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #5
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x25
strb r0, [r1]
movs r5, #0
ldr r0, _0803F664 @ =gUnk_03004040
ldr r0, [r0]
cmp r0, #0
beq _0803F64C
movs r5, #0x3c
_0803F64C:
bl Random
ldr r2, _0803F668 @ =gUnk_080D0980
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r5
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
pop {r4, r5, pc}
.align 2, 0
_0803F664: .4byte gUnk_03004040
_0803F668: .4byte gUnk_080D0980
thumb_func_start sub_0803F66C
sub_0803F66C: @ 0x0803F66C
push {lr}
adds r2, r0, #0
ldrb r1, [r2, #0x15]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _0803F680
ldrb r0, [r2, #0x14]
cmp r0, #0xff
bne _0803F692
_0803F680:
lsrs r0, r1, #4
ldrb r1, [r2, #0x14]
cmp r0, r1
beq _0803F692
strb r0, [r2, #0x14]
adds r1, r0, #1
adds r0, r2, #0
bl sub_08004260
_0803F692:
pop {pc}
thumb_func_start sub_0803F694
sub_0803F694: @ 0x0803F694
push {r4, lr}
ldr r3, _0803F6BC @ =gUnk_080D0984
movs r1, #0x7b
adds r1, r1, r0
mov ip, r1
ldrb r1, [r1]
adds r2, r1, #1
mov r4, ip
strb r2, [r4]
lsls r1, r1, #0x18
lsrs r1, r1, #0x1b
movs r2, #3
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
strh r1, [r0, #0x36]
pop {r4, pc}
.align 2, 0
_0803F6BC: .4byte gUnk_080D0984
thumb_func_start sub_0803F6C0
sub_0803F6C0: @ 0x0803F6C0
push {r4, lr}
adds r0, #0x5a
ldrb r2, [r0]
movs r1, #0xfe
ands r1, r2
strb r1, [r0]
ldr r4, _0803F6E8 @ =gLinkEntity
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0xc
strb r0, [r1]
subs r0, #0x10
bl ModHealth
adds r0, r4, #0
movs r1, #0x7a
bl sub_0800449C
pop {r4, pc}
.align 2, 0
_0803F6E8: .4byte gLinkEntity
thumb_func_start sub_0803F6EC
sub_0803F6EC: @ 0x0803F6EC
push {lr}
ldr r2, _0803F72C @ =gLinkEntity
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
ldr r3, _0803F730 @ =gLinkState
cmp r0, #0
beq _0803F720
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r2, #0x20]
ldr r0, _0803F734 @ =0x0000FFFE
strh r0, [r2, #0x36]
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
strb r0, [r2, #0x15]
adds r1, r2, #0
adds r1, #0x3d
movs r0, #0xc4
strb r0, [r1]
movs r0, #0x41
strb r0, [r3, #2]
_0803F720:
ldr r0, [r3, #0x30]
movs r1, #0x11
rsbs r1, r1, #0
ands r0, r1
str r0, [r3, #0x30]
pop {pc}
.align 2, 0
_0803F72C: .4byte gLinkEntity
_0803F730: .4byte gLinkState
_0803F734: .4byte 0x0000FFFE
thumb_func_start sub_0803F738
sub_0803F738: @ 0x0803F738
push {r4, lr}
adds r4, r0, #0
bl sub_08077B2C
ldr r2, _0803F768 @ =gLinkState
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]
ldr r0, _0803F76C @ =gLinkEntity
adds r1, r4, #0
movs r2, #0
movs r3, #1
bl sub_0806FA90
adds r4, #0x63
ldrb r0, [r4]
subs r0, #2
strb r0, [r4]
pop {r4, pc}
.align 2, 0
_0803F768: .4byte gLinkState
_0803F76C: .4byte gLinkEntity
thumb_func_start sub_0803F770
sub_0803F770: @ 0x0803F770
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #5
bhi _0803F810
lsls r0, r0, #2
ldr r1, _0803F784 @ =_0803F788
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803F784: .4byte _0803F788
_0803F788: @ jump table
.4byte _0803F7A0 @ case 0
.4byte _0803F7D0 @ case 1
.4byte _0803F7D8 @ case 2
.4byte _0803F7E0 @ case 3
.4byte _0803F7E8 @ case 4
.4byte _0803F800 @ case 5
_0803F7A0:
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _0803F7C8
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
adds r2, r4, #0
adds r2, #0x7a
strh r0, [r2]
ldrh r0, [r4, #0x2e]
strh r0, [r1]
adds r1, #4
ldrh r0, [r1]
adds r2, #4
strh r0, [r2]
ldrh r0, [r4, #0x32]
strh r0, [r1]
adds r0, r4, #0
bl sub_080409B0
_0803F7C8:
ldr r0, _0803F7CC @ =gUnk_080D0AC8
b _0803F7EA
.align 2, 0
_0803F7CC: .4byte gUnk_080D0AC8
_0803F7D0:
ldr r0, _0803F7D4 @ =gUnk_080D0AE8
b _0803F7EA
.align 2, 0
_0803F7D4: .4byte gUnk_080D0AE8
_0803F7D8:
ldr r0, _0803F7DC @ =gUnk_080D0AF0
b _0803F7EA
.align 2, 0
_0803F7DC: .4byte gUnk_080D0AF0
_0803F7E0:
ldr r0, _0803F7E4 @ =gUnk_080D0AFC
b _0803F7EA
.align 2, 0
_0803F7E4: .4byte gUnk_080D0AFC
_0803F7E8:
ldr r0, _0803F7FC @ =gUnk_080D0B04
_0803F7EA:
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _0803F810
.align 2, 0
_0803F7FC: .4byte gUnk_080D0B04
_0803F800:
ldr r0, _0803F814 @ =gUnk_080D0B0C
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_0803F810:
pop {r4, pc}
.align 2, 0
_0803F814: .4byte gUnk_080D0B0C
thumb_func_start sub_0803F818
sub_0803F818: @ 0x0803F818
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
bl sub_0804A720
movs r0, #0
bl sub_0807CC3C
cmp r0, #0
beq _0803F910
ldr r0, _0803F8FC @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x50
bhi _0803F910
movs r4, #0
movs r2, #1
movs r0, #1
strb r0, [r5, #0xc]
ldrb r1, [r5, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r5, #0x18]
adds r3, r5, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r3]
adds r1, r5, #0
adds r1, #0x6d
ldrb r0, [r1]
orrs r2, r0
strb r2, [r1]
bl Random
movs r1, #0x17
ands r0, r1
adds r0, #4
strb r0, [r5, #0x15]
movs r0, #0x30
strb r0, [r5, #0xe]
movs r0, #0xc
strb r0, [r5, #0xf]
adds r1, r5, #0
adds r1, #0x82
movs r0, #4
strb r0, [r1]
subs r1, #2
movs r0, #0xff
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x74
strb r4, [r0]
adds r0, #3
strb r4, [r0]
adds r1, #4
movs r0, #9
strb r0, [r1]
strb r4, [r5, #0x14]
adds r0, r5, #0
adds r0, #0x86
strb r4, [r0]
adds r0, #1
strb r4, [r0]
ldrh r1, [r5, #0x2e]
subs r0, #0xf
strh r1, [r0]
ldrh r0, [r5, #0x2e]
adds r1, r5, #0
adds r1, #0x7a
strh r0, [r1]
ldrh r1, [r5, #0x32]
adds r0, r5, #0
adds r0, #0x7c
strh r1, [r0]
ldrh r0, [r5, #0x32]
adds r1, r5, #0
adds r1, #0x7e
strh r0, [r1]
movs r4, #1
adds r7, r5, #0
adds r7, #0x75
_0803F8C2:
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
bl sub_08040648
adds r4, #1
cmp r4, #5
bls _0803F8C2
bl Random
adds r0, r5, #0
bl sub_080408EC
movs r4, #0
movs r6, #1
_0803F8E0:
movs r0, #0x5a
movs r1, #0
bl CreateEnemy
str r5, [r0, #0x50]
strb r4, [r0, #0xb]
ldrb r1, [r7]
asrs r1, r4
ands r1, r6
cmp r1, #0
beq _0803F900
strb r6, [r0, #0xe]
b _0803F902
.align 2, 0
_0803F8FC: .4byte gUnk_03003DBC
_0803F900:
strb r1, [r0, #0xe]
_0803F902:
adds r4, #1
cmp r4, #7
bls _0803F8E0
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
_0803F910:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0803F914
sub_0803F914: @ 0x0803F914
push {r4, r5, r6, r7, lr}
sub sp, #4
adds r7, r0, #0
adds r4, r7, #0
adds r4, #0x80
ldrb r0, [r4]
cmp r0, #2
beq _0803F998
cmp r0, #2
bgt _0803F932
cmp r0, #0
beq _0803F95A
cmp r0, #1
beq _0803F97A
b _0803FA40
_0803F932:
cmp r0, #4
bne _0803F938
b _0803FA3A
_0803F938:
cmp r0, #4
blt _0803F9CE
adds r3, r4, #0
cmp r0, #0xff
beq _0803F944
b _0803FA42
_0803F944:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _0803FA42
strb r0, [r3]
movs r0, #0xb
strb r0, [r7, #0xe]
b _0803FA42
_0803F95A:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
adds r3, r4, #0
cmp r0, #0
bne _0803FA42
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r7, #0x24]
movs r0, #0x14
strb r0, [r7, #0xe]
b _0803FA42
_0803F97A:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
adds r3, r4, #0
cmp r0, #0
bne _0803FA42
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
movs r0, #0xc0
strh r0, [r7, #0x24]
movs r0, #0xc
strb r0, [r7, #0xe]
b _0803FA42
_0803F998:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
adds r3, r4, #0
cmp r1, #0
bne _0803FA42
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
strh r1, [r7, #0x24]
ldrb r0, [r7, #0x14]
cmp r0, #1
bhi _0803F9C8
str r3, [sp]
bl Random
movs r1, #0x7f
ands r0, r1
adds r0, #0x40
strb r0, [r7, #0xe]
ldr r3, [sp]
b _0803FA42
_0803F9C8:
movs r0, #8
strb r0, [r7, #0xe]
b _0803FA42
_0803F9CE:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0803FA32
movs r0, #0
strh r1, [r7, #0x36]
strb r0, [r4]
ldr r1, _0803FA04 @ =gUnk_080D0ABF
ldrb r0, [r7, #0x14]
lsls r0, r0, #1
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r7, #0xe]
adds r0, r7, #0
bl sub_08040934
adds r1, r0, #0
cmp r1, #2
beq _0803FA1A
cmp r1, #2
bhi _0803FA08
cmp r1, #1
beq _0803FA0E
b _0803FA26
.align 2, 0
_0803FA04: .4byte gUnk_080D0ABF
_0803FA08:
cmp r1, #3
beq _0803FA20
b _0803FA26
_0803FA0E:
movs r0, #4
strb r0, [r7, #0xc]
adds r0, r7, #0
adds r0, #0x74
strb r1, [r0]
b _0803FA40
_0803FA1A:
movs r0, #5
strb r0, [r7, #0xc]
b _0803FA40
_0803FA20:
movs r0, #6
strb r0, [r7, #0xc]
b _0803FA40
_0803FA26:
adds r1, r7, #0
adds r1, #0x80
movs r0, #4
strb r0, [r1]
adds r3, r1, #0
b _0803FA42
_0803FA32:
adds r0, r7, #0
bl sub_08040AD4
b _0803FA40
_0803FA3A:
adds r0, r7, #0
bl sub_08040670
_0803FA40:
adds r3, r4, #0
_0803FA42:
adds r1, r7, #0
adds r1, #0x82
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803FAAC
movs r0, #4
strb r0, [r1]
ldrb r2, [r7, #0x15]
adds r2, #0x12
movs r0, #0x1c
ands r2, r0
asrs r2, r2, #2
movs r0, #0x9b
movs r1, #0
str r3, [sp]
bl CreateObject
adds r6, r0, #0
ldr r3, [sp]
cmp r6, #0
beq _0803FAAC
str r7, [r6, #0x50]
str r3, [sp]
bl Random
movs r5, #0xf
ands r0, r5
ldr r1, _0803FAC4 @ =0x0000FFF9
adds r4, r1, #0
adds r0, r4, r0
ldrh r1, [r6, #0x2e]
adds r0, r0, r1
strh r0, [r6, #0x2e]
bl Random
ands r0, r5
adds r4, r4, r0
ldrh r0, [r6, #0x32]
adds r4, r4, r0
strh r4, [r6, #0x32]
adds r2, r6, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
ldr r3, [sp]
_0803FAAC:
ldrb r0, [r3]
cmp r0, #0xff
beq _0803FAB8
adds r0, r7, #0
bl sub_080AEF88
_0803FAB8:
adds r0, r7, #0
bl sub_080042B8
add sp, #4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0803FAC4: .4byte 0x0000FFF9
thumb_func_start sub_0803FAC8
sub_0803FAC8: @ 0x0803FAC8
push {lr}
bl sub_080042B8
pop {pc}
thumb_func_start sub_0803FAD0
sub_0803FAD0: @ 0x0803FAD0
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #5
bls _0803FADE
b _0803FD32
_0803FADE:
lsls r0, r0, #2
ldr r1, _0803FAE8 @ =_0803FAEC
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0803FAE8: .4byte _0803FAEC
_0803FAEC: @ jump table
.4byte _0803FB04 @ case 0
.4byte _0803FB34 @ case 1
.4byte _0803FBB8 @ case 2
.4byte _0803FBE2 @ case 3
.4byte _0803FC80 @ case 4
.4byte _0803FD0C @ case 5
_0803FB04:
movs r1, #0xa0
lsls r1, r1, #6
adds r0, r7, #0
bl sub_080044EC
adds r1, r0, #0
cmp r1, #1
beq _0803FB16
b _0803FD32
_0803FB16:
adds r0, r7, #0
adds r0, #0x80
strb r1, [r0]
movs r0, #0xc0
strb r0, [r7, #0xe]
ldrb r1, [r7, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r7, #0x10]
movs r0, #0xa6
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x14
b _0803FC4A
_0803FB34:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
adds r3, r7, #0
adds r3, #0x80
cmp r2, #0
bne _0803FB58
movs r0, #2
strb r0, [r3]
adds r1, r7, #0
adds r1, #0x3f
movs r0, #0x35
strb r0, [r1]
adds r0, r7, #0
adds r0, #0x62
strb r2, [r0]
_0803FB58:
adds r2, r7, #0
adds r2, #0x45
ldr r0, _0803FB70 @ =gUnk_080D0ABC
ldrb r1, [r7, #0x14]
adds r1, r1, r0
ldrb r0, [r2]
ldrb r1, [r1]
cmp r0, r1
bhs _0803FB74
movs r0, #1
strb r0, [r7, #0xe]
b _0803FB76
.align 2, 0
_0803FB70: .4byte gUnk_080D0ABC
_0803FB74:
movs r0, #0
_0803FB76:
cmp r0, #0
bne _0803FB7C
b _0803FD32
_0803FB7C:
movs r1, #0
movs r0, #2
strb r0, [r3]
adds r2, r7, #0
adds r2, #0x3f
movs r0, #0x35
strb r0, [r2]
adds r0, r7, #0
adds r0, #0x62
strb r1, [r0]
ldrb r0, [r7, #0x14]
adds r0, #1
strb r0, [r7, #0x14]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #2
bhi _0803FBA0
b _0803FD32
_0803FBA0:
movs r0, #7
strb r0, [r7, #0xc]
movs r0, #0xe0
strb r0, [r7, #0xe]
bl sub_0807A108
ldr r0, _0803FBB4 @ =0x00000127
bl PlaySFX
b _0803FD4E
.align 2, 0
_0803FBB4: .4byte 0x00000127
_0803FBB8:
ldr r0, [r7, #0x54]
adds r0, #0x74
movs r1, #0x10
strb r1, [r0]
ldrb r0, [r7, #0xe]
cmp r0, #0
beq _0803FBD4
adds r0, r7, #0
adds r0, #0x80
movs r1, #3
strb r1, [r0]
movs r0, #0x40
strb r0, [r7, #0xe]
b _0803FD32
_0803FBD4:
adds r0, r7, #0
adds r0, #0x80
movs r1, #4
strb r1, [r0]
movs r0, #0x50
strb r0, [r7, #0xe]
b _0803FD32
_0803FBE2:
ldrb r0, [r7, #0xe]
cmp r0, #0
beq _0803FC08
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _0803FBF4
b _0803FD32
_0803FBF4:
ldrb r1, [r7, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r7, #0x10]
movs r0, #0xe0
lsls r0, r0, #0xa
str r0, [r7, #0x20]
movs r0, #0x10
strb r0, [r7, #0xf]
b _0803FD32
_0803FC08:
movs r1, #0xa0
lsls r1, r1, #6
adds r0, r7, #0
bl sub_08003FC4
adds r2, r0, #0
cmp r2, #0
bne _0803FC52
adds r1, r7, #0
adds r1, #0x80
movs r0, #5
strb r0, [r1]
movs r0, #0x10
strb r0, [r7, #0xe]
ldrb r1, [r7, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r7, #0x10]
adds r1, r7, #0
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
adds r0, r7, #0
adds r0, #0x86
strb r2, [r0]
adds r0, r7, #0
bl sub_080408EC
movs r0, #0xa6
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x1e
_0803FC4A:
movs r1, #4
bl sub_08080964
b _0803FD32
_0803FC52:
ldrb r0, [r7, #0xf]
cmp r0, #0
beq _0803FD32
subs r1, r0, #1
strb r1, [r7, #0xf]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803FC6C
movs r0, #0xd8
lsls r0, r0, #1
bl PlaySFX
b _0803FD32
_0803FC6C:
movs r0, #7
ands r1, r0
cmp r1, #0
bne _0803FD32
ldr r0, _0803FC7C @ =0x00000149
bl PlaySFX
b _0803FD32
.align 2, 0
_0803FC7C: .4byte 0x00000149
_0803FC80:
ldrb r0, [r7, #0xe]
subs r1, r0, #1
strb r1, [r7, #0xe]
lsls r0, r1, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
bne _0803FCA8
adds r0, r7, #0
adds r0, #0x80
movs r1, #5
strb r1, [r0]
movs r0, #0x10
strb r0, [r7, #0xe]
adds r0, r7, #0
adds r0, #0x86
strb r2, [r0]
adds r0, r7, #0
bl sub_080408EC
b _0803FD32
_0803FCA8:
movs r0, #1
ands r1, r0
cmp r1, #0
beq _0803FD32
movs r0, #0x9b
movs r1, #1
movs r2, #0xff
bl CreateObject
adds r6, r0, #0
cmp r6, #0
beq _0803FD32
str r7, [r6, #0x50]
adds r0, r7, #0
adds r1, r6, #0
bl CopyPosition
bl Random
movs r5, #0xf
ands r0, r5
ldr r1, _0803FD08 @ =0x0000FFF9
adds r4, r1, #0
adds r0, r4, r0
ldrh r1, [r6, #0x2e]
adds r0, r0, r1
strh r0, [r6, #0x2e]
bl Random
ands r0, r5
adds r4, r4, r0
ldrh r0, [r6, #0x32]
adds r4, r4, r0
strh r4, [r6, #0x32]
adds r2, r6, #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]
movs r0, #0x92
lsls r0, r0, #1
bl PlaySFX
b _0803FD32
.align 2, 0
_0803FD08: .4byte 0x0000FFF9
_0803FD0C:
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0803FD32
movs r0, #1
strb r0, [r7, #0xc]
adds r0, r7, #0
adds r0, #0x80
strb r1, [r0]
adds r0, #1
strb r1, [r0]
subs r0, #0xb
strb r1, [r0]
adds r0, r7, #0
bl sub_08040670
_0803FD32:
adds r0, r7, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #2
bls _0803FD48
ldrb r1, [r7, #0xe]
movs r0, #1
ands r0, r1
adds r1, r7, #0
adds r1, #0x62
strb r0, [r1]
_0803FD48:
adds r0, r7, #0
bl sub_080042B8
_0803FD4E:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0803FD50
sub_0803FD50: @ 0x0803FD50
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x80
ldrb r0, [r5]
cmp r0, #1
beq _0803FDA8
cmp r0, #1
bgt _0803FD68
cmp r0, #0
beq _0803FD72
b _0803FE86
_0803FD68:
cmp r0, #2
beq _0803FE0C
cmp r0, #3
beq _0803FE62
b _0803FE86
_0803FD72:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
beq _0803FD82
b _0803FE86
_0803FD82:
ldrb r0, [r5]
adds r0, #1
strb r0, [r5]
adds r0, r4, #0
adds r0, #0x74
strb r1, [r0]
movs r0, #0x80
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
movs r0, #0x90
lsls r0, r0, #0xa
str r0, [r4, #0x20]
ldr r0, _0803FDA4 @ =0x0000012B
bl PlaySFX
b _0803FE86
.align 2, 0
_0803FDA4: .4byte 0x0000012B
_0803FDA8:
movs r1, #0xa0
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _0803FE86
ldrb r0, [r5]
adds r0, #1
strb r0, [r5]
adds r0, r4, #0
adds r0, #0x84
ldrb r0, [r0]
cmp r0, #1
beq _0803FDD8
cmp r0, #1
bgt _0803FDD0
cmp r0, #0
beq _0803FDDE
b _0803FDE4
_0803FDD0:
cmp r0, #2
beq _0803FDDE
cmp r0, #3
bne _0803FDE4
_0803FDD8:
movs r0, #1
strb r0, [r4, #0xf]
b _0803FDF0
_0803FDDE:
movs r0, #0
strb r0, [r4, #0xf]
b _0803FDF0
_0803FDE4:
bl Random
movs r1, #0x20
ands r1, r0
lsrs r1, r1, #5
strb r1, [r4, #0xf]
_0803FDF0:
ldrb r0, [r4, #0x14]
cmp r0, #1
bls _0803FDFA
movs r0, #1
strb r0, [r4, #0xf]
_0803FDFA:
movs r0, #0xa6
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x1e
movs r1, #4
bl sub_08080964
b _0803FE86
_0803FE0C:
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803FE34
ldrb r0, [r5]
adds r0, #1
strb r0, [r5]
ldr r2, _0803FE30 @ =gUnk_080D0ABF
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
movs r1, #1
orrs r0, r1
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r4, #0xe]
b _0803FE86
.align 2, 0
_0803FE30: .4byte gUnk_080D0ABF
_0803FE34:
movs r0, #7
ands r1, r0
cmp r1, #0
bne _0803FE46
ldrb r2, [r4, #0xf]
adds r0, r4, #0
movs r1, #0x1f
bl sub_0804A98C
_0803FE46:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803FE86
ldrb r0, [r4, #0x14]
cmp r0, #1
bls _0803FE86
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _0803FE86
movs r0, #0x80
strb r0, [r4, #0xe]
movs r0, #0
strb r0, [r4, #0xf]
b _0803FE86
_0803FE62:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0803FE80
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r5]
strh r1, [r4, #0x36]
adds r0, r4, #0
bl sub_08040670
b _0803FE86
_0803FE80:
adds r0, r4, #0
bl sub_08040AD4
_0803FE86:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0803FE90
sub_0803FE90: @ 0x0803FE90
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r4, #0
adds r3, #0x80
ldrb r2, [r3]
cmp r2, #1
beq _0803FED4
cmp r2, #1
bgt _0803FEA8
cmp r2, #0
beq _0803FEAE
b _0803FF74
_0803FEA8:
cmp r2, #2
beq _0803FF52
b _0803FF74
_0803FEAE:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0803FF74
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
movs r0, #0x40
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x14]
cmp r0, #1
bls _0803FF74
movs r0, #0x80
strb r0, [r4, #0xe]
movs r0, #1
strb r0, [r4, #0xf]
b _0803FF74
_0803FED4:
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803FEFC
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r1, _0803FEF8 @ =gUnk_080D0ABF
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
orrs r0, r2
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
b _0803FF74
.align 2, 0
_0803FEF8: .4byte gUnk_080D0ABF
_0803FEFC:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0803FF24
movs r0, #7
ands r1, r0
cmp r1, #0
bne _0803FF14
ldrb r2, [r4, #0xf]
adds r0, r4, #0
movs r1, #0x1f
bl sub_0804A98C
_0803FF14:
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _0803FF74
movs r0, #0x40
strb r0, [r4, #0xe]
movs r0, #0
strb r0, [r4, #0xf]
b _0803FF74
_0803FF24:
movs r5, #0xf
ands r5, r1
cmp r5, #0
bne _0803FF74
adds r0, r4, #0
movs r1, #0x1f
movs r2, #2
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _0803FF74
strb r5, [r1, #0xb]
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _0803FF74
ldrh r0, [r1, #0x24]
lsls r0, r0, #0x10
asrs r0, r0, #0x11
strh r0, [r1, #0x24]
b _0803FF74
_0803FF52:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0803FF6E
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r3]
adds r0, r4, #0
bl sub_08040670
b _0803FF74
_0803FF6E:
adds r0, r4, #0
bl sub_08040AD4
_0803FF74:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_0803FF7C
sub_0803FF7C: @ 0x0803FF7C
push {r4, r5, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x80
ldrb r5, [r2]
cmp r5, #1
beq _0803FFBC
cmp r5, #1
bgt _0803FF94
cmp r5, #0
beq _0803FF9A
b _08040062
_0803FF94:
cmp r5, #2
beq _08040040
b _08040062
_0803FF9A:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040062
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
movs r0, #0x80
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x14]
cmp r0, #1
bls _08040062
movs r0, #1
strb r0, [r4, #0xf]
b _08040062
_0803FFBC:
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0803FFE4
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
ldr r1, _0803FFE0 @ =gUnk_080D0ABF
ldrb r0, [r4, #0x14]
lsls r0, r0, #1
orrs r0, r5
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
b _08040062
.align 2, 0
_0803FFE0: .4byte gUnk_080D0ABF
_0803FFE4:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0804000C
movs r0, #7
ands r1, r0
cmp r1, #0
bne _0803FFFC
ldrb r2, [r4, #0xf]
adds r0, r4, #0
movs r1, #0x1f
bl sub_0804A98C
_0803FFFC:
ldrb r0, [r4, #0xe]
cmp r0, #5
bhi _08040062
movs r0, #0x80
strb r0, [r4, #0xe]
movs r0, #0
strb r0, [r4, #0xf]
b _08040062
_0804000C:
movs r0, #0x1f
ands r1, r0
cmp r1, #0
bne _08040062
adds r0, r4, #0
movs r1, #0x1f
movs r2, #2
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _08040062
strb r5, [r1, #0xb]
ldrh r0, [r1, #0x32]
subs r0, #0x20
strh r0, [r1, #0x32]
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _08040062
ldrh r0, [r1, #0x24]
lsls r0, r0, #0x10
asrs r0, r0, #0x11
strh r0, [r1, #0x24]
b _08040062
_08040040:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0804005C
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r2]
adds r0, r4, #0
bl sub_08040670
b _08040062
_0804005C:
adds r0, r4, #0
bl sub_08040AD4
_08040062:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0804006C
sub_0804006C: @ 0x0804006C
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_08078B48
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08040090
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080400C2
movs r0, #2
bl sub_0807CD10
movs r0, #8
strb r0, [r4, #0xf]
b _080400BA
_08040090:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _080400B4
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _080400BA
adds r1, r4, #0
adds r1, #0x45
strb r0, [r1]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
b _080400BA
_080400B4:
adds r0, r4, #0
bl sub_0804A7D4
_080400BA:
adds r0, r4, #0
bl sub_080042B8
b _08040126
_080400C2:
ldrb r0, [r4, #0xf]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r4, #0xf]
cmp r0, #0
bne _08040120
adds r0, r4, #0
movs r1, #0x55
movs r2, #0
bl CreateFX
adds r5, r0, #0
cmp r5, #0
beq _08040120
bl Random
ldr r1, _08040128 @ =0x00003F3F
ands r0, r1
movs r3, #0xff
adds r1, r0, #0
ands r1, r3
ldr r6, _0804012C @ =0x0000FFE0
adds r2, r6, #0
adds r1, r2, r1
ldrh r6, [r5, #0x2e]
adds r1, r1, r6
strh r1, [r5, #0x2e]
lsrs r0, r0, #8
ands r0, r3
adds r2, r2, r0
ldrh r0, [r5, #0x32]
adds r2, r2, r0
strh r2, [r5, #0x32]
adds r2, r5, #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 r0, #0xb7
lsls r0, r0, #1
bl PlaySFX
_08040120:
adds r0, r4, #0
bl sub_080042B8
_08040126:
pop {r4, r5, r6, pc}
.align 2, 0
_08040128: .4byte 0x00003F3F
_0804012C: .4byte 0x0000FFE0
thumb_func_start sub_08040130
sub_08040130: @ 0x08040130
push {lr}
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
strb r2, [r0, #0xe]
adds r1, r0, #0
adds r1, #0x80
strb r2, [r1]
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
movs r2, #6
orrs r1, r2
strb r1, [r3]
ldrb r1, [r0, #0xe]
bl sub_080042AC
pop {pc}
.align 2, 0
thumb_func_start sub_0804015C
sub_0804015C: @ 0x0804015C
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x50]
adds r0, r5, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0804017C
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_0804017C:
adds r0, r5, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r4, #0x2e]
adds r0, r5, #0
adds r0, #0x7e
ldrh r0, [r0]
strh r0, [r4, #0x32]
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r0, #0
bne _0804019E
adds r0, r4, #0
bl sub_080042B8
b _080401A6
_0804019E:
adds r0, r4, #0
movs r1, #2
bl sub_080042BA
_080401A6:
ldrb r0, [r5, #0xc]
cmp r0, #4
bls _080401C0
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _080401D2
movs r0, #1
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
b _080401D2
_080401C0:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080401D2
movs r0, #0
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_080401D2:
ldrb r0, [r5, #0xc]
cmp r0, #3
beq _080401DC
ldrh r0, [r5, #0x36]
strh r0, [r4, #0x36]
_080401DC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080401E0
sub_080401E0: @ 0x080401E0
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xb]
adds r5, r1, #0
cmp r5, #0
beq _08040212
movs r0, #1
strb r0, [r4, #0xc]
adds r1, #1
adds r3, r4, #0
adds r3, #0x29
movs r0, #7
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r1, [r4, #0xb]
adds r1, #4
adds r0, r4, #0
bl sub_080042AC
b _08040260
_08040212:
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]
ldr r0, _08040264 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x45
bhi _08040260
adds r0, r4, #0
movs r1, #2
movs r2, #1
bl sub_08040648
adds r0, r4, #0
movs r1, #2
movs r2, #2
bl sub_08040648
movs r0, #1
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
bl Random
movs r1, #0x7f
ands r0, r1
adds r0, #0x17
strb r0, [r4, #0xf]
adds r0, r4, #0
adds r0, #0x74
strb r5, [r0]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_08040260:
pop {r4, r5, pc}
.align 2, 0
_08040264: .4byte gUnk_03003DBC
thumb_func_start sub_08040268
sub_08040268: @ 0x08040268
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08040286
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_08040286:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
ldrb r2, [r4, #0xb]
cmp r2, #1
beq _080402C6
cmp r2, #1
bgt _0804029E
cmp r2, #0
beq _080402E4
b _08040382
_0804029E:
cmp r2, #2
bne _08040382
ldr r1, _080402DC @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
lsls r0, r0, #1
ldr r1, _080402E0 @ =gUnk_080D0B18
adds r0, r0, r1
movs r1, #0
ldrsb r1, [r0, r1]
ldrh r2, [r4, #0x2e]
adds r1, r1, r2
strh r1, [r4, #0x2e]
ldrb r0, [r0, #1]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
_080402C6:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0x1e]
cmp r0, #2
beq _08040382
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
strb r0, [r4, #0x18]
b _08040382
.align 2, 0
_080402DC: .4byte gLinkEntity
_080402E0: .4byte gUnk_080D0B18
_080402E4:
adds r5, r4, #0
adds r5, #0x74
ldrb r0, [r5]
cmp r0, #1
beq _0804032E
cmp r0, #1
bgt _080402F8
cmp r0, #0
beq _08040302
b _08040382
_080402F8:
cmp r0, #0x10
beq _08040354
cmp r0, #0x11
beq _08040366
b _08040382
_08040302:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040382
bl Random
movs r1, #0x7f
ands r0, r1
adds r0, #0x27
strb r0, [r4, #0xf]
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08040382
strb r1, [r5]
adds r0, r4, #0
movs r1, #8
bl sub_080042AC
b _08040382
_0804032E:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08040382
strb r2, [r5]
bl Random
movs r1, #0x7f
ands r0, r1
adds r0, #0x17
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _08040382
_08040354:
adds r0, r4, #0
movs r1, #7
bl sub_080042AC
movs r0, #0x11
strb r0, [r5]
movs r0, #0x50
strb r0, [r4, #0xf]
b _08040382
_08040366:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040382
movs r0, #1
strb r0, [r5]
movs r0, #0x30
strb r0, [r4, #0xf]
adds r0, r4, #0
movs r1, #8
bl sub_080042AC
_08040382:
adds r0, r4, #0
bl sub_080042B8
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0804038C
sub_0804038C: @ 0x0804038C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080403AA
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_080403AA:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0x1e]
cmp r0, #2
bne _080403CA
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
_080403CA:
pop {r4, pc}
thumb_func_start sub_080403CC
sub_080403CC: @ 0x080403CC
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
subs r1, #9
ands r1, r2
movs r2, #4
orrs r1, r2
strb r1, [r3]
movs r1, #0
bl sub_080042AC
pop {pc}
.align 2, 0
thumb_func_start sub_080403EC
sub_080403EC: @ 0x080403EC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0804040A
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_0804040A:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804041C
sub_0804041C: @ 0x0804041C
push {lr}
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
adds r1, r0, #0
adds r1, #0x80
strb r2, [r1]
movs r1, #0xa
strb r1, [r0, #0xe]
ldrb r2, [r0, #0x18]
subs r1, #0xe
ands r1, r2
strb r1, [r0, #0x18]
adds r3, r0, #0
adds r3, #0x29
ldrb r1, [r3]
movs r2, #7
orrs r1, r2
strb r1, [r3]
movs r1, #0
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_0804044C
sub_0804044C: @ 0x0804044C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0804046A
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_0804046A:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #5
beq _0804048A
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0
beq _080404BC
movs r0, #0
strb r0, [r1]
ldrb r1, [r4, #0x18]
subs r0, #4
ands r0, r1
strb r0, [r4, #0x18]
b _080404BC
_0804048A:
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0
bne _080404A6
adds r0, #1
strb r0, [r1]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
_080404A6:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080404BC
movs r0, #0xa
strb r0, [r4, #0xe]
ldr r0, _080404CC @ =0x00000149
bl PlaySFX
_080404BC:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
.align 2, 0
_080404CC: .4byte 0x00000149
thumb_func_start sub_080404D0
sub_080404D0: @ 0x080404D0
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xb]
cmp r0, #0
beq _080404FC
movs r0, #2
strb r0, [r2, #0xc]
movs r0, #0xa
strb r0, [r2, #0xe]
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
subs r0, #0x12
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
adds r0, r2, #0
movs r1, #2
bl sub_08004260
b _08040518
_080404FC:
movs r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x18]
subs r0, #5
ands r0, r1
strb r0, [r2, #0x18]
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]
_08040518:
pop {pc}
.align 2, 0
thumb_func_start sub_0804051C
sub_0804051C: @ 0x0804051C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _0804053A
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_0804053A:
adds r1, r4, #0
adds r1, #0x80
ldrb r0, [r1]
cmp r0, #0
beq _0804054A
cmp r0, #1
beq _0804056C
b _080405C4
_0804054A:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #6
bne _080405CC
movs r0, #1
movs r2, #1
strb r0, [r1]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
b _080405C4
_0804056C:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #6
beq _08040582
movs r0, #0
strb r0, [r1]
ldrb r1, [r4, #0x18]
subs r0, #4
ands r0, r1
strb r0, [r4, #0x18]
b _080405C4
_08040582:
adds r2, r4, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080405A8
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
ldr r0, _080405D0 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x46
bhi _080405A8
ldrb r1, [r4, #0xa]
adds r0, r4, #0
movs r2, #1
bl sub_08040648
_080405A8:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080405BE
movs r0, #0xa
strb r0, [r4, #0xe]
ldr r0, _080405D4 @ =0x00000149
bl PlaySFX
_080405BE:
adds r0, r4, #0
bl sub_08004274
_080405C4:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
_080405CC:
pop {r4, pc}
.align 2, 0
_080405D0: .4byte gUnk_03003DBC
_080405D4: .4byte 0x00000149
thumb_func_start sub_080405D8
sub_080405D8: @ 0x080405D8
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080405F6
adds r2, r4, #0
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #2
orrs r0, r1
strb r0, [r2]
bl sub_0805E780
_080405F6:
adds r3, r4, #0
adds r3, #0x80
ldrb r2, [r3]
cmp r2, #0
bne _08040626
ldr r0, [r4, #0x50]
ldr r0, [r0, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #6
beq _08040638
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08040638
adds r0, r2, #1
strb r0, [r3]
adds r0, r4, #0
movs r1, #3
bl sub_08004260
b _08040638
_08040626:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08040638
bl sub_0805E780
_08040638:
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPosition
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_08040648
sub_08040648: @ 0x08040648
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r4, r1, #0
adds r7, r2, #0
movs r0, #0x4f
bl CreateEnemy
adds r5, r0, #0
strb r7, [r5, #0xb]
str r6, [r5, #0x50]
adds r0, r6, #0
adds r1, r5, #0
bl CopyPosition
cmp r4, #2
bne _0804066E
cmp r7, #0
bne _0804066E
str r5, [r6, #0x54]
_0804066E:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08040670
sub_08040670: @ 0x08040670
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r2, #0xc]
adds r0, r2, #0
adds r0, #0x80
strb r1, [r0]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r2, #0x24]
movs r0, #0xc
strb r0, [r2, #0xe]
ldrb r0, [r2, #0x14]
cmp r0, #0
bne _08040698
adds r0, r2, #0
bl sub_080406A0
b _0804069E
_08040698:
adds r0, r2, #0
bl sub_08040770
_0804069E:
pop {pc}
thumb_func_start sub_080406A0
sub_080406A0: @ 0x080406A0
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
bl Random
mov r8, r0
movs r0, #0x30
mov r1, r8
ands r1, r0
mov r8, r1
adds r0, r5, #0
adds r0, #0x86
ldrb r6, [r0]
ldr r2, _080406F0 @ =gRoomControls
ldrh r3, [r2, #6]
ldr r4, _080406F4 @ =gUnk_080D0B58
lsls r1, r6, #1
lsls r0, r6, #2
adds r0, r0, r4
ldrh r0, [r0]
adds r7, r3, r0
ldrh r2, [r2, #8]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r4
ldrh r0, [r1]
adds r4, r2, r0
adds r0, r5, #0
adds r1, r7, #0
adds r2, r4, #0
movs r3, #0x1c
bl sub_0806FCB8
cmp r0, #0
beq _0804071E
cmp r6, #0
beq _080406F8
movs r6, #0
b _08040702
.align 2, 0
_080406F0: .4byte gRoomControls
_080406F4: .4byte gUnk_080D0B58
_080406F8:
bl Random
movs r1, #1
ands r1, r0
adds r6, r1, #1
_08040702:
ldr r2, _0804074C @ =gRoomControls
ldrh r3, [r2, #6]
ldr r4, _08040750 @ =gUnk_080D0B58
lsls r1, r6, #1
lsls r0, r6, #2
adds r0, r0, r4
ldrh r0, [r0]
adds r7, r3, r0
ldrh r2, [r2, #8]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r4
ldrh r0, [r1]
adds r4, r2, r0
_0804071E:
movs r2, #0x2e
ldrsh r0, [r5, r2]
movs r2, #0x32
ldrsh r1, [r5, r2]
adds r2, r7, #0
adds r3, r4, #0
bl sub_080045D4
strb r0, [r5, #0x15]
movs r0, #0x20
mov r1, r8
ands r0, r1
cmp r0, #0
beq _0804075A
ldrb r1, [r5, #0x15]
movs r0, #0x10
mov r2, r8
ands r2, r0
cmp r2, #0
beq _08040754
adds r0, r1, #1
b _08040758
.align 2, 0
_0804074C: .4byte gRoomControls
_08040750: .4byte gUnk_080D0B58
_08040754:
adds r0, r1, #0
adds r0, #0x1f
_08040758:
strb r0, [r5, #0x15]
_0804075A:
ldrb r0, [r5, #0x15]
movs r1, #0x1f
ands r1, r0
strb r1, [r5, #0x15]
adds r0, r5, #0
adds r0, #0x86
strb r6, [r0]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08040770
sub_08040770: @ 0x08040770
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
bl Random
mov r8, r0
movs r0, #0x38
mov r1, r8
ands r1, r0
mov r8, r1
adds r0, r7, #0
adds r0, #0x86
ldrb r5, [r0]
ldr r2, _080407CC @ =gRoomControls
ldrh r3, [r2, #6]
ldr r4, _080407D0 @ =gUnk_080D0B64
lsls r1, r5, #1
lsls r0, r5, #2
adds r0, r0, r4
ldrh r0, [r0]
adds r6, r3, r0
ldrh r2, [r2, #8]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r4
ldrh r0, [r1]
adds r4, r2, r0
adds r0, r7, #0
adds r1, r6, #0
adds r2, r4, #0
movs r3, #0x1c
bl sub_0806FCB8
cmp r0, #0
beq _0804089A
ldrb r0, [r7, #0x14]
cmp r0, #2
beq _08040822
movs r0, #8
mov r2, r8
ands r0, r2
cmp r0, #0
beq _080407D4
adds r5, #1
b _080407D6
.align 2, 0
_080407CC: .4byte gRoomControls
_080407D0: .4byte gUnk_080D0B64
_080407D4:
adds r5, #3
_080407D6:
movs r0, #3
ands r5, r0
adds r0, r7, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _0804087E
adds r0, r7, #0
adds r0, #0x75
ldrb r0, [r0]
cmp r0, #0x3c
beq _0804080A
cmp r0, #0x3c
bgt _080407F8
cmp r0, #0xf
beq _08040802
b _0804087E
_080407F8:
cmp r0, #0xc3
beq _0804081A
cmp r0, #0xf0
beq _08040812
b _0804087E
_08040802:
cmp r5, #0
bne _0804087E
movs r5, #2
b _0804087E
_0804080A:
cmp r5, #1
bne _0804087E
movs r5, #3
b _0804087E
_08040812:
cmp r5, #2
bne _0804087E
movs r5, #0
b _0804087E
_0804081A:
cmp r5, #3
bne _0804087E
movs r5, #1
b _0804087E
_08040822:
adds r1, r7, #0
adds r1, #0x87
ldrb r2, [r1]
movs r0, #0x7f
ands r0, r2
adds r4, r1, #0
cmp r0, #0
beq _08040848
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _0804083E
adds r5, #1
b _08040840
_0804083E:
adds r5, #3
_08040840:
ldrb r0, [r4]
subs r0, #1
strb r0, [r4]
b _0804087A
_08040848:
bl Random
movs r1, #7
ands r0, r1
adds r0, #4
strb r0, [r4]
ldrb r6, [r4]
bl Random
movs r1, #0x20
ands r1, r0
cmp r1, #0
bne _08040868
movs r1, #0x80
orrs r1, r6
b _0804086A
_08040868:
adds r1, r6, #0
_0804086A:
strb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08040878
adds r5, #1
b _0804087A
_08040878:
adds r5, #3
_0804087A:
movs r0, #3
ands r5, r0
_0804087E:
ldr r2, _080408C8 @ =gRoomControls
ldrh r3, [r2, #6]
ldr r4, _080408CC @ =gUnk_080D0B64
lsls r1, r5, #1
lsls r0, r5, #2
adds r0, r0, r4
ldrh r0, [r0]
adds r6, r3, r0
ldrh r2, [r2, #8]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r4
ldrh r0, [r1]
adds r4, r2, r0
_0804089A:
movs r1, #0x2e
ldrsh r0, [r7, r1]
movs r2, #0x32
ldrsh r1, [r7, r2]
adds r2, r6, #0
adds r3, r4, #0
bl sub_080045D4
strb r0, [r7, #0x15]
movs r0, #0x20
mov r1, r8
ands r0, r1
cmp r0, #0
beq _080408D6
ldrb r1, [r7, #0x15]
movs r0, #0x10
mov r2, r8
ands r2, r0
cmp r2, #0
beq _080408D0
adds r0, r1, #1
b _080408D4
.align 2, 0
_080408C8: .4byte gRoomControls
_080408CC: .4byte gUnk_080D0B64
_080408D0:
adds r0, r1, #0
adds r0, #0x1f
_080408D4:
strb r0, [r7, #0x15]
_080408D6:
ldrb r0, [r7, #0x15]
movs r1, #0x1f
ands r1, r0
strb r1, [r7, #0x15]
adds r0, r7, #0
adds r0, #0x86
strb r5, [r0]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_080408EC
sub_080408EC: @ 0x080408EC
push {r4, r5, r6, r7, lr}
adds r2, r0, #0
ldrb r0, [r2, #0x14]
cmp r0, #0
bne _08040902
movs r1, #0xf0
adds r4, r2, #0
adds r4, #0x75
adds r5, r2, #0
adds r5, #0x76
b _08040926
_08040902:
adds r4, r2, #0
adds r4, #0x75
adds r5, r2, #0
adds r5, #0x76
ldr r7, _08040930 @ =gUnk_080D0B74
movs r6, #0x3c
_0804090E:
bl Random
ands r0, r6
lsrs r0, r0, #2
adds r0, r0, r7
ldrb r1, [r0]
ldrb r0, [r4]
cmp r1, r0
bne _08040922
movs r1, #0xff
_08040922:
cmp r1, #0xff
beq _0804090E
_08040926:
movs r0, #0
strb r1, [r4]
strb r0, [r5]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08040930: .4byte gUnk_080D0B74
thumb_func_start sub_08040934
sub_08040934: @ 0x08040934
push {r4, lr}
adds r4, r0, #0
bl Random
movs r1, #0x3e
ands r1, r0
movs r2, #0
cmp r1, #0x2e
bhi _08040948
movs r2, #1
_08040948:
adds r0, r4, #0
adds r0, #0x87
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
beq _08040958
movs r2, #0
_08040958:
adds r4, #0x84
ldrb r0, [r4]
cmp r0, #9
beq _080409A4
cmp r2, #0
beq _080409AA
adds r0, #1
movs r1, #5
bl __modsi3
strb r0, [r4]
bl Random
movs r1, #0xf8
ands r1, r0
lsrs r1, r1, #3
ldr r0, _08040998 @ =gUnk_080D0B84
adds r0, r1, r0
ldrb r2, [r0]
ldrb r0, [r4]
cmp r0, #1
beq _0804099C
cmp r0, #1
blt _080409AA
cmp r0, #4
bgt _080409AA
cmp r0, #3
blt _080409AA
cmp r2, #0
bne _080409AA
b _080409A8
.align 2, 0
_08040998: .4byte gUnk_080D0B84
_0804099C:
cmp r2, #0
beq _080409A8
movs r2, #3
b _080409AA
_080409A4:
movs r0, #0
strb r0, [r4]
_080409A8:
movs r2, #1
_080409AA:
adds r0, r2, #0
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080409B0
sub_080409B0: @ 0x080409B0
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #0x81
adds r0, r0, r4
mov ip, r0
ldrb r1, [r0]
cmp r1, #1
beq _080409EA
cmp r1, #1
bgt _080409CA
cmp r1, #0
beq _080409D0
b _08040A68
_080409CA:
cmp r1, #2
beq _08040A04
b _08040A68
_080409D0:
adds r0, r4, #0
adds r0, #0x75
adds r2, r4, #0
adds r2, #0x76
ldrb r0, [r0]
ldrb r3, [r2]
cmp r0, r3
bne _08040A68
movs r0, #1
mov r3, ip
strb r0, [r3]
strb r1, [r2]
b _08040A68
_080409EA:
adds r0, r4, #0
adds r0, #0x76
ldrb r0, [r0]
cmp r0, #0
beq _08040A68
movs r0, #2
mov r1, ip
strb r0, [r1]
adds r1, r4, #0
adds r1, #0x77
movs r0, #0x10
strb r0, [r1]
b _08040A68
_08040A04:
adds r1, r4, #0
adds r1, #0x77
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
bne _08040A68
adds r0, r4, #0
adds r0, #0x75
adds r3, r4, #0
adds r3, #0x76
ldrb r1, [r0]
ldrb r0, [r3]
ands r0, r1
cmp r1, r0
beq _08040A3C
movs r0, #1
mov r1, ip
strb r0, [r1]
strb r2, [r3]
ldr r0, _08040A38 @ =0x00000155
bl PlaySFX
b _08040A68
.align 2, 0
_08040A38: .4byte 0x00000155
_08040A3C:
movs r1, #3
strb r1, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
mov r3, ip
strb r1, [r3]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x36
strb r0, [r1]
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r4, #0x20]
movs r0, #0xb2
lsls r0, r0, #1
bl PlaySFX
_08040A68:
adds r0, r4, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #2
bhi _08040A84
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
beq _08040AC8
adds r0, r4, #0
bl sub_080AF18C
b _08040AC8
_08040A84:
adds r2, r4, #0
adds r2, #0x41
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
adds r5, r2, #0
cmp r0, #0
beq _08040AB0
adds r0, r4, #0
adds r0, #0x3d
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
ble _08040AB0
movs r0, #0xc
movs r1, #1
bl sub_08080964
ldr r0, _08040ACC @ =0x00000127
bl PlaySFX
_08040AB0:
ldrb r0, [r5]
cmp r0, #0x8a
bne _08040AC8
ldr r0, _08040AD0 @ =gLinkState
adds r0, #0xa0
ldrb r0, [r0]
cmp r0, #5
bne _08040AC8
adds r1, r4, #0
adds r1, #0x45
movs r0, #0xc0
strb r0, [r1]
_08040AC8:
pop {r4, r5, pc}
.align 2, 0
_08040ACC: .4byte 0x00000127
_08040AD0: .4byte gLinkState
thumb_func_start sub_08040AD4
sub_08040AD4: @ 0x08040AD4
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
movs r1, #0x3f
ands r1, r0
lsls r6, r1, #0x18
lsrs r4, r6, #0x18
movs r0, #0x1f
ands r0, r4
cmp r0, #0
bne _08040AF0
ldr r0, _08040B0C @ =0x000001A9
bl PlaySFX
_08040AF0:
movs r0, #3
ands r4, r0
cmp r4, #0
bne _08040B2A
lsrs r4, r6, #0x1a
movs r0, #0x2e
ldrsh r2, [r5, r0]
adds r0, r4, #4
movs r1, #8
ands r0, r1
cmp r0, #0
beq _08040B10
subs r0, r2, #1
b _08040B12
.align 2, 0
_08040B0C: .4byte 0x000001A9
_08040B10:
adds r0, r2, #1
_08040B12:
strh r0, [r5, #0x2e]
movs r0, #0x32
ldrsh r2, [r5, r0]
adds r0, r4, #2
movs r1, #4
ands r0, r1
cmp r0, #0
beq _08040B26
subs r0, r2, #1
b _08040B28
_08040B26:
adds r0, r2, #1
_08040B28:
strh r0, [r5, #0x32]
_08040B2A:
pop {r4, r5, r6, pc}
thumb_func_start sub_08040B2C
sub_08040B2C: @ 0x08040B2C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #1
bne _08040B5C
ldr r0, [r5, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08040B5C
adds r0, r5, #0
bl sub_08041300
cmp r0, #0
beq _08040B4E
adds r0, r5, #0
bl sub_0803F6EC
_08040B4E:
adds r0, r5, #0
movs r1, #2
movs r2, #0
bl CreateFX
bl sub_0805E780
_08040B5C:
ldr r4, _08040B80 @ =gUnk_080D0DC4
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
movs r3, #0x10
rsbs r3, r3, #0
adds r0, r5, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, r5, pc}
.align 2, 0
_08040B80: .4byte gUnk_080D0DC4
thumb_func_start sub_08040B84
sub_08040B84: @ 0x08040B84
push {lr}
ldr r2, _08040B98 @ =gUnk_080D0DDC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08040B98: .4byte gUnk_080D0DDC
thumb_func_start sub_08040B9C
sub_08040B9C: @ 0x08040B9C
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _08040BD0
movs r0, #0xff
strb r0, [r4, #0x14]
adds r0, r4, #0
adds r0, #0x3e
ldrb r1, [r0]
lsrs r1, r1, #4
movs r0, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
bl sub_08041134
adds r0, r4, #0
bl sub_0803F6EC
_08040BD0:
adds r0, r4, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x25
bne _08040BF4
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #0x80
bne _08040C0E
movs r0, #8
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #3
bl sub_08004260
b _08040C9C
_08040BF4:
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
adds r5, r0, #0
cmp r1, #0x80
bne _08040C0E
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x78
strh r0, [r1]
adds r0, r4, #0
bl sub_08041128
_08040C0E:
ldrb r0, [r5]
cmp r0, #0x9d
bne _08040C1A
movs r0, #0xc0
lsls r0, r0, #9
str r0, [r4, #0x20]
_08040C1A:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08040C40
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
lsrs r0, r0, #4
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #7
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08040C40:
adds r0, r4, #0
adds r0, #0x45
adds r1, r4, #0
adds r1, #0x7a
ldrb r2, [r0]
adds r6, r0, #0
adds r5, r1, #0
ldrb r0, [r5]
cmp r2, r0
beq _08040C9C
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08040C70
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
lsrs r0, r0, #4
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r1, #7
adds r0, r4, #0
bl sub_08004260
b _08040C98
_08040C70:
adds r1, r4, #0
adds r1, #0x3d
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #0
ble _08040C84
movs r0, #0x80
orrs r0, r2
strb r0, [r1]
_08040C84:
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #0xff
strb r0, [r6]
movs r0, #0xa
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
_08040C98:
ldrb r0, [r6]
strb r0, [r5]
_08040C9C:
ldr r1, _08040CA8 @ =gUnk_080D0DC4
adds r0, r4, #0
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_08040CA8: .4byte gUnk_080D0DC4
thumb_func_start sub_08040CAC
sub_08040CAC: @ 0x08040CAC
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_08001328
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08040D04
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _08040D2C
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _08040D2C
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
bne _08040D2C
movs r0, #0xff
strb r0, [r4, #0x14]
adds r1, r4, #0
adds r1, #0x58
ldrb r0, [r1]
subs r0, #7
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _08040D2C
ldrb r1, [r1]
subs r1, #7
movs r0, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
b _08040D2C
_08040D04:
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
movs r5, #4
rsbs r5, r5, #0
adds r3, r5, #0
ands r3, r2
orrs r3, r1
strb r3, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x42
ldrb r0, [r0]
cmp r0, #0
bne _08040D2C
ands r3, r5
movs r0, #1
orrs r3, r0
strb r3, [r4, #0x18]
_08040D2C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08040D30
sub_08040D30: @ 0x08040D30
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
subs r0, #7
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bls _08040D4C
ldrb r1, [r4, #0x14]
adds r1, #7
adds r0, r4, #0
bl sub_08004260
_08040D4C:
adds r0, r4, #0
bl sub_08001242
ldrh r1, [r4, #0x36]
movs r2, #0x36
ldrsh r0, [r4, r2]
cmp r0, #0
bne _08040D60
ldr r0, _08040D8C @ =0x0000FFFF
strh r0, [r4, #0x36]
_08040D60:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
bne _08040D88
ldrb r0, [r4, #0x14]
movs r1, #1
eors r1, r0
adds r1, #1
adds r0, r4, #0
bl sub_08004260
movs r0, #0xff
strb r0, [r4, #0x15]
movs r0, #1
rsbs r0, r0, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08041134
_08040D88:
pop {r4, pc}
.align 2, 0
_08040D8C: .4byte 0x0000FFFF
thumb_func_start sub_08040D90
sub_08040D90: @ 0x08040D90
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
beq _08040DB4
ldr r0, _08040DB0 @ =gUnk_080D0E08
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _08040DC6
.align 2, 0
_08040DB0: .4byte gUnk_080D0E08
_08040DB4:
adds r0, r4, #0
bl sub_08041128
ldrb r1, [r4, #0x15]
lsrs r1, r1, #4
adds r1, #1
adds r0, r4, #0
bl sub_08004260
_08040DC6:
pop {r4, pc}
thumb_func_start sub_08040DC8
sub_08040DC8: @ 0x08040DC8
push {lr}
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x3c
strb r1, [r0, #0x1d]
ldr r1, _08040DE0 @ =gLinkEntity
ldrb r1, [r1, #0x14]
lsrs r1, r1, #2
adds r1, #5
bl sub_08004260
pop {pc}
.align 2, 0
_08040DE0: .4byte gLinkEntity
thumb_func_start sub_08040DE4
sub_08040DE4: @ 0x08040DE4
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0806F4E8
pop {r4, pc}
thumb_func_start sub_08040DF4
sub_08040DF4: @ 0x08040DF4
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0806F3E4
cmp r0, #0
beq _08040E38
adds r0, r4, #0
movs r1, #2
movs r2, #0
bl CreateFX
cmp r0, #0
beq _08040E26
adds r2, r0, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
_08040E26:
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08040E34
adds r0, r4, #0
bl sub_0804A7D4
b _08040E38
_08040E34:
bl sub_0805E780
_08040E38:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08040E3C
sub_08040E3C: @ 0x08040E3C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0804A720
bl Random
movs r2, #0x1e
adds r1, r0, #0
ands r1, r2
movs r2, #0
strb r1, [r4, #0x15]
movs r1, #0xff
strb r1, [r4, #0x14]
movs r5, #1
strb r5, [r4, #0x1c]
adds r1, r4, #0
adds r1, #0x45
ldrb r1, [r1]
adds r3, r4, #0
adds r3, #0x7a
strb r1, [r3]
lsrs r0, r0, #4
adds r1, r4, #0
adds r1, #0x7b
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x7c
strh r2, [r0]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08040E86
strb r5, [r4, #0xc]
ldrb r0, [r4, #0xe]
bl sub_0804B128
str r0, [r4, #0x54]
b _08040E8C
_08040E86:
adds r0, r4, #0
bl sub_080411CC
_08040E8C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08040E90
sub_08040E90: @ 0x08040E90
push {r4, lr}
adds r4, r0, #0
bl sub_080411E8
cmp r0, #0
beq _08040EA4
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0xf
strb r0, [r4, #0xe]
_08040EA4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08040EA8
sub_08040EA8: @ 0x08040EA8
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040EC4
adds r0, r4, #0
bl sub_080411CC
adds r0, r4, #0
bl sub_0804122C
_08040EC4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08040EC8
sub_08040EC8: @ 0x08040EC8
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08040F08
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
bl Random
adds r1, r4, #0
adds r1, #0x80
ldrb r2, [r1]
movs r1, #0x30
ands r1, r0
adds r1, #0x3c
adds r0, r2, #0
muls r0, r1, r0
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x7c
strh r0, [r1]
adds r0, r4, #0
bl sub_08041128
_08040F08:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08040F0C
sub_08040F0C: @ 0x08040F0C
push {r4, lr}
adds r4, r0, #0
bl sub_08041170
cmp r0, #0
bne _08040F36
adds r0, r4, #0
bl sub_0803F58C
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08040F36
adds r0, r4, #0
bl sub_08041128
_08040F36:
pop {r4, pc}
thumb_func_start sub_08040F38
sub_08040F38: @ 0x08040F38
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
movs r1, #1
bl sub_08049F84
strb r0, [r4, #0x15]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xff
beq _08040F8E
adds r0, r4, #0
bl sub_0803F66C
adds r1, r4, #0
adds r1, #0x78
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08040F94
movs r0, #6
strb r0, [r4, #0xc]
bl Random
movs r2, #0xe0
adds r1, r0, #0
ands r1, r2
strb r1, [r4, #0xe]
movs r1, #0x80
lsls r1, r1, #1
strh r1, [r4, #0x24]
lsrs r0, r0, #8
movs r1, #0x78
ands r0, r1
adds r0, #0x3c
adds r1, r4, #0
adds r1, #0x7e
strh r0, [r1]
b _08040F94
_08040F8E:
adds r0, r4, #0
bl sub_08041128
_08040F94:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08040F98
sub_08040F98: @ 0x08040F98
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0803F5A8
cmp r0, #0
bne _08040FB2
adds r0, r4, #0
bl sub_08041128
b _08041014
_08040FB2:
movs r0, #1
bl sub_08049DF4
cmp r0, #0
beq _0804100C
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
beq _0804100C
ldrb r1, [r4, #0xe]
adds r1, #1
strb r1, [r4, #0xe]
ldr r2, _08041004 @ =gUnk_080D0E14
lsls r0, r1, #0x18
lsrs r0, r0, #0x1e
adds r0, r0, r2
ldrb r0, [r0]
ands r1, r0
cmp r1, #0
bne _08040FF4
ldr r0, _08041008 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
bl sub_080045C4
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_08040FF4:
adds r0, r4, #0
bl sub_0803F66C
adds r0, r4, #0
bl sub_080AEFB4
b _08041014
.align 2, 0
_08041004: .4byte gUnk_080D0E14
_08041008: .4byte gUnk_020000B0
_0804100C:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
_08041014:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08041018
sub_08041018: @ 0x08041018
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08041042
bl Random
movs r1, #0xf8
ands r0, r1
adds r0, #0xb4
adds r1, r4, #0
adds r1, #0x7c
strh r0, [r1]
adds r0, r4, #0
bl sub_08041128
_08041042:
pop {r4, pc}
thumb_func_start sub_08041044
sub_08041044: @ 0x08041044
push {r4, lr}
adds r4, r0, #0
bl sub_0803F738
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08041074
movs r0, #0
movs r1, #9
strb r1, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
adds r0, r4, #0
movs r1, #4
bl sub_08004260
_08041074:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08041078
sub_08041078: @ 0x08041078
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08041094
adds r0, r4, #0
bl sub_0803F6C0
_08041094:
bl sub_0807953C
adds r1, r4, #0
adds r1, #0x78
cmp r0, #0
beq _080410A6
ldrh r0, [r1]
adds r0, #8
strh r0, [r1]
_080410A6:
ldr r2, _08041100 @ =gLinkEntity
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _080410B6
movs r0, #0xe0
strh r0, [r1]
_080410B6:
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xdf
bls _08041104
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x78
strh r0, [r1]
movs r0, #0xff
strb r0, [r4, #0x14]
subs r1, #0x3f
movs r0, #0xf4
strb r0, [r1]
adds r1, #5
movs r0, #0x14
strb r0, [r1]
adds r1, #4
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
ldrb r0, [r2, #0x14]
lsls r0, r0, #2
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x3e
strb r0, [r1]
adds r0, r4, #0
bl sub_08041128
adds r0, r4, #0
bl sub_0803F6EC
b _0804110A
.align 2, 0
_08041100: .4byte gLinkEntity
_08041104:
adds r0, r4, #0
bl sub_0803F738
_0804110A:
pop {r4, pc}
thumb_func_start sub_0804110C
sub_0804110C: @ 0x0804110C
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08041126
adds r0, r4, #0
bl sub_08041128
_08041126:
pop {r4, pc}
thumb_func_start sub_08041128
sub_08041128: @ 0x08041128
push {lr}
movs r1, #4
strb r1, [r0, #0xc]
bl sub_0803F528
pop {pc}
thumb_func_start sub_08041134
sub_08041134: @ 0x08041134
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #5
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x25
strb r0, [r1]
movs r5, #0
ldr r0, _08041168 @ =gUnk_03004040
ldr r0, [r0]
cmp r0, #0
beq _08041150
movs r5, #0x3c
_08041150:
bl Random
ldr r2, _0804116C @ =gUnk_080D0E18
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r5
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
pop {r4, r5, pc}
.align 2, 0
_08041168: .4byte gUnk_03004040
_0804116C: .4byte gUnk_080D0E18
thumb_func_start sub_08041170
sub_08041170: @ 0x08041170
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrh r0, [r1]
cmp r0, #0
beq _08041184
subs r0, #1
strh r0, [r1]
b _080411C8
_08041184:
adds r0, r4, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _080411C8
adds r0, r4, #0
bl sub_0806FD54
cmp r0, #0
bne _080411B6
ldr r0, _080411C0 @ =gUnk_02033A90
movs r1, #0xa
ldrsh r0, [r0, r1]
cmp r0, #0xf
ble _080411C8
ldr r0, _080411C4 @ =gUnk_020000B0
ldr r1, [r0]
adds r0, r4, #0
movs r2, #0x70
movs r3, #0x48
bl sub_080041A0
cmp r0, #0
beq _080411C8
_080411B6:
adds r0, r4, #0
bl sub_08041134
movs r0, #1
b _080411CA
.align 2, 0
_080411C0: .4byte gUnk_02033A90
_080411C4: .4byte gUnk_020000B0
_080411C8:
movs r0, #0
_080411CA:
pop {r4, pc}
thumb_func_start sub_080411CC
sub_080411CC: @ 0x080411CC
push {lr}
movs r1, #3
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x18]
subs r1, #7
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
movs r1, #0
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_080411E8
sub_080411E8: @ 0x080411E8
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_08049FDC
cmp r0, #0
beq _08041222
ldrb r0, [r4, #0xb]
cmp r0, #1
beq _08041204
cmp r0, #2
beq _08041218
_08041200:
movs r0, #1
b _08041224
_08041204:
ldr r0, _08041214 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
lsls r1, r1, #0x10
ands r0, r1
cmp r0, #0
beq _08041222
b _08041200
.align 2, 0
_08041214: .4byte gLinkState
_08041218:
ldr r0, _08041228 @ =gUnk_02033A90
movs r1, #0xa
ldrsh r0, [r0, r1]
cmp r0, #0xf
bgt _08041200
_08041222:
movs r0, #0
_08041224:
pop {r4, pc}
.align 2, 0
_08041228: .4byte gUnk_02033A90
thumb_func_start sub_0804122C
sub_0804122C: @ 0x0804122C
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r4, r0, #0
ldr r0, [r4, #0x54]
mov r8, r0
bl Random
movs r6, #6
ands r6, r0
lsrs r5, r0, #8
movs r0, #3
ands r5, r0
movs r7, #0
ldr r3, _080412FC @ =gRoomControls
mov sb, r3
_08041250:
movs r0, #0x50
movs r1, #1
bl CreateEnemy
adds r2, r0, #0
cmp r2, #0
beq _080412C8
lsls r1, r6, #1
add r1, r8
mov r3, sb
ldrh r0, [r3, #6]
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r2, #0x2e]
mov r3, sb
ldrh r0, [r3, #8]
ldrh r1, [r1, #2]
adds r0, r0, r1
strh r0, [r2, #0x32]
str r4, [r2, #0x50]
adds r0, r2, #0
adds r0, #0x80
strb r5, [r0]
adds r3, r2, #0
adds r3, #0x6d
ldrb r0, [r3]
movs r1, #4
orrs r0, r1
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x70
ldrh r1, [r0]
adds r0, r2, #0
adds r0, #0x70
strh r1, [r0]
adds r0, r4, #0
adds r0, #0x72
ldrh r0, [r0]
adds r1, r2, #0
adds r1, #0x72
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x6e
ldrb r0, [r0]
subs r1, #4
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x6f
ldrb r0, [r0]
adds r1, #1
strb r0, [r1]
adds r0, r2, #0
bl sub_08016A30
adds r6, #2
movs r0, #6
ands r6, r0
adds r5, #1
movs r0, #3
ands r5, r0
_080412C8:
adds r7, #1
cmp r7, #2
bls _08041250
lsls r1, r6, #1
add r1, r8
ldr r2, _080412FC @ =gRoomControls
ldrh r0, [r2, #6]
ldrh r3, [r1]
adds r0, r0, r3
movs r3, #0
strh r0, [r4, #0x2e]
ldrh r0, [r2, #8]
ldrh r1, [r1, #2]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r0, r4, #0
adds r0, #0x38
strb r3, [r0]
adds r0, r4, #0
bl sub_08016A30
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080412FC: .4byte gRoomControls
thumb_func_start sub_08041300
sub_08041300: @ 0x08041300
push {lr}
adds r1, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #0x25
bne _0804131A
adds r0, r1, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x80
bne _0804131A
movs r0, #1
b _0804132C
_0804131A:
movs r2, #0
ldrb r0, [r1, #0xc]
subs r0, #8
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #1
bhi _0804132A
movs r2, #1
_0804132A:
adds r0, r2, #0
_0804132C:
pop {pc}
.align 2, 0
thumb_func_start sub_08041330
sub_08041330: @ 0x08041330
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08041384
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08041384
adds r2, r4, #0
adds r2, #0x45
ldrb r0, [r2]
cmp r0, #0
bne _08041384
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #0xff
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x84
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08041384
movs r0, #0xd
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
ldr r0, _08041398 @ =0x80010000
bl PlaySFX
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
_08041384:
ldr r0, _0804139C @ =gUnk_080D0E1C
ldrb r1, [r4, #0xa]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_08041398: .4byte 0x80010000
_0804139C: .4byte gUnk_080D0E1C
thumb_func_start sub_080413A0
sub_080413A0: @ 0x080413A0
push {r4, lr}
adds r4, r0, #0
bl sub_080423A4
ldr r1, _080413BC @ =gUnk_080D0E2C
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080413BC: .4byte gUnk_080D0E2C
thumb_func_start sub_080413C0
sub_080413C0: @ 0x080413C0
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldr r7, _080413F8 @ =gUnk_030010A0
adds r0, r7, #0
adds r0, #0x38
ldrb r0, [r0]
movs r6, #1
adds r5, r6, #0
ands r5, r0
cmp r5, #0
beq _08041420
adds r0, r4, #0
bl sub_08041FCC
cmp r0, #0
beq _08041486
adds r0, r7, #0
adds r0, #0x39
ldrb r1, [r0]
movs r0, #0xc
ands r0, r1
cmp r0, #0
bne _080413FC
movs r0, #5
strb r0, [r4, #0xc]
strb r6, [r4, #0xd]
b _08041404
.align 2, 0
_080413F8: .4byte gUnk_030010A0
_080413FC:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
_08041404:
ldr r0, _0804141C @ =gUnk_030010A0
adds r1, r0, #0
adds r1, #0x40
ldrh r1, [r1]
strh r1, [r4, #0x2e]
adds r0, #0x42
ldrh r0, [r0]
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_08042004
b _0804144A
.align 2, 0
_0804141C: .4byte gUnk_030010A0
_08041420:
adds r0, r4, #0
bl sub_08041ED4
cmp r0, #0
beq _08041486
strb r6, [r4, #0xc]
strb r5, [r4, #0xd]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0xb1
ands r0, r1
strb r0, [r2]
ldr r0, _08041488 @ =0x0000FFB0
strh r0, [r4, #0x36]
ldr r0, _0804148C @ =gRoomControls
str r4, [r0, #0x30]
bl sub_080809D4
_0804144A:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r3, r4, #0
adds r3, #0x6d
ldrb r0, [r3]
movs r2, #0
orrs r1, r0
strb r1, [r3]
adds r0, r4, #0
adds r0, #0x79
strb r2, [r0]
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x3c
strh r0, [r1]
adds r1, #2
movs r0, #0x78
strh r0, [r1]
adds r1, #6
movs r0, #3
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_08041486:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08041488: .4byte 0x0000FFB0
_0804148C: .4byte gRoomControls
thumb_func_start sub_08041490
sub_08041490: @ 0x08041490
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080042B8
ldrb r0, [r4, #0xd]
cmp r0, #5
bls _080414A0
b _080415CC
_080414A0:
lsls r0, r0, #2
ldr r1, _080414AC @ =_080414B0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080414AC: .4byte _080414B0
_080414B0: @ jump table
.4byte _080415E6 @ case 0
.4byte _080414C8 @ case 1
.4byte _08041510 @ case 2
.4byte _08041532 @ case 3
.4byte _0804155C @ case 4
.4byte _08041592 @ case 5
_080414C8:
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
ldr r0, [r4, #0x34]
movs r1, #0x80
lsls r1, r1, #8
adds r0, r0, r1
str r0, [r4, #0x34]
ldrh r1, [r4, #0x36]
movs r0, #0x3f
ands r0, r1
cmp r0, #0
bne _080414F4
ldr r0, _0804150C @ =0x000001A9
bl PlaySFX
_080414F4:
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
ble _080415E6
movs r0, #2
strb r0, [r4, #0xd]
ldr r0, _0804150C @ =0x000001A9
bl PlaySFX
b _080415E6
.align 2, 0
_0804150C: .4byte 0x000001A9
_08041510:
adds r0, r4, #0
bl sub_08042004
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08041520
subs r0, #1
b _080415E4
_08041520:
adds r0, r4, #0
movs r1, #0
bl sub_08041F74
cmp r0, #0
beq _080415E6
movs r0, #3
strb r0, [r4, #0xd]
b _080415E2
_08041532:
adds r0, r4, #0
bl sub_08042004
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _08041544
subs r0, #1
b _080415E4
_08041544:
adds r0, r4, #0
movs r1, #1
bl sub_08041F74
cmp r0, #0
beq _080415E6
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x78
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
b _080415E6
_0804155C:
adds r0, r4, #0
bl sub_08042004
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _08041574
movs r0, #5
strb r0, [r4, #0xd]
b _080415E6
_08041574:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3c
bhi _080415E6
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _080415E6
adds r0, r4, #0
bl sub_08041F1C
cmp r0, #0
beq _080415E6
movs r0, #1
strb r0, [r4, #0xf]
b _080415E6
_08041592:
adds r0, r4, #0
bl sub_08042004
movs r0, #6
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
ldr r1, _080415BC @ =gUnk_030010A0
adds r1, #0x38
ldrb r2, [r1]
movs r0, #1
orrs r0, r2
strb r0, [r1]
ldr r1, _080415C0 @ =gRoomControls
ldr r0, _080415C4 @ =gLinkEntity
str r0, [r1, #0x30]
ldr r0, _080415C8 @ =gLinkState
adds r0, #0x8b
movs r1, #1
strb r1, [r0]
b _080415E6
.align 2, 0
_080415BC: .4byte gUnk_030010A0
_080415C0: .4byte gRoomControls
_080415C4: .4byte gLinkEntity
_080415C8: .4byte gLinkState
_080415CC:
adds r0, r4, #0
bl sub_08042004
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080415E6
movs r0, #2
strb r0, [r4, #0xc]
_080415E2:
movs r0, #0x3c
_080415E4:
strb r0, [r4, #0xe]
_080415E6:
pop {r4, r5, pc}
thumb_func_start sub_080415E8
sub_080415E8: @ 0x080415E8
push {r4, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08041614
bl Random
movs r1, #1
ands r0, r1
adds r0, #1
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08042028
_08041614:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08041618
sub_08041618: @ 0x08041618
push {r4, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_080AEF88
ldr r0, _0804165C @ =gRoomControls
ldrh r2, [r0, #8]
adds r0, r2, #0
adds r0, #0x90
movs r3, #0x32
ldrsh r1, [r4, r3]
cmp r0, r1
blt _08041644
adds r0, r2, #0
adds r0, #0x40
cmp r0, r1
ble _08041646
_08041644:
strh r0, [r4, #0x32]
_08041646:
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _08041660
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
b _08041694
.align 2, 0
_0804165C: .4byte gRoomControls
_08041660:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1d
bhi _0804166E
ldrh r0, [r4, #0x24]
subs r0, #8
b _0804167A
_0804166E:
ldrh r1, [r4, #0x24]
movs r2, #0x24
ldrsh r0, [r4, r2]
cmp r0, #0xff
bgt _0804167C
adds r0, r1, #6
_0804167A:
strh r0, [r4, #0x24]
_0804167C:
ldrb r1, [r4, #0xe]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _08041694
adds r0, r4, #0
bl sub_0804207C
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
_08041694:
adds r0, r4, #0
bl sub_0804212C
adds r0, r4, #0
bl sub_080421AC
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080416A4
sub_080416A4: @ 0x080416A4
push {r4, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _080416DA
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r1
cmp r0, #0
bne _080416D4
adds r0, r4, #0
bl sub_08042120
b _080416DA
_080416D4:
adds r0, r4, #0
bl sub_08042028
_080416DA:
pop {r4, pc}
thumb_func_start sub_080416DC
sub_080416DC: @ 0x080416DC
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08042004
adds r0, r5, #0
bl sub_080042B8
adds r0, r5, #0
bl sub_0804212C
adds r0, r5, #0
bl sub_080421AC
ldrb r1, [r5, #0xd]
cmp r1, #0
bne _08041748
movs r4, #1
strb r4, [r5, #0xd]
bl Random
ands r0, r4
cmp r0, #0
beq _08041716
ldr r0, [r5, #0x64]
ldr r2, [r0, #0x14]
cmp r2, #0
bne _08041724
ldr r2, [r0, #0x18]
b _08041720
_08041716:
ldr r0, [r5, #0x64]
ldr r2, [r0, #0x18]
cmp r2, #0
bne _08041724
ldr r2, [r0, #0x14]
_08041720:
cmp r2, #0
beq _08041734
_08041724:
ldrb r0, [r2, #0xc]
cmp r0, #2
bne _08041734
movs r1, #0
movs r0, #4
strb r0, [r2, #0xc]
strb r1, [r2, #0xd]
b _080417AA
_08041734:
bl Random
movs r1, #1
ands r0, r1
adds r0, #1
strb r0, [r5, #0xf]
adds r0, r5, #0
bl sub_08042028
b _080417AA
_08041748:
adds r0, r5, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #0
bne _080417AA
adds r2, r1, #0
cmp r2, #2
bne _080417AA
ldr r0, _0804179C @ =gUnk_030010A0
adds r0, #0x39
ldrb r1, [r0]
movs r0, #3
ands r0, r1
cmp r0, #0
bne _080417A4
movs r0, #0xb5
movs r1, #0
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
beq _080417AA
str r5, [r2, #0x50]
ldr r1, [r5, #0x64]
str r2, [r1, #0x10]
ldr r0, _080417A0 @ =gRoomControls
str r2, [r0, #0x30]
movs r0, #6
strb r0, [r5, #0xc]
movs r0, #0x1e
strb r0, [r5, #0xe]
ldr r1, [r1, #4]
movs r0, #1
strb r0, [r1, #0xd]
ldr r0, [r5, #0x64]
ldr r0, [r0, #4]
movs r1, #0xe
bl sub_08004260
b _080417AA
.align 2, 0
_0804179C: .4byte gUnk_030010A0
_080417A0: .4byte gRoomControls
_080417A4:
strb r2, [r5, #0xc]
movs r0, #0x3c
strb r0, [r5, #0xe]
_080417AA:
pop {r4, r5, pc}
thumb_func_start sub_080417AC
sub_080417AC: @ 0x080417AC
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _08041816
ldr r0, [r5, #0x64]
ldr r4, [r0, #4]
adds r0, r4, #0
bl sub_08004274
adds r4, #0x5a
ldrb r1, [r4]
adds r0, r1, #0
cmp r0, #1
bne _080417DA
movs r0, #0xfe
ands r0, r1
strb r0, [r4]
adds r0, r5, #0
movs r1, #4
bl sub_080042AC
b _0804181A
_080417DA:
cmp r0, #2
bne _08041806
movs r0, #0x51
movs r1, #3
bl CreateEnemy
adds r1, r0, #0
cmp r1, #0
beq _0804181A
ldr r0, [r5, #0x64]
str r0, [r1, #0x64]
ldr r0, [r5, #0x64]
str r1, [r0, #0xc]
ldr r0, [r0, #8]
movs r1, #0x14
bl sub_08004260
ldrb r1, [r4]
movs r0, #0xfd
ands r0, r1
strb r0, [r4]
b _0804181A
_08041806:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0804181A
adds r0, r5, #0
bl sub_0804235C
b _0804181A
_08041816:
subs r0, #1
strb r0, [r5, #0xe]
_0804181A:
adds r0, r5, #0
bl sub_08042004
adds r0, r5, #0
bl sub_080042B8
pop {r4, r5, pc}
thumb_func_start sub_08041828
sub_08041828: @ 0x08041828
push {r4, lr}
adds r4, r0, #0
bl sub_08042214
adds r0, r4, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
ldr r2, _08041868 @ =gRoomControls
ldrh r0, [r2, #8]
adds r0, #0x48
movs r3, #0x32
ldrsh r1, [r4, r3]
cmp r0, r1
beq _0804186C
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
ldrh r0, [r2, #8]
adds r0, #0x48
movs r2, #0
cmp r0, r1
blt _0804185C
movs r2, #0x10
_0804185C:
strb r2, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F69C
b _0804187E
.align 2, 0
_08041868: .4byte gRoomControls
_0804186C:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804187E
adds r0, r4, #0
bl sub_08042050
_0804187E:
pop {r4, pc}
thumb_func_start sub_08041880
sub_08041880: @ 0x08041880
push {r4, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_0806F69C
ldr r0, _080418D4 @ =gRoomControls
ldrh r2, [r0, #6]
adds r0, r2, #0
adds r0, #0x20
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
bgt _080418AE
movs r3, #0xa0
lsls r3, r3, #1
adds r0, r2, r3
cmp r0, r1
bge _080418BE
_080418AE:
movs r1, #0x24
ldrsh r0, [r4, r1]
cmp r0, #0x3f
ble _080418BE
ldrb r0, [r4, #0x15]
movs r1, #0x10
eors r0, r1
strb r0, [r4, #0x15]
_080418BE:
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _080418D8
movs r0, #9
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
b _080418F8
.align 2, 0
_080418D4: .4byte gRoomControls
_080418D8:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1d
bhi _080418E6
ldrh r0, [r4, #0x24]
subs r0, #0xc
b _080418F6
_080418E6:
ldrh r2, [r4, #0x24]
movs r3, #0x24
ldrsh r1, [r4, r3]
ldr r0, _08041900 @ =0x000001FF
cmp r1, r0
bgt _080418F8
adds r0, r2, #0
adds r0, #0x10
_080418F6:
strh r0, [r4, #0x24]
_080418F8:
adds r0, r4, #0
bl sub_08042214
pop {r4, pc}
.align 2, 0
_08041900: .4byte 0x000001FF
thumb_func_start sub_08041904
sub_08041904: @ 0x08041904
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
adds r3, r4, #0
adds r3, #0x79
ldrb r0, [r3]
cmp r0, #0
beq _08041924
adds r0, r4, #0
bl sub_08042214
b _0804197A
_08041924:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r2, r0, #0x18
cmp r2, #0
bne _0804197A
ldr r0, _0804196C @ =gLinkEntity
movs r1, #0x2e
ldrsh r0, [r0, r1]
movs r5, #0x2e
ldrsh r1, [r4, r5]
subs r0, r0, r1
adds r0, #0x40
cmp r0, #0x80
bhi _08041970
movs r0, #0xa
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x7b
strb r2, [r0]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x1c]
movs r1, #1
strb r1, [r0, #0xe]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x20]
strb r1, [r0, #0xe]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x24]
strb r1, [r0, #0xe]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x28]
strb r1, [r0, #0xe]
b _0804197A
.align 2, 0
_0804196C: .4byte gLinkEntity
_08041970:
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x1e
strb r0, [r4, #0xe]
strb r2, [r3]
_0804197A:
pop {r4, r5, pc}
thumb_func_start sub_0804197C
sub_0804197C: @ 0x0804197C
push {r4, lr}
adds r4, r0, #0
bl sub_08042004
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
cmp r0, #0xf
bne _080419A6
movs r1, #0
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x79
strb r1, [r0]
b _080419F6
_080419A6:
cmp r0, #0xf0
bne _080419F6
movs r1, #0
movs r0, #0xb
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
strb r1, [r4, #0x15]
adds r0, #0xf5
strh r0, [r4, #0x24]
movs r0, #0x90
lsls r0, r0, #9
str r0, [r4, #0x20]
ldr r1, _080419F8 @ =0x0000016B
adds r0, r4, #0
bl sub_0801D2B4
adds r0, r4, #0
movs r1, #5
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0xf
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x15
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x1e
bl sub_08004260
ldr r0, _080419FC @ =0x00000127
bl PlaySFX
_080419F6:
pop {r4, pc}
.align 2, 0
_080419F8: .4byte 0x0000016B
_080419FC: .4byte 0x00000127
thumb_func_start sub_08041A00
sub_08041A00: @ 0x08041A00
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08041A60
cmp r0, #1
beq _08041ABC
ldr r2, _08041A5C @ =gUnk_080D0E64
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #3
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x62
strb r0, [r1]
ldrb r1, [r4, #0xe]
cmp r1, #0
bne _08041AF0
movs r0, #0xc
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r1, #0xa0
lsls r1, r1, #1
adds r0, r4, #0
bl sub_0801D2B4
adds r0, r4, #0
movs r1, #8
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #0x10
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x18
bl sub_08004260
b _08041AF0
.align 2, 0
_08041A5C: .4byte gUnk_080D0E64
_08041A60:
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_080042B8
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_08004274
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
movs r1, #0x80
lsls r1, r1, #6
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08041AF0
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0xf0
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x45
movs r0, #8
strb r0, [r1]
subs r1, #6
movs r0, #0x38
strb r0, [r1]
movs r0, #0x14
movs r1, #0
bl sub_08080964
adds r0, r4, #0
movs r1, #6
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x16
bl sub_08004260
b _08041AF0
_08041ABC:
adds r0, r4, #0
bl sub_080042B8
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08041AF0
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x39
strb r0, [r1]
adds r1, #6
ldrb r0, [r1]
orrs r0, r2
strb r0, [r1]
_08041AF0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08041AF4
sub_08041AF4: @ 0x08041AF4
push {r4, lr}
adds r4, r0, #0
bl sub_080042B8
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08041B12
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_08004274
_08041B12:
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08041B44
cmp r0, #1
beq _08041B70
adds r0, r4, #0
bl sub_08042004
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r2, r0, #0
adds r2, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08041BC0
movs r0, #0xfe
ands r0, r1
strb r0, [r2]
adds r0, r4, #0
movs r1, #9
bl sub_080042AC
b _08041BCE
_08041B44:
ldr r0, [r4, #0x34]
ldr r1, _08041B6C @ =0xFFFF8000
adds r0, r0, r1
str r0, [r4, #0x34]
movs r2, #0x36
ldrsh r1, [r4, r2]
movs r0, #4
rsbs r0, r0, #0
cmp r1, r0
bge _08041BCE
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x78
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0x15]
movs r0, #0x80
strh r0, [r4, #0x24]
b _08041BCE
.align 2, 0
_08041B6C: .4byte 0xFFFF8000
_08041B70:
adds r0, r4, #0
bl sub_08042004
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08041B82
subs r0, #1
strb r0, [r4, #0xe]
b _08041BCE
_08041B82:
adds r0, r4, #0
bl sub_0806F69C
ldr r0, _08041BBC @ =gRoomControls
ldrh r0, [r0, #8]
adds r0, #0x48
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bne _08041BCE
movs r0, #2
strb r0, [r4, #0xd]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #0x11
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x19
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x1f
bl sub_08004260
b _08041BCE
.align 2, 0
_08041BBC: .4byte gRoomControls
_08041BC0:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08041BCE
adds r0, r4, #0
bl sub_0804235C
_08041BCE:
pop {r4, pc}
thumb_func_start sub_08041BD0
sub_08041BD0: @ 0x08041BD0
push {lr}
ldr r2, _08041BE4 @ =gUnk_080D0E68
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08041BE4: .4byte gUnk_080D0E68
thumb_func_start sub_08041BE8
sub_08041BE8: @ 0x08041BE8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
bl sub_08079F8C
cmp r0, #0
beq _08041CBA
movs r5, #0
movs r0, #1
strb r0, [r6, #0xd]
movs r0, #0x78
strb r0, [r6, #0xe]
ldrb r1, [r6, #0x11]
movs r4, #0x10
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
movs r1, #3
mov r8, r1
mov r1, r8
orrs r0, r1
strb r0, [r6, #0x11]
adds r0, r6, #0
movs r1, #0xa
bl sub_080042AC
ldr r0, [r6, #0x64]
ldr r7, [r0, #4]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #4]
ldr r7, [r0, #8]
ldrb r0, [r7, #0x11]
ands r4, r0
mov r0, r8
orrs r4, r0
strb r4, [r7, #0x11]
adds r0, r7, #0
bl sub_080AE068
ldr r1, _08041CC0 @ =0x000001F5
adds r0, r7, #0
bl sub_080ADF80
ldr r1, _08041CC4 @ =0x0000016B
adds r0, r7, #0
bl sub_0801D2B4
adds r0, r7, #0
movs r1, #0x1a
bl sub_08004260
ldr r0, [r6, #0x64]
ldr r7, [r0, #0xc]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #0xc]
ldr r7, [r0, #0x10]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r2, [r6, #0x64]
str r5, [r2, #0x10]
ldr r1, _08041CC8 @ =gRoomControls
ldr r0, _08041CCC @ =gLinkEntity
str r0, [r1, #0x30]
ldr r7, [r2, #0x1c]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #0x1c]
ldr r7, [r0, #0x20]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #0x20]
ldr r7, [r0, #0x24]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #0x24]
ldr r7, [r0, #0x28]
str r5, [r7, #0x64]
adds r0, r7, #0
bl sub_0805E7BC
ldr r0, [r6, #0x64]
str r5, [r0, #0x28]
movs r0, #2
bl sub_08078A90
_08041CBA:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08041CC0: .4byte 0x000001F5
_08041CC4: .4byte 0x0000016B
_08041CC8: .4byte gRoomControls
_08041CCC: .4byte gLinkEntity
thumb_func_start sub_08041CD0
sub_08041CD0: @ 0x08041CD0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08041D0C
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08041CF6
subs r0, #1
strb r0, [r4, #0xe]
b _08041D12
_08041CF6:
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldr r0, _08041D08 @ =0x00001651
bl TextboxTryNoOverlap
b _08041D12
.align 2, 0
_08041D08: .4byte 0x00001651
_08041D0C:
adds r0, r4, #0
bl sub_080042B8
_08041D12:
pop {r4, pc}
thumb_func_start sub_08041D14
sub_08041D14: @ 0x08041D14
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldr r0, _08041D3C @ =gTextBox
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0
bne _08041D7C
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _08041D40
subs r0, #1
strb r0, [r4, #0xe]
b _08041D7C
.align 2, 0
_08041D3C: .4byte gTextBox
_08041D40:
ldr r0, _08041D80 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x45
bhi _08041D7C
movs r0, #0xb6
movs r1, #0
movs r2, #0
bl CreateObject
str r4, [r0, #0x50]
str r0, [r4, #0x54]
movs r0, #0xb6
movs r1, #1
movs r2, #0
bl CreateObject
str r4, [r0, #0x50]
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x96
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
ldrb r1, [r4, #0x18]
subs r0, #0x9a
ands r0, r1
strb r0, [r4, #0x18]
movs r0, #0xe2
lsls r0, r0, #1
bl PlaySFX
_08041D7C:
pop {r4, r5, pc}
.align 2, 0
_08041D80: .4byte gUnk_03003DBC
thumb_func_start sub_08041D84
sub_08041D84: @ 0x08041D84
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, [r5, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _08041D9C
subs r0, #1
strb r0, [r5, #0xe]
b _08041E18
_08041D9C:
ldrb r1, [r5, #0xf]
adds r0, r1, #0
cmp r0, #0xef
bhi _08041DEC
cmp r0, #0xb7
bls _08041DD8
movs r0, #7
ands r0, r1
cmp r0, #0
bne _08041DD8
ldr r0, [r5, #0x64]
ldr r0, [r0, #8]
ldr r4, _08041DE8 @ =gUnk_080D0E80
ldrb r1, [r5, #0xf]
subs r1, #0xb8
asrs r1, r1, #3
lsls r1, r1, #1
adds r1, r1, r4
ldrh r1, [r1]
bl sub_0801D2B4
ldr r0, [r5, #0x54]
ldrb r1, [r5, #0xf]
subs r1, #0xb8
asrs r1, r1, #3
lsls r1, r1, #1
adds r1, r1, r4
ldrh r1, [r1]
bl sub_0801D2B4
_08041DD8:
ldrb r0, [r5, #0xf]
cmp r0, #0xe6
bne _08041E0C
movs r0, #7
movs r1, #4
bl DoFade
b _08041E0C
.align 2, 0
_08041DE8: .4byte gUnk_080D0E80
_08041DEC:
movs r0, #4
strb r0, [r5, #0xd]
ldrb r1, [r5, #0x18]
subs r0, #8
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r5, #0x18]
ldr r1, _08041E1C @ =0x00000173
adds r0, r5, #0
bl sub_0801D2B4
adds r0, r5, #0
movs r1, #0xb
bl sub_080042AC
_08041E0C:
ldrb r0, [r5, #0xf]
adds r0, #1
strb r0, [r5, #0xf]
adds r0, r5, #0
bl sub_08041E78
_08041E18:
pop {r4, r5, pc}
.align 2, 0
_08041E1C: .4byte 0x00000173
thumb_func_start sub_08041E20
sub_08041E20: @ 0x08041E20
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08041E78
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldr r0, _08041E4C @ =gUnk_03000FD0
ldrb r0, [r0]
cmp r0, #0
bne _08041E48
movs r0, #5
strb r0, [r4, #0xd]
movs r0, #0x5a
strb r0, [r4, #0xe]
_08041E48:
pop {r4, pc}
.align 2, 0
_08041E4C: .4byte gUnk_03000FD0
thumb_func_start sub_08041E50
sub_08041E50: @ 0x08041E50
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _08041E76
movs r0, #0x51
bl sub_0807CD04
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
str r5, [r0, #0x64]
bl sub_0805E7BC
bl sub_0805E780
_08041E76:
pop {r4, r5, pc}
thumb_func_start sub_08041E78
sub_08041E78: @ 0x08041E78
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xf]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08041ECE
adds r0, r4, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _08041ECE
ldrb r1, [r4, #0xf]
lsrs r1, r1, #3
movs r0, #0xe
ands r1, r0
ldr r0, _08041ED0 @ =gUnk_080D0E90
adds r1, r1, r0
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r3, [r2, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r2, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
movs r0, #4
movs r1, #0
bl sub_08080964
_08041ECE:
pop {r4, pc}
.align 2, 0
_08041ED0: .4byte gUnk_080D0E90
thumb_func_start sub_08041ED4
sub_08041ED4: @ 0x08041ED4
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _08041F14 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x45
bhi _08041F18
movs r0, #0x2c
bl sub_0801D8E0
adds r4, r0, #0
cmp r4, #0
beq _08041F18
str r4, [r5, #0x64]
str r5, [r4]
movs r0, #0
str r0, [r4, #0xc]
str r0, [r4, #0x14]
str r0, [r4, #0x18]
movs r0, #0x51
movs r1, #1
bl CreateEnemy
str r4, [r0, #0x64]
str r0, [r4, #4]
movs r0, #0x51
movs r1, #2
bl CreateEnemy
str r4, [r0, #0x64]
str r0, [r4, #8]
movs r0, #1
b _08041F1A
.align 2, 0
_08041F14: .4byte gUnk_03003DBC
_08041F18:
movs r0, #0
_08041F1A:
pop {r4, r5, pc}
thumb_func_start sub_08041F1C
sub_08041F1C: @ 0x08041F1C
push {r4, lr}
adds r4, r0, #0
ldr r0, _08041F6C @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x43
bhi _08041F70
movs r0, #0x5f
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x64]
str r1, [r0, #0x1c]
movs r0, #0x5f
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x64]
str r1, [r0, #0x20]
movs r0, #0x5f
movs r1, #2
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x64]
str r1, [r0, #0x24]
movs r0, #0x5f
movs r1, #3
bl CreateEnemy
adds r1, r0, #0
str r4, [r1, #0x50]
ldr r0, [r4, #0x64]
str r1, [r0, #0x28]
movs r0, #1
b _08041F72
.align 2, 0
_08041F6C: .4byte gUnk_03003DBC
_08041F70:
movs r0, #0
_08041F72:
pop {r4, pc}
thumb_func_start sub_08041F74
sub_08041F74: @ 0x08041F74
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
ldr r0, _08041F88 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x46
bls _08041F8C
movs r0, #0
b _08041FC8
.align 2, 0
_08041F88: .4byte gUnk_03003DBC
_08041F8C:
ldr r7, [r5, #0x64]
movs r4, #0
ldr r0, _08041FC0 @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
asrs r0, r6
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08041FB6
movs r0, #0x52
movs r1, #0
bl CreateEnemy
adds r4, r0, #0
strb r6, [r4, #0xb]
str r5, [r4, #0x50]
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
_08041FB6:
cmp r6, #0
bne _08041FC4
str r4, [r7, #0x14]
b _08041FC6
.align 2, 0
_08041FC0: .4byte gUnk_030010A0
_08041FC4:
str r4, [r7, #0x18]
_08041FC6:
movs r0, #1
_08041FC8:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08041FCC
sub_08041FCC: @ 0x08041FCC
push {r4, lr}
adds r4, r0, #0
ldr r0, _08041FFC @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x4c
bhi _08042000
adds r0, r4, #0
bl sub_08041ED4
cmp r0, #0
beq _08042000
adds r0, r4, #0
movs r1, #0
bl sub_08041F74
adds r0, r4, #0
movs r1, #1
bl sub_08041F74
adds r0, r4, #0
bl sub_08041F1C
movs r0, #1
b _08042002
.align 2, 0
_08041FFC: .4byte gUnk_03003DBC
_08042000:
movs r0, #0
_08042002:
pop {r4, pc}
thumb_func_start sub_08042004
sub_08042004: @ 0x08042004
ldr r3, _08042024 @ =gUnk_080D0EA0
adds r2, r0, #0
adds r2, #0x78
ldrb r1, [r2]
adds r1, #1
strb r1, [r2]
lsls r1, r1, #0x18
lsrs r1, r1, #0x1c
movs r2, #7
ands r1, r2
adds r1, r1, r3
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
strh r1, [r0, #0x36]
bx lr
.align 2, 0
_08042024: .4byte gUnk_080D0EA0
thumb_func_start sub_08042028
sub_08042028: @ 0x08042028
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #3
strb r5, [r4, #0xc]
bl Random
ldr r1, _0804204C @ =gUnk_080D0EA8
ands r0, r5
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r4, #0xe]
movs r0, #0x40
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0804207C
strb r0, [r4, #0x15]
pop {r4, r5, pc}
.align 2, 0
_0804204C: .4byte gUnk_080D0EA8
thumb_func_start sub_08042050
sub_08042050: @ 0x08042050
push {r4, lr}
adds r4, r0, #0
movs r0, #8
strb r0, [r4, #0xc]
bl Random
ldr r2, _08042078 @ =gUnk_080D0EAC
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r1, [r1]
strb r1, [r4, #0xe]
movs r1, #0x20
strh r1, [r4, #0x24]
lsrs r0, r0, #8
movs r1, #0x10
ands r0, r1
adds r0, #8
strb r0, [r4, #0x15]
pop {r4, pc}
.align 2, 0
_08042078: .4byte gUnk_080D0EAC
thumb_func_start sub_0804207C
sub_0804207C: @ 0x0804207C
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r0, #0x2e
ldrsh r6, [r5, r0]
movs r1, #0x32
ldrsh r0, [r5, r1]
adds r7, r0, #0
subs r7, #0x10
ldr r0, [r5, #0x64]
ldr r4, [r0, #0x14]
cmp r4, #0
beq _080420B8
ldrb r0, [r4, #0xc]
cmp r0, #4
bls _080420B8
adds r0, r4, #0
adds r1, r6, #0
adds r2, r7, #0
movs r3, #0x30
bl sub_0806FCB8
cmp r0, #0
beq _080420B8
movs r2, #0x2e
ldrsh r0, [r4, r2]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r6, #0
adds r3, r7, #0
b _08042118
_080420B8:
ldr r0, [r5, #0x64]
ldr r4, [r0, #0x18]
cmp r4, #0
beq _080420E4
ldrb r0, [r4, #0xc]
cmp r0, #4
bls _080420E4
adds r0, r4, #0
adds r1, r6, #0
adds r2, r7, #0
movs r3, #0x30
bl sub_0806FCB8
cmp r0, #0
beq _080420E4
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
adds r2, r6, #0
adds r3, r7, #0
b _08042118
_080420E4:
ldr r0, _080420FC @ =gLinkEntity
movs r4, #0x32
ldrsh r1, [r0, r4]
adds r2, r0, #0
cmp r1, #0x3f
bgt _08042104
ldr r0, _08042100 @ =gRoomControls
ldrh r0, [r0, #8]
adds r3, r0, #0
adds r3, #0x18
b _0804210C
.align 2, 0
_080420FC: .4byte gLinkEntity
_08042100: .4byte gRoomControls
_08042104:
movs r1, #0x32
ldrsh r0, [r2, r1]
adds r3, r0, #0
subs r3, #0x28
_0804210C:
movs r4, #0x2e
ldrsh r0, [r5, r4]
movs r4, #0x32
ldrsh r1, [r5, r4]
movs r4, #0x2e
ldrsh r2, [r2, r4]
_08042118:
bl sub_080045D4
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08042120
sub_08042120: @ 0x08042120
movs r2, #0
movs r1, #5
strb r1, [r0, #0xc]
strb r2, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start sub_0804212C
sub_0804212C: @ 0x0804212C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
ldrh r0, [r1]
cmp r0, #0
beq _0804213E
subs r0, #1
b _080421A8
_0804213E:
movs r5, #0
movs r0, #0x32
ldrsh r1, [r4, r0]
subs r1, #0x44
ldr r3, _0804216C @ =gLinkEntity
movs r2, #0x32
ldrsh r0, [r3, r2]
subs r0, r0, r1
cmp r0, #0x60
bhi _0804217A
movs r6, #0x2e
ldrsh r2, [r4, r6]
adds r0, r2, #0
subs r0, #0x38
movs r6, #0x2e
ldrsh r1, [r3, r6]
subs r0, r1, r0
cmp r0, #0x38
bhi _08042170
ldr r0, [r4, #0x64]
ldr r5, [r0, #0x18]
b _0804217A
.align 2, 0
_0804216C: .4byte gLinkEntity
_08042170:
subs r0, r1, r2
cmp r0, #0x38
bhi _0804217A
ldr r0, [r4, #0x64]
ldr r5, [r0, #0x14]
_0804217A:
cmp r5, #0
beq _080421A2
ldrb r0, [r5, #0xc]
cmp r0, #2
bne _080421AA
bl Random
movs r1, #1
ands r1, r0
cmp r1, #0
beq _080421AA
movs r1, #0
movs r0, #3
strb r0, [r5, #0xc]
strb r1, [r5, #0xd]
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0xb4
lsls r0, r0, #2
b _080421A8
_080421A2:
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0x3c
_080421A8:
strh r0, [r1]
_080421AA:
pop {r4, r5, r6, pc}
thumb_func_start sub_080421AC
sub_080421AC: @ 0x080421AC
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x7e
ldrh r0, [r5]
adds r7, r0, #0
cmp r7, #0
beq _080421C0
subs r0, #1
b _08042210
_080421C0:
adds r6, r4, #0
adds r6, #0x79
ldrb r0, [r6]
cmp r0, #0
bne _080421FE
bl Random
movs r5, #1
ands r0, r5
cmp r0, #0
beq _080421F4
ldr r0, _080421F0 @ =gUnk_030010A0
adds r0, #0x39
ldrb r1, [r0]
movs r0, #0xc
ands r0, r1
cmp r0, #0
beq _080421F4
adds r0, r4, #0
bl sub_08042264
strb r5, [r6]
b _08042212
.align 2, 0
_080421F0: .4byte gUnk_030010A0
_080421F4:
adds r1, r4, #0
adds r1, #0x7e
movs r0, #0x1e
strh r0, [r1]
b _08042212
_080421FE:
adds r0, r4, #0
movs r1, #0
bl sub_080422C0
cmp r0, #0
beq _08042212
strb r7, [r6]
movs r0, #0xb4
lsls r0, r0, #1
_08042210:
strh r0, [r5]
_08042212:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08042214
sub_08042214: @ 0x08042214
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r6, r4, #0
adds r6, #0x7e
ldrh r0, [r6]
adds r7, r0, #0
cmp r7, #0
beq _08042228
subs r0, #1
b _0804225E
_08042228:
adds r5, r4, #0
adds r5, #0x79
ldrb r0, [r5]
cmp r0, #0
bne _0804224E
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _0804224A
adds r0, r4, #0
bl sub_0804228C
movs r0, #1
strb r0, [r5]
b _08042260
_0804224A:
movs r0, #0x1e
b _0804225E
_0804224E:
adds r0, r4, #0
movs r1, #1
bl sub_080422C0
cmp r0, #0
beq _08042260
strb r7, [r5]
movs r0, #0xb4
_0804225E:
strh r0, [r6]
_08042260:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08042264
sub_08042264: @ 0x08042264
push {r4, lr}
adds r4, r0, #0
movs r1, #1
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r1, [r0, #4]
movs r0, #1
strb r0, [r1, #0xd]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #0xd
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x13
bl sub_08004260
pop {r4, pc}
thumb_func_start sub_0804228C
sub_0804228C: @ 0x0804228C
push {r4, lr}
adds r4, r0, #0
movs r1, #2
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r1, [r0, #4]
movs r0, #1
strb r0, [r1, #0xd]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #0xd
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x13
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x1d
bl sub_08004260
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080422C0
sub_080422C0: @ 0x080422C0
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
mov r8, r1
bl sub_080042B8
ldr r0, [r5, #0x64]
ldr r0, [r0, #8]
bl sub_08004274
ldr r0, [r5, #0x64]
ldr r7, [r0, #4]
adds r0, r7, #0
bl sub_08004274
mov r0, r8
adds r0, #1
adds r6, r7, #0
adds r6, #0x5a
ldrb r4, [r6]
cmp r0, r4
bne _08042306
movs r0, #0x21
bl sub_080A7EE0
cmp r0, #0
beq _08042354
mov r1, r8
strb r1, [r0, #0xa]
str r5, [r0, #0x50]
ldrb r0, [r6]
bics r0, r4
strb r0, [r6]
b _08042354
_08042306:
cmp r4, #4
bne _0804231A
movs r0, #0xfb
ands r4, r0
strb r4, [r6]
adds r0, r5, #0
movs r1, #3
bl sub_080042AC
b _08042354
_0804231A:
movs r0, #0x80
ands r4, r0
cmp r4, #0
beq _08042354
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
movs r0, #0
strb r0, [r7, #0xd]
adds r0, r7, #0
movs r1, #0xc
bl sub_08004260
ldr r0, [r5, #0x64]
ldr r0, [r0, #8]
movs r1, #0x12
bl sub_08004260
mov r0, r8
cmp r0, #1
bne _08042350
ldr r0, [r5, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x1b
bl sub_08004260
_08042350:
movs r0, #1
b _08042356
_08042354:
movs r0, #0
_08042356:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804235C
sub_0804235C: @ 0x0804235C
push {r4, r5, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x79
strb r1, [r0]
adds r1, r4, #0
adds r1, #0x7e
movs r5, #0
movs r0, #0xf0
strh r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
strb r5, [r0, #0xd]
movs r1, #0xc
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x12
bl sub_08004260
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x1b
bl sub_08004260
pop {r4, r5, pc}
thumb_func_start sub_080423A4
sub_080423A4: @ 0x080423A4
push {r4, lr}
ldr r0, _080423CC @ =gUnk_030010A0
adds r4, r0, #0
adds r4, #0x38
ldrb r1, [r4]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _0804241C
ldr r0, _080423D0 @ =gUnk_02002A40
movs r2, #0x93
lsls r2, r2, #3
adds r1, r0, r2
ldr r0, [r1]
cmp r0, #0
beq _080423D4
subs r0, #1
str r0, [r1]
b _0804241C
.align 2, 0
_080423CC: .4byte gUnk_030010A0
_080423D0: .4byte gUnk_02002A40
_080423D4:
ldr r2, _08042420 @ =gLinkState
adds r0, r2, #0
adds r0, #0xa9
ldrb r0, [r0]
cmp r0, #1
bgt _0804241C
cmp r0, #0
blt _0804241C
ldr r0, [r2, #0x2c]
cmp r0, #0
bne _0804241C
ldr r1, _08042424 @ =gLinkEntity
adds r0, r1, #0
adds r0, #0x7a
ldrh r0, [r0]
cmp r0, #0
bne _0804241C
movs r3, #0x36
ldrsh r0, [r1, r3]
movs r1, #0x80
lsls r1, r1, #8
ands r0, r1
cmp r0, #0
beq _0804240A
ldrb r0, [r2, #0xa]
cmp r0, #0
beq _0804241C
_0804240A:
movs r0, #0xb7
lsls r0, r0, #4
movs r1, #0
bl sub_08078AA8
ldrb r0, [r4]
movs r1, #2
orrs r0, r1
strb r0, [r4]
_0804241C:
pop {r4, pc}
.align 2, 0
_08042420: .4byte gLinkState
_08042424: .4byte gLinkEntity
thumb_func_start sub_08042428
sub_08042428: @ 0x08042428
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
bne _0804243C
str r0, [r4, #0x64]
bl sub_0805E780
_0804243C:
ldrb r1, [r4, #0xc]
cmp r1, #0
bne _08042450
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
adds r0, r4, #0
movs r1, #0xc
bl sub_08004260
_08042450:
ldrb r0, [r4, #0xd]
cmp r0, #0
bne _0804245C
adds r0, r4, #0
bl sub_08004274
_0804245C:
ldr r0, [r4, #0x58]
ldr r1, _0804249C @ =0x008000FF
ands r0, r1
subs r1, #0xf3
cmp r0, r1
bne _08042480
adds r0, r4, #0
movs r1, #0xc
bl sub_08004260
bl Random
movs r1, #0x78
ands r0, r1
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x59
strb r0, [r1]
_08042480:
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r1, r4, #0
movs r2, #0
movs r3, #1
bl sub_0806FA90
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
pop {r4, pc}
.align 2, 0
_0804249C: .4byte 0x008000FF
thumb_func_start sub_080424A0
sub_080424A0: @ 0x080424A0
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
bne _080424B4
str r0, [r4, #0x64]
bl sub_0805E780
_080424B4:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080424C6
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0x12
bl sub_08004260
_080424C6:
ldr r0, [r4, #0x64]
ldr r0, [r0]
movs r3, #1
rsbs r3, r3, #0
adds r1, r4, #0
movs r2, #0
bl sub_0806FA90
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0x12
bne _08042502
ldr r1, _08042504 @ =gLinkEntity
adds r0, r4, #0
bl sub_080045C4
ldr r1, _08042508 @ =gUnk_080D0EB0
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r4, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
_08042502:
pop {r4, pc}
.align 2, 0
_08042504: .4byte gLinkEntity
_08042508: .4byte gUnk_080D0EB0
thumb_func_start sub_0804250C
sub_0804250C: @ 0x0804250C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0]
ldr r0, [r0, #4]
cmp r0, #0
bne _08042520
str r0, [r4, #0x64]
bl sub_0805E780
_08042520:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08042532
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #0x1c
bl sub_08004260
_08042532:
ldr r0, [r4, #0x64]
ldr r0, [r0]
movs r3, #1
rsbs r3, r3, #0
adds r1, r4, #0
movs r2, #0
bl sub_0806FA90
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_08042554
sub_08042554: @ 0x08042554
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _0804256C @ =gUnk_080D1230
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0804256C: .4byte gUnk_080D1230
thumb_func_start sub_08042570
sub_08042570: @ 0x08042570
push {lr}
ldr r2, _08042584 @ =gUnk_080D1248
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08042584: .4byte gUnk_080D1248
thumb_func_start sub_08042588
sub_08042588: @ 0x08042588
push {lr}
ldr r1, _08042594 @ =gUnk_080D1230
bl sub_0804AA30
pop {pc}
.align 2, 0
_08042594: .4byte gUnk_080D1230
thumb_func_start nullsub_170
nullsub_170: @ 0x08042598
bx lr
.align 2, 0
thumb_func_start sub_0804259C
sub_0804259C: @ 0x0804259C
push {lr}
ldr r2, _080425B0 @ =gUnk_080D125C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080425B0: .4byte gUnk_080D125C
thumb_func_start sub_080425B4
sub_080425B4: @ 0x080425B4
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_080437DC
cmp r0, #0
beq _0804264C
adds r0, r4, #0
adds r0, #0x7c
movs r1, #0
strb r1, [r0]
adds r0, #1
strb r1, [r0]
ldr r5, _08042614 @ =gUnk_030010A0
adds r0, r5, #0
adds r0, #0x38
ldrb r0, [r0]
movs r6, #1
adds r1, r6, #0
ands r1, r0
cmp r1, #0
beq _08042634
adds r0, r5, #0
adds r0, #0x3c
ldrb r0, [r0]
ldrb r1, [r4, #0xb]
cmp r0, r1
bne _08042620
adds r0, r4, #0
bl sub_08043EB8
adds r0, r4, #0
bl sub_08043ABC
adds r0, r5, #0
adds r0, #0x39
ldrb r1, [r0]
ldrb r0, [r4, #0xb]
adds r0, #2
asrs r1, r0
ands r1, r6
cmp r1, #0
beq _08042618
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #4
strb r0, [r4, #0xd]
b _0804264C
.align 2, 0
_08042614: .4byte gUnk_030010A0
_08042618:
movs r0, #8
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
b _0804264C
_08042620:
adds r0, r4, #0
bl sub_08044000
adds r0, r4, #0
bl sub_08043BC8
adds r0, r4, #0
bl sub_08043A10
b _0804264C
_08042634:
strb r6, [r4, #0xc]
strb r1, [r4, #0xd]
ldr r2, [r4, #0x64]
ldr r1, _08042650 @ =gUnk_080D1280
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #0x20]
adds r0, r4, #0
bl sub_08042654
_0804264C:
pop {r4, r5, r6, pc}
.align 2, 0
_08042650: .4byte gUnk_080D1280
thumb_func_start sub_08042654
sub_08042654: @ 0x08042654
push {r4, r5, r6, lr}
adds r6, r0, #0
ldrb r0, [r6, #0xb]
lsls r3, r0, #2
ldr r0, [r6, #0x64]
adds r2, r0, #0
adds r2, #0x18
ldrb r0, [r6, #0xd]
cmp r0, #4
bls _0804266A
b _080427FC
_0804266A:
lsls r0, r0, #2
ldr r1, _08042674 @ =_08042678
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08042674: .4byte _08042678
_08042678: @ jump table
.4byte _0804268C @ case 0
.4byte _080426B0 @ case 1
.4byte _080426E0 @ case 2
.4byte _08042710 @ case 3
.4byte _08042740 @ case 4
_0804268C:
movs r0, #1
strb r0, [r6, #0xd]
ldr r1, _080426A8 @ =gUnk_080D1284
ldrb r0, [r6, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
strb r0, [r2, #1]
ldr r1, _080426AC @ =gUnk_080D1286
ldrb r0, [r6, #0xb]
lsls r0, r0, #2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r6, #0
b _080427EE
.align 2, 0
_080426A8: .4byte gUnk_080D1284
_080426AC: .4byte gUnk_080D1286
_080426B0:
ldrh r0, [r2, #8]
ldrh r1, [r2]
adds r0, r0, r1
strh r0, [r2]
ldr r1, [r6, #0x64]
adds r1, #0x34
ldrb r0, [r1]
adds r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xb
bhi _080426CC
b _0804280E
_080426CC:
movs r0, #2
strb r0, [r6, #0xd]
ldr r1, _080426DC @ =gUnk_080D1286
adds r0, r3, #1
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r6, #0
b _080427EE
.align 2, 0
_080426DC: .4byte gUnk_080D1286
_080426E0:
ldrh r0, [r2, #8]
ldrh r1, [r2]
adds r0, r0, r1
strh r0, [r2]
ldr r1, [r6, #0x64]
adds r1, #0x44
ldrb r0, [r1]
adds r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xd
bhi _080426FC
b _0804280E
_080426FC:
movs r0, #3
strb r0, [r6, #0xd]
ldr r1, _0804270C @ =gUnk_080D1286
adds r0, r3, #2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r6, #0
b _080427EE
.align 2, 0
_0804270C: .4byte gUnk_080D1286
_08042710:
ldrh r0, [r2, #8]
ldrh r1, [r2]
adds r0, r0, r1
strh r0, [r2]
ldr r1, [r6, #0x64]
adds r1, #0x54
ldrb r0, [r1]
adds r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xf
bls _0804280E
movs r0, #4
strb r0, [r6, #0xd]
ldr r1, _0804273C @ =gUnk_080D1286
adds r0, r3, #3
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r6, #0
b _080427EE
.align 2, 0
_0804273C: .4byte gUnk_080D1286
_08042740:
ldrh r0, [r2, #8]
ldrh r1, [r2]
adds r0, r0, r1
strh r0, [r2]
ldr r1, [r6, #0x64]
adds r1, #0x64
ldrb r0, [r1]
adds r0, #2
strb r0, [r1]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x1b
bls _0804280E
movs r0, #5
strb r0, [r6, #0xd]
movs r0, #0x5a
strb r0, [r6, #0xe]
ldr r0, [r6, #0x64]
ldr r1, [r0]
ldrb r0, [r1, #0x10]
movs r5, #0x80
orrs r0, r5
strb r0, [r1, #0x10]
ldr r0, [r6, #0x64]
ldr r1, [r0]
adds r1, #0x29
ldrb r2, [r1]
movs r3, #8
rsbs r3, r3, #0
adds r0, r3, #0
ands r0, r2
movs r4, #4
orrs r0, r4
strb r0, [r1]
ldr r0, [r6, #0x64]
ldr r1, [r0, #4]
ldrb r0, [r1, #0x10]
orrs r0, r5
strb r0, [r1, #0x10]
ldr r0, [r6, #0x64]
ldr r1, [r0, #4]
adds r1, #0x29
ldrb r2, [r1]
adds r0, r3, #0
ands r0, r2
orrs r0, r4
strb r0, [r1]
ldr r0, [r6, #0x64]
ldr r1, [r0, #8]
ldrb r0, [r1, #0x10]
orrs r0, r5
strb r0, [r1, #0x10]
ldr r0, [r6, #0x64]
ldr r1, [r0, #8]
adds r1, #0x29
ldrb r2, [r1]
adds r0, r3, #0
ands r0, r2
orrs r0, r4
strb r0, [r1]
ldr r0, [r6, #0x64]
ldr r1, [r0, #0xc]
ldrb r0, [r1, #0x10]
orrs r0, r5
strb r0, [r1, #0x10]
ldr r0, [r6, #0x64]
ldr r1, [r0, #0xc]
adds r1, #0x29
ldrb r2, [r1]
adds r0, r3, #0
ands r0, r2
orrs r0, r4
strb r0, [r1]
ldr r0, [r6, #0x64]
ldr r1, [r0, #0x10]
ldrb r0, [r1, #0x10]
orrs r0, r5
strb r0, [r1, #0x10]
ldr r0, [r6, #0x64]
ldr r0, [r0, #0x10]
adds r0, #0x29
ldrb r1, [r0]
ands r3, r1
orrs r3, r4
strb r3, [r0]
adds r0, r6, #0
movs r1, #7
_080427EE:
bl sub_080042AC
movs r0, #0xaf
lsls r0, r0, #1
bl PlaySFX
b _0804280E
_080427FC:
ldrb r0, [r6, #0xe]
subs r0, #1
strb r0, [r6, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804280E
adds r0, r6, #0
bl sub_08043BC8
_0804280E:
adds r0, r6, #0
bl sub_08043A10
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08042818
sub_08042818: @ 0x08042818
push {r4, lr}
adds r4, r0, #0
bl sub_08043CD4
ldr r0, [r4, #0x64]
adds r2, r0, #0
adds r2, #0x18
ldrh r1, [r2, #8]
ldrh r3, [r0, #0x18]
adds r1, r1, r3
strh r1, [r0, #0x18]
ldrb r0, [r2, #0xd]
subs r0, #1
strb r0, [r2, #0xd]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08042848
movs r0, #0x78
strb r0, [r2, #0xd]
movs r3, #8
ldrsh r0, [r2, r3]
rsbs r0, r0, #0
strh r0, [r2, #8]
_08042848:
ldrh r0, [r2, #0xa]
ldrh r3, [r2, #4]
adds r0, r0, r3
strh r0, [r2, #4]
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
ands r0, r1
cmp r0, #0
bne _08042868
movs r0, #0x50
strb r0, [r2, #0xe]
movs r1, #0xa
ldrsh r0, [r2, r1]
rsbs r0, r0, #0
strh r0, [r2, #0xa]
_08042868:
adds r0, r4, #0
bl sub_08043A10
pop {r4, pc}
thumb_func_start sub_08042870
sub_08042870: @ 0x08042870
push {r4, lr}
adds r4, r0, #0
bl sub_08043CD4
ldr r1, _08042890 @ =gUnk_080D1290
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08043A10
pop {r4, pc}
.align 2, 0
_08042890: .4byte gUnk_080D1290
thumb_func_start sub_08042894
sub_08042894: @ 0x08042894
movs r1, #1
strb r1, [r0, #0xd]
ldr r2, [r0, #0x64]
ldr r1, _080428A8 @ =gUnk_080D12AC
ldrb r0, [r0, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #0x20]
bx lr
.align 2, 0
_080428A8: .4byte gUnk_080D12AC
thumb_func_start sub_080428AC
sub_080428AC: @ 0x080428AC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
adds r3, r0, #0
adds r3, #0x18
ldrb r0, [r3, #5]
cmp r0, #0x40
beq _080428CC
cmp r0, #0x40
bls _080428C6
ldrh r0, [r3, #4]
subs r0, #0x80
b _080428CA
_080428C6:
ldrh r0, [r3, #4]
adds r0, #0x80
_080428CA:
strh r0, [r3, #4]
_080428CC:
ldrb r1, [r3, #1]
ldr r2, _080428E8 @ =gUnk_080D12B0
ldrb r0, [r4, #0xb]
adds r0, r0, r2
ldrb r0, [r0]
subs r1, r1, r0
adds r1, #1
cmp r1, #2
bls _080428EC
ldrh r0, [r3, #8]
ldrh r1, [r3]
adds r0, r0, r1
strh r0, [r3]
b _080428F4
.align 2, 0
_080428E8: .4byte gUnk_080D12B0
_080428EC:
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
_080428F4:
adds r0, r4, #0
bl sub_08043BF0
pop {r4, pc}
thumb_func_start sub_080428FC
sub_080428FC: @ 0x080428FC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804293C
movs r0, #3
strb r0, [r4, #0xd]
ldr r1, [r4, #0x64]
adds r1, #0x18
movs r0, #8
ldrsh r2, [r1, r0]
lsls r0, r2, #1
adds r0, r0, r2
rsbs r0, r0, #0
strh r0, [r1, #8]
ldr r0, _08042940 @ =0x00000153
bl PlaySFX
movs r2, #0
movs r3, #0x3b
_0804292A:
ldr r0, [r4, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x3f
strb r3, [r0]
adds r2, #1
cmp r2, #4
bls _0804292A
_0804293C:
pop {r4, pc}
.align 2, 0
_08042940: .4byte 0x00000153
thumb_func_start sub_08042944
sub_08042944: @ 0x08042944
push {lr}
adds r3, r0, #0
ldr r2, [r3, #0x64]
adds r1, r2, #0
adds r1, #0x18
ldrb r0, [r1, #1]
subs r0, #0x7c
cmp r0, #8
bls _08042960
ldrh r0, [r1, #8]
ldrh r1, [r2, #0x18]
adds r0, r0, r1
strh r0, [r2, #0x18]
b _08042968
_08042960:
movs r0, #4
strb r0, [r3, #0xd]
ldrh r0, [r1, #8]
strh r0, [r3, #0x24]
_08042968:
adds r0, r3, #0
bl sub_08043BF0
pop {pc}
thumb_func_start sub_08042970
sub_08042970: @ 0x08042970
push {r4, r5, lr}
adds r3, r0, #0
ldr r4, [r3, #0x64]
adds r2, r4, #0
adds r2, #0x18
ldrb r0, [r2, #1]
ldr r1, _080429A4 @ =gUnk_080D12B2
ldrb r5, [r3, #0xb]
adds r1, r5, r1
ldrb r1, [r1]
subs r0, r0, r1
adds r0, #2
cmp r0, #4
bls _080429AC
ldr r0, _080429A8 @ =gUnk_080D12B4
adds r0, r5, r0
movs r1, #0
ldrsb r1, [r0, r1]
ldrh r0, [r2, #8]
adds r1, r1, r0
strh r1, [r2, #8]
ldrh r0, [r4, #0x18]
adds r0, r0, r1
strh r0, [r4, #0x18]
b _080429CA
.align 2, 0
_080429A4: .4byte gUnk_080D12B2
_080429A8: .4byte gUnk_080D12B4
_080429AC:
movs r0, #5
strb r0, [r3, #0xd]
movs r0, #0x3c
strb r0, [r3, #0xe]
movs r2, #0
movs r4, #0x39
_080429B8:
ldr r0, [r3, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x3f
strb r4, [r0]
adds r2, #1
cmp r2, #4
bls _080429B8
_080429CA:
adds r0, r3, #0
bl sub_08043BF0
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080429D4
sub_080429D4: @ 0x080429D4
push {r4, lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080429FA
movs r0, #6
strb r0, [r1, #0xd]
ldr r4, [r1, #0x64]
adds r4, #0x18
movs r2, #0x24
ldrsh r0, [r1, r2]
rsbs r0, r0, #0
movs r1, #6
bl __divsi3
strh r0, [r4, #8]
_080429FA:
pop {r4, pc}
thumb_func_start sub_080429FC
sub_080429FC: @ 0x080429FC
push {r4, r5, lr}
adds r4, r0, #0
ldr r3, [r4, #0x64]
adds r5, r3, #0
adds r5, #0x18
ldrb r1, [r5, #1]
ldr r2, _08042A28 @ =gUnk_080D12B6
ldrb r0, [r4, #0xb]
adds r0, r0, r2
ldrb r0, [r0]
subs r1, r1, r0
adds r1, #1
cmp r1, #2
bls _08042A2C
ldrh r0, [r5, #8]
ldrh r1, [r3, #0x18]
adds r0, r0, r1
strh r0, [r3, #0x18]
adds r0, r4, #0
bl sub_08043BF0
b _08042A3A
.align 2, 0
_08042A28: .4byte gUnk_080D12B6
_08042A2C:
adds r0, r4, #0
bl sub_08043BC8
adds r0, r4, #0
movs r1, #7
bl sub_080042AC
_08042A3A:
pop {r4, r5, pc}
thumb_func_start sub_08042A3C
sub_08042A3C: @ 0x08042A3C
push {r4, lr}
adds r4, r0, #0
ldr r1, _08042A68 @ =gUnk_080D12B8
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08043A10
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x10]
adds r4, #0x78
ldrh r0, [r1, #0x36]
ldrb r4, [r4]
adds r0, r0, r4
strh r0, [r1, #0x36]
pop {r4, pc}
.align 2, 0
_08042A68: .4byte gUnk_080D12B8
thumb_func_start sub_08042A6C
sub_08042A6C: @ 0x08042A6C
adds r3, r0, #0
movs r2, #0
movs r1, #1
strb r1, [r3, #0xd]
adds r0, #0x78
strb r2, [r0]
adds r0, #6
strb r1, [r0]
ldr r1, [r3, #0x64]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r1, #0x22]
bx lr
.align 2, 0
thumb_func_start sub_08042A88
sub_08042A88: @ 0x08042A88
push {r4, lr}
adds r4, r0, #0
ldr r3, [r4, #0x64]
adds r2, r3, #0
adds r2, #0x18
ldr r1, _08042AA8 @ =gUnk_080D12C8
ldrb r0, [r4, #0xb]
adds r0, r0, r1
ldrb r1, [r0]
ldrb r0, [r2, #1]
cmp r1, r0
beq _08042ABC
cmp r1, r0
bhs _08042AB0
ldr r1, _08042AAC @ =0xFFFFFF00
b _08042AB4
.align 2, 0
_08042AA8: .4byte gUnk_080D12C8
_08042AAC: .4byte 0xFFFFFF00
_08042AB0:
movs r1, #0x80
lsls r1, r1, #1
_08042AB4:
adds r0, r1, #0
ldrh r1, [r3, #0x18]
adds r0, r0, r1
strh r0, [r3, #0x18]
_08042ABC:
movs r1, #0xa
ldrsh r0, [r2, r1]
ldrh r1, [r2, #4]
cmp r0, r1
bge _08042ACE
ldrh r0, [r2, #0xa]
subs r0, r1, r0
strh r0, [r2, #4]
b _08042AE6
_08042ACE:
movs r0, #0
strh r0, [r2, #4]
ldr r1, _08042AE8 @ =gUnk_080D12CA
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #8]
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
_08042AE6:
pop {r4, pc}
.align 2, 0
_08042AE8: .4byte gUnk_080D12CA
thumb_func_start sub_08042AEC
sub_08042AEC: @ 0x08042AEC
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08042B1C
movs r0, #3
strb r0, [r5, #0xd]
movs r0, #4
strb r0, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x3f
movs r4, #0x3d
strb r4, [r0]
adds r0, r5, #0
movs r1, #0xe
bl sub_080042AC
ldr r0, [r5, #0x64]
ldr r0, [r0, #4]
adds r0, #0x3f
strb r4, [r0]
_08042B1C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08042B20
sub_08042B20: @ 0x08042B20
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
ldr r0, [r5, #0x64]
adds r1, r0, #0
adds r1, #0x18
ldrb r0, [r1, #5]
cmp r0, #0x7a
bhi _08042B3E
movs r2, #0xa0
lsls r2, r2, #3
adds r0, r2, #0
ldrh r2, [r1, #4]
adds r0, r0, r2
strh r0, [r1, #4]
b _08042B42
_08042B3E:
movs r0, #0x80
strb r0, [r1, #5]
_08042B42:
ldrb r0, [r1, #5]
cmp r0, #0x30
bls _08042B50
ldrh r0, [r1, #8]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
_08042B50:
ldr r0, [r5, #0x64]
ldr r0, [r0, #0xc]
ldrb r0, [r0, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
beq _08042BE0
adds r0, r5, #0
bl sub_08043C40
movs r6, #0
movs r7, #0xa
rsbs r7, r7, #0
_08042B68:
ldr r0, [r5, #0x64]
lsls r1, r6, #2
adds r0, r0, r1
ldr r4, [r0]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, r7
blt _08042BD4
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _08042BD4
cmp r6, #0
bne _08042BBA
movs r0, #0xaf
movs r1, #0
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08042B9C
ldr r0, [r5, #0x64]
ldr r0, [r0, #0x10]
str r0, [r1, #0x50]
_08042B9C:
ldr r0, [r5, #0x64]
ldr r0, [r0, #0x10]
str r1, [r0, #0x68]
movs r0, #0xaf
movs r1, #2
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08042BBA
ldr r0, [r5, #0x64]
ldr r0, [r0, #0x10]
bl CopyPosition
_08042BBA:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r0, [r4, #0x18]
movs r2, #4
rsbs r2, r2, #0
adds r1, r2, #0
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, _08042BDC @ =0x00000161
bl PlaySFX
_08042BD4:
adds r6, #1
cmp r6, #3
bls _08042B68
b _08042C12
.align 2, 0
_08042BDC: .4byte 0x00000161
_08042BE0:
adds r0, r5, #0
adds r0, #0x78
ldrb r1, [r0]
adds r1, #2
strb r1, [r0]
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08042C12
movs r0, #5
strb r0, [r5, #0xc]
strb r1, [r5, #0xd]
movs r0, #0x1e
strb r0, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x3f
movs r1, #0x39
strb r1, [r0]
ldr r0, [r5, #0x64]
ldr r0, [r0, #4]
adds r0, #0x3f
strb r1, [r0]
_08042C12:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08042C14
sub_08042C14: @ 0x08042C14
push {r4, lr}
adds r4, r0, #0
ldr r1, _08042C30 @ =gUnk_080D12D0
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08043A78
pop {r4, pc}
.align 2, 0
_08042C30: .4byte gUnk_080D12D0
thumb_func_start sub_08042C34
sub_08042C34: @ 0x08042C34
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
sub sp, #4
adds r7, r0, #0
ldrb r0, [r7, #0xe]
subs r0, #1
strb r0, [r7, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08042D0C
movs r0, #0x3c
strb r0, [r7, #0xe]
movs r0, #3
strb r0, [r7, #0xf]
movs r0, #1
strb r0, [r7, #0xd]
bl Random
movs r1, #6
ands r1, r0
ldr r0, _08042D14 @ =gUnk_080D12F8
adds r1, r1, r0
ldr r3, _08042D18 @ =gLinkEntity
movs r0, #0x2e
ldrsh r2, [r3, r0]
movs r0, #0
ldrsb r0, [r1, r0]
adds r6, r2, r0
movs r0, #0x32
ldrsh r2, [r3, r0]
movs r0, #1
ldrsb r0, [r1, r0]
adds r5, r2, r0
ldr r3, _08042D1C @ =gRoomControls
ldrh r2, [r3, #6]
adds r0, r2, #0
adds r0, #0x20
cmp r0, r6
ble _08042C86
adds r6, r0, #0
_08042C86:
ldrh r0, [r3, #0x1e]
adds r0, r2, r0
subs r0, #0x20
cmp r0, r6
bge _08042C92
adds r6, r0, #0
_08042C92:
ldrh r1, [r3, #8]
adds r0, r1, #0
adds r0, #0x20
cmp r0, r5
ble _08042C9E
adds r5, r0, #0
_08042C9E:
ldrh r0, [r3, #0x20]
adds r0, r1, r0
subs r0, #0x40
cmp r0, r5
bge _08042CAA
adds r5, r0, #0
_08042CAA:
subs r0, r6, r2
subs r0, #0x90
cmp r0, #0x40
bhi _08042CC2
subs r0, r5, r1
subs r0, #8
cmp r0, #0x40
bhi _08042CC2
adds r6, r2, #0
adds r6, #0xb0
adds r5, r1, #0
adds r5, #0x40
_08042CC2:
movs r4, #0
mov r8, r4
movs r3, #0x18
_08042CC8:
ldr r0, [r7, #0x64]
lsls r1, r4, #2
adds r0, r0, r1
ldr r2, [r0]
strh r6, [r2, #0x2e]
strh r5, [r2, #0x32]
movs r0, #0x32
strh r0, [r2, #0x36]
adds r1, r2, #0
adds r1, #0x3f
movs r0, #0x39
strb r0, [r1]
ldr r1, [r7, #0x64]
adds r1, r1, r3
movs r0, #0x80
strh r0, [r1]
mov r0, r8
strh r0, [r1, #4]
ldr r0, _08042D20 @ =gUnk_080D1419
adds r0, r4, r0
ldrb r0, [r0]
strb r0, [r1, #0xc]
cmp r4, #0
beq _08042D04
adds r0, r2, #0
movs r1, #0x12
str r3, [sp]
bl sub_08004260
ldr r3, [sp]
_08042D04:
adds r3, #0x10
adds r4, #1
cmp r4, #3
bls _08042CC8
_08042D0C:
add sp, #4
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08042D14: .4byte gUnk_080D12F8
_08042D18: .4byte gLinkEntity
_08042D1C: .4byte gRoomControls
_08042D20: .4byte gUnk_080D1419
thumb_func_start sub_08042D24
sub_08042D24: @ 0x08042D24
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08042D68
movs r0, #2
strb r0, [r4, #0xd]
adds r0, r4, #0
adds r0, #0x3f
movs r1, #0x3d
strb r1, [r0]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
adds r0, #0x3f
strb r1, [r0]
movs r0, #0xaf
movs r1, #1
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08042D5E
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
str r0, [r1, #0x50]
_08042D5E:
str r1, [r4, #0x68]
adds r0, r4, #0
movs r1, #0xd
bl sub_080042AC
_08042D68:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08042D6C
sub_08042D6C: @ 0x08042D6C
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r6, #0
_08042D72:
ldr r0, [r5, #0x64]
lsls r1, r6, #2
adds r0, r0, r1
ldr r4, [r0]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #3
bgt _08042DC4
cmp r6, #2
beq _08042D8E
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
_08042D8E:
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _08042DB4
movs r0, #0xaf
movs r1, #2
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08042DB4
adds r0, r4, #0
bl CopyPosition
movs r0, #0xb3
lsls r0, r0, #1
bl PlaySFX
_08042DB4:
ldrb r0, [r4, #0x18]
movs r2, #4
rsbs r2, r2, #0
adds r1, r2, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
_08042DC4:
adds r6, #1
cmp r6, #3
bls _08042D72
ldr r0, [r5, #0x64]
ldr r4, [r0, #0xc]
ldrh r2, [r4, #0x36]
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #3
rsbs r0, r0, #0
cmp r1, r0
bgt _08042E28
ldr r0, _08042E20 @ =0x0000FFFB
strh r0, [r4, #0x36]
ldr r2, [r5, #0x64]
ldr r1, _08042E24 @ =gUnk_080D1300
ldrb r0, [r5, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #0x20]
ldr r1, [r5, #0x64]
movs r0, #0xc0
strh r0, [r1, #0x22]
movs r0, #3
strb r0, [r5, #0xd]
movs r0, #0x1e
strb r0, [r5, #0xe]
adds r0, r5, #0
adds r0, #0x3f
movs r4, #0x39
strb r4, [r0]
adds r1, r5, #0
adds r1, #0x7f
movs r0, #0x2d
strb r0, [r1]
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
ldr r0, [r5, #0x64]
ldr r0, [r0, #4]
adds r0, #0x3f
strb r4, [r0]
b _08042E2C
.align 2, 0
_08042E20: .4byte 0x0000FFFB
_08042E24: .4byte gUnk_080D1300
_08042E28:
subs r0, r2, #2
strh r0, [r4, #0x36]
_08042E2C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08042E30
sub_08042E30: @ 0x08042E30
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r1, r6, #0
adds r1, #0x7f
ldrb r0, [r1]
cmp r0, #0
bne _08042E4A
adds r0, r6, #0
bl sub_08043C98
cmp r0, #0
bne _08042EF0
b _08042E4E
_08042E4A:
subs r0, #1
strb r0, [r1]
_08042E4E:
ldr r7, [r6, #0x64]
adds r5, r7, #0
adds r5, #0x18
ldrb r0, [r6, #0xe]
subs r0, #1
strb r0, [r6, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08042EB2
movs r0, #4
strb r0, [r6, #0xd]
bl Random
movs r1, #0x38
ands r0, r1
adds r0, #0x28
strb r0, [r6, #0xe]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r6, #0x24]
ldrb r0, [r5, #1]
lsrs r0, r0, #3
strb r0, [r6, #0x15]
movs r1, #0x2e
ldrsh r0, [r6, r1]
movs r2, #0x32
ldrsh r1, [r6, r2]
ldr r3, _08042ED4 @ =gRoomControls
ldrh r2, [r3, #6]
movs r4, #0x88
lsls r4, r4, #1
adds r2, r2, r4
ldrh r3, [r3, #8]
adds r3, #0x60
bl sub_080045D4
adds r4, r0, #0
bl Random
ldr r2, _08042ED8 @ =gUnk_080D1304
movs r1, #7
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
adds r0, r0, r4
movs r1, #0x1f
ands r0, r1
adds r1, r6, #0
adds r1, #0x79
strb r0, [r1]
_08042EB2:
ldrh r0, [r5, #8]
ldrh r1, [r7, #0x18]
adds r0, r0, r1
strh r0, [r7, #0x18]
ldrh r0, [r5, #0xa]
ldrh r2, [r5, #4]
adds r1, r0, r2
strh r1, [r5, #4]
lsls r0, r0, #0x10
cmp r0, #0
ble _08042EDC
ldrb r0, [r5, #5]
cmp r0, #0x18
bls _08042EEA
movs r4, #0xa
ldrsh r0, [r5, r4]
b _08042EE6
.align 2, 0
_08042ED4: .4byte gRoomControls
_08042ED8: .4byte gUnk_080D1304
_08042EDC:
ldrb r0, [r5, #5]
cmp r0, #3
bhi _08042EEA
movs r1, #0xa
ldrsh r0, [r5, r1]
_08042EE6:
rsbs r0, r0, #0
strh r0, [r5, #0xa]
_08042EEA:
adds r0, r6, #0
bl sub_080042B8
_08042EF0:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08042EF4
sub_08042EF4: @ 0x08042EF4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
bl sub_080042B8
adds r0, r4, #0
bl sub_08043C98
cmp r0, #0
bne _08042FCE
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08042F4E
ldr r0, _08042F38 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x50
bl sub_0806FCB8
cmp r0, #0
beq _08042F3C
movs r0, #6
strb r0, [r4, #0xd]
movs r0, #0x28
strb r0, [r4, #0xe]
b _08042F4E
.align 2, 0
_08042F38: .4byte gLinkEntity
_08042F3C:
movs r0, #5
strb r0, [r4, #0xd]
adds r0, r4, #0
movs r1, #0xf
bl sub_080042AC
ldr r0, _08042FD4 @ =0x0000019B
bl PlaySFX
_08042F4E:
ldr r0, [r4, #0x64]
adds r7, r0, #0
adds r7, #0x18
ldrb r0, [r7, #5]
cmp r0, #0x1f
bhi _08042F66
movs r1, #0x80
lsls r1, r1, #1
adds r0, r1, #0
ldrh r2, [r7, #4]
adds r0, r0, r2
strh r0, [r7, #4]
_08042F66:
ldr r0, [r4, #0x50]
movs r1, #0x2e
ldrsh r3, [r0, r1]
mov r8, r3
movs r2, #0x32
ldrsh r0, [r0, r2]
adds r6, r0, #0
subs r6, #0x10
adds r0, r4, #0
mov r1, r8
adds r2, r6, #0
movs r3, #0x30
bl sub_0806FCB8
adds r5, r4, #0
adds r5, #0x79
cmp r0, #0
beq _08042FAC
movs r3, #0x2e
ldrsh r0, [r4, r3]
movs r2, #0x32
ldrsh r1, [r4, r2]
mov r2, r8
adds r3, r6, #0
bl sub_080045D4
adds r1, r0, #0
ldrb r0, [r5]
subs r0, r0, r1
adds r0, #4
cmp r0, #8
bhi _08042FAC
movs r0, #0x10
eors r1, r0
strb r1, [r5]
_08042FAC:
ldrb r0, [r5]
ldrb r3, [r4, #0x15]
cmp r0, r3
beq _08042FC2
adds r1, r0, #0
adds r0, r4, #0
bl sub_08004596
ldrb r0, [r4, #0x15]
lsls r0, r0, #3
strb r0, [r7, #1]
_08042FC2:
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
ldrb r1, [r4, #0x15]
strb r1, [r0, #0x15]
bl sub_080AEF88
_08042FCE:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08042FD4: .4byte 0x0000019B
thumb_func_start sub_08042FD8
sub_08042FD8: @ 0x08042FD8
push {r4, r5, r6, lr}
adds r5, r0, #0
bl sub_080042B8
adds r0, r5, #0
bl sub_08043C98
cmp r0, #0
bne _08043046
adds r6, r5, #0
adds r6, #0x5a
ldrb r1, [r6]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08043018
movs r0, #0x20
bl sub_080A7EE0
adds r4, r0, #0
cmp r4, #0
beq _08043046
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
ldrh r0, [r4, #0x36]
subs r0, #0x18
movs r1, #0
strh r0, [r4, #0x36]
strb r1, [r6]
b _08043046
_08043018:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08043046
ldrb r0, [r5, #0xf]
subs r0, #1
strb r0, [r5, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08043036
movs r0, #8
strb r0, [r5, #0xd]
movs r0, #0x3c
strb r0, [r5, #0xe]
b _08043046
_08043036:
movs r0, #3
strb r0, [r5, #0xd]
movs r0, #0x3c
strb r0, [r5, #0xe]
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
_08043046:
pop {r4, r5, r6, pc}
thumb_func_start sub_08043048
sub_08043048: @ 0x08043048
push {r4, lr}
adds r4, r0, #0
bl sub_08043C98
cmp r0, #0
bne _080430CC
ldr r2, [r4, #0x64]
adds r1, r2, #0
adds r1, #0x18
ldrb r0, [r1, #5]
cmp r0, #0x4f
bhi _08043094
movs r2, #0x80
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r1, #4]
adds r0, r0, r3
strh r0, [r1, #4]
ldrb r0, [r1, #5]
cmp r0, #0x4f
bls _080430C6
movs r2, #0
movs r3, #0x3b
_08043076:
ldr r0, [r4, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x3f
strb r3, [r0]
adds r2, #1
cmp r2, #4
bls _08043076
ldr r0, _08043090 @ =0x00000153
bl PlaySFX
b _080430C6
.align 2, 0
_08043090: .4byte 0x00000153
_08043094:
movs r3, #8
ldrsh r0, [r1, r3]
lsls r0, r0, #3
ldrh r1, [r2, #0x18]
adds r0, r0, r1
strh r0, [r2, #0x18]
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080430C6
movs r0, #7
strb r0, [r4, #0xd]
movs r2, #0
movs r3, #0x39
_080430B4:
ldr r0, [r4, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x3f
strb r3, [r0]
adds r2, #1
cmp r2, #4
bls _080430B4
_080430C6:
adds r0, r4, #0
bl sub_08043B9C
_080430CC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080430D0
sub_080430D0: @ 0x080430D0
push {r4, lr}
adds r4, r0, #0
bl sub_08043C98
cmp r0, #0
bne _08043128
ldr r1, [r4, #0x64]
adds r2, r1, #0
adds r2, #0x18
ldrh r0, [r2, #8]
ldrh r3, [r1, #0x18]
adds r0, r0, r3
strh r0, [r1, #0x18]
ldr r1, _08043110 @ =0xFFFFFF00
adds r0, r1, #0
ldrh r3, [r2, #4]
adds r0, r0, r3
strh r0, [r2, #4]
ldrb r0, [r2, #5]
cmp r0, #0x17
bhi _08043128
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08043114
movs r0, #8
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
b _08043128
.align 2, 0
_08043110: .4byte 0xFFFFFF00
_08043114:
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldr r0, _0804312C @ =0x0000FF40
strh r0, [r2, #0xa]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_08043128:
pop {r4, pc}
.align 2, 0
_0804312C: .4byte 0x0000FF40
thumb_func_start sub_08043130
sub_08043130: @ 0x08043130
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
ldr r1, [r6, #0x64]
adds r4, r1, #0
adds r4, #0x18
ldrb r0, [r4, #5]
cmp r0, #0
beq _08043160
adds r0, r6, #0
bl sub_08043C98
cmp r0, #0
bne _080431E0
ldrb r0, [r4, #5]
subs r0, #1
strb r0, [r4, #5]
lsls r0, r0, #0x18
cmp r0, #0
bne _080431E0
adds r0, r6, #0
movs r1, #0xd
bl sub_080042AC
b _080431E0
_08043160:
ldrb r0, [r6, #0xe]
cmp r0, #0
beq _08043186
subs r0, #1
strb r0, [r6, #0xe]
movs r5, #1
movs r1, #0x28
_0804316E:
ldr r0, [r6, #0x64]
adds r4, r0, r1
ldrb r0, [r4, #5]
cmp r0, #0
beq _0804317C
subs r0, #1
strb r0, [r4, #5]
_0804317C:
adds r1, #0x10
adds r5, #1
cmp r5, #3
bls _0804316E
b _080431E0
_08043186:
ldr r1, [r1, #0xc]
ldrh r0, [r1, #0x36]
adds r0, #3
strh r0, [r1, #0x36]
movs r5, #0
movs r7, #4
rsbs r7, r7, #0
_08043194:
ldr r0, [r6, #0x64]
lsls r1, r5, #2
adds r0, r0, r1
ldr r4, [r0]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, r7
ble _080431C4
ldrb r0, [r4, #0x10]
movs r1, #0x7f
ands r1, r0
strb r1, [r4, #0x10]
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _080431BC
ldr r0, _080431E4 @ =0x00000161
bl PlaySFX
_080431BC:
ldrb r1, [r4, #0x18]
adds r0, r7, #0
ands r0, r1
strb r0, [r4, #0x18]
_080431C4:
adds r5, #1
cmp r5, #3
bls _08043194
ldrb r0, [r6, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _080431E0
movs r0, #9
strb r0, [r6, #0xd]
movs r0, #0x3c
strb r0, [r6, #0xe]
adds r0, r6, #0
bl sub_0804AA1C
_080431E0:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080431E4: .4byte 0x00000161
thumb_func_start sub_080431E8
sub_080431E8: @ 0x080431E8
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0804324E
movs r0, #6
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r5, #0
ldr r7, _08043250 @ =gUnk_080D130C
movs r6, #0x18
_08043206:
ldr r1, [r4, #0x64]
adds r1, r1, r6
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r7
ldrh r0, [r0]
strh r0, [r1]
movs r0, #0x80
lsls r0, r0, #8
strh r0, [r1, #4]
ldr r0, _08043254 @ =gUnk_080D1414
adds r0, r5, r0
ldrb r0, [r0]
strb r0, [r1, #0xc]
cmp r5, #3
bne _08043230
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x11
bl sub_08004260
_08043230:
adds r6, #0x10
adds r5, #1
cmp r5, #3
bls _08043206
ldr r2, [r4, #0x64]
ldr r1, _08043258 @ =gUnk_080D1310
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
strh r0, [r2, #0x20]
adds r0, r4, #0
movs r1, #0xe
bl sub_080042AC
_0804324E:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08043250: .4byte gUnk_080D130C
_08043254: .4byte gUnk_080D1414
_08043258: .4byte gUnk_080D1310
thumb_func_start sub_0804325C
sub_0804325C: @ 0x0804325C
push {r4, lr}
adds r4, r0, #0
bl sub_08043CD4
ldr r0, _0804329C @ =gUnk_080D1314
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08043A10
adds r2, r4, #0
adds r2, #0x78
ldrb r0, [r2]
adds r1, r0, #0
cmp r1, #0
beq _080432A4
cmp r1, #2
bls _080432A0
subs r0, #2
strb r0, [r2]
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x10]
ldrh r0, [r1, #0x36]
ldrb r2, [r2]
adds r0, r0, r2
strh r0, [r1, #0x36]
b _080432A4
.align 2, 0
_0804329C: .4byte gUnk_080D1314
_080432A0:
movs r0, #0
strb r0, [r2]
_080432A4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080432A8
sub_080432A8: @ 0x080432A8
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
movs r3, #3
movs r2, #0
ldr r0, [r4, #0x64]
adds r1, r0, #0
adds r1, #0x48
ldrb r0, [r1, #0xc]
cmp r0, #2
bls _080432C2
subs r0, #1
strb r0, [r1, #0xc]
movs r2, #1
_080432C2:
subs r3, #1
cmp r3, #0
blt _080432E0
lsls r0, r3, #4
adds r0, #0x18
ldr r1, [r4, #0x64]
adds r1, r1, r0
ldrb r0, [r1, #0xc]
cmp r0, #2
bls _080432C2
subs r0, #1
strb r0, [r1, #0xc]
adds r2, #1
cmp r2, #1
ble _080432C2
_080432E0:
ldr r0, [r4, #0x64]
adds r1, r0, #0
adds r1, #0x18
ldrb r0, [r1, #5]
subs r0, #2
strb r0, [r1, #5]
movs r3, #0
movs r6, #0x80
movs r7, #4
rsbs r7, r7, #0
movs r5, #1
_080432F6:
ldr r0, [r4, #0x64]
lsls r1, r3, #2
adds r0, r0, r1
ldr r2, [r0]
movs r1, #0x36
ldrsh r0, [r2, r1]
cmp r0, #3
bgt _08043316
ldrb r0, [r2, #0x10]
orrs r0, r6
strb r0, [r2, #0x10]
ldrb r1, [r2, #0x18]
adds r0, r7, #0
ands r0, r1
orrs r0, r5
strb r0, [r2, #0x18]
_08043316:
adds r3, #1
cmp r3, #3
ble _080432F6
ldr r1, [r4, #0x64]
ldr r0, [r1]
ldrb r0, [r0, #0x18]
lsls r0, r0, #0x1e
lsrs r2, r0, #0x1e
cmp r2, #1
bne _08043348
adds r0, r1, #0
adds r0, #0x34
ldrb r0, [r0]
cmp r0, #2
bhi _08043348
strb r2, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #0x80
lsls r0, r0, #7
strh r0, [r1, #0x1c]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x10]
bl sub_0804AA1C
_08043348:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0804334C
sub_0804334C: @ 0x0804334C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08043388
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804341C
movs r5, #0
movs r7, #0x80
movs r6, #4
rsbs r6, r6, #0
movs r3, #1
_0804336A:
ldr r0, [r4, #0x64]
lsls r1, r5, #2
adds r0, r0, r1
ldr r2, [r0]
ldrb r0, [r2, #0x10]
orrs r0, r7
strb r0, [r2, #0x10]
ldrb r1, [r2, #0x18]
adds r0, r6, #0
ands r0, r1
orrs r0, r3
strb r0, [r2, #0x18]
adds r5, #1
cmp r5, #4
bls _0804336A
_08043388:
ldr r3, [r4, #0x64]
adds r2, r3, #0
adds r2, #0x18
ldr r1, _080433AC @ =gUnk_080D131C
ldrb r0, [r4, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
ldrb r1, [r2, #1]
subs r0, r0, r1
adds r0, #1
cmp r0, #2
bls _080433B0
ldrh r0, [r2, #8]
ldrh r1, [r3, #0x18]
adds r0, r0, r1
strh r0, [r3, #0x18]
movs r7, #0
b _080433B2
.align 2, 0
_080433AC: .4byte gUnk_080D131C
_080433B0:
movs r7, #1
_080433B2:
adds r0, r4, #0
bl sub_08043B9C
movs r5, #0
movs r6, #0x18
_080433BC:
ldr r0, [r4, #0x64]
adds r2, r0, r6
ldr r0, _080433E4 @ =gUnk_080D1414
adds r0, r5, r0
ldrb r1, [r2, #0xc]
ldrb r3, [r0]
cmp r3, r1
bls _080433E8
adds r0, r1, #1
strb r0, [r2, #0xc]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r3, r0
bne _0804341C
movs r0, #0xaf
lsls r0, r0, #1
bl PlaySFX
b _0804341C
.align 2, 0
_080433E4: .4byte gUnk_080D1414
_080433E8:
cmp r7, #0
beq _08043414
cmp r5, #4
bne _08043414
adds r0, r4, #0
bl sub_08043BC8
adds r0, r4, #0
movs r1, #7
bl sub_080042AC
adds r1, r4, #0
adds r1, #0x7e
ldrb r0, [r1]
cmp r0, #0
beq _08043414
movs r0, #0
strb r0, [r1]
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x14]
movs r0, #2
strb r0, [r1, #0xd]
_08043414:
adds r6, #0x10
adds r5, #1
cmp r5, #4
bls _080433BC
_0804341C:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08043420
sub_08043420: @ 0x08043420
push {r4, lr}
adds r4, r0, #0
ldr r1, _0804343C @ =gUnk_080D1320
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_08043ABC
pop {r4, pc}
.align 2, 0
_0804343C: .4byte gUnk_080D1320
thumb_func_start sub_08043440
sub_08043440: @ 0x08043440
push {r4, r5, r6, lr}
adds r3, r0, #0
movs r2, #0
movs r5, #0
movs r6, #0
movs r4, #0x18
_0804344C:
ldr r0, [r3, #0x64]
adds r1, r0, r4
ldrb r0, [r1, #5]
cmp r0, #0x10
bls _0804345E
subs r0, #0x10
strb r0, [r1, #5]
adds r5, #1
b _08043460
_0804345E:
strh r6, [r1, #4]
_08043460:
adds r4, #0x10
adds r2, #1
cmp r2, #4
bls _0804344C
cmp r5, #0
bne _0804348C
movs r2, #0
movs r4, #0x80
lsls r4, r4, #8
_08043472:
ldr r0, [r3, #0x64]
lsls r1, r2, #4
adds r0, r0, r1
strh r4, [r0, #0x18]
adds r2, #1
cmp r2, #4
bls _08043472
movs r0, #1
strb r0, [r3, #0xd]
adds r0, r3, #0
movs r1, #0x10
bl sub_080042AC
_0804348C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08043490
sub_08043490: @ 0x08043490
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x10]
mov ip, r0
ldrh r1, [r0, #0x36]
movs r2, #0x36
ldrsh r0, [r0, r2]
movs r2, #4
rsbs r2, r2, #0
cmp r0, r2
bge _080434C4
movs r0, #0xc0
lsls r0, r0, #9
mov r3, ip
str r0, [r3, #0x20]
movs r0, #0
movs r1, #2
strb r1, [r4, #0xd]
adds r2, r4, #0
adds r2, #0x7e
strb r0, [r2]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x14]
strb r1, [r0, #0xd]
b _08043514
_080434C4:
subs r0, r1, #2
mov r1, ip
strh r0, [r1, #0x36]
lsls r0, r0, #0x10
cmp r0, #0
bge _08043514
ldrb r0, [r1, #0x10]
movs r3, #0x80
orrs r0, r3
strb r0, [r1, #0x10]
ldrb r1, [r1, #0x18]
adds r0, r2, #0
ands r0, r1
movs r1, #1
orrs r0, r1
mov r2, ip
strb r0, [r2, #0x18]
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0xef
ands r0, r1
strb r0, [r2]
mov r1, ip
adds r1, #0x3f
movs r0, #0x3a
strb r0, [r1]
ldr r0, _0804351C @ =gUnk_080FD450
mov r1, ip
str r0, [r1, #0x48]
ldr r0, [r4, #0x64]
ldr r1, [r0, #8]
ldrb r0, [r1, #0x10]
orrs r3, r0
strb r3, [r1, #0x10]
ldr r0, [r4, #0x64]
ldr r2, [r0, #0xc]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
_08043514:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_0804351C: .4byte gUnk_080FD450
thumb_func_start sub_08043520
sub_08043520: @ 0x08043520
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, [r5, #0x64]
ldr r4, [r0, #0x10]
movs r1, #0xd0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
ldr r0, [r4, #0x20]
cmp r0, #0
bge _08043556
movs r0, #0x36
ldrsh r1, [r4, r0]
movs r0, #6
rsbs r0, r0, #0
cmp r1, r0
ble _08043556
ldr r0, _08043558 @ =0x0000FFFA
strh r0, [r4, #0x36]
movs r0, #3
strb r0, [r5, #0xd]
adds r1, r5, #0
adds r1, #0x7a
movs r0, #0xe1
lsls r0, r0, #2
strh r0, [r1]
_08043556:
pop {r4, r5, pc}
.align 2, 0
_08043558: .4byte 0x0000FFFA
thumb_func_start sub_0804355C
sub_0804355C: @ 0x0804355C
push {r4, lr}
adds r4, r0, #0
bl sub_08043DB0
adds r1, r4, #0
adds r1, #0x7a
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08043578
movs r0, #4
strb r0, [r4, #0xd]
_08043578:
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
thumb_func_start sub_08043580
sub_08043580: @ 0x08043580
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x10]
ldrh r0, [r1, #0x36]
adds r0, #3
strh r0, [r1, #0x36]
movs r2, #0
movs r5, #4
rsbs r5, r5, #0
movs r6, #0x7f
_08043596:
ldr r0, [r4, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r3, [r0]
movs r1, #0x36
ldrsh r0, [r3, r1]
cmp r0, r5
ble _080435B6
ldrb r1, [r3, #0x10]
adds r0, r6, #0
ands r0, r1
strb r0, [r3, #0x10]
ldrb r1, [r3, #0x18]
adds r0, r5, #0
ands r0, r1
strb r0, [r3, #0x18]
_080435B6:
adds r2, #1
cmp r2, #4
bls _08043596
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _080435EE
movs r0, #5
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldr r0, [r4, #0x64]
ldr r3, [r0, #0x10]
adds r2, r3, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r1, r3, #0
adds r1, #0x3f
movs r0, #0x39
strb r0, [r1]
ldr r0, _080435F0 @ =gUnk_080FD538
str r0, [r3, #0x48]
adds r0, r4, #0
bl sub_0804AA1C
_080435EE:
pop {r4, r5, r6, pc}
.align 2, 0
_080435F0: .4byte gUnk_080FD538
thumb_func_start sub_080435F4
sub_080435F4: @ 0x080435F4
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08043674
movs r0, #6
strb r0, [r4, #0xc]
movs r0, #1
strb r0, [r4, #0xd]
strb r0, [r4, #0xe]
movs r5, #0
ldr r0, _08043658 @ =gUnk_080D1338
mov sb, r0
movs r0, #0
mov r8, r0
movs r6, #0x18
ldr r7, _0804365C @ =gUnk_080D133C
_08043622:
ldr r1, [r4, #0x64]
adds r1, r1, r6
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
add r0, sb
ldrh r0, [r0]
strh r0, [r1]
movs r0, #0x80
lsls r0, r0, #7
strh r0, [r1, #4]
mov r0, r8
strb r0, [r1, #0xc]
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r7
ldrh r0, [r0]
strh r0, [r1, #8]
ldr r0, [r4, #0x64]
lsls r1, r5, #2
adds r0, r0, r1
ldr r2, [r0]
cmp r5, #0
bne _08043660
adds r0, r2, #0
bl sub_08043B9C
b _0804366C
.align 2, 0
_08043658: .4byte gUnk_080D1338
_0804365C: .4byte gUnk_080D133C
_08043660:
ldr r0, _0804367C @ =gUnk_080D1340
adds r0, r5, r0
ldrb r1, [r0]
adds r0, r2, #0
bl sub_08004260
_0804366C:
adds r6, #0x10
adds r5, #1
cmp r5, #4
bls _08043622
_08043674:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804367C: .4byte gUnk_080D1340
thumb_func_start sub_08043680
sub_08043680: @ 0x08043680
push {lr}
ldr r2, _08043694 @ =gUnk_080D1348
ldrb r1, [r0, #0xd]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08043694: .4byte gUnk_080D1348
thumb_func_start sub_08043698
sub_08043698: @ 0x08043698
push {r4, r5, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r3, #0
movs r5, #0x7f
_080436A8:
ldr r0, [r4, #0x64]
lsls r1, r3, #2
adds r0, r0, r1
ldr r2, [r0]
ldrb r1, [r2, #0x10]
adds r0, r5, #0
ands r0, r1
strb r0, [r2, #0x10]
adds r3, #1
cmp r3, #4
bls _080436A8
pop {r4, r5, pc}
thumb_func_start sub_080436C0
sub_080436C0: @ 0x080436C0
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _080436FC
movs r0, #0x14
strb r0, [r4, #0xe]
movs r0, #2
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
movs r1, #0x51
movs r2, #0
bl CreateFX
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
str r5, [r0, #0x64]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_0805E7BC
_080436FC:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08043700
sub_08043700: @ 0x08043700
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _08043734
movs r0, #0x14
strb r0, [r4, #0xe]
movs r0, #3
strb r0, [r4, #0xd]
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
movs r1, #0x51
movs r2, #0
bl CreateFX
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
str r5, [r0, #0x64]
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_0805E7BC
_08043734:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08043738
sub_08043738: @ 0x08043738
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _0804376C
movs r0, #0x14
strb r0, [r4, #0xe]
movs r0, #4
strb r0, [r4, #0xd]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
movs r1, #0x51
movs r2, #0
bl CreateFX
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
str r5, [r0, #0x64]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
bl sub_0805E7BC
_0804376C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08043770
sub_08043770: @ 0x08043770
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
lsrs r4, r0, #0x18
cmp r4, #0
bne _080437D8
ldr r0, [r2, #0x64]
ldr r3, [r0, #0x14]
ldr r0, _080437AC @ =gUnk_030010A0
adds r5, r0, #0
adds r5, #0x39
ldrb r1, [r5]
movs r0, #0xc
ands r0, r1
cmp r0, #0
bne _0804379A
movs r0, #2
strb r0, [r3, #0xd]
_0804379A:
ldrb r0, [r2, #0xb]
cmp r0, #0
bne _080437B0
ldr r0, [r3, #0x64]
str r4, [r0, #0x14]
ldrb r1, [r5]
movs r0, #0xfe
b _080437B8
.align 2, 0
_080437AC: .4byte gUnk_030010A0
_080437B0:
ldr r0, [r3, #0x64]
str r4, [r0, #0x18]
ldrb r1, [r5]
movs r0, #0xfd
_080437B8:
ands r0, r1
strb r0, [r5]
ldr r0, [r2, #0x64]
ldr r0, [r0, #0x10]
movs r1, #0
str r1, [r0, #0x64]
ldr r0, [r2, #0x64]
ldr r0, [r0, #0x10]
adds r0, #0x45
strb r1, [r0]
ldr r1, [r2, #0x68]
ldr r0, [r2, #0x64]
ldr r0, [r0, #0x10]
str r0, [r1, #0x50]
bl sub_0805E780
_080437D8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080437DC
sub_080437DC: @ 0x080437DC
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r6, r0, #0
ldr r0, _0804392C @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x43
bls _080437EE
b _08043934
_080437EE:
movs r0, #0x68
bl sub_0801D8E0
adds r7, r0, #0
cmp r7, #0
bne _080437FC
b _08043934
_080437FC:
adds r2, r6, #0
adds r2, #0x29
ldrb r1, [r2]
movs r4, #8
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
movs r1, #5
mov r8, r1
mov r1, r8
orrs r0, r1
strb r0, [r2]
adds r1, r6, #0
adds r1, #0x3c
ldrb r0, [r1]
movs r5, #0x10
orrs r0, r5
strb r0, [r1]
str r7, [r6, #0x64]
str r6, [r7]
movs r0, #0x52
movs r1, #1
bl CreateEnemy
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
adds r0, r4, #0
ands r0, r1
mov r1, r8
orrs r0, r1
strb r0, [r3]
adds r1, r2, #0
adds r1, #0x3c
ldrb r0, [r1]
orrs r0, r5
strb r0, [r1]
str r7, [r2, #0x64]
str r2, [r7, #4]
adds r0, r6, #0
adds r1, r2, #0
bl CopyPosition
movs r0, #0x52
movs r1, #2
bl CreateEnemy
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
adds r0, r4, #0
ands r0, r1
mov r1, r8
orrs r0, r1
strb r0, [r3]
adds r1, r2, #0
adds r1, #0x3c
ldrb r0, [r1]
orrs r0, r5
strb r0, [r1]
str r7, [r2, #0x64]
str r2, [r7, #8]
adds r0, r6, #0
adds r1, r2, #0
bl CopyPosition
movs r0, #0x52
movs r1, #3
bl CreateEnemy
adds r2, r0, #0
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
adds r0, r4, #0
ands r0, r1
mov r1, r8
orrs r0, r1
strb r0, [r3]
adds r1, r2, #0
adds r1, #0x3c
ldrb r0, [r1]
orrs r0, r5
strb r0, [r1]
str r7, [r2, #0x64]
str r2, [r7, #0xc]
adds r0, r6, #0
adds r1, r2, #0
bl CopyPosition
movs r0, #0x52
movs r1, #4
bl CreateEnemy
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x29
ldrb r0, [r1]
ands r4, r0
mov r0, r8
orrs r4, r0
strb r4, [r1]
adds r1, #0x13
ldrb r0, [r1]
orrs r5, r0
strb r5, [r1]
str r7, [r2, #0x64]
str r2, [r7, #0x10]
adds r0, r6, #0
adds r1, r2, #0
bl CopyPosition
ldr r0, [r6, #0x50]
str r0, [r7, #0x14]
ldr r1, _08043930 @ =gUnk_080D135C
ldrb r0, [r6, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r2, [r0]
movs r3, #0
strh r2, [r7, #0x18]
movs r1, #0x80
lsls r1, r1, #7
strh r1, [r7, #0x1c]
adds r0, r7, #0
adds r0, #0x24
strb r3, [r0]
strh r2, [r7, #0x28]
strh r1, [r7, #0x2c]
adds r0, #0x10
strb r3, [r0]
strh r2, [r7, #0x38]
strh r1, [r7, #0x3c]
adds r0, #0x10
strb r3, [r0]
adds r0, #4
strh r2, [r0]
adds r0, #4
strh r1, [r0]
adds r0, #8
strb r3, [r0]
adds r0, #4
strh r2, [r0]
adds r0, #4
strh r1, [r0]
adds r0, #8
strb r3, [r0]
movs r0, #1
b _08043936
.align 2, 0
_0804392C: .4byte gUnk_03003DBC
_08043930: .4byte gUnk_080D135C
_08043934:
movs r0, #0
_08043936:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804393C
sub_0804393C: @ 0x0804393C
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
ldr r0, [r5, #0x64]
ldr r1, [r0]
adds r0, r1, #0
adds r0, #0x7c
ldrb r0, [r0]
lsls r2, r0, #0x18
cmp r2, #0
beq _0804397C
adds r0, r1, #0
adds r0, #0x7d
ldrb r0, [r0]
ldrb r1, [r5, #0xa]
cmp r0, r1
bhi _0804397C
ldr r4, _08043978 @ =gUnk_080D1362
ldrb r3, [r5, #0xa]
lsls r1, r3, #4
lsrs r0, r2, #0x1b
movs r2, #0xf
ands r0, r2
adds r1, r1, r0
adds r1, r1, r4
ldrb r4, [r1]
adds r6, r3, #0
b _08043980
.align 2, 0
_08043978: .4byte gUnk_080D1362
_0804397C:
movs r4, #0
ldrb r6, [r5, #0xa]
_08043980:
lsls r0, r6, #4
adds r0, #0x18
ldr r2, [r5, #0x64]
mov ip, r2
adds r2, r2, r0
ldrb r0, [r2, #0xc]
adds r0, r4, r0
lsls r4, r0, #8
ldr r3, _08043A0C @ =gUnk_080C9160
ldrb r1, [r2, #5]
adds r0, r1, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
movs r7, #0
ldrsh r0, [r0, r7]
rsbs r0, r0, #0
adds r7, r0, #0
muls r7, r4, r7
mov r8, r7
movs r0, #0x7f
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r3
movs r7, #0
ldrsh r0, [r1, r7]
muls r0, r4, r0
cmp r0, #0
bge _080439BC
adds r0, #0xff
_080439BC:
asrs r4, r0, #8
ldrb r1, [r2, #1]
lsls r0, r1, #1
adds r0, r0, r3
movs r2, #0
ldrsh r0, [r0, r2]
adds r2, r0, #0
muls r2, r4, r2
adds r1, #0x40
lsls r1, r1, #1
adds r1, r1, r3
movs r3, #0
ldrsh r0, [r1, r3]
rsbs r0, r0, #0
adds r3, r0, #0
muls r3, r4, r3
adds r0, r6, #1
lsls r0, r0, #2
add r0, ip
ldr r0, [r0]
adds r1, r5, #0
bl PositionRelative
ldr r0, [r5, #0x34]
add r0, r8
str r0, [r5, #0x34]
ldr r1, [r5, #0x64]
ldrb r0, [r5, #0xa]
adds r0, #1
lsls r0, r0, #2
adds r1, r1, r0
ldr r0, [r1]
adds r0, #0x63
ldrb r1, [r0]
adds r0, r5, #0
adds r0, #0x63
strb r1, [r0]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08043A0C: .4byte gUnk_080C9160
thumb_func_start sub_08043A10
sub_08043A10: @ 0x08043A10
push {r4, lr}
adds r4, r0, #0
bl sub_08043B7C
ldr r0, [r4, #0x64]
ldr r0, [r0, #0x10]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x10]
ldrh r0, [r1, #0x32]
subs r0, #8
strh r0, [r1, #0x32]
ldr r0, [r4, #0x64]
ldr r1, [r0, #0x10]
ldrh r0, [r1, #0x36]
subs r0, #8
strh r0, [r1, #0x36]
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r1, [r0]
ldrh r0, [r1, #0x32]
adds r0, #1
strh r0, [r1, #0x32]
ldr r0, [r4, #0x64]
ldr r1, [r0]
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
adds r4, #0x7c
ldrb r0, [r4]
cmp r0, #0
beq _08043A76
subs r0, #1
strb r0, [r4]
_08043A76:
pop {r4, pc}
thumb_func_start sub_08043A78
sub_08043A78: @ 0x08043A78
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_08043B7C
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r1, [r0]
ldrh r0, [r1, #0x32]
adds r0, #1
strh r0, [r1, #0x32]
ldr r0, [r4, #0x64]
ldr r1, [r0]
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08043ABC
sub_08043ABC: @ 0x08043ABC
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_08043B7C
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r0, [r0]
bl sub_0804393C
ldr r0, [r4, #0x64]
ldr r1, [r0]
ldrh r0, [r1, #0x32]
adds r0, #1
strh r0, [r1, #0x32]
ldr r0, [r4, #0x64]
ldr r1, [r0]
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08043B08
sub_08043B08: @ 0x08043B08
push {r4, r5, r6, lr}
ldrb r3, [r0, #0xa]
lsls r1, r3, #4
adds r4, r1, #0
adds r4, #8
ldr r2, [r0, #0x64]
adds r6, r2, r4
adds r1, #0x18
adds r4, r2, r1
ldr r0, _08043B40 @ =gUnk_080D13B2
adds r3, r3, r0
ldrb r5, [r3]
ldr r0, [r2]
ldrb r0, [r0, #0xb]
cmp r0, #0
bne _08043B44
ldrb r1, [r6, #1]
ldrb r0, [r4, #1]
subs r0, r1, r0
lsls r0, r0, #0x18
asrs r3, r0, #0x18
cmp r5, r3
bhs _08043B5E
cmp r3, #0
ble _08043B56
subs r0, r1, r5
b _08043B5C
.align 2, 0
_08043B40: .4byte gUnk_080D13B2
_08043B44:
ldrb r0, [r4, #1]
ldrb r1, [r6, #1]
subs r0, r0, r1
lsls r0, r0, #0x18
asrs r3, r0, #0x18
cmp r5, r3
bhs _08043B5E
cmp r3, #0
bge _08043B5A
_08043B56:
strb r1, [r4, #1]
b _08043B5E
_08043B5A:
adds r0, r1, r5
_08043B5C:
strb r0, [r4, #1]
_08043B5E:
ldrb r2, [r6, #5]
ldrb r0, [r4, #5]
subs r3, r2, r0
lsls r1, r5, #1
adds r0, r3, r5
cmp r1, r0
bhs _08043B78
cmp r3, #0
ble _08043B74
subs r0, r2, r5
b _08043B76
_08043B74:
adds r0, r2, r5
_08043B76:
strb r0, [r4, #5]
_08043B78:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08043B7C
sub_08043B7C: @ 0x08043B7C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
bl sub_08043B08
ldr r0, [r4, #0x64]
ldr r0, [r0, #8]
bl sub_08043B08
ldr r0, [r4, #0x64]
ldr r0, [r0, #0xc]
bl sub_08043B08
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08043B9C
sub_08043B9C: @ 0x08043B9C
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x64]
ldrb r0, [r0, #0x19]
adds r0, #4
movs r1, #0xff
ands r0, r1
asrs r0, r0, #3
ldr r1, _08043BC4 @ =gUnk_080D13B7
adds r0, r0, r1
ldrb r1, [r0]
ldrb r0, [r2, #0x1e]
subs r0, #1
cmp r1, r0
beq _08043BC0
adds r0, r2, #0
bl sub_080042AC
_08043BC0:
pop {pc}
.align 2, 0
_08043BC4: .4byte gUnk_080D13B7
thumb_func_start sub_08043BC8
sub_08043BC8: @ 0x08043BC8
movs r1, #2
strb r1, [r0, #0xc]
ldrb r2, [r0, #0xb]
lsls r2, r2, #2
ldr r1, _08043BEC @ =gUnk_080D13D8
adds r2, r2, r1
ldr r1, [r0, #0x64]
adds r1, #0x18
ldrh r0, [r2]
strh r0, [r1, #8]
ldrh r0, [r2, #2]
strh r0, [r1, #0xa]
movs r0, #0x5a
strb r0, [r1, #0xd]
movs r0, #0x28
strb r0, [r1, #0xe]
bx lr
.align 2, 0
_08043BEC: .4byte gUnk_080D13D8
thumb_func_start sub_08043BF0
sub_08043BF0: @ 0x08043BF0
push {lr}
adds r2, r0, #0
ldr r0, [r2, #0x64]
adds r1, r0, #0
adds r1, #0x18
ldrb r0, [r2, #0xb]
cmp r0, #0
bne _08043C18
ldrb r0, [r1, #1]
movs r1, #6
cmp r0, #0x2f
bls _08043C2E
movs r1, #7
cmp r0, #0x5f
bls _08043C2E
movs r1, #9
cmp r0, #0x8f
bhi _08043C2E
movs r1, #8
b _08043C2E
_08043C18:
ldrb r0, [r1, #1]
movs r1, #8
cmp r0, #0xd0
bhi _08043C2E
movs r1, #7
cmp r0, #0xa0
bhi _08043C2E
movs r1, #5
cmp r0, #0x70
bls _08043C2E
movs r1, #6
_08043C2E:
adds r0, r2, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, r1
beq _08043C3E
adds r0, r2, #0
bl sub_080042AC
_08043C3E:
pop {pc}
thumb_func_start sub_08043C40
sub_08043C40: @ 0x08043C40
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
ldrb r0, [r1, #5]
cmp r0, #0x1f
bhi _08043C54
ldr r6, _08043C50 @ =gUnk_080D13E0
b _08043C68
.align 2, 0
_08043C50: .4byte gUnk_080D13E0
_08043C54:
cmp r0, #0x2f
bhi _08043C60
ldr r6, _08043C5C @ =gUnk_080D13E3
b _08043C68
.align 2, 0
_08043C5C: .4byte gUnk_080D13E3
_08043C60:
ldr r6, _08043C84 @ =gUnk_080D13E0
cmp r0, #0x77
bhi _08043C68
adds r6, #6
_08043C68:
movs r4, #0
movs r5, #0x28
_08043C6C:
ldr r0, [r7, #0x64]
adds r3, r0, r5
adds r0, r6, r4
ldrb r1, [r3, #0xc]
ldrb r2, [r0]
adds r0, r1, #0
cmp r2, r0
beq _08043C8C
cmp r2, r0
bhs _08043C88
subs r0, r1, #1
b _08043C8A
.align 2, 0
_08043C84: .4byte gUnk_080D13E0
_08043C88:
adds r0, r1, #1
_08043C8A:
strb r0, [r3, #0xc]
_08043C8C:
adds r5, #0x10
adds r4, #1
cmp r4, #2
bls _08043C6C
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08043C98
sub_08043C98: @ 0x08043C98
push {lr}
adds r3, r0, #0
ldr r0, [r3, #0x64]
ldr r1, [r0, #8]
ldr r2, [r0, #0xc]
adds r1, #0x41
ldrb r0, [r1]
cmp r0, #0x9d
beq _08043CB4
adds r0, r2, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x9d
bne _08043CD0
_08043CB4:
adds r0, r3, #0
bl sub_08043D08
ldr r0, _08043CCC @ =gUnk_030010A0
adds r0, #0x38
ldrb r2, [r0]
movs r1, #2
orrs r1, r2
strb r1, [r0]
movs r0, #1
b _08043CD2
.align 2, 0
_08043CCC: .4byte gUnk_030010A0
_08043CD0:
movs r0, #0
_08043CD2:
pop {pc}
thumb_func_start sub_08043CD4
sub_08043CD4: @ 0x08043CD4
push {r4, r5, lr}
adds r3, r0, #0
movs r2, #0
adds r4, r3, #0
adds r4, #0x7c
movs r5, #0x78
movs r0, #0x7d
adds r0, r0, r3
mov ip, r0
_08043CE6:
ldr r0, [r3, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x9d
bne _08043CFE
strb r5, [r4]
mov r0, ip
strb r2, [r0]
b _08043D04
_08043CFE:
adds r2, #1
cmp r2, #4
bls _08043CE6
_08043D04:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08043D08
sub_08043D08: @ 0x08043D08
push {r4, r5, lr}
adds r5, r0, #0
movs r1, #0
movs r0, #7
strb r0, [r5, #0xc]
strb r1, [r5, #0xd]
adds r0, r5, #0
movs r1, #0xd
bl sub_080042AC
ldr r0, [r5, #0x64]
ldr r4, [r0, #0x10]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0x13
bl sub_08004260
adds r0, r4, #0
bl sub_0804AA1C
adds r0, r4, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _08043D78
ldr r1, _08043DAC @ =gUnk_080D13E9
ldrb r0, [r5, #0xb]
adds r0, r0, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldrh r1, [r2, #0x2e]
adds r0, r0, r1
strh r0, [r2, #0x2e]
ldrh r0, [r2, #0x32]
subs r0, #6
strh r0, [r2, #0x32]
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
_08043D78:
ldr r0, [r5, #0x64]
ldr r0, [r0, #0xc]
adds r1, r4, #0
bl CopyPosition
ldr r1, [r5, #0x64]
adds r1, #0x54
ldrh r0, [r4, #0x36]
ldrb r1, [r1]
adds r0, r0, r1
strh r0, [r4, #0x36]
movs r2, #0
movs r3, #0x39
_08043D92:
ldr r0, [r5, #0x64]
lsls r1, r2, #2
adds r0, r0, r1
ldr r0, [r0]
adds r0, #0x3f
strb r3, [r0]
adds r2, #1
cmp r2, #4
bls _08043D92
movs r0, #0xfe
bl sub_08004488
pop {r4, r5, pc}
.align 2, 0
_08043DAC: .4byte gUnk_080D13E9
thumb_func_start sub_08043DB0
sub_08043DB0: @ 0x08043DB0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _08043E48 @ =gLinkState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08043EAC
ldr r0, [r5, #0x64]
ldr r2, [r0, #0xc]
movs r1, #0x2e
ldrsh r0, [r2, r1]
ldr r6, _08043E4C @ =gRoomControls
ldrh r1, [r6, #6]
subs r0, r0, r1
movs r3, #0x32
ldrsh r1, [r2, r3]
ldrh r2, [r6, #8]
subs r1, r1, r2
adds r1, #2
movs r2, #3
movs r3, #3
bl sub_0800293E
cmp r0, #0
beq _08043EAC
ldr r0, _08043E50 @ =gUnk_080D13EC
bl sub_08080840
ldr r4, _08043E54 @ =gUnk_030010A0
adds r0, r4, #0
adds r0, #0x39
ldrb r1, [r0]
movs r0, #3
ands r0, r1
cmp r0, #3
beq _08043DFE
movs r0, #1
strb r0, [r4, #0xd]
_08043DFE:
adds r0, r5, #0
adds r0, #0x7a
ldrh r0, [r0]
movs r1, #0x3c
bl __divsi3
movs r1, #0x1e
subs r1, r1, r0
adds r0, r4, #0
adds r0, #0x3d
strb r1, [r0]
ldrb r1, [r5, #0xb]
subs r0, #1
strb r1, [r0]
ldr r0, [r5, #0x64]
ldr r2, [r0, #0x14]
ldrh r1, [r2, #0x2e]
adds r0, r4, #0
adds r0, #0x40
strh r1, [r0]
ldrh r0, [r2, #0x32]
adds r1, r4, #0
adds r1, #0x42
strh r0, [r1]
ldr r0, [r2, #0x64]
ldr r3, [r0, #0x14]
cmp r3, #0
beq _08043E58
ldrh r1, [r3, #0x2e]
adds r0, r4, #0
adds r0, #0x44
strh r1, [r0]
ldrh r1, [r3, #0x32]
adds r0, #2
strh r1, [r0]
b _08043E70
.align 2, 0
_08043E48: .4byte gLinkState
_08043E4C: .4byte gRoomControls
_08043E50: .4byte gUnk_080D13EC
_08043E54: .4byte gUnk_030010A0
_08043E58:
movs r1, #0x88
lsls r1, r1, #1
adds r0, r1, #0
ldrh r3, [r6, #6]
adds r0, r0, r3
adds r1, r4, #0
adds r1, #0x44
strh r0, [r1]
ldrh r0, [r6, #8]
adds r0, #0x60
adds r1, #2
strh r0, [r1]
_08043E70:
ldr r0, [r2, #0x64]
ldr r3, [r0, #0x18]
cmp r3, #0
beq _08043E90
ldr r1, _08043E8C @ =gUnk_030010A0
ldrh r2, [r3, #0x2e]
adds r0, r1, #0
adds r0, #0x48
strh r2, [r0]
ldrh r0, [r3, #0x32]
adds r1, #0x4a
strh r0, [r1]
b _08043EAC
.align 2, 0
_08043E8C: .4byte gUnk_030010A0
_08043E90:
ldr r2, _08043EB0 @ =gUnk_030010A0
ldr r3, _08043EB4 @ =gRoomControls
movs r1, #0x88
lsls r1, r1, #1
adds r0, r1, #0
ldrh r1, [r3, #6]
adds r0, r0, r1
adds r1, r2, #0
adds r1, #0x48
strh r0, [r1]
ldrh r0, [r3, #8]
adds r0, #0x60
adds r2, #0x4a
strh r0, [r2]
_08043EAC:
pop {r4, r5, r6, pc}
.align 2, 0
_08043EB0: .4byte gUnk_030010A0
_08043EB4: .4byte gRoomControls
thumb_func_start sub_08043EB8
sub_08043EB8: @ 0x08043EB8
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r7, r0, #0
ldrb r0, [r7, #0x10]
movs r5, #0x80
orrs r0, r5
strb r0, [r7, #0x10]
adds r2, r7, #0
adds r2, #0x29
ldrb r1, [r2]
movs r4, #8
rsbs r4, r4, #0
adds r0, r4, #0
ands r0, r1
movs r6, #4
orrs r0, r6
strb r0, [r2]
adds r0, r7, #0
movs r1, #0xd
bl sub_080042AC
ldr r0, [r7, #0x64]
ldr r3, [r0, #4]
ldrb r0, [r3, #0x10]
orrs r0, r5
strb r0, [r3, #0x10]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
adds r0, r4, #0
ands r0, r1
orrs r0, r6
strb r0, [r2]
ldr r0, [r7, #0x64]
ldr r3, [r0, #8]
ldrb r0, [r3, #0x10]
orrs r0, r5
strb r0, [r3, #0x10]
adds r2, r3, #0
adds r2, #0x29
ldrb r1, [r2]
adds r0, r4, #0
ands r0, r1
orrs r0, r6
strb r0, [r2]
ldr r0, [r7, #0x64]
ldr r3, [r0, #0xc]
ldrb r1, [r3, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r3, #0x10]
ldrb r2, [r3, #0x18]
movs r1, #4
rsbs r1, r1, #0
adds r0, r1, #0
ands r0, r2
movs r2, #1
mov r8, r2
mov r2, r8
orrs r0, r2
strb r0, [r3, #0x18]
adds r3, #0x29
ldrb r2, [r3]
adds r0, r4, #0
ands r0, r2
orrs r0, r6
strb r0, [r3]
ldr r0, [r7, #0x64]
ldr r3, [r0, #0x10]
ldrb r0, [r3, #0x10]
orrs r5, r0
strb r5, [r3, #0x10]
ldrb r0, [r3, #0x18]
ands r1, r0
mov r0, r8
orrs r1, r0
strb r1, [r3, #0x18]
adds r1, r3, #0
adds r1, #0x29
ldrb r0, [r1]
ands r4, r0
orrs r4, r6
strb r4, [r1]
ldrb r0, [r7, #0xb]
cmp r0, #0
bne _08043F74
ldr r1, _08043F70 @ =gUnk_030010A0
adds r0, r1, #0
adds r0, #0x44
b _08043F7A
.align 2, 0
_08043F70: .4byte gUnk_030010A0
_08043F74:
ldr r1, _08043F8C @ =gUnk_030010A0
adds r0, r1, #0
adds r0, #0x48
_08043F7A:
ldrh r0, [r0]
strh r0, [r3, #0x2e]
ldrb r0, [r7, #0xb]
cmp r0, #0
bne _08043F90
adds r0, r1, #0
adds r0, #0x46
b _08043F94
.align 2, 0
_08043F8C: .4byte gUnk_030010A0
_08043F90:
adds r0, r1, #0
adds r0, #0x4a
_08043F94:
ldrh r1, [r0]
movs r0, #0
strh r1, [r3, #0x32]
strh r0, [r3, #0x36]
adds r2, r3, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0xef
ands r0, r1
strb r0, [r2]
adds r1, r3, #0
adds r1, #0x3f
movs r0, #0x3a
strb r0, [r1]
ldr r0, _08043FF8 @ =gUnk_080FD450
str r0, [r3, #0x48]
movs r0, #0xaf
movs r1, #0
movs r2, #0
bl CreateObject
adds r3, r0, #0
cmp r3, #0
beq _08043FCA
ldr r0, [r7, #0x64]
ldr r0, [r0, #0xc]
str r0, [r3, #0x50]
_08043FCA:
ldr r0, [r7, #0x64]
ldr r0, [r0]
str r3, [r0, #0x68]
movs r2, #0
movs r6, #0
movs r5, #0x80
lsls r5, r5, #8
ldr r4, _08043FFC @ =gUnk_080D1419
movs r3, #0x18
_08043FDC:
ldr r0, [r7, #0x64]
adds r0, r0, r3
strh r5, [r0]
strh r6, [r0, #4]
adds r1, r2, r4
ldrb r1, [r1]
strb r1, [r0, #0xc]
adds r3, #0x10
adds r2, #1
cmp r2, #4
bls _08043FDC
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08043FF8: .4byte gUnk_080FD450
_08043FFC: .4byte gUnk_080D1419
thumb_func_start sub_08044000
sub_08044000: @ 0x08044000
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xb]
lsls r1, r0, #2
adds r1, r1, r0
lsls r1, r1, #1
ldr r0, _08044070 @ =gUnk_080D1400
movs r3, #0
ldr r2, _08044074 @ =gUnk_080D1414
mov ip, r2
movs r7, #8
rsbs r7, r7, #0
adds r5, r1, r0
movs r6, #0x18
_0804401C:
ldr r0, [r4, #0x64]
lsls r1, r3, #2
adds r0, r0, r1
ldr r2, [r0]
ldrb r1, [r2, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r2, #0x10]
adds r2, #0x29
ldrb r1, [r2]
adds r0, r7, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
ldr r1, [r4, #0x64]
adds r1, r1, r6
ldrh r0, [r5]
strh r0, [r1]
movs r0, #0x80
lsls r0, r0, #7
strh r0, [r1, #4]
mov r2, ip
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1, #0xc]
adds r5, #2
adds r6, #0x10
adds r3, #1
cmp r3, #4
bls _0804401C
adds r0, r4, #0
movs r1, #7
bl sub_080042AC
ldr r1, [r4, #0x64]
ldr r0, [r1, #0x14]
ldr r1, [r1, #0x10]
bl CopyPosition
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08044070: .4byte gUnk_080D1400
_08044074: .4byte gUnk_080D1414
thumb_func_start sub_08044078
sub_08044078: @ 0x08044078
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080440C4
movs r2, #1
strb r2, [r4, #0xc]
ldrb r0, [r4, #0xa]
cmp r0, #3
bne _080440AC
ldr r3, _080440B8 @ =gUnk_030010A0
adds r0, r3, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _080440BC
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r1, r3, #0
adds r1, #0x3c
ldrb r0, [r0, #0xb]
ldrb r1, [r1]
cmp r0, r1
bne _080440BC
_080440AC:
adds r0, r4, #0
movs r1, #0x12
bl sub_08004260
b _080440C4
.align 2, 0
_080440B8: .4byte gUnk_030010A0
_080440BC:
adds r0, r4, #0
movs r1, #0x11
bl sub_08004260
_080440C4:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_080440CC
sub_080440CC: @ 0x080440CC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08044110
movs r0, #1
strb r0, [r4, #0xc]
ldr r2, _08044104 @ =gUnk_030010A0
adds r1, r2, #0
adds r1, #0x38
ldrb r1, [r1]
ands r0, r1
cmp r0, #0
beq _08044108
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r1, r2, #0
adds r1, #0x3c
ldrb r0, [r0, #0xb]
ldrb r1, [r1]
cmp r0, r1
bne _08044108
adds r0, r4, #0
movs r1, #0x13
bl sub_08004260
b _08044110
.align 2, 0
_08044104: .4byte gUnk_030010A0
_08044108:
adds r0, r4, #0
movs r1, #0x11
bl sub_08004260
_08044110:
adds r0, r4, #0
bl sub_08004274
pop {r4, pc}
thumb_func_start sub_08044118
sub_08044118: @ 0x08044118
push {r4, r5, lr}
adds r5, r0, #0
ldr r4, _08044130 @ =gUnk_080D1588
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_08044130: .4byte gUnk_080D1588
thumb_func_start sub_08044134
sub_08044134: @ 0x08044134
push {lr}
ldr r2, _08044148 @ =gUnk_080D15A0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08044148: .4byte gUnk_080D15A0
thumb_func_start sub_0804414C
sub_0804414C: @ 0x0804414C
push {lr}
ldr r1, _08044158 @ =gUnk_080D1588
bl sub_0804AA30
pop {pc}
.align 2, 0
_08044158: .4byte gUnk_080D1588
thumb_func_start sub_0804415C
sub_0804415C: @ 0x0804415C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0804418E
adds r0, r4, #0
bl sub_0806F520
cmp r0, #0
beq _08044188
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080441BA
movs r0, #8
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08044310
b _080441BA
_08044188:
movs r0, #8
strb r0, [r4, #0xe]
b _080441BA
_0804418E:
adds r0, r4, #0
bl sub_0806F520
cmp r0, #0
beq _080441B0
ldr r0, _080441AC @ =gUnk_080D15A8
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
b _080441BA
.align 2, 0
_080441AC: .4byte gUnk_080D15A8
_080441B0:
adds r0, r4, #0
bl sub_080445C0
bl sub_0805E780
_080441BA:
pop {r4, pc}
thumb_func_start sub_080441BC
sub_080441BC: @ 0x080441BC
movs r1, #2
strb r1, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start sub_080441C4
sub_080441C4: @ 0x080441C4
push {lr}
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_080441CC
sub_080441CC: @ 0x080441CC
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _080441DE
adds r0, r4, #0
bl sub_0804A7D4
_080441DE:
pop {r4, pc}
thumb_func_start sub_080441E0
sub_080441E0: @ 0x080441E0
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
movs r0, #0x12
bl GetProgressFlag
cmp r0, #0
beq _080441F2
bl sub_0805E780
_080441F2:
ldrb r7, [r4, #0xa]
cmp r7, #0
bne _08044284
ldr r0, _08044244 @ =0x000001EB
movs r1, #1
bl sub_080AD8F0
adds r6, r0, #0
ldrb r1, [r6]
lsls r0, r1, #2
adds r0, r0, r1
adds r5, r0, #1
adds r0, r5, #0
bl sub_0801D8E0
adds r1, r0, #0
str r1, [r4, #0x64]
cmp r1, #0
beq _0804429A
adds r0, r6, #0
adds r2, r5, #0
bl sub_0801D66C
adds r1, r4, #0
adds r1, #0x28
movs r0, #0xff
strb r0, [r1]
ldr r0, [r4, #0x64]
ldrb r0, [r0]
lsls r0, r0, #3
adds r0, #0xc
bl sub_0801D8E0
adds r2, r0, #0
cmp r2, #0
bne _08044248
ldr r0, [r4, #0x64]
bl sub_0801DA0C
b _0804429A
.align 2, 0
_08044244: .4byte 0x000001EB
_08044248:
str r2, [r4, #0x48]
ldr r0, _0804427C @ =gUnk_080FD188
ldr r1, [r0, #4]
ldr r0, [r0]
str r0, [r2]
str r1, [r2, #4]
adds r0, r4, #0
bl sub_080442BC
movs r0, #1
strb r0, [r4, #0x1e]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x75
strb r7, [r0]
adds r1, r4, #0
adds r1, #0x76
ldr r0, _08044280 @ =0x0000FFFF
strh r0, [r1]
b _08044292
.align 2, 0
_0804427C: .4byte gUnk_080FD188
_08044280: .4byte 0x0000FFFF
_08044284:
movs r0, #0
strb r0, [r4, #0x1e]
strh r0, [r4, #0x24]
ldr r0, _0804429C @ =gUnk_080FD168
str r0, [r4, #0x48]
movs r0, #1
strb r0, [r4, #0x1c]
_08044292:
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #8
strb r0, [r4, #0xe]
_0804429A:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804429C: .4byte gUnk_080FD168
thumb_func_start sub_080442A0
sub_080442A0: @ 0x080442A0
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xa]
cmp r0, #0
bne _080442B2
adds r0, r1, #0
bl sub_08044498
b _080442B8
_080442B2:
adds r0, r1, #0
bl sub_08044550
_080442B8:
pop {pc}
.align 2, 0
thumb_func_start sub_080442BC
sub_080442BC: @ 0x080442BC
push {r4, r5, r6, r7, lr}
adds r3, r0, #0
ldr r5, _0804430C @ =gUnk_080D15B4
ldr r0, [r3, #0x64]
ldrb r6, [r0]
movs r4, #0
cmp r4, r6
bhs _08044304
movs r7, #0
_080442CE:
ldr r1, [r3, #0x48]
lsls r2, r4, #3
adds r1, r2, r1
ldrb r0, [r5]
strb r0, [r1, #0xc]
ldr r0, [r3, #0x48]
adds r0, r2, r0
ldrb r1, [r5, #1]
strb r1, [r0, #0xd]
ldr r0, [r3, #0x48]
adds r0, r2, r0
ldrb r1, [r5, #2]
strb r1, [r0, #0xe]
ldr r0, [r3, #0x48]
adds r0, r2, r0
ldrb r1, [r5, #3]
strb r1, [r0, #0xf]
ldr r0, [r3, #0x48]
adds r0, r2, r0
adds r0, #0xc
strb r7, [r0, #4]
ldr r0, [r3, #0x48]
adds r2, r2, r0
strb r4, [r2, #0x11]
adds r4, #1
cmp r4, r6
blo _080442CE
_08044304:
adds r0, r3, #0
adds r0, #0x74
strb r6, [r0]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804430C: .4byte gUnk_080D15B4
thumb_func_start sub_08044310
sub_08044310: @ 0x08044310
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
movs r4, #0xff
movs r6, #0xff
ldr r0, _08044334 @ =gLinkEntity
ldrb r0, [r0, #0x14]
lsrs r1, r0, #1
movs r0, #3
ands r1, r0
cmp r1, #1
beq _0804436A
cmp r1, #1
bgt _08044338
cmp r1, #0
beq _08044342
b _080443EA
.align 2, 0
_08044334: .4byte gLinkEntity
_08044338:
cmp r1, #2
beq _08044392
cmp r1, #3
beq _080443C4
b _080443EA
_08044342:
movs r2, #0
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r2, r0
bhs _080443EA
adds r3, r0, #0
ldr r1, [r5, #0x48]
_08044352:
ldrb r0, [r1, #0x10]
cmp r0, #0
bne _08044360
ldrb r0, [r1, #0xd]
cmp r6, r0
bls _08044360
adds r4, r2, #0
_08044360:
adds r1, #8
adds r2, #1
cmp r2, r3
blo _08044352
b _080443EA
_0804436A:
movs r2, #0
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r2, r0
bhs _080443EA
adds r3, r0, #0
ldr r1, [r5, #0x48]
_0804437A:
ldrb r0, [r1, #0x10]
cmp r0, #0
bne _08044388
ldrb r0, [r1, #0xe]
cmp r6, r0
bls _08044388
adds r4, r2, #0
_08044388:
adds r1, #8
adds r2, #1
cmp r2, r3
blo _0804437A
b _080443EA
_08044392:
movs r2, #0
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r2, r0
bhs _080443EA
adds r3, r0, #0
ldr r1, [r5, #0x48]
_080443A2:
ldrb r0, [r1, #0x10]
cmp r0, #0
bne _080443B0
ldrb r0, [r1, #0xc]
cmp r6, r0
bls _080443B0
adds r4, r2, #0
_080443B0:
adds r1, #8
adds r2, #1
cmp r2, r3
blo _080443A2
b _080443EA
_080443BA:
mov r1, r8
adds r0, r1, r4
ldrb r0, [r0, #0x11]
strb r0, [r3, #5]
b _08044492
_080443C4:
movs r2, #0
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r2, r0
bhs _080443EA
adds r3, r0, #0
ldr r1, [r5, #0x48]
_080443D4:
ldrb r0, [r1, #0x10]
cmp r0, #0
bne _080443E2
ldrb r0, [r1, #0xf]
cmp r6, r0
bls _080443E2
adds r4, r2, #0
_080443E2:
adds r1, #8
adds r2, #1
cmp r2, r3
blo _080443D4
_080443EA:
cmp r4, #0xff
beq _08044492
ldr r0, [r5, #0x48]
lsls r4, r4, #3
adds r0, r4, r0
movs r1, #1
strb r1, [r0, #0x10]
ldr r1, [r5, #0x64]
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
ldr r2, [r5, #0x64]
ldrb r1, [r2]
lsls r0, r1, #2
adds r0, r0, r1
adds r0, #1
adds r7, r2, r0
ldr r0, [r5, #0x48]
adds r0, r4, r0
ldrb r1, [r0, #0x11]
lsls r0, r1, #2
adds r0, r0, r1
adds r0, #1
adds r6, r2, r0
movs r0, #0x53
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
mov r8, r4
cmp r1, #0
beq _08044440
movs r2, #0
ldrsb r2, [r6, r2]
adds r2, #8
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r6, r3]
adds r3, #8
lsls r3, r3, #0x10
adds r0, r5, #0
bl PositionRelative
_08044440:
ldr r0, [r5, #0x64]
ldrb r0, [r0]
cmp r0, #0
bne _08044458
movs r0, #0x12
bl sub_0807CD04
movs r0, #0x72
bl PlaySFX
bl sub_0805E780
_08044458:
movs r2, #0
adds r3, r5, #0
adds r3, #0x74
_0804445E:
adds r0, r6, r2
adds r1, r7, r2
ldrb r1, [r1]
strb r1, [r0]
adds r2, #1
cmp r2, #4
bls _0804445E
movs r2, #0
ldrb r1, [r3]
cmp r2, r1
bhs _08044492
ldr r4, [r5, #0x48]
ldr r0, [r5, #0x64]
ldrb r6, [r0]
adds r5, r1, #0
adds r3, r4, #0
adds r3, #0xc
adds r1, r4, #0
_08044482:
ldrb r0, [r1, #0x11]
cmp r0, r6
beq _080443BA
adds r3, #8
adds r1, #8
adds r2, #1
cmp r2, r5
blo _08044482
_08044492:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08044498
sub_08044498: @ 0x08044498
push {r4, r5, r6, lr}
mov ip, r0
ldr r6, _08044538 @ =gLinkEntity
movs r1, #0x2e
ldrsh r0, [r6, r1]
ldr r3, _0804453C @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r4, r0, #4
movs r2, #0x3f
ands r4, r2
movs r5, #0x32
ldrsh r0, [r6, r5]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
ldr r0, _08044540 @ =gLinkState
adds r0, #0x92
ldrh r0, [r0]
movs r1, #0xf0
lsls r1, r1, #4
ands r1, r0
mov r2, ip
adds r2, #0x75
ldrb r0, [r2]
cmp r1, r0
bne _080444DE
mov r0, ip
adds r0, #0x76
ldrh r0, [r0]
cmp r4, r0
beq _0804454C
_080444DE:
strb r1, [r2]
mov r0, ip
adds r0, #0x76
strh r4, [r0]
mov r1, ip
ldr r0, [r1, #0x64]
adds r2, r0, #1
ldrb r4, [r0]
movs r3, #0x2e
ldrsh r1, [r6, r3]
mov r5, ip
movs r3, #0x2e
ldrsh r0, [r5, r3]
subs r5, r1, r0
movs r0, #0x32
ldrsh r1, [r6, r0]
mov r3, ip
movs r6, #0x32
ldrsh r0, [r3, r6]
subs r1, r1, r0
movs r3, #0
cmp r3, r4
bhs _0804454C
_0804450C:
movs r0, #0
ldrsb r0, [r2, r0]
subs r0, r5, r0
cmp r0, #0xf
bhi _08044544
movs r0, #1
ldrsb r0, [r2, r0]
subs r0, r1, r0
cmp r0, #0xf
bhi _08044544
movs r0, #0xf
movs r1, #0x11
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _0804454C
ldr r0, _08044538 @ =gLinkEntity
bl CopyPosition
b _0804454C
.align 2, 0
_08044538: .4byte gLinkEntity
_0804453C: .4byte gRoomControls
_08044540: .4byte gLinkState
_08044544:
adds r2, #5
adds r3, #1
cmp r3, r4
blo _0804450C
_0804454C:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08044550
sub_08044550: @ 0x08044550
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
ldr r0, _080445A8 @ =gLinkState
ldrb r1, [r0, #0x1c]
movs r0, #0xf
ands r0, r1
cmp r0, #1
bne _080445B4
ldrh r1, [r6, #0x24]
movs r2, #0x24
ldrsh r0, [r6, r2]
cmp r0, #0xff
bgt _08044570
adds r0, r1, #0
adds r0, #0x10
strh r0, [r6, #0x24]
_08044570:
ldr r5, _080445AC @ =gLinkEntity
ldrb r0, [r5, #0x14]
movs r4, #0xe
ands r4, r0
ldr r0, _080445B0 @ =gUnk_08126EE4
adds r4, r4, r0
movs r3, #0x2e
ldrsh r0, [r6, r3]
movs r7, #0x32
ldrsh r1, [r6, r7]
movs r3, #0x2e
ldrsh r2, [r5, r3]
movs r3, #0
ldrsb r3, [r4, r3]
adds r2, r2, r3
movs r7, #0x32
ldrsh r3, [r5, r7]
ldrb r4, [r4, #1]
lsls r4, r4, #0x18
asrs r4, r4, #0x18
adds r3, r3, r4
bl sub_080045D4
strb r0, [r6, #0x15]
adds r0, r6, #0
bl sub_0806F69C
b _080445BE
.align 2, 0
_080445A8: .4byte gLinkState
_080445AC: .4byte gLinkEntity
_080445B0: .4byte gUnk_08126EE4
_080445B4:
adds r0, r6, #0
bl sub_080445C0
bl sub_0805E780
_080445BE:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_080445C0
sub_080445C0: @ 0x080445C0
push {r4, lr}
adds r4, r0, #0
movs r0, #0x21
movs r1, #1
movs r2, #1
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _080445DA
adds r0, r4, #0
bl CopyPosition
_080445DA:
pop {r4, pc}
thumb_func_start sub_080445DC
sub_080445DC: @ 0x080445DC
push {r4, r5, lr}
adds r4, r0, #0
ldr r5, [r4, #0x50]
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _08044604
cmp r0, #3
beq _08044604
ldr r1, [r5, #0x2c]
ldr r0, [r5, #0x78]
subs r1, r1, r0
ldr r0, [r4, #0x2c]
adds r0, r0, r1
str r0, [r4, #0x2c]
ldr r1, [r5, #0x30]
ldr r0, [r5, #0x7c]
subs r1, r1, r0
ldr r0, [r4, #0x30]
adds r0, r0, r1
str r0, [r4, #0x30]
_08044604:
ldr r1, _08044684 @ =gUnk_080D1604
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
adds r0, #0x84
ldrb r0, [r0]
cmp r0, #0
beq _08044626
adds r1, r4, #0
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
_08044626:
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08044680
movs r0, #0x3f
ands r0, r1
cmp r0, #0
bne _0804464A
ldrb r0, [r4, #0xc]
cmp r0, #6
bne _0804464A
movs r0, #2
rsbs r0, r0, #0
bl ModHealth
_0804464A:
adds r2, r4, #0
adds r2, #0x45
ldrb r0, [r2]
cmp r0, #0xfc
bhi _08044680
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #0xff
strb r0, [r2]
adds r1, r5, #0
adds r1, #0x80
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl sub_080A29BC
ldr r0, _08044688 @ =0x000001C3
bl PlaySFX
_08044680:
pop {r4, r5, pc}
.align 2, 0
_08044684: .4byte gUnk_080D1604
_08044688: .4byte 0x000001C3
thumb_func_start sub_0804468C
sub_0804468C: @ 0x0804468C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r0, #0x38
movs r6, #0
movs r5, #3
strb r5, [r0]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
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]
adds r0, r4, #0
adds r0, #0x84
strb r6, [r0]
ldrb r3, [r4, #0xa]
cmp r3, #0
beq _080446C8
cmp r3, #1
beq _08044728
b _0804474A
_080446C8:
movs r0, #1
strb r0, [r4, #0xc]
strb r0, [r4, #0xe]
adds r2, r4, #0
adds r2, #0x79
ldrb r0, [r2]
lsls r0, r0, #3
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
adds r0, #0x78
strb r3, [r0]
adds r0, #0xb
strb r3, [r0]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r2]
adds r1, r5, #0
ands r1, r0
lsls r1, r1, #1
ldr r0, _08044724 @ =gUnk_080D1620
adds r1, r1, r0
ldr r0, [r4, #0x50]
movs r2, #0
ldrsb r2, [r1, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r1, r3]
subs r3, #0x10
lsls r3, r3, #0x10
adds r1, r4, #0
bl PositionRelative
ldr r0, [r4, #0x50]
ldrh r0, [r0, #0x36]
strh r0, [r4, #0x36]
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
b _0804474A
.align 2, 0
_08044724: .4byte gUnk_080D1620
_08044728:
strb r5, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x74
strb r6, [r0]
adds r0, #0xf
movs r2, #1
strb r3, [r0]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
_0804474A:
pop {r4, r5, r6, pc}
thumb_func_start sub_0804474C
sub_0804474C: @ 0x0804474C
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r2, [r0, #0xc]
cmp r2, #3
beq _0804476C
cmp r2, #3
bgt _08044762
cmp r2, #2
beq _0804479A
b _080447A8
_08044762:
cmp r2, #5
beq _0804477A
cmp r2, #6
beq _0804478A
b _080447A8
_0804476C:
movs r1, #0
strb r2, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x74
strb r1, [r0]
strb r1, [r4, #0xe]
b _080447A8
_0804477A:
movs r0, #0
strb r2, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x74
strb r0, [r1]
movs r0, #1
strb r0, [r4, #0xf]
b _080447A8
_0804478A:
movs r0, #0
strb r2, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x74
strb r0, [r1]
movs r0, #0x20
strb r0, [r4, #0xf]
b _080447A8
_0804479A:
movs r1, #0
strb r2, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x74
strb r1, [r0]
subs r0, #0x35
strb r1, [r0]
_080447A8:
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _080447B6
adds r0, r4, #0
bl sub_080042B8
b _080447DC
_080447B6:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080447D0
movs r0, #2
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
adds r0, #1
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_080447D0:
adds r0, r4, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_080042B8
_080447DC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080447E0
sub_080447E0: @ 0x080447E0
push {r4, lr}
adds r4, r0, #0
ldr r3, [r4, #0x50]
ldrb r0, [r3, #0xc]
cmp r0, #1
bne _08044818
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x2b
strb r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_08044E74
ldrb r1, [r4, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08044864
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
b _08044864
_08044818:
adds r1, r4, #0
adds r1, #0x77
ldrb r0, [r1]
adds r2, r0, #1
movs r0, #7
ands r2, r0
strb r2, [r1]
ldrb r1, [r4, #0x10]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08044852
movs r0, #1
ands r0, r2
cmp r0, #0
beq _08044848
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
b _08044852
_08044848:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_08044852:
adds r0, r3, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r0, #2
bne _08044864
adds r0, r4, #0
movs r1, #2
bl sub_08044E74
_08044864:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08044868
sub_08044868: @ 0x08044868
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldr r5, [r4, #0x50]
adds r0, r5, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r0, #3
bne _0804487E
b _080449C8
_0804487E:
cmp r0, #3
bgt _0804488E
cmp r0, #1
beq _08044948
cmp r0, #2
bne _0804488C
b _080449AE
_0804488C:
b _080449EA
_0804488E:
cmp r0, #0xfe
beq _08044898
cmp r0, #0xff
beq _080448B6
b _080449EA
_08044898:
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
cmp r0, #0
bne _080448A4
b _080449EA
_080448A4:
adds r0, r4, #0
adds r0, #0x74
ldrb r0, [r0]
cmp r0, #2
beq _080448B0
b _080449EA
_080448B0:
bl sub_0805E780
b _080449EA
_080448B6:
adds r0, r4, #0
adds r0, #0x83
ldrb r0, [r0]
cmp r0, #0
bne _080448C2
b _080449EA
_080448C2:
adds r6, r4, #0
adds r6, #0x74
ldrb r0, [r6]
cmp r0, #0
beq _080448D2
cmp r0, #1
beq _08044900
b _080449EA
_080448D2:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _080448E2
b _080449EA
_080448E2:
movs r0, #1
strb r0, [r6]
movs r0, #0x2e
ldrsh r1, [r5, r0]
movs r0, #0x32
ldrsh r2, [r5, r0]
subs r2, #0x10
adds r0, r4, #0
bl sub_080045B4
strb r0, [r4, #0x15]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
b _080449EA
_08044900:
adds r0, r4, #0
bl sub_0806F69C
movs r0, #0x2e
ldrsh r1, [r5, r0]
movs r0, #0x32
ldrsh r2, [r5, r0]
subs r2, #0x10
adds r0, r4, #0
movs r3, #0xc
bl sub_0806FCB8
cmp r0, #0
beq _08044934
ldrb r0, [r6]
adds r0, #1
strb r0, [r6]
ldrh r0, [r5, #0x2e]
strh r0, [r4, #0x2e]
ldrh r0, [r5, #0x32]
subs r0, #0x10
strh r0, [r4, #0x32]
ldrb r0, [r5, #0xe]
adds r0, #1
strb r0, [r5, #0xe]
b _080449EA
_08044934:
movs r0, #0x2e
ldrsh r1, [r5, r0]
movs r0, #0x32
ldrsh r2, [r5, r0]
subs r2, #0x10
adds r0, r4, #0
bl sub_080045B4
strb r0, [r4, #0x15]
b _080449EA
_08044948:
adds r1, r4, #0
adds r1, #0x83
ldrb r0, [r1]
cmp r0, #0
bne _08044964
adds r0, #1
strb r0, [r1]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
_08044964:
adds r0, r4, #0
bl sub_08044DEC
adds r0, r5, #0
adds r0, #0x86
ldrb r0, [r0]
cmp r0, #1
bls _080449A8
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r6, r0, #0x1e
cmp r6, #1
bne _080449A8
movs r0, #0x84
adds r0, r0, r4
mov r8, r0
ldrb r7, [r0]
cmp r7, #0
bne _080449A8
adds r0, r4, #0
movs r1, #0x18
movs r2, #0
bl sub_0804A98C
adds r5, r0, #0
cmp r5, #0
beq _080449A8
strb r6, [r5, #0xb]
str r4, [r5, #0x50]
mov r0, r8
strb r6, [r0]
adds r0, r4, #0
adds r0, #0x3f
strb r7, [r0]
_080449A8:
movs r0, #0x20
strb r0, [r4, #0xe]
b _080449EA
_080449AE:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080449EA
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x10
bhi _080449EA
adds r0, r4, #0
bl sub_0806F69C
b _080449EA
_080449C8:
adds r0, r4, #0
movs r1, #1
bl sub_08044E74
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _080449E2
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
b _080449E8
_080449E2:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
_080449E8:
strb r0, [r4, #0x10]
_080449EA:
adds r0, r4, #0
bl sub_080042B8
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_080449F8
sub_080449F8: @ 0x080449F8
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r4, [r5, #0x50]
bl sub_080042B8
ldrb r0, [r4, #0xc]
cmp r0, #1
beq _08044A90
adds r6, r4, #0
adds r6, #0x74
ldrb r0, [r6]
cmp r0, #1
beq _08044A6A
cmp r0, #1
bgt _08044A1C
cmp r0, #0
beq _08044A26
b _08044B02
_08044A1C:
cmp r0, #2
beq _08044AC6
cmp r0, #3
beq _08044AF8
b _08044B02
_08044A26:
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08044B02
adds r1, r5, #0
adds r1, #0x78
ldrb r0, [r1]
cmp r0, #0
bne _08044A4C
adds r0, #1
strb r0, [r1]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r5, #0x24]
_08044A4C:
movs r0, #4
strb r0, [r5, #0xe]
ldrb r0, [r5, #0x15]
adds r0, #1
movs r1, #0x1f
ands r0, r1
strb r0, [r5, #0x15]
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _08044B02
movs r0, #1
strb r0, [r6]
b _08044B02
_08044A6A:
ldrb r0, [r5, #0xe]
cmp r0, #2
beq _08044A84
cmp r0, #2
bgt _08044A7A
cmp r0, #1
beq _08044A9A
b _08044B02
_08044A7A:
cmp r0, #3
beq _08044ABA
cmp r0, #4
beq _08044AB4
b _08044B02
_08044A84:
adds r0, r4, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #0
bne _08044B02
strb r0, [r5, #0xf]
_08044A90:
adds r0, r5, #0
movs r1, #0
bl sub_08044E74
b _08044B02
_08044A9A:
ldrb r0, [r5, #0x15]
adds r0, #0x10
movs r4, #0x1f
ands r0, r4
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0x15]
adds r0, #0x10
ands r0, r4
strb r0, [r5, #0x15]
b _08044AC0
_08044AB4:
adds r0, r5, #0
bl sub_0806F69C
_08044ABA:
adds r0, r5, #0
bl sub_0806F69C
_08044AC0:
movs r0, #2
strb r0, [r5, #0xe]
b _08044B02
_08044AC6:
adds r1, r5, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #0
bne _08044B02
adds r0, #1
strb r0, [r1]
ldrb r0, [r5, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
beq _08044B02
adds r0, r5, #0
movs r1, #0x1c
movs r2, #0
bl sub_0804A98C
adds r4, r0, #0
cmp r4, #0
beq _08044B02
ldrh r0, [r4, #0x32]
adds r0, #4
strh r0, [r4, #0x32]
str r5, [r4, #0x50]
str r4, [r5, #0x54]
b _08044B02
_08044AF8:
ldrb r0, [r5, #0xf]
cmp r0, #0
beq _08044B02
movs r0, #0
strb r0, [r5, #0xf]
_08044B02:
pop {r4, r5, r6, pc}
thumb_func_start sub_08044B04
sub_08044B04: @ 0x08044B04
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldr r6, [r4, #0x50]
bl sub_080042B8
ldrb r0, [r6, #0xc]
cmp r0, #1
bne _08044B26
adds r0, r4, #0
movs r1, #0
bl sub_08044E74
movs r0, #0x20
strb r0, [r4, #0xe]
b _08044DE6
_08044B26:
adds r0, r6, #0
adds r0, #0x74
ldrb r5, [r0]
cmp r5, #1
bne _08044B32
b _08044D10
_08044B32:
cmp r5, #1
bgt _08044B3C
cmp r5, #0
beq _08044B4A
b _08044DE6
_08044B3C:
cmp r5, #2
bne _08044B42
b _08044DE6
_08044B42:
cmp r5, #3
bne _08044B48
b _08044D6A
_08044B48:
b _08044DE6
_08044B4A:
adds r0, r4, #0
bl sub_0806F69C
adds r7, r4, #0
adds r7, #0x74
ldrb r0, [r7]
mov r8, r7
cmp r0, #1
beq _08044BF4
cmp r0, #1
bgt _08044B66
cmp r0, #0
beq _08044B72
b _08044DE6
_08044B66:
cmp r0, #2
beq _08044C4C
cmp r0, #3
bne _08044B70
b _08044C9C
_08044B70:
b _08044DE6
_08044B72:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08044B98
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
movs r1, #2
cmp r0, #0
beq _08044B8C
movs r1, #4
_08044B8C:
strb r1, [r4, #0xe]
ldrb r0, [r4, #0x15]
adds r0, #1
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_08044B98:
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
movs r2, #0xff
lsls r0, r0, #0x18
lsrs r3, r0, #0x18
cmp r3, #0
beq _08044BAA
b _08044DE6
_08044BAA:
ldrb r0, [r4, #0xe]
cmp r0, #2
beq _08044BB6
movs r0, #1
strb r0, [r4, #0xf]
b _08044DE6
_08044BB6:
adds r1, r4, #0
adds r1, #0x78
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r2
cmp r0, #2
bls _08044BDA
mov r2, r8
ldrb r0, [r2]
adds r0, #1
strb r0, [r2]
movs r0, #1
strb r0, [r1]
movs r0, #4
strb r0, [r4, #0xe]
strb r3, [r4, #0xf]
b _08044BDE
_08044BDA:
movs r0, #0x20
strb r0, [r4, #0xf]
_08044BDE:
ldrb r0, [r1]
movs r2, #0xa0
lsls r2, r2, #3
adds r1, r2, #0
cmp r0, #0
beq _08044BF0
movs r0, #0xa0
lsls r0, r0, #2
adds r1, r0, #0
_08044BF0:
strh r1, [r4, #0x24]
b _08044DE6
_08044BF4:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
lsls r0, r0, #0x18
cmp r0, #0
beq _08044C04
b _08044DE6
_08044C04:
movs r0, #6
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
adds r0, #1
movs r2, #0x1f
mov r8, r2
mov r2, r8
ands r0, r2
strb r0, [r4, #0x15]
ldrb r0, [r4, #0xf]
adds r0, #1
strb r0, [r4, #0xf]
ands r0, r1
cmp r0, #0x30
beq _08044C24
b _08044DE6
_08044C24:
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r0, #0x32
ldrsh r2, [r6, r0]
subs r2, #0x10
adds r0, r4, #0
bl sub_080045B4
strh r5, [r4, #0x24]
adds r0, #0x10
mov r1, r8
ands r0, r1
strb r0, [r4, #0x15]
movs r0, #0x10
strb r0, [r4, #0xe]
strb r0, [r4, #0xf]
ldrb r0, [r7]
adds r0, #1
strb r0, [r7]
b _08044DE6
_08044C4C:
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _08044CA2
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #4
beq _08044CAE
cmp r5, #4
bgt _08044C6A
cmp r5, #0
beq _08044C78
b _08044DE6
_08044C6A:
cmp r5, #0xc
beq _08044C70
b _08044DE6
_08044C70:
movs r0, #0xa0
lsls r0, r0, #3
strh r0, [r4, #0x24]
b _08044DE6
_08044C78:
ldrb r0, [r7]
adds r0, #1
strb r0, [r7]
movs r2, #0x2e
ldrsh r1, [r6, r2]
movs r0, #0x32
ldrsh r2, [r6, r0]
subs r2, #0x10
adds r0, r4, #0
bl sub_080045B4
strb r0, [r4, #0x15]
strh r5, [r4, #0x24]
movs r0, #4
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0xf]
b _08044DE6
_08044C9C:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08044CB6
_08044CA2:
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
beq _08044CAE
b _08044DE6
_08044CAE:
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
b _08044DE6
_08044CB6:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08044CD2
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08044CD2
movs r0, #0xa0
lsls r0, r0, #3
strh r0, [r4, #0x24]
ldr r0, _08044D0C @ =0x0000014F
bl PlaySFX
_08044CD2:
adds r0, r4, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #3
bne _08044CF8
movs r2, #0x2e
ldrsh r1, [r6, r2]
movs r0, #0x32
ldrsh r2, [r6, r0]
subs r2, #0x10
adds r0, r4, #0
movs r3, #0xc
bl sub_0806FCB8
cmp r0, #0
beq _08044CF8
ldrb r0, [r6, #0xe]
adds r0, #1
strb r0, [r6, #0xe]
_08044CF8:
movs r2, #0x2e
ldrsh r1, [r6, r2]
movs r0, #0x32
ldrsh r2, [r6, r0]
subs r2, #0x10
adds r0, r4, #0
bl sub_080045B4
strb r0, [r4, #0x15]
b _08044DE6
.align 2, 0
_08044D0C: .4byte 0x0000014F
_08044D10:
adds r1, r4, #0
adds r1, #0x74
ldrb r0, [r1]
cmp r0, #1
beq _08044D50
cmp r0, #3
bne _08044DE6
strb r5, [r1]
movs r0, #0x50
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldr r3, _08044D4C @ =0xFFF00000
adds r0, r6, #0
adds r1, r4, #0
movs r2, #0
bl PositionRelative
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08044DE6
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
b _08044DE6
.align 2, 0
_08044D4C: .4byte 0xFFF00000
_08044D50:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0
bne _08044DE6
strb r0, [r1]
movs r0, #0x20
strb r0, [r4, #0xe]
movs r0, #4
strb r0, [r4, #0xf]
b _08044DE6
_08044D6A:
adds r5, r4, #0
adds r5, #0x74
ldrb r0, [r5]
cmp r0, #1
beq _08044DA4
cmp r0, #1
bgt _08044D7E
cmp r0, #0
beq _08044D84
b _08044DE6
_08044D7E:
cmp r0, #2
beq _08044DBE
b _08044DE6
_08044D84:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08044DE6
subs r0, #1
strb r0, [r4, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _08044DE6
adds r0, r4, #0
bl sub_08044DEC
movs r0, #1
strb r0, [r5]
movs r0, #0x10
strb r0, [r4, #0xe]
b _08044DE6
_08044DA4:
adds r0, r4, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08044DE6
ldrb r0, [r5]
adds r0, #1
strb r0, [r5]
b _08044DE6
_08044DBE:
adds r0, r4, #0
movs r1, #1
bl sub_08044E74
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _08044DD8
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
b _08044DDE
_08044DD8:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
_08044DDE:
strb r0, [r4, #0x10]
ldrb r0, [r6, #0xe]
adds r0, #1
strb r0, [r6, #0xe]
_08044DE6:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08044DEC
sub_08044DEC: @ 0x08044DEC
push {lr}
mov ip, r0
ldr r0, [r0, #0x50]
adds r0, #0x80
mov r1, ip
adds r1, #0x79
ldrb r0, [r0]
ldrb r1, [r1]
cmp r0, r1
bls _08044E1A
mov r0, ip
ldrb r1, [r0, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
mov r1, ip
strb r0, [r1, #0x18]
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
b _08044E26
_08044E1A:
mov r2, ip
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0x18]
_08044E26:
mov r0, ip
ldrb r1, [r0, #0x10]
movs r0, #0x7f
ands r0, r1
movs r1, #0
mov r2, ip
strb r0, [r2, #0x10]
mov r0, ip
adds r0, #0x78
strb r1, [r0]
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r2, #0x24]
ldr r0, [r2, #0x50]
adds r1, r0, #0
adds r1, #0x80
ldrb r1, [r1]
subs r1, #1
ldr r2, _08044E6C @ =gUnk_080D1628
mov r3, ip
adds r3, #0x79
lsls r1, r1, #2
ldrb r3, [r3]
adds r1, r1, r3
adds r1, r1, r2
ldrb r1, [r1]
mov r2, ip
strb r1, [r2, #0x15]
ldr r3, _08044E70 @ =0xFFF00000
mov r1, ip
movs r2, #0
bl PositionRelative
pop {pc}
.align 2, 0
_08044E6C: .4byte gUnk_080D1628
_08044E70: .4byte 0xFFF00000
thumb_func_start sub_08044E74
sub_08044E74: @ 0x08044E74
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r2, r1, #0
movs r0, #0
movs r1, #1
strb r1, [r5, #0xc]
adds r1, r5, #0
adds r1, #0x74
strb r0, [r1]
cmp r2, #1
beq _08044ED4
cmp r2, #1
blo _08044EE4
adds r6, r5, #0
adds r6, #0x78
cmp r2, #2
bne _08044F3E
strb r2, [r5, #0xc]
ldrb r0, [r5, #0x15]
adds r0, #0x18
movs r4, #0x1f
ands r0, r4
strb r0, [r5, #0x15]
ldr r0, [r5, #0x50]
ldr r3, _08044ED0 @ =0xFFF00000
adds r1, r5, #0
movs r2, #0
bl PositionRelative
movs r0, #0xc0
lsls r0, r0, #6
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0x15]
adds r0, #8
ands r0, r4
strb r0, [r5, #0x15]
movs r0, #0xa0
lsls r0, r0, #3
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_0806F69C
b _08044F3E
.align 2, 0
_08044ED0: .4byte 0xFFF00000
_08044ED4:
ldrb r0, [r5, #0x15]
adds r0, #8
movs r1, #0x1f
ands r0, r1
strb r0, [r5, #0x15]
adds r6, r5, #0
adds r6, #0x78
b _08044F3E
_08044EE4:
adds r0, r5, #0
adds r0, #0x78
ldrb r1, [r0]
adds r6, r0, #0
cmp r1, #0
beq _08044F32
ldrb r0, [r5, #0xe]
cmp r0, #1
beq _08044F18
cmp r0, #1
blt _08044F3E
cmp r0, #4
bgt _08044F3E
cmp r0, #3
blt _08044F3E
movs r4, #0xff
_08044F04:
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
ands r0, r4
cmp r0, #2
bne _08044F04
b _08044F3E
_08044F18:
ldrb r0, [r5, #0x15]
adds r0, #0x10
movs r4, #0x1f
ands r0, r4
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F69C
ldrb r0, [r5, #0x15]
adds r0, #0x10
ands r0, r4
strb r0, [r5, #0x15]
b _08044F3E
_08044F32:
ldrb r0, [r5, #0xe]
cmp r0, #2
bne _08044F3E
adds r0, r5, #0
bl sub_0806F69C
_08044F3E:
movs r0, #0
movs r1, #1
strb r1, [r5, #0xe]
strb r0, [r6]
movs r0, #0xa0
lsls r0, r0, #3
strh r0, [r5, #0x24]
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08044F50
sub_08044F50: @ 0x08044F50
push {r4, lr}
adds r4, r0, #0
ldr r1, _08044F6C @ =gUnk_080D16A4
bl sub_0800129E
movs r3, #0xc
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_08044F6C: .4byte gUnk_080D16A4
thumb_func_start sub_08044F70
sub_08044F70: @ 0x08044F70
push {lr}
ldr r2, _08044F84 @ =gUnk_080D16BC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08044F84: .4byte gUnk_080D16BC
thumb_func_start sub_08044F88
sub_08044F88: @ 0x08044F88
push {r4, lr}
adds r4, r0, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
beq _08044FA2
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, r1
beq _08044FA2
movs r0, #4
strb r0, [r4, #0xc]
b _08044FAA
_08044FA2:
ldr r1, _08044FC0 @ =gUnk_080D16A4
adds r0, r4, #0
bl sub_0804AA30
_08044FAA:
adds r0, r4, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _08044FBC
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_08044FBC:
pop {r4, pc}
.align 2, 0
_08044FC0: .4byte gUnk_080D16A4
thumb_func_start nullsub_171
nullsub_171: @ 0x08044FC4
bx lr
.align 2, 0
thumb_func_start sub_08044FC8
sub_08044FC8: @ 0x08044FC8
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #0
bl sub_08004260
adds r0, r4, #0
bl sub_08044FF8
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08044FF8
sub_08044FF8: @ 0x08044FF8
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #0x1e
strb r0, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
adds r4, #0x84
strb r0, [r4]
pop {r4, pc}
thumb_func_start sub_08045018
sub_08045018: @ 0x08045018
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08004274
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045086
movs r4, #3
strb r4, [r5, #0xc]
movs r0, #1
strb r0, [r5, #0xe]
movs r1, #0x24
ldrsh r0, [r5, r1]
cmp r0, #0
ble _0804504C
movs r0, #0x80
lsls r0, r0, #5
movs r2, #0x24
ldrsh r1, [r5, r2]
bl sub_0806FA04
lsrs r0, r0, #8
strb r0, [r5, #0xe]
_0804504C:
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _0804507C
bl Random
ands r0, r4
cmp r0, #0
beq _0804507C
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _08045086
_0804507C:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
_08045086:
pop {r4, r5, pc}
thumb_func_start sub_08045088
sub_08045088: @ 0x08045088
push {r4, lr}
adds r4, r0, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080450A6
movs r0, #1
strb r0, [r4, #0xc]
_080450A6:
pop {r4, pc}
thumb_func_start sub_080450A8
sub_080450A8: @ 0x080450A8
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x10
mov r8, r0
ldr r1, _0804516C @ =gUnk_080D16D0
ldrb r0, [r0, #0xa]
adds r0, r0, r1
ldrb r7, [r0]
movs r0, #0x48
subs r0, r0, r7
ldr r1, _08045170 @ =gUnk_03003DBC
ldrb r1, [r1]
cmp r0, r1
ble _08045160
cmp r7, #0
beq _080450E2
mov r4, sp
adds r5, r7, #0
_080450D0:
mov r0, r8
ldrb r1, [r0, #0xa]
movs r0, #0x57
bl CreateEnemy
stm r4!, {r0}
subs r5, #1
cmp r5, #0
bne _080450D0
_080450E2:
ldr r2, _08045174 @ =gUnk_080D16D4
mov sb, r2
movs r5, #0
cmp r5, r7
bge _08045142
_080450EC:
lsls r0, r5, #2
add r0, sp
ldr r6, [r0]
adds r4, r5, #1
adds r0, r4, #0
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x54]
adds r0, r5, r7
subs r0, #1
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x50]
movs r1, #0
movs r0, #1
strb r0, [r6, #0xb]
strh r1, [r6, #0x36]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0xf0
strb r0, [r1]
mov r0, sb
movs r2, #0
ldrsb r2, [r0, r2]
movs r3, #1
ldrsb r3, [r0, r3]
mov r0, r8
adds r1, r6, #0
bl sub_08045178
movs r2, #2
add sb, r2
adds r5, r4, #0
cmp r5, r7
blt _080450EC
_08045142:
mov r0, r8
movs r1, #2
movs r2, #0
bl CreateFX
adds r6, r0, #0
cmp r6, #0
beq _0804515A
mov r0, r8
adds r1, r6, #0
bl CopyPosition
_0804515A:
mov r0, r8
bl sub_0805E7BC
_08045160:
add sp, #0x10
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804516C: .4byte gUnk_080D16D0
_08045170: .4byte gUnk_03003DBC
_08045174: .4byte gUnk_080D16D4
thumb_func_start sub_08045178
sub_08045178: @ 0x08045178
push {r4, r5, r6, lr}
adds r4, r1, #0
adds r5, r2, #0
adds r6, r3, #0
cmp r4, #0
beq _080451C6
bl sub_0804A4E4
adds r0, r4, #0
adds r1, r5, #0
adds r2, r6, #0
bl sub_080002CC
cmp r0, #0
bne _080451C6
movs r1, #0x2e
ldrsh r0, [r4, r1]
adds r2, r0, r5
cmp r2, #0
blt _080451AE
ldr r0, _080451C8 @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r0, [r0, #0x1e]
adds r1, r1, r0
cmp r2, r1
bge _080451AE
strh r2, [r4, #0x2e]
_080451AE:
movs r1, #0x32
ldrsh r0, [r4, r1]
adds r2, r0, r6
cmp r2, #0
blt _080451C6
ldr r0, _080451C8 @ =gRoomControls
ldrh r1, [r0, #8]
ldrh r0, [r0, #0x20]
adds r1, r1, r0
cmp r2, r1
bge _080451C6
strh r2, [r4, #0x32]
_080451C6:
pop {r4, r5, r6, pc}
.align 2, 0
_080451C8: .4byte gRoomControls
thumb_func_start sub_080451CC
sub_080451CC: @ 0x080451CC
ldrb r3, [r0, #0x10]
movs r2, #0xfe
ands r2, r3
strb r2, [r1, #0x10]
ldr r2, [r0, #0x2c]
str r2, [r1, #0x2c]
ldr r2, [r0, #0x30]
str r2, [r1, #0x30]
ldr r2, [r0, #0x34]
str r2, [r1, #0x34]
adds r0, #0x68
adds r1, #0x68
ldrb r2, [r0, #4]
strb r2, [r1, #4]
ldrb r2, [r0, #5]
strb r2, [r1, #5]
ldrb r2, [r0, #6]
strb r2, [r1, #6]
ldrb r2, [r0, #7]
strb r2, [r1, #7]
ldrh r2, [r0, #8]
strh r2, [r1, #8]
ldrh r0, [r0, #0xa]
strh r0, [r1, #0xa]
bx lr
.align 2, 0
thumb_func_start sub_08045200
sub_08045200: @ 0x08045200
push {r4, lr}
adds r4, r0, #0
ldr r1, _0804521C @ =gUnk_080D17C0
bl sub_0800129E
movs r3, #8
rsbs r3, r3, #0
adds r0, r4, #0
movs r1, #0
movs r2, #1
bl sub_0804A9AC
pop {r4, pc}
.align 2, 0
_0804521C: .4byte gUnk_080D17C0
thumb_func_start sub_08045220
sub_08045220: @ 0x08045220
push {lr}
ldr r2, _08045234 @ =gUnk_080D17D8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08045234: .4byte gUnk_080D17D8
thumb_func_start sub_08045238
sub_08045238: @ 0x08045238
push {r4, lr}
adds r4, r0, #0
adds r0, #0x43
ldrb r0, [r0]
cmp r0, #0
beq _0804524C
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
_0804524C:
ldr r1, _08045258 @ =gUnk_080D17C0
adds r0, r4, #0
bl sub_0804AA30
pop {r4, pc}
.align 2, 0
_08045258: .4byte gUnk_080D17C0
thumb_func_start sub_0804525C
sub_0804525C: @ 0x0804525C
push {r4, lr}
adds r4, r0, #0
ldr r3, [r4, #0x50]
cmp r4, r3
beq _08045298
cmp r3, #0
beq _08045298
adds r2, r4, #0
adds r2, #0x6c
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
ldr r1, [r4, #0x50]
ldr r0, [r4, #0x54]
str r0, [r1, #0x54]
ldr r1, [r4, #0x54]
ldr r0, [r4, #0x50]
str r0, [r1, #0x50]
adds r0, r4, #0
adds r0, #0x6d
ldrb r1, [r0]
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08045298
adds r0, r4, #0
adds r1, r3, #0
bl sub_08058800
_08045298:
adds r0, r4, #0
bl sub_0804A7D4
pop {r4, pc}
thumb_func_start nullsub_22
nullsub_22: @ 0x080452A0
bx lr
.align 2, 0
thumb_func_start sub_080452A4
sub_080452A4: @ 0x080452A4
push {r4, r5, lr}
adds r4, r0, #0
movs r2, #1
movs r5, #1
strb r5, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #6
bl sub_08004260
ldrb r0, [r4, #0xb]
cmp r0, #0
beq _080452DC
movs r0, #2
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
b _080452E2
_080452DC:
adds r0, r4, #0
bl sub_080452E4
_080452E2:
pop {r4, r5, pc}
thumb_func_start sub_080452E4
sub_080452E4: @ 0x080452E4
push {r4, lr}
adds r4, r0, #0
movs r0, #2
strb r0, [r4, #0xc]
bl Random
movs r1, #0x1f
ands r0, r1
adds r0, #1
strb r0, [r4, #0xe]
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080452FC
sub_080452FC: @ 0x080452FC
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08004274
ldrb r0, [r5, #0xe]
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045370
movs r4, #3
strb r4, [r5, #0xc]
movs r0, #1
strb r0, [r5, #0xe]
movs r1, #0x24
ldrsh r0, [r5, r1]
cmp r0, #0
ble _08045330
movs r0, #0x80
lsls r0, r0, #5
movs r2, #0x24
ldrsh r1, [r5, r2]
bl sub_0806FA04
lsrs r0, r0, #8
strb r0, [r5, #0xe]
_08045330:
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _08045360
bl Random
ands r0, r4
cmp r0, #0
beq _08045360
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _08045370
_08045360:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08045374
_08045370:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08045374
sub_08045374: @ 0x08045374
push {r4, lr}
adds r4, r0, #0
bl sub_080AEF88
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045392
movs r0, #1
strb r0, [r4, #0xc]
_08045392:
pop {r4, pc}
thumb_func_start sub_08045394
sub_08045394: @ 0x08045394
push {lr}
ldr r1, _080453A0 @ =gUnk_080D17E8
bl sub_0800129E
pop {pc}
.align 2, 0
_080453A0: .4byte gUnk_080D17E8
thumb_func_start sub_080453A4
sub_080453A4: @ 0x080453A4
push {lr}
ldr r2, _080453B8 @ =gUnk_080D1800
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080453B8: .4byte gUnk_080D1800
thumb_func_start sub_080453BC
sub_080453BC: @ 0x080453BC
push {lr}
adds r2, r0, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
beq _080453D6
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, r1
beq _080453D6
movs r0, #2
strb r0, [r2, #0xc]
b _080453DE
_080453D6:
ldr r1, _080453E0 @ =gUnk_080D17E8
adds r0, r2, #0
bl sub_0804AA30
_080453DE:
pop {pc}
.align 2, 0
_080453E0: .4byte gUnk_080D17E8
thumb_func_start nullsub_172
nullsub_172: @ 0x080453E4
bx lr
.align 2, 0
thumb_func_start sub_080453E8
sub_080453E8: @ 0x080453E8
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
adds r0, #0x3f
strb r1, [r0]
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #0
bl sub_08004260
adds r0, r4, #0
bl sub_08045524
pop {r4, pc}
thumb_func_start sub_08045430
sub_08045430: @ 0x08045430
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
adds r0, r4, #0
bl sub_08004274
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08045452
adds r0, r4, #0
bl sub_08045524
_08045452:
pop {r4, pc}
thumb_func_start sub_08045454
sub_08045454: @ 0x08045454
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
sub sp, #0x10
mov r8, r0
ldr r1, _08045518 @ =gUnk_080D180C
ldrb r0, [r0, #0xa]
adds r0, r0, r1
ldrb r7, [r0]
movs r0, #0x48
subs r0, r0, r7
ldr r1, _0804551C @ =gUnk_03003DBC
ldrb r1, [r1]
cmp r0, r1
ble _0804550C
cmp r7, #0
beq _0804548E
mov r4, sp
adds r5, r7, #0
_0804547C:
mov r0, r8
ldrb r1, [r0, #0xa]
movs r0, #0x59
bl CreateEnemy
stm r4!, {r0}
subs r5, #1
cmp r5, #0
bne _0804547C
_0804548E:
ldr r2, _08045520 @ =gUnk_080D1810
mov sb, r2
movs r5, #0
cmp r5, r7
bge _080454EE
_08045498:
lsls r0, r5, #2
add r0, sp
ldr r6, [r0]
adds r4, r5, #1
adds r0, r4, #0
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x54]
adds r0, r5, r7
subs r0, #1
adds r1, r7, #0
bl __modsi3
lsls r0, r0, #2
add r0, sp
ldr r0, [r0]
str r0, [r6, #0x50]
movs r1, #0
movs r0, #1
strb r0, [r6, #0xb]
strh r1, [r6, #0x36]
adds r1, r6, #0
adds r1, #0x3d
movs r0, #0xf0
strb r0, [r1]
mov r0, sb
movs r2, #0
ldrsb r2, [r0, r2]
movs r3, #1
ldrsb r3, [r0, r3]
mov r0, r8
adds r1, r6, #0
bl sub_08045178
movs r2, #2
add sb, r2
adds r5, r4, #0
cmp r5, r7
blt _08045498
_080454EE:
mov r0, r8
movs r1, #2
movs r2, #0
bl CreateFX
adds r6, r0, #0
cmp r6, #0
beq _08045506
mov r0, r8
adds r1, r6, #0
bl CopyPosition
_08045506:
mov r0, r8
bl sub_0805E7BC
_0804550C:
add sp, #0x10
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08045518: .4byte gUnk_080D180C
_0804551C: .4byte gUnk_03003DBC
_08045520: .4byte gUnk_080D1810
thumb_func_start sub_08045524
sub_08045524: @ 0x08045524
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xe0
lsls r0, r0, #9
str r0, [r5, #0x20]
adds r0, r5, #0
movs r1, #1
movs r2, #8
bl sub_0804A024
adds r4, r0, #0
cmp r4, #0xff
beq _08045556
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
bne _08045556
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0xe]
b _08045596
_08045556:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _08045562
subs r0, #1
strb r0, [r5, #0xe]
b _080455A8
_08045562:
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0xe]
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _0804559E
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _0804559E
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
_08045596:
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _080455A8
_0804559E:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
_080455A8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080455AC
sub_080455AC: @ 0x080455AC
push {lr}
ldr r1, _080455B8 @ =gUnk_080D1868
bl sub_0800129E
pop {pc}
.align 2, 0
_080455B8: .4byte gUnk_080D1868
thumb_func_start sub_080455BC
sub_080455BC: @ 0x080455BC
push {lr}
ldr r2, _080455D0 @ =gUnk_080D1880
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080455D0: .4byte gUnk_080D1880
thumb_func_start sub_080455D4
sub_080455D4: @ 0x080455D4
push {lr}
ldr r1, _080455E0 @ =gUnk_080D1868
bl sub_0804AA30
pop {pc}
.align 2, 0
_080455E0: .4byte gUnk_080D1868
thumb_func_start sub_080455E4
sub_080455E4: @ 0x080455E4
push {lr}
adds r3, r0, #0
ldr r0, [r3, #0x50]
cmp r3, r0
beq _0804560A
cmp r0, #0
beq _0804560A
adds r2, r3, #0
adds r2, #0x6c
ldrb r1, [r2]
movs r0, #0x7f
ands r0, r1
strb r0, [r2]
ldr r1, [r3, #0x50]
ldr r0, [r3, #0x54]
str r0, [r1, #0x54]
ldr r1, [r3, #0x54]
ldr r0, [r3, #0x50]
str r0, [r1, #0x50]
_0804560A:
adds r0, r3, #0
bl sub_0804A7D4
pop {pc}
.align 2, 0
thumb_func_start nullsub_23
nullsub_23: @ 0x08045614
bx lr
.align 2, 0
thumb_func_start sub_08045618
sub_08045618: @ 0x08045618
push {r4, lr}
adds r4, r0, #0
movs r2, #1
movs r0, #1
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #5
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x18]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r2, r4, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_0804A720
adds r0, r4, #0
movs r1, #1
bl sub_08004260
adds r0, r4, #0
bl sub_08045678
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08045654
sub_08045654: @ 0x08045654
push {r4, lr}
adds r4, r0, #0
bl sub_080AEFE0
adds r0, r4, #0
bl sub_08004274
movs r1, #0xc0
lsls r1, r1, #5
adds r0, r4, #0
bl sub_08003FC4
cmp r0, #0
bne _08045676
adds r0, r4, #0
bl sub_08045678
_08045676:
pop {r4, pc}
thumb_func_start sub_08045678
sub_08045678: @ 0x08045678
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0xe0
lsls r0, r0, #9
str r0, [r5, #0x20]
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0804568E
subs r0, #1
strb r0, [r5, #0xe]
b _080456D4
_0804568E:
bl Random
movs r1, #3
ands r0, r1
strb r0, [r5, #0xe]
adds r0, r5, #0
bl sub_08049FA0
cmp r0, #0
bne _080456CA
bl Random
movs r1, #3
ands r1, r0
cmp r1, #0
beq _080456CA
adds r0, r5, #0
bl sub_08049EE4
adds r4, r0, #0
bl Random
movs r1, #8
ands r0, r1
adds r0, #0xfc
adds r4, r4, r0
movs r0, #0x18
ands r4, r0
strb r4, [r5, #0x15]
b _080456D4
_080456CA:
bl Random
movs r1, #0x18
ands r0, r1
strb r0, [r5, #0x15]
_080456D4:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080456D8
sub_080456D8: @ 0x080456D8
push {lr}
ldr r1, _080456E4 @ =gUnk_080D1888
bl sub_0800129E
pop {pc}
.align 2, 0
_080456E4: .4byte gUnk_080D1888
thumb_func_start sub_080456E8
sub_080456E8: @ 0x080456E8
push {lr}
ldr r2, _080456FC @ =gUnk_080D18A0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080456FC: .4byte gUnk_080D18A0
thumb_func_start sub_08045700
sub_08045700: @ 0x08045700
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #0
beq _080457D0
ldr r0, [r5, #0x50]
ldr r3, [r0, #0x50]
adds r0, r5, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080457D0
movs r0, #0x3f
ands r0, r1
cmp r0, #0xe
beq _08045728
cmp r0, #0x15
bne _08045778
_08045728:
adds r1, r5, #0
adds r1, #0x81
ldrb r0, [r1]
cmp r0, #0
bne _0804575C
movs r0, #3
strb r0, [r5, #0xc]
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldrb r1, [r5, #0xa]
lsls r1, r1, #3
ldrb r0, [r5, #0xe]
adds r0, #2
orrs r1, r0
adds r0, r5, #0
bl sub_08004260
ldr r0, [r5, #0x50]
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
ldrb r2, [r5, #0xe]
adds r2, #2
orrs r1, r2
bl sub_08004260
_0804575C:
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0804576C
movs r0, #0xbd
lsls r0, r0, #1
bl PlaySFX
b _080457D0
_0804576C:
ldr r0, _08045774 @ =0x00000119
bl PlaySFX
b _080457D0
.align 2, 0
_08045774: .4byte 0x00000119
_08045778:
adds r2, r5, #0
adds r2, #0x45
ldrb r1, [r2]
adds r0, r1, #0
cmp r0, #0xff
beq _080457D0
movs r0, #0xff
strb r0, [r2]
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _080457D0
adds r0, r3, #0
adds r0, #0x81
ldrb r0, [r0]
cmp r0, #0
beq _080457D0
adds r0, r3, #0
adds r0, #0x76
movs r1, #1
ldrb r2, [r5, #0xb]
lsls r1, r2
ldrb r2, [r0]
orrs r1, r2
strb r1, [r0]
adds r1, r5, #0
adds r1, #0x85
ldrb r0, [r1]
cmp r0, #0
bne _080457D0
adds r0, #1
strb r0, [r1]
ldrb r1, [r5, #0xa]
lsls r1, r1, #3
movs r4, #6
orrs r1, r4
adds r0, r5, #0
bl sub_08004260
ldr r0, [r5, #0x50]
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
orrs r1, r4
bl sub_08004260
_080457D0:
ldr r1, _080457DC @ =gUnk_080D1888
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_080457DC: .4byte gUnk_080D1888
thumb_func_start nullsub_173
nullsub_173: @ 0x080457E0
bx lr
.align 2, 0
thumb_func_start sub_080457E4
sub_080457E4: @ 0x080457E4
push {r4, lr}
adds r4, r0, #0
ldr r0, _08045850 @ =gTextBox
ldrb r0, [r0]
movs r2, #0x7f
ands r2, r0
cmp r2, #0
bne _08045868
movs r3, #1
strb r3, [r4, #0xc]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
adds r0, #1
strb r2, [r0]
adds r0, #4
strb r2, [r0]
strb r2, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x82
movs r0, #0x30
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x83
strb r2, [r0]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08045854
adds r0, r4, #0
bl sub_08045A00
movs r0, #0x5a
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
cmp r1, #0
beq _0804585A
str r4, [r1, #0x50]
str r1, [r4, #0x54]
ldrb r0, [r4, #0xe]
strb r0, [r1, #0xe]
ldrb r0, [r4, #0xb]
strb r0, [r1, #0xb]
adds r0, r4, #0
bl CopyPosition
b _0804585A
.align 2, 0
_08045850: .4byte gTextBox
_08045854:
adds r0, r4, #0
adds r0, #0x63
strb r3, [r0]
_0804585A:
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
movs r0, #1
orrs r1, r0
adds r0, r4, #0
bl sub_08004260
_08045868:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804586C
sub_0804586C: @ 0x0804586C
push {r4, lr}
adds r4, r0, #0
bl sub_08045A28
adds r1, r4, #0
adds r1, #0x82
ldrb r0, [r1]
cmp r0, #0
bne _080458AA
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080458C2
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _0804589A
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
_0804589A:
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
adds r0, r4, #0
bl sub_08004260
b _080458C2
_080458AA:
subs r0, #1
strb r0, [r1]
lsls r0, r0, #0x18
cmp r0, #0
bne _080458C2
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
_080458C2:
pop {r4, pc}
thumb_func_start sub_080458C4
sub_080458C4: @ 0x080458C4
push {r4, r5, lr}
adds r5, r0, #0
bl sub_08045A28
ldr r1, [r5, #0x50]
ldrb r2, [r5, #0xa]
cmp r2, #0
beq _080458D6
ldr r1, [r1, #0x50]
_080458D6:
ldrb r0, [r1, #0xc]
cmp r0, #3
bne _08045934
adds r0, r1, #0
adds r0, #0x80
ldrb r0, [r0]
cmp r0, #1
bne _08045934
movs r0, #0
movs r4, #4
strb r4, [r5, #0xc]
strb r0, [r5, #0xf]
cmp r2, #0
beq _08045934
ldrb r0, [r5, #0x10]
movs r1, #0x7f
ands r1, r0
strb r1, [r5, #0x10]
ldrb r0, [r5, #0xe]
cmp r0, #0
beq _0804591C
ldrb r1, [r5, #0xa]
lsls r1, r1, #3
movs r4, #5
orrs r1, r4
adds r0, r5, #0
bl sub_08004260
ldr r0, [r5, #0x50]
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
orrs r1, r4
bl sub_08004260
b _08045934
_0804591C:
ldrb r1, [r5, #0xa]
lsls r1, r1, #3
orrs r1, r4
adds r0, r5, #0
bl sub_08004260
ldr r0, [r5, #0x50]
ldrb r1, [r0, #0xa]
lsls r1, r1, #3
orrs r1, r4
bl sub_08004260
_08045934:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08045938
sub_08045938: @ 0x08045938
push {r4, lr}
adds r4, r0, #0
bl sub_08045A28
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045980
movs r0, #2
strb r0, [r4, #0xc]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _08045980
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _08045966
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x32
b _0804597E
_08045966:
ldr r0, [r4, #0x50]
ldr r2, [r0, #0x50]
adds r2, #0x76
movs r0, #1
ldrb r1, [r4, #0xb]
lsls r0, r1
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x31
_0804597E:
strb r0, [r1]
_08045980:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08045984
sub_08045984: @ 0x08045984
push {r4, lr}
adds r4, r0, #0
bl sub_08045A28
ldrb r0, [r4, #0xf]
cmp r0, #0
bne _080459A6
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080459FE
movs r0, #0x20
strb r0, [r4, #0xf]
b _080459FE
_080459A6:
ldr r2, [r4, #0x50]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080459B0
ldr r2, [r2, #0x50]
_080459B0:
ldrb r0, [r2, #0x14]
cmp r0, #2
bhi _080459FE
ldrb r0, [r2, #0xc]
cmp r0, #3
beq _080459FE
movs r0, #0
movs r3, #1
strb r3, [r4, #0xc]
strb r0, [r4, #0xf]
adds r1, r4, #0
adds r1, #0x81
strb r0, [r1]
adds r1, #4
strb r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _080459DA
subs r1, #0x46
movs r0, #0x33
strb r0, [r1]
_080459DA:
adds r0, r2, #0
adds r0, #0x75
ldrb r0, [r0]
ldrb r1, [r4, #0xb]
asrs r0, r1
ands r0, r3
cmp r0, #0
beq _080459EE
strb r3, [r4, #0xe]
b _080459F0
_080459EE:
strb r0, [r4, #0xe]
_080459F0:
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
movs r0, #1
orrs r1, r0
adds r0, r4, #0
bl sub_08004260
_080459FE:
pop {r4, pc}
thumb_func_start sub_08045A00
sub_08045A00: @ 0x08045A00
push {lr}
adds r1, r0, #0
ldrb r3, [r1, #0xb]
lsls r3, r3, #1
ldr r0, _08045A24 @ =gUnk_080D18B4
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
lsls r2, r2, #0x10
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
adds r3, #3
lsls r3, r3, #0x10
bl PositionRelative
pop {pc}
.align 2, 0
_08045A24: .4byte gUnk_080D18B4
thumb_func_start sub_08045A28
sub_08045A28: @ 0x08045A28
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r0, #0x82
ldrb r0, [r0]
cmp r0, #0
bne _08045A3E
adds r0, r5, #0
bl sub_08004274
_08045A3E:
adds r6, r5, #0
adds r6, #0x5a
ldrb r0, [r6]
movs r1, #0x70
mov r8, r1
mov r4, r8
ands r4, r0
ldrb r7, [r5, #0xa]
cmp r7, #0
bne _08045AF8
adds r0, r5, #0
bl sub_08045A00
adds r1, r5, #0
adds r1, #0x83
ldrb r0, [r1]
adds r2, r1, #0
cmp r0, #1
beq _08045AA4
cmp r0, #1
bgt _08045A6E
cmp r0, #0
beq _08045A78
b _08045B7C
_08045A6E:
cmp r0, #2
beq _08045ABC
cmp r0, #3
beq _08045AE8
b _08045B7C
_08045A78:
cmp r4, #0x20
beq _08045A8C
cmp r4, #0x20
bhi _08045A86
cmp r4, #0
beq _08045A96
b _08045B7C
_08045A86:
cmp r4, #0x40
beq _08045A96
b _08045B7C
_08045A8C:
movs r0, #1
strb r0, [r1]
movs r1, #0x9f
lsls r1, r1, #1
b _08045B5A
_08045A96:
movs r0, #2
strb r0, [r2]
ldr r1, _08045AA0 @ =0x0000013F
b _08045B5A
.align 2, 0
_08045AA0: .4byte 0x0000013F
_08045AA4:
cmp r4, #0
beq _08045AB0
cmp r4, #0x10
bne _08045B7C
strb r7, [r1]
b _08045B58
_08045AB0:
movs r0, #2
strb r0, [r1]
ldr r1, _08045AB8 @ =0x0000013F
b _08045B5A
.align 2, 0
_08045AB8: .4byte 0x0000013F
_08045ABC:
cmp r4, #0x20
beq _08045AD0
cmp r4, #0x20
bhi _08045ACA
cmp r4, #0x10
beq _08045ADA
b _08045B7C
_08045ACA:
cmp r4, #0x40
beq _08045ADE
b _08045B7C
_08045AD0:
movs r0, #1
strb r0, [r1]
movs r1, #0x9f
lsls r1, r1, #1
b _08045B5A
_08045ADA:
strb r7, [r1]
b _08045B58
_08045ADE:
strb r0, [r1]
ldr r1, _08045AE4 @ =0x0000013F
b _08045B5A
.align 2, 0
_08045AE4: .4byte 0x0000013F
_08045AE8:
cmp r4, #0
bne _08045B7C
movs r0, #2
strb r0, [r1]
ldr r1, _08045AF4 @ =0x0000013F
b _08045B5A
.align 2, 0
_08045AF4: .4byte 0x0000013F
_08045AF8:
ldr r0, [r5, #0x50]
ldr r3, _08045B18 @ =0xFFFF0000
adds r1, r5, #0
movs r2, #0
bl PositionRelative
adds r2, r5, #0
adds r2, #0x83
ldrb r0, [r2]
cmp r0, #1
beq _08045B3A
cmp r0, #1
bgt _08045B1C
cmp r0, #0
beq _08045B22
b _08045B7C
.align 2, 0
_08045B18: .4byte 0xFFFF0000
_08045B1C:
cmp r0, #2
beq _08045B68
b _08045B7C
_08045B22:
ldrb r0, [r6]
mov r1, r8
ands r1, r0
cmp r1, #0x10
beq _08045B54
cmp r1, #0x20
bne _08045B7C
movs r0, #1
strb r0, [r2]
movs r1, #0x9f
lsls r1, r1, #1
b _08045B5A
_08045B3A:
ldrb r0, [r6]
mov r1, r8
ands r1, r0
cmp r1, #0
beq _08045B4A
cmp r1, #0x10
beq _08045B54
b _08045B7C
_08045B4A:
strb r1, [r2]
ldr r1, _08045B50 @ =0x0000013F
b _08045B5A
.align 2, 0
_08045B50: .4byte 0x0000013F
_08045B54:
movs r0, #2
strb r0, [r2]
_08045B58:
ldr r1, _08045B64 @ =0x0000013B
_08045B5A:
adds r0, r5, #0
bl sub_0801D2B4
b _08045B7C
.align 2, 0
_08045B64: .4byte 0x0000013B
_08045B68:
ldrb r0, [r6]
mov r1, r8
ands r1, r0
cmp r1, #0
bne _08045B7C
strb r1, [r2]
ldr r1, _08045B84 @ =0x0000013F
adds r0, r5, #0
bl sub_0801D2B4
_08045B7C:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08045B84: .4byte 0x0000013F
thumb_func_start sub_08045B88
sub_08045B88: @ 0x08045B88
push {lr}
ldr r1, _08045B94 @ =gUnk_080D19FC
bl sub_0800129E
pop {pc}
.align 2, 0
_08045B94: .4byte gUnk_080D19FC
thumb_func_start sub_08045B98
sub_08045B98: @ 0x08045B98
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldr r1, _08045BC4 @ =gUnk_080D1A14
ldrb r0, [r4, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_0800445C
pop {r4, pc}
.align 2, 0
_08045BC4: .4byte gUnk_080D1A14
thumb_func_start sub_08045BC8
sub_08045BC8: @ 0x08045BC8
push {r4, lr}
adds r4, r0, #0
adds r0, #0x3f
ldrb r0, [r0]
cmp r0, #1
bne _08045C2C
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r2, #0x7f
adds r0, r2, #0
ands r0, r1
cmp r0, #0x42
bne _08045C2C
movs r1, #0
movs r0, #4
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
movs r0, #0x28
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
adds r0, r2, #0
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
movs r1, #4
bl sub_08046030
adds r0, r4, #0
movs r1, #3
movs r2, #0
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _08045C16
ldrh r0, [r1, #0x36]
subs r0, #8
strh r0, [r1, #0x36]
_08045C16:
ldr r0, _08045C30 @ =gLinkState
adds r0, #0x27
movs r1, #0xff
strb r1, [r0]
ldr r0, _08045C34 @ =0x000001BB
bl sub_08004488
adds r0, r4, #0
movs r1, #2
bl sub_0805E3A0
_08045C2C:
pop {r4, pc}
.align 2, 0
_08045C30: .4byte gLinkState
_08045C34: .4byte 0x000001BB
thumb_func_start nullsub_174
nullsub_174: @ 0x08045C38
bx lr
.align 2, 0
thumb_func_start sub_08045C3C
sub_08045C3C: @ 0x08045C3C
push {r4, lr}
adds r4, r0, #0
movs r0, #0
strb r0, [r4, #0xf]
ldrh r1, [r4, #0x2e]
adds r0, r4, #0
adds r0, #0x78
movs r2, #0
strh r1, [r0]
ldrh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
strb r2, [r4, #0x14]
movs r0, #0x10
strb r0, [r4, #0x15]
movs r0, #5
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0xb1
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_08046030
adds r0, r4, #0
bl sub_08095C48
ldr r1, _08045CA0 @ =gUnk_08015AC4
adds r0, r4, #0
bl sub_0807DAD0
adds r0, r4, #0
bl sub_0807DD50
pop {r4, pc}
.align 2, 0
_08045CA0: .4byte gUnk_08015AC4
thumb_func_start sub_08045CA4
sub_08045CA4: @ 0x08045CA4
push {r4, r5, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _08045CC0
subs r0, #1
strb r0, [r4, #0xe]
b _08045CD8
_08045CC0:
adds r0, r4, #0
movs r1, #0
bl sub_08045F54
cmp r0, #0
beq _08045CD8
adds r0, r4, #0
bl sub_08045FF0
strb r5, [r4, #0xd]
movs r0, #1
strb r0, [r4, #0xf]
_08045CD8:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start nullsub_24
nullsub_24: @ 0x08045CDC
bx lr
.align 2, 0
thumb_func_start sub_08045CE0
sub_08045CE0: @ 0x08045CE0
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_08004274
ldrb r0, [r4, #0xd]
cmp r0, #4
bls _08045CF0
b _08045DF8
_08045CF0:
lsls r0, r0, #2
ldr r1, _08045CFC @ =_08045D00
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08045CFC: .4byte _08045D00
_08045D00: @ jump table
.4byte _08045D14 @ case 0
.4byte _08045D36 @ case 1
.4byte _08045D60 @ case 2
.4byte _08045D9A @ case 3
.4byte _08045DBC @ case 4
_08045D14:
movs r6, #1
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045DF8
strb r6, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08045F98
b _08045DB2
_08045D36:
movs r6, #1
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _08045DF8
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x20
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r0, r4, #0
bl sub_08045F98
adds r0, r4, #0
movs r1, #2
bl sub_08046030
b _08045DF8
_08045D60:
movs r6, #1
adds r0, r4, #0
bl sub_0804604C
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
adds r0, r6, #0
ands r0, r1
cmp r0, #0
beq _08045DF8
adds r0, r4, #0
movs r1, #4
movs r2, #0
bl sub_0804A98C
adds r1, r0, #0
cmp r1, #0
beq _08045DF8
str r4, [r1, #0x50]
ldrb r0, [r4, #0x15]
strb r0, [r1, #0x15]
ldrb r1, [r5]
movs r0, #0xfe
ands r0, r1
strb r0, [r5]
movs r0, #3
strb r0, [r4, #0xd]
b _08045DF8
_08045D9A:
movs r6, #2
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045DF8
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x50
strb r0, [r4, #0xe]
_08045DB2:
adds r0, r4, #0
movs r1, #1
bl sub_08046030
b _08045DF8
_08045DBC:
movs r6, #2
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08045DF8
adds r0, r4, #0
movs r1, #0
bl sub_08045F54
adds r5, r0, #0
cmp r5, #0
beq _08045DEC
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #0x10
strb r0, [r4, #0xf]
adds r0, r4, #0
bl sub_08045F98
b _08045DF8
_08045DEC:
adds r0, r4, #0
bl sub_08045FA0
movs r0, #0x50
strb r0, [r4, #0xe]
strb r5, [r4, #0xf]
_08045DF8:
adds r0, r4, #0
adds r1, r6, #0
bl sub_08045F54
adds r5, r0, #0
cmp r5, #0
bne _08045E12
adds r0, r4, #0
bl sub_08045FA0
strb r5, [r4, #0xd]
strb r5, [r4, #0xe]
strb r5, [r4, #0xf]
_08045E12:
pop {r4, r5, r6, pc}
thumb_func_start sub_08045E14
sub_08045E14: @ 0x08045E14
push {r4, lr}
adds r4, r0, #0
ldr r0, _08045E2C @ =gLinkState
adds r0, #0x27
movs r1, #0xff
strb r1, [r0]
ldrb r0, [r4, #0xd]
cmp r0, #0
beq _08045E30
cmp r0, #1
beq _08045E70
b _08045EBA
.align 2, 0
_08045E2C: .4byte gLinkState
_08045E30:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _08045E6A
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045EBA
movs r0, #1
strb r0, [r4, #0xd]
adds r0, r4, #0
bl sub_08045F98
adds r0, r4, #0
movs r1, #5
bl sub_08046030
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
b _08045EBA
_08045E6A:
subs r0, #1
strb r0, [r4, #0xe]
b _08045EBA
_08045E70:
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045EBA
movs r1, #0
movs r0, #5
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
adds r0, r4, #0
bl sub_08046030
adds r0, r4, #0
movs r1, #0x1c
bl sub_0804A9FC
adds r2, r0, #0
cmp r2, #0
beq _08045EBA
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r3]
ldrh r0, [r2, #0x36]
subs r0, #0xc
strh r0, [r2, #0x36]
adds r0, r2, #0
movs r1, #2
bl sub_0805E3A0
_08045EBA:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0800445C
pop {r4, pc}
thumb_func_start sub_08045EC8
sub_08045EC8: @ 0x08045EC8
push {lr}
movs r1, #0
bl sub_0807DD94
pop {pc}
.align 2, 0
thumb_func_start sub_08045ED4
sub_08045ED4: @ 0x08045ED4
push {lr}
bl sub_08045FA0
pop {pc}
thumb_func_start sub_08045EDC
sub_08045EDC: @ 0x08045EDC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xd]
adds r1, r0, #0
cmp r1, #0
bne _08045F00
adds r0, #1
strb r0, [r4, #0xd]
movs r0, #0x20
strb r0, [r4, #0xe]
strb r1, [r4, #0xf]
adds r0, r4, #0
bl sub_08045F98
adds r0, r4, #0
movs r1, #2
bl sub_08046030
_08045F00:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
bl sub_0804604C
adds r3, r4, #0
adds r3, #0x5a
ldrb r1, [r3]
movs r2, #1
ands r2, r1
cmp r2, #0
beq _08045F38
movs r0, #0xfe
ands r0, r1
strb r0, [r3]
adds r0, r4, #0
adds r0, #0x84
ldr r1, [r0]
adds r0, r4, #0
bl sub_080954AC
ldr r0, _08045F34 @ =0x0000018D
bl sub_08004488
b _08045F4E
.align 2, 0
_08045F34: .4byte 0x0000018D
_08045F38:
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08045F4E
movs r0, #5
strb r0, [r4, #0xc]
strb r2, [r4, #0xd]
adds r0, r4, #0
movs r1, #1
bl sub_08046030
_08045F4E:
pop {r4, pc}
thumb_func_start nullsub_25
nullsub_25: @ 0x08045F50
bx lr
.align 2, 0
thumb_func_start sub_08045F54
sub_08045F54: @ 0x08045F54
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r5, r1, #0
movs r0, #1
bl sub_08049DF4
adds r4, r0, #0
cmp r4, #0
beq _08045F90
adds r0, r6, #0
adds r1, r4, #0
movs r2, #0x20
movs r3, #0x20
bl sub_080041A0
cmp r0, #0
bne _08045F90
cmp r5, #2
beq _08045F94
movs r3, #0x50
cmp r5, #0
beq _08045F82
movs r3, #0x58
_08045F82:
adds r0, r6, #0
adds r1, r4, #0
adds r2, r3, #0
bl sub_080041A0
cmp r0, #0
bne _08045F94
_08045F90:
movs r0, #0
b _08045F96
_08045F94:
movs r0, #1
_08045F96:
pop {r4, r5, r6, pc}
thumb_func_start sub_08045F98
sub_08045F98: @ 0x08045F98
movs r1, #0x10
strb r1, [r0, #0x15]
movs r0, #1
bx lr
thumb_func_start sub_08045FA0
sub_08045FA0: @ 0x08045FA0
push {lr}
adds r2, r0, #0
movs r0, #1
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
ldrb r1, [r2, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r2, #0x18]
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
strb r0, [r3]
adds r0, r2, #0
adds r0, #0x78
ldrh r0, [r0]
movs r1, #0
strh r0, [r2, #0x2e]
adds r0, r2, #0
adds r0, #0x7a
ldrh r0, [r0]
strh r0, [r2, #0x32]
adds r0, r2, #0
adds r0, #0x62
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, r2, #0
movs r1, #0
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start sub_08045FF0
sub_08045FF0: @ 0x08045FF0
push {r4, lr}
adds r4, r0, #0
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r1
movs r1, #8
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
bl sub_08045F98
adds r0, r4, #0
movs r1, #1
bl sub_08046030
pop {r4, pc}
thumb_func_start sub_08046030
sub_08046030: @ 0x08046030
push {lr}
adds r3, r1, #0
ldrb r1, [r0, #0x15]
lsrs r1, r1, #3
ldr r2, _08046048 @ =gUnk_080D1A38
adds r3, r3, r2
ldrb r2, [r3]
orrs r1, r2
bl sub_08004260
pop {pc}
.align 2, 0
_08046048: .4byte gUnk_080D1A38
thumb_func_start sub_0804604C
sub_0804604C: @ 0x0804604C
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xe]
cmp r0, #0
beq _08046070
subs r0, #1
strb r0, [r2, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xf
bhi _08046070
ldr r1, _08046074 @ =gUnk_080D1A3E
ldrb r0, [r2, #0xe]
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r2, #0
adds r0, #0x63
strb r1, [r0]
_08046070:
pop {pc}
.align 2, 0
_08046074: .4byte gUnk_080D1A3E
thumb_func_start sub_08046078
sub_08046078: @ 0x08046078
push {r4, r5, r6, r7, lr}
adds r7, r0, #0
ldr r0, _08046114 @ =gLinkState
adds r0, #0x27
movs r1, #0
strb r1, [r0]
ldr r4, _08046118 @ =gUnk_080D1A4E
ldr r6, _0804611C @ =gRoomControls
movs r5, #4
_0804608A:
adds r0, r7, #0
movs r1, #2
movs r2, #0x40
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _080460AE
ldrh r0, [r4]
ldrh r2, [r6, #6]
adds r0, r0, r2
strh r0, [r1, #0x2e]
adds r4, #2
ldrh r0, [r4]
ldrh r2, [r6, #8]
adds r0, r0, r2
strh r0, [r1, #0x32]
adds r4, #2
_080460AE:
subs r5, #1
cmp r5, #0
bge _0804608A
movs r0, #0xb7
lsls r0, r0, #1
bl sub_08004488
ldr r0, _08046120 @ =0x000007A2
movs r1, #1
bl sub_0807BA8C
ldr r0, _08046124 @ =0x000007A3
movs r1, #1
bl sub_0807BA8C
ldr r0, _08046128 @ =0x000007A5
movs r1, #1
bl sub_0807BA8C
ldr r0, _0804612C @ =0x000007A6
movs r1, #1
bl sub_0807BA8C
ldr r0, _08046130 @ =0x000007A7
movs r1, #1
bl sub_0807BA8C
adds r0, r7, #0
movs r1, #0x43
movs r2, #0x40
bl CreateFX
adds r1, r0, #0
cmp r1, #0
beq _08046102
adds r0, r7, #0
bl CopyPosition
movs r0, #0xc2
lsls r0, r0, #1
bl sub_08004488
_08046102:
ldr r1, [r7, #0x54]
cmp r1, #0
beq _0804610C
movs r0, #0xff
strb r0, [r1, #0xc]
_0804610C:
adds r0, r7, #0
bl sub_0804AA1C
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08046114: .4byte gLinkState
_08046118: .4byte gUnk_080D1A4E
_0804611C: .4byte gRoomControls
_08046120: .4byte 0x000007A2
_08046124: .4byte 0x000007A3
_08046128: .4byte 0x000007A5
_0804612C: .4byte 0x000007A6
_08046130: .4byte 0x000007A7
thumb_func_start sub_08046134
sub_08046134: @ 0x08046134
push {lr}
ldr r2, _08046148 @ =gUnk_080D1A64
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08046148: .4byte gUnk_080D1A64
thumb_func_start sub_0804614C
sub_0804614C: @ 0x0804614C
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r0, _08046248 @ =gUnk_03003DBC
ldrb r0, [r0]
cmp r0, #0x3d
bhi _08046244
movs r0, #0x22
bl sub_080A7EE0
adds r1, r0, #0
movs r4, #0
strb r4, [r1, #0xa]
str r6, [r1, #0x50]
ldr r0, [r6, #0x64]
str r1, [r0, #0x14]
movs r0, #0x63
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
ldr r0, [r6, #0x64]
str r1, [r0, #0x10]
movs r0, #0x61
movs r1, #0
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #1
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #2
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #3
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #4
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #5
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #6
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #0x61
movs r1, #7
bl CreateEnemy
adds r1, r0, #0
str r6, [r1, #0x50]
movs r0, #1
strb r0, [r6, #0xc]
ldrb r2, [r6, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r6, #0x1b]
ldrb r0, [r6, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r6, #0x19]
adds r0, r6, #0
adds r0, #0x38
movs r5, #2
strb r5, [r0]
adds r0, #0x40
strb r4, [r0]
adds r0, #1
strb r4, [r0]
adds r1, r6, #0
adds r1, #0x70
movs r0, #0x3c
strh r0, [r1]
ldr r0, _0804624C @ =gUnk_02019EE0
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
bl sub_0801D630
ldr r0, _08046250 @ =gUnk_02002F00
adds r1, r4, #0
bl sub_0801D630
adds r0, r6, #0
movs r1, #0
bl sub_0804660C
adds r0, r6, #0
bl sub_080464C0
ldr r0, _08046254 @ =gLinkEntity
adds r1, r0, #0
adds r1, #0x38
strb r5, [r1]
bl UpdateSpriteOrderAndFlip
ldr r1, _08046258 @ =sub_08046498
adds r0, r6, #0
movs r2, #0
bl sub_08052D74
_08046244:
pop {r4, r5, r6, pc}
.align 2, 0
_08046248: .4byte gUnk_03003DBC
_0804624C: .4byte gUnk_02019EE0
_08046250: .4byte gUnk_02002F00
_08046254: .4byte gLinkEntity
_08046258: .4byte sub_08046498
thumb_func_start sub_0804625C
sub_0804625C: @ 0x0804625C
push {r4, lr}
adds r4, r0, #0
adds r3, r4, #0
adds r3, #0x79
ldrb r2, [r3]
movs r0, #0x80
ands r0, r2
cmp r0, #0
beq _08046286
movs r1, #0x7f
ands r1, r2
movs r0, #0x40
orrs r1, r0
strb r1, [r3]
movs r0, #3
ands r1, r0
lsls r1, r1, #6
adds r0, r4, #0
bl sub_0804660C
b _0804629A
_08046286:
movs r0, #0x40
ands r0, r2
cmp r0, #0
beq _0804629A
movs r0, #0xbf
ands r0, r2
strb r0, [r3]
adds r0, r4, #0
bl sub_080464C0
_0804629A:
bl sub_080465C8
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r3, #0x38
ands r3, r1
cmp r3, #0
beq _080462D6
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x7a
movs r2, #0
strh r1, [r0]
adds r0, #2
strb r2, [r0]
adds r0, #1
strb r2, [r0]
adds r1, r4, #0
adds r1, #0x70
movs r0, #0x3c
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
b _0804632A
_080462D6:
movs r0, #0x40
ands r0, r1
cmp r0, #0
beq _08046302
movs r0, #3
strb r0, [r4, #0xc]
adds r2, r4, #0
adds r2, #0x70
movs r1, #0
movs r0, #0x3c
strh r0, [r2]
strb r1, [r4, #0xe]
adds r0, r4, #0
adds r0, #0x7a
strh r3, [r0]
adds r0, #2
strb r1, [r0]
adds r0, #1
strb r1, [r0]
adds r0, #3
strb r1, [r0]
b _0804632A
_08046302:
movs r0, #0x80
lsls r0, r0, #1
ands r0, r1
cmp r0, #0
beq _0804632A
adds r1, r4, #0
adds r1, #0x70
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0804632A
movs r0, #0xb4
lsls r0, r0, #1
strh r0, [r1]
adds r0, r4, #0
movs r1, #1
bl sub_08046634
_0804632A:
pop {r4, pc}
thumb_func_start sub_0804632C
sub_0804632C: @ 0x0804632C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080465C8
adds r0, r4, #0
bl sub_080466A8
adds r3, r4, #0
adds r3, #0x7a
ldrh r0, [r3]
adds r2, r0, #1
movs r5, #0
strh r2, [r3]
lsls r1, r2, #0x10
ldr r0, _08046360 @ =0x059F0000
cmp r1, r0
bls _08046364
movs r0, #0
strh r0, [r3]
adds r0, r4, #0
adds r0, #0x7c
strb r5, [r0]
adds r0, #1
strb r5, [r0]
adds r0, #3
b _08046388
.align 2, 0
_08046360: .4byte 0x059F0000
_08046364:
lsls r0, r2, #0x10
lsrs r1, r0, #0x10
cmp r1, #0x78
bne _08046374
adds r0, r4, #0
bl sub_08046668
b _0804638A
_08046374:
movs r0, #0xa5
lsls r0, r0, #3
cmp r1, r0
bne _0804638A
adds r0, r4, #0
adds r0, #0x78
strb r5, [r0]
adds r0, #5
strb r5, [r0]
adds r0, #2
_08046388:
strb r5, [r0]
_0804638A:
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080463B8
adds r1, r4, #0
adds r1, #0x70
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080463B8
movs r0, #0xb4
lsls r0, r0, #1
strh r0, [r1]
adds r0, r4, #0
movs r1, #0
bl sub_08046634
_080463B8:
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #0x38
ands r0, r1
cmp r0, #0
bne _080463E0
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x70
movs r2, #0
movs r0, #0x3c
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x78
strb r2, [r0]
adds r0, #8
strb r2, [r0]
_080463E0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080463E4
sub_080463E4: @ 0x080463E4
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_080465C8
adds r1, r4, #0
adds r1, #0x70
ldrh r0, [r1]
subs r0, #1
movs r5, #0
strh r0, [r1]
ldr r2, _0804643C @ =0x0000FFFF
adds r6, r2, #0
lsls r0, r0, #0x10
cmp r0, #0
bne _08046410
movs r0, #0xb4
lsls r0, r0, #1
strh r0, [r1]
adds r0, r4, #0
movs r1, #1
bl sub_08046634
_08046410:
adds r0, r4, #0
bl sub_080466A8
adds r3, r4, #0
adds r3, #0x7a
ldrh r0, [r3]
adds r2, r0, #1
strh r2, [r3]
adds r0, r2, #0
ands r0, r6
ldr r1, _08046440 @ =0x0000059F
cmp r0, r1
bls _08046444
movs r0, #0
strh r0, [r3]
adds r0, r4, #0
adds r0, #0x7c
strb r5, [r0]
adds r0, #1
strb r5, [r0]
adds r0, #3
b _08046468
.align 2, 0
_0804643C: .4byte 0x0000FFFF
_08046440: .4byte 0x0000059F
_08046444:
lsls r0, r2, #0x10
lsrs r1, r0, #0x10
cmp r1, #0x78
bne _08046454
adds r0, r4, #0
bl sub_08046668
b _0804646A
_08046454:
movs r0, #0xa5
lsls r0, r0, #3
cmp r1, r0
bne _0804646A
adds r0, r4, #0
adds r0, #0x78
strb r5, [r0]
adds r0, #5
strb r5, [r0]
adds r0, #2
_08046468:
strb r5, [r0]
_0804646A:
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08046494
movs r0, #1
strb r0, [r4, #0xc]
adds r1, r4, #0
adds r1, #0x70
movs r2, #0
movs r0, #0x3c
strh r0, [r1]
adds r0, r4, #0
adds r0, #0x78
strb r2, [r0]
adds r0, #8
strb r2, [r0]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
_08046494:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08046498
sub_08046498: @ 0x08046498
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _080464B8 @ =gUnk_02019EE0
movs r4, #0x80
lsls r4, r4, #8
adds r1, r4, #0
bl sub_0801D630
ldr r0, _080464BC @ =gUnk_02002F00
adds r1, r4, #0
bl sub_0801D630
adds r0, r5, #0
bl sub_080464C0
pop {r4, r5, pc}
.align 2, 0
_080464B8: .4byte gUnk_02019EE0
_080464BC: .4byte gUnk_02002F00
thumb_func_start sub_080464C0
sub_080464C0: @ 0x080464C0
push {r4, r5, r6, lr}
ldr r1, _08046508 @ =gUnk_080D1A74
ldrb r0, [r0, #0x14]
lsrs r0, r0, #6
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl sub_080197D4
bl sub_08046518
movs r6, #0x20
ldr r4, _0804650C @ =gUnk_02019EE0
ldr r0, _08046510 @ =0x00003260
adds r5, r4, r0
_080464DE:
adds r0, r4, #0
adds r1, r5, #0
movs r2, #0x40
bl sub_0801D66C
movs r0, #0x80
lsls r0, r0, #1
adds r5, r5, r0
adds r4, #0x40
subs r6, #1
cmp r6, #0
bne _080464DE
ldr r0, _0804650C @ =gUnk_02019EE0
movs r1, #0x80
lsls r1, r1, #4
bl sub_0801D630
ldr r1, _08046514 @ =gUnk_02000070
movs r0, #1
strb r0, [r1]
pop {r4, r5, r6, pc}
.align 2, 0
_08046508: .4byte gUnk_080D1A74
_0804650C: .4byte gUnk_02019EE0
_08046510: .4byte 0x00003260
_08046514: .4byte gUnk_02000070
thumb_func_start sub_08046518
sub_08046518: @ 0x08046518
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r1, _080465AC @ =gUnk_02010654
ldr r2, _080465B0 @ =0xFFFFBCB0
adds r0, r1, r2
ldr r3, _080465B4 @ =0xFFFFECB0
adds r2, r1, r3
ldr r7, _080465B8 @ =0x00006658
adds r7, r1, r7
str r7, [sp, #4]
ldr r3, _080465BC @ =0xFFFFD658
adds r6, r1, r3
movs r1, #0x10
_0804653A:
movs r5, #0x10
movs r7, #0x80
adds r7, r7, r0
mov sl, r7
adds r3, r2, #0
adds r3, #0x80
str r3, [sp]
ldr r7, [sp, #4]
adds r7, #0x40
mov r8, r7
movs r3, #0x40
adds r3, r3, r6
mov sb, r3
subs r1, #1
mov ip, r1
adds r3, r0, #0
adds r3, #0x20
adds r4, r2, #0
adds r4, #0x20
_08046560:
ldrh r0, [r3]
strh r0, [r4]
ldrh r0, [r3]
lsls r0, r0, #1
ldr r7, _080465AC @ =gUnk_02010654
adds r0, r0, r7
ldrh r1, [r0]
ldr r0, [sp, #4]
adds r2, r0, r5
ldr r7, _080465C0 @ =gUnk_080B37A0
adds r0, r1, r7
ldrb r0, [r0]
strb r0, [r2]
adds r2, r6, r5
ldr r0, _080465C4 @ =gUnk_080B3E80
adds r1, r1, r0
ldrb r0, [r1]
strb r0, [r2]
subs r3, #2
subs r4, #2
subs r5, #1
cmp r5, #0
bne _08046560
mov r0, sl
ldr r2, [sp]
mov r1, r8
str r1, [sp, #4]
mov r6, sb
mov r1, ip
cmp r1, #0
bne _0804653A
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080465AC: .4byte gUnk_02010654
_080465B0: .4byte 0xFFFFBCB0
_080465B4: .4byte 0xFFFFECB0
_080465B8: .4byte 0x00006658
_080465BC: .4byte 0xFFFFD658
_080465C0: .4byte gUnk_080B37A0
_080465C4: .4byte gUnk_080B3E80
thumb_func_start sub_080465C8
sub_080465C8: @ 0x080465C8
push {r4, lr}
ldr r3, _080465FC @ =gLinkEntity
movs r0, #0x2e
ldrsh r2, [r3, r0]
ldr r1, _08046600 @ =gRoomControls
ldrh r0, [r1, #6]
subs r2, r2, r0
asrs r2, r2, #3
movs r4, #0x32
ldrsh r0, [r3, r4]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #3
ldr r1, _08046604 @ =gUnk_02019EE0
lsls r0, r0, #7
adds r0, r0, r2
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
cmp r0, #0
beq _080465F8
ldr r1, _08046608 @ =gLinkState
movs r0, #1
strb r0, [r1, #0x14]
_080465F8:
pop {r4, pc}
.align 2, 0
_080465FC: .4byte gLinkEntity
_08046600: .4byte gRoomControls
_08046604: .4byte gUnk_02019EE0
_08046608: .4byte gLinkState
thumb_func_start sub_0804660C
sub_0804660C: @ 0x0804660C
push {r4, lr}
strb r1, [r0, #0x14]
lsrs r1, r1, #5
lsls r1, r1, #1
ldr r2, _0804662C @ =gUnk_080D1A84
adds r1, r1, r2
ldr r3, _08046630 @ =gRoomControls
ldrh r2, [r3, #6]
ldrh r4, [r1]
adds r2, r2, r4
strh r2, [r0, #0x2e]
ldrh r2, [r3, #8]
ldrh r1, [r1, #2]
adds r2, r2, r1
strh r2, [r0, #0x32]
pop {r4, pc}
.align 2, 0
_0804662C: .4byte gUnk_080D1A84
_08046630: .4byte gRoomControls
thumb_func_start sub_08046634
sub_08046634: @ 0x08046634
push {r4, r5, lr}
adds r5, r0, #0
cmp r1, #0
bne _08046650
ldr r4, _0804664C @ =gUnk_080D1AF4
bl Random
movs r1, #3
ands r1, r0
adds r1, r1, r4
ldrb r1, [r1]
b _0804665A
.align 2, 0
_0804664C: .4byte gUnk_080D1AF4
_08046650:
bl Random
adds r1, r0, #0
movs r0, #7
ands r1, r0
_0804665A:
ldrb r2, [r5, #0x14]
lsrs r2, r2, #3
adds r0, r1, #0
movs r1, #0
bl sub_080A1ED0
pop {r4, r5, pc}
thumb_func_start sub_08046668
sub_08046668: @ 0x08046668
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _080466A0
adds r5, r4, #0
adds r5, #0x78
ldrb r0, [r5]
cmp r0, #0xff
beq _080466A0
bl Random
ldr r2, _080466A4 @ =gUnk_080D1AF8
movs r1, #3
ands r1, r0
adds r1, r1, r2
ldrb r0, [r1]
movs r1, #0
strb r0, [r5]
adds r0, r4, #0
adds r0, #0x7f
strb r1, [r0]
adds r0, #3
strb r1, [r0]
adds r0, r4, #0
bl sub_080467DC
_080466A0:
pop {r4, r5, pc}
.align 2, 0
_080466A4: .4byte gUnk_080D1AF8
thumb_func_start sub_080466A8
sub_080466A8: @ 0x080466A8
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
adds r0, #0x7c
ldrb r2, [r0]
cmp r2, #0
beq _0804674C
adds r0, #1
ldrb r1, [r0]
orrs r1, r2
strb r1, [r0]
ldrb r1, [r4, #0xe]
adds r5, r0, #0
cmp r1, #0
bne _080466D0
subs r0, #5
ldrb r0, [r0]
cmp r0, #0xff
beq _080466D0
movs r0, #4
strb r0, [r4, #0xe]
_080466D0:
ldrb r0, [r5]
bl sub_08000E62
cmp r0, #2
bls _0804674C
movs r0, #0
strb r0, [r4, #0xe]
strb r0, [r5]
adds r7, r4, #0
adds r7, #0x78
subs r0, #1
adds r6, r0, #0
movs r0, #0xff
strb r0, [r7]
adds r0, #0x28
bl PlaySFX
adds r5, r4, #0
adds r5, #0x45
ldrb r0, [r5]
cmp r0, #0
beq _08046746
movs r0, #8
movs r1, #0
bl sub_08080964
adds r1, r4, #0
adds r1, #0x82
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ands r0, r6
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xc
bhi _0804671E
ldrb r0, [r5]
subs r0, #1
strb r0, [r5]
_0804671E:
ldrb r0, [r5]
cmp r0, #0
bne _08046730
strb r0, [r7]
adds r1, r4, #0
adds r1, #0x7a
movs r0, #0xa5
lsls r0, r0, #3
b _08046744
_08046730:
adds r1, r4, #0
adds r1, #0x7f
ldrb r0, [r1]
cmp r0, #0
bne _08046746
movs r0, #1
strb r0, [r1]
subs r1, #5
movs r0, #0x87
lsls r0, r0, #3
_08046744:
strh r0, [r1]
_08046746:
adds r0, r4, #0
bl sub_080467DC
_0804674C:
ldrb r1, [r4, #0xe]
cmp r1, #0
beq _080467CC
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
cmp r0, #0xff
beq _080467CC
subs r0, r1, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r5, r0, #0x18
cmp r5, #0
bne _080467CC
adds r2, r4, #0
adds r2, #0x80
adds r3, r4, #0
adds r3, #0x7d
ldrb r0, [r2]
ldrb r1, [r3]
orrs r0, r1
strb r0, [r2]
strb r5, [r3]
adds r0, r4, #0
bl sub_080467DC
ldr r0, [r4, #0x64]
adds r0, #0x3c
ldrb r1, [r0]
adds r0, r1, #0
cmp r0, #0xff
beq _080467CC
ldr r2, _080467D8 @ =gLinkEntity
adds r0, r2, #0
adds r0, #0x3e
strb r1, [r0]
adds r1, r2, #0
adds r1, #0x3d
movs r0, #0xf4
strb r0, [r1]
adds r1, #5
movs r0, #0xa
strb r0, [r1]
adds r0, r4, #0
movs r1, #0x2c
movs r2, #0
bl CreateFX
adds r2, r0, #0
cmp r2, #0
beq _080467CC
ldr r0, [r4, #0x64]
ldrh r0, [r0, #0x38]
strh r0, [r2, #0x2e]
ldr r0, [r4, #0x64]
ldrh r0, [r0, #0x3a]
strh r0, [r2, #0x32]
adds r1, r2, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_080467CC:
adds r1, r4, #0
adds r1, #0x7c
movs r0, #0
strb r0, [r1]
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080467D8: .4byte gLinkEntity
thumb_func_start sub_080467DC
sub_080467DC: @ 0x080467DC
push {lr}
movs r1, #0
ldr r0, [r0, #0x64]
movs r2, #0
adds r0, #0x18
_080467E6:
stm r0!, {r2}
adds r1, #1
cmp r1, #7
bls _080467E6
pop {pc}
thumb_func_start sub_080467F0
sub_080467F0: @ 0x080467F0
push {r4, r5, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _08046810
adds r0, r4, #0
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #3
ands r1, r0
ldrb r2, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_08046810:
ldr r1, _0804688C @ =gUnk_080D1AFC
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]
adds r5, r4, #0
adds r5, #0x78
cmp r0, #7
beq _08046836
ldrh r3, [r5]
adds r0, r4, #0
movs r1, #0xaa
movs r2, #0xaa
bl sub_0805EC9C
_08046836:
ldrh r0, [r5]
lsrs r0, r0, #8
rsbs r0, r0, #0
strb r0, [r4, #0x14]
adds r0, r4, #0
bl sub_08048004
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
adds r1, r4, #0
adds r1, #0x7d
strb r0, [r1]
ldrb r2, [r4, #0x18]
lsls r0, r2, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _08046878
movs r1, #0x32
ldrsh r0, [r4, r1]
ldr r1, _08046890 @ =gRoomControls
movs r3, #0xc
ldrsh r1, [r1, r3]
subs r0, r0, r1
adds r0, #0x30
movs r1, #0x80
lsls r1, r1, #1
cmp r0, r1
bls _08046878
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
strb r0, [r4, #0x18]
_08046878:
ldr r2, _08046894 @ =gLinkEntity
ldrh r1, [r2, #0x2e]
adds r0, r4, #0
adds r0, #0x84
strh r1, [r0]
ldrh r1, [r2, #0x32]
adds r0, #2
strh r1, [r0]
pop {r4, r5, pc}
.align 2, 0
_0804688C: .4byte gUnk_080D1AFC
_08046890: .4byte gRoomControls
_08046894: .4byte gLinkEntity
thumb_func_start sub_08046898
sub_08046898: @ 0x08046898
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0x22
bl sub_080A7EE0
adds r1, r0, #0
cmp r1, #0
beq _0804690C
movs r4, #0
movs r3, #1
movs r0, #1
strb r0, [r1, #0xa]
str r5, [r1, #0x50]
str r1, [r5, #0x54]
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
ldrb r1, [r5, #0x19]
movs r0, #3
orrs r1, r0
ldrb r2, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r3
strb r0, [r5, #0x18]
ldrb r2, [r5, #0x1b]
movs r3, #0x3f
adds r0, r3, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r5, #0x1b]
ands r1, r3
orrs r1, r2
strb r1, [r5, #0x19]
adds r2, r5, #0
adds r2, #0x3c
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
adds r1, r5, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x7c
strb r4, [r0]
subs r0, #4
strh r4, [r0]
adds r0, #2
strh r4, [r0]
subs r0, #8
strh r4, [r0]
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
_0804690C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08046910
sub_08046910: @ 0x08046910
push {r4, lr}
adds r4, r0, #0
ldr r1, _0804692C @ =gUnk_080D1B1C
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_0804692C: .4byte gUnk_080D1B1C
thumb_func_start sub_08046930
sub_08046930: @ 0x08046930
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #0
beq _08046948
movs r0, #5
strb r0, [r4, #0xd]
movs r0, #0x20
strb r0, [r4, #0x15]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
_08046948:
adds r0, r4, #0
bl sub_08047D88
adds r0, r4, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #0
beq _0804696A
movs r1, #0
movs r0, #1
strb r0, [r4, #0xd]
strb r0, [r4, #0xe]
strb r1, [r4, #0x14]
strb r1, [r4, #0x15]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
_0804696A:
pop {r4, pc}
thumb_func_start sub_0804696C
sub_0804696C: @ 0x0804696C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08047E48
ldr r5, _080469C8 @ =gRoomControls
ldrh r0, [r5, #8]
movs r1, #0x98
lsls r1, r1, #1
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
ble _080469A6
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x80
strb r0, [r4, #0x15]
adds r0, #0x80
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
orrs r0, r1
strb r0, [r4, #0x19]
movs r0, #0x2e
bl PlaySFX
_080469A6:
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080469C6
ldrh r0, [r5, #8]
movs r1, #0x96
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
ble _080469C6
movs r0, #0
strb r0, [r4, #0xe]
movs r0, #0xf7
bl PlaySFX
_080469C6:
pop {r4, r5, pc}
.align 2, 0
_080469C8: .4byte gRoomControls
thumb_func_start sub_080469CC
sub_080469CC: @ 0x080469CC
push {r4, lr}
adds r4, r0, #0
bl sub_08047E48
ldr r0, _080469F0 @ =gRoomControls
ldrh r0, [r0, #8]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bge _080469EE
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x90
strb r0, [r4, #0x15]
_080469EE:
pop {r4, pc}
.align 2, 0
_080469F0: .4byte gRoomControls
thumb_func_start sub_080469F4
sub_080469F4: @ 0x080469F4
push {r4, lr}
adds r4, r0, #0
bl sub_08047E48
ldr r0, _08046A2C @ =gRoomControls
ldrh r0, [r0, #8]
movs r1, #0xa4
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bge _08046A28
movs r0, #4
strb r0, [r4, #0xd]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
_08046A28:
pop {r4, pc}
.align 2, 0
_08046A2C: .4byte gRoomControls
thumb_func_start sub_08046A30
sub_08046A30: @ 0x08046A30
push {r4, lr}
adds r4, r0, #0
bl sub_08047D88
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08046A50
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_08046A50:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08046A54
sub_08046A54: @ 0x08046A54
push {r4, lr}
adds r4, r0, #0
bl sub_08047E48
ldr r0, _08046A74 @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0xe0
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
bge _08046A72
movs r0, #6
strb r0, [r4, #0xd]
_08046A72:
pop {r4, pc}
.align 2, 0
_08046A74: .4byte gRoomControls
thumb_func_start sub_08046A78
sub_08046A78: @ 0x08046A78
push {r4, lr}
adds r4, r0, #0
bl sub_08047D88
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _08046A98
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_08046A98:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08046A9C
sub_08046A9C: @ 0x08046A9C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #1
bne _08046ABA
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #1
bne _08046ABA
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_08046ABA:
ldr r1, _08046AE4 @ =gUnk_080D1B38
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x7c
ldrb r0, [r0]
cmp r0, #0
beq _08046AE2
movs r1, #0
movs r0, #6
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_08046AE2:
pop {r4, pc}
.align 2, 0
_08046AE4: .4byte gUnk_080D1B38
thumb_func_start sub_08046AE8
sub_08046AE8: @ 0x08046AE8
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
lsrs r1, r1, #5
adds r0, r4, #0
bl sub_08048178
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
adds r0, r4, #0
bl sub_08047D88
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08046B18
sub_08046B18: @ 0x08046B18
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r1, r0, #0
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _08046B6C
subs r0, r1, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _08046B54
adds r1, r4, #0
adds r1, #0x76
ldr r2, _08046B50 @ =0xFFFFFF00
b _08046B5C
.align 2, 0
_08046B50: .4byte 0xFFFFFF00
_08046B54:
adds r1, r4, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_08046B5C:
adds r0, r2, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
b _08046B70
_08046B6C:
movs r0, #2
strb r0, [r4, #0xd]
_08046B70:
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
thumb_func_start sub_08046B8C
sub_08046B8C: @ 0x08046B8C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x80
ldrh r1, [r5]
adds r6, r4, #0
adds r6, #0x82
ldrh r2, [r6]
movs r3, #4
bl sub_0806FCB8
cmp r0, #0
beq _08046BD8
movs r0, #3
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
ldr r1, _08046BD4 @ =gRoomControls
movs r2, #0x80
lsls r2, r2, #2
adds r0, r2, #0
ldrh r3, [r1, #6]
adds r0, r0, r3
strh r0, [r5]
adds r2, #0x10
adds r0, r2, #0
ldrh r1, [r1, #8]
adds r0, r0, r1
strh r0, [r6]
adds r0, r4, #0
bl sub_08047D88
b _08046C02
.align 2, 0
_08046BD4: .4byte gRoomControls
_08046BD8:
ldrh r0, [r5]
movs r3, #0x2e
ldrsh r1, [r4, r3]
subs r0, r0, r1
ldrh r1, [r6]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
_08046C02:
pop {r4, r5, r6, pc}
thumb_func_start sub_08046C04
sub_08046C04: @ 0x08046C04
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r1, r0, #0
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _08046C58
subs r0, r1, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _08046C40
adds r1, r4, #0
adds r1, #0x76
ldr r2, _08046C3C @ =0xFFFFFF00
b _08046C48
.align 2, 0
_08046C3C: .4byte 0xFFFFFF00
_08046C40:
adds r1, r4, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_08046C48:
adds r0, r2, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
b _08046C6C
_08046C58:
movs r0, #4
strb r0, [r4, #0xd]
adds r0, r1, #0
adds r0, #0x20
movs r1, #0xc0
ands r0, r1
lsrs r0, r0, #6
adds r1, r4, #0
adds r1, #0x70
strh r0, [r1]
_08046C6C:
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
thumb_func_start sub_08046C88
sub_08046C88: @ 0x08046C88
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x80
ldrh r1, [r5]
adds r6, r4, #0
adds r6, #0x82
ldrh r2, [r6]
movs r3, #4
bl sub_0806FCB8
cmp r0, #0
beq _08046CC0
movs r0, #1
strb r0, [r4, #0xd]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
bl sub_08048158
adds r1, r0, #0
adds r0, r4, #0
bl sub_08048178
adds r0, r4, #0
bl sub_08047D88
b _08046CEA
_08046CC0:
ldrh r0, [r5]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
ldrh r1, [r6]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
_08046CEA:
pop {r4, r5, r6, pc}
thumb_func_start sub_08046CEC
sub_08046CEC: @ 0x08046CEC
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
bne _08046D0A
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #1
bne _08046D0A
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
_08046D0A:
ldr r1, _08046D40 @ =gUnk_080D1B4C
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _08046D3C
movs r0, #0
movs r1, #2
strb r1, [r4, #0xc]
strb r0, [r4, #0xd]
ldrh r0, [r4, #0x24]
strb r0, [r4, #0x14]
_08046D3C:
pop {r4, pc}
.align 2, 0
_08046D40: .4byte gUnk_080D1B4C
thumb_func_start sub_08046D44
sub_08046D44: @ 0x08046D44
push {lr}
mov ip, r0
movs r0, #1
mov r1, ip
strb r0, [r1, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r1, #0x24]
ldr r0, [r1, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
lsrs r1, r1, #5
lsls r1, r1, #1
ldr r0, _08046D90 @ =gUnk_080D1B60
adds r1, r1, r0
ldr r3, _08046D94 @ =gRoomControls
ldrh r0, [r3, #6]
ldrh r2, [r1]
adds r0, r0, r2
mov r2, ip
adds r2, #0x80
strh r0, [r2]
ldrh r0, [r3, #8]
ldrh r1, [r1, #2]
adds r0, r0, r1
mov r1, ip
adds r1, #0x82
strh r0, [r1]
mov r1, ip
ldrb r0, [r1, #0x15]
lsls r0, r0, #8
adds r1, #0x76
strh r0, [r1]
mov r0, ip
bl sub_08047D88
pop {pc}
.align 2, 0
_08046D90: .4byte gUnk_080D1B60
_08046D94: .4byte gRoomControls
thumb_func_start sub_08046D98
sub_08046D98: @ 0x08046D98
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r1, r0, #0
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _08046DEC
subs r0, r1, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _08046DD4
adds r1, r4, #0
adds r1, #0x76
ldr r2, _08046DD0 @ =0xFFFFFF00
b _08046DDC
.align 2, 0
_08046DD0: .4byte 0xFFFFFF00
_08046DD4:
adds r1, r4, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_08046DDC:
adds r0, r2, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
b _08046DF0
_08046DEC:
movs r0, #2
strb r0, [r4, #0xd]
_08046DF0:
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
thumb_func_start sub_08046E0C
sub_08046E0C: @ 0x08046E0C
push {r4, r5, r6, lr}
adds r4, r0, #0
adds r5, r4, #0
adds r5, #0x80
ldrh r1, [r5]
adds r6, r4, #0
adds r6, #0x82
ldrh r2, [r6]
movs r3, #4
bl sub_0806FCB8
cmp r0, #0
beq _08046E3C
movs r0, #3
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
adds r0, r4, #0
bl sub_08047D88
b _08046E66
_08046E3C:
ldrh r0, [r5]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
ldrh r1, [r6]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
_08046E66:
pop {r4, r5, r6, pc}
thumb_func_start sub_08046E68
sub_08046E68: @ 0x08046E68
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, [r5, #0x64]
ldr r0, [r0, #4]
ldrb r1, [r0, #0x14]
movs r0, #0x80
adds r6, r0, #0
eors r6, r1
ldrb r0, [r5, #0x15]
cmp r6, r0
beq _08046EC6
subs r0, r6, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _08046E94
adds r1, r5, #0
adds r1, #0x76
ldr r2, _08046E90 @ =0xFFFFFF00
b _08046E9C
.align 2, 0
_08046E90: .4byte 0xFFFFFF00
_08046E94:
adds r1, r5, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_08046E9C:
adds r0, r2, #0
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08047D88
ldrb r0, [r5, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r5, #0
bl sub_08047EA4
b _08046EEE
_08046EC6:
movs r0, #4
strb r0, [r5, #0xd]
movs r0, #0x3f
strb r0, [r5, #0xe]
movs r4, #1
strb r4, [r5, #0xf]
bl Random
ldr r1, _08046EF0 @ =gUnk_080D1B70
ands r0, r4
lsls r0, r0, #1
adds r0, r0, r1
ldrb r0, [r0]
adds r0, r0, r6
movs r1, #0xc0
ands r0, r1
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08047D88
_08046EEE:
pop {r4, r5, r6, pc}
.align 2, 0
_08046EF0: .4byte gUnk_080D1B70
thumb_func_start sub_08046EF4
sub_08046EF4: @ 0x08046EF4
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
movs r3, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _08046F12
movs r0, #0x7f
strb r0, [r4, #0xe]
ldrb r0, [r4, #0x15]
movs r1, #0x80
eors r0, r1
strb r0, [r4, #0x15]
_08046F12:
ldr r2, _08046F60 @ =gUnk_080D1B74
ldrb r0, [r4, #0xe]
lsrs r0, r0, #3
movs r1, #0xf
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
strh r0, [r4, #0x24]
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r3
cmp r0, #0
bne _08046F58
bl Random
movs r1, #0x38
ands r0, r1
adds r0, #0x78
strb r0, [r4, #0xf]
movs r0, #0x23
bl sub_080A7EE0
adds r2, r0, #0
cmp r2, #0
beq _08046F58
adds r1, r2, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
str r4, [r2, #0x50]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_08046F58:
adds r0, r4, #0
bl sub_08047E48
pop {r4, pc}
.align 2, 0
_08046F60: .4byte gUnk_080D1B74
thumb_func_start sub_08046F64
sub_08046F64: @ 0x08046F64
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
bne _08046F82
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #1
bne _08046F82
adds r0, r4, #0
movs r1, #1
bl sub_080042AC
_08046F82:
ldr r1, _08046FE4 @ =gUnk_080D1B94
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08046FC8
movs r0, #0x78
strh r0, [r1]
movs r0, #0x23
bl sub_080A7EE0
adds r2, r0, #0
cmp r2, #0
beq _08046FC8
adds r1, r2, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
str r4, [r2, #0x50]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_08046FC8:
ldr r0, [r4, #0x64]
ldr r0, [r0]
adds r0, #0x6c
ldrh r1, [r0]
movs r0, #4
ands r0, r1
cmp r0, #0
beq _08046FE0
movs r1, #0
movs r0, #5
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_08046FE0:
pop {r4, pc}
.align 2, 0
_08046FE4: .4byte gUnk_080D1B94
thumb_func_start sub_08046FE8
sub_08046FE8: @ 0x08046FE8
push {lr}
adds r3, r0, #0
movs r0, #1
strb r0, [r3, #0xd]
movs r0, #0xe0
lsls r0, r0, #1
strh r0, [r3, #0x24]
adds r1, r3, #0
adds r1, #0x7e
movs r0, #0x1e
strh r0, [r1]
ldr r2, _08047028 @ =gRoomControls
movs r1, #0xa4
lsls r1, r1, #2
adds r0, r1, #0
ldrh r1, [r2, #6]
adds r0, r0, r1
adds r1, r3, #0
adds r1, #0x80
strh r0, [r1]
movs r1, #0xc8
lsls r1, r1, #1
adds r0, r1, #0
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r1, r3, #0
adds r1, #0x82
strh r0, [r1]
adds r0, r3, #0
bl sub_08047D88
pop {pc}
.align 2, 0
_08047028: .4byte gRoomControls
thumb_func_start sub_0804702C
sub_0804702C: @ 0x0804702C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r3, r0, #0
ldrb r2, [r4, #0x15]
subs r0, r2, r3
adds r0, #2
movs r1, #0xff
ands r0, r1
cmp r0, #4
bls _0804706C
subs r0, r3, r2
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08047068
subs r0, r2, #1
b _0804706A
_08047068:
adds r0, r2, #1
_0804706A:
strb r0, [r4, #0x15]
_0804706C:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
adds r0, r4, #0
adds r0, #0x80
ldrh r1, [r0]
adds r0, #2
ldrh r2, [r0]
movs r0, #0x24
ldrsh r3, [r4, r0]
asrs r3, r3, #0x10
adds r3, #0x10
adds r0, r4, #0
bl sub_0806FCB8
cmp r0, #0
beq _080470B0
movs r0, #2
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
movs r0, #0xa0
lsls r0, r0, #2
strh r0, [r4, #0x24]
_080470B0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080470B4
sub_080470B4: @ 0x080470B4
push {r4, lr}
adds r4, r0, #0
movs r1, #0x40
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _0804710A
subs r0, r1, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _080470D8
adds r1, r4, #0
adds r1, #0x76
ldr r2, _080470D4 @ =0xFFFFFF00
b _080470E0
.align 2, 0
_080470D4: .4byte 0xFFFFFF00
_080470D8:
adds r1, r4, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_080470E0:
adds r0, r2, #0
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
b _0804713A
_0804710A:
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
bl Random
ldr r2, _0804713C @ =gUnk_080D1BBC
movs r1, #1
ands r1, r0
lsls r1, r1, #1
adds r1, r1, r2
ldrh r1, [r1]
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
adds r0, r4, #0
bl sub_08047D88
_0804713A:
pop {r4, pc}
.align 2, 0
_0804713C: .4byte gUnk_080D1BBC
thumb_func_start sub_08047140
sub_08047140: @ 0x08047140
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x76
adds r0, #0x74
ldrh r0, [r0]
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r2, #0x15]
cmp r0, #0xbf
bls _08047164
movs r0, #0xc0
strb r0, [r2, #0x15]
movs r0, #4
strb r0, [r2, #0xd]
_08047164:
ldrb r0, [r2, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r2, #0
bl sub_08047DF0
pop {pc}
.align 2, 0
thumb_func_start sub_0804717C
sub_0804717C: @ 0x0804717C
push {r4, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
ldr r0, _080471C0 @ =0x0000027F
cmp r1, r0
bgt _08047192
adds r0, r2, #0
adds r0, #8
strh r0, [r4, #0x24]
_08047192:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
ldr r0, _080471C4 @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0x80
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
ble _080471BC
movs r0, #5
strb r0, [r4, #0xd]
_080471BC:
pop {r4, pc}
.align 2, 0
_080471C0: .4byte 0x0000027F
_080471C4: .4byte gRoomControls
thumb_func_start sub_080471C8
sub_080471C8: @ 0x080471C8
push {r4, r5, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
movs r0, #0xc0
lsls r0, r0, #1
cmp r1, r0
ble _080471E0
adds r0, r2, #0
subs r0, #0x10
strh r0, [r4, #0x24]
_080471E0:
ldrb r0, [r4, #0x15]
cmp r0, #0xdf
bhi _080471EA
adds r0, #1
strb r0, [r4, #0x15]
_080471EA:
ldrb r1, [r4, #0x15]
movs r5, #0x80
lsls r5, r5, #1
subs r1, r5, r1
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
ldr r0, _0804722C @ =gRoomControls
ldrh r0, [r0, #8]
movs r1, #0xc8
lsls r1, r1, #1
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
ble _08047238
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
cmp r0, r5
bls _08047234
bl Random
adds r1, r0, #0
movs r0, #1
ands r1, r0
cmp r1, #0
beq _08047230
movs r0, #6
b _08047236
.align 2, 0
_0804722C: .4byte gRoomControls
_08047230:
strb r1, [r4, #0xd]
b _08047238
_08047234:
movs r0, #0
_08047236:
strb r0, [r4, #0xd]
_08047238:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0804723C
sub_0804723C: @ 0x0804723C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
subs r0, #2
strb r0, [r4, #0x15]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0xbf
bhi _08047266
movs r0, #7
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
movs r0, #0xc0
strb r0, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x76
movs r0, #0xc0
lsls r0, r0, #8
strh r0, [r1]
_08047266:
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08047284
sub_08047284: @ 0x08047284
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x76
ldrh r0, [r1]
subs r0, #0xe0
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r2, #0x15]
cmp r0, #0x3f
bhi _080472A4
movs r0, #0x40
strb r0, [r2, #0x15]
movs r0, #8
strb r0, [r2, #0xd]
_080472A4:
ldrb r0, [r2, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r2, #0
bl sub_08047DF0
pop {pc}
.align 2, 0
thumb_func_start sub_080472BC
sub_080472BC: @ 0x080472BC
push {r4, lr}
adds r4, r0, #0
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
ldr r0, _08047308 @ =0x000002FF
cmp r1, r0
bgt _080472D2
adds r0, r2, #0
adds r0, #8
strh r0, [r4, #0x24]
_080472D2:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
ldr r0, _0804730C @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0xac
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
bge _08047306
movs r0, #9
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
_08047306:
pop {r4, pc}
.align 2, 0
_08047308: .4byte 0x000002FF
_0804730C: .4byte gRoomControls
thumb_func_start sub_08047310
sub_08047310: @ 0x08047310
push {lr}
adds r2, r0, #0
ldrh r3, [r2, #0x24]
movs r0, #0x24
ldrsh r1, [r2, r0]
ldr r0, _08047364 @ =0x0000017F
cmp r1, r0
bgt _08047326
adds r0, r3, #0
subs r0, #0x10
strh r0, [r2, #0x24]
_08047326:
adds r1, r2, #0
adds r1, #0x76
ldr r3, _08047368 @ =0xFFFFFE30
adds r0, r3, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r2, #0x15]
adds r0, #0x7f
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x3f
bhi _0804734C
movs r0, #0xc0
strb r0, [r2, #0x15]
movs r0, #4
strb r0, [r2, #0xd]
_0804734C:
ldrb r0, [r2, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r2, #0
bl sub_08047DF0
pop {pc}
.align 2, 0
_08047364: .4byte 0x0000017F
_08047368: .4byte 0xFFFFFE30
thumb_func_start sub_0804736C
sub_0804736C: @ 0x0804736C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #1
bne _0804738A
adds r0, r4, #0
adds r0, #0x5a
ldrb r0, [r0]
cmp r0, #1
bne _0804738A
adds r0, r4, #0
movs r1, #0
bl sub_080042AC
_0804738A:
ldr r0, _080473B4 @ =gUnk_080D1BC0
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
bne _080473B0
movs r0, #7
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_080473B0:
pop {r4, pc}
.align 2, 0
_080473B4: .4byte gUnk_080D1BC0
thumb_func_start sub_080473B8
sub_080473B8: @ 0x080473B8
push {lr}
movs r1, #1
strb r1, [r0, #0xd]
movs r1, #0x90
lsls r1, r1, #1
strh r1, [r0, #0x24]
ldr r3, _080473EC @ =gRoomControls
movs r2, #0x80
lsls r2, r2, #2
adds r1, r2, #0
ldrh r2, [r3, #6]
adds r1, r1, r2
adds r2, r0, #0
adds r2, #0x80
strh r1, [r2]
movs r2, #0xe8
lsls r2, r2, #1
adds r1, r2, #0
ldrh r3, [r3, #8]
adds r1, r1, r3
adds r2, r0, #0
adds r2, #0x82
strh r1, [r2]
bl sub_08047D88
pop {pc}
.align 2, 0
_080473EC: .4byte gRoomControls
thumb_func_start sub_080473F0
sub_080473F0: @ 0x080473F0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r3, r0, #0
ldrb r2, [r4, #0x15]
subs r0, r2, r3
adds r0, #2
movs r1, #0xff
ands r0, r1
cmp r0, #4
bls _08047444
subs r1, r3, r2
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08047438
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bge _08047434
subs r0, r2, #2
b _08047442
_08047434:
subs r0, r2, #1
b _08047442
_08047438:
cmp r1, #1
ble _08047440
adds r0, r2, #2
b _08047442
_08047440:
adds r0, r2, #1
_08047442:
strb r0, [r4, #0x15]
_08047444:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047DF0
adds r0, r4, #0
adds r0, #0x80
ldrh r1, [r0]
adds r0, #2
ldrh r2, [r0]
adds r0, r4, #0
movs r3, #8
bl sub_0806FCB8
cmp r0, #0
beq _08047482
movs r0, #2
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
_08047482:
pop {r4, pc}
thumb_func_start sub_08047484
sub_08047484: @ 0x08047484
push {r4, lr}
adds r4, r0, #0
movs r1, #0x40
ldrb r0, [r4, #0x15]
cmp r1, r0
beq _080474DA
subs r0, r1, r0
movs r1, #0xff
ands r0, r1
cmp r0, #0x80
bls _080474A8
adds r1, r4, #0
adds r1, #0x76
ldr r2, _080474A4 @ =0xFFFFFF00
b _080474B0
.align 2, 0
_080474A4: .4byte 0xFFFFFF00
_080474A8:
adds r1, r4, #0
adds r1, #0x76
movs r2, #0x80
lsls r2, r2, #1
_080474B0:
adds r0, r2, #0
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
ldrh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08047D88
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
b _08047504
_080474DA:
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
strb r1, [r4, #0x15]
adds r1, r4, #0
adds r1, #0x76
movs r0, #0x80
lsls r0, r0, #7
strh r0, [r1]
subs r1, #2
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r1]
adds r1, #0xa
movs r0, #0xf0
strh r0, [r1]
adds r0, r4, #0
bl sub_08047D88
_08047504:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08047508
sub_08047508: @ 0x08047508
push {r4, lr}
adds r4, r0, #0
ldr r2, _0804754C @ =gRoomControls
ldrh r0, [r2, #6]
movs r1, #0xd0
lsls r1, r1, #1
adds r0, r0, r1
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
bge _0804759A
ldrb r1, [r4, #0x15]
cmp r1, #0
bne _08047550
ldrh r0, [r2, #8]
movs r1, #0x82
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
blt _0804759A
adds r0, r4, #0
adds r0, #0x74
ldrh r1, [r0]
rsbs r1, r1, #0
strh r1, [r0]
adds r2, r4, #0
adds r2, #0x76
ldrh r0, [r2]
adds r0, r0, r1
strh r0, [r2]
lsrs r0, r0, #8
b _08047598
.align 2, 0
_0804754C: .4byte gRoomControls
_08047550:
adds r0, r4, #0
adds r0, #0x74
movs r3, #0
ldrsh r2, [r0, r3]
cmp r2, #0
bge _0804757E
adds r3, r4, #0
adds r3, #0x76
ldrh r0, [r3]
adds r0, r0, r2
strh r0, [r3]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r4, #0x15]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0804759A
movs r0, #0
strb r0, [r4, #0x15]
movs r0, #0
strh r0, [r3]
b _0804759A
_0804757E:
cmp r1, #0x3f
bhi _0804759A
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
adds r0, r0, r2
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r4, #0x15]
cmp r0, #0x3f
bls _0804759A
movs r0, #0x40
_08047598:
strb r0, [r4, #0x15]
_0804759A:
adds r0, r4, #0
bl sub_08047E48
ldr r0, _080475F0 @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0xa0
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
bge _080475CA
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x15]
strb r0, [r4, #0x14]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
_080475CA:
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080475EE
bl Random
movs r1, #3
ands r1, r0
movs r0, #0x62
bl CreateEnemy
cmp r0, #0
beq _080475EE
str r4, [r0, #0x50]
_080475EE:
pop {r4, pc}
.align 2, 0
_080475F0: .4byte gRoomControls
thumb_func_start sub_080475F4
sub_080475F4: @ 0x080475F4
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x76
movs r3, #0xc0
lsls r3, r3, #1
adds r0, r3, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r2, #0x15]
cmp r0, #0xbf
bls _08047626
movs r0, #0xc0
strb r0, [r2, #0x15]
movs r0, #5
strb r0, [r2, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r2, #0x24]
adds r1, #8
movs r0, #0x3c
strh r0, [r1]
_08047626:
ldrb r0, [r2, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r2, #0
bl sub_08047DF0
pop {pc}
thumb_func_start sub_0804763C
sub_0804763C: @ 0x0804763C
push {r4, lr}
adds r4, r0, #0
ldr r2, _08047680 @ =gRoomControls
ldrh r0, [r2, #6]
movs r1, #0xf8
lsls r1, r1, #1
adds r0, r0, r1
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
ble _080476D0
ldrb r1, [r4, #0x15]
cmp r1, #0
bne _08047684
ldrh r0, [r2, #8]
movs r1, #0x82
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
blt _080476D0
adds r0, r4, #0
adds r0, #0x74
ldrh r1, [r0]
rsbs r1, r1, #0
strh r1, [r0]
adds r2, r4, #0
adds r2, #0x76
ldrh r0, [r2]
adds r0, r0, r1
strh r0, [r2]
lsrs r0, r0, #8
b _080476CE
.align 2, 0
_08047680: .4byte gRoomControls
_08047684:
adds r0, r4, #0
adds r0, #0x74
movs r3, #0
ldrsh r2, [r0, r3]
cmp r2, #0
ble _080476B4
adds r3, r4, #0
adds r3, #0x76
ldrh r0, [r3]
adds r0, r0, r2
strh r0, [r3]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r4, #0x15]
movs r1, #0x80
ands r0, r1
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _080476D0
movs r0, #0
strb r0, [r4, #0x15]
strh r1, [r3]
b _080476D0
_080476B4:
cmp r1, #0xc0
bls _080476D0
adds r1, r4, #0
adds r1, #0x76
ldrh r0, [r1]
adds r0, r0, r2
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r4, #0x15]
cmp r0, #0xc0
bhi _080476D0
movs r0, #0xc0
_080476CE:
strb r0, [r4, #0x15]
_080476D0:
adds r0, r4, #0
bl sub_08047E48
ldr r0, _08047728 @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0xc0
lsls r1, r1, #1
adds r0, r0, r1
movs r2, #0x2e
ldrsh r1, [r4, r2]
cmp r0, r1
ble _08047700
movs r0, #6
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x15]
strb r0, [r4, #0x14]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
_08047700:
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _08047724
bl Random
movs r1, #3
ands r1, r0
movs r0, #0x62
bl CreateEnemy
cmp r0, #0
beq _08047724
str r4, [r0, #0x50]
_08047724:
pop {r4, pc}
.align 2, 0
_08047728: .4byte gRoomControls
thumb_func_start sub_0804772C
sub_0804772C: @ 0x0804772C
push {lr}
adds r2, r0, #0
adds r1, r2, #0
adds r1, #0x76
ldr r3, _08047774 @ =0xFFFFFE80
adds r0, r3, #0
ldrh r3, [r1]
adds r0, r0, r3
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r2, #0x15]
cmp r0, #0x40
bhi _0804775C
movs r0, #0x40
strb r0, [r2, #0x15]
movs r0, #3
strb r0, [r2, #0xd]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r2, #0x24]
adds r1, #8
movs r0, #0x1e
strh r0, [r1]
_0804775C:
ldrb r0, [r2, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r2, #0
bl sub_08047DF0
pop {pc}
.align 2, 0
_08047774: .4byte 0xFFFFFE80
thumb_func_start sub_08047778
sub_08047778: @ 0x08047778
push {r4, lr}
adds r4, r0, #0
ldr r1, _08047794 @ =gUnk_080D1BDC
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_08047794: .4byte gUnk_080D1BDC
thumb_func_start sub_08047798
sub_08047798: @ 0x08047798
push {r4, lr}
adds r3, r0, #0
movs r0, #1
strb r0, [r3, #0xd]
movs r0, #0x80
strh r0, [r3, #0x24]
movs r0, #0x2e
ldrsh r1, [r3, r0]
ldr r2, _080477BC @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
ldr r0, _080477C0 @ =0x000001F7
cmp r1, r0
bgt _080477C4
adds r1, r3, #0
adds r1, #0x80
movs r0, #0xa8
b _080477CC
.align 2, 0
_080477BC: .4byte gRoomControls
_080477C0: .4byte 0x000001F7
_080477C4:
adds r1, r3, #0
adds r1, #0x80
movs r0, #0xd2
lsls r0, r0, #2
_080477CC:
strh r0, [r1]
ldrh r0, [r2, #6]
ldrh r4, [r1]
adds r0, r0, r4
strh r0, [r1]
movs r1, #0xd2
lsls r1, r1, #2
adds r0, r1, #0
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r1, r3, #0
adds r1, #0x82
strh r0, [r1]
adds r0, r3, #0
bl sub_08047D88
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080477F0
sub_080477F0: @ 0x080477F0
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r4, r0, #0
ldrh r2, [r4, #0x24]
movs r0, #0x24
ldrsh r1, [r4, r0]
ldr r0, _08047868 @ =0x000002FF
cmp r1, r0
bgt _0804780A
adds r0, r2, #0
adds r0, #8
strh r0, [r4, #0x24]
_0804780A:
adds r7, r4, #0
adds r7, #0x80
ldrh r0, [r7]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r6, r4, #0
adds r6, #0x82
ldrh r1, [r6]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08047E48
ldr r0, _0804786C @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x80
bl sub_0806FCB8
adds r1, r0, #0
cmp r1, #0
bne _08047870
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
ldrb r0, [r4, #0x14]
strb r0, [r4, #0x15]
b _0804790C
.align 2, 0
_08047868: .4byte 0x000002FF
_0804786C: .4byte gLinkEntity
_08047870:
ldr r5, _080478FC @ =gRoomControls
ldrh r1, [r5, #6]
movs r0, #0x80
lsls r0, r0, #2
mov r8, r0
add r1, r8
ldrh r2, [r5, #8]
movs r3, #0x84
lsls r3, r3, #2
adds r2, r2, r3
movs r3, #0x80
lsls r3, r3, #1
adds r0, r4, #0
bl sub_0806FCB8
cmp r0, #0
bne _080478A0
ldrb r0, [r4, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
orrs r0, r1
strb r0, [r4, #0x19]
_080478A0:
ldrh r1, [r7]
ldrh r2, [r6]
adds r0, r4, #0
movs r3, #4
bl sub_0806FCB8
cmp r0, #0
beq _0804790C
movs r0, #2
strb r0, [r4, #0xd]
ldrb r0, [r4, #0x14]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
bl Random
ldr r2, _08047900 @ =gUnk_080D1BF0
movs r1, #1
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r2, [r0]
adds r0, r4, #0
adds r0, #0x74
strh r2, [r0]
ldr r2, [r4, #0x64]
ldr r0, [r2]
adds r0, #0x6c
ldrh r0, [r0]
ands r1, r0
cmp r1, #0
beq _08047904
ldr r3, [r2, #4]
ldrh r0, [r5, #6]
add r0, r8
movs r2, #0x2e
ldrsh r1, [r4, r2]
movs r2, #0x83
cmp r0, r1
ble _080478F4
movs r2, #0x81
_080478F4:
adds r0, r3, #0
adds r0, #0x79
strb r2, [r0]
b _0804790C
.align 2, 0
_080478FC: .4byte gRoomControls
_08047900: .4byte gUnk_080D1BF0
_08047904:
ldr r0, [r2, #4]
adds r0, #0x79
movs r1, #0x80
strb r1, [r0]
_0804790C:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08047914
sub_08047914: @ 0x08047914
push {r4, lr}
adds r4, r0, #0
bl sub_08047D88
ldrb r1, [r4, #0x14]
movs r0, #0x1f
ands r0, r1
cmp r0, #0
beq _08047950
adds r1, r4, #0
adds r1, #0x76
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x14]
ldrb r0, [r4, #0x14]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
b _08047976
_08047950:
movs r0, #3
strb r0, [r4, #0xd]
adds r1, r4, #0
adds r1, #0x70
movs r0, #0x3c
strh r0, [r1]
ldrb r1, [r4, #0xa]
lsls r0, r1, #4
subs r0, r0, r1
lsls r0, r0, #2
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x7e
strh r0, [r1]
ldr r0, [r4, #0x64]
ldr r0, [r0]
ldrb r1, [r4, #0x14]
bl sub_080A1D70
_08047976:
pop {r4, pc}
thumb_func_start sub_08047978
sub_08047978: @ 0x08047978
push {r4, lr}
adds r4, r0, #0
bl sub_08047D88
adds r0, r4, #0
adds r0, #0x45
ldrb r1, [r0]
cmp r1, #0
beq _080479C6
adds r2, r4, #0
adds r2, #0x70
ldrh r0, [r2]
subs r1, r0, #1
strh r1, [r2]
lsls r0, r1, #0x10
cmp r0, #0
bne _080479B6
adds r1, r4, #0
adds r1, #0x72
movs r0, #1
strh r0, [r1]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080479AE
movs r0, #0xb4
strh r0, [r2]
b _080479CC
_080479AE:
movs r0, #0xb4
lsls r0, r0, #1
strh r0, [r2]
b _080479CC
_080479B6:
lsls r0, r1, #0x10
lsrs r0, r0, #0x10
cmp r0, #0xf0
bne _080479CC
adds r0, r4, #0
bl sub_0804813C
b _080479CC
_080479C6:
adds r0, r4, #0
adds r0, #0x72
strh r1, [r0]
_080479CC:
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _080479F4
movs r0, #0xf0
strh r0, [r1]
bl Random
movs r1, #3
ands r1, r0
movs r0, #0x62
bl CreateEnemy
cmp r0, #0
beq _080479F4
str r4, [r0, #0x50]
_080479F4:
ldr r0, _08047A78 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r0, r2]
movs r3, #0x32
ldrsh r2, [r0, r3]
adds r0, r4, #0
movs r3, #0x80
bl sub_0806FCB8
adds r1, r0, #0
cmp r1, #0
bne _08047A2C
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
ldrb r0, [r4, #0x14]
strb r0, [r4, #0x15]
_08047A2C:
adds r0, r4, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08047B06
ldr r0, [r4, #0x54]
ldrb r0, [r0, #0xc]
cmp r0, #1
bne _08047B06
movs r0, #4
strb r0, [r4, #0xd]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08047AA4
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #6
cmp r0, #1
bne _08047A80
ldr r2, _08047A7C @ =gRoomControls
movs r1, #0xe0
lsls r1, r1, #1
adds r0, r1, #0
ldrh r3, [r2, #6]
adds r0, r0, r3
adds r1, r4, #0
adds r1, #0x80
strh r0, [r1]
movs r1, #0x94
lsls r1, r1, #2
adds r0, r1, #0
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r1, r4, #0
adds r1, #0x82
b _08047B04
.align 2, 0
_08047A78: .4byte gLinkEntity
_08047A7C: .4byte gRoomControls
_08047A80:
ldr r2, _08047AA0 @ =gRoomControls
movs r3, #0x90
lsls r3, r3, #2
adds r0, r3, #0
ldrh r1, [r2, #6]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x80
strh r0, [r1]
adds r3, #0x10
adds r0, r3, #0
ldrh r2, [r2, #8]
adds r0, r0, r2
adds r1, #2
b _08047B04
.align 2, 0
_08047AA0: .4byte gRoomControls
_08047AA4:
ldr r0, _08047AC4 @ =gRoomControls
ldrh r1, [r0, #6]
movs r2, #0x80
lsls r2, r2, #2
adds r1, r1, r2
movs r3, #0x2e
ldrsh r2, [r4, r3]
adds r3, r0, #0
cmp r1, r2
bge _08047AC8
adds r1, r4, #0
adds r1, #0x80
movs r0, #0xc8
lsls r0, r0, #1
b _08047AD0
.align 2, 0
_08047AC4: .4byte gRoomControls
_08047AC8:
adds r1, r4, #0
adds r1, #0x80
movs r0, #0x9c
lsls r0, r0, #2
_08047AD0:
strh r0, [r1]
ldrh r0, [r3, #6]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
ldrh r0, [r3, #8]
movs r1, #0x84
lsls r1, r1, #2
adds r0, r0, r1
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bge _08047AF4
adds r1, r4, #0
adds r1, #0x82
movs r0, #0xd0
lsls r0, r0, #1
b _08047AFC
_08047AF4:
adds r1, r4, #0
adds r1, #0x82
movs r0, #0xa0
lsls r0, r0, #2
_08047AFC:
strh r0, [r1]
ldrh r0, [r3, #8]
ldrh r3, [r1]
adds r0, r0, r3
_08047B04:
strh r0, [r1]
_08047B06:
pop {r4, pc}
thumb_func_start sub_08047B08
sub_08047B08: @ 0x08047B08
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
bl sub_08047D88
adds r4, r5, #0
adds r4, #0x80
ldrh r0, [r4]
movs r2, #0x2e
ldrsh r1, [r5, r2]
subs r0, r0, r1
adds r6, r5, #0
adds r6, #0x82
ldrh r1, [r6]
movs r3, #0x32
ldrsh r2, [r5, r3]
subs r1, r1, r2
bl sub_080045DA
strb r0, [r5, #0x15]
movs r7, #0
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08047E58
ldrh r1, [r4]
ldrh r2, [r6]
adds r0, r5, #0
movs r3, #4
bl sub_0806FCB8
cmp r0, #0
beq _08047B80
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _08047B60
movs r0, #7
strb r0, [r5, #0xc]
strb r7, [r5, #0xd]
ldrb r0, [r5, #0x15]
movs r1, #0x80
eors r0, r1
b _08047B7E
_08047B60:
movs r0, #4
strb r0, [r5, #0xc]
strb r7, [r5, #0xd]
ldrb r2, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r5, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r5, #0x19]
ldrb r0, [r5, #0x14]
_08047B7E:
strb r0, [r5, #0x15]
_08047B80:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_08047B84
sub_08047B84: @ 0x08047B84
push {r4, lr}
adds r4, r0, #0
ldr r1, _08047BA0 @ =gUnk_080D1BF4
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_08047BA0: .4byte gUnk_080D1BF4
thumb_func_start sub_08047BA4
sub_08047BA4: @ 0x08047BA4
push {r4, lr}
adds r4, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r4, #0xd]
movs r2, #0x78
strb r2, [r4, #0xe]
strb r1, [r4, #0xf]
ldr r0, _08047BD0 @ =gRoomControls
ldrh r0, [r0, #6]
movs r1, #0x80
lsls r1, r1, #2
adds r0, r0, r1
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
bge _08047BD4
adds r0, r4, #0
adds r0, #0x76
strh r2, [r0]
b _08047BDC
.align 2, 0
_08047BD0: .4byte gRoomControls
_08047BD4:
adds r1, r4, #0
adds r1, #0x76
movs r0, #0x88
strh r0, [r1]
_08047BDC:
ldr r0, _08047BEC @ =0x000001B5
bl PlaySFX
adds r0, r4, #0
bl sub_08047BF0
pop {r4, pc}
.align 2, 0
_08047BEC: .4byte 0x000001B5
thumb_func_start sub_08047BF0
sub_08047BF0: @ 0x08047BF0
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r2, _08047CB8 @ =gUnk_080D1C00
ldrb r1, [r5, #0xe]
movs r0, #3
ands r0, r1
adds r0, r0, r2
ldrb r0, [r0]
strb r0, [r5, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08047E48
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _08047CC4
ldrb r1, [r5, #0xf]
adds r0, r1, #1
strb r0, [r5, #0xf]
movs r0, #0xf
ands r0, r1
cmp r0, #0
bne _08047C74
adds r0, r5, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _08047C74
bl Random
movs r3, #0x1e
adds r1, r0, #0
ands r1, r3
ldr r6, _08047CBC @ =0x0000FFF1
adds r2, r6, #0
adds r1, r2, r1
ldrh r6, [r4, #0x2e]
adds r1, r1, r6
strh r1, [r4, #0x2e]
lsrs r0, r0, #8
ands r0, r3
adds r2, r2, r0
ldrh r0, [r4, #0x32]
adds r2, r2, r0
strh r2, [r4, #0x32]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x38
movs r0, #1
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_08047C74:
adds r0, r5, #0
adds r0, #0x76
ldrh r0, [r0]
strb r0, [r5, #0x15]
movs r0, #0xa0
lsls r0, r0, #1
strh r0, [r5, #0x24]
adds r0, r5, #0
bl sub_08047E48
movs r2, #0x32
ldrsh r1, [r5, r2]
ldr r0, _08047CC0 @ =gRoomControls
ldrh r0, [r0, #8]
movs r6, #0x9c
lsls r6, r6, #2
adds r0, r0, r6
cmp r1, r0
ble _08047D10
movs r0, #2
strb r0, [r5, #0xd]
adds r1, r5, #0
adds r1, #0x7e
movs r0, #0xaa
strh r0, [r1]
adds r0, #0x83
bl PlaySFX
adds r0, r5, #0
movs r1, #1
bl sub_080042AC
b _08047D10
.align 2, 0
_08047CB8: .4byte gUnk_080D1C00
_08047CBC: .4byte 0x0000FFF1
_08047CC0: .4byte gRoomControls
_08047CC4:
subs r0, #1
strb r0, [r5, #0xe]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x5a
bne _08047CD4
ldr r4, [r5, #0x54]
b _08047CDC
_08047CD4:
cmp r0, #0x3c
bne _08047CF2
ldr r0, [r5, #0x54]
ldr r4, [r0, #0x54]
_08047CDC:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
b _08047D10
_08047CF2:
cmp r0, #0x1e
bne _08047D10
ldr r0, [r5, #0x54]
ldr r0, [r0, #0x54]
ldr r4, [r0, #0x54]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0x51
movs r2, #0
bl CreateFX
_08047D10:
adds r0, r5, #0
adds r0, #0x78
ldrh r3, [r0]
adds r0, r5, #0
movs r1, #0xaa
movs r2, #0xaa
bl sub_0805EC9C
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_08047D24
sub_08047D24: @ 0x08047D24
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x7e
ldrh r0, [r1]
adds r0, #8
movs r2, #0
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r1, r0, #0x10
movs r0, #0x80
lsls r0, r0, #4
cmp r1, r0
bls _08047D5A
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08047D4C
ldr r0, [r4, #0x64]
str r2, [r0, #8]
b _08047D50
_08047D4C:
ldr r0, [r4, #0x64]
str r2, [r0, #0xc]
_08047D50:
movs r0, #0
str r0, [r4, #0x64]
bl sub_0805E780
b _08047D84
_08047D5A:
ldr r0, _08047D68 @ =0x000001FF
cmp r1, r0
bhi _08047D6C
adds r0, r4, #0
bl sub_08047E48
b _08047D72
.align 2, 0
_08047D68: .4byte 0x000001FF
_08047D6C:
adds r0, r4, #0
bl sub_08047E58
_08047D72:
adds r0, r4, #0
adds r0, #0x7e
ldrh r2, [r0]
subs r0, #6
ldrh r3, [r0]
adds r0, r4, #0
adds r1, r2, #0
bl sub_0805EC9C
_08047D84:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08047D88
sub_08047D88: @ 0x08047D88
push {r4, r5, lr}
adds r3, r0, #0
adds r5, r3, #0
adds r5, #0x7c
ldrb r2, [r5]
lsls r1, r2, #1
movs r0, #0x7f
ands r1, r0
movs r0, #0x80
ands r0, r2
orrs r1, r0
strb r1, [r5]
ldrb r0, [r3, #0x19]
lsrs r0, r0, #6
cmp r0, #3
bne _08047DB0
ldr r0, _08047DE8 @ =gLinkState
ldrb r0, [r0, #0x14]
cmp r0, #0
bne _08047DE6
_08047DB0:
adds r0, r3, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #1
beq _08047DE6
ldr r4, _08047DEC @ =gLinkEntity
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r0, #0x32
ldrsh r2, [r4, r0]
adds r0, r3, #0
movs r3, #0x20
bl sub_0806FCB8
cmp r0, #0
beq _08047DE6
ldr r0, _08047DE8 @ =gLinkState
movs r1, #1
strb r1, [r0, #0x14]
movs r1, #0x36
ldrsh r0, [r4, r1]
cmp r0, #0
bne _08047DE6
ldrb r0, [r5]
movs r1, #1
orrs r0, r1
strb r0, [r5]
_08047DE6:
pop {r4, r5, pc}
.align 2, 0
_08047DE8: .4byte gLinkState
_08047DEC: .4byte gLinkEntity
thumb_func_start sub_08047DF0
sub_08047DF0: @ 0x08047DF0
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r4, r1, #0
bl sub_08047D88
adds r0, r5, #0
adds r1, r4, #0
bl sub_08047EA4
movs r0, #0x2e
ldrsh r4, [r5, r0]
movs r2, #0x32
ldrsh r6, [r5, r2]
movs r0, #0x24
ldrsh r1, [r5, r0]
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
adds r0, r5, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08047E42
bl sub_08079F8C
cmp r0, #0
beq _08047E42
ldr r0, _08047E44 @ =gLinkEntity
ldrh r1, [r5, #0x2e]
subs r1, r1, r4
ldrh r2, [r0, #0x2e]
adds r1, r1, r2
strh r1, [r0, #0x2e]
ldrh r1, [r5, #0x32]
subs r1, r1, r6
ldrh r2, [r0, #0x32]
adds r1, r1, r2
strh r1, [r0, #0x32]
_08047E42:
pop {r4, r5, r6, pc}
.align 2, 0
_08047E44: .4byte gLinkEntity
thumb_func_start sub_08047E48
sub_08047E48: @ 0x08047E48
push {r4, lr}
adds r4, r0, #0
bl sub_08047D88
adds r0, r4, #0
bl sub_08047E58
pop {r4, pc}
thumb_func_start sub_08047E58
sub_08047E58: @ 0x08047E58
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r5, [r4, r0]
movs r2, #0x32
ldrsh r6, [r4, r2]
movs r0, #0x24
ldrsh r1, [r4, r0]
ldrb r2, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F62C
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08047E9C
bl sub_08079F8C
cmp r0, #0
beq _08047E9C
ldr r0, _08047EA0 @ =gLinkEntity
ldrh r1, [r4, #0x2e]
subs r1, r1, r5
ldrh r2, [r0, #0x2e]
adds r1, r1, r2
strh r1, [r0, #0x2e]
ldrh r1, [r4, #0x32]
subs r1, r1, r6
ldrh r2, [r0, #0x32]
adds r1, r1, r2
strh r1, [r0, #0x32]
_08047E9C:
pop {r4, r5, r6, pc}
.align 2, 0
_08047EA0: .4byte gLinkEntity
thumb_func_start sub_08047EA4
sub_08047EA4: @ 0x08047EA4
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
adds r5, r0, #0
adds r0, #0x78
strh r1, [r0]
ldrh r1, [r0]
adds r0, #2
ldrh r0, [r0]
subs r4, r1, r0
movs r0, #0x80
lsls r0, r0, #1
adds r1, r4, r0
adds r0, #0xff
cmp r1, r0
bls _08047F58
adds r0, r5, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08047F4E
adds r0, r5, #0
bl sub_08047F68
lsls r0, r0, #8
mov r8, r0
ldr r6, _08047F60 @ =gLinkEntity
movs r1, #0x2e
ldrsh r0, [r6, r1]
movs r2, #0x2e
ldrsh r1, [r5, r2]
subs r0, r0, r1
movs r3, #0x32
ldrsh r1, [r6, r3]
movs r7, #0x32
ldrsh r2, [r5, r7]
subs r1, r1, r2
bl sub_080045DA
adds r3, r0, #0
adds r0, r4, #0
cmp r4, #0
bge _08047F00
adds r0, #0xff
_08047F00:
asrs r0, r0, #8
subs r4, r3, r0
movs r0, #0xff
ands r4, r0
ldr r2, _08047F64 @ =gUnk_080C9160
lsls r0, r4, #1
adds r0, r0, r2
movs r7, #0
ldrsh r1, [r0, r7]
lsls r0, r3, #1
adds r0, r0, r2
movs r7, #0
ldrsh r0, [r0, r7]
subs r1, r1, r0
mov r0, r8
muls r0, r1, r0
adds r1, r0, #0
ldr r0, [r6, #0x2c]
adds r0, r0, r1
str r0, [r6, #0x2c]
adds r0, r4, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r2
movs r4, #0
ldrsh r1, [r0, r4]
adds r0, r3, #0
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r2
movs r7, #0
ldrsh r0, [r0, r7]
subs r1, r1, r0
mov r0, r8
muls r0, r1, r0
adds r1, r0, #0
ldr r0, [r6, #0x30]
subs r0, r0, r1
str r0, [r6, #0x30]
_08047F4E:
adds r0, r5, #0
adds r0, #0x78
ldrh r1, [r0]
adds r0, #2
strh r1, [r0]
_08047F58:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08047F60: .4byte gLinkEntity
_08047F64: .4byte gUnk_080C9160
thumb_func_start sub_08047F68
sub_08047F68: @ 0x08047F68
push {r4, r5, lr}
ldr r3, _08047F98 @ =gLinkEntity
movs r1, #0x2e
ldrsh r2, [r3, r1]
movs r4, #0x2e
ldrsh r1, [r0, r4]
subs r2, r2, r1
movs r4, #0x32
ldrsh r1, [r3, r4]
movs r3, #0x32
ldrsh r0, [r0, r3]
subs r1, r1, r0
adds r4, r2, #0
muls r4, r2, r4
adds r2, r4, #0
adds r0, r1, #0
muls r0, r1, r0
adds r4, r2, r0
movs r0, #0x80
lsls r0, r0, #3
cmp r4, r0
bne _08047F9C
movs r0, #0x20
b _08048002
.align 2, 0
_08047F98: .4byte gLinkEntity
_08047F9C:
ldr r0, _08047FB8 @ =gUnk_080D1C04
movs r3, #0x18
adds r2, r0, #0
ldrh r0, [r2, #0x20]
cmp r4, r0
bge _08047FAA
movs r3, #8
_08047FAA:
lsls r0, r3, #1
adds r0, r0, r2
ldrh r0, [r0]
cmp r4, r0
bge _08047FBC
subs r3, #4
b _08047FBE
.align 2, 0
_08047FB8: .4byte gUnk_080D1C04
_08047FBC:
adds r3, #4
_08047FBE:
lsls r0, r3, #1
adds r0, r0, r2
ldrh r0, [r0]
cmp r4, r0
bge _08047FCC
subs r3, #2
b _08047FCE
_08047FCC:
adds r3, #2
_08047FCE:
lsls r0, r3, #1
adds r0, r0, r2
ldrh r0, [r0]
cmp r4, r0
bge _08047FDC
subs r3, #1
b _08047FDE
_08047FDC:
adds r3, #1
_08047FDE:
lsls r0, r3, #1
adds r0, r0, r2
ldrh r1, [r0]
cmp r4, r1
bge _08048000
subs r5, r3, #1
lsls r0, r5, #1
adds r0, r0, r2
ldrh r2, [r0]
subs r0, r1, r2
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
adds r2, r2, r0
cmp r4, r2
bgt _08048000
adds r3, r5, #0
_08048000:
adds r0, r3, #0
_08048002:
pop {r4, r5, pc}
thumb_func_start sub_08048004
sub_08048004: @ 0x08048004
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08048010
b _08048138
_08048010:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _0804801C
b _08048130
_0804801C:
ldrb r0, [r4, #0x10]
movs r1, #0x7f
ands r1, r0
strb r1, [r4, #0x10]
ldr r6, _080480A4 @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r6, r1]
cmp r0, #0
beq _08048030
b _08048138
_08048030:
bl sub_08079F8C
cmp r0, #0
bne _0804803A
b _08048138
_0804803A:
adds r1, r4, #0
adds r1, #0x7c
ldrb r3, [r1]
movs r0, #1
ands r0, r3
adds r5, r1, #0
cmp r0, #0
beq _080480BA
ldrb r0, [r4, #0x19]
lsrs r0, r0, #6
cmp r0, #3
bne _080480B0
movs r7, #0x2e
ldrsh r2, [r6, r7]
ldr r1, _080480A8 @ =gRoomControls
ldrh r0, [r1, #6]
subs r2, r2, r0
asrs r2, r2, #3
movs r7, #0x32
ldrsh r0, [r6, r7]
ldrh r1, [r1, #8]
subs r0, r0, r1
asrs r0, r0, #3
ldr r1, _080480AC @ =gUnk_02019EE0
lsls r0, r0, #7
adds r0, r0, r2
lsls r0, r0, #1
adds r0, r0, r1
ldrh r0, [r0]
cmp r0, #0
beq _080480B0
movs r0, #2
ands r0, r3
cmp r0, #0
bne _08048086
movs r0, #0x80
orrs r0, r3
strb r0, [r5]
_08048086:
ldrb r1, [r5]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _08048138
adds r0, r4, #0
adds r0, #0x84
ldrh r0, [r0]
strh r0, [r6, #0x2e]
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
strh r0, [r6, #0x32]
b _08048138
.align 2, 0
_080480A4: .4byte gLinkEntity
_080480A8: .4byte gRoomControls
_080480AC: .4byte gUnk_02019EE0
_080480B0:
ldrb r1, [r5]
movs r0, #0x7f
ands r0, r1
strb r0, [r5]
b _08048138
_080480BA:
ldrb r0, [r4, #0x19]
lsrs r0, r0, #6
cmp r0, #3
beq _08048124
movs r0, #0x2e
ldrsh r1, [r4, r0]
movs r3, #0x32
ldrsh r2, [r4, r3]
adds r0, r6, #0
movs r3, #0x24
bl sub_0806FCB8
cmp r0, #0
beq _08048124
ldrb r1, [r5]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08048124
movs r7, #0x2e
ldrsh r0, [r6, r7]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
movs r3, #0x32
ldrsh r1, [r6, r3]
movs r7, #0x32
ldrsh r2, [r4, r7]
subs r1, r1, r2
bl sub_080045DA
ldr r3, _0804812C @ =gUnk_080C9160
lsls r1, r0, #1
adds r1, r1, r3
movs r2, #0
ldrsh r1, [r1, r2]
lsls r2, r1, #3
adds r2, r2, r1
lsls r2, r2, #0xa
ldr r1, [r4, #0x2c]
adds r1, r1, r2
str r1, [r6, #0x2c]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
movs r3, #0
ldrsh r0, [r0, r3]
lsls r1, r0, #3
adds r1, r1, r0
lsls r1, r1, #0xa
ldr r0, [r4, #0x30]
subs r0, r0, r1
str r0, [r6, #0x30]
_08048124:
movs r0, #0
strb r0, [r5]
b _08048138
.align 2, 0
_0804812C: .4byte gUnk_080C9160
_08048130:
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
_08048138:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0804813C
sub_0804813C: @ 0x0804813C
push {lr}
bl Random
adds r2, r0, #0
movs r0, #7
ands r0, r2
lsrs r2, r2, #8
movs r1, #3
ands r2, r1
movs r1, #1
bl sub_080A1ED0
pop {pc}
.align 2, 0
thumb_func_start sub_08048158
sub_08048158: @ 0x08048158
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r6, _08048174 @ =gUnk_080D1C44
bl Random
lsls r4, r5, #1
adds r4, r4, r5
movs r1, #3
bl __modsi3
adds r4, r4, r0
adds r4, r4, r6
ldrb r0, [r4]
pop {r4, r5, r6, pc}
.align 2, 0
_08048174: .4byte gUnk_080D1C44
thumb_func_start sub_08048178
sub_08048178: @ 0x08048178
push {r4, lr}
adds r4, r0, #0
adds r2, r1, #0
ldr r0, [r4, #0x64]
ldr r0, [r0, #4]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #6
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08048198
lsls r1, r2, #1
ldr r0, _08048194 @ =gUnk_080D1C60
b _0804819C
.align 2, 0
_08048194: .4byte gUnk_080D1C60
_08048198:
lsls r1, r2, #1
ldr r0, _080481B8 @ =gUnk_080D1C50
_0804819C:
adds r3, r1, r0
ldr r2, _080481BC @ =gRoomControls
ldrh r0, [r2, #6]
ldrh r1, [r3]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x80
strh r0, [r1]
ldrh r0, [r2, #8]
ldrh r3, [r3, #2]
adds r0, r0, r3
adds r1, #2
strh r0, [r1]
pop {r4, pc}
.align 2, 0
_080481B8: .4byte gUnk_080D1C50
_080481BC: .4byte gRoomControls
thumb_func_start sub_080481C0
sub_080481C0: @ 0x080481C0
push {lr}
ldr r1, _080481CC @ =gUnk_080D1CC8
bl sub_0800129E
pop {pc}
.align 2, 0
_080481CC: .4byte gUnk_080D1CC8
thumb_func_start sub_080481D0
sub_080481D0: @ 0x080481D0
push {lr}
ldr r2, _080481E4 @ =gUnk_080D1CE0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080481E4: .4byte gUnk_080D1CE0
thumb_func_start sub_080481E8
sub_080481E8: @ 0x080481E8
push {lr}
adds r2, r0, #0
adds r0, #0x46
ldrh r0, [r0]
cmp r0, #0
beq _08048210
movs r0, #2
strb r0, [r2, #0xc]
ldrb r1, [r2, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r2, #0x10]
adds r3, r2, #0
adds r3, #0x29
ldrb r0, [r3]
movs r1, #7
orrs r0, r1
strb r0, [r3]
movs r0, #3
b _08048212
_08048210:
movs r0, #2
_08048212:
strb r0, [r2, #0xe]
ldrb r1, [r2, #0xe]
adds r0, r2, #0
bl sub_08004260
pop {pc}
.align 2, 0
thumb_func_start nullsub_26
nullsub_26: @ 0x08048220
bx lr
.align 2, 0
thumb_func_start sub_08048224
sub_08048224: @ 0x08048224
push {r4, lr}
adds r4, r0, #0
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #8
rsbs r1, r1, #0
ands r1, r0
movs r0, #4
orrs r1, r0
strb r1, [r2]
movs r0, #0x72
bl sub_0807CBD0
adds r1, r0, #0
cmp r1, #0
bne _0804824E
movs r0, #1
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
b _0804825E
_0804824E:
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
movs r0, #1
strb r0, [r4, #0xe]
_0804825E:
ldrb r1, [r4, #0xe]
adds r0, r4, #0
bl sub_08004260
pop {r4, pc}
thumb_func_start sub_08048268
sub_08048268: @ 0x08048268
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _08048292
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048292
movs r0, #0
strb r0, [r4, #0xe]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
_08048292:
pop {r4, pc}
thumb_func_start sub_08048294
sub_08048294: @ 0x08048294
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080482BC
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x72
bl sub_0807CCB4
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_080482BC:
pop {r4, pc}
.align 2, 0
thumb_func_start nullsub_27
nullsub_27: @ 0x080482C0
bx lr
.align 2, 0
thumb_func_start sub_080482C4
sub_080482C4: @ 0x080482C4
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _080482D4
bl sub_0805E780
_080482D4:
ldr r0, _080482E8 @ =gUnk_080D1D48
ldrb r1, [r4, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
pop {r4, pc}
.align 2, 0
_080482E8: .4byte gUnk_080D1D48
thumb_func_start sub_080482EC
sub_080482EC: @ 0x080482EC
push {r4, lr}
adds r4, r0, #0
ldr r0, _08048310 @ =gUnk_030010A0
adds r0, #0x38
ldrb r1, [r0]
movs r2, #1
adds r0, r2, #0
ands r0, r1
cmp r0, #0
beq _08048314
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
b _08048326
.align 2, 0
_08048310: .4byte gUnk_030010A0
_08048314:
strb r2, [r4, #0xc]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
movs r0, #0xb3
lsls r0, r0, #1
bl PlaySFX
_08048326:
adds r0, r4, #0
bl sub_080485D8
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048330
sub_08048330: @ 0x08048330
push {r4, lr}
adds r4, r0, #0
bl sub_080485D8
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048358
movs r0, #2
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #1
bl sub_08004260
_08048358:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804835C
sub_0804835C: @ 0x0804835C
push {r4, lr}
adds r4, r0, #0
bl sub_080485D8
ldr r0, _08048384 @ =gUnk_030010A0
adds r0, #0x39
ldrb r1, [r0]
movs r2, #3
adds r0, r2, #0
ands r0, r1
cmp r0, #0
bne _08048382
strb r2, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r1, r0
strb r1, [r4, #0x10]
movs r0, #0x80
strh r0, [r4, #0x24]
_08048382:
pop {r4, pc}
.align 2, 0
_08048384: .4byte gUnk_030010A0
thumb_func_start sub_08048388
sub_08048388: @ 0x08048388
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r2, [r5, #0x50]
adds r0, r2, #0
adds r0, #0x79
ldrb r0, [r0]
cmp r0, #0
beq _080483A0
adds r0, r5, #0
bl sub_080485D8
b _080483F2
_080483A0:
ldrb r1, [r5, #0xa]
lsls r1, r1, #1
ldr r0, _080483F4 @ =gUnk_080D1D98
adds r1, r1, r0
movs r0, #0x2e
ldrsh r4, [r2, r0]
movs r0, #0
ldrsb r0, [r1, r0]
adds r4, r4, r0
movs r0, #0x32
ldrsh r2, [r2, r0]
movs r0, #1
ldrsb r0, [r1, r0]
adds r6, r2, r0
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r2, #0x32
ldrsh r1, [r5, r2]
adds r2, r4, #0
adds r3, r6, #0
bl sub_080045D4
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F69C
ldr r0, [r5, #0x50]
ldrh r0, [r0, #0x36]
strh r0, [r5, #0x36]
movs r1, #0x2e
ldrsh r0, [r5, r1]
cmp r0, r4
bne _080483F2
movs r2, #0x32
ldrsh r0, [r5, r2]
cmp r0, r6
bne _080483F2
movs r0, #4
strb r0, [r5, #0xc]
movs r0, #0x3c
strb r0, [r5, #0xe]
_080483F2:
pop {r4, r5, r6, pc}
.align 2, 0
_080483F4: .4byte gUnk_080D1D98
thumb_func_start sub_080483F8
sub_080483F8: @ 0x080483F8
push {r4, r5, lr}
adds r4, r0, #0
bl sub_080485FC
ldrb r0, [r4, #0xe]
adds r5, r0, #0
cmp r5, #0
beq _0804841C
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08048436
adds r0, r4, #0
movs r1, #3
bl sub_08004260
b _08048436
_0804841C:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048436
movs r0, #5
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
_08048436:
pop {r4, r5, pc}
thumb_func_start sub_08048438
sub_08048438: @ 0x08048438
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0804846A
movs r0, #6
strb r0, [r4, #0xc]
ldr r0, [r4, #0x50]
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0x14
bls _08048454
movs r0, #0x78
b _08048456
_08048454:
movs r0, #0x3c
_08048456:
strb r0, [r4, #0xe]
movs r0, #0
str r0, [r4, #0x54]
adds r0, r4, #0
movs r1, #5
bl sub_08004260
ldr r0, _08048474 @ =0x0000019B
bl PlaySFX
_0804846A:
adds r0, r4, #0
bl sub_080485FC
pop {r4, pc}
.align 2, 0
_08048474: .4byte 0x0000019B
thumb_func_start sub_08048478
sub_08048478: @ 0x08048478
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xe]
adds r2, r0, #0
cmp r2, #0
beq _080484A2
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080484E6
adds r0, r4, #0
movs r1, #6
bl sub_08004260
b _080484E6
_080484A2:
adds r3, r4, #0
adds r3, #0x5a
ldrb r1, [r3]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080484BC
movs r0, #7
strb r0, [r4, #0xc]
movs r0, #0x78
strb r0, [r4, #0xe]
strb r2, [r4, #0xf]
b _080484E6
_080484BC:
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080484E6
movs r0, #0xfe
ands r0, r1
strb r0, [r3]
movs r0, #0x24
bl sub_080A7EE0
adds r1, r0, #0
cmp r1, #0
beq _080484E6
str r4, [r1, #0x50]
str r1, [r4, #0x54]
movs r3, #0xc0
lsls r3, r3, #0xc
adds r0, r4, #0
movs r2, #0
bl PositionRelative
_080484E6:
pop {r4, pc}
thumb_func_start sub_080484E8
sub_080484E8: @ 0x080484E8
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _08048528
movs r0, #8
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0x1f
movs r2, #0x40
bl CreateFX
ldr r2, [r4, #0x50]
adds r2, #0x7b
movs r0, #0x10
b _08048542
_08048528:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _0804854C
movs r0, #5
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldr r2, [r4, #0x50]
adds r2, #0x7b
movs r0, #1
_08048542:
ldrb r4, [r4, #0xa]
lsls r0, r4
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
_0804854C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048550
sub_08048550: @ 0x08048550
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #0xb
bne _08048562
movs r0, #0x3c
strb r0, [r4, #0xe]
b _0804859E
_08048562:
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804859E
movs r0, #9
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
adds r0, r4, #0
movs r1, #0
bl sub_08004260
adds r0, r4, #0
bl sub_080485FC
movs r0, #0xb3
lsls r0, r0, #1
bl PlaySFX
_0804859E:
pop {r4, pc}
thumb_func_start sub_080485A0
sub_080485A0: @ 0x080485A0
push {r4, lr}
adds r4, r0, #0
bl sub_080485FC
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _080485D6
movs r0, #4
strb r0, [r4, #0xc]
movs r1, #1
strb r1, [r4, #0xe]
ldr r2, [r4, #0x50]
adds r2, #0x7b
ldrb r3, [r2]
movs r0, #0xf
ands r0, r3
ldrb r4, [r4, #0xa]
lsls r1, r4
orrs r0, r1
strb r0, [r2]
_080485D6:
pop {r4, pc}
thumb_func_start sub_080485D8
sub_080485D8: @ 0x080485D8
push {lr}
adds r1, r0, #0
ldrb r3, [r1, #0xa]
lsls r3, r3, #1
ldr r0, _080485F8 @ =gUnk_080D1D70
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
bl sub_0806FA90
pop {pc}
.align 2, 0
_080485F8: .4byte gUnk_080D1D70
thumb_func_start sub_080485FC
sub_080485FC: @ 0x080485FC
push {r4, lr}
adds r4, r0, #0
ldrb r1, [r4, #0xa]
lsls r1, r1, #1
ldr r0, _08048638 @ =gUnk_080D1D98
adds r1, r1, r0
ldr r0, [r4, #0x50]
movs r2, #0
ldrsb r2, [r1, r2]
movs r3, #1
ldrsb r3, [r1, r3]
adds r1, r4, #0
bl sub_0806FA90
ldr r3, _0804863C @ =gUnk_080D1D78
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
ldr r0, [r4, #0x50]
adds r0, #0x78
ldrb r0, [r0]
lsrs r0, r0, #4
movs r2, #7
ands r0, r2
adds r1, r1, r0
adds r1, r1, r3
movs r0, #0
ldrsb r0, [r1, r0]
strh r0, [r4, #0x36]
pop {r4, pc}
.align 2, 0
_08048638: .4byte gUnk_080D1D98
_0804863C: .4byte gUnk_080D1D78
thumb_func_start sub_08048640
sub_08048640: @ 0x08048640
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, _0804867C @ =gUnk_030010A0
adds r0, #0x39
ldrb r2, [r0]
cmp r2, #0
bne _08048664
ldrb r1, [r5, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r5, #0x10]
adds r0, r5, #0
adds r0, #0x45
strb r2, [r0]
adds r1, r5, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
_08048664:
ldr r4, _08048680 @ =gUnk_080D1E6C
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_0804867C: .4byte gUnk_030010A0
_08048680: .4byte gUnk_080D1E6C
thumb_func_start sub_08048684
sub_08048684: @ 0x08048684
push {lr}
ldr r2, _08048698 @ =gUnk_080D1E84
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08048698: .4byte gUnk_080D1E84
thumb_func_start sub_0804869C
sub_0804869C: @ 0x0804869C
push {lr}
ldr r1, _080486A8 @ =gUnk_080D1E6C
bl sub_0804AA30
pop {pc}
.align 2, 0
_080486A8: .4byte gUnk_080D1E6C
thumb_func_start sub_080486AC
sub_080486AC: @ 0x080486AC
push {r4, lr}
adds r4, r0, #0
bl sub_0806F520
cmp r0, #0
beq _080486C8
ldr r0, _080486CC @ =gUnk_080D1E94
ldrb r1, [r4, #0xd]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r4, #0
bl _call_via_r1
_080486C8:
pop {r4, pc}
.align 2, 0
_080486CC: .4byte gUnk_080D1E94
thumb_func_start sub_080486D0
sub_080486D0: @ 0x080486D0
movs r1, #2
strb r1, [r0, #0xd]
bx lr
.align 2, 0
thumb_func_start sub_080486D8
sub_080486D8: @ 0x080486D8
push {lr}
bl sub_0806F4E8
pop {pc}
thumb_func_start sub_080486E0
sub_080486E0: @ 0x080486E0
push {r4, lr}
adds r4, r0, #0
bl sub_0806F3E4
cmp r0, #0
beq _080486F2
adds r0, r4, #0
bl sub_0804A7D4
_080486F2:
pop {r4, pc}
thumb_func_start sub_080486F4
sub_080486F4: @ 0x080486F4
push {r4, r5, lr}
adds r4, r0, #0
movs r5, #1
strb r5, [r4, #0x1c]
ldrb r0, [r4, #0x1b]
movs r1, #0xc0
orrs r0, r1
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
orrs r0, r1
strb r0, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4, #0x15]
lsrs r0, r0, #2
strb r0, [r4, #0x14]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0804876C
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
strb r5, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
bl Random
movs r1, #0xb
bl __modsi3
ldrb r1, [r4, #0x15]
adds r1, r1, r0
subs r1, #5
movs r2, #0x1f
ands r1, r2
strb r1, [r4, #0x15]
lsls r0, r0, #1
ldr r2, _08048768 @ =gUnk_080D1EA0
adds r1, r0, r2
ldrb r1, [r1]
strb r1, [r4, #0xe]
adds r0, #1
adds r0, r0, r2
ldrb r0, [r0]
adds r1, r4, #0
adds r1, #0x7b
strb r0, [r1]
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
b _0804877A
.align 2, 0
_08048768: .4byte gUnk_080D1EA0
_0804876C:
movs r0, #2
strb r0, [r4, #0xc]
strb r5, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
strb r0, [r4, #0x18]
_0804877A:
pop {r4, r5, pc}
thumb_func_start sub_0804877C
sub_0804877C: @ 0x0804877C
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080487AA
subs r0, #1
strb r0, [r4, #0xe]
movs r1, #0xff
ands r0, r1
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _080487AA
adds r0, r4, #0
adds r0, #0x7b
ldrb r0, [r0]
ldrb r1, [r4, #0x15]
adds r0, r0, r1
movs r1, #0x1f
ands r0, r1
strb r0, [r4, #0x15]
_080487AA:
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _080487D4
cmp r0, #1
bgt _080487BC
cmp r0, #0
beq _080487C2
b _08048804
_080487BC:
cmp r0, #2
beq _080487EC
b _08048804
_080487C2:
movs r2, #0x32
ldrsh r1, [r4, r2]
ldr r0, _080487D0 @ =gRoomControls
movs r2, #0xc
ldrsh r0, [r0, r2]
b _0804880E
.align 2, 0
_080487D0: .4byte gRoomControls
_080487D4:
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r0, _080487E8 @ =gRoomControls
movs r2, #0xa
ldrsh r0, [r0, r2]
movs r2, #0x84
lsls r2, r2, #1
adds r0, r0, r2
b _080487F8
.align 2, 0
_080487E8: .4byte gRoomControls
_080487EC:
movs r0, #0x32
ldrsh r1, [r4, r0]
ldr r0, _08048800 @ =gRoomControls
movs r2, #0xc
ldrsh r0, [r0, r2]
adds r0, #0xb8
_080487F8:
cmp r1, r0
blt _08048824
b _08048814
.align 2, 0
_08048800: .4byte gRoomControls
_08048804:
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r0, _08048828 @ =gRoomControls
movs r2, #0xa
ldrsh r0, [r0, r2]
_0804880E:
subs r0, #0x18
cmp r1, r0
bgt _08048824
_08048814:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x5a
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x18]
subs r0, #0x5e
ands r0, r1
strb r0, [r4, #0x18]
_08048824:
pop {r4, pc}
.align 2, 0
_08048828: .4byte gRoomControls
thumb_func_start sub_0804882C
sub_0804882C: @ 0x0804882C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080488FA
movs r0, #3
strb r0, [r4, #0xc]
ldrb r0, [r4, #0x10]
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
bl Random
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
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, #0x78
ldrh r0, [r0]
strh r0, [r4, #0x24]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r0, r4, #0
adds r0, #0x7a
ldrb r0, [r0]
strb r0, [r4, #0x15]
lsls r0, r0, #0x18
lsrs r0, r0, #0x1a
strb r0, [r4, #0x14]
ldrb r1, [r4, #0x14]
adds r0, r4, #0
bl sub_08004260
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _080488D0
cmp r0, #1
bgt _080488AA
cmp r0, #0
beq _080488AE
b _080488D0
_080488AA:
cmp r0, #2
bne _080488D0
_080488AE:
ldr r1, _080488C8 @ =gLinkEntity
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
ldrh r1, [r1, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldr r1, _080488CC @ =gRoomControls
adds r0, r4, #0
adds r0, #0x76
ldrh r0, [r0]
ldrh r1, [r1, #0xc]
b _080488E8
.align 2, 0
_080488C8: .4byte gLinkEntity
_080488CC: .4byte gRoomControls
_080488D0:
ldr r1, _080488FC @ =gRoomControls
adds r0, r4, #0
adds r0, #0x74
ldrh r0, [r0]
ldrh r1, [r1, #0xa]
adds r0, r0, r1
strh r0, [r4, #0x2e]
ldr r1, _08048900 @ =gLinkEntity
adds r0, r4, #0
adds r0, #0x76
ldrh r0, [r0]
ldrh r1, [r1, #0x32]
_080488E8:
adds r0, r0, r1
strh r0, [r4, #0x32]
ldrb r0, [r4, #0xb]
cmp r0, #0
bne _080488FA
movs r0, #0xcc
lsls r0, r0, #1
bl PlaySFX
_080488FA:
pop {r4, pc}
.align 2, 0
_080488FC: .4byte gRoomControls
_08048900: .4byte gLinkEntity
thumb_func_start sub_08048904
sub_08048904: @ 0x08048904
push {r4, lr}
adds r4, r0, #0
bl sub_0806F69C
adds r0, r4, #0
bl sub_08004274
ldrb r0, [r4, #0x14]
lsrs r0, r0, #1
cmp r0, #1
beq _0804893C
cmp r0, #1
bgt _08048924
cmp r0, #0
beq _0804892A
b _0804896C
_08048924:
cmp r0, #2
beq _08048954
b _0804896C
_0804892A:
movs r0, #0x32
ldrsh r1, [r4, r0]
ldr r0, _08048938 @ =gRoomControls
movs r2, #0xc
ldrsh r0, [r0, r2]
b _08048976
.align 2, 0
_08048938: .4byte gRoomControls
_0804893C:
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r0, _08048950 @ =gRoomControls
movs r2, #0xa
ldrsh r0, [r0, r2]
movs r2, #0x8c
lsls r2, r2, #1
adds r0, r0, r2
b _08048960
.align 2, 0
_08048950: .4byte gRoomControls
_08048954:
movs r0, #0x32
ldrsh r1, [r4, r0]
ldr r0, _08048968 @ =gRoomControls
movs r2, #0xc
ldrsh r0, [r0, r2]
adds r0, #0xc8
_08048960:
cmp r1, r0
blt _08048980
b _0804897C
.align 2, 0
_08048968: .4byte gRoomControls
_0804896C:
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r0, _08048984 @ =gRoomControls
movs r2, #0xa
ldrsh r0, [r0, r2]
_08048976:
subs r0, #0x28
cmp r1, r0
bgt _08048980
_0804897C:
bl sub_0805E780
_08048980:
pop {r4, pc}
.align 2, 0
_08048984: .4byte gRoomControls
thumb_func_start sub_08048988
sub_08048988: @ 0x08048988
push {r4, r5, lr}
adds r5, r0, #0
ldr r0, [r5, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08048998
bl sub_0805E780
_08048998:
ldr r4, _080489B0 @ =gUnk_080D1F64
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
pop {r4, r5, pc}
.align 2, 0
_080489B0: .4byte gUnk_080D1F64
thumb_func_start sub_080489B4
sub_080489B4: @ 0x080489B4
push {lr}
ldr r2, _080489C8 @ =gUnk_080D1F7C
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080489C8: .4byte gUnk_080D1F7C
thumb_func_start sub_080489CC
sub_080489CC: @ 0x080489CC
push {r4, r5, r6, lr}
mov ip, r0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0xff
bne _080489DA
b _08048AD8
_080489DA:
mov r0, ip
ldr r4, [r0, #0x50]
adds r0, r4, #0
adds r0, #0x78
ldrb r0, [r0]
mov r2, ip
ldrb r1, [r2, #0xa]
asrs r0, r1
movs r3, #1
ands r0, r3
cmp r0, #0
beq _08048AD8
adds r2, r4, #0
adds r2, #0x7c
adds r0, r3, #0
lsls r0, r1
ldrb r1, [r2]
orrs r0, r1
strb r0, [r2]
mov r0, ip
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
subs r0, #4
cmp r0, #0x16
bhi _08048AD0
lsls r0, r0, #2
ldr r1, _08048A1C @ =_08048A20
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08048A1C: .4byte _08048A20
_08048A20: @ jump table
.4byte _08048A7C @ case 0
.4byte _08048A7C @ case 1
.4byte _08048A7C @ case 2
.4byte _08048AD0 @ case 3
.4byte _08048A7C @ case 4
.4byte _08048A7C @ case 5
.4byte _08048A7C @ case 6
.4byte _08048A7C @ case 7
.4byte _08048A7C @ case 8
.4byte _08048A7C @ case 9
.4byte _08048AD0 @ case 10
.4byte _08048AD0 @ case 11
.4byte _08048A7C @ case 12
.4byte _08048A7C @ case 13
.4byte _08048A7C @ case 14
.4byte _08048AD0 @ case 15
.4byte _08048AD0 @ case 16
.4byte _08048AD0 @ case 17
.4byte _08048AD0 @ case 18
.4byte _08048AD0 @ case 19
.4byte _08048A7C @ case 20
.4byte _08048A7C @ case 21
.4byte _08048A7C @ case 22
_08048A7C:
ldr r3, [r4, #0x64]
mov r5, ip
ldrb r0, [r5, #0xa]
lsls r0, r0, #2
adds r1, r3, #0
adds r1, #0x18
adds r1, r1, r0
ldr r0, [r5, #0x4c]
str r0, [r1]
ldr r2, _08048ACC @ =gLinkEntity
movs r6, #0x2e
ldrsh r0, [r2, r6]
movs r6, #0x2e
ldrsh r1, [r5, r6]
adds r0, r0, r1
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r3, #0x38]
ldr r3, [r4, #0x64]
movs r1, #0x32
ldrsh r0, [r2, r1]
movs r2, #0x32
ldrsh r1, [r5, r2]
adds r0, r0, r1
lsrs r1, r0, #0x1f
adds r0, r0, r1
asrs r0, r0, #1
strh r0, [r3, #0x3a]
ldr r2, [r4, #0x64]
mov r3, ip
adds r3, #0x3e
ldrb r0, [r3]
movs r1, #0x10
eors r0, r1
strb r0, [r3]
adds r2, #0x3c
strb r0, [r2]
b _08048AD8
.align 2, 0
_08048ACC: .4byte gLinkEntity
_08048AD0:
ldr r0, [r4, #0x64]
adds r0, #0x3c
movs r1, #0xff
strb r1, [r0]
_08048AD8:
mov r1, ip
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
ldr r1, _08048AEC @ =gUnk_080D1F64
mov r0, ip
bl sub_0804AA30
pop {r4, r5, r6, pc}
.align 2, 0
_08048AEC: .4byte gUnk_080D1F64
thumb_func_start sub_08048AF0
sub_08048AF0: @ 0x08048AF0
push {lr}
movs r1, #1
strb r1, [r0, #0xc]
movs r1, #0xff
strb r1, [r0, #0x14]
ldrb r3, [r0, #0x1b]
movs r2, #0x3f
adds r1, r2, #0
ands r1, r3
movs r3, #0x80
orrs r1, r3
strb r1, [r0, #0x1b]
ldrb r1, [r0, #0x19]
ands r2, r1
orrs r2, r3
strb r2, [r0, #0x19]
adds r3, r0, #0
adds r3, #0x29
ldrb r1, [r3]
movs r2, #7
orrs r1, r2
strb r1, [r3]
adds r2, r0, #0
adds r2, #0x38
movs r1, #2
strb r1, [r2]
bl sub_08048D20
pop {pc}
.align 2, 0
thumb_func_start sub_08048B2C
sub_08048B2C: @ 0x08048B2C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_08048D20
ldr r5, [r4, #0x50]
adds r0, r5, #0
bl sub_08048D70
cmp r0, #0
beq _08048B62
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
cmp r0, #0
bne _08048B52
adds r0, r4, #0
movs r1, #2
movs r2, #0x40
bl CreateFX
_08048B52:
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
b _08048B6C
_08048B62:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_08048B6C:
adds r0, r5, #0
adds r0, #0x78
ldrb r0, [r0]
ldrb r1, [r4, #0xa]
asrs r0, r1
movs r1, #1
ands r0, r1
cmp r0, #0
beq _08048B82
movs r0, #2
strb r0, [r4, #0xc]
_08048B82:
pop {r4, r5, pc}
thumb_func_start sub_08048B84
sub_08048B84: @ 0x08048B84
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048BAE
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x1e
strb r0, [r1]
_08048BAE:
pop {r4, pc}
thumb_func_start sub_08048BB0
sub_08048BB0: @ 0x08048BB0
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r2, [r4, #0x50]
adds r0, r2, #0
adds r0, #0x78
ldrb r3, [r0]
ldrb r1, [r4, #0xa]
adds r0, r3, #0
asrs r0, r1
movs r6, #1
ands r0, r6
cmp r0, #0
bne _08048C34
adds r0, r2, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
beq _08048BFC
movs r0, #4
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldr r1, _08048BF8 @ =gUnk_080D2030
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
ldrb r2, [r4, #0xa]
adds r0, r0, r2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
b _08048CEA
.align 2, 0
_08048BF8: .4byte gUnk_080D2030
_08048BFC:
strb r6, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldr r1, _08048C30 @ =gUnk_080D2010
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
ldrb r2, [r4, #0xa]
adds r0, r0, r2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
movs r1, #2
movs r2, #0x40
bl CreateFX
b _08048CEA
.align 2, 0
_08048C30: .4byte gUnk_080D2010
_08048C34:
adds r5, r2, #0
adds r5, #0x80
ldrb r0, [r5]
asrs r0, r1
ands r0, r6
cmp r0, #0
beq _08048CBC
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0x13
bhi _08048C6C
adds r1, r4, #0
adds r1, #0x3d
movs r0, #0xf4
strb r0, [r1]
adds r1, #2
movs r0, #0x89
strb r0, [r1]
ldrb r1, [r2, #0x14]
lsrs r1, r1, #6
adds r1, #0x14
adds r0, r4, #0
bl sub_08004260
ldr r0, _08048CB4 @ =0x00000119
bl PlaySFX
_08048C6C:
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048CEA
adds r1, r4, #0
adds r1, #0x3f
movs r0, #0x1e
strb r0, [r1]
ldr r1, _08048CB8 @ =gUnk_080D2010
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
ldrb r2, [r4, #0xa]
adds r0, r0, r2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
adds r0, r4, #0
movs r1, #7
bl sub_08004276
adds r1, r6, #0
ldrb r4, [r4, #0xa]
lsls r1, r4
ldrb r0, [r5]
bics r0, r1
strb r0, [r5]
b _08048CEA
.align 2, 0
_08048CB4: .4byte 0x00000119
_08048CB8: .4byte gUnk_080D2010
_08048CBC:
cmp r3, #0xff
bne _08048CEA
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
subs r0, #0x10
cmp r0, #3
bls _08048CE4
ldrb r1, [r4, #0x14]
adds r1, #0x10
adds r0, r4, #0
bl sub_08004260
bl Random
movs r1, #0x1c
ands r1, r0
adds r0, r4, #0
bl sub_08004276
_08048CE4:
adds r0, r4, #0
bl sub_08004274
_08048CEA:
pop {r4, r5, r6, pc}
thumb_func_start sub_08048CEC
sub_08048CEC: @ 0x08048CEC
push {r4, lr}
adds r4, r0, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048D1A
movs r0, #1
strb r0, [r4, #0xc]
ldr r1, _08048D1C @ =gUnk_080D2010
ldrb r0, [r4, #0x14]
lsls r0, r0, #3
ldrb r2, [r4, #0xa]
adds r0, r0, r2
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
_08048D1A:
pop {r4, pc}
.align 2, 0
_08048D1C: .4byte gUnk_080D2010
thumb_func_start sub_08048D20
sub_08048D20: @ 0x08048D20
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #6
ldrb r1, [r4, #0x14]
cmp r0, r1
beq _08048D60
strb r0, [r4, #0x14]
ldrb r1, [r4, #0xa]
lsls r3, r0, #3
adds r1, r1, r3
lsls r1, r1, #2
ldr r0, _08048D64 @ =gUnk_080D1F90
adds r1, r1, r0
ldr r2, _08048D68 @ =gRoomControls
ldrh r0, [r2, #6]
ldrh r5, [r1]
adds r0, r0, r5
strh r0, [r4, #0x2e]
ldrh r0, [r2, #8]
ldrh r1, [r1, #2]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldr r1, _08048D6C @ =gUnk_080D2010
ldrb r0, [r4, #0xa]
adds r0, r0, r3
adds r0, r0, r1
ldrb r1, [r0]
adds r0, r4, #0
bl sub_08004260
_08048D60:
pop {r4, r5, pc}
.align 2, 0
_08048D64: .4byte gUnk_080D1F90
_08048D68: .4byte gRoomControls
_08048D6C: .4byte gUnk_080D2010
thumb_func_start sub_08048D70
sub_08048D70: @ 0x08048D70
push {lr}
adds r1, r0, #0
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08048D8E
ldr r1, [r1, #0x64]
ldr r0, [r1, #8]
cmp r0, #0
bne _08048D86
ldr r0, [r1, #0xc]
_08048D86:
adds r0, #0x45
ldrb r0, [r0]
cmp r0, #0
bne _08048D92
_08048D8E:
movs r0, #1
b _08048D94
_08048D92:
movs r0, #0
_08048D94:
pop {pc}
.align 2, 0
thumb_func_start sub_08048D98
sub_08048D98: @ 0x08048D98
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r6, [r5, #0x50]
ldr r0, [r6, #4]
cmp r0, #0
bne _08048DA8
bl sub_0805E780
_08048DA8:
ldr r4, _08048E00 @ =gUnk_080D22D8
adds r0, r5, #0
bl sub_0800279C
lsls r0, r0, #2
adds r0, r0, r4
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
ldrb r2, [r6, #0x1b]
lsrs r2, r2, #6
lsls r2, r2, #6
ldrb r3, [r5, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r3
orrs r0, r2
strb r0, [r5, #0x1b]
ldrb r0, [r6, #0x19]
lsrs r0, r0, #6
lsls r0, r0, #6
ldrb r2, [r5, #0x19]
ands r1, r2
orrs r1, r0
strb r1, [r5, #0x19]
adds r0, r6, #0
adds r0, #0x29
ldrb r1, [r0]
lsls r1, r1, #0x1d
lsrs r1, r1, #0x1d
subs r1, #1
adds r3, r5, #0
adds r3, #0x29
movs r0, #7
ands r1, r0
ldrb r2, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
pop {r4, r5, r6, pc}
.align 2, 0
_08048E00: .4byte gUnk_080D22D8
thumb_func_start sub_08048E04
sub_08048E04: @ 0x08048E04
push {lr}
ldr r2, _08048E18 @ =gUnk_080D22F0
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08048E18: .4byte gUnk_080D22F0
thumb_func_start sub_08048E1C
sub_08048E1C: @ 0x08048E1C
push {r4, r5, lr}
adds r5, r0, #0
adds r0, #0x45
ldrb r1, [r0]
movs r0, #0xff
subs r0, r0, r1
cmp r0, #0
beq _08048E96
ldr r4, [r5, #0x50]
adds r1, r4, #0
adds r1, #0x45
ldrb r2, [r1]
cmp r2, r0
bls _08048E48
subs r0, r2, r0
strb r0, [r1]
ldr r0, _08048E44 @ =0x00000127
bl PlaySFX
b _08048E5C
.align 2, 0
_08048E44: .4byte 0x00000127
_08048E48:
movs r0, #0
strb r0, [r1]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
movs r0, #0x28
movs r1, #0
bl sub_08080964
_08048E5C:
adds r2, r5, #0
adds r2, #0x3d
ldrb r1, [r2]
movs r0, #0
ldrsb r0, [r2, r0]
cmp r0, #0
ble _08048E8E
adds r0, r4, #0
adds r0, #0x3d
strb r1, [r0]
ldr r4, [r4, #0x54]
ldrb r0, [r2]
adds r1, r4, #0
adds r1, #0x3d
strb r0, [r1]
ldr r4, [r4, #0x54]
ldrb r0, [r2]
adds r1, r4, #0
adds r1, #0x3d
strb r0, [r1]
ldr r4, [r4, #0x54]
ldrb r1, [r2]
adds r0, r4, #0
adds r0, #0x3d
strb r1, [r0]
_08048E8E:
adds r1, r5, #0
adds r1, #0x45
movs r0, #0xff
strb r0, [r1]
_08048E96:
ldr r1, _08048EA0 @ =gUnk_080D22D8
adds r0, r5, #0
bl sub_0804AA30
pop {r4, r5, pc}
.align 2, 0
_08048EA0: .4byte gUnk_080D22D8
thumb_func_start sub_08048EA4
sub_08048EA4: @ 0x08048EA4
push {r4, lr}
adds r4, r0, #0
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, [r4, #0x50]
ldrb r1, [r0, #0x14]
movs r0, #0xe0
ands r0, r1
lsrs r0, r0, #3
ldrb r1, [r4, #0xa]
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x78
strb r0, [r1]
adds r0, r4, #0
bl sub_08048F50
adds r0, r4, #0
bl sub_08048F74
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048ED0
sub_08048ED0: @ 0x08048ED0
push {r4, lr}
adds r4, r0, #0
bl sub_08048F50
adds r0, r4, #0
bl sub_08004274
adds r0, r4, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048EFC
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
movs r0, #0x2d
strb r0, [r4, #0xe]
_08048EFC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08048F00
sub_08048F00: @ 0x08048F00
push {r4, lr}
adds r4, r0, #0
bl sub_08048F50
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08048F2E
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
adds r0, #0x58
ldrb r1, [r0]
adds r1, #4
adds r0, r4, #0
bl sub_08004260
_08048F2E:
pop {r4, pc}
thumb_func_start sub_08048F30
sub_08048F30: @ 0x08048F30
push {r4, lr}
adds r4, r0, #0
bl sub_08048F50
adds r0, r4, #0
bl sub_08004274
adds r4, #0x5a
ldrb r1, [r4]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _08048F4E
bl sub_0805E780
_08048F4E:
pop {r4, pc}
thumb_func_start sub_08048F50
sub_08048F50: @ 0x08048F50
push {lr}
adds r1, r0, #0
adds r0, #0x78
ldrb r3, [r0]
lsls r3, r3, #1
ldr r0, _08048F70 @ =gUnk_080D2300
adds r3, r3, r0
ldr r0, [r1, #0x50]
movs r2, #0
ldrsb r2, [r3, r2]
ldrb r3, [r3, #1]
lsls r3, r3, #0x18
asrs r3, r3, #0x18
bl sub_0806FA90
pop {pc}
.align 2, 0
_08048F70: .4byte gUnk_080D2300
thumb_func_start sub_08048F74
sub_08048F74: @ 0x08048F74
push {lr}
ldr r2, _08048F88 @ =gUnk_080D2348
adds r1, r0, #0
adds r1, #0x78
ldrb r1, [r1]
adds r1, r1, r2
ldrb r1, [r1]
bl sub_08004260
pop {pc}
.align 2, 0
_08048F88: .4byte gUnk_080D2348
thumb_func_start sub_08048F8C
sub_08048F8C: @ 0x08048F8C
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08048F9C
bl sub_0805E780
_08048F9C:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08048FD4
movs r0, #1
strb r0, [r4, #0xc]
ldrb r2, [r4, #0x1b]
movs r1, #0x3f
adds r0, r1, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r4, #0x1b]
ldrb r0, [r4, #0x19]
ands r1, r0
orrs r1, r2
strb r1, [r4, #0x19]
adds r2, r4, #0
adds r2, #0x29
ldrb r0, [r2]
movs r1, #7
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
movs r0, #0xff
strb r0, [r4, #0x14]
_08048FD4:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0x14]
lsrs r0, r0, #5
lsls r6, r0, #0x18
lsrs r5, r6, #0x18
ldrb r0, [r4, #0x14]
cmp r5, r0
beq _08049018
strb r5, [r4, #0x14]
ldr r3, _08049010 @ =gUnk_080D28CC
lsls r1, r5, #1
adds r1, r1, r3
ldr r2, _08049014 @ =gRoomControls
ldrh r0, [r2, #6]
ldrh r1, [r1]
adds r0, r0, r1
strh r0, [r4, #0x2e]
adds r1, r5, #1
lsls r1, r1, #1
adds r1, r1, r3
ldrh r0, [r2, #8]
ldrh r1, [r1]
adds r0, r0, r1
strh r0, [r4, #0x32]
lsrs r1, r6, #0x19
adds r0, r4, #0
bl sub_08004260
b _0804901E
.align 2, 0
_08049010: .4byte gUnk_080D28CC
_08049014: .4byte gRoomControls
_08049018:
adds r0, r4, #0
bl sub_08004274
_0804901E:
movs r0, #2
ands r0, r5
cmp r0, #0
beq _08049038
ldr r0, _08049034 @ =gLinkEntity
movs r2, #0x32
ldrsh r1, [r4, r2]
movs r2, #0x32
ldrsh r0, [r0, r2]
b _08049042
.align 2, 0
_08049034: .4byte gLinkEntity
_08049038:
ldr r0, _08049054 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r4, r2]
movs r2, #0x2e
ldrsh r0, [r0, r2]
_08049042:
cmp r1, r0
bge _08049048
adds r5, #1
_08049048:
ldr r0, _08049058 @ =gUnk_080D28AC
lsls r1, r5, #2
adds r1, r1, r0
ldr r0, [r1]
str r0, [r4, #0x48]
pop {r4, r5, r6, pc}
.align 2, 0
_08049054: .4byte gLinkEntity
_08049058: .4byte gUnk_080D28AC
thumb_func_start sub_0804905C
sub_0804905C: @ 0x0804905C
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
beq _0804907C
adds r0, r5, #0
adds r0, #0x7d
ldrb r1, [r0]
movs r0, #3
ands r1, r0
ldrb r2, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r5, #0x18]
_0804907C:
adds r1, r5, #0
adds r1, #0x45
ldrb r0, [r1]
adds r2, r0, #0
cmp r2, #0
bne _08049092
movs r0, #0xff
strb r0, [r1]
movs r0, #4
strb r0, [r5, #0xc]
strb r2, [r5, #0xd]
_08049092:
ldr r1, _080490F8 @ =gUnk_080D2974
ldrb r0, [r5, #0xc]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r5, #0
bl _call_via_r1
adds r4, r5, #0
adds r4, #0x78
ldrh r3, [r4]
adds r0, r5, #0
movs r1, #0xaa
movs r2, #0xaa
bl sub_0805EC9C
ldrh r0, [r4]
lsrs r0, r0, #8
rsbs r0, r0, #0
strb r0, [r5, #0x14]
adds r0, r5, #0
bl sub_080499F0
ldrb r0, [r5, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
adds r1, r5, #0
adds r1, #0x7d
strb r0, [r1]
ldrb r2, [r5, #0x18]
lsls r0, r2, #0x1e
lsrs r0, r0, #0x1e
cmp r0, #1
bne _080490F4
movs r1, #0x32
ldrsh r0, [r5, r1]
ldr r1, _080490FC @ =gRoomControls
movs r3, #0xc
ldrsh r1, [r1, r3]
subs r0, r0, r1
adds r0, #0x30
movs r1, #0x80
lsls r1, r1, #1
cmp r0, r1
bls _080490F4
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
strb r0, [r5, #0x18]
_080490F4:
pop {r4, r5, pc}
.align 2, 0
_080490F8: .4byte gUnk_080D2974
_080490FC: .4byte gRoomControls
thumb_func_start sub_08049100
sub_08049100: @ 0x08049100
push {r4, r5, lr}
adds r5, r0, #0
movs r0, #0x7c
bl sub_0807CBE4
cmp r0, #0
beq _08049144
ldr r4, _08049140 @ =0x00004081
adds r0, r4, #0
movs r1, #0xa
movs r2, #2
bl sub_0800015E
adds r0, r4, #0
movs r1, #0x4a
movs r2, #2
bl sub_0800015E
adds r0, r4, #0
movs r1, #0x8a
movs r2, #2
bl sub_0800015E
adds r0, r4, #0
movs r1, #0xca
movs r2, #2
bl sub_0800015E
bl sub_0805E780
b _0804916E
.align 2, 0
_08049140: .4byte 0x00004081
_08049144:
ldr r4, _080491E8 @ =0x00000323
adds r0, r4, #0
movs r1, #0xa
movs r2, #1
bl sub_0807B7D8
adds r0, r4, #0
movs r1, #0x4a
movs r2, #1
bl sub_0807B7D8
adds r0, r4, #0
movs r1, #0x8a
movs r2, #1
bl sub_0807B7D8
adds r0, r4, #0
movs r1, #0xca
movs r2, #1
bl sub_0807B7D8
_0804916E:
movs r0, #0x22
bl sub_080A7EE0
adds r2, r0, #0
cmp r2, #0
beq _080491E4
movs r1, #0
movs r3, #1
movs r0, #1
strb r0, [r2, #0xa]
str r5, [r2, #0x50]
str r2, [r5, #0x54]
strb r0, [r5, #0xc]
strb r1, [r5, #0xd]
movs r0, #0x3c
strb r0, [r5, #0xe]
movs r0, #0xc0
strb r0, [r5, #0x15]
strb r0, [r5, #0x14]
movs r4, #0
movs r0, #0xc0
lsls r0, r0, #2
strh r0, [r5, #0x24]
ldrb r1, [r5, #0x19]
movs r0, #3
orrs r1, r0
ldrb r2, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r3
strb r0, [r5, #0x18]
ldrb r2, [r5, #0x1b]
movs r3, #0x3f
adds r0, r3, #0
ands r0, r2
movs r2, #0x80
orrs r0, r2
strb r0, [r5, #0x1b]
ands r1, r3
orrs r1, r2
strb r1, [r5, #0x19]
adds r1, r5, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x7c
strb r4, [r0]
subs r0, #4
movs r1, #0x80
lsls r1, r1, #7
strh r1, [r0]
adds r0, #2
strh r1, [r0]
adds r0, r5, #0
movs r1, #0
bl sub_080042AC
_080491E4:
pop {r4, r5, pc}
.align 2, 0
_080491E8: .4byte 0x00000323
thumb_func_start sub_080491EC
sub_080491EC: @ 0x080491EC
push {r4, lr}
adds r4, r0, #0
ldr r1, _08049208 @ =gUnk_080D2988
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_08049208: .4byte gUnk_080D2988
thumb_func_start sub_0804920C
sub_0804920C: @ 0x0804920C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _0804921C
subs r0, #1
strb r0, [r4, #0xe]
b _08049268
_0804921C:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldr r2, _0804926C @ =gRoomControls
ldrh r0, [r2, #6]
ldr r1, _08049270 @ =0xFFFFFF00
adds r0, r0, r1
movs r3, #0x2e
ldrsh r1, [r4, r3]
cmp r0, r1
ble _08049268
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0x80
strb r0, [r4, #0x15]
strb r0, [r4, #0x14]
movs r0, #0xc0
strh r0, [r4, #0x24]
ldrh r0, [r2, #6]
adds r0, #0xa8
strh r0, [r4, #0x2e]
ldrh r0, [r2, #8]
subs r0, #0x40
strh r0, [r4, #0x32]
adds r0, r4, #0
adds r0, #0x78
movs r1, #0x80
lsls r1, r1, #8
strh r1, [r0]
adds r0, #2
strh r1, [r0]
_08049268:
pop {r4, pc}
.align 2, 0
_0804926C: .4byte gRoomControls
_08049270: .4byte 0xFFFFFF00
thumb_func_start sub_08049274
sub_08049274: @ 0x08049274
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldr r0, _080492A4 @ =gRoomControls
ldrh r0, [r0, #8]
adds r0, #0x40
movs r2, #0x32
ldrsh r1, [r4, r2]
cmp r0, r1
bge _080492A2
movs r1, #0
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_080492A2:
pop {r4, pc}
.align 2, 0
_080492A4: .4byte gRoomControls
thumb_func_start sub_080492A8
sub_080492A8: @ 0x080492A8
push {r4, lr}
adds r4, r0, #0
ldr r1, _080492C4 @ =gUnk_080D2990
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_080492C4: .4byte gUnk_080D2990
thumb_func_start sub_080492C8
sub_080492C8: @ 0x080492C8
push {r4, r5, lr}
adds r3, r0, #0
movs r0, #1
strb r0, [r3, #0xd]
movs r1, #0
movs r0, #0x90
lsls r0, r0, #1
strh r0, [r3, #0x24]
adds r0, r3, #0
adds r0, #0x6e
strb r1, [r0]
movs r0, #0x2e
ldrsh r1, [r3, r0]
ldr r2, _08049300 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
adds r5, r2, #0
cmp r1, #0xa7
bgt _08049304
adds r2, r3, #0
adds r2, #0x80
movs r0, #0xd8
strh r0, [r2]
adds r1, r3, #0
adds r1, #0x74
adds r0, #0x28
b _08049314
.align 2, 0
_08049300: .4byte gRoomControls
_08049304:
adds r2, r3, #0
adds r2, #0x80
movs r0, #0x78
strh r0, [r2]
adds r1, r3, #0
adds r1, #0x74
movs r0, #0xff
lsls r0, r0, #8
_08049314:
strh r0, [r1]
adds r4, r1, #0
ldrh r0, [r5, #6]
ldrh r1, [r2]
adds r0, r0, r1
strh r0, [r2]
movs r2, #0x32
ldrsh r0, [r3, r2]
ldrh r1, [r5, #8]
subs r0, r0, r1
cmp r0, #0x7f
bgt _08049336
adds r1, r3, #0
adds r1, #0x82
movs r0, #0xb0
strh r0, [r1]
b _08049346
_08049336:
adds r1, r3, #0
adds r1, #0x82
movs r0, #0x50
strh r0, [r1]
movs r2, #0
ldrsh r0, [r4, r2]
rsbs r0, r0, #0
strh r0, [r4]
_08049346:
ldrh r0, [r5, #8]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
adds r0, r3, #0
bl sub_08049358
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08049358
sub_08049358: @ 0x08049358
push {r4, r5, lr}
adds r4, r0, #0
adds r0, #0x80
ldrh r0, [r0]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
adds r1, r4, #0
adds r1, #0x82
ldrh r1, [r1]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
adds r3, r0, #0
ldrb r2, [r4, #0x15]
subs r0, r2, r3
adds r0, #2
movs r1, #0xff
ands r0, r1
cmp r0, #4
bls _08049398
subs r0, r3, r2
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _08049394
subs r0, r2, #1
b _08049396
_08049394:
adds r0, r2, #1
_08049396:
strb r0, [r4, #0x15]
_08049398:
ldrb r1, [r4, #0x15]
movs r5, #0x80
lsls r5, r5, #1
subs r1, r5, r1
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
adds r0, r4, #0
adds r0, #0x80
ldrh r1, [r0]
adds r0, #2
ldrh r2, [r0]
movs r0, #0x24
ldrsh r3, [r4, r0]
asrs r3, r3, #0x10
adds r3, #0x10
adds r0, r4, #0
bl sub_0806FCB8
cmp r0, #0
beq _080493E0
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0xc0
strh r0, [r4, #0x24]
adds r0, r4, #0
adds r0, #0x7e
strh r5, [r0]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
_080493E0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080493E4
sub_080493E4: @ 0x080493E4
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x76
adds r0, #0x74
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r0, r0, #0x18
strb r0, [r4, #0x15]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _0804943A
movs r1, #0x2e
ldrsh r0, [r4, r1]
movs r2, #0x32
ldrsh r1, [r4, r2]
ldr r3, _08049458 @ =gRoomControls
ldrh r2, [r3, #6]
adds r2, #0xa8
ldrh r3, [r3, #8]
adds r3, #0x80
bl sub_080045D4
adds r0, #2
movs r1, #0x1c
ands r0, r1
ldrb r1, [r4, #0x15]
lsrs r1, r1, #3
subs r0, r0, r1
movs r1, #0xf
ands r0, r1
cmp r0, #8
bne _0804943A
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x3c
strb r0, [r4, #0xe]
movs r0, #7
strb r0, [r4, #0xf]
_0804943A:
adds r0, r4, #0
bl sub_08049944
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
.align 2, 0
_08049458: .4byte gRoomControls
thumb_func_start sub_0804945C
sub_0804945C: @ 0x0804945C
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x76
adds r0, #0x74
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
lsls r0, r0, #0x10
lsrs r1, r0, #0x18
strb r1, [r4, #0x15]
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _0804948C
movs r0, #0x1f
ands r1, r0
cmp r1, #0
bne _080494B2
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x5a
strb r0, [r4, #0xe]
b _080494B2
_0804948C:
adds r0, r4, #0
bl sub_08049A8C
cmp r0, #0
beq _080494B2
movs r0, #0x23
bl sub_080A7EE0
adds r2, r0, #0
cmp r2, #0
beq _080494B2
adds r1, r2, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
str r4, [r2, #0x50]
adds r0, r2, #0
bl UpdateSpriteOrderAndFlip
_080494B2:
adds r0, r4, #0
bl sub_08049944
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080494D0
sub_080494D0: @ 0x080494D0
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldrb r0, [r4, #0xe]
subs r1, r0, #1
strb r1, [r4, #0xe]
movs r2, #0xff
lsls r0, r1, #0x18
cmp r0, #0
bne _08049518
ldrb r0, [r4, #0xf]
subs r0, #1
strb r0, [r4, #0xf]
ands r0, r2
cmp r0, #0
bne _0804950E
movs r0, #5
strb r0, [r4, #0xd]
ldrh r0, [r4, #0x24]
adds r0, #0x40
strh r0, [r4, #0x24]
b _08049534
_0804950E:
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0xa
strb r0, [r4, #0xe]
b _08049534
_08049518:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x50
bne _08049534
bl Random
movs r1, #3
ands r1, r0
movs r0, #0x62
bl CreateEnemy
cmp r0, #0
beq _08049534
str r4, [r0, #0x50]
_08049534:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08049538
sub_08049538: @ 0x08049538
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldr r0, _08049570 @ =gRoomControls
ldrh r1, [r0, #6]
adds r1, #0xa8
ldrh r2, [r0, #8]
adds r2, #0x80
adds r0, r4, #0
movs r3, #0x70
bl sub_0806FCB8
adds r1, r0, #0
cmp r1, #0
bne _0804956E
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_0804956E:
pop {r4, pc}
.align 2, 0
_08049570: .4byte gRoomControls
thumb_func_start sub_08049574
sub_08049574: @ 0x08049574
push {r4, lr}
adds r4, r0, #0
ldr r1, _08049590 @ =gUnk_080D29A8
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_08049590: .4byte gUnk_080D29A8
thumb_func_start sub_08049594
sub_08049594: @ 0x08049594
push {r4, lr}
adds r4, r0, #0
ldr r2, _080495C8 @ =gRoomControls
ldrh r0, [r2, #6]
movs r3, #0x2e
ldrsh r1, [r4, r3]
subs r1, #0xa8
subs r0, r0, r1
ldrh r1, [r2, #8]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r2, #0x80
subs r1, r1, r2
bl sub_080045DA
ldrb r2, [r4, #0x15]
cmp r0, r2
beq _080495D2
subs r0, r0, r2
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _080495CC
subs r0, r2, #1
strb r0, [r4, #0x15]
b _080495DC
.align 2, 0
_080495C8: .4byte gRoomControls
_080495CC:
adds r0, r2, #1
strb r0, [r4, #0x15]
b _080495DC
_080495D2:
movs r0, #1
strb r0, [r4, #0xd]
movs r0, #0xc0
lsls r0, r0, #1
strh r0, [r4, #0x24]
_080495DC:
adds r0, r4, #0
bl sub_08049944
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08047EA4
pop {r4, pc}
thumb_func_start sub_080495F8
sub_080495F8: @ 0x080495F8
push {r4, lr}
adds r4, r0, #0
ldr r0, _08049654 @ =gRoomControls
ldrh r1, [r0, #6]
adds r1, #0xa8
ldrh r2, [r0, #8]
adds r2, #0x80
adds r0, r4, #0
movs r3, #0x28
bl sub_0806FCB8
cmp r0, #0
beq _0804963C
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x2d
strb r0, [r4, #0xe]
bl Random
ldr r2, _08049658 @ =gUnk_080D29B8
movs r1, #7
ands r1, r0
adds r1, r1, r2
ldrb r1, [r1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
adds r0, r4, #0
adds r0, #0x74
strh r1, [r0]
ldrb r0, [r4, #0x15]
lsls r0, r0, #8
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
_0804963C:
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
pop {r4, pc}
.align 2, 0
_08049654: .4byte gRoomControls
_08049658: .4byte gUnk_080D29B8
thumb_func_start sub_0804965C
sub_0804965C: @ 0x0804965C
push {r4, lr}
adds r4, r0, #0
adds r1, r4, #0
adds r1, #0x76
adds r0, #0x74
ldrh r0, [r0]
ldrh r2, [r1]
adds r0, r0, r2
strh r0, [r1]
lsrs r0, r0, #8
strb r0, [r4, #0x15]
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804969A
movs r0, #3
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
_0804969A:
pop {r4, pc}
thumb_func_start sub_0804969C
sub_0804969C: @ 0x0804969C
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
lsrs r1, r0, #0x18
cmp r1, #0
bne _080496C8
movs r0, #2
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
_080496C8:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080496CC
sub_080496CC: @ 0x080496CC
push {r4, lr}
adds r4, r0, #0
ldr r1, _080496E8 @ =gUnk_080D29C0
ldrb r0, [r4, #0xd]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
adds r0, r4, #0
bl _call_via_r1
adds r0, r4, #0
bl sub_080042B8
pop {r4, pc}
.align 2, 0
_080496E8: .4byte gUnk_080D29C0
thumb_func_start sub_080496EC
sub_080496EC: @ 0x080496EC
push {r4, lr}
adds r4, r0, #0
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
bl sub_08079F8C
cmp r0, #0
beq _08049720
ldr r0, _0804971C @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
bne _08049720
movs r0, #2
bl sub_08078A90
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #0x1e
strb r0, [r4, #0xe]
b _08049724
.align 2, 0
_0804971C: .4byte gLinkEntity
_08049720:
movs r0, #1
strb r0, [r4, #0xd]
_08049724:
adds r0, r4, #0
bl sub_08049944
pop {r4, pc}
thumb_func_start sub_0804972C
sub_0804972C: @ 0x0804972C
push {r4, lr}
adds r4, r0, #0
bl sub_08079F8C
cmp r0, #0
beq _08049750
ldr r0, _08049758 @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r0, r1]
cmp r0, #0
bne _08049750
movs r0, #2
bl sub_08078A90
movs r0, #2
strb r0, [r4, #0xd]
movs r0, #1
strb r0, [r4, #0xe]
_08049750:
adds r0, r4, #0
bl sub_08049944
pop {r4, pc}
.align 2, 0
_08049758: .4byte gLinkEntity
thumb_func_start sub_0804975C
sub_0804975C: @ 0x0804975C
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _0804977E
movs r0, #3
strb r0, [r1, #0xd]
movs r0, #0xb4
strb r0, [r1, #0xe]
adds r0, #0x4c
strh r0, [r1, #0x24]
ldrb r0, [r1, #0x15]
subs r0, #0x40
strb r0, [r1, #0x15]
_0804977E:
adds r0, r1, #0
bl sub_08049944
pop {pc}
.align 2, 0
thumb_func_start sub_08049788
sub_08049788: @ 0x08049788
push {r4, lr}
adds r4, r0, #0
bl sub_08049AB0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080497B8
movs r0, #0x1e
strb r0, [r4, #0xe]
movs r0, #4
strb r0, [r4, #0xd]
movs r0, #0x80
lsls r0, r0, #3
strh r0, [r4, #0x24]
ldrb r0, [r4, #0x14]
strb r0, [r4, #0x15]
movs r0, #0x94
lsls r0, r0, #1
bl PlaySFX
b _080497C6
_080497B8:
ldrb r0, [r4, #0x15]
movs r1, #0x80
eors r0, r1
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08049B20
_080497C6:
adds r0, r4, #0
bl sub_08049944
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080497D0
sub_080497D0: @ 0x080497D0
push {r4, lr}
adds r4, r0, #0
bl sub_08049AB0
ldrb r0, [r4, #0x15]
movs r1, #0x80
lsls r1, r1, #1
subs r1, r1, r0
movs r0, #0xff
ands r1, r0
lsls r1, r1, #8
adds r0, r4, #0
bl sub_08049998
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08049802
movs r0, #5
strb r0, [r4, #0xd]
movs r1, #0x10
bl DoFade
_08049802:
pop {r4, pc}
thumb_func_start sub_08049804
sub_08049804: @ 0x08049804
push {r4, lr}
adds r4, r0, #0
bl sub_08049944
ldr r0, _0804987C @ =gUnk_03000FD0
ldrb r0, [r0]
cmp r0, #0
bne _08049878
movs r0, #6
strb r0, [r4, #0xd]
ldrb r1, [r4, #0x18]
movs r3, #4
rsbs r3, r3, #0
adds r0, r3, #0
ands r0, r1
strb r0, [r4, #0x18]
ldr r4, [r4, #0x54]
ldrb r2, [r4, #0x10]
movs r1, #0x7f
adds r0, r1, #0
ands r0, r2
strb r0, [r4, #0x10]
ldrb r2, [r4, #0x18]
adds r0, r3, #0
ands r0, r2
strb r0, [r4, #0x18]
ldr r4, [r4, #0x54]
ldrb r2, [r4, #0x10]
adds r0, r1, #0
ands r0, r2
strb r0, [r4, #0x10]
ldrb r2, [r4, #0x18]
adds r0, r3, #0
ands r0, r2
strb r0, [r4, #0x18]
ldr r4, [r4, #0x54]
ldrb r0, [r4, #0x10]
ands r1, r0
strb r1, [r4, #0x10]
ldrb r0, [r4, #0x18]
ands r3, r0
strb r3, [r4, #0x18]
ldr r4, _08049880 @ =gLinkEntity
ldr r1, _08049884 @ =gRoomControls
ldrh r0, [r1, #6]
adds r0, #0xa8
movs r2, #0
strh r0, [r4, #0x2e]
ldrh r0, [r1, #8]
adds r0, #0x80
strh r0, [r4, #0x32]
strb r2, [r4, #0x14]
bl sub_080809D4
movs r0, #4
movs r1, #4
bl DoFade
_08049878:
pop {r4, pc}
.align 2, 0
_0804987C: .4byte gUnk_03000FD0
_08049880: .4byte gLinkEntity
_08049884: .4byte gRoomControls
thumb_func_start sub_08049888
sub_08049888: @ 0x08049888
push {lr}
adds r1, r0, #0
ldr r0, _080498B0 @ =gUnk_03000FD0
ldrb r0, [r0]
cmp r0, #0
bne _080498AE
movs r0, #7
strb r0, [r1, #0xd]
movs r0, #0xa0
strb r0, [r1, #0xe]
movs r0, #0x72
bl PlaySFX
movs r0, #0x7c
bl sub_0807CCC8
movs r0, #1
bl sub_08078A90
_080498AE:
pop {pc}
.align 2, 0
_080498B0: .4byte gUnk_03000FD0
thumb_func_start sub_080498B4
sub_080498B4: @ 0x080498B4
push {lr}
ldrb r1, [r0, #0xe]
subs r1, #1
strb r1, [r0, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _080498C8
bl sub_0805E780
b _0804993E
_080498C8:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x10
bne _080498E4
movs r0, #0x36
movs r1, #0xca
movs r2, #1
bl sub_0807B7D8
ldr r0, _080498E0 @ =0x00004081
movs r1, #0xca
b _0804990E
.align 2, 0
_080498E0: .4byte 0x00004081
_080498E4:
cmp r0, #0x18
bne _080498FC
movs r0, #0x36
movs r1, #0x8a
movs r2, #1
bl sub_0807B7D8
ldr r0, _080498F8 @ =0x00004081
movs r1, #0x8a
b _0804990E
.align 2, 0
_080498F8: .4byte 0x00004081
_080498FC:
cmp r0, #0x20
bne _08049920
movs r0, #0x36
movs r1, #0x4a
movs r2, #1
bl sub_0807B7D8
ldr r0, _0804991C @ =0x00004081
movs r1, #0x4a
_0804990E:
movs r2, #2
bl sub_0800015E
movs r0, #0x71
bl PlaySFX
b _0804993E
.align 2, 0
_0804991C: .4byte 0x00004081
_08049920:
cmp r0, #0x28
bne _0804993E
movs r0, #0x36
movs r1, #0xa
movs r2, #1
bl sub_0807B7D8
ldr r0, _08049940 @ =0x00004081
movs r1, #0xa
movs r2, #2
bl sub_0800015E
movs r0, #0x71
bl PlaySFX
_0804993E:
pop {pc}
.align 2, 0
_08049940: .4byte 0x00004081
thumb_func_start sub_08049944
sub_08049944: @ 0x08049944
push {r4, r5, lr}
adds r4, r0, #0
adds r4, #0x7c
ldrb r3, [r4]
lsls r2, r3, #1
movs r1, #0x7f
ands r2, r1
movs r1, #0x80
ands r1, r3
orrs r2, r1
strb r2, [r4]
ldr r5, _08049990 @ =gLinkEntity
movs r2, #0x2e
ldrsh r1, [r5, r2]
movs r3, #0x32
ldrsh r2, [r5, r3]
movs r3, #0x20
bl sub_0806FCB8
cmp r0, #0
beq _0804998C
ldr r2, _08049994 @ =gLinkState
movs r0, #1
strb r0, [r2, #0x14]
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
bne _0804998C
ldr r0, [r2, #0x30]
movs r1, #2
orrs r0, r1
str r0, [r2, #0x30]
ldrb r0, [r4]
movs r1, #1
orrs r0, r1
strb r0, [r4]
_0804998C:
pop {r4, r5, pc}
.align 2, 0
_08049990: .4byte gLinkEntity
_08049994: .4byte gLinkState
thumb_func_start sub_08049998
sub_08049998: @ 0x08049998
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r4, r1, #0
bl sub_08049944
adds r0, r5, #0
adds r1, r4, #0
bl sub_08047EA4
movs r0, #0x2e
ldrsh r4, [r5, r0]
movs r2, #0x32
ldrsh r6, [r5, r2]
movs r0, #0x24
ldrsh r1, [r5, r0]
ldrb r2, [r5, #0x15]
adds r0, r5, #0
bl sub_0806F62C
adds r0, r5, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _080499EA
bl sub_08079F8C
cmp r0, #0
beq _080499EA
ldr r0, _080499EC @ =gLinkEntity
ldrh r1, [r5, #0x2e]
subs r1, r1, r4
ldrh r2, [r0, #0x2e]
adds r1, r1, r2
strh r1, [r0, #0x2e]
ldrh r1, [r5, #0x32]
subs r1, r1, r6
ldrh r2, [r0, #0x32]
adds r1, r1, r2
strh r1, [r0, #0x32]
_080499EA:
pop {r4, r5, r6, pc}
.align 2, 0
_080499EC: .4byte gLinkEntity
thumb_func_start sub_080499F0
sub_080499F0: @ 0x080499F0
push {r4, r5, r6, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xc]
cmp r0, #0
beq _08049A82
ldr r5, _08049A84 @ =gLinkEntity
movs r1, #0x36
ldrsh r0, [r5, r1]
cmp r0, #0
bne _08049A82
bl sub_08079F8C
cmp r0, #0
beq _08049A82
adds r2, r4, #0
adds r2, #0x7c
ldrb r1, [r2]
movs r0, #1
ands r0, r1
adds r6, r2, #0
cmp r0, #0
bne _08049A82
movs r2, #0x2e
ldrsh r1, [r4, r2]
movs r3, #0x32
ldrsh r2, [r4, r3]
adds r0, r5, #0
movs r3, #0x24
bl sub_0806FCB8
cmp r0, #0
beq _08049A7E
ldrb r1, [r6]
movs r0, #2
ands r0, r1
cmp r0, #0
bne _08049A7E
movs r1, #0x2e
ldrsh r0, [r5, r1]
movs r2, #0x2e
ldrsh r1, [r4, r2]
subs r0, r0, r1
movs r3, #0x32
ldrsh r1, [r5, r3]
movs r3, #0x32
ldrsh r2, [r4, r3]
subs r1, r1, r2
bl sub_080045DA
ldr r3, _08049A88 @ =gUnk_080C9160
lsls r1, r0, #1
adds r1, r1, r3
movs r2, #0
ldrsh r1, [r1, r2]
lsls r2, r1, #3
adds r2, r2, r1
lsls r2, r2, #0xa
ldr r1, [r4, #0x2c]
adds r1, r1, r2
str r1, [r5, #0x2c]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r3
movs r3, #0
ldrsh r0, [r0, r3]
lsls r1, r0, #3
adds r1, r1, r0
lsls r1, r1, #0xa
ldr r0, [r4, #0x30]
subs r0, r0, r1
str r0, [r5, #0x30]
_08049A7E:
movs r0, #0
strb r0, [r6]
_08049A82:
pop {r4, r5, r6, pc}
.align 2, 0
_08049A84: .4byte gLinkEntity
_08049A88: .4byte gUnk_080C9160
thumb_func_start sub_08049A8C
sub_08049A8C: @ 0x08049A8C
push {lr}
ldrb r1, [r0, #0xe]
subs r1, #1
strb r1, [r0, #0xe]
lsls r1, r1, #0x18
cmp r1, #0
bne _08049AAA
bl Random
movs r1, #0xf
ands r1, r0
cmp r1, #0
beq _08049AAA
movs r0, #1
b _08049AAC
_08049AAA:
movs r0, #0
_08049AAC:
pop {pc}
.align 2, 0
thumb_func_start sub_08049AB0
sub_08049AB0: @ 0x08049AB0
push {r4, r5, lr}
adds r2, r0, #0
ldrb r0, [r2, #0xf]
adds r0, #1
strb r0, [r2, #0xf]
movs r1, #0xff
ands r0, r1
movs r1, #0xf
ands r0, r1
cmp r0, #0
bne _08049B18
adds r0, r2, #0
movs r1, #0x48
movs r2, #0
bl CreateFX
adds r4, r0, #0
cmp r4, #0
beq _08049B18
bl Random
movs r3, #0x30
adds r1, r0, #0
ands r1, r3
ldr r5, _08049B1C @ =0x0000FFE8
adds r2, r5, #0
adds r1, r2, r1
ldrh r5, [r4, #0x2e]
adds r1, r1, r5
strh r1, [r4, #0x2e]
lsrs r0, r0, #8
ands r0, r3
adds r2, r2, r0
ldrh r0, [r4, #0x32]
adds r2, r2, r0
strh r2, [r4, #0x32]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r2]
adds r1, r4, #0
adds r1, #0x38
movs r0, #2
strb r0, [r1]
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
_08049B18:
pop {r4, r5, pc}
.align 2, 0
_08049B1C: .4byte 0x0000FFE8
thumb_func_start sub_08049B20
sub_08049B20: @ 0x08049B20
push {r4, r5, r6, lr}
adds r4, r0, #0
bl sub_08049944
movs r0, #0x2e
ldrsh r5, [r4, r0]
movs r2, #0x32
ldrsh r6, [r4, r2]
movs r0, #0x24
ldrsh r1, [r4, r0]
ldrb r2, [r4, #0x15]
adds r0, r4, #0
bl sub_0806F62C
adds r0, r4, #0
adds r0, #0x7c
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08049B68
bl sub_08079F8C
cmp r0, #0
beq _08049B68
ldr r0, _08049B6C @ =gLinkEntity
ldrh r1, [r4, #0x2e]
subs r1, r1, r5
ldrh r2, [r0, #0x2e]
adds r1, r1, r2
strh r1, [r0, #0x2e]
ldrh r1, [r4, #0x32]
subs r1, r1, r6
ldrh r2, [r0, #0x32]
adds r1, r1, r2
strh r1, [r0, #0x32]
_08049B68:
pop {r4, r5, r6, pc}
.align 2, 0
_08049B6C: .4byte gLinkEntity
thumb_func_start sub_08049B70
sub_08049B70: @ 0x08049B70
push {r4, r5, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xc]
cmp r0, #0
bne _08049BB0
adds r0, #1
strb r0, [r5, #0xc]
ldrb r0, [r5, #0xa]
lsls r0, r0, #4
ldr r1, _08049BEC @ =gUnk_080D29E0
adds r0, r0, r1
bl sub_080028F4
adds r4, r5, #0
adds r4, #0x68
strb r0, [r4]
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
cmp r0, #8
bls _08049B9C
bl sub_0805E780
_08049B9C:
ldrb r0, [r4]
cmp r0, #7
bhi _08049BB0
movs r0, #0x67
bl GetInventoryValue
cmp r0, #0
bne _08049BB0
movs r0, #8
strb r0, [r4]
_08049BB0:
adds r0, r5, #0
bl sub_08049C2C
cmp r0, #0
beq _08049C20
adds r0, r5, #0
adds r0, #0x68
ldrb r1, [r0]
cmp r1, #0
blt _08049C16
cmp r1, #7
ble _08049BF0
cmp r1, #8
bne _08049C16
movs r0, #0x40
movs r1, #0x60
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08049C16
movs r0, #0
strb r0, [r4, #0xe]
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
b _08049C16
.align 2, 0
_08049BEC: .4byte gUnk_080D29E0
_08049BF0:
ldr r0, _08049C24 @ =gUnk_080D2AB0
adds r0, r1, r0
ldrb r2, [r0]
movs r0, #0x96
movs r1, #7
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _08049C16
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
ldrh r0, [r4, #0x32]
adds r0, #0x10
strh r0, [r4, #0x32]
ldr r0, _08049C28 @ =0x0000FFE0
strh r0, [r4, #0x36]
_08049C16:
adds r0, r5, #0
bl sub_08049CF4
bl sub_0805E780
_08049C20:
pop {r4, r5, pc}
.align 2, 0
_08049C24: .4byte gUnk_080D2AB0
_08049C28: .4byte 0x0000FFE0
thumb_func_start sub_08049C2C
sub_08049C2C: @ 0x08049C2C
push {r4, r5, r6, lr}
adds r2, r0, #0
ldr r3, _08049CA4 @ =gLinkEntity
ldrb r0, [r3, #0xc]
cmp r0, #6
bne _08049CA8
movs r0, #0x2e
ldrsh r1, [r3, r0]
movs r4, #0x2e
ldrsh r0, [r2, r4]
subs r1, r1, r0
movs r5, #6
movs r4, #0x80
lsls r4, r4, #8
adds r0, r1, #0
ands r0, r4
cmp r0, #0
beq _08049C52
movs r5, #2
_08049C52:
adds r1, #0x28
lsls r0, r1, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x4f
bhi _08049CA8
movs r6, #0x32
ldrsh r1, [r3, r6]
movs r6, #0x32
ldrsh r0, [r2, r6]
subs r1, r1, r0
adds r0, r1, #0
ands r0, r4
rsbs r0, r0, #0
asrs r2, r0, #0x1f
movs r0, #4
ands r2, r0
adds r1, #0x28
lsls r0, r1, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x4f
bhi _08049CA8
ldrb r0, [r3, #0x14]
cmp r0, #0
bne _08049C86
cmp r2, #0
beq _08049C9E
_08049C86:
cmp r0, #4
bne _08049C8E
cmp r2, #4
beq _08049C9E
_08049C8E:
cmp r0, #6
bne _08049C96
cmp r5, #6
beq _08049C9E
_08049C96:
cmp r0, #2
bne _08049CA8
cmp r5, #2
bne _08049CA8
_08049C9E:
movs r0, #1
b _08049CAA
.align 2, 0
_08049CA4: .4byte gLinkEntity
_08049CA8:
movs r0, #0
_08049CAA:
pop {r4, r5, r6, pc}
thumb_func_start sub_08049CAC
sub_08049CAC: @ 0x08049CAC
push {lr}
adds r2, r0, #0
ldr r1, _08049CC8 @ =gUnk_080D2ABC
ldrb r0, [r2, #0xf]
lsls r0, r0, #2
adds r0, r0, r1
ldr r1, [r0]
cmp r1, #0
beq _08049CCC
adds r0, r2, #0
bl _call_via_r1
b _08049CD0
.align 2, 0
_08049CC8: .4byte gUnk_080D2ABC
_08049CCC:
bl sub_0805E780
_08049CD0:
pop {pc}
.align 2, 0
thumb_func_start sub_08049CD4
sub_08049CD4: @ 0x08049CD4
push {r4, lr}
movs r0, #1
rsbs r0, r0, #0
ldr r4, _08049CEC @ =gUnk_02024050
adds r1, r4, #0
movs r2, #0x40
bl _DmaFill32
ldr r0, _08049CF0 @ =gUnk_020354B0
str r4, [r0]
pop {r4, pc}
.align 2, 0
_08049CEC: .4byte gUnk_02024050
_08049CF0: .4byte gUnk_020354B0
thumb_func_start sub_08049CF4
sub_08049CF4: @ 0x08049CF4
push {lr}
adds r0, #0x6c
ldrb r3, [r0]
movs r0, #0x80
ands r0, r3
cmp r0, #0
beq _08049D14
ldr r0, _08049D18 @ =gUnk_020354B0
ldr r2, [r0]
movs r0, #0x1f
ands r3, r0
movs r1, #1
lsls r1, r3
ldr r0, [r2, #4]
orrs r0, r1
str r0, [r2, #4]
_08049D14:
pop {pc}
.align 2, 0
_08049D18: .4byte gUnk_020354B0
thumb_func_start sub_08049D1C
sub_08049D1C: @ 0x08049D1C
ldr r1, _08049D2C @ =gUnk_020354B0
ldr r1, [r1]
ldr r1, [r1, #4]
lsrs r1, r0
movs r0, #1
bics r0, r1
bx lr
.align 2, 0
_08049D2C: .4byte gUnk_020354B0
thumb_func_start sub_08049D30
sub_08049D30: @ 0x08049D30
push {r4, r5, r6, lr}
ldr r1, _08049D58 @ =gUnk_020354B0
ldr r0, _08049D5C @ =gUnk_02024050
str r0, [r1]
adds r5, r1, #0
ldr r6, _08049D60 @ =gRoomControls
ldr r4, _08049D64 @ =0x0000FFFF
_08049D3E:
ldr r3, [r5]
ldrh r0, [r3]
ldrh r2, [r6, #4]
adds r1, r4, #0
ands r1, r0
adds r0, r4, #0
ands r0, r2
cmp r1, r0
bne _08049D68
adds r0, r3, #0
bl sub_08049DCC
b _08049D7C
.align 2, 0
_08049D58: .4byte gUnk_020354B0
_08049D5C: .4byte gUnk_02024050
_08049D60: .4byte gRoomControls
_08049D64: .4byte 0x0000FFFF
_08049D68:
adds r1, r3, #0
adds r1, #8
str r1, [r5]
ldr r0, _08049D80 @ =gUnk_02024090
cmp r1, r0
blo _08049D3E
bl sub_08049D88
ldr r1, _08049D84 @ =gUnk_020354B0
str r0, [r1]
_08049D7C:
pop {r4, r5, r6, pc}
.align 2, 0
_08049D80: .4byte gUnk_02024090
_08049D84: .4byte gUnk_020354B0
thumb_func_start sub_08049D88
sub_08049D88: @ 0x08049D88
push {r4, r5, lr}
ldr r4, _08049DC0 @ =gUnk_02024050
adds r1, r4, #0
adds r1, #8
ldr r3, _08049DC4 @ =gRoomControls
adds r2, r4, #0
adds r2, #0x40
_08049D96:
ldrh r0, [r1, #2]
ldrh r5, [r4, #2]
cmp r0, r5
bls _08049DA0
adds r4, r1, #0
_08049DA0:
adds r1, #8
cmp r1, r2
blo _08049D96
ldrb r0, [r3, #4]
movs r1, #0
strb r0, [r4]
ldrb r0, [r3, #5]
strb r0, [r4, #1]
ldr r0, _08049DC8 @ =0x0000FFFF
strh r0, [r4, #2]
str r1, [r4, #4]
adds r0, r4, #0
bl sub_08049DCC
adds r0, r4, #0
pop {r4, r5, pc}
.align 2, 0
_08049DC0: .4byte gUnk_02024050
_08049DC4: .4byte gRoomControls
_08049DC8: .4byte 0x0000FFFF
thumb_func_start sub_08049DCC
sub_08049DCC: @ 0x08049DCC
push {r4, lr}
adds r2, r0, #0
ldr r1, _08049DF0 @ =gUnk_02024050
adds r3, r1, #0
adds r3, #0x40
_08049DD6:
ldrh r0, [r1, #2]
ldrh r4, [r2, #2]
cmp r0, r4
bhs _08049DE2
adds r0, #1
strh r0, [r1, #2]
_08049DE2:
adds r1, #8
cmp r1, r3
blo _08049DD6
movs r0, #0
strh r0, [r2, #2]
pop {r4, pc}
.align 2, 0
_08049DF0: .4byte gUnk_02024050
thumb_func_start sub_08049DF4
sub_08049DF4: @ 0x08049DF4
push {lr}
adds r2, r0, #0
ldr r0, _08049E10 @ =gUnk_020000B0
ldr r0, [r0]
cmp r0, #0
bne _08049E0C
ldr r1, _08049E14 @ =gUnk_080D3BE8
lsls r0, r2, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
_08049E0C:
pop {pc}
.align 2, 0
_08049E10: .4byte gUnk_020000B0
_08049E14: .4byte gUnk_080D3BE8
thumb_func_start sub_08049E18
sub_08049E18: @ 0x08049E18
push {lr}
ldr r1, _08049E38 @ =gLinkState
adds r0, r1, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08049E48
ldr r0, [r1, #0x30]
ldr r1, _08049E3C @ =0x22189B75
ands r0, r1
cmp r0, #0
bne _08049E48
ldr r1, _08049E40 @ =gUnk_020000B0
ldr r0, _08049E44 @ =gLinkEntity
str r0, [r1]
b _08049E4A
.align 2, 0
_08049E38: .4byte gLinkState
_08049E3C: .4byte 0x22189B75
_08049E40: .4byte gUnk_020000B0
_08049E44: .4byte gLinkEntity
_08049E48:
movs r0, #0
_08049E4A:
pop {pc}
thumb_func_start sub_08049E4C
sub_08049E4C: @ 0x08049E4C
push {lr}
ldr r1, _08049E6C @ =gLinkState
adds r0, r1, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08049E7C
ldr r0, [r1, #0x30]
ldr r1, _08049E70 @ =0x22189BF5
ands r0, r1
cmp r0, #0
bne _08049E7C
ldr r1, _08049E74 @ =gUnk_020000B0
ldr r0, _08049E78 @ =gLinkEntity
str r0, [r1]
b _08049E7E
.align 2, 0
_08049E6C: .4byte gLinkState
_08049E70: .4byte 0x22189BF5
_08049E74: .4byte gUnk_020000B0
_08049E78: .4byte gLinkEntity
_08049E7C:
movs r0, #0
_08049E7E:
pop {pc}
thumb_func_start sub_08049E80
sub_08049E80: @ 0x08049E80
push {lr}
ldr r1, _08049E9C @ =gLinkState
adds r0, r1, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08049E98
ldr r0, [r1, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
bne _08049EA0
_08049E98:
movs r0, #0
b _08049EA6
.align 2, 0
_08049E9C: .4byte gLinkState
_08049EA0:
ldr r1, _08049EA8 @ =gUnk_020000B0
ldr r0, _08049EAC @ =gLinkEntity
str r0, [r1]
_08049EA6:
pop {pc}
.align 2, 0
_08049EA8: .4byte gUnk_020000B0
_08049EAC: .4byte gLinkEntity
thumb_func_start sub_08049EB0
sub_08049EB0: @ 0x08049EB0
push {lr}
ldr r1, _08049ED0 @ =gLinkState
adds r0, r1, #0
adds r0, #0x3c
ldrb r0, [r0]
cmp r0, #0
bne _08049EE0
ldr r0, [r1, #0x30]
ldr r1, _08049ED4 @ =0x00080190
ands r0, r1
cmp r0, #0
bne _08049EE0
ldr r1, _08049ED8 @ =gUnk_020000B0
ldr r0, _08049EDC @ =gLinkEntity
str r0, [r1]
b _08049EE2
.align 2, 0
_08049ED0: .4byte gLinkState
_08049ED4: .4byte 0x00080190
_08049ED8: .4byte gUnk_020000B0
_08049EDC: .4byte gLinkEntity
_08049EE0:
movs r0, #0
_08049EE2:
pop {pc}
thumb_func_start sub_08049EE4
sub_08049EE4: @ 0x08049EE4
push {r4, r5, lr}
mov ip, r0
adds r0, #0x70
mov r1, ip
adds r1, #0x6e
ldrb r2, [r1]
lsls r2, r2, #2
ldrh r0, [r0]
adds r2, r2, r0
lsls r2, r2, #0x10
lsrs r2, r2, #0x10
adds r1, #4
mov r0, ip
adds r0, #0x6f
ldrb r3, [r0]
lsls r3, r3, #2
ldrh r1, [r1]
adds r3, r3, r1
lsls r3, r3, #0x10
lsrs r3, r3, #0x10
mov r1, ip
movs r4, #0x2e
ldrsh r0, [r1, r4]
movs r5, #0x32
ldrsh r1, [r1, r5]
bl sub_080045D4
pop {r4, r5, pc}
thumb_func_start sub_08049F1C
sub_08049F1C: @ 0x08049F1C
push {r4, r5, lr}
adds r4, r0, #0
adds r3, r1, #0
adds r5, r2, #0
adds r0, #0x38
adds r1, #0x38
ldrb r2, [r0]
ldrb r0, [r1]
ands r0, r2
cmp r0, #0
beq _08049F5E
movs r0, #0x2e
ldrsh r2, [r3, r0]
movs r1, #0x2e
ldrsh r0, [r4, r1]
subs r2, r2, r0
movs r0, #0x32
ldrsh r1, [r3, r0]
movs r3, #0x32
ldrsh r0, [r4, r3]
subs r1, r1, r0
adds r3, r5, #0
muls r3, r5, r3
adds r0, r2, #0
muls r0, r2, r0
adds r2, r1, #0
muls r2, r1, r2
adds r1, r2, #0
adds r0, r0, r1
cmp r3, r0
blt _08049F5E
movs r0, #1
b _08049F60
_08049F5E:
movs r0, #0
_08049F60:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08049F64
sub_08049F64: @ 0x08049F64
push {r4, r5, lr}
adds r4, r0, #0
adds r0, r1, #0
adds r5, r2, #0
bl sub_08049DF4
adds r1, r0, #0
cmp r1, #0
beq _08049F80
adds r0, r4, #0
adds r2, r5, #0
bl sub_08049F1C
b _08049F82
_08049F80:
movs r0, #0
_08049F82:
pop {r4, r5, pc}
thumb_func_start sub_08049F84
sub_08049F84: @ 0x08049F84
push {r4, lr}
adds r4, r0, #0
adds r0, r1, #0
bl sub_08049DF4
adds r1, r0, #0
cmp r1, #0
beq _08049F9C
adds r0, r4, #0
bl sub_080045C4
b _08049F9E
_08049F9C:
movs r0, #0xff
_08049F9E:
pop {r4, pc}
thumb_func_start sub_08049FA0
sub_08049FA0: @ 0x08049FA0
push {lr}
adds r3, r0, #0
adds r0, #0x6e
ldrb r2, [r0]
lsls r2, r2, #3
movs r1, #0x2e
ldrsh r0, [r3, r1]
adds r1, r3, #0
adds r1, #0x70
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _08049FD6
adds r0, r3, #0
adds r0, #0x6f
ldrb r2, [r0]
lsls r2, r2, #3
movs r1, #0x32
ldrsh r0, [r3, r1]
adds r1, r3, #0
adds r1, #0x72
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _08049FD6
movs r0, #1
b _08049FD8
_08049FD6:
movs r0, #0
_08049FD8:
pop {pc}
.align 2, 0
thumb_func_start sub_08049FDC
sub_08049FDC: @ 0x08049FDC
push {r4, lr}
adds r4, r0, #0
adds r0, r1, #0
bl sub_08049DF4
adds r3, r0, #0
cmp r3, #0
beq _0804A020
adds r0, r4, #0
adds r0, #0x6e
ldrb r2, [r0]
lsls r2, r2, #3
movs r1, #0x2e
ldrsh r0, [r3, r1]
adds r1, r4, #0
adds r1, #0x70
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _0804A020
adds r0, r4, #0
adds r0, #0x6f
ldrb r2, [r0]
lsls r2, r2, #3
movs r1, #0x32
ldrsh r0, [r3, r1]
adds r1, r4, #0
adds r1, #0x72
ldrh r1, [r1]
subs r0, r0, r1
cmp r2, r0
blo _0804A020
movs r0, #1
b _0804A022
_0804A020:
movs r0, #0
_0804A022:
pop {r4, pc}
thumb_func_start sub_0804A024
sub_0804A024: @ 0x0804A024
push {r4, r5, lr}
adds r4, r0, #0
adds r0, r1, #0
adds r5, r2, #0
bl sub_08049DF4
adds r1, r0, #0
cmp r1, #0
beq _0804A040
adds r0, r4, #0
adds r2, r5, #0
bl sub_0804A044
b _0804A042
_0804A040:
movs r0, #0xff
_0804A042:
pop {r4, r5, pc}
thumb_func_start sub_0804A044
sub_0804A044: @ 0x0804A044
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
adds r7, r0, #0
mov r8, r1
mov r0, r8
adds r0, #0x38
movs r1, #0x38
adds r1, r1, r7
mov sl, r1
ldrb r1, [r0]
mov r3, sl
ldrb r0, [r3]
ands r0, r1
cmp r0, #0
beq _0804A15A
movs r5, #0
mov r0, r8
movs r3, #0x2e
ldrsh r1, [r0, r3]
ldr r0, [r0, #0x48]
mov ip, r0
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r1, r1, r0
movs r3, #0x2e
ldrsh r0, [r7, r3]
subs r1, r1, r0
ldr r4, [r7, #0x48]
movs r0, #0
ldrsb r0, [r4, r0]
subs r6, r1, r0
lsrs r3, r2, #1
adds r0, r6, r3
cmp r2, r0
blo _0804A096
movs r5, #1
_0804A096:
lsls r0, r2, #1
mov sb, r0
adds r0, r6, r2
cmp sb, r0
blo _0804A0A4
movs r0, #2
orrs r5, r0
_0804A0A4:
mov r1, r8
movs r0, #0x32
ldrsh r1, [r1, r0]
str r1, [sp]
mov r1, ip
ldrb r1, [r1, #1]
lsls r1, r1, #0x18
asrs r1, r1, #0x18
mov ip, r1
ldr r0, [sp]
add r0, ip
str r0, [sp]
movs r0, #0x32
ldrsh r1, [r7, r0]
ldr r0, [sp]
subs r0, r0, r1
movs r1, #1
ldrsb r1, [r4, r1]
subs r4, r0, r1
adds r0, r4, r3
cmp r2, r0
blo _0804A0D4
movs r0, #4
orrs r5, r0
_0804A0D4:
adds r0, r4, r2
cmp sb, r0
blo _0804A0DE
movs r0, #8
orrs r5, r0
_0804A0DE:
cmp r5, #0
beq _0804A15A
movs r0, #5
ands r0, r5
cmp r0, #0xa
beq _0804A15A
mov r1, sl
ldrb r0, [r1]
bl sub_0808094C
mov sb, r0
cmp r6, #0
bge _0804A0FA
rsbs r6, r6, #0
_0804A0FA:
cmp r4, #0
bge _0804A100
rsbs r4, r4, #0
_0804A100:
cmp r6, r4
bge _0804A12E
movs r0, #1
ands r0, r5
cmp r0, #0
beq _0804A11A
adds r0, r7, #0
mov r1, r8
mov r2, sb
bl sub_0804A168
cmp r0, #0xff
bne _0804A15C
_0804A11A:
movs r0, #4
ands r5, r0
cmp r5, #0
beq _0804A15A
adds r0, r7, #0
mov r1, r8
mov r2, sb
bl sub_0804A318
b _0804A156
_0804A12E:
movs r0, #4
ands r0, r5
cmp r0, #0
beq _0804A144
adds r0, r7, #0
mov r1, r8
mov r2, sb
bl sub_0804A318
cmp r0, #0xff
bne _0804A15C
_0804A144:
movs r0, #1
ands r5, r0
cmp r5, #0
beq _0804A15A
adds r0, r7, #0
mov r1, r8
mov r2, sb
bl sub_0804A168
_0804A156:
cmp r0, #0xff
bne _0804A15C
_0804A15A:
movs r0, #0xff
_0804A15C:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804A168
sub_0804A168: @ 0x0804A168
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #4
adds r4, r0, #0
mov sb, r1
adds r5, r2, #0
movs r0, #0x32
ldrsh r1, [r1, r0]
movs r2, #0x32
ldrsh r0, [r4, r2]
cmp r1, r0
ble _0804A248
movs r3, #0x2e
ldrsh r0, [r4, r3]
subs r2, r0, #4
movs r0, #0xf
mov sl, r0
adds r0, r2, #0
mov r1, sl
ands r0, r1
movs r7, #5
cmp r0, #7
bhi _0804A19E
movs r7, #0xa
_0804A19E:
ldr r3, _0804A240 @ =gRoomControls
mov r8, r3
ldrh r1, [r3, #6]
subs r1, r2, r1
lsrs r1, r1, #4
movs r6, #0x3f
ands r1, r6
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r3, [r3, #8]
mov ip, r3
mov r2, ip
subs r2, #0xa
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r0, r1
mov r2, sb
movs r3, #0x32
ldrsh r2, [r2, r3]
mov r3, ip
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r6
lsls r2, r2, #6
orrs r1, r2
ldr r2, _0804A244 @ =0x00002004
adds r0, r0, r2
adds r0, r5, r0
adds r1, r1, r2
adds r1, r5, r1
movs r2, #0x40
adds r3, r7, #0
bl sub_0804A4BC
cmp r0, #0
bne _0804A1EC
b _0804A308
_0804A1EC:
movs r1, #0x2e
ldrsh r0, [r4, r1]
adds r2, r0, #4
mov r3, sl
eors r7, r3
mov r0, r8
ldrh r1, [r0, #6]
subs r1, r2, r1
lsrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r4, r2]
mov r4, r8
ldrh r3, [r4, #8]
adds r2, r3, #0
subs r2, #0xa
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r0, r1
mov r2, sb
movs r4, #0x32
ldrsh r2, [r2, r4]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r6
lsls r2, r2, #6
orrs r1, r2
ldr r2, _0804A244 @ =0x00002004
adds r0, r0, r2
adds r0, r5, r0
adds r1, r1, r2
adds r1, r5, r1
movs r2, #0x40
adds r3, r7, #0
bl sub_0804A4BC
cmp r0, #0
beq _0804A308
movs r0, #0x10
b _0804A30A
.align 2, 0
_0804A240: .4byte gRoomControls
_0804A244: .4byte 0x00002004
_0804A248:
movs r3, #0x2e
ldrsh r0, [r4, r3]
subs r2, r0, #4
adds r0, r2, #0
movs r1, #0xf
ands r0, r1
movs r7, #5
cmp r0, #7
bhi _0804A25C
movs r7, #0xa
_0804A25C:
ldr r3, _0804A300 @ =gRoomControls
mov r8, r3
ldrh r1, [r3, #6]
subs r1, r2, r1
lsrs r1, r1, #4
movs r6, #0x3f
ands r1, r6
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r3, [r3, #8]
mov sl, r3
mov r2, sl
adds r2, #0xa
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r0, r1
mov r2, sb
movs r3, #0x32
ldrsh r2, [r2, r3]
mov r3, sl
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r6
lsls r2, r2, #6
orrs r1, r2
ldr r2, _0804A304 @ =0x00002004
adds r0, r0, r2
adds r0, r5, r0
adds r1, r1, r2
adds r1, r5, r1
movs r2, #0x40
rsbs r2, r2, #0
mov sl, r2
adds r3, r7, #0
bl sub_0804A4BC
cmp r0, #0
beq _0804A308
movs r3, #0x2e
ldrsh r0, [r4, r3]
adds r2, r0, #4
movs r0, #0xf
eors r7, r0
mov r3, r8
ldrh r1, [r3, #6]
subs r1, r2, r1
lsrs r1, r1, #4
ands r1, r6
movs r2, #0x32
ldrsh r0, [r4, r2]
ldrh r3, [r3, #8]
adds r2, r3, #0
adds r2, #0xa
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r0, r1
mov r4, sb
movs r2, #0x32
ldrsh r4, [r4, r2]
subs r2, r4, r3
asrs r2, r2, #4
ands r2, r6
lsls r2, r2, #6
orrs r1, r2
ldr r3, _0804A304 @ =0x00002004
adds r0, r0, r3
adds r0, r5, r0
adds r1, r1, r3
adds r1, r5, r1
mov r2, sl
adds r3, r7, #0
bl sub_0804A4BC
cmp r0, #0
beq _0804A308
movs r0, #0
b _0804A30A
.align 2, 0
_0804A300: .4byte gRoomControls
_0804A304: .4byte 0x00002004
_0804A308:
movs r0, #0xff
_0804A30A:
add sp, #4
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0804A318
sub_0804A318: @ 0x0804A318
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r5, r0, #0
mov sl, r1
adds r6, r2, #0
movs r0, #0x2e
ldrsh r1, [r1, r0]
movs r2, #0x2e
ldrsh r0, [r5, r2]
cmp r1, r0
ble _0804A3F0
movs r4, #0x32
ldrsh r0, [r5, r4]
subs r4, r0, #4
adds r0, r4, #0
movs r1, #0xf
ands r0, r1
movs r2, #3
mov r8, r2
cmp r0, #7
bhi _0804A34C
movs r0, #0xc
mov r8, r0
_0804A34C:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r2, _0804A3E8 @ =gRoomControls
mov sb, r2
ldrh r3, [r2, #6]
adds r1, r3, #0
subs r1, #0xa
subs r0, r0, r1
asrs r0, r0, #4
movs r7, #0x3f
ands r0, r7
ldrh r2, [r2, #8]
subs r2, r4, r2
lsrs r2, r2, #4
ands r2, r7
lsls r2, r2, #6
orrs r0, r2
mov r4, sl
movs r1, #0x2e
ldrsh r4, [r4, r1]
subs r1, r4, r3
asrs r1, r1, #4
ands r1, r7
orrs r1, r2
ldr r2, _0804A3EC @ =0x00002004
adds r0, r0, r2
adds r0, r6, r0
adds r1, r1, r2
adds r1, r6, r1
movs r2, #1
mov r3, r8
bl sub_0804A4BC
cmp r0, #0
bne _0804A394
b _0804A4B0
_0804A394:
movs r2, #0x32
ldrsh r0, [r5, r2]
adds r4, r0, #4
mov r0, r8
movs r1, #0xf
eors r0, r1
mov r8, r0
movs r2, #0x2e
ldrsh r0, [r5, r2]
mov r5, sb
ldrh r3, [r5, #6]
adds r1, r3, #0
subs r1, #0xa
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r7
ldrh r2, [r5, #8]
subs r2, r4, r2
lsrs r2, r2, #4
ands r2, r7
lsls r2, r2, #6
orrs r0, r2
mov r4, sl
movs r5, #0x2e
ldrsh r1, [r4, r5]
subs r1, r1, r3
asrs r1, r1, #4
ands r1, r7
orrs r1, r2
ldr r2, _0804A3EC @ =0x00002004
adds r0, r0, r2
adds r0, r6, r0
adds r1, r1, r2
adds r1, r6, r1
movs r2, #1
mov r3, r8
bl sub_0804A4BC
cmp r0, #0
beq _0804A4B0
movs r0, #8
b _0804A4B2
.align 2, 0
_0804A3E8: .4byte gRoomControls
_0804A3EC: .4byte 0x00002004
_0804A3F0:
movs r4, #0x32
ldrsh r0, [r5, r4]
subs r4, r0, #4
adds r0, r4, #0
movs r1, #0xf
ands r0, r1
movs r2, #3
mov r8, r2
cmp r0, #7
bhi _0804A408
movs r0, #0xc
mov r8, r0
_0804A408:
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r2, _0804A4A8 @ =gRoomControls
mov sb, r2
ldrh r3, [r2, #6]
adds r1, r3, #0
adds r1, #0xa
subs r0, r0, r1
asrs r0, r0, #4
movs r7, #0x3f
ands r0, r7
ldrh r2, [r2, #8]
subs r2, r4, r2
lsrs r2, r2, #4
ands r2, r7
lsls r2, r2, #6
orrs r0, r2
mov r4, sl
movs r1, #0x2e
ldrsh r4, [r4, r1]
subs r1, r4, r3
asrs r1, r1, #4
ands r1, r7
orrs r1, r2
ldr r2, _0804A4AC @ =0x00002004
adds r0, r0, r2
adds r0, r6, r0
adds r1, r1, r2
adds r1, r6, r1
movs r2, #1
rsbs r2, r2, #0
mov r3, r8
bl sub_0804A4BC
cmp r0, #0
beq _0804A4B0
movs r2, #0x32
ldrsh r0, [r5, r2]
adds r4, r0, #4
mov r0, r8
movs r1, #0xf
eors r0, r1
mov r8, r0
movs r2, #0x2e
ldrsh r0, [r5, r2]
mov r5, sb
ldrh r3, [r5, #6]
adds r1, r3, #0
adds r1, #0xa
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r7
ldrh r2, [r5, #8]
subs r2, r4, r2
lsrs r2, r2, #4
ands r2, r7
lsls r2, r2, #6
orrs r0, r2
mov r4, sl
movs r5, #0x2e
ldrsh r1, [r4, r5]
subs r1, r1, r3
asrs r1, r1, #4
ands r1, r7
orrs r1, r2
ldr r2, _0804A4AC @ =0x00002004
adds r0, r0, r2
adds r0, r6, r0
adds r1, r1, r2
adds r1, r6, r1
movs r2, #1
rsbs r2, r2, #0
mov r3, r8
bl sub_0804A4BC
cmp r0, #0
beq _0804A4B0
movs r0, #0x18
b _0804A4B2
.align 2, 0
_0804A4A8: .4byte gRoomControls
_0804A4AC: .4byte 0x00002004
_0804A4B0:
movs r0, #0xff
_0804A4B2:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804A4BC
sub_0804A4BC: @ 0x0804A4BC
push {r4, lr}
adds r4, r0, #0
cmp r4, r1
beq _0804A4DE
_0804A4C4:
ldrb r0, [r4]
cmp r0, #0
beq _0804A4D8
cmp r0, #0xf
bhi _0804A4D4
ands r0, r3
cmp r0, #0
beq _0804A4D8
_0804A4D4:
movs r0, #0
b _0804A4E0
_0804A4D8:
adds r4, r4, r2
cmp r4, r1
bne _0804A4C4
_0804A4DE:
movs r0, #1
_0804A4E0:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804A4E4
sub_0804A4E4: @ 0x0804A4E4
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r5, #0
adds r7, #0x6d
ldrb r1, [r7]
movs r4, #0x40
adds r0, r4, #0
ands r0, r1
movs r1, #4
adds r2, r6, #0
adds r2, #0x6d
orrs r0, r1
strb r0, [r2]
adds r0, r5, #0
adds r0, #0x6c
ldrb r1, [r0]
adds r0, r6, #0
adds r0, #0x6c
strb r1, [r0]
adds r0, r5, #0
adds r0, #0x70
ldrh r1, [r0]
adds r0, r6, #0
adds r0, #0x70
strh r1, [r0]
adds r0, r5, #0
adds r0, #0x72
ldrh r0, [r0]
adds r1, r6, #0
adds r1, #0x72
strh r0, [r1]
adds r0, r5, #0
adds r0, #0x6e
ldrb r0, [r0]
subs r1, #4
strb r0, [r1]
adds r0, r5, #0
adds r0, #0x6f
ldrb r0, [r0]
adds r1, #1
strb r0, [r1]
adds r0, r5, #0
adds r1, r6, #0
bl sub_0806FA6C
ldrb r0, [r7]
ands r4, r0
cmp r4, #0
beq _0804A550
adds r0, r5, #0
adds r1, r6, #0
bl sub_08058800
_0804A550:
pop {r4, r5, r6, r7, pc}
.align 2, 0
thumb_func_start sub_0804A554
sub_0804A554: @ 0x0804A554
push {lr}
adds r3, r0, #0
ldrb r0, [r3, #9]
lsls r0, r0, #4
ldr r1, _0804A574 @ =gUnk_080D2C58
adds r2, r0, r1
ldrh r1, [r2]
ldr r0, _0804A578 @ =0x0000FFFF
cmp r1, r0
bne _0804A570
ldrb r0, [r3, #0xa]
lsls r0, r0, #4
ldr r1, [r2, #4]
adds r2, r1, r0
_0804A570:
adds r0, r2, #0
pop {pc}
.align 2, 0
_0804A574: .4byte gUnk_080D2C58
_0804A578: .4byte 0x0000FFFF
thumb_func_start sub_0804A57C
sub_0804A57C: @ 0x0804A57C
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
ldrb r1, [r4, #0x10]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0804A58C
b _0804A6B6
_0804A58C:
adds r0, r4, #0
bl sub_0804A554
adds r5, r0, #0
adds r0, r4, #0
adds r1, r5, #0
bl sub_0804A6C0
cmp r0, #0
bne _0804A5A4
movs r0, #0
b _0804A6B8
_0804A5A4:
ldrb r1, [r4, #0x10]
movs r0, #1
adds r2, r1, #0
orrs r2, r0
strb r2, [r4, #0x10]
ldrb r1, [r5, #0xa]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0804A5BE
movs r0, #0x80
orrs r2, r0
strb r2, [r4, #0x10]
_0804A5BE:
ldrh r0, [r5, #8]
strh r0, [r4, #0x12]
ldrb r2, [r4, #0x18]
lsls r0, r2, #0x1e
cmp r0, #0
bne _0804A5DA
ldrb r1, [r5, #0xa]
lsls r1, r1, #0x1a
lsrs r1, r1, #0x1e
movs r0, #4
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
_0804A5DA:
ldrb r1, [r5, #0xa]
lsls r1, r1, #0x1d
adds r3, r4, #0
adds r3, #0x29
movs r6, #7
lsrs r1, r1, #0x1a
ldrb r2, [r3]
movs r0, #0x39
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r3]
ldrb r1, [r5, #0xa]
movs r7, #3
lsrs r1, r1, #6
lsls r1, r1, #4
ldrb r2, [r4, #0x18]
movs r0, #0x31
rsbs r0, r0, #0
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
movs r1, #0x24
ldrsh r0, [r4, r1]
cmp r0, #0
bne _0804A612
ldrh r0, [r5, #0xc]
strh r0, [r4, #0x24]
_0804A612:
ldrb r0, [r5, #0xf]
adds r1, r4, #0
adds r1, #0x3b
strb r0, [r1]
ldrb r0, [r5, #0xe]
adds r1, #4
strb r0, [r1]
ldr r0, [r5, #4]
str r0, [r4, #0x48]
ldrb r0, [r5, #0xb]
adds r2, r4, #0
adds r2, #0x45
strb r0, [r2]
adds r1, #1
ldrb r0, [r1]
cmp r0, #0
bne _0804A638
movs r0, #0x41
strb r0, [r1]
_0804A638:
adds r0, r4, #0
bl UpdateSpriteOrderAndFlip
adds r5, r4, #0
adds r5, #0x6d
ldrb r1, [r5]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0804A6B6
ldr r2, _0804A6BC @ =gUnk_080D3E74
ldrb r1, [r4, #9]
lsrs r0, r1, #3
lsls r0, r0, #1
adds r0, r0, r2
ldrh r2, [r0]
ands r6, r1
lsls r0, r6, #1
asrs r2, r0
movs r0, #3
ands r2, r0
cmp r2, #0
beq _0804A6B6
subs r1, r2, #1
movs r0, #0xa9
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
beq _0804A6B6
ldrb r0, [r4, #0x10]
strb r0, [r2, #0xe]
ldrb r0, [r4, #0x18]
lsls r0, r0, #0x1e
lsrs r0, r0, #0x1e
strb r0, [r2, #0xf]
adds r3, r2, #0
adds r3, #0x29
ldrb r1, [r3]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
orrs r0, r7
strb r0, [r3]
str r4, [r2, #0x50]
adds r0, r4, #0
adds r1, r2, #0
bl CopyPosition
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r5]
movs r1, #0x10
orrs r0, r1
strb r0, [r5]
_0804A6B6:
movs r0, #1
_0804A6B8:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804A6BC: .4byte gUnk_080D3E74
thumb_func_start sub_0804A6C0
sub_0804A6C0: @ 0x0804A6C0
push {r4, r5, lr}
adds r4, r0, #0
adds r5, r1, #0
ldrh r2, [r5]
lsls r1, r2, #0x10
cmp r1, #0
beq _0804A712
movs r0, #0x80
lsls r0, r0, #8
ands r0, r2
cmp r0, #0
beq _0804A6E8
ldr r0, _0804A6E4 @ =0x000003FF
ands r0, r2
adds r1, r4, #0
adds r1, #0x60
strh r0, [r1]
b _0804A712
.align 2, 0
_0804A6E4: .4byte 0x000003FF
_0804A6E8:
movs r0, #0x80
lsls r0, r0, #7
ands r0, r2
cmp r0, #0
beq _0804A702
lsrs r1, r1, #0x14
lsls r1, r1, #0x18
lsrs r1, r1, #0x18
adds r0, r4, #0
movs r2, #0
bl sub_080AE008
b _0804A70A
_0804A702:
ldrh r1, [r5]
adds r0, r4, #0
bl sub_080ADF80
_0804A70A:
cmp r0, #0
bne _0804A712
movs r0, #0
b _0804A71C
_0804A712:
ldrh r1, [r5, #2]
adds r0, r4, #0
bl sub_0801D040
movs r0, #1
_0804A71C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_0804A720
sub_0804A720: @ 0x0804A720
push {r4, r5, r6, lr}
adds r2, r0, #0
adds r0, #0x6d
ldrb r1, [r0]
movs r0, #4
ands r0, r1
cmp r0, #0
bne _0804A7D0
ldrb r0, [r2, #9]
lsls r0, r0, #1
ldr r1, _0804A76C @ =gUnk_080D3D94
adds r3, r0, r1
adds r4, r2, #0
adds r4, #0x68
ldrb r1, [r4, #0x16]
cmp r1, #0
bne _0804A744
ldrb r1, [r3]
_0804A744:
adds r0, r2, #0
adds r0, #0x6e
strb r1, [r0]
adds r5, r0, #0
ldrb r1, [r4, #0x17]
cmp r1, #0
bne _0804A754
ldrb r1, [r3, #1]
_0804A754:
adds r0, r2, #0
adds r0, #0x6f
strb r1, [r0]
adds r6, r0, #0
ldrh r1, [r4, #0x1c]
adds r3, r1, #0
cmp r3, #0
beq _0804A774
ldr r0, _0804A770 @ =gRoomControls
ldrh r0, [r0, #6]
adds r0, r1, r0
b _0804A784
.align 2, 0
_0804A76C: .4byte gUnk_080D3D94
_0804A770: .4byte gRoomControls
_0804A774:
ldrb r0, [r5]
lsls r1, r0, #2
movs r5, #0x2e
ldrsh r0, [r2, r5]
cmp r0, r1
blt _0804A78C
ldrh r0, [r2, #0x2e]
subs r0, r0, r1
_0804A784:
adds r1, r2, #0
adds r1, #0x70
strh r0, [r1]
b _0804A792
_0804A78C:
adds r0, r2, #0
adds r0, #0x70
strh r3, [r0]
_0804A792:
ldrh r1, [r4, #0x1e]
adds r3, r1, #0
cmp r3, #0
beq _0804A7A8
ldr r0, _0804A7A4 @ =gRoomControls
ldrh r0, [r0, #8]
adds r0, r1, r0
b _0804A7B8
.align 2, 0
_0804A7A4: .4byte gRoomControls
_0804A7A8:
ldrb r0, [r6]
lsls r1, r0, #2
movs r4, #0x32
ldrsh r0, [r2, r4]
cmp r0, r1
blt _0804A7C0
ldrh r0, [r2, #0x32]
subs r0, r0, r1
_0804A7B8:
adds r1, r2, #0
adds r1, #0x72
strh r0, [r1]
b _0804A7C6
_0804A7C0:
adds r0, r2, #0
adds r0, #0x72
strh r3, [r0]
_0804A7C6:
adds r2, #0x6d
ldrb r1, [r2]
movs r0, #4
orrs r0, r1
strb r0, [r2]
_0804A7D0:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0804A7D4
sub_0804A7D4: @ 0x0804A7D4
push {lr}
ldrb r1, [r0, #9]
movs r2, #0
bl sub_0804A7E0
pop {pc}
thumb_func_start sub_0804A7E0
sub_0804A7E0: @ 0x0804A7E0
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
adds r5, r0, #0
mov sb, r1
mov sl, r2
adds r6, r5, #0
adds r6, #0x6d
ldrb r1, [r6]
movs r7, #1
adds r0, r7, #0
ands r0, r1
cmp r0, #0
beq _0804A864
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0804A80A
b _0804A982
_0804A80A:
ldrb r1, [r5, #9]
movs r0, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
bne _0804A81C
b _0804A982
_0804A81C:
adds r0, #0x6c
strb r7, [r0]
adds r0, r5, #0
adds r1, r4, #0
movs r2, #0
movs r3, #1
bl PositionRelative
str r5, [r4, #0x50]
ldrb r1, [r6]
movs r0, #2
orrs r0, r1
strb r0, [r6]
ldrb r0, [r5, #9]
cmp r0, #0x37
bne _0804A84A
ldr r0, _0804A85C @ =gUnk_030010A0
adds r0, #0x39
ldrb r0, [r0]
cmp r0, #0
beq _0804A84A
bl sub_0805E780
_0804A84A:
bl sub_0807CD9C
ldr r0, _0804A860 @ =0x80100000
bl PlaySFX
bl sub_0805E780
b _0804A982
.align 2, 0
_0804A85C: .4byte gUnk_030010A0
_0804A860: .4byte 0x80100000
_0804A864:
adds r4, r5, #0
adds r4, #0x3a
ldrb r1, [r4]
movs r0, #2
ands r0, r1
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov r8, r0
cmp r0, #0
bne _0804A934
adds r0, r5, #0
bl sub_08049CF4
ldr r1, _0804A8E8 @ =gUnk_02002A40
ldr r0, [r1, #0x50]
adds r0, #1
str r0, [r1, #0x50]
ldrb r0, [r4]
movs r7, #0
movs r1, #2
orrs r0, r1
strb r0, [r4]
movs r0, #0xff
strb r0, [r5, #0xe]
adds r0, r5, #0
movs r1, #3
bl sub_0805E3A0
ldrb r1, [r5, #9]
movs r0, #1
movs r2, #0
bl CreateObject
adds r4, r0, #0
cmp r4, #0
beq _0804A8CA
adds r0, #0x6c
mov r2, r8
strb r2, [r0]
adds r0, #1
mov r1, sb
strb r1, [r0]
adds r0, #1
mov r2, sl
strb r2, [r0]
str r5, [r4, #0x50]
str r5, [r4, #0x54]
adds r0, r5, #0
adds r1, r4, #0
bl CopyPosition
_0804A8CA:
ldrb r1, [r6]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _0804A8EC
adds r0, r4, #0
adds r0, #0x6c
ldrb r1, [r0]
movs r2, #8
orrs r1, r2
strb r1, [r0]
adds r0, r5, #0
bl sub_0805E7BC
b _0804A982
.align 2, 0
_0804A8E8: .4byte gUnk_02002A40
_0804A8EC:
adds r0, r5, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
cmp r0, #0x13
bne _0804A934
ldrb r0, [r5, #0x1c]
movs r1, #0xf
ands r1, r0
cmp r1, #1
beq _0804A91A
cmp r1, #2
bne _0804A92A
cmp r4, #0
beq _0804A92A
adds r1, r4, #0
adds r1, #0x6c
ldrb r0, [r1]
movs r2, #2
orrs r0, r2
strb r0, [r1]
b _0804A92A
_0804A91A:
cmp r4, #0
beq _0804A92A
adds r0, r4, #0
adds r0, #0x6c
ldrb r1, [r0]
movs r2, #4
orrs r1, r2
strb r1, [r0]
_0804A92A:
movs r0, #0
str r0, [r4, #0x50]
bl sub_0805E780
b _0804A982
_0804A934:
ldrb r0, [r5, #0xe]
cmp r0, #0
bne _0804A940
bl sub_0805E780
b _0804A982
_0804A940:
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _0804A95E
ldrb r1, [r5, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r5, #0x18]
adds r0, r5, #0
movs r1, #0
bl sub_0805E3A0
b _0804A982
_0804A95E:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #8
bhi _0804A982
ldrb r1, [r5, #0x18]
lsls r0, r1, #0x1e
cmp r0, #0
beq _0804A976
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
b _0804A980
_0804A976:
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
_0804A980:
strb r0, [r5, #0x18]
_0804A982:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804A98C
sub_0804A98C: @ 0x0804A98C
push {r4, r5, r6, lr}
adds r6, r0, #0
adds r0, r1, #0
adds r5, r2, #0
bl sub_080A7EE0
adds r4, r0, #0
cmp r4, #0
beq _0804A9A8
strb r5, [r4, #0xa]
adds r0, r6, #0
adds r1, r4, #0
bl CopyPosition
_0804A9A8:
adds r0, r4, #0
pop {r4, r5, r6, pc}
thumb_func_start sub_0804A9AC
sub_0804A9AC: @ 0x0804A9AC
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
adds r6, r1, #0
adds r7, r2, #0
mov ip, r3
ldr r4, [r5, #0x68]
cmp r4, #0
beq _0804A9FA
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]
ldrh r0, [r5, #0x2e]
adds r0, r0, r6
strh r0, [r4, #0x2e]
ldrh r0, [r5, #0x32]
adds r0, r0, r7
strh r0, [r4, #0x32]
ldrh r0, [r5, #0x36]
add r0, ip
strh r0, [r4, #0x36]
adds r0, r5, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r4, #0
adds r0, #0x38
strb r1, [r0]
_0804A9FA:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0804A9FC
sub_0804A9FC: @ 0x0804A9FC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x68]
cmp r0, #0
bne _0804AA16
adds r0, r4, #0
movs r2, #0
bl CreateFX
cmp r0, #0
beq _0804AA16
str r0, [r4, #0x68]
b _0804AA18
_0804AA16:
movs r0, #0
_0804AA18:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_0804AA1C
sub_0804AA1C: @ 0x0804AA1C
push {lr}
adds r2, r0, #0
ldr r1, [r2, #0x68]
cmp r1, #0
beq _0804AA2C
movs r0, #0
str r0, [r1, #0x50]
str r0, [r2, #0x68]
_0804AA2C:
pop {pc}
.align 2, 0