tmc/asm/vaatiRebornEnemy.s

2100 lines
34 KiB
ArmAsm

.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start VaatiRebornEnemy
VaatiRebornEnemy: @ 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 CheckLocalFlag
cmp r0, #0
beq _0803D146
bl DeleteThisEntity
_0803D146:
adds r0, r5, #0
bl sub_0804A720
movs r0, #0
bl CheckRoomFlag
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 ClearRoomFlag
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 InitAnimationForceUpdate
_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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
_0803D558:
adds r0, r4, #0
bl UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 UpdateAnimationSingleFrame
_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 UpdateAnimationSingleFrame
_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 SetRoomFlag
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
_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 UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
_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 UpdateAnimationSingleFrame
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
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 InitAnimationForceUpdate
_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 UpdateAnimationSingleFrame
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 @ =gArea
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 gArea
_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 InitAnimationForceUpdate
_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