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