summaryrefslogtreecommitdiff
path: root/asm/code_803D110.s
diff options
context:
space:
mode:
authorSeth Barberee <seth.barberee@gmail.com>2020-12-17 13:17:58 -0600
committerGitHub <noreply@github.com>2020-12-17 13:17:58 -0600
commit096de8d9b2ffd90c52e790296bfd7c5436d45ca3 (patch)
tree9c5af2e04dea05221c71946a5dfc06471f77801d /asm/code_803D110.s
parentbc504264f1e54b3c1e482710c592e5549828bfe1 (diff)
parentf90f3affeb9b0a66aa7df68f5fdecd692033faf9 (diff)
Merge pull request #12 from SethBarberee/master
Merge work from SethBarberee/pmd-red into pret.
Diffstat (limited to 'asm/code_803D110.s')
-rw-r--r--asm/code_803D110.s6091
1 files changed, 6091 insertions, 0 deletions
diff --git a/asm/code_803D110.s b/asm/code_803D110.s
new file mode 100644
index 0000000..63efd41
--- /dev/null
+++ b/asm/code_803D110.s
@@ -0,0 +1,6091 @@
+ .include "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 sub_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 sub_809488C
+ 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 sub_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 sub_8094924
+ 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 sub_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 sub_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 sub_803D358
+sub_803D358:
+ 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 sub_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 sub_803D358
+
+ 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 sub_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 gUnknown_203B418
+_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 sub_808E9B8
+ 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 gUnknown_203B418
+_0803D658: .4byte 0x00000644
+_0803D65C: .4byte 0x0001c570
+_0803D660: .4byte gUnknown_80F4D8C
+_0803D664: .4byte gUnknown_83B0000
+_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 gUnknown_203B418
+_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 sub_8084100
+ 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 gUnknown_203B418
+_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 sub_8084100
+ 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 gUnknown_203B418
+_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 sub_8084100
+ 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 sub_8090BD0
+ 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 gUnknown_203B418
+_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 sub_808E9B8
+ 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 gUnknown_203B418
+ 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 sub_808E9B8
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_808E9B8
+ 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 sub_8084100
+ 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 sub_808E9B8
+ lsls r0, 16
+ asrs r0, 16
+ b _0803DA14
+ .align 2, 0
+_0803D9EC: .4byte 0x00002710
+_0803D9F0: .4byte gUnknown_203B418
+_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 sub_808E9B8
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, r7
+ bne _0803DA60
+ ldr r0, [r6]
+ adds r0, r4
+ bl sub_808E9E4
+ b _0803DA72
+ .align 2, 0
+_0803DA54: .4byte gUnknown_203B418
+_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 sub_800D158
+ b _0803DBCA
+ .align 2, 0
+_0803DB84: .4byte gUnknown_80F60F8
+_0803DB88: .4byte gUnknown_83B0000
+_0803DB8C: .4byte gDungeonNameBannerPalette
+_0803DB90: .4byte gUnknown_80F6100
+_0803DB94: .4byte gDungeonNameBannerFontFile
+_0803DB98: .4byte gDungeonNameBannerFont
+_0803DB9C: .4byte 0x06000140
+_0803DBA0: .4byte gUnknown_203B418
+_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 sub_800D158
+_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 gUnknown_83B0000
+_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 gUnknown_83B0000
+_0803E120: .4byte 0x0600c000
+_0803E124: .4byte gUnknown_202ECA4
+_0803E128: .4byte gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_800CCA0
+ b _0803E4FC
+ .align 2, 0
+_0803E4D8: .4byte gUnknown_202EDD4
+_0803E4DC: .4byte gUnknown_203B418
+_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 sub_800CCA0
+_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 sub_800CCAC
+ 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 sub_800485C
+ 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 gUnknown_203B418
+_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 gUnknown_203B47C
+_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 sub_800485C
+ 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 gUnknown_203B47C
+_0803E700: .4byte gUnknown_203B418
+_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 gUnknown_20255F0
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_8004914
+ 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 sub_8004914
+ 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 sub_8004914
+ 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 sub_8004914
+ 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 sub_8004914
+ 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 sub_8004914
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+ 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 sub_80450E0
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_8083294
+ lsls r0, 24
+ lsrs r0, 24
+ b _0803F49A
+ .align 2, 0
+_0803F484: .4byte gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_80450E0
+ 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 sub_8046CB0
+ 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 gUnknown_203B418
+_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 sub_8071884
+ 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 sub_80450E0
+ 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 gUnknown_203B418
+_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 sub_804954C
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_80450F8
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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 sub_8094450
+ 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 gUnknown_203B418
+_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 gUnknown_203B418
+_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
+
+ thumb_func_start sub_804002C
+sub_804002C:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ mov r8, r0
+ ldr r0, _08040088
+ ldr r0, [r0]
+ ldr r1, _0804008C
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ movs r5, 0
+ movs r7, 0x1
+_08040046:
+ movs r4, 0
+ adds r6, r5, 0x1
+_0804004A:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_8049590
+ ldrh r1, [r0, 0x4]
+ orrs r1, r7
+ strh r1, [r0, 0x4]
+ adds r4, 0x1
+ cmp r4, 0x37
+ ble _0804004A
+ adds r5, r6, 0
+ cmp r5, 0x1F
+ ble _08040046
+ movs r0, 0
+ bl sub_803F580
+ bl sub_8049ED4
+ bl sub_8040A84
+ ldr r0, _08040090
+ ldr r1, [r0]
+ mov r0, r8
+ bl sub_80522A8
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040088: .4byte gUnknown_203B418
+_0804008C: .4byte 0x0001820b
+_08040090: .4byte gUnknown_80FD040
+ thumb_func_end sub_804002C
+
+ .align 2,0 @ Don't pad with nop