summaryrefslogtreecommitdiff
path: root/asm/code_803D110.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/code_803D110.s')
-rw-r--r--asm/code_803D110.s11568
1 files changed, 11568 insertions, 0 deletions
diff --git a/asm/code_803D110.s b/asm/code_803D110.s
new file mode 100644
index 0000000..7e74795
--- /dev/null
+++ b/asm/code_803D110.s
@@ -0,0 +1,11568 @@
+ .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 sub_8094FB4
+ 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 sub_8094FB4
+ 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
+
+ thumb_func_start sub_8040094
+sub_8040094:
+ push {lr}
+ ldr r1, _080400C8
+ ldr r1, [r1]
+ ldr r2, _080400CC
+ adds r1, r2
+ strb r0, [r1]
+ bl sub_803F7BC
+ bl sub_80060EC
+ ldr r0, _080400D0
+ ldr r0, [r0]
+ bl sub_8094FB4
+ bl sub_800CB20
+ bl sub_800485C
+ bl xxx_call_update_bg_sound_input
+ bl sub_8083F58
+ bl sub_8011860
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080400C8: .4byte gUnknown_203B418
+_080400CC: .4byte 0x00018217
+_080400D0: .4byte gUnknown_203B47C
+ thumb_func_end sub_8040094
+
+ thumb_func_start sub_80400D4
+sub_80400D4:
+ push {r4,lr}
+ ldr r0, _08040114
+ ldr r4, [r0]
+ movs r0, 0xC1
+ lsls r0, 9
+ adds r3, r4, r0
+ ldr r0, [r3]
+ cmp r0, 0
+ beq _0804010C
+ cmp r0, 0x1E
+ ble _080400EC
+ movs r0, 0x1F
+_080400EC:
+ ldr r1, _08040118
+ adds r2, r4, r1
+ ldr r1, _0804011C
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ ldr r0, [r3]
+ subs r0, 0x1
+ str r0, [r3]
+ cmp r0, 0
+ bne _0804010C
+ ldr r1, _08040120
+ adds r0, r4, r1
+ ldr r0, [r0]
+ str r0, [r3]
+_0804010C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040114: .4byte gUnknown_203B418
+_08040118: .4byte 0x000181fc
+_0804011C: .4byte gUnknown_80F6568
+_08040120: .4byte 0x00018204
+ thumb_func_end sub_80400D4
+
+ thumb_func_start sub_8040124
+sub_8040124:
+ ldr r1, _0804012C
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_0804012C: .4byte gUnknown_202EE01
+ thumb_func_end sub_8040124
+
+ thumb_func_start sub_8040130
+sub_8040130:
+ push {lr}
+ ldr r0, _08040144
+ ldr r1, _08040148
+ bl OpenFileAndGetFileDataPtr
+ ldr r1, _0804014C
+ str r0, [r1]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040144: .4byte gUnknown_80F6604
+_08040148: .4byte gUnknown_83B0000
+_0804014C: .4byte gUnknown_202EE04
+ thumb_func_end sub_8040130
+
+ thumb_func_start sub_8040150
+sub_8040150:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ movs r0, 0
+ ldr r2, _080401EC
+_08040164:
+ movs r4, 0
+ lsls r1, r0, 3
+ adds r3, r0, 0x1
+ mov r8, r3
+ subs r1, r0
+ lsls r0, r1, 7
+ ldr r3, _080401F0
+ adds r6, r0, r3
+ lsls r5, r1, 2
+_08040176:
+ ldr r0, [r2]
+ adds r0, r6
+ lsls r1, r4, 5
+ adds r0, r1
+ movs r1, 0x20
+ str r2, [sp]
+ bl CpuClear
+ ldr r2, [sp]
+ ldr r0, [r2]
+ adds r1, r4, r5
+ ldr r3, _080401F4
+ adds r0, r3
+ adds r0, r1
+ movs r7, 0
+ strb r7, [r0]
+ adds r4, 0x1
+ cmp r4, 0x1B
+ ble _08040176
+ mov r0, r8
+ cmp r0, 0xF
+ ble _08040164
+ mov r0, r9
+ cmp r0, 0
+ bne _080401B0
+ ldr r1, _080401F8
+ movs r0, 0x64
+ strh r0, [r1]
+ strh r0, [r1, 0x2]
+_080401B0:
+ ldr r3, _080401EC
+ ldr r0, [r3]
+ ldr r2, _080401FC
+ adds r1, r0, r2
+ str r7, [r1]
+ ldr r1, _08040200
+ adds r0, r1
+ movs r2, 0x1
+ strb r2, [r0]
+ ldr r0, [r3]
+ ldr r3, _08040204
+ adds r0, r3
+ strb r7, [r0]
+ ldr r0, _08040208
+ strb r2, [r0]
+ ldr r1, _0804020C
+ ldr r0, _08040210
+ str r0, [r1]
+ ldr r0, _08040214
+ strb r2, [r0]
+ bl sub_8040238
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080401EC: .4byte gUnknown_203B418
+_080401F0: .4byte 0x0001822c
+_080401F4: .4byte 0x0001ba2c
+_080401F8: .4byte gUnknown_203B410
+_080401FC: .4byte 0x0001bdcc
+_08040200: .4byte 0x0001bdd0
+_08040204: .4byte 0x0001bdd2
+_08040208: .4byte gUnknown_202EE00
+_0804020C: .4byte gUnknown_202EE08
+_08040210: .4byte 0x06001700
+_08040214: .4byte gUnknown_202EE01
+ thumb_func_end sub_8040150
+
+ thumb_func_start sub_8040218
+sub_8040218:
+ push {lr}
+ ldr r0, _08040230
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08040226
+ bl CloseFile
+_08040226:
+ bl sub_8040124
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040230: .4byte gUnknown_202EE04
+ thumb_func_end sub_8040218
+
+ thumb_func_start nullsub_203
+nullsub_203:
+ bx lr
+ thumb_func_end nullsub_203
+
+ thumb_func_start sub_8040238
+sub_8040238:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r1, _0804026C
+ ldr r0, [r1]
+ cmp r0, 0
+ beq _080402A0
+ ldr r0, _08040270
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080402A0
+ movs r6, 0
+ ldr r0, _08040274
+ mov r8, r0
+ adds r7, r1, 0
+_08040256:
+ cmp r6, 0xE
+ bne _08040278
+ movs r0, 0xEE
+ mov r1, r8
+ bl SetBGPaletteBufferColorArray
+ movs r0, 0xEE
+ mov r1, r8
+ bl nullsub_5
+ b _0804029A
+ .align 2, 0
+_0804026C: .4byte gUnknown_202EE04
+_08040270: .4byte gUnknown_202EE01
+_08040274: .4byte gUnknown_202D03C
+_08040278:
+ adds r5, r6, 0
+ adds r5, 0xE0
+ ldr r0, [r7]
+ ldr r0, [r0, 0x4]
+ lsls r4, r6, 2
+ ldr r1, [r0, 0x4]
+ adds r1, r4
+ adds r0, r5, 0
+ bl SetBGPaletteBufferColorArray
+ ldr r0, [r7]
+ ldr r0, [r0, 0x4]
+ ldr r1, [r0, 0x4]
+ adds r1, r4
+ adds r0, r5, 0
+ bl nullsub_5
+_0804029A:
+ adds r6, 0x1
+ cmp r6, 0xF
+ ble _08040256
+_080402A0:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8040238
+
+ thumb_func_start sub_80402AC
+sub_80402AC:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ mov r8, r0
+ str r1, [sp]
+ ldr r4, _0804034C
+ ldr r0, [r4]
+ str r0, [sp, 0x4]
+ movs r1, 0x1
+ mov r10, r1
+ ldr r0, _08040350
+ ldr r0, [r0]
+ cmp r0, 0
+ bne _080402D0
+ b _08040776
+_080402D0:
+ ldr r0, _08040354
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080402DA
+ b _08040776
+_080402DA:
+ bl sub_800EC74
+ lsls r0, 24
+ cmp r0, 0
+ beq _080402E6
+ b _08040776
+_080402E6:
+ mov r2, r8
+ cmp r2, 0
+ bge _080402EE
+ b _08040776
+_080402EE:
+ ldr r3, [sp]
+ cmp r3, 0x1
+ bgt _080402F6
+ b _08040776
+_080402F6:
+ cmp r2, 0x37
+ ble _080402FC
+ b _08040776
+_080402FC:
+ cmp r3, 0x1E
+ ble _08040302
+ b _08040776
+_08040302:
+ mov r0, r8
+ adds r1, r3, 0
+ bl sub_804954C
+ mov r9, r0
+ ldrh r0, [r0]
+ movs r5, 0x3
+ ands r5, r0
+ str r5, [sp, 0x8]
+ ldr r0, [r4]
+ ldr r7, _08040358
+ adds r1, r0, r7
+ ldrb r1, [r1]
+ str r1, [sp, 0xC]
+ ldr r2, _0804035C
+ adds r1, r0, r2
+ ldrb r5, [r1]
+ ldr r3, _08040360
+ adds r1, r0, r3
+ ldrb r1, [r1]
+ str r1, [sp, 0x14]
+ subs r7, 0x2
+ adds r1, r0, r7
+ ldrb r1, [r1]
+ str r1, [sp, 0x10]
+ ldr r1, _08040364
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r5, 0
+ beq _08040368
+ mov r2, r9
+ ldrb r0, [r2, 0x4]
+ mov r7, r10
+ ands r7, r0
+ movs r3, 0
+ str r3, [sp, 0x18]
+ b _0804039C
+ .align 2, 0
+_0804034C: .4byte gUnknown_203B418
+_08040350: .4byte gUnknown_202EE04
+_08040354: .4byte gUnknown_202EE01
+_08040358: .4byte 0x00018210
+_0804035C: .4byte 0x0001820a
+_08040360: .4byte 0x0001820f
+_08040364: .4byte 0x0001820b
+_08040368:
+ cmp r0, 0
+ beq _08040370
+ movs r7, 0x1
+ b _08040378
+_08040370:
+ mov r7, r9
+ ldrb r0, [r7, 0x4]
+ mov r7, r10
+ ands r7, r0
+_08040378:
+ bl sub_8043D10
+ lsls r0, 24
+ cmp r0, 0
+ bne _08040398
+ ldr r0, _08040390
+ ldr r0, [r0]
+ ldr r1, _08040394
+ adds r0, r1
+ ldrb r0, [r0]
+ str r0, [sp, 0x18]
+ b _0804039C
+ .align 2, 0
+_08040390: .4byte gUnknown_203B418
+_08040394: .4byte 0x00018211
+_08040398:
+ movs r2, 0
+ str r2, [sp, 0x18]
+_0804039C:
+ bl sub_8094C48
+ lsls r0, 24
+ cmp r0, 0
+ bne _080403A8
+ b _08040632
+_080403A8:
+ ldr r0, _080403FC
+ ldr r0, [r0]
+ ldr r3, _08040400
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080403B8
+ b _08040632
+_080403B8:
+ movs r6, 0
+ cmp r5, 0
+ bne _0804045E
+ mov r0, r9
+ ldr r4, [r0, 0x10]
+ cmp r4, 0
+ beq _0804045E
+ adds r0, r4, 0
+ bl sub_80450F8
+ adds r1, r0, 0
+ ldr r0, _08040404
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0804045E
+ cmp r1, 0x1
+ bne _0804045E
+ adds r0, r4, 0
+ bl sub_8045804
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804045E
+ ldr r1, [r4, 0x70]
+ adds r0, r1, 0
+ adds r0, 0x40
+ ldrb r0, [r0]
+ cmp r0, 0x4A
+ beq _080403F6
+ cmp r0, 0x47
+ bne _08040408
+_080403F6:
+ movs r0, 0x1
+ b _0804040A
+ .align 2, 0
+_080403FC: .4byte gUnknown_203B418
+_08040400: .4byte 0x0001356c
+_08040404: .4byte gUnknown_202EE00
+_08040408:
+ movs r0, 0
+_0804040A:
+ cmp r0, 0
+ bne _08040458
+ adds r0, r1, 0
+ adds r0, 0xA4
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _08040458
+ cmp r0, 0x4
+ beq _08040458
+ ldrb r0, [r1, 0x6]
+ cmp r0, 0
+ beq _08040426
+ movs r6, 0x2
+ b _0804045A
+_08040426:
+ ldrb r0, [r1, 0x7]
+ cmp r0, 0
+ beq _08040458
+ ldr r0, _0804044C
+ mov r1, r8
+ strh r1, [r0]
+ mov r2, sp
+ ldrh r2, [r2]
+ strh r2, [r0, 0x2]
+ ldr r0, _08040450
+ ldr r0, [r0]
+ ldr r3, _08040454
+ adds r0, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0804045A
+ movs r6, 0x8
+ b _0804045A
+ .align 2, 0
+_0804044C: .4byte gUnknown_203B410
+_08040450: .4byte gUnknown_203B418
+_08040454: .4byte 0x00018214
+_08040458:
+ movs r6, 0xA
+_0804045A:
+ movs r0, 0
+ mov r10, r0
+_0804045E:
+ mov r1, r10
+ cmp r1, 0
+ beq _0804054E
+ cmp r5, 0
+ bne _08040548
+ mov r2, r9
+ ldr r4, [r2, 0x14]
+ cmp r4, 0
+ beq _08040500
+ adds r0, r4, 0
+ bl sub_80450F8
+ adds r5, r0, 0
+ cmp r7, 0
+ bne _0804049E
+ movs r6, 0
+ cmp r5, 0x3
+ bne _0804054E
+ ldr r3, [sp, 0x10]
+ cmp r3, 0
+ bne _08040494
+ mov r5, r9
+ ldrh r1, [r5, 0x4]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0804054E
+_08040494:
+ ldr r0, [sp, 0x8]
+ cmp r0, 0
+ beq _0804054E
+ movs r6, 0x3
+ b _0804054E
+_0804049E:
+ cmp r5, 0x2
+ bne _080404C4
+ adds r0, r4, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080404B2
+ ldr r1, [sp, 0x14]
+ cmp r1, 0
+ beq _080404C4
+_080404B2:
+ adds r0, r4, 0
+ bl sub_8045104
+ ldr r1, _080404FC
+ ldrb r0, [r0]
+ adds r0, r1
+ ldrb r6, [r0]
+ movs r2, 0
+ mov r10, r2
+_080404C4:
+ mov r3, r10
+ cmp r3, 0
+ beq _0804054E
+ cmp r5, 0x3
+ bne _080404EC
+ ldr r5, [sp, 0x10]
+ cmp r5, 0
+ bne _080404E0
+ mov r0, r9
+ ldrh r1, [r0, 0x4]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080404EC
+_080404E0:
+ ldr r1, [sp, 0x8]
+ cmp r1, 0
+ beq _080404EC
+ movs r6, 0x3
+ movs r2, 0
+ mov r10, r2
+_080404EC:
+ mov r3, r10
+ cmp r3, 0
+ beq _0804054E
+ ldr r5, [sp, 0x8]
+ cmp r5, 0x1
+ beq _08040548
+ movs r6, 0
+ b _0804054E
+ .align 2, 0
+_080404FC: .4byte gUnknown_80F65F0
+_08040500:
+ cmp r7, 0
+ bne _08040528
+ ldr r0, [sp, 0x18]
+ cmp r0, 0
+ beq _08040548
+ mov r2, r9
+ ldrh r1, [r2]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _08040548
+ bl sub_8043D10
+ lsls r0, 24
+ movs r6, 0x5
+ cmp r0, 0
+ bne _0804054E
+ movs r6, 0x6
+ b _0804054E
+_08040528:
+ mov r3, r9
+ ldrh r1, [r3]
+ movs r0, 0x80
+ lsls r0, 2
+ ands r0, r1
+ cmp r0, 0
+ beq _08040548
+ bl sub_8043D10
+ lsls r0, 24
+ movs r6, 0x5
+ cmp r0, 0
+ bne _08040544
+ movs r6, 0x6
+_08040544:
+ movs r5, 0
+ mov r10, r5
+_08040548:
+ mov r0, r10
+ cmp r0, 0
+ bne _0804055A
+_0804054E:
+ ldr r1, [sp, 0xC]
+ cmp r1, 0
+ beq _0804055A
+ cmp r6, 0
+ beq _0804055E
+ movs r6, 0xB
+_0804055A:
+ cmp r6, 0
+ bne _08040606
+_0804055E:
+ cmp r7, 0
+ beq _08040568
+ ldr r2, [sp, 0x8]
+ cmp r2, 0x1
+ beq _0804056C
+_08040568:
+ movs r6, 0x1
+ b _08040606
+_0804056C:
+ movs r4, 0xF
+ ldr r3, [sp]
+ cmp r3, 0x1E
+ bgt _0804058A
+ adds r1, r3, 0
+ adds r1, 0x1
+ mov r0, r8
+ bl sub_804954C
+ ldrh r1, [r0]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _0804058A
+ movs r4, 0xE
+_0804058A:
+ ldr r5, [sp]
+ cmp r5, 0
+ ble _080405AA
+ adds r1, r5, 0
+ subs r1, 0x1
+ mov r0, r8
+ bl sub_804954C
+ ldrh r1, [r0]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _080405AA
+ movs r0, 0x5
+ negs r0, r0
+ ands r4, r0
+_080405AA:
+ mov r7, r8
+ cmp r7, 0x36
+ bgt _080405CA
+ mov r0, r8
+ adds r0, 0x1
+ ldr r1, [sp]
+ bl sub_804954C
+ ldrh r1, [r0]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _080405CA
+ movs r0, 0x3
+ negs r0, r0
+ ands r4, r0
+_080405CA:
+ mov r0, r8
+ cmp r0, 0
+ ble _080405E8
+ subs r0, 0x1
+ ldr r1, [sp]
+ bl sub_804954C
+ ldrh r1, [r0]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ bne _080405E8
+ movs r0, 0x9
+ negs r0, r0
+ ands r4, r0
+_080405E8:
+ lsls r0, r4, 16
+ asrs r6, r0, 16
+ mov r2, r9
+ ldrh r1, [r2, 0x4]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _080405FE
+ adds r0, r6, 0
+ adds r0, 0x10
+ b _08040602
+_080405FE:
+ adds r0, r6, 0
+ adds r0, 0x20
+_08040602:
+ lsls r0, 16
+ asrs r6, r0, 16
+_08040606:
+ ldr r0, _08040618
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x4]
+ cmp r0, 0x6
+ bne _0804061C
+ adds r0, r6, 0
+ adds r0, 0x80
+ b _0804062C
+ .align 2, 0
+_08040618: .4byte gUnknown_203B46C
+_0804061C:
+ bl sub_8094C68
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _0804063A
+ adds r0, r6, 0
+ adds r0, 0x40
+_0804062C:
+ lsls r0, 16
+ asrs r6, r0, 16
+ b _0804063A
+_08040632:
+ movs r6, 0x1
+ ldr r1, _0804074C
+ movs r0, 0x64
+ strh r0, [r1]
+_0804063A:
+ mov r3, r8
+ lsrs r0, r3, 31
+ add r0, r8
+ asrs r0, 1
+ mov r9, r0
+ ldr r0, [sp]
+ subs r0, 0x2
+ lsrs r1, r0, 31
+ adds r1, r0, r1
+ asrs r1, 1
+ mov r5, r9
+ lsls r3, r5, 1
+ mov r7, r8
+ subs r3, r7, r3
+ lsls r2, r1, 1
+ subs r0, r2
+ lsls r0, 1
+ adds r3, r0
+ lsls r0, r1, 3
+ subs r5, r0, r1
+ lsls r0, r5, 7
+ ldr r1, _08040750
+ adds r0, r1
+ ldr r2, [sp, 0x4]
+ adds r0, r2, r0
+ mov r7, r9
+ lsls r1, r7, 5
+ adds r4, r0, r1
+ ldr r0, _08040754
+ ldr r0, [r0]
+ ldr r1, [r0, 0x4]
+ lsls r0, r6, 2
+ adds r0, r3
+ ldr r1, [r1]
+ lsls r0, 2
+ adds r0, r1
+ ldr r2, [r0]
+ ldr r0, [r4]
+ ldr r1, [r2]
+ ands r0, r1
+ ldr r1, [r2, 0x4]
+ orrs r0, r1
+ str r0, [r4]
+ ldr r0, [r4, 0x4]
+ ldr r1, [r2, 0x8]
+ ands r0, r1
+ ldr r1, [r2, 0xC]
+ orrs r0, r1
+ str r0, [r4, 0x4]
+ ldr r0, [r4, 0x8]
+ ldr r1, [r2, 0x10]
+ ands r0, r1
+ ldr r1, [r2, 0x14]
+ orrs r0, r1
+ str r0, [r4, 0x8]
+ ldr r0, [r4, 0xC]
+ ldr r1, [r2, 0x18]
+ ands r0, r1
+ ldr r1, [r2, 0x1C]
+ orrs r0, r1
+ str r0, [r4, 0xC]
+ ldr r0, [r4, 0x10]
+ ldr r1, [r2, 0x20]
+ ands r0, r1
+ ldr r1, [r2, 0x24]
+ orrs r0, r1
+ str r0, [r4, 0x10]
+ ldr r0, [r4, 0x14]
+ ldr r1, [r2, 0x28]
+ ands r0, r1
+ ldr r1, [r2, 0x2C]
+ orrs r0, r1
+ str r0, [r4, 0x14]
+ ldr r0, [r4, 0x18]
+ ldr r1, [r2, 0x30]
+ ands r0, r1
+ ldr r1, [r2, 0x34]
+ orrs r0, r1
+ str r0, [r4, 0x18]
+ ldr r0, [r4, 0x1C]
+ ldr r1, [r2, 0x38]
+ ands r0, r1
+ ldr r1, [r2, 0x3C]
+ orrs r0, r1
+ str r0, [r4, 0x1C]
+ ldr r0, [sp, 0x4]
+ ldr r1, _08040758
+ adds r2, r0, r1
+ ldrb r0, [r2]
+ cmp r0, 0
+ bne _08040776
+ lsls r5, 2
+ mov r10, r5
+ mov r3, r9
+ add r3, r10
+ ldr r5, _0804075C
+ mov r8, r5
+ ldr r0, [sp, 0x4]
+ add r0, r8
+ adds r1, r0, r3
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _08040776
+ movs r0, 0x1
+ strb r0, [r1]
+ ldr r7, [sp, 0x4]
+ ldr r1, _08040760
+ adds r6, r7, r1
+ ldr r5, [r6]
+ cmp r5, 0x27
+ bgt _08040774
+ lsls r1, r5, 1
+ adds r1, r5
+ lsls r1, 2
+ ldr r0, _08040764
+ adds r2, r7, r0
+ adds r2, r1
+ ldr r0, _08040768
+ lsls r3, 5
+ ldr r0, [r0]
+ adds r0, r3
+ str r0, [r2]
+ ldr r2, _0804076C
+ adds r0, r7, r2
+ adds r0, r1
+ str r4, [r0]
+ ldr r3, _08040770
+ adds r2, r7, r3
+ adds r2, r1
+ mov r0, r10
+ add r0, r8
+ adds r0, r7, r0
+ add r0, r9
+ str r0, [r2]
+ adds r0, r5, 0x1
+ str r0, [r6]
+ b _08040776
+ .align 2, 0
+_0804074C: .4byte gUnknown_203B410
+_08040750: .4byte 0x0001822c
+_08040754: .4byte gUnknown_202EE04
+_08040758: .4byte 0x0001bdd1
+_0804075C: .4byte 0x0001ba2c
+_08040760: .4byte 0x0001bdcc
+_08040764: .4byte 0x0001bbec
+_08040768: .4byte gUnknown_202EE08
+_0804076C: .4byte 0x0001bbf0
+_08040770: .4byte 0x0001bbf4
+_08040774:
+ strb r0, [r2]
+_08040776:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80402AC
+
+ thumb_func_start sub_8040788
+sub_8040788:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, _08040814
+ ldr r0, [r0]
+ mov r8, r0
+ cmp r0, 0
+ beq _08040870
+ ldr r0, _08040818
+ add r0, r8
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08040870
+ bl sub_800EC74
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0
+ bne _08040870
+ ldr r1, _0804081C
+ add r1, r8
+ ldrb r0, [r1]
+ cmp r0, 0
+ bne _0804082C
+ movs r6, 0
+ ldr r1, _08040820
+ add r1, r8
+ ldr r0, [r1]
+ cmp r6, r0
+ bge _08040868
+ adds r5, r1, 0
+ movs r4, 0
+_080407C8:
+ ldr r1, _08040824
+ adds r0, r4, r1
+ mov r1, r8
+ adds r3, r1, r0
+ ldr r1, [r3, 0x4]
+ ldr r2, [r3]
+ ldr r0, _08040828
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _080407E0
+ cmp r0, 0x3
+ bne _08040800
+_080407E0:
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldm r1!, {r0}
+ stm r2!, {r0}
+ ldr r0, [r1]
+ str r0, [r2]
+_08040800:
+ ldr r0, [r3, 0x8]
+ movs r1, 0
+ strb r1, [r0]
+ adds r4, 0xC
+ adds r6, 0x1
+ ldr r0, [r5]
+ cmp r6, r0
+ blt _080407C8
+ b _08040868
+ .align 2, 0
+_08040814: .4byte gUnknown_203B418
+_08040818: .4byte 0x0001bdd0
+_0804081C: .4byte 0x0001bdd1
+_08040820: .4byte 0x0001bdcc
+_08040824: .4byte 0x0001bbec
+_08040828: .4byte gUnknown_202EDD0
+_0804082C:
+ strb r2, [r1]
+ ldr r0, _0804087C
+ ldr r5, [r0]
+ ldr r4, _08040880
+ add r4, r8
+ movs r6, 0
+ movs r7, 0x80
+ lsls r7, 1
+_0804083C:
+ ldr r0, _08040884
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _08040848
+ cmp r0, 0x3
+ bne _08040854
+_08040848:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x80
+ lsls r2, 1
+ bl CpuCopy
+_08040854:
+ adds r5, r7
+ adds r4, r7
+ adds r6, 0x8
+ ldr r0, _08040888
+ cmp r6, r0
+ ble _0804083C
+ ldr r1, _0804088C
+ add r1, r8
+ movs r0, 0x1
+ strb r0, [r1]
+_08040868:
+ ldr r1, _08040890
+ add r1, r8
+ movs r0, 0
+ str r0, [r1]
+_08040870:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804087C: .4byte gUnknown_202EE08
+_08040880: .4byte 0x0001822c
+_08040884: .4byte gUnknown_202EDD0
+_08040888: .4byte 0x000001bf
+_0804088C: .4byte 0x0001bdd2
+_08040890: .4byte 0x0001bdcc
+ thumb_func_end sub_8040788
+
+ thumb_func_start sub_8040894
+sub_8040894:
+ push {r4-r7,lr}
+ sub sp, 0x8
+ ldr r0, _080409F4
+ ldr r1, [r0]
+ ldr r2, _080409F8
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080408A8
+ b _08040A6A
+_080408A8:
+ adds r2, 0x5
+ adds r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _080408B4
+ b _08040A6A
+_080408B4:
+ ldr r7, _080409FC
+ movs r1, 0
+ ldrsh r0, [r7, r1]
+ cmp r0, 0x63
+ ble _080408C0
+ b _08040A6A
+_080408C0:
+ ldr r0, _08040A00
+ ldrb r1, [r0]
+ adds r1, 0x1
+ strb r1, [r0]
+ movs r0, 0x8
+ ands r1, r0
+ cmp r1, 0
+ beq _080408D2
+ b _08040A6A
+_080408D2:
+ movs r0, 0
+ movs r1, 0
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ mov r0, sp
+ ldrh r0, [r0]
+ ldr r1, _08040A04
+ ands r1, r0
+ ldr r3, _08040A08
+ ldr r0, [sp]
+ ands r0, r3
+ orrs r0, r1
+ str r0, [sp]
+ mov r1, sp
+ ldrh r1, [r1]
+ adds r2, r3, 0
+ ands r2, r0
+ orrs r2, r1
+ str r2, [sp]
+ mov r0, sp
+ ldrh r1, [r0]
+ ldr r0, _08040A0C
+ ands r0, r1
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ mov r0, sp
+ ldrh r0, [r0]
+ adds r2, r3, 0
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ mov r0, sp
+ ldrh r1, [r0]
+ ldr r5, _08040A10
+ adds r0, r5, 0
+ ands r0, r1
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ mov r0, sp
+ ldrh r0, [r0]
+ adds r2, r3, 0
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ mov r0, sp
+ ldrh r1, [r0]
+ ldr r0, _08040A14
+ ands r0, r1
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ mov r0, sp
+ ldrh r0, [r0]
+ adds r2, r3, 0
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ mov r0, sp
+ ldrh r1, [r0]
+ ldr r0, _08040A18
+ ands r0, r1
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ mov r0, sp
+ ldrh r0, [r0]
+ adds r2, r3, 0
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ mov r0, sp
+ ldrh r1, [r0]
+ ldr r4, _08040A1C
+ adds r0, r4, 0
+ ands r0, r1
+ adds r1, r3, 0
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp]
+ mov r0, sp
+ ldrh r0, [r0]
+ ands r3, r1
+ orrs r3, r0
+ str r3, [sp]
+ mov r3, sp
+ ldrh r0, [r3, 0x2]
+ ldr r6, _08040A20
+ ands r6, r0
+ ands r6, r4
+ strh r6, [r3, 0x2]
+ ldr r2, _08040A24
+ ldrh r1, [r3, 0x4]
+ movs r0, 0xFC
+ lsls r0, 8
+ ands r0, r1
+ orrs r0, r2
+ ands r0, r5
+ movs r5, 0xF
+ lsls r1, r5, 12
+ ldr r4, _08040A28
+ ands r0, r4
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r3, 0x6]
+ ldr r2, _08040A2C
+ ands r2, r0
+ ldr r0, _08040A30
+ ands r2, r0
+ strh r2, [r3, 0x6]
+ ldr r0, _08040A34
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x4]
+ cmp r0, 0x6
+ bne _08040A3C
+ movs r1, 0
+ ldrsh r0, [r7, r1]
+ lsls r0, 2
+ adds r0, 0x10
+ ldr r1, _08040A38
+ ands r0, r1
+ strh r0, [r3, 0x2]
+ movs r1, 0x2
+ ldrsh r0, [r7, r1]
+ adds r0, 0x1
+ lsls r0, 2
+ ands r0, r4
+ lsls r0, 4
+ adds r1, r2, 0
+ ands r1, r5
+ orrs r1, r0
+ strh r1, [r3, 0x6]
+ movs r1, 0x80
+ lsls r1, 1
+ mov r0, sp
+ movs r2, 0
+ movs r3, 0
+ bl nullsub_11
+ b _08040A6A
+ .align 2, 0
+_080409F4: .4byte gUnknown_203B418
+_080409F8: .4byte 0x00018214
+_080409FC: .4byte gUnknown_203B410
+_08040A00: .4byte gUnknown_202EE02
+_08040A04: .4byte 0x0000feff
+_08040A08: .4byte 0xffff0000
+_08040A0C: .4byte 0x0000fdff
+_08040A10: .4byte 0x0000f3ff
+_08040A14: .4byte 0x0000efff
+_08040A18: .4byte 0x0000dfff
+_08040A1C: .4byte 0x00003fff
+_08040A20: .4byte 0x0000c1ff
+_08040A24: .4byte 0x00000215
+_08040A28: .4byte 0x00000fff
+_08040A2C: .4byte 0x0000fffe
+_08040A30: .4byte 0x0000fffd
+_08040A34: .4byte gUnknown_203B46C
+_08040A38: .4byte 0x000001ff
+_08040A3C:
+ movs r1, 0
+ ldrsh r0, [r7, r1]
+ lsls r0, 2
+ adds r0, 0x8
+ ldr r1, _08040A74
+ ands r0, r1
+ strh r0, [r3, 0x2]
+ movs r1, 0x2
+ ldrsh r0, [r7, r1]
+ lsls r0, 2
+ ands r0, r4
+ lsls r0, 4
+ adds r1, r2, 0
+ ands r1, r5
+ orrs r1, r0
+ strh r1, [r3, 0x6]
+ movs r1, 0x80
+ lsls r1, 1
+ mov r0, sp
+ movs r2, 0
+ movs r3, 0
+ bl AddSprite
+_08040A6A:
+ add sp, 0x8
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040A74: .4byte 0x000001ff
+ thumb_func_end sub_8040894
+
+ thumb_func_start sub_8040A78
+sub_8040A78:
+ ldr r1, _08040A80
+ movs r0, 0
+ strb r0, [r1]
+ bx lr
+ .align 2, 0
+_08040A80: .4byte gUnknown_202EE02
+ thumb_func_end sub_8040A78
+
+ thumb_func_start sub_8040A84
+sub_8040A84:
+ push {r4-r6,lr}
+ ldr r0, _08040AB4
+ ldr r0, [r0]
+ ldr r1, _08040AB8
+ adds r0, r1
+ movs r1, 0x1
+ strb r1, [r0]
+ movs r5, 0
+_08040A94:
+ movs r4, 0
+ adds r6, r5, 0x1
+_08040A98:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80402AC
+ adds r4, 0x1
+ cmp r4, 0x37
+ ble _08040A98
+ adds r5, r6, 0
+ cmp r5, 0x1F
+ ble _08040A94
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040AB4: .4byte gUnknown_203B418
+_08040AB8: .4byte 0x0001bdd1
+ thumb_func_end sub_8040A84
+
+ thumb_func_start sub_8040ABC
+sub_8040ABC:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ ldr r0, _08040AD8
+ ldr r0, [r0]
+ ldrb r0, [r0, 0x4]
+ cmp r0, 0x6
+ bne _08040ADC
+ movs r7, 0xF
+ movs r0, 0
+ b _08040AEC
+ .align 2, 0
+_08040AD8: .4byte gUnknown_203B46C
+_08040ADC:
+ cmp r1, 0
+ beq _08040AE8
+ movs r7, 0xE
+ movs r4, 0
+ mov r8, r4
+ b _08040AEE
+_08040AE8:
+ movs r7, 0x10
+ movs r0, 0x3
+_08040AEC:
+ mov r8, r0
+_08040AEE:
+ ldr r6, _08040B58
+ movs r2, 0x1
+ movs r1, 0
+ cmp r1, r7
+ bge _08040B22
+ ldr r4, _08040B5C
+ mov r12, r4
+_08040AFC:
+ lsls r0, r2, 6
+ mov r4, r12
+ adds r3, r0, r4
+ adds r4, r2, 0x1
+ adds r5, r1, 0x1
+ movs r2, 0x1B
+_08040B08:
+ adds r1, r6, 0
+ adds r0, r1, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ strh r1, [r3]
+ adds r3, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08040B08
+ adds r2, r4, 0
+ adds r1, r5, 0
+ cmp r1, r7
+ blt _08040AFC
+_08040B22:
+ movs r1, 0
+ cmp r1, r8
+ bge _08040B4C
+ ldr r6, _08040B5C
+ movs r0, 0xE0
+ lsls r0, 8
+ adds r3, r0, 0
+_08040B30:
+ lsls r0, r2, 6
+ adds r0, r6
+ adds r4, r2, 0x1
+ adds r5, r1, 0x1
+ movs r2, 0x1B
+_08040B3A:
+ strh r3, [r0]
+ adds r0, 0x2
+ subs r2, 0x1
+ cmp r2, 0
+ bge _08040B3A
+ adds r2, r4, 0
+ adds r1, r5, 0
+ cmp r1, r8
+ blt _08040B30
+_08040B4C:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040B58: .4byte 0x0000e0b8
+_08040B5C: .4byte gUnknown_202B03A
+ thumb_func_end sub_8040ABC
+
+ thumb_func_start sub_8040B60
+sub_8040B60:
+ push {r4,r5,lr}
+ ldr r0, _08040BA4
+ ldr r3, [r0]
+ ldr r1, _08040BA8
+ adds r0, r3, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08040B9E
+ movs r1, 0
+ ldr r2, _08040BAC
+ adds r5, r3, r2
+ movs r4, 0
+_08040B78:
+ lsls r0, r1, 3
+ adds r2, r1, 0x1
+ subs r0, r1
+ movs r1, 0x37
+ lsls r0, 2
+ adds r0, r5
+ adds r0, 0x37
+_08040B86:
+ strb r4, [r0]
+ subs r0, 0x1
+ subs r1, 0x1
+ cmp r1, 0
+ bge _08040B86
+ adds r1, r2, 0
+ cmp r1, 0x1F
+ ble _08040B78
+ movs r1, 0
+ ldr r2, _08040BA8
+ adds r0, r3, r2
+ strb r1, [r0]
+_08040B9E:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040BA4: .4byte gUnknown_203B418
+_08040BA8: .4byte 0x0001bdd2
+_08040BAC: .4byte 0x0001ba2c
+ thumb_func_end sub_8040B60
+
+ thumb_func_start sub_8040BB0
+sub_8040BB0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ bl sub_804143C
+ mov r8, r0
+ ldrh r4, [r7, 0x2]
+ adds r0, r6, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r8
+ bl sub_804141C
+ lsls r0, 24
+ lsrs r5, r0, 24
+ mov r9, r5
+ ldrh r4, [r7, 0x2]
+ adds r0, r6, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r8
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_800ECB8
+ movs r1, 0
+ ldrsh r4, [r0, r1]
+ adds r0, r6, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08040C28
+ adds r0, r6, 0
+ adds r1, r7, 0
+ bl sub_80414C0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08040C28
+ mov r0, r10
+ cmp r0, 0
+ bne _08040C2C
+_08040C28:
+ adds r0, r5, 0
+ b _08040C3C
+_08040C2C:
+ cmp r4, 0
+ beq _08040C3A
+ adds r0, r6, 0
+ adds r1, r7, 0
+ mov r2, r8
+ bl sub_8040C4C
+_08040C3A:
+ mov r0, r9
+_08040C3C:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8040BB0
+
+ thumb_func_start sub_8040C4C
+sub_8040C4C:
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x14
+ adds r7, r0, 0
+ adds r4, r1, 0
+ adds r6, r2, 0
+ ldrh r5, [r4, 0x2]
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r5, 0
+ adds r2, r6, 0
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ mov r9, r0
+ ldr r6, [r7, 0x70]
+ ldrh r0, [r4, 0x2]
+ bl sub_800EC94
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r0, 0x4
+ ldrsh r5, [r6, r0]
+ ldrh r4, [r4, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_80412E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ bl sub_800E710
+ adds r2, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r2, r0
+ beq _08040CC4
+ add r0, sp, 0x8
+ adds r1, r7, 0
+ adds r1, 0x28
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_800569C
+ b _08040CC8
+_08040CC4:
+ movs r0, 0
+ str r0, [sp, 0x8]
+_08040CC8:
+ mov r0, sp
+ mov r1, r9
+ strh r1, [r0]
+ mov r1, sp
+ ldrh r0, [r6, 0x4]
+ strh r0, [r1, 0x2]
+ ldr r0, [r7, 0xC]
+ cmp r0, 0
+ bge _08040CDC
+ adds r0, 0xFF
+_08040CDC:
+ asrs r0, 8
+ strh r0, [r1, 0x4]
+ mov r1, sp
+ ldr r0, [r7, 0x10]
+ cmp r0, 0
+ bge _08040CEA
+ adds r0, 0xFF
+_08040CEA:
+ asrs r0, 8
+ strh r0, [r1, 0x6]
+ adds r0, r6, 0
+ adds r0, 0x46
+ ldrb r0, [r0]
+ str r0, [sp, 0xC]
+ movs r0, 0
+ str r0, [sp, 0x10]
+ mov r0, sp
+ bl sub_8041500
+ mov r0, r9
+ bl sub_800EEC8
+ bl sub_800EF64
+ movs r0, 0x58
+ bl sub_803E46C
+ mov r0, sp
+ bl sub_800EA84
+ adds r4, r0, 0
+ adds r1, r7, 0
+ movs r2, 0x5
+ bl sub_8042DD4
+ ldr r0, _08040D28
+ ldrb r5, [r0]
+ ldr r6, _08040D2C
+ b _08040D78
+ .align 2, 0
+_08040D28: .4byte gUnknown_203B40D
+_08040D2C: .4byte 0x00001010
+_08040D30:
+ ldr r0, _08040D58
+ movs r1, 0x1
+ strb r1, [r0]
+ ldr r1, _08040D5C
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, r6
+ beq _08040D48
+ ldr r3, _08040D60
+ adds r0, r2, r3
+ strh r0, [r1]
+_08040D48:
+ ldr r1, _08040D64
+ ldr r0, [r1]
+ cmp r0, 0x4
+ ble _08040D68
+ subs r0, 0x4
+ str r0, [r1]
+ b _08040D6E
+ .align 2, 0
+_08040D58: .4byte gUnknown_203B40D
+_08040D5C: .4byte gUnknown_2026E4E
+_08040D60: .4byte 0x00000101
+_08040D64: .4byte gUnknown_202EDC8
+_08040D68:
+ movs r0, 0
+ str r0, [r1]
+ mov r8, r0
+_08040D6E:
+ bl sub_803EA10
+ movs r0, 0x26
+ bl sub_803E46C
+_08040D78:
+ adds r0, r4, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ beq _08040D8A
+ mov r0, r8
+ cmp r0, 0
+ bne _08040D30
+_08040D8A:
+ ldr r0, _08040D9C
+ strb r5, [r0]
+ add sp, 0x14
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08040D9C: .4byte gUnknown_203B40D
+ thumb_func_end sub_8040C4C
+
+ thumb_func_start sub_8040DA0
+sub_8040DA0:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ adds r7, r0, 0
+ mov r8, r1
+ bl sub_804143C
+ mov r9, r0
+ movs r0, 0
+ str r0, [sp, 0x14]
+ ldr r1, [r7, 0x70]
+ mov r10, r1
+ movs r0, 0x4
+ ldrsh r5, [r1, r0]
+ mov r1, r8
+ ldrh r4, [r1, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r9
+ bl sub_80412E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ bl sub_800EA44
+ lsls r0, 24
+ lsrs r0, 24
+ str r0, [sp, 0x18]
+ mov r0, sp
+ adds r1, r7, 0
+ mov r2, r8
+ mov r3, r9
+ bl sub_8041038
+ mov r0, sp
+ movs r1, 0x1
+ bl sub_800E838
+ lsls r0, 24
+ cmp r0, 0
+ bne _08040E0E
+ mov r1, r8
+ ldrh r0, [r1, 0x2]
+ cmp r0, 0x52
+ bne _08040E24
+_08040E0E:
+ ldr r0, _08040E1C
+ ldr r0, [r0]
+ ldr r1, _08040E20
+ adds r0, r1
+ ldr r6, [r0]
+ b _08040E26
+ .align 2, 0
+_08040E1C: .4byte gUnknown_203B418
+_08040E20: .4byte 0x000181f8
+_08040E24:
+ adds r6, r7, 0
+_08040E26:
+ adds r0, r6, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _08040E34
+ adds r6, r7, 0
+_08040E34:
+ mov r1, sp
+ ldr r0, [r6, 0xC]
+ cmp r0, 0
+ bge _08040E3E
+ adds r0, 0xFF
+_08040E3E:
+ asrs r0, 8
+ strh r0, [r1, 0x4]
+ mov r1, sp
+ ldr r0, [r6, 0x10]
+ cmp r0, 0
+ bge _08040E4C
+ adds r0, 0xFF
+_08040E4C:
+ asrs r0, 8
+ strh r0, [r1, 0x6]
+ adds r0, r6, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ bne _08040E5E
+ b _08041026
+_08040E5E:
+ adds r0, r7, 0
+ mov r1, r8
+ bl sub_80414C0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08040E6E
+ b _08041026
+_08040E6E:
+ mov r0, r8
+ ldrh r1, [r0, 0x2]
+ movs r0, 0x94
+ lsls r0, 1
+ cmp r1, r0
+ bne _08040ED0
+ movs r0, 0x7
+ bl sub_8084100
+ ldr r1, _08040EB8
+ str r0, [r1]
+ ldr r1, _08040EBC
+ ldr r2, [r1]
+ ldr r1, _08040EC0
+ adds r4, r2, r1
+ subs r1, 0x4
+ adds r2, r1
+ ldr r3, _08040EC4
+ lsls r1, r0, 2
+ adds r1, r3
+ ldr r1, [r1]
+ str r1, [r2]
+ str r1, [r4]
+ ldr r1, _08040EC8
+ adds r0, 0x4
+ str r0, [r1]
+ ldr r0, _08040ECC
+ ldr r1, [r0]
+ adds r0, r6, 0
+ bl sub_80522A8
+ movs r1, 0xD2
+ lsls r1, 1
+ adds r0, r6, 0
+ bl sub_80421C0
+ b _08040EF0
+ .align 2, 0
+_08040EB8: .4byte gUnknown_202F224
+_08040EBC: .4byte gUnknown_203B418
+_08040EC0: .4byte 0x00018204
+_08040EC4: .4byte gUnknown_8106A8C
+_08040EC8: .4byte gUnknown_202DE30
+_08040ECC: .4byte gUnknown_8100224
+_08040ED0:
+ cmp r1, 0x76
+ bne _08040EF0
+ ldr r0, _08040F70
+ ldr r0, [r0]
+ ldr r1, _08040F74
+ adds r2, r0, r1
+ subs r1, 0x4
+ adds r0, r1
+ movs r1, 0xC
+ str r1, [r0]
+ str r1, [r2]
+ movs r1, 0xD2
+ lsls r1, 1
+ adds r0, r6, 0
+ bl sub_80421C0
+_08040EF0:
+ mov r0, r10
+ movs r1, 0x4
+ ldrsh r5, [r0, r1]
+ mov r0, r8
+ ldrh r4, [r0, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r9
+ bl sub_80412E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ bl sub_800E790
+ adds r1, r0, 0
+ ldr r0, _08040F78
+ cmp r1, r0
+ beq _08040F2A
+ lsls r0, r1, 16
+ lsrs r0, 16
+ bl sub_8083E38
+_08040F2A:
+ ldr r1, [sp, 0x18]
+ cmp r1, 0x63
+ bne _08040F7C
+ adds r0, r6, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041026
+ mov r0, r10
+ adds r0, 0x46
+ ldrb r4, [r0]
+ mov r0, sp
+ adds r1, r7, 0
+ mov r2, r8
+ mov r3, r9
+ bl sub_8041108
+ movs r6, 0x7
+ movs r5, 0x7
+_08040F52:
+ subs r4, 0x1
+ ands r4, r6
+ adds r0, r7, 0
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_806CDD4
+ movs r0, 0x2
+ movs r1, 0x15
+ bl sub_803E708
+ subs r5, 0x1
+ cmp r5, 0
+ bge _08040F52
+ b _08041026
+ .align 2, 0
+_08040F70: .4byte gUnknown_203B418
+_08040F74: .4byte 0x00018204
+_08040F78: .4byte 0x000003e5
+_08040F7C:
+ ldr r0, [sp, 0x18]
+ cmp r0, 0x62
+ bne _08040FC2
+ adds r0, r6, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041026
+ mov r0, r10
+ adds r0, 0x46
+ ldrb r4, [r0]
+ mov r0, sp
+ adds r1, r7, 0
+ mov r2, r8
+ mov r3, r9
+ bl sub_8041108
+ movs r6, 0x7
+ movs r5, 0x8
+_08040FA4:
+ ands r4, r6
+ adds r0, r7, 0
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_806CDD4
+ movs r0, 0x2
+ movs r1, 0x15
+ bl sub_803E708
+ adds r4, 0x1
+ subs r5, 0x1
+ cmp r5, 0
+ bge _08040FA4
+ b _08041026
+_08040FC2:
+ mov r0, r10
+ adds r0, 0x46
+ ldrb r2, [r0]
+ adds r0, r7, 0
+ ldr r1, [sp, 0x18]
+ bl sub_806CDD4
+ adds r0, r7, 0
+ adds r0, 0x21
+ movs r1, 0
+ strb r1, [r0]
+ movs r5, 0
+ adds r6, r0, 0
+ b _08040FE6
+_08040FDE:
+ ldrb r0, [r6]
+ cmp r0, 0
+ bne _08041022
+ adds r5, 0x1
+_08040FE6:
+ cmp r5, 0x77
+ bgt _08041022
+ movs r0, 0x59
+ bl sub_803E46C
+ ldr r4, [r7, 0x40]
+ ldr r1, [sp, 0x18]
+ cmp r1, 0x9
+ bne _08040FFC
+ movs r0, 0x2
+ orrs r4, r0
+_08040FFC:
+ movs r0, 0x2
+ ands r0, r4
+ cmp r0, 0
+ beq _0804101A
+ ldr r0, [sp, 0x14]
+ cmp r0, 0
+ bne _0804101A
+ mov r0, sp
+ adds r1, r7, 0
+ mov r2, r8
+ mov r3, r9
+ bl sub_8041108
+ movs r1, 0x1
+ str r1, [sp, 0x14]
+_0804101A:
+ movs r0, 0x1
+ ands r4, r0
+ cmp r4, 0
+ beq _08040FDE
+_08041022:
+ movs r0, 0
+ strb r0, [r6]
+_08041026:
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8040DA0
+
+ thumb_func_start sub_8041038
+sub_8041038:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ adds r6, r0, 0
+ adds r7, r1, 0
+ mov r8, r2
+ mov r10, r3
+ ldr r0, [r7, 0x70]
+ mov r9, r0
+ ldrh r4, [r2, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r10
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp]
+ bl sub_800ECB8
+ movs r1, 0x2
+ ldrsh r0, [r0, r1]
+ cmp r0, 0
+ beq _080410F4
+ mov r0, r9
+ movs r1, 0x4
+ ldrsh r5, [r0, r1]
+ mov r0, r8
+ ldrh r4, [r0, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ mov r2, r10
+ bl sub_80412E0
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ adds r0, r5, 0
+ bl sub_800E710
+ adds r2, r0, 0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r2, r0
+ beq _080410BE
+ adds r0, r6, 0
+ adds r0, 0x8
+ adds r1, r7, 0
+ adds r1, 0x28
+ lsls r2, 24
+ lsrs r2, 24
+ bl sub_800569C
+ b _080410C2
+_080410BE:
+ movs r0, 0
+ str r0, [r6, 0x8]
+_080410C2:
+ mov r1, sp
+ ldrh r1, [r1]
+ strh r1, [r6]
+ mov r1, r9
+ ldrh r0, [r1, 0x4]
+ strh r0, [r6, 0x2]
+ ldr r0, [r7, 0xC]
+ cmp r0, 0
+ bge _080410D6
+ adds r0, 0xFF
+_080410D6:
+ asrs r0, 8
+ strh r0, [r6, 0x4]
+ ldr r0, [r7, 0x10]
+ cmp r0, 0
+ bge _080410E2
+ adds r0, 0xFF
+_080410E2:
+ asrs r0, 8
+ strh r0, [r6, 0x6]
+ mov r0, r9
+ adds r0, 0x46
+ ldrb r0, [r0]
+ str r0, [r6, 0xC]
+ movs r0, 0
+ str r0, [r6, 0x10]
+ b _080410F6
+_080410F4:
+ strh r0, [r6]
+_080410F6:
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041038
+
+ thumb_func_start sub_8041108
+sub_8041108:
+ push {r4-r7,lr}
+ adds r6, r0, 0
+ adds r7, r1, 0
+ adds r5, r3, 0
+ ldrh r4, [r2, 0x2]
+ adds r0, r7, 0
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ adds r2, r5, 0
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r4, r0, 16
+ adds r0, r4, 0
+ bl sub_800ECB8
+ movs r2, 0x2
+ ldrsh r1, [r0, r2]
+ ldrh r0, [r6]
+ cmp r0, 0
+ beq _08041162
+ cmp r1, 0
+ beq _08041162
+ adds r0, r6, 0
+ bl sub_8041500
+ adds r0, r4, 0
+ bl sub_800EEF8
+ bl sub_800EF64
+ movs r0, 0x5A
+ bl sub_803E46C
+ adds r0, r6, 0
+ bl sub_800E52C
+ adds r1, r7, 0
+ movs r2, 0x1
+ bl sub_8042DD4
+_08041162:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041108
+
+ thumb_func_start sub_8041168
+sub_8041168:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x18
+ mov r8, r0
+ adds r6, r1, 0
+ adds r7, r2, 0
+ mov r9, r3
+ adds r1, r7, 0
+ bl sub_804143C
+ adds r5, r0, 0
+ cmp r5, 0
+ beq _0804118A
+ movs r5, 0x1
+_0804118A:
+ ldrh r4, [r7, 0x2]
+ mov r0, r8
+ bl sub_807E580
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ adds r2, r5, 0
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ bl sub_800ECB8
+ movs r1, 0x4
+ ldrsh r5, [r0, r1]
+ movs r2, 0
+ str r2, [sp, 0x14]
+ adds r0, r6, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080411CA
+ ldr r0, [r6, 0x70]
+ str r0, [sp, 0x14]
+ adds r0, r6, 0
+ bl sub_8042768
+ b _080411D0
+_080411CA:
+ mov r0, r9
+ bl sub_803F428
+_080411D0:
+ lsls r0, 24
+ cmp r0, 0
+ beq _080412CE
+ mov r0, r8
+ adds r1, r7, 0
+ bl sub_80414C0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0
+ bne _080412CE
+ cmp r5, 0
+ beq _080412CE
+ adds r0, r5, 0
+ bl sub_800ECA4
+ ldr r5, [r0, 0x1C]
+ movs r0, 0x1
+ negs r0, r0
+ cmp r5, r0
+ beq _08041216
+ adds r0, r6, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041216
+ add r0, sp, 0x8
+ adds r1, r6, 0
+ adds r1, 0x28
+ lsls r2, r5, 24
+ lsrs r2, 24
+ bl sub_800569C
+ b _08041218
+_08041216:
+ str r4, [sp, 0x8]
+_08041218:
+ mov r0, sp
+ mov r1, r10
+ strh r1, [r0]
+ ldr r2, [sp, 0x14]
+ cmp r2, 0
+ beq _08041248
+ mov r1, sp
+ ldrh r0, [r2, 0x4]
+ strh r0, [r1, 0x2]
+ ldr r0, [r6, 0xC]
+ cmp r0, 0
+ bge _08041232
+ adds r0, 0xFF
+_08041232:
+ asrs r0, 8
+ strh r0, [r1, 0x4]
+ mov r1, sp
+ ldr r0, [r6, 0x10]
+ cmp r0, 0
+ bge _08041240
+ adds r0, 0xFF
+_08041240:
+ asrs r0, 8
+ strh r0, [r1, 0x6]
+ movs r0, 0
+ b _0804128C
+_08041248:
+ mov r1, sp
+ movs r0, 0x1
+ strh r0, [r1, 0x2]
+ mov r0, r9
+ movs r2, 0
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 11
+ mov r1, sp
+ movs r2, 0xC0
+ lsls r2, 4
+ adds r0, r2
+ cmp r0, 0
+ bge _08041268
+ adds r0, 0xFF
+_08041268:
+ asrs r0, 8
+ strh r0, [r1, 0x4]
+ mov r0, r9
+ movs r2, 0x2
+ ldrsh r1, [r0, r2]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 11
+ mov r1, sp
+ movs r2, 0x80
+ lsls r2, 5
+ adds r0, r2
+ cmp r0, 0
+ bge _08041286
+ adds r0, 0xFF
+_08041286:
+ asrs r0, 8
+ strh r0, [r1, 0x6]
+ ldr r0, [sp, 0x14]
+_0804128C:
+ str r0, [sp, 0xC]
+ movs r0, 0
+ str r0, [sp, 0x10]
+ mov r0, sp
+ bl sub_8041500
+ mov r0, r10
+ bl sub_800EEE0
+ bl sub_800EF64
+ mov r0, sp
+ bl sub_800EBC8
+ adds r4, r0, 0
+ movs r0, 0x5B
+ bl sub_803E46C
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0x6
+ bl sub_8042DD4
+ b _080412C2
+_080412BC:
+ movs r0, 0x28
+ bl sub_803E46C
+_080412C2:
+ adds r0, r4, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _080412BC
+_080412CE:
+ add sp, 0x18
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041168
+
+ thumb_func_start sub_80412E0
+sub_80412E0:
+ push {r4,lr}
+ lsls r0, 16
+ lsrs r4, r0, 16
+ lsls r1, 24
+ lsrs r0, r1, 24
+ adds r3, r4, 0
+ cmp r3, 0x1F
+ bne _08041344
+ cmp r0, 0x7
+ bls _080412F6
+ b _080413F6
+_080412F6:
+ lsls r0, 2
+ ldr r1, _08041300
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08041300: .4byte _08041304
+ .align 2, 0
+_08041304:
+ .4byte _080413F4
+ .4byte _08041324
+ .4byte _0804132A
+ .4byte _080413F4
+ .4byte _08041334
+ .4byte _0804133A
+ .4byte _080413F4
+ .4byte _0804133A
+_08041324:
+ movs r3, 0xCF
+ lsls r3, 1
+ b _080413F6
+_0804132A:
+ ldr r3, _08041330
+ b _080413F6
+ .align 2, 0
+_08041330: .4byte 0x000001a1
+_08041334:
+ movs r3, 0xD0
+ lsls r3, 1
+ b _080413F6
+_0804133A:
+ ldr r3, _08041340
+ b _080413F6
+ .align 2, 0
+_08041340: .4byte 0x0000019f
+_08041344:
+ cmp r2, 0
+ beq _080413F6
+ cmp r3, 0x97
+ beq _080413B4
+ cmp r3, 0x97
+ bgt _0804136C
+ cmp r3, 0x3C
+ beq _0804139C
+ cmp r3, 0x3C
+ bgt _08041362
+ cmp r3, 0x8
+ beq _08041396
+ cmp r3, 0x19
+ beq _080413E4
+ b _080413F4
+_08041362:
+ cmp r3, 0x4B
+ beq _080413A4
+ cmp r3, 0x64
+ beq _080413AA
+ b _080413F4
+_0804136C:
+ cmp r3, 0xCD
+ beq _080413CA
+ cmp r3, 0xCD
+ bgt _0804137E
+ cmp r3, 0x99
+ beq _080413BA
+ cmp r3, 0x9C
+ beq _080413C4
+ b _080413F4
+_0804137E:
+ cmp r3, 0xED
+ beq _080413DA
+ cmp r3, 0xED
+ bgt _0804138C
+ cmp r3, 0xE3
+ beq _080413EA
+ b _080413F4
+_0804138C:
+ movs r0, 0xAE
+ lsls r0, 1
+ cmp r3, r0
+ beq _080413D4
+ b _080413F4
+_08041396:
+ movs r3, 0xD1
+ lsls r3, 1
+ b _080413F6
+_0804139C:
+ ldr r3, _080413A0
+ b _080413F6
+ .align 2, 0
+_080413A0: .4byte 0x000001a3
+_080413A4:
+ movs r3, 0xD2
+ lsls r3, 1
+ b _080413F6
+_080413AA:
+ ldr r3, _080413B0
+ b _080413F6
+ .align 2, 0
+_080413B0: .4byte 0x000001a5
+_080413B4:
+ movs r3, 0xD3
+ lsls r3, 1
+ b _080413F6
+_080413BA:
+ ldr r3, _080413C0
+ b _080413F6
+ .align 2, 0
+_080413C0: .4byte 0x000001a7
+_080413C4:
+ movs r3, 0xD4
+ lsls r3, 1
+ b _080413F6
+_080413CA:
+ ldr r3, _080413D0
+ b _080413F6
+ .align 2, 0
+_080413D0: .4byte 0x000001a9
+_080413D4:
+ movs r3, 0xD5
+ lsls r3, 1
+ b _080413F6
+_080413DA:
+ ldr r3, _080413E0
+ b _080413F6
+ .align 2, 0
+_080413E0: .4byte 0x000001ab
+_080413E4:
+ movs r3, 0xD6
+ lsls r3, 1
+ b _080413F6
+_080413EA:
+ ldr r3, _080413F0
+ b _080413F6
+ .align 2, 0
+_080413F0: .4byte 0x000001ad
+_080413F4:
+ adds r3, r4, 0
+_080413F6:
+ adds r0, r3, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80412E0
+
+ thumb_func_start sub_8041400
+sub_8041400:
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_800ED20
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8041400
+
+ thumb_func_start sub_804141C
+sub_804141C:
+ push {lr}
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 24
+ lsrs r1, 24
+ bl sub_80412E0
+ lsls r0, 16
+ lsrs r0, 16
+ bl sub_800EC84
+ lsls r0, 24
+ lsrs r0, 24
+ pop {r1}
+ bx r1
+ thumb_func_end sub_804141C
+
+ thumb_func_start sub_804143C
+sub_804143C:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ adds r5, r1, 0
+ ldrh r0, [r5, 0x2]
+ cmp r0, 0xED
+ bne _08041476
+ adds r0, r4, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080414A4
+ adds r0, r4, 0
+ bl sub_80450F8
+ cmp r0, 0x1
+ bne _080414A4
+ ldr r1, [r4, 0x70]
+ adds r0, r1, 0
+ adds r0, 0x5C
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ beq _080414A0
+ adds r0, r1, 0
+ adds r0, 0x5D
+ ldrb r0, [r0]
+ cmp r0, 0xE
+ beq _080414A0
+ b _0804148A
+_08041476:
+ cmp r0, 0x19
+ beq _0804147E
+ cmp r0, 0xE3
+ bne _0804148E
+_0804147E:
+ adds r0, r4, 0
+ bl sub_8070B28
+ lsls r0, 24
+ cmp r0, 0
+ beq _080414A0
+_0804148A:
+ movs r0, 0
+ b _080414B8
+_0804148E:
+ cmp r0, 0x97
+ bne _080414A4
+ adds r0, r4, 0
+ bl sub_807E580
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bne _080414A4
+_080414A0:
+ movs r0, 0x1
+ b _080414B8
+_080414A4:
+ adds r0, r4, 0
+ adds r1, r5, 0
+ bl sub_80570AC
+ adds r1, r0, 0
+ lsls r1, 24
+ lsrs r1, 24
+ negs r0, r1
+ orrs r0, r1
+ lsrs r0, 31
+_080414B8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_804143C
+
+ thumb_func_start sub_80414C0
+sub_80414C0:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ ldrh r0, [r4, 0x2]
+ cmp r0, 0x9C
+ bne _080414DC
+ adds r0, r5, 0
+ bl sub_8045128
+ bl sub_804AF20
+ lsls r0, 24
+ cmp r0, 0
+ bne _080414F2
+_080414DC:
+ ldrh r0, [r4, 0x2]
+ cmp r0, 0x8
+ bne _080414F6
+ adds r0, r5, 0
+ bl sub_8045128
+ ldrh r1, [r0]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0x1
+ beq _080414F6
+_080414F2:
+ movs r0, 0x1
+ b _080414F8
+_080414F6:
+ movs r0, 0
+_080414F8:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80414C0
+
+ thumb_func_start sub_8041500
+sub_8041500:
+ push {lr}
+ bl sub_800E7D0
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041518
+ movs r0, 0x5C
+ bl sub_803E46C
+ movs r0, 0x5D
+ bl sub_8052740
+_08041518:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041500
+
+ thumb_func_start sub_804151C
+sub_804151C:
+ push {r4-r6,lr}
+ sub sp, 0x8
+ adds r6, r0, 0
+ adds r5, r1, 0
+ lsls r4, r2, 24
+ lsrs r4, 24
+ adds r0, r5, 0
+ bl sub_800DC9C
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0x2
+ str r0, [sp]
+ movs r0, 0
+ str r0, [sp, 0x4]
+ adds r0, r6, 0
+ adds r1, r5, 0
+ adds r2, r4, 0
+ bl sub_8041550
+ add sp, 0x8
+ pop {r4-r6}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_804151C
+
+ thumb_func_start sub_8041550
+sub_8041550:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x30
+ adds r7, r0, 0
+ mov r10, r1
+ ldr r0, [sp, 0x54]
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp, 0x2C]
+ lsls r3, 24
+ lsrs r3, 24
+ mov r9, r3
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r0, r7, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804159C
+ ldr r0, [r7, 0x70]
+ mov r8, r0
+ adds r0, r7, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _0804159C
+ cmp r6, 0
+ bne _080415A2
+ mov r0, r8
+ adds r0, 0xFF
+ ldrb r0, [r0]
+ cmp r0, 0x2
+ bne _080415A2
+_0804159C:
+ movs r0, 0x1
+ negs r0, r0
+ b _08041692
+_080415A2:
+ ldr r1, [sp, 0x50]
+ cmp r1, 0
+ beq _080415B4
+ movs r0, 0
+ cmp r1, 0x2
+ bne _080415B0
+ movs r0, 0x1
+_080415B0:
+ bl sub_804178C
+_080415B4:
+ add r6, sp, 0x28
+ adds r1, r7, 0
+ adds r1, 0x28
+ adds r0, r6, 0
+ mov r2, r9
+ bl sub_800569C
+ movs r2, 0
+ ldrsh r0, [r6, r2]
+ cmp r0, 0x63
+ beq _080415F2
+ ldrh r0, [r6, 0x2]
+ cmp r0, 0x63
+ beq _080415F2
+ movs r1, 0
+ ldrsh r0, [r6, r1]
+ lsls r0, 8
+ ldr r1, [r7, 0xC]
+ adds r4, r1, r0
+ movs r2, 0x2
+ ldrsh r0, [r6, r2]
+ lsls r0, 8
+ ldr r2, [r7, 0x10]
+ adds r0, r2, r0
+ movs r1, 0xBA
+ lsls r1, 1
+ add r1, r8
+ ldr r1, [r1]
+ subs r5, r0, r1
+ adds r1, r2, 0
+ b _08041600
+_080415F2:
+ ldr r4, [r7, 0xC]
+ movs r0, 0xBA
+ lsls r0, 1
+ add r0, r8
+ ldr r1, [r7, 0x10]
+ ldr r0, [r0]
+ subs r5, r1, r0
+_08041600:
+ cmp r1, 0
+ bge _08041606
+ adds r1, 0xFF
+_08041606:
+ asrs r1, 8
+ ldr r0, _0804166C
+ ldr r0, [r0]
+ ldr r2, _08041670
+ adds r0, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ subs r1, r0
+ lsrs r0, r1, 31
+ adds r0, r1, r0
+ asrs r1, r0, 1
+ adds r1, 0x1
+ mov r0, r10
+ str r0, [sp]
+ movs r3, 0
+ str r3, [sp, 0x4]
+ movs r6, 0x1
+ negs r6, r6
+ str r6, [sp, 0x8]
+ mov r2, sp
+ adds r0, r4, 0
+ cmp r4, 0
+ bge _08041636
+ adds r0, 0xFF
+_08041636:
+ asrs r0, 8
+ strh r0, [r2, 0xC]
+ mov r2, sp
+ adds r0, r5, 0
+ cmp r0, 0
+ bge _08041644
+ adds r0, 0xFF
+_08041644:
+ asrs r0, 8
+ strh r0, [r2, 0xE]
+ str r6, [sp, 0x14]
+ mov r0, sp
+ strh r3, [r0, 0x10]
+ strh r3, [r0, 0x12]
+ str r1, [sp, 0x18]
+ add r0, sp, 0x1C
+ bl sub_8004E8C
+ mov r0, sp
+ movs r1, 0
+ bl sub_8041764
+ adds r4, r0, 0
+ ldr r1, [sp, 0x2C]
+ cmp r1, 0
+ beq _08041690
+ movs r5, 0
+ b _0804167C
+ .align 2, 0
+_0804166C: .4byte gUnknown_203B418
+_08041670: .4byte 0x000181f2
+_08041674:
+ movs r0, 0x42
+ bl sub_803E46C
+ adds r5, 0x1
+_0804167C:
+ cmp r5, 0x63
+ bgt _0804168C
+ adds r0, r4, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08041674
+_0804168C:
+ movs r4, 0x1
+ negs r4, r4
+_08041690:
+ adds r0, r4, 0
+_08041692:
+ add sp, 0x30
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8041550
+
+ thumb_func_start sub_80416A4
+sub_80416A4:
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r2, 24
+ lsrs r2, 24
+ movs r3, 0
+ ldrsh r4, [r0, r3]
+ lsls r3, r4, 1
+ adds r3, r4
+ lsls r3, 11
+ movs r4, 0xC0
+ lsls r4, 4
+ adds r3, r4
+ str r3, [sp]
+ movs r4, 0x2
+ ldrsh r3, [r0, r4]
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 11
+ movs r3, 0x80
+ lsls r3, 5
+ adds r0, r3
+ str r0, [sp, 0x4]
+ mov r0, sp
+ bl sub_80416E0
+ add sp, 0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80416A4
+
+ thumb_func_start sub_80416E0
+sub_80416E0:
+ push {r4,r5,lr}
+ sub sp, 0x28
+ adds r3, r0, 0
+ lsls r2, 24
+ lsrs r5, r2, 24
+ str r1, [sp]
+ movs r2, 0
+ str r2, [sp, 0x4]
+ movs r4, 0x1
+ negs r4, r4
+ str r4, [sp, 0x8]
+ mov r1, sp
+ ldr r0, [r3]
+ cmp r0, 0
+ bge _08041700
+ adds r0, 0xFF
+_08041700:
+ asrs r0, 8
+ strh r0, [r1, 0xC]
+ mov r1, sp
+ ldr r0, [r3, 0x4]
+ cmp r0, 0
+ bge _0804170E
+ adds r0, 0xFF
+_0804170E:
+ asrs r0, 8
+ strh r0, [r1, 0xE]
+ str r4, [sp, 0x14]
+ mov r0, sp
+ strh r2, [r0, 0x10]
+ strh r2, [r0, 0x12]
+ ldr r0, _08041738
+ str r0, [sp, 0x18]
+ add r0, sp, 0x1C
+ bl sub_8004E8C
+ mov r0, sp
+ movs r1, 0
+ bl sub_8041764
+ adds r4, r0, 0
+ cmp r5, 0
+ beq _08041758
+ movs r5, 0
+ b _08041744
+ .align 2, 0
+_08041738: .4byte 0x0000ffff
+_0804173C:
+ movs r0, 0x42
+ bl sub_803E46C
+ adds r5, 0x1
+_08041744:
+ cmp r5, 0x63
+ bgt _08041754
+ adds r0, r4, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804173C
+_08041754:
+ movs r4, 0x1
+ negs r4, r4
+_08041758:
+ adds r0, r4, 0
+ add sp, 0x28
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80416E0
+
+ thumb_func_start sub_8041764
+sub_8041764:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ lsls r4, r1, 24
+ lsrs r4, 24
+ ldr r0, [r5]
+ bl sub_800EE5C
+ bl sub_800EF64
+ cmp r4, 0
+ beq _08041780
+ movs r0, 0x42
+ bl sub_803E46C
+_08041780:
+ adds r0, r5, 0
+ bl sub_800E890
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8041764
+
+ thumb_func_start sub_804178C
+sub_804178C:
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ movs r4, 0
+ ldr r0, _080417B0
+ ldr r0, [r0]
+ ldr r1, _080417B4
+ adds r0, r1
+ str r4, [r0]
+ adds r0, r5, 0
+ bl sub_800E9FC
+ lsls r0, 24
+ cmp r0, 0
+ beq _080417E0
+ ldr r6, _080417B8
+ b _080417C4
+ .align 2, 0
+_080417B0: .4byte gUnknown_203B418
+_080417B4: .4byte 0x00018204
+_080417B8: .4byte 0x000003e7
+_080417BC:
+ movs r0, 0x4A
+ bl sub_803E46C
+ adds r4, 0x1
+_080417C4:
+ cmp r4, r6
+ bgt _080417D4
+ adds r0, r5, 0
+ bl sub_800E9FC
+ lsls r0, 24
+ cmp r0, 0
+ bne _080417BC
+_080417D4:
+ movs r0, 0x4A
+ bl sub_803E46C
+ movs r0, 0x4A
+ bl sub_803E46C
+_080417E0:
+ movs r0, 0xFA
+ lsls r0, 2
+ cmp r4, r0
+ beq _080417EC
+ cmp r5, 0
+ beq _080417F0
+_080417EC:
+ bl sub_800DBBC
+_080417F0:
+ ldr r2, _08041824
+ ldr r0, [r2]
+ cmp r0, 0x1E
+ bgt _08041860
+ ldr r1, _08041828
+ ldrb r7, [r1]
+ movs r0, 0x1
+ strb r0, [r1]
+ movs r4, 0
+ adds r5, r2, 0
+ ldr r6, _0804182C
+_08041806:
+ ldr r0, [r5]
+ cmp r0, 0x1E
+ bgt _08041838
+ adds r0, 0x4
+ str r0, [r5]
+ ldr r1, _08041830
+ ldrh r2, [r1]
+ movs r3, 0
+ ldrsh r0, [r1, r3]
+ cmp r0, r6
+ beq _0804183C
+ ldr r3, _08041834
+ adds r0, r2, r3
+ strh r0, [r1]
+ b _0804183C
+ .align 2, 0
+_08041824: .4byte gUnknown_202EDC8
+_08041828: .4byte gUnknown_203B40D
+_0804182C: .4byte 0x00000808
+_08041830: .4byte gUnknown_2026E4E
+_08041834: .4byte 0xfffffeff
+_08041838:
+ movs r0, 0x1F
+ str r0, [r5]
+_0804183C:
+ bl sub_803EA10
+ movs r0, 0x4A
+ bl sub_803E46C
+ ldr r0, [r5]
+ cmp r0, 0x1F
+ beq _08041854
+ adds r4, 0x1
+ ldr r0, _0804186C
+ cmp r4, r0
+ ble _08041806
+_08041854:
+ ldr r0, _08041870
+ ldr r2, _08041874
+ adds r1, r2, 0
+ strh r1, [r0]
+ ldr r0, _08041878
+ strb r7, [r0]
+_08041860:
+ bl sub_8042E98
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804186C: .4byte 0x000003e7
+_08041870: .4byte gUnknown_2026E4E
+_08041874: .4byte 0x00000808
+_08041878: .4byte gUnknown_203B40D
+ thumb_func_end sub_804178C
+
+ thumb_func_start sub_804187C
+sub_804187C:
+ ldr r0, [r0, 0x70]
+ movs r1, 0x80
+ lsls r1, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bx lr
+ thumb_func_end sub_804187C
+
+ thumb_func_start sub_8041888
+sub_8041888:
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ movs r5, 0
+_08041890:
+ ldr r0, _080418CC
+ ldr r0, [r0]
+ lsls r1, r5, 2
+ ldr r2, _080418D0
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080418C0
+ ldr r1, [r4, 0x70]
+ cmp r6, 0
+ beq _080418BA
+ movs r0, 0xA6
+ lsls r0, 1
+ adds r1, r0
+ movs r0, 0x1
+ strb r0, [r1]
+_080418BA:
+ adds r0, r4, 0
+ bl sub_80418D4
+_080418C0:
+ adds r5, 0x1
+ cmp r5, 0x13
+ ble _08041890
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080418CC: .4byte gUnknown_203B418
+_080418D0: .4byte 0x000135cc
+ thumb_func_end sub_8041888
+
+ thumb_func_start sub_80418D4
+sub_80418D4:
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ bne _080418E4
+ b _08041A8C
+_080418E4:
+ ldr r2, [r4, 0x70]
+ movs r3, 0
+ movs r1, 0x1
+ movs r4, 0x2
+ ldrsh r0, [r2, r4]
+ cmp r0, 0xB9
+ bne _08041902
+ adds r0, r2, 0
+ adds r0, 0xA9
+ ldrb r0, [r0]
+ movs r1, 0x7F
+ eors r0, r1
+ negs r1, r0
+ orrs r1, r0
+ lsrs r1, 31
+_08041902:
+ cmp r1, 0
+ beq _08041914
+ ldr r1, _08041A94
+ adds r0, r2, 0
+ adds r0, 0xA8
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r3, [r0]
+_08041914:
+ ldr r1, _08041A98
+ adds r0, r2, 0
+ adds r0, 0xAC
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041A9C
+ adds r0, r2, 0
+ adds r0, 0xB0
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AA0
+ adds r0, r2, 0
+ adds r0, 0xBC
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AA4
+ adds r0, r2, 0
+ adds r0, 0xC0
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AA8
+ adds r0, r2, 0
+ adds r0, 0xC4
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AAC
+ adds r0, r2, 0
+ adds r0, 0xC8
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AB0
+ adds r0, r2, 0
+ adds r0, 0xD0
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AB4
+ adds r0, r2, 0
+ adds r0, 0xDC
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AB8
+ adds r0, r2, 0
+ adds r0, 0xE0
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041ABC
+ adds r0, r2, 0
+ adds r0, 0xE4
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AC0
+ adds r0, r2, 0
+ adds r0, 0xE8
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ ldr r1, _08041AC4
+ adds r0, r2, 0
+ adds r0, 0xEC
+ ldrb r0, [r0]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ orrs r3, r0
+ adds r0, r2, 0
+ adds r0, 0xF4
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080419E4
+ movs r0, 0x80
+ lsls r0, 17
+ orrs r3, r0
+_080419E4:
+ adds r0, r2, 0
+ adds r0, 0xF5
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080419F4
+ movs r0, 0x80
+ lsls r0, 18
+ orrs r3, r0
+_080419F4:
+ ldrb r0, [r2, 0x6]
+ cmp r0, 0
+ bne _08041A14
+ movs r0, 0x10
+ ldrsh r1, [r2, r0]
+ cmp r1, 0
+ bge _08041A04
+ adds r1, 0x3
+_08041A04:
+ asrs r1, 2
+ movs r4, 0xE
+ ldrsh r0, [r2, r4]
+ cmp r1, r0
+ ble _08041A14
+ movs r0, 0x80
+ lsls r0, 6
+ orrs r3, r0
+_08041A14:
+ ldr r0, _08041AC8
+ ldr r0, [r0]
+ ldr r1, _08041ACC
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08041A36
+ adds r0, r2, 0
+ adds r0, 0x60
+ ldrb r1, [r0]
+ movs r0, 0x1
+ ands r0, r1
+ cmp r0, 0
+ beq _08041A36
+ movs r0, 0x80
+ lsls r0, 6
+ orrs r3, r0
+_08041A36:
+ ldr r0, [r2, 0x2C]
+ cmp r0, 0xFF
+ ble _08041A7E
+ ldr r0, [r2, 0x30]
+ cmp r0, 0xFF
+ ble _08041A7E
+ ldr r0, [r2, 0x34]
+ cmp r0, 0xFF
+ ble _08041A7E
+ ldr r0, [r2, 0x38]
+ cmp r0, 0xFF
+ ble _08041A7E
+ movs r4, 0x1C
+ ldrsh r0, [r2, r4]
+ cmp r0, 0x9
+ ble _08041A7E
+ movs r1, 0x1E
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x9
+ ble _08041A7E
+ movs r4, 0x20
+ ldrsh r0, [r2, r4]
+ cmp r0, 0x9
+ ble _08041A7E
+ movs r1, 0x22
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x9
+ ble _08041A7E
+ movs r4, 0x24
+ ldrsh r0, [r2, r4]
+ cmp r0, 0x9
+ ble _08041A7E
+ movs r1, 0x26
+ ldrsh r0, [r2, r1]
+ cmp r0, 0x9
+ bgt _08041A84
+_08041A7E:
+ movs r0, 0x80
+ lsls r0, 20
+ orrs r3, r0
+_08041A84:
+ movs r4, 0x80
+ lsls r4, 2
+ adds r0, r2, r4
+ str r3, [r0]
+_08041A8C:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041A94: .4byte gUnknown_80F669C
+_08041A98: .4byte gUnknown_80F66B4
+_08041A9C: .4byte gUnknown_80F66C8
+_08041AA0: .4byte gUnknown_80F66E8
+_08041AA4: .4byte gUnknown_80F6708
+_08041AA8: .4byte gUnknown_80F673C
+_08041AAC: .4byte gUnknown_80F6778
+_08041AB0: .4byte gUnknown_80F6788
+_08041AB4: .4byte gUnknown_80F6794
+_08041AB8: .4byte gUnknown_80F67A8
+_08041ABC: .4byte gUnknown_80F67B4
+_08041AC0: .4byte gUnknown_80F67C4
+_08041AC4: .4byte gUnknown_80F67D4
+_08041AC8: .4byte gUnknown_203B418
+_08041ACC: .4byte 0x00000676
+ thumb_func_end sub_80418D4
+
+ thumb_func_start sub_8041AD0
+sub_8041AD0:
+ push {lr}
+ movs r1, 0xA2
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041AD0
+
+ thumb_func_start sub_8041AE0
+sub_8041AE0:
+ push {lr}
+ ldr r1, _08041AF0
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041AF0: .4byte 0x00000143
+ thumb_func_end sub_8041AE0
+
+ thumb_func_start sub_8041AF4
+sub_8041AF4:
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x25
+ movs r2, 0x1
+ bl sub_804151C
+ ldr r1, _08041B10
+ adds r0, r4, 0
+ bl sub_80421C0
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041B10: .4byte 0x00000197
+ thumb_func_end sub_8041AF4
+
+ thumb_func_start nullsub_57
+nullsub_57:
+ bx lr
+ thumb_func_end nullsub_57
+
+ thumb_func_start sub_8041B18
+sub_8041B18:
+ push {lr}
+ ldr r1, _08041B28
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041B28: .4byte 0x00000141
+ thumb_func_end sub_8041B18
+
+ thumb_func_start nullsub_58
+nullsub_58:
+ bx lr
+ thumb_func_end nullsub_58
+
+ thumb_func_start nullsub_59
+nullsub_59:
+ bx lr
+ thumb_func_end nullsub_59
+
+ thumb_func_start sub_8041B34
+sub_8041B34:
+ push {lr}
+ movs r1, 0x7
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041B34
+
+ thumb_func_start nullsub_60
+nullsub_60:
+ bx lr
+ thumb_func_end nullsub_60
+
+ thumb_func_start sub_8041B48
+sub_8041B48:
+ push {lr}
+ movs r1, 0x4
+ movs r2, 0
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041B48
+
+ thumb_func_start nullsub_61
+nullsub_61:
+ bx lr
+ thumb_func_end nullsub_61
+
+ thumb_func_start sub_8041B5C
+sub_8041B5C:
+ push {lr}
+ ldr r1, _08041B6C
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041B6C: .4byte 0x00000171
+ thumb_func_end sub_8041B5C
+
+ thumb_func_start nullsub_62
+nullsub_62:
+ bx lr
+ thumb_func_end nullsub_62
+
+ thumb_func_start sub_8041B74
+sub_8041B74:
+ push {lr}
+ ldr r1, _08041B84
+ movs r2, 0
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041B84: .4byte 0x00000171
+ thumb_func_end sub_8041B74
+
+ thumb_func_start nullsub_63
+nullsub_63:
+ bx lr
+ thumb_func_end nullsub_63
+
+ thumb_func_start nullsub_64
+nullsub_64:
+ bx lr
+ thumb_func_end nullsub_64
+
+ thumb_func_start sub_8041B90
+sub_8041B90:
+ push {lr}
+ movs r1, 0xD6
+ lsls r1, 1
+ movs r2, 0
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041B90
+
+ thumb_func_start nullsub_65
+nullsub_65:
+ bx lr
+ thumb_func_end nullsub_65
+
+ thumb_func_start nullsub_66
+nullsub_66:
+ bx lr
+ thumb_func_end nullsub_66
+
+ thumb_func_start sub_8041BA8
+sub_8041BA8:
+ push {lr}
+ movs r1, 0x4
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041BA8
+
+ thumb_func_start nullsub_67
+nullsub_67:
+ bx lr
+ thumb_func_end nullsub_67
+
+ thumb_func_start sub_8041BBC
+sub_8041BBC:
+ push {lr}
+ movs r1, 0xD4
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041BBC
+
+ thumb_func_start nullsub_68
+nullsub_68:
+ bx lr
+ thumb_func_end nullsub_68
+
+ thumb_func_start sub_8041BD0
+sub_8041BD0:
+ push {lr}
+ lsls r1, 24
+ cmp r1, 0
+ beq _08041BDE
+ ldr r1, _08041BE4
+ bl sub_80421C0
+_08041BDE:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041BE4: .4byte 0x000001a5
+ thumb_func_end sub_8041BD0
+
+ thumb_func_start sub_8041BE8
+sub_8041BE8:
+ push {lr}
+ movs r1, 0xCB
+ lsls r1, 1
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041BE8
+
+ thumb_func_start sub_8041BF8
+sub_8041BF8:
+ push {lr}
+ movs r1, 0xA
+ movs r2, 0x8
+ bl sub_806CDD4
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041BF8
+
+ thumb_func_start sub_8041C08
+sub_8041C08:
+ push {lr}
+ ldr r1, _08041C18
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041C18: .4byte 0x000001a7
+ thumb_func_end sub_8041C08
+
+ thumb_func_start sub_8041C1C
+sub_8041C1C:
+ push {lr}
+ ldr r1, _08041C2C
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041C2C: .4byte 0x000001a7
+ thumb_func_end sub_8041C1C
+
+ thumb_func_start nullsub_69
+nullsub_69:
+ bx lr
+ thumb_func_end nullsub_69
+
+ thumb_func_start sub_8041C34
+sub_8041C34:
+ push {lr}
+ movs r1, 0x4C
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041C34
+
+ thumb_func_start nullsub_70
+nullsub_70:
+ bx lr
+ thumb_func_end nullsub_70
+
+ thumb_func_start nullsub_71
+nullsub_71:
+ bx lr
+ thumb_func_end nullsub_71
+
+ thumb_func_start sub_8041C4C
+sub_8041C4C:
+ push {lr}
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041C4C
+
+ thumb_func_start sub_8041C58
+sub_8041C58:
+ push {lr}
+ ldr r1, _08041C68
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041C68: .4byte 0x000001a9
+ thumb_func_end sub_8041C58
+
+ thumb_func_start sub_8041C6C
+sub_8041C6C:
+ push {lr}
+ movs r1, 0x9D
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041C6C
+
+ thumb_func_start sub_8041C7C
+sub_8041C7C:
+ push {lr}
+ movs r1, 0x9D
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041C7C
+
+ thumb_func_start nullsub_72
+nullsub_72:
+ bx lr
+ thumb_func_end nullsub_72
+
+ thumb_func_start nullsub_73
+nullsub_73:
+ bx lr
+ thumb_func_end nullsub_73
+
+ thumb_func_start sub_8041C94
+sub_8041C94:
+ push {lr}
+ ldr r1, _08041CA4
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041CA4: .4byte 0x00000171
+ thumb_func_end sub_8041C94
+
+ thumb_func_start sub_8041CA8
+sub_8041CA8:
+ push {lr}
+ movs r1, 0x7
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041CA8
+
+ thumb_func_start sub_8041CB8
+sub_8041CB8:
+ push {lr}
+ ldr r1, _08041CC8
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041CC8: .4byte 0x0000018b
+ thumb_func_end sub_8041CB8
+
+ thumb_func_start sub_8041CCC
+sub_8041CCC:
+ push {lr}
+ movs r1, 0xC5
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041CCC
+
+ thumb_func_start sub_8041CDC
+sub_8041CDC:
+ push {lr}
+ movs r1, 0x5
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041CDC
+
+ thumb_func_start sub_8041CEC
+sub_8041CEC:
+ push {lr}
+ ldr r1, _08041CF8
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041CF8: .4byte 0x0000019d
+ thumb_func_end sub_8041CEC
+
+ thumb_func_start nullsub_74
+nullsub_74:
+ bx lr
+ thumb_func_end nullsub_74
+
+ thumb_func_start sub_8041D00
+sub_8041D00:
+ push {r4,lr}
+ adds r4, r0, 0
+ adds r0, r1, 0
+ movs r1, 0x2F
+ movs r2, 0x1
+ bl sub_804151C
+ adds r0, r4, 0
+ movs r1, 0x30
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041D00
+
+ thumb_func_start nullsub_75
+nullsub_75:
+ bx lr
+ thumb_func_end nullsub_75
+
+ thumb_func_start nullsub_76
+nullsub_76:
+ bx lr
+ thumb_func_end nullsub_76
+
+ thumb_func_start nullsub_77
+nullsub_77:
+ bx lr
+ thumb_func_end nullsub_77
+
+ thumb_func_start nullsub_78
+nullsub_78:
+ bx lr
+ thumb_func_end nullsub_78
+
+ thumb_func_start nullsub_79
+nullsub_79:
+ bx lr
+ thumb_func_end nullsub_79
+
+ thumb_func_start nullsub_80
+nullsub_80:
+ bx lr
+ thumb_func_end nullsub_80
+
+ thumb_func_start sub_8041D38
+sub_8041D38:
+ push {lr}
+ movs r1, 0x21
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041D38
+
+ thumb_func_start sub_8041D48
+sub_8041D48:
+ push {lr}
+ ldr r1, _08041D54
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041D54: .4byte 0x00000191
+ thumb_func_end sub_8041D48
+
+ thumb_func_start nullsub_81
+nullsub_81:
+ bx lr
+ thumb_func_end nullsub_81
+
+ thumb_func_start sub_8041D5C
+sub_8041D5C:
+ push {r4,lr}
+ adds r4, r0, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041D7E
+ ldr r0, [r4, 0x70]
+ movs r1, 0x89
+ lsls r1, 1
+ adds r0, r1
+ ldrb r0, [r0]
+ adds r1, r4, 0
+ movs r2, 0x1
+ movs r3, 0xB
+ bl sub_803ED30
+_08041D7E:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041D5C
+
+ thumb_func_start sub_8041D84
+sub_8041D84:
+ push {lr}
+ ldr r1, _08041D90
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041D90: .4byte 0x0000019f
+ thumb_func_end sub_8041D84
+
+ thumb_func_start nullsub_82
+nullsub_82:
+ bx lr
+ thumb_func_end nullsub_82
+
+ thumb_func_start nullsub_83
+nullsub_83:
+ bx lr
+ thumb_func_end nullsub_83
+
+ thumb_func_start sub_8041D9C
+sub_8041D9C:
+ push {lr}
+ ldr r1, _08041DAC
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041DAC: .4byte 0x00000131
+ thumb_func_end sub_8041D9C
+
+ thumb_func_start sub_8041DB0
+sub_8041DB0:
+ push {lr}
+ movs r1, 0x30
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041DB0
+
+ thumb_func_start nullsub_84
+nullsub_84:
+ bx lr
+ thumb_func_end nullsub_84
+
+ thumb_func_start nullsub_85
+nullsub_85:
+ bx lr
+ thumb_func_end nullsub_85
+
+ thumb_func_start nullsub_204
+nullsub_204:
+ bx lr
+ thumb_func_end nullsub_204
+
+ thumb_func_start nullsub_86
+nullsub_86:
+ bx lr
+ thumb_func_end nullsub_86
+
+ thumb_func_start nullsub_87
+nullsub_87:
+ bx lr
+ thumb_func_end nullsub_87
+
+ thumb_func_start nullsub_88
+nullsub_88:
+ bx lr
+ thumb_func_end nullsub_88
+
+ thumb_func_start sub_8041DD8
+sub_8041DD8:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ asrs r5, r1, 16
+ movs r1, 0xE
+ bl sub_8071858
+ lsls r0, 24
+ cmp r0, 0
+ beq _08041DF8
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041E02
+_08041DF8:
+ adds r0, r4, 0
+ movs r1, 0xE
+ movs r2, 0x1
+ bl sub_804151C
+_08041E02:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041DD8
+
+ thumb_func_start nullsub_89
+nullsub_89:
+ bx lr
+ thumb_func_end nullsub_89
+
+ thumb_func_start sub_8041E0C
+sub_8041E0C:
+ push {lr}
+ movs r1, 0x41
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E0C
+
+ thumb_func_start sub_8041E1C
+sub_8041E1C:
+ push {r4,lr}
+ adds r4, r0, 0
+ movs r1, 0x8F
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ movs r1, 0xCE
+ lsls r1, 1
+ adds r0, r4, 0
+ bl sub_80421C0
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E1C
+
+ thumb_func_start sub_8041E3C
+sub_8041E3C:
+ push {lr}
+ movs r1, 0xD7
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E3C
+
+ thumb_func_start sub_8041E4C
+sub_8041E4C:
+ push {lr}
+ ldr r1, _08041E5C
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041E5C: .4byte 0x000001b1
+ thumb_func_end sub_8041E4C
+
+ thumb_func_start sub_8041E60
+sub_8041E60:
+ push {lr}
+ ldr r1, _08041E70
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041E70: .4byte 0x000001a9
+ thumb_func_end sub_8041E60
+
+ thumb_func_start sub_8041E74
+sub_8041E74:
+ push {lr}
+ movs r1, 0xC9
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E74
+
+ thumb_func_start sub_8041E84
+sub_8041E84:
+ push {lr}
+ movs r1, 0xC7
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E84
+
+ thumb_func_start sub_8041E94
+sub_8041E94:
+ push {lr}
+ movs r1, 0xC8
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041E94
+
+ thumb_func_start sub_8041EA4
+sub_8041EA4:
+ push {lr}
+ movs r1, 0x15
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041EA4
+
+ thumb_func_start sub_8041EB4
+sub_8041EB4:
+ push {lr}
+ ldr r1, _08041EC4
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041EC4: .4byte 0x00000171
+ thumb_func_end sub_8041EB4
+
+ thumb_func_start sub_8041EC8
+sub_8041EC8:
+ push {lr}
+ ldr r1, _08041ED4
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041ED4: .4byte 0x00000197
+ thumb_func_end sub_8041EC8
+
+ thumb_func_start sub_8041ED8
+sub_8041ED8:
+ push {lr}
+ ldr r1, _08041EE4
+ bl sub_80421C0
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041EE4: .4byte 0x00000197
+ thumb_func_end sub_8041ED8
+
+ thumb_func_start sub_8041EE8
+sub_8041EE8:
+ push {lr}
+ movs r1, 0x15
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041EE8
+
+ thumb_func_start sub_8041EF8
+sub_8041EF8:
+ push {lr}
+ movs r1, 0xF
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041EF8
+
+ thumb_func_start sub_8041F08
+sub_8041F08:
+ push {lr}
+ sub sp, 0x8
+ movs r1, 0x2
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ movs r1, 0x15
+ movs r2, 0x1
+ movs r3, 0x3
+ bl sub_8041550
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041F08
+
+ thumb_func_start nullsub_90
+nullsub_90:
+ bx lr
+ thumb_func_end nullsub_90
+
+ thumb_func_start sub_8041F28
+sub_8041F28:
+ push {lr}
+ cmp r1, 0
+ bne _08041F3A
+ movs r1, 0xCA
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041F42
+_08041F3A:
+ ldr r1, _08041F48
+ movs r2, 0x1
+ bl sub_804151C
+_08041F42:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041F48: .4byte 0x00000193
+ thumb_func_end sub_8041F28
+
+ thumb_func_start sub_8041F4C
+sub_8041F4C:
+ push {lr}
+ cmp r1, 0
+ bne _08041F60
+ ldr r1, _08041F5C
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041F68
+ .align 2, 0
+_08041F5C: .4byte 0x0000018f
+_08041F60:
+ ldr r1, _08041F6C
+ movs r2, 0x1
+ bl sub_804151C
+_08041F68:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041F6C: .4byte 0x00000191
+ thumb_func_end sub_8041F4C
+
+ thumb_func_start sub_8041F70
+sub_8041F70:
+ push {lr}
+ cmp r1, 0
+ bne _08041F84
+ ldr r1, _08041F80
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041F8E
+ .align 2, 0
+_08041F80: .4byte 0x000001a9
+_08041F84:
+ movs r1, 0xC9
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+_08041F8E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041F70
+
+ thumb_func_start sub_8041F94
+sub_8041F94:
+ push {lr}
+ cmp r1, 0
+ bne _08041FA6
+ movs r1, 0xC7
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041FB0
+_08041FA6:
+ movs r1, 0xC8
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+_08041FB0:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041F94
+
+ thumb_func_start sub_8041FB4
+sub_8041FB4:
+ push {lr}
+ cmp r1, 0
+ bne _08041FC8
+ ldr r1, _08041FC4
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041FD2
+ .align 2, 0
+_08041FC4: .4byte 0x000001a9
+_08041FC8:
+ movs r1, 0xC9
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+_08041FD2:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041FB4
+
+ thumb_func_start sub_8041FD8
+sub_8041FD8:
+ push {lr}
+ cmp r1, 0
+ bne _08041FEA
+ movs r1, 0xCA
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _08041FF2
+_08041FEA:
+ ldr r1, _08041FF8
+ movs r2, 0x1
+ bl sub_804151C
+_08041FF2:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08041FF8: .4byte 0x00000193
+ thumb_func_end sub_8041FD8
+
+ thumb_func_start sub_8041FFC
+sub_8041FFC:
+ push {lr}
+ cmp r1, 0
+ bne _0804200E
+ movs r1, 0xC7
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _08042018
+_0804200E:
+ movs r1, 0xC8
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+_08042018:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8041FFC
+
+ thumb_func_start sub_804201C
+sub_804201C:
+ push {lr}
+ cmp r1, 0
+ bne _08042030
+ ldr r1, _0804202C
+ movs r2, 0x1
+ bl sub_804151C
+ b _08042038
+ .align 2, 0
+_0804202C: .4byte 0x0000018f
+_08042030:
+ ldr r1, _0804203C
+ movs r2, 0x1
+ bl sub_804151C
+_08042038:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804203C: .4byte 0x00000191
+ thumb_func_end sub_804201C
+
+ thumb_func_start sub_8042040
+sub_8042040:
+ push {lr}
+ cmp r1, 0
+ bne _08042052
+ movs r1, 0xC6
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _0804205A
+_08042052:
+ movs r1, 0xD
+ movs r2, 0x1
+ bl sub_804151C
+_0804205A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042040
+
+ thumb_func_start sub_8042060
+sub_8042060:
+ push {lr}
+ cmp r1, 0
+ bne _08042074
+ ldr r1, _08042070
+ movs r2, 0x1
+ bl sub_804151C
+ b _0804207C
+ .align 2, 0
+_08042070: .4byte 0x0000018d
+_08042074:
+ movs r1, 0xE
+ movs r2, 0x1
+ bl sub_804151C
+_0804207C:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042060
+
+ thumb_func_start sub_8042080
+sub_8042080:
+ push {lr}
+ cmp r1, 0
+ bne _08042092
+ movs r1, 0xC6
+ lsls r1, 1
+ movs r2, 0x1
+ bl sub_804151C
+ b _0804209A
+_08042092:
+ movs r1, 0xD
+ movs r2, 0x1
+ bl sub_804151C
+_0804209A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042080
+
+ thumb_func_start sub_80420A0
+sub_80420A0:
+ push {lr}
+ ldr r1, _080420B0
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080420B0: .4byte 0x00000143
+ thumb_func_end sub_80420A0
+
+ thumb_func_start nullsub_91
+nullsub_91:
+ bx lr
+ thumb_func_end nullsub_91
+
+ thumb_func_start sub_80420B8
+sub_80420B8:
+ push {lr}
+ movs r1, 0x19
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80420B8
+
+ thumb_func_start sub_80420C8
+sub_80420C8:
+ push {lr}
+ sub sp, 0x8
+ movs r1, 0x2
+ str r1, [sp]
+ movs r1, 0
+ str r1, [sp, 0x4]
+ movs r1, 0x15
+ movs r2, 0x1
+ movs r3, 0x3
+ bl sub_8041550
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80420C8
+
+ thumb_func_start nullsub_92
+nullsub_92:
+ bx lr
+ thumb_func_end nullsub_92
+
+ thumb_func_start sub_80420E8
+sub_80420E8:
+ push {r4,lr}
+ sub sp, 0x8
+ adds r4, r0, 0
+ ldr r1, [r1, 0x8]
+ ldr r0, _0804211C
+ ldr r0, [r0]
+ ldr r2, _08042120
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _08042106
+ adds r0, r1, 0
+ bl sub_806F62C
+ adds r1, r0, 0
+_08042106:
+ cmp r1, 0x1
+ beq _08042124
+ cmp r1, 0x1
+ bcc _08042116
+ cmp r1, 0x2
+ beq _08042128
+ cmp r1, 0x3
+ beq _0804212C
+_08042116:
+ movs r1, 0x8
+ b _0804212E
+ .align 2, 0
+_0804211C: .4byte gUnknown_203B418
+_08042120: .4byte 0x0000016d
+_08042124:
+ movs r1, 0x9
+ b _0804212E
+_08042128:
+ movs r1, 0xA
+ b _0804212E
+_0804212C:
+ movs r1, 0xB
+_0804212E:
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ adds r0, r4, 0
+ movs r2, 0x1
+ movs r3, 0x3
+ bl sub_8041550
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80420E8
+
+ thumb_func_start sub_8042148
+sub_8042148:
+ push {r4,lr}
+ adds r4, r0, 0
+ ldr r1, _08042164
+ bl sub_80421C0
+ movs r1, 0x9F
+ lsls r1, 1
+ adds r0, r4, 0
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08042164: .4byte 0x000001a7
+ thumb_func_end sub_8042148
+
+ thumb_func_start nullsub_93
+nullsub_93:
+ bx lr
+ thumb_func_end nullsub_93
+
+ thumb_func_start sub_804216C
+sub_804216C:
+ push {lr}
+ adds r0, r1, 0
+ cmp r2, 0x1
+ bne _0804217E
+ movs r1, 0xF8
+ movs r2, 0x1
+ bl sub_804151C
+ b _08042186
+_0804217E:
+ movs r1, 0xF9
+ movs r2, 0x1
+ bl sub_804151C
+_08042186:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804216C
+
+ thumb_func_start sub_804218C
+sub_804218C:
+ push {lr}
+ adds r0, r1, 0
+ movs r1, 0x2A
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804218C
+
+ thumb_func_start sub_804219C
+sub_804219C:
+ push {lr}
+ movs r1, 0x90
+ movs r2, 0x1
+ bl sub_80416E0
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804219C
+
+ thumb_func_start sub_80421AC
+sub_80421AC:
+ push {lr}
+ adds r0, r1, 0
+ ldr r1, _080421BC
+ movs r2, 0x1
+ bl sub_804151C
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080421BC: .4byte 0x00000167
+ thumb_func_end sub_80421AC
+
+ thumb_func_start sub_80421C0
+sub_80421C0:
+ push {r4,lr}
+ adds r2, r0, 0
+ lsls r1, 16
+ lsrs r0, r1, 16
+ adds r4, r0, 0
+ cmp r2, 0
+ bne _080421D4
+ bl sub_8083E38
+ b _080421E6
+_080421D4:
+ adds r0, r2, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _080421E6
+ adds r0, r4, 0
+ bl sub_8083E38
+_080421E6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80421C0
+
+ thumb_func_start sub_80421EC
+sub_80421EC:
+ push {r4,lr}
+ lsls r1, 16
+ lsrs r4, r1, 16
+ bl sub_803F428
+ lsls r0, 24
+ cmp r0, 0
+ beq _08042202
+ adds r0, r4, 0
+ bl sub_8083E38
+_08042202:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80421EC
+
+ thumb_func_start sub_8042208
+sub_8042208:
+ push {lr}
+ lsls r1, 24
+ lsrs r1, 24
+ cmp r1, 0
+ bne _0804221C
+ movs r0, 0xA9
+ lsls r0, 1
+ bl sub_8083E38
+ b _08042234
+_0804221C:
+ cmp r1, 0x1
+ bne _0804222C
+ ldr r0, _08042228
+ bl sub_8083E38
+ b _08042234
+ .align 2, 0
+_08042228: .4byte 0x00000151
+_0804222C:
+ movs r0, 0xA8
+ lsls r0, 1
+ bl sub_8083E38
+_08042234:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042208
+
+ thumb_func_start sub_8042238
+sub_8042238:
+ push {lr}
+ ldr r0, [r1, 0x70]
+ ldrb r0, [r0, 0x6]
+ cmp r0, 0
+ beq _08042250
+ ldr r0, _0804224C
+ bl sub_8083E38
+ b _08042258
+ .align 2, 0
+_0804224C: .4byte 0x00000157
+_08042250:
+ movs r0, 0xAB
+ lsls r0, 1
+ bl sub_8083E38
+_08042258:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042238
+
+ thumb_func_start sub_804225C
+sub_804225C:
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ mov r8, r0
+ adds r5, r1, 0
+ lsls r2, 24
+ lsrs r4, r2, 24
+ adds r7, r4, 0
+ cmp r4, 0x11
+ bne _08042274
+ b _08042384
+_08042274:
+ adds r0, r5, 0
+ bl sub_803F428
+ lsls r0, 24
+ cmp r0, 0
+ bne _08042282
+ b _08042384
+_08042282:
+ adds r0, r4, 0
+ bl sub_800EF28
+ bl sub_800EF64
+ movs r0, 0x4
+ movs r1, 0x42
+ bl sub_803E708
+ movs r0, 0
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 11
+ movs r1, 0xC0
+ lsls r1, 4
+ adds r0, r1
+ cmp r0, 0
+ bge _080422AA
+ adds r0, 0xFF
+_080422AA:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _080422FC
+ ldr r2, [sp]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 11
+ movs r1, 0x80
+ lsls r1, 5
+ adds r0, r1
+ cmp r0, 0
+ bge _080422CE
+ adds r0, 0xFF
+_080422CE:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r1, _08042300
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp]
+ adds r0, r4, 0
+ mov r1, sp
+ bl sub_800E448
+ adds r6, r0, 0
+ cmp r4, 0x4
+ bne _08042308
+ ldr r1, _08042304
+ movs r0, 0
+ bl sub_80421C0
+ movs r0, 0x28
+ movs r1, 0x33
+ bl sub_803E708
+ b _08042360
+ .align 2, 0
+_080422FC: .4byte 0xffff0000
+_08042300: .4byte 0x0000ffff
+_08042304: .4byte 0x00000193
+_08042308:
+ cmp r7, 0x8
+ bne _08042358
+ mov r0, r8
+ ldr r7, [r0, 0x70]
+ adds r0, r7, 0
+ adds r0, 0x46
+ ldrb r4, [r0]
+ movs r5, 0
+ b _0804231C
+_0804231A:
+ adds r5, 0x2
+_0804231C:
+ ldr r0, _08042354
+ cmp r5, r0
+ bgt _08042346
+ subs r4, 0x1
+ movs r0, 0x7
+ ands r4, r0
+ mov r0, r8
+ movs r1, 0
+ adds r2, r4, 0
+ bl sub_806CDD4
+ movs r0, 0x2
+ movs r1, 0x33
+ bl sub_803E708
+ adds r0, r6, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804231A
+_08042346:
+ movs r0, 0x7
+ ands r4, r0
+ adds r0, r7, 0
+ adds r0, 0x46
+ strb r4, [r0]
+ b _08042360
+ .align 2, 0
+_08042354: .4byte 0x000003e7
+_08042358:
+ movs r0, 0x28
+ movs r1, 0x33
+ bl sub_803E708
+_08042360:
+ movs r5, 0
+ ldr r4, _08042368
+ b _0804236E
+ .align 2, 0
+_08042368: .4byte 0x000003e7
+_0804236C:
+ adds r5, 0x1
+_0804236E:
+ cmp r5, r4
+ bgt _08042384
+ movs r0, 0x42
+ bl sub_803E46C
+ adds r0, r6, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804236C
+_08042384:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804225C
+
+ thumb_func_start sub_8042390
+sub_8042390:
+ push {r4-r6,lr}
+ sub sp, 0x18
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08042454
+ ldrb r1, [r4]
+ movs r0, 0x8
+ ands r0, r1
+ movs r6, 0
+ cmp r0, 0
+ bne _080423B0
+ ldrb r6, [r4, 0x2]
+_080423B0:
+ adds r0, r6, 0
+ movs r1, 0
+ bl sub_800EF40
+ bl sub_800EF64
+ movs r0, 0x4
+ movs r1, 0x42
+ bl sub_803E708
+ ldr r0, [r5, 0xC]
+ cmp r0, 0
+ bge _080423CC
+ adds r0, 0xFF
+_080423CC:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _08042428
+ ldr r2, [sp, 0x14]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x14]
+ ldr r0, [r5, 0x10]
+ cmp r0, 0
+ bge _080423E2
+ adds r0, 0xFF
+_080423E2:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r4, _0804242C
+ ands r4, r2
+ orrs r4, r0
+ str r4, [sp, 0x14]
+ asrs r4, 16
+ ldr r0, _08042430
+ ldr r0, [r0]
+ ldr r1, _08042434
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ subs r4, r0
+ lsrs r0, r4, 31
+ adds r4, r0
+ asrs r4, 1
+ adds r4, 0x1
+ adds r1, r5, 0
+ adds r1, 0x28
+ add r0, sp, 0x4
+ bl sub_8005700
+ add r1, sp, 0x14
+ str r4, [sp]
+ adds r0, r6, 0
+ add r2, sp, 0x4
+ movs r3, 0
+ bl sub_800E49C
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r6, _08042438
+ b _0804243E
+ .align 2, 0
+_08042428: .4byte 0xffff0000
+_0804242C: .4byte 0x0000ffff
+_08042430: .4byte gUnknown_203B418
+_08042434: .4byte 0x000181f2
+_08042438: .4byte 0x000003e7
+_0804243C:
+ adds r4, 0x1
+_0804243E:
+ cmp r4, r6
+ bgt _08042454
+ movs r0, 0x42
+ bl sub_803E46C
+ adds r0, r5, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804243C
+_08042454:
+ add sp, 0x18
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042390
+
+ thumb_func_start sub_804245C
+sub_804245C:
+ push {r4-r6,lr}
+ sub sp, 0x18
+ adds r5, r0, 0
+ adds r4, r1, 0
+ bl sub_8042768
+ lsls r0, 24
+ cmp r0, 0
+ beq _08042518
+ ldrb r1, [r4]
+ movs r0, 0x8
+ ands r0, r1
+ movs r6, 0
+ cmp r0, 0
+ bne _0804247C
+ ldrb r6, [r4, 0x2]
+_0804247C:
+ bl sub_800EF64
+ movs r0, 0x4
+ movs r1, 0x42
+ bl sub_803E708
+ ldr r0, [r5, 0xC]
+ cmp r0, 0
+ bge _08042490
+ adds r0, 0xFF
+_08042490:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _080424EC
+ ldr r2, [sp, 0x14]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x14]
+ ldr r0, [r5, 0x10]
+ cmp r0, 0
+ bge _080424A6
+ adds r0, 0xFF
+_080424A6:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r4, _080424F0
+ ands r4, r2
+ orrs r4, r0
+ str r4, [sp, 0x14]
+ asrs r4, 16
+ ldr r0, _080424F4
+ ldr r0, [r0]
+ ldr r1, _080424F8
+ adds r0, r1
+ movs r1, 0
+ ldrsh r0, [r0, r1]
+ subs r4, r0
+ lsrs r0, r4, 31
+ adds r4, r0
+ asrs r4, 1
+ adds r4, 0x1
+ adds r1, r5, 0
+ adds r1, 0x28
+ add r0, sp, 0x4
+ bl sub_8005700
+ add r1, sp, 0x14
+ str r4, [sp]
+ adds r0, r6, 0
+ add r2, sp, 0x4
+ movs r3, 0x1
+ bl sub_800E49C
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r6, _080424FC
+ b _08042502
+ .align 2, 0
+_080424EC: .4byte 0xffff0000
+_080424F0: .4byte 0x0000ffff
+_080424F4: .4byte gUnknown_203B418
+_080424F8: .4byte 0x000181f2
+_080424FC: .4byte 0x000003e7
+_08042500:
+ adds r4, 0x1
+_08042502:
+ cmp r4, r6
+ bgt _08042518
+ movs r0, 0x42
+ bl sub_803E46C
+ adds r0, r5, 0
+ bl sub_800E9A8
+ lsls r0, 24
+ cmp r0, 0
+ bne _08042500
+_08042518:
+ add sp, 0x18
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804245C
+
+ thumb_func_start sub_8042520
+sub_8042520:
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ adds r4, r0, 0
+ bl sub_8045888
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804253A
+ b _08042664
+_0804253A:
+ ldr r0, [r4, 0x70]
+ adds r0, 0x46
+ ldrb r5, [r0]
+ ldr r0, [r4, 0xC]
+ cmp r0, 0
+ bge _08042548
+ adds r0, 0xFF
+_08042548:
+ lsls r0, 8
+ lsrs r0, 16
+ ldr r1, _0804264C
+ ldr r2, [sp, 0x2C]
+ ands r2, r1
+ orrs r2, r0
+ str r2, [sp, 0x2C]
+ ldr r0, [r4, 0x10]
+ cmp r0, 0
+ bge _0804255E
+ adds r0, 0xFF
+_0804255E:
+ lsls r0, 8
+ lsrs r0, 16
+ lsls r0, 16
+ ldr r1, _08042650
+ ands r1, r2
+ orrs r1, r0
+ str r1, [sp, 0x2C]
+ asrs r1, 16
+ ldr r0, _08042654
+ ldr r0, [r0]
+ ldr r2, _08042658
+ adds r0, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ subs r1, r0
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r7, r1, 1
+ ldr r0, _0804265C
+ str r0, [sp, 0x4]
+ movs r2, 0
+ str r2, [sp, 0x8]
+ str r5, [sp, 0xC]
+ add r1, sp, 0x4
+ add r4, sp, 0x2C
+ ldrh r0, [r4]
+ strh r0, [r1, 0xC]
+ ldr r0, [sp, 0x2C]
+ asrs r0, 16
+ strh r0, [r1, 0xE]
+ adds r0, r1, 0
+ strh r2, [r0, 0x10]
+ strh r2, [r0, 0x12]
+ movs r0, 0x1
+ negs r0, r0
+ str r0, [sp, 0x18]
+ str r7, [sp, 0x1C]
+ add r0, sp, 0x20
+ bl sub_8004E8C
+ add r0, sp, 0x4
+ movs r1, 0
+ bl sub_8041764
+ adds r6, r0, 0
+ mov r10, r4
+ lsls r1, r5, 2
+ mov r0, sp
+ adds r0, 0x30
+ str r0, [sp, 0x38]
+ ldr r0, _08042660
+ adds r5, r1, r0
+ movs r1, 0x5
+ mov r8, r1
+ mov r9, r10
+_080425CC:
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r6, 0
+ adds r1, r4, 0
+ movs r2, 0
+ adds r3, r7, 0
+ bl sub_800E8AC
+ movs r0, 0x42
+ bl sub_803E46C
+ movs r2, 0
+ ldrsh r0, [r5, r2]
+ lsls r0, 2
+ mov r1, r9
+ ldrh r1, [r1]
+ adds r0, r1
+ mov r2, r9
+ strh r0, [r2]
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r1, 2
+ ldrh r0, [r4, 0x2]
+ adds r0, r1
+ strh r0, [r4, 0x2]
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ ldr r0, _08042654
+ ldr r0, [r0]
+ ldr r2, _08042658
+ adds r0, r2
+ movs r2, 0
+ ldrsh r0, [r0, r2]
+ subs r1, r0
+ lsrs r0, r1, 31
+ adds r1, r0
+ asrs r7, r1, 1
+ movs r0, 0x1
+ negs r0, r0
+ add r8, r0
+ mov r1, r8
+ cmp r1, 0
+ bge _080425CC
+ bl sub_800DBBC
+ mov r2, r10
+ movs r1, 0
+ ldrsh r0, [r2, r1]
+ lsls r0, 8
+ str r0, [sp, 0x30]
+ add r0, sp, 0x2C
+ movs r2, 0x2
+ ldrsh r0, [r0, r2]
+ lsls r0, 8
+ ldr r1, [sp, 0x38]
+ str r0, [r1, 0x4]
+ movs r1, 0xD0
+ lsls r1, 1
+ ldr r0, [sp, 0x38]
+ movs r2, 0x1
+ bl sub_80416E0
+ adds r6, r0, 0
+ b _08042668
+ .align 2, 0
+_0804264C: .4byte 0xffff0000
+_08042650: .4byte 0x0000ffff
+_08042654: .4byte gUnknown_203B418
+_08042658: .4byte 0x000181f2
+_0804265C: .4byte 0x00000165
+_08042660: .4byte gUnknown_80F4448
+_08042664:
+ movs r6, 0x1
+ negs r6, r6
+_08042668:
+ adds r0, r6, 0
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8042520
+
+ thumb_func_start sub_804267C
+sub_804267C:
+ push {r4,lr}
+ ldr r4, _080426B8
+ bl sub_8043D10
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0
+ beq _08042694
+ cmp r0, 0
+ blt _08042694
+ cmp r0, 0x2
+ ble _080426AC
+_08042694:
+ ldr r0, _080426BC
+ ldr r0, [r0]
+ ldr r1, _080426C0
+ adds r0, r1
+ ldrb r0, [r0]
+ bl GetStairDirection
+ lsls r0, 24
+ ldr r4, _080426C4
+ cmp r0, 0
+ beq _080426AC
+ subs r4, 0x1
+_080426AC:
+ adds r0, r4, 0
+ bl sub_8083E38
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080426B8: .4byte 0x000003e5
+_080426BC: .4byte gUnknown_203B418
+_080426C0: .4byte 0x00000644
+_080426C4: .4byte 0x00000155
+ thumb_func_end sub_804267C
+
+ thumb_func_start sub_80426C8
+sub_80426C8:
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ adds r4, r1, 0
+ cmp r4, 0x3
+ bne _080426D8
+ movs r0, 0
+ bl sub_8083E88
+_080426D8:
+ cmp r5, 0x4
+ beq _080426F0
+ ldr r0, _080426EC
+ lsls r1, r4, 1
+ adds r1, r0
+ ldrh r0, [r1]
+ bl sub_8083E38
+ b _080426FC
+ .align 2, 0
+_080426EC: .4byte gUnknown_80F67DC
+_080426F0:
+ ldr r0, _08042708
+ lsls r1, r4, 1
+ adds r1, r0
+ ldrh r0, [r1]
+ bl sub_8083E38
+_080426FC:
+ adds r0, r5, 0
+ adds r1, r4, 0
+ movs r2, 0x80
+ bl sub_8042B34
+ b _08042712
+ .align 2, 0
+_08042708: .4byte gUnknown_80F67E4
+_0804270C:
+ movs r0, 0x46
+ bl sub_803E46C
+_08042712:
+ bl sub_8042CC0
+ lsls r0, 24
+ cmp r0, 0
+ bne _0804270C
+ bl sub_8042D7C
+ bl sub_8040238
+ movs r0, 0x1
+ bl sub_8052210
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80426C8
+
+ thumb_func_start sub_8042730
+sub_8042730:
+ push {r4,r5,lr}
+ adds r4, r0, 0
+ movs r1, 0x8
+ movs r2, 0x8
+ bl sub_806CDD4
+ movs r5, 0
+ b _08042742
+_08042740:
+ adds r5, 0x1
+_08042742:
+ cmp r5, 0x63
+ bgt _08042760
+ movs r0, 0x51
+ bl sub_803E46C
+ ldr r0, [r4, 0x40]
+ movs r1, 0x3
+ ands r0, r1
+ cmp r0, 0
+ bne _08042760
+ adds r0, r4, 0
+ adds r0, 0x6B
+ ldrb r0, [r0]
+ cmp r0, 0x8
+ beq _08042740
+_08042760:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8042730
+
+ thumb_func_start sub_8042768
+sub_8042768:
+ push {lr}
+ adds r1, r0, 0
+ adds r0, 0x20
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _08042778
+_08042774:
+ movs r0, 0
+ b _080427A6
+_08042778:
+ ldr r0, _08042794
+ ldr r2, [r0]
+ ldr r3, _08042798
+ adds r0, r2, r3
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _0804279C
+ subs r3, 0x12
+ adds r0, r2, r3
+ ldr r0, [r0]
+ cmp r0, r1
+ bne _08042774
+ movs r0, 0x1
+ b _080427A6
+ .align 2, 0
+_08042794: .4byte gUnknown_203B418
+_08042798: .4byte 0x0001820a
+_0804279C:
+ adds r0, r1, 0
+ bl sub_8045888
+ lsls r0, 24
+ lsrs r0, 24
+_080427A6:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8042768
+
+ thumb_func_start sub_80427AC
+sub_80427AC:
+ push {r4-r6,lr}
+ movs r6, 0
+_080427B0:
+ ldr r0, _08042808
+ ldr r0, [r0]
+ lsls r1, r6, 2
+ ldr r2, _0804280C
+ adds r0, r2
+ adds r0, r1
+ ldr r4, [r0]
+ adds r0, r4, 0
+ bl sub_80450E0
+ lsls r0, 24
+ cmp r0, 0
+ beq _080427FA
+ ldr r5, [r4, 0x70]
+ adds r1, r5, 0
+ adds r1, 0xF3
+ ldrb r0, [r1]
+ cmp r0, 0
+ beq _080427FA
+ movs r0, 0
+ strb r0, [r1]
+ adds r0, r4, 0
+ bl sub_80429A0
+ ldrb r0, [r5, 0x6]
+ cmp r0, 0
+ bne _080427FA
+ ldr r0, _08042810
+ adds r1, r4, 0
+ movs r2, 0
+ bl sub_8045B94
+ ldr r0, _08042814
+ ldr r1, [r0]
+ adds r0, r4, 0
+ bl sub_805239C
+_080427FA:
+ adds r6, 0x1
+ cmp r6, 0x13
+ ble _080427B0
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08042808: .4byte gUnknown_203B418
+_0804280C: .4byte 0x000135cc
+_08042810: .4byte gUnknown_202DF98
+_08042814: .4byte gUnknown_8100270
+ thumb_func_end sub_80427AC
+
+ thumb_func_start sub_8042818
+sub_8042818:
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r1, 24
+ lsrs r7, r1, 24
+ ldr r0, _08042874
+ ldr r0, [r0]
+ ldr r1, _08042878
+ adds r0, r1
+ ldr r4, [r0]
+ cmp r4, 0
+ bne _08042836
+ bl sub_8083600
+ adds r4, r0, 0
+_08042836:
+ ldr r1, _0804287C
+ lsls r0, r5, 1
+ adds r2, r0, r1
+ ldrh r1, [r2]
+ ldr r0, _08042880
+ cmp r1, r0
+ beq _0804284A
+ adds r0, r4, 0
+ bl sub_80421C0
+_0804284A:
+ ldr r0, _08042884
+ lsls r1, r5, 2
+ adds r0, r1, r0
+ ldr r5, [r0]
+ adds r6, r1, 0
+ cmp r5, 0
+ blt _08042896
+ cmp r7, 0
+ beq _08042888
+ bl sub_80441BC
+ lsls r0, 24
+ cmp r0, 0
+ bne _08042888
+ adds r0, r4, 0
+ adds r1, r5, 0
+ movs r2, 0
+ bl sub_804151C
+ b _08042896
+ .align 2, 0
+_08042874: .4byte gUnknown_203B418
+_08042878: .4byte 0x000181f8
+_0804287C: .4byte gUnknown_80F682C
+_08042880: .4byte 0x000003e5
+_08042884: .4byte gUnknown_80F67EC
+_08042888:
+ ldr r0, _0804289C
+ adds r0, r6, r0
+ ldr r1, [r0]
+ adds r0, r4, 0
+ movs r2, 0
+ bl sub_804151C
+_08042896:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804289C: .4byte gUnknown_80F680C
+ thumb_func_end sub_8042818
+
+ .align 2,0 @ Don't pad with nop