pmd-red/asm/code_803D110.s
mid-kid 99a038284b Translate all .include to #include
This decision was made to reduce the complexity of using .include whilst
juggling with tools/scaninc and tools/preproc:
- tools/scaninc doesn't apply the proper search rules for .include (it
  assumes #include behavior). In particular, it doesn't consider paths
  starting from $PWD, and doesn't scan the included files as a result.
- .include had to be processed before #include by preproc in many cases,
  as code was being included that had to be preprocessed by CPP (think
  of #define). This contradicts standard GCC behavior.

To make include paths consistent across the asm/ data/ and src/
directories, the following files were moved:
- constants/ → include/asm/constants/
- asm/macros/ → include/asm/macros/
- asm/macros.inc → include/asm/macros.inc
- include/macros/m4a.inc → include/asm/macros/m4a.inc

As part of the necessary changes for this to work, the scaninc method in
the makefile was improved to generate .d files that don't choke when
files are missing.
2021-12-20 16:29:12 +01:00

6041 lines
94 KiB
ArmAsm

#include "asm/constants/gba_constants.inc"
#include "asm/macros.inc"
.syntax unified
.text
thumb_func_start sub_803D110
sub_803D110:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x6C
adds r6, r0, 0
mov r9, r1
adds r5, r2, 0
add r7, sp, 0x48
adds r2, r7, 0
movs r1, 0
mov r0, sp
adds r0, 0x69
_0803D12A:
strb r1, [r0]
subs r0, 0x1
cmp r0, r2
bge _0803D12A
movs r4, 0
cmp r4, r5
bge _0803D158
_0803D138:
ldrb r0, [r6]
bl sub_803D0F0
add r1, sp, 0x10
adds r1, r4
strb r0, [r1]
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
bne _0803D150
movs r0, 0
b _0803D19A
_0803D150:
adds r6, 0x1
adds r4, 0x1
cmp r4, r5
blt _0803D138
_0803D158:
lsls r0, r5, 2
adds r0, r5
adds r2, r0, 0x5
cmp r2, 0
bge _0803D164
adds r2, 0x7
_0803D164:
asrs r2, 3
mov r8, r2
mov r0, sp
adds r1, r7, 0
bl xxx_init_struct_8094924_save_809486C
movs r4, 0
cmp r4, r5
bge _0803D188
add r6, sp, 0x10
_0803D178:
adds r1, r6, r4
mov r0, sp
movs r2, 0x5
bl SaveIntegerBits
adds r4, 0x1
cmp r4, r5
blt _0803D178
_0803D188:
mov r0, sp
bl nullsub_102
mov r0, r9
adds r1, r7, 0
mov r2, r8
bl MemoryCopy8
movs r0, 0x1
_0803D19A:
add sp, 0x6C
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_803D110
thumb_func_start sub_803D1A8
sub_803D1A8:
push {r4-r7,lr}
sub sp, 0x48
adds r7, r0, 0
adds r5, r2, 0
lsls r0, r5, 2
adds r0, r5
adds r2, r0, 0x5
cmp r2, 0
bge _0803D1BC
adds r2, 0x7
_0803D1BC:
asrs r2, 3
mov r0, sp
bl xxx_init_struct_8094924_restore_809485C
movs r4, 0
cmp r4, r5
bge _0803D1DC
add r6, sp, 0x10
_0803D1CC:
adds r1, r6, r4
mov r0, sp
movs r2, 0x5
bl RestoreIntegerBits
adds r4, 0x1
cmp r4, r5
blt _0803D1CC
_0803D1DC:
mov r0, sp
bl nullsub_102
movs r4, 0
cmp r4, r5
bge _0803D1FC
add r6, sp, 0x10
_0803D1EA:
adds r0, r6, r4
ldrb r0, [r0]
bl sub_803D100
strb r0, [r7]
adds r7, 0x1
adds r4, 0x1
cmp r4, r5
blt _0803D1EA
_0803D1FC:
add sp, 0x48
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_803D1A8
thumb_func_start sub_803D204
sub_803D204:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0xA4
adds r2, r0, 0
mov r9, r1
movs r6, 0
add r4, sp, 0x5C
adds r0, r4, 0
adds r1, r2, 0
movs r2, 0x36
bl MemoryCopy8
movs r2, 0
mov r8, r4
add r5, sp, 0x24
ldr r4, _0803D2A8
mov r12, r4
mov r10, r5
_0803D22E:
movs r1, 0
mov r3, r12
adds r0, r2, r3
adds r3, r2, 0x1
ldrb r0, [r0]
cmp r1, r0
beq _0803D24A
adds r0, r2, r4
_0803D23E:
adds r1, 0x1
cmp r1, 0x35
bgt _0803D24A
ldrb r7, [r0]
cmp r1, r7
bne _0803D23E
_0803D24A:
mov r7, r10
adds r0, r7, r2
add r1, r8
ldrb r1, [r1]
strb r1, [r0]
adds r2, r3, 0
cmp r2, 0x35
ble _0803D22E
adds r0, r5, 0
mov r1, sp
movs r2, 0x36
bl sub_803D110
lsls r0, 24
cmp r0, 0
beq _0803D2AC
movs r2, 0x1
_0803D26C:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
adds r2, 0x1
cmp r2, 0x21
ble _0803D26C
mov r0, sp
ldrb r0, [r0]
cmp r0, r6
bne _0803D2AC
add r4, sp, 0x94
adds r1, 0x1
adds r0, r4, 0
movs r2, 0x21
bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl sub_8095774
adds r0, r4, 0
bl nullsub_102
movs r0, 0x1
b _0803D2AE
.align 2, 0
_0803D2A8: .4byte gUnknown_80F43F0
_0803D2AC:
movs r0, 0
_0803D2AE:
add sp, 0xA4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_803D204
thumb_func_start sub_803D2C0
sub_803D2C0:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xA4
mov r9, r0
adds r6, r1, 0
movs r5, 0
add r4, sp, 0x94
mov r1, sp
adds r1, 0x1
add r7, sp, 0x24
add r0, sp, 0x5C
mov r8, r0
movs r2, 0
mov r0, sp
adds r0, 0x21
_0803D2E2:
strb r2, [r0]
subs r0, 0x1
cmp r0, sp
bge _0803D2E2
adds r0, r4, 0
movs r2, 0x21
bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl sub_8095824
adds r0, r4, 0
bl nullsub_102
movs r2, 0x1
_0803D302:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r5, r0
lsls r0, 24
lsrs r5, r0, 24
adds r2, 0x1
cmp r2, 0x21
ble _0803D302
mov r0, sp
strb r5, [r0]
adds r0, r7, 0
movs r2, 0x36
bl sub_803D1A8
movs r2, 0
mov r4, r8
ldr r5, _0803D354
adds r3, r7, 0
_0803D32A:
adds r0, r2, r5
ldrb r1, [r0]
adds r1, r4, r1
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x35
ble _0803D32A
mov r0, r9
mov r1, r8
movs r2, 0x36
bl MemoryCopy8
add sp, 0xA4
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803D354: .4byte gUnknown_80F43F0
thumb_func_end sub_803D2C0
thumb_func_start DecodeWonderMailPassword
DecodeWonderMailPassword:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x50
adds r2, r0, 0
mov r9, r1
movs r6, 0
add r4, sp, 0x28
adds r0, r4, 0
adds r1, r2, 0
movs r2, 0x18
bl MemoryCopy8
movs r2, 0
mov r8, r4
add r5, sp, 0x10
ldr r4, _0803D3FC
mov r12, r4
mov r10, r5
_0803D382:
movs r1, 0
mov r3, r12
adds r0, r2, r3
adds r3, r2, 0x1
ldrb r0, [r0]
cmp r1, r0
beq _0803D39E
adds r0, r2, r4
_0803D392:
adds r1, 0x1
cmp r1, 0x17
bgt _0803D39E
ldrb r7, [r0]
cmp r1, r7
bne _0803D392
_0803D39E:
mov r7, r10
adds r0, r7, r2
add r1, r8
ldrb r1, [r1]
strb r1, [r0]
adds r2, r3, 0
cmp r2, 0x17
ble _0803D382
adds r0, r5, 0
mov r1, sp
movs r2, 0x18
bl sub_803D110
lsls r0, 24
cmp r0, 0
beq _0803D400
movs r2, 0x1
_0803D3C0:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r6, r0
lsls r0, 24
lsrs r6, r0, 24
adds r2, 0x1
cmp r2, 0xE
ble _0803D3C0
mov r0, sp
ldrb r0, [r0]
cmp r0, r6
bne _0803D400
add r4, sp, 0x40
adds r1, 0x1
adds r0, r4, 0
movs r2, 0xC
bl xxx_init_struct_8094924_restore_809485C
adds r0, r4, 0
mov r1, r9
bl sub_80971EC
adds r0, r4, 0
bl nullsub_102
movs r0, 0x1
b _0803D402
.align 2, 0
_0803D3FC: .4byte gUnknown_80F4426
_0803D400:
movs r0, 0
_0803D402:
add sp, 0x50
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end DecodeWonderMailPassword
thumb_func_start sub_803D414
sub_803D414:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x50
mov r9, r0
adds r6, r1, 0
movs r5, 0
add r4, sp, 0x40
mov r1, sp
adds r1, 0x1
add r7, sp, 0x10
add r0, sp, 0x28
mov r8, r0
movs r2, 0
mov r0, sp
adds r0, 0xE
_0803D436:
strb r2, [r0]
subs r0, 0x1
cmp r0, sp
bge _0803D436
adds r0, r4, 0
movs r2, 0xC
bl xxx_init_struct_8094924_save_809486C
adds r0, r4, 0
adds r1, r6, 0
bl sub_8097270
adds r0, r4, 0
bl nullsub_102
movs r2, 0x1
_0803D456:
mov r1, sp
adds r0, r1, r2
ldrb r0, [r0]
adds r0, r2
adds r0, r5, r0
lsls r0, 24
lsrs r5, r0, 24
adds r2, 0x1
cmp r2, 0xE
ble _0803D456
mov r0, sp
strb r5, [r0]
adds r0, r7, 0
movs r2, 0x18
bl sub_803D1A8
movs r2, 0
mov r4, r8
ldr r5, _0803D4A8
adds r3, r7, 0
_0803D47E:
adds r0, r2, r5
ldrb r1, [r0]
adds r1, r4, r1
adds r0, r3, r2
ldrb r0, [r0]
strb r0, [r1]
adds r2, 0x1
cmp r2, 0x17
ble _0803D47E
mov r0, r9
mov r1, r8
movs r2, 0x18
bl MemoryCopy8
add sp, 0x50
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803D4A8: .4byte gUnknown_80F4426
thumb_func_end sub_803D414
thumb_func_start sub_803D4AC
sub_803D4AC:
ldr r2, _0803D4C4
ldr r0, [r2]
ldr r1, _0803D4C8
adds r0, r1
movs r1, 0x63
strb r1, [r0]
ldr r0, [r2]
ldr r1, _0803D4CC
adds r0, r1
movs r1, 0xFF
strb r1, [r0]
bx lr
.align 2, 0
_0803D4C4: .4byte gDungeonGlobalData
_0803D4C8: .4byte 0x0001c570
_0803D4CC: .4byte 0x0001c571
thumb_func_end sub_803D4AC
thumb_func_start sub_803D4D0
sub_803D4D0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x1FC
ldr r6, _0803D654
ldr r1, [r6]
movs r4, 0xC9
lsls r4, 3
adds r0, r1, r4
ldr r2, _0803D658
adds r1, r2
bl sub_80901D8
ldr r0, [r6]
ldr r3, _0803D65C
adds r2, r0, r3
adds r1, r0, r4
ldrh r0, [r2]
ldrh r4, [r1]
cmp r0, r4
bne _0803D500
b _0803D6E0
_0803D500:
ldr r0, [r1]
str r0, [r2]
ldr r0, _0803D660
ldr r1, _0803D664
bl OpenFileAndGetFileDataPtr
mov r9, r0
ldr r3, [r0, 0x4]
ldr r2, [r6]
ldr r7, _0803D65C
adds r0, r2, r7
ldrb r1, [r0]
ldr r0, [r3]
lsls r1, 2
adds r1, r0
ldr r3, _0803D668
adds r0, r2, r3
ldrb r0, [r0]
lsls r0, 4
ldr r1, [r1]
adds r1, r0
mov r8, r1
ldr r4, _0803D658
adds r2, r4
ldrb r0, [r2]
bl sub_8090298
ldr r1, [r6]
ldr r7, _0803D66C
adds r1, r7
strb r0, [r1]
ldr r0, [r6]
adds r0, r4
ldrb r0, [r0]
bl sub_80902C8
ldr r1, [r6]
strh r0, [r1, 0x14]
mov r2, r9
ldr r0, [r2, 0x4]
mov r3, r8
movs r4, 0
ldrsh r2, [r3, r4]
ldr r3, [r0, 0x4]
lsls r0, r2, 3
subs r0, r2
lsls r0, 2
ldr r7, _0803D670
adds r1, r7
adds r0, r3
ldm r0!, {r2-r4}
stm r1!, {r2-r4}
ldm r0!, {r2,r3,r7}
stm r1!, {r2,r3,r7}
ldr r0, [r0]
str r0, [r1]
movs r5, 0
mov r10, r6
ldr r4, _0803D674
_0803D576:
mov r6, r10
ldr r2, [r6]
lsls r3, r5, 1
adds r2, r4
adds r2, r3
mov r7, r9
ldr r1, [r7, 0x4]
mov r6, r8
movs r7, 0x4
ldrsh r0, [r6, r7]
ldr r1, [r1, 0x10]
lsls r0, 2
adds r0, r1
ldr r0, [r0]
adds r3, r0
ldrh r0, [r3]
strh r0, [r2]
adds r5, 0x1
cmp r5, 0x13
ble _0803D576
movs r5, 0
adds r6, 0x6
str r6, [sp, 0x1F8]
ldr r6, _0803D678
mov r10, r6
_0803D5A8:
ldr r1, _0803D654
ldr r0, [r1]
lsls r3, r5, 3
mov r2, r10
adds r4, r0, r2
adds r4, r3
mov r12, r4
mov r4, r9
ldr r2, [r4, 0x4]
mov r7, r8
movs r4, 0x2
ldrsh r1, [r7, r4]
ldr r2, [r2, 0xC]
lsls r1, 2
adds r1, r2
ldr r1, [r1]
adds r3, r1
ldr r1, [r3]
ldr r2, [r3, 0x4]
mov r7, r12
str r1, [r7]
str r2, [r7, 0x4]
adds r0, r6
bl ExtractSpeciesIndex
lsls r0, 16
cmp r0, 0
beq _0803D5E8
adds r6, 0x8
adds r5, 0x1
cmp r5, 0x1E
ble _0803D5A8
_0803D5E8:
cmp r5, 0x1F
bgt _0803D606
ldr r6, _0803D654
lsls r0, r5, 3
ldr r1, _0803D678
adds r4, r0, r1
_0803D5F4:
ldr r0, [r6]
adds r0, r4
movs r1, 0
bl sub_808E9C4
adds r4, 0x8
adds r5, 0x1
cmp r5, 0x1F
ble _0803D5F4
_0803D606:
movs r5, 0
ldr r2, _0803D67C
mov r10, r2
_0803D60C:
mov r3, r9
ldr r1, [r3, 0x4]
lsls r0, r5, 1
ldr r4, [sp, 0x1F8]
adds r0, r4, r0
movs r6, 0
ldrsh r0, [r0, r6]
ldr r1, [r1, 0x8]
lsls r0, 2
adds r0, r1
movs r4, 0
adds r7, r5, 0x1
mov r8, r7
lsls r1, r5, 6
mov r12, r1
ldr r3, [r0]
mov r2, sp
_0803D62E:
ldrh r0, [r3]
cmp r0, r10
bls _0803D684
ldrh r0, [r3]
ldr r6, _0803D680
adds r1, r0, r6
cmp r1, 0
beq _0803D68A
movs r6, 0
lsls r0, r4, 1
add r0, sp
_0803D644:
strh r6, [r0]
adds r0, 0x2
adds r2, 0x2
adds r4, 0x1
subs r1, 0x1
cmp r1, 0
bne _0803D644
b _0803D68A
.align 2, 0
_0803D654: .4byte gDungeonGlobalData
_0803D658: .4byte 0x00000644
_0803D65C: .4byte 0x0001c570
_0803D660: .4byte gUnknown_80F4D8C
_0803D664: .4byte gDungeonFileArchive
_0803D668: .4byte 0x0001c571
_0803D66C: .4byte 0x0001cec8
_0803D670: .4byte 0x0001c574
_0803D674: .4byte 0x0001cd70
_0803D678: .4byte 0x0001cd98
_0803D67C: .4byte 0x0000752f
_0803D680: .4byte 0xffff8ad0
_0803D684:
strh r0, [r2]
adds r2, 0x2
adds r4, 0x1
_0803D68A:
adds r3, 0x2
cmp r4, 0xFB
ble _0803D62E
ldr r7, _0803D6F0
mov r1, r12
subs r0, r1, r5
movs r4, 0xB
mov r3, sp
lsls r2, r0, 3
ldr r6, _0803D6F4
_0803D69E:
ldr r0, [r7]
adds r0, r6
adds r0, r2
ldrh r1, [r3]
strh r1, [r0]
adds r3, 0x2
adds r2, 0x2
subs r4, 0x1
cmp r4, 0
bge _0803D69E
ldr r6, _0803D6F0
mov r2, r12
subs r0, r2, r5
lsls r3, r0, 3
add r2, sp, 0x18
ldr r5, _0803D6F8
movs r4, 0xEF
_0803D6C0:
ldr r0, [r6]
adds r0, r5
adds r0, r3
ldrh r1, [r2]
strh r1, [r0]
adds r2, 0x2
adds r3, 0x2
subs r4, 0x1
cmp r4, 0
bge _0803D6C0
mov r5, r8
cmp r5, 0x3
ble _0803D60C
mov r0, r9
bl CloseFile
_0803D6E0:
add sp, 0x1FC
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803D6F0: .4byte gDungeonGlobalData
_0803D6F4: .4byte 0x0001c590
_0803D6F8: .4byte 0x0001c5a8
thumb_func_end sub_803D4D0
thumb_func_start sub_803D6FC
sub_803D6FC:
push {r4,lr}
ldr r0, _0803D720
bl DungeonRandomCapped
adds r3, r0, 0
movs r2, 0
ldr r0, _0803D724
ldr r0, [r0]
ldr r4, _0803D728
adds r1, r0, r4
_0803D710:
ldrh r0, [r1]
cmp r0, 0
beq _0803D72C
cmp r0, r3
blt _0803D72C
lsls r0, r2, 24
lsrs r0, 24
b _0803D736
.align 2, 0
_0803D720: .4byte 0x00002710
_0803D724: .4byte gDungeonGlobalData
_0803D728: .4byte 0x0001cd70
_0803D72C:
adds r1, 0x2
adds r2, 0x1
cmp r2, 0x13
ble _0803D710
movs r0, 0x10
_0803D736:
pop {r4}
pop {r1}
bx r1
thumb_func_end sub_803D6FC
thumb_func_start sub_803D73C
sub_803D73C:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
adds r4, r0, 0
ldr r0, _0803D784
bl DungeonRandomCapped
adds r7, r0, 0
movs r0, 0xC
mov r8, r0
movs r6, 0
ldr r0, _0803D788
ldr r2, [r0]
lsls r1, r4, 6
subs r0, r1, r4
adds r5, r1, 0
lsls r0, 3
ldr r1, _0803D78C
adds r2, r1
adds r1, r0, r2
_0803D766:
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
beq _0803D772
cmp r0, r7
bge _0803D790
_0803D772:
adds r1, 0x2
adds r6, 0x1
cmp r6, 0xB
ble _0803D766
_0803D77A:
mov r0, r8
cmp r0, 0xC
bne _0803D79C
b _0803D7EC
.align 2, 0
_0803D784: .4byte 0x00002710
_0803D788: .4byte gDungeonGlobalData
_0803D78C: .4byte 0x0001c590
_0803D790:
lsls r0, r6, 24
lsrs r0, 24
mov r8, r0
b _0803D77A
_0803D798:
adds r0, r5, 0
b _0803D7EE
_0803D79C:
ldr r0, _0803D7FC
bl DungeonRandomCapped
adds r7, r0, 0
movs r6, 0
ldr r2, _0803D800
subs r0, r5, r4
ldr r1, _0803D804
lsls r4, r0, 3
_0803D7AE:
ldr r0, [r2]
adds r0, r1
adds r0, r4
movs r3, 0
ldrsh r0, [r0, r3]
cmp r0, 0
beq _0803D7E4
lsls r0, r6, 24
lsrs r5, r0, 24
adds r0, r5, 0
str r1, [sp]
str r2, [sp, 0x4]
bl GetItemType
lsls r0, 24
lsrs r0, 24
ldr r1, [sp]
ldr r2, [sp, 0x4]
cmp r0, r8
bne _0803D7E4
ldr r0, [r2]
adds r0, r1
adds r0, r4
movs r3, 0
ldrsh r0, [r0, r3]
cmp r0, r7
bge _0803D798
_0803D7E4:
adds r4, 0x2
adds r6, 0x1
cmp r6, 0xEF
ble _0803D7AE
_0803D7EC:
movs r0, 0x69
_0803D7EE:
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803D7FC: .4byte 0x00002710
_0803D800: .4byte gDungeonGlobalData
_0803D804: .4byte 0x0001c5a8
thumb_func_end sub_803D73C
thumb_func_start sub_803D808
sub_803D808:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
adds r7, r1, 0
movs r6, 0
ldr r2, _0803D820
lsls r1, r7, 3
adds r1, r0
mov r8, r1
b _0803D840
.align 2, 0
_0803D820: .4byte 0x0001cd98
_0803D824:
ldr r0, [r5]
ldr r1, _0803D868
adds r0, r1
adds r0, r4
ldr r1, [r0, 0x4]
ldr r0, [r0]
mov r3, r8
adds r3, 0x8
mov r8, r3
subs r3, 0x8
stm r3!, {r0,r1}
adds r7, 0x1
adds r2, 0x8
adds r6, 0x1
_0803D840:
cmp r6, 0x1F
bgt _0803D85A
ldr r5, _0803D86C
lsls r4, r6, 3
ldr r0, [r5]
adds r0, r2
str r2, [sp]
bl ExtractSpeciesIndex
lsls r0, 16
ldr r2, [sp]
cmp r0, 0
bne _0803D824
_0803D85A:
adds r0, r7, 0
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803D868: .4byte 0x0001cd98
_0803D86C: .4byte gDungeonGlobalData
thumb_func_end sub_803D808
thumb_func_start sub_803D870
sub_803D870:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r6, r1, 0
movs r5, 0
lsls r1, r6, 3
adds r1, r0
mov r9, r1
b _0803D8B8
_0803D884:
bl GetPokemonSize
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bhi _0803D8B6
ldr r1, [r7]
adds r0, r1, r4
ldr r2, _0803D8E4
adds r0, r2
movs r2, 0
ldrsh r0, [r0, r2]
cmp r0, 0
beq _0803D8B6
mov r2, r8
adds r0, r1, r2
adds r0, r4
ldr r1, [r0, 0x4]
ldr r0, [r0]
mov r2, r9
adds r2, 0x8
mov r9, r2
subs r2, 0x8
stm r2!, {r0,r1}
adds r6, 0x1
_0803D8B6:
adds r5, 0x1
_0803D8B8:
cmp r5, 0x1F
bgt _0803D8D6
ldr r7, _0803D8E8
lsls r4, r5, 3
ldr r0, _0803D8EC
mov r8, r0
adds r1, r4, r0
ldr r0, [r7]
adds r0, r1
bl ExtractSpeciesIndex
lsls r0, 16
asrs r0, 16
cmp r0, 0
bne _0803D884
_0803D8D6:
adds r0, r6, 0
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803D8E4: .4byte 0x0001cd9a
_0803D8E8: .4byte gDungeonGlobalData
_0803D8EC: .4byte 0x0001cd98
thumb_func_end sub_803D870
thumb_func_start sub_803D8F0
sub_803D8F0:
push {r4,lr}
ldr r4, _0803D920
ldr r0, [r4]
ldr r2, _0803D924
adds r1, r0, r2
ldrb r0, [r1]
cmp r0, 0
bne _0803D918
movs r0, 0x1
strb r0, [r1]
ldr r0, [r4]
ldr r1, _0803D928
adds r0, r1
movs r1, 0
bl sub_803D808
ldr r1, [r4]
ldr r2, _0803D92C
adds r1, r2
str r0, [r1]
_0803D918:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803D920: .4byte gDungeonGlobalData
_0803D924: .4byte 0x000037ec
_0803D928: .4byte 0x0000343c
_0803D92C: .4byte 0x000037e4
thumb_func_end sub_803D8F0
thumb_func_start sub_803D930
sub_803D930:
push {r4-r7,lr}
lsls r0, 16
asrs r6, r0, 16
movs r5, 0
ldr r7, _0803D940
ldr r4, _0803D944
b _0803D954
.align 2, 0
_0803D940: .4byte gDungeonGlobalData
_0803D944: .4byte 0x0001cd98
_0803D948:
cmp r0, r6
bne _0803D950
movs r0, 0x1
b _0803D96A
_0803D950:
adds r4, 0x8
adds r5, 0x1
_0803D954:
cmp r5, 0x1F
bgt _0803D968
ldr r0, [r7]
adds r0, r4
bl ExtractSpeciesIndex
lsls r0, 16
asrs r0, 16
cmp r0, 0
bne _0803D948
_0803D968:
movs r0, 0
_0803D96A:
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_803D930
thumb_func_start sub_803D970
sub_803D970:
push {r4-r7,lr}
adds r5, r0, 0
ldr r0, _0803D9EC
bl DungeonRandomCapped
adds r6, r0, 0
movs r3, 0
ldr r1, _0803D9F0
ldr r0, [r1]
ldr r2, _0803D9F4
adds r0, r2
ldr r0, [r0]
cmp r3, r0
bge _0803D9BA
ldr r4, _0803D9F8
_0803D98E:
ldr r2, [r1]
lsls r1, r5, 1
lsls r0, r3, 3
adds r1, r0
ldr r7, _0803D9FC
adds r0, r2, r7
adds r1, r0, r1
movs r7, 0
ldrsh r0, [r1, r7]
cmp r0, 0
beq _0803D9A8
cmp r0, r6
bge _0803D9E0
_0803D9A8:
adds r4, 0x8
adds r3, 0x1
ldr r1, _0803D9F0
ldr r0, [r1]
ldr r2, _0803D9F4
adds r0, r2
ldr r0, [r0]
cmp r3, r0
blt _0803D98E
_0803D9BA:
movs r3, 0
ldr r0, _0803D9F0
ldr r1, [r0]
ldr r7, _0803D9F4
adds r1, r7
ldr r1, [r1]
adds r6, r0, 0
cmp r3, r1
bge _0803DA10
ldr r4, _0803D9F8
lsls r1, r5, 1
_0803D9D0:
ldr r2, [r6]
ldr r5, _0803D9FC
adds r0, r2, r5
adds r0, r1
movs r7, 0
ldrsh r0, [r0, r7]
cmp r0, 0
beq _0803DA00
_0803D9E0:
adds r0, r2, r4
bl ExtractSpeciesIndex
lsls r0, 16
asrs r0, 16
b _0803DA14
.align 2, 0
_0803D9EC: .4byte 0x00002710
_0803D9F0: .4byte gDungeonGlobalData
_0803D9F4: .4byte 0x000037e4
_0803D9F8: .4byte 0x0000343c
_0803D9FC: .4byte 0x0000343e
_0803DA00:
adds r4, 0x8
adds r1, 0x8
adds r3, 0x1
ldr r5, _0803DA1C
adds r0, r2, r5
ldr r0, [r0]
cmp r3, r0
blt _0803D9D0
_0803DA10:
movs r0, 0xBE
lsls r0, 1
_0803DA14:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803DA1C: .4byte 0x000037e4
thumb_func_end sub_803D970
thumb_func_start sub_803DA20
sub_803DA20:
push {r4-r7,lr}
lsls r0, 16
asrs r7, r0, 16
movs r5, 0
ldr r1, _0803DA54
ldr r0, [r1]
ldr r2, _0803DA58
adds r0, r2
ldr r0, [r0]
cmp r5, r0
bge _0803DA70
adds r6, r1, 0
ldr r4, _0803DA5C
_0803DA3A:
ldr r0, [r6]
adds r0, r4
bl ExtractSpeciesIndex
lsls r0, 16
asrs r0, 16
cmp r0, r7
bne _0803DA60
ldr r0, [r6]
adds r0, r4
bl ExtractLevel
b _0803DA72
.align 2, 0
_0803DA54: .4byte gDungeonGlobalData
_0803DA58: .4byte 0x000037e4
_0803DA5C: .4byte 0x0000343c
_0803DA60:
adds r4, 0x8
adds r5, 0x1
ldr r0, [r6]
ldr r1, _0803DA78
adds r0, r1
ldr r0, [r0]
cmp r5, r0
blt _0803DA3A
_0803DA70:
movs r0, 0x1
_0803DA72:
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803DA78: .4byte 0x000037e4
thumb_func_end sub_803DA20
thumb_func_start ShowDungeonNameBanner
ShowDungeonNameBanner:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x68
ldr r0, _0803DB84
ldr r4, _0803DB88
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r5, _0803DB8C
str r0, [r5]
ldr r0, _0803DB90
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r1, _0803DB94
str r0, [r1]
ldr r1, _0803DB98
ldr r0, [r0, 0x4]
ldr r0, [r0, 0x4]
str r0, [r1]
movs r4, 0
_0803DAAA:
adds r0, r4, 0
adds r0, 0xE0
ldr r1, [r5]
lsls r2, r4, 2
ldr r1, [r1, 0x4]
adds r1, r2
bl SetBGPaletteBufferColorArray
adds r4, 0x1
cmp r4, 0xF
ble _0803DAAA
ldr r0, _0803DB9C
movs r1, 0xE0
lsls r1, 5
bl CpuClear
bl sub_80848EC
lsls r0, 24
cmp r0, 0
bne _0803DAD6
b _0803DBEA
_0803DAD6:
ldr r0, _0803DBA0
ldr r0, [r0]
ldr r1, _0803DBA4
adds r2, r0, r1
movs r3, 0x14
ldrsh r1, [r0, r3]
ldrb r2, [r2]
adds r2, r1
mov r8, r2
ldr r1, _0803DBA8
adds r0, r1
ldrb r0, [r0]
bl GetDungeonName2
mov r9, r0
movs r5, 0xA
movs r0, 0
_0803DAF8:
movs r4, 0
adds r6, r0, 0x4
adds r7, r0, 0x1
_0803DAFE:
adds r4, 0x1
ldr r3, _0803DBAC
adds r0, r3, 0
adds r2, r5, 0
orrs r2, r0
lsls r2, 16
lsrs r2, 16
adds r0, r4, 0
adds r1, r6, 0
movs r3, 0
bl sub_8008DC8
adds r5, 0x1
cmp r4, 0x1B
ble _0803DAFE
adds r0, r7, 0
cmp r0, 0x7
ble _0803DAF8
mov r0, r9
bl CalcStringWidth
movs r1, 0xE0
subs r1, r0
lsrs r0, r1, 31
adds r1, r0
asrs r1, 1
mov r0, r9
movs r2, 0
bl sub_803DC14
adds r7, r0, 0
ldr r0, _0803DBA0
ldr r0, [r0]
ldr r1, _0803DBA8
adds r0, r1
ldrb r0, [r0]
bl GetStairDirection
lsls r0, 24
ldr r6, _0803DBB0
cmp r0, 0
beq _0803DB54
ldr r6, _0803DBB4
_0803DB54:
mov r3, r8
cmp r3, 0x9
ble _0803DBBC
ldr r5, _0803DBB8
mov r0, r8
movs r1, 0xA
bl __divsi3
adds r4, r0, 0
adds r4, 0x30
mov r0, r8
movs r1, 0xA
bl __modsi3
adds r0, 0x30
str r0, [sp]
add r0, sp, 0x4
adds r1, r5, 0
adds r2, r6, 0
adds r3, r4, 0
bl ExpandPlaceholdersBuffer
b _0803DBCA
.align 2, 0
_0803DB84: .4byte gUnknown_80F60F8
_0803DB88: .4byte gDungeonFileArchive
_0803DB8C: .4byte gDungeonNameBannerPalette
_0803DB90: .4byte gUnknown_80F6100
_0803DB94: .4byte gDungeonNameBannerFontFile
_0803DB98: .4byte gDungeonNameBannerFont
_0803DB9C: .4byte 0x06000140
_0803DBA0: .4byte gDungeonGlobalData
_0803DBA4: .4byte 0x00000645
_0803DBA8: .4byte 0x00000644
_0803DBAC: .4byte 0xffffe000
_0803DBB0: .4byte gUnknown_80F610C
_0803DBB4: .4byte gUnknown_80F6108
_0803DBB8: .4byte gUnknown_80F6110
_0803DBBC:
ldr r1, _0803DC08
mov r3, r8
adds r3, 0x30
add r0, sp, 0x4
adds r2, r6, 0
bl ExpandPlaceholdersBuffer
_0803DBCA:
add r0, sp, 0x4
bl CalcStringWidth
movs r1, 0xE0
subs r1, r0
lsrs r0, r1, 31
adds r1, r0
asrs r1, 1
adds r2, r7, 0
adds r2, 0x20
add r0, sp, 0x4
bl sub_803DC14
ldr r1, _0803DC0C
movs r0, 0x1
strb r0, [r1]
_0803DBEA:
ldr r0, _0803DC10
ldr r0, [r0]
bl CloseFile
movs r0, 0x2
bl sub_803E46C
add sp, 0x68
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803DC08: .4byte gUnknown_80F6118
_0803DC0C: .4byte gUnknown_20274A5
_0803DC10: .4byte gDungeonNameBannerFontFile
thumb_func_end ShowDungeonNameBanner
thumb_func_start sub_803DC14
sub_803DC14:
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
adds r6, r2, 0
b _0803DC5C
_0803DC1E:
ldrb r1, [r4]
adds r4, 0x1
cmp r1, 0x2F
bne _0803DC2C
movs r5, 0
adds r6, 0x18
b _0803DC5C
_0803DC2C:
cmp r1, 0x23
bne _0803DC34
adds r5, 0x8
b _0803DC5C
_0803DC34:
cmp r1, 0x20
bne _0803DC3C
adds r5, 0xC
b _0803DC5C
_0803DC3C:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0803DC50
ldrb r0, [r4]
cmp r0, 0
beq _0803DC50
lsls r1, 8
orrs r1, r0
adds r4, 0x1
_0803DC50:
adds r0, r1, 0
adds r1, r5, 0
adds r2, r6, 0
bl sub_803DC6C
adds r5, r0
_0803DC5C:
ldrb r0, [r4]
cmp r0, 0
bne _0803DC1E
adds r0, r6, 0
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_803DC14
thumb_func_start sub_803DC6C
sub_803DC6C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0x120
adds r7, r1, 0
adds r5, r2, 0
bl sub_803DEC8
adds r4, r0, 0
ldr r0, [r4]
mov r1, sp
bl sub_803DD30
ldrb r4, [r4, 0x6]
mov r9, r4
mov r6, sp
adds r0, r5, 0
cmp r5, 0
bge _0803DC96
adds r0, r5, 0x7
_0803DC96:
asrs r0, 3
lsls r3, r0, 3
subs r0, r3, r0
lsls r0, 2
adds r1, r7, 0
cmp r7, 0
bge _0803DCA6
adds r1, r7, 0x7
_0803DCA6:
asrs r1, 3
adds r0, r1
lsls r0, 5
ldr r4, _0803DD28
adds r2, r0, r4
subs r0, r5, r3
lsls r0, 2
adds r2, r0
lsls r1, 3
subs r1, r7, r1
lsls r1, 4
ldr r0, _0803DD2C
adds r4, r1, r0
movs r0, 0
_0803DCC2:
adds r3, r2, 0
adds r7, r3, 0x4
adds r5, 0x1
mov r12, r5
adds r0, 0x1
mov r8, r0
movs r5, 0x2
_0803DCD0:
ldr r2, [r6]
cmp r2, 0
beq _0803DCF6
ldr r1, [r4]
ands r1, r2
ldr r0, [r4, 0x8]
lsls r1, r0
ldr r0, [r3]
orrs r0, r1
str r0, [r3]
adds r3, 0x20
ldr r0, [r4, 0x4]
ands r2, r0
ldr r0, [r4, 0xC]
lsrs r2, r0
ldr r0, [r3]
orrs r0, r2
str r0, [r3]
subs r3, 0x20
_0803DCF6:
adds r6, 0x4
adds r3, 0x20
subs r5, 0x1
cmp r5, 0
bge _0803DCD0
adds r2, r7, 0
mov r5, r12
movs r0, 0x7
ands r0, r5
cmp r0, 0
bne _0803DD12
movs r0, 0xD8
lsls r0, 2
adds r2, r7, r0
_0803DD12:
mov r0, r8
cmp r0, 0x17
ble _0803DCC2
mov r0, r9
add sp, 0x120
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r1}
bx r1
.align 2, 0
_0803DD28: .4byte 0x06000140
_0803DD2C: .4byte gUnknown_80F6120
thumb_func_end sub_803DC6C
thumb_func_start sub_803DD30
sub_803DD30:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r4, _0803DDBC
add sp, r4
adds r4, r0, 0
mov r10, r1
movs r3, 0
movs r5, 0
ldr r0, _0803DDC0
mov r8, r0
movs r6, 0xF
movs r7, 0xF
mov r2, sp
_0803DD50:
ldrb r0, [r4]
lsrs r1, r0, 4
ands r1, r6
strb r1, [r2]
adds r1, r7, 0
ands r1, r0
strb r1, [r2, 0x1]
adds r4, 0x1
adds r2, 0x2
adds r5, 0x2
cmp r5, r8
ble _0803DD50
ldr r1, _0803DDC0
cmp r3, r1
bgt _0803DDF8
movs r0, 0x90
lsls r0, 2
mov r2, sp
adds r2, r0
mov r12, r2
mov r8, r1
mov r2, sp
mov r9, r0
_0803DD7E:
ldrb r1, [r2]
adds r2, 0x1
movs r6, 0x7
ands r6, r1
movs r0, 0x8
ands r1, r0
cmp r1, 0
beq _0803DDC4
ldrb r1, [r2]
adds r2, 0x1
movs r4, 0
cmp r4, r6
bge _0803DDF4
mov r5, r12
adds r0, r5, r3
strb r1, [r0]
adds r3, 0x1
cmp r3, r8
bgt _0803DDF8
mov r5, sp
add r5, r9
ldr r7, _0803DDC0
_0803DDAA:
adds r4, 0x1
cmp r4, r6
bge _0803DDF4
adds r0, r5, r3
strb r1, [r0]
adds r3, 0x1
cmp r3, r7
ble _0803DDAA
b _0803DDF4
.align 2, 0
_0803DDBC: .4byte 0xfffffb80
_0803DDC0: .4byte 0x0000023f
_0803DDC4:
movs r4, 0
cmp r4, r6
bge _0803DDF4
ldrb r1, [r2]
adds r2, 0x1
mov r5, r12
adds r0, r5, r3
strb r1, [r0]
adds r3, 0x1
cmp r3, r8
bgt _0803DDF8
mov r5, sp
add r5, r9
ldr r7, _0803DE78
_0803DDE0:
adds r4, 0x1
cmp r4, r6
bge _0803DDF4
ldrb r1, [r2]
adds r2, 0x1
adds r0, r5, r3
strb r1, [r0]
adds r3, 0x1
cmp r3, r7
ble _0803DDE0
_0803DDF4:
cmp r3, r8
ble _0803DD7E
_0803DDF8:
movs r5, 0
ldr r4, _0803DE78
add r3, sp, 0x240
_0803DDFE:
ldrb r2, [r3, 0x7]
lsls r2, 28
ldrb r0, [r3, 0x6]
lsls r0, 24
movs r1, 0xF0
lsls r1, 20
ands r0, r1
orrs r2, r0
ldrb r0, [r3, 0x5]
lsls r0, 20
movs r1, 0xF0
lsls r1, 16
ands r0, r1
orrs r2, r0
ldrb r0, [r3, 0x4]
lsls r0, 16
movs r1, 0xF0
lsls r1, 12
ands r0, r1
orrs r2, r0
ldrb r0, [r3, 0x3]
lsls r0, 12
movs r1, 0xF0
lsls r1, 8
ands r0, r1
orrs r2, r0
ldrb r0, [r3, 0x2]
lsls r0, 8
movs r1, 0xF0
lsls r1, 4
ands r0, r1
orrs r2, r0
ldrb r0, [r3, 0x1]
lsls r0, 4
movs r1, 0xF0
ands r0, r1
orrs r2, r0
ldrb r1, [r3]
movs r0, 0xF
ands r0, r1
orrs r2, r0
mov r0, r10
adds r0, 0x4
mov r10, r0
subs r0, 0x4
stm r0!, {r2}
adds r3, 0x8
adds r5, 0x8
cmp r5, r4
ble _0803DDFE
movs r3, 0x90
lsls r3, 3
add sp, r3
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803DE78: .4byte 0x0000023f
thumb_func_end sub_803DD30
thumb_func_start CalcStringWidth
CalcStringWidth:
push {r4,r5,lr}
adds r4, r0, 0
movs r5, 0
b _0803DEBA
_0803DE84:
ldrb r1, [r4]
adds r4, 0x1
cmp r1, 0x23
bne _0803DE90
adds r5, 0x8
b _0803DEBA
_0803DE90:
cmp r1, 0x20
bne _0803DE98
adds r5, 0xC
b _0803DEBA
_0803DE98:
movs r0, 0x80
ands r0, r1
cmp r0, 0
beq _0803DEAC
ldrb r0, [r4]
cmp r0, 0
beq _0803DEAC
lsls r1, 8
orrs r1, r0
adds r4, 0x1
_0803DEAC:
adds r0, r1, 0
bl sub_803DEC8
cmp r0, 0
beq _0803DEBA
ldrb r0, [r0, 0x6]
adds r5, r0
_0803DEBA:
ldrb r0, [r4]
cmp r0, 0
bne _0803DE84
adds r0, r5, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end CalcStringWidth
thumb_func_start sub_803DEC8
sub_803DEC8:
push {r4,r5,lr}
adds r3, r0, 0
ldr r0, _0803DEFC
ldr r0, [r0]
ldr r0, [r0, 0x4]
ldr r5, [r0]
ldr r0, _0803DF00
adds r1, r3, r0
ldr r0, _0803DF04
cmp r1, r0
bhi _0803DF08
movs r2, 0xFF
ands r2, r3
movs r1, 0xFF
lsls r1, 8
ands r1, r3
asrs r1, 8
subs r2, 0x20
subs r1, 0xF8
lsls r0, r1, 3
subs r0, r1
lsls r0, 5
adds r0, r2
lsls r0, 3
adds r1, r5, r0
b _0803DF56
.align 2, 0
_0803DEFC: .4byte gDungeonNameBannerFontFile
_0803DF00: .4byte 0xffff0800
_0803DF04: .4byte 0x000007fe
_0803DF08:
movs r4, 0
ldr r0, _0803DF1C
ldr r0, [r0]
subs r2, r0, 0x1
cmp r4, r2
bge _0803DF48
lsrs r0, r2, 31
adds r0, r2, r0
b _0803DF3A
.align 2, 0
_0803DF1C: .4byte gDungeonNameBannerFont
_0803DF20:
lsls r0, r1, 3
adds r0, r5
ldrh r0, [r0, 0x4]
cmp r0, r3
bge _0803DF2E
adds r4, r1, 0x1
b _0803DF30
_0803DF2E:
adds r2, r1, 0
_0803DF30:
cmp r4, r2
bge _0803DF48
adds r0, r4, r2
lsrs r1, r0, 31
adds r0, r1
_0803DF3A:
asrs r1, r0, 1
lsls r0, r1, 3
adds r0, r5
ldrh r0, [r0, 0x4]
cmp r0, r3
bne _0803DF20
adds r4, r1, 0
_0803DF48:
lsls r0, r4, 3
adds r1, r5, r0
ldrh r0, [r1, 0x4]
cmp r0, r3
beq _0803DF56
adds r1, r5, 0
adds r1, 0x8
_0803DF56:
adds r0, r1, 0
pop {r4,r5}
pop {r1}
bx r1
thumb_func_end sub_803DEC8
thumb_func_start sub_803DF60
sub_803DF60:
push {r4-r7,lr}
ldr r0, _0803DFF8
ldr r1, _0803DFFC
bl OpenFileAndGetFileDataPtr
adds r7, r0, 0
ldr r0, [r7, 0x4]
ldr r5, [r0]
ldm r5!, {r4}
ldr r6, _0803E000
cmp r4, 0
beq _0803DF8C
_0803DF78:
adds r0, r6, 0
adds r1, r5, 0
movs r2, 0x20
bl CpuCopy
adds r6, 0x20
adds r5, 0x20
subs r4, 0x1
cmp r4, 0
bne _0803DF78
_0803DF8C:
adds r0, r7, 0
bl CloseFile
ldr r0, _0803E004
ldr r1, _0803DFFC
bl OpenFileAndGetFileDataPtr
adds r7, r0, 0
ldr r5, [r7, 0x4]
ldm r5!, {r4}
ldr r6, _0803E008
cmp r4, 0
beq _0803DFBA
_0803DFA6:
adds r0, r6, 0
adds r1, r5, 0
movs r2, 0x20
bl CpuCopy
adds r6, 0x20
adds r5, 0x20
subs r4, 0x1
cmp r4, 0
bne _0803DFA6
_0803DFBA:
adds r0, r7, 0
bl CloseFile
ldr r0, _0803E00C
ldr r4, _0803DFFC
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r1, _0803E010
str r0, [r1]
ldr r0, _0803E014
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r1, _0803E018
str r0, [r1]
ldr r0, _0803E01C
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r1, _0803E020
str r0, [r1]
ldr r0, _0803E024
adds r1, r4, 0
bl OpenFileAndGetFileDataPtr
ldr r1, _0803E028
str r0, [r1]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803DFF8: .4byte gUnknown_80F61A8
_0803DFFC: .4byte gDungeonFileArchive
_0803E000: .4byte 0x06013400
_0803E004: .4byte gUnknown_80F61B0
_0803E008: .4byte 0x06014000
_0803E00C: .4byte gUnknown_80F61B8
_0803E010: .4byte gUnknown_202EC94
_0803E014: .4byte gUnknown_80F61C4
_0803E018: .4byte gUnknown_202EC98
_0803E01C: .4byte gUnknown_80F61CC
_0803E020: .4byte gUnknown_202EC9C
_0803E024: .4byte gUnknown_80F61D4
_0803E028: .4byte gUnknown_202ECA0
thumb_func_end sub_803DF60
thumb_func_start sub_803E02C
sub_803E02C:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
sub sp, 0xC
bl sub_803E13C
mov r1, sp
ldr r0, _0803E118
ldm r0!, {r2,r3}
stm r1!, {r2,r3}
ldr r1, _0803E11C
mov r0, sp
bl OpenFileAndGetFileDataPtr
adds r7, r0, 0
ldr r0, [r7, 0x4]
ldr r5, [r0]
ldm r5!, {r4}
ldr r6, _0803E120
cmp r4, 0
beq _0803E06C
_0803E058:
adds r0, r6, 0
adds r1, r5, 0
movs r2, 0x20
bl CpuCopy
adds r6, 0x20
adds r5, 0x20
subs r4, 0x1
cmp r4, 0
bne _0803E058
_0803E06C:
ldr r0, _0803E124
ldr r1, [r7, 0x4]
ldr r1, [r1, 0x4]
movs r2, 0x80
bl CpuCopy
adds r0, r7, 0
bl CloseFile
movs r6, 0x80
lsls r6, 2
movs r4, 0
ldr r0, _0803E128
mov r9, r0
ldr r1, _0803E12C
mov r12, r1
movs r7, 0
ldr r2, _0803E130
mov r8, r2
_0803E092:
mov r3, r12
ldrh r0, [r3]
lsls r5, r0, 12
adds r2, r7, 0
movs r3, 0x8
_0803E09C:
mov r0, r9
ldr r1, [r0]
add r1, r8
adds r1, r2
adds r0, r5, 0
orrs r0, r6
strh r0, [r1]
adds r6, 0x1
adds r2, 0x2
subs r3, 0x1
cmp r3, 0
bge _0803E09C
movs r1, 0x2
add r12, r1
adds r7, 0x12
adds r4, 0x1
cmp r4, 0x1C
ble _0803E092
movs r4, 0
ldr r5, _0803E128
ldr r3, _0803E134
movs r2, 0xC0
lsls r2, 8
_0803E0CA:
ldr r0, [r5]
lsls r1, r4, 1
adds r0, r3
adds r0, r1
strh r2, [r0]
adds r4, 0x1
cmp r4, 0x8
ble _0803E0CA
movs r4, 0
ldr r2, _0803E128
movs r6, 0xBE
lsls r6, 1
ldr r5, _0803E138
movs r3, 0xBF
lsls r3, 1
_0803E0E8:
ldr r0, [r2]
lsls r1, r4, 2
adds r0, r1
adds r0, r6
strb r4, [r0]
ldr r0, [r2]
adds r0, r1
adds r0, r5
strb r4, [r0]
ldr r0, [r2]
adds r0, r1
adds r0, r3
strb r4, [r0]
adds r4, 0x1
cmp r4, 0xFF
ble _0803E0E8
add sp, 0xC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803E118: .4byte gUnknown_80F61DC
_0803E11C: .4byte gDungeonFileArchive
_0803E120: .4byte 0x0600c000
_0803E124: .4byte gUnknown_202ECA4
_0803E128: .4byte gDungeonGlobalData
_0803E12C: .4byte gUnknown_80F5F70
_0803E130: .4byte 0x00012a18
_0803E134: .4byte 0x00013554
_0803E138: .4byte 0x0000017d
thumb_func_end sub_803E02C
thumb_func_start sub_803E13C
sub_803E13C:
push {r4,r5,lr}
bl sub_8094C14
ldr r0, _0803E170
ldr r0, [r0]
ldrb r0, [r0, 0xB]
ldr r5, _0803E174
cmp r0, 0
beq _0803E154
movs r0, 0x80
lsls r0, 1
adds r5, r0
_0803E154:
movs r4, 0
_0803E156:
adds r0, r4, 0
adds r0, 0xF0
adds r1, r5, 0
bl SetBGPaletteBufferColorArray
adds r5, 0x4
adds r4, 0x1
cmp r4, 0xF
ble _0803E156
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E170: .4byte gUnknown_203B46C
_0803E174: .4byte gUnknown_202D038
thumb_func_end sub_803E13C
thumb_func_start sub_803E178
sub_803E178:
push {r4,lr}
bl sub_8043D10
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0803E1E0
ldr r0, _0803E1AC
ldr r2, [r0]
ldr r3, _0803E1B0
adds r1, r2, r3
ldrb r1, [r1]
adds r3, r0, 0
cmp r1, 0x15
bne _0803E1BC
ldr r1, _0803E1B4
adds r0, r2, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803E1BC
ldr r3, _0803E1B8
adds r1, r2, r3
movs r0, 0x1C
strh r0, [r1]
b _0803E204
.align 2, 0
_0803E1AC: .4byte gDungeonGlobalData
_0803E1B0: .4byte 0x00000644
_0803E1B4: .4byte 0x000037fe
_0803E1B8: .4byte 0x00003a12
_0803E1BC:
ldr r4, [r3]
ldr r1, _0803E1D8
adds r0, r4, r1
ldrb r0, [r0]
bl GetStairDirection
lsls r0, 24
movs r1, 0x16
cmp r0, 0
beq _0803E1D2
movs r1, 0x17
_0803E1D2:
ldr r2, _0803E1DC
adds r0, r4, r2
b _0803E202
.align 2, 0
_0803E1D8: .4byte 0x00000644
_0803E1DC: .4byte 0x00003a12
_0803E1E0:
cmp r0, 0x1
bne _0803E1F8
ldr r0, _0803E1F0
ldr r0, [r0]
ldr r3, _0803E1F4
adds r0, r3
movs r1, 0x6
b _0803E202
.align 2, 0
_0803E1F0: .4byte gDungeonGlobalData
_0803E1F4: .4byte 0x00003a12
_0803E1F8:
ldr r0, _0803E20C
ldr r0, [r0]
ldr r1, _0803E210
adds r0, r1
movs r1, 0x18
_0803E202:
strh r1, [r0]
_0803E204:
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803E20C: .4byte gDungeonGlobalData
_0803E210: .4byte 0x00003a12
thumb_func_end sub_803E178
thumb_func_start sub_803E214
sub_803E214:
push {lr}
ldr r0, _0803E23C
ldr r0, [r0]
bl CloseFile
ldr r0, _0803E240
ldr r0, [r0]
bl CloseFile
ldr r0, _0803E244
ldr r0, [r0]
bl CloseFile
ldr r0, _0803E248
ldr r0, [r0]
bl CloseFile
pop {r0}
bx r0
.align 2, 0
_0803E23C: .4byte gUnknown_202EC94
_0803E240: .4byte gUnknown_202EC98
_0803E244: .4byte gUnknown_202EC9C
_0803E248: .4byte gUnknown_202ECA0
thumb_func_end sub_803E214
thumb_func_start nullsub_56
nullsub_56:
bx lr
thumb_func_end nullsub_56
thumb_func_start sub_803E250
sub_803E250:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
ldr r1, _0803E3FC
ldr r0, _0803E400
str r0, [r1]
ldr r0, _0803E404
movs r1, 0
str r1, [r0]
ldr r0, _0803E408
strb r1, [r0]
ldr r0, _0803E40C
strh r1, [r0]
ldr r5, _0803E410
ldrh r0, [r5, 0x6]
movs r3, 0xF
adds r2, r3, 0
ands r2, r0
ldrh r4, [r5]
ldr r1, _0803E414
adds r0, r1, 0
ands r0, r4
ldr r4, _0803E418
ands r0, r4
ldr r6, _0803E41C
ands r0, r6
ldr r7, _0803E420
ands r0, r7
ldr r4, _0803E424
mov r12, r4
ands r0, r4
ldr r4, _0803E428
ands r0, r4
strh r0, [r5]
movs r0, 0x80
lsls r0, 7
strh r0, [r5, 0x2]
movs r0, 0
strh r0, [r5, 0x4]
ldr r0, _0803E42C
mov r10, r0
ands r2, r0
subs r0, 0x1
mov r9, r0
ands r2, r0
subs r0, 0x2
mov r8, r0
ands r2, r0
strh r2, [r5, 0x6]
ldr r2, _0803E430
ldrh r0, [r2, 0x6]
ands r3, r0
ldrh r0, [r2]
ands r1, r0
ldr r0, _0803E418
ands r1, r0
ands r1, r6
ands r1, r7
mov r7, r12
ands r1, r7
ands r1, r4
strh r1, [r2]
movs r0, 0
strh r0, [r2, 0x2]
movs r0, 0xB8
lsls r0, 7
strh r0, [r2, 0x4]
mov r0, r10
ands r3, r0
mov r1, r9
ands r3, r1
mov r7, r8
ands r3, r7
strh r3, [r2, 0x6]
movs r0, 0
mov r8, r0
_0803E2EE:
movs r1, 0
mov r9, r1
mov r2, r8
lsls r0, r2, 3
lsls r2, 1
mov r12, r2
mov r3, r8
adds r3, 0x1
str r3, [sp]
mov r10, r1
add r0, r8
lsls r5, r0, 3
ldr r4, _0803E434
adds r4, r5, r4
str r4, [sp, 0x4]
ldr r7, _0803E438
adds r6, r5, r7
ldr r0, _0803E43C
adds r3, r5, r0
ldr r1, _0803E440
adds r4, r5, r1
_0803E318:
mov r7, r10
adds r2, r5, r7
ldrh r1, [r3]
ldr r0, _0803E414
ands r0, r1
ldr r1, _0803E418
ands r0, r1
ldr r1, _0803E41C
ands r0, r1
ldr r1, _0803E420
ands r0, r1
ldr r1, _0803E424
ands r0, r1
strh r0, [r3]
ldr r1, [r4]
movs r7, 0x3
ands r1, r7
lsls r1, 14
ldr r7, _0803E428
ands r0, r7
orrs r0, r1
strh r0, [r3]
ldrh r1, [r3, 0x2]
ldr r0, _0803E444
ands r0, r1
strh r0, [r3, 0x2]
ldr r1, _0803E440
adds r1, 0x4
adds r2, r1
ldr r1, [r2]
movs r2, 0x3
ands r1, r2
lsls r1, 14
ands r0, r7
orrs r0, r1
strh r0, [r3, 0x2]
ldr r1, [r6]
ldr r0, _0803E448
ands r1, r0
ldrh r2, [r3, 0x4]
movs r0, 0xFC
lsls r0, 8
ands r0, r2
orrs r0, r1
ldr r7, _0803E41C
ands r0, r7
movs r1, 0xC0
lsls r1, 4
orrs r0, r1
movs r2, 0
orrs r0, r2
ldr r1, _0803E44C
ands r0, r1
strh r0, [r3, 0x4]
ldrh r1, [r3, 0x6]
ldr r0, _0803E42C
ands r0, r1
ldr r1, _0803E450
ands r0, r1
strh r0, [r3, 0x6]
mov r7, r9
lsls r1, r7, 2
mov r0, r12
add r0, r8
lsls r0, 3
adds r1, r0
ldr r0, _0803E454
adds r1, r0, r1
ldr r0, [r1]
ldr r1, [sp, 0x4]
str r0, [r1]
adds r1, 0xC
str r1, [sp, 0x4]
adds r6, 0xC
adds r3, 0xC
adds r4, 0xC
movs r2, 0xC
add r10, r2
movs r7, 0x1
add r9, r7
mov r0, r9
cmp r0, 0x5
ble _0803E318
ldr r1, [sp]
mov r8, r1
cmp r1, 0x1
ble _0803E2EE
movs r2, 0
ldr r3, _0803E458
ldr r0, [r3]
ldr r4, _0803E45C
adds r0, r4
movs r1, 0x1
strb r1, [r0]
ldr r0, [r3]
ldr r7, _0803E460
adds r0, r7
strb r1, [r0]
ldr r0, _0803E464
str r2, [r0]
movs r0, 0xF8
ldr r1, _0803E468
movs r3, 0
bl SetBGPaletteBufferColorRGB
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803E3FC: .4byte gUnknown_202EDD0
_0803E400: .4byte 0x000003e7
_0803E404: .4byte gUnknown_202EDD4
_0803E408: .4byte gUnknown_203B40D
_0803E40C: .4byte gUnknown_202EDE8
_0803E410: .4byte gUnknown_202EDC0
_0803E414: .4byte 0x0000feff
_0803E418: .4byte 0x0000fdff
_0803E41C: .4byte 0x0000f3ff
_0803E420: .4byte 0x0000efff
_0803E424: .4byte 0x0000dfff
_0803E428: .4byte 0x00003fff
_0803E42C: .4byte 0x0000fffe
_0803E430: .4byte gUnknown_202EDB8
_0803E434: .4byte gUnknown_202ED30
_0803E438: .4byte gUnknown_80F6224
_0803E43C: .4byte gUnknown_202ED28
_0803E440: .4byte gUnknown_80F621C
_0803E444: .4byte 0x0000c1ff
_0803E448: .4byte 0x000003ff
_0803E44C: .4byte 0x00000fff
_0803E450: .4byte 0x0000fffd
_0803E454: .4byte gUnknown_80F61EC
_0803E458: .4byte gDungeonGlobalData
_0803E45C: .4byte 0x00018217
_0803E460: .4byte 0x00018218
_0803E464: .4byte gUnknown_202EDC8
_0803E468: .4byte gUnknown_202D058
thumb_func_end sub_803E250
thumb_func_start sub_803E46C
sub_803E46C:
push {lr}
adds r1, r0, 0
ldr r0, _0803E480
ldrb r0, [r0]
cmp r0, 0
beq _0803E484
adds r0, r1, 0
bl sub_803E490
b _0803E48A
.align 2, 0
_0803E480: .4byte gUnknown_203B40C
_0803E484:
adds r0, r1, 0
bl sub_803E668
_0803E48A:
pop {r0}
bx r0
thumb_func_end sub_803E46C
thumb_func_start sub_803E490
sub_803E490:
push {r4,r5,lr}
sub sp, 0x8
ldr r1, _0803E4D8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
bl xxx_draw_string_80524F0
bl sub_8085F78
movs r0, 0x1
bl sub_803F580
ldr r2, _0803E4DC
ldr r1, [r2]
ldr r3, _0803E4E0
adds r0, r1, r3
ldrb r0, [r0]
cmp r0, 0
beq _0803E4EC
ldr r4, _0803E4E4
adds r1, r4
movs r0, 0x2
strb r0, [r1]
ldr r1, [r2]
ldr r2, _0803E4E8
adds r0, r1, r2
movs r3, 0
ldrsh r0, [r0, r3]
subs r4, 0x16
adds r1, r4
movs r2, 0
ldrsh r1, [r1, r2]
bl SetBG2RegOffsets
b _0803E4FC
.align 2, 0
_0803E4D8: .4byte gUnknown_202EDD4
_0803E4DC: .4byte gDungeonGlobalData
_0803E4E0: .4byte 0x0001821a
_0803E4E4: .4byte 0x00018208
_0803E4E8: .4byte 0x000181f0
_0803E4EC:
ldr r3, _0803E628
adds r1, r3
movs r0, 0x3
strb r0, [r1]
movs r0, 0
movs r1, 0
bl SetBG2RegOffsets
_0803E4FC:
ldr r4, _0803E62C
ldr r2, [r4]
ldr r5, _0803E630
adds r0, r2, r5
movs r1, 0
ldrsh r0, [r0, r1]
ldr r3, _0803E634
adds r1, r2, r3
movs r3, 0
ldrsh r1, [r1, r3]
ldr r3, _0803E638
adds r2, r3
ldr r2, [r2]
subs r1, r2
bl SetBG3RegOffsets
bl sub_806CC10
bl sub_804522C
bl sub_803F9CC
ldr r0, [r4]
adds r0, r5
bl sub_800F7D0
ldr r1, [r4]
ldrh r2, [r1, 0x12]
movs r3, 0x12
ldrsh r0, [r1, r3]
cmp r0, 0x63
bgt _0803E540
adds r0, r2, 0x1
strh r0, [r1, 0x12]
_0803E540:
ldr r0, [r4]
adds r0, r5
bl sub_800E90C
bl sub_8042E5C
ldr r0, _0803E63C
ldr r0, [r0]
cmp r0, 0
beq _0803E562
cmp r0, 0x3
beq _0803E562
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0x4]
cmp r0, 0x6
bne _0803E566
_0803E562:
bl sub_8040894
_0803E566:
bl sub_803ECE0
bl sub_803EDF0
ldr r0, _0803E62C
ldr r3, [r0]
ldr r4, _0803E644
adds r0, r3, r4
ldrb r0, [r0]
cmp r0, 0
beq _0803E5A2
ldr r1, _0803E648
adds r0, r3, r1
ldr r0, [r0]
cmp r0, 0x3
beq _0803E5A2
ldr r0, _0803E64C
ldrb r0, [r0]
ldr r1, _0803E650
ldr r2, _0803E654
ldr r2, [r2]
str r2, [sp]
movs r4, 0xBE
lsls r4, 1
adds r2, r3, r4
str r2, [sp, 0x4]
movs r2, 0xA0
movs r3, 0x20
bl sub_8004AF0
_0803E5A2:
ldr r0, _0803E640
ldr r0, [r0]
ldrb r0, [r0, 0xA]
bl nullsub_8
bl sub_8005180
bl nullsub_12
bl sub_80060EC
ldr r1, _0803E658
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0803E65C
ldr r0, [r0]
bl IncrementPlayTime
bl sub_800CB20
bl LoadBufferedInputs
bl CopySpritesToOam
bl nullsub_13
bl sub_8005304
bl nullsub_14
bl TransferBGPaletteBuffer
bl sub_8009908
bl xxx_call_update_bg_vram
bl sub_8040788
bl xxx_call_update_bg_sound_input
ldr r0, _0803E62C
ldr r0, [r0]
ldr r1, _0803E660
adds r0, r1
movs r1, 0
strb r1, [r0]
bl sub_8083F58
bl sub_8011860
bl sub_8040B60
movs r0, 0
bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r1, _0803E664
ldr r0, [r1]
subs r0, 0x1
str r0, [r1]
add sp, 0x8
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E628: .4byte 0x00018208
_0803E62C: .4byte gDungeonGlobalData
_0803E630: .4byte 0x000181f0
_0803E634: .4byte 0x000181f2
_0803E638: .4byte 0x000181fc
_0803E63C: .4byte gUnknown_202EDD0
_0803E640: .4byte gUnknown_203B46C
_0803E644: .4byte 0x00018215
_0803E648: .4byte 0x0001c06c
_0803E64C: .4byte gUnknown_203B40D
_0803E650: .4byte gUnknown_202EE8C
_0803E654: .4byte gUnknown_202EDC8
_0803E658: .4byte gUnknown_202EDCC
_0803E65C: .4byte gPlayTimeRef
_0803E660: .4byte 0x00018213
_0803E664: .4byte gUnknown_202EDD4
thumb_func_end sub_803E490
thumb_func_start sub_803E668
sub_803E668:
push {r4,lr}
ldr r4, _0803E6F0
ldr r0, [r4]
adds r0, 0x1
str r0, [r4]
ldr r0, _0803E6F4
ldr r0, [r0]
ldrb r0, [r0, 0xA]
bl nullsub_8
bl sub_8005180
bl nullsub_12
movs r0, 0
movs r1, 0
bl sub_8005838
bl sub_80060EC
ldr r1, _0803E6F8
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
ldr r0, _0803E6FC
ldr r0, [r0]
bl IncrementPlayTime
bl sub_800CB20
bl LoadBufferedInputs
bl CopySpritesToOam
bl nullsub_13
bl sub_8005304
bl nullsub_14
bl TransferBGPaletteBuffer
bl sub_8009908
bl xxx_call_update_bg_vram
bl xxx_call_update_bg_sound_input
ldr r0, _0803E700
ldr r0, [r0]
ldr r1, _0803E704
adds r0, r1
movs r1, 0
strb r1, [r0]
bl sub_8011860
movs r0, 0
bl ResetSprites
movs r0, 0
bl nullsub_10
ldr r0, [r4]
subs r0, 0x1
str r0, [r4]
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0803E6F0: .4byte gUnknown_202EDD4
_0803E6F4: .4byte gUnknown_203B46C
_0803E6F8: .4byte gUnknown_202EDCC
_0803E6FC: .4byte gPlayTimeRef
_0803E700: .4byte gDungeonGlobalData
_0803E704: .4byte 0x00018213
thumb_func_end sub_803E668
thumb_func_start sub_803E708
sub_803E708:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
cmp r4, 0
beq _0803E71E
_0803E712:
adds r0, r5, 0
bl sub_803E46C
subs r4, 0x1
cmp r4, 0
bne _0803E712
_0803E71E:
pop {r4,r5}
pop {r0}
bx r0
thumb_func_end sub_803E708
thumb_func_start sub_803E724
sub_803E724:
push {r4-r6,lr}
adds r4, r0, 0
ldr r5, _0803E744
movs r6, 0xF0
_0803E72C:
adds r0, r4, 0
bl sub_803E46C
ldrh r1, [r5]
adds r0, r6, 0
ands r0, r1
cmp r0, 0
bne _0803E72C
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803E744: .4byte gRealInputs
thumb_func_end sub_803E724
thumb_func_start sub_803E748
sub_803E748:
push {r4,r5,lr}
movs r5, 0x1F
ldr r1, _0803E7B8
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0
str r0, [r1]
movs r0, 0x1
movs r1, 0x1F
bl sub_803E874
movs r4, 0
_0803E762:
cmp r4, 0x1F
bgt _0803E780
subs r5, 0x2
cmp r5, 0
bgt _0803E780
movs r5, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E7C0
ldr r0, [r0]
ldr r1, _0803E7C4
adds r0, r1
strb r5, [r0]
_0803E780:
cmp r4, 0xB
ble _0803E790
ldr r1, _0803E7BC
ldr r0, [r1]
cmp r0, 0x1E
bgt _0803E790
adds r0, 0x1
str r0, [r1]
_0803E790:
movs r0, 0x1
adds r1, r5, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
adds r4, 0x1
cmp r4, 0x2B
ble _0803E762
ldr r1, _0803E7B8
movs r0, 0
strb r0, [r1]
ldr r1, _0803E7BC
movs r0, 0x1F
str r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E7B8: .4byte gUnknown_203B40D
_0803E7BC: .4byte gUnknown_202EDC8
_0803E7C0: .4byte gDungeonGlobalData
_0803E7C4: .4byte 0x00018217
thumb_func_end sub_803E748
thumb_func_start sub_803E7C8
sub_803E7C8:
push {r4,r5,lr}
movs r4, 0x1F
ldr r1, _0803E820
movs r0, 0x1
strb r0, [r1]
ldr r1, _0803E824
movs r0, 0
str r0, [r1]
movs r0, 0x5
bl sub_803E46C
movs r5, 0
_0803E7E0:
movs r0, 0x1
adds r1, r4, 0
bl sub_803E874
cmp r5, 0x1F
bgt _0803E806
subs r4, 0x2
cmp r4, 0
bgt _0803E806
movs r4, 0
movs r0, 0x1
movs r1, 0
bl sub_803EAF0
ldr r0, _0803E828
ldr r0, [r0]
ldr r1, _0803E82C
adds r0, r1
strb r4, [r0]
_0803E806:
movs r0, 0x5
bl sub_803E46C
adds r5, 0x1
cmp r5, 0x2B
ble _0803E7E0
ldr r1, _0803E820
movs r0, 0
strb r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E820: .4byte gUnknown_203B40D
_0803E824: .4byte gUnknown_202EDC8
_0803E828: .4byte gDungeonGlobalData
_0803E82C: .4byte 0x00018217
thumb_func_end sub_803E7C8
thumb_func_start sub_803E830
sub_803E830:
push {r4,r5,lr}
ldr r1, _0803E86C
movs r0, 0x1
strb r0, [r1]
ldr r5, _0803E870
movs r4, 0x1F
_0803E83C:
movs r0, 0
movs r1, 0
bl sub_803E874
movs r0, 0x5
bl sub_803E46C
ldr r0, [r5]
cmp r0, 0
ble _0803E854
subs r0, 0x1
str r0, [r5]
_0803E854:
subs r4, 0x1
cmp r4, 0
bge _0803E83C
ldr r0, _0803E870
movs r1, 0
str r1, [r0]
ldr r0, _0803E86C
strb r1, [r0]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803E86C: .4byte gUnknown_203B40D
_0803E870: .4byte gUnknown_202EDC8
thumb_func_end sub_803E830
thumb_func_start sub_803E874
sub_803E874:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x8
mov r9, r1
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldr r0, _0803E9A4
ldr r0, [r0]
ldr r5, [r0, 0x4]
ldr r1, _0803E9A8
ldr r0, _0803E9AC
ldr r2, [r0]
ldr r0, _0803E9B0
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
movs r0, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
movs r6, 0x1
movs r4, 0x9F
_0803E8AA:
ldr r1, _0803E9AC
mov r8, r1
ldr r2, [r1]
ldr r7, _0803E9B0
ldr r3, [r7]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
adds r0, r6, 0
adds r1, r5, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r6, 0x1
subs r4, 0x1
cmp r4, 0
bne _0803E8AA
ldr r3, [r7]
ldr r1, _0803E9B4
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0
beq _0803E8E2
ldr r2, _0803E9B8
adds r0, r3, r2
ldr r0, [r0]
cmp r0, 0x3
bne _0803E8FC
_0803E8E2:
ldr r1, _0803E9BC
mov r2, r8
ldr r0, [r2]
str r0, [sp]
movs r2, 0xBE
lsls r2, 1
adds r0, r3, r2
str r0, [sp, 0x4]
movs r0, 0x1
movs r2, 0xA0
movs r3, 0x20
bl sub_8004AF0
_0803E8FC:
adds r6, 0x20
ldr r5, _0803E9C0
movs r4, 0x20
_0803E902:
ldr r0, _0803E9AC
ldr r2, [r0]
ldr r0, _0803E9B0
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
adds r0, r6, 0
adds r1, r5, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r6, 0x1
subs r4, 0x1
cmp r4, 0
bne _0803E902
mov r1, r10
cmp r1, 0
beq _0803E948
movs r6, 0xE0
ldr r0, _0803E9C4
ldr r0, [r0]
ldr r5, [r0, 0x4]
movs r4, 0x10
_0803E932:
adds r0, r6, 0
adds r1, r5, 0
mov r2, r9
movs r3, 0
bl SetBGPaletteBufferColorRGB
adds r5, 0x4
adds r6, 0x1
subs r4, 0x1
cmp r4, 0
bne _0803E932
_0803E948:
ldr r1, _0803E9C8
ldr r4, _0803E9AC
ldr r2, [r4]
movs r0, 0xF8
movs r3, 0
bl SetBGPaletteBufferColorRGB
ldr r0, _0803E9B0
ldr r0, [r0]
ldr r2, _0803E9CC
adds r0, r2
ldr r0, [r0]
ldr r5, [r0, 0x4]
movs r6, 0x80
lsls r6, 1
adds r7, r4, 0
movs r4, 0xD0
_0803E96A:
ldr r2, [r7]
ldr r0, _0803E9B0
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
adds r0, r6, 0
adds r1, r5, 0
bl SetBGPaletteBufferColorRGB
ldr r2, [r7]
adds r0, r6, 0
adds r1, r5, 0
movs r3, 0
bl nullsub_4
adds r5, 0x4
adds r6, 0x1
subs r4, 0x1
cmp r4, 0
bne _0803E96A
add sp, 0x8
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803E9A4: .4byte gUnknown_202EE88
_0803E9A8: .4byte gUnknown_80F62AC
_0803E9AC: .4byte gUnknown_202EDC8
_0803E9B0: .4byte gDungeonGlobalData
_0803E9B4: .4byte 0x00018215
_0803E9B8: .4byte 0x0001c06c
_0803E9BC: .4byte gUnknown_202EE8C
_0803E9C0: .4byte gUnknown_202ECA4
_0803E9C4: .4byte gDungeonNameBannerPalette
_0803E9C8: .4byte gUnknown_202D058
_0803E9CC: .4byte 0x000181e4
thumb_func_end sub_803E874
thumb_func_start sub_803E9D0
sub_803E9D0:
push {r4-r7,lr}
ldr r0, _0803EA04
ldr r0, [r0]
ldr r1, _0803EA08
adds r0, r1
ldr r0, [r0]
ldr r4, [r0, 0x4]
movs r6, 0x80
lsls r6, 1
ldr r7, _0803EA0C
movs r5, 0xD0
_0803E9E6:
ldr r2, [r7]
adds r0, r6, 0
adds r1, r4, 0
movs r3, 0
bl nullsub_4
adds r4, 0x4
adds r6, 0x1
subs r5, 0x1
cmp r5, 0
bne _0803E9E6
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EA04: .4byte gDungeonGlobalData
_0803EA08: .4byte 0x000181e4
_0803EA0C: .4byte gUnknown_202EDC8
thumb_func_end sub_803E9D0
thumb_func_start sub_803EA10
sub_803EA10:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x8
ldr r0, _0803EACC
ldr r0, [r0]
ldr r4, [r0, 0x4]
ldr r1, _0803EAD0
ldr r0, _0803EAD4
ldr r2, [r0]
ldr r0, _0803EAD8
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
movs r0, 0
bl SetBGPaletteBufferColorRGB
adds r4, 0x4
movs r6, 0x1
movs r5, 0x9F
_0803EA3A:
ldr r1, _0803EAD4
mov r8, r1
ldr r2, [r1]
ldr r7, _0803EAD8
ldr r3, [r7]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
adds r0, r6, 0
adds r1, r4, 0
bl SetBGPaletteBufferColorRGB
adds r4, 0x4
adds r6, 0x1
subs r5, 0x1
cmp r5, 0
bne _0803EA3A
ldr r3, [r7]
ldr r1, _0803EADC
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0
beq _0803EA72
ldr r2, _0803EAE0
adds r0, r3, r2
ldr r0, [r0]
cmp r0, 0x3
bne _0803EA8C
_0803EA72:
ldr r1, _0803EAE4
mov r2, r8
ldr r0, [r2]
str r0, [sp]
movs r2, 0xBE
lsls r2, 1
adds r0, r3, r2
str r0, [sp, 0x4]
movs r0, 0x1
movs r2, 0xA0
movs r3, 0x20
bl sub_8004AF0
_0803EA8C:
adds r6, 0x20
ldr r4, _0803EAE8
movs r5, 0x20
_0803EA92:
ldr r7, _0803EAD4
ldr r2, [r7]
ldr r0, _0803EAD8
ldr r3, [r0]
movs r0, 0xBE
lsls r0, 1
adds r3, r0
adds r0, r6, 0
adds r1, r4, 0
bl SetBGPaletteBufferColorRGB
adds r4, 0x4
adds r6, 0x1
subs r5, 0x1
cmp r5, 0
bne _0803EA92
ldr r1, _0803EAEC
ldr r2, [r7]
movs r0, 0xF8
movs r3, 0
bl SetBGPaletteBufferColorRGB
add sp, 0x8
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EACC: .4byte gUnknown_202EE88
_0803EAD0: .4byte gUnknown_80F62AC
_0803EAD4: .4byte gUnknown_202EDC8
_0803EAD8: .4byte gDungeonGlobalData
_0803EADC: .4byte 0x00018215
_0803EAE0: .4byte 0x0001c06c
_0803EAE4: .4byte gUnknown_202EE8C
_0803EAE8: .4byte gUnknown_202ECA4
_0803EAEC: .4byte gUnknown_202D058
thumb_func_end sub_803EA10
thumb_func_start sub_803EAF0
sub_803EAF0:
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
ldr r0, _0803EB20
ldr r0, [r0]
cmp r4, r0
bne _0803EB00
b _0803EC88
_0803EB00:
cmp r4, 0x5
bne _0803EB06
b _0803EC1C
_0803EB06:
cmp r4, 0x5
bhi _0803EB2E
cmp r4, 0x2
bne _0803EB10
b _0803EBFC
_0803EB10:
cmp r4, 0x2
bhi _0803EB24
cmp r4, 0
beq _0803EB70
cmp r4, 0x1
beq _0803EB50
b _0803EC84
.align 2, 0
_0803EB20: .4byte gUnknown_202EDD0
_0803EB24:
cmp r4, 0x3
beq _0803EB98
cmp r4, 0x4
beq _0803EBFC
b _0803EC84
_0803EB2E:
cmp r4, 0x8
bne _0803EB34
b _0803EC34
_0803EB34:
cmp r4, 0x8
bhi _0803EB42
cmp r4, 0x6
beq _0803EBBC
cmp r4, 0x7
beq _0803EBDC
b _0803EC84
_0803EB42:
cmp r4, 0xA
bne _0803EB48
b _0803EC80
_0803EB48:
cmp r4, 0xA
bcs _0803EB4E
b _0803EC54
_0803EB4E:
b _0803EC84
_0803EB50:
ldr r0, _0803EB6C
ldrb r0, [r0]
cmp r0, 0
beq _0803EB5E
movs r0, 0
bl sub_8052210
_0803EB5E:
bl ResetUnusedInputStruct
bl sub_803EC94
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EB6C: .4byte gUnknown_203B40C
_0803EB70:
bl sub_803EC94
movs r0, 0
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, _0803EB94
ldrb r0, [r0]
cmp r0, 0
bne _0803EB88
b _0803EC84
_0803EB88:
bl sub_8040A84
movs r0, 0
bl sub_8040ABC
b _0803EC84
.align 2, 0
_0803EB94: .4byte gUnknown_203B40C
_0803EB98:
ldr r0, _0803EBB4
movs r1, 0x1
movs r2, 0x1
bl sub_800641C
ldr r0, _0803EBB8
ldrb r0, [r0]
cmp r0, 0
beq _0803EC84
movs r0, 0x1
bl sub_8040ABC
b _0803EC84
.align 2, 0
_0803EBB4: .4byte gUnknown_80F62B0
_0803EBB8: .4byte gUnknown_203B40C
_0803EBBC:
ldr r0, _0803EBD4
ldrb r0, [r0]
cmp r0, 0
beq _0803EBCA
movs r0, 0
bl sub_8052210
_0803EBCA:
bl ResetUnusedInputStruct
ldr r0, _0803EBD8
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EBD4: .4byte gUnknown_203B40C
_0803EBD8: .4byte gUnknown_80F6310
_0803EBDC:
ldr r0, _0803EBF4
ldrb r0, [r0]
cmp r0, 0
beq _0803EBEA
movs r0, 0
bl sub_8052210
_0803EBEA:
bl ResetUnusedInputStruct
ldr r0, _0803EBF8
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EBF4: .4byte gUnknown_203B40C
_0803EBF8: .4byte gUnknown_80F6370
_0803EBFC:
ldr r0, _0803EC18
ldrb r0, [r0]
cmp r0, 0
beq _0803EC0A
movs r0, 0
bl sub_8052210
_0803EC0A:
bl ResetUnusedInputStruct
bl sub_803EC94
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EC18: .4byte gUnknown_203B40C
_0803EC1C:
ldr r0, _0803EC30
ldrb r0, [r0]
cmp r0, 0
beq _0803EC2A
movs r0, 0
bl sub_8052210
_0803EC2A:
movs r0, 0
movs r1, 0x1
b _0803EC6E
.align 2, 0
_0803EC30: .4byte gUnknown_203B40C
_0803EC34:
ldr r0, _0803EC50
ldrb r0, [r0]
cmp r0, 0
beq _0803EC46
bl sub_8083D44
movs r0, 0
bl sub_8052210
_0803EC46:
movs r0, 0x2
adds r1, r5, 0
bl sub_801602C
b _0803EC84
.align 2, 0
_0803EC50: .4byte gUnknown_203B40C
_0803EC54:
ldr r0, _0803EC78
ldrb r0, [r0]
cmp r0, 0
beq _0803EC66
movs r0, 0
bl sub_8052210
bl sub_8083D44
_0803EC66:
bl ResetUnusedInputStruct
ldr r0, _0803EC7C
movs r1, 0
_0803EC6E:
movs r2, 0x1
bl sub_800641C
b _0803EC84
.align 2, 0
_0803EC78: .4byte gUnknown_203B40C
_0803EC7C: .4byte gUnknown_80F63D0
_0803EC80:
bl sub_8083D44
_0803EC84:
ldr r0, _0803EC90
str r4, [r0]
_0803EC88:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803EC90: .4byte gUnknown_202EDD0
thumb_func_end sub_803EAF0
thumb_func_start sub_803EC94
sub_803EC94:
push {lr}
ldr r0, _0803ECB0
movs r1, 0
strh r1, [r0, 0x1E]
strh r1, [r0, 0x20]
strh r1, [r0, 0xC]
strh r1, [r0, 0xE]
strh r1, [r0, 0x14]
adds r0, 0x28
bl sub_801317C
pop {r0}
bx r0
.align 2, 0
_0803ECB0: .4byte gUnknown_202EE10
thumb_func_end sub_803EC94
thumb_func_start sub_803ECB4
sub_803ECB4:
push {r4,r5,lr}
adds r5, r0, 0
lsls r4, r1, 24
lsrs r4, 24
ldr r1, _0803ECDC
movs r0, 0xA
str r0, [r1]
movs r0, 0
bl sub_8052210
bl ResetUnusedInputStruct
adds r0, r5, 0
movs r1, 0x1
adds r2, r4, 0
bl sub_800641C
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803ECDC: .4byte gUnknown_202EDD0
thumb_func_end sub_803ECB4
thumb_func_start sub_803ECE0
sub_803ECE0:
push {lr}
ldr r1, _0803ED24
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
cmp r0, 0
bge _0803ECF2
movs r0, 0
str r0, [r1]
_0803ECF2:
ldr r0, [r1]
cmp r0, 0xB
ble _0803ECFC
movs r0, 0
str r0, [r1]
_0803ECFC:
ldr r0, _0803ED28
ldr r2, [r0]
ldr r0, [r1]
cmp r0, 0
bge _0803ED08
adds r0, 0x3
_0803ED08:
asrs r1, r0, 2
lsls r0, r1, 3
adds r0, r1
lsls r0, 6
ldr r1, [r2, 0x4]
adds r1, r0
movs r2, 0x90
lsls r2, 2
ldr r0, _0803ED2C
bl sub_80098BC
pop {r0}
bx r0
.align 2, 0
_0803ED24: .4byte gUnknown_202EDD8
_0803ED28: .4byte gUnknown_202EC94
_0803ED2C: .4byte 0x06014400
thumb_func_end sub_803ECE0
thumb_func_start sub_803ED30
sub_803ED30:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
adds r5, r0, 0
adds r7, r1, 0
mov r9, r3
lsls r2, 24
lsrs r2, 24
mov r8, r2
cmp r5, 0
beq _0803EDDA
ldr r0, _0803EDAC
ldr r0, [r0]
ldr r1, _0803EDB0
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803EDDA
movs r4, 0
ldr r1, _0803EDB4
movs r2, 0
ldrsh r0, [r1, r2]
cmp r0, 0
beq _0803ED78
adds r6, r1, 0
_0803ED64:
movs r0, 0x29
bl sub_803E46C
adds r4, 0x1
cmp r4, 0x13
bgt _0803ED78
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0803ED64
_0803ED78:
adds r0, r5, 0
mov r1, r8
bl sub_803EF90
ldr r3, _0803EDB4
movs r2, 0
movs r1, 0x3C
strh r1, [r3]
str r7, [r3, 0x4]
ldrh r1, [r7, 0x26]
str r1, [r3, 0x8]
lsls r1, r0, 1
adds r1, r0
lsls r1, 8
negs r1, r1
str r1, [r3, 0xC]
str r2, [r3, 0x10]
mov r2, r9
cmp r2, 0
bge _0803EDC8
ldr r0, _0803EDB8
cmp r5, r0
bge _0803EDBC
movs r0, 0x6
b _0803EDCA
.align 2, 0
_0803EDAC: .4byte gDungeonGlobalData
_0803EDB0: .4byte 0x0001820a
_0803EDB4: .4byte gUnknown_202EDE8
_0803EDB8: .4byte 0xfffffc19
_0803EDBC:
cmp r5, 0
blt _0803EDC4
movs r0, 0xA
b _0803EDCA
_0803EDC4:
movs r0, 0x3
b _0803EDCA
_0803EDC8:
mov r0, r9
_0803EDCA:
strh r0, [r3, 0x2]
ldr r0, _0803EDE8
ldr r1, _0803EDEC
ldr r1, [r1]
adds r1, 0x18
movs r2, 0x80
bl sub_80098BC
_0803EDDA:
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EDE8: .4byte 0x060142c0
_0803EDEC: .4byte gDungeonGlobalData
thumb_func_end sub_803ED30
thumb_func_start sub_803EDF0
sub_803EDF0:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
ldr r6, _0803EE18
movs r1, 0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0803EE06
b _0803EF42
_0803EE06:
ldr r0, [r6, 0x4]
bl EntityExists
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _0803EE1C
strh r0, [r6]
b _0803EF42
.align 2, 0
_0803EE18: .4byte gUnknown_202EDE8
_0803EE1C:
ldr r1, [r6, 0x4]
ldr r0, [r6, 0x8]
ldrh r2, [r1, 0x26]
cmp r0, r2
beq _0803EE2C
movs r0, 0
strh r0, [r6]
b _0803EF42
_0803EE2C:
ldrh r0, [r6]
subs r0, 0x1
strh r0, [r6]
ldr r4, [r6, 0x10]
adds r3, r4, 0
subs r3, 0x2E
str r3, [r6, 0x10]
ldr r2, [r1, 0x70]
movs r5, 0xB8
lsls r5, 1
adds r0, r2, r5
movs r1, 0
ldrsh r0, [r0, r1]
ldr r1, [r6, 0xC]
cmp r1, 0
bge _0803EE4E
adds r1, 0xFF
_0803EE4E:
asrs r1, 8
adds r1, r0, r1
ldr r0, _0803EF50
ldr r0, [r0]
mov r12, r0
ldr r0, _0803EF54
add r0, r12
movs r5, 0
ldrsh r0, [r0, r5]
subs r7, r1, r0
movs r1, 0xB9
lsls r1, 1
adds r0, r2, r1
movs r2, 0
ldrsh r0, [r0, r2]
adds r1, r3, 0
cmp r1, 0
bge _0803EE76
adds r1, r4, 0
adds r1, 0xD1
_0803EE76:
asrs r1, 8
adds r1, r0, r1
ldr r0, _0803EF58
add r0, r12
movs r3, 0
ldrsh r0, [r0, r3]
adds r0, 0x18
subs r2, r1, r0
movs r0, 0x20
negs r0, r0
cmp r7, r0
blt _0803EF42
adds r0, 0x18
cmp r2, r0
blt _0803EF42
cmp r7, 0xEF
bgt _0803EF42
cmp r2, 0x9F
bgt _0803EF42
ldr r1, _0803EF5C
ands r1, r2
lsls r1, 4
ldr r0, _0803EF60
ldrh r2, [r0, 0x6]
movs r4, 0xF
mov r8, r4
mov r3, r8
ands r3, r2
orrs r3, r1
strh r3, [r0, 0x6]
ldrh r2, [r0]
ldr r1, _0803EF64
ands r1, r2
ldr r2, _0803EF68
ands r1, r2
movs r5, 0x3
mov r9, r5
ldr r2, _0803EF6C
mov r10, r2
ands r1, r2
ldr r2, _0803EF70
ands r1, r2
ldr r2, _0803EF74
ands r1, r2
movs r5, 0x80
lsls r5, 7
ldr r4, _0803EF78
ands r1, r4
orrs r1, r5
strh r1, [r0]
ldr r1, _0803EF7C
ands r7, r1
ldrh r2, [r0, 0x2]
movs r1, 0xFE
lsls r1, 8
ands r1, r2
orrs r1, r7
ldr r2, _0803EF80
ands r1, r2
ands r1, r4
orrs r1, r5
strh r1, [r0, 0x2]
ldr r4, _0803EF84
ldrh r2, [r0, 0x4]
movs r1, 0xFC
lsls r1, 8
ands r1, r2
orrs r1, r4
movs r2, 0
orrs r1, r2
strh r1, [r0, 0x4]
ldr r2, _0803EF88
add r2, r12
ldrb r2, [r2]
mov r4, r9
ands r2, r4
lsls r2, 10
mov r5, r10
ands r1, r5
orrs r1, r2
movs r4, 0x2
ldrsh r2, [r6, r4]
mov r5, r8
ands r2, r5
lsls r2, 12
ldr r4, _0803EF5C
ands r1, r4
orrs r1, r2
strh r1, [r0, 0x4]
ldr r1, _0803EF8C
ands r3, r1
subs r1, 0x1
ands r3, r1
subs r1, 0x2
ands r3, r1
strh r3, [r0, 0x6]
movs r1, 0x80
lsls r1, 1
movs r2, 0
movs r3, 0
bl AddSprite
_0803EF42:
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803EF50: .4byte gDungeonGlobalData
_0803EF54: .4byte 0x000181f0
_0803EF58: .4byte 0x000181f2
_0803EF5C: .4byte 0x00000fff
_0803EF60: .4byte gUnknown_202EDDC
_0803EF64: .4byte 0x0000feff
_0803EF68: .4byte 0x0000fdff
_0803EF6C: .4byte 0x0000f3ff
_0803EF70: .4byte 0x0000efff
_0803EF74: .4byte 0x0000dfff
_0803EF78: .4byte 0x00003fff
_0803EF7C: .4byte 0x000001ff
_0803EF80: .4byte 0x0000c1ff
_0803EF84: .4byte 0x00000216
_0803EF88: .4byte 0x00018208
_0803EF8C: .4byte 0x0000fffe
thumb_func_end sub_803EDF0
thumb_func_start sub_803EF90
sub_803EF90:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x58
str r0, [sp, 0x48]
lsls r1, 24
lsrs r5, r1, 24
ldr r0, _0803F060
ldr r0, [r0]
adds r0, 0x18
mov r8, r0
ldr r0, _0803F064
ldr r1, [r0]
ldr r0, [r1, 0x4]
movs r2, 0x92
lsls r2, 1
adds r0, r2
str r0, [sp, 0x24]
ldr r0, [r1, 0x4]
movs r3, 0x82
lsls r3, 1
adds r0, r3
str r0, [sp, 0x28]
ldr r0, [r1, 0x4]
adds r0, 0xE4
str r0, [sp, 0x2C]
ldr r0, [r1, 0x4]
adds r0, 0xC4
str r0, [sp, 0x30]
ldr r0, [r1, 0x4]
adds r0, 0xA4
str r0, [sp, 0x34]
ldr r0, [r1, 0x4]
adds r0, 0x84
str r0, [sp, 0x38]
ldr r0, [r1, 0x4]
adds r0, 0x64
str r0, [sp, 0x3C]
ldr r0, [r1, 0x4]
adds r0, 0x44
str r0, [sp, 0x40]
ldr r0, [r1, 0x4]
adds r0, 0x24
str r0, [sp, 0x44]
add r4, sp, 0x24
mov r0, sp
adds r1, r4, 0
movs r2, 0x24
bl memcpy
movs r1, 0
movs r6, 0x3
mov r0, r8
_0803EFFE:
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
stm r0!, {r1}
subs r6, 0x1
cmp r6, 0
bge _0803EFFE
ldr r0, _0803F068
ldr r1, [sp, 0x48]
cmp r1, r0
bne _0803F0A6
adds r0, r4, 0
ldr r1, _0803F06C
ldm r1!, {r2,r3,r5}
stm r0!, {r2,r3,r5}
ldr r1, [r1]
str r1, [r0]
movs r5, 0
movs r2, 0
mov r12, r4
movs r0, 0x20
mov r10, r0
_0803F032:
mov r3, r8
ldr r0, _0803F064
ldr r1, [r0]
lsls r0, r2, 2
add r0, r12
ldr r0, [r0]
lsls r0, 5
adds r0, 0x4
ldr r1, [r1, 0x4]
adds r4, r1, r0
movs r1, 0x18
adds r1, r5
mov r9, r1
adds r2, 0x1
str r2, [sp, 0x54]
mov r2, r10
subs r7, r2, r5
movs r6, 0x7
_0803F056:
cmp r5, 0
bne _0803F070
movs r1, 0
ldr r2, [r4]
b _0803F07A
.align 2, 0
_0803F060: .4byte gDungeonGlobalData
_0803F064: .4byte gUnknown_202EC9C
_0803F068: .4byte 0x0000270f
_0803F06C: .4byte gUnknown_80F6478
_0803F070:
ldr r0, [r4]
adds r1, r0, 0
lsrs r1, r7
adds r2, r0, 0
lsls r2, r5
_0803F07A:
adds r4, 0x4
ldr r0, [r3]
orrs r0, r2
str r0, [r3]
ldr r0, [r3, 0x20]
orrs r0, r1
str r0, [r3, 0x20]
adds r3, 0x4
subs r6, 0x1
cmp r6, 0
bge _0803F056
mov r5, r9
cmp r5, 0x1F
ble _0803F09C
subs r5, 0x20
movs r3, 0x20
add r8, r3
_0803F09C:
ldr r2, [sp, 0x54]
cmp r2, 0x3
ble _0803F032
movs r0, 0x4
b _0803F26A
_0803F0A6:
ldr r0, _0803F0D8
ldr r1, [sp, 0x48]
cmp r1, r0
ble _0803F0B0
str r0, [sp, 0x48]
_0803F0B0:
ldr r0, _0803F0DC
ldr r2, [sp, 0x48]
cmp r2, r0
bge _0803F0BA
str r0, [sp, 0x48]
_0803F0BA:
ldr r1, _0803F0E0
ldr r0, [r1]
ldr r0, [r0, 0x4]
movs r3, 0xC2
lsls r3, 1
adds r2, r0, r3
cmp r5, 0
beq _0803F0F4
ldr r5, [sp, 0x48]
cmp r5, 0
ble _0803F0E4
movs r1, 0xA2
lsls r1, 1
adds r2, r0, r1
b _0803F0F4
.align 2, 0
_0803F0D8: .4byte 0x000003e7
_0803F0DC: .4byte 0xfffffc19
_0803F0E0: .4byte gUnknown_202EC9C
_0803F0E4:
ldr r3, [sp, 0x48]
cmp r3, 0
bge _0803F0F4
movs r5, 0xB2
lsls r5, 1
adds r2, r0, r5
negs r3, r3
str r3, [sp, 0x48]
_0803F0F4:
ldm r2!, {r0}
mov r1, r8
str r0, [r1]
ldm r2!, {r0}
str r0, [r1, 0x4]
ldm r2!, {r0}
str r0, [r1, 0x8]
ldm r2!, {r0}
str r0, [r1, 0xC]
ldm r2!, {r0}
str r0, [r1, 0x10]
ldm r2!, {r0}
str r0, [r1, 0x14]
ldm r2!, {r0}
str r0, [r1, 0x18]
ldr r0, [r2]
str r0, [r1, 0x1C]
movs r5, 0x18
movs r2, 0x1
str r2, [sp, 0x4C]
movs r3, 0
str r3, [sp, 0x50]
movs r2, 0
_0803F122:
movs r0, 0
mov r10, r0
adds r1, r2, 0x1
str r1, [sp, 0x54]
lsls r0, r2, 3
adds r0, r2
lsls r0, 2
mov r1, sp
ldr r2, _0803F15C
adds r7, r0, r2
_0803F136:
ldr r0, [r7]
ldr r3, [sp, 0x48]
cmp r0, r3
bgt _0803F1A2
ldr r4, [r1]
mov r2, r8
movs r0, 0x18
adds r0, r5
mov r9, r0
movs r1, 0x20
subs r1, r5
mov r12, r1
movs r6, 0x7
_0803F150:
cmp r5, 0
bne _0803F160
movs r3, 0
ldr r1, [r4]
b _0803F16C
.align 2, 0
_0803F15C: .4byte gUnknown_80F6430
_0803F160:
ldr r0, [r4]
adds r3, r0, 0
mov r1, r12
lsrs r3, r1
adds r1, r0, 0
lsls r1, r5
_0803F16C:
adds r4, 0x4
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldr r0, [r2, 0x20]
orrs r0, r3
str r0, [r2, 0x20]
adds r2, 0x4
movs r3, 0x1
str r3, [sp, 0x50]
subs r6, 0x1
cmp r6, 0
bge _0803F150
mov r5, r9
cmp r5, 0x1F
ble _0803F192
subs r5, 0x20
movs r0, 0x20
add r8, r0
_0803F192:
ldr r0, [r7]
ldr r1, [sp, 0x48]
subs r1, r0
str r1, [sp, 0x48]
ldr r2, [sp, 0x4C]
adds r2, 0x1
str r2, [sp, 0x4C]
b _0803F1B0
_0803F1A2:
adds r1, 0x4
adds r7, 0x4
movs r3, 0x1
add r10, r3
mov r0, r10
cmp r0, 0x8
ble _0803F136
_0803F1B0:
mov r1, r10
cmp r1, 0x9
bne _0803F212
ldr r2, [sp, 0x50]
cmp r2, 0
beq _0803F212
ldr r3, _0803F1DC
ldr r0, [r3]
ldr r0, [r0, 0x4]
adds r4, r0, 0x4
mov r2, r8
movs r0, 0x18
adds r0, r5
mov r9, r0
movs r1, 0x20
subs r7, r1, r5
movs r6, 0x7
_0803F1D2:
cmp r5, 0
bne _0803F1E0
movs r3, 0
ldr r1, [r4]
b _0803F1EA
.align 2, 0
_0803F1DC: .4byte gUnknown_202EC9C
_0803F1E0:
ldr r0, [r4]
adds r3, r0, 0
lsrs r3, r7
adds r1, r0, 0
lsls r1, r5
_0803F1EA:
adds r4, 0x4
ldr r0, [r2]
orrs r0, r1
str r0, [r2]
ldr r0, [r2, 0x20]
orrs r0, r3
str r0, [r2, 0x20]
adds r2, 0x4
subs r6, 0x1
cmp r6, 0
bge _0803F1D2
mov r5, r9
cmp r5, 0x1F
ble _0803F20C
subs r5, 0x20
movs r2, 0x20
add r8, r2
_0803F20C:
ldr r3, [sp, 0x4C]
adds r3, 0x1
str r3, [sp, 0x4C]
_0803F212:
ldr r2, [sp, 0x54]
cmp r2, 0x1
ble _0803F122
ldr r0, _0803F240
ldr r1, [r0]
ldr r2, [sp, 0x48]
lsls r0, r2, 5
adds r0, 0x4
ldr r1, [r1, 0x4]
adds r1, r0
mov r3, r8
ldr r0, [sp, 0x4C]
adds r0, 0x1
mov r8, r0
movs r0, 0x20
subs r7, r0, r5
movs r6, 0x7
_0803F234:
cmp r5, 0
bne _0803F244
movs r4, 0
ldr r2, [r1]
b _0803F24E
.align 2, 0
_0803F240: .4byte gUnknown_202EC9C
_0803F244:
ldr r0, [r1]
adds r4, r0, 0
lsrs r4, r7
adds r2, r0, 0
lsls r2, r5
_0803F24E:
adds r1, 0x4
ldr r0, [r3]
orrs r0, r2
str r0, [r3]
ldr r0, [r3, 0x20]
orrs r0, r4
str r0, [r3, 0x20]
adds r3, 0x4
subs r6, 0x1
cmp r6, 0
bge _0803F234
mov r1, r8
str r1, [sp, 0x4C]
adds r0, r1, 0
_0803F26A:
add sp, 0x58
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r1}
bx r1
thumb_func_end sub_803EF90
thumb_func_start sub_803F27C
sub_803F27C:
push {r4-r7,lr}
mov r7, r8
push {r7}
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldr r0, _0803F360
mov r8, r0
ldr r4, [r0]
ldr r2, _0803F364
adds r1, r4, r2
movs r2, 0
movs r3, 0
strh r3, [r1, 0x8]
strh r3, [r1, 0xA]
strh r3, [r1]
strh r3, [r1, 0x2]
strh r3, [r1, 0xC]
strh r3, [r1, 0xE]
strh r3, [r1, 0x4]
strh r3, [r1, 0x6]
str r3, [r1, 0x14]
ldr r5, _0803F368
adds r0, r4, r5
strb r2, [r0]
ldr r6, _0803F36C
adds r0, r4, r6
movs r5, 0x1
strb r5, [r0]
adds r6, 0x1
adds r0, r4, r6
strb r5, [r0]
adds r6, 0x1
adds r0, r4, r6
strb r2, [r0]
str r3, [r1, 0x18]
str r3, [r1, 0x1C]
cmp r7, 0
bne _0803F2FA
subs r6, 0xF
adds r0, r4, r6
strb r2, [r0]
adds r6, 0x6
adds r0, r4, r6
strb r2, [r0]
subs r6, 0x1
adds r0, r4, r6
strb r2, [r0]
subs r6, 0x2
adds r0, r4, r6
strb r2, [r0]
adds r6, 0x4
adds r0, r4, r6
strb r2, [r0]
subs r6, 0x3
adds r0, r4, r6
strb r2, [r0]
subs r6, 0x3
adds r0, r4, r6
strb r2, [r0]
adds r6, 0x1
adds r0, r4, r6
strb r2, [r0]
_0803F2FA:
str r3, [r1, 0x10]
ldr r1, _0803F370
adds r0, r4, r1
movs r6, 0x3
strb r6, [r0]
adds r1, 0x12
adds r0, r4, r1
strb r2, [r0]
subs r1, 0x8
adds r0, r4, r1
strb r2, [r0]
adds r1, 0x9
adds r0, r4, r1
strb r2, [r0]
adds r1, 0x1
adds r0, r4, r1
strb r2, [r0]
subs r1, 0x8
adds r0, r4, r1
strb r2, [r0]
ldr r2, _0803F374
adds r0, r4, r2
strb r5, [r0]
bl sub_803F38C
ldr r1, _0803F378
ldr r0, _0803F37C
str r0, [r1]
cmp r7, 0
bne _0803F354
mov r1, r8
ldr r0, [r1]
ldr r2, _0803F380
adds r0, r2
ldrb r1, [r0]
adds r0, r6, 0
ands r0, r1
ldr r6, _0803F384
adds r1, r4, r6
strb r0, [r1]
cmp r0, 0
bne _0803F354
ldr r1, _0803F388
adds r0, r4, r1
strb r5, [r0]
_0803F354:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803F360: .4byte gDungeonGlobalData
_0803F364: .4byte 0x000181e8
_0803F368: .4byte 0x00018216
_0803F36C: .4byte 0x00018217
_0803F370: .4byte 0x00018208
_0803F374: .4byte 0x00018215
_0803F378: .4byte gUnknown_202EDFC
_0803F37C: .4byte 0x0000ffff
_0803F380: .4byte 0x0001c58a
_0803F384: .4byte 0x00018209
_0803F388: .4byte 0x0001820c
thumb_func_end sub_803F27C
thumb_func_start sub_803F38C
sub_803F38C:
push {r4-r6,lr}
mov r6, r8
push {r6}
ldr r0, _0803F410
ldr r1, [r0]
ldr r0, _0803F414
adds r2, r1, r0
ldr r0, _0803F418
strh r0, [r2, 0x3A]
movs r0, 0x1
negs r0, r0
strh r0, [r2, 0x3C]
strh r0, [r2, 0x3E]
ldr r0, _0803F41C
adds r1, r0
movs r0, 0x1
negs r0, r0
strh r0, [r1]
strh r0, [r2, 0x36]
strh r0, [r2, 0x38]
ldr r0, _0803F420
ldr r0, [r0]
ldrb r0, [r0, 0xB]
negs r4, r0
orrs r4, r0
asrs r4, 31
movs r0, 0x80
lsls r0, 1
ands r4, r0
ldr r5, _0803F424
adds r0, r4, r5
mov r8, r0
movs r0, 0xFD
mov r1, r8
bl SetBGPaletteBufferColorArray
adds r6, r5, 0x4
adds r6, r4, r6
movs r0, 0xFE
adds r1, r6, 0
bl SetBGPaletteBufferColorArray
adds r5, 0x8
adds r4, r5
movs r0, 0xFF
adds r1, r4, 0
bl SetBGPaletteBufferColorArray
movs r0, 0xFD
mov r1, r8
bl nullsub_5
movs r0, 0xFE
adds r1, r6, 0
bl nullsub_5
movs r0, 0xFF
adds r1, r4, 0
bl nullsub_5
pop {r3}
mov r8, r3
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803F410: .4byte gDungeonGlobalData
_0803F414: .4byte 0x000181e8
_0803F418: .4byte 0x0000ffff
_0803F41C: .4byte 0x00018228
_0803F420: .4byte gUnknown_203B46C
_0803F424: .4byte gUnknown_202D06C
thumb_func_end sub_803F38C
thumb_func_start sub_803F428
sub_803F428:
push {r4-r6,lr}
adds r4, r0, 0
ldr r0, _0803F484
ldr r3, [r0]
ldr r0, _0803F488
adds r2, r3, r0
ldr r5, [r2, 0x10]
movs r6, 0
ldrsh r1, [r2, r6]
movs r6, 0
ldrsh r0, [r4, r6]
subs r1, r0
cmp r1, 0
bge _0803F446
negs r1, r1
_0803F446:
cmp r1, 0x6
bgt _0803F498
movs r0, 0x2
ldrsh r1, [r2, r0]
movs r6, 0x2
ldrsh r0, [r4, r6]
subs r1, r0
cmp r1, 0
bge _0803F45A
negs r1, r1
_0803F45A:
cmp r1, 0x5
bgt _0803F498
ldr r1, _0803F48C
adds r0, r3, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803F494
ldr r6, _0803F490
adds r0, r3, r6
ldrb r0, [r0]
cmp r0, 0
bne _0803F494
cmp r5, 0
beq _0803F494
adds r0, r2, 0
adds r1, r4, 0
bl InSameRoom_2
lsls r0, 24
lsrs r0, 24
b _0803F49A
.align 2, 0
_0803F484: .4byte gDungeonGlobalData
_0803F488: .4byte 0x000181e8
_0803F48C: .4byte 0x0001820b
_0803F490: .4byte 0x0001820c
_0803F494:
movs r0, 0x1
b _0803F49A
_0803F498:
movs r0, 0
_0803F49A:
pop {r4-r6}
pop {r1}
bx r1
thumb_func_end sub_803F428
thumb_func_start sub_803F4A0
sub_803F4A0:
push {lr}
adds r2, r0, 0
ldr r0, _0803F4B8
ldr r1, [r0]
ldr r3, _0803F4BC
adds r0, r1, r3
str r2, [r0, 0x10]
cmp r2, 0
bne _0803F4C0
adds r3, 0x2E
b _0803F4CA
.align 2, 0
_0803F4B8: .4byte gDungeonGlobalData
_0803F4BC: .4byte 0x000181e8
_0803F4C0:
ldr r0, [r2, 0x70]
ldrb r2, [r0, 0x7]
cmp r2, 0
bne _0803F4D4
ldr r3, _0803F4D0
_0803F4CA:
adds r0, r1, r3
strb r2, [r0]
b _0803F4DC
.align 2, 0
_0803F4D0: .4byte 0x00018216
_0803F4D4:
ldr r0, _0803F4FC
adds r1, r0
movs r0, 0x1
strb r0, [r1]
_0803F4DC:
movs r0, 0
bl sub_803F580
bl sub_803F38C
ldr r0, _0803F500
ldr r0, [r0]
ldr r1, _0803F504
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803F4F8
bl sub_806CD90
_0803F4F8:
pop {r0}
bx r0
.align 2, 0
_0803F4FC: .4byte 0x00018216
_0803F500: .4byte gDungeonGlobalData
_0803F504: .4byte 0x0001356c
thumb_func_end sub_803F4A0
thumb_func_start sub_803F508
sub_803F508:
push {r4,r5,lr}
adds r3, r0, 0
ldr r0, _0803F520
ldr r1, [r0]
ldr r0, _0803F524
adds r4, r1, r0
cmp r3, 0
bne _0803F52C
ldr r2, _0803F528
adds r0, r1, r2
strb r3, [r0]
b _0803F548
.align 2, 0
_0803F520: .4byte gDungeonGlobalData
_0803F524: .4byte 0x000181e8
_0803F528: .4byte 0x00018216
_0803F52C:
ldr r0, [r3, 0x70]
ldrb r2, [r0, 0x7]
cmp r2, 0
bne _0803F540
ldr r5, _0803F53C
adds r0, r1, r5
strb r2, [r0]
b _0803F548
.align 2, 0
_0803F53C: .4byte 0x00018216
_0803F540:
ldr r0, _0803F574
adds r1, r0
movs r0, 0x1
strb r0, [r1]
_0803F548:
str r3, [r4, 0x10]
movs r0, 0
bl sub_803F580
bl sub_803F38C
ldr r0, _0803F578
ldr r0, [r0]
ldr r1, _0803F57C
adds r0, r1
ldrb r0, [r0]
cmp r0, 0
bne _0803F566
bl sub_806CD90
_0803F566:
bl sub_8049ED4
bl sub_8040A84
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803F574: .4byte 0x00018216
_0803F578: .4byte gDungeonGlobalData
_0803F57C: .4byte 0x0001356c
thumb_func_end sub_803F508
thumb_func_start sub_803F580
sub_803F580:
push {r4-r7,lr}
mov r7, r9
mov r6, r8
push {r6,r7}
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldr r0, _0803F600
ldr r4, [r0]
ldr r0, _0803F604
adds r5, r4, r0
ldr r6, [r5, 0x10]
cmp r6, 0
bne _0803F59E
b _0803F7A0
_0803F59E:
adds r0, r6, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
bne _0803F5AC
b _0803F7A0
_0803F5AC:
ldr r7, [r6, 0x70]
ldr r0, [r5, 0x8]
str r0, [r5, 0xC]
ldr r0, [r5]
str r0, [r5, 0x4]
ldrh r0, [r6, 0x4]
strh r0, [r5]
ldrh r0, [r6, 0x6]
strh r0, [r5, 0x2]
ldr r0, [r6, 0xC]
cmp r0, 0
bge _0803F5C6
adds r0, 0xFF
_0803F5C6:
asrs r0, 8
subs r0, 0x78
strh r0, [r5, 0x8]
ldr r0, [r6, 0x10]
cmp r0, 0
bge _0803F5D4
adds r0, 0xFF
_0803F5D4:
asrs r0, 8
subs r0, 0x60
strh r0, [r5, 0xA]
adds r0, r6, 0
movs r1, 0x11
bl HasItem
lsls r0, 24
cmp r0, 0
beq _0803F610
ldrb r0, [r7, 0x7]
cmp r0, 0
beq _0803F610
ldr r1, _0803F608
adds r0, r4, r1
movs r1, 0x1
strb r1, [r0]
ldr r2, _0803F60C
adds r0, r4, r2
strb r1, [r0]
b _0803F626
.align 2, 0
_0803F600: .4byte gDungeonGlobalData
_0803F604: .4byte 0x000181e8
_0803F608: .4byte 0x0001820d
_0803F60C: .4byte 0x0001820e
_0803F610:
adds r0, r7, 0
adds r0, 0xF0
ldrb r0, [r0]
adds r1, r5, 0
adds r1, 0x25
strb r0, [r1]
adds r0, r7, 0
adds r0, 0xF1
ldrb r0, [r0]
adds r1, 0x1
strb r0, [r1]
_0803F626:
adds r0, r7, 0
adds r0, 0xF2
ldrb r0, [r0]
adds r1, r5, 0
adds r1, 0x29
strb r0, [r1]
subs r1, 0x7
ldrb r0, [r1]
mov r8, r0
adds r0, r5, 0
adds r0, 0x2C
ldrb r2, [r0]
adds r4, r1, 0
cmp r2, 0
bne _0803F670
adds r0, r7, 0
adds r0, 0xE8
ldrb r1, [r0]
adds r7, r0, 0
cmp r1, 0x1
bne _0803F656
strb r1, [r4]
movs r1, 0xE
b _0803F65A
_0803F656:
strb r2, [r4]
movs r1, 0
_0803F65A:
ldr r2, _0803F66C
ldr r0, [r2]
cmp r0, r1
beq _0803F678
str r1, [r2]
adds r0, r1, 0
bl SetBGOBJEnableFlags
b _0803F678
.align 2, 0
_0803F66C: .4byte gUnknown_202EDFC
_0803F670:
ldr r1, _0803F698
ldr r0, _0803F69C
str r0, [r1]
adds r7, 0xE8
_0803F678:
ldrb r4, [r4]
cmp r8, r4
beq _0803F684
movs r0, 0
bl sub_8041888
_0803F684:
adds r0, r5, 0
adds r0, 0x28
ldrb r1, [r0]
mov r8, r1
ldrb r1, [r7]
adds r2, r0, 0
cmp r1, 0x2
bne _0803F6A0
movs r0, 0x1
b _0803F6A2
.align 2, 0
_0803F698: .4byte gUnknown_202EDFC
_0803F69C: .4byte 0x0000ffff
_0803F6A0:
movs r0, 0
_0803F6A2:
strb r0, [r2]
ldrb r2, [r2]
cmp r8, r2
beq _0803F6B4
bl sub_806CC70
movs r0, 0
bl sub_8041888
_0803F6B4:
adds r4, r5, 0
adds r4, 0x27
ldrb r2, [r4]
mov r8, r2
adds r0, r6, 0
bl CanSeeInvisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0
beq _0803F6CC
movs r0, 0x1
_0803F6CC:
strb r0, [r4]
ldrb r4, [r4]
cmp r8, r4
beq _0803F6E2
bl sub_8049ED4
bl sub_8040A84
movs r0, 0
bl sub_8041888
_0803F6E2:
mov r0, r9
cmp r0, 0
beq _0803F76A
adds r0, r5, 0
adds r0, 0x2B
ldrb r1, [r0]
adds r4, r0, 0
cmp r1, 0
bne _0803F76A
movs r2, 0xC
ldrsh r1, [r5, r2]
movs r2, 0x8
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0803F704
negs r1, r1
_0803F704:
cmp r1, 0x7
bgt _0803F71C
movs r0, 0xE
ldrsh r1, [r5, r0]
movs r2, 0xA
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0803F718
negs r1, r1
_0803F718:
cmp r1, 0x7
ble _0803F726
_0803F71C:
bl sub_8049ED4
movs r0, 0x1
strb r0, [r4]
b _0803F76A
_0803F726:
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r2, 0x8
ldrsh r0, [r5, r2]
cmp r1, r0
bge _0803F73C
movs r0, 0xF0
movs r1, 0
bl sub_804A1F0
b _0803F748
_0803F73C:
cmp r1, r0
ble _0803F748
movs r0, 0
movs r1, 0
bl sub_804A1F0
_0803F748:
movs r0, 0xE
ldrsh r1, [r5, r0]
movs r2, 0xA
ldrsh r0, [r5, r2]
cmp r1, r0
bge _0803F75E
movs r0, 0
movs r1, 0xA0
bl sub_804A49C
b _0803F76A
_0803F75E:
cmp r1, r0
ble _0803F76A
movs r0, 0
movs r1, 0
bl sub_804A49C
_0803F76A:
ldr r1, [r5]
ldr r0, [r5, 0x4]
cmp r1, r0
beq _0803F7A0
movs r5, 0
_0803F774:
ldr r0, _0803F7B4
ldr r0, [r0]
lsls r1, r5, 2
ldr r2, _0803F7B8
adds r0, r2
adds r0, r1
ldr r4, [r0]
adds r0, r4, 0
bl EntityExists
lsls r0, 24
cmp r0, 0
beq _0803F79A
movs r1, 0x4
ldrsh r0, [r4, r1]
movs r2, 0x6
ldrsh r1, [r4, r2]
bl sub_80402AC
_0803F79A:
adds r5, 0x1
cmp r5, 0x13
ble _0803F774
_0803F7A0:
bl sub_80400D4
bl sub_803F7BC
pop {r3,r4}
mov r8, r3
mov r9, r4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803F7B4: .4byte gDungeonGlobalData
_0803F7B8: .4byte 0x000135cc
thumb_func_end sub_803F580
thumb_func_start sub_803F7BC
sub_803F7BC:
push {r4-r6,lr}
sub sp, 0x10
ldr r6, _0803F800
ldr r4, [r6]
ldr r0, _0803F804
adds r5, r4, r0
movs r1, 0
ldrsh r0, [r5, r1]
movs r2, 0x2
ldrsh r1, [r5, r2]
bl GetMapTileAtPosition
ldrb r1, [r0, 0x9]
ldr r2, _0803F808
adds r0, r4, r2
ldrb r0, [r0]
cmp r0, 0
bne _0803F7F4
adds r2, 0x1
adds r0, r4, r2
ldrb r0, [r0]
cmp r0, 0
bne _0803F7F4
adds r2, 0xB
adds r0, r4, r2
ldrb r0, [r0]
cmp r0, 0
beq _0803F80C
_0803F7F4:
movs r0, 0
movs r1, 0
bl sub_8005838
b _0803F86A
.align 2, 0
_0803F800: .4byte gDungeonGlobalData
_0803F804: .4byte 0x000181e8
_0803F808: .4byte 0x0001820b
_0803F80C:
cmp r1, 0xFF
bne _0803F82C
ldr r1, _0803F828
adds r0, r4, r1
ldrb r0, [r0]
movs r1, 0x2
cmp r0, 0x2
bne _0803F81E
movs r1, 0x1
_0803F81E:
movs r0, 0
bl sub_8005838
b _0803F86A
.align 2, 0
_0803F828: .4byte 0x00018209
_0803F82C:
lsls r0, r1, 3
subs r0, r1
lsls r0, 2
ldr r2, _0803F874
adds r0, r2
ldr r2, [r6]
adds r2, r0
movs r0, 0x8
ldrsh r1, [r5, r0]
ldr r0, [r2, 0xC]
subs r0, r1
str r0, [sp]
movs r0, 0xA
ldrsh r1, [r5, r0]
ldr r0, [r2, 0x10]
subs r0, r1
str r0, [sp, 0x4]
movs r0, 0x8
ldrsh r1, [r5, r0]
ldr r0, [r2, 0x14]
subs r0, r1
str r0, [sp, 0x8]
movs r0, 0xA
ldrsh r1, [r5, r0]
ldr r0, [r2, 0x18]
subs r0, r1
str r0, [sp, 0xC]
mov r0, sp
movs r1, 0x3
bl sub_8005838
_0803F86A:
add sp, 0x10
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_0803F874: .4byte 0x000104c4
thumb_func_end sub_803F7BC
thumb_func_start sub_803F878
sub_803F878:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r2, r0, 0
adds r6, r1, 0
ldr r0, _0803F92C
ldr r7, [r0]
ldr r0, _0803F930
adds r5, r7, r0
ldr r0, [r5, 0x8]
str r0, [r5, 0xC]
ldr r0, [r5]
str r0, [r5, 0x4]
adds r0, r2, 0
cmp r2, 0
bge _0803F89A
adds r0, 0xFF
_0803F89A:
asrs r0, 8
subs r0, 0x78
movs r1, 0
mov r8, r1
strh r0, [r5, 0x8]
adds r0, r6, 0
cmp r6, 0
bge _0803F8AC
adds r0, 0xFF
_0803F8AC:
asrs r0, 8
subs r0, 0x60
strh r0, [r5, 0xA]
movs r4, 0xC0
lsls r4, 5
adds r0, r2, 0
adds r1, r4, 0
bl __divsi3
strh r0, [r5]
adds r0, r6, 0
adds r1, r4, 0
bl __divsi3
strh r0, [r5, 0x2]
ldr r2, _0803F934
adds r0, r7, r2
mov r1, r8
strb r1, [r0]
adds r2, 0x1
adds r0, r7, r2
strb r1, [r0]
ldr r1, _0803F938
adds r0, r7, r1
mov r2, r8
strb r2, [r0]
adds r1, 0x5
adds r0, r7, r1
strb r2, [r0]
ldr r1, _0803F93C
ldr r0, [r1]
cmp r0, 0
beq _0803F8F6
movs r0, 0
str r0, [r1]
bl SetBGOBJEnableFlags
_0803F8F6:
movs r2, 0xC
ldrsh r1, [r5, r2]
movs r2, 0x8
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0803F906
negs r1, r1
_0803F906:
cmp r1, 0x7
bgt _0803F91E
movs r0, 0xE
ldrsh r1, [r5, r0]
movs r2, 0xA
ldrsh r0, [r5, r2]
subs r1, r0
cmp r1, 0
bge _0803F91A
negs r1, r1
_0803F91A:
cmp r1, 0x7
ble _0803F940
_0803F91E:
bl sub_8049ED4
adds r1, r5, 0
adds r1, 0x2B
movs r0, 0x1
strb r0, [r1]
b _0803F984
.align 2, 0
_0803F92C: .4byte gDungeonGlobalData
_0803F930: .4byte 0x000181e8
_0803F934: .4byte 0x0001820d
_0803F938: .4byte 0x00018211
_0803F93C: .4byte gUnknown_202EDFC
_0803F940:
movs r0, 0xC
ldrsh r1, [r5, r0]
movs r2, 0x8
ldrsh r0, [r5, r2]
cmp r1, r0
bge _0803F956
movs r0, 0xF0
movs r1, 0
bl sub_804A1F0
b _0803F962
_0803F956:
cmp r1, r0
ble _0803F962
movs r0, 0
movs r1, 0
bl sub_804A1F0
_0803F962:
movs r0, 0xE
ldrsh r1, [r5, r0]
movs r2, 0xA
ldrsh r0, [r5, r2]
cmp r1, r0
bge _0803F978
movs r0, 0
movs r1, 0xA0
bl sub_804A49C
b _0803F984
_0803F978:
cmp r1, r0
ble _0803F984
movs r0, 0
movs r1, 0
bl sub_804A49C
_0803F984:
bl sub_803F7BC
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
thumb_func_end sub_803F878
thumb_func_start sub_803F994
sub_803F994:
ldr r0, _0803F9A8
ldr r0, [r0]
ldr r1, _0803F9AC
adds r0, r1
movs r1, 0x8
ldrsh r0, [r0, r1]
adds r0, 0x78
lsls r0, 8
bx lr
.align 2, 0
_0803F9A8: .4byte gDungeonGlobalData
_0803F9AC: .4byte 0x000181e8
thumb_func_end sub_803F994
thumb_func_start sub_803F9B0
sub_803F9B0:
ldr r0, _0803F9C4
ldr r0, [r0]
ldr r1, _0803F9C8
adds r0, r1
movs r1, 0xA
ldrsh r0, [r0, r1]
adds r0, 0x60
lsls r0, 8
bx lr
.align 2, 0
_0803F9C4: .4byte gDungeonGlobalData
_0803F9C8: .4byte 0x000181e8
thumb_func_end sub_803F9B0
thumb_func_start sub_803F9CC
sub_803F9CC:
push {r4,r5,lr}
ldr r0, _0803FA24
ldr r1, [r0]
ldr r2, _0803FA28
adds r0, r1, r2
ldr r4, [r0]
movs r5, 0
ldr r2, _0803FA2C
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _0803FA0C
ldr r2, _0803FA30
adds r0, r1, r2
ldrb r0, [r0]
cmp r0, 0
bne _0803FA0C
bl sub_800EC74
lsls r0, 24
cmp r0, 0
bne _0803FA0C
cmp r4, 0
beq _0803FA08
adds r0, r4, 0
bl GetEntityType
cmp r0, 0x1
bne _0803FA08
movs r5, 0x1
_0803FA08:
cmp r5, 0
bne _0803FA38
_0803FA0C:
ldr r0, _0803FA34
movs r2, 0
adds r0, 0x2
movs r1, 0x1C
_0803FA14:
strh r2, [r0]
adds r0, 0x2
subs r1, 0x1
cmp r1, 0
bge _0803FA14
bl sub_803F38C
b _0803FA3C
.align 2, 0
_0803FA24: .4byte gDungeonGlobalData
_0803FA28: .4byte 0x000181f8
_0803FA2C: .4byte 0x0001356c
_0803FA30: .4byte 0x00018218
_0803FA34: .4byte gUnknown_202B038
_0803FA38:
bl sub_803FB74
_0803FA3C:
ldr r1, _0803FA48
movs r0, 0x1
strb r0, [r1]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_0803FA48: .4byte gUnknown_20274A5
thumb_func_end sub_803F9CC
thumb_func_start sub_803FA4C
sub_803FA4C:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x28
adds r4, r0, 0
mov r8, r1
lsls r2, 24
lsrs r2, 24
mov r12, r2
ldr r0, _0803FB4C
ldr r3, [r0]
ldr r0, _0803FB50
adds r0, r3, r0
str r0, [sp, 0x24]
ldr r7, _0803FB54
mov r1, sp
ldr r0, _0803FB58
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldm r0!, {r2,r5,r6}
stm r1!, {r2,r5,r6}
ldr r0, _0803FB5C
mov r10, r0
ldr r1, _0803FB60
mov r9, r1
ldr r2, [sp, 0x24]
movs r5, 0x3E
ldrsh r0, [r2, r5]
cmp r4, r0
bne _0803FA9C
ldr r6, _0803FB64
adds r0, r3, r6
movs r1, 0
ldrsh r0, [r0, r1]
cmp r8, r0
beq _0803FB3A
_0803FA9C:
mov r2, r12
cmp r2, 0
bne _0803FAA6
ldr r5, _0803FB68
mov r9, r5
_0803FAA6:
ldr r6, [sp, 0x24]
strh r4, [r6, 0x3E]
ldr r1, _0803FB64
adds r0, r3, r1
mov r2, r8
strh r2, [r0]
mov r5, r8
cmp r5, 0x5F
ble _0803FAC8
movs r5, 0x60
lsls r0, r4, 1
adds r0, r4
lsls r0, 5
mov r1, r8
bl __divsi3
adds r4, r0, 0
_0803FAC8:
movs r3, 0
mov r8, r3
movs r6, 0x58
mov r12, r6
_0803FAD0:
ldr r6, _0803FB6C
adds r2, r4, 0
adds r0, r5, 0
cmp r4, 0x7
ble _0803FADC
movs r2, 0x8
_0803FADC:
cmp r5, 0x7
ble _0803FAE2
movs r0, 0x8
_0803FAE2:
lsls r0, 2
mov r3, sp
adds r1, r3, r0
lsls r0, r2, 2
add r0, sp
ldr r2, [r0]
ldr r3, [r1]
adds r1, r3, 0
bics r1, r2
mov r0, r10
ands r1, r0
mov r0, r9
ands r0, r2
orrs r0, r1
ands r6, r3
mov r1, r8
stm r7!, {r1}
stm r7!, {r6}
stm r7!, {r0}
stm r7!, {r0}
stm r7!, {r0}
stm r7!, {r0}
stm r7!, {r6}
stm r7!, {r1}
subs r4, 0x8
subs r5, 0x8
cmp r4, 0
bge _0803FB1C
movs r4, 0
_0803FB1C:
cmp r5, 0
bge _0803FB22
movs r5, 0
_0803FB22:
movs r2, 0x8
negs r2, r2
add r12, r2
mov r3, r12
cmp r3, 0
bge _0803FAD0
ldr r0, _0803FB70
movs r2, 0xC0
lsls r2, 1
ldr r1, _0803FB54
bl sub_80098BC
_0803FB3A:
add sp, 0x28
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803FB4C: .4byte gDungeonGlobalData
_0803FB50: .4byte 0x000181e8
_0803FB54: .4byte gUnknown_3001018
_0803FB58: .4byte gUnknown_80F6490
_0803FB5C: .4byte 0x22222222
_0803FB60: .4byte 0x44444444
_0803FB64: .4byte 0x00018228
_0803FB68: .4byte 0x55555555
_0803FB6C: .4byte 0x77777777
_0803FB70: .4byte 0x06005980
thumb_func_end sub_803FA4C
thumb_func_start sub_803FB74
sub_803FB74:
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
sub sp, 0x4
ldr r0, _0803FBE8
ldr r0, [r0]
ldr r1, _0803FBEC
adds r7, r0, r1
movs r4, 0
movs r2, 0
str r2, [sp]
ldr r0, [r7, 0x10]
ldr r0, [r0, 0x70]
movs r1, 0xE
ldrsh r3, [r0, r1]
mov r9, r3
movs r3, 0x10
ldrsh r2, [r0, r3]
mov r8, r2
ldrb r1, [r0, 0x9]
mov r10, r1
movs r2, 0xE
ldrsh r1, [r0, r2]
cmp r1, 0
ble _0803FBBA
mov r0, r8
cmp r0, 0
bge _0803FBB2
adds r0, 0x3
_0803FBB2:
asrs r0, 2
cmp r1, r0
bgt _0803FBBA
movs r4, 0x1
_0803FBBA:
ldr r0, [r7, 0x10]
ldr r0, [r0, 0x70]
movs r3, 0x9E
lsls r3, 1
adds r0, r3
ldr r0, [r0]
bl GetBellyRoundedUp
cmp r0, 0
bne _0803FBD2
movs r0, 0x1
str r0, [sp]
_0803FBD2:
cmp r4, 0
beq _0803FBF4
ldr r0, _0803FBF0
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _0803FBF4
movs r5, 0x20
movs r6, 0x20
b _0803FBF8
.align 2, 0
_0803FBE8: .4byte gDungeonGlobalData
_0803FBEC: .4byte 0x000181e8
_0803FBF0: .4byte gUnknown_202EDCC
_0803FBF4:
movs r5, 0
movs r6, 0
_0803FBF8:
ldr r1, [sp]
cmp r1, 0
beq _0803FC0E
ldr r0, _0803FC20
ldr r0, [r0]
movs r1, 0x10
ands r0, r1
cmp r0, 0
beq _0803FC0E
movs r5, 0x30
movs r6, 0x30
_0803FC0E:
cmp r5, 0
bne _0803FC30
adds r0, r7, 0
adds r0, 0x2A
ldrb r0, [r0]
cmp r0, 0
beq _0803FC24
movs r5, 0x60
b _0803FC30
.align 2, 0
_0803FC20: .4byte gUnknown_202EDCC
_0803FC24:
ldr r0, _0803FCE4
ldr r0, [r0]
ldrb r0, [r0, 0xB]
cmp r0, 0
beq _0803FC30
movs r5, 0x40
_0803FC30:
cmp r6, 0
bne _0803FC40
ldr r0, _0803FCE4
ldr r0, [r0]
ldrb r0, [r0, 0xB]
cmp r0, 0
beq _0803FC40
movs r6, 0x40
_0803FC40:
movs r2, 0x36
ldrsh r0, [r7, r2]
cmp r0, r5
beq _0803FC78
strh r5, [r7, 0x36]
lsls r5, 2
ldr r4, _0803FCE8
adds r1, r5, r4
movs r0, 0xFC
bl SetBGPaletteBufferColorArray
adds r1, r4, 0x4
adds r1, r5, r1
movs r0, 0xFD
bl SetBGPaletteBufferColorArray
adds r1, r4, 0
adds r1, 0x8
adds r1, r5, r1
movs r0, 0xFE
bl SetBGPaletteBufferColorArray
adds r4, 0xC
adds r5, r4
movs r0, 0xFF
adds r1, r5, 0
bl SetBGPaletteBufferColorArray
_0803FC78:
movs r3, 0x38
ldrsh r0, [r7, r3]
cmp r0, r6
beq _0803FCB0
strh r6, [r7, 0x38]
lsls r5, r6, 2
ldr r4, _0803FCE8
adds r1, r5, r4
movs r0, 0xFC
bl nullsub_5
adds r1, r4, 0x4
adds r1, r5, r1
movs r0, 0xFD
bl nullsub_5
adds r1, r4, 0
adds r1, 0x8
adds r1, r5, r1
movs r0, 0xFE
bl nullsub_5
adds r4, 0xC
adds r5, r4
movs r0, 0xFF
adds r1, r5, 0
bl nullsub_5
_0803FCB0:
ldr r5, _0803FCEC
ldr r0, _0803FCF0
ldr r2, [r0]
ldr r0, _0803FCF4
adds r1, r2, r0
movs r3, 0x14
ldrsh r0, [r2, r3]
ldrb r1, [r1]
adds r6, r0, r1
movs r1, 0x3A
ldrsh r0, [r7, r1]
adds r4, r7, 0
adds r4, 0x2E
cmp r0, r6
beq _0803FD3E
strh r6, [r7, 0x3A]
ldr r3, _0803FCF8
adds r0, r2, r3
ldrb r0, [r0]
bl GetStairDirection
lsls r0, 24
cmp r0, 0
beq _0803FCFC
movs r0, 0
b _0803FD00
.align 2, 0
_0803FCE4: .4byte gUnknown_203B46C
_0803FCE8: .4byte gUnknown_202D068
_0803FCEC: .4byte gUnknown_202B038
_0803FCF0: .4byte gDungeonGlobalData
_0803FCF4: .4byte 0x00000645
_0803FCF8: .4byte 0x00000644
_0803FCFC:
ldr r1, _0803FD20
adds r0, r1, 0
_0803FD00:
strh r0, [r5, 0x2]
cmp r6, 0x9
bgt _0803FD28
adds r1, r5, 0x4
adds r4, r7, 0
adds r4, 0x2E
ldrb r2, [r4]
adds r0, r6, 0
movs r3, 0x1
bl sub_803FE30
ldr r2, _0803FD24
adds r0, r2, 0
strh r0, [r5, 0x6]
b _0803FD3E
.align 2, 0
_0803FD20: .4byte 0x0000f2be
_0803FD24: .4byte 0x0000f2b8
_0803FD28:
adds r1, r5, 0x4
adds r4, r7, 0
adds r4, 0x2E
ldrb r2, [r4]
adds r0, r6, 0
movs r3, 0
bl sub_803FE30
ldr r3, _0803FE10
adds r0, r3, 0
strh r0, [r5, 0x8]
_0803FD3E:
movs r1, 0x3C
ldrsh r0, [r7, r1]
cmp r0, r10
beq _0803FD64
mov r2, r10
strh r2, [r7, 0x3C]
ldr r3, _0803FE14
adds r0, r3, 0
strh r0, [r5, 0xA]
ldr r1, _0803FE18
adds r0, r1, 0
strh r0, [r5, 0xC]
adds r1, r5, 0
adds r1, 0xE
ldrb r2, [r4]
mov r0, r10
movs r3, 0
bl sub_803FE30
_0803FD64:
movs r2, 0x3E
ldrsh r0, [r7, r2]
cmp r0, r9
beq _0803FD84
ldr r3, _0803FE1C
adds r0, r3, 0
strh r0, [r5, 0x12]
ldr r1, _0803FE20
adds r0, r1, 0
strh r0, [r5, 0x14]
adds r1, r5, 0
adds r1, 0x16
ldrb r2, [r4]
mov r0, r9
bl sub_803FF18
_0803FD84:
adds r6, r7, 0
adds r6, 0x40
movs r2, 0
ldrsh r0, [r6, r2]
cmp r0, r8
beq _0803FDA2
ldr r3, _0803FE24
adds r0, r3, 0
strh r0, [r5, 0x1C]
adds r1, r5, 0
adds r1, 0x1E
ldrb r2, [r4]
mov r0, r8
bl sub_803FF18
_0803FDA2:
ldrb r2, [r4]
mov r0, r9
mov r1, r8
bl sub_803FA4C
mov r0, r8
strh r0, [r6]
mov r1, r9
strh r1, [r7, 0x3E]
mov r0, r8
cmp r0, 0
bge _0803FDBC
adds r0, 0x7
_0803FDBC:
asrs r1, r0, 3
adds r4, r7, 0
adds r4, 0x42
strh r1, [r4]
movs r0, 0x7
mov r2, r8
ands r2, r0
cmp r2, 0
beq _0803FDD2
adds r0, r1, 0x1
strh r0, [r4]
_0803FDD2:
movs r3, 0
ldrsh r0, [r4, r3]
cmp r0, 0xB
ble _0803FDDE
movs r0, 0xC
strh r0, [r4]
_0803FDDE:
movs r1, 0
ldr r0, _0803FE28
movs r2, 0xB3
lsls r2, 2
adds r4, r2, 0
ldr r2, _0803FE2C
adds r3, r2, 0
adds r2, r0, 0
adds r2, 0x24
_0803FDF0:
adds r0, r1, r4
orrs r0, r3
strh r0, [r2]
adds r2, 0x2
adds r1, 0x1
cmp r1, 0xB
ble _0803FDF0
add sp, 0x4
pop {r3-r5}
mov r8, r3
mov r9, r4
mov r10, r5
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803FE10: .4byte 0x0000f2b8
_0803FE14: .4byte 0x0000f2b9
_0803FE18: .4byte 0x0000f2ba
_0803FE1C: .4byte 0x0000f2bb
_0803FE20: .4byte 0x0000f2bc
_0803FE24: .4byte 0x0000f2bd
_0803FE28: .4byte gUnknown_202B038
_0803FE2C: .4byte 0xfffff000
thumb_func_end sub_803FB74
thumb_func_start sub_803FE30
sub_803FE30:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r4, r1, 0
lsls r2, 24
lsrs r2, 24
adds r1, r2, 0
lsls r3, 24
lsrs r3, 24
mov r12, r3
movs r0, 0
cmp r2, 0
bne _0803FE4E
movs r0, 0x37
_0803FE4E:
cmp r5, 0x64
ble _0803FE70
cmp r2, 0
beq _0803FE60
ldr r1, _0803FE5C
adds r0, r1, 0
b _0803FE64
.align 2, 0
_0803FE5C: .4byte 0x0000f291
_0803FE60:
ldr r2, _0803FE6C
adds r0, r2, 0
_0803FE64:
strh r0, [r4]
strh r0, [r4, 0x2]
b _0803FF00
.align 2, 0
_0803FE6C: .4byte 0x0000f2c8
_0803FE70:
cmp r5, 0x64
bne _0803FEBC
ldr r1, _0803FE84
adds r0, r1, 0
strh r0, [r4]
ldr r2, _0803FE88
adds r0, r2, 0
strh r0, [r4, 0x2]
b _0803FF00
.align 2, 0
_0803FE84: .4byte 0x0000f294
_0803FE88: .4byte 0x0000f295
_0803FE8C:
ldr r1, _0803FEB4
lsls r0, r6, 3
adds r0, r6
adds r0, r2
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
strh r0, [r4]
subs r0, r5, r3
adds r0, r7
movs r1, 0x96
lsls r1, 2
adds r0, r1
ldr r2, _0803FEB8
adds r1, r2, 0
orrs r0, r1
mov r1, r8
strh r0, [r1]
b _0803FF00
.align 2, 0
_0803FEB4: .4byte gUnknown_80F64D8
_0803FEB8: .4byte 0xfffff000
_0803FEBC:
adds r2, r4, 0x2
mov r8, r2
adds r7, r0, 0
adds r7, 0x30
cmp r5, 0x9
ble _0803FEE2
movs r6, 0
cmp r1, 0
bne _0803FED0
movs r6, 0x1
_0803FED0:
movs r2, 0
ldr r0, _0803FF0C
_0803FED4:
ldr r3, [r0]
cmp r3, r5
ble _0803FE8C
adds r0, 0x4
adds r2, 0x1
cmp r2, 0x8
ble _0803FED4
_0803FEE2:
mov r0, r12
cmp r0, 0
bne _0803FEF0
ldr r1, _0803FF10
adds r0, r1, 0
strh r0, [r4]
adds r4, 0x2
_0803FEF0:
adds r0, r5, r7
movs r2, 0x96
lsls r2, 2
adds r0, r2
ldr r2, _0803FF14
adds r1, r2, 0
orrs r0, r1
strh r0, [r4]
_0803FF00:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_0803FF0C: .4byte gUnknown_80F64B4
_0803FF10: .4byte 0x0000f278
_0803FF14: .4byte 0xfffff000
thumb_func_end sub_803FE30
thumb_func_start sub_803FF18
sub_803FF18:
push {r4-r7,lr}
mov r7, r8
push {r7}
adds r5, r0, 0
adds r3, r1, 0
lsls r2, 24
lsrs r2, 24
movs r6, 0
cmp r2, 0
bne _0803FF2E
movs r6, 0x1
_0803FF2E:
movs r1, 0
cmp r2, 0
bne _0803FF36
movs r1, 0x37
_0803FF36:
ldr r0, _0803FF54
cmp r5, r0
ble _0803FF7C
ldr r0, _0803FF58
lsls r1, r6, 3
adds r1, r6
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
strh r0, [r3]
adds r3, 0x2
strh r0, [r3]
strh r0, [r3, 0x2]
b _0804001A
.align 2, 0
_0803FF54: .4byte 0x000003e7
_0803FF58: .4byte gUnknown_80F6544
_0803FF5C:
ldr r1, _0803FF78
lsls r0, r6, 3
adds r0, r6
adds r0, r4
lsls r0, 1
adds r0, r1
ldrh r0, [r0]
strh r0, [r3]
adds r3, 0x2
subs r5, r2
mov r1, r8
lsls r0, r1, 24
lsrs r7, r0, 24
b _0803FF98
.align 2, 0
_0803FF78: .4byte gUnknown_80F6544
_0803FF7C:
movs r7, 0x20
movs r4, 0
adds r1, 0x30
mov r8, r1
ldr r2, _0803FFC0
mov r12, r2
ldr r0, _0803FFC4
_0803FF8A:
ldr r2, [r0]
cmp r2, r5
ble _0803FF5C
adds r0, 0x4
adds r4, 0x1
cmp r4, 0x8
ble _0803FF8A
_0803FF98:
cmp r4, 0x9
bne _0803FFAC
movs r1, 0x96
lsls r1, 2
adds r0, r7, r1
ldr r2, _0803FFC8
adds r1, r2, 0
orrs r0, r1
strh r0, [r3]
adds r3, 0x2
_0803FFAC:
movs r4, 0
mov r0, r12
ldr r2, [r0]
cmp r2, r5
bgt _0803FFD0
ldr r0, _0803FFCC
lsls r1, r6, 3
adds r1, r6
b _0803FFE8
.align 2, 0
_0803FFC0: .4byte gUnknown_80F6520
_0803FFC4: .4byte gUnknown_80F64FC
_0803FFC8: .4byte 0xfffff000
_0803FFCC: .4byte gUnknown_80F6544
_0803FFD0:
adds r4, 0x1
cmp r4, 0x8
bgt _0803FFF4
lsls r0, r4, 2
add r0, r12
ldr r2, [r0]
cmp r2, r5
bgt _0803FFD0
ldr r0, _08040024
lsls r1, r6, 3
adds r1, r6
adds r1, r4
_0803FFE8:
lsls r1, 1
adds r1, r0
ldrh r0, [r1]
strh r0, [r3]
adds r3, 0x2
subs r5, r2
_0803FFF4:
cmp r4, 0x9
bne _08040008
movs r1, 0x96
lsls r1, 2
adds r0, r7, r1
ldr r2, _08040028
adds r1, r2, 0
orrs r0, r1
strh r0, [r3]
adds r3, 0x2
_08040008:
mov r1, r8
adds r0, r5, r1
movs r2, 0x96
lsls r2, 2
adds r0, r2
ldr r2, _08040028
adds r1, r2, 0
orrs r0, r1
strh r0, [r3]
_0804001A:
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08040024: .4byte gUnknown_80F6544
_08040028: .4byte 0xfffff000
thumb_func_end sub_803FF18
.align 2,0 @ Don't pad with nop